如同这,但我该如何使用\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}