开发者

LaTeX sometimes puts too much or too little space after periods

LaTeX tries to guess whether a period ends a sentence, in which case it puts extra space after it. Here are t开发者_开发百科wo examples where it guesses wrong:

I watched Superman III. Then I went home. 

(Too little space after "Superman III.".)

After brushing teeth etc. I went to bed.

(Too much space after "etc.".)

Note that it doesn't matter how much whitespace you use in the LaTeX source since LaTeX ignores that.


I found the answer here: http://john.regehr.org/latex/. Excerpt:

When a non-sentence-ending period is to be followed by a space, the space must be an explicit blank. So the second example should be:

After brushing teeth etc.\ I went to bed.

The converse of this problem happens when a capital letter precedes a sentence-ending period in the input, as in the first example. In this case LaTeX assumes that the period terminates an abbreviation and follows it with inter-word space rather than inter-sentence space. The fix is to put "\@" before the period. So the first example should be

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

A handy way to find this error is:

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


You can sidestep the spacing issue if you prefer single spaces at the end of sentences: put \frenchspacing on (for older versions of Latex this was a fragile command). Knuth was following the traditional naming in calling it French spacing, although calling double spacing after sentences French spacing has become dominant in publishing.

Dirk Margulis wrote a nice post summarising some of the reasons for the prevalance of single spacing: Space between sentences.


I like the answer from dreeves and the handy search he suggests too. I don't have the Stackoverflow "rep" points to comment, but...

Since lines in raw *.tex tend to be very long, the output from grep can be overwhelming (i.e., entire paragraphs); I suggest a variation to only display the words ending in '[A-Z].' (followed by one or more space, followed by a new capitalized word). It is,

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