Hallo zusammen,
ich hab ein kleines Problem mit Beschreibungen (\caption), speziell die Platzierung. Ich hab keine Loesung im scrguide gefunden und auch nicht ueber google usw.. Ich haette gerne, dass die Beschreibung so aussieht, wie im scrguide in der Tabelle unten rechts nach der Erklaerung von \setcapwidth (also aktuell auf Seite 113 "Abb. 3.6"). Ein Zeilenumbruch hab ich mit \setcapindent* hinbekommen. Und da ich weiss wie breit meine Grafiken sind, kann ich wie im scrguide beschrieben mit \setcapwidth[c]{breite} den Text auch exakt so breit bekommen wie die Grafik. Aber ich schaff es nicht, die Beschreibung _genau_ unter die Grafik zu setzen. Die Grafik ist immer etwas weiter links! Was mach ich da bloss falsch?
Wenn ich auf \centering verzichte und auch die Option "l" fuer setcapwidth verwende, dann geht das super, aber \centering waer ziemlich wichtig fuer mich und deswegen frage ich mich (und euch ;-) ) ob es da noch eine Loesung gibt?
Hier ist mein (hoffentlich halbwegs vorbildliches) vollstaendiges Minimalbeispiel, bei dem das bild durch eine framebox ersetzt wurde....
\documentclass{scrreprt}
\begin{document}
\begin{figure}[htbp]
\centering
\framebox[160pt][c]{Here is the picture.}
\setcapwidth[c]{160pt}
\setcapindent*{0em}
\caption{This is just a very long caption in order to demonstrate the problem. Sure this will be replace by a suitable caption in the original document.}
\end{figure}
\end{document}
\begin{center} \end{center} anstatt \centering
Hi Marius,
mit \begin{center}...\end{center} anstatt \centering klappts:
\documentclass{scrreprt}
\begin{document}
\begin{figure}[htbp]
\begin{center}
\framebox[160pt][c]{Here is the picture.}
\end{center}
\setcapwidth[c]{160pt}
\setcapindent*{0em}
\caption{This is just a very long caption in order to demonstrate the problem. Sure this will be replaced by a suitable caption in the original document.}
\end{figure}
\end{document}
Ralfito
PS: Dein Minimalbespiel ist doch super. Copy+Paste, läuft. So soll das sein!
PPS: Ja, genau. Genauso soll man es laut l2tabu NICHT machen. Was solls!? Entscheidend ist, was raus kommt :-)
Hallo Ralfito, danke fuer
Hallo Ralfito,
danke fuer die Antwort. Ich hab sonst immer \begin{center}...\end{center} verwendet, bis mir mal aufgefallen ist, dass dadurch ja zusaetzlicher Zwischenraum entsteht. Deswegen hab ich neuerdings \centering genommen. Mit der center-Umgebung klappt zwar das exakte Zentrieren, aber es entsteht ein unschoener Zwischenraum zwischen Bild und Beschreibung. Hast du dafuer auch noch ne Loesung?
Mit \vspace{-10pt} verschiebt es die Box wieder etwas nach links. Das ist doch im wahrsten Sinne des Wortes "ver-rueckt"... Was passiert da intern, dass \centering das nicht hinbekommt?
Achso, shame on me, ich war 1 Jahr in Amerika und hab das "d" vergessen... aber wohl eher aus Fluechtigkeit.
Viele Gruesse!
marius
Dirty
Marius, gutes Auge :-)
stimmt, mit der center-Umgebung kommt der Abstand rein. Mit \centerline geht es allerdings hervorrragend:
\documentclass{scrreprt}
\begin{document}
\begin{figure}[htbp]
\centerline{\framebox[160pt][c]{Here is the picture.}}
\setcapwidth[c]{160pt}
\setcapindent*{0em}
\caption{This is just a very long caption in order to demonstrate the problem. Sure this will be replaced by a suitable caption in the original document.}
\end{figure}
\end{document}
Ist leider nicht ganz sauber, (siehe l2tabu) da TeX und nicht LaTeX. Egal :-)
Danke nochmals!
Hi,
danke, fuer die Idee. Ich kenn centerline, aber auf die Idee waer ich trotzdem nicht gekommen.
Viele Gruesse
marius
Loesung!!!
Ich hab nochmal ein herumgespielt und bin draufgekommen, dass das \setcapindent*{0em} _nicht_ nach der framebox (oder dem entsprechenden Bild) kommen darf. Also z.B. folgende Version geht:
\documentclass{scrreprt}
\begin{document}
\begin{figure}[htbp]
\centering
\setcapwidth[c]{160pt}
\setcapindent*{0em}
\framebox[160pt]{Here is the picture.}
\caption{This is just a very long caption in order to demonstrate the problem. Sure this will be replaced by a suitable caption in the original document.}
\end{figure}
\end{document}
Erklärung dazu
Nach der
\framebox
befindet man sich noch im horizontalen Modus. Im horizontalen Modus sind aber Leerzeichen in TeX grundsätzlich signifikant. Zeilenenden werden als Leerzeichen interpretiert. Mehrere aufeinanderfolgende Leerzeichen werden zu einem zusammengefasst. Alle Leerzeichen am Ende werden zwar entfernt, das gilt aber nicht für Leerzeichen zwischen Anweisungen, da diese dann nicht aufeinanderfolgend sind. Stehen die Anweisungen jedoch am Anfang, so befindet man sich noch im vertikalen Modus. Im vertikalen Modus werden Leerzeichen komplett ignoriert.Übrigens gibt es in der KOMA-Script-Anleitung ein Beispiel, das mit den Worten beginnt: »Ein etwas ausgefallenes Problem ist, wenn die Bildunterschrift zentriert unter einer Abbildung stehen und dabei genauso breit wie die Abbildung selbst sein soll.« In diesem Beispiel werden signifikante Zeilenenden nicht umsonst auskommentiert. Das ganze Beispiel gipfelt dann in der Umgebung
AbbildungSetztCaptionBreite
gefolgt von der Frage, wie man ohnecaptionbeside
deren Funktionalität teilweise mit dem soeben gezeigten nachbilden könnte.Es ist durchaus erlaubt, Beispielcode aus der Anleitung zu verwenden.
Sauber
Danke Markus, für den Hintergrund...
ich habe das Problem doch interessant genug gefunden, um meine Graphiken nochmal anzugucken (ich hatte bisher \centerline benutzt, shame on me).
Die Zeilenenden sind in der Tat das Problem. Ein simples % an der richtigen Stelle, und alles wird gut. Ein wenig lästig, aber der Code ist endlich sauber (ist KEIN Minimalbeispiel!):
\begin{figure}[t]
\centering
\includegraphics[width=10cm]{bild.eps}%
\setcapwidth[c]{10cm}
\caption[Blahblah]{Blahblahblah}
\end{figure}
Ralfito
Hallo!
Hallo!
Dieser Eintrag hier hat mir schon sehr weitergeholfen. Allerdings bekomme ich es nicht hin, dass ich nicht für jedes Bild einzeln \setcapwidth angeben muss. Mir ist wichtig, dass jede unterscrift zentriert ist, die Breite habe ich bisher überhaupt nicht gesetzt (die voreinstellungen zzlg. 20pt rand sehen für mich gut aus.) Warum klappt also ein einfaches:
\setcapwidth[c]{\textwidth-40pt}
\setcapindent{0pt}
\setcapmargin{20pt}
in der Präambel nicht??
Edit: OK, ich muss natürlich die Breite unabhängig vom Rand definieren, sprich nur eines von beiden! :-)