我想将用于的可选列表条目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}