Обратный вызов, который будет запущен в конце задания

Обратный вызов, который будет запущен в конце задания

Мой скрипт инициализации 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() } }]] ), это кажется слишком косвенным.

Не могли бы вы мне помочь?

Связанный контент