lualatex에 콜백을 등록하는 방법은 무엇입니까?

lualatex에 콜백을 등록하는 방법은 무엇입니까?

lualatex에 콜백을 등록하는 방법을 알려주세요. 예를 들어, 내 문서의 페이지가 시작되거나 끝나는 시기와 해당 페이지의 인쇄 번호*2를 확인해야 합니다. Luatex 문서에서 페이지 끝을 잡는 방법만 찾았지만 나에게는 작동하지 않습니다. 내 코드는 다음과 같습니다.

\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}

하지만 이 문서를 lualatex로 컴파일하면 다음과 같은 오류가 발생합니다.

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}
?

또한 새 페이지가 시작될 때 이벤트를 포착할 수 있도록 도와주세요(예: 이 페이지의 번호*2 또는 이 페이지의 단순 번호 인쇄). 도움을 주신 모든 분들께 감사드립니다.

답변1

을 사용해야 합니다 luatexbase.add_to_callback. 하지만 finish_pdfpage. 다음은 로그에 쓰는 예입니다.

\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}

관련 정보