LaTeX3 中有两个无操作函数,分别是\prg_do_nothing:
和\scan_stop:
。它们之间有什么区别?哪一个更可取?
答案1
它们的作用不同。这些函数\prg_do_nothing:
是可扩展的,并且记录为完全不可扩展。这意味着例如
\tl_set:Nx \l_tmpa_tl { \prg_do_nothing: }
\tl_if_empty:NTF \l_tmpa_tl ...
将接管该true
分支。
另一方面,\scan_stop:
不可扩展,因此相同的设置
\tl_set:Nx \l_tmpa_tl { \scan_stop: }
\tl_if_empty:NTF \l_tmpa_tl ...
接受false
分支。该\scan_stop:
函数还充当各种低级 TeX 构造的终止符,但\prg_do_nothing:
不会。
你想要哪个取决于你的使用情况。如果你正在扩展工作并且需要一个会“消失”的标记,那么\prg_do_nothing:
这是正确的选择。如果你需要一个会排版没有什么能比你想要的存活x
/e
类型扩展更好\scan_stop:
。