以下是 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.80
并osx 10.6.8
尝试模仿第 99 页上的示例。
tcolorbox
和的加载顺序cleveref
似乎对该问题并不重要Cref
。
万一这可能是一个线索,如果我删除序言中的逗号S
,Bluebox1.1 中的逗号和my title
Blubox 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}