我有一个 pdfLaTeX/XeLaTeX 文件,iftex
可以使用任一引擎进行编译。我想使用/或/选项latexmk
来编译源代码。-pdf
-pdflatex
-pdfxe
-xelatex
目标是获得具有不同名称<basename>-pdftex.pdf
或<basename>-xetex.pdf
通过设置$jobname
的PDF 输出latexmkrc
。如何检查 latexmk 调用中使用的引擎选项?
似乎命令行选项未设置$pdf_mode
。如果我调用latexmk -pdf
,我仍然会得到$pdf_mode = 0
。文档描述了变量$rule
,但在使用时它未初始化latexmkrc
。
解决方案可以是设置-jobname
/$pdflatex
变量$xelatex
,但我想要一种更通用的方法来修改目标变量:
if ($pdf_mode == 0) { $jobname = "%A-tex"; }
elsif ($pdf_mode == 1) { $jobname = "%A-pdftex"; }
elsif ($pdf_mode == 2) { $jobname = "%A-ps2pdf"; }
elsif ($pdf_mode == 3) { $jobname = "%A-dvipdf"; }
elsif ($pdf_mode == 4) { $jobname = "%A-luatex"; }
elsif ($pdf_mode == 5) { $jobname = "%A-xetex"; }
else { $jobname = "%A-UNKNOWN"; }
答案1
问题是,latexmkrc
在执行命令行参数之前执行了代码。您需要在执行设置 pdfmode 的命令行选项之后执行某些操作。
我能看到的唯一方法latexmk
是将代码放入另一个 rc 文件中,latexmkrc-jobname
然后latexmk
通过以下方式调用:
latexmk -pdflua -r latexmkrc-jobname file.tex
内容latexmkrc-jobname
将是
if ($pdf_mode == 0) { $jobname = "%A-tex"; }
elsif ($pdf_mode == 1) { $jobname = "%A-pdftex"; }
elsif ($pdf_mode == 2) { $jobname = "%A-ps2pdf"; }
elsif ($pdf_mode == 3) { $jobname = "%A-dvipdf"; }
elsif ($pdf_mode == 4) { $jobname = "%A-luatex"; }
elsif ($pdf_mode == 5) { $jobname = "%A-xetex"; }
else { $jobname = "%A-UNKNOWN"; }