自动将浮动标题的第一句加粗

自动将浮动标题的第一句加粗

如何让浮动标题的第一句自动加粗,第二句正常?

\begin{figure}[t]
\centering
\caption{First sentence. Second sentence.}
\end{figure}

输出应该是:

图 1.第一句话。第二句。

答案1

您可以使用通过解析 \@caption 的内容来定制字幕的文本格式,即

\documentclass{article}
\usepackage{xstring}
\usepackage{etoolbox}
\usepackage{caption}

\captionsetup{labelfont=bf,tableposition=top}

\makeatletter
\newcommand\formatlabel[1]{%
    \noexpandarg
    \IfSubStr{#1}{.}{%
      \StrBefore{#1}{.}[\firstcaption]%
      \StrBehind{#1}{.}[\secondcaption]%
      \textbf{\firstcaption.} \secondcaption}{%
      #1}%
      }


\patchcmd{\@caption}{#3}{\formatlabel{#3}}
\makeatother

\begin{document}

\begin{figure}[t]
\centering
test test
\caption{First sentence. Second sentence.}
\end{figure}

\end{document}

答案2

一种非自动的方法是定义:

\newcommand{\bcaption}[2]{\caption{\textbf{#1} #2}}

并使用“bf”选项作为包标题。

这是一个有效的例子:

\documentclass{article}
\usepackage[bf]{caption}
\newcommand{\bcaption}[2]{\caption{\textbf{#1} #2}}
\begin{document}
\begin{figure}[t]
\centering
 \bcaption{First sentence.}{Second sentence.}
\end{figure}
\end{document}

答案3

受到@guido 的启发解决方案,我最终得到以下结果:

\usepackage{xstring}
\usepackage{etoolbox}
\usepackage{caption}
\newcommand\firstsentencebold[1]{%
    \noexpandarg
    \exploregroups
    \IfSubStr{#1}{. }{%
        \StrBefore{#1}{. }[\firstcaptionsentence]%
        \StrBehind{#1}{. }[\othercaptionsentences]%
        \textbf{\firstcaptionsentence. }\othercaptionsentences%
    }{%
        \textbf{#1.}%
    }%
}
\DeclareCaptionFormat{FirstSentenceBold}{\textbf{#1#2}\firstsentencebold{#3}}
\captionsetup{format=FirstSentenceBold}

这主要是为了我未来的自己。

相关内容