Kalligrafische und Schreibschriften

Kreide lässt sich nicht fett schreiben. Deshalb gingen Mathematiker in den Hörsälen der Mitte des 20. Jahrhunderts dazu über, bestimmte Striche ein zweites Mal zu ziehen; die verdoppelte Linie vertrat den Fettdruck. Aus dieser Tafelgewohnheit wurde später eine Drucktype: die Tafelfettschrift, aus der die gedruckten ℝ, ℕ und ℤ hervorgingen. LaTeX bietet vier Zieralphabete: die kalligrafische Schrift \mathcal, die Skriptschrift \mathscr, die Fraktur \mathfrak und die Tafelfettschrift \mathbb. Unangenehm ist dabei, dass ausgerechnet das meistgefragte \mathbb nicht eingebaut ist, während das eingebaute \mathcal einen Kleinbuchstaben klaglos annimmt und stillschweigend ein völlig anderes Zeichen setzt. Diese Seite hilft, die vier auseinanderzuhalten und ohne Unfall einzusetzen.

\mathcal, \mathscr, \mathfrak und \mathbb im Vergleich

Die vier unterscheiden sich nur darin, welche Schrift sie aufrufen und wie viel vom Alphabet diese Schrift überhaupt enthält. Und hier liegt der Angelpunkt der ganzen Seite: \mathcal{A} ist kein Befehl, der A in einen kalligrafischen Buchstaben verwandelt. Geändert wird allein die Mathe-Schriftfamilie, die über dem Argument gilt; die Position des Zeichens (der Slot) bleibt unangetastet. Das A bleibt die Anweisung „Slot 65 der aktuellen Schrift“ und wird nun einer anderen Schrift vorgelegt – was dort steht, wird gesetzt. Fast jeder Unfall mit diesen vier Alphabeten geht auf diese eine Tatsache zurück.

BefehlAussehenBenötigtes PaketEnthaltene Zeichen
\mathcalfließende kalligrafische Versalienkeines – eingebautnur Großbuchstaben A–Z
\mathscrstark geneigte formale Schreibschriftmathrsfs (oder eucal)nur Großbuchstaben A–Z
\mathfrakkantige gebrochene Schriftamssymb oder amsfontsGroß-, Kleinbuchstaben, Ziffern
\mathbbFettschrift mit verdoppelten Strichenamssymb oder amsfontsnur A–Z (plus \Bbbk)

Zwei Schieflagen springen aus der Tabelle heraus: Nur \mathcal ist eingebaut, und nur \mathfrak führt Kleinbuchstaben. Zusammen erklären diese beiden Punkte die meisten der folgenden Fallen. Beginnen wir mit der meistgesuchten Frage: Wie schreibt man eigentlich ℝ?

ℝ, ℕ und ℤ setzen – warum \mathbb das Paket amssymb braucht

\usepackage{amssymb} in die Präambel, $\mathbb{R}$ in den Text – mehr ist es nicht. amsfonts liefert dasselbe \mathbb (amssymb lädt amsfonts intern). Fehlt das Paket, bricht der Lauf mit ! Undefined control sequence. ab. Reines LaTeX kennt überhaupt keine Tafelfettschrift; das ist also kein Konfigurationsfehler, sondern Absicht.

document.tex
\usepackage{amssymb}   % gives \mathbb, \mathfrak and \Bbbk
% ...
\[
  \mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q}
    \subset \mathbb{R} \subset \mathbb{C}
\]

