只需在 beforeupper 中更改文本格式

只需在 beforeupper 中更改文本格式

尝试调整上方之前包含的文本的文本格式,而不改变框其余部分的格式。这是我现在的尝试:

\newtcolorbox{mybox}{
enhanced,
before upper={\selectfont\bfseries\sffamily\color{defColor!80!black}{Example}},**
boxrule=0pt,frame hidden,
borderline west={3pt}{0pt}{defColor},
colback=defColor!5,
sharp corners
}

但是这个解决方案(由于我无法确定的原因)使得框中的所有文本都是 sffamily、bfseries 等。

我该如何限制这些量词的范围?

答案1

您可以将定义放在一个组中:

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\colorlet{defColor}{green}
\newtcolorbox{mybox}{
enhanced,
before upper={\bgroup\selectfont\bfseries\sffamily\color{defColor!80!black}{Example}\egroup},
boxrule=0pt,frame hidden,
borderline west={3pt}{0pt}{defColor},
colback=defColor!5,
sharp corners
}
\begin{document}
\begin{mybox}{ grouping:}
in \LaTeX\ you can use \texttt{\textbackslash bgroup} and \texttt{\textbackslash egroup}
\end{mybox}
\end{document}

在此处输入图片描述


但是,在这种情况下,最好使用带有参数的字体命令的变体,这些变体仅将设置应用于参数。在这种情况下,\textsf(sans serif)、\textbf(bold) 和\textcolor{color name}{text}(color)。这些命令可以嵌套。在这种情况下,\bgroup\egroup是不需要的。

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\colorlet{defColor}{green}
\newtcolorbox{mybox}{
enhanced,
before upper={\textbf{\textsf{\textcolor{defColor!80!black}{Example}}}},
boxrule=0pt,frame hidden,
borderline west={3pt}{0pt}{defColor},
colback=defColor!5,
sharp corners
}
\begin{document}
\begin{mybox}{ font settings:}
in \LaTeX\ you can also use \verb+\textbf+, \verb+\textsf+ and \verb+\textcolor+
\end{mybox}
\end{document}

在此处输入图片描述

相关内容