\space 标记何时被丢弃?

\space 标记何时被丢弃?

考虑这个例子:

\obeyspaces
 b
\bye

输出是b

为什么要\space丢弃它?它不会在预处理过程中被丢弃,因为它的 catcode 为 13 - 它在标记化过程中被丢弃,在到达胃之前。比较:

\obeyspaces\let =a
 b
\bye

输出是ab

在哪个地方电子书这些规则有描述吗?

答案1

\obeyspaces在水平模式下工作。在您的示例中,在到达第一个打印字符之前,您处于垂直模式。如果您\leavevmode在第一行添加,空格就会实现。

本质上,由于您处于垂直模式,因此段落开头的前导空格会被吸收。

{\obeyspaces
 b}

\obeyspaces\leavevmode
 b

\obeyspaces\leavevmode    %
 b

{\obeyspaces\let =a
 b}

{\obeyspaces\let =a\leavevmode %
 b}

\bye

在此处输入图片描述

相关内容