LaTeX kennt keinen Begriff „Klammer“. Was es kennt, ist eine Tabelle von Delimitern. Ein Zeichen steht dort nur, wenn die Schrift Teile zum vertikalen Wachsen liefert; alles andere hinter \left beantwortet TeX sofort mit ! Missing delimiter (. inserted). Welche Klammern zur Verfügung stehen, entscheidet also die Schrift und nicht der Geschmack. Diese Seite schlägt nach, was auf dieser Tabelle steht: runde, eckige und geschweifte Klammern, die Winkelklammern \langle und \rangle, das | und \lvert des Betrags, Floor und Ceiling mit \lfloor und \lceil – bis hin zu jenen, die man vergeblich sucht: die doppelten eckigen Klammern ⟦ ⟧ und die Eckenzeichen ⌜ ⌝. Die Wahl zwischen \left/\right und der \big-Familie, damit eine Klammer zum Inhalt passt, gehört auf die eigene Mathematikseite.
! Missing delimiter (. inserted). – welche Zeichen Klammern sein dürfen
Die Meldung besagt, dass hinter \left oder \right etwas steht, das kein Delimiter ist. Auf TeX Live 2024 erscheint die Zeile bei $\left\alpha x \right\alpha$ zweimal. Der Grund steht in den Kernel-Deklarationen. Ein Delimiter wird als \DeclareMathDelimiter{Befehl}{Klasse}{kleine Schrift}{Position}{große Schrift}{Position} definiert – er benennt sowohl die Glyphe für normale Größe als auch den Ort der dehnbaren Teile. So sieht die tatsächliche Zeile in fontmath.ltx aus: \DeclareMathDelimiter{\langle}{\mathopen}{symbols}{"68}{largesymbols}{"0A}. Für \alpha existiert keine solche Deklaration, also gibt es schlicht nichts zu dehnen.
Dieser zweiteilige Aufbau erklärt den Rest dieser Seite. Ein Zeichen mit brauchbarer kleiner, aber ohne große Form – < oder \mid – darf nicht auf \left folgen; umgekehrt setzt ein Zeichen, das nur die große Form besitzt, etwa das weiter unten behandelte \lgroup, in gewöhnlicher Mathematik gar nichts. Die erste Spalte jeder Tabelle hier trägt außerdem eine stillere zweite Eigenschaft: die in der Deklaration genannte Klasse. \langle ist \mathopen, \rangle ist \mathclose, | ist \mathord, ein gewöhnliches Zeichen. Dieser Unterschied bestimmt den Abstand ringsum. Auch der Null-Delimiter ., mit dem eine Seite leer bleibt, gehört zu derselben Tabelle; wie \left. verwendet wird, steht auf der verwandten Seite.
% a delimiter names a small glyph AND the growable pieces
% \DeclareMathDelimiter{\langle}{\mathopen}{symbols}{"68}{largesymbols}{"0A}
\[
\langle a, b \rangle
\qquad
\left\langle \frac{a}{b} \right\rangle
\]
% $\left\alpha x\right\alpha$ -> ! Missing delimiter (. inserted).(, [, \{ und \langle – und warum niemals <
Runde Klammern ( ) und eckige Klammern [ ] tippt man direkt; geschweifte nicht. { und } sind in LaTeX reservierte Zeichen zum Gruppieren von Argumenten, unverändert erscheinen sie also gar nicht – man schreibt \{ und \}. Bei Winkelklammern wird es heikler: Die Tastaturzeichen < und > sind Ungleichheitszeichen (\mathrel) und keine Klammern. Für Skalarprodukte und Bra-Ket-Notation nimmt man \langle (⟨) und \rangle (⟩). Die ausgeschriebenen \lbrack, \rbrack, \lbrace und \rbrace sind Aliase mit demselben Ergebnis wie [ ] \{ \}; sie lohnen sich in einem Makroargument, wo ein bloßes [ als optionales Argument missverstanden werden könnte. Mit geladenem mathtools stehen \lparen und \rparen genauso zur Verfügung.
| Eingabe | Glyphe | Klasse | Verwendung / Hinweise |
|---|---|---|---|
( ) | ( ) | open / close | direkt tippen; das gewöhnliche Paar |
[ ] | [ ] | open / close | \lbrack und \rbrack sind Aliase |
\{ \} | { } | open / close | { ist reserviert; \lbrace und \rbrace gleichbedeutend |
\langle \rangle | ⟨ ⟩ | open / close | Skalarprodukte, Bra-Ket; < > sind Relationen, kein Ersatz |
\lparen \rparen | ( ) | open / close | Aliase aus mathtools; Ausgabe identisch zu ( ) |
. | (nichts) | null | Null-Delimiter; lässt eine Seite von \left/\right leer |
Winkelklammern im Fließtext bergen noch eine Falle. Unter OT1, der Voreinstellung von pdfLaTeX, stehen an den Plätzen von < und > die Zeichen ¡ und ¿. Schreibt man auf TeX Live 2024 A <x> B in den Text, lautet die aus dem PDF extrahierte Zeichenkette A ¡x¿ B. Genau das ist der bekannte Fehler, bei dem spanische umgedrehte Satzzeichen aus dem Nichts auftauchen. Es gibt zwei Abhilfen: \usepackage[T1]{fontenc} laden, womit < und > an den erwarteten Platz rücken, oder die Bedeutung ausdrücken – \textless und \textgreater für die Ungleichheitszeichen, \textlangle und \textrangle für echte Winkelklammern 〈 〉. Letztere gehören zu TS1, stecken aber seit 2020 im Kernel; ein zusätzliches Paket entfällt.
|, \vert, \mid, \Vert, \|, \lvert: sechs Wege zu einem Strich
Sie sehen gleich aus, zerfallen aber in drei Gruppen. Zuerst die Glyphe. In fontmath.ltx zeigen |, \vert und das unten behandelte \arrowvert auf dieselbe Position ("6A in cmsy); gemessen sind alle drei 2,77779 pt breit. \|, \Vert und \Arrowvert teilen ebenso Position "6B bei 5,00002 pt. Ob man \| oder \Vert schreibt, ändert also kein einziges Zeichen an der Ausgabe. Dann die Klasse. Alle diese sind \mathord, gewöhnliche Zeichen – weder öffnend noch schließend. \lvert/\rvert und \lVert/\rVert aus amsmath nehmen dieselben Glyphen und geben ihnen eine öffnende und eine schließende Klasse; genau das brauchen Betrag und Norm.
Die dritte Gruppe besteht allein aus \mid. Sie unterscheidet sich nicht in der Glyphe, sondern in der Klasse: deklariert als \mathrel, also als Relation. In der Mengenschreibweise „diejenigen x, für die …“ ist der Strich keine Klammer, sondern eine Relation mit der Bedeutung „so dass“; \mid ist daher die richtige Wahl. Der Unterschied lässt sich messen: Auf TeX Live 2024 ist $\{x \mid x>0\}$ 48,09702 pt breit, $\{x | x>0\}$ und $\{x \vert x>0\}$ dagegen jeweils 42,5416 pt. Die Differenz von 5,55542 pt sind genau die 5 mu Relationsabstand auf jeder Seite. Wirkt eine mit bloßem | gesetzte Menge seltsam gedrängt, fehlt genau dieser Abstand.
| Eingabe | Glyphe | Klasse | Verwendung / Hinweise |
|---|---|---|---|
| \vert | | | ord | dasselbe Zeichen; 2,77779 pt; weder öffnend noch schließend |
\| \Vert | ‖ | ord | dasselbe Zeichen; 5,00002 pt; der Doppelstrich der Norm |
\mid | | | rel | „so dass“; das Richtige für die Mengenschreibweise |
\lvert \rvert | | | | open / close | Betrag; benötigt amsmath |
\lVert \rVert | ‖ ‖ | open / close | Normen; benötigt amsmath |
\arrowvert \Arrowvert | | ‖ | ord | in Normalgröße identisch mit \vert/\Vert; nur die Dehnteile unterscheiden sich |
\usepackage{amsmath} % \lvert \rvert \lVert \rVert
\[
\lvert x \rvert \;=\; \lvert -x \rvert,
\qquad
\lVert v \rVert \;=\; \sqrt{\langle v, v \rangle},
\qquad
\{\, x \mid x > 0 \,\}
\]Floor und Ceiling: \lfloor, \lceil und was l und r bedeuten
Abrunden, ⌊x⌋, schreibt man \lfloor und \rfloor; Aufrunden, ⌈x⌉, \lceil und \rceil. Alle vier gehören zum Standard-LaTeX. Das führende l und r stehen für left (öffnend) und right (schließend), eine Regel, die ebenso für \lbrack/\rbrack, \langle/\rangle und \lvert/\rvert gilt. Merkt man sich, dass nur unten Ecken beim Floor und nur oben Ecken beim Ceiling sitzen, verwechselt man auch die Glyphen nicht. Eingeführt wurden beide Zeichen von Kenneth E. Iverson in seinem Buch A Programming Language von 1962. Zuvor trug [x] die Bedeutung des Abrundens, ein passendes Zeichen fürs Aufrunden fehlte jedoch – und [x] sah aus wie eine gewöhnliche Klammer. Die Form in eine obere und eine untere Hälfte zu zerlegen, war die eigentliche Erfindung.
\[
\lfloor x \rfloor \le x \le \lceil x \rceil,
\qquad
\left\lfloor \frac{n}{2} \right\rfloor
\qquad
\left\lceil \log_2 n \right\rceil
\]Auch Pfeile und Schrägstriche sind Delimiter: \uparrow, /, \backslash
Auf der Delimiter-Tabelle stehen nicht nur Klammern. Die sechs senkrechten Pfeile – \uparrow (↑), \downarrow (↓), \updownarrow (↕) sowie die doppelt gestrichenen \Uparrow (⇑), \Downarrow (⇓), \Updownarrow (⇕) – sind in fontmath.ltx mit \DeclareMathDelimiter deklariert und wachsen nach \left/\right auf die Höhe des Inhalts. Ihre Klasse ist allerdings \mathrel: gewöhnlich in einer Formel verwendet, verhalten sie sich als Pfeile. Ein und derselbe Befehl ist Pfeil oder Klammer, je nachdem, wo er steht. Man findet sie neben einer Matrix zur Kennzeichnung eines Bereichs oder anstelle eines Strichs, der einen Grenzwert markiert.
Die Schrägstriche gehören zur selben Tabelle. Den normalen Schrägstrich / tippt man direkt; der Rückschrägstrich heißt \backslash (\), denn ein bloßes \ ist der Zeilenumbruchbefehl. Verwendet werden sie für Quotientenmengen, G \backslash H, oder in einem Paar \left. … \right/, das einen diagonal wachsenden Trenner ergibt. Der Operator für die Mengendifferenz, \setminus, sieht ähnlich aus, ist aber ein anderer Befehl mit anderer Klasse, \mathbin – dazu die Seite zu Mengen- und Logiksymbolen.
| Eingabe | Glyphe | Klasse | Verwendung / Hinweise |
|---|---|---|---|
\uparrow \downarrow | ↑ ↓ | rel | einfacher Schaft; beidseitig \updownarrow |
\Uparrow \Downarrow | ⇑ ⇓ | rel | doppelter Schaft; beidseitig \Updownarrow |
/ | / | ord | direkt tippen; wächst als diagonaler Trenner |
\backslash | \ | ord | Quotientenmengen; ein bloßes \ ist der Zeilenumbruch |
$\lgroup$ setzt nichts: Delimiter, die es nur in großen Größen gibt
Fünf Befehle – \lgroup, \rgroup, \lmoustache, \rmoustache und \bracevert – besitzen überhaupt keine Glyphe in Normalgröße. In der eingangs gezeigten Deklaration verweist ihr „kleiner“ Platz nicht auf ein Zeichen einer gewöhnlichen Schrift, sondern auf ein Bauteil für ein großes Symbol. Auf TeX Live 2024 nachgeprüft, ist das Symptom drastisch: $\lgroup x \rgroup$ nimmt 23,49307 pt ein (gegenüber 13,49307 pt für $( x )$), doch pdftotext fördert ein einziges Zeichen zutage: x. Die beiden Klammern landen im privaten Bereich von Unicode (U+F8F3 und U+F8FE) und sehen auch auf der Seite nicht wie Klammern aus. Bei $\lmoustache x \rmoustache$ wird es noch krasser: Die Extraktion ergibt zx{, weil die Platznummern der Bauteile unmittelbar als z und { gelesen werden.
Die Folgerung ist einfach: Diese fünf immer im Paar \left/\right oder mit \bigl/\Bigl … verwenden. \lgroup und \rgroup sind kräftigere runde Klammern mit schärferen Ecken und wirken in einer großen abgesetzten Formel gut. \lmoustache und \rmoustache sind die obere und die untere Hälfte einer großen geschweiften Klammer, etwa um die Zeilen einer Fallunterscheidung zu trennen. \bracevert, \arrowvert und \Arrowvert sind buchstäblich die geraden Bauteile, mit denen Klammern und Pfeile senkrecht verlängert werden. Aus demselben Grund schreibt man auch diese drei besser nicht im Fließtext.
% these have no text-size glyph — always pair them with \left/\right or \big
\[
\left\lgroup \frac{a}{b} \right\rgroup
\qquad
\left\lmoustache \frac{a}{b} \right\rmoustache
\]
% $\lgroup x \rgroup$ alone prints no brackets at all⟦ ⟧ und ⌜ ⌝: In welchem Paket die fehlenden Klammern stecken
Die doppelten eckigen Klammern der denotationellen Semantik, ⟦M⟧, sind \llbracket und \rrbracket aus stmaryrd; die Eckenzeichen ⌜ ⌝ der Beweistheorie und der Quine-Anführung sind \ulcorner und \urcorner aus amssymb (das untere Paar heißt \llcorner und \lrcorner). Keines gehört zum Standard-LaTeX; ohne das Paket geschrieben, ergeben sie ! Undefined control sequence. Unter XeLaTeX oder LuaLaTeX mit unicode-math heißen die Doppelklammern stattdessen \lBrack und \rBrack (U+27E6 und U+27E7).
Eine Falle hier bleibt verborgen, solange man nicht ins Paket schaut: Selbst innerhalb eines Pakets sind manche Zeichen als Delimiter deklariert und andere nicht. In stmaryrd.sty sind \llbracket und \rrbracket \DeclareMathDelimiter, \llparenthesis / \rrparenthesis (⦇ ⦈) sowie \Lbag / \Rbag (⟅ ⟆) dagegen \DeclareMathSymbol – also Zeichen fester Größe. Auf TeX Live 2024 liefert $\left\llparenthesis \frac{a}{b} \right\rrparenthesis$ erwartungsgemäß ! Missing delimiter (. inserted). Wer sich merkt, dass \llbracket sich dehnt und \llparenthesis nicht, erspart sich später eine Überraschung.
| Befehl | Glyphe | Paket | Dehnbar? / Hinweise |
|---|---|---|---|
\llbracket \rrbracket | ⟦ ⟧ | stmaryrd | dehnbar; das ⟦M⟧ der denotationellen Semantik |
\ulcorner \urcorner | ⌜ ⌝ | amssymb | feste Größe; Quine-Anführung, Gödelisierung |
\llcorner \lrcorner | ⌞ ⌟ | amssymb | feste Größe; die unteren Eckenzeichen |
\llparenthesis \rrparenthesis | ⦇ ⦈ | stmaryrd | nicht dehnbar; nach \left ein Fehler |
\Lbag \Rbag | ⟅ ⟆ | stmaryrd | nicht dehnbar; Klammern für Multimengen |
\lBrack \rBrack | ⟦ ⟧ | unicode-math | der Name der Doppelklammern unter XeLaTeX/LuaLaTeX |
Zum Schluss noch ein Wort dazu, was im PDF übrig bleibt. Extrahiert man Text aus einem PDF mit \langle, erhält man U+27E8, MATHEMATICAL LEFT ANGLE BRACKET – kopiert fügt es sich als Winkelklammer ein. Die ⟦ ⟧ aus stmaryrd legen dagegen die rohen Positionsnummern ihrer eigenen Schrift offen: Auf TeX Live 2024 extrahiert pdftotext sie als J und K. Dieser Unterschied zählt, wenn Gutachterinnen und Gutachter Formeln aus dem PDF kopieren, um sie zu diskutieren; eine Arbeit mit vielen doppelten eckigen Klammern lohnt daher eine Unicode-Engine mit unicode-math.
\usepackage{amssymb} % \ulcorner \urcorner \llcorner \lrcorner
\usepackage{stmaryrd} % \llbracket \rrbracket \Lbag \Rbag
% ...
\[
\llbracket M \rrbracket_\rho
\qquad
\left\llbracket \frac{a}{b} \right\rrbracket
\qquad
\ulcorner \varphi \urcorner
\]