Archive for the ‘Pakete’ Category.

Arara Regel, um alle Asymptote Dateien zu übersetzen

Mit der Hilfe von Claude Opus habe ich eine Regel für Arara geschrieben, die alle asy Dateien im LaTeX-Verzeichnis übersetzt. Auf meinem Rechner liegt die Datei dann als arara-rule-asymptoteall.yaml in C:\texlive\2026\texmf-dist\scripts\arara\rules, unten ein Beispiel für den Aufruf.

!config
identifier: AsymptoteAll
name: AsymptoteAll
authors:
- Uwe Ziegenhagen, ziegenhagen@gmail.com
commands:
- name: Asymptote all *.asy files in directory
  command: >
    @{
      directory = new java.io.File(reference.toString())
                      .getAbsoluteFile().getParentFile();
      commands = [];
      foreach (file : directory.listFiles()) {
        if (file.getName().endsWith('.asy')) {
          commands.add(getCommandWithWorkingDirectory(
            directory.getAbsolutePath(),
            'asy', '-f', format, file.getName()));
        }
      }
      if (commands.isEmpty()) {
        throwError('No .asy-files found in ' + reference.toString());
      }
      return commands;
    }
arguments:
- identifier: format
  flag: >
    @{
      return parameters.format;
    }
  default: 'pdf'

Verbesserungspotential gibt es noch, die Parameterübergabe ist noch nicht für mehrere Parameter angepasst, auch werden bei jedem Arara-Lauf alle Dateien — auch die unveränderten — neu übersetzt.

%!TEX TS-program = Arara
% arara: pdflatex: { shell: yes }
% arara: AsymptoteAll
% arara: pdflatex: { shell: yes }
 
\documentclass{article}
\usepackage[inline]{asymptote}
 
% Definitionen, die alle asy-Bilder im Dokument sehen sollen:
\begin{asydef}
import geometry;
defaultpen(fontsize(10pt));
\end{asydef}
 
