
나는 실험을 했고 -interaction=batchmode
lualatex를 사용하면 내가 가지고 있는 하나의 큰 라텍스 파일에서 컴파일 시간이 가장 많이 단축된다는 것을 발견했습니다. 77분에서 45분으로 단축되었습니다. 모두 Linux WSL-2 Ubuntu 20.04에 있습니다. lualatex foo.tex >/dev/null
출력이 소스에서 바로 제거되고 출력을 소스로 리디렉션할 필요도 없었기 때문에 이는 사용(55분)보다 훨씬 빨랐습니다./dev/null
http://latexref.xyz/Command-line-options.html
그러므로 이것을 사용하기 위해 Makefile을 변경하고 싶습니다. 가장 큰 문제는 오류가 발생할 때 더 이상 화면에 오류가 표시되지 않는다는 것입니다. 모든 것이 로그 파일로 이동됩니다.
-interaction=batchmode
사용 을 중지할 수 있는 방법이 있나요?그리고화면에 오류가 표시됩니까? 그렇지 않으면 이제 매번 로그 파일을 열어 파일이 오류 없이 컴파일되었는지 확인해야 합니다.
컴파일해야 할 라텍스 파일이 수만 개에 달하고 나중에 오류가 발생하면 오류 메시지를 멈추고 확인해야 하기 때문에 이는 실용적이지 않습니다.
다음은 오류가 있는 MWE입니다.
\documentclass{report}%
\begin{document}
This is a test
\sin x
\end{document}
지금
>lualatex -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
>
화면에 아무것도 표시되지 않습니다. 오류는 로그 파일에 표시됩니다. 나도 시도했다
>lualatex -halt-on-error -interaction=batchmode foo.tex
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
>
배치 모드에서 컴파일 오류를 화면에 표시하고 중지하는 방법이 있습니까?
저는 루라텍스만 사용합니다.
업데이트
Lualatex의 존재 상태를 확인하는 힌트 덕분에 Lualatex가 성공적으로 완료되었는지 여부를 찾는 데 필요한 모든 것이 가능합니다. 로그 파일을 볼 필요가 없습니다.
답변1
오류가 발생했는지 여부만 확인하려면 lualatex
명령의 종료 상태를 보면 됩니다. 오류가 발생하지 않으면 0이 되고, 그렇지 않으면 1이 됩니다. 오류가 발생한 경우 다음을 조사할 수 있습니다. 로그 파일.
오류를 직접 보고 싶다면 Lua 콜백을 사용할 수도 있습니다.
mybatchmode.lua
다음을 포함하는 파일을 만듭니다.
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)
그런 다음 실행
lualatex -lua=mybatchmode.lua file
귀하의 질문에 있는 예제 파일의 경우 결과는 다음과 같습니다.
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
restricted system commands enabled.
! Missing $ inserted.
답변2
당신이 사용할 수있는
lualatex --interaction=batchmode file || cat file.log
그래서 로그온 오류만 표시합니다.