Rückruf, der am Ende des Auftrags ausgeführt werden soll

Rückruf, der am Ende des Auftrags ausgeführt werden soll

Mein Lua-Initialisierungsskript öffnet einige Dateien, in die während des Laufs geschrieben wird. Ich möchte zusätzlich einige letzte Bytes in diese Dateien schreiben, wenn LuaTeX mit der Verarbeitung des gesamten Codes fertig ist.

Dies ließe sich anscheinend am besten mit einem Rückruf erreichen, ich habe jedoch keinen gefunden, der meinen Anforderungen vollständig entspricht:

  • stop_run(§ 7.1.5.3) funktioniert, aber:

    • wird nicht im Entwurfsmodus ( --draftmode) ausgeführt;
    • ersetzt die Standardmeldung zum Jobende, was ich lieber vermeiden würde;
    • scheint trotz seines verlockenden Namens zur Informationsberichterstattung gedacht zu sein.
  • finish_pdffile(§ 7.1.6.1) funktioniert, aber:

    • wird auch nicht im Entwurfsmodus ausgeführt;
    • funktioniert nur mit der PDF-Ausgabe. Mir wäre eine ausgabeunabhängige Lösung sehr viel lieber.

Die aktuelle Version derLuaTeX-Handbuchfür eine detailliertere Beschreibung dieser Rückrufe.

\AtEndDocumentist nicht geeignet, weil:

  • die Dateien sind auch danach noch beschreibbar \end{document}.
  • TeX-Code kann zum Zeitpunkt des Lua-Initialisierungsskripts noch nicht verarbeitet werden (d. h. tex.sprintund Freunde sind nicht verfügbar). Ich könnte zwar einen anderen Rückruf einbinden, um ein auszuführen tex.sprint( appropiate_catcode_table , [[\AtEndDocument{ \directlua{ work() } }]] ), aber das scheint zu indirekt.

Könnten Sie mir bitte helfen?

verwandte Informationen