У меня большие фигуры с длинными подписями. Мои подписи отформатированы (с помощью пакета подписей) и выглядят хорошо, но я хотел бы настроить их немного больше, чтобы также добавить мое краткое описание синим и жирным шрифтом.
В настоящее время в подписи к рисункам краткое описание добавляется дважды. Это кажется излишним и подвержено ошибкам. Краткое описание также используется в списке рисунков, и я хочу убедиться, что в списке и на самом рисунке будет точно такое же краткое описание.
МВЭ:
\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}
решение1
Вы можете переопределить \caption
следующим образом. Примечание: в текущем состоянии это не будет работать правильно для \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}
Если вы напрямую поместите это определение в преамбулу, это не сработает (и я не знаю почему). Но есть обходной путь с использованием \AtBeginDocument
. Таким образом вы можете поместить следующее в преамбулу, и оно будет выполнено сразу после \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