打开或关闭内联渐近线图形的简单方法

打开或关闭内联渐近线图形的简单方法

我使用内联asymptote环境\begin{asy}绘制论文中的许多图形。对于那些不熟悉的人来说asymptote渐近线包为文档中的每个 asy 环境创建 *.asy 文件,这样如果我的文档正在article.tex运行,LaTeX 将生成article-1.asyarticle-2.asy等。然后你运行asymptote(程序)将它们编译成 eps 文件article-1.epsarticle-2.eps等。下次运行 LaTeX 时,它将在使用相应渐近线环境的地方包含这些图形文件。

但是,这似乎不是一个标准软件包,因此当我将 TeX 文件发送到 arXiv 或出版商时,我需要将每个\begin{asy}...\end{asy}文件替换\includegraphics{article-1}为 等。有人能建议一个好方法,让我只需更改一行即可轻松地进行来回切换吗?由于软件包的工作方式明显存在怪癖,我的所有尝试都失败了asymptote

答案1

下面的方法应该可以解决问题:

在此处输入图片描述

\documentclass{article}
%\usepackage{asymptote}% http://ctan.org/pkg/asymptote
\newenvironment{asy}{\par}{\par}% Fake asymptote package
\usepackage{environ}% http://ctan.org/pkg/environ
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\newcounter{asyfigcntr}
\makeatletter
\@ifundefined{asy}{%
  \NewEnviron{asy}{%
    \par\stepcounter{asyfigcntr}%
    \includegraphics{\jobname-\theasyfigcntr}%
    \par%
  }
}{}
\makeatother
\begin{document}
This is some text.

\begin{asy}
Here is some \texttt{asy} code
\end{asy}

This is some more text.

\begin{asy}
Here is some more \texttt{asy} code.
\end{asy}

Here is some text again.
\end{document}

由于我不熟悉asymptoteasymptote,我通过环境创建了一个“假包” asy。如果此环境存在(通过检查是否存在来完成\asy,因为从根本上讲,asy环境由\asy和组成\endasy),则编译将按预期继续。如果环境不存在,我将创建一个新的环境,以吞噬其内容(这要归功于environ包裹) 并显示由 给出的图像\jobname-\theasyfigcntr(扩展为<filename>-<num>,其中<num>依次递增)。

当你注释掉“假asymptote包”时,你会得到以下输出:

在此处输入图片描述

黑匣子来自[demo]选项graphicx,您不应该在自己的文档中使用它。

出于实际目的并且为了在您的情况下可行使用,假设您至少成功编译了一次文档asymptote以便生成图表。

相关内容