在 Asymptote 中从配置文件加载 LaTeX 包

在 Asymptote 中从配置文件加载 LaTeX 包

我有许多 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}");

问候。

相关内容