【问题标题】:LaTeX sometimes puts too much or too little space after periodsLaTeX 有时会在句号后放置太多或太少的空间
【发布时间】:2010-01-07 23:00:28
【问题描述】:

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

I watched Superman III. Then I went home. 

(《超人III》之后的篇幅太少了。)

After brushing teeth etc. I went to bed.

(“等”后面的空格太多。)

请注意,在 LaTeX 源代码中使用多少空格并不重要,因为 LaTeX 会忽略这一点。

【问题讨论】:

    标签: latex


    【解决方案1】:

    我在这里找到了答案: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
    

    【讨论】:

    • 命令“\@”实际上是专门为此目的——在非句末句点之前。
    • 如果你喜欢对称也可以写etc.\@ I went to bed.。
    • @dreeves:根据回复和我的经验,\@ 被设计在句尾句之前,与你所说的相反。
    • Eep,是的,我的回答是正确的,但我在上面的第一条评论中说反了。
    • 另见Good practice on spacing 和Correct punctuation spaces,其中@Will Robertson 写道:'您应该将\@. 视为“句末句号”,将.\@ 视为“缩写句号”。跨度>
    【解决方案2】:

    如果您更喜欢句子末尾的单个空格,您可以回避间距问题:将\frenchspacing 打开(对于旧版本的 Latex,这是一个脆弱的命令)。 Knuth 沿用了传统的命名方式,将其称为法语间距,尽管在句子后称为双倍间距法语间距在出版业中已占主导地位。

    Dirk Margulis 写了一篇很好的文章,总结了单行距盛行的一些原因:Space between sentences。

    【讨论】:

      【解决方案3】:

      我喜欢 dreeves 的答案以及他建议的便捷搜索。我没有要评论的 Stackoverflow“代表”点,但是...

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-17
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多