Sie sind hier

Ausrichtung des Titels innerhalb der captionbeside-Umgebung

Guten Tag!

Ich nutze bei doppelseitigem Layout innerhalb der captionbeside-Umgebung die Option [i], um Abbildungen immer außen auf der Seite zu haben.

Bei sehr kurzem Titeltext (1-2 Worte) und kleiner Grafik (.2\linewidth) ergibt sich auf ungeraden Seite eine, etwas unschön wirkende, Lücke zwischen Titel und Abbildung.

Ich würde gern den Titeltext auf ungeraden Seiten rechtsbündig zur Abbildung ausrichten.
Wie lässt sich das realisieren?

Vielen Dank!

Sebastian

Bild von Markus Kohm

Hallo!

Hier also ein Minimalbeispiel. Im ersten Fall das normale Verhalten von captionbeside mit i-Option mit entsprechend großer Lücke. Im zweiten Fall ein (zugegeben unschönes) Beispiel, wie ich mir das vorstellen.

Vielen Dank und schönen ersten Advent!
Sebastian

\documentclass[twoside]{scrreprt}

\begin{document}

\begin{figure}
\begin{captionbeside}{rechts, mit L\"ucke}[i][\linewidth]%
\fbox{%
\parbox[b][5\baselineskip][c]{0.2\linewidth}{%
\hspace*{\fill}Bild\hspace*{\fill}%
\par}}
\end{captionbeside}
\end{figure}

\begin{figure}
\raggedleft%
so \"ahnlich solls sein
\fbox{%
\parbox[b][5\baselineskip][c]{0.2\linewidth}{%
\hspace*{\fill}Bild\hspace*{\fill}%
\par}}
\end{figure}

\end{document}

Bild von Markus Kohm

OK, ich habe jetzt verstanden, was Du willst und warum. Das Problem ist, dass das natürlich nur einzeilige Bildtitel betrifft. Genau die Unterscheidung, ob es sich um einen einzeiligen oder mehrzeiligen Bildtitel handelt gibt es aber bei captionbeside nicht. Unter der Voraussetzung, dass man bereits festgestellt hat, dass es sich um einen einzeiligen Titel handelt, kann man mit einem ganz üblen Hack, der auf Wissen der internen Funktion der aktuellen KOMA-Script-Version basiert, das Problem lösen. Das geht aber vermutlich bereits schief, wenn man beispielsweise das caption-Paket verwendet. Es kann auch jederzeit nach einem Update von KOMA-Script in die Hose gehen!

Weitere Nachteil: Es funktioniert zwar für Abbildungen, bei denen der Titel links steht, aber nicht bei solchen, bei denen der Titel rechts steht. Bei einer Änderung des Umbruchs erhält man also ein nicht erwünschtes Ergebnis. Das kann man eventuell mit \ifthispageodd lösen.

\documentclass[twoside]{scrreprt}
\begin{document}
\begin{figure}
  \setcaphanging% sicherheitshalber
  \expandafter\def\csname @hangfrom\endcsname{\hspace*{\fill}}% ÜBLER PFUSCH!
  \begin{captionbeside}{rechts, mit L\"ucke}[i][\linewidth]%
    \fbox{%
      \parbox[b][5\baselineskip][c]{0.2\linewidth}{%
        \hspace*{\fill}Bild\hspace*{\fill}%
        \par}}
  \end{captionbeside}
\end{figure}
\end{document}

In meinem Fall möchte ich die Bilder am äußeren Rand, die caption direkt daneben innen am Bild ausgerichtet.

Mein Minimalbeispiel:

%%%
\documentclass[
twoside,
noonelinecaption,
]{scrreprt}

\setcapwidth[o]{.4\textwidth}
\setcapmargin*[4cm]{-2cm}
\setcapindent{0em}

\begin{document}

\begin{figure}
\begin{captionbeside}[erste Seite]{Erste Seite:\\Seite rechts, Bild ist am rechten Rand und caption soll links daneben rechtsbündig am Bild ausgerichtet sein}[i][.7\linewidth][.4\linewidth]*
\rule{4cm}{12cm}
\end{captionbeside}
\end{figure}

\pagebreak
\begin{figure}
\begin{captionbeside}[zweite Seite]{Zweite Seite:\\Seite links, Bild ist am linken Rand und caption soll rechts daneben linksbündig am Bild ausgerichtet sein}[i][.7\linewidth][.4\linewidth]*
\rule{4cm}{12cm}
\end{captionbeside}
\end{figure}

\pagebreak
\begin{figure}
\begin{captionbeside}[dritte Seite]{Dritte Seite:\\Seite rechts, Bild ist am rechten Rand und caption soll links daneben rechtsbündig am Bild ausgerichtet sein}[i][.7\linewidth][.4\linewidth]*
\rule{8cm}{12cm}
\end{captionbeside}
\end{figure}

\end{document}
%%%

Die ersten 2 Bilder sind richtig, doch weil [Breite] für caption+Bild gilt, werden die captions bei grossen Bildern zu klein. Die caption-Breite soll allerdings konstant sein.

Sehe ich das richtig, dass weder \setcapwidth noch \setcapmargin auf die captionbeside Umgebung Einfluss haben?

Kann ich die beiden [Anordnung][Breite][Offset] in der Präambel festlegen?

Wie aktiviere ich das Syntaxhighlighting hier im Forum?

Gruß,
Paolo

Bild von Markus Kohm

Da die Breite der captionbeside-Umgebung die Breite von Inhalt + Breite des caption-Textes ist, erreicht man eine konstante Maximal-Breite des caption-Textes am besten dadurch, dass man dem Inhalt eine konstante Breite gibt. Das wiederum geht am Einfachsten mit einer minipage oder einer \parbox.

Zu der Frage wie man Beiträge im Forum oder Blog formatieren kann gibt es einen Eintrag in den FAQ.

\begin{captionbeside}[dritte Seite]{\parbox{4cm}{Dritte Seite:\\Seite rechts, Bild ist am rechten Rand und caption soll links daneben rechtsbündig am Bild ausgerichtet sein}}[i][\linewidth][0em]*
\rule{8cm}{12cm}
\end{captionbeside}

So kommt allerdings das Label außerhalb der parbox.

Ich hatte zu Anfang [i][.7\linewidth][.4\linewidth]* gesetzt, um das Label etwas einzugrenzen, gleichzeitig die figure wieder an den äußeren Rand zu setzen, da sie sonst zentriert wurde. Für unterschiedliche Bildgrößen müßte ich dieses Verhältnis jedesmal neu austesten. Ich hätte gerne eine "Standardumgebung" für meine Abbildungen, die sich gutmütig für verschiedene Bildgrößen verhält.

Einen Satz Befehle wie \setcapwidth \setcapmargin für die captionbeside Umgebung fände ich praktisch.

Bild von Markus Kohm

Ich fasse mal zusammen, was ich bisher zu verstehen geglaubt hatte:

  1. Abbildungsbeschriftungen sollen bei doppelseitigem Satz innen neben Abbildungen stehen
  2. Auf linken Seiten, wenn also die Beschriftung rechts steht, sollen einzeilige Beschriftungen linksbündig gesetzt werden.
  3. Auf rechten Seiten, wenn also die Beschriftung links steht, sollen einzeilige Beschriftungen rechtsbündig gesetzt werden.
  4. Unabhängig von der Breite des Bildes soll die Breite der Beschriftung konstant sein.

Wegen der letzten Bedingung habe ich empfohlen, den Inhalt der Umgebung in eine minipage oder \parbox konstanter Breite zu setzen, damit dieser immer gleich breit ist und damit bei ebenfalls konstanten Werten für die captionbeside-Umgebung die Beschriftung ebenfalls eine konstante Breite zur Verfügung hat. Du hast nun aber das Beschriftungsargument in eine \parbox gesetzt.

Bezüglich der rechtbündigen Ausrichtung im Falle einzeiliger Beschriftungen habe ich mich ja bereits geäußert. Das ist nur per üblem Hack möglich, der dann zusätzlich zu verwenden ist.

Mehr Flexibilität gibt es eventuell mit dem Paket floatrow ggf. zusammen mit dem caption-Paket, das sich damit vertragen sollte. Allerdings kann ich bei beiden nicht weiterhelfen, da ich beide nicht verwende.

Notfalls kann man sich eventuell auch selbst etwas basteln. AFAIR habe ich in der KOMA-Script-Anleitung ein Beispiel, wie man sich etwas wie captionbeside selbst basteln könnte, wenn es das nicht bereits gäbe. Den Code kann man beliebig modifizieren. Einen einfachen Satz Parameter, an dem man einfach mal drehen kann, gibt es für den Wunsch jedoch nicht. Ich kann den auch nicht einfach herbeizaubern. Etwas vernünftiges zu entwerfen, zu implementieren und zu dokumentieren kosten viel Zeit. Außerdem ist die captionbeside-Umgebung ohnehin schon ein nicht handhabbares Monster: viel zu viele teilweise optionale Parameter. Mit einer Erweiterung in dieser Richtung sollte man nicht rechnen, bevor KOMA-Script eine 3 vor dem Punkt in der Versionsnummer bekommt.

Comments for "Ausrichtung des Titels innerhalb der captionbeside-Umgebung" abonnieren