LaTeX ist nicht nur für Aufsätze da. Schreibt man eine Schachpartie in gewöhnlichem PGN, folgt das Brettdiagramm von selbst; für Kreuzworträtsel, Sudoku, Strickmuster und Stammbäume gibt es auf CTAN ebenfalls Pakete. Diese Ecke des Ökosystems birgt allerdings eine besondere Gefahr: Das online empfohlene Paket ist ziemlich oft gar nicht in TeX Live enthalten. Das Go-Paket psgo wird zwar mitgeliefert, läuft aber nicht unter pdflatex, und kpsewhich shogi.sty lieferte überhaupt nichts. Jedes Paket unten wurde daher mit kpsewhich auf Existenz geprüft und anschließend tatsächlich kompiliert, bevor es hier genannt wird. Wo etwas nicht funktioniert, steht es hier auch so.
Eine Schachpartie in PGN schreiben: skak, xskak und chessboard
Schach ist das am besten versorgte Hobby in LaTeX. \usepackage{xskak} laden, mit \newchessgame eine Partie eröffnen und die Züge in schlichtem PGN schreiben: \mainline{1. e4 e5 2. Nf3 Nc6 3. Bb5 a6}. Die Züge werden gesetzt, und wo \chessboard steht, erscheint die Stellung an dieser Stelle als Diagramm. Entscheidend ist, dass das Paket ein internes Brett führt und die Züge wirklich nachspielt. Diagramm und Notation können daher nicht auseinanderlaufen. Anders als bei von Hand eingegebenen Koordinatendiagrammen zieht ein zusätzlich eingefügter Zug alle späteren Diagramme mit.
\documentclass{article}
\usepackage{xskak} % loads skak and chessboard
\begin{document}
\newchessgame
\mainline{1. e4 e5 2. Nf3 Nc6 3. Bb5 a6}
\chessboard
% the shortest possible loss, in four plies
\newchessgame
\mainline{1. f3 e5 2. g4 Qh4#}
\chessboard[showmover=false]
\end{document}Die drei Pakete teilen sich die Arbeit sauber auf. skak ist das Fundament: Es liest die Notation, führt das interne Brett und liefert die Schriften, deren Glyphen die Figuren sind. xskak setzt darauf auf, ergänzt Varianten und mehrere gleichzeitige Partien und lädt zugleich chessboard. Die Feinsteuerung des Diagramms gehört zu chessboard: Schlüssel wie \chessboard[showmover=false] schalten die Anzeige des Anziehenden ab, und man kann das Brett auf einen Ausschnitt beschneiden oder einzelne Felder färben und markieren. Da die eine Zeile \usepackage{xskak} alle drei Schichten hereinholt, ist sie im Zweifel die richtige.
Die Vorgeschichte lohnt einen Moment. skak ist dänisch für Schach – die README sagt es unumwunden. Autor ist Torben Hoffmann, die Fassung in TeX Live 2024 ist v1.5.3 vom 8. Januar 2018. Laut dem Katalogeintrag von TeX Live baut das Paket auf Arbeiten von Piet Tutelaers auf, und seine Neuerung bestand darin, PGN statt Koordinatennotation als Eingabe zu verwenden: aus g1f3 wurde das besser lesbare Nf3. xskak (v1.5, 23. Juni 2019) und chessboard (v1.9, 1. November 2020) stammen beide von Ulrike Fischer, der in skaks eigener Danksagung auch für die Arbeit an der Schriftbehandlung jenes Pakets gedankt wird.
Go hat psgo, Shogi nichts – und psgo läuft nicht unter pdflatex
Für Go-Diagramme führt TeX Live 2024 zwar psgo (v0.17) – doch wie der Name sagt, zeichnet es mit PSTricks und funktioniert daher nicht unter pdflatex. Ein \begin{psgoboard} durchzuschicken ergab ! Undefined control sequence., expandiert zu \c@lor@to@ps ->\PSTricks _Not_Configured_For_This_Format: PSTricks meldet selbst, dass es für dieses Format nicht eingerichtet ist. Kurioserweise kompiliert \usepackage{psgo} allein anstandslos; kaputt geht es in dem Moment, in dem wirklich ein Brett gezeichnet wird. Der Ausweg ist der Weg latex, dann dvips, dann ps2pdf, oder das Zwischenschalten von auto-pst-pdf (in TeX Live 2024 enthalten). Ersterer lieferte im Test ein einseitiges PDF.
Zu Shogi sei es deutlich gesagt: In TeX Live 2024 gibt es kein Shogi-Paket. kpsewhich shogi.sty, kpsewhich igo.sty und kpsewhich gochess.sty lieferten allesamt nichts, und die Suche nach shogi unterhalb von /usr/local/texlive/2024 förderte keine passende Datei zutage. Wer Shogi-Partien oder -Stellungen setzen will, muss etwas außerhalb von CTAN selbst installieren oder das Brett in TikZ zeichnen. Statt sich auf die Erinnerung an ein vor Jahren benutztes Paket zu verlassen, gilt: zuerst kpsewhich ausführen – in dieser Ecke von LaTeX ist das der kürzeste Weg.
Kreuzworträtsel und Sudoku: cwpuzzle und sudoku
Kreuzworträtsel setzt cwpuzzle, Sudoku setzt sudoku. Beides fühlt sich an wie das Schreiben einer Tabelle: Zellen stehen in einer Zeile, getrennt durch |. In der Puzzle-Umgebung von cwpuzzle ist |[1]T eine Zelle mit T und der Nummer 1, |* ein geschwärztes Feld und |. schließt die Zeile. Nummerierung und Rahmen entstehen automatisch, und die Umgebung PuzzleClues mit \Clue{Nummer}{Lösung}{Hinweis} setzt die Hinweise getrennt, sodass eine Quelle sowohl das leere Gitter als auch die ausgefüllte Lösung liefert. Eines ist zu beachten: Dateiname und Distributionsname stimmen nicht überein. Geladen wird \usepackage{cwpuzzle}, doch in TeX Live heißt das Paket crossword, v1.11 vom 13. September 2022. Mit tlmgr ist nach Letzterem zu suchen.
\usepackage{cwpuzzle} % distributed on TeX Live under the name "crossword"
\usepackage{sudoku}
% ...
\begin{Puzzle}{5}{5}%
|[1]T|[2]E|[3]X |* |* |.
|E |* |E |* |* |.
|[4]X|* |X |* |* |.
|* |* |* |* |* |.
|* |* |* |* |* |.
\end{Puzzle}
\begin{PuzzleClues}{\textbf{Across}}
\Clue{1}{TEX}{A typesetting system}
\end{PuzzleClues}
\begin{sudoku}
|2| | |6| |7| | |1|.
| |8| | | | | |5| |.
| | |6| |3| |4| | |.
| | |9| | | |8| | |.
|5| | |1| |4| | |2|.
| | |3| | | |7| | |.
| | |4| |6| |1| | |.
| |7| | | | | |3| |.
|9| | |2| |8| | |4|.
\end{sudoku}sudoku (v1.0) verlangt genau neun Zeilen; eine leere Zelle schreibt man als | | mit einem Leerzeichen, und |. schließt jede Zeile. Beide obigen Beispiele kompilierten auf TeX Live 2024 fehlerfrei – cwpuzzle erzeugte Rahmen und Nummerierung, sudoku ein Gitter mit den kräftigeren 3×3-Linien. Nebenbei setzt cwpuzzle trotz seines Namens auch Sudoku und Kakuro. Wer ein ganzes Rätselbuch setzt, kann sich vernünftigerweise darauf konzentrieren.
Strickmuster setzen: das Paket knitting und wo die Zeichenlegende steht
knitting (v3.0, 3. April 2019, von Ariel Barton) liefert die Zeichensätze und Befehle für Zopf- und Lochmuster-Strickschriften. Die Bedienung ist eigen: Man tippt die Zeichen als gewöhnliche Buchstaben, etwa \textknit{kpkp} – k für eine rechte Masche, p für eine linke, ein Tastaturzeichen je Maschenzeichen. Eine Strickschrift mit Gitter entsteht durch \chart[right]{...}, und hier lauert eine Falle: chart ist ein Befehl, keine Umgebung, und der Inhalt gehört in geschweifte Klammern. \begin{chart} erzeugt keinen Fehler und beendet sich mit 0, doch beim Vergleich beider Formen mit gleichem Inhalt lieferte der Befehl Maschenzeichen und Reihennummern, während die Umgebung schlicht die Buchstaben kpkpkp druckte. \knitgrid und \knitnogrid schalten das Gitter ein und aus. Nach Art älterer Pakete läuft es sowohl unter Plain TeX als auch unter LaTeX.
\usepackage{knitting}
% ...
\textknit{kpkpkp} % symbols are typed as ordinary letters
\knitgrid % draw the grid; \knitnogrid for a chart without one
% \chart is a COMMAND taking a braced body -- not a "chart" environment.
\chart[right]{
kpkpkp
pkpkpk
}Die Liste, welcher Buchstabe welche Masche ergibt, steht in knitkey – und das ist kein Paket zum Laden. kpsewhich knitkey.sty liefert nichts; gemeint ist ein Dokument unter texmf-dist/doc/fonts/knitting/knitkey.pdf. Lokal öffnet man es am schnellsten mit texdoc knitkey. Im selben Verzeichnis liegt auch knitexamples.pdf. Zu beachten ist außerdem, dass TeX Live ein eigenes Paket namens knittingpattern mitbringt, das die ausgeschriebene Anleitung setzt statt der Grafik.
Stammbäume, Rezepte und Kalender: genealogytree, cooking, termcal
Stammbäume sind die Aufgabe von genealogytree (v2.3.0). Es baut auf TikZ auf und läuft unter pdflatex ohne Zutun. Innerhalb von \begin{genealogypicture} schreibt man die Familienbeziehungen als Verschachtelung, etwa parent{ g{Kind} p{Vater} p{Mutter} }, und die Anordnung wird selbst ermittelt. template= wählt eine Darstellungsform; signpost ist ein vernünftiger Anfang. Ernst zu nehmen ist das Paket, weil es Abstammung von Ehe unterscheidet – das Diagramm bleibt damit genealogisch richtig und nicht bloß ein Bild.
\usepackage[all]{genealogytree}
\usepackage{cooking}
% ...
\begin{genealogypicture}[template=signpost]
parent{
g{Child}
p{Father}
p{Mother}
}
\end{genealogypicture}
\pagestyle{recipe}
\begin{recipe}{Pancakes (serves 4)}
\ingredient{200\,g flour} sift into a bowl.
\ingredient{2 eggs}
\ingredient{300\,ml milk} whisk in until smooth.
\end{recipe}Für Rezepte gibt es cooking (v0.9b, 24. Juni 1999, von Axel Reichert). Das Alter zeigt sich in einem angenehm entschiedenen Entwurf: \ingredient{...} nimmt genau ein Argument – Menge und Zutat stehen gemeinsam darin –, und der Anweisungssatz folgt schlicht dahinter. Heraus kommt das vertraute Kochbuchbild: Zutaten rechtsbündig in einer linken Spalte, die Zubereitung fließt rechts daneben. TeX Live führt zwei weitere Pakete desselben Zwecks, cuisine (v0.7) und xcookybooky (v1.5), Letzteres modern genug für Fotos und Garzeiten. Für einen Kalender macht termcal (v1.8) aus Startdatum und Wochenzahl einen Semesterplan.
Vor dem Empfehlen kpsewhich ausführen: was enthalten ist und was nicht
In dieser Ecke von LaTeX ist ein in einem alten Artikel genanntes Paket nicht zwangsläufig noch auf dem eigenen Rechner. Die Prüfung kostet eine Sekunde: kpsewhich daspaket.sty tippen; ist es vorhanden, kommt ein Pfad zurück, sonst nichts. Kennt man den Dateinamen nicht, verrät ihn tlmgr info name samt Beschreibung. Die folgende Tabelle ist das tatsächliche Ergebnis dieser Befehle beim Schreiben dieser Seite – und dieselben Befehle lassen sich vor jeder \usepackage-Zeile selbst ausführen.
| Paket | Status in TeX Live 2024 | Worauf zu achten ist |
|---|---|---|
skak / xskak / chessboard | Alle drei vorhanden: v1.5.3 / v1.5 / v1.9 | Die eine Zeile \usepackage{xskak} holt alle drei herein |
psgo | Vorhanden (v0.17) | Hängt an PSTricks; unter pdflatex bricht es ab, sobald ein Brett gezeichnet wird |
shogi.sty | Existiert nicht | kpsewhich bleibt leer; igo.sty und gochess.sty fehlen ebenso |
cwpuzzle | Vorhanden, v1.11 (13. September 2022) | In TeX Live unter dem Namen crossword; setzt auch Sudoku und Kakuro |
sudoku | Vorhanden (v1.0) | Verlangt genau neun Zeilen; eine leere Zelle ist | | mit Leerzeichen |
knitting | Vorhanden (v3.0, 3. April 2019) | Die Zeichenliste knitkey ist ein PDF, kein Paket; mit texdoc knitkey lesen |
genealogytree | Vorhanden (v2.3.0) | Auf TikZ gebaut; läuft unter pdflatex ohne Zutun |
cooking | Vorhanden (v0.9b, 24. Juni 1999) | \ingredient nimmt nur ein Argument; cuisine und xcookybooky sind ebenfalls dabei |
termcal | Vorhanden (v1.8) | Baut aus Startdatum und Wochenzahl einen Semesterplan |
Zuletzt eines, das diese Seite bewusst nicht behandelt: Noten. Der Musiksatz hat eine eigene Seite, auf der nachgemessen ist, dass LilyPond nicht Teil von TeX Live ist und dass MusiXTeX drei Durchläufe verlangt: etex, dann musixflx, dann etex. In all diesen Hobbygenres besteht das Ergebnis einzig darin, dass das Bild stimmt – also nicht bei einem fehlerfreien Lauf stehen bleiben, sondern das PDF öffnen und hinsehen. Steht im Schachdiagramm eine Figur auf dem falschen Feld, sagt TeX kein Wort dazu.