Wie registriere ich Rückrufe in Lualatex?

Wie registriere ich Rückrufe in Lualatex?

Bitte helfen Sie mir, Rückrufe in luatex zu registrieren. Ich muss beispielsweise feststellen, wann die Seite meines Dokuments begonnen oder beendet wurde und die Drucknummer dieser Seite*2. Ich habe in der luatex-Dokumentation nur herausgefunden, wie man das Ende der Seite erkennt, aber das funktioniert bei mir nicht. Hier ist mein Code:

\documentclass{article}
\usepackage{luacode}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{russian}
\setmainfont{Times New Roman}
\pagestyle{empty}
\thispagestyle{empty}
\begin{luacode}
function f()
tex.print("page "..\thepage*2)
end
id,error=callback.register("finish_pdfpage",f)
tex.sprint(error," ",id)
\end{luacode}
\begin{document}
test
\newpage
new test
\end{document}

Aber wenn ich dieses Dokument in Lualatex kompiliere, erhalte ich die folgenden Fehler:

C:/Program Files/MiKTeX 2.9/tex/latex/base/ltluatex.lua:109:
Module luatexbase Error: Attempt to use callback.register() directly
(luatexbase)             on input line 14

stack traceback:
        [C]: in function 'error'
        C:/Program Files/MiKTeX 2.9/tex/latex/base/ltluatex.lua:109: in function 'modu
le_error'
        C:/Program Files/MiKTeX 2.9/tex/latex/base/ltluatex.lua:116: in function 'luat
exbase_error'
        C:/Program Files/MiKTeX 2.9/tex/latex/base/ltluatex.lua:320: in function 'regi
ster'
        [\directlua]:4: in main chunk.
\luacode@dbg@exec ...code@maybe@printdbg {#1} #1 }

l.14 \end{luacode}
?

Bitte helfen Sie mir auch, das Ereignis zu erfassen, wenn eine neue Seite gestartet wird, z. B. um die Nummer dieser Seite*2 oder die einfache Nummer dieser Seite auszudrucken. Vielen Dank an alle für die Hilfe.

Antwort1

Sie müssen verwenden luatexbase.add_to_callback. Aber Sie sollten nicht versuchen, etwas in auszudrucken finish_pdfpage. Hier ein Beispiel, das ins Protokoll schreibt:

\documentclass{article}
\usepackage{luacode}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{russian}
\setmainfont{Times New Roman}
\pagestyle{empty}
\thispagestyle{empty}
\begin{luacode}
function f()
texio.write_nl("HELLO: page "..tex.count["c@page"]*2)
end
id,error=luatexbase.add_to_callback("finish_pdfpage",f,"finish")
\end{luacode}
\begin{document}
test
\newpage
new test
\end{document}

verwandte Informationen