我想制作tcolorbox
可以接受两个可选参数的框,但我不知道从哪里开始。这是我当前的 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\def \ifempty#1{\def\temp{#1} \ifx\temp\empty }
\newtcolorbox[auto counter,number within=chapter]{definition}[1][]{title={ Définition \thetcbcounter \ifempty{#1} \else --- #1 \fi}}
\begin{document}
\begin{definition}[Matrices]
\lipsum[1]
\end{definition}
\end{document}
这样,每个盒子都有一个计数器,具体取决于我们所在的章节。如果我想给盒子起一个特定的名称,可以添加一个可选参数。我想添加第二个可选参数,为盒子添加一个标签(以便能够引用它)。我可以label=
向颜色框添加一个键,但我不确定如何添加第二个可选参数来填充该键。
我如何向 tcolorbox 添加第二个参数以将其添加label=#2
到参数列表中tcolorbox
?
答案1
无需重新发明轮子。tcolorbox
提供\newtcbtheorem
仅使用两个可以留空的强制参数来定义定理、定义……环境。参数是“标题”和“标签”(或标签后缀)。
这里有两个例子。更多信息请参阅tcolorbox
文档第 17 节。
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
%\def \ifempty#1{\def\temp{#1} \ifx\temp\empty }
%
%\newtcolorbox[auto counter,number within=chapter]{definition}[1][]{title={ Définition \thetcbcounter \ifempty{#1} \else --- #1 \fi}}
\newtcbtheorem[auto counter,number within=chapter]{definition}{Définition}{}{def}
\begin{document}
\chapter{First}
\begin{definition}{Matrices}{a}
\lipsum[2]
\end{definition}
As can be seen in Definition~\ref{def:a} \dots
\begin{definition}{}{b}
\lipsum[2]
\end{definition}
As can be seen in Definition~\ref{def:b} \dots
\end{document}