我的 Lua 初始化脚本打开了一些在运行过程中写入的文件。当 LuaTeX 处理完所有代码后,我还想向这些文件写入最后的一些字节。
似乎最好通过回调来实现这一点,但我还没有找到完全适合我需要的回调:
stop_run
(§7.1.5.3)有效,但是:- 未以草稿模式运行(
--draftmode
); - 替换默认的工作结束消息,我希望避免这样做;
- 尽管名字很诱人,但它似乎是用于信息报告的。
- 未以草稿模式运行(
finish_pdffile
(§7.1.6.1)有效,但是:- 也不以草稿模式运行;
- 仅适用于 PDF 输出。我更喜欢与输出无关的解决方案。
查看当前版本的LuaTeX 手册以获得这些回调的更详细描述。
\AtEndDocument
不适合,因为:
- 之后仍可写入文件
\end{document}
。 - 在 Lua 初始化脚本时,TeX 代码还不能被处理(例如,
tex.sprint
和朋友不可用)。虽然我可以挂接另一个回调来执行tex.sprint( appropiate_catcode_table , [[\AtEndDocument{ \directlua{ work() } }]] )
,但这似乎过于间接。
请你帮助我好吗?