
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}