![告诉 latexmk 两个目标中的任何一个就足够了](https://linux22.com/image/474147/%E5%91%8A%E8%AF%89%20latexmk%20%E4%B8%A4%E4%B8%AA%E7%9B%AE%E6%A0%87%E4%B8%AD%E7%9A%84%E4%BB%BB%E4%BD%95%E4%B8%80%E4%B8%AA%E5%B0%B1%E8%B6%B3%E5%A4%9F%E4%BA%86.png)
我有一个设置,其中运行外部程序可以生成一个pdf
文件或一个png
文件。不幸的是,latexmk 认为缺少目标并停止,而不是latex
再次运行以合并新生成的目标。因此,我可以在第二次运行 latexmk 后得到正确的结果,但这有点违背了使用 latexmk 的初衷。
我如何修改 latexmkrc 来指示 asy 文件应该生成 pdf 或 png 文件(但不能同时生成两者)?
最小(非)工作示例:
\documentclass{article}
\usepackage{asypictureB}
\begin{document}
This is from a pdf:
\noindent\def\asywidth{5cm}
\begin{asypicture}{name=pdf_example,width=\asywidth}
settings.outformat="pdf";
size(@asywidth,0);
draw((0,0)--(100,0));
\end{asypicture}
\bigskip
This is from a png:
\begin{asypicture}{name=png_example,width=\asywidth}
settings.outformat = "png";
settings.render = 16;
size(@asywidth,0);
import three;
draw(unitsphere);
\end{asypicture}
\end{document}
使用 latexmkrc 文件
$pdf_mode = 1;
# Copied from https://raw.githubusercontent.com/vectorgraphics/asymptote/HEAD/doc/latexmkrc
sub asy {return system("asy -o '$_[0]' '$_[0]'");}
add_cus_dep("asy","eps",0,"asy");
add_cus_dep("asy","pdf",0,"asy");
add_cus_dep("asy","tex",0,"asy");
(PS:我知道 asypictureB 设计用于 shell-escape 而不是 latexmk,但作为该包的作者,我希望它具有多功能性。)