tcolorbox:\newtcbtheorem 引用

tcolorbox:\newtcbtheorem 引用

使用\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

tcolorbox2.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}

MWE 结果

相关内容