![如何让 latexmk 将附加参数交给 lualatex?](https://linux22.com/image/433492/%E5%A6%82%E4%BD%95%E8%AE%A9%20latexmk%20%E5%B0%86%E9%99%84%E5%8A%A0%E5%8F%82%E6%95%B0%E4%BA%A4%E7%BB%99%20lualatex%EF%BC%9F.png)
我的文档使用 Lua 来处理额外的命令行参数,如下所示:
\documentclass{article}
\begingroup
\catcode`\#=11
\directlua{
local i = 1
while i <= #arg do
name = arg[i]
i = i + 1
if name == "\jobname.tex" then
break
end
end
if i > #arg then
tex.error("missing data argument!")
end
values = require(arg[i])
}
\endgroup
\begin{document}
\begin{tabular}{r|l}
Name & \directlua{tex.sprint(-2, values.name)} \\ \hline
Age & \directlua{tex.sprint(-2, values.age)}
\end{tabular}
\end{document}
例如,如果我有一个文件test.lua
:
return {
name = "John Doe",
age = 42
}
我可以用
lualatex test.tex test.lua
现在需要用 编译我的文档latexmk
。与 不同lualatex
,latexmk
需要处理文件列表,因此简单地提供test.tex test.lua
参数是行不通的,因为它们是独立处理的。
我当然可以在.latexmkrc
文件中执行此操作:
$pdf_mode = 4;
$lualatex = 'lualatex %O %S test.lua'
但是,现在我无法再在命令行上更改数据文件。
是否可以配置 latexmk 以便我可以test.lua
像使用一样在命令行上提供路径lualatex
?
答案1
您可以在命令行上指定配置,例如
latexmk -pdflatex='lualatex test.tex test.lua' -pdf test.tex