我使用内联asymptote
环境\begin{asy}
绘制论文中的许多图形。对于那些不熟悉的人来说asymptote
,渐近线包为文档中的每个 asy 环境创建 *.asy 文件,这样如果我的文档正在article.tex
运行,LaTeX 将生成article-1.asy
、article-2.asy
等。然后你运行asymptote
(程序)将它们编译成 eps 文件article-1.eps
、article-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}
由于我不熟悉asymptote
asymptote
,我通过环境创建了一个“假包” asy
。如果此环境存在(通过检查是否存在来完成\asy
,因为从根本上讲,asy
环境由\asy
和组成\endasy
),则编译将按预期继续。如果环境不存在,我将创建一个新的环境,以吞噬其内容(这要归功于environ
包裹) 并显示由 给出的图像\jobname-\theasyfigcntr
(扩展为<filename>-<num>
,其中<num>
依次递增)。
当你注释掉“假asymptote
包”时,你会得到以下输出:
黑匣子来自[demo]
选项graphicx
,您不应该在自己的文档中使用它。
出于实际目的并且为了在您的情况下可行使用,假设您至少成功编译了一次文档asymptote
以便生成图表。