如何在声明新部分后重置定理 tcolorbox 的计数器?

如何在声明新部分后重置定理 tcolorbox 的计数器?

如同,但我该如何使用\newtcbtheorem?我想避免名称重复,因为它会发出警告。

例如,我认为第一节中的定义将有一个名称。然后,当我声明另一个节并进行另一个定义时,它将具有相同的名称,因此是重复的。tcb@[email protected]

答案1

在此处输入图片描述 这很简单:

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem[number within=section]{dfn}{Definition}{}{}

\begin{document}
\section{First Section}
\begin{dfn}{}{}
    Here is a definition
\end{dfn}
\begin{dfn}{}{}
    Here is a second definition
\end{dfn}
\section{A New Section}
\begin{dfn}{}{}
    Here is a third definition
\end{dfn}
\end{document}

number within每次呼叫时,该键都会重置数字\section。或者,使用 可让每个子部分更改编号number within=subsection

答案2

此错误可能源自hyperref包的使用。它会自动在标记元素和对它们的引用之间创建链接,但所有标签都必须不同。

dfn从定义创建的每个标签都会tcolorbox自动创建一个标签,其前缀固定在\newtcbtheorem定义的最后一个参数中,而每个标签中的第二个强制参数则固定在该前缀中\begin{dfn}{}{}。如果前缀和后缀为空,则每个定义都会有一个类似的标签,并且 hyperref 将显示错误消息。

我建议使用类似这样的方法来避免错误消息:

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem[number within=section]{dfn}{Definition}{}{dfn}
\usepackage{hyperref}

\begin{document}
\section{First Section}
\begin{dfn}{}{a}
    Here is a definition
\end{dfn}
\begin{dfn}{}{b}
    Here is a second definition
\end{dfn}
\section{A New Section}
\begin{dfn}{}{c}
    Here is a third definition
\end{dfn}

This is the first definition: \ref{dfn:a}, this is the second, \ref{dfn:b} and this the last one, \ref{dfn:c}.
\end{document}

在此处输入图片描述

相关内容