Längen und Abstände

Um LaTeX zu sagen „lasse hier 2cm frei“ oder „füge hier eine Zeile Abstand ein“, schreibst du eine Länge. Diese Seite beginnt mit den Einheiten und ihren exakten Umrechnungen, behandelt dann dehnbare Gummilängen, die Befehle, die tatsächlich Raum ausgeben (\hspace, \vspace und ähnliche), und schließlich, wie man Längen wie Variablen definiert und wiederverwendet.

Längeneinheiten

Eine Länge wird als Zahl plus Einheit geschrieben (12pt, 2.5cm, -3mm; Dezimalzahlen und negative Werte sind erlaubt). Einheiten fallen in zwei Gruppen: absolute Einheiten, die unabhängig von der Schrift fest sind (pt, mm, in, …), und schriftrelative Einheiten, die mit der aktuellen Schriftgröße skalieren (em, ex). Letztere sind praktisch, wenn Abstand mit größerer Schrift natürlich mitwachsen soll.

Die zentrale Einheit ist pt, der TeX-Punkt. TeX definiert 1 inch = 72.27pt, und alle Umrechnungen hängen daran. Verwechslungsgefahr besteht bei bp (big point), dem PostScript/PDF-Punkt mit 1 inch = 72bp. pt und bp unterscheiden sich um etwa 0,4%; achte also auf die Einheit, wenn du Grafiken mit bp-basierten Werkzeugen austauschst.

EinheitBedeutung / UmrechnungHinweis
ptTeX-Punkt. 1in = 72.27ptReferenz für alle Längen
bpBig Point. 1in = 72bpPostScript/PDF-Punkt
mmMillimeter. 1mm ≈ 2.845ptmetrisch
cmZentimeter. 1cm = 10mmmetrisch
inZoll. 1in = 72.27ptimperial
pcPica. 1pc = 12pttraditionelle typografische Einheit
spScaled Point. 1pt = 65536spkleinste TeX-Einheit (intern)
em≈ aktuelle Schriftgröße / Breite von Mschriftrelativ; horizontal
exx-Höhe der aktuellen Schriftschriftrelativ; vertikal
ddDidot-Punkt. 1dd ≈ 1.07pteuropäische Tradition; cc = 12dd

sp (scaled point) ist TeXs kleinste interne Einheit für Längen: 1pt = 65536sp. Man schreibt sie praktisch nie selbst, aber sie markiert die feinste Genauigkeit, mit der TeX arbeitet. Die europäischen Buchdruckeinheiten dd (Didot-Punkt) und cc (Cicero, cc = 12dd) sind ebenfalls verfügbar, erscheinen in modernen Dokumenten aber selten.

Das schriftrelative em entspricht ungefähr der aktuellen Schriftgröße (traditionell der Breite eines großen M) und eignet sich für Einzüge und horizontale Abstände. ex ist die x-Höhe der Kleinbuchstaben und dient vertikaler Feinkorrektur. Bei 10pt Schrift gilt 1em ≈ 10pt. Im Mathematikmodus gibt es zusätzlich mu (math unit), 1/18 eines em; Abstände wie \quad sind damit definiert.

Gummilängen (elastischer Raum)

Eine feste Länge wie 12pt ist eine starre Länge. Eine Länge, die sich bei Bedarf dehnen und schrumpfen kann, heißt Gummilänge. Mit plus gibst du Dehnraum, mit minus Schrumpfraum an. 1cm plus 2mm minus 1mm bedeutet zum Beispiel: normalerweise 1cm, dehnbar bis 1,2cm, schrumpfbar bis 0,9cm. LaTeX nutzt diesen Spielraum, um Zeilen und Seiten natürlich auszugleichen.

latex
% 通常 1cm、最大 1.2cm まで伸び、最小 0.9cm まで縮む縦アキ
\vspace{1cm plus 2mm minus 1mm}

