PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : longtable und caption...



mausch
28-03-2008, 09:24
Hi,
ich habe ein ästhetisches Problem mit den Überschriften für longtable...

Da die Überschriften in longtables als Zeile der Tabelle eingebunden werden müssen und nicht auf die "normale" Art wie bei Tabellen die in eine table Umgebung eingebettet werden ergibt sich ein großer Abstand zwischen Überschrift und Tabelle der bei den anderen Tabellenvarianten nicht entsteht. Somit ist es nicht konsistent und "unschön" ...

Ich sitze nun schon seit gestern morgen dran und finde einfach keine Lösung :confused:

Kennt jemand das Problem und hat eine Lösung parat? Die longtable Dokumentation ist da leider nicht sehr hilfreich gewesen...

hier mal kurz der Anfang des codes:

\begin{longtable}{ll.}
\caption{ein paar zahlen} \\
\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\endfirsthead
\caption{(...continued)}\\\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\endhead
\multicolumn{3}{r}{{...}continues on next page} \\
\endfoot
\endlastfoot
Egal & 1-2 &2 \\*



und so weiter....
Danke

sofa-surfer
28-03-2008, 10:08
Hallo,

mach mal aus deinem Code ein kompilierbares Beispiel, damit wir sehen, welche relevanten Pakete du lädst und welche Dokumentenklasse du verwendest.

Matthias

mausch
28-03-2008, 10:16
ich nutze 30 Pakete und habe keinen Plan welche relevant sind...

so läuft es und man sieht den Unterschied zwischen den Überschriften

\documentclass[12pt, a4article, makeidx, oneside, times]{memoir}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{marvosym}
\usepackage{graphicx}
\usepackage{psfrag}
\usepackage{pifont}
\usepackage{color}
\usepackage{wallpaper}
\usepackage{colortbl}
\usepackage{setspace}
\usepackage{epsfig,psfrag}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pifont}
\usepackage{textcomp}
\usepackage[square]{natbib}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{booktabs}
\usepackage{stmaryrd}
\usepackage{tipa}
\usepackage{memhfixc}
\usepackage{url}
\usepackage{longtable}
\usepackage{lscape}

\begin{document}


\begin{longtable}{lll}
\caption{ein paar zahlen} \\
\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\endfirsthead
\caption{(...continued)}\\\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\endhead
\multicolumn{3}{r}{{...}continues on next page} \\
\endfoot
\endlastfoot
Egal & 1-2 &2 \\*
\end{longtable}


\begin{table}
\caption{ein paar zahlen}
\centering
\begin{tabular}{lll}\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule

\multicolumn{3}{r}{{...}continues on next page} \\

Egal & 1-2 &2 \\*
\end{tabular}
\end{table}
\end{document}

sommerfee
28-03-2008, 10:25
Da die Überschriften in longtables als Zeile der Tabelle eingebunden werden müssen und nicht auf die "normale" Art wie bei Tabellen die in eine table Umgebung eingebettet werden ergibt sich ein großer Abstand zwischen Überschrift und Tabelle der bei den anderen Tabellenvarianten nicht entsteht. Somit ist es nicht konsistent und "unschön" ...

Ich sitze nun schon seit gestern morgen dran und finde einfach keine Lösung :confused:

Ja, \caption in Gleitumgebungen und \caption in longtables sind inkonsistent gestaltet, was die "oben oder unten?" Frage angeht.

Es gibt diverse Dokumentenklassen bzw. Pakete, die diese Inkonsistenz beheben, z.B. KOMA-Script, das caption-Paket, ...

Da du memoir als Dokumentenklasse verwendest, würde ich erstmal nachschauen, ob man in memoir nicht die \captions der Gleitumgebungen als Überschriften statt Unterschriften deklarieren kann. (Ich kenne memoir zuwenig, um zu wissen, ob das dort geht.)

Wenn das nicht geht, könnte man auf eines der Pakete zurückgreifen, die bei Tabellen die Abstände über und unter der \caption vertauschen, und die mit memoir kompatibel sind, wie z.B. "ftcap":

http://www.ctan.org/tex-archive/help/Catalogue/entries/ftcap.html

Gruß,
Axel

mausch
28-03-2008, 10:42
in dem beispiel ist der longtable unten

