在使用-no pdf参数运行xelatex之后使用latexmk run命令,以便pdf不会损坏

在使用-no pdf参数运行xelatex之后使用latexmk run命令,以便pdf不会损坏,latex,pdflatex,xelatex,latex-environment,latexmk,Latex,Pdflatex,Xelatex,Latex Environment,Latexmk,我有一个latexmkrc文件,如下所示: $xelatex = 'xelatex -interaction=nonstopmode -synctex=1 %O %S; (sleep 10) && (test -f "%Z%R.synctex.gz") && (cp "%Z%R.synctex.gz" "%R.synctex.gz"); (test -f "%D") && (cp "%D" "%R.pdf")'; $pdflatex = 'pdf

我有一个
latexmkrc
文件,如下所示:

$xelatex = 'xelatex -interaction=nonstopmode  -synctex=1 %O %S; (sleep 10) && (test -f "%Z%R.synctex.gz") && (cp "%Z%R.synctex.gz" "%R.synctex.gz"); (test -f "%D") && (cp "%D" "%R.pdf")';
$pdflatex = 'pdflatex -interaction=nonstopmode -synctex=1 %O %S; (test -f "%Z%R.synctex.gz") && (cp "%Z%R.synctex.gz" "%R.synctex.gz"); (test -f "%D") && (cp "%D" "%R.pdf")';
$out_dir = '/tmp';
由于指定了
%O
,Latexmk会自动添加
-无pdf
。如果是这种情况,那么在使用
xdvipdfmx
将扩展dvi转换为pdf之前,似乎会运行xelatex命令之后的命令。我的.pdf文件在本地文件夹中总是损坏的,但是如果我在/tmp文件夹中打开它就可以了。当使用
-no pdf
时,是否有办法在
xdvipdfmx
的命令之后运行这些复制命令

下面是最后发生的事情的图像。这是在上面的复制命令已经运行之后运行的。复制的pdf文件始终已损坏


使用
latexmk
在临时目录中运行文档,然后说服文档将结果复制回工作文件夹似乎不必要地复杂。我建议改用。这是一个类似latexmk的自动化工具,其优点是默认情况下它将使用一个临时文件夹,并自动处理将pdf和synctex文件复制回来的问题

用法:

ltx2any -synctex -e xelatex filename

如问题中所述,问题在于问题中给出的定义假设
xelatex
latexmk
用于制作pdf文件。实际上,
latexmk
安排
xelatex
生成xdv文件,然后调用
xdvpdfmx
从xdv文件生成pdf文件。(对于图形密集型文档,
latexmk
这样做的原因是,如果需要多次运行
xelatex
,这可能会大大缩短运行时间。)

一个合适的解决方案是重新定义xdv到pdf转换的命令,如下所示

$xelatex = 'xelatex -synctex=1 -interaction=nonstopmode %O %S; (test -f "%Z%R.synctex.gz") && (cp "%Z%R.synctex.gz" "%R.synctex.gz")';
$xdvipdfmx = 'xdvipdfmx -o %D %S; (test -f "%D") && (cp "%D" "%R.pdf")';
(注意代码示例中的某些行很长,因此滚动该框以查看所有代码。)