Relationssymbole

Das meistgebrauchte Relationszeichen der Mathematik hat einen Urheber, und dieser hat seine Begründung aufgeschrieben. Robert Recorde brachte = 1557 in The Whetstone of Witte zum ersten Mal in Druck und wählte zwei parallele Linien, weil nichts gleicher sein könne als ein solches Paar. In LaTeX steht dieses Zeichen einer ganzen Familie vor: =, \neq, \leq, \approx und \equiv sind Relationen, und entscheidend ist weniger ihre Form als ihre Klasse. TeX fasst sie zu einer einzigen Klasse zusammen und gibt jedem Mitglied denselben, absichtlich großzügigen Abstand — größer als bei einem binären Operator. Diese Seite geht die Familie durch: Gleichheit und ihre Beinahe-Formen, die Ordnungszeichen, die Negation und die Beförderung eines eigenen Symbols zur Relation. Der rote Faden dabei: Die Bedeutung regelt die Konvention, den Abstand dagegen erklärt der Quelltext — und diese Erklärung lässt sich selbst schreiben.

Warum = mehr Platz bekommt als +

Weil TeX den Abstand nach der Klasse wählt und nicht nach der Form. Jedes Zeichen einer Formel gehört zu einer von wenigen Klassen — gewöhnliches Zeichen, binärer Operator, Relation, öffnend, schließend, Interpunktion, inner — und der Abstand zwischen zwei Nachbarn wird aus einer Tabelle der Klassenpaare abgelesen. Ein binärer Operator wie + erhält \medmuskip, in plain TeX auf 4mu plus 2mu minus 4mu gesetzt; eine Relation wie = erhält \thickmuskip, gesetzt auf 5mu plus 5mu. Das Gleichheitszeichen beginnt also breiter und behält, anders als das Plus, Spielraum zum Dehnen, wenn eine Zeile gefüllt werden muss. Nichts davon wird eingetippt: a+b=c ganz ohne Leerzeichen ergibt trotzdem den richtigen Satz.

Der sauberste Beleg dafür, dass die Klasse und nicht die Form die Arbeit macht, ist ein Paar von Befehlen, die dasselbe Zeichen zeichnen. In fontmath.ltx, wo LaTeX seine Mathematikzeichen deklariert, steht | als \DeclareMathDelimiter{|}{\mathord}…{symbols}{"6A} und \mid als \DeclareMathSymbol{\mid}{\mathrel}{symbols}{"6A} — beide Male Platz "6A derselben Schrift, einmal als gewöhnliches Zeichen, einmal als Relation deklariert. Setzt man a | b neben a \mid b, ist es derselbe Strich mit unterschiedlich viel Luft. Dasselbe Paar bilden \| und \parallel, beide auf Platz "6B: \parallel (∥) ist eine Relation und kann „ist parallel zu“ behaupten, \| dagegen ist ein gewöhnlicher Begrenzer für Normen wie \|x\|. Der Griff zum falschen Partner eines solchen Paares ist die häufigste Ursache für Abstände, die unerklärlich schief wirken.

latex
% same glyph, different class: | is ordinary, \mid is a relation
\[ a | b \qquad a \mid b \]
% a bare letter is ordinary; \mathrel promotes it
\[ A R B \qquad A \mathrel{R} B \]
% the colon trap: ":" is a relation, \colon is punctuation
\[ f : A \to B \qquad f\colon A \to B \]

Praktisch heißt das: die Klasse selbst deklarieren. \mathrel{...} macht seinen Inhalt zu einer Relation, \mathbin{...} zu einem binären Operator; beides ist Standard-LaTeX. Ein nackter Buchstabe ist ein gewöhnliches Zeichen, deshalb klebt in A R B das R an seinen Nachbarn, während A \mathrel{R} B ihm den Abstand von = verschafft. Die Falle in der Gegenrichtung ist der Doppelpunkt. LaTeX deklariert das Zeichen : als Relation, sodass f : A \to B den vollen Relationsabstand um einen Doppelpunkt legt, der eigentlich Interpunktion ist; genau dafür gibt es \colon als \mathpunct, und deshalb gilt f\colon A \to B als die empfohlene Form. Auch Pfeile gehören zur Relationsklasse — darum besteht \to auf dem Mathematikmodus —, sie haben aber eine eigene Seite.

\approx, \sim, \simeq und \cong unterscheiden

Eine brauchbare Regel: \approx (≈) für Zahlen, die nahezu gleich sind, \sim (∼) für eine Äquivalenzrelation oder „gleiche Größenordnung“, \simeq (≃) für asymptotische Gleichheit und Homöomorphie, \cong (≅) für Kongruenz in der Geometrie und Isomorphie in der Algebra. Alle vier gehören zum Standard-LaTeX, keines braucht ein Paket. Dass sie einander ähneln, hat System: Jedes ist das Gleichheitszeichen mit unterschiedlich stark gelockerter Strenge — und genau darum richten sich Lesende nach dem Befehlsnamen statt nach dem Bild. Daneben stehen \equiv (≡) für Identität und für die Kongruenz modulo n, \propto (∝) für Proportionalität, \asymp (≍) für „von gleicher Größenordnung“ und \doteq (≐), dessen Unicode-Name „approaches the limit“ lautet, das viele Autoren aber als „ist definiert als“ lesen. Da \doteq und \asymp je nach Fach verschieden gelesen werden, empfiehlt sich beim ersten Auftreten ein klärendes Wort.

