Indizes und Abstände

Sämtliche mathematischen Abstände in LaTeX gehen auf drei Zahlen zurück. Sie stehen in den letzten drei Zeilen von fontmath.ltx: \thinmuskip=3mu, \medmuskip=4mu plus 2mu minus 4mu, \thickmuskip=5mu plus 5mu. Dünn, mittel und dick – 3, 4 und 5 – regeln die Lücken um das + in a+b ebenso wie die um das = in a=b. Und der mittlere Zwischenraum kann um volle 4 mu schrumpfen, also ganz verschwinden; kaum eine Referenz erwähnt das. Diese Seite legt die Regeln für den Hochindex ^ und den Tiefindex _ dar und stellt die gemessenen Breiten von \,, \:, \;, \!, \quad und \qquad daneben. Ob die Suche nach Abstandskorrektur in Formeln hierher führte oder ein ! Double superscript – die Antwort steht hier.

^ und _ binden genau einen Token

Im Mathematikmodus erzeugt ^ einen Hoch- und _ einen Tiefindex, doch jedes bindet genau einen folgenden Token – ein Zeichen oder einen Befehl. Wer mehr hoch- oder tiefstellen will, fasst es mit geschweiften Klammern { } zusammen. Unangenehm ist, dass ihr Fehlen kein Fehler ist. x^{10} macht die ganze „10“ zum Exponenten, x^10 ohne Klammern hebt dagegen nur die „1“ und lässt die „0“ in voller Größe auf der Grundlinie. Es übersetzt klaglos – ein Fehler also, den man erst im Druck bemerkt. Die Hand sollte es sich angewöhnen: Klammern um jeden Index, der länger als ein Zeichen ist.

latex
$x^{10}$    % the whole 10 is the exponent
$x^10$      % only the 1 is raised; the 0 stays full size
$a_{ij}$    % ij together as one subscript
$2^{n+1}$   % n+1 as one exponent
$x_i^2$     % both scripts; the order does not matter

Ein Zeichen kann Hoch- und Tiefindex gleichzeitig tragen. Ob x_i^2 oder x^2_i – LaTeX stapelt beides gleich. Indizes lassen sich auch schachteln, doch jede Ebene braucht eigene Klammern: In x^{y^z} ist z der Exponent von y und das ganze y^z der Exponent von x. Ohne Klammern löst x^y^z den Fehler des nächsten Abschnitts aus. Bei großen Operatoren wie \sum und \lim können ^ und _ direkt über und unter das Zeichen wandern, und \limits / \nolimits erzwingen die Position; das gehört zum Operator und wird auf der Seite zu Summen, Integralen und großen Operatoren behandelt.

! Double superscript. und ! Double subscript.

Diese Meldung erscheint, wenn dieselbe Basis zweimal einen Hochindex bekommt. $x^y^z$ bricht in pdfLaTeX aus TeX Live 2024 mit ! Double superscript. ab; bei Tiefindizes liefert $x_i_j$ ein ! Double subscript. Beides bedeutet: „Diese Basis trägt bereits einen Index.“ Die Lösung ist, die gemeinte Schachtelung mit Klammern hinzuschreiben: x^{y^z} macht z zum Exponenten von y, {x^y}^z erhebt ganz x^y in die z-te Potenz. Beides ist mathematisch verschieden; eine Klammer nur zum Verstummen der Fehlermeldung zu setzen, ändert die Aussage der Formel.

Der Ableitungsstrich f'(x) – und warum f^' falsch ist

Es genügt, den Apostroph ' zu tippen. Er ist bereits ein Hochindex; ein eigenes ^ gehört nicht dazu. In latex.ltx wird ' in Formeln zum aktiven Zeichen gemacht und zu ^\bgroup\prim@s expandiert; gemessen ergeben f'(x) und f^{\prime}(x) beide 22,27089 pt, also genau dasselbe. Zwei Striche heißen f''(x), drei f'''(x). Bemerkenswert: Die Mechanik verschluckt ein folgendes ^. f'^2 löst keinen Fehler aus und wird zu 12,76395 pt gesetzt, exakt wie f^{\prime2}. Wer also „Strich, dann Quadrat“ meint, prüfe, ob das Ergebnis das Gemeinte sagt.

Indizes links vom Zeichen: {}^{A}_{Z}X und \sideset

Sollen Hoch- oder Tiefindex links vom Zeichen stehen – etwa in der Isotopenschreibweise –, dient ein leeres Klammerpaar {} als Basis. {}^{14}_{6}\mathrm{C} setzt {} als gewöhnliches Zeichen der Breite null, hängt die Indizes daran und stellt dann das C daneben. Fehlt das {}, hängen sich die Indizes an das, was gerade davorsteht: In = ^{14}_{6}C baumeln sie am =, und trägt das Vorhergehende bereits einen Index, folgt ! Double superscript. Um bei einem großen Operator auf beiden Seiten Indizes zu setzen, bietet amsmath \sideset{_a^b}{_c^d}\sum – das ist jedoch ein Werkzeug des Operators, siehe die Seite zu Summen und Integralen. \prescript aus mathtools ist eine weitere Antwort auf dieselbe Frage.

