\documentclass{article}
\usepackage{xcolor}
\definecolor{mygreen}{RGB}{0,166,82}
\usepackage[papersize={10.5cm,14.85cm},scale=0.8,showframe]{geometry}
\usepackage{xeCJK}
\setCJKmainfont[BoldFont=SimHei,ItalicFont=KaiTi,BoldItalicFont=FangSong]{SimSun}
\usepackage{zhnumber}
\usepackage{tcolorbox}
\newcounter{dytcb}
\tcbuselibrary{breakable}
\tcbuselibrary{skins}
\newenvironment{dytcb}[2][]%
{%
\begin{tcolorbox}[
enhanced,
frame empty,
interior empty,
coltitle=white,
fonttitle=\bfseries,
colbacktitle=mygreen,
rounded corners,
borderline={0.25mm}{0mm}{mygreen},
breakable,
top=4mm,
before skip=3.5mm,
attach boxed title to top left={yshift=-3mm,xshift=5mm},
boxed title style={boxrule=0pt,sharp corners=all},
title={第\stepcounter{dytcb}\zhdig{dytcb}}单元,
#1
]
#2
}{\end{tcolorbox}}
\begin{document}
\begin{dytcb}
Hello, \LaTeX !
\end{dytcb}
Hello, \LaTeX !
\end{document}
先来看这样的例子:
\documentclass{article}
\usepackage[fontset=none]{ctex}
\usepackage{xcolor}
\definecolor{mygreen}{RGB}{0,166,82}
\usepackage[papersize={10.5cm,14.85cm},scale=0.8,showframe]{geometry}
\setCJKmainfont[BoldFont=SimHei,ItalicFont=KaiTi,BoldItalicFont=FangSong]{SimSun}
\usepackage{zhnumber}
\usepackage{tcolorbox}
\newcounter{dytcb}
\tcbuselibrary{breakable}
\tcbuselibrary{skins}
\newenvironment{dytcb}[2][]%
{%
\begin{tcolorbox}[
enhanced,
frame empty,
interior empty,
coltitle=white,
fonttitle=\bfseries,
colbacktitle=mygreen,
rounded corners,
borderline={0.25mm}{0mm}{mygreen},
breakable,
top=4mm,
before skip=3.5mm,
attach boxed title to top left={yshift=-3mm,xshift=5mm},
boxed title style={boxrule=0pt,sharp corners=all},
title={第\stepcounter{dytcb}\zhdig{dytcb}}单元,
#1
]
#2
}{\end{tcolorbox}}
\begin{document}
\begin{dytcb}{H}
Hello, \LaTeX !
\end{dytcb}
Hello, \LaTeX !
\end{document}
我不是很懂 tcolorbox
,通过这例子,我大概猜一下,你的例子里的 H
其实被 dytcb
当成是第1个参数了。
正常情况下,#2
不需要显式写入\newenvironment
的定义中<begin-def>
的部分,对于:
\begin{env}
<something>
\end{env}
LaTeX
会自动把<something>
自动插入到<begin-def>
与<end-def>
之间。
区别下面的例子:
\documentclass{article}
\usepackage{tcolorbox}
\newenvironment{tcbA}[2][]{%
\begin{tcolorbox}[#1]
#2
}{\end{tcolorbox}}
\newenvironment{tcbB}[1][]{%
\begin{tcolorbox}[#1]
}{\end{tcolorbox}}
\begin{document}
\begin{tcbA}
Hello, \LaTeX !
\end{tcbA}
\begin{tcbB}
Hello, \LaTeX !
\end{tcbB}
\end{document}
在你的MWE中,因为#2
是必须参数,因此\begin{tcbA}
在处理时,第一个参数optional argument未指定,所以为默认的<empty>
;但是第二个参数mandatory argument缺失,所以TeX
先自动吞下(swallow)了一个token H
.在<begin-def>
命令结束后,之后再把ello, \LaTeX{}
的内容作为<something>
放进tcb
内部。
我都比了