BefehlGlypheBedeutung/Verwendung
==Gleichheit; direkt eingeben — Relationsklasse
\nequngleich; \ne ist dasselbe — Standard-LaTeX
\equividentisch gleich; Kongruenz a \equiv b \pmod n
\approxungefähr gleich; numerisch \pi \approx 3.14
\simÄquivalenzrelation oder „gleiche Größenordnung“
\simeqasymptotisch gleich; homöomorph
\congkongruent; isomorph — \sim über = gestapelt
\proptoist proportional zu
\asympvon gleicher Größenordnung (Analysis, Zahlentheorie)
\doteqPunkt über =; „nähert sich dem Grenzwert“ oder „definiert als“

Drei der eben aufgezählten Zeichen gibt es in keiner Schrift. Ein Blick in fontmath.ltx zeigt: \cong ist \mathrel{\mathpalette\@vereq\sim}, also ein \sim über einem =, \doteq ist \buildrel\textstyle.\over=, ein Punkt über dem Gleichheitszeichen, und \notin ist ein \in mit übergedrucktem Schrägstrich. Knuths Computer Modern enthielt diese Glyphen schlicht nicht, also baut LaTeX sie beim Satz zusammen. Die Anekdote hat einen praktischen Kern: Zusammengesetzte Zeichen verrutschen leicht, wenn die Mathematikschrift wechselt, und sie sind im PDF keine echten Zeichen, überstehen also kein Kopieren und Einfügen. Wo das zählt — Barrierefreiheit oder Text, den Lesende herauskopieren sollen —, macht die Kombination LuaLaTeX oder XeLaTeX mit unicode-math und einer OpenType-Mathematikschrift aus \cong das echte Zeichen U+2245 und aus \doteq das Zeichen U+2250.

\leq oder \leqslant: welche Form von ≤

Sie bedeuten genau dasselbe; der Unterschied ist Hausstil, und \leqslant kostet ein Paket. \leq (≤) und \geq (≥) sind Standard-LaTeX, die Kurzformen \le und \ge verweisen auf genau dasselbe Zeichen. \leqslant (⩽) und \geqslant (⩾) stammen aus amssymb und zeichnen den unteren Strich schräg, parallel zum Winkel darüber. Unicode behandelt die beiden Formen als getrennte Codepunkte — U+2264 „less-than or equal to“ und U+2A7D „less-than or slanted equal to“ — und nicht als ein Zeichen in zwei Schriften; die Vorliebe ist also eine echte Konvention und keine Laune. Deshalb: einmal fürs ganze Dokument entscheiden. Auf derselben Seite gemischt, wirken ≤ und ⩽ schlicht wie ein Tippfehler.

Für „viel kleiner als“ und „viel größer als“ gibt es \ll (≪) und \gg (≫), ebenfalls Standard-LaTeX. Beide sind je ein einzelnes Zeichen und nicht zwei <, also nicht von Hand zusammenbauen. < und > werden direkt getippt — aber nur im Mathematikmodus. Steht A<B>C im laufenden Text bei der voreingestellten Kodierung OT1, kommt A¡B¿C heraus, denn OT1 hält an diesen beiden Plätzen ein umgekehrtes Ausrufe- und Fragezeichen bereit. Ist die gemeinte Ordnung keine Größenordnung — eine Halbordnung, eine Priorität, eine Verfeinerung —, ist die prec/succ-Familie die übliche Wahl: \prec (≺), \succ (≻) sowie die Formen mit Gleichheit \preceq (⪯), \succeq (⪰), allesamt Standard. Und wer sich für schräge Ungleichheitszeichen entschieden hat, muss nicht überall umschreiben: Ein \let\leq\leqslant in der Präambel stellt das ganze Dokument um und hält den Quelltext lesbar.

BefehlGlypheBedeutung/Verwendung
<<kleiner als; im Mathematikmodus direkt eingeben
>>größer als; im Textmodus erscheint ¿
\leqkleiner oder gleich; \le ist dasselbe — Standard-LaTeX
\geqgrößer oder gleich; \ge ist dasselbe — Standard-LaTeX
\llviel kleiner als; ein einzelnes Zeichen
\ggviel größer als; ein einzelnes Zeichen
\leqslantschräge Variante von ≤ — braucht amssymb
\geqslantschräge Variante von ≥ — braucht amssymb
\precgeht voran; für eine Ordnung, die keine Größe ist
\preceqgeht voran oder gleich; \succ ≻ und \succeq ⪰ spiegeln es
latex
\usepackage{amssymb}   % \leqslant, \geqslant, \nleq, \nmid ...
% decide the shape once, in the preamble
\let\leq\leqslant
\let\geq\geqslant
\[ 0 \leq x \leq 1, \qquad n \ll N, \qquad a \prec b \preceq c \]