Warum ist es nicht eingebaut? Aus Knuths Geschmack. Die Tafelfettschrift entstand wohl Ende der 1950er Jahre in Frankreich und setzte sich Anfang der 1960er Jahre am Mathematischen Institut in Princeton durch; in den Druck gelangte sie Mitte der 1960er, etwa mit Gunning und Rossis Analytic Functions of Several Complex Variables (1965). Knuth zog jedoch echten Fettdruck vor und ließ die Tafelfettschrift in seiner für TeX geschaffenen Computer Modern bewusst weg. Die Lücke füllte 1985 die AMS mit einer kreidehaften Tafelfettschrift für AMS-TeX, damals über den Befehl \Bbb erreichbar – ein Name, der bis heute in amsfonts.sty als veralteter, auf \mathbb umgeleiteter Alias überlebt. Als Fußnote zur Geschmacksfrage: Jean-Pierre Serre benutzte in Vorlesungen die Tafelfettschrift, in seinen Veröffentlichungen dagegen durchweg gewöhnlichen Fettdruck.

  • \mathbb{R} — die reellen Zahlen ℝ.
  • \mathbb{C} — die komplexen Zahlen ℂ.
  • \mathbb{Z} — die ganzen Zahlen ℤ, nach dem deutschen Wort Zahlen; die Wahl wird Hilbert zugeschrieben, der früheste bekannte Lehrbuchbeleg steht in Bourbakis Algèbre (1947).
  • \mathbb{Q} — die rationalen Zahlen ℚ.
  • \mathbb{N} — die natürlichen Zahlen ℕ.
  • \mathbb{F}_q — der endliche Körper mit q Elementen; der Index bleibt in gewöhnlicher Kursive.

\mathbb{k} ergibt ℸ – für Kleinbuchstaben \Bbbk

Geben Sie \mathbb niemals einen Kleinbuchstaben. Wer ein tafelfettes k möchte und \mathbb{k} schreibt, erhält ohne Warnung und ohne Fehlermeldung den hebräischen Buchstaben Daleth ℸ. Das folgt genau aus dem obigen Prinzip: k bleibt die Anweisung „Slot 107“, diese wird der Schrift msbm vorgelegt, und dort sitzt in Slot 107 eben \daleth. Aus demselben Grund liefert \mathbb{a} das gedrehte G ⅁ (\Game) und \mathbb{1} das Zeichen ⊮ (\nVdash). All das übersetzt fehlerfrei – auffallen kann es erst beim Blick ins PDF.

document.tex
% lowercase blackboard bold is its own command, not \mathbb{k}
\[
  \Bbbk = \overline{\Bbbk}, \qquad V \otimes_{\Bbbk} W
\]

Richtig ist \Bbbk. amssymb stellt das tafelfette kleine k als eigenständiges Zeichen bereit – genau das, was algebraische Texte brauchen, die einen Körper k nennen. Zu beachten: Es nimmt kein Argument, also \Bbbk und nicht \mathbb{k}. Für andere Kleinbuchstaben oder Ziffern – eine tafelfette 1 oder 2, ein kleines h – braucht es ein anderes Schriftpaket. dsfont liefert über \mathds Großbuchstaben sowie h, k und die Ziffer 1; bbm bietet über \mathbbm Kleinbuchstaben und Ziffern; bbold definiert \mathbb selbst neu und deckt einen deutlich größeren Bereich ab. Letzteres gerät mit amssymb in Konflikt: Wenn beide im selben Dokument stehen, legen Sie zuerst fest, welches Paket \mathbb besitzt.

\mathcal kennt nur Großbuchstaben – \mathcal{a} ergibt ⊣

Beschränken Sie das Argument von \mathcal auf die Großbuchstaben A–Z. \mathcal{a} liefert kein missratenes kalligrafisches a, sondern ein völlig unbeteiligtes ⊣ (\dashv) – und nicht einmal eine Warnung. \mathcal ist als \DeclareSymbolFontAlphabet{\mathcal}{symbols} definiert, also als Umschalten auf die Mathe-Symbolschrift cmsy10. Diese führt die kalligrafischen Versalien in den Slots 65 bis 90, während an den Positionen der Kleinbuchstaben und Ziffern ganz andere Zeichen stehen. Und weil jeder Slot dieser Schrift belegt ist, kommt TeX gar nicht dazu, „dieses Zeichen gibt es nicht“ zu melden; es setzt stillschweigend den Nachbarn.

EingabeWas erscheintZeichen in diesem Slot
\mathcal{a}\dashv
\mathcal{b}\lfloor
\mathcal{g}}\rbrace
\mathcal{o}\wr
\mathcal{1}\infty
\mathcal{2}\in

