根据包装tcolorbox
的用户手册,该\newtcolorbox
宏的用法如下(第15页)。
下面给出使用示例。(第 15 页)。
以下是我对这个例子不明白的地方。
- 在定义部分:空方括号是什么意思?没有默认值,也就是说这 2 个选项是必需的?如果是这样,为什么不简单地省略这些括号,就像在同一页上给出的以下示例中一样?
- 在使用部分:为什么第一个参数(
[colback=yellow]
)写在方括号内,而第二个参数({Hello there
})写在花括号内?如果参数超过 2 个,如何指定?
答案1
该定义类似于\newcommand
你可以通过以下方式定义某些内容
\newcommand{\mycmd}[2][x]{optional: #1, mandatory: #2}
它定义了一个\mycmd
接受两个参数的命令[2]
。第一个参数是可选的,x
如果不使用,它将采用该值。因此,\mycmd{a}
是有效的,就像是\mycmd[b]{a}
。
具体到您的问题:
- 在定义部分:空方括号是什么意思?没有默认值,也就是说这 2 个选项是必需的?如果是这样,为什么不简单地省略这些括号,就像在同一页上给出的以下示例中一样?
空的方括号表示新定义的tcolorbox
命令将采用单身的可选参数,如果用户未指定,则该可选参数的默认值将为空。
- 在使用部分:为什么第一个参数(
[colback=yellow]
)写在方括号内,而第二个参数({Hello there}
)写在花括号内?如果参数超过 2 个,如何指定?
这是因为的创建mybox
定义为
\newtcolorbox{mybox}[2][]
在第一和
\newtcolorbox{mybox}[1]
在第二。
第一个声明mybox
将采用两个参数[2]
,其中第一个参数是可选的,如果不提供则默认为“空白”。第二个声明将mybox
只采用一个参数[1]
,并且它是一个强制参数。
如果你想要 5 个参数,并且全部是必需的,那么你可以使用
\newtcolorbox{mybox}[5]
如果你想要一个可选参数以及(比如说)3 个强制参数,那么使用
\newtcolorbox{mybox}[4][default]
default
其中,如果未指定可选参数,则为可选参数的默认定义。此外,可选参数始终是第一个参数#1
。
答案2
第一个例子中的为[]
空,但允许指定 mybox 环境调用的可选参数,即\begin{mybox}[colback=yellow]{Foo}
title 将具有黄色背景和 标题 foo。第二个示例不允许可选参数,仅此而已。
具有两个或更多强制参数的框环境的定义与通常的一样\newcommand
:\newtcolorbox{foo}[2]{options}
。
如果需要更多可选参数,请使用\DeclareTColorBox
功能tcolorbox
。
\documentclass{article}
\usepackage[most]{tcolorbox}
\newtcolorbox{mybox}[2][]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
colbacktitle=red!85!black,enhanced,
attach boxed title to top center={yshift=-2mm},
title=#2,#1}
\newtcolorbox{myboxwithtwoparameters}[2]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
colbacktitle=red!85!black,enhanced,
attach boxed title to top center={yshift=-2mm},
title=#2,code={\addtocontents{toc}{#2}}}
\DeclareTColorBox{mytotalbox}{O{}mO{-2mm}}{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
colbacktitle=red!85!black,enhanced,
attach boxed title to top center={yshift=#3},
title=#2,#1}
\begin{document}
\tableofcontents
\begin{mybox}[colback=yellow]{Hello there}
This is my own box with a mandatory title
and options.
\end{mybox}
\begin{myboxwithtwoparameters}{Hello there}{Hello Darkness my old friend}
Foo
\end{myboxwithtwoparameters}
\begin{mytotalbox}[colback=yellow]{Hello there}[-5mm]
This is my own box with a mandatory title
and options.
\end{mytotalbox}
\end{document}