我想知道如何使用 latexmk 和 xelatex和告诉它多次写入 xdv 文件,直到所有参考文献都正确,然后使用xdvipdfmx
一次生成最终输出。这很实用,因为对于包含大量图表和参考文献的手稿,需要多次传递才能使所有参考文献正确,写入 xdv 文件比每次都写入 pdf 要快得多。
答案1
旧答案的重要更新
旧答案(如下)在编写时(2014 年 4 月)是合适的,但它使用了一个卑鄙的伎俩。从那时起,对latexmk
的支持xelatex
进行了更改,从 v. 4.52 开始。Latexmk
现在完全按照问题的要求进行操作,无需任何特殊配置。有关详细信息,请参阅latexmk
文档中选项-pdfxe
和变量的说明$xelatex
。
因此,如果您调用或latexmk
的当前版本,它现在将准确地执行所要求的操作。latexmk -pdfxe
latexmk -xelatex
旧答案
就目前而言latexmk
,一个简单的技巧是安排通过 dvi-pdf 路径来处理此文件以制作pdf
文件。您可以通过将“xdv”文件复制到“dvi”文件来做到这一点。初始化文件中的以下几行实现了这一点:
$pdf_mode = 3;
$postscript_mode = $dvi_mode = 0;
$latex = 'xelatex --no-pdf %O %S && cp %Z%R.xdv %D';
$dvipdf = 'xdvipdfmx %O -o %D %S';
$clean_full_ext .= ' xdv';
的定义$latex
适用于类 UNIX 操作系统(例如,linux 和 OS-X),并且需要针对 MS-Windows 进行更改。
鉴于此方法所提高的性能,我应该增强latexmk
以正确地执行此操作,并-pdfxdv
在当前选项之外添加一个选项-pdfdvi
。
笔记
&& cp %Z%R.xdv %D
中定义的命令行尾部使用了/ shell$latex
的惯用语:只有左侧的命令(即)成功执行后,才会运行右侧的部分。该部分将文件复制到文件(在 UNIX 类型的操作系统下) 。%Z 表示带有任何必要的尾随分隔符的输出目录,%R 表示“tex”文件的根名称,%D 表示目标文件,即文件;这些将被替换为正确的值,如其文档中所述。sh
bash
&&
xelatex
cp
xdv
dvi
dvi
latexmk