来自文档:
扫描标记是设置为 的控制序列
\scan_stop:
,因此在扩展上下文中永远不会扩展,并且如果在排版上下文中遇到它们,则(基本上)是不可见的。和 quark 一样,它们可以用作怪异函数中的分隔符,并且通常更安全地用于此目的。由于它们在 TeX 的非可扩展上下文中执行时是无害的,因此它们可用于标记一组指令的结尾。如果不应执行指令的结尾,这允许跳到该点(请参阅
l3regex
)。扫描标记系统仅供内核团队在少数非常特殊的地方内部使用。这些功能不应更广泛地使用。
最后一点,扫描标记在哪里合适?从定义上来说,这是否是“夸克不合适的地方”?实际的区别是什么?(我理解技术上的区别,但我问的是用例。)
答案1
引入扫描标记是为了提供一种定义标记的方法,如果排版或类似情况,这种方法不会导致问题(无限循环!)。因此,它们与夸克有很好的重叠程度:在许多地方,夸克被用作标记,但其特殊属性未被使用(见下文)。因此,可以想象在夸克目前使用的许多地方使用扫描标记。由于我们已经有了夸克,而且它们在大多数情况下都能发挥作用,因此将扫描标记保留在内部的原因部分是为了避免进行任意更改。同时,团队可能依赖对此处命名空间的精确控制来获得“正确”的效果。因此,我们只是为自己提供了这个想法。
夸克的特殊性质是(以原始术语来说)
\def\quark{\quark}
意思是
\def\foo{\quark}
\ifx\quark\quark TRUE\fi
\ifx\foo\quark TRUE\fi
给出TRUE
两次。这用于能够处理标记列表(宏)中返回的值并允许对这些情况进行快速测试。(在\pdfstrcmp
功能要求之前,这是一个比现在更重要的属性,但它仍然很重要。)