latex
\[
  {}^{14}_{6}\mathrm{C}, \qquad {}^{t}\!A, \qquad
  x^{y^z} \ne {x^y}^z, \qquad f''(x)
\]

Die Einheit mu: ein Achtzehntel Geviert – und in Indizes schrumpft sie

Ein mu ist 1/18 Geviert, 18 mu sind also genau ein Geviert. Das Geviert hängt hier an der Größe des mathematischen Symbolfonts, weshalb ein in mu bemessener Zwischenraum der Schriftgröße folgt. In einem 10-pt-article beträgt der Breitenunterschied zwischen a\,b und ab 1,66662 pt – passend zu 3 mu = 1/6 Geviert = 1,6667 pt. Dasselbe \, in einem Hochindex, etwa x^{a\,b}, misst dagegen 1,36574 pt; eine Ebene tiefer sind es nur noch 1,22685 pt. In einem 12-pt-Dokument werden daraus 1,99997 pt. Der Zwischenraum skaliert also tatsächlich mit den Buchstaben ringsum.

Doch \quad und \qquad gehören nicht zu dieser Familie. latex.ltx definiert sie als \def\quad{\hskip1em\relax} und zwei Geviert für \qquad – die Einheit ist nicht mu, sondern ein Geviert der Textschrift. Sie schrumpfen daher in einem Index nicht: Gemessen ist x^{a\quad b} um 10,00002 pt breiter als ein schlichtes x^{ab}, also um ein volles Geviert der Grundschrift. Und in einem 12-pt-Dokument misst \quad 11,74988 pt, während 18 mu genau 12 pt sind – \quad und 18 mu sind also nicht gleich lang. Die sichere Arbeitsteilung folgt der Aufgabe: die mu-Befehle (\,, \:, \;, \!) für Feinjustierung, die Geviert-Befehle (\quad, \qquad) für große Trennungen.

BefehlDefinierter BetragGemessen im 10-pt-article
\,\thinmuskip = 3 mu (Alias \thinspace)1,66662 pt; die häufigste Feinkorrektur
\:\medmuskip = 4 mu plus 2 minus 4 (\medspace, \>)2,22216 pt; elastisch, kann ganz verschwinden
\;\thickmuskip = 5 mu plus 5 (\thickspace)2,77771 pt; kann sich verdoppeln
\!−3 mu (identisch mit \negthinspace)−1,66663 pt; die genaue Umkehrung von \,
\negmedspace−4 mu; kein amsmath nötig (steht in latex.ltx)−2,22217 pt
\negthickspace−5 mu; ebenfalls im LaTeX-Kern−2,77771 pt
\quad\hskip1em; ein Geviert der Textschrift, kein mu10,00002 pt; schrumpft in Indizes nicht
\qquad\hskip2em; das Doppelte eines \quad20,00003 pt
(backslash-space)das Steuerleerzeichen; wie ein Wortzwischenraum3,33332 pt
\enspaceein festes halbes Geviert5 pt

Dass \, sowohl im Fließtext als auch in Formeln funktioniert, liegt an \tmspace in latex.ltx, das mit \ifmmode verzweigt: in Mathematik \mskip\thinmuskip (3 mu), im Text ein festes \kern .16667em. Ein Befehl, zwei Einheitensysteme. In derselben Datei hält \let\>=\: fest, dass \> ein Alias für \: ist. Und \negmedspace und \negthickspace aus der Tabelle werden oft amsmath zugeschrieben, stehen aber beide im LaTeX-Kern von TeX Live 2024 und funktionieren nachweislich ohne \usepackage{amsmath}.

Warum Indizes schrumpfen: \displaystyle und die vier Mathe-Stile

TeX setzt jede Formel in einem von vier Stilen, und der Stil bestimmt sowohl die Zeichengröße als auch, wie viel ein mu tatsächlich misst. Vom größten zum kleinsten: \displaystyle (abgesetzte Formeln), \textstyle (im Fließtext), \scriptstyle (Index), \scriptscriptstyle (Index eines Index). Misst man die Höhe von X in 10-pt-Text, ergibt sich für display und text jeweils 6,83331pt – sie sind identisch –, dann 4,78334pt für script und 3,41667pt für scriptscript. Kleiner wird es nur in den zwei Schritten hinein in die Indizes, und dort endet es: einen fünften, noch kleineren Stil gibt es nicht. Das ist die Mechanik hinter dem oben beschriebenen Schrumpfen des mu. Im Alltag zählt das Erzwingen eines Stils: im Fließtext wird $\sum_{k=1}^{n}$ auf 8,04175pt Höhe gestaucht, $\displaystyle\sum_{k=1}^{n}$ misst dagegen 16,51393pt – die abgesetzte Gestalt, mit den Summationsgrenzen wieder über und unter dem Zeichen. Der Preis ist ein unruhiger Zeilenabstand; wer im Fließtext ständig danach greift, sollte die Formel wohl besser absetzen.

