我想定义一个 tcolorbox 环境,例如,
\newtcolorbox{mybox}{
enhanced,
boxrule=0pt,frame hidden,
borderline west={3pt}{0pt}{Peach},
colback=Peach!5,
sharp corners
}
但我希望每个此类框都以某个关键字开头,例如“示例”——不是作为标题,而是作为正文的一部分。有没有办法将其构建到框定义中?
谢谢。
答案1
作为我的评论的替代,也可以使用attach title to upper
在上部包含标题的选项。在这种情况下,可以使用fonttitle
或coltitle
选项选择字体和颜色。
\documentclass[dvipsnames]{article}
\usepackage[most]{tcolorbox}
\newtcolorbox{mybox}[1][]{
enhanced,
boxrule=0pt,frame hidden,
borderline west={3pt}{0pt}{Peach},
colback=Peach!5,
title=Example,
coltitle=Peach,
attach title to upper={\ },
fonttitle=\bfseries,
sharp corners,
#1
}
\begin{document}
\begin{mybox}
This is an example
\end{mybox}
\begin{mybox}[coltitle=RubineRed, title=Question]
This is a question
\end{mybox}
\end{document}
答案2
@Ignasi 的评论已经解决了主要问题。此答案提供了如何使用用户定义的字体以及如何更灵活地创建新的 tcolorbox 的提示。
您可以在以下位置找到非常基本的字体列表本教程来自 Overleaf。请注意,您可能必须找到此或该特定字体的包,在我的 MWE 中,我使用了consolas
:
\usepackage{inconsolata}
\newcommand{\myfont}{\fontfamily{zi4}\selectfont\small}
阅读tcolorbox 手册您可能会注意到,它们通常在选项块的末尾定义带有参数(通常是可选的)的新对象。例如,在第 15 页中,有一个\newtcolorbox{mybox}[2][]{...
,这是一个双参数函数,其中第一个参数是可选的。最后一行是...title={#2},#1}
。这#1
是可选参数,它放在末尾,您可以添加或覆盖任何先前定义的集合。
乍一看,这个选项似乎没用,既然您已经定义了自己的风格,为什么还要费心选择本地选项呢?嗯,因为有时你可能必须在本地进行某些更改,而无需创建一种全新的盒子。
观察结果:您还可以定义一些\tcbset
并基于前一个创建一个新的,但这是另一个答案的技能。
MWE 如下:
\documentclass{article}
\usepackage{inconsolata}
\newcommand{\myfont}{\fontfamily{zi4}\selectfont\small}
\usepackage[skins]{tcolorbox}
\newtcolorbox{mybox}[1][]{
enhanced,
boxrule=0pt, frame hidden,
borderline west={3pt}{0pt}{blue},
colback=blue!5,
sharp corners,
before upper={\textbf{\myfont{Example:} }},
#1
}
\begin{document}
\begin{mybox}
This is my box.
\end{mybox}
\begin{mybox}[colbacktitle=purple, title={This is mybox with option, the option is a title}]
This is my box.
\end{mybox}
\begin{mybox}[colback=red!20, borderline east={3pt}{0pt}{yellow}]
This is my box.
\end{mybox}
\end{document}