Für LaTeX ist ein Punkt kein Befehl, einen Punkt zu setzen, sondern ein Befehl, der die Breite des folgenden Leerraums ändert. Die Lücke in Dr. Smith misst 3,33252 pt, die in ends here. Next 4,44336 pt – dasselbe . auf der Tastatur, 1,11084 pt Unterschied in einem 10-pt-Dokument. Ausschlaggebend ist dabei das Zeichen vor dem Punkt: ein Kleinbuchstabe bedeutet Satzende, ein Großbuchstabe Abkürzung. Diese eine Regel steckt hinter der gedehnten Lücke nach NASA. Next, dem seltsamen Abstand in Fig. 1 und dem schiefen Gefühl nach e.g.. Diese Seite behandelt den Mechanismus (\sfcode), die Korrekturen (\@, \ , ~, \frenchspacing), den Unterschied zwischen \ldots und \dots, den Ziffertrenner \, sowie die Wahl japanischer Kommata, Punkte und Klammern.
Warum der Abstand nach einem Punkt größer wird: der \sfcode-Mechanismus
Weil jedes Zeichen einen Space Factor trägt und TeX, sobald der vom vorigen Zeichen hinterlassene Wert 2000 übersteigt, dem folgenden Zwischenraum \fontdimen7 – den „zusätzlichen Raum“ der Schrift – hinzufügt. Gemessen in einem 10-pt-article: der gewöhnliche Wortzwischenraum \fontdimen2 beträgt 3,33252 pt, der Zusatzraum 1,11084 pt, zusammen 4,44336 pt – ein Satzabstand ist also genau das 1,33-Fache eines Wortabstands. Die Werte lassen sich einsehen, indem man \the\sfcode ein Zeichen folgen lässt; ein Punkt meldet 3000. Dieses 3000 ist der Ausgangspunkt für alles Weitere.
| Zeichen | Standard-sfcode | Wirkung auf den nächsten Zwischenraum |
|---|---|---|
. ? ! | 3000 | Satzabstand; +1,11084 pt bei 10 pt |
: | 2000 | etwas größerer Abstand; genau an der Schwelle |
; | 1500 | nur Dehnung und Schrumpfung ändern sich leicht |
, | 1250 | ebenso; gilt nie als Satzende |
) | 0 | transparent; reicht den Wert des vorigen Zeichens weiter |
A B C | 999 | unter 1000 – hebt die 3000 eines folgenden . auf |
Dr. Smith eng, ends here. Next weit – warum Großbuchstaben sfcode 999 haben
Weil der sfcode eines Großbuchstabens 999 beträgt – knapp unter 1000. TeX’ Regel lautet: Liegt der aktuelle Space Factor unter 1000, hebt ihn ein folgendes Zeichen mit einem Wert über 1000 nur bis 1000 an. Nach einem A hinterlässt ein . (3000) also tatsächlich den Wert 1000, und der zusätzliche Satzabstand bleibt aus. Ein kleines a liegt dagegen genau bei 1000, sodass die 3000 des folgenden . unverändert durchgehen. Gemessen: A. a ergibt 18,60657 pt, und A.\ a – mit ausgeschriebenem Zwischenraum – ergibt exakt dieselben 18,60657 pt. a. a liefert dagegen 17,21802 pt und schrumpft unter \frenchspacing auf 16,10718 pt. Die Differenz von 1,11084 pt ist genau der zusätzliche Satzabstand.
Dieser Entwurf kodiert schlicht die englische Satzgewohnheit der Entstehungszeit von TeX: Sätze wurden weiter auseinandergesetzt als Wörter. Damit Abkürzungspunkte – Dr., Ph.D., Mr. – nicht für Satzenden gehalten werden, übernahm TeX eine einzeilige Faustregel: „Endet es auf einen Großbuchstaben, ist es eine Abkürzung.“ Als Faustregel irrt sie in beide Richtungen. NASA. Next ist wirklich ein Satzende, wird aber eng gesetzt, und Fig. 1 ist wirklich eine Abkürzung, wird aber weit gesetzt. Die nächsten beiden Abschnitte beheben je einen der Fälle.
Mit \@ sagen „hier endet wirklich ein Satz“: NASA\@. Next
\@ bedeutet „behandle das folgende Satzzeichen als Satzende“ und steht vor dem Punkt. Schreibt man He joined NASA\@. Then he left., wird die vom großen A hinterlassene 999 aufgehoben und die 3000 des . geht durch. Gemessen: A. a ergibt 18,60657 pt, A\@. a dagegen 19,7174 pt – eine Differenz von 1,11083 pt, genau der zusätzliche Satzabstand. Auf der falschen Seite platziert, NASA.\@ Next, bewirkt es nichts. Merksatz: \@ steht vor dem Punkt. Es ist ein Werkzeug für ein paar Gelegenheiten im Jahr – nur wenn ein Satz auf einem Akronym (NASA, USA, DNA) oder einem auf Großbuchstaben endenden Namen schließt.
Nach einer Abkürzung \ oder ~: e.g. und Fig.~1
Der umgekehrte Fehlgriff – eine auf einen Kleinbuchstaben endende Abkürzung wird für ein Satzende gehalten – wird behoben, indem man den Zwischenraum als Befehl schreibt. \ (Backslash-Leerzeichen) bedeutet „setze hier einen gewöhnlichen Wortzwischenraum“ und ignoriert den Space Factor vollständig. Gemessen: Fig. 1 ergibt 26,5213 pt, Fig.\ 1 25,41046 pt – 1,11084 pt schmaler, also der korrekte Wortzwischenraum. e.g., i.e., etc., cf., vs., Fig., Eq. und No. tappen alle in diese Falle.
Bei Verweisnummern wie Fig. 1 ist allerdings ~ (Tilde) besser als \ . Ein ~ ist „ein Zwischenraum von der Breite eines Wortzwischenraums, an dem kein Zeilenumbruch stattfinden darf“; gemessen ist Fig.~1 mit 25,41046 pt genauso breit wie Fig.\ 1. Gleiche Breite, zusätzlich Umbruchverbot. Da eine Abbildungs- oder Formelnummer oder eine Initiale, die über einen Zeilenumbruch getrennt wird, schwer zu lesen ist, gilt als Standard: Fig.~\ref{fig:one}, Eq.~\eqref{eq:main}, D.~E.~Knuth. Merksatz: ~ für Verweisnummern, \ für sonstige Abkürzungen.
% a sentence really ending on a capital
He joined NASA\@. Then he left.
% abbreviations that must NOT get a sentence space
See, e.g.\ Knuth (1984); cf.\ the appendix.
% reference numbers: same width, but unbreakable
Fig.~\ref{fig:one} and Eq.~\eqref{eq:main}, after D.~E.~Knuth.\frenchspacing – die eine Zeile, die fast jedes nicht englische Dokument braucht
\frenchspacing ist eine Deklaration, die den zusätzlichen Satzabstand pauschal abschaltet; eine Zeile in der Präambel genügt. Ihr Inneres ist verblüffend einfach: Die Definition in latex.ltx setzt sechs sfcode-Werte auf 1000, sodass ., ?, !, :, ; und , wie gewöhnliche Zeichen behandelt werden (das voreingestellte \nonfrenchspacing stellt 3000/3000/3000/2000/1500/1250 wieder her). Gemessen schrumpft a. a von 17,21802 pt auf 16,10718 pt, während A. a bei 18,60657 pt bleibt – Stellen ohne zusätzlichen Raum ändern sich naturgemäß nicht.
Dem Namen zum Trotz ist der engere Abstand keine französische Eigenheit. Französisch, Deutsch, Spanisch, Italienisch und die meisten Sprachen außer dem Englischen setzen zwischen Sätzen keinen größeren Abstand als zwischen Wörtern. Auch der moderne englische Satz hat sich weitgehend auf einfachen Abstand eingependelt. Die Sprachangabe an babel schaltet das oft schon um, doch die eigene Deklaration von \frenchspacing ist der verlässliche Weg. LaTeX selbst verwendet es übrigens innerhalb der Umgebung verbatim – in Code soll nach einem . nichts gedehnt werden. Ob der weite Satzabstand bleibt, ist eine Absprache, die vorab mit den Mitautoren zu treffen ist; eine Änderung mittendrin zieht einen Diff über alle Seiten.
\documentclass{article}
\usepackage[T1]{fontenc}
\frenchspacing % . ? ! : ; , all behave like ordinary letters
\begin{document}
This ends here. Next sentence starts with an ordinary space.
\end{document}Auslassungspunkte heißen \ldots, nicht ... – und der Unterschied zu \dots
Drei getippte Punkte, ..., messen 8,3313 pt; \ldots misst 13,33008 pt – das 1,6-Fache. Bei ... verklumpen die Punkte und lesen sich nicht mehr als Auslassung, während \ldots den richtigen Abstand dazwischen setzt. Für Auslassungspunkte im Fließtext also stets \ldots oder \dots verwenden. Und der Unterschied zwischen beiden? Im blanken LaTeX gibt es keinen. latex.ltx definiert \dots und setzt anschließend \let\ldots\dots; es ist buchstäblich derselbe Befehl. Gemessen ergeben beide im Textmodus 13,33008 pt und stimmen mit \textellipsis überein.
Der Unterschied zeigt sich nur bei geladenem amsmath und nur im Mathematikmodus. amsmath deklariert beide neu: \ldots steht dauerhaft für die tiefliegenden Punkte, während \dots zu einem Befehl wird, der vorausschaut und die Höhe der Punkte aus dem Kontext wählt. In einer Kommafolge nimmt er tiefe Punkte (\dotsc), zwischen binären Operatoren oder Relationen zentrierte (\dotsb, also \cdots), bei Integralen \dotsi, bei Multiplikation \dotsm. Kompiliert und mit pdftotext extrahiert, liefert $a+\dots+b$ „a + · · · + b“ und $a+\ldots+b$ „a + . . . + b“ – tatsächlich verschiedene Zeichen. Im Textmodus fallen beide weiterhin auf \textellipsis zurück; im Fließtext gibt es also nichts abzuwägen.
| Befehl | Ausgabe | Wann zu verwenden |
|---|---|---|
\ldots | … (auf der Grundlinie) | Auslassung im Fließtext; in Formeln stets tiefe Punkte |
\dots | kontextabhängig | unter amsmath wählt es die Höhe aus dem Kontext; Standard in Formeln |
\cdots | ⋯ (zentriert) | zwischen Operatoren, wie in a+\cdots+b |
\vdots | ⋮ (senkrecht) | Auslassen von Zeilen in Matrizen oder Gleichungssystemen |
\ddots | ⋱ (diagonal) | Auslassung entlang der Matrixdiagonale |
\usepackage{amsmath}
% ...
He hesitated\ldots{} then went on.
\[
x_1, x_2, \dots, x_n \qquad a_1 + a_2 + \dots + a_n
\]
\[
\begin{pmatrix} a & \cdots & b \\ \vdots & \ddots & \vdots \end{pmatrix}
\]Ziffern mit \, gruppieren – „1 000“ aus 1,6663 pt
\, fügt einen schmalen Zwischenraum (thin space) ein und misst 1,6663 pt – ein Sechstel Geviert. 1\,000 ergibt 21,66142 pt gegenüber 19,99512 pt für 1000: exakt 1,6663 pt Unterschied. Da die Konvention für Zifferngruppen zwischen Ländern vertauscht ist (englisch 1,000 ist deutsch 1.000), empfiehlt die internationale Praxis seit Langem, Gruppen mit einem schmalen Zwischenraum zu trennen. Genau dieser Raum ist \,. Derselbe Befehl steht vor einer Einheit: 5\,\mathrm{kg}.
Von Hand gestreute \, lohnen sich allerdings nicht, sobald die Ziffernzahl steigt. In einem Manuskript voller Zahlen und Einheiten übergibt man die Aufgabe besser an siunitx und schreibt \num{1000000} oder \qty{5}{\kilogram}; Gruppierung, Abstand vor der Einheit und sogar die Behandlung des Minuszeichens bleiben dann einheitlich. \, ist das Werkzeug für die eine Zahl, die zufällig im Satz auftaucht.
Japanisch: 、。 oder ,.? In jsclasses gibt es dafür keine Klassenoption
Welche Zeichen erscheinen, entscheidet allein die Eingabe in der Quelle; keine Klassenoption schaltet das um. jsclasses – jsarticle, jsbook und die übrigen – kennt keine Option, die die Interpunktion auf ,. umstellt. Wer Komma und Punkt will, tippt ,. direkt in den Fließtext. Der Stil selbst geht auf JIS Z 8301 zurück, die Norm für die Gestaltung japanischer Normdokumente, die im Querschreiben ,und .verwendete; in Mathematikbüchern und natur- wie ingenieurwissenschaftlichen Arbeiten ist er weiterhin verbreitet. Auf der anderen Seite legte die Empfehlung des Kulturrats von 2022 zum Verfassen amtlicher Texte das japanische Komma 「、」 als Standard fest und erlaubt ,im Querschreiben je nach Umständen. Den Einreichungsregeln und dem Fachbrauch folgen und innerhalb eines Dokuments konsequent bleiben – mehr ist an der Entscheidung nicht.
% comma-period style: just type the marks you want
\documentclass{ltjsarticle}
\begin{document}
本稿では,記法を次のように定める.まず,集合 $A$ を……
\end{document}Japanische Klammern 「」『』() – welche wofür
Dialog, Zitat und das Hervorheben einer Wendung nehmen Eckklammern 「」; Titel von Büchern und Werken sowie jedes in 「」 eingebettete Zitat nehmen doppelte Eckklammern 『』. Für Einschübe und Lesungen stehen Klammern voller Breite (). Im Japanischen Klammern voller Breite verwenden und keine westlichen () halber Breite einmischen: Halbbreite Klammern tragen andere Zwischenräume, sodass eine einzelne sichtbar aus der Zeile fällt. Umgekehrt gilt innerhalb eines westlichen (lateinischen) Zitats die halbe Breite ( ).
| Klammer | Name | Typische Verwendung |
|---|---|---|
「 」 | Kagi-Kakko, Eckklammern | Dialog, Zitat, Hervorhebung; die primären japanischen Anführungszeichen |
『 』 | doppelte Eckklammern | Werktitel und Verschachtelung innerhalb von 「」 |
( ) | Klammern voller Breite | Einschübe, Anmerkungen, Lesungen |
[ ] | eckige Klammern voller Breite | redaktionelle Einschübe und markierte Auslassungen |
【 】 | linsenförmige Klammern | Überschriften und stark hervorgehobene Bezeichnungen |
〔 〕 | Schildpattklammern | Anmerkungen und Einschübe; Alternative zu eckigen Klammern |
Wie japanische Satzzeichen ihren Raum tatsächlich erhalten – die im JFM verzeichneten Breiten, die Unterschneidung bei aufeinanderfolgenden schließenden Klammern, \inhibitxspcode, der automatisch zwischen Japanisch und Lateinisch eingefügte \xkanjiskip sowie die Zeilenanfangs- und Zeilenendeverbote mit ihren Strafen –, behandelt die Seite zu den Details des japanischen Satzes. Der praktische Merksatz hier ist schlicht: keine eigenen Leerzeichen um Satzzeichen setzen. Sie legen sich sonst über den Raum, den die Engine bereits vorsieht, und reißen eine unnatürliche Lücke auf.
Vor der Abgabe die Quelle durchsuchen – Interpunktionsdrift in einem Durchgang beseitigen
Interpunktionsdrift löst nie einen Kompilierfehler aus; sie zeigt sich nur als Missklang im PDF. Verlässlich ist daher ein maschineller Durchgang durch die Quelle zum Schluss. Bei gemeinsamer Autorschaft ist garantiert, dass ein Kapitel \frenchspacing voraussetzt, ein anderes nach e.g. ein nacktes Leerzeichen stehen lässt und ein drittes halbbreite Klammern ins Japanische mischt. Suchen Sie mit grep nach diesen vier Dingen.
- Nackte Leerzeichen nach Abkürzungen. Nach dem Leerzeichen hinter
e.g.,i.e.,cf.,etc.,Fig.suchen und durch\oder~ersetzen (entfällt bei\frenchspacing). - Sätze, die auf einem Großbuchstaben enden. Nach Akronym plus
.suchen (NASA.,USA.,DNA.) und überall dort\@einfügen, wo wirklich ein Satz endet. - Auslassungspunkte. Nach drei aufeinanderfolgenden Punkten
...suchen und in\ldotsändern; in Formeln\dotsausamsmathüberlassen. - Halbbreite Klammern im Japanischen. Nach
(und)in japanischen Zeilen suchen und in ( ) voller Breite ändern. Dabei gleich prüfen, dass um kein Satzzeichen ein Leerzeichen von Hand gesetzt wurde.
# abbreviation followed by a bare space
grep -nE "(e\.g\.|i\.e\.|cf\.|etc\.|Fig\.) " *.tex
# a sentence that may end on an acronym
grep -nE "[A-Z]{2,}\." *.tex
# three typed periods instead of \ldots
grep -n "\.\.\." *.tex