Longtable als tabular-Ersatz

Posted by quark007 | Posted in LaTeX | Posted on 14-11-2013-05-2008

0

In Zusammenhang mit meiner Tätigkeit an einer hiesigen Uni in deren Folge ich Skripte in LaTeX übersetzen soll, bin ich auf diese Tabellenerweiterung gestoßen. Eigentlich gedacht für mehrseitige Tabellen, scheint mir diese Fuktion doch wesentlich umfangreicher und optisch schöner als die normale Tabular-Umgebung. Daher hier eine kleine Einführung.

Zu Verwenden ist longtable wie tabular auch, jedoch hat es etwas mehr Einstellungsmöglichkeiten. Eine Tabelle würde z.B. so aussehen:

\begin{longtable}{p{3cm}|r|c|l|}
\caption{Das ist aber eine kleine Tabelle!\label{tab:1_kleine_tabelle}}\\
\setlength\LTleft{0pt}
\setlength\LTright{\fill}
\bfseries TitelSpalte1&\bfseries TitelSpalte2&\bfseries TitelSpalte3&\bfseries TitelSpalte4\\ \hline
\endfirsthead
\bfseries TitelSpalte1&\bfseries TitelSpalte2&\bfseries TitelSpalte3&\bfseries TitelSpalte4\\ \hline
&&&\\
\endhead
&&&\\
\multicolumn{4}{c}{Fortsetzung auf der nächsten Seite}
\endfoot
\endlastfoot
Data01 & Data02 & Data03 & Data04 \\
Data11 & Data12 & Data13 & Data14 \\
Data21 & Data22 & Data23 & Data24 \\
Data31 & Data32 & Data33 & Data34 \\
Data41 & Data42 & Data43 & Data44 \\
Data51 & Data52 & Data53 & Data54 \\
Data61 & Data62 & Data63 & Data64 \\
Data71 & Data72 & Data73 & Data74 \\
Data81 & Data82 & Data83 & Data84 \\
Data91 & Data92 & Data93 & Data94 \\
&&&\\
Data01 & Data02 & Data03 & Data04 \\
Data11 & Data12 & Data13 & Data14 \\
Data21 & Data22 & Data23 & Data24 \\
Data31 & Data32 & Data33 & Data34 \\
Data41 & Data42 & Data43 & Data44 \\
Data51 & Data52 & Data53 & Data54 \\
Data61 & Data62 & Data63 & Data64 \\
Data71 & Data72 & Data73 & Data74 \\
Data81 & Data82 & Data83 & Data84 \\
Data91 & Data92 & Data93 & Data94 \\
&&&\\
Data01 & Data02 & Data03 & Data04 \\
Data11 & Data12 & Data13 & Data14 \\
Data21 & Data22 & Data23 & Data24 \\
Data31 & Data32 & Data33 & Data34 \\
Data41 & Data42 & Data43 & Data44 \\
Data51 & Data52 & Data53 & Data54 \\
Data61 & Data62 & Data63 & Data64 \\
Data71 & Data72 & Data73 & Data74 \\
Data81 & Data82 & Data83 & Data84 \\
Data91 & Data92 & Data93 & Data94 \\
\end{longtable}

Das Beispiel sieht compiliert dann wie folgt aus:

Longtable wird wie folgt definiert:

\begin{longtable}{Breite}{Definition}

Da ich jedoch bei dem Beispiel die Breite variable lassen will, also LaTeX die Tabellenbreite auf den Inhalt anpasst, habe ich diese Option weggelassen. Standardisiert kann man auch {l} verwenden um die Tabelle immer maximal breit zu machen.

Die Definition ist wie bei tabular mit r (rechts-ausgerichtet), l (links-ausgerichtet), c (zentriert) sowie p{Breite} (Partbox, also feste Spalten Breite) zu erledigen. Ein | (AltGr+<) sorgt für eine vertikale Linie zwischen den 2 Spalten Ausrichtungen z.B.  c|r.

p{3cm} steht dabei für Part-Boxen, also eine Box mit einer definierten Breite in diesem Fall von 3cm.

Ein wichtiger Unterschied zwischen longtable und tabular ist, dass in Longtable\caption{} und ein \label{} anders verarbeitet werden. Das \label{} muss IN der \caption{} stehen. Die \caption{} muss desweiteren mit einem Zeilenumbruch „\\“ von dem Tabelleninhalt getrennt werden. Befindet sich das \label{} nicht in der \caption, so erstellt longtable, falls label vor caption steht eine weitere Zeile über der caption und falls andersherum also caption vor label steht, wird unter der caption noch eine leere Zeile eingeblendet. Also wichtig:

!!\label{} muss in der \caption{} stehen!!

Wenn die \caption{} über der Tabelle stehen soll, muss diese von einem Zeilenumbruch \\ abgeschlossen werden

Tabular/Longtable: !Misplaced \omit

Posted by quark007 | Posted in Fehler, LaTeX | Posted on 21-01-2011-05-2008

7

Folgender Fehler ergab sich mir, den ich beim googlen im Internet nicht erfolgreich gelöst bekam:

! Misplaced \omit.
\multispan ->\omit
\@multispan
l.1068 …-mechanismen (einzeln oder kombiniert)}} &    \textbf{Beispiel}    \\ \h…
I expect to see \omit only after tab marks or the \cr of an alignment. Proceed, and I’ll ignore this case.

Ich hatte mir schon gedacht, dass es um das \multicolumn{} ging, jedoch war ich auf einer falschem Fährte.

Nach dem Fehler wird ausgegeben, in welchem Abschnitt sich der Fehler befindet. Diese Angabe ist in diesem Fall aber irreführend. Der Fehler liegt vor dem Quellcode-Ausschnitt.

Der Fehler will sagen, dass vor einem \multicolumn{} oder auch \multirow{} kein weiterer Wert stehtn darf. Das soll heißen, dass vor \multicolumn{} bzw \multirow{} ein Spaltentrenner also & stehen muss oder eben eine neue Zeile angefangen worden sein muss.

Mich hat verwirrt, dass ich keinen \cr Fehler bekam, der normalerweise ausgegeben wird, wenn die Spaltenangaben der Tabelle nicht mit dem Inhalt der Tabelle übereinstimmen. Dieser Fehler kommt jedoch nicht, sodass ich EINIGE Zeit nach dem Fehler gesucht habe.