Correct punctuation spaces

Who can remember when to use `\@` in a (La)TeX document? I thought I knew, but an exception caught me by surprise today.

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.

The canonical 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.

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.

Well, that’s where the limits of my understanding finished until today. And then I wrote something like

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

Much to my surprise, the space after the ‘`(etc.)`’ was too large! Turns out that 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.

Update: Karl Berry gives 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. His take on the matter:

Fixing end-of-sentence spacing (in one direction or the other) is one of the most common things we have to with TUGboat submissions.

End update

The best idea in a case like this 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) …
``````

I’m continually learning about small details like this even though I’ve been using TeX and friends quite closely for a number of years. It’s important to keep one’s eyes open.

1. latex-alive posted this