使用\newtcbtheorem
,我们如何引用创建的环境?
\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbuselibrary{theorems}
\usepackage{cleveref}
\crefname{exa}{example}{Example}
\Crefname{exa}{Example}{Example}
\newtcbtheorem[auto counter, number within = section]
{Example}{Exam\smash{p}le}{%
breakable,
fonttitle = \bfseries,
colframe = blue!75!black,
colback = blue!10
}{exa}
\begin{document}
\begin{Example}{Example}{exam}
Some example
\end{Example}
\noindent
\Cref{exa:exam}
\end{document}
使用tcbmaketheorem
,我使用过\newcounter{exa}
,但我无法在这里引用。
答案1
您需要定义新对象的格式;在本例中,对于tcb@cnt@Example
,使用类似
\crefformat{tcb@cnt@Example}{example~#2#1#3}
\Crefformat{tcb@cnt@Example}{Example~#2#1#3}
或您想要的任何其他格式。完整示例:
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{cleveref}
\makeatletter
\crefformat{tcb@cnt@Example}{example~#2#1#3}
\Crefformat{tcb@cnt@Example}{Example~#2#1#3}
\makeatother
\newtcbtheorem[auto counter, number within = section]
{Example}{Exam\smash{p}le}{%
breakable,
fonttitle = \bfseries,
colframe = blue!75!black,
colback = blue!10
}{exa}
\begin{document}
\begin{Example}{Example}{exam}
Some example
\end{Example}
\noindent
\Cref{exa:exam} and~\cref{exa:exam}
\end{document}
在 中使用的正确名称\Crefformat
可以从使用没有正确定义的\crefformat
原始代码时得到的警告之一中获得:\Cref
LaTeX Warning: Cref reference format for label type `tcb@cnt@Example' undefined on input line 21.
答案2
自tcolorbox
2.41 版(2013/07/23)起,该软件包已集成支持cleveref
。您只需将\crefname
和\Crefname
作为选项移入\newtcbtheorem
:
\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbuselibrary{theorems}
\usepackage{cleveref}
\newtcbtheorem[auto counter, number within = section,
crefname={example}{Example},
Crefname={Example}{Example} ]
{Example}{Exam\smash{p}le}{%
breakable,
fonttitle = \bfseries,
colframe = blue!75!black,
colback = blue!10
}{exa}
\begin{document}
\begin{Example}{Example}{exam}
Some example
\end{Example}
\noindent
\Cref{exa:exam} and~\cref{exa:exam}.
\end{document}
输出与 Gonzalo Medina 的解决方案相同。
答案3
自 2020-09-08 起,之前提供的解决方案不再有效。cleveref 4.31 (2020-07-31) 文档在第 372 页提供了此问题的示例和解决方案:标签类型可选参数用于向 cleveref 提供所需的名称信息。
梅威瑟:
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\usepackage{cleveref}
\newtcbtheorem{example}{Example}{label type=example}{exa}
\begin{document}
\begin{example}{title}{label}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\end{example}
Checking if \textbf{cleveref} works: \cref{exa:label} and \Cref{exa:label}.
\end{document}