向标题添加可选参数以进入图形列表条目

向标题添加可选参数以进入图形列表条目

我想将用于的可选列表条目listoffigures也添加到标题中。

在这个基本例子中:

\documentclass{scrreprt}
\usepackage{caption}
\begin{document}

\begin{figure}
\includegraphics{baz}
\caption[Baz]{Foo Bar}
\end{figure}

\input{foo}
\end{document}

标题应为“图1:Baz- Foo Bar”,而不是默认的“图1:Foo Bar”。有什么想法吗?

答案1

要添加可选参数,您可以通过 patch\@caption将其内容传递给\@makecaption

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\@caption}{#3}{#2~--~#3}{}{}
\makeatother

这只是插入第二个参数\@caption(包含可选参数\caption作为主标题的一部分:

在此处输入图片描述

\documentclass{scrreprt}% http://ctan.org/pkg/koma-script
\usepackage{caption,graphicx}% http://ctan.org/pkg/{caption,graphicx}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\@caption}{#3}{#2~--~#3}{}{}
\makeatother
\begin{document}

\begin{figure}
  \centering\includegraphics{example-image-a}
  \caption[Baz]{Foo Bar}
\end{figure}

\end{document}

请注意使用\makeatletter...的要求\makeatother对。有关详细信息,请参阅以及\makeatletter\makeatother做什么?


或者,如果你不想在全球范围内执行此操作,你可以使用

\caption[Baz]{Baz~--~Foo Bar}

这将是上述内容的本地(逐字)版本。


为了成功实现这一点hyperref,需要更大规模地替换其中的内容\@caption,正如regexpatch\xpatchcmd*替换全部补丁:

在此处输入图片描述

\documentclass{scrreprt}% http://ctan.org/pkg/koma-script
\usepackage{caption,graphicx}% http://ctan.org/pkg/{caption,graphicx}
\usepackage{regexpatch,hyperref}% http://ctan.org/pkg/{regexpatch,hyperref}
\makeatletter
\xpatchcmd*{\@caption}{#3}{#2~--~#3}{}{}
\makeatother
\begin{document}

\begin{figure}
  \centering\includegraphics{example-image-a}
  \caption[Baz]{Foo Bar}\label{myfig}
\end{figure}

See Figure~\ref{myfig} with title~\nameref{myfig}.
\end{document}

相关内容