PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fußnoten in Tabelle + booktabs



uwerothfeld
14-03-2009, 21:39
Hallo zusammen,

ich versuche gerade Fußnoten in eine Tabelle zu bekommen. Im Prinzip geht es, allerdings ist die Tabelle nicht zentriert und die Überschrift wird auch komisch verunstaltet. Könnt ihr mir vielleicht nen Tip geben?? Hier mal ein Minibsp. Ok, nicht so richtig Mini, aber mh ...



\documentclass{scrbook}
\usepackage{caption,blindtext}
\usepackage[ngerman]{babel}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{ifthen}

\newcommand{\forloop}[5][1]{%
\setcounter{#2}{#3}%
\ifthenelse{#4}{#5\addtocounter{#2}{#1}%
\forloop[#1]{#2}{\value{#2}}{#4}{#5}}%
{}}

\newcounter{crcounter}

\newcommand{\compensaterule}[1]{%
\forloop{crcounter}{1}{\value{crcounter} < #1}%
{\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}}

\newcommand{\multirowbt}[3]{\multirow{#1}{#2}%
{\compensaterule{#1}#3}}


\begin{document}
\blindtext\footnote{Fussnote im Text}

\begin{threeparttable}[ht]
\label{tab:RelationalOperationsComplexity}
\captionabove{Complexity of Relational Operations \cite{Oezsu1999}}
\begin{center}
\begin{tabular}{lc}
\toprule
\multicolumn{1}{c}{\textbf{Operation}} &
\multicolumn{1}{c}{\textbf{Complexity}} \\
\midrule
Select & \multirowbt{3}{*}{$O(n$)}\\
\cmidrule{1-1}
Project \tnote{1} & \\
\cmidrule{1-1}
tinyDSM Set / Update & \\
\midrule
Project \tnote{2} & \multirowbt{2}{*}{$O(n \log n $)}\\
\cmidrule{1-1}
Group & \\
\midrule
Join & \multirowbt{3}{*}{$O(n \log n $)} \\
\cmidrule{1-1}
Semi-Join & \\
\cmidrule{1-1}
Division & \\
\midrule
Cartesian Product & $ O(n^2)$ \\
\bottomrule
\end{tabular}
\begin{tablenotes}\footnotesize
\item[1] without duplicate elimination
\item[2] with duplicate elimination
\end{tablenotes}
\end{center}
\end{threeparttable}

\blindtext
\end{document}


Schon einmal vielen Dank.
Uwe

mechanicus
15-03-2009, 10:47
ich versuche gerade Fußnoten in eine Tabelle zu bekommen. Im Prinzip geht es, allerdings ist die Tabelle nicht zentriert und die Überschrift wird auch komisch verunstaltet. Könnt ihr mir vielleicht nen Tip geben??

Hallo,

der Positionierungsparameter bei der threeparttable ist nicht htbp. Sondern es sind die Optionen t oder b oder c. Eine Threeparttable ist also eher mit einer tabular-Umgebung zu vergleichen. Daher gleitet sie auch nicht. Möchtest du, dass sie gleitet, so musst du die threeparttable in eine table-Umgebung packen.


\documentclass{scrbook}
\usepackage{caption}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{ifthen}

\newcommand{\forloop}[5][1]{%
\setcounter{#2}{#3}%
\ifthenelse{#4}{#5\addtocounter{#2}{#1}%
\forloop[#1]{#2}{\value{#2}}{#4}{#5}}%
{}}

\newcounter{crcounter}

\newcommand{\compensaterule}[1]{%
\forloop{crcounter}{1}{\value{crcounter} < #1}%
{\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}}

\newcommand{\multirowbt}[3]{\multirow{#1}{#2}%
{\compensaterule{#1}#3}}


\begin{document}
\blindtext\footnote{Fussnote im Text}

\begin{center}
\begin{threeparttable}[c]\centering
\captionabove{Complexity of Relational Operations \cite{Oezsu1999}}
\label{tab:RelationalOperationsComplexity}
\begin{tabular}{lc}
\toprule
\multicolumn{1}{c}{\textbf{Operation}} &
\multicolumn{1}{c}{\textbf{Complexity}} \\
\midrule
Select & \multirowbt{3}{*}{$O(n$)}\\
\cmidrule{1-1}
Project \tnote{1} & \\
\cmidrule{1-1}
tinyDSM Set / Update & \\
\midrule
Project \tnote{2} & \multirowbt{2}{*}{$O(n \log n $)}\\
\cmidrule{1-1}
Group & \\
\midrule
Join & \multirowbt{3}{*}{$O(n \log n $)} \\
\cmidrule{1-1}
Semi-Join & \\
\cmidrule{1-1}
Division & \\
\midrule
Cartesian Product & $ O(n^2)$ \\
\bottomrule
\end{tabular}

\begin{tablenotes}\footnotesize
\item[1] without duplicate elimination
\item[2] with duplicate elimination
\end{tablenotes}
\end{threeparttable}
\end{center}

\blindtext
\end{document}

Gruß
Marco

uwerothfeld
15-03-2009, 11:06
Hallo Marco,

vor soviel Könnerschaft kann ich nur meine Hut ziehen. Da ließt man Beispiele und Dokus und bekommt die wichtigen Dinge dennoch nicht mit. Vielen vielen Dank.

Uwe

uwerothfeld
16-03-2009, 09:02
Hallo doch nochmal,

also meinen Lösung sieht so aus:



\documentclass{scrbook}
\usepackage{caption}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{ifthen}
\usepackage{amsmath}
\usepackage{wasysym}


\newcommand{\forloop}[5][1]{%
\setcounter{#2}{#3}%
\ifthenelse{#4}{#5\addtocounter{#2}{#1}%
\forloop[#1]{#2}{\value{#2}}{#4}{#5}}%
{}}

\newcounter{crcounter}

\newcommand{\compensaterule}[1]{%
\forloop{crcounter}{1}{\value{crcounter} < #1}%
{\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}}

\newcommand{\multirowbt}[3]{\multirow{#1}{#2}%
{\compensaterule{#1}#3}}


\begin{document}
\blindtext\footnote{Fussnote im Text}

\begin{table}[htbp]
\begin{center}
\begin{threeparttable}[c]
\caption{Complexity of Relational Operations \cite{Oezsu1999}}
\label{tab:RelationalOperationsComplexity}
\begin{tabular}{lc}
\toprule
\multicolumn{1}{c}{\textbf{Operation}} &
\multicolumn{1}{c}{\textbf{Complexity}} \\
\midrule
Select & \multirowbt{3}{*}{$O(n$)}\\
\cmidrule{1-1}
Project \tnote{1} & \\
\cmidrule{1-1}
tinyDSM Set / Update & \\
\midrule
Project \tnote{2} & \multirowbt{2}{*}{$O(n \log n $)}\\
\cmidrule{1-1}
Group & \\
\bottomrule
\end{tabular}
\begin{tablenotes}\footnotesize
\item[1] without duplicate elimination
\item[2] with duplicate elimination
\end{tablenotes}
\end{threeparttable}
\end{center}
\end{table}
\blindtext
\end{document}


Jetzt ist mir aber aufgefallen, dass die Caption auf den schmalen Tabellenbereich zentriert/begrenzt ist, was etwas unschön aussieht, bei ner längeren Überschrift. Wenn ich versuche die zentrierung in die threeparttable reinzuziehen, dann schlägt es schief (Ausrichtung wie Gesamttext, dennoch schmale Überschrift) auch ein "rausziehen" der Caption ansich habe ich nicht hinbekommen. Noch nen Tip für mich???

Danke.
Uwe

mechanicus
16-03-2009, 10:33
Hallo,

die oben gewählte center-Umgebung ist hier unangebracht, weil du ja eine table-Umgebung hast. Hier wieder centering nutzen. Für Tabellenüberschriften bietetn Koma auch den Befehl captionabove.


\documentclass{scrbook}
\usepackage{caption}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{threeparttable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{ifthen}
\usepackage{amsmath}
\usepackage{wasysym}


\newcommand{\forloop}[5][1]{%
\setcounter{#2}{#3}%
\ifthenelse{#4}{#5\addtocounter{#2}{#1}%
\forloop[#1]{#2}{\value{#2}}{#4}{#5}}%
{}}

\newcounter{crcounter}

\newcommand{\compensaterule}[1]{%
\forloop{crcounter}{1}{\value{crcounter} < #1}%
{\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}}

\newcommand{\multirowbt}[3]{\multirow{#1}{#2}%
{\compensaterule{#1}#3}}


\begin{document}
\blindtext\footnote{Fussnote im Text}

\begin{table}[htbp]
\centering
\captionabove{Complexity of Relational Operations \cite{Oezsu1999}}
\label{tab:RelationalOperationsComplexity}
\begin{threeparttable}[c]
\begin{tabular}{lc}
\toprule
\multicolumn{1}{c}{\textbf{Operation}} &
\multicolumn{1}{c}{\textbf{Complexity}} \\
\midrule
Select & \multirowbt{3}{*}{$O(n$)}\\
\cmidrule{1-1}
Project \tnote{1} & \\
\cmidrule{1-1}
tinyDSM Set / Update & \\
\midrule
Project \tnote{2} & \multirowbt{2}{*}{$O(n \log n $)}\\
\cmidrule{1-1}
Group & \\
\bottomrule
\end{tabular}
\begin{tablenotes}\footnotesize
\item[1] without duplicate elimination
\item[2] with duplicate elimination
\end{tablenotes}
\end{threeparttable}
\end{table}
\blindtext
\end{document}

Gruß
Marco

uwerothfeld
16-03-2009, 11:16
Hi Marco,

das ist ja super. Das \begin{center}... hat ich aus deinen 1. Post. Ich dachte \centering und \begin{center} ist das gleiche. Ok. Wieder was gelernt. Captionabove habe ich natürlich auch ergänzt. Vielen Dank. Ich freu mich.

Danke!
Uwe

mechanicus
16-03-2009, 11:47
Hallo,

du kannst dir ja mal center vs. \centering (http://texblog.net/latex-archive/layout/center-centering/) anschauen.

Gruß
Marco

uwerothfeld
16-03-2009, 20:18
cool. danke.
uwe

Menux
29-11-2013, 10:38
Hallo,

ich habe auch noch eine Frage zum Thema Fußnoten und Tabellen:
Ich soll in meiner Arbeit die Fußnoten in der letzten Zeile der Tabelle anordnen. Jemand eine Idee, wie ich diese dorthin bekomme?

esdd
29-11-2013, 16:59
Warum machst du keinen neuen Thread auf und erstellst ein eigenes Minimalbeispiel für dein Problem? Wenn die Fußnoten direkt unter der Tabelle stehen sollen, dann kannst du wie in den obigen Beispielen threeparttable (http://www.ctan.org/pkg/threeparttable) verwenden:


\documentclass[parskip=full]{scrartcl}

\usepackage{booktabs}
\usepackage{threeparttable}


\begin{document}
\begin{threeparttable}
\begin{tabular}{lll}
\toprule
Kopf 1& Kopf 2\tnote{1} & Kopf 3\\
\midrule
Inhalt 1\tnote{2} & Inhalt 2& Inhalt 3\\
Inhalt 4& Inhalt 5& Inhalt 6\tnote{3}\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item[1] Erste Fussnote
\item[2] Zweite Fussnote
\item[3] Dritte Fussnote
\end{tablenotes}
\end{threeparttable}

\begin{threeparttable}
\begin{tabular}{lll}
\toprule
Kopf 1& Kopf 2\tnote{1} & Kopf 3\\
\midrule
Inhalt 1\tnote{2} & Inhalt 2& Inhalt 3\\
Inhalt 4& Inhalt 5& Inhalt 6\tnote{3}\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item[1] Erste Fussnote
\item[2] Zweite Fussnote
\item[3] Dritte Fussnote
\end{tablenotes}
\end{threeparttable}
\end{document}

Hier ist mal außerdem noch ein Vorschlag, bei dem die Fußnoten tatsächlich in die letzte Tabellenzeile gesetzt werden. Ich gehe davon aus, dass die Zählung der Fußnoten in jeder Tabelle wieder bei Eins beginnt.


\documentclass[parskip=full]{scrartcl}
\usepackage{booktabs}

\usepackage{varwidth}
\usepackage{datatool}
\DTLnewdb{tabfootnotes}
\newcounter{tabftnts}\setcounter{tabftnts}{0}

\makeatletter
\newcommand\tabfootnote[1]{\stepcounter{tabftnts}\footnotemark[\arabic{tabftnts}]%
\DTLnewrow{tabfootnotes}%
\DTLnewdbentry{tabfootnotes}{footnotetext}{#1}%
}
\makeatother

\newcommand\tabfootnotes[1][\linewidth]{%
\footnotesize%
\setcounter{tabftnts}{0}
\begin{varwidth}{#1}
\DTLforeach{tabfootnotes}{\Text=footnotetext}{%
\DTLiffirstrow{}{\\}%
\stepcounter{tabftnts}\footnotemark[\arabic{tabftnts}]\,\Text\strut%
}
\end{varwidth}%
\DTLgcleardb{tabfootnotes}%
\setcounter{tabftnts}{0}%
\par%
}

\begin{document}

\begin{tabular}{lll}
\toprule
Kopf 1& Kopf 2\tabfootnote{Erste Fussnote} & Kopf 3\\
\midrule
Inhalt 1\tabfootnote{Zweite Fussnote} & Inhalt 2& Inhalt 3\\
Inhalt 4& Inhalt 5& Inhalt 6\tabfootnote{Dritte Fussnote}\\
\midrule
\multicolumn{3}{l}{\tabfootnotes}\\
\bottomrule
\end{tabular}

\begin{tabular}{lll}
\toprule
Kopf 1& Kopf 2\tabfootnote{Erste Fussnote} & Kopf 3\\
\midrule
Inhalt 1\tabfootnote{Zweite Fussnote} & Inhalt 2& Inhalt 3\\
Inhalt 4& Inhalt 5& Inhalt 6\tabfootnote{Dritte Fussnote}\\
\midrule
\multicolumn{3}{l}{\tabfootnotes}\\
\bottomrule
\end{tabular}

\end{document}

Gruß
Elke

Menux
29-11-2013, 20:59
Danke Elke für deine Hilfe.

Wenn ich das Beispiel alleine umwandle läuft alles prima, aber dann habe ich es in meine Datei hinein gepackt und bekomme folgende Meldung:

Package varwidth Warning: Failed to reprocess entire contents on input line 227

Woran kann das liegen?

esdd
29-11-2013, 22:26
Vielleicht ist es für dein Problem sinnvoller eine minipage oder \parbox statt varwidth zu verwenden, aber ohne Minimalbeispiel ist das nur rumraten.

Gruß
Elke

Menux
22-01-2014, 16:02
Da das Problem immer noch besteht hier dann doch mal ein Beispiel:



\documentclass[12pt,a4paper, toc=bibliographynumbered,headings=small,oneside,fi nal,fleqn, parskip=half]{scrbook}

\usepackage{booktabs}
\usepackage{varwidth}
\usepackage{datatool}
\DTLnewdb{tabfootnotes}
\newcounter{tabftnts}\setcounter{tabftnts}{0}


\makeatletter
\newcommand\tabfootnote[1]{\stepcounter{tabftnts}\footnotemark[\arabic{tabftnts}]%
\DTLnewrow{tabfootnotes}%
\DTLnewdbentry{tabfootnotes}{footnotetext}{#1}%
}
\makeatother

\newcommand\tabfootnotes[1][\linewidth]{%
\footnotesize%
\setcounter{tabftnts}{0}
\begin{varwidth}{#1}
\DTLforeach{tabfootnotes}{\Text=footnotetext}{%
\DTLiffirstrow{}{\\}%
\stepcounter{tabftnts}\footnotemark[\arabic{tabftnts}]\,\Text\strut%
}
\end{varwidth}%
\DTLgcleardb{tabfootnotes}%
\setcounter{tabftnts}{0}%
\par\vspace{\aboverulesep}%
}


\usepackage{amsmath}
\usepackage[ngerman]{babel} %Deutsche Sprachuntersttzung
\usepackage{supertabular} % Erweiterte Tabellen
\usepackage{threeparttable}
\usepackage{multirow}
%\addtocounter{tocdepth}{1}
%\addtocounter{secnumdepth}{1}


\begin{document}
TEEEEEXXXXXXXXXXXTTTTT\\
test\\

\begin{threeparttable}[H]
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\hline
1&2&3&4&5&6&7&8\\
\hline
Nr.&$A_s$&$f_y$&$f_{cm}$&\multirow{2}{2.5cm}{Doppelk. in Druckzone\tabfootnote{Es werden Doppelkopfstäbe in der Druckzone angeordnet, um die Querdehnung zu behindern}}&$F_{test}$&$F_{Modell}$&$F_{ACI}$\\
&mm$^2$&N/mm$^2$&N/mm$^2$&&kN&kN&kN\\
\hline
1&900&470&49&keine&540&525&348\\
2&940&610&49&keine&596\tabfootnote{Durch nicht geschlossene Bügel kommt es hier zum Versagen der Druckzone}&657&348\\
1&900&470&49&keine&540&525&348\\
1&900&470&49&keine&540&525&348\\
\hline

\multicolumn{8}{|l|}{\tabfootnotes}\\
\hline
\end{tabular}
\caption{Versuche von \textit{Test}}
\label{tab:birkleTab1}
\end{threeparttable}
\end{document}


Das ganze sieht wie in der Abbildung aus. Leider ist die Tabelle unten auch nicht richtig geschlossen.
Die varwidth- Fehlermeldung kommt auch noch immer. Allerdings nicht in dem Kurzbeispiel oben.

esdd
22-01-2014, 16:27
Das die Tabelle nicht geschlossen ist, lag an dem \vspace{\aboverulesep}. Das kannst du rausnehmen:


\newcommand\tabfootnotes[1][\linewidth]{%
\footnotesize%
\setcounter{tabftnts}{0}
\begin{varwidth}{#1}
\DTLforeach{tabfootnotes}{\Text=footnotetext}{%
\DTLiffirstrow{}{\\}%
\stepcounter{tabftnts}\footnotemark[\arabic{tabftnts}]\,\Text\strut%
}
\end{varwidth}%
\DTLgcleardb{tabfootnotes}%
\setcounter{tabftnts}{0}%
\par%
}

Wobei dir hier jeder raten wird auf die vertikalen Linien zu verzichten.

Für dein varwidth Problem braucht es aber ein Beispiel, in dem das auch auf tritt.

Gruß
Elke