我询问了一些编程代码的最佳实践expl3
。
第 4 节interface3.pdf
描述了定义新控制序列的函数,这些控制序列禁止\par
其函数参数(#1
、#2
等)。这些函数的_nopar
名称中包含 (例如\cs_new_nopar:Npn
、\cs_new_protected_nopar:Npn
、\cs_new_nopar:Nn
等) 。
我的问题是:程序员nopar
在 LaTeX3 中定义新函数时何时应该使用替代方法?
这里已经讨论了一个相关问题(为什么我们不总是使用 \long\def 而要使用 \def?),但我想要一个与之更相关的答案expl3
。
答案1
团队通常nopar
在非常有限的情况下使用
- 对于变量的低级实现,特别
tl
是幕后的“短”宏 - 对于的实现
ltcmd
,它在文档级别区分“长”和“短”参数
除此之外,团队的几乎所有代码都是“长”的。原因是“短”宏没有性能优势。同时,\par
标记可能会出现在许多编程上下文中,而“短”宏的“错误处理”方面仅在文档级别才真正有用(如前所述)。
也许有趣的是,在 LuaTeX 中\suppresslongerror
,有可以完全关闭错误的方法,这就是 ConTeXt 中采用的方法。