Tengo figuras grandes con títulos largos. Mis subtítulos están formateados (usando el paquete de subtítulos) y se ven bien, pero me gustaría personalizarlos un poco más para agregar también mi breve descripción en azul y negrita.
Actualmente, el título de una figura tiene la descripción breve agregada dos veces. Esto parece redundante y propenso a errores. La descripción breve también se utiliza en la lista de figuras y quiero asegurarme de tener exactamente la misma descripción breve tanto en la lista como en la figura misma.
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}
Respuesta1
Podrías redefinir \caption
de la siguiente manera. Nota: En el estado actual, esto no funcionará correctamente 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}
Si coloca esta definición directamente en su preámbulo, esto no funcionará (y no sé por qué). Pero existe una solución alternativa que utiliza \AtBeginDocument
. De esta manera, puedes poner lo siguiente en tu preámbulo y se ejecutará directamente despué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