LaTeX Tabellen
Tabellen in LaTeX sind ein sehr umfangreiches Thema, da es neben den Standard Umgebungen für das Erstellen von Tabellen wie zum Beispiel tabular
, um nur eine davon zu nennen, viele zusätzliche Pakete mit neuen Umgebungen beziehungsweise mit Anpassungen für die Standard Umgebungen gibt. Was insbesondere am Anfang etwas verwirrend ist, da es scheinbar für jedes Teilproblem ein eigenes Paket gibt. Daher war früher bereits der Satz einer Tabelle an sich ein Problem, das hat sich aber mit dem Aufkommen von zahlreichen Tabellengeneratoren für LaTeX Tabellen deutlich verbessert, sodass Sie heutzutage eher die Qual der Wahl in Bezug darauf welchen Generator Sie verwenden möchten, und das Setzen der Tabelle als solcher weniger das Problem darstellt.
Da es bereits viele Einführungen zum Thema Tabellen gibt, wird dieser Bereich hier kurz gehalten. Der Schwerpunkt liegt auf den Problemen, die sich in der Praxis ergeben und für die es zumindest zurzeit noch keine automatisierten beziehungsweise vollständige Lösungen gibt.
Einführung
Einfache LaTeX Tabellen
Zellen zusammenfassen
Spalten zusammenfassen
Tabellen einfärben
Tabellen platzieren
Tabellen Fragen
Zeilenhöhe einer Tabelle ändern
Tabelle zentrieren
Zeilenumbruch in einer Zelle
Feste Spaltenbreiten definieren
Zwei Tabellen nebeneinander
Tabelle querformat
Schriftgröße in einer Tabelle ändern
Einfache LaTeX Tabellen
Die nachfolgende Beispieltabelle zeigt bereits die meisten der Standard Parameter und Befehle, die für den Satz einer Tabelle möglich sind.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{tabular}{|l|c|r|p{1.5 cm}|} \hline left & center & right & Breite \\ l & c & r & p \\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Mithilfe der tabular
Umgebung können Tabellen gesetzt werden. Diese Umgebung hat ein verpflichtendes Argument, die Definition der Spalten. Hier werden vier verschiedene Varianten verwendet, das kleine l
(nicht mit einer 1 zu verwechseln) erzeugt eine linksbündige Spalte, das kleine c
eine zentrierte und das kleine r
eine rechtsbündige Spalte. Die Breite der Spalten wird dabei durch die breiteste Zelle in der Spalte festgelegt. Das kleine p
erzeugt eine linksbündige Spalte, deren Breite hier 1,5 cm beträgt. Die vertikalen Striche |
im Argument von tabular
sorgen dafür, dass die Tabelle an diesen Stellen vertikale Striche über die gesamte Höhe der Tabelle hat. Der \hline
Befehl sorgt für die horizontalen Striche. Die einzelnen Zellen innerhalb einer Tabellenzeile werden durch die & Symbole voneinander getrennt. Die Tabellenzeile wird mit \\
beendet. Die Gesamtbreite der Tabelle ergibt sich, vereinfacht formuliert, aus der Summe der Breiten der einzelnen Spalten. Im Fall, dass Sie mehr Spalten in einer Zeile verwenden, wie Sie definiert haben, erhalten Sie eine Fehlermeldung.
Zellen Zusammenfassen
Mit dem \multicolumn
Befehl lassen sich mehrere nebeneinander liegenden Zellen in einer Tabellenzeile zu einer neuen Zelle zusammenfassen. Diese neue Zelle kann eine neue Textausrichtung besitzen. Der Befehl ist dabei wie folgt aufgebaut \multicolumn{Anzahl der Zellen}{Ausrichtung der neuen Zelle}{Inhalt der neuen Zelle}. Das nachfolgende Beispiel illustriert das Vorgehen.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{tabular}{|c|c|c|l|r|} \hline 1 & 2 & 3 & 4 & 5 \\ \hline \multicolumn{3}{|r|}{test} & A & B \\ \hline 1 & 2 & 3 & 4 & 5 \\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Mit dem \multirow
Befehl aus dem gleichnamigen multirow
Paket lassen sich mehrere übereinander stehende Zellen in einer Tabellenspalte zu einer neuen Zelle zusammenfassen. Der Befehl ist dabei wie folgt aufgebaut \multirow{Anzahl der Zeilen}{Breite der Spalte}{Inhalt der neuen Zelle}
. Auch hier wird das Vorgehen durch ein Beispiel illustriert.
\documentclass[margin=10pt]{standalone} %... \usepackage{multirow} %... \begin{document} %... \begin{tabular}{|l|l|l|} \hline Teacher & Title & Year \\ \hline \hline \multirow{3}{*}{Dave Miller} & First steps \LaTeX{} & 2004 \\ & \LaTeX{} course & 2005 \\ & \LaTeX{} seminar & 2009 \\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Die zwei gezeigten Befehle \multicolumn
und \multirow
können auch kombiniert werden. Dabei ist lediglich auf die Reihenfolge zu achten, dass sich der multirow
Befehl innerhalb des multicolumn
Befehls befindet, wie im nachfolgenden Beispiel gezeigt wird.
\documentclass[margin=10pt]{standalone} %... \usepackage{multirow} %... \begin{document} %... \begin{tabular}{|ccc|c|} \hline BBB & CCC & DDD & AAA\\ \hline \multicolumn{3}{|c|}{\multirow{2}{*}{multicolumn \& multirow}}& AAA \\ \cline{4-4} & & & AAA \\ \hline BBB & CCC & DDD & AAA\\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Bunte Tabellen
Mithilfe des xcolor
Paketes lassen sich Spalten columncolor
, Zeilen rowcolor
und einzelnen Zellen cellcolor
in einer Tabelle einfärben. Die Nutzung setzt voraus, dass die Option table
beim xcolor
Paket gesetzt wird. Nachfolgend ein entsprechendes Beispiel.
\documentclass[margin=10pt]{standalone} %... \usepackage[table]{xcolor} %... \begin{document} %... \begin{tabular}{r>{\columncolor{red}}cl} \cellcolor{blue}A & B & C \\ 1 & 2 & 3 \\ \rowcolor{green}A & B & C \\ 1 & 2 & 3 \\ \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Tabellen platzieren und beschriften
Um eine Tabelle platzieren zu können, wird diese innerhalb einer table
Umgebung gesetzt. Dadurch wird die Tabelle zu einem Gleitobjekt (engl. float) und dieses kann dann platziert und beschriftet werden. Dies wird in den zwei Posts table
und floats
genauer behandelt.
Top Tabellen Fragen
Im nachfolgenden Abschnitt werden die typischen Fragen aus dem Bereich der Tabellen gezeigt und mögliche Lösungsansätze für die jeweiligen Problemstellungen gezeigt. Es kann durchaus sein, dass es (inzwischen) bessere Lösungen gibt.
Zeilenhöhe einer Tabelle ändern
Wenn sie die Höhe aller Zeilen einer bestimmten Tabelle ändern möchten, so reicht es das Kommando \renewcommand{\arraystretch}{Faktor}
vor dieser Tabelle zu verwenden. Sollen die Zeilen doppelt so hoch sein wie normal \renewcommand{\arraystretch}{2}
und wenn sie nur halb so groß wie normal seien sollen \renewcommand{\arraystretch}{0.5}
. Bei der Verwendung von arraystretch
sollten Sie darauf achten nach der Tabelle den arraystretch
wieder auf 1 zu stellen, da sich sonst die gewählte Einstellung auf alle nachfolgenden Tabellen und Arrays aus wirkt. Dies wird mit \renewcommand{\arraystretch}{1}
verhindert.
Im Fall, dass Sie nur die Höhe einer Zeile vergrößern möchten, gibt es die Möglichkeit den \rule
Befehl mit Breite null und der gewünschten Höhe zu verwenden, zum Beispiel \rule{0pt}{25pt}
sorgt in der Zeile für eine Höhe von 25 Punkten. Das Verhalten wird im nachfolgenden Beispiel gezeigt.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{tabular}{|r|c|l|} \hline A & B & C \\ \hline \rule{0pt}{25pt}1111 1111 1111 & 2222 2222 2222 & 3333 3333 3333 \\ \hline 4 & 5 & 6 \\ \hline 7 & 8 & 9 \\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Tabelle zentrieren
Wenn Sie eine Tabelle zentrieren möchten, können Sie die center
Umgebung verwenden.
\documentclass{article} %... \begin{document} %... Dieser Text ist nur sinnloser Text. Und hat auch nichts mit dem Problem zu tun. \begin{center} \begin{tabular}{|l|c|r|p{1.5 cm}|} \hline left & center & right & Breite \\ l & c & r & p \\ \hline \end{tabular} \end{center} Er dient nur dazu, das Beispiel zu veranschaulichen. \end{document}
Mit der folgenden Ausgabe.
Im Fall, dass Sie die Tabelle innerhalb einer table
Umgebung setzen, können Sie den Befehl \centering
nutzen.
\documentclass{article} %... \begin{document} %... Dieser Text ist nur sinnloser Text. Und hat auch nichts mit dem Problem zu tun. \begin{table} \centering \begin{tabular}{|l|c|r|p{1.5 cm}|} \hline left & center & right & Breite \\ l & c & r & p \\ \hline \end{tabular} \end{table} Er dient nur dazu, das Beispiel zu veranschaulichen. %... \end{document}
Mit der folgenden Ausgabe.
Tabelle Spaltenbreite definieren
Spalten mit festen Breiten definieren. Zwar gibt es im LaTeX Standard mit der p
Spalte eine Spalte, bei der die Breite vorgegeben werden kann, aber die Ausrichtung kann nicht verändert werden. Im Fall, dass nur linksbündige Spalten mit fester Breite benötigt werden, stellt das bereits die Lösung dar. Im nachfolgenden Beispiel sind drei Spalten mit einer definierten Breite gesetzt.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{tabular}{|p{1cm}|p{2cm}|p{3cm}|} \hline 1 cm breit & 2 cm breit & 3 cm breit\\ \hline Test 1 & Test 2 & Test 3 \\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Im Fall, dass Sie Spalten mit einer anderen Ausrichtung benötigen, erfordert das etwas mehr Aufwand und die Verwendung zweier zusätzlicher Pakete dem tabularx
und ragged2e
Paket. Wenn die entsprechenden Spaltentypen, wie im nachfolgenden Beispiel gezeigt werden, definiert werden, sind dann Spalten in allen vier Ausrichtungen, linksbündig, zentriert, rechtsbündig und im Blocksatz, möglich.
\documentclass[margin=10pt]{standalone} %... \usepackage{tabularx} \usepackage{ragged2e} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} \newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} \newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} \newcolumntype{J}[1]{>{\justifying\arraybackslash}p{#1}} %... \begin{document} %... \begin{tabular}{|L{1cm}|C{2cm}|R{3cm}|J{4cm}|} \hline 1 cm breit & 2 cm breit & 3 cm breit & 4 cm breit\\ \hline Test 1 & Test 2 & Test 3 & Test 4\\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Zwei Tabellen nebeneinander
Um zwei Tabellen nebeneinander zu setzen, kann eine dritte Tabelle verwendet werden.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{tabular}{ll} \begin{tabular}{|r|c|l|} \hline 1 & 2 & 3 \\ \hline A & B & C \\ \hline 1 & 2 & 3 \\ \hline \end{tabular} & \begin{tabular}{cccc} I & II & III & IV \\ \hline AA & BB & CC & DD \\ \end{tabular} \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.
Daneben gibt es noch die Möglichkeit, die Tabellen mithilfe der minipage
Umgebung nebeneinander zu platzieren, beziehungsweise die subtable
Umgebung des subcaption
Paketes zu nutzen.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{minipage}{0.4\textwidth} \begin{tabular}{|r|c|l|} \hline 1 & 2 & 3 \\ \hline A & B & C \\ \hline 1 & 2 & 3 \\ \hline \end{tabular} \end{minipage} \begin{minipage}{0.5\textwidth} \begin{tabular}{cccc} I & II & III & IV \\ \hline AA & BB & CC & DD \\ \end{tabular} \end{minipage} %... \end{document}
Mit der folgenden Ausgabe.
\documentclass{article} %... \usepackage{subcaption} %... \begin{document} %... \begin{table} \begin{subtable}[c]{0.5\textwidth} \begin{tabular}{|r|c|l|} \hline 1 & 2 & 3 \\ \hline A & B & C \\ \hline 1 & 2 & 3 \\ \hline \end{tabular} \end{subtable} \begin{subtable}[c]{0.5\textwidth} \begin{tabular}{cccc} I & II & III & IV \\ \hline AA & BB & CC & DD \\ \end{tabular} \end{subtable} \end{table} \end{document}
Mit der folgenden Ausgabe.
Tabelle querformat
Tabellen können mithilfe der landscape
Umgebung aus dem pdflscape
Paket im Querformat gesetzt werden.
\documentclass{article} %... \usepackage{pdflscape} %... \begin{document} %... \begin{landscape} Jetzt wird alles querkant ausgerichtet, auch die folgende Tabelle.\par \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|} \hline Jahr & 2000 & 2001 & 2002 & 2003 & 2004 & 2005 & 2006 & 2007 & 2008 & 2009 & 2010 \\ \hline BIP & 23{,}5 Mrd & 123{,}5 Mrd & 223{,}5 Mrd& 323{,}5 Mrd & 423{,}5 Mrd & 523{,}5 Mrd & 623{,}5 Mrd & 723{,}5 Mrd& 823{,}5 Mrd & 923{,}5 Mrd & 1023{,}5 Mrd \\ \hline \end{tabular} \end{landscape} %... Ab hier ist das Dokument wieder hochkant. \end{document}
Schriftgröße in einer Tabellen
Die Schriftgröße einer Tabelle kann über die Schriftgrößen Umgebungen beeinflusst werden, daneben steht auch die Möglichkeit zur Verfügung, die Schriftgröße in einer einzelnen Spalte zu verändern.
Das erste Beispiel zeigt eine Tabelle in extra groß.
\documentclass[margin=10pt]{standalone} %... \begin{document} %... \begin{Large} \begin{tabular}{|r|c|l|} \hline AAA & BBB & CCC \\ \hline 111 & 222 & 333 \\ \hline \end{tabular} \end{Large} %... \end{document}
Mit der folgenden Ausgabe.
Das zweite Beispiel zeigt, wie mithilfe des array
Paketes eine Spalte in ihrer Schriftgröße beeinflusst wird.
\documentclass[margin=10pt]{standalone} %... \usepackage{array} %... \begin{document} %... \begin{tabular}{rc>{\tiny}b{2cm}} \hline A & B & {\normalsize C} \\ \hline 1 & 2 & 3 \\ \hline 4 & 5 & 6 \\ \hline 7 & 8 & 9 \\ \hline \end{tabular} %... \end{document}
Mit der folgenden Ausgabe.