我最近开始与出色的tcolorbox
包,并成功地使用标签作为参数生成了我需要的框。但是,我希望能够使用该标签进行引用。根据手册和此网站(尤其是答案)如何在 tcolorbox 中定义标签?),我已经走到一半了。
使用此代码生成了正确的框。但是,引用不起作用。在 MWE 中,我希望文本显示“将下面的框引用为测试框 1a”,因为我传递的标签是“1a”。
相反,我收到一个错误! Use of \cref@override@label@type doesn't match its definition.
\documentclass[a4paper, twoside]{book}
\usepackage[most]{tcolorbox}
\usepackage{cleveref}
\newtcolorbox{testbox}[2]{
enhanced,
label type=mytype,
label = #1,
title = Test~#1:~#2
}
\crefname{mytype}{Test Box}{Test Boxes}
\begin{document}
What I want is to be able to reference the below box as \cref{1a} (Should say \textit{Test Box 1a}).
\begin{testbox}{1a}{Title of first box}
The contents of the box
\end{testbox}
\end{document}
经过进一步调查(以及答案中的出色解释如何使用 hyperref 和 cleveref 交叉引用未编号的定理),它似乎\label
只适用于counter
而不是任意文本标签,所以我可能需要改变我的整个方法。但如果这是真的,我将不胜感激。
答案1
您缺少计数器定义:
\documentclass[a4paper, twoside]{book}
\usepackage[most]{tcolorbox}
\usepackage{cleveref}
\newcounter{mytype}
\crefname{mytype}{Test Box}{Test Boxes}
\newtcolorbox[use counter=mytype]{testbox}[2]{
enhanced,
label type=mytype,
label = #1,
title = Test~#1:~#2
}
\begin{document}
What I want is to be able to reference the below box as \cref{1a} (Should say \textit{Test Box 1a}).
\begin{testbox}{1a}{Title of first box}
The contents of the box
\end{testbox}
\end{document}
我不知道您实际上想如何给盒子编号。上面的定义将在参考中给出 1。