Tabelle von table-Format in longtable-Format überführen

Tabellen und Grafiken erstellen und anordnen


shardur
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Do 30. Okt 2014, 16:50

Tabelle von table-Format in longtable-Format überführen

Beitrag von shardur »

Hallo zusammen,

Ich habe folgendes Problem:
Eine Tabelle muss bei mir über mehrere Seiten gehen - ich hatte bisher alle meine Tabellen mit dem table-Format erstellt, jetzt aber gelesen, dass man das longtable-format nehmen soll um Tabellen über mehrere Seiten zu erstellen. Ich bin gerade am Verzweifeln meine Tabelle in das longtable-Format zu überführen - ich erhalte andauernd Fehler, die mir aber nicht wirklich weiterhelfen.

Hier meine ursprüngliche Tabelle als Minimalbsp (Natürlich ist in der Originaltabelle mehr Inhalt)
\documentclass[a4paper,12pt,oneside,pointlessnumbers,headsepline,
chapteratlists=0pt,listof=flat,captions=figureheading]{scrbook}
\KOMAoptions{DIV=last,BCOR=1cm}

\pagestyle{headings}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage[scaled]{helvet}
\usepackage{courier}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

% Tables
\usepackage{longtable}        
\usepackage{multirow}        
\usepackage{booktabs}
\usepackage{threeparttable}
% Align table
\usepackage{siunitx}
\sisetup{table-text-alignment = center,table-align-exponent = false}

\begin{document}

\setlength{\tabcolsep}{3mm}
\begin{table}[h!]
\centering
  \caption{Irgendein Titel}
\begin{threeparttable}
\begin{tabular}{c l c c c S[table-format = -1.4] S[table-format = -1.4]}
\toprule

\multicolumn{1}{c}{\text{Text}} & \multicolumn{1}{c}{\text{Text}} & \multicolumn{1}{c}{\text{Text1}} & \multicolumn{1}{c}{\text{Text2}} & \multicolumn{1}{c}{\text{Text3}} & \multicolumn{1}{c}{\text{Text}} & \multicolumn{1}{c}{\text{Text}}  \\  \midrule
 1 & \text{Text} & 1234 & 4567 & 8910 & 0,4785 & -0,1236 \\
   & \text{Text} & 01/45 & 02/45 & 03/45 &  &  \\
  \midrule
\multicolumn{4}{l}{\textbf{Text}} & & -0.247& -0.587\\
\multicolumn{4}{l}{\textbf{Text}} & & 0.123& 0.345
  \end{tabular}
  \begin{tablenotes}
  \item Irgendein Text
  \end{tablenotes}
  \end{threeparttable}
  \label{Table:bla}
\end{table}

\end{document}
Ich habe versucht die Tabelle wie folgt umzuschreiben (mit den gleichen packages)
\documentclass[a4paper,12pt,oneside,pointlessnumbers,headsepline,
chapteratlists=0pt,listof=flat,captions=figureheading]{scrbook}
\KOMAoptions{DIV=last,BCOR=1cm}

\pagestyle{headings}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage[scaled]{helvet}
\usepackage{courier}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

% Tables
\usepackage{longtable}        
\usepackage{multirow}        
\usepackage{booktabs}
\usepackage{threeparttable}
% Align table
\usepackage{siunitx}
\sisetup{table-text-alignment = center,table-align-exponent = false}

\begin{document}

\setlength{\tabcolsep}{3mm}
\begin{threeparttable}
\begin{tablenotes}
\item Irgendeine Text
\end{tablenotes}
\begin{longtable}{c l c c c S[table-format = -1.4] S[table-format = -1.4]}[h!]

\caption{Irgendein Titel}
\label{Table:bla}

\hline
\multicolumn{1}{c}{\text{Text}} & \multicolumn{1}{c}{\text{Text}} & \multicolumn{1}{c}{\text{Text1}} & \multicolumn{1}{c}{\text{Text2}} & \multicolumn{1}{c}{\text{Text3}} & \multicolumn{1}{c}{\text{Text}} & \multicolumn{1}{c}{\text{Text}}  \\ 

