\usepackage{amsmath} ist keine Zeile, die nur hinzufügt. Sie nimmt auch weg. Sobald amsmath geladen ist, wird LaTeX’ \[ durch die Umgebung equation* ersetzt, equation und cases werden neu definiert, das aus plain TeX stammende \pmatrix bricht mit einem Fehler ab, und \over erzeugt fortan eine Warnung. Es ist also kein Sortiment praktischer Zusätze, sondern ein Wechsel des Hausstils im mathematischen Satz. Diese Seite behandelt, worin dieser Wechsel besteht, und die umgebungsübergreifenden Befehle \DeclareMathOperator, \text, \intertext, \substack und \dfrac. Die Ausrichtungsumgebungen selbst haben eine eigene Seite.
Was das Laden von amsmath tatsächlich ändert
Zunächst ist amsmath kein einzelnes Paket, sondern ein Bündel. Nahe dem Anfang von amsmath.sty stehen drei \RequirePackage-Zeilen, die amstext (den Befehl \text für Wörter in einer Formel), amsbsy (fette Mathematik mit \boldsymbol) und amsopn (\DeclareMathOperator und die Mechanik für Operatornamen) mitbringen. Eine Zeile liefert also sämtliche Befehle dieser Seite.
\usepackage{amsmath}Dann die Ersetzungen. Die letzten beiden Zeilen von amsmath.sty lauten \DeclareRobustCommand{\[}{\begin{equation*}} und \DeclareRobustCommand{\]}{\end{equation*}} – die grundlegenden Display-Befehle selbst werden gegen eine amsmath-Umgebung getauscht. An anderer Stelle derselben Datei laufen equation, cases, matrix und pmatrix durch \renewenvironment, und auch \nonumber wird neu definiert. Genau wegen dieser Ersetzungen funktionieren \tag, \qedhere und das automatische Ausweichen der Gleichungsnummern überhaupt. Umgekehrt umgeht $$ … $$ diese Schicht – und mit ihr die gesamte Mechanik von amsmath.
Manches wird auch weggenommen. Bringt man plain-TeX-Gewohnheiten mit, brechen sie ab. $\pmatrix{a&b\cr c&d\cr}$ ergibt ! Package amsmath Error: Old form \pmatrix should be \begin{pmatrix}., und \cases{…} wird mit denselben Worten gerügt. 1 \over 2 läuft noch durch, aber mit Package amsmath Warning: Foreign command \over; \frac or \genfrac should be used instead. Diese drei Meldungen begegnen einem als Erstes beim Umstellen eines alten Manuskripts, und alle drei sagen dasselbe: Wechseln Sie zur neueren Schreibweise.
So tief eingreifen darf amsmath, weil es als required LaTeX-Paket eingestuft ist. Die mitgelieferte README hält fest, dass die Pflege von amsmath mit Wirkung zum Jahr 2016 von der AMS an das LaTeX Project überging – der Copyright-Vermerk in amsmath.sty lautet „2016–2023 LaTeX Project and American Mathematical Society“ und nennt das LaTeX Project als aktuellen Betreuer. Praktisch gehört es zu LaTeX selbst, und genau darum darf es Standardbefehle ersetzen.
\DeclareMathOperator: warum ein Operatorname nicht kursiv sein darf
Im Mathematikmodus sind Buchstaben Variablen; rank A ergibt also das Produkt aus r, a, n, k und A. LaTeX definiert \sin, \log, \lim und einige Dutzend weitere Operatornamen vor, rank gehört jedoch nicht dazu. Man könnte meinen, es genüge, mit \mathit{rank} die Kursive abzustellen. Es genügt nicht: Die Form zu korrigieren korrigiert nicht den Abstand. Messen wir nach. \operatorname{rank} A lässt zwischen rank und A 1,66pt. \mathit{rank} A lässt 1,07pt – das ist allein die Kursivkorrektur, ohne jeden Operatorabstand. Und \mathrm{log} x erscheint als zusammengeklebtes „logx“.
Ein Blick in amsopn.sty klärt es in einer Zeile. \operatorname expandiert zu \mathop{…\operator@font…}. Ein Operatorname ist also nicht bloß eine aufrechte Zeichenfolge, sondern wird als Op-Atom in TeX’ System der Symbolklassen registriert. TeX’ Abstandstabelle setzt zwischen ein Op und ein Ord \thinmuskip (3mu) – daher stammt der Zwischenraum zwischen „log“ und „x“ in \log x. \mathrm ändert nur die Form der Buchstaben; das Atom bleibt ein Ord, also entsteht kein Abstand. \DeclareMathOperator ist kein kosmetisches Werkzeug, sondern eine Bedeutungserklärung.
% in the preamble
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}
% in the body
\[
\rank A \le n, \qquad
\hat{x} = \argmax_{x \in S} f(x)
\]Für einen einmaligen Fall genügt \operatorname{rank} A; einem oft benutzten Operator gibt man in der Präambel einen Namen. Der Stern bestimmt, wohin der Index kommt. Ohne Stern steht er rechts unten wie bei \log, mit Stern direkt darunter wie bei \lim, \sup und \max, sofern man im Displaystil ist. Am obigen Beispiel gemessen: Das x ∈ S von \argmax_{x \in S} sitzt zentriert unter „arg max“, das k von \rank_{k} dagegen rechts unten an „rank“. \DeclareMathOperator ist außerdem nur in der Präambel erlaubt: Im Textkörper folgt ! LaTeX Error: Can be used only in preamble. und danach ein ! Undefined control sequence. für den nie definierten Befehl.
Wenn das \, in der Definition befremdet, sehen Sie nach, wie die AMS ihre eigenen schreibt. amsopn.sty definiert \limsup als lim\,sup, \liminf als lim\,inf und \injlim als inj\,lim. Die beiden Wörter eines Operatornamens mit einem schmalen Zwischenraum zu verbinden, ist AMS-Hausregel, und arg\,max folgt ihr nur. \operatorname hat noch eine zweite, verborgene Aufgabe: Es schreibt die Mathcodes von -, ., :, / und * innerhalb seines Arguments vorübergehend um, damit ein Bindestrich als echter Bindestrich und nicht als Minuszeichen erscheint. Gemessen ergibt \operatorname{ess-sup} das eine Wort „ess-sup“, \mathrm{ess-sup} f dagegen „ess − sup f“, mit je 2,22pt Abstand eines binären Operators um ein Minuszeichen – eine andere Bedeutung und ein anderes Bild.
\text, \mathrm oder \mbox: drei Wege zum Aufrechten
Es gibt drei Wege, aufrechte Buchstaben in eine Formel zu bringen, und sie beantworten verschiedene Fragen. \text{…} (aus amstext) fügt Prosa ein. Sein Inhalt wird in Textschrift mit Textabständen gesetzt, und getippte Leerzeichen überleben – das abschließende Leerzeichen von \text{for all } erscheint tatsächlich in der Ausgabe. \mathrm{…} setzt mathematische Zeichen aufrecht. Darin herrscht weiterhin Mathematikmodus, Leerzeichen verschwinden also; es ist für aufrechte Symbole gedacht, etwa das \mathrm{d}x eines Differentials oder eine Einheit. \mbox{…} ist das allgemeine „steck das in eine Box“ und war nie für Mathematik gedacht.
\[
f(x) = x^2 \quad \text{for all } x \in \mathbb{R},
\qquad v_{\text{max}} = 3,
\qquad \int f(x)\,\mathrm{d}x.
\]Der Vorzug von \text gegenüber \mbox ist, dass es der Größe seiner Umgebung folgt. Die Definition in amstext.sty verwendet \mathchoice und gibt jedem der vier Kontexte – Display, Text, Index, doppelter Index – eine eigene Größe. Das „max“ in v_{\text{max}} oben misst 6,19pt, also Indexgröße; \mbox{max} misst 8,85pt und sitzt in voller Textgröße im Index. Hinzu kommt eine praktische Eigenschaft: \text fällt im Textmodus auf \mbox zurück, was es in Makros sicher macht, die in beiden Modi expandiert werden können.
\intertext und \substack: unterbrechen, ohne die Ausrichtung zu zerstören
Man möchte mitten in einem align eine Zeile Erklärung – und wenn man die Umgebung schließt, den Satz schreibt und sie wieder öffnet, passt die Ausrichtung davor und danach nicht mehr. \intertext{…} löst das. Gemessen: In einem durch \intertext geteilten align liegen beide = an der waagerechten Position 291,11pt, während der eingeschobene Satz als gewöhnlicher Absatz am linken Rand beginnt. Der Mechanismus ist schlicht: In amsmath.sty gibt \intertext innerhalb eines \noalign „Abstand unter der Formel, eine \vbox mit dem Text, Abstand über der Formel“ aus. Der Text verlässt die Ausrichtung also nie, und die Spalten behalten ihre Position. Außerhalb einer Ausrichtungsumgebung erscheint ! Package amsmath Error: Invalid use of \intertext.
\begin{align}
A &= B + C \\
\intertext{expanding $C$ gives}
A &= B + D + E
\end{align}
\[
\sum_{\substack{0 \le i \le m \\ 0 < j < n}} a_{ij}
\]\substack{…} ist ein kleineres Werkzeug mit demselben Instinkt. Es stapelt mehrere Bedingungszeilen unter einem großen Operator wie Summe oder Produkt; Zeilen trennt \\. Im obigen Beispiel werden „0 ≤ i ≤ m“ und „0 < j < n“ zu zwei Zeilen, und die Messung bestätigt, dass beide zentriert unter dem Summenzeichen stehen. Das Innere bleibt Mathematikmodus, Relationen wie \le funktionieren also wie gewohnt. Sollen die Zeilen ausgerichtet statt zentriert sein, nimmt die fast gleiche Umgebung subarray einen Ausrichtungsbuchstaben wie l.
\dfrac, \binom, \boldsymbol: Schreibweisen, die den Kontext ignorieren
\frac gehört zum Standard-LaTeX, doch seine Größe entscheidet der Kontext, in dem es landet. amsmath ergänzt Fassungen, die den Kontext ignorieren: \dfrac{…}{…} ist stets Displaystil (groß), \tfrac{…}{…} stets Textstil (klein). \dfrac nimmt man, wenn ein Bruch im Fließtext lesbar bleiben muss, \tfrac, wenn ein Teil einer abgesetzten Formel schrumpfen soll. Für Kettenbrüche gibt es \cfrac{…}{…}, das jede Ebene lesbar hält, wie tief auch immer verschachtelt wird. Binomialkoeffizienten schreibt man \binom{n}{k}, mit \dbinom und \tbinom als stilfestem Paar.
\[
\binom{n}{k} = \dfrac{n!}{k!\,(n-k)!},
\qquad \boldsymbol{\nabla} \cdot \boldsymbol{E} = \rho / \varepsilon_0.
\]\boldsymbol steht nicht ohne Grund im selben Abschnitt. Physik und Vektoranalysis wollen oft fette Buchstaben, doch \mathbf{E} liefert ein aufrechtes Fett und wirkt auf griechische Buchstaben gar nicht. \boldsymbol{E} aus amsbsy (das amsmath mitbringt) behält die Kursive und fügt Gewicht hinzu, und es greift auch bei Zeichen wie \boldsymbol{\nabla}. Schreibt Ihr Fach Vektoren fett-kursiv, nehmen Sie \boldsymbol; schreibt es Matrizen und Tensoren aufrecht fett, nehmen Sie \mathbf. Entscheiden Sie nach der Konvention des Fachs. Auch \numberwithin{equation}{section}, das Formelnummern an Abschnittsnummern bindet, stammt aus amsmath; die Nummerierung gehört jedoch auf die Seite „Abgesetzte, ausgerichtete und nummerierte Formeln“.
amssymb und AMSFonts: der Begleiter für Symbole
Die Arbeitsteilung ist sauber: amsmath ergänzt Satzmechanik, amssymb ergänzt schreibbare Zeichen. amssymb definiert jedes Zeichen der AMS-Symbolschriften msam und msbm und macht damit Hunderte Glyphen greifbar, die Standard-LaTeX nicht hat – \leqslant und \geqslant (schräge Ungleichungen), \nleq und \subsetneq, \therefore und \because, \square und \blacksquare, \varnothing. Es lädt amsfonts intern, amsfonts muss man also nie selbst nennen.
\usepackage{amssymb}
\[
\mathbb{R} \subset \mathbb{C}, \qquad
\mathfrak{g} = \operatorname{Lie}(G)
\]AMSFonts bringt außerdem zwei Mathematikalphabete: Blackboard Bold über \mathbb{…} und Fraktur über \mathfrak{…}. Hier lauert eine Falle, die stillschweigend zuschlägt. Blackboard Bold gibt es nur in Großbuchstaben – und \mathbb{k} erzeugt keinen Fehler. In amssymb.sty ist die Position "6B der AMSb-Schrift \daleth zugewiesen; kompiliert man es, erscheint kein kleines k, sondern der hebräische Buchstabe Daleth, ℸ. Wer ein Blackboard-Bold-k braucht, nimmt das eigens dafür vorgesehene \Bbbk. Fraktur dagegen hat beide Schreibungen, sodass \mathfrak{g} für eine Lie-Algebra und \mathfrak{p} für ein Primideal beide zur Verfügung stehen.
Die drei Zeilen, die in die Präambel gehören
Für jedes Dokument mit Mathematik gehören diese drei Zeilen zusammen: amsmath (Satzmechanik), amssymb (Symbole samt Blackboard Bold und Fraktur) und amsthm für Sätze und Beweise. Die Reihenfolge ist weitgehend frei, doch amsthm kommt nach amsmath, weil Funktionen wie \qedhere in die Display-Strukturen von amsmath eingreifen.
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\begin{document}
\[
\zeta(s) = \sum_{n=1}^{\infty} \frac{1}{n^{s}}, \qquad s \in \mathbb{C}
\]
\end{document}| Paket | Rolle | Was es bereitstellt |
|---|---|---|
amsmath | mathematische Satzmechanik | Ausrichtungsumgebungen, \text, \operatorname, \dfrac, \binom, \boldsymbol |
amssymb | Symbole und Mathematikalphabete | Hunderte msam- und msbm-Symbole, \mathbb, \mathfrak (lädt amsfonts selbst) |
amsfonts | nur Schriften | \mathbb und \mathfrak, ohne zusätzliche Symbole |
amsthm | Satz- und Beweisumgebungen | \newtheorem, die Umgebung proof, \theoremstyle, \qedhere |
amsmath stellt außerdem die Matrixumgebungen (pmatrix, bmatrix und die übrigen) sowie automatisch skalierende Begrenzer bereit; diese gehören jedoch auf die Seiten „Matrizen und Arrays“ und „Summen, Integrale und große Operatoren“. Zum Schluss noch dies: Weil amsmaths Display-Umgebungen ihren Inhalt als begrenztes Makroargument einlesen, ist eine Leerzeile darin ein Fehler. Die technischen Notizen der AMS führen die dahinterstehenden Mehrpass-Algorithmen auf Michael Spivaks amstex.tex zurück – das AMS-TeX der 1980er lebt heute in Gestalt eines Verbots von Leerzeilen fort.