
実験してみたところ、-interaction=batchmode
私が持っている1つの大きなLaTeXファイルでは、lualatexを使用するとコンパイル時間が最大限に短縮されることがわかりました。77分から45分に短縮されました。すべてLinux WSL-2 Ubuntu 20.04で実行されました。これは、lualatex foo.tex >/dev/null
出力がソースから直接削除され、出力をリダイレクトする必要もなかったため、lualatexを使用する場合(55分)よりもさらに高速でした。/dev/null
http://latexref.xyz/コマンドラインオプション.html
したがって、これを使用するように Makefile を変更したいと思います。大きな問題は、エラーが発生したときに画面にエラーが表示されなくなったことです。すべてはログ ファイルに記録されます。
使用する方法はありますか?-interaction=batchmode
使用して停止するそしてエラーを画面に表示しますか? そうしないと、ファイルがエラーありでコンパイルされたかどうかを確認するために、毎回ログ ファイルを開く必要があります。
コンパイルする Latex ファイルが何万個もあり、エラーが発生したらすぐに停止してエラー メッセージを確認する必要があるため、これは現実的ではありません。
これはエラーのある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
ログエラーのみが表示されます