有没有办法将任意latexmk
命令行选项写入latexmkrc
文件?
例如,我认为不要调用
latexmk -pdf -halt-on-error file.tex
我可以放
$pdf_mode = 1
$pdflatex = ’pdflatex -halt-on-error %O %S’
在latexmkrc
文件中。
但这只适用于pdflatex
,所以如果我切换到lualatex
,我必须添加以下内容。
$lualatex = ’lualatex -halt-on-error %O %S’
现在为了解决这个问题显然有一种方法可以为所有 Latex 编译器指定选项:
set_tex_cmds( '-halt-on-error %O %S' );
但这仍然需要一些思考,因为我必须将命令行选项识别为传递给 tex 编译器的选项。
有没有办法简单地latexmk
在配置文件中写入命令行选项来达到相同的效果?
(我之所以问这个问题,是因为我试图将命令行选项从 vscode latex-workshop 配置复制到latexmkrc
。)
答案1
目前 latexmk 中还没有实现任何此类功能。
但是,尽管该语句对于 latexmk 代码本身来说是正确的,但还是有一种方法可以实现您想要的。诀窍是注意 Perl 将命令行参数放在数组中@ARGV
,并且 latexmk 在命令行之前处理 latexmkrc 文件。latexmkrc 文件可以修改@ARGV
。
要将选项-pdf
和添加-halt-on-error
到命令行,您可以执行以下操作
unshift @ARGV, '-pdf', '-halt-on-error';
这些选项在处理 latexmkrc 文件之后、但在实际命令行上的选项之前处理。
如果您希望在命令行上的选项之后处理额外的选项(例如,覆盖它们),您可以unshift
用替换push
。