\prg_do_nothing: 与 \scan_stop:

\prg_do_nothing: 与 \scan_stop:

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:

相关内容