我对 LaTeX 有一些疑问,LaTeX3 中有很多“new”和“set”,我不太明白什么时候需要“new”,比如
\int_set:Nn \l_my_int{12}
发生错误
! Undefined control sequence.
<argument> \l_my_int
l.11 \int_set:Nn \l_my_int {12}
另外,我用
\tl_set:Nn \l_my_tl{\maketitle}
这是正常的
希望能够解释一下,谢谢!
答案1
在 中expl3
,所有变量都应在使用前声明,因为这是该语言的惯例。在实现级别,一些expl3
变量是 TeX 寄存器,而另一些变量是 TeX 宏。后者可以在不分配的情况下创建,但寄存器需要在使用前分配(至少使用名称)。
有可用的检查代码,如果您“捷径”并忘记在分配变量之前声明它,即使在后台它是一个宏,它也会检测到。但是,由于这会减慢速度,默认情况下它不处于活动状态。您可以使用
\RequirePackage[enable-debug,check-declarations]{expl3}