Für Tabellenlinien gibt es drei Ansätze. Die in LaTeX eingebauten \hline / \cline zusammen mit dem Spaltenspezifizierer |; das Paket booktabs (\toprule, \midrule, \bottomrule) für professionelle Tabellen; und hhline für genaue Kontrolle über doppelte Linien und deren Kreuzung mit vertikalen Linien. Standardlinien sind schnell gesetzt, aber zu viele Linien machen eine Tabelle schwer lesbar. Diese Seite geht die drei Ebenen nacheinander durch und zeigt, warum booktabs als Standard empfohlen wird.
Standardlinien — \hline, \cline, |
Die horizontale Linie, die reines LaTeX bereitstellt, ist \hline. Nach dem \\ einer Zeile oder ganz am Anfang bzw. Ende der Tabelle platziert, zieht sie eine einzelne Linie über die ganze Tabellenbreite. Zwei direkt hintereinander, \hline\hline, ergeben eine doppelte horizontale Linie mit dem Abstand \doublerulesep. Das \\ nach der letzten Zeile kann normalerweise entfallen; wenn darunter ein \hline stehen soll, muss die Zeile aber zuerst mit \\ geschlossen werden.
Wenn mitten in der Tabelle nur einige Spalten eine horizontale Linie bekommen sollen, verwenden Sie \cline{i-j}: Die Linie läuft nur von Spalte i bis Spalte j, also zieht \cline{2-3} nur unter den Spalten 2 und 3 eine Linie. Mehrere getrennte Bereiche schreibt man nebeneinander, etwa \cline{1-1}\cline{3-4}. Vertikale Linien entstehen nicht im Tabellenkörper, sondern in der Spaltenspezifikation: Ein | in der Spezifikation, wie in {|l|c|r|}, setzt an dieser Stelle eine Linie über die ganze Tabellenhöhe; || ergibt eine doppelte vertikale Linie. Die Dicke dieser |-, \hline- und \vline-Linien ist die Länge \arrayrulewidth (Vorgabe 0.4pt), der Abstand zwischen Doppellinien ist \doublerulesep.
\begin{tabular}{|l|c|r|}
\hline
項目 & 個数 & 価格 \\
\hline\hline
りんご & 3 & 380 \\
\cline{2-3}
みかん & 12 & 120 \\
\hline
\end{tabular}Dieses Beispiel rahmt jede Spalte mit |, setzt unter den Kopf eine Doppellinie mit \hline\hline und trennt in der Mitte teilweise mit \cline{2-3} (nur Spalten 2 und 3). Es nutzt die ganze Bandbreite der Standardlinien – und ist gerade deshalb ein Muster für übermäßige Linien, die Sie vermeiden sollten.
Der Grund ist: Zu viele Linien schaden der Lesbarkeit. In der typografischen Tradition ist eine Linie kein Käfig um die Daten, sondern ein zurückhaltendes Mittel, das eine logische Gliederung der Information markiert. Vertikale Linien bauen besonders visuelle Wände zwischen Spalten und stören den Lesefluss; doppelte Linien wirken ohne Nutzen unnötig schwer. Simon Fear, Autor des im nächsten Abschnitt behandelten Pakets booktabs, schreibt, dieser Tabellenstil sei „über Jahrhunderte der Erfahrung etabliert worden und sollte nur unter außergewöhnlichen Umständen geändert werden“, und empfiehlt sparsame Tabellen nur mit horizontalen Linien, ohne vertikale und doppelte Linien.
booktabs — Tabellen in Publikationsqualität
booktabs von Simon Fear ist ein Paket, mit dem sich Tabellen setzen lassen, „wie sie in wissenschaftlichen Büchern und Zeitschriften erscheinen sollten“. Geladen wird es mit \usepackage{booktabs} in der Präambel. Gegenüber einfachem \hline unterscheidet es Linien nach Stärke und fügt automatisch angemessenen Abstand oberhalb und unterhalb jeder Linie ein. So entsteht eine saubere Tabelle, deren Struktur auch ohne Umrahmung klar lesbar ist.
Im Zentrum stehen drei Befehle: \toprule ganz oben in der Tabelle, \midrule zwischen Kopf und Körper, und \bottomrule ganz unten. \toprule und \bottomrule sind stärker gesetzt (Standard \heavyrulewidth = 0.08em), \midrule leichter (\lightrulewidth = 0.05em); dieser Stärkeunterschied macht äußere Kanten und innere Trennung sofort unterscheidbar. Alle können eine optionale Breite in eckigen Klammern erhalten (z. B. \toprule[1pt]) und stehen wie \hline nach dem \\ einer Zeile, außer \toprule, das direkt nach \begin{tabular}{...} kommt.
\begin{tabular}{@{}llr@{}}
\toprule
\multicolumn{2}{c}{品目} \\
\cmidrule(lr){1-2}
種類 & 状態 & 価格 \\
\midrule
りんご & 蜜入り & 380 \\
みかん & 訳あり & 120 \\
\addlinespace
合計 & & 500 \\
\bottomrule
\end{tabular}Dieses Beispiel enthält die wichtigsten booktabs-Elemente. Eine Linie nur über einige Spalten ist \cmidrule{a-b}, das booktabs-Gegenstück zu \cline. Da eine \cmidrule aber die volle Spaltenbreite erreicht und leicht an benachbarte Linien stößt, fügt man normalerweise einen Beschnitt hinzu. In Klammern schneiden (l), (r) oder (lr) die linke, rechte oder beide Seiten um \cmidrulekern (Standard 0.5em) zurück; (lr){1-2} setzt also eine beidseitig beschnittene Linie über Spalten 1–2. Der Beschnitt kann auch explizit angegeben werden, etwa (r{.75em}). Die vollständige Syntax ist \cmidrule[width](trim){a-b}.
Wenn zwischen zwei Zeilen etwas Abstand stehen soll, etwa vor einer Summenzeile, setzt du \addlinespace nach dem \\. Standardmäßig fügt es \defaultaddspace (0.5em) ein; mit \addlinespace[1ex] kann die Menge angegeben werden. Das ist klarer als eine einzelne Zeile mit \\[...] zu strecken, und rund um Linien erlaubt es genaue Kontrolle über den Abstand. Wenn Stärke sowie oberer und unterer Abstand wirklich alle von Hand gesetzt werden müssen, gibt es \specialrule{width}{above}{below} (alle drei Argumente Pflicht). Das ist für Sonderfälle; normalerweise reichen \toprule, \midrule und \bottomrule.
Die Philosophie von booktabs wird gleich zu Beginn in zwei einfachen Regeln formuliert: „Niemals vertikale Linien verwenden“ und „Niemals doppelte Linien verwenden.“ Fear schreibt, sie mögen extrem wirken, aber er habe nie ein gutes Argument dafür gefunden, sie zu brechen. Wenn zwei Hälften einer Tabelle so verschieden sind, dass man eine Trennlinie möchte, sollte man zwei Tabellen verwenden statt einer vertikalen Linie; über einer Summenzeile genügt eine einzelne \midrule. Auch technisch sind booktabs-Linien so gebaut, dass sie nicht an das | der Spaltenspezifikation anschließen. Das ist Absicht und soll vertikale Linien unattraktiv machen.
Eine weitere Regel: \hline nicht mit booktabs-Linien mischen. Fear sagt ausdrücklich, sie seien „nicht garantiert mit \hline oder \cline funktionsfähig … ich kann keinen Grund sehen, sie mischen zu wollen“. Nur im Ausnahmefall, dass zwei \cmidrules auf gleicher Höhe zu einer doppelten Teilregel gestapelt werden sollen, setzt man \morecmidrules dazwischen (\cmidrule{1-2}\morecmidrules\cmidrule{1-2}). Da doppelte Linien selbst unerwünscht sind, ist auch das keine Alltagsanwendung.
| Befehl | Rolle | Standardstärke / Abstand |
|---|---|---|
\toprule | Linie am Tabellenanfang | Stärke \heavyrulewidth = 0.08em |
\midrule | Trennt Kopf und Körper | Stärke \lightrulewidth = 0.05em |
\bottomrule | Linie am Tabellenende | Stärke \heavyrulewidth = 0.08em |
\cmidrule(lr){a-b} | Teilregel über Spalten a-b | Stärke \cmidrulewidth = 0.03em, Beschnitt \cmidrulekern = 0.5em |
\addlinespace | Zusätzlicher Abstand zwischen Zeilen | \defaultaddspace = 0.5em |
\specialrule | Vollständig festgelegte Linie | Alle drei Argumente Pflicht |
hhline — Kreuzungen von Linien steuern
hhline (von David Carlisle, Teil des LaTeX-tools-Bundles) zeichnet dieselben einfachen und doppelten horizontalen Linien wie \hline, lässt aber steuern, wie sie vertikale Linien kreuzen. Laden Sie es mit \usepackage{hhline}. Bei einer einfachen Doppellinie \hline\hline können Sie nicht wählen, ob eine vertikale Linie an der Kreuzung unterbrochen wird oder hindurchläuft; mit \hhline lässt sich das Zeichen für Zeichen festlegen. Es ist nützlich, wenn Sie wirklich doppelte oder partielle Linien mit vertikalen Linien kombinieren müssen, also in Situationen, die die eingebauten Befehle schlecht abdecken.
Das Argument von \hhline{…} ist eine Tokenfolge, die einer tabular-Spaltenspezifikation ähnelt. Die Zeichen bedeuten: = eine doppelte horizontale Linie in Spaltenbreite, - eine einfache horizontale Linie, ~ (Tilde) eine Spalte ohne Linie. Für Vertikalen gilt: | ist eine vertikale Linie, die durch die doppelte oder einfache Linie hindurchläuft, : ist eine von der Doppellinie unterbrochene vertikale Linie, und # ist ein Doppelliniensegment zwischen zwei vertikalen Linien. Außerdem gibt es t (obere Hälfte eines Doppelliniensegments) und b (untere Hälfte) zum Aufbau der Ecken einer Doppellinie; sie werden zwischen zwei vertikalen Linien verwendet (|t: ist die obere linke Ecke, :b| die untere rechte). Die gleiche Wiederholungsform *{n}{…} wie in Spaltenspezifikationen ist verfügbar.
Beachten Sie: Wenn Sie eine doppelte vertikale Linie (|| oder ::) angeben, werden die horizontalen Linien von \hhline dort unterbrochen. Soll eine horizontale Linie ohne Unterbrechung hindurchlaufen, verwenden Sie # oder lassen die vertikalen Linienspezifikatoren ganz weg. Das folgende Beispiel stammt aus der offiziellen Dokumentation und nutzt die meisten Funktionen.
\begin{tabular}{||cc||c|c||}
\hhline{|t:==:t:==:t|}
a & b & c & d \\
\hhline{|:==:|~|~||}
1 & 2 & 3 & 4 \\
\hhline{#==#~|=#}
i & j & k & l \\
\hhline{||--||--||}
w & x & y & z \\
\hhline{|b:==:b:==:b|}
\end{tabular}In dieser Tabelle baut die obere Zeile |t:==:t:==:t| die oberen Hälften der Doppellinien und die Ecken an den vertikalen Linien, die untere Zeile |b:==:b:==:b| die unteren Hälften, sodass der Doppellinienrahmen sauber an die vertikalen Linien anschließt. Die mittleren Zeilen mischen ~ (keine Linie) und # (ein Doppelliniensegment zwischen Vertikalen) und ändern von Zeile zu Zeile, wo horizontale Linien unterbrochen werden und wo sie durch Vertikalen hindurchlaufen. Solch komplexe Kreuzungen mit einfachem \hline / \cline nachzubilden ist nahezu unmöglich; genau dafür ist hhline gedacht: für die Details, an denen doppelte und vertikale Linien zusammentreffen.
Eine technische Anmerkung. Eine \hline ist ein einzelnes TeX-\hrule, eine \hhline-Linie wird dagegen aus vielen kleinen Segmenten aufgebaut. Sie werden im DVI korrekt platziert, doch manche Viewer oder Treiber richten die Segmentübergänge optisch nicht exakt aus. Wenn das stört, empfiehlt die Dokumentation, einen anderen Treiber zu versuchen oder \arrayrulewidth leicht zu erhöhen, um den Effekt zu mindern.
Welche Option verwenden
Das Fazit ist weitgehend eindeutig: Verwenden Sie booktabs als Standard für normale Tabellen. Schon die drei Linien \toprule / \midrule / \bottomrule, ergänzt um \cmidrule wo nötig, ergeben die zurückhaltenden, gut lesbaren Tabellen, wie man sie in Zeitschriften sieht. Wenn Sie der Empfehlung „keine vertikalen Linien, keine doppelten Linien“ folgen, hört die Linienfrage fast ganz auf, ein Problem zu sein.
booktabs— die erste Wahl für nahezu jede Tabelle: nur horizontale Linien, abgestimmte Stärke und Abstände, Publikationsqualität.- Standard-
\hline/\cline/|— praktisch, weil kein Paket nötig ist; geeignet für Gittertabellen oder schnelle Entwürfe. Übertreiben Sie die Linien nicht. hhline— nur für Spezialfälle, in denen Sie genau steuern müssen, wie doppelte und vertikale Linien sich kreuzen. Nicht für den Alltag.
Noch vor den Linien selbst bestimmt die Ausrichtung und Trennung der Spalten das Grundgerüst einer Tabelle. Die Grundlagen der Spaltenspezifikation finden Sie unter „Die tabular-Umgebung“; \multicolumn, Breitenspezifizierer und weitere Verfeinerungen unter „Spaltenspezifikationen im Detail“.