Lassen Sie mich eine LaTeX-Kompilierung nicht manuell abbrechen, wenn ein Fehler auftritt
-
09-09-2019 - |
Frage
Wie vorgeschlagen Hier, latexmk
ist eine praktische Möglichkeit, Ihr Dokument kontinuierlich zu kompilieren, wenn sich die Quelle ändert.Bei der Arbeit an einem Dokument treten jedoch häufig Fehler auf latex
gerät in Panik und wartet auf Benutzereingaben, bevor es fortfährt.Das kann sehr nervig sein, vor allem, wenn ich kürzlich etwas gehackt habe, um es zu kompilieren latex
direkt von einem Etherpad Dokument, das während der Eingabe kontinuierlich gespeichert wird.
Gibt es eine Einstellung für latex
oder latexmk
damit es einfach mit einer Fehlermeldung abbricht, wenn es nicht kompiliert werden kann?Oder wie würde ich bei Bedarf eine Art Expect-Skript einrichten, um die Beschwerden von LaTeX automatisch abzulehnen?
(Ich hatte gedacht pdflatex
's Option -halt-on-error
würde den Zweck erfüllen, aber anscheinend nicht.)
Bonus-Frage:Skim unter Mac OSX ist ein netter PDF-Viewer, der automatisch aktualisiert, wenn sich das PDF ändert (im Gegensatz zur Vorschau). außer dass Sie bei jedem Latexfehler erneut bestätigen müssen, dass Sie eine automatische Aktualisierung wünschen.Texniscope hat dieses Problem nicht, aber ich musste Texniscope dafür aufgeben andere Gründe.Gibt es eine Möglichkeit, Skim immer automatisch aktualisieren zu lassen, oder gibt es einen anderen Viewer, der das richtig macht?
HINZUGEFÜGT:Mini-Tutorial auf latexmk
basierend auf der Antwort auf diese Frage:
Erhalten
latexmk
Hier: http://www.phys.psu.edu/~collins/software/latexmk-jcc/Fügen Sie Folgendes zu Ihrem hinzu
~/.latexmkrc
Datei:$pdflatex = 'pdflatex -interaction=nonstopmode';
(Für OS X mit Skim)
$pdf_previewer = "open -a /Applications/Skim.app";
Während Sie Ihre Quelldatei bearbeiten,
foo.tex
, führen Sie Folgendes in einem Terminal aus:latexmk -pvc -pdf foo.tex
Verwenden Überfliegen oder einen anderen Echtzeit-PDF-Viewer zum Anzeigen von foo.pdf.Schauen Sie sich für Skim einfach die Registerkarte „Synchronisieren“ in den Skim-Einstellungen an und richten Sie sie für Ihren Editor ein.
Voila!Klicken Sie auf „Speichern“. foo.tex
wird nun dazu führen foo.pdf
sich erfrischen, ohne etwas zu berühren.
Lösung
Mit MikTeX, pdflatex
hat diese Befehlszeilenoption:
-interaction=MODE Set the interaction mode; MODE must be one
of: batchmode, nonstopmode, scrollmode,
errorstopmode.
Bearbeiten vorgeschlagen von @ 9999years:
Diese Werte entsprechen einem Satz von LaTeX \commands
, die die gleiche Funktionalität bieten.
Die Modi machen TeX in der folgenden Art und Weise verhalten:
errorstopmode
stoppt auf alle Fehler, ob sie über Fehler in der sind Quellcode oder nicht vorhandene Dateien.
scrollmode
hört nicht auf Fehler in der Quelle, sondern fordert Eingang, wenn ein ernstere Fehler wie wie eine fehlende Datei auftritt.In dem etwas falsch benannte
nonstopmode
, TeX fordert keine Eingabe nach schwerwiegende Fehler aber stoppt überhaupt.
batchmode
verhindert alle Ausgaben zusätzlich zu den (für den Einsatz in automatisierte Skripte). In allen Fällen werden alle Fehler in die Protokolldatei geschrieben (Yourtexfile.log).
Andere Tipps
Sie können auch \nonstopmode
oder \batchmode
ganz am Anfang Ihrer tex-Datei setzen; es wird dann mit jeder TeX-Version arbeitet, nicht nur pdflatex
. Für weitere Informationen über diese und ähnliche Befehle finden Sie in der sehr guten Bezug auf (raw) TeX-Befehle von David Bausum . Vor allem der Befehl von der Debug-Familie könnte hier von Interesse sein.
Ein weiterer möglicher Hack besteht darin, einfach Folgendes zu verwenden:
yes x | latexmk source.tex
Sie könnten immer einen Alias für 'Ja x | erstellen Latexmk 'Wenn Sie diese Option viele verwenden.Der Hauptvorteil davon, den ich gegenüber den anderen Vorschlägen sehe, besteht darin, dass es sehr schnell geht, wenn Sie gelegentlich möchten, dass sich latexmk so verhält.
Mehmet
Es gibt auch einen \batchmode
Befehl kann die Arbeit machen.