158

Does latex do anything special with periods? If so, is there a way to differentiate end-of-sentence periods from periods indicating abbreviation?

138

There is the issue of end of sentence space vs. space between words. By default the first one is bigger.

\documentclass{article}
\begin{document}
\noindent
e.g. this and that\\
e.g.\ this and that
\end{document}

In the first line the space after the 2nd period is typeset like an end of sentence space. In the second line the space after the 2nd period is typeset like a normal inter-word space:

spacing example (200%)

You can setup with \frenchspacing that the end of sentence space is not different from the normal inter-word spacing.

An \@ before a period sets up end of sentence spacing. This is needed, if the sentence ends with a one-capital-letter word.

  • 8
    You can also use a ~ after a period in order to have non sentence spacing after a period. (You might want to do this if you write e.g. 'see p. 1'.) – twsh Aug 24 '10 at 11:03
  • 10
    You can also put \@ after punctuation to enforce a regular sized space. – Will Robertson Aug 24 '10 at 13:48
  • 16
    Not that in @Tom's suggestion ~ is a non-breaking space (a line will not break after the prefix in Dr.~Smith, for example). This may not be desired. – Geoff Aug 24 '10 at 16:26
  • 14
    @Tom: A tilde ("~") produces a non-breaking space. Most of the times it's better to use "\ " which produces a normal regular sized space. – StrawberryFieldsForever Jun 14 '12 at 11:38
  • 4
    I'd suggest using e.\,g.\ (cf. this comment, for example). – nutty about natty Jun 22 '14 at 4:49
98

Yes, using \@. The following is adapted from my blog.

In approximate detail, the idea of \@ is to indicate when punctuation is or isn’t ending a sentence. Why would you want to do that? By default, Plain TeX and LaTeX both have a feature whereby a little extra space is allowed after a sentence (whether a period or other punctuation mark) to help break the paragraph into lines. If you need a little extra space in this line, better to lump it after the period than add extra space between all the words.

This typesetting approach was very common (often to an exaggerated extent) in the 1800s and early 1900s but nowadays I think is less common. If you don’t like it, write \frenchspacing in your preamble and you can forget about whether \@ is ever required. However, when writing a LaTeX document for another source, such as a journal, it’s polite to follow their style and include such niceties.

One example for using \@ is after abbreviations such as ‘Prof.\@ Crumb’. Without the \@, the space after ‘Prof.’ will be mistakenly enlarged—this is a common typographical mistake in (La)TeX documents. Another way (and usually preferred) to do this is to write Prof.\ Crumb, which is a little easier to remember and to type.

Conversely, \@ can also be used to indicate when a punctuation mark should end a sentence. By default, punctuation after a capital letter is assumed not to end a sentence (so you can write ‘M. C. Escher’ without the \@). But if you happened to refer to someone by their initial at the end of a sentence you’d need to write, say,

… `So he did', said M\@.  (New sentence) …

to ensure that the extra spacing was included after that final period.

I should also mention that I often don’t use \@ after punctuation in favour of typing an explicit space control sequence; that is, I prefer to write Prof.\ Crumb. This is shorter to type and perhaps more memorable.

There are some important edge cases to consider. Other punctuation is ‘invisible’ to the marker for indicating sentence end; consider:

depending on the context of `a' and `b' (etc.) where …

The space factor (which is the parameter governing when and where this extra space should appear) isn’t ‘reset’ by the parenthesis and you need to write (etc.\@) instead. Here's another example:

… `Et cetera et cetera etc.' said the King …

Here, there will be extra space after the closing quotes ' (or '') that is incorrectly added due to the presence of the period; the closing bracket ] is also ‘invisible’ to the space factor.

In the examples above, you don't want extra space after the (etc.), but if an entire sentence is enclosed in parentheses you would:

I like eggs and bacon. (Poached and crispy.) Best with coffee.

So care should be taken when composing the TeX source. In cases where you know a period will never end a sentence, the best idea is to define a macro for inserting it all without your having to remember it; for example,

\makeatletter
\newcommand\etc{etc\@ifnextchar.{}{.\@}}
\makeatother

where you would write ‘(\etc)’ or ‘…, \etc, …’ but if you wanted to finish a sentence with it, you would explicitly include the period:

… \etc. (New sentence) …
  • 2
    V\@. destroys the kerning. How can one prevent that? – Torsten Bronger Mar 15 '18 at 12:43
  • Sorry, Will, I take issue with the contention that \@ should be used after a period to indicate that it's not the end of a sentence. See answers to this question: What is the proper use of \@ (i.e., backslash-at)? (Otherwise it's a great answer.) – barbara beeton Mar 9 at 2:54
  • @barbarabeeton — should be used or could be used? As far as I know it's the only way in this circumstance to insert a period that you know without doubt does not end a sentence. You made me go and test again and the \@ does change the space after the period in this context to be a "normal" space. I see you have argued for \_ in other places, but here in particular we don't know whether there will be a space coming up or not. Consider agg lie (etc.\@) crump — without \@, there is a sentence-ending space before crump. (Maybe nonsense example is nonsense though.) – Will Robertson Mar 10 at 2:58
  • 1
    It's my opinion that the slash-space should be used. In the example you give in your comment, I would input that as agg lie (etc.)\ crump. (Besides, "etc." here could be at the end of a sentence though I can't think of any situation where "i.e." would be at the end of a sentence.} Although \@ does demonstrably give the desired result, it's confusing to teach, especially to beginners. It's simply trying to be too clever. – barbara beeton Mar 10 at 14:39
  • @barbarabeeton — I largely agree with you, I was just trying to clarify for anyone else reading here :-) My shorthand for remembering what \@ is that it is a “mask” for any punctuation changes. “X.” has special behaviour caused by the X on the dot, so put \@ in the middle to revert to normal behaviour. “abc. def” has special sentence-end behaviour after the dot, so put \@ there if it’s not the end of a sentence. Probably the 2e kernel should define semantic commands for these purposes as well! – Will Robertson Mar 10 at 21:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.