\newcommand{\vek}[1]{\mathbf{#1}}
 
\begin{document}
 
Der Einheitskreis mit eingezeichnetem Radius:
 
\begin{center}
\begin{asy}
size(5cm);
draw(unitcircle, blue+0.8bp);
pair M = (0,0), P = dir(35);
draw(M--P, red, Arrow(4));
dot(M); dot(P);
label("$M$", M, SW);
label("$P$", P, NE);
label("$\vek{r}$", midpoint(M--P), NW);
\end{asy}
\end{center}
 
 
\begin{center}
\begin{asy}
size(5cm);
draw(unitcircle, blue+0.8bp);
pair M = (0,0), P = dir(35);
draw(M--P, red, Arrow(4));
dot(M); dot(P);
label("$M$", M, SW);
label("$P$", P, NE);
label("$\vek{r}$", midpoint(M--P), NW);
\end{asy}
\end{center}
\end{document}

PDF-Formulare mit dem hyperref Paket erstellen

Hier ein einfaches Beispiel, wie man PDF-Formulare mit dem hyperref Paket erstellen kann.

\documentclass{article}
 
% Load hyperref with form support
\usepackage{hyperref}
 
\hypersetup{
  pdfauthor={Your Name},
  pdftitle={Sample Fillable PDF Form},
  pdfcreator={LaTeX with hyperref}
}
 
\begin{document}
 
\section*{Beispielformular}
 
Bitte ausfüllen!
 
\vspace{1em}
 
\noindent
\textbf{Name:}\\[0.5em]
\TextField[
  name=name,
  width=0.8\linewidth,
  bordercolor={0 0 0}
]{}
 
\vspace{1em}
 
\noindent
\textbf{E-Mail:}\\[0.5em]
\TextField[
  name=email,
  width=0.8\linewidth,
  bordercolor={0 0 0}
]{}
 
\vspace{1em}
 
\noindent
\textbf{Alter:}\\[0.5em]
\TextField[
  name=age,
  width=4cm]{}
 
\vspace{1em}
 
\noindent
\textbf{Lieblingsfrucht:}\\[0.5em]
\ChoiceMenu[
  name=gender,
  width=4cm,
  combo
]{Wählen einen Eintrag: }{Apfel,Birne,Kirsche}
 
\vspace{1em}
 
\noindent
\textbf{Newletter abonnieren?}\\[0.5em]
\CheckBox[name=subscribe]{} Ja
 
\vspace{1.5em}
 
\noindent
\textbf{Anmerkungen:}\\[0.5em]
\TextField[
  name=comments,
  width=\linewidth,
  height=3cm,
  multiline=true
]{}
 
\vspace{1.5em}
 
\noindent\PushButton[
  name=print,
  onclick={this.print({bUI:true,bSilent:false,bShrinkToFit:true});},
  bordercolor={0 0 0},
  width=4cm,
  height=1cm
]{Print Form}
 
\end{document}

ISO 3864, 7010 und 7001 Zeichen mit LaTeX setzen

Mit dem isosigns Paket kann man in LaTeX Zeichen aus den ISO Standards 3864, 7010 und 7001 setzen.

Link zur Doku: https://ctan.org/pkg/isosigns

Hier ein Screenshot aus der Dokumentation:

Iso-Papier mit LaTeX und dem gridpapers Paket

Hier ein Beispiel aus der gridpapers Doku, wie man mit LaTeX isometrische Papiere gestalten kann.

\documentclass{article}
\usepackage[pattern=iso, %tri für senkrecht
patternsize=0.5cm,
textarea,
bgcolor=white,
%majorcolor={green},
minorcolor={lightgray},
geometry={a4paper, margin=1cm}]{gridpapers}
\begin{document}
\thispagestyle{empty}
~
\end{document}

gridpapers-iso

gridpapers-tri

Das thematicpuzzle Paket

Es gibt ein neues Paket auf CTAN, thematicpuzzle. Damit gehen dann TikZ-basiert Dinge wie die folgenden (der Anleitung entnommen):

Python und LaTeX in einem Lauf kombinieren mit pylualatex

Mi dem pylualatex Paket gibt es eine neue Möglichkeit, Python und LaTeX miteinander zu „verheiraten“. Das Besondere an diesem Paket ist, dass es keine zwei Durchläufe benötigt, sondern nur einen einzigen.

%!TEX TS-program = Arara
% arara: lualatex: {shell: yes}
 
\documentclass{article}
 
\usepackage[executable=python.exe,localimports=false]{pyluatex} 
 
\begin{document}
 
\py{2**2**2}
 
\end{document}

Silbentrennung und Kerning anzeigen mit showhyphenation und showkerning

Für LuaLaTeX gibt es mit showhyphenation und showkerning zwei interessante Pakete, die die möglichen Trennstellen bzw. das Kerning anzeigen.

%!TEX TS-program = lualatex
\documentclass[12pt,ngerman]{scrartcl}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{blindtext}
\usepackage{microtype}
 
\usepackage{showhyphenation}
\usepackage[ontop]{showkerning}
\begin{document}
 
\blindtext
 
\blindtext
 
 
\end{document}

LaTeX Briefe mit KOMA-Script und dem scrletter Paket

Neben der Nutzung der scrlttr2 Klasse gibt es in aktuelleren KOMA-Script Versionen auch die Möglichkeit, das scrletter-Paket zu nutzen. Hier ein Beispiel:

\documentclass[12pt,ngerman]{scrartcl}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{csquotes}
\usepackage{paralist}
\usepackage{xcolor}
\usepackage{palatino}
\usepackage{blindtext}
\usepackage{scrletter}
 
\setkomavar{fromname}{Max Mustermann}
\setkomavar{fromemail}{Max@Mustermann.de}
 
\setkomavar{fromaddress}{Musterweg 221, 12345 Musterstadt}
 
\setkomavar{firstfoot}{\usekomavar{fromemail}}
 
 
\begin{document}
\begin{letter}{Maria Mustermann \\ Mustergasse 1 \\ 12346 Musterstadt}
 
\opening{Hallo Maria,}
 
\blindtext[2]
 
\closing{Mit freundlichen Grüßen}
 
\end{letter}
\end{document}

XCharter – Der passende Mathematik-Font zur Charter

Hier ein Beispiel für das XCharter Paket, das einen passenden Mathe-Font für die Charter bereitstellt.

%!TEX TS-program = LuaLaTeX
\documentclass[12pt,ngerman]{scrartcl}
 
\usepackage{fontspec}
\usepackage{babel}
\usepackage{unicode-math}
\setmathfont{XCharter-Math.otf} % Call by file name or
\setmathfont{XCharter Math} % Call by font name
 
\setmainfont{XCharter}
\setsansfont{Cabin}[Scale=MatchLowercase] % sf
\setmonofont{Inconsolatazi4}[Scale=MatchLowercase] % tt
 
\usepackage{blindtext}
 
\begin{document}
 
\blindtext
 
\begin{equation}
\int_{x=1}^{\infty} -\frac{p}{2} \pm \sqrt{ \left(\frac{p}{2}  \right)^2 -q   } 
\end{equation}
 
\blindtext
 
\end{document}

Pocketmod – TODO Listen in A3

Zum Thema Pocketmod hatte ich schon früher etwas geschrieben (https://www.uweziegenhagen.de/?p=1294), hier nun ein Template für ein TODO-Listen Pocket in DIN A3.

Das fertige PDF sieht dann so aus: PocketMod_for_A3

\documentclass[21pt]{scrartcl}
\usepackage[left=2cm,right=2cm, top=2cm,bottom=2cm,a3paper]{geometry}
 
\usepackage{forloop}
\setlength{\parindent}{0pt}
\usepackage{tikz}
 
\newcounter{ct} 
\usepackage{pgfpages}
 
\def\pgfpageoptionheight{\the\paperwidth} % landscaped by default
\def\pgfpageoptionwidth{\the\paperheight}
\def\pgfpageoptionborder{0pt}
\def\pgfpageoptionfirstshipout{1}
 
\pgfpagesphysicalpageoptions{%
    logical pages=8,%
    physical height=\pgfpageoptionheight,%
    physical width=\pgfpageoptionwidth,%
    current logical shipout=\pgfpageoptionfirstshipout%
}
 
    \pgfpageslogicalpageoptions{1}{%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.875\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{2}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.875\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{3}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.625\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{4}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.375\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{5}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.125\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{6}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.125\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{7}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.375\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{8}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.625\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
 
 
\begin{document}%
 
\forloop{ct}{1}{\value{ct} < 9}{%
\begin{tikzpicture}
\foreach \i in {0,...,-17}{%
\draw[very thick] (0,\i*2) -- ++(0,1.5) -- ++(1.5,0) -- ++(0,-1.5)--cycle; 
\draw[very thick] (2.5,\i*2) -- (22,\i*2);
\draw[very thick] (23,\i*2) -- ++(0,1.5) -- ++(1.5,0) -- ++(0,-1.5)--cycle; 
}
\end{tikzpicture}
\clearpage
}
 
\end{document}