PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : threeparttable und longtable mit tabellenbreiter caption



nine.be
19-02-2010, 11:42
Hallo,

schon oft habe ich auf mrunix.de Hilfe gefunden. Nur leider finde ich diesmal keine Lösung für mein Problem.
Ich habe eine lange Tabelle (daher benutze ich longtable).
Ich habe eine lange Caption (daher benutze ich threeparttable).
Threeparttable soll meine Caption auf die Breite der Tabelle kürzen, also nich darüber hinaus gehen. In allen Tabellen geht das gut (habe viele), ausser wenn ich es zusammen mit longtable benutze (oder auch sidewaystable).

Wisst ihr Hilfe wie ich eine lange Tabelle und eine tabellenbreitespezifische Caption bekomme? Habe mehrere Tabellen, also wäre eine "allgemeine" Lösung gut.

Danke im Vorraus für die Mühe.
Janine



\documentclass[12pt,
halfparskip,
noonelinecaption,
]
{scrreprt}
\usepackage{booktabs}
\usepackage{threeparttable}
\usepackage{longtable}
\usepackage{amssymb}
%habe im hauptdokument noch mehr usepackages.
\begin{document}

\begin{center}
\begin{threeparttable}
\begin{longtable}{lllll}
\captionabove[bla kurz]{lange caption die aber nur so breit wie die tabelle sein soll, ist sie aber nicht. magaber. wie kann ich ihr meinen willen aufzwingen??? noch ein bischen mehr bla zum verlängern und so.}
\label{tab:lab}\\
\toprule & Estimate & Std. Error & z value & Pr($>$$|$z$|$) \\ \midrule \endfirsthead
\toprule & Estimate & Std. Error & z value & Pr($>$$|$z$|$) \\ \midrule \endhead
(Intercept) & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
\bottomrule
\end{longtable}
\end{threeparttable}
\end{center}
\end{document}

lockstep
19-02-2010, 11:46
Ohne dein spezielles Problem beurteilen zu können: Sieh dir mal das Paket threeparttablex (http://www.tex.ac.uk/tex-archive/help/Catalogue/entries/threeparttablex.html) ("bringing threeparttable to longtable") an.

lockstep

nine.be
19-02-2010, 12:13
danke,
klang erstmal gut.
habe threeparttablex installiert.
"The threeparttablex package requires the threeparttable and environ packages
to be available on your system"
und auch threeparttable und environ in mein minibeispiel gepackt.
und da sich laut dokumentation das interface nicht ändern soll, habe ich nichts geändert...und es hat sich nichts geändert :(
alles beim Alten.


\documentclass[12pt,
halfparskip, % Halbe zeile zwischen Absätzen frei
noonelinecaption, %Einzeilige Texte nicht zentriert
]
{scrreprt}
\usepackage{booktabs}
\usepackage{environ}
\usepackage{threeparttable}
\usepackage{threeparttablex}
\usepackage{longtable}
\usepackage{amssymb}
\begin{document}

\begin{center}
\begin{threeparttable}
\begin{longtable}{lllll}
\captionabove[bla kurz]{lange caption die aber nur so breit wie die tabelle sein soll, ist sie aber nicht. magaber. wie kann ich ihr meinen willen aufzwingen??? noch ein bischen mehr bla zum verlängern und so.}
\label{tab:lab}\\
\toprule & Estimate & Std. Error & z value & Pr($>$$|$z$|$) \\ \midrule \endfirsthead
\toprule & Estimate & Std. Error & z value & Pr($>$$|$z$|$) \\ \midrule \endhead
(Intercept) & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99 & -9.9999 & 9.9999 & -99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 99.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & -9.9999 & 9.9999 & -9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
Var99:Var99 & 9.9999 & 9.9999 & 9.99 & 9.9999 \\
\bottomrule
\end{longtable}
\end{threeparttable}
\end{center}
\end{document}

lockstep
19-02-2010, 12:29
danke,
klang erstmal gut.
habe threeparttablex installiert.
"The threeparttablex package requires the threeparttable and environ packages
to be available on your system"
und auch threeparttable und environ in mein minibeispiel gepackt.
und da sich laut dokumentation das interface nicht ändern soll, habe ich nichts geändert...und es hat sich nichts geändert :(
alles beim Alten.

"Available on your system" heißt lediglich, dass die Pakete threeparttable und environ auf deinem TeX-System (MiKTeX, TeX Live u.ä.) installiert sein müssen. Es heißt nicht, dass du sie in deinem Beispiel mit \usepackage laden sollst.

Und wenn ich in der Dokumentation zu threeparttablex nachlese, wird da die Umgebung ThreePartTable (mit Großbuchstaben!) erwähnt und auf S. 3 im oberen Beispiel verwendet.

lockstep

nine.be
19-02-2010, 12:47
"Available on your system" heißt lediglich, dass die Pakete threeparttable und environ auf deinem TeX-System (MiKTeX, TeX Live u.ä.) installiert sein müssen. Es heißt nicht, dass du sie in deinem Beispiel mit \usepackage laden sollst.
und wieder was gelernt. vielen dank. :)



Und wenn ich in der Dokumentation zu threeparttablex nachlese, wird da die Umgebung ThreePartTable (mit Großbuchstaben!) erwähnt und auf S. 3 im oberen Beispiel verwendet.
lockstep
ok, also nun das selbe minibeispiel mit den 3 Großbuchstaben. habe ich wohl überlesen. Also meine Tabelle wird nun zwar wundervoll umgebrochen, aber die caption ist immernoch zu breit.

lockstep
19-02-2010, 13:34
Mist. Stimmt. Ich habe den Verdacht, dass threeparttablex zwar eine longtable mit Fußnoten ermöglicht, aber keine automatische Breite der caption beherrscht. (Nebenbei: Könnte das eine longtabe-Eigenschaft sein? Immerhin modifiziert das Paket die LaTeX-Output-Routine.)

Automatische Lösung kann ich dir keine anbieten (vielleicht findet sich ja noch ein Guru), aber eine händische (wobei ich annehme, dass in deiner Arbeit viele "normale" Tabellen und einige longtables vorkommen).

Füge in deine Präambel ein:



\usepackage{caption}


Innerhalb jeder ThreePartTable- bzw. longtable-Umgebung fügst du folgendes ein (die tatsächliche Länge musst du durch Ausprobieren ermitteln):



\captionsetup[longtable]{width=10cm}


lockstep

nine.be
19-02-2010, 14:08
manuell ist ne ganz schlechte Idee. Keine Zeit, keine Zeit *auf die Uhr guck* :o
Abgabe ist bald und ist noch viel zu tun, als dass ich rumprobieren könnte.
Eher kürze ich meine Captions oder lasse es so. :(

Aber vielen Danke für deine Überlegungen.
Vielleicht fällt jemand anderes noch was ein.

cookie170
19-02-2010, 14:21
Ich habe für lange Erklärungen an Tabellen kürzlich die in KOMA-Script enthaltene Umgebung "captionsbeside" verwendet. Ich habe allerdings weder Deinen Code genauer angesehen, noch habe ich ausprobiert, ob das mit longtable funktioniert.

Gruß,
Alexander

sommerfee
19-02-2010, 21:55
Ich meine, daß das floatrow-Paket eine Lösung anbietet, um die \caption von longtables auf die Breite der Tabelle zu begrenzen.