我遇到了以下问题:使用该tcolorbox
包时,我得到了不一致的标签结果:在这个例子中,我得到的结果是两个盒子都被称为 1.1 :
其代码如下:
\documentclass{memoir}
\usepackage[breakable]{tcolorbox}
\newenvironment{Mijnbox}[1]
{\stepcounter{table}%
\tcbset{breakable,coltitle=blue!20!black,colback=black!1!white,colframe=black!10! white,title=Box ~\thetable: #1}
\begin{tcolorbox}}
{\end{tcolorbox}}
\begin{document}
\ref{Boxone} and \ref{Boxtwo}
\section{A try}
\begin{Mijnbox}{This one is called one}\label{Boxone}
I try to refer to this box
\end{Mijnbox}
\begin{Mijnbox}{ge}\label{Boxtwo}
This is yet another box
\end{Mijnbox}
end{document}
我究竟做错了什么?
答案1
该tcolorbox
软件包允许自动对箱子进行编号,并且还可以使用其他计数器。标签可以作为选项指定。
对于这种情况,定义一个非常有用,\newtcolorbox
它有自己的名称空间,并且不会干扰tcolorbox
被“污染”的其他设置\tcbset
。
- 另一个好方法
\refstepcounter
是托比约恩 T.已经,这当然是正确的。 - 我只更改了屏幕截图的颜色,但没有更改显示的代码的颜色
\documentclass{memoir}
\usepackage[breakable]{tcolorbox}
\newtcolorbox[use counter=table,number within=chapter]{MijnOtherBox}[2][]{breakable,coltitle=blue!20!black,colback=black!1!white,colframe=black!10!white,title={Box~\thetcbcounter: #2},#1}
\newenvironment{Mijnbox}[1]
{\stepcounter{table}%
\tcbset{breakable,coltitle=blue!20!black,colback=black!1!white,colframe=black!10! white,title=Box ~\thetable: #1}
\begin{tcolorbox}}
{\end{tcolorbox}}
\begin{document}
\ref{Boxone} and \ref{Boxtwo} and \ref{BoxThree}
\section{A try}
\begin{Mijnbox}{This one is called one}\label{Boxone}
I try to refer to this box
\end{Mijnbox}
\begin{Mijnbox}{ge}\label{Boxtwo}
This is yet another box
\end{Mijnbox}
\begin{MijnOtherBox}[label=BoxThree]{This is box three}
Even another box
\end{MijnOtherBox}
\end{document}
答案2
您需要\refstepcounter{table}
而不是\stepcounter{table}
。前者将使步进计数器成为当前/活动的计数器,由 拾取\label
。