我是 Latex Stack Exchange 的新手,我只想知道自定义环境中每个数字的含义。例如,在此代码中,程序员定义了tcolorbox
如下自定义:
% new tcolorbox environment
% #1: tcolorbox options
% #2: color
% #3: box title
\newtcolorbox{mybox}[3][]
{
colframe = #2!25,
colback = #2!10,
coltitle = #2!20!black,
title = {#3},
#1,
}
来源:如何定义以颜色作为参数的自定义 tcolorbox 环境?
这里有一些#<number>
似乎不知从何而来的标签,以及一些[]
看似不必要的方括号。
我在网上搜索了所有地方,但还是不明白这到底是怎么回事。有人能给我解释一下这些以及如何创建我自己的环境吗?
答案1
代码根据的手册定义了一种新类型的颜色框,作为环境使用tcolorbox
。
环境有三个参数(来自部分[3]
),其中第一个是可选的,具有空默认值(来自部分[]
)。
在代码中,提供的参数按顺序表示为#1
、#2
和#3
。因此,如果您调用
\begin{mybox}[width=5cm]{red}{A title}
some words
\end{mybox}
你得到的相当于
\begin{tcolorbox}{
colframe = red!25,
colback = red!10,
coltitle = red!20!black,
title = {A title},
width = 5cm,
}
some text
\end{tcolorbox}
答案2
在 LaTeX 中,定义不带任何参数的新命令的语法如下。
\newcommand{<command>}{<code>}
其中<command>
代表要定义的命令的名称,<code>
代表新命令应该执行的操作。例如,如果你写
\newcommand{\mycommand}{Hello}
你定义一个新命令\mycommand
,它只是写入“Hello”。
要添加强制参数,语法是
\newcommand{<command>}[<number>]{<code>}
然后命令将接受<number>
强制参数。例如,如果您1
在 的位置输入<number>
,则新命令将需要一个参数,该参数在 中调用<code>
。#1
所以
\newcommand{\mycommand}[1]{Hello #1}
定义\mycommand
接受一个参数并将其输出到“Hello”旁边。例如,\mycommand{world}
将输出“Hello world”。
最后,如果添加另一对方括号,则可以为命令的第一个参数定义一个默认值;因此,您可以使其成为可选的。继续使用相同的示例,
\newcommand{\mycommand}[1][world]{Hello #1}
定义\mycommand
为取一个选修的如果需要,可以使用方括号指定参数,其默认值为world
。因此\mycommand
输出“Hello world”,但\mycommand[everybody]
输出“Hello everyone”。
(我本来要编辑我的答案以添加一个针对这种环境的示例mybox
,但它可能只是 egreg 答案的一个较差版本。)
答案3
当你输入
\begin{mybox}{red}{A red box}
你说
--给我一个颜色为红色、透明度为 25% 的框架
--给我一个背景颜色为红色、透明度为 10% 的框架
--给我一个带有标题的框架一个红色的框,字体有 20% 的红色和黑色混合
希望这有意义
答案4
这些是宏中的输入参数。与\newcommand