Eine Formel oder Grafik als Bilddatei auszugeben, ist das, was LaTeX am schlechtesten kann, aus einem nüchternen Grund: LaTeXs Ausgabeeinheit ist eine Seite. Nachgemessen: Ein A4-Blatt misst 595 × 842 pt, die darauf gesetzte Zeile mit dem Gauß-Integral aber nur 86 × 28 pt. Über 99 % der Differenz ist leeres Papier, das niemand haben will. Eigentlich wollte man nur eine Gleichung in PowerPoint, Keynote, Word oder eine Webseite einfügen – und schon beginnt der Kampf mit den Rändern. Diese Seite behandelt die drei Werkzeuge, die diesen Kampf gewinnen – die Klasse standalone, die innerhalb von LaTeX zuschneidet, pdfcrop, das ein fertiges PDF beschneidet, und dvisvgm, das nach SVG wandelt – sowie TeX2img, die grafische Anwendung, die alles zusammenfasst.
Die Klasse standalone: innerhalb von LaTeX auf den Inhalt zuschneiden
Die direkteste Antwort ist die Klasse standalone. Schreibt man \documentclass{standalone} statt \documentclass{article}, schrumpft die Seite auf die Begrenzungsbox des Inhalts und liefert ein einseitiges PDF, exakt auf den Inhalt zugeschnitten. Das Gauß-Integral vom Seitenanfang, mit border=2pt gesetzt, ergibt 85,8 × 28,0 pt – aus den 595 × 842 pt eines A4-Blatts ist das unerwünschte Papier restlos verschwunden. Autor ist Martin Scharrer; TeX Live 2024 enthält v1.3b (2022/10/10).
% pdflatex figure.tex -> a one-page PDF cropped to the formula
\documentclass[border=2pt]{standalone}
\usepackage{amsmath}
\begin{document}
$\displaystyle \int_{-\infty}^{\infty} e^{-x^2}\,dx = \sqrt{\pi}$
\end{document}Eine viel abgeschriebene, aber wirkungslose Angabe sei hier ausgeräumt: \documentclass[preview]{standalone} ändert nichts, denn preview ist der Standard von standalone. Ein Blick in die Klassendatei zeigt, dass preview bereits vor der Optionsverarbeitung wahr ist; sinnvoll ist die Gegenoption crop. (Mit crop wird preview abgeschaltet und ein Zuschnitt ohne das Paket preview verwendet – der Notausgang, wenn preview unter XeLaTeX Ärger macht.) Ränder setzt man mit border=: ein Wert gilt für alle vier Seiten, zwei bedeuten „links-rechts / oben-unten“, vier stehen für links, unten, rechts, oben in dieser Reihenfolge. Voreingestellt sind 0,50001 bp – auch im Standard bleibt also ein Hauch von Rand.
Woher dieses preview stammt, ist eine hübsche Randnotiz. standalone schneidet zu, indem es das Paket preview lädt – und preview.sty gehört zu AUCTeX / preview-latex, genau jenem Code, der Emacs eine gesetzte Formel direkt im bearbeiteten Puffer anzeigen lässt. Eine Mechanik, die gebaut wurde, um für einen Editor eine Formel aus einem Dokument herauszuschneiden, ist exakt die Mechanik, die man zum Herausschneiden für eine Folie braucht. TeX Live 2024 enthält v13.3 (2024/01/17).
Zwei weitere Optionen von standalone lohnen sich. varwidth=<Breite> erlaubt dem Inhalt einen Zeilenumbruch, sodass sich auch eine mehrzeilige Bildunterschrift setzen lässt (standardmäßig dehnt sich der Inhalt endlos in einer Zeile). multi=<Umgebung> legt jede tikzpicture einer Datei auf eine eigene Seite – so hält man eine ganze Abbildungssammlung in einer Quelle und bindet nur die gewünschte Seite ein. Lädt man zudem das gleichnamige Paket standalone im Hauptdokument, steht \includestandalone{figure} bereit; es holt eine Abbildung wahlweise als Quelltext oder als bereits erzeugtes PDF herein – während des Entwurfs das Schnellere, zur Abgabe das Sicherere.
pdfcrop: die Ränder eines vorhandenen PDF abschneiden (Achtung: Seitenzahl)
Wenn die Quelle unantastbar ist, ist pdfcrop das Werkzeug. Man übergibt ein fertiges PDF, es misst die Ränder jeder Seite, schneidet sie ab und schreibt ein neues PDF. Das hilft bei einem gemeinsam verfassten Entwurf, dessen \documentclass man nicht ändern darf, oder bei einem Abbildungs-PDF von jemand anderem. Es liegt TeX Live bei; Autor ist Heiko Oberdiek, die Fassung in TeX Live 2024 ist 1.42 (2023/04/15). Für etwas Luft um den Inhalt übergibt man --margins "2", in Big Points.
pdfcrop page.pdf out.pdf # trim all margins
pdfcrop --margins "2" page.pdf out.pdf # leave 2 bp on every side
pdfcrop --margins "5 2 5 2" a.pdf b.pdf # left bottom right top
pdfcrop --hires --clip a.pdf b.pdf # HiResBoundingBox, and clip the contentWer die Arbeitsweise kennt, kann das Verhalten voraussagen. pdfcrop analysiert das PDF nicht selbst. Es erfragt die Begrenzungsbox bei Ghostscript und startet danach pdfTeX erneut (oder XeTeX / LuaTeX mit --xetex / --luatex), um die Seite im neuen Papierformat neu umbrechen zu lassen. Ein PDF zu beschneiden lässt also TeX laufen. Ohne installiertes Ghostscript geht nichts – deshalb gibt es auch die Option --gscmd, um den Aufrufnamen anzugeben.
Und hier die Mine, in die alle treten. pdfcrop betrachtet jede Farbe auf der Seite als Inhalt; steht also unten eine Seitenzahl – wie bei article standardmäßig –, reicht der Beschnittrahmen bis dorthin hinunter. Beschneidet man eine A4-Seite, auf der nur \[ E = mc^2 \] steht, erhält man 43 × 559 pt: die Formel oben, die Seitenzahl unten, dazwischen Leere. Mit \pagestyle{empty} wiederholt, werden daraus 43 × 13 pt. In neun von zehn Fällen steckt genau das hinter „beschnitten, aber merkwürdig hoch“.
SVG-Export mit dvisvgm – und ob der Text in Umrisse soll
Für das Web oder für eine Zeichenanwendung, die SVG versteht, ist dvisvgm die erste Wahl. Es wandelt DVI, EPS und PDF in SVG, liegt TeX Live bei und wird seit 2005 von Martin Gieseking entwickelt (TeX Live 2024 enthält 3.2.2). Der verlässlichste Weg ist, mit latex ein DVI zu erzeugen und dieses an dvisvgm zu geben. Übergibt man eine einzelne Formel, meldet es beim Konvertieren die tatsächliche Größe – graphic size: 81.5pt x 23.4pt –, sodass sofort klar ist, wie stark am Zielort skaliert werden muss.
latex figure.tex # produce figure.dvi
dvisvgm --no-fonts --exact-bbox figure.dvi # glyphs as paths, tight box
dvisvgm --font-format=woff2 figure.dvi # keep real text, web font
dvisvgm --eps figure.eps # EPS input
dvisvgm --pdf figure.pdf # PDF input: needs gs or mutoolDie Weggabelung lautet: Text in Umrisse wandeln oder nicht? Mit --no-fonts werden Glyphen als path-Elemente gezeichnet, sodass das Aussehen selbst dort exakt reproduziert wird, wo die Schriften fehlen; dafür lässt sich der Text im SVG weder durchsuchen noch markieren, und die Datei wird etwas größer. Bleibt er Text, bettet man eine Schrift ein, etwa mit --font-format=woff2. Für Mathematik im Web ist das Umwandeln die sichere Voreinstellung; soll die Formel zusammen mit dem Fließtext durchsuchbar sein, bettet man die Schrift ein. Und wenn der Zuschnitt genau sitzen soll, berechnet --exact-bbox die Begrenzungsbox aus den tatsächlichen Glyphenkonturen.
Ein Vorbehalt: Der Eingabemodus --pdf funktioniert mit dvisvgm allein nicht. Ein PDF zu interpretieren erfordert entweder Ghostscript oder mutool aus MuPDF; ist keines vorhanden, bricht es mit ERROR: can't retrieve number of pages from file ab. TeX Live liefert mutool nicht mit – für diesen Weg also eines von beiden installieren oder schlicht den DVI-Weg wählen. (Für dvisvgm selbst ist die Seite zu den DVI-Konvertern zuständig.)
Wenn PNG gebraucht wird: Auflösung und Transparenz
Nimmt das Ziel ein Vektorformat an – PDF, SVG, EPS –, ist dieses immer die richtige Wahl. Die Konturen überstehen jede Vergrößerung, die Striche bleiben im Druck wie auf dem Beamer scharf. Raster (PNG, JPEG) braucht man, wenn das Ziel keine Vektoren akzeptiert oder wenn das Aussehen auf fremden Rechnern garantiert gleich sein soll. Geht es doch ins Raster, lautet die Regel: zuerst die Auflösung festlegen; für etwas, das eine projizierte Folie füllen soll, plant man das Äquivalent von 300–600 dpi ein. Nachträgliches Vergrößern fügt keine Information hinzu.
standalone bietet für genau diesen Zweck die Option convert, die das Rasterbild im selben Kompilierlauf mit erzeugt. Da ein externer Konverter aufgerufen wird, ist -shell-escape nötig. Für einen transparenten Hintergrund wählt man PNG und lässt statt eines Randes von null ein wenig border stehen; so fügt sich das Bild natürlich in die Hintergrundfarbe der Folie ein. JPEG verwendet eine für Fotos gedachte Kompression und hinterlässt bei Formeln und Strichgrafiken Rauschen um die Konturen – für Mathematik kein JPEG wählen.
TeX2img: kompilieren, zuschneiden und exportieren in einem Fenster
TeX2img fasst all das in einer Anwendung zusammen. Man fügt ein Formel- oder Grafikfragment ins Fenster ein, wählt Engine und Ausgabeformat, drückt die Schaltfläche – und Kompilieren, Zuschneiden und Exportieren laufen in einem Zug. Das Werkzeug stammt aus der japanischen TeX-Gemeinschaft: Yusuke Terada entwickelte es bis Version 1.2, danach ging die Windows-Ausgabe an Noriyuki Abe über, während Terada die macOS-Ausgabe weiterführte; beide werden unabhängig entwickelt. Es ist eine lokal laufende Anwendung, kein Webdienst, sodass alle lokal installierten Style-Dateien und Schriften zur Verfügung stehen.
Im Inneren geschieht die Kombination aus allem Vorangegangenen. Zuerst wird das Fragment mit der gewählten Engine kompiliert (pdflatex, platex, uplatex, lualatex, xelatex und so weiter); bei DVI-basierten Wegen wie platex / uplatex schiebt es dvipdfmx oder dvips dazwischen; zum Schluss schneidet Ghostscript (Version 9 oder neuer) auf die Begrenzungsbox zu und schreibt das gewünschte Format. Eine funktionierende TeX-Installation und Ghostscript sind also Voraussetzung. Unter Windows braucht die SVG-Ausgabe zusätzlich MuPDF – dieselbe Lage wie bei dvisvgm --pdf, das im vorigen Abschnitt mutool verlangte. Da die Engine frei wählbar ist, gelingen auch Fragmente mit japanischer Mathematik und japanischen Schriften in gewohnter Qualität.
Die Formatpalette ist breit: vektoriell EPS, PDF, SVG (und SVGZ), EMF, rasterbasiert PNG, JPEG, GIF, TIFF, BMP. EMF ist das Vektorformat zum Einfügen in Office unter Windows und steht nur in der Windows-Ausgabe zur Verfügung. Ränder, Auflösung und Hintergrundtransparenz lassen sich einzeln einstellen, und die GUI erlaubt das Nachjustieren an einer laufenden Vorschau. Für die Stapelverarbeitung vieler Gleichungen oder die Einbindung in einen Build gibt es eine Kommandozeilenversion; unter Windows startet TeX2imgc.exe die GUI im CUI-Modus. Die Form lautet: zuerst die Optionen, dann Eingabe- und Ausgabedateien paarweise.
TeX2imgc.exe /transparent /resolution=600 equation.tex equation.png
TeX2imgc.exe /latex=uplatex /gs=gswin64c formula.tex formula.svgDrei Details werden im tatsächlichen Gebrauch wichtig. Erstens: Es genügt, nur den Dokumentinhalt ohne \documentclass einzufügen – TeX2img umschließt ihn vor dem Kompilieren mit einer Vorlage, sodass man für eine einzelne Formelzeile kein Gerüst schreiben muss. Ebenso lässt sich ein vollständiges Fragment mit eigener Präambel übergeben, eine vorhandene .tex-Datei oder ein fertiges PDF, PS oder EPS, das in ein Bild verwandelt werden soll. Zweitens wählt man bei PDF und SVG, ob der Text in Umrisse gewandelt oder als echter Text erhalten bleibt – dieselbe Entscheidung wie dvisvgm --no-fonts im vorigen Abschnitt. Drittens kann die macOS-Ausgabe das Ergebnis direkt in Illustrator, Word oder PowerPoint einfügen, sodass es ohne Umweg über eine Datei auf der Folie landet.
Das Ziel entscheidet: Word, PowerPoint, Keynote, Web, Druck
Die Formatwahl ist keine Geschmacksfrage, sondern hängt davon ab, was das Ziel annimmt. Die Tabelle unten hält das fest. Grundsätzlich zuerst ein Vektorformat versuchen und nur dort auf Raster ausweichen, wo Vektoren abgelehnt werden. Und eines wird leicht vergessen: Eine zum Bild gewordene Gleichung lässt sich nicht mehr korrigieren. Was sich weiter ändert – die Formeln eines Aufsatzes, an dem man noch schreibt –, bleibt besser LaTeX; exportiert wird, was feststeht, oder was an Orte muss, die LaTeX nicht erreicht. Das ursprüngliche .tex-Fragment immer aufbewahren.
| Format | Typ | Passendes Ziel |
|---|---|---|
PDF | Vektor | Wiedereinbinden in LaTeX, Druck, Keynote; erste Wahl |
SVG | Vektor | Webseiten sowie Zeichenprogramme wie Figma oder Illustrator |
EPS | Vektor | ältere Druck-Workflows und Verlage, die EPS verlangen |
EMF | Vektor | Word und PowerPoint unter Windows; TeX2img bietet es nur dort |
PNG | Raster | Folien allgemein, Chat, überall wo Transparenz zählt; Auflösung zuerst festlegen |
JPEG | Raster | nur wo Fotos im Spiel sind; nie für Formeln oder Strichgrafik |
Zum Schluss die Arbeitsteilung. Um im LaTeX-Dokument zu bleiben, nimmt man die Klasse standalone – jede Abbildung in einer eigenen Datei, eingebunden über \includestandalone, ist die übliche Praxis. Um ein PDF zu beschneiden, dessen Quelle unantastbar ist, nimmt man pdfcrop. Wenn SVG verlangt ist, nimmt man dvisvgm. Und wer mehrere Fassungen ausprobieren und das Format nach Augenmaß festlegen oder eine japanische Umgebung über eine GUI bedienen will, kommt mit TeX2img am schnellsten ans Ziel. Für das Zeichnen der Abbildungen selbst ist die TikZ-Seite zuständig, für das Wiedereinfügen der Bilder ins Dokument die Seite zum Einbinden von Bildern.