我在用着拨动开关使用单个 tex 文件创建不同的输出。但是,我的输出 PDF 总是以生成的 tex 文件命名,例如,luaexample.tex
生成luaexample.pdf
。
除了切换按钮之外,我现在想创建一个变量
\def\fileID{Z}
它应该附加到文件名,例如luaexampleZ.pdf
。
我认为使用 lua 会是一个创建选项,并且实际上以下方法几乎有效:
\documentclass{article}
\usepackage{luacode}
\def\fileID{Z}
\begin{document}
A random number:
\begin{luacode}
tex.print(math.random())
\end{luacode}
\begin{luacode}
os.remove("\jobname\fileID.pdf")
os.rename("\jobname.pdf", "\jobname\fileID.pdf")
\end{luacode}
\end{document}
但因重命名而创建的 PDF后 \end{document}
但出现lua代码部分前。如果我编译该文档两次,它可以工作,但第一次编译的 PDF 会被重命名。我想避免这种双重编译。
如果我把lua代码放在后面\end{document}
它是不会执行的。
那么,我怎样才能执行 lua 代码或一般的 latex 代码呢\end{document}
?
答案1
我认为您可以使用stop_run
回调:
\documentclass{article}
\def\fileID{Z}
\begin{document}
A random number:
\directlua{
luatexbase.add_to_callback(
'stop_run',
function ()
texio.write_nl("renaming output to " .. "\jobname" .. "\fileID.pdf")
os.rename("\jobname" .. ".pdf", "\jobname" .. "\fileID.pdf")
end,
"renamepdf"
)
}
\end{document}