Die Kopfzeile oben und die Seitenzahl unten beantworten dieselbe Frage: Wo im Buch befinde ich mich gerade? Das Verfahren ist älter als der Druck – mittelalterliche Schreiber zogen im oberen Rand einer Handschrift eine zusätzliche Zeile und trugen dort einen Kolumnentitel ein, damit sich beim Blättern die Teile eines Kodex auseinanderhalten ließen. LaTeX übernimmt diese Aufgabe und übergibt sie einem Mechanismus namens Seitenstil: vier eingebaute Stile, die mit \pagestyle gewählt werden, und, wenn die nicht mehr reichen, das Standardpaket fancyhdr. Diese Seite geht denselben Weg – warum der Kolumnentitel auf der ersten Seite eines Kapitels verschwindet, wie \leftmark und \rightmark Kapitel- und Abschnittstitel in die Kopfzeile holen und wie \pagenumbering den Vorspann römisch und den Haupttext arabisch nummeriert.
Die vier Seitenstile, zwischen denen \pagestyle wählt
Im reinen LaTeX werden Kopf- und Fußzeilen nicht einzeln eingestellt, sondern als ganzer benannter Satz umgeschaltet: als Seitenstil. \pagestyle{headings} in der Präambel gilt von dort an bis zum Dokumentende, während \thispagestyle{empty} im Text die Einstellung nur für die laufende Seite überschreibt. Standardmäßig gibt es genau vier Stile.
| Stil | Was erscheint |
|---|---|
empty | Kopf- und Fußzeile leer; überhaupt keine Seitenzahl |
plain | Kopf leer, Seitenzahl zentriert im Fuß. Standard für article / report |
headings | Fuß leer; der Kopf trägt Kapitel- und Abschnittstitel sowie die Seitenzahl. Standard für book |
myheadings | Gleiche Anordnung wie headings, aber ohne automatische Aktualisierung: Der Text kommt über \markboth / \markright |
Welcher davon bereits gilt, hängt von der Dokumentklasse ab. article und report starten mit plain – nichts als eine zentrierte Seitenzahl im Fuß. book startet mit headings, Kapitel- und Abschnittstitel laufen also oben mit. Der Unterschied ist nicht willkürlich: Ein zehnseitiger Aufsatz muss nicht auf jeder Seite den Standort melden; in einem vierhundertseitigen Buch dagegen ist der Kolumnentitel genau das, was den Sprung vom Register zurück in den Text möglich macht.
Was headings in den Kolumnentitel setzt, legt ebenfalls die Klasse fest. Im zweiseitigen book tragen gerade (linke) Seiten den Kapiteltitel und ungerade (rechte) Seiten den Abschnittstitel, die Seitenzahl steht stets außen am Vorderschnitt. myheadings schaltet die automatische Aktualisierung ab und überlässt die Texte dem Autor – über \markboth{linke Seite}{rechte Seite} im zweiseitigen Satz oder \markright{rechte Seite}. Weiter biegen sich die eingebauten Stile nicht: Schon ein so gewöhnliches Layout wie „Dokumenttitel links, Seitenzahl rechts“ liegt außerhalb ihrer Reichweite. Ab hier ist fancyhdr zuständig.
Warum die Kopfzeile auf der ersten Seite eines Kapitels verschwindet
Die Antwort steht in \chapter selbst. In book.cls lautet die zweite Zeile von \chapter, unmittelbar nach dem Seitenumbruch, \thispagestyle{plain}. Eine Kapitelanfangsseite schaltet damit auf plain um – keine Kopfzeile, nur eine zentrierte Seitenzahl im Fuß –, gleichgültig was eingestellt wurde. \part und \maketitle tun genau dasselbe. Deshalb zeigt ein Dokument mit \pagestyle{empty} auf der Titelseite und am Anfang jedes Kapitels trotzdem eine Seitenzahl.
Welche Lösung passt, hängt vom Ziel ab. Soll auch die Zahl verschwinden, gehört \thispagestyle{empty} unmittelbar hinter \chapter{…}; in der Präambel bleibt es wirkungslos, weil \chapter die Einstellung im Moment des Aufrufs überschreibt. Soll die Kapitelanfangsseite dagegen zum Rest des Buches passen, wird der Stil plain selbst neu gebaut. Genau dafür gibt es \fancypagestyle{plain}{…} aus fancyhdr: einmal definiert, erhält jedes \chapter, das nach plain greift, den eigenen Entwurf statt den der Klasse.
% Fix 1: drop the page number too, on this chapter page only.
% This must come AFTER \chapter, never in the preamble.
\chapter{Introduction}
\thispagestyle{empty}
% Fix 2: redefine plain, so every chapter opening follows your design.
\fancypagestyle{plain}{%
\fancyhf{}%
\fancyfoot[C]{\thepage}%
\renewcommand{\headrulewidth}{0pt}%
}\pagestyle{fancy}: die sechs Felder von fancyhdr
Nach dem Laden von fancyhdr und der Deklaration \pagestyle{fancy} stehen sechs Felder offen: links (L), Mitte (C) und rechts (R) in der Kopfzeile und dieselben drei noch einmal im Fuß. Autor ist Pieter van Oostrum; die Copyright-Zeile im Paket beginnt 1994. Der verkürzte Name hat eine Vorgeschichte. Die erste Fassung hieß fancyheadings.sty, doch MS-DOS – damals noch sehr lebendig – bewahrte von einem Dateinamen nur acht Zeichen, auf der Platte landete also fancyhea.sty. Bald schrieben manche \usepackage{fancyhea}, und diese Dokumente ließen sich unter Unix nicht mehr übersetzen. Van Oostrum ärgerte das so sehr, dass er das Paket auf einen Namen umtaufte, der in acht Zeichen passt: fancyhdr.
Die übliche Vorgehensweise: erst alle sechs Felder mit \fancyhf{} leeren, dann nur die gewünschten füllen. Ohne dieses Aufräumen können die Kolumnentitel der Klasse darunter bestehen bleiben, sodass derselbe Text doppelt erscheint. Gefüllt wird mit \fancyhead[L]{…} / [C] / [R] und \fancyfoot[L]{…} / [C] / [R]; die Positionsbuchstaben lassen sich kombinieren, etwa \fancyhead[LO,RE]{…}, um mehrere Felder auf einmal zu setzen.
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all six slots first
\fancyhead[L]{Document title} % header, left
\fancyhead[R]{\thepage} % header, right: the page number
\fancyfoot[C]{\today} % footer, centreIn zweiseitigen (twoside) Dokumenten werden die Positionen mit geraden (E) und ungeraden (O) Seiten kombiniert. [LE,RO] heißt „links auf geraden, rechts auf ungeraden Seiten“ – die äußere Ecke einer Doppelseite am Vorderschnitt und der traditionelle Platz der Seitenzahl. Eine Angabe ohne E und ohne O, etwa [L], setzt denselben Inhalt auf beide Seiten. Die Linien unter dem Kopf und über dem Fuß heißen \headrulewidth und \footrulewidth, standardmäßig 0.4pt und 0pt (keine Linie). Zu beachten: Diese beiden sind Makros, keine Längen, und werden mit \renewcommand geändert, nicht mit \setlength – darüber stolpert fast jeder einmal.
\renewcommand{\headrulewidth}{0.4pt} % header rule; this is the default
\renewcommand{\footrulewidth}{0pt} % no footer rule; also the defaultDen Kapiteltitel in die Kopfzeile bringen: \leftmark und \rightmark
Mit \fancyhead[L]{\leftmark} landet der Kapiteltitel der jeweiligen Seite in der Kopfzeile. In book und report enthält \leftmark das aktuelle Kapitel und \rightmark den aktuellen Abschnitt; ihr Inhalt wird bei jedem \chapter oder \section ersetzt. article kennt keine Kapitel, alles rutscht also eine Ebene tiefer: zweiseitig trägt \leftmark den Abschnitt und \rightmark den Unterabschnitt, in der einseitigen Voreinstellung trägt \rightmark den Abschnitt.
Darunter liegt TeXs Primitiv \mark. Sobald TeX eine Seite fertig zusammenstellt, hebt es zwei der darauf erschienenen Marken getrennt auf: die erste (\firstmark) und die letzte (\botmark). Der LaTeX-Kern definiert daraus \leftmark als linke Hälfte von \botmark und \rightmark als rechte Hälfte von \firstmark. Die Asymmetrie letzte/erste leuchtet ein, sobald man an ein Wörterbuch denkt: Die Leitwörter oben auf einer Seite nützen nur, wenn sie den ersten und den letzten Eintrag nennen, die tatsächlich darauf stehen. Das zeigt sich auch in der Praxis. Beginnt ein Abschnitt in der Seitenmitte, greift \rightmark die erste Marke der Seite ab, und der Kolumnentitel nennt den gerade erst unten begonnenen Abschnitt statt jenes, der die obere Hälfte füllt. Das ist das spezifizierte Verhalten und kein Fehler.
Der zweite klassische Stolperstein ist die Großschreibung. Die Standardklassen schicken Überschriften in \chaptermark und \sectionmark durch \MakeUppercase, bevor sie an die Marke gehen; \leftmark enthält also bereits etwas wie „CHAPTER 1. INTRODUCTION“. Für die ursprüngliche Schreibung hilft \nouppercase aus fancyhdr, das sein Argument in einer Umgebung setzt, in der \MakeUppercase und \uppercase wirkungslos sind. Die Aufhebung gilt allerdings für den gesamten Inhalt, absichtliche Versalien im selben Feld werden also mit zurückgenommen. Wer den Text des Kolumnentitels ganz selbst bestimmen will, ruft \markboth / \markright direkt auf oder definiert \chaptermark neu.
% Chapter title on the left, page number on the right.
% \nouppercase undoes the \MakeUppercase applied by the class.
\fancyhead[L]{\nouppercase{\leftmark}}
\fancyhead[R]{\thepage}
% Or set the running-head text by hand, with no automatic updating.
\pagestyle{myheadings}
\markboth{Left-hand page text}{Right-hand page text}Package fancyhdr Warning: \headheight is too small beheben
Die Warnung besagt, dass die Box für die Kopfzeile niedriger ist als ihr Inhalt. Wird \headheight auf den in der Meldung genannten Wert vergrößert, verschwindet sie. Die Standardklassen setzen \headheight auf 12pt, und schon eine 0,4 pt starke Linie samt Durchschuss darüber sprengt das – deshalb erscheint die Warnung häufig gleich beim ersten Lauf nach dem Laden von fancyhdr. Die Meldung nennt die benötigte Höhe selbst; die Zahl hinter Make it at least … lässt sich unverändert übernehmen.
Zwei Wege führen zum Ziel: \setlength{\headheight}{15pt} direkt oder die Option headheight= von geometry. Beides bringt die Warnung zum Schweigen; steht geometry jedoch bereits in der Präambel, gehört der Wert besser dorthin, denn \headheight steckt in derselben Rechnung wie Texthöhe und \topmargin – wird nachträglich nur eine Größe geändert, kann der Satzspiegel nach unten rutschen. Ohne geometry ist der klassische Griff, nach \setlength noch \addtolength{\topmargin}{-3pt} zu setzen, damit die Summe wieder stimmt; genau diese Korrektur schlägt die Warnung selbst vor.
% Either one of these is enough.
\setlength{\headheight}{15pt} % enlarge the header box directly
\addtolength{\topmargin}{-3pt} % ... and keep the vertical totals unchanged
% Or let geometry do the arithmetic for the whole page.
\usepackage[headheight=15pt]{geometry}Die Seitennummerierung von i, ii, iii auf 1, 2, 3 umstellen (\pagenumbering)
\pagenumbering{roman} nummeriert die folgenden Seiten mit i, ii, iii…, \pagenumbering{arabic} holt 1, 2, 3… zurück. Entscheidend ist: Der Befehl wechselt nicht nur das Format, er setzt auch den Seitenzähler auf 1 zurück. Die LaTeX-Definition beginnt wörtlich mit \global\c@page \@ne. Die übliche Buchanordnung – Vorspann römisch ab i, Haupttext arabisch ab 1 – kostet damit zwei Zeilen Quelltext.
| Argument | Ausgabe |
|---|---|
arabic | arabische Ziffern: 1, 2, 3 … (Standard) |
roman | kleine römische Ziffern: i, ii, iii … (üblich im Vorspann) |
Roman | große römische Ziffern: I, II, III … |
alph | Kleinbuchstaben: a, b, c … Auf Seite 27 bricht es mit ! LaTeX Error: Counter too large. ab |
Alph | Großbuchstaben: A, B, C … Ebenfalls nach 26 Seiten erschöpft |
Wer die Klasse book verwendet, hat diese beiden Zeilen bereits: \frontmatter ist mit \pagenumbering{roman} definiert und \mainmatter mit \pagenumbering{arabic}; beides selbst zu schreiben, führt denselben Wechsel zweimal aus – harmlos, aber überflüssig. article und report kennen kein \frontmatter, dort wird \pagenumbering von Hand aufgerufen. Für einen beliebigen Startwert dient \setcounter{page}{7}, für die aktuelle Zahl \thepage. Eine Falle lohnt die Erwähnung: alph und Alph haben nur Buchstaben für 26 Seiten, auf Seite 27 bricht der Lauf mit ! LaTeX Error: Counter too large. ab.
% book: \frontmatter and \mainmatter already switch the numbering.
\frontmatter % includes \pagenumbering{roman}
\tableofcontents
\mainmatter % includes \pagenumbering{arabic}
% article / report: no \frontmatter, so do it by hand.
\pagenumbering{roman} % i, ii, iii ... and the counter is reset to 1
\tableofcontents
\clearpage
\pagenumbering{arabic} % 1, 2, 3 ... counting starts over
\setcounter{page}{7} % or force any starting numberEin vollständiger zweiseitiger Buchkopf, von Anfang bis Ende
Fügt man die Bausteine in eine Präambel zusammen, entsteht die traditionelle Buchanordnung: Seitenzahl an der Außenkante der Doppelseite, Kapiteltitel innen auf geraden Seiten, Abschnittstitel innen auf ungeraden Seiten und darunter eine dünne Linie. Die Kapitelanfangsseite ist die einzige Stelle, an der \chapter auf plain besteht; deshalb wird \fancypagestyle{plain} neu definiert und auch sie in denselben Entwurf geholt.
\documentclass[twoside]{book}
\usepackage[headheight=15pt]{geometry}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all six slots first
\fancyhead[LE,RO]{\thepage} % page number on the outer edge
\fancyhead[RE]{\nouppercase{\leftmark}} % even page, inner edge: chapter
\fancyhead[LO]{\nouppercase{\rightmark}} % odd page, inner edge: section
\renewcommand{\headrulewidth}{0.4pt} % thin rule under the header
\renewcommand{\footrulewidth}{0pt} % no rule above the footer
\fancypagestyle{plain}{% % chapter openings, same design
\fancyhf{}%
\fancyfoot[C]{\thepage}%
\renewcommand{\headrulewidth}{0pt}%
}
\begin{document}
\chapter{Introduction}
\section{Background}
Body text goes here. From the next page on, the running head shows
the chapter, the section and the page number.
\end{document}Zum Schluss eine Faustregel. Für ein kurzes einseitiges Dokument, dem eine Zahl im Fuß genügt, bleibt \pagestyle{plain} unangetastet. Sollen lediglich Kapitel- und Abschnittstitel oben stehen, erledigt \pagestyle{headings} das bereits. Zu fancyhdr wechselt man in dem Moment, in dem Positionen und Schriften selbst bestimmt werden sollen. Jede Schicht erst dann einzuführen, wenn sie wirklich gebraucht wird, ergibt die Präambel, die am längsten hält. Und ein leicht vergessener Grundsatz: Ein Kolumnentitel ist dafür da, dass Lesende ihren Ort erkennen – oben leistet deshalb meist das gerade gelesene Kapitel mehr als der Titel des Dokuments.