\hline
\endfirsthead % Die Ueberschrift soll nur auf der ersten Seite angezeigt werden
\multicolumn{4}{c}%
{\tablename\ \thetable\ -- \textit{Continued from previous page}} \\
\hline
\hline
\endhead
\hline \multicolumn{4}{r}{\textit{Continued on next page}} \\
\endfoot
\hline
\endlastfoot
 1 & \text{Text} & 1234 & 4567 & 8910 & 0,4785 & -0,1236 \\
   & \text{Text} & 01/45 & 02/45 & 03/45 &  &  \\ 
\midrule
\multicolumn{4}{l}{\textbf{Text}} & & -0.247& -0.587\\
\multicolumn{4}{l}{\textbf{Text}} & & 0.123& 0.345

\end{longtable}
\end{threeparttable}

\end{document}
Mir wird dann ein Fehler ("! Misplaced \noalign.") bei der caption angezeigt - aber an sich sollte die caption ja so passen. Wenn ich die caption auskommentiere, dann wandert der Fehler zur nächsten comand-Zeile.

Ich hoffe, ich habe das Ganze nicht zu unübersichtlich gestaltet. Vielen Dank aber schon einmal für die Hilfe!
Zuletzt geändert von shardur am Mi 23. Mai 2018, 13:40, insgesamt 1-mal geändert.

Gast

Beitrag von Gast »

threeparttable ist nicht für die Verwendung mit longtable vorgesehen. Es gibt aber threeparttablex. Siehe dessen Anleitung. Außerdem ist bei longtable zu beachten, dass die Tabellenzeile mit der \caption-Anweisung ebenfalls mit \\ oder \tabularnewline zu beenden ist. Siehe dazu die Erklärung zu \caption in der Anleitung und das Beispiel in Abschnitt 8 der Anleitung. Leerzeilen=Absätze in Tabellencode sollte man übrigens eher meiden. LaTeX ist da zwar meist tolerant, es kann aber je nach verwendeten Paketen auch schief gehen. Dasselbe gilt übrigens für in abgesetzten Formeln.

Da Dein zweites Beispiel leider kein Minimalbeispiel, sondern nur ein Codeschnipsel ist, kann ich mehr dazu nicht sagen.tex

Gast

Off-Topic: Veraltete Optionen

Beitrag von Gast »

Option pointlessnumbers sollte übrigens eine Warnung erzeugen. Lies diese in der log-Datei nach und handle entsprechend.

Option DIV=last unmittelbar nach \documentclass per \KOMAoptions zu setzen, schadet zwar nicht, nützt in der Regel aber auch nichts. Option BCOR=1cm könnte man auch gleich bei \documentclass mit angeben. Sinnvoller wäre übrigens ein \recalctypearea (oder das Verschieben von \KOMAoptions{DIV=last,BCOR=1cm}) irgendwo zwischen \usepackage{mathptmx} und \begin{document}. Näheres dazu ist der KOMA-Script-nleitung oder dem [url=htp://ww.dante.de/index/Literatur/KOMA-Script.html]KOMA-Script-Buch[/url] zu entnehmen.

shardur
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Do 30. Okt 2014, 16:50

Beitrag von shardur »

Danke schon einmal für die erste Hilfe! Habe das threeparttablex package jetzt genutzt und dann eben \begin{ThreePartTable} genutzt und habe nach dem label noch ein "\\" hinzugefügt. Der Fehler bleibt jedoch der gleiche wie vorher auch.

Achja und ich hatte vor das zweite Minimalbsp geschrieben, dass ich die gleichen packages wie im ersten nutze um ein wenig Platz zu sparen. Habe sie jetzt aber auch einfach hinzugefügt.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Entferne das [h!] hinter der Spaltendefinition der longtable und vielleicht auch gleich noch die Leerzeilen innerhalb der Tabelle.

Damit der Abstand der Tabellenbeschriftung zur Tabelle stimmt, kannst Du \captionabove statt \caption verwenden. Wenn alle Tabellen im Dokument Überschriften haben, dann brauchst Du auch \caption lassen und statt dessen die Option captions=tableheading setzen.

shardur
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Do 30. Okt 2014, 16:50

Beitrag von shardur »

Super, vielen Dank! Jetzt funktioniert es!

Antworten