渐近线:重复使用图片

渐近线:重复使用图片

我使用 asymptote 包 ( \usepackage{asymptote}) 和环境绘制了一幅图\begin{asy}...\end{asy}。我想在环境中重复使用代码,{asy}而不必复制粘贴。

  • 是否可以保存{asy}块内的绘图结果以将其插入同一文档中的不同位置?
  • 是否可以保存代码块(即子图片)以便在其他地方重新使用它们?

例如,我可能会画一个绿色圆盘,在其他地方画一个红色圆盘。在文档的不同位置,我可能想插入其他完全相同的绿色和红色圆盘,而无需复制粘贴代码。在某些时候,我甚至可能想插入一张包含绿色和红色圆盘的图片,以某种方式组合/叠加以形成一张图片。

多谢!

编辑:以(希望)更清晰的方式重写描述。

答案1

这里尝试使用asypictureB包(Asymptote 的替代接口)来回答这两个问题。它利用了这样一个事实:在使用时,asypictureB您可以命名 Asymptote 图片,并使用该名称来调用生成的图形。请注意,这\jobname实际上是主文件的名称tex;例如,如果此文件名为foo.tex\jobname则将扩展为foo

对于第二个问题,我利用了includeAsymptote 中的命令,它直接包含来自指定 Asymptote 文件的代码。还要注意,在环境中asypicture@jobname行为就像\jobname在环境之外一样(在软件包文档)。

\documentclass{article}
\usepackage{asypictureB}
\begin{document}
A red disk:
\begin{center}
\begin{asypicture}{name=red_disk}
size(3cm);
fill(unitcircle, red);
\end{asypicture}
\end{center}
%
A green disk:
\begin{center}
\begin{asypicture}{name=green_disk}
size(4cm);
fill(unitcircle, green);
\end{asypicture}
\end{center}
%
A red disk and a green disk:
\begin{center}
\includegraphics{\jobname-red_disk}
\hspace{1cm}
\includegraphics{\jobname-green_disk}
\end{center}
%
A red disk and a green disk in the same \verb!asypicture!:
\begin{center}
\begin{asypicture}{name=overlay}
// Execute all the code from the red_disk asypicture.
include "@jobname-red_disk";

// Save the resulting picture and start a new one.
picture reddisk = currentpicture;
currentpicture = new picture;

// Execute all the code from the green_disk asypicture.
include "@jobname-green_disk";

// Save the resulting picture and start a new one.
// Note that the scale information from the previous 
// pictures is lost. If you want to retain it, look into 
// using frames instead of pictures.
picture greendisk = currentpicture;
currentpicture = new picture;
unitsize(1cm);
add(shift(-0.3,0)*greendisk);
add(shift(0.3,0)*reddisk);
\end{asypicture}
\end{center}

\end{document}

结果:

显示上述代码结果的页面

相关内容