你好,我有3 盒来自配置为“的代码博克斯“和第四个另一种颜色,名为”博克斯“,这是我的问题:
我想获取第三盒子 ”博克斯“在第四个框中使用它,首先“博克斯“ 以此类推,直到下一个框或第 4 个框 ”博克斯“ 带有第二个框 ”博克斯“。
现在我有两个可能的想法,一个是手动枚举,另一个是我必须从标签引用中获取它。
但我不知道该怎么做,你能帮助我吗?
\documentclass[12pt,a4paper]{book}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{tcolorbox}
\newtcolorbox[auto counter]{boxex}[2][]{fontupper=\footnotesize,
colback=black!40,colframe=black,fonttitle=\bfseries,sharp corners,
title=\thetcbcounter~#2}
\newtcolorbox[auto counter]{boxe}[2][]{fontupper=\footnotesize,
colback=black!20,colframe=green!30!black,fonttitle=\bfseries,sharp corners,
title=\thetcbcounter~#2}
\title{Example tcolorbox enumerate}
\begin{document}
\chapter{Introduction}
\section{code tcbox}
\begin{boxex}{Title one}
Hi, it's my box one
\end{boxex}
\begin{boxex}{Title two}
Hi, it's my box two
\end{boxex}
\begin{boxex}{Title tree}
Hi, it's my box tree
\end{boxex}
\begin{boxe}{Change counter ``thee''}
Hi, this is where I want to change the enumeration to \bf{3}
\end{boxe}
\end{document}
答案1
我理解的没错,您希望环境前面boxe
带有环境编号。这可以通过保留环境不编号(通过从框选项中删除)并在 的标题定义中插入环境的计数器来实现。boxex
boxe
auto counter
boxex
boxe
计数器存储在\thetcbcounter
框内,但在另一个框内,这指的是新框的计数器,而不是原始框的计数器 - 在这种情况下,boxe
计数器内\thetcbcounter
指的是的计数器,boxe
但您想引用的计数器boxex
。但是,宏\thetcbcounter
是内部计数器名称的快捷方式,该名称对于框的类型是唯一的。第 110 页的示例 5.1tcolorbox 手册tcb@cnt@pabox
指出框类型 的“真实计数器名称为” pabox
。因此,在您的情况下, 的计数器boxex
存储为tcb@cnt@boxex
。
现在,鉴于此计数器名称包含符号@
,因此不允许在常规代码中使用它(这是设计使然,代码的内部部分不打算在文档中使用,而只能在包代码本身中使用)。 您可以通过使用带有和的宏包围代码来访问此类宏\makeatletter
,makeatother
即将@
符号变为普通符号,将其用作普通符号,再次使其成为特殊符号。 我们可以使用它来定义一个新的宏,不包含@
在名称中,以引用计数器boxex
并使用新的计数器宏定义宏的标题boxe
。 可以通过将计数器放在前面来打印,因此可以使用来打印\the
计数器。tcb@cnt@boxex
\thetcb@cnt@boxex
梅威瑟:
\documentclass[12pt,a4paper]{book}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{tcolorbox}
% define helper macro to refer to boxex counter
\makeatletter
\def\boxexcounter{\thetcb@cnt@boxex}
\makeatother
\newtcolorbox[auto counter]{boxex}[2][]{fontupper=\footnotesize,
colback=black!40,colframe=black,fonttitle=\bfseries,sharp corners,
title=\thetcbcounter~#2}
% use helper macro in title definition of boxe environment
% don't use auto counter for this environment
\newtcolorbox{boxe}[2][]{fontupper=\footnotesize,
colback=black!20,colframe=green!30!black,fonttitle=\bfseries,sharp corners,
title=\boxexcounter~#2}
\title{Example tcolorbox enumerate}
\begin{document}
\chapter{Introduction}
\section{code tcbox}
\begin{boxex}{Title one}
Hi, it's my box one
\end{boxex}
\begin{boxex}{Title two}
Hi, it's my box two
\end{boxex}
\begin{boxex}{Title tree}
Hi, it's my box tree
\end{boxex}
\begin{boxe}{Change counter ``thee''}
Hi, this is where I want to change the enumeration to \bf{3}
\end{boxe}
\begin{boxex}{Title four}
Hi, it's my box tree
\end{boxex}
\begin{boxe}{Change counter ``thee''}
Hi, this is where I want to change the enumeration to \bf{4}
\end{boxe}
\end{document}
结果: