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
killermoehre
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.
Christoph
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.)
Nichts anderes wird imho auch im letzten Absatz erwähnt. ;)
fheub
latexmk -pvc
http://man.cx/latexmk
Christoph
Danke für den Hinweis! Einmal, wenn man ein neues Tool benutzt (pdflatex wollte mit inotify nicht) und nicht in die Manpages angeschaut hat…
SammysHP
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.
Micha
Super Anleitung. Ich verwende es jetzt zur Erstellung meiner Graphviz-Graphen.
Neuen Kommentar schreiben