Ränder und Satzspiegel

Setzt man \oddsidemargin in LaTeX auf 0pt, wird der linke Rand nicht null, sondern genau ein Zoll. Das wirkt wie ein Konstruktionsfehler, ist aber eine von DVI geerbte Konvention: Der Bezugspunkt einer Seite liegt einen Zoll von der linken oberen Papierecke entfernt, und jeder Randparameter misst eine Verschiebung gegenüber diesem Punkt. Diese eine Tatsache verändert den Blick auf das gesamte Randthema. Diese Seite erklärt, woher der Zoll kommt, welchen Satzspiegel die Standardklassen tatsächlich setzen und wie sich eine geforderte Randvorgabe mit der heutigen Antwort — dem Paket geometry — exakt treffen lässt, durchgehend mit Messwerten.

Warum \oddsidemargin=0pt einen Rand von einem Zoll ergibt

Weil der Bezugspunkt nicht die Blattecke ist, sondern ein Punkt einen Zoll weiter innen. Das lässt sich messen: In einem article mit \oddsidemargin und \topmargin jeweils auf 0pt liefert die Abfrage der absoluten Position des ersten Zeichens bei pdfTeX 72.26999pt vom linken Rand — exakt 1.00000 Zoll. Der tatsächliche linke Rand ergibt sich also aus der folgenden Summe. \hoffset ist der Regler, der den Bezugspunkt selbst verschiebt, \oddsidemargin verschiebt von dort aus weiter. Mit \hoffset auf 20pt nachgemessen, wanderte die linke Kante auf genau 92.27pt (also 72.27 + 20).

latex
% How the page is actually built up (all measured, article, letterpaper)
%   left margin        = 1in + \hoffset + \oddsidemargin
%   top of header      = 1in + \voffset + \topmargin
%   top of body        = top of header + \headheight + \headsep
%   first baseline     = top of body + \topskip

% The classical way, by hand. Correct, but you own every consequence.
\setlength{\oddsidemargin}{0pt}   % real left margin = 1in + 0pt = 1in
\setlength{\topmargin}{0pt}       % header top at 1in; body starts 37pt lower
\setlength{\textwidth}{16cm}      % the RIGHT margin is now whatever is left
\setlength{\textheight}{24cm}     % likewise the bottom margin

% Measured with the two margins above: left edge 72.26999pt = 1.00000in,
% first baseline 119.27pt from the paper top = 1in + 0 + 12 + 25 + 10

Auch der Inhalt dieses 1in lohnt einen Blick. TeXs pt ist der amerikanische typografische Punkt mit 72,27 pro Zoll — nicht der DTP- oder PostScript-Punkt mit 72 pro Zoll. Diesen nennt TeX bp (big point); gemessen gilt 1bp = 1.00374pt. 12pt und 12bp unterscheiden sich also um rund 0,37 %. Über eine Zeile hinweg unsichtbar, doch derselbe Anteil auf die 345pt von \textwidth angewandt ergibt 1,29pt, also fast einen halben Millimeter. Bei Dokumenten mit in Millimetern vorgeschriebenen Rändern kann die falsche Einheit die Vorgabe verfehlen. pdfTeX führt den Zoll-Versatz als \pdfhorigin und \pdfvorigin, beide mit dem Standardwert 72.26999pt.

ParameterBedeutung
\paperwidth / \paperheightPapiermaße, wie LaTeX sie versteht — nicht die physische PDF-Seitengröße (siehe unten)
\textwidth / \textheightBreite und Höhe des Textbereichs; im article mit 10pt 345.0pt × 550.0pt
\oddsidemarginVerschiebung des linken Randes auf ungeraden Seiten (bei oneside allen), vom Ursprung; echter Rand = plus 1in
\evensidemarginDasselbe für gerade Seiten bei twoside; Standard im book mit 10pt ist 89.0pt
\topmarginAbstand vom Ursprung zur Oberkante der Kopfzeile — nicht zum Textanfang
\headheightHöhe der Box für den Kolumnentitel; standardmäßig 12.0pt
\headsepAbstand zwischen Kopfzeile und Textanfang; im article standardmäßig 25.0pt
\footskipGrundlinienabstand von der letzten Textzeile zur Fußzeile; standardmäßig 30.0pt
\marginparwidth / \marginparsepBreite von Randnotizen und ihr Abstand zum Text; im article mit 10pt 65.0pt und 11.0pt
\hoffset / \voffsetVerschieben den Bezugspunkt selbst; bleiben normalerweise auf 0pt

Wer diese Werte von Hand setzt, hat mit der Tabelle zugleich eine Fallenliste. Ein größeres \textwidth verkleinert den rechten Rand nicht — der rechte Rand ist bloß der Rest aus „Papierbreite − linker Rand − \textwidth“ und ändert sich also hinter dem Rücken. Und da \topmargin nur bis zur Oberkante der Kopfzeile reicht, muss man \headheight und \headsep selbst abziehen, um den Text auf einen Zoll herunterzusetzen. Gemessen: Gibt man geometry ein margin=1in, kommt \topmargin auf −37.0pt heraus, also genau −(12 + 25). Es gibt keinen Grund mehr, diese Rechnung selbst zu führen.

