PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Caption bei einer Longtable untendrunter



ellocco
07-12-2010, 17:49
Ich weis, es ist unüblich, aber ich habe bei mir die Tabellenbeschriftungen
unterhalb der Tabellen. Das ist auch kein Problem, sofern die Tabelle nicht
über mehrere Seiten geht.
Nun möchte ich in einer longtable-Umgebung die Beschriftung
auf der ersten Seite unterhalb der Tabelle anbringen.
Hat jemand eine Idee?
Hier mein Beispiel, die Beschriftung erscheint zwar wie ich es möchte,
aber im Tabellenverzeichnis taucht die Tabelle zweimal auf:


\documentclass[12pt,a5paper,ngerman]{article}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc} %% enable EC-Fonts (extended cork)
\usepackage{longtable} %% for long tables
\usepackage{booktabs} % table enhancements (excel2latex tool use it)
\usepackage{caption} %% for long tables
%% ---
\begin{document}
\listoftables

\section{Frage}
\label{sec:uberschrift}
Wie bekomme ich bei einer mehrseitigen Tabelle den zweiten Tabelleneintrag aus dem
Tabellenverzeichnis raus?
Bzw. wie kriege ich die erste Tabellenbeschriftung unter den Tabellenteil auf
der ersten Tabellenseite
\vspace{2cm}
\begin{longtable}[l]{lll}
\captionsetup{position=bottom}
\toprule
eins & zwei & drei \tabularnewline
\midrule
\endfirsthead
\caption*{Fortsetzung}\tabularnewline
\addlinespace
\toprule
eins & zwei & drei \tabularnewline
\midrule
\endhead
\midrule
\caption{Beschriftung}\tabularnewline
\endfoot
% --- Begin lastfoot
\addlinespace
\bottomrule
\caption*{\tablename \arabic{table}: Beschriftung}\tabularnewline
\endlastfoot
% ---
%% --- Begin Table body --- ################################################## #########################################
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
\end{longtable}
\end{document}

voss
07-12-2010, 18:12
Ich weis, es ist unüblich, aber ich habe bei mir die Tabellenbeschriftungen
unterhalb der Tabellen. Das ist auch kein Problem, sofern die Tabelle nicht
über mehrere Seiten geht.
Nun möchte ich in einer longtable-Umgebung die Beschriftung
auf der ersten Seite unterhalb der Tabelle anbringen.


wo soll denn der Sinn sein, sie nur auf der ersten Seite haben zu wollen?
Und gewöhne dir bitte mal an, überflüssiges Zeug bei den Beispielen wegzulassen.


\documentclass[a5paper]{article}
\usepackage{longtable}
\usepackage{booktabs}

\newif\ifcap \captrue

\begin{document}
\listoftables

\begin{longtable}[l]{lll} \toprule
eins & zwei & drei \tabularnewline
\midrule
\endhead
\midrule
\ifcap\caption{Beschriftung}\global\capfalse\fi
\tabularnewline
\endfoot
\bottomrule
\endlastfoot
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
\end{longtable}

\end{document}


HErbert

ellocco
07-12-2010, 18:46
wo soll denn der Sinn sein, sie nur auf der ersten Seite haben zu wollen?
Und gewöhne dir bitte mal an, überflüssiges Zeug bei den Beispielen wegzulassen.
HErbert
Hallo Herbert!
Danke für Dein Beispiel!
Ich finde es auch besser, wenn die Beschriftung auch auf den anderen Seiten
erscheint, so war es ja auch in meinem Beispiel. Bloß im Inhaltsverzeichnis
soll sie nur einmal erscheinen.
Ich hatte auch gleich an eine IF-Struktur gedacht, aber mit \ifthenelse
aus dem Paket ifthen habe ich es nicht hinbekommen.
Und nun versuche ich gerade Dein Beispiel zu erweitern, aber meine
TeX-Kenntnisse reichen nicht aus. Hier die veränderte Zeile:

\ifcap\caption{Beschriftung}\global\capfalse \else \caption*{\tablename{} \arabic{table}: Beschriftung mitte} \fi

