在 tcolorbox 中更改字幕后的字体

在 tcolorbox 中更改字幕后的字体

我创建了一个环境,tcolorbox其中上半部分为粗体文本,而下半部分不是。有时我会\tcbsubtitle在这个环境内使用,我希望这与上下部分的分离相对应。如果我不使用\tcbsubtitle,则会\tcblower增加正确的空间量,但如果我使用\tcbsubtitle另外的,空间就会变得太多。

我意识到的目的\tcbsubtitle不是启动框的下部,但由于上部和下部之间的唯一区别是字体粗细,我认为我可以\tcbsubtitle更改其后的字体。我确实尝试了以下操作,但没有成功:

\tcbset{
    subtitle style = {after  = {\normalfont}}
}

这是一个最小的工作示例:

\documentclass{article}

\usepackage[most]{tcolorbox}

\newtcbtheorem{example}{Example}{
    middle           = 1em,
    lower separated  = false,
    fontupper        = \bfseries\boldmath\raggedright,
    fontlower        = \raggedright,
    fonttitle        = \bfseries\boldmath\raggedright,
}{ex}

\begin{document}

\begin{example}{}{}
    Bold text
    \tcblower % Appropriate amount of vertical space
    Normal text
\end{example}

\begin{example}{}{}
    Bold text
    \tcblower % Too much space
    \tcbsubtitle{Subtitle}
    Normal text
\end{example}

\begin{example}{}{}
    Bold text
    \tcbsubtitle{Subtitle} % Appropriate amount of vertical space
    Bold text              % Still bold
\end{example}

\end{document}

答案1

下面的代码有一个条件,在进入下半部分后立即\ifLower切换。被重新定义为使用此条件来检测它是否是下半部分中的第一个字幕,如果是,则应用 。结果如下所示:true\tcbsubtitle\vspace{-2em}

在此处输入图片描述

\documentclass{article}

\usepackage[most]{tcolorbox}

\newif\ifLower\Lowerfalse

\newtcbtheorem{example}{Example}{
    before lower     = {\Lowertrue},
    middle           = 1em,
    lower separated  = false,
    subtitle style   = {height = 1.5em},
    fontupper        = \bfseries\boldmath,
    fonttitle        = \bfseries\boldmath,
    fontlower        = \normalfont,
}{ex}

\let\tcbsubtitleOriginal=\tcbsubtitle
\renewcommand{\tcbsubtitle}{%
    \ifLower\vspace{-2em}\fi%
    \Lowerfalse%
    \tcbsubtitleOriginal%
}

\begin{document}

\begin{example}{}{}
    Bold text
    \tcblower
    Normal text
\end{example}

\begin{example}{}{}
    Bold text
    \tcblower
    \tcbsubtitle{Subtitle}
    Normal text
\end{example}

\begin{example}{}{}
    Bold text
    \tcblower
    \tcbsubtitle{Subtitle}
    Normal text
    \tcbsubtitle{Subtitle}
    Normal text 2
\end{example}

\end{document}

相关内容