Dreiteiliger Tisch und Longtabu mit durchgängigem Topskip

Dreiteiliger Tisch und Longtabu mit durchgängigem Topskip

Ich versuche, eine große Tabelle (über mehrere Seiten verteilt) mit Fußnoten und einer Spalte mit anpassbarer Breite zu erstellen. Der MWE ist der folgende.

\documentclass{scrartcl}

\usepackage{blindtext}

\usepackage{tabu,longtable}
\usepackage{threeparttable} % <-- the package below already loads it
\usepackage[referable]{threeparttablex}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{hyperref}

\usepackage{etoolbox}
\makeatletter
\chardef\TPT@@@asteriskcatcode=\catcode`*
\catcode`*=11
\expandafter\patchcmd\csname\string\threeparttable\endcsname
  {\TPT@hookin{tabular}}
  {\TPT@hookin{tabular}\TPT@hookin{tabu}}
  {}{}
\catcode`*=\TPT@@@asteriskcatcode
\makeatother

\begin{document}

\listoftables

\bigskip

\blindtext

\begin{ThreePartTable} 
\begin{TableNotes}
\footnotesize
\item[a] \label{tn:aa} Footnote in long table 1 (not linked).
\item[b] \label{tn:bb} Footnote in long table 2.
\source Some general note
\end{TableNotes}
\captionof{table}{A long table} % <-- caption inside longtabu within ThreePartTable does not produce correct hyperlink in LOT
\vspace{-\abovecaptionskip} % <-- removes the extra space (correct value?) 
\begin{longtabu}to\linewidth{llX} 
%\caption{A long table} \\ % <-- see above why it is commented
\toprule
Column 1 & & Column 2 \\
\midrule
\endfirsthead
\caption[]{A long table} \\
\toprule
Column 1 & & Column 2 \\
\midrule
\endhead
\cmidrule{3-3}
\multicolumn{3}{r}{\small\textit{continued}}
\endfoot
\bottomrule
\insertTableNotes\\
\endlastfoot
AAAA\tnotex*{tn:aa} & & BBBB \\
\newpage % <-- just testing break page
CCCC & & DDDD\tnotex{tn:bb} \\
\end{longtabu}
\end{ThreePartTable}

\blindtext

\end{document}

Das Problem ist, dass \caption{}longtabu innerhalb von ThreePartTable keinen korrekten Hyperlink in LOT erzeugt. Ich verwende also eine alternative Lösung \captionof{}. Aber das ist nicht gut, weil es keinen konsistenten Sprung zwischen der Überschrift und der ersten Zeile in der Tabelle gibt. Ich würde gerne verwenden \caption{}, kennt jemand eine Lösung?

Antwort1

Die folgende Lösung funktioniert. Ich habe einen Dummy-Zähler definiert und verwendet, \refstepcounter{dummy}der das Referenzsystem auf mysteriöse Weise korrigiert.

Ich hätte jedoch gerne eine elegantere Lösung: \setdummyJedes Mal aufrufen, wenn ich Longtabu verwende, und Leerzeichen nicht manuell anpassen müssen \vspace{-\baselineskip}.

\documentclass[captions=tableheading]{scrartcl}

\usepackage{blindtext}

\usepackage{hyperref}
\usepackage{tabu,longtable}
%\usepackage{threeparttable} % the package below already loads it
\usepackage[referable]{threeparttablex}
\usepackage{booktabs}
\usepackage{caption}

\usepackage{etoolbox} 
\makeatletter
\chardef\TPT@@@asteriskcatcode=\catcode`*
\catcode`*=11
\expandafter\patchcmd\csname\string\threeparttable\endcsname
  {\TPT@hookin{tabular}}
  {\TPT@hookin{tabular}\TPT@hookin{tabu}} % allow threeparttable with tabu
  {}{}
\catcode`*=\TPT@@@asteriskcatcode
\makeatother

\makeatletter
\newcounter{dummy}
\newcommand{\setdummy}{\refstepcounter{dummy}\addtocounter{dummy}{-1}}
\makeatother

\begin{document}

\listoftables

\bigskip

\blindtext

\begin{ThreePartTable}
\begin{TableNotes}
\footnotesize
\item[a] \label{tn:aa} A note
\item[b] Another note
\end{TableNotes}
\vspace{-\baselineskip} % correct the \\ in \setdummy
\begin{longtabu}{ll}
\setdummy \\
\caption{A long table}
\label{tab:test1} \\
\toprule
Column 1 & Column 2 \\
\endfirsthead
\toprule
Column 1 & Column 2 \\
\midrule
\endhead
\cmidrule{2-2}
\multicolumn{2}{r}{\textit{continued}}
\endfoot
\bottomrule
\insertTableNotes
\endlastfoot
% the contents of the table
A & B\tnotex{tn:aa} \\
%\newpage % just testing page break
C\tnote{b} & D \\
\end{longtabu}
\end{ThreePartTable}

\blindtext

\begin{table}[h]
\centering
\caption{A regular table}
\label{tab:test2}
\begin{tabu}{ll}
\toprule
Column 1 & Column 2 \\
\midrule
A & B \\
\midrule
C & D \\
\bottomrule
\end{tabu}
\end{table}

\blindtext

\end{document}

verwandte Informationen