自动将图片列表中标题的第一句加粗

自动将图片列表中标题的第一句加粗

我使用了以下方法自动使浮动标题的第一句话变为粗体(与 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}

相关内容