¿Cómo usar -interaction=batchmode pero al mismo tiempo detenerlo y mostrarlo en la terminal cuando aparece un error?

¿Cómo usar -interaction=batchmode pero al mismo tiempo detenerlo y mostrarlo en la terminal cuando aparece un error?

Hice un experimento y descubrí que usar -interaction=batchmodelualatex 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=batchmodepero 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.

ingrese la descripción de la imagen aquí

Respuesta1

Si solo desea determinar si ocurrió un error o no, puede observar el estado de salida del lualatexcomando: 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.luaque 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

información relacionada