
Ich habe ein Experiment durchgeführt und festgestellt, dass die Verwendung -interaction=batchmode
mit lualatex die Kompilierungszeit bei einer meiner großen Latex-Dateien am meisten reduziert. Von 77 Minuten auf 45 Minuten. Alles auf Linux WSL-2 Ubuntu 20.04. Dies war sogar noch schneller als die Verwendung lualatex foo.tex >/dev/null
(55 Minuten), da die Ausgabe direkt aus der Quelle eliminiert wurde und nicht einmal die Ausgabe umgeleitet werden musste/dev/null
http://latexref.xyz/Befehlszeilenoptionen.html
Deshalb möchte ich meine Makefiles ändern, um dies zu verwenden. Das große Problem ist, dass ich die Fehler jetzt nicht mehr auf dem Bildschirm sehe, wenn sie auftreten. Alles geht in die Protokolldatei.
Gibt es eine Möglichkeit, es zu verwenden -interaction=batchmode
, aber zu stoppen?Undden Fehler auf dem Bildschirm anzeigen? Ansonsten muss ich jetzt jedes Mal die Logdatei öffnen, um zu sehen, ob die Datei mit oder ohne Fehler kompiliert wurde.
Dies ist nicht praktikabel, da ich Zehntausende von Latex-Dateien kompilieren muss und anhalten und die Fehlermeldung sehen muss, wenn sie auftritt, und nicht später.
Hier ist ein MWE mit einem Fehler
\documentclass{report}%
\begin{document}
This is a test
\sin x
\end{document}
Jetzt
>lualatex -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
>
Auf dem Bildschirm wird nichts angezeigt. Der Fehler wird in der Protokolldatei angezeigt. Ich habe auch versucht
>lualatex -halt-on-error -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
>
Gibt es eine Möglichkeit, im Batchmodus die Kompilierungsfehler auf dem Bildschirm anzuzeigen und dann zu stoppen?
Ich verwende nur Lualatex.
Aktualisieren
Dank des Hinweises genügt es, den Exist-Status von Lualatex zu überprüfen, um herauszufinden, ob der Vorgang erfolgreich abgeschlossen wurde oder nicht. Ein Blick in die Protokolldatei ist nicht nötig.
Antwort1
Wenn Sie lediglich feststellen möchten, ob ein Fehler aufgetreten ist oder nicht, können Sie sich den Exit-Status des lualatex
Kommandos ansehen: Er ist 0, wenn kein Fehler aufgetreten ist, andernfalls ist er 1. Im Fehlerfall können Sie dann in die Log-Datei schauen.
Wenn Sie Fehler direkt sehen möchten, können Sie auch Lua-Rückrufe verwenden.
Erstellen Sie eine Datei mybatchmode.lua
mit
texconfig.interaction = 0 -- Activate batchmode
texconfig.halt_on_error = true -- Stop at first error
callback.register('show_error_message', function(...)
texio.write_nl('term and log', status.lasterrorstring)
texio.write('term', '.\n')
end)
callback.register('show_lua_error_hook', function(...)
texio.write_nl('term and log', status.lastluaerrorstring)
texio.write('term', '.\n')
end)
und dann laufen
lualatex -lua=mybatchmode.lua file
Für die Beispieldatei in Ihrer Frage würde dies bedeuten:
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
! Missing $ inserted.
Antwort2
Sie können
lualatex --interaction=batchmode file || cat file.log
es wird also nur der Anmeldefehler angezeigt