LaTeX3 中的“new”和“set”

LaTeX3 中的“new”和“set”

我对 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}

相关内容