如何更改 tcolorbox 中的枚举

如何更改 tcolorbox 中的枚举

你好,我有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带有环境编号。这可以通过保留环境不编号(通过从框选项中删除)并在 的标题定义中插入环境的计数器来实现。boxexboxeauto counterboxexboxe

计数器存储在\thetcbcounter框内,但在另一个框内,这指的是新框的计数器,而不是原始框的计数器 - 在这种情况下,boxe计数器内\thetcbcounter指的是的计数器,boxe但您想引用的计数器boxex。但是,宏\thetcbcounter是内部计数器名称的快捷方式,该名称对于框的类型是唯一的。第 110 页的示例 5.1tcolorbox 手册tcb@cnt@pabox指出框类型 的“真实计数器名称为” pabox。因此,在您的情况下, 的计数器boxex存储为tcb@cnt@boxex

现在,鉴于此计数器名称包含符号@,因此不允许在常规代码中使用它(这是设计使然,代码的内部部分不打算在文档中使用,而只能在包代码本身中使用)。 您可以通过使用带有和的宏包围代码来访问此类宏\makeatlettermakeatother即将@符号变为普通符号,将其用作普通符号,再次使其成为特殊符号。 我们可以使用它来定义一个新的宏,不包含@在名称中,以引用计数器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}

结果:

在此处输入图片描述

相关内容