Mi script de inicialización de Lua abre algunos archivos en los que se escriben durante la ejecución. Además, me gustaría escribirles algunos últimos bytes cuando LuaTeX termine de procesar todo el código.
Parece que esto se lograría mejor con una devolución de llamada, pero no he encontrado ninguna que se adapte completamente a mis necesidades:
stop_run
(§ 7.1.5.3) funciona, pero:- no se ejecuta en modo borrador (
--draftmode
); - reemplaza el mensaje predeterminado de fin de trabajo, que preferiría evitar;
- Parece destinado a la presentación de información, a pesar de su tentador nombre.
- no se ejecuta en modo borrador (
finish_pdffile
(§ 7.1.6.1) funciona, pero:- tampoco se ejecuta en modo borrador;
- solo funciona con la salida PDF. Preferiría mucho una solución independiente del resultado.
Vea la versión actual delmanual de luatexpara obtener una descripción más detallada de esas devoluciones de llamada.
\AtEndDocument
no es adecuado porque:
- los archivos aún se pueden escribir después
\end{document}
. - El código TeX no se puede procesar todavía en el momento del script de inicialización de Lua (es decir,
tex.sprint
y los amigos no están disponibles). Si bien podría conectarme a otra devolución de llamada para realizar una llamadatex.sprint( appropiate_catcode_table , [[\AtEndDocument{ \directlua{ work() } }]] )
, esto parece demasiado indirecto.
¿Me podría ayudar?