figure caption in Randnotiz

Tabellen und Grafiken erstellen und anordnen


niederrheiner
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mo 8. Aug 2016, 13:58

figure caption in Randnotiz

Beitrag von niederrheiner »

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?
\documentclass[twoside,11pt]{scrbook}
\usepackage[german, english]{babel}

\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{blindtext}

% neue Befehle
\newcommand{\marginpicture}[3]{%
  \leavevmode\marginpar{%
    \raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}%
      [\ht\strutbox][\dp\strutbox]{\includegraphics[width=#1cm]{#2}}%
      \captionof{figure} {#3} %
}}

\begin{document}

\marginpicture{3}{bilder/test.pdf}{Bild 3}\Blindtext

\end{document}

Danke für Eure Hilfe und Tipps.

Bis dann ...
MfG
Günter[/code]

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Die Optionen beim Laden der Dokumentklasse sind alle voreingestellt.

Du lädst babel bewußt mit der alten deutschen Rechtschreibung für deutschen Text in Deinem englischsprachigen Dokument?

Kennst Du das Paket sidenotes und dessen Umgebung marginfigure?

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: figure caption in Randnotiz

Beitrag von esdd »

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}

niederrheiner
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mo 8. Aug 2016, 13:58

Re: figure caption in Randnotiz

Beitrag von niederrheiner »

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}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

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.

niederrheiner
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Mo 8. Aug 2016, 13:58

Beitrag von niederrheiner »

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.

Antworten