![为什么 TeX 列表项使用两个反斜杠?](https://linux22.com/image/232379/%E4%B8%BA%E4%BB%80%E4%B9%88%20TeX%20%E5%88%97%E8%A1%A8%E9%A1%B9%E4%BD%BF%E7%94%A8%E4%B8%A4%E4%B8%AA%E5%8F%8D%E6%96%9C%E6%9D%A0%EF%BC%9F.png)
在 TeX 包中可以找到列表的定义:
\def\l{\\\alpha\\\beta\\\gamma}
一个反斜杠是可以理解的,它代表宏的活动字符,即 \gamma,但其他两个反斜杠有什么作用,它们为什么在那里?
答案1
这\\
只是任意的(短)控制序列。它允许您通过将其定义为单参数宏来对列表执行某些操作:
\begingroup
\def\\#1{\typeout{\string#1}}
\l % prints out the tokens in the list
\endgroup
但是,我认为\\
这是个糟糕的选择,因为它在 TeX/LaTeX 中有意义。LaTeX 通常用于\do
此目的,并且诸如expl3
使用特殊隐藏分隔符的软件包,以便您可以将\\
或添加\do
为普通列表元素。
答案2
如果你想要一个控制序列列表,你不需要额外的\\
——你可以使用标记列表并“弹出”第一个项目。Eijkhout 的TeX 按主题分类在他的关于标记列表的章节中给出了一些可以做到这一点的代码。
如果你希望列表中包含更多常规内容,则需要一个分隔符。Knuth\\
在附录 D 中用这个作为分隔符。TeXbook,所以我想这是惯例,但您可以使用活动字符~
作为分隔符。