
Hice un experimento y descubrí que usar -interaction=batchmode
lualatex reduce al máximo el tiempo de compilación en un archivo de látex grande que tengo. Bajando de 77 minutos a 45 minutos. Todo en Linux WSL-2 Ubuntu 20.04. Esto fue incluso más rápido que usar lualatex foo.tex >/dev/null
(55 minutos) ya que la salida se eliminó directamente de la fuente y ni siquiera fue necesario redirigir la salida a/dev/null
http://latexref.xyz/Command-line-options.html
Por lo tanto, quiero cambiar mis Makefiles para usar esto. El gran problema es que ya no veo los errores en la pantalla cuando ocurren. Todo va al archivo de registro.
¿Hay alguna manera de usarlo -interaction=batchmode
pero hacer que se detenga?ymostrar el error en la pantalla? De lo contrario, ahora tengo que abrir el archivo de registro cada vez para ver si el archivo se compiló con o sin errores.
Esto no es práctico ya que tengo decenas de miles de archivos Latex para compilar y necesito detenerme y ver el mensaje de error cuando sucede, y no más tarde.
Aquí hay un MWE con un error.
\documentclass{report}%
\begin{document}
This is a test
\sin x
\end{document}
Ahora
>lualatex -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
>
No aparece nada en la pantalla. El error aparece en el archivo de registro. yo también lo intenté
>lualatex -halt-on-error -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
>
¿Hay alguna manera de hacer que el modo por lotes muestre los errores de compilación en la pantalla y luego se detenga?
Yo uso solo Lualatex.
Actualizar
Gracias a la sugerencia, comprobar el estado de existencia de Lualatex es todo lo que se necesita para saber si se completó correctamente o no. No es necesario buscar en el archivo de registro.
Respuesta1
Si solo desea determinar si ocurrió un error o no, puede observar el estado de salida del lualatex
comando: será 0 si no ocurrió ningún error; de lo contrario, será 1. En caso de un error, puede consultar el archivo de registro.
Si desea ver los errores directamente, también puede utilizar las devoluciones de llamada de Lua.
Crear un archivo mybatchmode.lua
que contenga
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)
y luego correr
lualatex -lua=mybatchmode.lua file
Para el archivo de ejemplo en su pregunta, esto daría como resultado
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
! Missing $ inserted.
Respuesta2
Puedes usar
lualatex --interaction=batchmode file || cat file.log
entonces solo muestra el error de inicio de sesión