我正在使用 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}
\label
questionb
我肯定误解了 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}