Hallo an Alle,
im folgenden Minimalbeispiel wird ein Image korrekt in die Randnotiz gesetzt, aber die caption zu diesem Bild wird aber nicht unter sondern im Bild gesetzt.
Was muss ich machen um das zu ändern?
niederrheiner hat geschrieben:..., aber die caption zu diesem Bild wird aber nicht unter sondern im Bild gesetzt.
Das ist kein Wunder. Du stellst mit dem zweiten optionalen Argument von \raisebox ein, dass als Tiefe nur \dp\strutbox berücksichtigt wird. Die tatsächliche Tiefe nach der Verschiebung beträgt aber \totalheight-\ht\strutbox. Wenn tatsächliche Höhe und Tiefe verwendet werden sollen, kannst Du aber auch gleich auf die Angabe der beiden optionalen Argumente verzichten.
\documentclass{scrbook}
\usepackage[ngerman, main=english]{babel}% ngerman statt german
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{mwe}% Fülltext und Beispielbilder
% neue Befehle
\newcommand{\marginpicture}[3]{%
\leavevmode\marginpar{%
\raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}%
%[\ht\strutbox][\dimexpr\totalheight-\ht\strutbox\relax]% <- so nicht nötig
{\includegraphics[width=#1cm]{#2}}%
\captionof{figure} {#3} %
}}
\begin{document}
\marginpicture{3}{example-image}{Bild 3}\Blindtext
\end{document}
Danke für Deine Antwort.
Die Bildunterschrift steht nun da wo sie hingehört.
Wie formatiere ich die Bildunterschrift, wenn sie länger ist als das Bild breit ist?
Nochmals Danke
esdd hat geschrieben:
\documentclass{scrbook}
\usepackage[ngerman, main=english]{babel}% ngerman statt german
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{mwe}% Fülltext und Beispielbilder
% neue Befehle
\newcommand{\marginpicture}[3]{%
\leavevmode\marginpar{%
\raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}%
%[\ht\strutbox][\dimexpr\totalheight-\ht\strutbox\relax]% <- so nicht nötig
{\includegraphics[width=#1cm]{#2}}%
\captionof{figure} {#3} %
}}
\begin{document}
\marginpicture{3}{example-image}{Bild 3}\Blindtext
\end{document}
Du kannst lokal \setcapindent oder dessen Sternform verwenden, um die Beschriftung nicht hängend zu setzen. Damit die Beschriftung nicht im Blocksatz erfolgt, kannst Du \setcaptionalignment{l} bzw. \setcaptionalignment{L} (braucht das Paket ragged2e) ebenfalls lokal nutzen.
\documentclass{scrbook}
\usepackage[ngerman, main=english]{babel}% ngerman statt german
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{mwe}% Fülltext und Beispielbilder
\usepackage{microtype}
\usepackage{ragged2e}
% neue Befehle
\newcommand{\marginpicture}[3]{%
\leavevmode\marginpar{%
\setcapindent*{0pt}% oder \setcapindent{0pt}
\setcaptionalignment{L}% braucht ragged 2e, sonst \setcaptionalignment{l}
\raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}
{\includegraphics[width=#1cm]{#2}}%
\captionof{figure} {#3}%
}}
\begin{document}
\marginpicture{3}{example-image}{Figure caption example that needs more than one line}\Blindtext
\end{document}
Die Breite der Beschriftung richtet sich auch hier übrigens nicht nach der Breite Deines Bildes sondern nach \marginparwidth. Insofern wäre es vielleicht geschickter die Breite des Bildes relativ zu \marginparwidth anzugeben statt in Zentimetern.
Danke für Deine Antwort.
Das ist genau das mir vorschwebte.
Ich werde micht wohl mal mit Deinen theoretischen Anmerkungen auseinandersetzen müssen.
Nochmals vielen Dank für Deine Hilfe und Tipps.
esdd hat geschrieben:Du kannst lokal \setcapindent oder dessen Sternform verwenden, um die Beschriftung nicht hängend zu setzen. Damit die Beschriftung nicht im Blocksatz erfolgt, kannst Du \setcaptionalignment{l} bzw. \setcaptionalignment{L} (braucht das Paket ragged2e) ebenfalls lokal nutzen.
\documentclass{scrbook}
\usepackage[ngerman, main=english]{babel}% ngerman statt german
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{mwe}% Fülltext und Beispielbilder
\usepackage{microtype}
\usepackage{ragged2e}
% neue Befehle
\newcommand{\marginpicture}[3]{%
\leavevmode\marginpar{%
\setcapindent*{0pt}% oder \setcapindent{0pt}
\setcaptionalignment{L}% braucht ragged 2e, sonst \setcaptionalignment{l}
\raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}
{\includegraphics[width=#1cm]{#2}}%
\captionof{figure} {#3}%
}}
\begin{document}
\marginpicture{3}{example-image}{Figure caption example that needs more than one line}\Blindtext
\end{document}
Die Breite der Beschriftung richtet sich auch hier übrigens nicht nach der Breite Deines Bildes sondern nach \marginparwidth. Insofern wäre es vielleicht geschickter die Breite des Bildes relativ zu \marginparwidth anzugeben statt in Zentimetern.