<sub>Weil ich den Sermon schon fast fertig hatte, poste ich ihn trotzdem, obwohl [@rgbgr][1] schon geantwortet hat. :)</sub>
----------
Zur Begriffsklärung kann man gerne mal bei Wikipedia vorbeischauen. Der [deutsche Beitrag][2] dazu ist allerdings recht kurz:
> Vor dem 20. Jahrhundert war es üblich,
> nach dem Satzende ein einzelnes,
> jedoch verbreitertes Leerzeichen zu
> benutzen. Das sog. _French Spacing_,
> also das Setzen eines einzelnen
> Leerzeichens nach dem Satzende, ist
> seit dem 20. Jahrhundert üblich und
> empfohlen. Im Gegensatz dazu steht das
> sog. _English Spacing_, das das Setzen
> von zwei Leerzeichen nach dem Satzende
> beschreibt.
Der [englischsprachige Eintrag][3] ist da deutlich informativer und hat sogar einen Satz zur Verwendung im Deutschen:
> The German language manual
> _Empfehlungen des Rats für Deutsche
> Rechtschreibung_ (“Recommendations of
> the Council for German Orthography”)
> (2006) does not address sentence
> spacing. The manual itself uses one
> space after terminal punctuation.
> Additionally, the Duden, the German
> language dictionary most commonly used
> in Germany, indicates that double
> sentence spacing is an error.
Fassen wir zusammen: unter *English Spacing* versteht man ein etwas größeres Spatium (Leerzeichen) zwischen Sätzen im Vergleich zum Spatium zwischen Worten in einem Satz. Mit *French Spacing* bezeichnet man, dass kein Unterschied gemacht wird.
**Lädt man `\usepackage[ngerman]{babel}`, dann wird dem bereits Rechnung getragen und man muss sich letztlich in der Regel nicht weiter darum kümmern, da dann French Spacing verwendet wird, was im Deutschen offiziell als richtig gilt.**
Unterstreichen möchte ich das mit einem Zitat aus Robert Bringhursts [Elements of Typographic Style][4]:
> In the nineteenth century, which was a
> dark and inflationary age in
> typography and type design, many
> compositors were encouraged to stuff
> extra space between sentences.
> Generations of twentieth-century
> typists were then taught to do the
> same, by hitting the spacebar twice
> after every period. Your typing as
> well as your typesetting will benefit
> from unlearning this quaint Victorian
> habit. As a general rule, no more than
> a single space is required after a
> period, a colon or any other mark of
> punctuation. Larger spaces (e.g., en
> spaces) are themselves punctuation.
----------
Aufpassen muss man, wenn man *kein* French Spacing verwendet:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\begin{document}
Ein Satz. Ein weiterer mit Dr. Who. Noch einer mit NASA. Und noch einer.
\nonfrenchspacing
Ein Satz. Ein weiterer mit Dr. Who. Noch einer mit NASA. Und noch einer.
\end{document}
![alt text][5]
Was hier auffällt, ist, dass mit English Spacing der Abstand nach »Dr.« zu groß ist, der nach »NASA.« aber zu klein. Das liegt daran, dass LaTeX einen Punkt nach einem kleinen Buchstaben als Ende eines Satzes interpretiert, einen Punkt nach Großbuchstaben aber als Ende einer Abkürzung. Jedem Charakter in TeX ist ein `\sfcode` -- ein space factor code -- zugeordnet, der den `\spacefactor` für den Leerraum danach festlegt. Der space factor bestimmt, wie groß im Vergleich zum normalen Spatium der Leerraum wird, wie weit er im Vergleich gestreckt und gestaucht werden darf. Zitat [TeX by topic][6]:
> Here is the general idea:
>
> - After every character token, the `\spacefactor` quantity is updated
> with the space factor code of that
> character.
> - When space is inserted, its natural size can be augmented (if
> `\spacefactor` ≥ 2000), and in general
> its stretch is multiplied, and its
> shrink divided, by
> `\spacefactor`/1000.
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\begin{document}
\the\sfcode`\. \par
z\the\spacefactor \quad z.\the\spacefactor \par
A\the\spacefactor \quad A.\the\spacefactor
\nonfrenchspacing
\the\sfcode`\. \par
z\the\spacefactor \quad z.\the\spacefactor \par
A\the\spacefactor \quad A.\the\spacefactor
\end{document}
![alt text][7]
Kleinbuchstaben haben einen sfcode von 1000, Großbuchstaben einen von 999. Der Punkt hat mit English Spacing sfcode 3000, mit French Spacing einen von 1000, entspricht in dieser Hinsicht also einem Kleinbuchstaben. Das ist dann auch die Anwort bezüglich der Befehle `\frenchspacing` und `\nonfrenchspacing`.
`\frenchspacing` setzt den space factor code der Zeichen `.?!:;,` jeweils auf 1000:
\frenchspacing macro:->\sfcode‘\.\@m \sfcode‘\?\@m \sfcode‘\!\@m \sfcode‘\:\@m \sfcode‘\;\@m \sfcode‘\,\@m
macro:->\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m
`\nonfrenchspacing` setzt den space factor code dieser Zeichen ausnahmslos auf über 1000, allerdings zu unterschiedlichen Werten:
\nonfrenchspacing macro:->\sfcode‘\.3000\sfcode‘\?3000\sfcode‘\!3000\sfcode‘\:2000\sfcode‘\;1500\sfcode ‘\,1250
macro:->\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000\sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
Und wieso erhalten wir unterschiedliche Ergebnisse nach Groß- und Kleinbuchstaben? Zitieren wir [TeX by topic][8]:
> Because the space factor cannot jump
> from a value below 1000 to one above,
> a punctuation symbol after an
> uppercase character will not have the
> effect on the interword space that
> punctuation after a lowercase
> character has.
Um nun die Zwischenwortabstände kontrollieren zu können, wen English Spacing aktiv ist, gibt es das Makro `\@` (richtig: nur ein `@`, [dafür braucht's kein `\makeatletter`][9]), das lediglich den space factor auf 1000 setzt. Damit ergibt sich für obiges Beispiel:
\documentclass{scrartcl}
\begin{document}
Ein Satz. Ein weiterer mit Dr. Who. Noch einer mit NASA. Und noch einer. \par
Ein Satz. Ein weiterer mit Dr.\@ Who. Noch einer mit NASA\@. Und noch einer.
\end{document}
![alt text][10]
(Natürlich sollte man zwischen »Dr.« und »Who« eigentlich einen non-breaking space einfügen und an dieser Stelle damit gleichzeitig das Problem umgehen: `Dr.~Who`.
Mit `\frenchspacing` kann man `\@` natürlich trotzdem verwenden, es hat allerdings keine Auswirkung.
----------
Apropos: schon mal vergessen, `\makeatletter` zu setzen?
\documentclass{scrartcl}
\def\foo{\@foo}
\begin{document}
\foo
\end{document}
Das gibt den Fehler
! You can't use `\spacefactor' in vertical mode.
\@->\spacefactor
\@m
l.4 \foo
Jetzt wissen sie, Sie, wieso: `\foo` ist definiert als das Makro `\@` gefolgt von den Buchstaben `foo`. Zu Beginn eines Absatzes, wenn sich TeX noch im vertikalen Modus befindet, kann der space factor aber nicht gesetzt werden.
[1]: http://texwelt.de/wissen/benutzer/60/rgbgr
[2]: http://de.wikipedia.org/wiki/French_Spacing#French.2FEnglish_Spacing
[3]: https://en.wikipedia.org/wiki/Sentence_spacing
[4]: http://www.amazon.de/Elements-Typographic-Style-Robert-Bringhurst/dp/0881792063
[5]: http://texwelt.de/wissen/upfiles/frenchspacing1.png
[6]: http://texdoc.net/pkg/texbytopic
[7]: http://texwelt.de/wissen/upfiles/frenchspacing2.png
[8]: http://texdoc.net/pkg/texbytopic
[9]: http://texwelt.de/wissen/fragen/1
[10]: http://texwelt.de/wissen/upfiles/frenchspacing3.png