PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Captions und floatrow



Nini
14-11-2008, 20:31
Hallo,

ich versuche gerade, 2 Abbildungen nebeneinander zu kriegen. (Muss sein, weil Latex sie sonst sehr unschön platziert).

Ich habe das floatrow (http://www.ctan.org/tex-archive/macros/latex/contrib/floatrow/floatrow.pdf) package gefunden. Die Doku ist mir leider etwas wirr geschrieben, deswegen verstehe ich nicht, was ich falsch mache. Ich bin auch noch ziemliche Anfängerin, was Latex betrifft. ;)

Das Problem ist, dass die Captions nicht in der Breite angepasst werden:Beispiel (http://temp.renephoenix.de/floatrow_problem.png) (Wie man schön sieht, sind beide Captions sogar weiter als die textbreite)

Hier ist ein Minimalbeispiel:



\documentclass[12pt,a4paper,oneside,idxtotoc,normalheadings,bibto toc]{scrbook}
\listfiles

\usepackage[font=small, labelfont=bf, format=plain, labelsep=period, justification=centerlast, width=.9\textwidth]{caption}
\captionsetup{font+=it}
\captionsetup[figure]{position=below,belowskip=5pt,aboveskip=5pt}
\usepackage{graphicx}
\usepackage[floatrowsep=qquad]{floatrow}

\begin{document}

\begin{figure}[htb]
\begin{floatrow}
%
\ffigbox[\FBwidth]{
\centering
\includegraphics[width=0.4\textwidth]{bilder/kap3/ngoBal.png}}
{\caption{Balance. Laaanger langer langer langer langer langer langer langer Text. Und noch ein bischen länger. }
\label{fig:ngoBal}}
%
\ffigbox[\FBwidth]{
\centering
\includegraphics[width=0.4\textwidth]{bilder/kap3/ngoEM.png}}
{\caption{Beispiel für visuelles Gleichgewicht. Laaanger langer langer langer langer langer langer langer Text.}
\label{fig:ngoEM}}
\end{floatrow}
\end{figure}

\end{document}


Hängt es mit meiner Caption-Definition zusammen? Die möchte ich aber eigentlich nicht mehr ändern. Floatrow soll außerdem mit Caption zusammenarbeiten. (dachte ich)

Ich hoffe wirklich, dass das irgendwie behebbar ist, sonst sieht das Layout nicht so prickelnd aus..

mechanicus
14-11-2008, 20:49
Hallo,

wenn du die Option width=0.9\textwidth dem Paket caption gibst, dann macht er das auch.

\documentclass[12pt,a4paper,oneside,idxtotoc,normalheadings,bibto toc]{scrbook}
\listfiles

\usepackage[font=small, labelfont=bf, format=plain, labelsep=period, justification=centerlast, width=.9\textwidth]{caption}
\captionsetup{font+=it}
\captionsetup[figure]{position=below,belowskip=5pt,aboveskip=5pt}
\usepackage[demo]{graphicx}
\usepackage[floatrowsep=qquad]{floatrow}

\begin{document}

\begin{figure}[htb]
\begin{floatrow}
%
\captionsetup{width=0.4\textwidth}
\ffigbox[\FBwidth]{
\centering
\includegraphics[width=0.4\textwidth]{duck}}
{\caption{Balance. Laaanger langer langer langer langer langer langer langer Text. Und noch ein bischen länger. }
\label{fig:ngoBal}}
%
\ffigbox[\FBwidth]{
\centering
\includegraphics[width=0.4\textwidth]{duck}}
{\caption{Beispiel für visuelles Gleichgewicht. Laaanger langer langer langer langer langer langer langer Text.}
\label{fig:ngoEM}}
\end{floatrow}
\end{figure}

\end{document}

Nini
14-11-2008, 21:11
Das ist interessant. Gibt es dann eine andere Möglichkeit, das besser zu definieren? 0.9 sieht besser aus als 1.0. Kann ich was anderes als \textwidth angeben, damit es immer klappt?

Ich bin wohl davon ausgegangen, dass das angepasst wird, oder das floatrow die Breite wie subfigure (im Gegensatz zu subfloat) ignoriert. (ups)

Denn ich gebe der Floatbox ja das Argument [\FBwidth] mit. Laut Doku soll das die Captionbreite an die Bildbreite anpassen. :confused: :(

Aber danke schonmal, das macht das ganze wieder anschaubar!! :)

P.S. \usepackage[demo]{graphicx} ?
Ignoriert mit demo Graphics die Bilder?

mechanicus
14-11-2008, 22:07
Hallo,


Das ist interessant. Gibt es dann eine andere Möglichkeit, das besser zu definieren? 0.9 sieht besser aus als 1.0. Kann ich was anderes als \textwidth angeben, damit es immer klappt?
in den Dokumentationen habe ich nichts weiter gefunden. Vielleicht schaut ja der Paketauthor von caption hier vorbei.



Denn ich gebe der Floatbox ja das Argument [\FBwidth] mit. Laut Doku soll das die Captionbreite an die Bildbreite anpassen. :confused: :(
Das tut es auch, ohne die option width.



P.S. \usepackage[demo]{graphicx} ?
Ignoriert mit demo Graphics die Bilder?
Hiermit wird einfach ein Rechteck ausgegeben, so dass man für solche Minimalbeispiele einfach einen Platzhalter hat und nicht extra ein Bild mitschicken muss.

Gruß
Marco

Nini
14-11-2008, 22:16
Hallo,

vielen Dank für die Mühe! Diese Option ist wirklich nützlich, wieder was gelernt.


Das tut es auch, ohne die option width.

Das verstehe ich nicht ganz. Wenn ich die Breite auf 0.4 setze, wie in deinem Beispiel, setzt er die Bildunterschrift ja so breit wie die Grafik?
Wenn ich 0.2 mache, macht er es wiederum entsprechend schmal.

Oder ist es einfach Zufall, dass es mit 0.4 perfekt aussieht?

mechanicus
14-11-2008, 22:26
Oder ist es einfach Zufall, dass es mit 0.4 perfekt aussieht?

Wie meinst du das? Ich habe einfach die Graphik und die caption auf diese Größe gesetzt.


\captionsetup{width=0.4\textwidth}
...
\includegraphics[width=0.4\textwidth]{duck}}


Gruß
Marco

sommerfee
15-11-2008, 10:02
Denn ich gebe der Floatbox ja das Argument [\FBwidth] mit. Laut Doku soll das die Captionbreite an die Bildbreite anpassen. :confused: :(

Ich verstehe das auch so: \captionsetup{width=...} ist eine globale Einstellung; und auch ich würde erwarten, daß die vom floatrow-Paket lokal überschrieben wird. Es sieht so aus, aus würde die Breitenangabe lediglich die Breite der Box angeben, in der die caption gesetzt wird. Solange aber die Einstellung "width=..." nicht überschrieben wird - sei es manuell oder vom floatrow-Paket - setzt das caption-Paket die caption ganz brutal in dieser Breite, egal in welchem Kontext, von dem weiß ja das caption-Paket nichts.

Also ein Bug im floatrow-Paket? Zumindest eine Unschönheit, finde ich.

Ich würde das ebenso wie mechanicus ausbügeln, indem ich in die betreffenen Abbildungen die Breitenangabe manuell zurücksetze, z.B.:


\begin{figure}[htb]
\captionsetup{margin=0pt}
\begin{floatrow}
...

(oder aber mit \captionsetup{width=...} wie von mechanicus vorgeschlagen)

Liebe Grüße,
Axel

Nini
15-11-2008, 18:04
Danke auch dir für die Antwort. Schön, dass ich nicht die einzige bin, die das so erwartet hätte. ;) Deine Erklärung klingt logisch.
Jetzt habe ich das mit der Breite auch endlich verstanden.
Habe es selbst gemerkt, als ich die Bildbreite auf 0.45 vergrößert habe, aber die Caption dann zu schmal wurde.


\captionsetup{margin=0pt}

scheint aber besser zu sein. Ich habe es ausprobiert, damit klappt es astrein, wenn ich die eine Abbildung auf 0.3 verkleinere und die andere auf 0.5 vergrößere, die Captions sitzen perfekt. (oder liegen? es ist ja ein Layout. ;) ) Endlich so, wie es in der Doku gezeigt war.

Ich dachte aber immer, margin bezieht sich auf die Ränder der Caption? Wieso setzt das die Breite zurück?

Edit: tolles Forum übrigens! :)

sommerfee
16-11-2008, 09:55
Ich dachte aber immer, margin bezieht sich auf die Ränder der Caption? Wieso setzt das die Breite zurück?

"margin=" und "width=" sind Einstellungen, die sich gegenseitig überschreiben. D.h. man kann entweder einen Rand angeben, dann ist die Breite der caption automatisch der verfügbare Platz - 2* Rand. Oder aber man gibt eine feste Breite an, dann wird diese Einstellung verwendet. Beides zusammen geht (noch) nicht.

Liebe Grüße,
Axel