Aber leider klappt es nicht, es sind nach wie vor mehrere Einträge
vorhanden :-(



Und gewöhne dir bitte mal an, überflüssiges Zeug bei den Beispielen wegzulassen.
HErbert
Du bist aber streng. Ich fand es schon ziemlich geschrumpft.

mechanicus
07-12-2010, 18:51
Hi,

ein einfaches endlastfoot genügt, wenn es nur über zwei Seiten geht.

Gruß
Marco


\documentclass[a5paper]{article}
\usepackage{longtable}
\usepackage{booktabs}

\newif\ifcap \captrue

\begin{document}
\listoftables

\begin{longtable}[l]{lll} \toprule
eins & zwei & drei \tabularnewline
\midrule
\endhead
\midrule
\caption{Beschriftung}
\tabularnewline
\endfoot
%tabularnewline
\endlastfoot
\bottomrule
\endlastfoot
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
\end{longtable}

\end{document}

ellocco
07-12-2010, 18:59
Hi,

ein einfaches endlastfoot genügt, wenn es nur über zwei Seiten geht.

Gruß
Marco


Mein Beispiel ging absichtlich über drei Seiten und bis auf den doppelten
Tabellenverzeichniseintrag sieht es auch so aus wie ich es mir vorstelle.

sommerfee
07-12-2010, 20:05
Ich finde es auch besser, wenn die Beschriftung auch auf den anderen Seiten
erscheint, so war es ja auch in meinem Beispiel. Bloß im Inhaltsverzeichnis
soll sie nur einmal erscheinen.

Exakt dieser Anwendungsfall wird in der Dokumentation zum caption-Paket bei den Erläuterungen zu \captionlistentry behandelt.

Kurzform: Man nimmt im Fuß \caption[]{...}, damit kein Eintrag im Tabellenverzeichnis gesetzt wird. Den setzt man stattdessen einfach mit \captionlistentry einmalig selber, direkt vor der ersten Tabellenzeile.

Dein Beispiel entsprechend umgemodelt (und das umständliche \caption*{\tablename{} \arabic{table}: Beschriftung} durch \caption[]{Beschriftung} ersetzt):



\documentclass[12pt,a5paper,ngerman]{article}
\usepackage{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc} %% enable EC-Fonts (extended cork)
\usepackage{longtable} %% for long tables
\usepackage{booktabs} % table enhancements (excel2latex tool use it)
\usepackage{caption} %% for long tables
%% ---
\begin{document}
\listoftables

\section{Frage}
\label{sec:uberschrift}
Wie bekomme ich bei einer mehrseitigen Tabelle den zweiten Tabelleneintrag aus dem
Tabellenverzeichnis raus?
Bzw. wie kriege ich die erste Tabellenbeschriftung unter den Tabellenteil auf
der ersten Tabellenseite
\vspace{2cm}
\begin{longtable}[l]{lll}
\captionsetup{position=bottom}
\toprule
eins & zwei & drei \tabularnewline
\midrule
\endfirsthead
\caption*{Fortsetzung}\tabularnewline
\addlinespace
\toprule
eins & zwei & drei \tabularnewline
\midrule
\endhead
\midrule
\caption[]{Beschriftung}\tabularnewline
\endfoot
% --- Begin lastfoot
\addlinespace
\bottomrule
\caption[]{Beschriftung}\tabularnewline
\endlastfoot
% ---
%% --- Begin Table body --- ################################################## #########################################
\captionlistentry{Beschriftung}
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
1 & 2 & 3 \tabularnewline
\end{longtable}
\end{document}


Liebe Grüße,
Axel

ellocco
07-12-2010, 22:55
Exakt dieser Anwendungsfall wird in der Dokumentation zum caption-Paket bei den Erläuterungen zu \captionlistentry behandelt.
...
Liebe Grüße,
Axel
Irgendsowas hatte ich auch im Hinterkopf und habe auch die Doku studiert,
aber ich war offensichtlich zu ungeduldig und habe es überlesen.

Danke für die schnelle Hilfe :-)

P.S.:
Das Paket caption hat mir gleich von Anfang an gut gefallen, ich finde, es ist ist eins
der wichtigsten 20 Pakete für LaTeX.