Die besondere Gummilänge mit unendlicher Dehnbarkeit ist \fill. Ihre natürliche Länge ist 0, aber sie wächst so weit wie nötig; ideal, um „den Rest des Raums auseinanderzuschieben“. Mehrere \fill in derselben Zeile oder Spalte teilen den Raum gleichmäßig. Für gewichtete Verhältnisse nutze \stretch{n} (= n mal \fill): \hspace{\stretch{2}}…\hspace{\stretch{1}} teilt den Abstand 2:1.

Horizontaler Raum

Der Grundbefehl für horizontalen Raum in einer Zeile ist \hspace{Länge}: \hspace{2cm} fügt 2cm Abstand ein. Ein \hspace am Zeilenanfang oder -ende wird jedoch beim Absatzumbruch verworfen, damit kein leerer Raum am Rand klebt. Soll der Raum auch am Zeilenrand bleiben, verwende die Sternform \hspace*{Länge}.

\hfill ist Kurzform für \hspace{\fill} und schiebt die Dinge links und rechts möglichst weit auseinander; klassisch, um ein Wort linksbündig und eines rechtsbündig zu setzen. Auch das wird am Zeilenrand verworfen, also nimm \hspace*{\fill}, wenn es sicher bleiben muss. Statt leerem Raum kannst du die Lücke mit einer Linie über \hrulefill oder mit Punkten über \dotfill füllen, etwa zwischen Eintrag und Seitenzahl im Inhaltsverzeichnis.

latex
Name:\hspace{2cm}Date:\par
\noindent 第1章 はじめに\dotfill 1\par
\noindent\hfill

Für kleine feste Abstände sind schriftrelative Befehle bequem. \quad ist 1em (= 18mu), \qquad das Doppelte, also 2em. Für einen sehr schmalen Abstand nimm \, (thin space, 3mu). Weil diese Abstände der Schrift folgen, bleibt die visuelle Balance bei Größenänderungen erhalten.

Vertikaler Raum

Für vertikalen Raum, etwa zwischen Absätzen, verwendest du \vspace{Länge}. Wie bei \hspace wird Raum an einer Seitengrenze verworfen, damit oben auf einer Seite kein leerer Streifen entsteht. Soll er auch über einen Seitenumbruch hinweg bleiben, nutze \vspace*{Länge}. \vfill entspricht \vspace{\fill} und schiebt den restlichen Spaltenraum vertikal auseinander, praktisch zum Beispiel für eine einzeilige Seite in der Vertikalmitte.

Für alltägliche vertikale Abstände gibt es drei vorbereitete Befehle: \smallskip, \medskip, \bigskip. In den Standardklassen sind ihre Werte 3pt plus 1pt minus 1pt, 6pt plus 2pt minus 2pt und 12pt plus 4pt minus 4pt. Alle sind Gummilängen und passen sich leicht an die Seite an. Diese Befehle statt hart codierter Werte zu verwenden hält das Dokument einheitlich.

Längen definieren und verwenden

Wenn dieselbe Länge an vielen Stellen im Dokument gebraucht wird, erleichtert ein Längenregister wie eine Variable die Wartung. \newlength{\mylen} deklariert eine neue Länge \mylen, \setlength{\mylen}{2em} weist den Wert zu, und \addtolength{\mylen}{1pt} verändert ihn. Ändere den Wert an einer Stelle und alle Verwendungen folgen.

Du kannst auch mit vorhandenen Längen rechnen, etwa \textwidth (Textbreite), \linewidth (aktuelle Zeilenbreite) und \baselineskip (Zeilenabstand). Ein vorangestellter Faktor skaliert sie: 0.8\textwidth sind 80% der Textbreite. Für reichere Arithmetik lade das Paket calc; damit kannst du Ausdrücke mit + - * / schreiben.

document.tex
\usepackage{calc}
% ...
\newlength{\halfcol}
\setlength{\halfcol}{(\textwidth - 2em) / 2}
\noindent\hspace*{0.8\textwidth}右寄せの見出し

Wenn Längen so relativ zu vorhandenen Breiten aufgebaut sind, bleiben Proportionen auch bei anderem Papierformat oder anderen Rändern erhalten. Ein Ausdruck auf Basis von \textwidth macht das Dokument deutlich robuster gegenüber Layoutänderungen als ein fest codierter Wert wie 8cm.