Aus demselben Grund ergibt \mathcal{Hom} nicht das Wort „Hom“ – und auch keine drei kalligrafischen Buchstaben: Nur das H wird kalligrafisch, o und m erscheinen als ≀ und ⇕. Merken Sie sich: Das Argument eines Zieralphabets gilt als Folge von Symbolen, nicht als Wort. Die Faustregel ist einfach: an \mathcal immer nur einen einzelnen Großbuchstaben übergeben. \mathcal{A} für eine Mengenfamilie, \mathcal{F} für die Fourier-Transformation, \mathcal{B} für eine σ-Algebra, \mathcal{O} für einen Ganzheitsring – dafür ist es gedacht.

Unterschied zwischen \mathcal und \mathscrmathrsfs laden

\mathcal ist das kalligrafische Alphabet der eingebauten cmsy10, \mathscr die Schreibschrift von rsfs10, die mit \usepackage{mathrsfs} hinzukommt. Nebeneinander sind es offensichtlich zwei verschiedene Hände: \mathcal ist breit und nur zurückhaltend verziert, \mathscr neigt sich weit nach rechts und zeigt einen kräftigen Strichstärkenkontrast – eine echte formale Schreibschrift, üblich für das \mathscr{L} der Laplace-Transformation oder einer Lagrange-Dichte. Wer in einer Arbeit zwei unterscheidbare Zieralphabete braucht, fährt mit dieser Paarung am unkompliziertesten.

document.tex
\usepackage{mathrsfs}   % adds \mathscr (RSFS); \mathcal is left alone
% ...
\[
  \mathcal{F} \subset \mathcal{P}(X), \qquad
  \mathscr{L}\{f\}(s) = F(s)
\]

RSFS steht für Ralph Smith’s Formal Script. Ralph Smith, Physiker an der University of California, San Diego, zeichnete sie in Metafont und veröffentlichte Version 1.0 im Oktober 1991. In der mitgelieferten README schreibt er, er habe eine von R. Hunter Middleton entworfene formale Schreibschrift eng nachgebildet, die ihrerseits auf die im 18. Jahrhundert verbreiteten Spencerian- und Copperplate-Handschriften zurückgeht. Dieselbe README nennt die Hoffnung, eines Tages Kleinbuchstaben zu ergänzen und daraus eine Textschrift zu machen – zu dieser Überarbeitung kam es nie. Deshalb steht bis heute nach \mathscr{a} im Protokoll: Missing character: There is no a in font rsfs10!

Diese Zeile ist in Wahrheit eine gute Nachricht. Wo \mathcal stillschweigend ein anderes Zeichen unterschiebt, meldet \mathscr das fehlende Zeichen ehrlich: rsfs10 enthält nur Versalien, also kann TeX das auch sagen. Hinter \mathscr steht überdies eine zweite Familie, die vom Paket eucal aufgerufene Euler Script. Euler zeichnete Hermann Zapf 1980–81 im Auftrag der AMS; die Schrift versucht die Handschrift eines Mathematikers an der Tafel nachzubilden – aufrecht statt geneigt. Ihr Ausdruck unterscheidet sich völlig von der stark geneigten klassischen Hand des RSFS.

LadeweiseWas Sie erhaltenErzeugte Schrift
\usepackage{mathrsfs}\mathscr (\mathcal bleibt)RSFS
\usepackage[scr]{rsfso}\mathscrRSFS mit sanfterer Neigung
\usepackage[mathscr]{eucal}\mathscr (\mathcal bleibt)Euler Script
\usepackage{eucal}\mathcal wird ersetztEuler Script
\usepackage{calrsfs}\mathcal wird ersetztRSFS

