什么时候空格才算数?

什么时候空格才算数?

我想这个问题太笼统了,但为什么

 \underbar{word} 

给出不同的答案

 \underbar{ word} 

然后额外的空白不计算在内

 \underbar{     word}

答案1

关于空格的规则非常简单(或者可能不太简单)。

当 TeX 读取一行输入时,它会处于以下三种状态之一状态: 状态(新行),状态年代(跳过空白)或说明(中间线)。

很明显,在一行的开头它处于状态;在此状态下,任何空格(技术上是字符代码为 10 的字符,通常是空格和 TAB)都将被忽略。此状态停止并变为状态找到非空白字符。

如果下一个字符是行尾字符(更准确地说,是类别代码为 5 的字符),\par则会生成一个标记,并且 TeX 会重新进入状态对于下一行,丢弃可能跟在该字符后面的所有内容。

当 TeX 处于状态它会为找到的每个字符生成字符标记,除非

  1. 下一个字符是空格,或者
  2. 下一个字符是行尾字符,或者
  3. 下一个字符是转义字符(反斜杠)。

如果情况 1,TeX 会生成一个空格标记并进入状态年代。如果情况 2,TeX 会插入一个空格标记,丢弃该行剩余的内容并进入状态读取下一行。在案例 3 中,TeX 继续形成符号标记,并且有两个子案例:

  1. 下一个字符是字母(专业上,是类别代码为 11 的字符)
  2. 下一个字符是任何其他字符

在子情况 4 中,TeX 通过累积字符直到它们变成字母来形成符号标记的名称,并且在找到非字母时,它进入状态年代在子情况 5 中,符号标记的名称是单个非字母(例如,\,或的情况\\),并保持状态,除非那个非字母是空格,在这种情况下它进入状态年代

当 TeX 处于状态年代,空格字符将被忽略,直到找到任何非空格字符,从而触发状态再次。

上述讨论并不尽可能具有普遍性,但对于类别代码的正常状态来说已经足够。

让我们检查一下你的例子。首先

\underbar{word}

触发器\状态而且,由于u是字母,我们处于子情况 4,因此\underbar生成符号标记,因为{不是字母。所以我们有以下标记

\underbar • { • w • o • r • d • }

(此处空格不重要,仅用于分隔标记)。

在第二个例子中

\underbar{ word}

我们处于相同的情况,但后面的空格{会生成一个空格标记,并使 TeX 进入状态年代,变成状态由 组成w。因此形成的标记是

\underbar • { • <SP> • w • o • r • d • }

(其中<SP>表示空格标记)。第三个例子

\underbar{     word}

给出相同的结果,因为在看到 之后的第一个空格字符时{,TeX 进入状态年代生成空间令牌之后。

与第一个例子相同的情况

\underbar {word}

因为空格会停止控制序列名称的形成,并且根据规则,它进入状态年代 没有生成一个空间标记。唯一可疑的情况是

\⍽⍽

现在表示空格字符(只是为了清楚说明有两个空格)。但根据子案例 5 中解释的规则,这会生成 token \⍽,TeX 进入状态年代。因此输入\⍽\⍽⍽\⍽⍽⍽是一样的。

答案2

摘自“LaTeX 2e 的简短介绍”:

“空白”字符(例如空格或制表符)在 LaTeX 中被统一视为“空格”。多个连续的空白字符被视为一个“空格”。行首的空白通常会被忽略,单个换行符将被视为“空白”。两行文本之间的空行定义段落的结束。多个空行被视为与一个空行相同。

基本上,多个空格被视为一个空格。

相关内容