在内联 Asymptote 中,我可以使用如下包:
usepackage("amsfonts");
label("$\mathbb R$", (0,0));
一般来说,这种方法效果很好。但是,运行latexmk
如下:
usepackage("myPersonalPackage");
label("$\mathbb R$", (0,0));
导致Undefined control sequence. l.2 \ASYalign
错误。(我的个人包加载了一堆包,包括amsfonts
包,所以这不是问题\mathbb
。)
事实上,当我使用 vimtex 的编译器(我不是 100% 清楚它是什么,但我认为它是某种形式的latexmk
)时,我收到以下错误:
1 test.aux|3 error| Undefined control sequence. \bbl@cs
2 test.aux|3 error| LaTeX Error: Missing \begin{document}.
3 test-1.tex|13 error| Undefined control sequence. \ASYalign
4 test-1.tex|13 error| Undefined control sequence.
我理解\ASYalign
在标记事物时会用到它,而摆弄我自己的包时我发现问题在于我的样式文件会自动加载\usepackage[inline]{asymptote}
。 (实际上,内联选项不是破坏事物所必需的;\usepackage{asymptote}
会导致相同的错误,假设我在 tex 文档本身中加载内联选项。)
我只是想知道 Asymptote 包中什么导致了这个错误(以及这个bbl@cs
错误是什么;我无法弄清楚,因为我的辅助文件中唯一的东西是“ \relax
”)。
如果有人有时间的话,这里有几点单独的说明:
- 运行 vimtex 的编译器两次通常可以解决问题,而运行
latexmk
两次则不会产生任何效果。 - 我听说删除该
test-1.tex
文件会有帮助,但它有时才有效。 - 有人有什么建议的解决方法吗,不需要我手动将 Asymptote 加载到每个 tex 文件上?(如果没有也没关系;这并不是说需要做太多工作,因为我无论如何都会使用代码片段来启动 tex 文件。)
- 或者,有人知道如何在
usepackage("PACKAGE")
Asymptote 的命令中传递选项吗?如果是这样,我可以做类似的事情usepackage("myPersonalPackage","skipAsy");
。
答案1
答案从评论中复制。
例行公事
void usepackage(string s, string options="");
提供了一个方便的缩写
texpreamble("\usepackage["+options+"]{"+s+"}");
可用于导入 LaTeX 包。