Im Internet bin ich auf den Begriff French Spacing gestoßen und habe herausgefunden, dass LaTeX die Befehle \frenchspacing und \nonfrenchspacing kennt. Erwähnt wird beides z.B. in l2kurz nicht. Daraus ergeben sich folgende Fragen:

  • Was ist French Spacing?
  • Muss ich das überhaupt wissen? Mein Dokument ist auf deutsch (\usepackage[ngerman]{babel}), nicht auf französisch.
  • Was machen die Befehle \frenchspacing beziehungsweise \nonfrenchspacing? Bei einem Test sind mir auf den ersten Blick keine Unterschiede aufgefallen.

gefragt 05 Aug '13, 08:51

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 10 Dez '15, 20:09


Weil ich den Sermon schon fast fertig hatte, poste ich ihn trotzdem, obwohl @rgbgr schon geantwortet hat. :)


Zur Begriffsklärung kann man gerne mal bei Wikipedia vorbeischauen. Der deutsche Beitrag 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 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:

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:

Open in Online-Editor
\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

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:

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.
Open in Online-Editor
\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

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:

Open in Online-Editor
\frenchspacing 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:

Open in Online-Editor
\nonfrenchspacing 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:

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, wenn English Spacing aktiv ist, gibt es das Makro \@ (richtig: nur ein @, dafür braucht's kein \makeatletter), das lediglich den space factor auf 1000 setzt. Damit ergibt sich für obiges Beispiel:

Open in Online-Editor
\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

(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?

Open in Online-Editor
\documentclass{scrartcl}
\def\foo{\@foo}
\begin{document}
\foo
\end{document}

Das gibt den Fehler

Open in Online-Editor
! You can't use `\spacefactor' in vertical mode.
\@->\spacefactor 
                 \@m 
l.4 \foo

Jetzt wissen 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.

Permanenter link

beantwortet 05 Aug '13, 16:24

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 10 Dez '15, 20:09

\frenchspacing schaltet den zusätzlichen Zwischenraum ab, den LaTeX normalerweise nach einem Satzzeichen einfügt. Von Word o.ä. kennt man das nicht, aber sehr wohl im englischen Buchdruck heute noch, zu Zeiten des Bleisatz auch in deutschen Büchern. In der Schreibmaschinenzeit sah man oft englische Texte mit zwei ganzen Leerzeichen nach einem Punkt. Zum typographiegeschichtlichen Hintergrund gibt es einen Eintrag bei Wikipedia.

Wird die Spracheinstellung (z.B. durch \usepackage[ngerman]{babel}) auf Deutsch gesetzt, ist \frenchspacing der Standard und man muss den zusätzlichen Leerraum durch \nonfrenchspacing explizit einschalten (der im Englischen aber Standard ist). In diesem Falle sollte zwischen einem Satzpunkt und satzinternen Punkten aber unterschieden werden (etwa bei Abkürzungen). Die weitergehende französische Konvention, vor Semikolon, Ausrufe- und Fragezeichen zusätzliche Leerzeichen zu setzen, wird aber erst mit \usepackage[french]{babel} eingeschaltet.

Permanenter link

beantwortet 05 Aug '13, 15:56

rgbgr's gravatar image

rgbgr
612
Akzeptiert-Rate: 0%

bearbeitet 05 Aug '13, 16:02

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×55
×17
×3
×2
×1

gestellte Frage: 05 Aug '13, 08:51

Frage wurde gesehen: 35,123 Mal

zuletzt geändert: 10 Dez '15, 20:09