mausch
28-03-2008, 10:44
das caption Paket wollte ich laden, allerdings zerhaut es alles... ich bekomme nur noch Fehlermeldungen bei allen \caption befehlen... muß man die dort anders einbinden?


in dem manual der memoir class habe ich leider auch nichts gefunden was das Problem behebt


das ftcap package macht leider keinerleri unterschied...

sommerfee
28-03-2008, 11:45
das caption Paket wollte ich laden, allerdings zerhaut es alles... ich bekomme nur noch Fehlermeldungen bei allen \caption befehlen... muß man die dort anders einbinden?

Das caption-Paket ist inkompatibel zur memoir-Dokumentenklasse.



das ftcap package macht leider keinerleri unterschied...

Es kann gut sein, daß dessen Mechanismus bei memoir nicht greift.

Nachtrag: Zusammen mit


\setlength\abovecaptionskip{\baselineskip}
\setlength\belowcaptionskip{0pt}

sollte das Ergebnis konsistent sein.

mausch
28-03-2008, 12:46
Danke erstmal!
Das Konsistenzproblem löst dieser Vorschlag zwar, allerdings in die falsche Richtung... ich will eben nicht das die Überschriften mit einem so großen Abstand über den Tabellen "schweben" sondern das sie wie in der normalen table Umgebung relativ nahe an der tabelle sind.
Wenn man die parameter ändert und z.b.

\setlength\abovecaptionskip{0pt}
\setlength\belowcaptionskip{0pt}

probiert ändert sich aber wiederum nur die table Umgebung. Also paßt dieser Befehl die table und nicht die longtable Umgebung an...

sommerfee
28-03-2008, 13:08
Der Abstand ist im longtable-Paket fest verankert. Wenn man den ändern möchte, und nicht die KOMA-Klassen bzw. das caption-Paket verwenden kann oder will, bleibt wohl nur, sich die Definition von \LT@makecaption aus dem longtable-Paket in sein eigenes Dokument zu kopieren und entsprechend anzupassen.

(Idee: Ich werde den Abstand mal für das nächste Release des ltcaption-Paketes konfigurierbar machen, dann hätten wir eine elegantere Lösung, denn das ltcaption-Paket sollte auch mit memoir funktionieren...)

mausch
28-03-2008, 13:13
OK... ich weiß zwar nicht was das ltcaption package ist, und habe es scheinbar auch nicht installiert (hat er nicht gefunden als ich gerade testen wollte) aber wenn man da dann diese Dinge selbst bestimmen könnte und vor allem einheitlich wäre das schon ziemlich genial!

Danke auf jeden Fall für die Mühe!!!!

Jetzt mache ich mich mal auf die suche nach dem passenden code im longtable package und versuche ne Runde dran rumzuspielen... ich werde eventuelle Erfolge melden und den veränderten code dann posten ...

Danke nochmal für die Mühe!

mausch
28-03-2008, 13:34
Ich habe gerade mal Ansatzweise versucht das longtable package in meinem Sinne zu "manipulieren" ...

allerdings habe ich nicht mal Ansatzweise etwas erreicht. Es scheint mir wesentlich komplizierter als beispielsweise die bibliography styles zu ändern...

Die habe ich mittlerweile im Griff und wir verstehen uns (also sie tun was ich mir vorstelle) aber aus dem longtable Quellcode werd ich nicht schlau...

Deshalb noch die Bitte mir da auf die Sprünge zu helfen... ich weiß zum einen nicht wo ich da anfangen soll und zum anderen auch nicht welche Befehle da die relevanten sind ...

Wäre super !!!

sommerfee
28-03-2008, 17:22
Das ltcaption-Paket ist Bestandteil des caption-Paketes v3.1, kann aber auch ohne caption-Paket verwendet werden:

http://www.ctan.org/tex-archive/macros/latex/contrib/caption/

Der relevante Befehl in longtable ist \LT@makecaption.

Da es aber gut ins ltcaption-Paket passt, und das ltcaption-Paket sowieso \LT@makecaption umdefiniert, habe ich gerade auf die Schnelle eine Version 1.2 davon gezimmert und diesem Beitrag angehängt. Edit: Anhang entfernt, da Paket mittlerweile auf CTAN

