From 20788e2817af7ef0b25395c161b06e7a1446b8b1 Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Wed, 21 Apr 2021 03:01:10 +0000
Subject: CTAN sync 202104210301

---
 macros/latex/contrib/easybook/easybook.dtx | 232 +++++++++++++++++++----------
 1 file changed, 151 insertions(+), 81 deletions(-)

(limited to 'macros/latex/contrib/easybook/easybook.dtx')

diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 0f21f5784b..6a5c1f3770 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -55,7 +55,7 @@ The latest version of this license is in
 %
 % \title{\sffamily easybook 书籍文档类}
 % \author{瞿毅}
-% \date{2021/04/19\hskip\ccwd\relax v1.24o\thanks{\url{https://gitee.com/texl3/easybook}}}
+% \date{2021/04/20\hskip\ccwd\relax v1.24p\thanks{\url{https://gitee.com/texl3/easybook}}}
 % \maketitle
 % \begin{abstract}
 %   \cls{easybook} 是基于 \cls{ctexbook} 书籍文档类创建以极简为风格的模板，可以看作对 \cls{ctexbook} 的进一步包装。虽然\CTeX 文档类提供了较好的中文支持，但想实现个性化功能一般需要在其基础上载入更多宏包来定制。\cls{easybook} 考虑了一些细节并载入一些常用宏包实现一般的排版需求，它适用于排版中英文书籍或笔记，甚至可稍加调整成为学位论文模板。
@@ -141,6 +141,14 @@ The latest version of this license is in
 % 设置页面大小，交给 \pkg{geometry} 宏包处理，可使用它支持的所有规格。建议选项 \opt{b5paper} 和 \opt{zihao = 5}，选项 \opt{a4paper} 和 \opt{zihao = -4} 配合。
 % \end{function}
 %
+% \begin{function}[rEXP,added = 2021-01-08,updated = 2021-04-20]{config}
+% \begin{syntax}
+%   config = <配置文件名>
+% \end{syntax}
+% \opt{config}为载入用户配置选项，配置文件名不需加括号但需带有后缀名如 \opt{tex}、\opt{def} 和 \opt{cfg}。
+% \changes{v1.10}{2021/01/08}{加入载入用户配置选项。}
+% \end{function}
+%
 % \subsection{article 模式}
 % \begin{function}[rEXP,added = 2021-03-16]{class}
 % \begin{syntax}
@@ -174,7 +182,7 @@ The latest version of this license is in
 % \end{syntax}
 % \opt{multoc} 与 \opt{style/multoc} 选项具有相同的效果，但是具有优先性且可单独设置不同目录是否双栏排版。已经预置了中英文的目录标题，可以使用 \opt{title} 选项更改目录标题的名称。\opt{book} 选项使目录标题按照 \opt{chapter} 级别输出，\opt{article} 选项使目录标题按照 \opt{article} 级别输出，默认为 \opt{chapter} 级别。
 % \changes{v1.23}{2021/03/15}{为几个目录增加键值列表的选项，可设置标题输出级别以及是否加入主目录。}
-% \changes{v1.24o}{2021/04/04}{目录命令的可选参数增加标题键值。}
+% \changes{v1.24p}{2021/04/04}{目录命令的可选参数增加标题键值。}
 % \end{function}
 %
 % \section{接口选项}
@@ -197,14 +205,6 @@ The latest version of this license is in
 % \end{center}
 % \end{function}
 %
-% \begin{function}[EXP,added = 2021-01-08]{config}
-% \begin{syntax}
-%   config = <配置文件名>
-% \end{syntax}
-% \opt{config}为载入用户配置选项，配置文件名不需加括号但需带有后缀名如 \opt{tex}、\opt{def} 和 \opt{cfg}。
-% \changes{v1.10}{2021/01/08}{加入载入用户配置选项。}
-% \end{function}
-%
 % \subsection{风格}
 % \label{subsec:style}
 % \begin{function}[EXP,added = 2021-01-05,updated = 2021-04-11]{color,color-all,multoc,withpart,footwith,notomath,rulewidth,uppercase,figure-sep,table-sep,listing-sep,equation-sep,number-sep}
@@ -265,7 +265,7 @@ The latest version of this license is in
 % \ding{229} 以上选项路径为 \opt{link/...} \\
 % \opt{link} 将超链接选项（包括以上选项）交给 \pkg{hyperref} 处理，除了一些关于 pdf 书签的选项可能会失效，其它由键值选项命令 \tn{hypersetup} 支持的多数选项可用。
 % \changes{v1.10}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。}
-% \changes{v1.24o}{2021/04/05}{增加 \pkg{hyperref} 超链接选项完整的支持。}
+% \changes{v1.24p}{2021/04/05}{增加 \pkg{hyperref} 超链接选项完整的支持。}
 % \end{function}
 %
 % \begin{optdesc}
@@ -344,7 +344,7 @@ The latest version of this license is in
 % \ding{229} 以上选项路径为 \opt{bibset/...}
 % \changes{v1.21}{2021/01/11}{增加 \opt{bibset} 选项，可以使用 \hologo{BibTeX} 或 \hologo{biber} 编译参考文献。}
 % \changes{v1.23}{2021/02/23}{使用 \opt{bibset} 选项时可设置标注风格。}
-% \changes{v1.24o}{2021/04/09}{可以不载入参考文献包手动配置参考文献格式。}
+% \changes{v1.24p}{2021/04/09}{可以不载入参考文献包手动配置参考文献格式。}
 % \end{function}
 %
 % \begin{optdesc}
@@ -444,12 +444,11 @@ The latest version of this license is in
 %
 % \subsection{页面尺寸}
 % \label{subsec:page margins}
-% \begin{function}[EXP,added = 2021-01-13,updated = 2021-03-21]{footnotemargin,footparskip,footparindent,list-labelsep,left,top,hmargin,textwidth,includehead}
+% \begin{function}[EXP,added = 2021-01-13,updated = 2021-03-21]{footnotemargin,footparskip,footparindent,left,top,hmargin,textwidth,includehead}
 % \begin{syntax}
 %   footnotemargin = <脚注首行缩进|(0.5\tn{ccwd})>
 %   footparskip = <脚注段落间距|(0ex)>
 %   footparindent = <脚注分段缩进|(2\tn{ccwd})>
-%   list-labelsep = <索引目录编号与标题的间距|(\tn{ccwd})>
 %   left = <页面左边距>
 %   top = <页面上边距>
 %   hmargin = \marg{左边距,右边距}
@@ -467,8 +466,7 @@ The latest version of this license is in
 %       top = 2.5cm,
 %       bottom = 2.5cm,
 %       left = 3.2cm,
-%       right = 3.2cm,
-%       list-labelsep = \hspace{0.5\ccwd}
+%       right = 3.2cm
 %     }
 % \end{ctexexam}
 %
@@ -492,7 +490,7 @@ The latest version of this license is in
 % \changes{v1.21}{2021/01/13}{增加配置页眉页脚的选项。}
 % \changes{v1.23}{2021/03/08}{优化页眉页脚设置，增加 \opt{chap-mark} 和 \opt{sec-mark} 标志选项。}
 % \changes{v1.23}{2021/03/14}{可以手动绘制页眉、页脚和脚注的横线。}
-% \changes{v1.24o}{2021/04/09}{增加 \opt{subsec-mark} 标志选项，仅在 \opt{article} 模式生效。}
+% \changes{v1.24p}{2021/04/09}{增加 \opt{subsec-mark} 标志选项，仅在 \opt{article} 模式生效。}
 % \end{function}
 %
 % \begin{function}[added = 2021-01-13,updated = 2021-03-14]{\easyhead,\easyfoot}
@@ -519,24 +517,29 @@ The latest version of this license is in
 %
 % \subsection{目录样式}
 % \label{subsec:catalog style}
-% \begin{function}[EXP,added = 2021-01-13,updated = 2021-01-15]{format,indent,rule}
+% \begin{function}[EXP,added = 2021-01-13,updated = 2021-04-20]{format,indent,rule,numsep}
 % \begin{syntax}
 %   format = <目录标题格式>
 %   indent = <目录标题左边缩进>
 %   rule = <目录引导线样式>
+%   numsep = <编号后间距|(\tn{ccwd})>
 % \end{syntax}
 % \ding{229} 以上选项路径为 \opt{tocset/(level)/...} \\
 % \opt{tocset} 将目录样式交给 \pkg{titletoc} 处理，\opt{level} 代表 \opt{part}、\opt{chapter}、\opt{section}、\opt{subsection} 和 \opt{lists} 五种级别的目录样式设置，其中 \opt{lists} 为图片、表格和代码目录样式的级别。
 %
-% \opt{format} 是目录中标题的格式，可以设置字体和加入垂直间距等，垂直间距最好使用无间距重合的 \tn{addvspace} 命令。\opt{indent} 是目录中标题在页面左侧的缩进距离，应该有长度单位。\opt{rule} 选项中一般应当使用 \tn{tocrule} 命令，将会在接下来介绍。
+% \opt{format} 是目录中标题的格式，可以设置字体和加入垂直间距等，垂直间距最好使用无间距重合的 \tn{addvspace} 命令。\opt{indent} 是目录中标题在页面左侧的缩进距离，应该有长度单位。\opt{rule} 选项中一般应当使用 \tn{tocrule} 命令，将会在接下来介绍。\opt{numsep} 是有编号的标题在目录中编号与标题的间距。
 % \changes{v1.21}{2021/01/13}{增加配置目录样式的选项。}
+% \changes{v1.24p}{2021/04/20}{增加目录中编号与标题的间距选项 \opt{numsep}。}
 % \end{function}
 %
-% \begin{function}[added = 2021-01-13,updated = 2021-04-06]{\tocrule}
+% \begin{function}[added = 2021-01-13,updated = 2021-04-20]{\tocrule,\EbNumberline}
 % \begin{syntax}
 %   \tn{tocrule}*\oarg{引导点间距|(0.7pc)}\parg{引导点大小|(1.2)}\marg{引导点}\oarg{页码格式}
+%   \tn{EbNumberline}\marg{编号类型}
 % \end{syntax}
 % \tn{tocrule} 命令生成目录引导线，需要在 \opt{rule} 选项中使用。带有星号的命令会使当前级别的目录引导线右边与页码连接而不是对齐。引导点间距需带有长度单位，引导点大小不带单位，为引导点符号正常大小的倍数，引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面，可以设置页码字体、距离。
+%
+% \tn{EbNumberline} 命令类似\CTeX 的 \tn{CTEXnumberline} 命令，用于 \opt{tocline} 选项中设置目录标签的编号。区别是它需要在 \opt{tocset/hang = false} 时使用，否则目录中无法显示标题编号，使用它的时候 \opt{numsep} 选项仍然有效。\meta{编号类型} 为 \opt{chapter} 和 \opt{section} 等，也可用参数\#1代替当前级别类型，标题名用参数\#2代替一般不变。
 % \end{function}
 %
 % \begin{ctexexam}
@@ -551,7 +554,7 @@ The latest version of this license is in
 %     }
 % \end{ctexexam}
 %
-% \begin{function}[EXP,added = 2021-01-13,updated = 2021-04-19]{lists/lolskip,lists/belowoffset,tocset/tocline-fig,tocset/tocline-tab,tocset/tocline-lst,tocset/belowoffset,tocset/line-align,tocset/hang}
+% \begin{function}[EXP,added = 2021-01-13,updated = 2021-04-19]{lists/lolskip,lists/belowoffset,tocset/tocline-fig,tocset/tocline-tab,tocset/tocline-lst,tocset/belowoffset,tocset/line-align,tocset/hang,tocset/numsep-all,tocset/indent-all}
 % \begin{syntax}
 %   lolskip = <(0.8pc)>
 %   belowoffset = <(0pc)>
@@ -561,22 +564,31 @@ The latest version of this license is in
 %   belowoffset = <(-1pc)>
 %   line-align = <(true)|false>
 %   hang = <true|(false)>
+%   numsep-all = <编号后间距|(\tn{ccwd})>
+%   indent-all = <目录标题左边缩进>
 % \end{syntax}
-% \opt{lolskip} 是代码目录中章之间的代码标题的距离，与\CTeX 的表格目录和图片目录中章之间的标题距离选项 \opt{lotskip} 和 \opt{lofskip} 类似，它们的值均默认0.8 pc，在 \opt{article} 模式中此选项失效。目录标签整体使用 \opt{tocline} 设置，也可使用小节 \ref{subsec:page margins} 的 \opt{list-labelsep} 选项只设置编号与标题的间距。在图表标签的参数中\#1代表编号，代码标签中则是 \tn{thelstlisting} 代表编号，标签中还可包含标签名称，默认标签名称与图、表和代码环境的标题名称一致。下面举个设置标签的例子
-% \changes{v1.24o}{2021/04/05}{可以设置图、表和代码目录的标签。}
-% \changes{v1.24o}{2021/04/06}{增加目录引导线右边对齐方式。}
-% \changes{v1.24o}{2021/04/19}{给目录增加 \opt{hang} 样式选项。}
+% \ding{229} 以上选项路径为 \opt{tocset/lists/...} 或 \opt{tocset/...}
+% \changes{v1.24p}{2021/04/05}{可以设置图、表和代码目录的标签。}
+% \changes{v1.24p}{2021/04/06}{增加目录引导线右边对齐方式。}
+% \changes{v1.24p}{2021/04/19}{给目录增加 \opt{hang} 样式选项。}
 % \end{function}
 %
-% \begin{ctexexam}
+% \begin{optdesc}
+%   \item[lolskip] \opt{lolskip} 是代码目录中章之间的代码标题的距离，与\CTeX 的表格目录和图片目录中章之间的标题距离选项 \opt{lotskip} 和 \opt{lofskip} 类似，它们的值均默认0.8 pc，在 \opt{article} 模式中此选项失效。
+%   \item[belowoffset] \opt{belowoffset} 选项为主目录标题 \tn{contentsname} 后的间距补偿，一般为负值，用于抵消 \opt{format} 中设置的垂直间距。\opt{lists} 中的 \opt{belowoffset} 与之意义类似，但是一般为正值，可以在 \opt{article} 模式中使用。建议 \opt{lists/lolskip(0.8pc) + lists/format/addvspace(0.2pc) + lists/belowoffset(0pc) = belowoffset(-1pc)}。
+%   \item[tocline] 目录标签整体使用 \opt{tocline} 设置，在图表标签的参数中\#1代表编号，代码标签中则是 \tn{thelstlisting} 代表编号，标签中还可包含标签名称，默认标签名称与图、表和代码环境的标题名称一致。下面举个设置标签的例子
+%   \begin{ctexexam}
 %   \tocset
 %     {
 %       tocline-fig = 图#1\hspace{\ccwd}
 %       tocline-lst = 代码\thelstlisting\hspace{\ccwd}
 %     }
-% \end{ctexexam}
-%
-% \opt{belowoffset} 选项为主目录标题 \tn{contentsname} 后的间距补偿，一般为负值，用于抵消 \opt{format} 中设置的垂直间距。\opt{lists} 中的 \opt{belowoffset} 与之意义类似，但是一般为正值，可以在 \opt{article} 模式中使用。建议 \opt{lists/lolskip(0.8pc) + lists/format/addvspace(0.2pc) + lists/belowoffset(0pc) = belowoffset(-1pc)}。\opt{line-align} 选项可以使目录引导线右边对齐并与页码保持一定间隙，否则会与页码连接。\opt{hang} 选项使目录标题为悬挂缩进形式，缩进距离为编号及其与标题间距的长度，但此时目录编号会失去超链接。
+%   \end{ctexexam}
+%   \item[line-align] \opt{line-align} 选项可以使目录引导线右边对齐并与页码保持一定间隙，否则会与页码连接。
+%   \item[hang] \opt{hang} 选项使目录标题为悬挂缩进形式，缩进距离为编号及其与标题间距的长度，但此时目录编号会失去超链接。
+%   \item[numsep-all] 统一设置所有有编号的标题在目录中编号与标题的间距。
+%   \item[indent-all] 统一设置所有级别的目录标题左边缩进。
+% \end{optdesc}
 %
 % \section{常用环境}
 %
@@ -598,7 +610,7 @@ The latest version of this license is in
 %   \tn{end}\marg{环境名}
 % \end{syntax}
 % \pkg{enumitem} 宏包为系统预置的列表环境 \env{enumerate}、\env{itemize}和 \env{description} 提供了更灵活的标签以及间距的控制，可使用 \tn{setlist} 命令设置原有的三种列表格式，也可以直接使用可选参数的键值列表，具体选项见 \pkg{enumitem} 宏包文档。已为三种列表预置了三个级别的格式可相互嵌套，默认标签与 \cls{book} 文档类相同，若自定义标签可例如
-% \changes{v1.24o}{2021/04/08}{重新优化列表环境的配置。}
+% \changes{v1.24p}{2021/04/08}{重新优化列表环境的配置。}
 % \end{function}
 %
 % \begin{ctexexam}
@@ -658,9 +670,9 @@ The latest version of this license is in
 %   \  \tn{item} <习题内容>
 %   \tn{end}\marg{exercise}
 % \end{syntax}
-% 习题环境 \env{exercise} 的标题紧接上一节编号并加入目录与页眉，当使用星号参数时不进行编号，使用+号参数启用 \pkg{tcolorbox} 支持生成标题。\oarg{颜色名} 选项在使用+号参数时有效，其中颜色为自定义或 \pkg{xcolor} 包含的颜色名称。题目编号格式与小节 \ref{subsec:sort list} 排序列表相同，标题名默认为习题。
+% 习题环境 \env{exercise} 的标题紧接上一节编号并加入目录与页眉，当使用星号参数时不进行编号，使用+号参数启用 \pkg{tcolorbox} 支持生成标题。\meta{颜色名} 选项在使用+号参数时有效，其中颜色为自定义或 \pkg{xcolor} 包含的颜色名称。题目编号格式与小节 \ref{subsec:sort list} 排序列表相同，标题名默认为习题。
 %
-% 配置选项在是否使用+号参数时用法不同，使用+号参数时为 \pkg{tcolorbox} 的盒子选项，例如 \opt{boxrule} 和 \opt{fontupper}。不使用+号参数时相当于设置 \tn{ctexset}\marg{section = {\#1}} 键值选项列表，例如 \opt{format} 和 \opt{beforeskip}。\oarg{序言} 选项用于在习题环境开始前插入一段内容，可以是文本或者代码。注意，环境具有相同定界符的可选参数只能\textbf{从右往左}省略，省略的参数使用默认值。
+% 配置选项在是否使用+号参数时用法不同，使用+号参数时为 \pkg{tcolorbox} 的盒子选项，例如 \opt{boxrule} 和 \opt{fontupper}。不使用+号参数时相当于设置 \tn{ctexset}\marg{section = {\#1}} 键值选项列表，例如 \opt{format} 和 \opt{beforeskip}。\meta{序言} 选项用于在习题环境开始前插入一段内容，可以是文本或者代码。注意，环境具有相同定界符的可选参数只能\textbf{从右往左}省略，省略的参数使用默认值。
 % \changes{v1.23}{2021/02/08}{增加准确的习题盒子标题目录锚点。}
 % \end{function}
 %
@@ -699,7 +711,7 @@ The latest version of this license is in
 %   \  <盒子内容>
 %   \tn{end}\marg{easybox}
 % \end{syntax}
-% 环境 \env{easybox} 创建一个带有三个可选参数的扁平盒子。使用星号参数时给盒子添加边框，\oarg{颜色名} 选项设置背景颜色，\parg{段落标题} 选项可以设置标题，默认无标题。
+% 环境 \env{easybox} 创建一个带有三个可选参数的扁平盒子。使用星号参数时给盒子添加边框，\meta{颜色名} 选项设置背景颜色，\meta{段落标题} 选项可以设置标题，默认无标题。
 % \end{function}
 %
 % \begin{ctexexam}
@@ -716,8 +728,8 @@ The latest version of this license is in
 %   \  <盒子内容>
 %   \tn{end}\marg{ebparbox}
 % \end{syntax}
-% 环境 \env{ebparbox} 与 \env{easybox} 类似，同样带有三个可选参数。当使用星号参数时盒子左边带有一条竖线，\oarg{颜色名} 选项可以自定义竖线颜色，使用不带有星号的环境则盒子带有竖线颜色的浅色背景。\parg{段落标题} 选项可以设置标题，默认无标题。
-% \changes{v1.24o}{2021/04/19}{优化盒子环境的选项，增加可带有标题的扁平盒子 \env{ebparbox}。}
+% 环境 \env{ebparbox} 与 \env{easybox} 类似，同样带有三个可选参数。当使用星号参数时盒子左边带有一条竖线，\meta{颜色名} 选项可以自定义竖线颜色，使用不带有星号的环境则盒子带有竖线颜色的浅色背景。\meta{段落标题} 选项可以设置标题，默认无标题。
+% \changes{v1.24p}{2021/04/19}{优化盒子环境的选项，增加可带有标题的扁平盒子 \env{ebparbox}。}
 % \end{function}
 %
 % \subsubsection{行内盒子}
@@ -766,7 +778,7 @@ The latest version of this license is in
 %   \tn{ch}\oarg{键值列表}\marg{输入}
 %   \tn{chemfig}\oarg{键值列表}\marg{分子代码}
 % \end{syntax}
-% 除了以普通公式的方式，化学式还可用 \pkg{chemformula} 实现，无机化学式使用 \tn{ch} 命令书写。有机化学式推荐在导言区载入 \pkg{chemfig} 宏包，使用\tn{chemfig} 命令完成。
+% 除了以普通公式的方式，化学式还可用 \pkg{chemformula} 实现，无机化学式使用 \tn{ch} 命令书写。有机化学式推荐在导言区载入 \pkg{chemfig} 宏包，使用 \tn{chemfig} 命令完成。
 % \end{function}
 %
 % \subsection{引用}
@@ -776,7 +788,7 @@ The latest version of this license is in
 %   \tn{labelformat}\marg{计数器}\marg{标签引用格式}
 % \end{syntax}
 % 使用 \tn{ref} 命令进行引用将会自动检测环境并添加相应的前缀，\tn{labelformat} 可以设置标签引用格式，第二个参数中\#1代表 \tn{the}\meta{计数器}，可以设置引用序号的前缀和后缀。
-% \changes{v1.24o}{2021/04/11}{取消载入 \pkg{cleveref} 宏包来交叉引用。}
+% \changes{v1.24p}{2021/04/11}{取消载入 \pkg{cleveref} 宏包来交叉引用。}
 % \end{function}
 %
 % \subsubsection{索引}
@@ -886,7 +898,7 @@ The latest version of this license is in
 %<*class>
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplClass{easybook}{2021/04/19}{1.24o}{beta}
+\ProvidesExplClass{easybook}{2021/04/20}{1.24p}{beta}
 
 \cs_generate_variant:Nn \__ctex_define:nn {nx}
 \cs_generate_variant:Nn \int_to_arabic:n {v}
@@ -909,6 +921,7 @@ The latest version of this license is in
 \bool_set_true:N  \l__eb_zhtitle_bool
 \bool_set_true:N  \l__eb_page_twoside_bool
 \bool_set_true:N  \l__eb_class_book_bool
+\tl_new:N         \g__eb_config_tl
 \clist_new:N      \g__eb_options_clist
 
 \keys_define:nn {easybook}
@@ -960,6 +973,7 @@ The latest version of this license is in
       },
     class         .initial:n = book,
 
+    config        .tl_set:N = \g__eb_config_tl,
     unknown       .code:n =
       {\clist_gput_right:No \g__eb_options_clist{\CurrentOption}}
   }
@@ -988,7 +1002,6 @@ The latest version of this license is in
 \bool_new:N \l__eb_uppercase_bool
 \bool_new:N \l__eb_chap_withpart_bool
 \tl_new:N   \l__eb_foot_numberwith_tl
-\tl_new:N   \g__eb_config_tl
 
 \seq_const_from_clist:Nn \c__eb_options_path_seq
   {
@@ -1003,7 +1016,6 @@ The latest version of this license is in
   }
 \ctex_define:n
   {
-    config              .tl_set:N = \g__eb_config_tl,
     lstlistlistingname  .tl_set:N = \lstlistlistingname,
     lstlistingname      .tl_set:N = \lstlistingname
   }
@@ -1057,8 +1069,13 @@ The latest version of this license is in
   }
 \ctex_at_end_preamble:n
   {
-    \bool_if:NT \l__eb_notomath_bool{\RequirePackage{newtxmath,bm}}
-    \tl_if_empty:NF \g__eb_config_tl{\file_input:n {\g__eb_config_tl}}
+    \bool_if:NT \l__eb_notomath_bool
+      {\RequirePackage{newtxmath,bm}}
+  }
+\ctex_at_end:n
+  {
+    \tl_if_empty:NF \g__eb_config_tl
+      {\file_input:n {\g__eb_config_tl}}
   }
 
 \cs_new_protected:Npn \__eb_package_later_bool:nn #1#2
@@ -1194,8 +1211,6 @@ The latest version of this license is in
     footparskip     .initial:n = 0ex,
     footparindent   .tl_set:N = \hangfootparindent,
     footparindent   .initial:n = 2\ccwd,
-    list-labelsep   .dim_set:N = \eb@list@labelsep,
-    list-labelsep   .initial:n = \ccwd,
     unknown         .code:n =
       {
         \clist_gput_right:Nx \g__eb_geometry_clist
@@ -1362,11 +1377,21 @@ The latest version of this license is in
     \ctex_define:n {tocset/#1 .meta:nn = {ctex/tocset/#1}{##1}}
     \__ctex_define:nn {tocset}
       {
-        #1/format .tl_set:c = l__toc_#1_format_tl,
-        #1/indent .tl_set:c = l__toc_#1_indent_tl,
-        #1/rule   .tl_set:c = l__toc_#1_rule_tl
+        #1/format .tl_set:c = l__eb_toc_#1_format_tl,
+        #1/indent .tl_set:c = l__eb_toc_#1_indent_tl,
+        #1/rule   .tl_set:c = l__eb_toc_#1_rule_tl,
+        #1/numsep .tl_set:c = eb@toc@#1@numsep
       }
   }
+
+\cs_new:Npn \EbNumberline#1
+  {
+    \CTEXifname
+      {
+        \use:c {CTEXthe#1}
+        \hspace{\use:c {eb@toc@#1@numsep}}
+      }{}
+  }
 \__ctex_define:nn {tocset}
   {
     lists/lolskip     .skip_set:N = \l__eb_toc_lolskip_skip,
@@ -1375,46 +1400,105 @@ The latest version of this license is in
     lists/belowoffset .initial:n = 0pc,
     tocline-fig       .cs_set:Np = \eb@labelname@lof#1,
     tocline-fig       .initial:n =
-      {\figurename\space#1\hspace{\eb@list@labelsep}},
+      {
+        \figurename\space#1
+        \ifodd\eb@titletoc@hang@fix
+        \else
+          \hspace{\eb@toc@lists@numsep}
+        \fi
+      },
     tocline-tab       .cs_set:Np = \eb@labelname@lot#1,
     tocline-tab       .initial:n =
-      {\tablename\space#1\hspace{\eb@list@labelsep}},
+      {
+        \tablename\space#1
+        \ifodd\eb@titletoc@hang@fix
+        \else
+          \hspace{\eb@toc@lists@numsep}
+        \fi
+      },
     tocline-lst       .tl_set:N = \eb@labelname@lol,
     tocline-lst       .initial:n =
       {
         \lstlistingname\space
-        \thelstlisting\hspace{\eb@list@labelsep}
+        \thelstlisting
+        \ifodd\eb@titletoc@hang@fix
+        \else
+          \hspace{\eb@toc@lists@numsep}
+        \fi
       },
     belowoffset       .dim_set:N = \l__eb_toc_offset_dim,
     belowoffset       .initial:n = -1pc,
     line-align        .bool_set:N = \l__eb_toc_line_align_bool,
     line-align        .default:n = true,
     line-align        .initial:n = true,
-    hang              .bool_set:N = \eb@titletoc@hang@fix,
+
+    hang              .choice:,
+    hang/true         .code:n =
+      {
+        \bool_set_true:N \eb@titletoc@hang@fix
+        \ctex_set:n
+          {
+            chapter/tocline = \CTEXnumberline{##1}##2,
+            section/tocline = \CTEXnumberline{##1}##2,
+            subsection/tocline = \CTEXnumberline{##1}##2
+          }
+      },
+    hang/false        .code:n =
+      {
+        \bool_set_false:N \eb@titletoc@hang@fix
+        \ctex_set:n
+          {
+            chapter/tocline = \EbNumberline{##1}##2,
+            section/tocline = \EbNumberline{##1}##2,
+            subsection/tocline = \EbNumberline{##1}##2
+          }
+      },
     hang              .default:n = true,
-    hang              .initial:n = false
+    hang              .initial:n = false,
+
+    numsep-all        .meta:n =
+      {
+        part/numsep = {#1},
+        chapter/numsep = {#1},
+        section/numsep = {#1},
+        subsection/numsep = {#1},
+        lists/numsep = {#1}
+      },
+    indent-all        .meta:n =
+      {
+        part/indent = {#1},
+        chapter/indent = {#1},
+        section/indent = {#1},
+        subsection/indent = {#1},
+        lists/indent = {#1}
+      }
   }
 \ctex_set:nn {tocset}
   {
     part/format = \addvspace{1pc}\sffamily\large,
     part/indent = 0\ccwd,
     part/rule = \tocrule{}[\bfseries],
+    part/numsep = \ccwd,
 
     chapter/format = \addvspace{1pc}\sffamily\large,
     chapter/indent = 0\ccwd,
     chapter/rule = \tocrule{$\cdot$}[\bfseries],
+    chapter/numsep = \ccwd,
 
     section/format = \addvspace{0.35pc},
     section/indent = 1.5\ccwd,
     section/rule = \tocrule{$\cdot$},
+    section/numsep = \ccwd,
 
     subsection/format = \addvspace{0.35pc},
     subsection/indent = 3.8\ccwd,
     subsection/rule = \tocrule{$\cdot$},
+    subsection/numsep = \ccwd,
 
     lists/format = \addvspace{0.2pc},
     lists/indent = 0\ccwd,
-    lists/rule = \tocrule{$\cdot$}
+    lists/rule = \tocrule{$\cdot$},
+    lists/numsep = \ccwd
   }
 
 \NewDocumentCommand{\tocrule}{sO{0.7pc}D(){1.2}mO{}}
@@ -1431,14 +1515,19 @@ The latest version of this license is in
 \cs_new_protected:Npn \__eb_titlecontents_set:nn #1#2
   {
     \titlecontents{#1}
-      [\use:c {l__toc_#2_indent_tl}]
-      {\use:c {l__toc_#2_format_tl}}
+      [\use:c {l__eb_toc_#2_indent_tl}]
+      {\use:c {l__eb_toc_#2_format_tl}}
       {
         \ifodd\eb@titletoc@hang@fix
-          \contentspush{\color{ctex@link}\thecontentslabel}
+          \contentspush
+            {
+              \color{ctex@link}
+              \thecontentslabel
+              \hspace{\use:c {eb@toc@#2@numsep}}
+            }
         \fi
       }{}
-      {\use:c {l__toc_#2_rule_tl}}
+      {\use:c {l__eb_toc_#2_rule_tl}}
   }
 \contentsuse{lstlisting}{lol}
 \clist_map_inline:nn
@@ -1458,14 +1547,6 @@ The latest version of this license is in
     figure = \eb@labelname@lof,
     table = \eb@labelname@lot
   }
-\cs_new:Npn \eb@numberline#1#2
-  {
-    \CTEXifname
-      {
-        \protect\numberline{\use:c {CTEXthe#1}}
-        \hspace{#2}
-      }{}
-  }
 \ctex_at_end_preamble:n
   {
     \cs_gset:Npn \caption@@@addcontentsline#1#2#3#4
@@ -1491,14 +1572,6 @@ The latest version of this license is in
             {\eb@labelname@lol}\lst@@caption
           }
       }
-    \ifodd\eb@titletoc@hang@fix
-      \ctex_set:n
-        {
-          chapter/tocline = \eb@numberline{#1}{\ccwd}#2,
-          section/tocline = \eb@numberline{#1}{\ccwd}#2,
-          subsection/tocline = \eb@numberline{#1}{\ccwd}#2
-        }
-    \fi
   }
 
 \__eb_appto_cmd:Nn \@chapter
@@ -2071,7 +2144,7 @@ The latest version of this license is in
           {
             blank,on~line,center,
             fontupper = \Large\sffamily,
-            before~skip = 3.5ex,after~skip = 2.25ex
+            before~skip = 3.75ex,after~skip = 2.5ex
           },
         breakable,
         boxsep = 0pt,
@@ -2560,7 +2633,7 @@ The latest version of this license is in
         format = \color{ctex@frame}\sffamily\Huge,
         aftername =
           {\bool_if:NTF \l__eb_newline_bool{\par\nobreak}{\hspace{\ccwd}}},
-        tocline = \CTEXifname{\CTEXthepart\hspace{\ccwd}}{}#2
+        tocline = \CTEXifname{\CTEXthepart\hspace{\eb@toc@part@numsep}}{}#2
       },
     chapter =
       {
@@ -2580,8 +2653,7 @@ The latest version of this license is in
         beforeskip = -1.5ex,
         afterskip = 3ex,
         lotskip = 0.8pc,
-        lofskip = 0.8pc,
-        tocline = \CTEXifname{\CTEXthechapter\hspace{\ccwd}}{}#2
+        lofskip = 0.8pc
       },
     section =
       {
@@ -2589,8 +2661,7 @@ The latest version of this license is in
         format = \color{ctex@frame}\sffamily\Large,
         aftername = \hspace{0.5\ccwd},
         beforeskip = 1.5ex plus .2ex minus .1ex,
-        afterskip = 1.5ex plus .2ex minus .1ex,
-        tocline = \CTEXifname{\CTEXthesection\hspace{\ccwd}}{}#2
+        afterskip = 1.5ex plus .2ex minus .1ex
       },
     subsection =
       {
@@ -2598,8 +2669,7 @@ The latest version of this license is in
         format = \color{ctex@frame}\sffamily\large,
         aftername = \hspace{0.5\ccwd},
         beforeskip = 1.3ex plus .2ex minus .1ex,
-        afterskip = 1.3ex plus .2ex minus .1ex,
-        tocline = \CTEXifname{\CTEXthesubsection\hspace{\ccwd}}{}#2
+        afterskip = 1.3ex plus .2ex minus .1ex
       },
     subsubsection =
       {
-- 
cgit v1.2.3

