latexmk 与 xelatex xdv 模式

latexmk 与 xelatex xdv 模式

我想知道如何使用 latexmk 和 xelatex告诉它多次写入 xdv 文件,直到所有参考文献都正确,然后使用xdvipdfmx一次生成最终输出。这很实用,因为对于包含大量图表和参考文献的手稿,需要多次传递才能使所有参考文献正确,写入 xdv 文件比每次都写入 pdf 要快得多。

答案1

旧答案的重要更新

旧答案(如下)在编写时(2014 年 4 月)是合适的,但它使用了一个卑鄙的伎俩。从那时起,对latexmk的支持xelatex进行了更改,从 v. 4.52 开始。Latexmk现在完全按照问题的要求进行操作,无需任何特殊配置。有关详细信息,请参阅latexmk文档中选项-pdfxe和变量的说明$xelatex

因此,如果您调用或latexmk的当前版本,它现在将准确地执行所要求的操作。latexmk -pdfxelatexmk -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 表示目标文件,即文件;这些将被替换为正确的值,如其文档中所述。shbash&&xelatexcpxdvdvidvilatexmk

相关内容