PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Endfloat Problem mit Ctable



latex2012
23-05-2012, 16:34
Liebe Latex-Kenner,

für ein Buchmanuskript müssen sämtliche Abbildungen und Tabellen am Ende des Dokuments jeweils auf einer eigenen Seite platziert werden. Leider funktioniert das Endfloat Paket scheinbar nicht mit meinen Ctable Paket. Ohne die Tabellen funktioniert Endfloat einwandfrei, wenn die Tabellen eingebunden werden wird kein Pdf erstellt und die Fehlermeldung weist auf meine Tabellencodes hin.

Da das Buchmanuskript etwa 50 Tabellen enthält, möchte ich die ungern alle noch mal mit einem anderen Paket erstellen.

Ich verwende die scrbook Koma-Skript Document class.

Für Eure Hilfe wäre ich Euch sehr dankbar!

LG

hakaze
23-05-2012, 16:49
Laut der Dokumentation zu endfloat, sollte folgende Anweisung in der Präambel helfen (ungetestet, da kein Minimalbeispiel vorhanden):
\DeclareDelayedFloatFlavor{ctable}{table}

latex2012
24-05-2012, 00:27
Lieber hakaze,

vielen Dank für den Tipp. Leider bekomme ich immer noch eine Fehlermeldung und es wird kein PDF erstellt. Hier ein Minimalbeispiel. Bin für jede Hilfe dankbar!


\documentclass{scrbook}

\usepackage{ctable}
\usepackage{endfloat}
\DeclareDelayedFloatFlavor{ctable}{table}

\begin{document}

Dies ist ein Test.

\ctable[
cap=Test,
caption=Test,
pos=h,
]{cc}{
\tnote[]{}
}{\FL
1. Spalte & 2. Spalte \ML
1 & 2 \NN
3 & 4 \LL}


\end{document}

sommerfee
24-05-2012, 07:42
\DeclareDelayedFloatFlavor funktioniert nur mit Umgebungen. \ctable ist aber ein Befehl und keine Umgebung. Eine mögliche Abhilfe wäre es, \ctable einfach stur-dreist als Umgebung anzuwenden, damit das endfloat-Paket sein \end{ctable} findet und zufrieden ist:



\documentclass{scrbook}

\usepackage{ctable}
\usepackage{endfloat}
\DeclareDelayedFloatFlavor{ctable}{table}

\begin{document}

Dies ist ein Test.

\begin{ctable}[
cap=Test,
caption=Test,
pos=h,
]{cc}{
\tnote[]{}
}{\FL
1. Spalte & 2. Spalte \ML
1 & 2 \NN
3 & 4 \LL}
\end{ctable}

\end{document}


(Achtung, benötigt endfloat v2.5, mit älteren Versionen geht das so nicht.)

(Werde das als Beispiel mit in die Dokumentation zu endfloat aufnehmen.)

rstuby
24-05-2012, 08:42
Aber es wird doch immer davor gewarnt, Befehle einfach als Umgebungen zu verwenden, weil das unerwünschte Nebenwirkungen haben könne!

sommerfee
24-05-2012, 08:59
Aber es wird doch immer davor gewarnt, Befehle einfach als Umgebungen zu verwenden, weil das unerwünschte Nebenwirkungen haben könne!

Das ja auch zurecht, aber wenn man die Wahl zwischen "geht nicht" [1] und "eventuell unerwünschte Nebenwirkungen" hat, würde ich mich für letzteres entscheiden und einfach mal schauen, was für unerwünschte Nebenwirkungen es denn gibt bzw. ob es in diesem Falle überhaupt welche gibt.

[1] Die Alternative wäre ja, \ctable als Befehl dem endfloat-Paket bekannt zu machen. Das wäre theoretisch zwar möglich, aber nicht, ohne einen Haufen Interna von endfloat zu mißbrauchen, die sich in Version 2.6 schon wieder ändern können (und auch definitiv ändern werden). Für endfloat 2.6 habe ich allerdings sowieso schon die Implementation von \AddToDelayedFloats im TODO-Heftchen stehen, darauf aufsetzend könnte man dann in Zukunft \ctable sauber umdefinieren.

latex2012
24-05-2012, 10:01
Liebe(r) sommerfee,

vielen Dank für den Tipp, wirklich super hilfreich.

Ich hab Dein Beispiel laufen lassen, allerdings immer noch eine Fehlermeldung bekommen. Ich nehme an, ich habe dann wohl nicht die aktuelle Endfloat Version. Wie kann ich das Paket denn auf die neueste Version aktualisieren? Sorry, ich binde Pakete sonst einfach immer automatisch über die Präambel ein, aber das scheint hier nicht zu funktionieren.

Vielen Dank für Eure Hilfe!

rstuby
24-05-2012, 10:39
Wenn du Miktex hast, gibt es dort einen Package Manager.
Bei Texlive-Direktinstallation auch (tlmgr).
Ein Problem hast du nur, wenn du eine texlive-Version benutzt, die bei einer Linux-Distribution integriert ist.