LaTeX有时会在一段时间后放置太多或太少的空间

时间:2010-01-07 23:00:28

标签: latex

LaTeX试图猜测一个句点是否结束一个句子,在这种情况下它会在它之后放置额外的空格。 以下是猜测错误的两个例子:

I watched Superman III. Then I went home. 

(“超人III”之后的空间太小。)

After brushing teeth etc. I went to bed.

(“等”之后的太多空间。)

请注意,由于LaTeX忽略了这一点,因此在LaTeX源中使用了多少空白并不重要。

3 个答案:

答案 0 :(得分:70)

我在这里找到答案:http://john.regehr.org/latex/。摘录:

当一个非句子结尾的句号后面跟一个空格时,该空格必须是一个明确的空格。 所以第二个例子应该是:

After brushing teeth etc.\ I went to bed.

当输入中的大写字母位于句子结束时段之前时,会出现此问题的相反情况,如第一个示例所示。 在这种情况下,LaTeX假设句点终止一个缩写,并用词间空间而不是句子间空格跟随它。 修复是在句点之前放置“\@”。 所以第一个例子应该是

I watched Superman III\@. Then I went home.

找到此错误的便捷方法是:

grep '[A-Z]\.' *.tex

答案 1 :(得分:13)

如果你喜欢句子末尾的单个空格,你可以回避间距问题:把\frenchspacing打开(对于旧版本的Latex,这是一个脆弱的命令)。 Knuth遵循传统命名称其为法语间距,尽管在句子之后称法语间距在出版中占主导地位。

Dirk Margulis撰写了一篇很好的文章,总结了单一间距普遍存在的一些原因:Space between sentences

答案 2 :(得分:5)

我喜欢dreeves的回答以及他建议的方便搜索。我没有Stackoverflow“rep”点来评论,但是......

由于raw * .tex中的行往往很长,因此grep的输出可能会非常大(即整个段落);我建议一个变体只显示以'[A-Z]结尾的单词。 (后跟一个或多个空格,后跟一个新的大写单词)。是的,

grep -o -E '[A-Z]+\. +[A-Z]+[A-Za-z]+' *.tex