LaTeX schneller kompilieren
LaTeX Dokumente zu schreiben ist wunderbar, da man sich im Gegensatz zu anderen Textverarbeitungsprogrammen kaum um die Formatierung oder das Layout kümmern muss beziehungsweise reicht es dies einmal zu tun. Wenn man sein Dokument aber mal fertig geschrieben hat, hätte möchte man dann ja auch möglichst bald das entsprechende PDF erstellen. Doch das kompilieren eines LaTeX-Dokuments kann schon mal einige Minuten in Anspruch nehmen. Nutzt man Overleaf, kann es auch vorkommen, dass es zu lange dauert und man ein compilation time-out hat. Nun muss man wohl oder übel irgendwie die benötigte Zeit reduzieren. Dies habe ich hier und hier schon einmal in englisch erläutert. Hier folgt nun die deutschsprachige Version.
Der nachfolgende Code-Ausschnitt beinhaltet bereits alles, was ich ansprechen werde:
\documentclass[english,draft]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{longtable}
\setcounter{LTchunksize}{300}
\makeatletter
\gdef \LT@i {\LT@entry
{1}{73.41934pt}\LT@entry
{5}{81.22511pt}\LT@entry
{5}{81.22511pt}}
\gdef \LT@ii {\LT@entry
{1}{73.41934pt}\LT@entry
{5}{81.22511pt}\LT@entry
{5}{81.22511pt}}
\gdef \LT@iii {\LT@entry
{1}{73.41934pt}\LT@entry
{5}{81.22511pt}\LT@entry
{5}{81.22511pt}}
\makeatother
\begin{document}
\include{appendix.tex}
\end{document}
Draft Modus
Während man den eigentlichen Code schreibt möchte man vielleicht hin und wieder kurz etwas überprüfen, ob es auch mehr oder weniger korrekt dargestellt wird oder ob der verwendete Befehl so auch korrekt ist. Hierbei muss nicht alles perfekt aussehen, es macht nichts wenn Verweise noch nicht vollständig sind, Zeilenumbrüche noch nicht ganz passen oder Grafiken noch nicht dargestellt werden. Dann kann man den draft Modus aktivieren – ein Entwurf genügt. Hierzu ergänzt man die Dokumenten-Klasse um die draft Option.
\documentclass[english,draft]{scrartcl}
Bild-Formate
Möchte man ein Bild oder einen Plot einbinden hat man diesen allenfalls als *.png oder *.jpeg Datei vorliegen. pdfLaTeX konvertiert dieses Bild aber bei jedem Durchgang in eine *.pdf-Datei. Macht man dies einmalig und bindet die Bilder direkt als PDF ein, spart man sich diesen Vorgang.
\begin{figure}[H]
\centering
\includegraphics[width=1\textwidth]{img.pdf}
\caption{This images is stored as a PDF-file.}
\end{figure}
Überlange Tabellen
Arbeitet man mit Tabellen die mehr als eine Seite einnehmen kann man die entsprechenden Seiten-Umbrüche entweder selbst mühsam von Hand festlegen, was insbesondere dann unpraktisch ist, wenn man noch nicht weiss wo auf der Seite die Tabelle überhaupt beginnen wird oder man nutzt ein package, welches dies automatisiert, wie zum Beispiel longtables. Longtables bestimmt dann bei jedem Durchlauf die passende Verteilung der einzelnen Zeilen der Tabelle auf verschiedene Seiten – macht also automatische Seitenumbrüche zwischen den Zeilen der Tabelle. Dies ist ein Prozess der einige Zeit in Anspruch nehmen kann. Ist man aber einmal so weit und hat für die Tabelle einen festen Anfangspunkt innerhalb des Dokuments, muss man die Seitenumbrüche nur noch ein einziges Mal bestimmen lassen. Die Information hierüber kann man dann der main.aux-Datei entnehmen und direkt in den LaTeX-Code schreiben, dann muss longtables dies nicht jedes Mal von neuem machen. Nutzt man overleaf kann man die *.aux-Dateien über den Button download input and output files herunterladen.
Die *.aux-Datei kann man dann zum Beispiel mit Notepad++ lesen. Man sucht sich die Einträge die mit \LT@
starten. Diesen Teil kann man dann in sein Dokument hineinkopieren. Vor den Block aus der *.aux-Datei setzt man noch ein \makeatletter
. Den Block beendet man dann mit einem \makeatother
.
\makeatletter
\gdef \LT@i {\LT@entry
{1}{73.41934pt}\LT@entry
{5}{81.22511pt}\LT@entry
{5}{81.22511pt}}
\gdef \LT@ii {\LT@entry
{1}{73.41934pt}\LT@entry
{5}{81.22511pt}\LT@entry
{5}{81.22511pt}}
\gdef \LT@iii {\LT@entry
{1}{73.41934pt}\LT@entry
{5}{81.22511pt}\LT@entry
{5}{81.22511pt}}
\makeatother
Einbinden von Kapiteln
Ebenfalls hilfreich die Zeit zum Kompilieren zu reduzieren ist das Strukturieren des Dokuments. Hat man verschiedene Kapitel, muss nicht jedes Mal jedes Kapitel kompiliert werden, insbesondere dann nicht, wenn nur in einem Kapitel Änderungen vorgenommen wurden. Der Befehl \include
ermöglicht es uns einzelne Kapitel so einzubinden, dass sie immer nur dann kompiliert werden, wenn sie auch geändert wurden. Dazu werden zu jedem Kapitel jeweils eigene *.aux-Dateien angelegt. Man sollte hierbei beachten, dass Text, welcher über \include
eingefügt wird, je auf einer neuen Seite erscheint. Der Abschnitt wird (automatisch, im Hintergrund) mit einem \clearpage
begonnen.
Hat man mehrere Kapitel geändert und muss nun doch alles neu kompilieren, aber es kommt immer zu einem Time-out kann es helfen die Kapitel einzeln zu kompilieren und die weiteren Kapitel Stück für Stück hinzuzufügen. Zunächst könnte man das Dokument nur mit Kapitel 1 kompilieren.
\begin{document}
\include{Kapitel1.tex}
%\include{Kapitel2.tex}
%\include{Kapitel2.tex}
\end{document}
Dann fügt man Kapitel 2 hinzu und kompiliert abermals. Jetzt werden aber nur die Änderungen berücksichtigt, also nur Kapitel 2 wird wirklich kompiliert.
\begin{document}
\include{Kapitel1.tex}
\include{Kapitel2.tex}
%\include{Kapitel2.tex}
\end{document}
Und zu guter letzt möchte man das ganze Dokument vollständig haben. Man fügt das letzte Kapitel hinzu,
\begin{document}
\include{Kapitel1.tex}
\include{Kapitel2.tex}
\include{Kapitel2.tex}
\end{document}
Hat man ein grössere Projekt mit vielen Kapiteln und möchte nur kurz überprüfen, ob Kapitel 15 und der Anhang so passen, kann man den Befehl
\includeonly{Kapitel15,Anhang}
in die Präambel schreiben. Hierbei ist zu beachten das zwischen den Dateien kein Komma kommt und auch die Endung .tex
wird weggelassen. Die Seitenzahlen der nichtgenannten Kapiteln werden hierbei nicht aktualisert.
Noch zwei Bemerkungen zur Verwendung des \include{}
-Befehls:
- Sollte man ihn nicht verwenden um eine *.tex-Datei einzubinden, die die ganzen Settings des Dokumentes enthält, wie zum Beispiel die
\usepackage
Befehle. Dies führt zwar nicht zwangsläufig zu Fehlern, kann aber zu welchen führen die dann schwierig zu erkennen sind. Hier nutzt man besser\input{settings.tex}
(ja, hier mit der Endung .tex). - Der
\include
-Befehl lässt sich nicht verschachteln. Bindet man eine *.tex-Datei via\include
ein, kann man innerhalb dieser Datei keine weiteren via\include
einbinden. Mit\input
gibt es dieses Problem nicht. Schlaufen sollte man jedoch auch ja besser keine Bilden wenn man mal fertig werden will mit Kompilieren. 😉
Ich hoffe hiermit ist einigen geholfen und dem fertigen Dokument steht nun nichts mehr im Weg.