私の Lua 初期化スクリプトは、実行中に書き込まれるいくつかのファイルを開きます。LuaTeX がすべてのコードの処理を完了したときに、最後のバイトをいくつか追加で書き込みたいと思います。
これはコールバックで実現するのが最適と思われますが、私のニーズに完全に合うものは見つかりませんでした。
stop_run
(§ 7.1.5.3) は機能しますが、- ドラフトモードでは実行されません(
--draftmode
); - デフォルトのジョブ終了メッセージを置き換えますが、これは避けたいものです。
- 魅力的な名前にもかかわらず、情報報告を目的としているようです。
- ドラフトモードでは実行されません(
finish_pdffile
(§ 7.1.6.1) は機能しますが、- ドラフトモードでも実行されません。
- PDF 出力でのみ機能します。出力に依存しないソリューションを強く希望します。
現在のバージョンを見るLuaTeX マニュアルこれらのコールバックの詳細な説明については、こちらをご覧ください。
\AtEndDocument
以下の理由で適していません:
- ファイルはその後も書き込むことができます
\end{document}
。 - TeX コードは、Lua 初期化スクリプトの時点ではまだ処理できません (つまり、
tex.sprint
および の仲間は利用できません)。 を実行するために別のコールバックにフックすることもできますがtex.sprint( appropiate_catcode_table , [[\AtEndDocument{ \directlua{ work() } }]] )
、これは間接的すぎるようです。
手伝っていただけませんか?