Automatisches Übersetzen von LaTex-Quellcode

Schreibt man gerade an einem LaTex-Dokument, schaut der Workflow eigentlich immer relativ gleich aus: Tex-Quellcode in einem Texteditor schreiben, nach einer Änderung Quelltext in zum Beispiel PDF übersetzen und das Ergebnis anschließend anschauen. Das häufige hin und her Wechseln zwischen Terminal und den beiden anderen Fenstern kann gerade bei längerem Arbeiten nerven. Eine eigene Entwicklungsumgebung finde ich für LaTex dagegen auch übertrieben. Ich präferiere zudem auch den Texteditor meiner Wahl (in meinem Fall Geany, kann aber freilich auch vim, sublime etc. sein) Meistens führt man im Terminal zum LaTex-Kompilieren folgenden Befehl aus:

1
pdflatex Beispiel-datei_xyz.tex

Viel angenehmer ist es in meinen Augen aber, wenn die tex-Datei bei jeder Änderung automatisch in eine pdf übersetzt wird. Das geht einfach mit folgenden Befehl und mithilfe von inotify (Installation ist dort ebenfalls beschrieben):

1
while true; do inotifywait -e modify *.tex; latexmk -pdf; done

Wenn man BibTex verwendet, kann man neben *.tex auch noch ein *.bib hinzufügen.

Damit kann es höchstens passieren, dass durch einen Syntaxfehler das Kompilieren gestoppt wird. Dadurch kann man gerade bei größeren Bildschirmen Editor- und PDF-Reader immer nebeneinander im Vordergrund behalten – ein ständiges Wechseln zwischen Terminal und Editor entfällt. Verwendet man als PDF-Reader zum Beispiel evince, wird die PDF bei jeder Änderung automatisch neu geladen. Winwin-Situation – und ein Stückchen angenehmeren Workflow. ;)

Update: Alternative ohne inotifywait

Per Kommentar hab ich die Information bekommen, dass latexmk auch von Haus aus eine sehr ähnliche Funktion bietet. Erstmal Danke für den Hinweis! Denn ein einfaches

1
latexmk -pdf -pvc codierung.tex

macht die gleiche Arbeit wie ein der Befehl mit inotifywait. Einzige Einschränkung, die es nach Manpage gibt:

Zudem wird standardmäßig Adobe Reader (der bekanntermaßen nicht mehr für Linux existiert) für die automatische Vorschau verwendet. Um das zu ändern, folgendes im Terminal ausführen:

1
echo '$pdf_previewer = "start evince";' >> ~/.latexmkrc

Ich habe hier beispielhaft einfach mal evince eingetragen. Man kann natürlich auch Okular oder einen ganz anderen PDF-Reader seiner Wahl eintragen. Mehr Infos gibt es in der Manpage von latexmk.

Kommentare

Avatar von killermoehre

killermoehre

#1

Gerade Geany bietet es an, mittels F8/F9 das Dokument zu kompilieren. Diese frei definierbaren Befehle sind auch abhängig vom Typ, so dass für .tex pdflatex verwendet werden kann, für .c aber gcc. Außerdem unterstützen viele moderne PDF-Betrachter das automatische Nachladen einer Datei, falls diese sich verändert haben sollte.

Avatar von Christoph

Christoph

#3

Gerade Geany bietet es an, mittels F8/F9 das Dokument zu kompilieren. Diese frei definierbaren Befehle sind auch abhängig vom Typ, sodass für .tex pdflatex verwendet werden kann, für .c aber gcc.

Jo, weiß ich. Allerdings möchte ich mir den Luxus erlauben und nicht einmal mehr eine Taste drücken wollen. (sollte Geany es ggf. per Plugin auch automatisch bei jeder Änderung kompilieren können, dann ist das natürlich auch eine Möglichkeit. Nur ist mir nichts dergleichen bekannt.)

Außerdem unterstützen viele moderne PDF-Betrachter das automatische Nachladen einer Datei, falls diese sich verändert haben sollte.

Nichts anderes wird imho auch im letzten Absatz erwähnt. ;)

Avatar von fheub

fheub

#2

latexmk -pvc

Run a file previewer and continually update the .dvi, .ps, and/or .pdf files whenever changes are made to source files (see the Description above). Which of these files is generated and which is viewed is governed by the other options, and is the same as for the -pv option. This option also turns on the -f option, since it is normally desirable in preview-continuous-mode to continue working even if errors are found.

http://man.cx/latexmk

Avatar von Christoph

Christoph

#4

Danke für den Hinweis! Einmal, wenn man ein neues Tool benutzt (pdflatex wollte mit inotify nicht) und nicht in die Manpages angeschaut hat…

Avatar von SammysHP

SammysHP

#5

latexmk hat auch noch den Vorteil, dass das Dokument ausreichend oft kompiliert wird. Verknüpfungen, Inhaltsverzeichnisse, Quellenverzeichnisse, Index… Dadurch müssen diverse Tools aufgerufen und das Dokument ggf. mehr als drei Mal kompiliert werden.

Avatar von Micha

Micha

#6

Super Anleitung. Ich verwende es jetzt zur Erstellung meiner Graphviz-Graphen.

Neuen Kommentar schreiben