网上抄了个定理环境,在mwe中,导言区用\NewTColorBox创建了一个3个参数的彩色盒子theobox,参数#1是title的内容,参数#2是title的前缀,也就是定理环境名,参数#3我不明白是什么意思,看上去是来自tcolorbox封装的xparse命令。
我的想法是:
考点\thesection\kern1em<#1,标题的内容>。但是如果我不改变参数的数量为2个,那么我每次就都要输入三个参数,而第二个参数只能用{考点},这样很麻烦。IfNoValueTF={#1}{title=#2~\thetheorem.}{title=#2~\thetheorem\kern1em~#1},
IfNoValueTF={#3}{}{#3}%第三个参数省略- NoValue -返回里面的#2换成考点两个字,会让我每次输入一个空分组来表示第二个参数,这样很不直观,且容易出错。
所以我希望能把3个参数的盒子theobox和3个参数的环境theorem都换成2个参数,也就是让原来的参数#2消失,保留作为标题的内容和盒子的内容的两个参数#1和#3。这样我只需要输入标题的内容和盒子的内容就可以了。
下面是mwe文件。
我想这是你想要的...其实没必要在tcb外面封装成amsthm(这让代码变得很不优雅,既然amsthm要套tcb),tcb本身也支持计数器的使用,著名的elegantbook模板的fancy样式对定理环境的实现也只是纯tcolorbox。我同时还把mwe更精简了一丢丢...
P.S. xparse已经进入latex kernel,因此不需显式调用。你可以texdoc xparse看看参数,lshort-zh-cn其实有简单的介绍,所谓的\NewTColorBox也不过是tcb版本的newenvironment而已。

\documentclass[10pt]{ctexbook}
\usepackage[margin=1in,showframe]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{varwidth}
\usepackage{amsmath}
\usepackage{enumitem}
\setlist[enumerate]{leftmargin=1em}
\definecolor{mygreen}{RGB}{0,166,82}
\NewTColorBox[auto counter,number within=section]{theobox}{O{}}{% o省略可能的参数
enhanced,frame empty,interior empty,
coltitle=white,fonttitle=\bfseries,
colbacktitle=mygreen,rounded corners,
extras broken={frame empty,interior empty},
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},varwidth boxed title,
title={考点\thetcbcounter\quad{#1}},
}
\newcommand*{\insertxt}{%
\begin{enumerate}
\item 素质教育以提高国民素质为根本宗旨。
\item 素质教育是面向全体学生的教育。
\item 素质教育是促进学生全面地、生动活泼地、可持续地发展的教育。
\item 素质教育是促进学生个性发展的教育。
\item 素质教育要着力提高学生的社会责任感、创新精神和实践能力。素质教育要着力提高学生的社会责任感、创新精神和实践能力。素质教育要着力提高学生的社会责任感、创新精神和实践能力。素质教育要着力提高学生的社会责任感、创新精神和实践能力。
\end{enumerate}
}
\begin{document}
\chapter{你好}
\section{世界}
\begin{theobox}
\insertxt
\end{theobox}
\begin{theobox}[有标题]
\insertxt
\end{theobox}
\section{世界}
\begin{theobox}[有标题盒子]
\insertxt
\end{theobox}
\begin{theobox}
\insertxt
\end{theobox}
\chapter{你好}
\section{世界}
\begin{theobox}[有标题盒子]
\insertxt
\end{theobox}
\begin{theobox}
\insertxt
\end{theobox}
\begin{theobox}[有标题盒子]
\insertxt
\end{theobox}
\begin{theobox}
\insertxt
\end{theobox}
\end{document}
你可以把
\quad改成你想要的\kern1em,忘记这点了...@u70550 想问一下
varwidth这个宏包在mwe中的作用@u101077 我不是很懂这个宏包(上一次见是在这里),也许你可以自己探索一下,大致是调整环境宽度之类的(戳手手)
在tcb中,可见下图文档介绍:

@u70550 还想问一个问题,就是这个
thembox环境的自动计数器选项auto counter要怎么用\addtocounter{cnt}{num}这个命令手动增加编号的数值呢?因为我用相同的定义,除了修改颜色和标题前缀“考点”,定义了一个新的相似环境,但是我想让计数器在同一个section里继承前一个theobox的计数器值,可我不知道他的计数器名字叫什么。@u101077 我建议你另开一个问题,同时更准确点说明你的需求,如果我没理解错的话,我感觉你似乎可以增加一个参数,然后用同一个tcb环境。
我指的是用同一个
tcb环境,然后暴露出<titlename>和<color>作为#2,#3也能实现一样的效果(?)在
elegant模板的v4.5中,如果我没记错的话还提供了usesamecnt的选项,我感觉与你的需求也有点类似的样子,可以去看看实现方法...而且“但是我想让计数器在同一个section里继承前一个theobox的计数器值,可我不知道他的计数器名字叫什么”我感觉思路不是很好,这两个相似环境理应是并列关系,何来A的定义要用到B的计数器而反之不然呢?如果又需要添加第三个,第四个呢,感觉代码会写的很冗乱?又翻了一下tcb的文档,存在
use counter from=⟨tcolorbox⟩的选项,不需要知道计数器的名称。