告诉 latexmk 两个目标中的任何一个就足够了

告诉 latexmk 两个目标中的任何一个就足够了

我有一个设置,其中运行外部程序可以生成一个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,但作为该包的作者,我希望它具有多功能性。)

相关内容