Longtable mit dynamischem Tabellenkopf

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Longtable mit dynamischem Tabellenkopf

von KarlaK » Fr 27. Jan 2017, 13:36

Ich habe jetzt versucht, das auf meine Tabellen zu übertragen. Das funktioniert auch soweit, wenn ich nur zwei Tabellenköpfe habe. Nun wollte ich noch einen dritten einrichten und habe dazu analog wie in dem Link (mit LTheadsave und restoreLThead) eine neue Box und Befehle (LTnewheadsave und restoreLTnewhead) definiert.
Leider funktioniert das nicht. Es nimmt immer nur einen der beiden neuen Tabellenköpfe an, und zwar den, der zuletzt aufgerufen wird (in meinem MWE wäre das LTnewhead, der aber auch schon ab \restoreLThead statt erst ab \restoreLTnewhead erscheint). Wo liegt mein Fehler?
\documentclass[11 pt]{scrbook}
\usepackage{fontspec}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{tabularx}
\usepackage[caption2, titles]{ccaption}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{graphicx}
\usepackage{caption}  
\usepackage{amsmath, unicode-math}
\usepackage{siunitx}

\begin{document}

\newbox\LTheadsave
\newbox\LTnewheadsave
\makeatletter
   \newcommand\saveLThead{\noalign{\global\setbox\LTheadsave\copy\LT@head}}
   \newcommand\restoreLThead{\noalign{\global\setbox\LT@head\copy\LTheadsave}}
   \newcommand\saveLTnewhead{\noalign{\global\setbox\LTnewheadsave\copy\LT@head}}
   \newcommand\restoreLTnewhead{\noalign{\global\setbox\LT@head\copy\LTnewheadsave}}
\makeatother
\setcounter{LTchunksize}{2}

\begin{longtabu}to\linewidth{XX|XX}
   \caption{Tabellenbeschriftung.} \label{tab:test}\\
   \toprule[1pt]
   \multicolumn{4}{c}{\textbf{Bindungslängen}}\\
   \midrule[1pt]
\endfirsthead
   \caption*{Fortsetzung von \tablename\ \thetable} \\
   \toprule[1pt]
   \multicolumn{4}{c}{\textbf{Bindungswinkel}}\\
   \midrule[1pt]
\endhead\saveLThead
   \toprule[1pt]
   \multicolumn{4}{c}{\textbf{D...A-Abstände}}\\
   \midrule[1pt]
\endhead\saveLTnewhead
   \toprule[1pt]
   \multicolumn{4}{c}{\textbf{Bindungslängen}}\\
   \midrule[1pt]
\endhead
   \midrule[0.5pt] \multicolumn{4}{r}{Fortsetzung auf folgender Seite.} \\
\endfoot
\endlastfoot
   A--B & 2.457(6) &   C--D &   2.495(10)    \\
   eine & sehr & lange & Liste \\
   \toprule[1pt]
   \multicolumn{4}{c}{\textbf{Bindungswinkel}}\\
   \midrule[1pt]
   A--B--C & 30.9(6) &   C--D--E &   15.65(10)    \\ \restoreLThead
   eine & weitere & lange & Liste \\
   \toprule[1pt]
   \multicolumn{4}{c}{\textbf{D...A-Abstände}}\\
   \midrule[1pt]
   A...B & 2.457(6) &   C...D &   2.495(10)    \\ \restoreLTnewhead
   eine & dritte & lange & Liste \\
   \bottomrule[1pt]
\end{longtabu}

\end{document}

von KarlaK » Do 26. Jan 2017, 21:28

Das Beispiel aus dem Link funktioniert. Die Lösung ist einfacher als ich erwartet hatte. Ich werde es morgen auf meine eigenen Tabellen übertragen.
Vielen Dank! :)

von u_fischer » Mi 25. Jan 2017, 18:23

Longtable mit dynamischem Tabellenkopf

von KarlaK » Mi 25. Jan 2017, 17:50

