我在 Google 上找不到有关控制空间 ( \
) 的足够信息。它的用途是什么?它应该在哪里使用?
答案1
以下内容直接取自 Knuth 的电子书(第三章:控制 TeX,第 8 页):
如果空格位于控制字(全字母控制序列)之后,TeX 会忽略该空格;也就是说,它不被视为正在排版的稿件中的“真实”空格。但是如果空格位于控制符号之后,它就是真正的空格。
现在问题来了,如果你真的想控制字后面应该出现一个空格吗?我们稍后会看到 TeX 将两个或多个连续的空格视为一个空格,所以答案是不是答案是“输入两个空格”。正确答案是输入“控制空格”,即
\␣
(转义符后跟一个空格);TeX 会将其视为不能忽略的空格。请注意,控制空格是第二种控制序列,即控制符号,因为转义符后有一个非字母 (␣)。两个连续的空格被认为等同于一个空格,因此紧随其后的空格
\␣
将被忽略。但如果您想在手稿中输入三个连续的空格,您可以输入\␣\␣\␣
。顺便说一句,打字员经常被教导在句子末尾放两个空格;但我们稍后会看到,TeX 有自己的方法来在这种情况下产生额外的空格。因此,您不必保持一致的空格数量。
例如,比较
\TeX\ ignores spaces after control words.
到
\TeX ignores spaces after control words.
答案2
~
除了在控制序列之后或确保非标点符号句号后没有扩展空格(但在这些情况下,平局会更好)之外,它没有太多用途。
平局的定义如下\
:在 Plain TeX 中
\def~{\penalty\@M \ } % tie
而在 LaTeX 中我们看到
\def~{\nobreakspace{}}
\DeclareRobustCommand{\nobreakspace}{\leavevmode\nobreak\ }
顺便说一句,Plain 和 LaTeX 中的平局是有区别的:如果你~
在 Plain TeX 文档中的空行后面有一个,那么惩罚将以垂直模式插入(实际上,这并不是什么大问题)。
Knuth 有时喜欢添加“非常扩展”的空间。这是第 15 章的结尾,关于分页(摘自texbook.tex
):
[...] After the |\output| routine is finished, ^{held-over
insertion} items are placed first on the list of recent contributions, followed
by the vertical list constructed by |\output|, followed by the recent
contributions beginning with the page break. \ (Deep breath.) \ You got that?
这是两个单词之间的空格加上句末句号的额外空格。这种双倍空格可用于标题中。
如果\frenchspacing
有效,那么\
和\space
将是等效的,因为\space
扩展到空间标记,并且空间因素不会发挥作用产生差异。然而,\
可能比和更清楚\space
,它们是不是下等效\nonfrenchspacing
。
在上面的 Knuth 示例中,
break. \space (Deep Breath.)
会产生更宽的空间,因为两个空间标记都会因为空间因子而扩大,之后.
为 3000。
一个小问题:如果你\
在行尾有 ,空格将被删除并替换为\endlinechar
。事实上,Plain 和 LaTeX 都定义了\^^M
\def\^^M{\ } % control <return> = control <space>
输入如下
\endlinechar=`S
abc\
def\bye%
会产生
如果我发现自己需要\
在行末加上,我通常会添加%
,事实上,
\endlinechar=`S
abc\ %
def\bye%
会产生一个空格。