Relationen verneinen: \neq, \not und amssymb

Wo es einen eigenen Befehl gibt, sollte er verwendet werden — \neq, \notin und die amssymb-Familie \nleq, \nmid, \nsubseteq —, und nur sonst greift man zu \not. Überraschend ist dabei: Im Standard-LaTeX ist \neq gar keine eigene Glyphe. In fontmath.ltx steht die Zeile \DeclareRobustCommand\neq{\not=}, und \ne ist genauso definiert; \not= und \neq liefern also byte-identische Ausgabe. Der geläufige Rat, \neq gegenüber \not= vorzuziehen, betrifft demnach den Quelltext und nicht das PDF: \neq benennt die Absicht, lässt sich suchen und ist das, was Mitautoren erwarten. Außerdem überträgt es sich besser auf unicode-math, wo \ne zum echten Zeichen U+2260 wird statt zu einer Überlagerung.

Wirklich versagt \not bei Zeichen, für die es nie eingerichtet wurde. Es ist ein einzelnes Zeichen — Platz "36 der Symbolschrift —, das dem Folgenden in fester Größe, Neigung und Lage übergelegt wird, abgestimmt auf Zeichen von etwa der Breite eines =. Über einer breiten Relation reicht der Strich nicht hin; über einer hohen oder ungewöhnlichen schneidet er an der falschen Stelle. Man vergleiche \not\leq mit \nleq (≰) oder \not\subseteq mit \nsubseteq (⊈): Die eigens gezeichneten AMS-Glyphen gewinnen jedes Mal. Für Kombinationen, die niemand gezeichnet hat, bleibt \not allerdings nützlich: Ein \nequiv gibt es nicht, also ist x \not\equiv y \pmod p die übliche Schreibweise für eine Nicht-Kongruenz. Und \notin (∉) sieht zwar nach AMS aus, kommt aber ganz ohne Paket aus.

BefehlGlypheBedeutung / benötigtes Paket
\nequngleich; Standard-LaTeX (expandiert zu \not=)
\notinkein Element; Standard-LaTeX (\in mit übergedrucktem Strich)
\nleqnicht kleiner oder gleich; amssymb
\ngeqnicht größer oder gleich; amssymb
\nsimnicht ähnlich; amssymb
\ncongnicht kongruent / nicht isomorph; amssymb
\nsubseteqkeine Teilmenge; amssymb
\nparallelnicht parallel; amssymb
\nmidteilt nicht; amssymb
\nprecgeht nicht voran; amssymb

:= sauber setzen und eigene Relationen definieren

Für „ist definiert als“ empfiehlt sich mathtools und darin \coloneqq (≔) statt eines getippten :=. Das Problem der getippten Form ist nicht der Abstand: LaTeX deklariert : als Relation, und zwischen zwei benachbarte Relationen setzt TeX nichts, := erscheint also korrekt eng. Das Problem ist die Höhe. Das Zeichen : stammt aus der Textschrift, wo seine Punkte tief sitzen, während = die mathematische Achse umspannt — der Doppelpunkt wirkt dadurch abgerutscht. mathtools liefert \coloneqq mit angehobenem Doppelpunkt, das gespiegelte \eqqcolon für =: und die Option centercolon, die jeden Doppelpunkt im Dokument anhebt. \coloneqq stammt aus mathtools, nicht aus amssymb — nennt ! Undefined control sequence den Befehl \coloneqq, liegt meist genau diese Verwechslung vor.

Um etwas über eine Relation zu setzen, ist \stackrel{\mathrm{def}}{=} der Klassiker. latex.ltx definiert es als \mathrel{\mathop{#2}\limits^{#1}}; was auch immer gestapelt wird, das Ergebnis ist eine Relation. \overset aus amsmath leistet dasselbe, behält aber die Klasse des Grundzeichens, statt eine Relation zu erzwingen — genau das ist erwünscht, wenn das Grundzeichen ein binärer Operator ist; für die Unterseite gibt es \underset. Und für jedes Zeichen, das mehr als zweimal vorkommt, gilt: einmal definieren und die Klasse mitreisen lassen. \newcommand{\divides}{\mathrel{|}} liefert ein Teilbarkeitszeichen, das immer richtig steht, und wenn später die Glyphe wechselt, ziehen alle Vorkommen mit. Das ist diese ganze Seite in einem Satz: Abstände nie an der Verwendungsstelle mit \, oder \; flicken, sondern die Klasse deklarieren und TeX rechnen lassen.

latex
\usepackage{mathtools}  % \coloneqq and \eqqcolon (loads amsmath too)
\newcommand{\divides}{\mathrel{|}}
\[ f(x) \coloneqq x^2 + 1, \qquad y \eqqcolon g(t) \]
% \stackrel always yields a relation; \overset keeps the base class
\[ a \stackrel{\mathrm{def}}{=} b, \qquad a \overset{\mathrm{def}}{=} b \]
\[ 2 \divides 10, \qquad x \not\equiv y \pmod{p} \]