Hallo,
Ich versuche meine Gleitumgebungen mit Hilfe von float
und KOMA's komaabove
/komabelow
einzustellen. Dabei gitb es mit ctable
s ein Überschriftenpositionierungs-Problem, wenn ich \restylefloat
auf tabellen anwende.
Wie bekomm ich die Überschrift korrekt zentriert?
MWE:
\documentclass{scrartcl} \usepackage{float} \usepackage{ctable} \floatstyle{komaabove} \restylefloat{table} \begin{document} \ctable[table,caption={Test test test test testtest test test testtest}, label=tbl:things]% {>{}p{.4\linewidth}@{}c}{}{% \FL Part & done \ML Title & yes \NN Intro & yes \NN Solution & yes \NN Implementation & yes \NN Evaluation & no \NN Related Work & no \NN Conclusion & yes \LL } \end{document}
Info: Cross-post, da im Stackoverflow-artikel gesagt wurde, ich solle mich besser an den KOMA-Script-Entwickler wenden.
Lass das float-Paket bzw. \restylefloat weg
Lass das nichts als Ärger verursachende float-Paket bzw.
\restylefloat
weg:Mit article gibt es das Zentrierungsproblem ganz genauso:
Das ist also kein KOMA-Script-Problem, sondern ein Problem des Zusammenspiels von ctable und float.
Würde ich gerne
Danke für den Hinweis.
Hier die Begründung, Warum ich eigentlich mit float arbeite:
Ich schreibe eine Wrapper-Klasse und meine Nutzer werden sehr wahrscheinlich
so Pakte wie
listings, algorithm2e, alogrithm, subcaption
und so weiter brauchen.Ich wollte sicherstellen, dass tabellenartige/listingartige Gleitumgebungen (die in diesen Paketen gemacht werden und z.T. direkt auf dem float-Paket aufbauen) auch Über- statt Unterschriften erhalten und entsprechen der KOMA-Einstellungen gestyled sind (in meinem Fall
captionlabel
fett,\setcapindent{1em}
).Es gibt meist bessere Lösungen
Die Pakete listings und subcaption benötigen kein float. Die anderen (hoffentlich) kein
\restylefloat
, sondern allenfalls ein\floatstyle
bevor sie geladen werden. Aber es gibt meist Alternativen, beispielsweise die Definition der Gleitumgebung mit Hilfe von\DeclareNewTOC
und lediglich die Verwendung der Pseudo-Code-Umgebungen der verschiedenen Pakete statt deren Gleitumgebungen. Hier ein Beispiel mit algorithmicx statt algorithm2e:Es gibt weitere Pakete zum Setzen von Pseudocode/Algorithmen. Inwiefern diese geeignet oder geeigneter sind, weiß ich bisher aber nicht.
Und noch etwas: Eine mit Paketen vollgestopfte Wrapper-Klasse kann auch genau das Gegenteil bewirken, also dem Anwender das Leben schwer machen (wie Dein eigenes Beispiel zeigt). Meist beginnt es damit, dass es den Anwender einschränkt, weil er nicht mehr die Pakete verwenden kann, die er will, sondern die verwenden muss, die ihm die Klasse vorschreibt. Glücklich, wer dann weiß, dass er eigentlich überflüssige Pakete mit Hilfe von scrlfile (ja, das Paket kann mit
\RequirePackage
auch vor der Klasse geladen werden) deaktivieren kann … Ganz schlimm wird es, wenn ihm die Klasse die Verwendung von inputenc oder fontenc (womöglich noch mit ganz bestimmten Optionen) vorschreibt …Dann wohl reagieren statt agieren.
Danke für dieses gute Beispiel. Ich werde sehen, dass ggf mit einzubauen.
Mein versuch bestimmte Einschränkungen einzuführen rührt von Verlagsanforderungen her.
Außerdem wollte ich den Nachbearbeitungs-Aufwand gering halten.
Einige Pakete (insbesonderen für Schriften und aus dem
l2tabu
) habe ich perPreventPackageFromLoading
abgeschaltet und auch alte Schriftschalter deaktiviert.Ich werde jetzt wohl eher auf das laden von bestimmten Paketen reagieren als sie proaktiv zu laden (Stichwort
\AfterPackage
), weil diese Problematik halt weitergehend ist als nur ctable und Pseudocode (z.B., Anwender lädt andere Tabellen- oder Listing-Pakete).Ich richte mich einfach auf die Fragen der Anwender ein :)