In Latex2e ist es möglich simple Programmierung durchzuführen, ohne das auf eine andere Programmiersprache zurück gegriffen werden muss. Nichtsdestotrotz unterstütz Latex natürlich eine Fülle an Programmierschnittstellen für alle gängigen Sprachen (z.B. Lua, Python, Perl, Bash …).

Das Grunddokument

Als Grunddokument dient folgender Aufbau, dass Paket ifthen stellt grundlegende Kontrollstrukturen, Vergleichsoperatoren und Schleifen zur Verfügung:

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{ifthen}

\begin{document}

...

\end{document}

Einfache Funktionen und Variablen

Man kann einfache Funktionen definieren, indem man neue Kommandos erzeugt. Im folgenden Beispiel wird ein Kommando mit zwei Pflichtargumenten erzeugt:

\newcommand{\distanz}[2]{Geben Sie die Distanz zwischen #1 und #2 an!\\\\}

Das Kommando kann auch noch nachträglich verändert werden:

\renewcommand{\distanz}[3]{Geben Sie die Distanz zwischen #1, #2 und #3 an!\\\\}

Eine einfache String-Variable wird ebenso angelegt und verändert:

\newcommand{\zielort}{Bonn}
\renewcommand{\zielort}{Berlin}

Die Funktion kann nun aufgerufen werden:

\distanz{Kiel}{Hannover}{\zielort}

Ausgabe

Geben Sie die Distanz zwischen Kiel, Hannover und Berlin an!

ganzzahlige Variablen

Ganzzahlvariablen (auch negativ) heißen in Latex counter und werden folgendermaßen deklariert und mit einem Wert versehen:

\newcounter{zaehler}
\setcounter{zaehler}{100}

Der Wert eines counters kann auch inkrementiert werden:

\stepcounter{zaehler}   %zaehler++ -> 101

Das Addieren und Subtrahieren geht ebenso:

\addtocounter{zaehler}{10}  %111
\addtocounter{zaehler}{-11} %100

Kontrollstrukturen und Schleifen

Jetzt kommt das Paket ifthen zum Tragen. Es bietet eine if-then-else-Anweisung und eine while-Schleife. Die Gesamtdokumentation dieses Paketes findet man hier.

Um lesend auf eine Variable/einen counter zuzugreifen, z.B. für einen Vergleich, dient folgende Anweisung:

\value{zaehler}

Möchte man stattdessen den aktuellen Wert als Dezimalzahl ausgeben:

\arabic{zaehler}

Um die Anwendung der Schleife und der if-Kontrollstruktur zu verdeutlichen dient folgendes Beispiel:

\newcounter{i}
\setcounter{i}{100}

whiledo{\value{i} > 0}{
    \noindent Wie viele Flaschen Bier sind noch da?\\
    \addtocounter{i}{-1}

    Es sind noch \textbf{\arabic{i}} Flaschen Bier im Kühlschrank.\\\\

    \ifthenelse{\value{i} = 0}{\textbf{Es ist kein Bier mehr Da!}}

}

Ausgabe

Wie viele Flaschen Bier sind noch da?
Es sind noch 99 Flaschen Bier im Kühlschrank.

Wie viele Flaschen Bier sind noch da?
Es sind noch 98 Flaschen Bier im Kühlschrank.

...

Wie viele Flaschen Bier sind noch da?
Es sind noch 0 Flaschen Bier im Kühlschrank.

Es ist kein Bier mehr Da!

Previous post: full disk encryption on debian 9