Die Fallen stecken in der unteren Hälfte der Tabelle. calrsfs und ein optionsloses eucal überschreiben \mathcal selbst. Ein guter Teil der Fragen „mein \mathcal sieht plötzlich anders aus“ oder „die Buchstaben weichen von der Fassung meines Mitautors ab“ lässt sich darauf zurückführen, dass jemand eines dieser Pakete ergänzt hat. Lädt man zudem mathrsfs und eucal mit der Option mathscr gemeinsam, gewinnt das zuletzt geladene \mathscr, und man bekommt eine Schrift, die man nicht gewählt hat. Legen Sie sich auf eine Schreibschriftfamilie fest. Etwas anderes hilft nicht zuverlässig.

Warum \mathfrak das Alphabet der Ideale und Lie-Algebren ist

Auch \mathfrak kommt mit amssymb (oder amsfonts), ist aber als einziges der vier mit Groß-, Kleinbuchstaben und Ziffern ausgestattet. Und nur bei dieser Schrift tragen die Kleinbuchstaben die Hauptlast. Ideale schreibt man \mathfrak{p} für ein Primideal, \mathfrak{m} für ein maximales Ideal, allgemein \mathfrak{a}; Lie-Algebren heißen \mathfrak{g}, \mathfrak{h}, \mathfrak{sl} und sind so auf einen Blick von den zugehörigen Lie-Gruppen G und H zu unterscheiden.

Warum ausgerechnet gebrochene Schrift? Der Grund liegt in der Druckgeschichte, nicht in der Mathematik. Im Deutschland des 19. Jahrhunderts wurden deutschsprachige Bücher gewöhnlich in Fraktur gesetzt. 1876 ersetzte Richard Dedekind in den Supplementen zur dritten Auflage von Dirichlets Vorlesungen über Zahlentheorie Kummers ideale Zahlen durch konkrete Zahlenmengen und nannte sie Ideale. Die Fraktur war schlicht das kontrastierende Alphabet, das ein deutscher Setzer zur Hand hatte – also schrieb man Ideale in gebrochenen Kleinbuchstaben. Lange nachdem der deutsche Druck diese Type aufgegeben hat, hält allein die Notation der Algebra die Gewohnheit am Leben.

document.tex
\usepackage{amsmath,amssymb}   % amssymb: \mathfrak — amsmath: \operatorname
% ...
\[
  \mathfrak{g} = \operatorname{Lie}(G), \qquad
  \mathfrak{p} \subset \mathfrak{m} \subset \mathcal{O}
\]

Die Fraktur, die amssymb aufruft, ist übrigens keine Type des 19. Jahrhunderts, sondern die Euler Fraktur (Schrift eufm10), die Hermann Zapf als Teil der AMS Euler zeichnete. Die Lesbarkeit ist deutlich besser – ein strichreiches Alphabet bleibt es trotzdem. Häuft man \mathfrak in Indizes oder überhaupt an klein gesetzten Stellen, lässt sich \mathfrak{p} nicht mehr von \mathfrak{q} unterscheiden. Wo der Grad kleiner wird, weicht man besser auf ein anderes Zeichen aus oder nennt den Buchstaben einmal im Fließtext.

Unter XeLaTeX und LuaLaTeX: unicode-math und \symbb

Unter XeLaTeX oder LuaLaTeX mit unicode-math stammen alle vier Zieralphabete aus einer einzigen OpenType-Mathematikschrift und werden mit \symbb, \symcal, \symscr und \symfrak aufgerufen. Da hier das Unicode-Zeichen selbst gewählt wird, lösen sich die meisten Fallen dieser Seite auf: \symbb{k} ergibt tatsächlich 𝕜, und \Bbbk muss man sich nicht merken. Was am Ende erscheint, hängt allerdings davon ab, wie viel die gewählte Mathematikschrift enthält – ob sich etwa \symcal und \symscr unterschiedlich darstellen lassen, ist eine Eigenschaft der Schrift. Die Wahl je nach Engine behandelt die Seite „Mathe-Schriften“.

document.tex
% XeLaTeX or LuaLaTeX only
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
% ...
\[
  \symbb{R}, \quad \symcal{F}, \quad \symscr{L},
  \quad \symfrak{g}, \quad \symbb{k}
\]