Warum die Standardklassen so viel Weißraum lassen: article und book gemessen

Um die Zeichenzahl pro Zeile in einem lesbaren Bereich zu halten. Ein article mit 10pt legt \textwidth unabhängig vom Blatt auf 345.0pt fest: Auf Letter (614.295pt breit) bleiben links und rechts jeweils rund 134pt, auf A4 (597.5pt breit) sind es weiterhin dieselben 345.0pt. Ein breiteres Blatt bringt keine längeren Zeilen, denn die Zeilenlänge sollte sich nach der Lesbarkeit richten. Größere Schrift verbreitert den Satzspiegel etwas — 360.0pt bei 11pt, 390.0pt bei 12pt —, weil in dieselbe Breite weniger große Buchstaben passen.

Klasse (Letter-Papier)textwidthtextheightoddsidemarginevensidemargin
article345.0pt550.0pt62.0pt62.0pt
article, 11pt360.0pt541.4pt54.0pt55.0pt
article, 12pt390.0pt548.5pt39.0pt40.0pt
book345.0pt550.0pt35.0pt89.0pt

Die Zeile book enthält die gesamte Philosophie eines zweiseitigen Layouts. Auf einer ungeraden Seite misst die linke Seite (die Bundseite) 1in + 35.0pt = 107.27pt, die äußere rechte bekommt die restlichen 162.02pt. LaTeXs book macht den Außenrand also breiter als den Bundsteg — scheinbar das Gegenteil der üblichen Regel, für die Bindung innen Platz zu lassen. Der Grund: Der Außenrand ist als Heimat für Randnotizen (\marginpar) reserviert, weshalb \marginparwidth auch ganze 65.0pt beträgt. Auf geraden Seiten tauschen beide, und die 89.0pt von \evensidemargin übernehmen. In einem Dokument ohne Randnotizen wirkt dieser Satzspiegel außen einfach schlaff — genau hier setzt geometry an.

geometry verwenden: Papier und Ränder in einer Zeile

Eine Zeile — \usepackage[a4paper, margin=25mm]{geometry} — legt Papier und alle vier Ränder fest. Die Optionen können in den Klammern von \usepackage stehen oder später in einem \geometry{...}-Befehl; beides ist gleichwertig, und in der Präambel darf man ihn beliebig oft aufrufen, wobei ein späterer Wert desselben Schlüssels einen früheren überschreibt. Die Reihenfolge spielt keine Rolle. Das Paket stammt von Hideo Umeki, die Copyright-Zeile beginnt 1996, und seit 2018 pflegt es David Carlisle (TeX Live 2024 liefert v5.9 vom Januar 2020). Seit einem Vierteljahrhundert ist es die Antwort für Ränder, weil seine Schnittstelle der Denkreihenfolge der Menschen entspricht: so viele Millimeter von der Papierkante nach innen.

OptionBedeutung
a4paper / letterpaper / …Blatt per Name wählen; A0–A6, B0–B6, b5paper, a5paper, legalpaper, executivepaper und weitere stehen bereit
paperwidth= / paperheight= / papersize=Eigenes Format; papersize={210mm,297mm} gibt beides auf einmal an
margin=Alle vier Ränder auf einmal; margin={A,B} heißt links/rechts = A, oben/unten = B
left= / right= / top= / bottom=Jede Seite einzeln; lmargin, rmargin, tmargin, bmargin sind Aliasse
hmargin= / vmargin=Als Paar: hmargin={links,rechts} und vmargin={oben,unten}
inner= / outer=Bund- und Außenrand im zweiseitigen Layout; Aliasse von left und right
textwidth= / textheight= / total=Statt der Ränder den Satzspiegel angeben; total={Breite,Höhe} bemisst den gesamten Textblock, width= / height= gehören zur selben Familie
bindingoffset=Bindekorrektur; addiert diese Länge innen (bei oneside links)
includehead / includefootKopf (\headheight + \headsep) bzw. Fuß (\footskip) in die Höhe des Textblocks einrechnen
landscapeQuerformat; vertauscht Breite und Höhe
asymmetricVerhindert das Tauschen zwischen ungeraden und geraden Seiten, damit Randnotizen stets auf derselben Seite bleiben
showframeZeichnet die Rahmen von Satzspiegel, Kopf und Fuß tatsächlich; zum Sichtprüfen einer Vorgabe

Eine geforderte Randvorgabe exakt treffen

