我有许多 Asymptote 文件,它们都需要 LaTeX 包siunitx
。一种方法是usepackage("siunitx");
在每个文件中都包含该行,但我想自动对所有 asy 文件执行此操作。我试图使用config.asy
这些 asy 文件所在目录中的文件。但是,当我使用 Asymptote (2.65) 进行编译时,没有错误,但也没有生成 png 或其他类型的输出文件。
我的config.asy
文件:
import plain;
settings.autoplain=true;
settings.batchView=false;
settings.tex="pdflatex";
settings.outformat="png";
settings.render=4;
settings.embed=true;
settings.toolbar=false;
settings.command="usepackage('siunitx')";
我的mwe.asy
文件:
size(50mm);
draw(Label("\SI{2}{\centi\meter}"), (0,0)--(2,2));
当用 编译时asy mwe.asy
,没有生成任何内容,也没有错误。我的 出了什么问题config.asy
?或者有没有其他更智能的方法可以自动为所有 asy 文件加载一些 LaTeX 包?
编辑
我的理解是,config.asy
在执行任何其他操作之前,所有 asy 文件都会加载它,这就是为什么我尝试使用配置文件而不是像import mytexpreamble.asy
每个单独的 asy 文件那样的文件。
答案1
我确信有更好、更合适的方法来实现这一点,但一个快速而粗糙的解决方法是这样的:
复制plain.asy
到这些 asy 文件的目录并插入行
usepackage("siunitx");
在它的末尾。
实际上,中的代码plain.asy
表明,如果中指定了命令settings.command
,则Asymptote
执行该命令并立即退出。
你可以使用
settings.user="usepackage('siunitx')";
但在这种情况下命令
usersetting();
必须出现在 asy 文件的开头。
答案2
看起来有一个命令texpreamble
可以满足您的需要。
从https://sourceforge.net/p/asymptote/discussion/409349/thread/abc87704/:
在文件 config.asy 中你可以设置
autoimport="common";
并且,在文件 common.asy 中,您必须输入:
texpreamble("\newcommand{\U}{\underline}");
问候。