使用标签选项引用 tcolorbox 失败

使用标签选项引用 tcolorbox 失败

我正在使用 tcolorbox 设计一个教程,其中包含多个章节,每个章节包含几个问题。我使用 tcolorbox 来包含每个问题的文本,为此我只需要“问题 XY”作为框的标题,其中 X 和 Y 分别是章节和框编号。为此,我定义了以下 tcolorbox 环境。

\newtcolorbox[auto counter, number within=chapter, number freestyle={\noexpand\thechapter.\noexpand\arabic{\tcbcounter}}]{questionb}[1][]{%   
  enhanced,
  breakable,
  title=\textbf{Question \thetcbcounter}
}

稍后,在每个章节文件中,我将编写如下每个问题:

\begin{questionb}
Here I put the text of the question.
\end{questionb}

一切都按预期进行,并且我得到以下信息: 在此处输入图片描述

现在我想要的是引用文档其余部分中的问题编号,即本例中的 2.2。通过阅读文档和在网上搜索,我认为在撰写问题时只需使用标签选项即可。也就是说,

\begin{questionb}[label=q:example]
Here I put the text of the question.
\end{questionb}

然后通过 来引用它\ref{q:example}。不幸的是,它似乎不起作用,并且编译器抱怨“q:example对第 X 页的引用未定义”。

我也尝试了另一种方法

\begin{questionb}\label{q:example}
Here I put the text of the question.
\end{questionb}

用这种方法,投诉就消失了。但是,无论我将命令放在哪里(即使在同一个章节文件的另一个块之后),3使用 引用它时我总是得到一个奇数。...\ref{q:example}\labelquestionb

我肯定误解了 tcolorbox 的标签选项是如何工作的,甚至误解了如何使用 newtcolorbox。如果有人能帮我解决这个问题就太好了。非常感谢!

顺便说一句,我在 Mac 上使用 XeLaTeX(TexLive2022)。

一个完整的可编译示例如下:

\documentclass[10pt,UTF8]{book}
\usepackage[centering,paperwidth=180mm,paperheight=230mm,body={390pt,530pt}]{geometry}
\usepackage{titlesec}
\usepackage[most]{tcolorbox}
\usepackage{verbatim}

% Define environment
\newtcolorbox[auto counter, number within=chapter, number freestyle={\noexpand\thechapter.\noexpand\arabic{\tcbcounter}}]{questionb}[1][]{%   
  enhanced,
  breakable,
  title=\textbf{Question \thetcbcounter}
}


\begin{document}
\title{Tutorial}
\author{Name}
\date{Date}


\begin{questionb}[label=q:example]
This is my question text.
\end{questionb}

I want to reference Question \ref{q:example}
\end{document}

答案1

您实际上需要将可选参数传递给 tcolorbox:

\documentclass[10pt]{book}
\usepackage[centering,paperwidth=180mm,paperheight=230mm,body={390pt,530pt}]{geometry}
\usepackage{titlesec}
\usepackage[most]{tcolorbox}
\usepackage{verbatim}

% Define environment
\newtcolorbox[auto counter, number within=chapter]{questionb}[1][]{%   
  enhanced,
  breakable,
  title=\textbf{Question \thetcbcounter},
  #1 % <- added to pass the optional argument to the tcolorbox
}


\begin{document}
\title{Tutorial}
\author{Name}
\date{Date}


\begin{questionb}[label=q:example]
This is my question text.
\end{questionb}

I want to reference Question \ref{q:example}
\end{document}

在此处输入图片描述

相关内容