Dort gibt es dann eine Länge namens \LTcapskip, die man bei Bedarf mit \setlength\LTcapskip{...} anpassen kann. Beim Laden des Paketes wird diese Länge auf \abovecaptionskip gesetzt, so daß schon durch das pure Laden des ltcaption-Paketes der Abstand der gleiche sein sollte, wie bei \caption in Gleitumgebungen. Ich hatte keine Zeit zum Testen, wird aber schon funktionieren, wenn nicht: Bitte mosern.

(Die Version werde ich in den nächsten Tagen/Wochen auch nach CTAN packen.)

Liebe Grüße,
Axel

mausch
28-03-2008, 17:28
Wie genial!

Vielen Dank!!! Ich werde es am Montag gleich ausprobieren wenn ich wieder an dem Rechner bin! Hier habe ich leider kein Latex bzw. der LeD läuft nicht sauber...

Also Vielen Dank nochmal und ich lasse dich wissen ob es funktioniert hat!

sommerfee
29-03-2008, 07:52
Scheint zu funktionieren:


\documentclass{memoir}
\usepackage{longtable}
\usepackage{ltcaption}[2008/03/28]

\begin{document}

\begin{longtable}{lll}
\caption{ein paar zahlen} \\
\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\endfirsthead
\caption{(...continued)}\\\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\endhead
\multicolumn{3}{r}{{...}continues on next page} \\
\endfoot
\endlastfoot
Egal & 1-2 &2 \\*
\end{longtable}

\begin{table}
\caption{ein paar zahlen}
\centering
\begin{tabular}{lll}\toprule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule
\multicolumn{1}{c}{woher} &\multicolumn{1}{c}{von bis} & \multicolumn{1}{c}{Zahl} \\\midrule

\multicolumn{3}{r}{{...}continues on next page} \\

Egal & 1-2 &2 \\*
\end{tabular}
\end{table}

\end{document}


Gruß,
Axel

mausch
31-03-2008, 08:19
Hi nochmal,
ich habe nun versucht es zu benutzen, allerdings war ich nicht in der Lage es als normales \usepackage{ltcaption} einzubinden. Es wurde leider nicht gefunden wo auch immer ich es versucht habe... habe es in den Ordner C:\Programme\Miktex2.6
und
C:\Programme\MiKTeX 2.6\tex\latex\caption
kopiert.

also habe ich es nun mit

\makeatletter
... hier dann den Inhalt des ltcaption.sty datei ...
\makeatother

Das gut ist, es behebt das Problem und sieht nun so aus wie ich es gern hätte :D DANKE dafür auf jeden Fall!
Das einzige was nun auftritt ist folgende "Warning" Meldung:

LaTeX /b/c12/cWarning:/b/c0/c You have requested package `',
but the package provides `ltcaption'.

Ich denke es liegt an dem nicht ganz adäquaten einbinden des packages... :confused:

sommerfee
31-03-2008, 08:36
ich habe nun versucht es zu benutzen, allerdings war ich nicht in der Lage es als normales \usepackage{ltcaption} einzubinden. Es wurde leider nicht gefunden wo auch immer ich es versucht habe... habe es in den Ordner C:\Programme\Miktex2.6
und
C:\Programme\MiKTeX 2.6\tex\latex\caption
kopiert.

\usepackage{ltcaption} und C:\Programme\MiKTeX 2.6\tex\latex\caption wäre durchaus richtig gewesen, aber vermutlich lag dort vorher noch kein ltcaption.sty, so daß MikTeX jetzt nichts von der Existenz der neuen Datei weiß.

Abhilfe: Entweder vorher ein MikTeX-Update über Start => MikTeX 2.6 => Update machen und dann erst die Datei ltcaption.sty ersetzen, oder aber unter Start => MikTeX 2.6 => Settings den Knopf "Refresh FNDB" anklicken.

Eine dritte Alternative: Die Datei ltcaption.sty ins gleiche Verzeichnis wie das Dokument legen, dann wird sie auch von MikTeX gefunden.

Gruß,
Axel

mausch
31-03-2008, 08:42
Nun funktioniert es. Ich hatte es mit dem update probiert, aber es konnte irgendwie keine Verbindung hergestellt werden. Beide Wege (über update und über settings) haben nicht hin gehauen...

Egal, jetzt hab ich ja ne Lösung und das Ergebnis sieht super aus!