自动插入的空格

设置西文文本时,TeX 自动在句尾句号后放置比普通单词之间稍宽的空格。它决定“这个句号是句子的结尾还是缩写?”通过查看前一封信的情况——这种猜测有时会出错。本页介绍了它的工作原理,当它失败时修复它的两个命令(\ \@),以及\frenchspacing,它完全关闭了更宽的句子空间。

句子末尾的额外空格

在英式/美式排版传统中,句末的间距设置为略宽于单词之间的间距(非正式地称为“双倍间距”)。默认情况下,LaTeX 遵循此规则,在句尾.?! 后添加额外的空格。例如,在 10 点计算机现代中,字间空间约为 3.33 pt,而在句子末尾 TeX 大约又在顶部添加了 1.11 pt。句子空间也被赋予更多的拉伸和收缩,因此当一行对齐时,它会在普通单词空间之前被拉宽。

在内部,每个字符都带有 “空格因子”。 在普通字符之后,它是 1000 — 正常的字间值。 .?!之后会跳转到3000,而TeX的规则是:如果空间系数为2000或更大,则在后面的空间中添加额外的宽度。这就是更广泛的句子空间背后的机制。日语 (CJK) 字符之间的间距完全由不同的系统控制,因此此页面上的所有内容实际上都是关于西方文本

TeX 如何猜测句子与缩写

但是,如果每个. 都结束一个句子,那么像Mr. Smithetc. 这样的缩写中的句号也会占据很宽的空间。所以TeX根据前一个字母的大小写进行猜测。如果句点之前的字母是小写,则将句点视为句子结尾并插入宽空格;如果它是一个大写字母,则它采用缩写或首字母并使用普通的词间空格。

大写异常是通过相同的空间因子实现的。 大写字母的空格系数为 999(不是 1000),因此大写字母后面的句点不能将系数提高到 3000,并且不会添加额外的空格。经验法则“大写+句点=缩写”对于大多数英语散文来说都适用。

不过,作为一种启发式方法,它在两个方向上失败了。首先,*不是*句子结尾的小写-then-句点仍然获得宽阔的空间(Fig. 5etc. and)。其次,真正以大写字母“结尾”的句子会被误认为是缩写,并且空间太小(...in the USA.)。下一节将介绍如何修复每个问题。

修复失火(\ 和 \@)

(1) 在缩写词之后(小写+句点,但不是句子结尾)。 要删除多余的空格,请在句点后面添加 反斜杠空格 \ 。这会插入一个显式的、非拉伸的普通字间空格:写Fig.\ 5会在Fig.之后精确地给出一个字空格。或者,~使该空格成为正常的字间空格*并且*禁止在那里换行(不间断空格)——有利于在其数字或名称旁边保留缩写,如Mr.~SmithFig.~5

(2) 以大写结尾的句子。 因为它被误认为是缩写且空格不足,所以将 \@ 紧接在句点之前,以声明“这是一个句子结尾”。 \@ 本质上就像一个看不见的小写字母,将后续句点的空间因子恢复到 3000,从而恢复正确的句子空间。 \@ 带有右括号和引号,因此它也适用于 (\dots etc.\@) 等形式。

助记符:位置是镜像。 对于非结尾大写缩写,请将\ *放在*句点之后;对于*确实*结束句子的大写字母,请将 \@ *放在*之前。编译下面的示例可以正确设置 etc.USA. 之后的间距

latex
We cite Fig.\ 5 and Mr.~Smith here.
Use etc.\ and so on, mid-sentence.
The rocket was built in the USA\@. It then flew.

请注意,所有这些仅在 默认 \nonfrenchspacing (宽句间距)下才重要。如果您在下一节中切换到\frenchspacing,句子空间等于单词空间,并且大部分的摆弄就变得不必要了。

关闭宽空间 (\frenchspacing)

\frenchspacing 使所有标点符号(包括句子结尾)之后的空格成为等于字间空格的单一统一宽度。 一旦声明,句点案例测试就不再重要,Fig. 5USA. 都会自然间隔。恢复默认值的命令是\nonfrenchspacing。通常,您在序言中编写一次即可影响整个文档,但将其放在 { ... } 组中会将其限制在该范围内。

latex
\documentclass{article}
\frenchspacing
\begin{document}
No extra space after this period. Or this one.
\end{document}

“法语”这个名字来自于法国和通常英语世界之外的惯例,即不扩大句子空间。主要是日语的文档有时也会选择 \frenchspacing 以避免西方段落中句子间距不均匀。在现代实践中,许多作者只是从一开始就设置\frenchspacing,而不是用\@修补个别案例,这是一个完全合理的选择。还要注意,babel 等语言包可能会自动调整句子间距以适应所选语言的约定。

命令它的作用
\nonfrenchspacing默认;句子结束后更宽的空间默认;句子结束后更宽的空间
\frenchspacing使每个标点符号间距等于字间间距使每个标点符号间距等于字间间距
\ 显式字间空间;取消缩写后错误的宽空格(例如 Fig.\ 5)明确的字间空间;取消缩写后错误的宽空格
~不间断的字间空格;保留其编号或名称的缩写(例如 Mr.~Smith)不间断的字间空格;保留其编号或名称的缩写
\@置于句号之前;强制在大写字母后添加句尾空格(例如 USA\@。)置于句号之前;强制在大写字母后添加句子结尾空格

首先设置句距策略

句子间距是随着章节的增长而变化的细节之一。一开始就决定是使用\frenchspacing还是保留传统的更宽的英语句子空间,然后仅在例外情况下使用\ ~\@。如果您更改政策较晚,则必须一一重新阅读缩写和参考编号。

  • 为了保持一致性,\frenchspacing 放在序言中,并删除包含西方散文的日语文档中不均匀的间距。
  • 对于英文纸张约定,保留默认值并仅修复错误的缩写情况,例如Fig.\ 5Mr.~Smith
  • 对于不可分割的引用,使用~。如果跨行分割,Fig.~5Section~2Eq.~(3) 会变得更难阅读。
  • 对于以大写字母结尾的句子,USA\@. Next,以便TeX 知道句点结束句子。