如何让 latexmk 将附加参数交给 lualatex?

如何让 latexmk 将附加参数交给 lualatex?

我的文档使用 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。与 不同lualatexlatexmk需要处理文件列表,因此简单地提供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

相关内容