tabular
Die LaTeX-Standard-Tabellenumgebung.
Die Syntax:
<pos>
erlaubt die Positionierung der Tabelle relativ zur Grundlinie in der sich die Tabelle befindet, erlaubte Werte sind t
, b
und c
, Voreinstellung ist c
:
Open in Online-Editor\documentclass{article}
\begin{document}
x\begin{tabular}[t]{l}
a \\ b
\end{tabular}x
x\begin{tabular}[b]{l}
a \\ b
\end{tabular}x
x\begin{tabular}[c]{l}
a \\ b
\end{tabular}x
\end{document}
Im Argument <col spec>
werden die Spalten der Tabelle deklariert. Erlaubte Werte sind
l
links ausgerichtete Spalte, die Breite wird dem breitesten Eintrag angepasst.
c
zentrierte Spalte, die Breite wird dem breitesten Eintrag angepasst.
r
rechts ausgerichtete Spalte, die Breite wird dem breitesten Eintrag angepasst.
p{<breite>}
Absatz-Spalte der Breite <breite>
. Ist der Eintrag breiter als die angegebene Breite, erfolgt in dieser Spalte ein Zeilenumbruch im Gegensatz zu den drei anderen Spaltentypen.
|
fügt zwischen den Spalten, zwischen denen es verwendet wird, einen senkrechten Strich zur Spaltentrennung ein.
@{<decl>}
kann zwischen Spalten verwendet werden, um das Material <decl>
statt des üblichen Leerraums einzufügen.
*{<Zahl>}{<col spec>}
kann verwendet werden, um <col spec>
mit dem Faktor <zahl>
zu duplizieren. l*{3}{c}r
ist gleichbedeutend zu lcccr
.
Sowohl |
als auch @{<decl>}
können auch zu Beginn und am Ende der Spaltendeklaration verwendet werden, müssen also nicht zwischen zwei Spalten eingesetzt werden.
Open in Online-Editor\documentclass{article}
\begin{document}
X\begin{tabular}{|l|l|}
a & b \\
a & b
\end{tabular}X
X\begin{tabular}{@{}l@{}l@{}}
a & b\\
a & b
\end{tabular}X
X\begin{tabular}{|@{}l@{}|@{}l@{}|}
a & b\\
a & b
\end{tabular}X
X\begin{tabular}{|@{}l|l@{}|}
a & b\\
a & b
\end{tabular}X
X\begin{tabular}{@{x}l@{y}l@{z}}
a & b\\
a & b
\end{tabular}X
\end{document}
Die erlaubten Deklarationen werden durch das array
-Paket noch um 5 weitere erweitert. Das Verhalten von |
ändert sich durch Laden des array
-Pakets.
tabular*
Die tabular*
-Tabelle ist ebenfalls eine LaTeX-Standard-Tabellenumgebung. Sie hat die gleiche Syntax wie die tabular
-Umbgebung mit einem Unterschied:
Sie hat ein Argument, mit dem die gewünschte Breite der Tabelle angegeben wird. Dafür muss allerdings dehnbarer Leerraum an geeigneten Stellen eingefügt werden:
Open in Online-Editor\documentclass{article}
\begin{document}
X\begin{tabular*}{.5\textwidth}{|ll|}
a & b \\
a & b
\end{tabular*}X
X\begin{tabular*}{.5\textwidth}{|l@{\extracolsep{\fill}}l|}
a & b \\
a & b
\end{tabular*}X
\end{document}
tabularx
Die Umgebung tabularx
wird vom tabularx
-Paket bereitgestellt. Sie ist eine letztlich eine bequemere Version der tabular*
-Umgebung.
Das Paket stellt den zusätzlichen Spaltentyp X
bereit, der in der Voreinstellung einer p{<breite>}
-Spalte entspricht, deren Breite aber automatisch bestimmt wird.
Open in Online-Editor\documentclass{article}
\usepackage{tabularx}
\begin{document}
X\begin{tabularx}{.5\textwidth}{|XX|}
a & b \\
a & b
\end{tabularx}X
X\begin{tabularx}{.5\textwidth}{|Xl|}
a & b \\
a & b
\end{tabularx}X
X\begin{tabularx}{.5\textwidth}{|lX|}
a & b \\
a & b
\end{tabularx}X
\end{document}
Eine X
-Spalte wird gemäß folgender Definition gesetzt:
Durch Umdefinition kann man die Art der X
-Spalten also ändern, zum Beispiel mit dem array
-Paket (das von tabularx
bereits geladen wird):
Unterschiede zwischen tabular*
und tabularx
:
tabularx
modifiziert die Breite der Spalten, tabular*
die Breite der Zischenräume zwischen den Spalten.
tabular*
kann ohne Einschränkung verschachtelt werden. Wenn man eine tabularx
-Umgebung in einer zweiten verwenden will, muss die innere mit {...}
umschlossen werden.
- Der »Körper« einer
tabularx
-Umgebung ist Argument zu einem Befehl, das heißt das Dinge wie \verb
nicht verwendet werden können. In der Tat wird \verb
zum Teil unterstützt, kann allerdings nicht uneingeschränkt verwendet werden.
tabularx
ist langsamer, da es den Inhalt mehrfach setzt, um die richtige Breite zu finden.
- Der Inhalt einer
tabularx
wird für die Testläufe mehrfach expandiert, was u.U. problematisch werden kann.
tabulary
Die tabulary
-Umgebung wird vom tabulary
-Paket bereitgestellt. Auf den ersten Blick ist die Syntax die gleiche wie bei tabularx
:
Allerdings bietet es vier neue Spaltentypen für die Verwendung mit tabulary
:
Open in Online-Editor\documentclass{article}
\usepackage{tabulary}
\begin{document}
X\begin{tabulary}{.5\textwidth}{|LLLL|}
a & b b b b & c c c c c c c c & d d d d d d d d d d d d d d d d \\
a & b b b & c c c c c c & d d d d d d d d d d d d d d
\end{tabulary}X
X\begin{tabulary}{.5\textwidth}[t]{|RRRR|}
a & b b b b & c c c c c c c c & d d d d d d d d d d d d d d d d \\
a & b b b & c c c c c c & d d d d d d d d d d d d d d
\end{tabulary}X
X\begin{tabulary}{.5\textwidth}[t]{|CCCC|}
a & b b b b & c c c c c c c c & d d d d d d d d d d d d d d d d \\
a & b b b & c c c c c c & d d d d d d d d d d d d d d
\end{tabulary}X
X\begin{tabulary}{.5\textwidth}[t]{|JJJJ|}
a & b b b b & c c c c c c c c & d d d d d d d d d d d d d d d d \\
a & b b b & c c c c c c & d d d d d d d d d d d d d d
\end{tabulary}X
\end{document}
Das Beispiel zeigt auch gleich, dass hier die Verteilung der Breite anhand des Inhalts erfolgt. Dabei wird eine Spalte nie schmaller als in \tymin
gespeichert (anfangs auf 10pt gesetzt) und nie breiter als \tymax
(anfangs auf das Doppelte von \textwidth
gesetzt). Zitat des Manuals:
The width of these converted columns
is proportional to the natural width
of the longest entry in each column.
Die Spalten basieren alle auf einer p
-Spalte. tabulary
macht mehrere Durchgänge: zu Beginn werden alle Spalteneinträge als einzelne (u.U. sehr langen) Zeilen gesetzt und deren Länge gemessen. Später werden die Spalten dann proportional zu den gemessenen Längen an die verfügbare Breite angepasst. Dabei werden alle Spalten, deren natürliche Breite größer als \tymax
ist, auf die gleiche Breite gesetzt.
Für tabulary
gelten ansonsten die gleichen Einschränkungen, wie sie für tabularx
im Vergleich mit tabular*
genannt wurden.
beantwortet
03 Nov '15, 19:04
cgnieder
22.1k●25●34●63
Akzeptiert-Rate:
60%
Die
tabular
Umgebung sollte in jeder Einführung beschrieben sein. Für die anderen beiden Umgebungen muss man Pakete laden, die auch eine Dokumentation haben. Wie man Dokumentationen findet, ist unter »Wo bzw. wie finde ich die Anleitung zu einem Paket oder einer Klasse« erklärt. Es gibt auch ein Buch von Herbert Voß zum Thema Tabellen »Tabellen mit LaTeX«, das sich auch mit den verschiedenen Tabellenumgebungen beschäftigt.Hmm ok. Ich habe die Frage ehrlich gesagt für die Datenbank gestellt. Dachte es sei nicht verkehrt, wenn es ordentlich erklärt wird.
Ok, dann habe ich mal das
archiv
Tag bei der Frage ergänzt. Es gibt für solche Fragen auch einen vorgespeicherten Kommentar (den Link findest Du unter dem Kommentarkasten) den man als Fragesteller gleich mit ergänzen kann, um solche Missverständnisse zu vermeiden.Archiv-Fragen sind sehr willkommen. Solche Erklärungen können manchmal aufschlussreicher sein, oder schneller zu finden und zu verlinken, als Bücher und verteilte Paket-Dokumentationen. Zumal: User googlen gern, und ihre Frage im Titel einer Seite lässt sie unsere Antwort schnell finden. Wie Johannes sagt, eine Lehr-Frage könnte schön einleitend formuliert sein.
Und Archiv-Tag plus Standardkommentar (wie esdd schrieb) zeigt uns, dass nicht schneller Support nötig ist (Link auf Paket oder schneller Buchhinweis) sondern der, wer Zeit hat und das möchte, kann in Ruhe eine ausformulierte Antwort für das Archiv schreiben. Kurzum, Archiv-Fragen in dieser Weise sind sehr, sehr willkommen in meinen Augen!
Es gibt übrigens auch noch
tabularx*
,stable
,stableto
,stablesp
,tabularw
,tabu
,longtabu
,longtable
,supertabular
und sicher noch mehr.@saputello Deswegen ja auch "sind mir...bekannt". :)
Ich meinte übrigens nicht
tabularx*
, sonderntabular*
. Das ist eine LaTeX-Kern-Umgebung, die daher in jeder ausführlichen LaTeX-Einführung erklärt sein sollte.