texlive[60136] Master/texmf-dist: easybook (1aug21)

commits+karl at tug.org commits+karl at tug.org
Sun Aug 1 22:36:19 CEST 2021


Revision: 60136
          http://tug.org/svn/texlive?view=revision&revision=60136
Author:   karl
Date:     2021-08-01 22:36:19 +0200 (Sun, 01 Aug 2021)
Log Message:
-----------
easybook (1aug21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/easybook/easybook.pdf
    trunk/Master/texmf-dist/doc/latex/easybook/easybook.tex
    trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx
    trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty
    trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls
    trunk/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg

Modified: trunk/Master/texmf-dist/doc/latex/easybook/easybook.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/easybook/easybook.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/easybook/easybook.tex	2021-08-01 20:36:01 UTC (rev 60135)
+++ trunk/Master/texmf-dist/doc/latex/easybook/easybook.tex	2021-08-01 20:36:19 UTC (rev 60136)
@@ -3,15 +3,16 @@
 \usepackage[fontset = fandol]{ctex}
 \usepackage
   {
-    hologo,pifont,booktabs,enumitem,colortbl,
-    fancyvrb-ex,geometry,indentfirst
+    booktabs,enumitem,newtxmath,indentfirst,
+    fancyvrb,geometry,colortbl,hologo,pifont
   }
+\colorlet{cnltxred}{violet}
 \setcnltx
   {
     name      = easybook,
     title     = EASYBOOK 使用手册,
-    version   = v1.28,
-    date      = 2021/07/30,
+    version   = v1.28b,
+    date      = 2021/08/01,
     authors   = 瞿毅,
     info      = 排版简体中文学位论文和书籍,
     email     = quee123 at foxmail.com,
@@ -28,7 +29,7 @@
     add-frame-options = {innerleftmargin = 2em},
     listings-options  = {numbers = none}
   }
-\KOMAoptions{headsepline = 0.6pt}
+\KOMAoptions{headsepline = 0.6pt,numbers = {noenddot}}
 \setfootnoterule[0.6pt]{0.4\columnwidth}
 \addtokomafont{headsepline}{\color{cnltxblue}}
 \addtokomafont{footnoterule}{\color{cnltxblue}}
@@ -39,7 +40,6 @@
 \geometry{margin = 1in,marginparwidth = 0.65in}
 \setlist{nosep,labelindent = \parindent,leftmargin = *,labelsep = 0.5em}
 \setlist[itemize,1]{label = \small\color{cnltxblue}\textbullet}
-\newnote*{\change}[2][]{Introduced in #2\newline\ifblank{#1}{}{Changed in #1}}
 \arrayrulecolor{cnltxblue}
 \setcounter{tocdepth}{2}
 
@@ -171,17 +171,17 @@
 \label{sec:document class options}
 \begin{options}
   \opt{draft}\Default!
-  开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。不载入 \pkg*{tcolorbox} 宏包使用盒子环境也会提高编译速度,详情见小节 \ref{subsec:box}。
+  开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。不使用绘图宏包及依赖于 \pkg*{tcolorbox} 宏包的盒子环境也会增快编译速度,详情见小节 \ref{subsec:box}。
   \opt{newline}\Default!
   部分和章标题的样式为另起一行,符合一般英文书籍的习惯。
   \keychoice{scheme}{chinese,plain}\Default{chinese}
-  \option{scheme} 代表文档的主题,扩展了此选项在 C\TeX 文档类中原有的作用范围,\option{plain} 选项可使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。
+  文档主题方案选项 \option{scheme} 扩展了 C\TeX 文档类中同名选项原有的作用范围,\option{plain} 选项可使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。
   \opt{enmode}\Default!
   同时开启 \option{newline} 和 \keyis-{scheme}{plain} 选项以符合英文原生风格。
   \keychoice{scheme}{a4paper,b5paper,c5paper,letterpaper,其它纸张}\Default{a4paper}
-  设置页面大小,交给 \pkg*{geometry} 宏包处理,可使用它支持的所有规格。建议选项 \option*{b5paper} 和 \keyis*-{zihao}{5},选项 \option*{a4paper} 和 \keyis*-{zihao}{-4} 配合。
+  页眉尺寸选项将参数交给 \pkg*{geometry} 宏包处理,可使用它支持的所有纸张规格。建议选项 \option*{b5paper} 和 \keyis*-{zihao}{5},选项 \option*{a4paper} 和 \keyis*-{zihao}{-4} 配合。
   \keyval-{config}{配置文件名}
-  \option{config} 为载入用户配置选项,配置文件名不需加括号但需带有后缀名如 \code{tex}、\code{def} 和 \code{cfg}。
+  选项 \option{config} 载入用户配置文件,最好放在当前路径且需带有文件扩展名如 \code{tex}、\code{def} 和 \code{cfg}。
   \keybool{floatpage}\Default{true}
   开启这个选项后浮动环境 \env*{table} 和 \env*{figure} 的比例参数会使用默认值,关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。
 \end{options}
@@ -190,15 +190,15 @@
 \begin{options}
   \keychoice{cjkfont}{adobe,fandol,founder,mac,macnew,macold,ubuntu,windows,none}\Default
   中文字体采用 C\TeX 宏集包含的字库并与其一致,具体配置方案可以查看 C\TeX 使用手册。它与 \option*{fontset} 选项是等效的,如果没有指定 \option{cjkfont} 的值,将会自动检测操作系统并选择相应的字体。
-\end{options}
 
-如果需要使用其它中文字体,可以在启用选项 \keyis-{cjkfont}{none} 后,再使用 \pkg*{xeCJK} 宏包的相关命令设置字体以及声明字体族:
-\begin{ctexexam}
+  如果需要使用其它中文字体,可以在启用选项 \keyis-{cjkfont}{none} 后,再使用 \pkg*{xeCJK} 宏包的相关命令设置字体以及声明字体族:
+  \begin{ctexexam}
   \setCJKmainfont{SimSun}[BoldFont = SimHei,ItalicFont = KaiTi]
   \setCJKsansfont{SimHei}
   \setCJKmonofont{FangSong}
   \newCJKfontfamily[song]\songti{SimSun}
-\end{ctexexam}
+  \end{ctexexam}
+\end{options}
 
 \subsection{英文字体}
 \begin{options}
@@ -207,7 +207,7 @@
   \begin{center}
   \begin{tabular}{cccc}
   \toprule
-  & \sffamily{正文字体} & \sffamily{无衬线字体} & \sffamily{等宽字体} \\
+  & \textsf{正文字体} & \textsf{无衬线字体} & \textsf{等宽字体} \\
   \midrule[0.6pt]
   \code{noto} & Noto Serif & Noto Sans & Noto Sans Mono \\
   \code{garamond} & EB Garamond & Libertinus Sans & LM Mono \\
@@ -237,12 +237,12 @@
   \command{frontmatter}[\sarg\oarg{编号格式}]\Default{Roman}
   前言区命令,使部分和章标题不编号,带有星号的变体命令不使用 \cs{cleardoublepage} 命令。页码 \meta{编号格式} 可设置为例如 \code{roman}、\code{Alph} 等格式。
   \command{mainmatter}[\sarg]
-  文区命令,章标题正常编号且页码为从 1 开始计数的阿拉伯数字,带有星号的变体命令不使用 \cs{cleardoublepage} 清双页命令。
+  主文区命令,章标题正常编号且页码为从 1 开始计数的阿拉伯数字,带有星号的变体命令不使用 \cs{cleardoublepage} 清双页命令。
   \command{backmatter} 后记区命令,页码格式与编号保持不变,章标题不编号。
   \command{cleardoublepage}[\oarg{页面风格}]\Default{empty}
   清双页命令可以确保下一页文本总在奇数页开始,在奇数页使用它会产生空白偶数页。文区命令 \cs{frontmatter} 和 \cs{mainmatter} 会用到清双页命令,在启用文类选项 \option*{openright} 时标题命令 \cs*{part} 和 \cs*{chapter} 也会用到清双页命令。
   \command{blankpagestyle}[\marg{页面风格}]
-  空白页面风格命令全局指定多出空白页的默认页面风格,或使用可选参数局部指定。默认的风格为 \code{empty},即空的页眉页脚。
+  多出空白页的默认页面风格用空白页面风格命令 \cs{blankpagestyle} 全局指定,或使用可选参数局部指定。默认的风格为 \code{empty},即空的页眉页脚。
 \end{commands}
 
 \subsection{目录命令}
@@ -250,11 +250,11 @@
   \command{tableofcontents}[\parg\oarg{键值列表}\darg{附加代码}]
   主文档目录命令。带有 \parg{} 号参数的命令输出双语目录,需要与双语目录标题命令 \cs{bichapter} 等或设置图片、表格和代码等英文目录的标题配合使用,附加代码是中文与英文目录之间的代码,可以插入目录样式和换页等命令
   \command{listoffigures}[\sarg\parg\oarg{键值列表}]
-  输出图片目录命令。带有星号的目录命令不将标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。
+  输出图片目录命令。带有星号的目录命令不将目录标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。
   \command{listoftables}[\sarg\parg\oarg{键值列表}]
-  输出表格目录命令。带有星号的目录命令不将标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。
+  输出表格目录命令。带有星号的目录命令不将目录标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。
   \command{listoflstlistings}[\sarg\parg\oarg{键值列表}]
-  输出代码目录命令。带有星号的目录命令不将标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。以上命令可选参数的 \meta{键值列表} 如下:
+  输出代码目录命令。带有星号的目录命令不将目录标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。以上命令可选参数的 \meta{键值列表} 如下:
 \end{commands}
 
 \begin{options}
@@ -277,7 +277,6 @@
 \end{options}
 
 \subsection{标题命令}
-\change[2021-06-13]{2021-05-05}
 双语目录标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录。类似于标准文档类,这三个标题命令分别具有独立的计数器\footnote{默认情况下与普通标题命令共享使用计数器。},并对应 \cs*{the}\meta{计数器} 的值,可以用于 \option{binumber} 选项更改英文目录中的编号。这个功能是为国内一些高校的学位论文模板的要求设计,在一般情况和英文模式下\textbf{不需要使用}。
 \begin{commands}
   \command{bichapter}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
@@ -288,17 +287,16 @@
   \code{subsection} 级别的双语目录标题命令,具有独立的 \code{bisubsection} 计数器。
 \end{commands}
 
-它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \cs{chapter*} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录的格式是一致的,共享使用 \cs*{tocset} 的设置,英文目录的章级别标题名及编号的修改方式如下:
+它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \cs{chapter*} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录的格式是一致的,共享使用 \module*{tocset} 的设置,英文目录的章级别标题名及编号的修改方式如下:
 \begin{options}
   \kvsplit{biname}{英文目录前名字,英文目录后名字}\Module{chapter}\Default{Chapter\cs*{space}}
   更改英文目录 \code{chapter} 级别的标题编号前后名字,类似 C\TeX 的 \option*{name} 选项。
   \keyval-{binmuber}{英文目录数字输出命令}\Module{chapter}\Default{\cs*{arabic}\Marg{chapter}}
-  更改英文目录 \code{chapter} 级别的标题编号输出格式,类似 C\TeX 的 \option*{nuber} 选项。
+  更改英文目录 \code{chapter} 级别的标题编号输出格式,类似 C\TeX 的 \option*{number} 选项。
 \end{options}
 
 \begin{commands}
   \command{appendix}[\splitoarg{前名字,后名字}\darg{数字输出命令}]
-  \change[2021-06-13]{2021-05-05}
   附录开始命令,其后的章节标题变为附录形式。英文目录中附录标题的 \meta{前名字} 为英文附录目录前名字,\meta{后名字} 为英文附录目录后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文附录目录前名字。\meta{数字输出命令} 为附录标题在英文目录中的编号命令。
   \command{BeforeAddBitoc}[\sarg\marg{加入目录英文标题前的代码}]
   作用于局部范围的英文目录钩子,可以插入标题或目录设置的命令改变英文目录中标题的显示格式,也可以覆盖上述的目录前后名字和编号等设置,带有星号的命令会重置之前的代码,放置在导言区或 \cs{bichapter} 等命令前生效。
@@ -312,7 +310,7 @@
   \command{sub}[\sarg\oarg{垂直偏移}\splitoarg{高度,深度}\darg{格式代码}\marg{内容}\oarg{水平偏移}]
   下标命令,与简短命令 \cs{sp} 等效。水平和垂直偏移为正值时代表向下或向右移动,否则相反。其它用法和参数与上标命令 \cs{super} 类似。
   \command{supersub}[\sarg\oarg{间距}\darg{对齐方式}\marg{上标内容}\marg{下标内容}\oarg{水平偏移}\splitdarg{上标代码,下标代码}]
-  同时输出上标和下标的命令。\meta{间距} 为上下标的垂直间距,\meta{对齐方式} 是下标的水平对齐方式,参数与 \option{supersubalign} 相同,\meta{水平偏移} 默认为 \code{0pt}。
+  同时输出上标和下标的命令,与简短命令 \cs{spb} 等效。\meta{间距} 为上下标的垂直间距,\meta{对齐方式} 是下标的水平对齐方式,参数与 \module*{style/}\option{supersubalign} 相同,\meta{水平偏移} 默认为 \code{0pt}。
 \end{commands}
 
 \section{接口选项}
@@ -324,13 +322,29 @@
   \begin{tabular}{*{5}{c}}
   \toprule
   \hyperref[subsec:style]{风格} & \hyperref[subsec:other font]{其它字体} & \hyperref[subsec:spacing]{行距} & \hyperref[subsec:hyperlinks]{超链接} & \hyperref[subsec:reference]{参考文献} \\
-  style & subfont & spread & refset & bibset \\
+  \module*{style} & \module*{subfont} & \module*{spread} & \module*{refset} & \module*{bibset} \\
   \midrule[0.6pt]
   \hyperref[subsec:theorem of style]{定理样式} & \hyperref[subsec:page margins]{页面尺寸} & \hyperref[subsec:header and footer]{页眉页脚} & \hyperref[subsec:catalog style]{目录样式} & \\
-  thmset & geoset & hdrset & tocset & \\
+  \module*{thmset} & \module*{geoset} & \module*{hdrset} & \module*{tocset} & \\
   \bottomrule
   \end{tabular}
   \end{center}
+
+  例如使用下面小节 \ref{subsec:style} 介绍的风格 \module*{style} 模块,路径名与所属下级选项之间可以 \code{/} 或 \code{=} 号分开,符号后不能有空格或者换行:
+  \begin{ctexexam}
+  \ctexset
+    {
+      style/color   = seaside,
+      style         =
+        {
+          rulewidth = 0.5pt,
+          uppercase = false
+        }
+    }
+  \style{figure-con = {-}}
+  \end{ctexexam}
+
+  文档类有三种选项:布尔型 \boolkey*{key},选项的值为 \code{true} 或 \code{false},如果不指定默认为真。键值型 \key*-{key}{value} 需要为选项指定值,后面 \code{=} 号不能省略。选择型 \choicekey*{key}{one,\default{two},three} 根据提供的可选值进行设定。
 \end{commands}
 
 \subsection{风格}
@@ -337,18 +351,17 @@
 \label{subsec:style}
 \begin{options}
   \keychoice{color}{none,seaside,energy,cyberpunk}\Module{style}\Default{none}
-  \change[2021-07-03]{2021-01-05}
-  预置了四种主题颜色,默认主题 \code{none} 为黑白页面,主题颜色不包括超链接。
+  预置了四种颜色主题,默认主题 \code{none} 为黑白页面,颜色主题不包括超链接。
   \begin{commands}
   \command{DeclareThemeColor}[\splitmarg{风格名称,ctex at frame,ctex at emph,ctex at verb}]
-  可以使用 \cs{DeclareThemeColor} 命令声明新的主题颜色,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成主题颜色。类似地更改超链接颜色见小节 \ref{subsec:hyperlinks}。
+  可以使用 \cs{DeclareThemeColor} 命令声明新的颜色主题,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 \code{HTML} 颜色代码,构成颜色主题。类似地更改超链接颜色见小节 \ref{subsec:hyperlinks}。
   \end{commands}
   \keyval-{color-all}{HTML颜色代码}\Default
-  统一设置主题的各部分颜色,参数是 6 个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
+  统一设置主题的各部分颜色,参数是 6 个十六进制数字组成的 \code{HTML} 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
   \keybool{multoc}\Default{false}
   开启多栏目录,与节 \ref{sec:document command} 中目录命令的同名选项有相同效果。
   \keybool{withpart}\Default{false}
-  使章跟随每一部分编号,默认不跟随。
+  使章标题跟随每一部分编号,开启新的一部分时章编号从 1 开始,默认不跟随。
   \keychoice{footwith}{part,chapter,page}\Default{chapter}
   使脚注跟随编号的计数器,默认跟随章,当开启新的一章时脚注编号从 1 开始。
   \keyval-{rulewidth}{线宽}\Default{0.75pt}
@@ -362,7 +375,6 @@
 \subsubsection{连接符}
 \begin{options}
   \keyval-{figure-con}{图片连接符}\Module{style}\Default{\Marg{.}}
-  \change[2021-07-02]{2021-01-05}
   设置图片题注编号的连接符。
   \keyval-{table-con}{表格连接符}\Default{\Marg{.}}
   设置表格题注编号的连接符。
@@ -401,19 +413,18 @@
 
 \subsection{超链接}
 \label{subsec:hyperlinks}
-\module*{refset} 将超链接选项(包括以上选项)交给 \pkg*{hyperref} 处理,除了一些关于 pdf 书签的选项可能会失效,其它由键值选项命令 \cs*{hypersetup} 支持的多数选项可用。
+\module*{refset} 将超链接选项(包括以上选项)交给 \pkg*{hyperref} 处理,除了一些关于 \code{pdf} 书签的选项可能会失效,其它由键值选项命令 \cs*{hypersetup} 支持的多数选项可用。
 \begin{options}
   \keychoice{linktype}{edge,colors,none}\Module{refset}\Default{edge}
-  \change[2021-07-03]{2021-01-05}
   使超链接为边框形式,\option{various} 使超链接变为彩色,预置了四种颜色样式。\code{none} 关闭超链接边框与颜色,此时 \option{linkcolor} 选项无效。
   \keychoice{linkcolor}{fresh,cutepink,navyblue,crimson}\Default{navyblue}
   超链接颜色样式,预置了四种超链接颜色风格。
   \begin{commands}
   \command{DeclareLinkColor}[\splitmarg{风格名称,ctex at link,ctex at url,ctex at cite}]
-  可以使用 \cs{DeclareLinkColor} 命令声明新的超链接颜色样式,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成超链接颜色。
+  可以使用 \cs{DeclareLinkColor} 命令声明新的超链接颜色样式,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 \code{HTML} 颜色代码,构成超链接颜色。
   \end{commands}
   \keyval-{linkcol-all}{HTML颜色代码}\Default
-  统一设置超链接的各部分颜色,参数是 6 个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
+  统一设置超链接的各部分颜色,参数是 6 个十六进制数字组成的 \code{HTML} 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
   \keychoice{linktoc}{none,section,page,all}\Default{all}
   将目录中的超链接取消、置于标题上、置于页码上或置于标题和页码上。
 \end{options}
@@ -423,7 +434,6 @@
 行距因子用于设置各种行距倍数,只能是浮点数,不能带有长度单位。各行距既可在导言区全局设置也可正文中设置对后面生效。
 \begin{options}
   \keyval-{line}{数值}\Module{spread}\Default{1.3}
-  \change[2021-05-17]{2021-01-05}
   正文行距,C\TeX 原有的行距选项 \option*{linespread} 失效。
   \keyval-{table}{数值}\Default{1.05}
   表格行距,对传统表格环境 \env*{tabular}、\env*{tabularx} 以及 \pkg*{tabularray} 宏包的 \env{tblr} 环境生效,同时 \env{tblr} 也自带有 \option*{stretch} 选项设置行距。
@@ -445,7 +455,6 @@
 \label{subsec:other font}
 \begin{options}
   \keyval-{table-cap}{字体命令}\Module{subfont}\Default{\cs*{sffamily}\cs*{small}}
-  \change[2021-05-19]{2021-01-08}
   表格标题的字体设置,包括字体族、字体系列、字体尺寸和字体形状命令。
   \keyval-{figure-cap}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
   图片标题的字体设置,包括字体族、字体系列、字体尺寸和字体形状命令。
@@ -463,7 +472,6 @@
 \label{subsec:reference}
 \begin{options}
   \keychoice{backend}{bibtex,biblatex}\Module{bibset}\Default{bibtex}
-  \change[2021-06-13]{2021-01-11}
   参考文献处理后端,默认用传统的 \hologo{BibTeX} 处理参考文献\footnote{使用 \hologo{BibTeX} 引擎时加载 \pkg*{natbib} 宏包,使用 \hologo{biber} 时将加载 \pkg*{biblatex} 宏包。}。
   \keychoice{bib-style}{numerical,authoryear,其它格式}\Default{numerical}
   参考文献格式为中国的参考文献推荐标准 GB/T 7714-2015,有顺序编码制和著者-出版年制两种风格,理工科类一般使用顺序编码制,文科类一般使用著者-出版年制。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \code{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg*{biblatex} 宏包支持的参考文献风格名称。
@@ -476,11 +484,8 @@
 \subsubsection{配置参考文献}
 \begin{commands}
   \command{printbibliography}[\oarg{键值列表}]
-  \change[2021-04-09]{2021-01-11}
   两种方式\textbf{均使用}此命令打印参考文献,不同处理后端此命令的 \meta{键值列表} 不同。使用 \hologo{BibTeX} 处理时选项与节 \ref{sec:document command} 目录的选项相同,使用 \hologo{biber} 处理时常用的选项如下:
-\end{commands}
-
-\begin{options}
+  \begin{options}
   \keychoice*{heading}{bibliography,subbibliography,bibintoc,subbibintoc}\Default{bibintoc}
   参考文献通常有一个章标题或者节标题,该选项选择由 \cs*{defbibheading} 定义的标题名。
   \keyval*-{title}{参考文献标题名}\Default
@@ -493,7 +498,8 @@
   指定条目的打印类型。
   \keyval*-{filter}{过滤器名}\Default
   使用由 \cs*{defbibfilter} 定义的 \option*{filter} 来过滤条目。
-\end{options}
+  \end{options}
+\end{commands}
 
 可能一些情况下您希望更加灵活地设置参考文献或有更多需求,下面举一个在导言区手动配置 \pkg*{biblatex} 宏包的例子:
 \begin{ctexexam}
@@ -507,12 +513,11 @@
 \label{subsec:theorem of style}
 \begin{options}
   \keybool{thmbox}\Module{thmset}\Default{false}
-  \change[2021-07-01]{2021-01-12}
   开启定理环境盒子的边框,需载入 \pkg*{tcolorbox} 宏包才生效。这个选项与 \pkg*{thmtools} 中并不一致,\pkg*{thmtools} 的同名选项包括 \code{L}、\code{M} 和 \code{S} 三个参数。
   \keychoice{within}{chapter,section,其它环境,空置}\Default{chapter}
-  定理编号跟随的计数器,默认跟随章的编号,也可以跟随其它定理环境的编号,当计数器增加时定理编号会从零开始,空置时不跟随其它计数器。
+  定理编号跟随的计数器,默认跟随章的编号,也可以跟随其它定理环境的编号,当计数器增加时定理编号会从零开始,空置时不跟随其它计数器编号。
   \keyval-{headpunct}{字体命令}\Default{false}
-  定理标题末尾后的标记,在换行符或第一段内容的间隔之前。
+  定理标题末尾后的标记,在换行符或与第一段内容的间隔之前。
   \keyval-{bodyfont}{字体命令}\Default{chapter}
   定理内容部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
   \keyval-{notefont}{字体命令}\Default
@@ -537,24 +542,23 @@
 文档类已预置 8 个定理环境,环境名及对应的定理标题名见小节 \ref{subsec:theorem},如果需要新的定理标题名或定理样式可使用这三个命令,由 \pkg*{thmtools} 提供支持。
 \begin{commands}
   \command{declaretheorem}[\oarg{键值列表1}\marg{定理环境名}\oarg{键值列表2}]
-  \change[2021-07-13]{2021-01-12}
-  定义新的定理类环境,\cs{newtheorem} 命令与它等效。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与它们的同名命令一致。\meta{键值列表} 中常用的选项如下:
+  声明新的定理环境命令,\cs{newtheorem} 命令与它等效。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与它们的同名命令一致。\meta{键值列表} 中常用的选项如下:
   \begin{options}
-  \keyval*-{name}{定理环境标题}
+  \keyval*-{name}{定理环境标题}\Default
   定理标题的默认值是环境的名称,并且首字母大写(英文标题)。
-  \keychoice*{numbered}{no,yes,unless unique}
+  \keychoice*{numbered}{no,yes,unless unique}\Default
   定理可以被编号、不被编号或者只有在文档中多次出现时才被编号。
-  \keyval*-{numberlike}{定理环境名}
+  \keyval*-{numberlike}{定理环境名}\Default
   定理将使用此计数器进行编号,通常这是另一个定理环境的名称。
-  \keyval*-{style}{定理样式名}
-  用 \cs{declaretheoremstyle} 定义的定理样式的名称,定理将使用这种样式的设置。
+  \keyval*-{style}{定理样式名}\Default
+  选项的值为 \cs{declaretheoremstyle} 新定义的 \meta{定理样式名} 或预置的 \code{easy-theorem} 定理样式,定理将使用这种样式的设置。
   \end{options}
-  \command{DeclareTheorem}[\marg{定理环境名}\oarg{英文标题}\marg{中文标题}\darg{盒子样式}\oarg{键值列表}]
-  \cs{DeclareTheorem} 是更便捷的定理命令,它定义一个新的定理环境,与 \cs{declaretheorem} 命令 \meta{键值列表} 支持的选项相同,但它们的区别有:
+  \command{DeclareTheorem}[\marg{环境名}\oarg{英文标题}\marg{中文标题}\darg{盒子风格}\oarg{键值列表}]
+  定理声明命令 \cs{DeclareTheorem} 更加便捷,它定义一个新的定理环境,与 \cs{declaretheorem} 命令 \meta{键值列表} 支持的选项相同,但它们的区别有:
   \begin{itemize}
-  \item 中英文模式下标题不同,英文标题为可选项,默认为首字母大写的环境名。
-  \item 自动定义交叉引用的格式,引用标签前缀为定理名称。
-  \item 定理盒子选项 \option{thmbox} 仍然生效,盒子样式选项是用于设置定理盒子样式的名称,它需要 \pkg*{tcolorbox} 的 \cs*{tcbset} 接口命令或 \cs{tcbappstyle} 设定,默认为 \code{tc-theorem}。
+  \item 中英文模式下标题不同,英文标题为可选项,默认为首字母大写的 \meta{环境名}。
+  \item 自动定义交叉引用的格式,引用标签前缀为定理标题名称。
+  \item 定理盒子选项 \keyis-{thmbox}{true} 仍然生效,此时 \meta{盒子风格} 用于设置定理盒子风格的名称,它需要 \pkg*{tcolorbox} 的 \cs*{tcbset} 接口命令或 \cs{tcbappstyle} 设定,默认为 \code{tc-theorem}。
   \item 默认使用 \code{easy-theorem} 定理样式,可在最后一个选项使用 \option*{style} 更改样式。
   \end{itemize}
   \command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式名}\oarg{键值列表2}]
@@ -561,13 +565,13 @@
   定义新的定理样式,\meta{键值列表} 中包括上述定理样式以及 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与它们的同名命令一致。
 \end{commands}
 
-下面简单列举定理命令的用法,预置定理的样式为 \code{easy-theorem},上述定理样式选项将对这个定理样式生效。如果使用这个样式而只是增加新的定理名称,可以这样:
+下面简单列举定理命令的用法,预置定理的样式为 \code{easy-theorem},上述定理样式选项将仅对这个定理样式生效。如果使用这个样式增加新的定理环境可以这样:
 \begin{ctexexam}
   \DeclareTheorem{定理环境名}{中文标题}[style = easy-theorem]
   \declaretheorem[style = easy-theorem,name = 定理名]{定理环境名}
 \end{ctexexam}
 
-\cs{declaretheorem} 定义的定理环境需要手动增加盒子边框:
+命令 \cs{declaretheorem} 定义的定理环境需要手动增加盒子边框:
 \begin{ctexexam}
   \tcolorboxenvironment{定理环境名}{tc-theorem}
 \end{ctexexam}
@@ -588,7 +592,6 @@
 \begin{options}\noitemsep
   \keyval-{headruleskip}{页眉线间距}\Module{geoset}\Default*
   \keyval-{footruleskip}{页脚线间距}\Default*
-  \change[2021-06-02]{2021-01-13}
   \keyval*-{left}{页面左边距}\Default*{3.17cm}
   \keyval*-{top}{页面上边距}\Default*{2.54cm}
   \keyval*-{hmargin}{左边距,右边距}\Default*
@@ -609,30 +612,29 @@
 
 \subsection{页眉页脚}
 \label{subsec:header and footer}
-\module*{hdrset} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。在 \cls*{book} 模式时使用章节页眉标志内容选项 \option{chap-mark} 和 \option{sec-mark},在 \cls*{article} 模式时使用 \option{sec-mark} 和 \option{subsec-mark} 选项,这与标准文档类的行为一致,标志内容中参数 \code{\#1} 代表当前章、节或小节的标题。也可以直接重新定义这些标志命令,但此时 \module*{style/}\option{uppercase} 选项失效,这时可以用例如 \cs*{MakeUppercase} 命令来设置标志内容的大小写。
+模块 \module*{hdrset} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。在 \cls*{book} 模式时使用章节页眉标志内容选项 \option{chap-mark} 和 \option{sec-mark},在 \cls*{article} 模式时使用 \option{sec-mark} 和 \option{subsec-mark} 选项,这与标准文档类的行为一致,标志内容中参数 \code{\#1} 代表当前章、节或小节的标题。也可以直接重新定义这些选项对应的标题标记命令,但此时 \module*{style/}\option{uppercase} 选项失效,这时可以用例如 \cs*{MakeUppercase} 命令来设置标志内容的大小写。
 \begin{options}
   \keyval-{head-foot}{页眉页脚代码}\Module{hdrset}
-  \change[2021-06-14]{2021-01-13}
   设置页眉页脚的格式,使用 \pkg*{fancyhdr} 支持的 \cs*{fancyhead} 和 \cs*{fancyhead} 等命令,或在正文中使用这些命令改变其后的页面风格。
   \keyval-{chap-mark}{标题标记}
-  \cs*{chaptermark} 标题标记命令的内容,包括了标签选项 \option{chap-label} 的内容。
+  标题标记命令 \cs*{chaptermark} 的内容,包括了标签选项 \option{chap-label} 的内容。
   \keyval-{sec-mark}{标题标记}
-  \cs*{sectionmark} 标题标记命令的内容,包括了标签选项 \option{sec-label} 的内容。
+  标题标记命令 \cs*{sectionmark} 的内容,包括了标签选项 \option{sec-label} 的内容。
   \keyval-{subsec-mark}{标题标记}
-  \cs*{subsectionmark} 标题标记命令的内容,包括了标签选项 \option{subsec-label} 的内容。
+  标题标记命令 \cs*{subsectionmark} 的内容,包括了标签选项 \option{subsec-label} 的内容。
   \kvsplit-{chap-label}{\oarg{编号}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
-  \cs*{chaptermark} 标题标记命令内容的标签,比标记命令内容选项更常用,可选参数是页眉的标题编号形式,必选参数是编号与标题之间的距离命令:
+  标题标记命令 \cs*{chaptermark} 内容的标签,比标记命令内容选项更常用,可选参数是页眉的标题编号形式,必选参数是编号与标题之间的距离命令:
   \begin{ctexexam}
   \hdrset
     {
       chap-label  = [\thechapter]{\hspace{1em}},
-      sec-mark    = C\TeXifname{C\TeXthesection——}{}#1
+      sec-mark    = \CTEXifname{\CTEXthesection——}{}#1
     }
   \end{ctexexam}
   \kvsplit-{sec-label}{\oarg{编号}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
-  \cs*{sectionmark} 标题标记命令内容的标签,用法与 \option{chap-label} 类似。
+  标题标记命令 \cs*{sectionmark} 内容的标签,用法与 \option{chap-label} 类似。
   \kvsplit-{subsec-label}{\oarg{编号}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
-  \cs*{subsectionmark} 标题标记命令内容的标签,用法与 \option{chap-label} 类似。
+  标题标记命令内容 \cs*{subsectionmark} 的标签,用法与 \option{chap-label} 类似。
   \keyval-{headrule}{横线命令}
   绘制页眉横线的选项,可以使用 \cs*{hrule}、\cs*{rule} 或下述 \cs{markrule} 等画线命令来绘制横线。手动绘制横线时线条粗细选项 \code{style/rulewidth} 会失效。
   \keyval-{footrule}{横线命令}\Default
@@ -643,7 +645,6 @@
 
 \begin{commands}\noitemsep
   \command{easyhead}[\oarg{位置}\marg{内容}]\default{}
-  \change[2021-07-25]{2021-01-13}
   \command{easyfoot}[\oarg{位置}\marg{内容}]
   命令 \cs{easyhead} 和 \cs{easyfoot} 的使用方法与 \cs{fancyhead} 和 \cs{fancyfoot} 完全相同,它们需要在 \option{head-foot} 选项中使用,设置的是一个名为 \code{fancy} 的页面风格。\pkg*{fancyhdr} 将页眉页脚分成了左中右和奇数页(odd)、偶数页(even)共 12 个部分,可选参数中 \code{E} 和 \code{O} 代表偶数和奇数,\code{L}、\code{C} 和 \code{R} 代表左、中和右部分。单面打印时,含有偶数位置的命令无效。
 \end{commands}
@@ -651,12 +652,12 @@
 \begin{commands}\noitemsep
   \command*{markboth}[\marg{左页页眉内容}\marg{右页页眉内容}]\default{}
   \command*{markright}[\marg{右页页眉内容}]
-  \cs*{markboth} 和 \cs*{markright} 这两个命令用于手动设置页眉内容,一般紧随标题命令,特殊情况下可以使用它们得到需要的页眉标志。上述标志命令内容的选项便是基于这两个命令。如果是单面排版,则 \meta{左页页眉内容} 无效。
+  命令 \cs*{markboth} 和 \cs*{markright} 用于手动设置当前页页眉标记,一般紧随标题命令,特殊情况下可以使用它们得到需要的页眉标志。上述标记命令内容的选项便是基于这两个命令。如果是单面打印,则 \meta{左页页眉内容} 无效。
 \end{commands}
 
 \begin{commands}
   \command{markrule}[\oarg{长度}\darg{颜色名}\marg{线宽}\spemcoarg{上间距,下间距}]
-  命令 \cs{markrule} 用于绘制页眉页脚横线,\meta{长度} 默认为页面文本区的宽度,上下间距为横线与上下方部件的间距,带有长度单位,间距长度之间用 \code{!} 号分开,若只有一部分则表示 \meta{上间距},这个命令也可以在正文中绘制横线。下面举一个设置页眉内容的例子:
+  命令 \cs{markrule} 既可在 \meta{横线命令} 中用于绘制页眉页脚横线,也可以在正文中使用。\meta{长度} 默认为页面文本区的宽度,上下间距为横线与上下方部件的间距,带有长度单位,间距长度之间用 \code{!} 号分开,若只有一部分则表示 \meta{上间距}。下面举一个设置页眉内容的例子:
   \begin{ctexexam}
   \hdrset
     {
@@ -674,7 +675,6 @@
 \subsubsection{脚注格式}
 \begin{options}
   \keyval-{fnmargin}{刚性长度}\Module{hdrset}\Default{0.75em}
-  \change[2021-07-14]{2021-05-12}\
   脚注首段缩进距离,等于长度 \cs{footnoteindent} 的值.
   \keyval-{fnparskip}{弹性长度}\Default{0ex}
   脚注段落间距,等于长度 \cs{footparskip} 的值。
@@ -688,39 +688,47 @@
   \end{ctexexam}
   \keychoice{fnmark-pos}{normal,super}\Default{super}
   设置脚注编号的位置,正常文本或是上标形式。
-  \keychoice{fnmark-num}{plain,pifont,pifont*,pifont-sans,pifont-sans*}\Default{plain}
-  脚注编号的格式,默认为原生样式 \code{plain},还可以改为 \code{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括 1-10。
-  \keyval-{fnmark-form}{格式代码}\Default{格式代码}
+  \keychoice{fnmark-num}{plain,pifont,pifont*,pifont-sans,pifont-sans*,短编号}\Default{plain}
+  脚注正文标记编号的格式,默认为原生样式 \code{plain},还可以改为 \code{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括 1-10。
+
+  短编号的形式与列表环境类似,不过增加了一个中文数字格式参数 \code{c}。原生样式 \code{plain} 等同于单独使用数字 \code{1} 参数。这个选项可以用在正文中改变其后脚注编号格式。
+  \begin{ctexexam}
+  \hdrset{fnmark-num = 1} % 等于编号格式plain
+  \hdrset{fnmark-num = (a)}
+  \end{ctexexam}
+  \keychoice{fntext-num}{plain,pifont,pifont*,pifont-sans,pifont-sans*,短编号}\Default{plain}
+  脚注内容标记编号的格式,用法与 \option{fnmark-num} 一样,所以脚注内容与正文标记编号格式\textbf{可以不同}。
+  \keychoice{fnboth-num}{plain,pifont,pifont*,pifont-sans,pifont-sans*,短编号}\Default{plain}
+  同时设定脚注正文标记编号 \option{fnmark-num} 与脚注内容标记编号 \option{fntext-num} 的格式。目前脚注编号格式选项对于迷你页环境 \env*{minipage} 无效,其中的脚注保持默认英文字母的编号形式。
+  \keyval-{fnmark-form}{格式代码}\Default
   脚注标记的格式,在此设置字体命令会覆盖 \module*{subfont/}\option{footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注标记,一般配合 \keyis-{fnmark-num}{plain} 使用。
-  \keyval-{fntext-form}{格式代码}\Default{格式代码}
+  \keyval-{fntext-form}{格式代码}\Default
   脚注内容的格式,在此设置字体命令会覆盖 \module*{subfont/}\option{footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注内容。
-  \keyval-{afterfnmark}{格式代码}\Default{格式代码}
-  脚注标记后的代码,由于脚注标记处于水平盒子中,它一般用于设置标记与文本间的距离。
+  \kvsplit{fnmark-code}{前代码,后代码}\newline
+  脚注内容标记前后增加代码可以用 \meta{前代码} 与 \meta{后代码},也可以只有前部分,这两部分代码只对页面下方的标记有效。由于脚注标记处于水平模式,一般在脚注类型为 \keyis-{footnotetype}{default} 时在标记与其后脚注段落间插入距离代码,或与正文中的标记稍有不同。
 \end{options}
 
 \subsection{目录样式}
 \label{subsec:catalog style}
-\module*{tocset} 将目录样式交给 \pkg*{titletoc} 处理,\code{level} 代表 \code{part}、\code{chapter}、\code{section}、\code{subsection}、\code{figure}、\code{table} 和 \code{lstlisting} 级别的目录,而使用 \code{list} 级别可以统一设置图片、表格和代码目录的样式。
+模块 \module*{tocset} 将目录样式交给 \pkg*{titletoc} 处理,\code{level} 代表 \code{part}、\code{chapter}、\code{section}、\code{subsection}、\code{figure}、\code{table} 和 \code{lstlisting} 级别的目录,而使用 \code{list} 级别可以统一设置图片、表格和代码目录的样式。
 \begin{options}
   \keyval-{format}{目录标题格式}\Module{/(level)}
-  \change[2021-05-14]{2021-01-13}
-  目录中标题的格式,可以设置字体和加入垂直间距等,垂直间距最好使用无间距重合的 \cs*{addvspace} 命令。
+  各级别目录中标题的格式,可以设置字体和加入垂直间距等,垂直间距最好使用防止垂直间距重合的 \cs*{addvspace} 命令。
   \keyval-{format+}{目录标题格式}
-  与 \option{format} 用法一样,在已有的格式命令后附加内容。
+  与 \option{format} 用法一样,只是在已有的格式命令后附加代码。
   \keyval-{indent}{刚性长度}
-  目录中的标题左边缩进距离,通常标题级别越低缩进越大。
+  各级别目录中的标题左边缩进距离,通常标题级别越低缩进越大。
   \keyval-{rule}{目录引导线样式}
-  \option{rule} 选项中一般应当使用 \cs{tocrule} 命令,将会在接下来介绍。
+  引导线选项 \option{rule} 中一般应当使用 \cs{tocrule} 命令绘制引导线,将会在接下来介绍。
   \keyval-{numsep}{刚性长度}\Default{1em}
-  有编号的标题在目录中编号与标题的间距,默认距离统一为 \code{1em}。
+  有编号的标题在各级别目录中编号与标题的间距,默认距离统一为 \code{1em}。
 \end{options}
 
 \begin{commands}
-  \command{tocrule}[\sarg\oarg{引导点间距}\parg{引导点大小}\marg{引导点}\oarg{页码格式}]
-  \change[2021-06-11]{2021-01-13}
-  \cs{tocrule} 命令生成目录引导线,需要在 \option{rule} 选项中使用。带有星号的命令会使当前级别的目录引导线右边与页码连接而不是对齐。引导点间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \cs*{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体和距离等,最后一个格式命令可以带有一个参数,这个参数接受页码编号。
+  \command{tocrule}[\sarg\oarg{引导点间距}\darg{引导点大小}\marg{引导点}\oarg{页码格式}]
+  目录命令 \cs{tocrule} 生成目录引导线,需要在 \meta{目录引导线样式} 中使用。带有星号的命令会使当前级别的目录引导线右边与页码相连而不是对齐。\meta{引导点间距} 需带有长度单位,\meta{引导点大小} 不带单位,为 \meta{引导点} 的放大因子,\meta{引导点} 一般为英文句号或 \cs*{cdot} 中心点符号。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数,这个参数为页码编号。
   \command*{CTEXnumberline}[\marg{编号级别}]
-  \cs*{CTEXnumberline} 命令用于在 C\TeX 文档类的 \option*{tocline} 选项中设置目录标签的编号,它已经被重新定义,使得目录编号后间距选项 \option{numsep} 仍然有效。\meta{编号级别} 为 \code{chapter} 和 \code{section} 等,也可用参数 \code{\#1} 代替当前级别类型,标题名用参数 \code{\#2} 代替一般不变。
+  目录命令 \cs*{CTEXnumberline} 用于在 C\TeX 文档类的 \option*{tocline} 选项中设置目录标签的编号,它已经被重新定义,使得目录编号后间距选项 \option{numsep} 仍然有效。\meta{编号级别} 为 \code{chapter} 和 \code{section} 等,也可用参数 \code{\#1} 代替当前级别类型,标题名用参数 \code{\#2} 代替一般不变。
   \begin{ctexexam}
   \tocset
     {
@@ -738,9 +746,8 @@
   \keyval-{belowoffset}{长度}\Module{tocset}\Default{-1pc}
   主文档目录标题下方的间距补偿,一般为负值,用于抵消 \option{format} 中额外的垂直间距。
   \keyval-{belowoffset}{长度}\Module{/(level)}\Default{0pc}
-  与之上面选项的意义类似,代表 \code{figure}、\code{table} 和 \code{lstlisting} 三个级别,也可以使用 \code{list} 统一设置,一般为正值。
+  \code{level} 代表 \code{figure}、\code{table} 和 \code{lstlisting} 三个级别目录标题下方间距补偿,也可以使用 \code{list} 统一设置,一般为正值。这个距离也可以用 C\TeX 标题下方距离选项修改。
   \keyval-{lolskip}{长度}\Module{tocset}\Default{0.8pc}
-  \change[2021-05-14]{2021-01-13}
   代码目录中章之间的代码标题的距离,与 C\TeX 的表格目录和图片目录中章之间的标题距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,它们的值均默认为 \code{0.8pc},在 \cls*{article} 模式中此选项失效。
   \keyval-{tocline-fig}{图片目录标签}
   图片目录标签,选项参数中 \code{\#1} 代表编号,还可包含标签名称,默认标签名称与图片题注名称一致。
@@ -757,11 +764,11 @@
     }
   \end{ctexexam}
   \keybool{line-align}\Default{true}
-  \option{line-align} 选项可以使目录引导线右边对齐并与页码保持一定间隙,否则会与页码连接。
+  引导线选项 \option{line-align} 可以使目录引导线右边对齐并与页码保持一定间隙,否则会与页码相连。
   \keybool{hang}\Default{false}
-  \option{hang} 选项使目录标题为悬挂缩进形式,缩进距离为编号及其与标题间距的长度,但此时目录编号会失去超链接。
+  悬挂缩进选项 \option{hang} 使目录标题为悬挂缩进形式,缩进距离为编号及其与标题间距的长度,但此时目录编号会失去超链接。
   \keyval-{numsep-all}{刚性长度}\Default{1em}
-  统一设置所有有编号的标题在目录中编号与标题的间距。
+  统一设置所有级别有编号的标题在目录中编号与标题的间距。
   \keyval-{indent-all}{刚性长度}
   统一设置所有级别的目录标题左边缩进。
   \keyval-{rule-all}{目录引导线样式}
@@ -810,11 +817,12 @@
   \environment*{enumerate}[\oarg{键值列表}]\default{}
   \environment*{itemize}[\oarg{键值列表}]\default{}
   \environment*{description}[\oarg{键值列表}]
-  已为三种列表预置了三个级别,同种列表或不同种列表间的不同级别可相互嵌套,可以使用短编号的形式,带有星号的环境为行内列表。默认列表标签与标准文档类一致,下面举几个更改列表标签以及其它格式的例子:
+  已为三种列表各自预置了三个级别,同种列表或不同种列表间的不同级别可相互嵌套,可以使用短编号的形式,带有星号的环境为行内列表。默认列表标签与标准文档类一致,下面举几个更改列表标签以及其它格式的例子:
   \begin{ctexexam}
   \setlist{nosep} % 取消所有列表额外的垂直间距
   \begin{enumerate}[label = \arabic*(a),leftmargin = 1cm,resume]
-  \begin{itemize}[label = \textbullet]
+  \begin{enumerate}[(1)] % 短编号形式
+  \begin{itemize}[label = \textbullet,labelsep = *]
   \begin{description}[font = \sffamily\bfseries,style = nextline]
   \end{ctexexam}
 \end{environments}
@@ -834,7 +842,7 @@
   \begin{center}
   \begin{tabular}{*{8}{c}}
   \toprule
-  theorem & definition & lemma & corollary & proposition & example & remark & proof \\
+  \env{theorem} & \env{definition} & \env{lemma} & \env{corollary} & \env{proposition} & \env{example} & \env{remark} & \env{proof} \\
   定理 & 定义 & 引理 & 推论& 性质 & 例 & 注 & 证明 \\
   \bottomrule
   \end{tabular}
@@ -842,11 +850,11 @@
 \end{environments}
 
 \subsection{悬挂缩进}
-\change{2021-07-11}
 \begin{commands}
   \command{hangpara}[\marg{缩进长度}\marg{缩进开始行数}]
   悬挂缩进命令 \cs{hangpara} 使其后的一个段落保持悬挂缩进,参数与 \env{hangparas} 环境相同,不过只有一个段落。
 \end{commands}
+
 \begin{environments}
   \environment{hangparas}[\marg{缩进长度}\marg{缩进开始行数}]
   悬挂缩进环境 \env{hangparas} 有两个必选参数,使其中的段落均保持悬挂缩进。每个段落的缩进将以 \meta{缩进长度} 从 \meta{缩进开始行数} 开始。
@@ -858,14 +866,16 @@
   \command{lstinline}[\oarg{键值列表}\marg{行内代码}]
   行内代码抄录命令,较 \cs*{verb} 命令有较大改进,具有代码语言和样式支持。
 \end{commands}
+
 \begin{environments}
   \environment{lstlisting}[\oarg{键值列表}]
   行间代码抄录环境,支持多种语言库,默认使用 \code{LaTeX} 代码语言,使用可选参数局部设置代码格式。
 \end{environments}
+
 \begin{options}\noitemsep
   \keyval-{lstlistlistingname}{代码目录标题名}\default{}
   \keyval-{lstlistingname}{代码题注标题名}
-  \option*{lstlistlistingname} 和 \option*{lstlistingname} 分别是代码目录名与代码环境题注名,与 C\TeX 使用手册标题汉化一节类似,可使用 \cs*{ctexset} 接口命令直接修改。
+  代码目录名与代码环境题注名选项 \option*{lstlistlistingname} 和 \option*{lstlistingname} 用法与 C\TeX 使用手册标题汉化一节类似,可以看作对这节的扩展。
 \end{options}
 
 \subsection{习题}
@@ -872,7 +882,6 @@
 \label{subsec:exercise}
 \begin{environments}
   \environment{exercise}[\sarg\parg\oarg{键值列表1}\darg{键值列表2}\oarg{键值列表3}]
-  \change[2021-07-25]{2021-01-05}
   习题环境的标题使用 \cs*{tcbox} 行内盒子包装样式,内容则使用 \env{enumerate} 列表环境。它有 5 个可选参数,应当注意用法。当使用星号参数时标题不进行编号,使用 \parg{} 号参数时不使用预置标题,此时 \meta{键值列表1} 除了 \option{label} 选项失效。\par
 
   \meta{键值列表2} 包括 \pkg*{tcolorbox} 的盒子样式选项,例如 \option*{boxsep} 和 \option*{fontupper} 等,也可以使用下述 \option{tcolorbox} 选项。在这里可以使用 \cs{tcbappstyle} 命令设置标题选项 \meta{键值列表2} 的值,第一个参数为 \code{exercise}。
@@ -889,7 +898,7 @@
 
 \begin{commands}
   \command{setexercise}[\marg{键值列表1}]
-  \cs{setexercise} 命令用于全局设置上述习题环境 \env{exercise} 标题样式可选参数中 \meta{键值列表1} 的默认值,包含的选项如下:
+  配置命令 \cs{setexercise} 用于全局设置上述习题环境 \env{exercise} 标题样式可选参数中 \meta{键值列表1} 的默认值,包含的选项如下:
   \begin{options}
   \keyval-{color}{标题背景颜色名}\Default{DeepSkyBlue}
   习题标题盒子背景颜色,可以使用 \pkg*{xcolor} 自定义颜色或使用色库。
@@ -896,7 +905,7 @@
   \keyval-{title}{环境标题}\Default{习题}
   习题的标题,可以匹配中英文模式,习题环境使用 \parg{} 参数时无效。
   \keyval-{number}{习题编号格式}\Default{\Marg{1.}}
-  标题编号输出选项 \option{number} 为短编号形式,应当包含 A、a、I、i、或 1 其中一个符号。
+  标题编号输出选项 \option{number} 为短编号形式,应当包含 \code{A}、\code{a}、\code{I}、\code{i}、或 \code{1} 其中一个符号。
   \keyval-{numsep}{编号与标题的间距}\Default{0.5em}
   习题标题编号与后方标题文本的间距,习题环境使用星号参数时无效。
   \keyval-{tcolorbox}{键值列表2}
@@ -912,7 +921,7 @@
   \command{exerprologue}[\marg{序言内容}]
   序言命令 \cs{exerprologue} 在习题环境开始前插入一段内容,可以是文本或者代码,需要在每一个习题环境前使用。
   \command{tcphantomifname}[\marg{编号代码}\marg{不编号代码}]
-  \cs{tcphantomifname} 根据使用 \pkg*{tcolorbox} 生成的习题标题是否编号,在超链接锚点的位置加入代码,比如使用 \cs*{addcontentsline} 命令将习题标题加入目录。
+  命令 \cs{tcphantomifname} 根据使用 \pkg*{tcolorbox} 生成的习题标题是否编号,在超链接锚点的位置加入代码,比如使用 \cs*{addcontentsline} 命令将习题标题加入目录。
 \end{commands}
 
 \subsection{盒子}
@@ -921,7 +930,6 @@
 
 \begin{commands}
   \command{tcbappstyle}[\sarg\marg{风格名称}\marg{键值列表}]
-  \change{2021-07-25}
   这是一个 \pkg*{tcolorbox} 宏包盒子风格定义命令,带有星号的命令可以\textbf{新建或重置}一个名为 \code{tc-}\meta{风格名称} 的盒子风格,否则是修改\textbf{已存在}的风格。这个命令可以调整以下即将介绍的预置盒子风格,对于预置盒子来说参数 \meta{风格名称} 即为它们对应的环境或命令名。
   \begin{ctexexam}
   \tcbappstyle*{mytcb} % 新建一个盒子风格tc-mytcb
@@ -946,6 +954,7 @@
   \environment{outline}[\oarg{键值列表1}\darg{标题名称}\oarg{键值列表2}]
   摘要盒子 \env{outline} 可用于章前摘要,它的标题是可选参数,默认标题是摘要。\meta{键值列表2} 是摘要盒子样式选项,可以使用 \cs{tcbappstyle} 命令对它进行全局设置,命令第一个参数为 \code{outline}。
 \end{environments}
+
 \begin{commands}
   \command{setoutlinelist}[\marg{键值列表1}]
   \meta{键值列表1} 与 \pkg*{enumitem} 宏包中列表配置选项相同,可以设置摘要条目的各种距离,要对它进行全局设置可以使用 \cs{setoutlinelist} 命令。
@@ -992,9 +1001,9 @@
   \command*{unit}[\oarg{键值列表}\marg{单位}]
   单位格式化命令 \cs*{unit} 包含文字元素(例如字母或数字)时,使用 \Marg{.} 和 \code{\~{}} 放置在单元乘积中间,并使用 \code{\_} 和 \code{\^{}} 正确放置指定的下标和上标。格式化方法可在数学和文本模式下使用。
   \command*{qty}[\oarg{键值列表}\marg{数字}\oarg{前缀}\marg{单位}]
-  \cs*{qty} 命令可用来输出带有单位的量。
+  命令 \cs*{qty} 可用来输出带有单位的量。
   \command*{qtyrange}[\oarg{键值列表}\marg{数字1}\marg{数字2}\marg{单位}]
-  \cs*{qtyrange} 可以输出带有范围和单位的量。
+  命令 \cs*{qtyrange} 可以输出带有范围和单位的量。
   \begin{ctexexam}
   \numproduct{-21x3e5}
   \unit{mL~min^{-1}}
@@ -1007,17 +1016,16 @@
 \begin{commands}\noitemsep
   \command{newcounter}[\marg{计数器}\oarg{父计数器}]\default{}
   \command{UseCounter}[\sarg\oarg{父计数器}\darg{编号}\marg{计数器}\marg{内容}\oarg{分隔符}]
-  \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,\cs{UseCounter} 将会以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器}\meta{内容} 输出当前内容。
-  需要注意的是 \cs{UseCounter} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加 1,带有星号的命令使 \meta{计数器} 保持当前值,\meta{编号} 为 \code{arabic} 和 \code{alpha} 等格式,\meta{数值} 可以手动将 \meta{计数器} 设为指定值。
-\end{commands}
+  命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,命令 \cs{UseCounter} 以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器}\meta{内容} 输出当前内容。注意 \cs{UseCounter} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加 1,带有星号的命令使 \meta{计数器} 值保持不变,\meta{编号} 为 \code{arabic} 和 \code{alpha} 等格式,\meta{数值} 可以手动将 \meta{计数器} 设为指定值。
 
-在一定的场合下可能用到 \cs{UseCounter} 命令,比如通过新建快捷命令在一些位置使用定理环境的计数器,使用 \cs{labelformat} 设置计数器的引用标签需添加 \code{eb@}:
-\begin{ctexexam}
+  在一定的场合下可能用到 \cs{UseCounter} 命令,比如通过新建快捷命令在一些位置使用定理环境的计数器,使用 \cs{labelformat} 设置计数器的引用标签需添加 \code{eb@}:
+  \begin{ctexexam}
   \labelformat{eb at theorem}{定理 #1}
   \newcommand{\theoremhead}[1]
     {定理 \UseCounter[chapter]{theorem}{\hspace{1em}#1}}
   \theoremhead{定理标题}\label{thm:theorem}
-\end{ctexexam}
+  \end{ctexexam}
+\end{commands}
 
 \subsection{图表题注}
 \begin{commands}\noitemsep
@@ -1035,7 +1043,6 @@
 \end{commands}
 
 \subsection{公式符号对照}
-\change{2021-07-22}
 \begin{environments}
   \environment{eqcomp}[\oarg{键值列表1}\darg{键值列表2}]
   一些公式之后可以使用基于列表环境的 \env{eqcomp} 进行符号对照。对照列表的 \meta{键值列表2} 与 \pkg*{enumitem} 的选项相同,一般较少用到,可以用于设置垂直间距等。
@@ -1049,35 +1056,35 @@
   \command{seteqcomp}[\marg{键值列表1}]
   对照环境的 \meta{键值列表1} 可以使用 \cs{seteqcomp} 全局设置,它的选项如下:
   \begin{options}
-    \keyval-{width}{符号宽度}\Default{2em}
-    设置适当的符号宽度可以防止文字重叠和边界溢出等问题。
-    \keyval-{delim}{引导符}\Default{——}
-    符号对照的引导符,\cs{symb} 的 \meta{引导符} 和对齐方式是基于这个符号的宽度。
-    \keyval-{space}{符号间隙}\Default{0.25em}
-    符号间隙为引导符两侧与符号和说明文字间的距离。
-    \keychoice{item-align}{l,c,r}\Default{r}
-    符号的对齐方式,分为左(\code{l})、中(\code{c})和右(\code{r})三种对齐方式。
-    \keychoice{delim-align}{l,c,r}\Default{c}
-    引导符的对齐方式,分为左(\code{l})、中(\code{c})和右(\code{r})三种对齐方式。
-    \keyval-{enumitem}{键值列表2}
-    可以使用选项 \option{enumitem} 或命令 \cs{seteqcomplist} 调整对照列表的水平垂直间距。
-    \keyval-{intro}{首行文字}\Default
-    符号对照的说明文字,应当为简短的几个字,只显示在第一行,其后为悬挂缩进的对照列表。
-    \keyval-{font}{符号字体}\Default
-    符号的字体,数学和文本符号模式应采用不同的字体命令,最后一个命令可以接受一个参数,这个参数为符号。
-    \keychoice{mode}{math,text}\Default{math}
-    符号字体模式,可以为数学字体或者文本字体。
+  \keyval-{width}{符号宽度}\Default{2em}
+  设置适当的符号宽度可以防止文字重叠和边界溢出等问题。
+  \keyval-{delim}{引导符}\Default{——}
+  符号对照的引导符,\cs{symb} 的 \meta{引导符} 和对齐方式是基于这个符号的宽度。
+  \keyval-{space}{符号间隙}\Default{0.25em}
+  符号间隙为引导符两侧与符号和说明文字间的距离。
+  \keychoice{item-align}{l,c,r}\Default{r}
+  符号的对齐方式,分为左(\code{l})、中(\code{c})和右(\code{r})三种对齐方式。
+  \keychoice{delim-align}{l,c,r}\Default{c}
+  引导符的对齐方式,分为左(\code{l})、中(\code{c})和右(\code{r})三种对齐方式。
+  \keyval-{enumitem}{键值列表2}
+  可以使用选项 \option{enumitem} 或命令 \cs{seteqcomplist} 调整对照列表的水平垂直间距。
+  \keyval-{intro}{首行文字}\Default
+  符号对照的说明文字,应当为简短的几个字,只显示在第一行,其后为悬挂缩进的对照列表。
+  \keyval-{font}{符号字体}\Default
+  符号的字体,数学和文本符号模式应采用不同的字体命令,最后一个命令可以接受一个参数,这个参数为符号。
+  \keychoice{mode}{math,text}\Default{math}
+  符号字体模式,可以为数学字体或者文本字体。
   \end{options}
 \end{commands}
 
-\subsection{引用}
+\subsection{交叉引用}
 \begin{commands}
-  \command{ref}[\marg{标签}]
-  使用 \cs*{ref} 命令引用 \cs*{label} 设置的标签,将会检测临近计数器并添加相应的前缀,比如图表、章节标题和定理等。
-  \command{footref}[\marg{脚注标签}]
-  \cs{footref} 对自动编号的脚注进行引用,为上标形式与脚注标记一致。
+  \command*{ref}[\marg{标签名}]
+  使用 \cs*{ref} 命令引用 \cs*{label} 设置的 \meta{标签名},将会检测临近计数器并添加相应的前缀,比如图表、章节标题和定理等。
+  \command{footref}[\marg{脚注标签名}]
+  对自动编号的脚注进行引用可使用 \cs{footref} 命令,与引用的标记共享一个编号与格式。
   \command{labelformat}[\marg{计数器}\marg{标签引用格式}]
-  \cs{labelformat} 可以设置标签引用格式,第二个参数中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。
+  标签格式命令 \cs{labelformat} 可以设置引用标签格式,\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。
 \end{commands}
 
 \subsubsection{索引}
@@ -1107,6 +1114,8 @@
   命令 \cs{marginnote} 可以生成简单的边注,如果只给定了 \meta{右文本},那么边注在奇偶数页文字相同。如果同时给定了 \meta{左文本},则偶数页使用 \meta{左文本} 的文字。
 \end{commands}
 
+\appendix
+
 \section{依赖的宏包}
 以下为 \pkg*{easybase} 直接调用的关键宏包,方括号内为宏包已使用的选项。蓝色的宏包表示截至当前在 \TeX~Live 2021 中存在更新,旧版本并不影响使用。带有 \ding{81} 符号的宏包并未载入它们,仅做了一些预配置,可在导言区手动载入以实现相关的功能。
 \begin{description}[font = \normalfont\sffamily]

Modified: trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx	2021-08-01 20:36:01 UTC (rev 60135)
+++ trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx	2021-08-01 20:36:19 UTC (rev 60136)
@@ -8,7 +8,7 @@
 %<*class>
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/07/30}{1.28}
+\ProvidesExplClass{easybook}{2021/08/01}{1.28b}
   {Typeset Chinese theses or books}
 
 \bool_set_false:N \l__eb_compile_draft_bool
@@ -292,11 +292,10 @@
 %<*package>
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2021/07/30}{1.28}
+\ProvidesExplPackage{easybase}{2021/08/01}{1.28b}
   {Typeset Chinese theses or books}
 
 \cs_generate_variant:Nn \int_to_arabic:n { v }
-\cs_generate_variant:Nn \int_to_alph:n { v }
 \cs_generate_variant:Nn \dim_add:Nn { NV,Nv }
 \cs_generate_variant:Nn \dim_set:Nn { NV }
 \cs_generate_variant:Nn \prop_set_from_keyval:Nn { NV }
@@ -728,8 +727,6 @@
     \cs_if_exist:NF \kaishu { \cs_gset_eq:NN \kaishu \itshape }
   }
 
-\tl_new:N \l__eb_fnmark_number_choice_tl
-\bool_new:N \l__eb_fntext_bottom_bool
 \ctex_define:nn { style }
   {
     footwith .choices:nn        =
@@ -738,6 +735,73 @@
     footwith .value_required:n  = true,
     footwith .initial:n         = chapter
   }
+\NewDocumentCommand{\eb_assign_fnmark_code:n}
+  {>{\SplitArgument{1}{,}}m}
+  {\eb_assign_fnmark_code_pos:nn #1}
+\cs_new_protected:Npn \eb_assign_fnmark_code_pos:nn #1#2
+  {
+    \tl_set:Nn \l__eb_fnmark_before_tl {#1}
+    \tl_if_novalue:nTF {#2}
+      { \tl_clear:N \l__eb_fnmark_after_tl }
+      { \tl_set:Nn \l__eb_fnmark_after_tl {#2} }
+  }
+\cs_new:Npn \eb_fnmark_counter_pifont:N #1
+  { \ding{\int_eval:n { 171 + #1 }} }
+\cs_new:Npn \eb_fnmark_counter_pifont_neg:N #1
+  { \ding{\int_eval:n { 181 + #1 }} }
+\cs_new:Npn \eb_fnmark_counter_pifont_sans:N #1
+  { \ding{\int_eval:n { 191 + #1 }} }
+\cs_new:Npn \eb_fnmark_counter_pifont_sans_neg:N #1
+  { \ding{\int_eval:n { 201 + #1 }} }
+\cs_new:Npn \eb_int_format_trans:NN #1
+  {
+    \str_case:nn {#1}
+      {
+        { A } { \int_to_Alph:n }
+        { a } { \int_to_alph:n }
+        { 1 } { \int_to_arabic:n }
+        { I } { \int_to_Roman:n }
+        { i } { \int_to_roman:n }
+        { c } { \exp_args:NV \zhnumber }
+      }
+  }
+\cs_new_protected:Npn \eb_fnmark_normal_label_set:nn #1#2
+  {
+    \tl_set:Nn \l__eb_fnmark_number_type_tl {#1}
+    \cs_set:cpx {#2}
+      {
+        \str_case:VnT \l__eb_fnmark_number_type_tl
+          {
+            { plain }
+            { \exp_not:N \int_use:N }
+            { pifont }
+            { \exp_not:N \eb_fnmark_counter_pifont:N }
+            { pifont* }
+            { \exp_not:N \eb_fnmark_counter_pifont_neg:N }
+            { pifont-sans }
+            { \exp_not:N \eb_fnmark_counter_pifont_sans:N }
+            { pifont-sans* }
+            { \exp_not:N \eb_fnmark_counter_pifont_sans_neg:N }
+          }
+          { \exp_not:N \c at footnote }
+      }
+  }
+\cs_new_protected:Npn \eb_fnmark_shorter_label_set:nn #1#2
+  {
+    \tl_set:Nn \l__eb_fnmark_shorter_label_tl {#1}
+    \eb_clist_map_inline:nn
+      { A,a,1,I,i,c }
+      {
+        \tl_if_in:nnT {#1} {##1}
+          {
+            \tl_replace_once:Nnn \l__eb_fnmark_shorter_label_tl {##1}
+              { \eb_int_format_trans:NN ##1 \c at footnote }
+            \seq_map_break:
+          }
+      }
+    \cs_set_eq:cN {#2} \l__eb_fnmark_shorter_label_tl
+  }
+\bool_new:N \l__eb_fntext_bottom_bool
 \ctex_define:nn { hdrset }
   {
     fnmargin .dim_set:N             = \footnoteindent,
@@ -750,9 +814,9 @@
 
     fnmark-pos .tl_set:N            = \l__eb_fnmark_position_tl,
     fnmark-pos .initial:n           = super,
-    afterfnmark .tl_set:N           = \l__eb_fnmark_after_tl,
-    afterfnmark .initial:n          =
-      { \tl_if_eq:NnF \l__eb_fnmark_position_tl { super } { \space } },
+    fnmark-code .code:n             = \eb_assign_fnmark_code:n {#1},
+    fnmark-code .initial:n          =
+      { ,\tl_if_eq:NnF \l__eb_fnmark_position_tl { super } { \space } },
     fnmark-form .tl_set:N           = \l__eb_fnmark_format_tl,
 
     footnotetype .multichoices:nn   =
@@ -767,8 +831,18 @@
 
     fnmark-num .choices:nn          =
       { plain,pifont,pifont*,pifont-sans,pifont-sans* }
-      { \tl_set:Nn \l__eb_fnmark_number_choice_tl {#1} },
+      { \eb_fnmark_normal_label_set:nn {#1} { the at footnote } },
     fnmark-num .value_required:n    = true,
+    fnmark-num/unknown .code:n      =
+      { \eb_fnmark_shorter_label_set:nn {#1} { the at footnote } },
+    fntext-num .choices:nn          =
+      { plain,pifont,pifont*,pifont-sans,pifont-sans* }
+      { \eb_fnmark_normal_label_set:nn {#1} { thefootnote } },
+    fntext-num .value_required:n    = true,
+    fntext-num/unknown .code:n      =
+      { \eb_fnmark_shorter_label_set:nn {#1} { thefootnote } },
+    fnboth-num .meta:n = { fntext-num = #1,fnmark-num = #1 },
+    fnboth-num .initial:n           = plain,
 
     unknown .code:n = \eb_msg_unknown_option:n { hdrset }
   }
@@ -882,13 +956,47 @@
   }
 \ProvideDocumentCommand{\super}{mo}{\textsuperscript{#1}}
 \providecommand{\spb at textsuperscript@save}{\textsuperscript}
-\providecommand{\footref}[1]
+\cs_set_protected:Npn \footref #1
   {
     \group_begin:
-    \unrestored at protected@xdef\@thefnmark{\ref{#1}}
+    \unrestored at protected@xdef\eb at thefnmark{\ref{#1}}
     \group_end:
     \@footnotemark
   }
+\cs_set_protected:Npn \footnote
+  {
+    \@ifnextchar [
+      {\@xfootnote}
+      {
+        \exp_args:NV \stepcounter \@mpfn
+        \eb_current_label:n { @footnote }
+        \protected at xdef\@thefnmark{\thempfn}
+        \protected at xdef\eb at thefnmark{\the at footnote}
+        \@footnotemark
+        \@footnotetext
+      }
+  }
+\cs_set:Npn \footnotemark
+  {
+    \@ifnextchar [
+      {\@xfootnotemark}
+      {
+        \stepcounter{footnote}
+        \protected at xdef\eb at thefnmark{\the at footnote}
+        \@footnotemark
+      }
+  }
+\ctex_at_end_package:nn { hyperref }
+  {
+    \cs_set:Npn \@xfootnotemark [#1]
+      {
+        \group_begin:
+        \setcounter{footnote}{#1}
+        \unrestored at protected@xdef\eb at thefnmark{\the at footnote}
+        \group_end:
+        \@footnotemark
+      }
+  }
 \cs_set:Npn \@makefnmark
   {
     \hbox:n
@@ -895,7 +1003,11 @@
       {
         \tl_use:N \l__eb_subfont_footnote_tl
         \tl_use:N \l__eb_fnmark_format_tl
-          {\super{\@thefnmark}[0pt]}
+          {
+            \tl_if_eq:NnTF \@mpfn { footnote }
+              { \super{\eb at thefnmark}[0pt] }
+              { \super{\@thefnmark}[0pt] }
+          }
       }
   }
 \cs_new:Npn \eb at makefnmark
@@ -906,8 +1018,12 @@
         \tl_use:N \l__eb_fnmark_format_tl
           {
             \tl_if_eq:NnT \l__eb_fnmark_position_tl { super }
-              { \spb at textsuperscript@save }{\@thefnmark}
-            \tl_use:N \l__eb_fnmark_after_tl
+              { \spb at textsuperscript@save }
+              {
+                \tl_use:N \l__eb_fnmark_before_tl
+                \@thefnmark
+                \tl_use:N \l__eb_fnmark_after_tl
+              }
           }
       }
   }
@@ -924,30 +1040,8 @@
 \cs_new:Npn \Footnote #1 { \Footnotemark{#1}\@footnotetext }
 \cs_new:Npn \Footnotemark #1 { \eb@@makefnmark{#1}\@footnotemark }
 \cs_new:Npn \Footnotetext #1 { \eb@@makefnmark{#1}\@footnotetext }
-\cs_new:Npn \eb_fnmark_counter_pifont:N #1
-  { \ding{\int_eval:n { 171 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_neg:N #1
-  { \ding{\int_eval:n { 181 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_sans:N #1
-  { \ding{\int_eval:n { 191 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_sans_neg:N #1
-  { \ding{\int_eval:n { 201 + #1 }} }
-\cs_new:Npn \eb_footnote_counter:N #1
-  {
-    \str_case:VnF \l__eb_fnmark_number_choice_tl
-      {
-        { plain } { \int_use:N #1 }
-        { pifont } { \eb_fnmark_counter_pifont:N #1 }
-        { pifont* } { \eb_fnmark_counter_pifont_neg:N #1 }
-        { pifont-sans } { \eb_fnmark_counter_pifont_sans:N #1 }
-        { pifont-sans* } { \eb_fnmark_counter_pifont_sans_neg:N #1 }
-      }
-      { \int_use:N #1 }
-  }
-\cs_new:Npn \eb_alph:n #1 { \int_to_alph:v { c@#1 } }
-\cs_set:Npn \thefootnote { \eb_footnote_counter:N \c at footnote }
-\cs_set:Npn \thempfootnote { \eb_alph:n { mpfootnote } }
 \cs_new:Npn \eb at footmisc@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi }
+\cs_set:Npn \thempfootnote { \int_to_alph:n { \c at mpfootnote } }
 
 \contentsuse{lstlisting}{lol}
 \seq_put_left:Nn  \c__ctex_headings_seq { chapter }
@@ -1191,11 +1285,10 @@
     \tl_remove_once:cn { theeb@#4 } {#5}
     \eb_current_label:n { eb@#4 }
   }
-\cs_new:Npn \eb_arabic:n #1 { \int_to_arabic:v { c@#1 } }
 \cs_new:Npn \eb_section_counter_prefix:n #1
   {
     \int_compare:nNnT { \c at chapter } > { 0 } { \use:c { the#1chapter }. }
-    \eb_arabic:n { #1section }
+    \int_to_arabic:v { c@#1section }
   }
 \cs_set:Npn \thebichapter { \eb_arabic:n { bichapter } }
 \cs_set:Npn \thebisection { \eb_section_counter_prefix:n { bi } }
@@ -2147,7 +2240,10 @@
         \clist_map_inline:nn { page,none }
           {
             \tl_if_eq:NnT \l_keys_value_tl {##1}
-              { \clist_map_break:n { \colorlet{ctex at toc@number}{black} } }
+              {
+                \colorlet{ctex at toc@number}{black}
+                \clist_map_break:
+              }
           }
       },
     linktoc .default:n      = all,
@@ -2256,7 +2352,7 @@
   }
 %</package>
 %<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2021/07/30}{1.28}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2021/08/01}{1.28b}
   {Customization of tcolorbox for easybook}
 
 \tl_gset:Nn \eb at tc@line at skip { 0.5\baselineskip }

Modified: trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty	2021-08-01 20:36:01 UTC (rev 60135)
+++ trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty	2021-08-01 20:36:19 UTC (rev 60136)
@@ -13,11 +13,10 @@
 %%   https://creativecommons.org/licenses/by/4.0/legalcode
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2021/07/30}{1.28}
+\ProvidesExplPackage{easybase}{2021/08/01}{1.28b}
   {Typeset Chinese theses or books}
 
 \cs_generate_variant:Nn \int_to_arabic:n { v }
-\cs_generate_variant:Nn \int_to_alph:n { v }
 \cs_generate_variant:Nn \dim_add:Nn { NV,Nv }
 \cs_generate_variant:Nn \dim_set:Nn { NV }
 \cs_generate_variant:Nn \prop_set_from_keyval:Nn { NV }
@@ -449,8 +448,6 @@
     \cs_if_exist:NF \kaishu { \cs_gset_eq:NN \kaishu \itshape }
   }
 
-\tl_new:N \l__eb_fnmark_number_choice_tl
-\bool_new:N \l__eb_fntext_bottom_bool
 \ctex_define:nn { style }
   {
     footwith .choices:nn        =
@@ -459,6 +456,73 @@
     footwith .value_required:n  = true,
     footwith .initial:n         = chapter
   }
+\NewDocumentCommand{\eb_assign_fnmark_code:n}
+  {>{\SplitArgument{1}{,}}m}
+  {\eb_assign_fnmark_code_pos:nn #1}
+\cs_new_protected:Npn \eb_assign_fnmark_code_pos:nn #1#2
+  {
+    \tl_set:Nn \l__eb_fnmark_before_tl {#1}
+    \tl_if_novalue:nTF {#2}
+      { \tl_clear:N \l__eb_fnmark_after_tl }
+      { \tl_set:Nn \l__eb_fnmark_after_tl {#2} }
+  }
+\cs_new:Npn \eb_fnmark_counter_pifont:N #1
+  { \ding{\int_eval:n { 171 + #1 }} }
+\cs_new:Npn \eb_fnmark_counter_pifont_neg:N #1
+  { \ding{\int_eval:n { 181 + #1 }} }
+\cs_new:Npn \eb_fnmark_counter_pifont_sans:N #1
+  { \ding{\int_eval:n { 191 + #1 }} }
+\cs_new:Npn \eb_fnmark_counter_pifont_sans_neg:N #1
+  { \ding{\int_eval:n { 201 + #1 }} }
+\cs_new:Npn \eb_int_format_trans:NN #1
+  {
+    \str_case:nn {#1}
+      {
+        { A } { \int_to_Alph:n }
+        { a } { \int_to_alph:n }
+        { 1 } { \int_to_arabic:n }
+        { I } { \int_to_Roman:n }
+        { i } { \int_to_roman:n }
+        { c } { \exp_args:NV \zhnumber }
+      }
+  }
+\cs_new_protected:Npn \eb_fnmark_normal_label_set:nn #1#2
+  {
+    \tl_set:Nn \l__eb_fnmark_number_type_tl {#1}
+    \cs_set:cpx {#2}
+      {
+        \str_case:VnT \l__eb_fnmark_number_type_tl
+          {
+            { plain }
+            { \exp_not:N \int_use:N }
+            { pifont }
+            { \exp_not:N \eb_fnmark_counter_pifont:N }
+            { pifont* }
+            { \exp_not:N \eb_fnmark_counter_pifont_neg:N }
+            { pifont-sans }
+            { \exp_not:N \eb_fnmark_counter_pifont_sans:N }
+            { pifont-sans* }
+            { \exp_not:N \eb_fnmark_counter_pifont_sans_neg:N }
+          }
+          { \exp_not:N \c at footnote }
+      }
+  }
+\cs_new_protected:Npn \eb_fnmark_shorter_label_set:nn #1#2
+  {
+    \tl_set:Nn \l__eb_fnmark_shorter_label_tl {#1}
+    \eb_clist_map_inline:nn
+      { A,a,1,I,i,c }
+      {
+        \tl_if_in:nnT {#1} {##1}
+          {
+            \tl_replace_once:Nnn \l__eb_fnmark_shorter_label_tl {##1}
+              { \eb_int_format_trans:NN ##1 \c at footnote }
+            \seq_map_break:
+          }
+      }
+    \cs_set_eq:cN {#2} \l__eb_fnmark_shorter_label_tl
+  }
+\bool_new:N \l__eb_fntext_bottom_bool
 \ctex_define:nn { hdrset }
   {
     fnmargin .dim_set:N             = \footnoteindent,
@@ -471,9 +535,9 @@
 
     fnmark-pos .tl_set:N            = \l__eb_fnmark_position_tl,
     fnmark-pos .initial:n           = super,
-    afterfnmark .tl_set:N           = \l__eb_fnmark_after_tl,
-    afterfnmark .initial:n          =
-      { \tl_if_eq:NnF \l__eb_fnmark_position_tl { super } { \space } },
+    fnmark-code .code:n             = \eb_assign_fnmark_code:n {#1},
+    fnmark-code .initial:n          =
+      { ,\tl_if_eq:NnF \l__eb_fnmark_position_tl { super } { \space } },
     fnmark-form .tl_set:N           = \l__eb_fnmark_format_tl,
 
     footnotetype .multichoices:nn   =
@@ -488,8 +552,18 @@
 
     fnmark-num .choices:nn          =
       { plain,pifont,pifont*,pifont-sans,pifont-sans* }
-      { \tl_set:Nn \l__eb_fnmark_number_choice_tl {#1} },
+      { \eb_fnmark_normal_label_set:nn {#1} { the at footnote } },
     fnmark-num .value_required:n    = true,
+    fnmark-num/unknown .code:n      =
+      { \eb_fnmark_shorter_label_set:nn {#1} { the at footnote } },
+    fntext-num .choices:nn          =
+      { plain,pifont,pifont*,pifont-sans,pifont-sans* }
+      { \eb_fnmark_normal_label_set:nn {#1} { thefootnote } },
+    fntext-num .value_required:n    = true,
+    fntext-num/unknown .code:n      =
+      { \eb_fnmark_shorter_label_set:nn {#1} { thefootnote } },
+    fnboth-num .meta:n = { fntext-num = #1,fnmark-num = #1 },
+    fnboth-num .initial:n           = plain,
 
     unknown .code:n = \eb_msg_unknown_option:n { hdrset }
   }
@@ -603,13 +677,47 @@
   }
 \ProvideDocumentCommand{\super}{mo}{\textsuperscript{#1}}
 \providecommand{\spb at textsuperscript@save}{\textsuperscript}
-\providecommand{\footref}[1]
+\cs_set_protected:Npn \footref #1
   {
     \group_begin:
-    \unrestored at protected@xdef\@thefnmark{\ref{#1}}
+    \unrestored at protected@xdef\eb at thefnmark{\ref{#1}}
     \group_end:
     \@footnotemark
   }
+\cs_set_protected:Npn \footnote
+  {
+    \@ifnextchar [
+      {\@xfootnote}
+      {
+        \exp_args:NV \stepcounter \@mpfn
+        \eb_current_label:n { @footnote }
+        \protected at xdef\@thefnmark{\thempfn}
+        \protected at xdef\eb at thefnmark{\the at footnote}
+        \@footnotemark
+        \@footnotetext
+      }
+  }
+\cs_set:Npn \footnotemark
+  {
+    \@ifnextchar [
+      {\@xfootnotemark}
+      {
+        \stepcounter{footnote}
+        \protected at xdef\eb at thefnmark{\the at footnote}
+        \@footnotemark
+      }
+  }
+\ctex_at_end_package:nn { hyperref }
+  {
+    \cs_set:Npn \@xfootnotemark [#1]
+      {
+        \group_begin:
+        \setcounter{footnote}{#1}
+        \unrestored at protected@xdef\eb at thefnmark{\the at footnote}
+        \group_end:
+        \@footnotemark
+      }
+  }
 \cs_set:Npn \@makefnmark
   {
     \hbox:n
@@ -616,7 +724,11 @@
       {
         \tl_use:N \l__eb_subfont_footnote_tl
         \tl_use:N \l__eb_fnmark_format_tl
-          {\super{\@thefnmark}[0pt]}
+          {
+            \tl_if_eq:NnTF \@mpfn { footnote }
+              { \super{\eb at thefnmark}[0pt] }
+              { \super{\@thefnmark}[0pt] }
+          }
       }
   }
 \cs_new:Npn \eb at makefnmark
@@ -627,8 +739,12 @@
         \tl_use:N \l__eb_fnmark_format_tl
           {
             \tl_if_eq:NnT \l__eb_fnmark_position_tl { super }
-              { \spb at textsuperscript@save }{\@thefnmark}
-            \tl_use:N \l__eb_fnmark_after_tl
+              { \spb at textsuperscript@save }
+              {
+                \tl_use:N \l__eb_fnmark_before_tl
+                \@thefnmark
+                \tl_use:N \l__eb_fnmark_after_tl
+              }
           }
       }
   }
@@ -645,30 +761,8 @@
 \cs_new:Npn \Footnote #1 { \Footnotemark{#1}\@footnotetext }
 \cs_new:Npn \Footnotemark #1 { \eb@@makefnmark{#1}\@footnotemark }
 \cs_new:Npn \Footnotetext #1 { \eb@@makefnmark{#1}\@footnotetext }
-\cs_new:Npn \eb_fnmark_counter_pifont:N #1
-  { \ding{\int_eval:n { 171 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_neg:N #1
-  { \ding{\int_eval:n { 181 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_sans:N #1
-  { \ding{\int_eval:n { 191 + #1 }} }
-\cs_new:Npn \eb_fnmark_counter_pifont_sans_neg:N #1
-  { \ding{\int_eval:n { 201 + #1 }} }
-\cs_new:Npn \eb_footnote_counter:N #1
-  {
-    \str_case:VnF \l__eb_fnmark_number_choice_tl
-      {
-        { plain } { \int_use:N #1 }
-        { pifont } { \eb_fnmark_counter_pifont:N #1 }
-        { pifont* } { \eb_fnmark_counter_pifont_neg:N #1 }
-        { pifont-sans } { \eb_fnmark_counter_pifont_sans:N #1 }
-        { pifont-sans* } { \eb_fnmark_counter_pifont_sans_neg:N #1 }
-      }
-      { \int_use:N #1 }
-  }
-\cs_new:Npn \eb_alph:n #1 { \int_to_alph:v { c@#1 } }
-\cs_set:Npn \thefootnote { \eb_footnote_counter:N \c at footnote }
-\cs_set:Npn \thempfootnote { \eb_alph:n { mpfootnote } }
 \cs_new:Npn \eb at footmisc@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi }
+\cs_set:Npn \thempfootnote { \int_to_alph:n { \c at mpfootnote } }
 
 \contentsuse{lstlisting}{lol}
 \seq_put_left:Nn  \c__ctex_headings_seq { chapter }
@@ -912,11 +1006,10 @@
     \tl_remove_once:cn { theeb@#4 } {#5}
     \eb_current_label:n { eb@#4 }
   }
-\cs_new:Npn \eb_arabic:n #1 { \int_to_arabic:v { c@#1 } }
 \cs_new:Npn \eb_section_counter_prefix:n #1
   {
     \int_compare:nNnT { \c at chapter } > { 0 } { \use:c { the#1chapter }. }
-    \eb_arabic:n { #1section }
+    \int_to_arabic:v { c@#1section }
   }
 \cs_set:Npn \thebichapter { \eb_arabic:n { bichapter } }
 \cs_set:Npn \thebisection { \eb_section_counter_prefix:n { bi } }
@@ -1868,7 +1961,10 @@
         \clist_map_inline:nn { page,none }
           {
             \tl_if_eq:NnT \l_keys_value_tl {##1}
-              { \clist_map_break:n { \colorlet{ctex at toc@number}{black} } }
+              {
+                \colorlet{ctex at toc@number}{black}
+                \clist_map_break:
+              }
           }
       },
     linktoc .default:n      = all,

Modified: trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls	2021-08-01 20:36:01 UTC (rev 60135)
+++ trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls	2021-08-01 20:36:19 UTC (rev 60136)
@@ -13,7 +13,7 @@
 %%   https://creativecommons.org/licenses/by/4.0/legalcode
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/07/30}{1.28}
+\ProvidesExplClass{easybook}{2021/08/01}{1.28b}
   {Typeset Chinese theses or books}
 
 \bool_set_false:N \l__eb_compile_draft_bool

Modified: trunk/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg	2021-08-01 20:36:01 UTC (rev 60135)
+++ trunk/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg	2021-08-01 20:36:19 UTC (rev 60136)
@@ -11,7 +11,7 @@
 %% conditions of the CC-BY 4.0 License.
 %% The latest version of this license is in
 %%   https://creativecommons.org/licenses/by/4.0/legalcode
-\ProvidesExplFile{eb-tcolorbox.cfg}{2021/07/30}{1.28}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2021/08/01}{1.28b}
   {Customization of tcolorbox for easybook}
 
 \tl_gset:Nn \eb at tc@line at skip { 0.5\baselineskip }



More information about the tex-live-commits mailing list.