Tenho figuras grandes com legendas longas. Minhas legendas são formatadas (usando o pacote de legendas) e parecem boas, mas gostaria de personalizá-las um pouco mais para que minha breve descrição também fosse adicionada em azul e negrito.
Atualmente, a legenda de uma figura tem uma breve descrição adicionada duas vezes. Isso parece redundante e sujeito a erros. A breve descrição também é usada na lista de figuras e quero ter certeza de ter exatamente a mesma breve descrição na lista e na própria figura.
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}
Responder1
Você poderia redefinir \caption
da seguinte maneira. Nota: No estado atual isso não funcionará corretamente para \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}
Se você colocar essa definição diretamente em seu preâmbulo, isso não funcionará (e não sei por quê). Mas há uma solução alternativa usando \AtBeginDocument
. Assim você pode colocar o seguinte em seu preâmbulo e ele será executado diretamente após \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