Am kürzesten ist es, die geforderten Zahlen direkt in die Schlüssel von geometry zu übertragen. Eine Kontrollrechnung: Schreibt man die Vorgabe „A4, 30 mm am Bund, 20 mm am Außensteg, 5 mm Bindekorrektur, zweiseitig“ wie unten und misst nach, ergeben sich für \oddsidemargin und \evensidemargin 27.31464pt und −15.36449pt. Mit dem Zoll dazu beträgt der Bundsteg einer ungeraden Seite 99.5846pt = 35 mm (30 + 5), während der linke Außensteg einer geraden Seite 56.9055pt misst, also genau 20 mm. Wie auch immer die Seiten tauschen: Der Bund bleibt bei 35 mm, der Außensteg bei 20 mm.

document.tex
\documentclass[twoside]{book}
\usepackage{geometry}
\geometry{
  a4paper,
  inner=30mm,        % binding side
  outer=20mm,        % fore-edge
  bindingoffset=5mm, % added to the inner side
  includehead,       % count the header into the block height
}
% Measured result: \oddsidemargin 27.31464pt, \evensidemargin -15.36449pt
% -> binding side 35mm, fore-edge 20mm, on both odd and even pages
\begin{document}
Body text goes into this block.
\end{document}

Es lohnt sich zu wissen, wie man das Ergebnis prüft. Ein showframe in der Präambel zeichnet die Rahmen von Satzspiegel, Kopf und Fuß tatsächlich, und der Befehl \layout aus dem Paket layout gibt eine Diagrammseite mit allen Parametern aus. Wer die nackten Zahlen will, gibt etwa \the\textwidth mit \typeout aus und liest das Log. Eine Warnung: Wer Ränder und Satzspiegel gleichzeitig festlegt, erhält Package geometry Warning: Over-specification in h-direction. und geometry ignoriert stillschweigend eine Angabe. Gibt man links, rechts und textwidth an, ist Übereinstimmung reines Glück — die Regel lautet: höchstens zwei angeben, den Rest rechnen lassen.

Papierformat angegeben — und das PDF kommt in A4 heraus

Eine Klassenoption teilt nur LaTeX mit, wie groß das Papier ist; die physische Seitengröße des PDFs rührt sie nicht an. Das sind zwei getrennte Variablen. Gemessen: Mit \documentclass[a5paper]{article} wird LaTeXs \paperwidth zu 421.10078pt, während pdfTeXs \pdfpagewidth bei 597.50787pt bleibt — der Breite von A4. Dasselbe gilt für [letterpaper] und [b5paper]: Das Blatt des PDFs verharrt beim Standard der TeX-Distribution (bei einer unveränderten TeX Live 2024 ist das a4). Heraus kommt ein halbes PDF: Der Satzspiegel ist für A5 berechnet, die Seite ist A4.

Das Laden von geometry behebt die Unstimmigkeit von selbst. In allen vier gemessenen Fällen, in denen das Papier an geometry übergeben wurde, stimmten \pdfpagewidth und \pdfpageheight mit \paperwidth und \paperheight überein. Das Papierformat gehört zu geometry, nicht in die Klassenoption — eine Regel, die man sich merken sollte.

Ränder mitten im Dokument ändern: \newgeometry und \restoregeometry

Ein \newgeometry{...} im Dokumenttext übernimmt ab dieser Stelle mit einem neuen Satzspiegel. Es setzt alles zuvor Angegebene außer dem Papierformat zurück und wendet dann nur die übergebenen Optionen an — wer es schreibt, als würde es zwei Werte nachbessern, produziert damit Unfälle. Gemessen: In einem A4-Dokument mit margin=1in verschob \newgeometry{margin=1cm} die \textwidth von 452.9679pt auf 540.60239pt (also 597.50787 − 2 × 28.4526), und \restoregeometry holte sie auf 452.9679pt zurück. Beide Befehle fügen ein \clearpage ein, der Wechsel fällt also nie mitten auf eine Seite. Wird ein Layout mehrfach gebraucht, speichert man es mit \savegeometry{Name} und ruft es mit \loadgeometry{Name} wieder auf.

latex
\usepackage[a4paper, margin=1in]{geometry}
\savegeometry{normal}          % remember this layout under a name
% ... in the body:
\newgeometry{margin=1cm}       % wide pages start here (a \clearpage is inserted)
%   a big landscape table, an appendix, a fold-out figure ...
\restoregeometry               % back to the preamble layout (another \clearpage)
% \loadgeometry{normal}        % or recall a saved one by name

Für eine einzelne Querformatseite kombiniert man \newgeometry{landscape, ...} oder verwendet die Umgebung landscape der eigens dafür gebauten Pakete lscape / pdflscape (pdflscape dreht zusätzlich die Anzeige im PDF-Betrachter, was bei Bildschirmlektüre erwünscht ist). Geht es dagegen nicht um die Form der Seite, sondern um das Aussehen von Überschriften oder den Inhalt von Kopf- und Fußzeile, sind titlesec beziehungsweise fancyhdr zuständig. Der mehrspaltige Satz hat ebenfalls eine eigene Seite.