Lange Tabellen mit longtable

Der ein oder andere kennt das Problem vielleicht. Man hat eine Tabelle, welche jedoch über eine Seitenlänge hinausragt. Was nun?

Entweder man zerstückelt sie mühevoll per Hand, oder verwendet das praktische Packet longtable. Die Tabelle bindet man mit
\begin{longtable}{|c|c|c|c|}
\end{longtable}

ein. Dazwischen kommen analog zur tabular-Umgebung die Tabelleneinträge.
\begin{longtable}{|c|c|c|c|}
\hline
\multicolumn{4}{|l|}{Ich bin die Kopfzeile} \
\hline
zelle 11 & zelle 12 & zelle 13 & zelle 14 \
...
zelle n1 & zelle n2 & zelle n3 & zelle n4 \
\hline
\multicolumn{4}{|l|}{Ich bin eine Fußzeile} \
\end{longtable}

Bei diesem Code hat man jedoch nur eine Kopf und Fußzeile ganz am Anfang bzw. ganz am Ende der Tabelle. Will man jedoch auf jeder Seite eine Kopf- und Fußzeile haben, muss man diese nun einstellen. Hierbei spielen die erste Kopfzeile und die letzte Fußzeile eine gesonderte Rolle und müssen separat definiert werden.

Hierfür teilt man das Innenleben der longtable-Umgebung in 5 Bereiche ein:
{Kopf am Tabellenanfang}
\endfirsthead
{Tabellenkopf auf jeder weiteren Seite}
\endhead
{Tabellenfuß auf allen außer der letzten Seite}
\endfoot
{Tabellenfuß auf der letzten Seite}
\endlastfoot
{Inhalt der Tabelle}

Wie man sieht, wird jeder Bereich durch einen Befehl beendet, der dem Compiler sagt, um welchen Teil der Tabelle es sich handelt. Dabei kommt es nicht auf die Reihenfolge der ersten vier Bereiche an. Innerhalb der Bereiche kann man z.B. eine Beschriftung (\caption) setzten oder eine spaltenübergreifende Zelle (\multicolumn) einfügen. Will man z.B. über jeden weiteren Tabellenseite die Zeile "Fortsetzung" stehen haben, müsste der Code vor\endhead wie folgt aussehen:
\multicolumn{4}{l}{\sl Fortsetzung} \[5pt]
Hierbei sorgt die Angabe [5pt] dafür, dass die restliche Tabelle nicht direkt unter dem Text klebt, sondern dazwischen ein kleiner Abstand (5pt) eingefügt wird.

Möchte man nun z.B. eine auf jeder Seite komplett "umboxte" Tabelle haben, welche auf jeder Seite mit den Spaltenüberschriften beginnt und auf der letzten Seite mit einer Beschriftung inklusive Label endet, wie im vorhergehenden Bild, kann man folgenden Code verwenden:
\begin{longtable}{|c|c|c|c|}
\hline
Name 1 & Name 2 & Name 3 & Name 4 \
\hline
\hline
\endfirsthead
\multicolumn{4}{l}{\sl Fortsetzung} \[5pt] \hline
Name 1 & Name 2 & Name 3 & Name 4 \
\hline
\hline
\endhead
\hline
\endfoot
\hline
\multicolumn{4}{l}{\phantom{dieser Text taucht nicht auf}} \[5pt]
\caption{Die Beschriftung der Tabelle} \label{der_referenzname}
\endlastfoot
zelle 11 & zelle 12 & zelle 13 & zelle 14 \
... & ... & ... & ... \
zelle n1 & zelle n2 & zelle n3 & zelle n4 \
\end{longtable}

Auch vor der Beschriftung muss manuell etwas Leerraum eingefügt werden. Da dies nicht ohne weiteres geht, behelfe ich mir mit dem Trick eines Textes, der nicht angezeigt wird. Dies kann man mit dem Befehl \phantom erreichen. Ein Inhalt in der Zeile ist notwendig, damit man den Abstand verändern kann. Alle anderen Möglichkeiten (\vspace oder [0.2cm]) haben bei mir nicht funktioniert.

Das Ergebnis könnt ihr euch als pdf (20kb) ansehen und die dazugehörige .tex-Datei downloaden: longtable.tex.

3 comments

  1. endlich wurde die longtable mal verstaendlich erklaert!

  2. Hey! Mein erster Versuch, eine longtable zu setzen, und dank euch auch gleich ein Erfolg! Gut erklärt. Respekt!

  3. Du hast mich gerettet. Nun kann ich endlich in der Picture-Umgebung Farben einsetzen und bunte Bilder malen.

    Danke!