Die drei praktischen Fälle: \, vor dx, \int\!\!\int und nach einem Funktionsnamen

Zuerst das Integral. \int f(x)dx misst 38,71877 pt, \int f(x)\,dx dagegen 40,38539 pt – eine Differenz von genau 3 mu beziehungsweise 1,66662 pt, und dieser dünne Zwischenraum trennt den Integranden vom dx. Ohne ihn liest sich f(x)dx als eine einzige ununterbrochene Zeichenkette. Dann die Mehrfachintegrale. \int\!\!\int ist die klassische Wendung, zwei Integralzeichen mit zwei negativen Zwischenräumen zusammenzuziehen, und gemessen ergibt sie exakt dieselbe Breite wie \iint aus amsmath (beide 19,3056 pt; ein schlichtes \int\int kommt auf 22,63885 pt). \iint ist also diese Handarbeit als offizieller Befehl.

latex
\[
  \int f(x)\,dx, \qquad \int\!\!\int f \;(=\ \iint f),
  \qquad \sin x, \qquad \operatorname{sinc} x
\]

Der dritte Fall ist der Abstand nach einem Funktionsnamen – und hier sollte man selbst nichts hinzufügen. \sin ist als Operator (Op) deklariert, sodass zwischen ihm und dem Folgenden automatisch ein dünner Zwischenraum entsteht. Gemessen ergibt \sin x 19,6597 pt, \mathrm{sin}x dagegen 17,99307 pt – eine Differenz von 1,66663 pt, also genau 3 mu. Einen eigenen Funktionsnamen mit \mathrm{} zu setzen, kostet somit genau diesen Zwischenraum. Richtig ist \operatorname{sinc} aus amsmath; gemessen kommt \operatorname{sin}x auf 19,6597 pt, genau wie \sin x. Kommt der Name öfter vor, wird er einmal mit \DeclareMathOperator definiert.

Unsichtbare Boxen, die Höhen und Breiten angleichen: \phantom, \vphantom, \mathstrut

„Platz reservieren, aber nichts zeigen“ – dieses immer wiederkehrende Satzbedürfnis bedient die \phantom-Familie. \phantom{…} erzeugt eine leere Box mit derselben Höhe, Tiefe und Breite wie das normal gesetzte Argument. Gedruckt wird nichts, doch genau dieser Raum bleibt frei. Es gibt auf eine Dimension beschränkte Fassungen: \hphantom{…} behält nur die Breite (Höhe und Tiefe null), \vphantom{…} nur Höhe und Tiefe (Breite null). \vphantom ist der Fall „vertikale Ausdehnung beanspruchen, aber horizontal keinen Platz belegen“.

latex
\[
  \sum_{j \in \{0,\ldots,10\} \vphantom{3^{3^{3^j}}}}
  \sum_{i \in \{0,\ldots,3^{3^{3^j}}\}} i \cdot j
\]
% level the radicals: each argument gets a parenthesis of vertical room
$\sqrt{\mathstrut a}\;\sqrt{\mathstrut a^2}\;\sqrt{\mathstrut b}$

Das Beispiel oben zeigt den Fall, in dem zwei Summenzeichen nicht auf gleicher Höhe stehen wollen. Die rechte Summe trägt im Index den hohen Turm 3^{3^{3^j}}, weshalb TeX den Körper dieser Summe absenkt, um Platz zu schaffen – die beiden \sum fluchten nicht mehr. Ein \vphantom{3^{3^{3^j}}} in der linken reserviert dieselbe Höhe und bleibt dabei unsichtbar, und beide richten sich aus. Der nahe Verwandte \mathstrut ist eine eigens gebaute Stütze ohne Argument: intern ist er \vphantom(, hat also Höhe und Tiefe einer öffnenden Klammer und die Breite null. An den Anfang jedes Arguments gesetzt, wenn \sqrt{a} und \sqrt{a^2} nebeneinanderstehen, gleicht er die Dächer der Wurzelzeichen an und die Zeile beruhigt sich. Kurz: \hphantom für gleiche Breiten, \vphantom oder \mathstrut für gleiche Höhen, \phantom für beides – alles ein und derselbe Gedanke: allein Maße zu steuern, über eine unsichtbare Box.