`\newtcolorbox` 宏中的可选参数

`\newtcolorbox` 宏中的可选参数

根据包装tcolorbox的用户手册,该\newtcolorbox宏的用法如下(第15页)。

新颜色盒

下面给出使用示例。(第 15 页)。

newtcolorbox 使用示例

以下是我对这个例子不明白的地方。

  1. 在定义部分:空方括号是什么意思?没有默认值,也就是说这 2 个选项是必需的?如果是这样,为什么不简单地省略这些括号,就像在同一页上给出的以下示例中一样?

必选选项

  1. 在使用部分:为什么第一个参数([colback=yellow])写在方括号内,而第二个参数({Hello there})写在花括号内?如果参数超过 2 个,如何指定?

答案1

该定义类似于\newcommand你可以通过以下方式定义某些内容

\newcommand{\mycmd}[2][x]{optional: #1, mandatory: #2}

它定义了一个\mycmd接受两个参数的命令[2]。第一个参数是可选的,x如果不使用,它将采用该值。因此,\mycmd{a}是有效的,就像是\mycmd[b]{a}

具体到您的问题:

  1. 在定义部分:空方括号是什么意思?没有默认值,也就是说这 2 个选项是必需的?如果是这样,为什么不简单地省略这些括号,就像在同一页上给出的以下示例中一样?

空的方括号表示新定义的tcolorbox命令将采用单身的可选参数,如果用户未指定,则该可选参数的默认值将为空。

  1. 在使用部分:为什么第一个参数([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}

在此处输入图片描述

相关内容