在标题中显示短标题和长标题(两者)吗?

在标题中显示短标题和长标题(两者)吗?

标题的语法是

\caption[listoffigures/tables text]{Text actually displayed under picture/table}

但我想要的是这样的:如果我使用上述命令,浮动对象下的文本应该是

Label #.: listof text -- long text

仅为#数字,并且--为任意分隔符(破折号--本身,甚至可能是\newline)。这可能吗?

我正在使用 KOMAScript。

答案1

请参阅注释代码。如果你加载任何与浮点相关的包(floatfloatrowcaptionalgorithmic……)或执行诸如\newfloat\restylefloat等操作,这是我的调整必须来的所有这些。

\documentclass{scrartcl}

\makeatletter
\let\x@caption\caption % original \caption
\def\x@@caption[#1]#2{\x@caption[{#1}]{#1 --- #2}} % with optional arg
\def\x@@@caption#1{\x@caption[{#1}]{#1}} % without optional arg
\def\caption{\@ifnextchar[\x@@caption\x@@@caption} % new \caption
\makeatother

\begin{document}

\listoffigures

\begin{figure}
\centering
\rule{5cm}{5cm}
\caption[Optional text.]{Obligatory text.}
\end{figure}

\begin{figure}
\centering
\rule{5cm}{5cm}
\caption{Obligatory text only.}
\end{figure}

\end{document}

相关内容