PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abbildungsbeschriftung am Seitenrand -- sieht (fast) toll aus!



Ka55i0peia
27-09-2010, 21:02
Hallo Leute,

ich habe ein Frage zu marginfix.

Ich habe wenig Platz in einem Dokument (viele Abbildungen). Daher habe ich mich entschlossen auch die Abbildungsbezeichnungen neben die Abbildung in den Seitenrand zu legen.

Gemacht habe ich das folgendermaßen:



\usepackage{caption}
\usepackage{marginfix}
%...
\begin{figure}[h]
\centering
\includegraphics{tollesBild.jpg}
\end{figure}

\marginpar[\captionof{figure}{Auf dem tollen Bild sieht man so viele tolle Sachen...}\label{fig:tollesBild}]


Die Ausgabe ist wirklich fantastisch -- wenn man drauf achtet, dass das Marginpar neben dem Bild auch Platz hat -- mit einem Schönheitsfehler:

Die Beschriftung startet neben dem Bild erst auf Höhe des Endes. Also sowas hier


------------------------------------
|
--------------------- |
| | |
| ABBILDUNG | |
| | |
| | |
--------------------- Abb 1 |
Auf dem |
Text text text text text Bild sieht |
Text text text text text man so vie-|
Text text text text text le tolle |
Text text text text text Sachen... |


Viel schöner wäre es, wenn die Beschriftung am Fuß der Abbildung endet, oder wenigesten mit dem Kopf der Abbildung beginnt:


------------------------------------
|
--------------------- Abb 1 |
| | Auf dem |
| ABBILDUNG | Bild sieht |
| | man so vie-|
| | le tolle |
--------------------- Sachen... |
|
Text text text text text |
Text text text text text |
Text text text text text |
Text text text text text |


Logischerweise lässt sich aber der \captionof{figure}-Befehl nicht vor \begin{figure}..\end{figure} für die jeweilige Abbildung definieren, sonst könnte man die \marginpar-Anweisung einfach vor die figure-Umgebung setzen.

Daher die Frage ob man eventuell den Darstellungs-Höhe (relativ zur Aufrufstelle) von marginpar regulieren kann.
z.B. \marginpar[above=50px][\captionof{figure}{Auf dem tollen ...}] oder so.

Hat jemand ne Idee?
Grüße.

bischi
27-09-2010, 21:43
Ein Schuss ins Blaue:

\marginpar[\vspace*{-50px}\captionof{figure}{Auf dem tollen Bild sieht man so viele tolle Sachen...}\label{fig:tollesBild}]

Bischi

sommerfee
27-09-2010, 22:11
Ich meine im Hinterkopf zu haben, daß das sidecap-Paket das kann.

Schweinebacke
28-09-2010, 09:48
Das ganze mit der Randnotiz ist außerdem IMHO seeeehr gefährlich, da hier die Randnotiz außerhalb der Gleitumgebung steht, zu der sie gehört. Damit kann - AFAIK auch bei Verwendung von marginfix - die Gleitumgebung weggleiten, wenn sie beispielsweise auf die nächste Seite verschoben wird. Ich würde deshalb eher etwas wie captionbeside (KOMA-Script-Klassen) oder sidecap (kann floatrow das nicht auch?) verwenden. Notfalls könnte man noch \marginnote (gleichnamiges Paket) innerhalb der Gleitumgebung verwenden. Damit ist dann auch das Grundlinienproblem - ggf. zusammen mit \raisebox{\dimexpr\ht\strutbox-\totalheight}{\includegraphics...} erledigt.

medidoc
06-10-2010, 17:27
Fragestellung falsch verstanden

Schweinebacke
07-10-2010, 08:37
Wer hat die Fragestellung falsch verstanden?

Hier mal ein Beispiel mit captionbeside streng nach Anleitung:
\documentclass[captions=topbeside,DIV=9]{scrartcl}
\usepackage[demo]{graphicx}
\begin{document}
\begin{figure}
\begin{captionbeside}{Titel}[o][\dimexpr\textwidth+\marginparsep+\marginparwidth\r elax][0pt]
\parbox[t]{\textwidth}{
\raisebox{\dimexpr\ht\strutbox-\totalheight\relax}{%
\includegraphics[width=\linewidth,height=2cm]{demo}}}
\end{captionbeside}
\end{figure}

\noindent\hrulefill\ Satzspiegel und Randbreitenmarkierung \marginpar{\hrulefill} \hrulefill

