无法使 newtcolorbox 正常工作

无法使 newtcolorbox 正常工作

以下是 MWE:

% !TEX TS-program = pdflatexmk
\documentclass[11pt]{book} 

\usepackage[usenames,dvipsnames]{xcolor}    
    \definecolor{lightcyan}{rgb}{0.88, 1.0, 1.0}
\usepackage{cleveref}
\usepackage{tcolorbox}
    \tcbuselibrary{skins}   

\newcounter{abc}
\newtcolorbox
[%
use counter= abc,
number within=chapter,
Crefname={Box}{Boxes}
]
{mybox}
[2][]%
{%
detach title,
colback=lightcyan,
colframe=lightcyan,
fonttitle=\bfseries,
coltitle=black,
before upper={\tcbtitle\quad},
title={Bluebox \thetcbcounter.\hspace{2mm} #2, #1}
}%

\begin{document}
\chapter{ONE}
\section{one}

\begin{mybox}
Some text Some text Some text
\end{mybox}

\begin{mybox}[label={myreference}]{my title}
Some text Some text Some text
\end{mybox}

Reference: \Cref{myreference}

\end{document}

存在的问题如下:

在此处输入图片描述

我正在使用tcolorbox 3.80osx 10.6.8尝试模仿第 99 页上的示例。

tcolorbox和的加载顺序cleveref似乎对该问题并不重要Cref

万一这可能是一个线索,如果我删除序言中的逗号S,Bluebox1.1 中的逗号和my titleBlubox 1.2 中的逗号就会消失。#2

答案1

}错误在于环境定义中的放置位置错误mybox

标题的定义

    title={Bluebox \thetcbcounter.\hspace{2mm} #2, #1}

#1显然是错误的,因为它在框标题中使用了可选参数

    title={Bluebox \thetcbcounter.\hspace{2mm} #2}, #1%

是正确的,因为可选参数已被告知tcolorbox,尤其是label=选项开始生效。

此外,第一次使用mybox是错误的,因为它缺少一个空的{}第二个参数, 会S泄漏Some到标题中并被剥离。{}在这里使用一个空的,但是,这会在框号后留下一个很大的空格,因为有一个明确的\hspace用法。(请参阅本文末尾的“更好”的代码!)

% !TEX TS-program = pdflatexmk
\documentclass[11pt]{book} 

\usepackage[usenames,dvipsnames]{xcolor}    
    \definecolor{lightcyan}{rgb}{0.88, 1.0, 1.0}

\usepackage[skins]{tcolorbox}
\usepackage{cleveref}

\newcounter{abc}
\newtcolorbox
[%
use counter= abc,
number within=chapter,
Crefname={Box}{Boxes}
]
{mybox}
[2][]%
{%
detach title,
colback=lightcyan,
colframe=lightcyan,
fonttitle=\bfseries,
coltitle=black,
before upper={\tcbtitle\quad},
title={Bluebox \thetcbcounter.\hspace{2mm} #2}, #1%
}%

\begin{document}
\chapter{ONE}
\section{one}

\begin{mybox}{}% Empty title!!!!
Some text Some text Some text
\end{mybox}

\begin{mybox}[label={myreference}]{my title}
Some text Some text Some text
\end{mybox}

Reference: \Cref{myreference}

\end{document}

在此处输入图片描述

更新\notblank这是一种使用from检查空标题的方法etoolbox

% !TEX TS-program = pdflatexmk
\documentclass[11pt]{book} 

\usepackage{etoolbox}
\usepackage[usenames,dvipsnames]{xcolor}    
    \definecolor{lightcyan}{rgb}{0.88, 1.0, 1.0}
\usepackage[skins]{tcolorbox}
\usepackage{cleveref}

\newcounter{abc}
\newtcolorbox
[%
use counter= abc,
number within=chapter,
Crefname={Box}{Boxes}
]
{mybox}
[2][]%
{%
detach title,
colback=lightcyan,
colframe=lightcyan,
fonttitle=\bfseries,
coltitle=black,
before upper={\tcbtitle\quad},
title={Bluebox \thetcbcounter.\notblank{#2}{\hspace{2mm} #2}{}}, #1
}%

\begin{document}
\chapter{ONE}
\section{one}

\begin{mybox}{}
Some text Some text Some text
\end{mybox}

\begin{mybox}[label={myreference}]{my title}
Some text Some text Some text
\end{mybox}

Reference: \Cref{myreference}

\end{document}

在此处输入图片描述

相关内容