In einem 12-pt-Dokument sind LaTeX' \Huge und \huge derselbe Befehl. Nicht ähnlich groß – Zeile 86 von size12.clo lautet \let\Huge=\huge und macht sie buchstäblich zu einem Ding. Das geschieht, weil die zehn Größenbefehle von \tiny bis \Huge relative Stufen gegenüber dem Fließtext bezeichnen und keine absoluten Größen: Dasselbe \large ergibt im 10-pt-Dokument 12 pt und im 12-pt-Dokument 14,4 pt. Und die Leiter dieser Stufen ist keine Erfindung von LaTeX – die Zahlen sind exakt die \magstep-Werte, die Knuth in plain TeX geschrieben hat. Diese Seite bringt eine gemessene Tabelle aller zehn Befehle bei 10 pt, 11 pt und 12 pt, die berühmte Falle, in der {\Large ...} zwar die Buchstaben, nicht aber den Durchschuss ändert, und was wirklich vorgeht, wenn \fontsize stillschweigend nichts tut.
Von \tiny bis \Huge: die zehn Deklarationen
Die Größenbefehle nehmen kein Argument. Sie sind keine Befehle wie \textbf{...}, sondern Deklarationen, die alles ab dieser Stelle umschalten; ihre Reichweite begrenzt man selbst mit einer Gruppe oder Umgebung. Vom Kleinsten zum Größten sind es zehn: \tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large, \LARGE, \huge, \Huge. Die Stufen unterscheiden sich allein durch die Groß- und Kleinschreibung des Anfangsbuchstabens und das durchgehend große LARGE – zu achten ist also auf die Schreibweise, nicht auf das Aussehen. \Large{Text} übergibt kein Argument: Es deklariert \Large und setzt danach eine Gruppe mit {Text}; das Verlassen dieser Gruppe stellt die Größe nicht wieder her. Zum Begrenzen schreibt man {\Large Text} – die Deklaration gehört in die Klammern hinein. \normalsize ist die Textgröße und entspricht der Größenoption der \documentclass (voreingestellt 10 pt).
% right: the declaration is inside the braces
Ordinary text. {\Large only this part is large.} Ordinary again.
% wrong: nothing is passed as an argument, and the size never comes back
Ordinary text. \Large{this is large} and so is everything after it.Die echten Punktgrößen hängen von der Grundgröße ab (10 pt, 11 pt, 12 pt)
Derselbe Befehl liefert eine andere Punktgröße, je nachdem, ob 10pt, 11pt oder 12pt an \documentclass übergeben wurde. \large ergibt in der 10-pt- wie in der 11-pt-Klasse 12 pt, in der 12-pt-Klasse dagegen 14,4 pt. Die folgende Tabelle enthält, was alle zehn in den Standardklassen (article, report, book) tatsächlich lieferten, als während eines Laufs \f@size und \baselineskip ausgegeben wurden. Jede Zelle lautet Schriftgröße / Durchschuss – der Durchschuss ist der Abstand zwischen den Grundlinien aufeinanderfolgender Zeilen. Er steht mit dabei, weil die Tabelle so auf einen Blick zeigt, dass ein Größenbefehl den Zeilenabstand zusammen mit den Buchstaben verschiebt.
| Befehl | 10-pt-Klasse | 11-pt-Klasse | 12-pt-Klasse |
|---|---|---|---|
\tiny | 5 pt / 6 pt | 6 pt / 7 pt | 6 pt / 7 pt |
\scriptsize | 7 pt / 8 pt | 8 pt / 9,5 pt | 8 pt / 9,5 pt |
\footnotesize | 8 pt / 9,5 pt | 9 pt / 11 pt | 10 pt / 12 pt |
\small | 9 pt / 11 pt | 10 pt / 12 pt | 10,95 pt / 13,6 pt |
\normalsize | 10 pt / 12 pt | 10,95 pt / 13,6 pt | 12 pt / 14,5 pt |
\large | 12 pt / 14 pt | 12 pt / 14 pt | 14,4 pt / 18 pt |
\Large | 14,4 pt / 18 pt | 14,4 pt / 18 pt | 17,28 pt / 22 pt |
\LARGE | 17,28 pt / 22 pt | 17,28 pt / 22 pt | 20,74 pt / 25 pt |
\huge | 20,74 pt / 25 pt | 20,74 pt / 25 pt | 24,88 pt / 30 pt |
\Huge | 24,88 pt / 30 pt | 24,88 pt / 30 pt | 24,88 pt / 30 pt (identisch mit \huge) |
Blickt man die Leiter hinab – 12, 14,4, 17,28, 20,74, 24,88 –, ist jede Stufe rund das 1,2-fache der vorigen. Kein Zufall. Zeile 391 von plain TeX lautet \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax}: Die von Knuth festgelegten Vergrößerungsfaktoren sind 1200, 1440, 1728, 2074 und 2488, also die erste bis fünfte Potenz von 1,2 in Tausendsteln. LaTeX übernimmt für seine fünf größeren Stufen genau diese Zahlen. Das eigentümliche 10,95 pt stammt aus derselben Quelle, der Zeile darüber: \def\magstephalf{1095 } – die Quadratwurzel aus 1,2, rund 1,0954, gerundet. Sieht man weiter auf die Makronamen ab Zeile 8915 von latex.ltx, findet man \@xivpt, benannt „vierzehn Punkt“, definiert als 14.4, und \@xxvpt, benannt „fünfundzwanzig Punkt“, definiert als 24.88. Die Namen sind ein Kürzel für Menschen; die Werte sind die Vergrößerungstreppe.
Die Treppe endet bei 24,88 pt, weil dies die größte Entwurfsgröße ist, die Computer Modern mitbringt. Die in der Schriftdefinitionsdatei ot1cmr.fd aufgeführten Größen lauten <5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88> – zwölf Sprossen, genau die Leiter, die auch die Größenbefehle erklimmen. In einer 12-pt-Klasse stößt \huge deshalb bereits an die Decke von 24,88 pt, und Zeile 86 von size12.clo schreibt schlicht \let\Huge=\huge und macht beide zu einem Befehl. In der 11-pt-Klasse sind sie verschieden: \huge ergibt 20,74 pt, \Huge 24,88 pt. Beim Symptom „\Huge ändert nichts“ ist zuerst zu prüfen, ob die Klassenoption 12pt lautet. All dies gilt für die Standardklassen; japanische Klassen wie jsarticle sowie extsizes oder KOMA-Script verwenden eigene Stufen und Obergrenzen – diese Tabelle lässt sich also nicht auf sie übertragen.
{\Large ...} vergrößert die Buchstaben, nicht den Zeilenabstand
Weil der Absatzabschluss – die Leerzeile oder das \par – außerhalb der schließenden Klammer steht. Er gehört in die Gruppe hinein. TeX legt den Durchschuss nicht beim Setzen der Buchstaben fest, sondern beim Umbrechen des Absatzes in Zeilen. Liegt das Absatzende außerhalb der Gruppe, ist \baselineskip zu diesem Zeitpunkt bereits auf den Textwert zurückgefallen, und große Schrift wird mit dem Durchschuss des Fließtextes gesetzt. An einem zweizeiligen \Large-Absatz (14,4 pt) in einer 10-pt-Klasse gemessen: mit \par außerhalb der Gruppe 12 pt Durchschuss, mit \par innerhalb 18 pt. Das sind 6 pt zu wenig je Zeile.
% right -- \par is inside the group, so the leading is 18pt
{\Large
A long paragraph that will wrap onto a second line and keep its leading.
\par}
% wrong -- the paragraph ends after the group, so the leading falls back to 12pt
{\Large A long paragraph that will wrap onto a second line and lose its leading.}
The next paragraph.Diese 6 pt zeigen sich auf der Seite als kollidierende Zeilen. Eine \Large-Glyphe reicht 9,99998 pt über die Grundlinie und 2,79999 pt darunter – mit \sbox gemessene Werte. Zusammen ergeben sie 12,79997 pt und überschreiten den falschen Durchschuss von 12 pt um 0,8 pt. Trägt also eine Zeile eine Unterlänge (g, y, p) und die nächste eine Oberlänge (h, k, l), überlappen die beiden auf dem Papier zwangsläufig. Bei wenigen Zeilen übersieht man das leicht; es tritt oft erst zutage, wenn jemand das eingereichte PDF ausdruckt.
Zwei Ergänzungen. Erstens: Ein zusätzliches \selectfont hilft nicht. {\Large\selectfont ...} maß weiterhin 12 pt. Das Problem ist nicht die Schriftwahl, sondern der Wert von \baselineskip in dem Augenblick, in dem der Absatz abgeschlossen wird; nur die Position des \par zu korrigieren hilft. Zweitens tritt das Symptom bei \centering auf, nicht aber bei der Umgebung center. {\centering \Large ... } mit der Leerzeile außerhalb ergibt 12 pt, während \begin{center} \Large ... \end{center} korrekte 18 pt maß – weil \end{center} den Absatz beendet, bevor es die Gruppe schließt. Hat eine große zentrierte Überschrift seltsame Zeilenabstände, liegt der Verdacht auf einer nackten Gruppe um \centering nahe.
Eine beliebige Größe: \fontsize und \selectfont
Ist keine der zehn Stufen die gewünschte Größe, benennt \fontsize{Größe}{Durchschuss}\selectfont die Punktgröße direkt. Das erste Argument ist die Schriftgröße, das zweite der Durchschuss. Ein Plakattitel oder eine einzelne enge Zeile in einer Tabelle sind vernünftige Gelegenheiten, die Leiter zu verlassen. Entscheidend ist: \fontsize hält nur die Werte fest und wählt nichts aus. Gemessen war das x in \fontsize{20}{24}x 5,2778 pt breit – genau die Breite eines x in \normalsize. Folgt \selectfont, werden daraus 10,05351 pt, und erst dann erscheint die 20-pt-Schrift. Und das Vergessen von \selectfont erzeugt weder Fehler noch Warnung. Die meisten Meldungen „Ich habe die Größe gesetzt und nichts hat sich geändert“ gehen darauf zurück.
% \fontsize alone changes nothing and says nothing
{\fontsize{20}{24}Still 10pt.}
% \selectfont is what commits the change
{\fontsize{20}{24}\selectfont 20pt type on 24pt leading.}Das zweite Argument ist nicht wahlfrei; man wählt es nach der üblichen Faustregel von etwa dem 1,2-fachen der Schriftgröße – für 20 pt also rund 24 pt. Die obige Tabelle zeigt, dass die Standardklassen weitgehend in diesem Bereich bleiben: 10 pt auf 12 pt, 14,4 pt auf 18 pt. Während Deklarationen wie \tiny den Durchschuss selbsttätig anpassen, überträgt \fontsize Ihnen die Verantwortung dafür, und das ist der praktisch wichtigste Unterschied. Zu klein gewählt, kollidieren die Zeilen aus genau dem im vorigen Abschnitt beschriebenen Grund. Den Zeilenabstand für ein ganzes Dokument zu vergrößern – etwa auf anderthalbzeilig – ist überhaupt keine Aufgabe der Größenbefehle; siehe dazu die Seite zum Zeilenabstand.
Größenbefehle wirken in Formeln nicht
Schreibt man einen Größenbefehl im Mathematikmodus, ignoriert LaTeX ihn und hinterlässt eine Zeile im Protokoll. $ \large x $ erzeugt LaTeX Font Warning: Command \large invalid in math mode on input line 9. Es ist eine Warnung, kein Fehler, der Lauf geht weiter und das x erscheint in gewöhnlicher Größe. Größen innerhalb einer Formel gehören einem eigenen System an – der umgebenden Textgröße in Verbindung mit dem Mathematikstil (\displaystyle, \textstyle, \scriptstyle, \scriptscriptstyle) – und lassen sich mit den Größenbefehlen des Fließtexts nicht mischen. Soll nur ein Bruch oder ein Summenzeichen groß gesetzt werden, nimmt man \displaystyle. Zum Vergrößern der ganzen Formel deklariert man die Größe außerhalb der Mathematik: {\Large $ ... $} wirkt.
LaTeX Font Warning: Command \large invalid in math mode on input line 9.Die Reihenfolge, in der Größen entschieden werden
Schriftgrößen halten zusammen, wenn sie von oben nach unten entschieden und nicht beim Schreiben örtlich geflickt werden. Zuerst die dokumentweite Grundgröße festlegen, etwa \documentclass[11pt]{...}. Dann alles, was wiederkehrt – Überschriften, Bildunterschriften, Fußnoten, Tabellenanmerkungen –, in der Klassen- oder Paketkonfiguration einstellen statt an jeder Fundstelle von Hand. Erst was übrig bleibt, die wirklich einmaligen Fälle wie ein Plakattitel oder eine Anmerkung in einer Tabelle, bekommt ein örtliches {\small ...}. Wer diese Reihenfolge einhält, kann die Grundgröße später von 11 pt auf 12 pt ändern, und das ganze Dokument folgt im Verhältnis. Verstreut man dagegen örtliche Deklarationen im Text, bleiben genau diese Stellen zurück, sobald sich die Grundgröße ändert. Bei Plakaten und Folien, deren Textgröße ohnehin eine andere ist, nicht mit örtlichen Befehlen nachhelfen – eine Klasse für das Genre wählen.
- Die Grundgröße als Klassenoption setzen. Den gesamten Text in
{\small ...}einzuschließen zerstört leicht das Verhältnis zu Fußnoten, Überschriften und Durchschuss – und ist keine Antwort auf eine Einreichungsvorgabe „Fließtext 11 pt“. - Abschnittsüberschriften nicht im Text vergrößern. Das Aussehen von
\sectionüber die Klassenkonfiguration oder ein Paket wietitlesecändern. Eine mit\Largenachgeahmte Überschrift erscheint weder im Inhaltsverzeichnis noch in einem Querverweis. - Wiederkehrende Elemente an ihrer Definition ändern. Sollen alle Tabellenanmerkungen kleiner sein, ein Makro oder eine Umgebung dafür definieren, statt es im Text von Hand zu tun.
- Örtliche Größenwechsel an Absatzgrenzen schließen. Bei einem langen kleinen Absatz
\parinnerhalb der Gruppe belassen, damit auch der Durchschuss in derselben Größe festgelegt wird. - Vor dem Verkleinern einer Tabelle die Struktur hinterfragen. Bevor eine ganze Tabelle in
\scriptsizegezwängt wird, lieber Spalten streichen, sie drehen oder in zwei Tabellen teilen. - Das PDF in der endgültigen Seitengröße prüfen. Was am Bildschirm lesbar ist, kann in einem auf A4 gedruckten Begutachtungs-PDF zu klein sein. In Originalgröße ansehen, nicht vergrößert.