[Tex/LaTex] Implementing a sort of “tightened frenchspacing”

frenchspacingpunctuationspacingtypography

By default, (La)TeX adds extra space between sentences. The exact rules are in the TeXbook, a summary by TH. can be found here. What follows is is my "executive summary":

  • After any period (or quotation/exclamation mark) that doesn't follow a capital letter, TeX adds a font's "extra space" to the "normal (interword) space". For Computer Modern 10pt, the normal space is 3.33pt and the extra space 1.11pt, resulting in an intersentence space of 4.44pt (+33% compared to the nomal space, assuming no stretch and shrink).

  • A sentence end after a capital letter is indicated by the \@ command: Ann is learning the ABC\@. To denote that a period after a lowercase letter doesn't end a sentence, one may use \@ as well as an explicit space: Prof.\@ Higgins or Prof.\ Higgins.

Intersentence spacing may be brought in line with normal spacing by issuing the \frenchspacing command. (This is the standard setting for certain languages, e.g. the (n)german option of the babel package.) With \frenchspacing enabled, there's no need to use the \@ command. One may revert to (La)TeX's default behavour by issuing \nonfrenchspacing.

So, there's the choice between extra intersentence spacing and uniform spacing. What is missing in my opinion is a third option I'll call "tightened frenchspacing": normal (interword) spacing between sentences and decreased spacing after non-sentence ending periods. To be somewhat more precise (while still ignoring stretch and shrink), I envision the following:

  • Adhering to a font's ratio between "normal space" and "normal space plus extra space" (3:4 for Computer Modern), the intersentence space is set to the normal space. The space after non-sentence ending periods equals the normal space multiplied by the above ratio (resulting in a space of 2.5pt for Computer Modern).

  • As with \nonfrenchspacing in effect, the \@ command is used to denote cases of special punctuation.

How should such a "tightened frenchspacing" option be implemented?

EDIT: Thanks to Mico for providing what may well be a stepping stone to a solution. Here's another attempt at clarification:

  • Simply reducing the spacing after any period is not what I had in mind. There should be a (tangible) difference between end-of sentence spaces and spaces after non-sentence-ending periods (only that the latter should be reduced instead the former augmented).

  • If adhering to a font's normal space/extra space ratio is not possible, a solution that adds a fixed (reduced) space (say, a thin space) after non-sentence-ending periods will be accepted.

  • For compatibility reasons, I'd prefer a solution that works with the traditional use of \@ (i.e allows "tightened frenchspacing" for existing documents without the need to change the document body). Should it turn out that a different set of "special punctuation" macros is needed, I'll accept this as a solution.

Best Answer

I don't understand: the space in "Dr. Doolittle" should be the same as the normal interword space. I've seen nowhere reduced spacing in this case, the only place where reduced spacing is used is between initials: somebody tells to write

D.\,E.~Knuth

instead of

D.~E.~Knuth

(which I prefer, but it's personal preference). In any case, your "non sentence ending periods" should be marked somehow, so why bother?

Note. I usually put the tie before the family name, it's easy to change it to a normal space in case of typesetting problems.

Addition
As I said, the "non sentence ending periods" must be marked somehow. Since you are using \frenchspacing, we can overload \@:

\frenchspacing
\makeatletter
\def\@{\@ifnextchar.{.\,\@gobbledot}{}}
\def\@gobbledot#1{\ignorespaces}
\makeatother

This way

Dr\@. Treemunch i.e\@. a main character in ``The Joy of TeX''

will result in a reduced space after the period. I don't see how "non sentence ending periods" can be recognized automatically, since they can be after uppercase as well as lowercase letters.

Related Question