Schnelles erzeugen von LaTeX-Dokumenten [Update]

Veröffentlicht: 6. Februar 2013 in Latex
Schlagwörter:, , , , ,

Da ich in letzter Zeit Buch mit 300 Seiten und mehr mitgearbeitet habe, hat mich der Erzeugungsprozess von LaTeX doch irgendwann gestört. LaTeX ist numal immer noch eine Ein-Prozess-Anwendung und kann deshalb Mehrkern-Systeme nicht ganz so optimal ausnutzen. Es gibt jedoch trotzdem Tricks wie der Erstellungsprozess beschleunigt werden kann.

Schritt 1 – Erstellvorgang im TeX-Editor anpassen

Normalerweise ruft der TeX-Editor einen Befehl der Art latex file oder pdflatex file auf. Dieser Vorgang geht über das Dokument, setzt Referenzen und erzeugt das Dokument. Da mitunter zusätzlich ein Index oder Bibliographie-Management erzeugt werden soll, muss der (pdf)latex-Befehl mehrfach ausgeführt werden. Der Trick besteht nun darin, bei den ersten Aufrufen ein -draftmode an den (pdf)latex-Befehl anzuhängen, wodurch die Generierung beschleunigt wird.

Für meinen TeX-Editor (TeXstudio) sieht die Befehlsreihenfolge wie folgt aus:

pdflatex -draftmode --shell-escape -synctex=1 -interaction=nonstopmode %.tex
bibtex %
makeindex -g -s %.ist %.idx
pdflatex -draftmode --shell-escape -synctex=1 -interaction=nonstopmode %.tex
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex

Der Platzhalter „%“ wird hierbei durch den Namen des eigentlichen TeX-Dokuments ohne Dateiendung ersetzt. Diese Befehlsreihenfolge lässt sich als Befehel für das „Schnelle Erzeugen“ abspeichern („Menü“ -> „Optionen“ -> „TeXstudio konfigurieren …“ -> „Schnelles Erzeugen“). Die einzelnen Kommandos werden hierbei mit einer Pipe („|“) konkateniert angegeben.

Schritt 2 – Nur benötigte Teildokumente einbinden

Bei einem langen/großen Dokument ist es lästig, immer alle Inhalte generieren zu müssen. Dies ist aber durchaus nötig, da die Kross-Refeerenzen auf andere Inhalte benötigt werden um z.B. den Satz anpassen zu können. Hier wäre es Vorteilhaft, wenn nur das aktuell zu bearbeitende Dokument eingebunden wird (die Erzeugung ist dadurch deutlich schneller) und die Referenzen auf andere Inhalte eingbunde werden.

In meinen bisherigen Dokumenten hatte ich ein Hauptdokument mit Teildokumenten pro Hauptkapitel.

Hautdokument.tex
- Kapitel-1.tex
- Kapitel-2.tex
- Kapitel-3.tex
- ...
- Kapitel-N.tex
- ...
- Anhang.tex

Die einzelnen Kapitel wurden dabei per \input{datei.tex} eingebunden. Dieses Verfahren hat den Vorteil, dass in den einzelnen Dokumenten weitere Inhalte per \input{...} eingebunden werden können. Für die Teilweise Generierung von einzelnen Kapiteln + das Setzen der korrekten Referenzen ist dieses Verfahren jedoch nicht geeignet.

Das besserer Verfahren in diesem Fall besteht darin, den \input{...}-Befehl durch \include{...} zu ersetzten. \include{...} hat dabei folgende Eigenheiten:

  • Ist ein einzubindendes Dokument nicht vorhanden, wird nicht beim \input{...}-Befehl ein Fehler geworfen, sondern nur eine Warnung ausgegeben.
  • In einer eingebundenen Datei können keine weiteren \include{...}-Befehle verwendet werden.
  • Der \include{...}-Befehle führt intern \pagebreak \input{...} \pagebreak aus, weshalb vor und nach diesem Befehl immer eine neue Seite erzeugt wird. Bei Kapiteln ist dies durchaus gewünscht, bei anderen Strukurierungsarten kann dieses Verhalten unerwünscht sein.

Wichtig ist nun, dass alle per \include{...} Dateien im Befehl \includeonly{...} per Komma separiert (keine Leerzeichen!) angegeben werden.
Beispiel:

\documentstyle{...}
...
\includeonly{kapitel-1,kapitel-2,anhang}
...
\begin{document}
\include{kapitel-1}
\include{kapitel-2}
...
\include{anhang}
\end{document}

In diesem Beispiel werden nun alle Dateien („kapitel-1“, „kapitel-2“ und „anhang“) eingebunden und generiert. Dabei wird für jede per \include{...} eingebundene Datei zusätzlich eine *.aux-Datei erzeugt. Diese ist wichtig, da dort die Information für mögliche Referenzen stehen.
Im nächsten Beispiel wird nur noch die Datei „kapitel-2“ eingebunden:

\documentstyle{...}
...
\includeonly{kapitel-2}
...
\begin{document}
\include{kapitel-1}
\include{kapitel-2}
...
\include{anhang}
\end{document}

Wurde das Dokument einmal sauber vorher generiert, werden in „kapitel-2“ die Kapitelnummerierung korrekt wiedergegeben und die Referenzen auf Inhalte außerhalb von „kapitel-2“ werden richtig gesetzt. Weitere Informationen gibt es unter http://web.science.mq.edu.au/~rdale/resources/writingnotes/latexstruct.html.

Durch dieses Verfahren kann die Erzeugung von großen Dokument in LaTeX dratsich reduziert werden und die Bearbeitung wird deutlich komfortabler.

Update

Das Verfahren lässt sich noch weiter beschleunigen, indem das Argument „-synctex=1“ im obigen Schritt 1 weggelassen wird, da dadurch einen geöffnete Livevorschau nicht regelmäßig aktualisiert wird. Die Generierung in dem Editor TeXstudio wird somit weiter beschleunigt.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s