Hallo liebe Community!
Ich schreibe derzeit an meiner Dissertation mit Xelatex und habe in meinem Anhang eine Reihe sehr langer Tabellen, die teilweise untergliedert sind. Diese habe ich mit longtabu bzw longtable eingebunden. Das funktioniert soweit ganz gut. Das Problem ist nur, dass ich in longtable nur die Kopfzeile für die erste (\endfirsthead) und dann die Tabellenköpfe für alle weiteren Seiten (\endhead) festlegen kann. Ich müsste das für meine Tabellen aber dynamischer gestalten und zwar in der Art:

TABELLENKOPF 1
viele Werte
-- Seitenumbruch-- (hier müsste Kopf 1 erscheinen)
viele Werte
--Seitenumbruch-- (hier müsste Kopf 1 erscheinen)
viele Werte
TABELLENKOPF 2
viele Werte
-- Seitenumbruch-- (hier müsste Kopf 2 erscheinen)
viele Werte
--Seitenumbruch-- (hier müsste Kopf 2 erscheinen)
viele Werte

Ich würde halt gerne eine Art Marke setzen, damit Latex weiß, ok, ab hier muss ein anderer Tabellenkopf auf den Folgeseiten gesetzt werden. Etwa so, wie es bei supertabular möglich ist. Allerdings möchte ich supertabular nicht benutzen, da das Paket scheinbar Probleme mit den Seitenumbrüchen hat (bekomme teilweise halbleere Seiten ohne ersichtlichen Grund) und ich auch nicht die Gestaltungsmöglichkeiten wie in longtable/longtabu habe.

Hier mal ein kurzes Beispiel:
\documentclass[	11 pt]{scrbook}
\usepackage{fontspec}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{tabularx}
\usepackage[caption2, titles]{ccaption}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{graphicx}
\usepackage{caption}	
\usepackage{amsmath, unicode-math}
\usepackage{nicefrac}
\usepackage{siunitx}

\begin{document}

\begin{longtabu}to\linewidth{XX|XX}
\caption{Tabellenbeschriftung.} \label{tab:test}\\
	\toprule[1pt] 
	\multicolumn{4}{c}{\textbf{Bindungslängen}}\\
	\midrule[1pt]
	\endfirsthead
	\caption*{Fortsetzunf von \tablename\ \thetable} \\
	\toprule[1pt]
	\multicolumn{4}{c}{\textbf{Bindungslängen}}\\
	\midrule[1pt]
	\endhead
	\midrule[0.5pt] \multicolumn{4}{r}{Fortsetzung auf folgender Seite.} \\
	\endfoot
	\endlastfoot
A--B & 2.457(6) &	C--D &	2.495(10) 	\\
eine & sehr & lange & Liste \\
\toprule[1pt]
	\multicolumn{4}{c}{\textbf{Bindungswinkel}}\\
	\midrule[1pt]
A--B--C & 30.9(6) &	C--D--E &	15.65(10) 	\\
eine & weitere & lange & Liste \\
\toprule[1pt]
	\multicolumn{4}{c}{\textbf{D...A-Abstände}}\\
	\midrule[1pt]
A...B & 2.457(6) &	C...D &	2.495(10) 	\\
eine & dritte & lange & Liste \\
\bottomrule[1pt]
\end{longtabu}
\end{document}

Für dieses Beispiel bräuchte ich 4 verschiedene Tabellenköpfe: (1) Für die erste Seite, (2) für die Seiten mit "Bindungslängen", (3) für die Seiten mit "Winkeln" und (4) für die weiteren Abstände. Natürlich könnte ich das alles in verschiedene Tabellen unterteilen, finde das aber für mich nicht sinnvoll und ist bei uns an der Uni auch nicht üblich.

Ich habe bei meiner Suche schon einen "Hack" gefunden, der sich auf Summen im Tabellenfuß beschäftigt: Link Leider verstehe ich davon nichts und weiß nicht, wie ich das auf den Kopf übertragen kann.

Ich würde mich freuen, wenn mir hier jemand helfen könnte!

Nach oben