![在 tcolorbox 中更改字幕后的字体](https://linux22.com/image/429936/%E5%9C%A8%20tcolorbox%20%E4%B8%AD%E6%9B%B4%E6%94%B9%E5%AD%97%E5%B9%95%E5%90%8E%E7%9A%84%E5%AD%97%E4%BD%93.png)
我创建了一个环境,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}