在source3.pdf
我读
\tl_use:N ⟨tl var⟩
恢复 ⟨tl var⟩ 的内容并将其直接放入输入流中。如果变量不存在或无效,则会引发错误。请注意,可以直接使用 ⟨tl var⟩,而无需访问器函数。
建议\tl_use:N \l_tmpa_tl
与简单地调用相同\l_tmpa_tl
,并且两者均可工作 - 据我所知 - 没有区别。所以我想知道是否建议在前缀中使用\tl_use:N
?这两种变体之间有什么区别吗?
答案1
中的所有变量类型expl3
都有访问函数。对于 类型tl
,这不是必需的:您可能知道,atl
是用于存储(无参数)的 TeX 宏,而 TeX 本身允许直接使用宏。(相比之下,其他一些expl3
变量类型是 TeX 寄存器,因此要求访问器。)变量的记录行为tl
是它们可以在没有访问器的情况下使用:这在需要低级扩展时特别有用,例如
\exp_after:wN \foo:w \l_some_tl \q_stop
与未定义的情况下直接使用名称相比,该函数\tl_use:N
确实提供了更有用的错误消息:tl
tl
! Undefined control sequence.
<argument> \LaTeX3 error:
Erroneous variable \foo used!
但除此之外,与直接使用变量几乎没有什么区别。使用访问器会对性能造成轻微影响,而且团队一般更喜欢直接使用变量。另一方面,访问器确实使代码的含义清晰且与其他类型一致:这就是它存在的原因。
因此,人们可以自由地使用或省略\tl_use:N
遵循“良好风格”的代码expl3
。