使用 tcolorbox 自定义计数器?

使用 tcolorbox 自定义计数器?

到目前为止,我已经花了很多时间寻找自定义tcolorbox包内“Counter”的方法。我想在 a 中放入一个定义,tcolorbox如下所示。在此处输入图片描述

为了获得此定义格式,我使用了以下命令(参见\tcbset{...}):

\documentclass[12pt, openany]{book}
\usepackage[T1]{fontenc}
\usepackage{ae,aecompl}
\PassOptionsToPackage{svgnames}{xcolor}
\usepackage[round,sort,comma]{natbib}
\usepackage{amssymb,amsmath,amsfonts,amsthm,caption,subcaption}
\usepackage{mathtools}
\usepackage{enumerate}
\usepackage{enumitem}
\usepackage{tikz}
\usepackage{color}  
\usepackage{float,rotfloat} 
\usepackage{wrapfig}
\usepackage{multicol,multirow}
\usepackage{graphicx}   % need for figures
\usepackage{verbatim}   % useful for program listings
\usepackage{listings}
\usepackage{hyperref,url}
\usepackage[most]{tcolorbox}
\usepackage{cleveref}

\tcbset{
defnstyle/.style={fonttitle=\bfseries\upshape, fontupper=\slshape,
arc=0mm, colback=blue!5!white,colframe=blue!75!black},
}
\newtcbtheorem[number within=section,crefname={definition}{definitions}]%
{defn}{Definition}{defnstyle}{defn}

\begin{document}

\chapter{Limits and Derivatives}

\section{First Section}

\begin{defn}{One}{one}
Eine Funktion $f:~I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
$x_0\in I$ differenzierbar oder linear approximierbar,
wenn der Grenzwert
\begin{equation*}
\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
\lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
\end{equation*}
existiert.
\end{defn}

\section{Second Section}

\begin{defn}{Two}{Two}
Eine Funktion $f:~I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
$x_0\in I$ differenzierbar oder linear approximierbar,
wenn der Grenzwert
\begin{equation*}
\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
\lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
\end{equation*}

\end{defn}
\end{document}

但是,我并不想按照上述模式计算定义,而是想在每个部分中只计算 1、2、3(我仍然想使用tcolorbox)。不需要指示章节和部分(见下文)。因此,我尝试调整命令number within=section以满足我的需要,但我根本无法得到它。

在此处输入图片描述

如果有人能回答这个问题就太好了。

我非常感谢您付出的时间和精力。

答案1

使用新的 LaTeX 内核(2018-04-01 或更新版本),您可以使用\counterwithin*{tcb@cnt@defn}{section}和删除选项number within=section

\documentclass[12pt, openany]{book}
\usepackage[T1]{fontenc}
\usepackage{amssymb}
\usepackage[most]{tcolorbox}
\usepackage{cleveref}

\tcbset{
defnstyle/.style={fonttitle=\bfseries\upshape, fontupper=\slshape,
arc=0mm, colback=blue!5!white,colframe=blue!75!black},
}
\newtcbtheorem[crefname={definition}{definitions}]%
{defn}{Definition}{defnstyle}{defn}

\counterwithin*{tcb@cnt@defn}{section}

\begin{document}

\chapter{Limits and Derivatives}

\section{First Section}

\begin{defn}{One}{one}
Eine Funktion $f \colon I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
$x_0\in I$ differenzierbar oder linear approximierbar,
wenn der Grenzwert
\begin{equation*}
\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
\lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
\end{equation*}
existiert.
\end{defn}

\section{Second Section}

\begin{defn}{Two}{Two}
Eine Funktion $f \colon I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
$x_0\in I$ differenzierbar oder linear approximierbar,
wenn der Grenzwert
\begin{equation*}
\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
\lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
\end{equation*}

\end{defn}
\end{document}

两个具有定义的颜色框。在各自的部分中,它们都仅编号为“1”。

如果你仍在使用旧版本的内核,你可以尝试

\makeatletter
\@addtoreset{tcb@cnt@defn}{section}
\makeatother

代替

\counterwithin*{tcb@cnt@defn}{section}

当然你也可以反其道而行

\newtcbtheorem[number within=section,crefname={definition}{definitions}]{defn}{Definition}{defnstyle}{defn}

\makeatletter
\renewcommand*{\thetcb@cnt@defn}{\arabic{\tcb@cnt@defn}}
\makeatother

这两种方法的缺点是它们依赖于tcolorbox计数器名称的内部名称 ( tcb@cnt@<counter>)。如果您坚持使用tcolorbox-only 命令,则可以避免对内部名称的依赖,但代价是使用更复杂的定义number freestyle

\newtcbtheorem[number within=section,number freestyle=\noexpand\arabic{\tcbcounter},
  crefname={definition}{definitions}]{defn}{Definition}{defnstyle}{defn}

答案2

使用数字自由格式来格式化数字。不要使用 ae 包 - 这个包很久以前就过时了。

\documentclass[12pt, openany]{book}
\usepackage[T1]{fontenc}
\PassOptionsToPackage{svgnames}{xcolor}
\usepackage[round,sort,comma]{natbib}
\usepackage{amssymb,amsmath,amsfonts,amsthm,caption,subcaption}
\usepackage{mathtools}
\usepackage{enumerate}
\usepackage{enumitem}
\usepackage{tikz}
\usepackage{color}
\usepackage{float,rotfloat}
\usepackage{wrapfig}
\usepackage{multicol,multirow}
\usepackage{graphicx}   % need for figures
\usepackage{verbatim}   % useful for program listings
\usepackage{listings}
\usepackage{hyperref,url}
\usepackage[most]{tcolorbox}
\usepackage{cleveref}

\tcbset{
defnstyle/.style={fonttitle=\bfseries\upshape, fontupper=\slshape,
arc=0mm, colback=blue!5!white,colframe=blue!75!black},
}
\newtcbtheorem[number within=section,crefname={definition}{definitions},
number freestyle=\noexpand\arabic{\tcbcounter}]%
{defn}{Definition}{defnstyle}{defn}

\begin{document}

\chapter{Limits and Derivatives}

\section{First Section}

\begin{defn}{One}{one}
Eine Funktion $f:~I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
$x_0\in I$ differenzierbar oder linear approximierbar,
wenn der Grenzwert
\begin{equation*}
\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
\lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
\end{equation*}
existiert.
\end{defn}

\section{Second Section}

\begin{defn}{Two}{Two}
Eine Funktion $f:~I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
$x_0\in I$ differenzierbar oder linear approximierbar,
wenn der Grenzwert
\begin{equation*}
\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
\lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
\end{equation*}

\end{defn}
\end{document}

在此处输入图片描述

相关内容