
\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内部。
我都比了