5.1.2 Sentences

A passionate debate has raged for decades among writers of the English language over whether more space should appear between adjacent sentences than between words within a sentence, and if so, how much, and what other circumstances should influence this spacing.20 GNU troff follows the example of AT&T troff; it attempts to detect the boundaries between sentences, and supplies additional inter-sentence space between them.

Hello, world!
Welcome to groff.
    ⇒ Hello, world!  Welcome to groff.

GNU troff flags certain characters (normally ‘!’, ‘?’, and ‘.’) as potentially ending a sentence. When GNU troff encounters one of these end-of-sentence characters at the end of an input line, or one of them is followed by two (unescaped) spaces on the same input line, it appends an inter-word space followed by an inter-sentence space in the output.

R. Harper subscribes to a maxim of P. T. Barnum.
    ⇒ R. Harper subscribes to a maxim of P. T. Barnum.

In the above example, inter-sentence space is not added after ‘P.’ or ‘T.’ because the periods do not occur at the end of an input line, nor are they followed by two or more spaces. Let’s imagine that we’ve heard something about defamation from Mr. Harper’s attorney, recast the sentence, and reflowed it in our text editor.

I submit that R. Harper subscribes to a maxim of P. T.
Barnum.
    ⇒ I submit that R. Harper subscribes to a maxim of
    ⇒ P. T.  Barnum.

“Barnum” doesn’t begin a sentence! What to do? Let us meet our first escape sequence, a series of input characters that give instructions to GNU troff instead of being used to construct output device glyphs.21 An escape sequence begins with the backslash character \ by default, an uncommon character in natural language text, and is always followed by at least one other character, hence the term “sequence”.

The dummy character escape sequence \& can be used after an end-of-sentence character to defeat end-of-sentence detection on a per-instance basis. We can therefore rewrite our input more defensively.

I submit that R.\& Harper subscribes to a maxim of P.\&
T.\& Barnum.
    ⇒ I submit that R. Harper subscribes to a maxim of
    ⇒ P. T. Barnum.

Adding text caused our input to wrap; now, we don’t need \& after ‘T.’ but we do after ‘P.’. Consistent use of the escape sequence ensures that potential sentence boundaries are robust to editing activities. Further advice along these lines will follow in Input Conventions.

Normally, the occurrence of a visible non-end-of-sentence character (as opposed to a space or tab) immediately after an end-of-sentence character cancels detection of the end of a sentence. For example, it would be incorrect for GNU troff to infer the end of a sentence after the dot in ‘3.14159’. However, several characters are treated transparently after the occurrence of an end-of-sentence character. That is, GNU troff does not cancel end-of-sentence detection when it processes them. This is because such characters are often used as footnote markers or to close quotations and parentheticals. The default set is ‘"’, ‘'’, ‘)’, ‘]’, ‘*’, \[dg], \[dd], \[rq], and \[cq]. The last four are examples of special characters, escape sequences whose purpose is to obtain glyphs that are not easily typed at the keyboard, or which have special meaning to GNU troff (like \ itself).22

\[lq]The idea that the poor should have leisure has always
been shocking to the rich.\[rq]
(Bertrand Russell, 1935)
    ⇒ "The idea that the poor should have
    ⇒ leisure has always been shocking to
    ⇒ the rich."  (Bertrand Russell, 1935)

The sets of characters that potentially end sentences or are transparent to sentence endings are configurable. See the cflags request in Using Symbols. To change the additional inter-sentence space amount—even to remove it entirely—see Manipulating Filling and Adjustment.