Abbildung mit Kurzbeschreibung zur Bildunterschrift hinzugefügt

Abbildung mit Kurzbeschreibung zur Bildunterschrift hinzugefügt

Ich habe große Abbildungen mit langen Bildunterschriften. Meine Bildunterschriften sind formatiert (mit dem Untertitelpaket) und sehen gut aus, aber ich möchte sie noch etwas anpassen, um auch meine Kurzbeschreibung in Blau und Fettdruck hinzuzufügen.

Derzeit wird einer Bildunterschrift die Kurzbeschreibung zweimal hinzugefügt. Dies erscheint überflüssig und fehleranfällig. Die Kurzbeschreibung wird auch in der Abbildungsliste verwendet und ich möchte sicherstellen, dass sowohl in der Liste als auch in der Abbildung selbst genau dieselbe Kurzbeschreibung vorhanden ist.

MWE:

\documentclass{book}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{xcolor}
\captionsetup[figure]{font={small, singlespacing, sf},labelfont={color=blue, bf, sf}, indention=.5cm, labelsep=quad}

\begin{document}
\listoffigures
\begin{figure}
\includegraphics[width=0.8\textwidth]{black.png}
\centering
\caption[Short description]{\textbf{\color{blue}Short description} Very long description spanning several lines.}
\label{label}
\end{figure}
\end{document}

Antwort1

Sie können \captionfolgendermaßen neu definieren. Hinweis: Im aktuellen Zustand funktioniert dies für nicht richtig \caption*.

\documentclass{book}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{xcolor}
\captionsetup[figure]{font={small, singlespacing, sf},labelfont={color=blue, bf, sf}, indention=.5cm, labelsep=quad}

\begin{document}

\makeatletter
    \let\oldcaption\caption
    \def\caption{\@ifnextchar[{\caption@with}{\caption@without}}
    \def\caption@with[#1]#2{\oldcaption[#1]{\textcolor{blue}{\bfseries#1} #2}}
    \def\caption@without#1{\oldcaption{#1}}
\makeatother

\listoffigures
\begin{figure}
    \includegraphics[width=0.8\textwidth]{example-image-duck}
    \centering
    \caption[Short description]{Very long description spanning several lines.}
    \label{label}
\end{figure}
\end{document}

Ergebnis

Wenn Sie diese Definition direkt in Ihre Präambel einfügen, funktioniert dies nicht (und ich weiß nicht, warum). Es gibt jedoch einen Workaround, bei dem verwendet wird \AtBeginDocument. So können Sie Folgendes in Ihre Präambel einfügen und es wird direkt nach ausgeführt \begin{document}.

\makeatletter
\AtBeginDocument{
    \let\oldcaption\caption
    \def\caption{\@ifnextchar[{\caption@with}{\caption@without}}
    \def\caption@with[#1]#2{\oldcaption[#1]{\textcolor{blue}{\bfseries#1} #2}}
    \def\caption@without#1{\oldcaption{#1}}
}
\makeatother

verwandte Informationen