Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03662.jsonl.gz/2403

AKTUELLE BLOG-BEITRÄGE
ARCHIVIERTE BLOG-BEITRÄGE
LaTeX-Dokumente schneller kompilieren
Als Student muss man viele schriftliche Arbeiten verfassen. Gerade in der Physik ist es äussert komfortabel mit LaTeX zu arbeiten. Man "programmiert" quasi sein Dokument. Mathematik lässt sich so schneller eingeben. Doch auch die Darstellung ist so stets konsistent und einfach handhabbar. Andere Textverarbeitungsprogramme nutze ich kaum, auch nicht für Dinge die keinen wissenschaftlichen Bezug haben.
Einer der Nachteile von LaTeX ist jedoch, dass man am Ende sein Dokument kompilieren muss. Der geschriebene Code wird in ein PDF umgewandelt. Dies kann einige Zeit dauern. Nutzt man einen online Dienst wie overleaf kann es auch vorkommen, dass man die einem zur Verfügung stehende Zeit überschreitet. Mit einigen Kniffen lässt sich die Zeit, die für das Kompilieren nötig ist jedoch reduzieren. Wie erläutert der nachfolgende Post, welcher auch auf meinem IT-orientierten Blog zu finden ist.
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} \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
\includeeingefü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
\usepackageBefehle. 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
\includeein, kann man innerhalb dieser Datei keine weiteren via
\includeeinbinden. Mit
\inputgibt 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.