„PSTricks gehört der Vergangenheit an, TikZ ist das Werkzeug der Gegenwart.“ So lautet die verbreitete Zusammenfassung — und ein Blick in TeX Live 2024 stellt sie auf den Kopf. Das dort enthaltene PSTricks trägt die Version 3.19c vom 2. Februar 2024 und erscheint weiterhin in neuen Ausgaben. Xy-pic dagegen, berühmt als Klassiker für kommutative Diagramme, wurde zuletzt am 6. Oktober 2013 aktualisiert und schreibt dieses Datum bei jedem Lauf selbst ins Log. Diese Seite führt durch die vier Zeichensysteme, die neben TikZ in LaTeX zur Verfügung stehen — PSTricks, das PostScript heranzieht; den Diagramm-Veteranen Xy-pic; Asymptote, eine eigenständige Sprache; und MetaPost aus der METAFONT-Linie — geordnet nach ihrem jeweiligen Ausgabeweg. In der Praxis trennt sie weniger die Ausdruckskraft als die Frage, welche Engine sie überhaupt setzen kann und wie.
Ist TikZ für eine neue Abbildung weiterhin die richtige Voreinstellung?
Ja — mit ziemlicher Sicherheit TikZ. Der Grund liegt nicht in den Funktionen, sondern in der Reibungslosigkeit. TikZ läuft unter pdflatex, lualatex und xelatex, ohne externes Programm und ohne zusätzliche Kompilierstufe. Jedes der vier Systeme dieser Seite verletzt mindestens eine dieser Bedingungen: PSTricks läuft unter pdfLaTeX nicht direkt, Asymptote verlangt eine externe Binärdatei und drei Kompilierschritte, MetaPost setzt LuaLaTeX oder ein Spezialprogramm voraus, und Xy-pic läuft zwar, wird aber seit 2013 nicht mehr gepflegt. Die anderen Systeme lohnen dennoch aus drei Gründen: Pflege bestehender Dokumente, ernsthaftes 3D und bestimmte Ökosysteme wie ConTeXt.
PSTricks: dreißig Jahre alt und weiterhin in neuen Ausgaben
PSTricks ist eine Makrosammlung, die PostScripts Zeichenfunktionen unmittelbar aus TeX/LaTeX-Quellen aufruft. Die Copyright-Zeilen am Anfang von pstricks.tex erzählen die ganze Geschichte des Systems: Timothy Van Zandt (1993, 1994, 1999), Denis Girou (2000–2003) und Herbert Voß (seit 2004). Über drei Betreuer weitergereicht, trägt die Fassung in TeX Live 2024 die Version 3.19c vom 2. Februar 2024. Alt an PSTricks ist die Entwurfsprämisse, nicht der Pflegezustand.
Die Syntax verrät ihre Bedeutung meist im Namen. \psline zeichnet eine Linie oder Polylinie, \pscircle einen Kreis, \psframe ein Rechteck. Koordinaten stehen in runden Klammern wie \psline(0,0)(3,2), ein Kreis erhält Mittelpunkt und Radius: \pscircle(2,2){1}. Die ganze Abbildung liegt in einer pspicture-Umgebung, deren Öffnung die linke untere und rechte obere Ecke trägt: \begin{pspicture}(0,0)(4,3). Um Beliebiges an eine Koordinate zu setzen, dient \rput; wenn zusätzlich Winkel oder Versatz gewünscht sind, \uput. Linienstil, Pfeilspitzen und Farbe stehen gemeinsam als Optionen in eckigen Klammern.
\begin{pspicture}(0,0)(4,3)
\psframe(0,0)(4,3)
\psline[linewidth=1pt]{->}(0,0)(3,2)
\pscircle(2,1.5){1}
\rput(2,1.5){$O$}
\end{pspicture}Das zeichnet einen Rahmen von vier Einheiten Breite und drei Höhe, führt eine Pfeilstrecke vom Ursprung nach (3,2), legt darüber einen Kreis mit Radius 1 um (2,1.5) und setzt ein O in dessen Mittelpunkt. Auch die Zusatzpakete sind zahlreich: pst-plot für Funktionsplots, pst-node für Knoten und Verbindungen, pst-3dplot für 3D und viele mehr. An Ausdruckskraft fehlt es nach wie vor nicht. Das Problem liegt in dem einen Punkt des nächsten Abschnitts.
Der Fehler von PSTricks unter pdfLaTeX und die Auswege
Beim ersten Zeichenbefehl erscheint ! Undefined control sequence.. Ein Dokument mit \usepackage{pstricks} durch pdflatex auf TeX Live 2024 geschickt, blieb an der \psframe-Zeile stehen mit: "! Undefined control sequence. \c@lor@to@ps ->\PSTricks _Not_Configured_For_This_Format". Mitten in der Expansion taucht ein Markierungstoken namens \PSTricks_Not_Configured_For_This_Format auf, das absichtlich undefiniert gelassen wurde und schon im Namen ruft, dass dieses Format nicht unterstützt wird. Unangenehm ist: Im nonstopmode wird der Fehler dutzendfach gemeldet und dennoch bis zum Ende ein PDF erzeugt — eines, in dem schlicht die Abbildung fehlt.
Die Ursache liegt im Ausgabemechanismus selbst. PSTricks gibt seine Zeichnungen als PostScript-\specials aus — Sonderanweisungen im DVI —, und pdflatex, das direkt PDF erzeugt, hat dafür keinen Platz. Es gibt drei Auswege, und alle drei wurden unter TeX Live 2024 als funktionierend bestätigt.
# route 1: the classic DVI path
latex figure.tex
dvips figure.dvi -o figure.ps
ps2pdf figure.ps
# route 2: stay in pdflatex, let auto-pst-pdf shell out
pdflatex --shell-escape figure.tex
# route 3: just use xelatex - no extra package needed
xelatex figure.texWeg 1 ist der klassische und der zuverlässigste: latex erzeugt das DVI, dvips macht daraus PostScript, ps2pdf aus Ghostscript daraus ein PDF. Ein gemessener Hinweis dazu — Ghostscript 10.03.0 gab unterwegs "WARNING: Transparency operations ignored - need to use -dALLOWPSTRANSPARENCY" aus. Das heißt, die Transparenz von PSTricks (die opacity-Familie) wird stillschweigend verworfen; wer halbtransparente Füllungen nutzt, sollte das Ergebnis mit eigenen Augen prüfen.
Weg 2 behält den pdflatex-Ablauf bei und überlässt die Kulissenarbeit auto-pst-pdf. Der Mechanismus ist schlicht: Während des pdflatex-Laufs startet auto-pst-pdf ein zweites LaTeX als Kindprozess, rendert nur die PSTricks-Teile über PostScript nach <Jobname>-pics.pdf und bindet dies ein. Im Lauf erscheint im Log "auto-pst-pdf: Auxiliary LaTeX compilation" — Weg 1, der hinter den Kulissen abläuft. Da ein externer Prozess gestartet wird, ist --shell-escape zwingend; wer es vergisst, wird deutlich zurechtgewiesen: "! Package auto-pst-pdf Error: auto-pst-pdf will not work!" Wenn PNG- oder JPEG-Bilder im selben Dokument gebraucht werden, ist dieser Weg die starke Wahl.
Weg 3 ist der überraschendste und der einfachste: dieselbe Quelle, kein Zeichen geändert, durch xelatex schicken. Kein Zusatzpaket nötig — das PSTricks-Bündel in TeX Live 2024 bringt selbst eine Konfigurationsdatei unter tex/generic/pstricks/config/xdvipdfmx.cfg mit, die bei einem XeLaTeX-Lauf automatisch geladen wird (ihr Name steht denn auch im Log). Weil XeLaTeX intern über ein Zwischenformat der DVI-Familie geht, laufen PostScript-\specials glatt durch. Ist das Dokument ohnehin mit XeLaTeX gesetzt, lässt sich mit Recht sagen, dass PSTricks überhaupt keinen Umweg braucht.
Xy-pic und \xymatrix: läuft noch, steht aber seit 2013 still
Xy-pic (Paketname xy) ist ein Allzweckpaket zum Setzen von Graphen und Diagrammen und läuft unter plain TeX, LaTeX und AMS-LaTeX gleichermaßen. Ein besonderer Ausgabeweg ist nicht nötig — pdflatex verarbeitet es direkt. Reizvoll ist, dass es bei jedem Lauf seine eigenen Daten ins Log schreibt; unter TeX Live 2024 erscheint " Xy-pic version 3.8.9 <2013/10/06>". Der Copyright-Vermerk in xy.tex reicht von 1991 bis 2013, Kristoffer H. Rose und andere. Über zwanzig Jahre Gebrauch und über zehn Jahre ohne Aktualisierung, verdichtet in einer Zeile.
In der Praxis genutzt wird vor allem \xymatrix für kommutative Diagramme. Dieser Modus setzt ein Diagramm wie eine Matrix: wie bei tabular trennt & die Einträge und \\ die Zeilen. Pfeile zwischen Objekten zeichnet \ar, dessen Ziel eine Richtungstaste ist — [r] rechts, [l] links, [u] oben, [d] unten, Kombinationen wie [rd] für die Zelle einen Schritt rechts und unten. Pfeilbeschriftungen übernehmen die Notation mathematischer Skripte: ^ setzt die Beschriftung über den Pfeil (in Laufrichtung gesehen links), _ darunter (rechts). Üblich ist \usepackage[all]{xy}, wobei [all] den Standardumfang aktiviert.
\usepackage[all]{xy}
% ...
\[
\xymatrix{
A \ar[r]^{f} \ar[d]_{\alpha} & B \ar[d]^{\beta} \\
C \ar[r]_{g} & D
}
\]Das ergibt ein kommutatives Quadrat mit A, B, C, D an den Ecken: f oben nach rechts, α links nach unten, β rechts nach unten, g unten nach rechts. Ein Diagramm ist selbst ein Stück Mathematik, es steht daher in einer abgesetzten Mathematikumgebung. Für ein neues kommutatives Diagramm ist heute das TikZ-basierte tikz-cd die moderne Wahl — leichter bei Kurven, ausgefeilten Pfeilspitzen und komplexen mehrzeiligen Diagrammen, und die Fehlermeldungen sind lesbar. Der Wert dieses Abschnitts liegt darin, bereits in Xy-pic geschriebene Manuskripte lesen und bearbeiten zu können. Der Vergleich beider gehört auf die Seite zu kommutativen Diagrammen.
Asymptote: eine Sprache, deren Compiler in TeX Live steckt
Die Nachricht, ein externes Programm sei nötig, macht misstrauisch — doch Asymptotes asy gehört zu TeX Live. Im Binärverzeichnis von TeX Live 2024 liegt ein rund 45 MB großes asy neben mpost und mf; asy --version antwortet "Asymptote version 2.88" und führt unter den aktivierten Optionen "V3D 3D vector graphics output" auf. Mit der Installation von TeX Live ist Asymptote also bereits vorhanden, ohne dass etwas nachgeladen werden müsste. Das ist der entscheidende Unterschied zu gnuplot, das nicht in TeX Live enthalten ist und selbst installiert werden muss.
Asymptote ist keine Sammlung von TeX-Makros, sondern eine eigenständige Vektorgrafiksprache. Mit C++-ähnlicher Syntax beschreibt sie Abbildungen als echte Programmiersprache mit Variablen, Funktionen, Schleifen und Typen. Auch die Entwurfsabsicht ist interessant: Das offizielle Handbuch stellt Asymptote als von MetaPost angeregte Sprache vor und wirbt zugleich mit einer klareren, C++-artigen Syntax. Am ungewöhnlichsten ist die Bestimmung der Abmessungen. Kollidiert eine Gesamtgröße wie size(6cm) mit Elementen, die nicht mitskalieren — Beschriftungen und Pfeilspitzen —, löst Asymptote die Randbedingungen mit dem Simplexverfahren, also mit linearer Optimierung. Zeichensprachen, die ein lineares Programm lösen, um die Größe einer Abbildung festzulegen, sind selten.
Zur Einbettung in LaTeX lädt man \usepackage{asymptote} und schreibt den Abbildungscode in eine asy-Umgebung. Konstruktionsbedingt sind es drei Schritte — der Lauf unter TeX Live 2024 verlief so: Zuerst schreibt pdflatex den Inhalt der asy-Umgebung als <Jobname>-1.asy heraus und meldet zugleich "Package asymptote Warning: file ... not found on input line 11." — verständlich, denn die Abbildung existiert noch nicht. Dann erzeugt asy <Jobname>-1.asy die Datei <Jobname>-1.pdf, und ein zweiter pdflatex-Lauf bindet dieses PDF ein. Die drei Schritte von Hand zu drehen ist mühsam; in der Praxis übernimmt das latexmk.
pdflatex document # writes document-1.asy
asy document-1.asy # produces document-1.pdf
pdflatex document # includes it
# or, in one go:
latexmk -pdf document// a standalone .asy file, run with: asy figure.asy
import three;
size(6cm);
draw(unitcube);
draw(O--X, red, Arrow3);
draw(O--Y, green, Arrow3);
draw(O--Z, blue, Arrow3);Dieser Code importiert das Modul three mit den 3D-Funktionen, zeichnet einen Einheitswürfel und zieht rote, grüne und blaue dreidimensionale Pfeile vom Ursprung entlang der x-, y- und z-Achse. Abbildungen müssen nicht eingebettet sein: Als eigenständige .asy-Datei geschrieben und mit asy figure.asy allein ausgeführt, lassen sie sich als PDF, EPS, SVG, WebGL oder als in ein PDF einbettbares 3D-Format ausgeben. Da TeX die Beschriftungen setzt, passt Mathematik in der Abbildung zur Textschrift. Für ernsthaftes 3D — Körper und Flächen mit Koordinatenachsen — schreibt sich Asymptote weit natürlicher als TikZ. Mitgeliefert wird zudem die grafische Oberfläche xasy zum interaktiven Zeichnen samt Export von .asy-Quelltext.
MetaPost: mit LuaLaTeX ganz ohne externes Programm
MetaPost ist John Hobbys Umarbeitung von Knuths METAFONT — einer Sprache zur Beschreibung von Schriften — mit PostScript als Ausgabe. Es erbt METAFONTs Notation, glatte Kurven aus Punkten und Richtungen zu bestimmen (Hobbys Algorithmus), und erlaubt, Koordinaten deklarativ als Gleichungen anzugeben. Klassisch wird es als eigenständige Sprache genutzt: Eine .mp-Datei geht an das Spezialprogramm mpost und kommt als EPS zurück.
Im heutigen LaTeX ist dieser externe Aufruf jedoch entbehrlich. Lädt man das Paket luamplib, lässt sich MetaPost unmittelbar in eine mplibcode-Umgebung schreiben. LuaTeX trägt die MetaPost-Engine als mplib-Bibliothek in sich, ein separates mpost entfällt ebenso wie --shell-escape. Das untenstehende Beispiel unter TeX Live 2024 durch lualatex geschickt, ergab in einem einzigen Durchlauf ein PDF, ohne dass ein externer Prozess angestoßen wurde. Von den vier Systemen dieser Seite verlangt allein MetaPost über LuaLaTeX gar kein zusätzliches externes Werkzeug.
% compile with lualatex
\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
draw fullcircle scaled 2cm withpen pencircle scaled 1pt;
draw (-1cm,0)--(1cm,0);
draw (0,-1cm)--(0,1cm);
endfig;
\end{mplibcode}
\end{document}Der Inhalt von mplibcode ist reines MetaPost. beginfig(1) … endfig grenzen eine Abbildung ab; gezeichnet wird der auf 2 cm Durchmesser skalierte Einheitskreis mit einem 1-pt-Stift, dazu je ein waagerechter und ein senkrechter Durchmesser. fullcircle, pencircle und scaled gehören sämtlich zum eingebauten Wortschatz von MetaPost. Kernstück des Ökosystems ist MetaFun, ein leistungsfähiges Format, über das das Satzsystem ConTeXt MetaPost tief integriert. Wer mit ConTeXt arbeitet, für den ist MetaPost das zentrale Zeichenmittel; wer überwiegend LaTeX nutzt, greift standardmäßig zu TikZ und zu MetaPost, wenn dessen von METAFONT geerbte Kurvenbeschreibung gefragt ist.
Die vier im Vergleich: was wann wählen
Nach Ausgabeweg und Engine geordnet, wird die Entscheidungsgrundlage sichtbar. Bei der Pflege bestehender Dokumente sollte man das dort verwendete System lesen und schreiben können. Werden 3D-Abbildungen gebraucht: Asymptote. Wird mit ConTeXt gearbeitet: MetaPost über MetaFun. Für ein neues kommutatives Diagramm: tikz-cd statt Xy-pic. Und für die große Mehrheit der übrigen Zeichnungen ist TikZ das solideste Urteil — kein externes Werkzeug, kein besonderer Ausgabeweg.
| System | Ausgabeweg / Engine | Externes Werkzeug | Stärke / Haupteinsatz |
|---|---|---|---|
PSTricks | latex → dvips → ps2pdf, oder pdfLaTeX mit auto-pst-pdf, oder XeLaTeX allein | dvips und Ghostscript; der auto-pst-pdf-Weg braucht zusätzlich --shell-escape | Hochwertige PostScript-Füllungen und -Effekte; viele Altdokumente; weiterhin gepflegt (v3.19c, 2024) |
Xy-pic | Läuft unter gewöhnlichem LaTeX; kein besonderer Weg | Keines | Veteran der kommutativen Diagramme; tikz-cd ist der moderne Ersatz; eingefroren bei 3.8.9 (2013) |
Asymptote | latex/pdflatex → asy → erneut latex; oder eigenständiges .asy | asy liegt TeX Live bei; latexmk automatisiert die Durchläufe | Anspruchsvolles 2D und 3D; Körper und Flächen mit Achsen; Ausgabe bis SVG, WebGL und 3D-PDF |
MetaPost | .mp mit mpost verarbeiten; oder LuaLaTeX mit mplibcode aus luamplib | Über LuaLaTeX keines — mplib steckt in LuaTeX | Von METAFONT geerbte Kurven und Koordinaten als Gleichungen; Kern von ConTeXt (MetaFun) |