La devolución de llamada se ejecutará al final del trabajo.

La devolución de llamada se ejecutará al final del trabajo.

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.
  • 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.

\AtEndDocumentno 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.sprinty los amigos no están disponibles). Si bien podría conectarme a otra devolución de llamada para realizar una llamada tex.sprint( appropiate_catcode_table , [[\AtEndDocument{ \directlua{ work() } }]] ), esto parece demasiado indirecto.

¿Me podría ayudar?

información relacionada