I'm probably overlooking something obvious here, but it's eluded me
long enough to type and send this message.

Consider this three-line input:

.ss 12 48
\[lq]He said `seven.'\[rq]
John frowned.

(The first line merely makes the sentence space large enough to be
visibly obvious; it has no effect on the core issue.)

groff recognizes that a sentence space should come between the right
double-quote character and the word "John," because the . has cflags
property 1 set (i.e., it is an end-of-sentence character), and both
end-quote characters have cflags property 32 set (i.e., they are
ignored for sentence-detection purposes.)

To improve typographic quality, it is common to insert a thin space
between an adjacent single-quote and double-quote character.  In this
example, the second input line would thus become:

\[lq]He said `seven.'\|\[rq]

This addition, however, prevents groff from recognizing the period as
an end-of-sentence character, because while both end-quote characters
have cflags property 32 set, the thin space does not.

The obvious solution is to set this property for the \| character,
which should be done with the following line:

.cflags 32 \|

But this emits the warning "normal or special character expected (got
a horizontal space)" and has no effect on the output.

What's the correct way to get groff to ignore the thin-space character
in end-of-sentence detection?

Reply via email to