\begin{figure}
\KOMAoptions{captions=bottombeside}
\begin{captionbeside}{Titel}[o][\dimexpr\textwidth+\marginparsep+\marginparwidth\r elax][0pt]
\parbox[t]{\textwidth}{\includegraphics[width=\linewidth,height=2cm]{demo}}
\end{captionbeside}
\end{figure}
\end{document} In der KOMA-Script-Anleitung sind weitere, die insbesondere die Verwendung der Option captions bezüglich ihrer Wirkung auf captionbeside verdeutlichen.

voss
07-10-2010, 09:31
Daher die Frage ob man eventuell den Darstellungs-Höhe (relativ zur Aufrufstelle) von marginpar regulieren kann.
z.B. \marginpar[above=50px][\captionof{figure}{Auf dem tollen ...}] oder so.

Hat jemand ne Idee?


Hier ist eine Lösung, die die Caption immer am Fuß enden lässt. Bei schmalen Abbildungen kann man auch optional eine kleinere Breite angeben, damit der Rand dann nicht genutzt wird. Zweiseitige Dokumente mit Links/Rechts wird beachtet.

Herbert


\documentclass[ngerman,twoside,a4paper]{article}
\usepackage[demo]{graphicx}
\usepackage{babel,calc,ifthen,blindtext}

\RequirePackage[%justification=RaggedRight,
font={sf,small},labelfont={sf,small,bf},%
aboveskip=5pt,belowskip=5pt,margin=0pt]{caption}
\newsavebox\tempbox

\newlength\fullwidth
\makeatletter
\newlength\de@Width
\newlength\de@sepWidth\de@sepWidth=3mm
\newlength\de@Indent\setlength\de@Indent{\textwidt h+\marginparwidth}
\fullwidth=\de@Indent

\def\Figure{\@ifnextchar[\Figure@i{\Figure@i[]}}
\def\Figure@i[#1]{\@ifnextchar[{\Figure@ii[#1]}{\Figure@ii[#1][\fullwidth]}}
\def\Figure@ii[#1][#2]#3{%
\def\OptCaption{#1}%
\setlength\de@Width{#2}\addtolength\de@Width{-\de@sepWidth}%
\setlength\de@Indent{#2}\addtolength\de@Indent{-\textwidth}%
\def\Caption{#3}%
\begin{lrbox}{\tempbox}}
\def\endFigure{%
\end{lrbox}\begin{figure}[!htb]%
\abovecaptionskip=0pt\belowcaptionskip=0pt
\ifthenelse{\isodd{\pageref{\thefigure:WideTable}} }%
{\minipage{\de@Width}\minipage[b]{\wd\tempbox}
\usebox\tempbox\endminipage\kern\de@sepWidth%
\minipage[b]{\de@Width-\wd\tempbox}\label{\thefigure:WideTable}%
\ifx\relax\OptCaption\relax\caption{\Caption}\else \caption[\OptCaption]{\Caption}\fi%
\endminipage\endminipage}%
{\ifdim\de@Width>\textwidth \hspace*{-\de@Indent}\fi\minipage{\de@Width}%
\minipage[b]{\de@Width-\wd\tempbox}\label{\thetable:WideTable}%
\ifx\relax\OptCaption\relax\caption{\Caption}\else \caption[\OptCaption]{\Caption}\fi%
\endminipage\kern\de@sepWidth%
\minipage[b]{\wd\tempbox}\usebox\tempbox\endminipage\endminipa ge}%
\end{figure}}
\makeatother

\begin{document}
\title{foo}\author{bar}
\maketitle

\blindtext
\begin{Figure}{Meine sagenhaft tolle Bildbeschriftung\label{fig:0}}
\includegraphics[width=5cm]{foo}
\end{Figure}

\blindtext
\begin{Figure}[Alternative für LOF]{\blindtext}
\includegraphics[width=8cm]{foo}
\end{Figure}

\blindtext
\begin{Figure}[Alternative für LOF][\textwidth]{Meine wieder sagenhaft tolle Bildbeschriftung}
\includegraphics[width=4cm]{foo}
\end{Figure}

\blindtext Siehe auch Abbildung~\ref{fig:0}
\begin{Figure}[][0.8\textwidth]{Meine wieder sagenhaft tolle Bildbeschriftung}
\includegraphics[width=4cm]{foo}
\end{Figure}

\listoffigures

\end{document}

Herbert