我使用了以下方法自动使浮动标题的第一句话变为粗体(与 hyperref 结合):Hyperref 兼容性,可自动加粗浮动标题的第一句 float。
但是,另外,我还需要在图表列表/表格列表中添加简短版本的标题(因为我的大多数标题都很长)。通常的方法\caption[entry in LOF]{full caption}
不再有效。是否有可能在 LOF/LOT 中自动显示标题的粗体部分?
\documentclass{scrbook}
\usepackage{caption}
\usepackage{xstring}
\usepackage{hyperref}
\makeatletter
\newcommand\formatlabel[1]{%
\noexpandarg
\IfSubStr{#1}{.}{%
\StrBefore{#1}{.}[\firstcaption]%
\StrBehind{#1}{.}[\secondcaption]%
\textbf{\firstcaption.} \secondcaption}{%
#1}%
}
\AtBeginDocument{%
\newcommand*{\org@caption}{}%
\let\org@caption\@caption
\def\@caption#1[#2]#3{%
\org@caption{#1}[{#2}]{\formatlabel{#3}}%
}%
}
\makeatother
\begin{document}
\begin{figure}[tb]
\caption{First sentence is bold. Second sentence is not.}
\label{fig:figure1}
\end{figure}
\end{document}
答案1
我适应了这个帖子将粗体部分设置为简短描述。
\documentclass{scrbook}
\usepackage{caption}
\usepackage{xstring}
\usepackage{hyperref}
\makeatletter
\def\getfirst#1.#2\relax{{#1}}
\def\getsecond#1.#2\relax{{#2}}
\AtBeginDocument{%
\newcommand*{\org@caption}{}%
\let\org@caption\@caption
\def\@caption#1[#2]#3{%
\org@caption{#1}[\getfirst#3\relax]{{\bfseries\getfirst#3\relax} \getsecond#3\relax}%
}%
}
\makeatother
\begin{document}
\begin{figure}[tb]
\caption{First sentence is bold. Second sentence is not.}
\label{fig:figure1}
\end{figure}
\listoffigures
\end{document}