como usar -interaction=batchmode mas ao mesmo tempo parar e exibir no terminal quando um erro aparecer?

como usar -interaction=batchmode mas ao mesmo tempo parar e exibir no terminal quando um erro aparecer?

Fiz um experimento e descobri que usar -interaction=batchmodelualatex reduz ao máximo o tempo de compilação em um grande arquivo de látex que tenho. Caiu de 77 minutos para 45 minutos. Tudo em Linux WSL-2 Ubuntu 20.04. Isso foi ainda mais rápido do que usar lualatex foo.tex >/dev/null (55 minutos), pois a saída foi eliminada diretamente da fonte e nenhuma saída foi necessária para ser redirecionada para/dev/null

http://latexref.xyz/Command-line-options.html

Portanto, quero alterar meus Makefiles para usar isso. O grande problema é que não vejo mais os erros na tela quando eles acontecem. Tudo vai para o arquivo de log.

Existe uma maneira de usar, -interaction=batchmodemas faça parareexibir o erro na tela? Caso contrário, agora tenho que abrir o arquivo de log todas as vezes para descobrir se o arquivo foi compilado com ou sem erros.

Isso não é prático, pois tenho dezenas de milhares de arquivos Latex para compilar e preciso parar e ver a mensagem de erro quando isso acontecer, e não mais tarde.

Aqui está um MWE com um erro

\documentclass{report}%   
\begin{document}

This is a test

\sin x
\end{document}

Agora

>lualatex -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
 restricted system commands enabled.
>

Nada é exibido na tela. O erro aparece no arquivo de log. Eu também tentei

>lualatex -halt-on-error -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
 restricted system commands enabled.
>

Existe uma maneira de fazer o batchmode exibir os erros de compilação na tela e parar então?

Eu uso apenas Lualatex.

Atualizar

Graças à dica, verificar o status existente do Lualatex é tudo o que é necessário para saber se ele foi concluído com sucesso ou não. Não há necessidade de procurar no arquivo de log.

insira a descrição da imagem aqui

Responder1

Se você deseja apenas determinar se um erro ocorreu ou não, você pode observar o status de saída do lualatexcomando: Será 0 se nenhum erro ocorreu, caso contrário, será 1. Em caso de erro, você pode então consultar o arquivo de log.

Se você quiser ver os erros diretamente, você também pode usar retornos de chamada Lua.

Crie um arquivo mybatchmode.luacontendo

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)

e então corra

lualatex -lua=mybatchmode.lua file

Para o arquivo de exemplo da sua pergunta, isso resultaria em

This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
 restricted system commands enabled.
! Missing $ inserted.

Responder2

Você pode usar

lualatex --interaction=batchmode file || cat file.log

então só mostra o erro de logon

informação relacionada