什么是 expl3 夸克?何时、何地、为何以及如何使用它们?

什么是 expl3 夸克?何时、何地、为何以及如何使用它们?

我现在感觉特别受到亚原子粒子的轰炸(这主要是威尔的错:))。首先,在威尔的回答中这个问题今天,他提到了expl3命令\prg_case_str:nnn。深入研究包后,我注意到该命令涉及一个有趣的宏,名为\quark_if_recursion_tail_stop_do:nn。从文档中,我所能收集到的有关名称中expl3带有单词 (particle ;))的事物的信息quark如下:

l3夸克“quark” 是定义为扩展为自身的命令!因此,它们绝不能被扩展,因为这会产生无限递归;但它们确实有很多用途,例如作为代码中的特殊标记和分隔符。

嗯。

巧合的是,Will 和 Kevin 的新hardwrap软件包今天在 CTAN 上发布了(恭喜大家!)。深入研究文档代码后,我注意到:

\hw@scanstop

这是来自 expl3 的“夸克”,用于限定扫描;它永远不会被执行,否则会导致无限循环。

\protected\def\hw@scanstop{\hw@scanstop}

hardwrap阅读代码的其余部分,是的,\hw@scanstop它的使用方式与定义中描述的方式完全相同l3夸克, 多于。

不过,我还是感到很困惑。与任何其他被赋予特殊用途名称的标记(即任何其他普通符号,无论是否是命令序列)相比,自引用标记有什么特别之处?它们的自引用只是为了捕捉错误吗?

如果 LaTeX 夸克确实具有有趣的特性,而不仅仅是被特别定义和使用的符号,那么我应该在哪里、何时、如何以及为什么最好地使用它们?

他们真的 expl3具体的,或者它更像是被纳入 LaTeX3 编程模式集的惯例?

最后,出于兴趣(本着扬尼斯的精神)最近的问题关于 LispcarcdrTeX 词典中的“遗迹”),这个词是如何quark进入 LaTeX3 词汇表的?(请告诉我LaTeX3夸克不被认为具有颜色、味道等属性!)

答案1

问题太多了。我只想回答“自引用标记有什么特别之处?”,我会给出一个简单的 TeX 答案。正如我从 TH 那里学到的(在相当长的评论讨论结束时这里),它们可以用于\ifx测试。如果我知道这#1是一个 token,并且我进行测试

\ifx#1\my@test@token

找出是否#1\my@test@token,那么最好有定义

\def\my@test@token{\my@test@token}

对于\ifx,如果两个控制序列具有相同的定义(包括参数和其他内容等每个细节),则它们是相同的,但它们不会为了比较而展开。(正如您上面所解释的那样,这不应该发生。)有关示例,请参阅我上面链接的 TH 的非常好的答案。

注意:\ifx如果未定义,测试也会有效,但只要是未定义的控制序列,测试\my@test@token结果就会为真。#1

相关内容