texlive[72420] Master/texmf-dist: easybook (30sep24)

commits+karl at tug.org commits+karl at tug.org
Mon Sep 30 22:09:37 CEST 2024


Revision: 72420
          https://tug.org/svn/texlive?view=revision&revision=72420
Author:   karl
Date:     2024-09-30 22:09:37 +0200 (Mon, 30 Sep 2024)
Log Message:
-----------
easybook (30sep24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/easybook/README.md
    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/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/easybook/README.md	2024-09-30 20:09:28 UTC (rev 72419)
+++ trunk/Master/texmf-dist/doc/latex/easybook/README.md	2024-09-30 20:09:37 UTC (rev 72420)
@@ -1,5 +1,5 @@
 # The `easybook` document class
-Easily typesetting Chinese theses or books (v2024dx)
+Easily typesetting Chinese theses or books (v2024ea)
 
 ## Abstract
 `easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes.

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	2024-09-30 20:09:28 UTC (rev 72419)
+++ trunk/Master/texmf-dist/doc/latex/easybook/easybook.tex	2024-09-30 20:09:37 UTC (rev 72420)
@@ -23,8 +23,8 @@
     name            = easybook,
     color-scheme    = blue,
     title           = EASYBOOK使用手册,
-    version         = v2024dx,
-    date            = 2024/09/24,
+    version         = v2024ea,
+    date            = 2024/09/28,
     authors         = 瞿毅,
     info            = 简便地排版中文学位论文或书籍,
     email           = toquyi at 163.com,
@@ -282,8 +282,8 @@
   载入用户配置的文件名列表,文件列表以花括号包裹并以英文逗号分隔。文件名应包含如 \code{tex}、\code{def} 或 \code{cfg} 等扩展名。若配置文件不在当前文件夹则文件名需要包含路径,即 \code{path/file.cfg}。
   \keychoice{floatpage}{true,\fbox{false}}
   开启这个选项后浮动环境 \env{table} 和 \env{figure} 的比例参数会使用默认值。关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。
-  \keychoice{theorem}{\fbox{true},false}
-  是否提供定理功能支持。选项开启时定理模块生效,此时会载入 \pkg*{amsthm} 和 \pkg*{thmtools} 宏包。
+  \keychoice{theorem}{\fbox{thmtools},keytheorems,false}\newtagv[Changed]{2024ea}%
+  是否提供定理功能支持,定理模块的介绍可见\ref{subsec:theorem}。选项 \code{thmtools} 会载入 \pkg*{amsthm} 和 \pkg*{thmtools} 宏包,选项 \code{keytheorems} 会载入 \pkg*{keytheorems} 宏包,选项 \code{false} 不载入定理功能宏包。
 \end{cnltxlist}
 
 \subsection{配置字体}
@@ -546,10 +546,10 @@
 
 \subsection[定理]{定理\smodule{thmt}}
 \label{subsec:theorem}
-定理模块 \module*{thmt} 由 \pkg*{thmtools} 宏包提供支持,主要提供了定理环境和样式声明两个命令。定理环境声明命令 \cs{declaretheorem} 使用的定理样式由样式声明命令 \cs{declaretheoremstyle} 提供。文档类未预声明任何定理环境,如果声明定理环境时不指定样式,则使用默认定理样式 \code{default},可以对它重新定义。
+定理模块 \module*{thmt} 根据全局选项 \option{theorem} 的设置可以由 \pkg*{thmtools} 或 \pkg*{keytheorems} 宏包提供支持。\pkg*{keytheorems} 宏包使用 \hologo{LaTeX3} 编写,它的定理功能更完善并且提供了 \pkg*{thmtools} 宏包大部分的功能,但发布日期较新(2024年9月)还未被广泛使用,下面主要介绍传统的 \pkg*{thmtools} 宏包的功能。\pkg*{thmtools} 提供了定理环境和样式声明两个命令,文档类未预声明任何定理环境,如果声明定理环境时不指定样式,则使用默认定理样式 \code{default},可以对它重新定义。
 \begin{cnltxlist}
   \command{declaretheorem}[\oarg{键值列表1}\marg{环境名}\oarg{键值列表2}]
-  定理环境声明命令。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,其中常用的选项如下:
+  \pkg*{thmtools} 的定理环境声明命令。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,常用的选项如下:
   \keyval{name}{定理名}
   定理环境的标题名称,默认为英文首字母大写的环境名。
   \keychoice{numbered}{no,\fbox{yes},unless unique}
@@ -570,7 +570,7 @@
   \tcolorboxenvironment{lemma}{tc-easyboxi}
   \end{ctexexam}
   \command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式}\oarg{键值列表2}]
-  定理样式声明命令,键值列表支持自身以及定理声明命令 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,其中支持的选项如下:
+  \pkg*{thmtools} 的定理样式声明命令,键值列表支持自身以及定理声明命令 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,常用的选项如下:
   \keyval{headfont}{字体命令}\Default{\cs*{sffamily}}
   定理标题部分(包括题注)的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
   \keyval{notefont}{字体命令}\Default{\cs*{sffamily}}
@@ -590,9 +590,7 @@
   \kvsplit-{notebraces}{\marg{左括号}\marg{右括号}}\Default{\Marg{(}\Marg{)}}
   设置定理题注两边的括号,两个必选参数分别代表左括号和右括号。
   \keyval{headformat}{标题排列}
-  定理标题各组成元素的位置排列和格式。定理标题由定理名、编号和题注组成,\meta{标题排列} 中命令 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表定理名、编号和题注。
-  \command{theoremstyle}[\marg{定理样式}]
-  设置其后由 \cs{declaretheorem} 命令声明的定理环境的样式。
+  定理标题各组成元素的位置排列和格式。定理标题由定理名、编号和题注组成,\meta{标题排列} 中命令 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表定理名、编号和题注。也可以设置值为 \code{margin} 或 \code{swapnumber},它们的编号均在定理名前方,其中 \code{margin} 的编号在左页边距中。
 
   下面定义一个名为 \code{fancy} 的定理样式用于 \cs{declaretheorem} 的 \option*{style} 选项:
   \begin{ctexexam}[labelref = exam:new theorem sty]
@@ -608,7 +606,7 @@
   \end{ctexexam}
   \begin{cnltxlist}[itemsep = 0ex]
   \command{listoftheorems}[\sarg\oarg{键值列表}]\default{}
-  \item\key{listoftheorems}{定理目录标题名}
+  \item\key{listtheoremname}{定理目录标题名}
   \command{settheoremtocline}[\sarg\marg{环境名}\marg{标题定义}]\newtagv{2024bb}%
   对 \pkg*{thmtools} 宏包的定理环境目录命令 \cs{listoftheorems} 进行了适配调整,\ref{subsec:directory command} 和\ref{subsec:contents} 中的选项机制均可用,但标题定义选项 \option{tocline} 较为特殊,需用 \cs{settheoremtocline} 命令单独设置。在 \meta{标题定义} 中有三个命令 \cs{thmtname}、\cs{thmtenvname} 和 \cs{thmtnote} 分别代表定理名、定理环境名和题注用于排版目录条目。
   \end{cnltxlist}
@@ -628,6 +626,16 @@
       \thmtname\thmtifnote{[\thmtnote]}{}
     }
   \end{ctexexam}
+
+  如果使用 \pkg*{keytheorems} 宏包创建定理环境,它的目录样式同样可以用 \module*{toc} 模块的命令注册后定制,但是 \option{tocline} 需用目录命令自带的 \option{format-code} 选项修改:
+  \begin{ctexexam}
+  \newkeytheorem{corollary}[name = 推论]
+  \contentsuse{corollary}{thlist}
+  \RegisterTocName{corollary}
+  \begin{document}
+  \keytheoremlistset{format-code = \numberline{#2}#1#3}
+  \listofkeytheorems % 在正文中输出定理目录
+  \end{ctexexam}
 \end{cnltxlist}
 
 \subsection[页面尺寸]{页面尺寸\smodule{geo}}
@@ -937,6 +945,7 @@
     name      = 算法
     ]{algorithm}
   \DeclareFloatList{algorithm}{loa}
+  \begin{document}
   \listofalgorithms[multoc] % 在正文中输出双栏算法目录
   \end{ctexexam}
   \command{AssignCaptionExt}[\marg{条目名}\marg{扩展名}]
@@ -985,8 +994,6 @@
   将目录页码装进一个右对齐的水平盒子里。这样可以使目录引导线右端对齐并与页码保持一定间距,否则会与页码相连。
   \keyval{pagenumwd}{刚性长度}\Default{1.55em}
   设置开启 \option{dotalign} 选项时页码水平盒子的宽度。
-  \keychoice{fileopen}{\fbox{once},odd}
-  编译文档时打开目录文件进行写入操作的方式,这个选项影响重复使用目录命令时的输出行为。默认只在第一次编译时打开文件,选择 \code{odd} 将仅在奇数次编译时打开文件。
   \keyval{tocafter-every}{距离命令}\Default{\cs*{hspace}\Marg{1em}}
   统一设置所有类型条目编号与标题间的代码。
   \keyval{tocindent-every}{刚性长度}
@@ -1122,7 +1129,7 @@
 \end{cnltxlist}
 
 \subsection{双语章节标题和新建标题}
-双语目录标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录。类似于标准文档类,这三个标题命令分别具有独立的计数器\footnote{默认情况下与普通标题命令共享使用计数器。},并对应 \cs*{the}\meta{计数器} 的值,可以用于 \option{number} 选项更改英文目录中标题的编号格式。这个功能是为国内一些高校的学位论文模板的要求设计,在一般情况和英文模式下\textbf{不需要使用}。
+双语目录标题命令将中文标题正常输出,并使中英文标题加入双语目录。目前设置了常用的三个级别,这个功能是为国内一些高校的学位论文模板的要求设计。类似于标准文档类,这三个标题命令分别具有独立的计数器\footnote{默认情况下与普通标题命令共享使用计数器。},并对应 \cs*{the}\meta{计数器} 的值,可以用于 \option{number} 选项更改英文目录中标题的编号格式。
 \begin{cnltxlist}
   \command{bichapter}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
   \code{chapter} 章级别的双语目录标题命令,具有独立的 \code{bichapter} 计数器。
@@ -1131,7 +1138,7 @@
   \command{bisubsection}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
   \code{subsection} 小节级别的双语目录标题命令,具有独立的 \code{bisubsection} 计数器。
 
-  它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \cs*{chapter}\sarg{} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文条目,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录条目的格式是一致的,共享使用 \module*{toc} 模块的设置。提供了两个选项 \option{biname} 和 \option{binumber} 修改英文目录章标题条目的名字及编号:
+  命令的星号参数使正文中的标题不编号,但是仍然加入双语目录,若英文标题为空那么仅加入中文目录,这一特点与 \cs*{chapter}\sarg{} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文条目,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录条目的格式是一致的,共享使用 \module*{toc} 模块的设置。提供了两个选项 \option{biname} 和 \option{binumber} 修改英文目录章标题条目的名字及编号:
   \optpath{chapter/}\kvsplit+{biname}{英文目录前名字,英文目录后名字}\Default{Chapter\cs*{space}}
   更改英文目录 \code{chapter} 级别的标题条目编号前后名字,类似于 \CTeX 的 \option*{name} 选项。
   \optpath{chapter/}\key{binumber}{英文目录编号输出命令}\Default{\cs*{arabic}\Marg{chapter}}
@@ -1239,9 +1246,10 @@
 \end{cnltxlist}
 
 \subsection{列表}
+列表宏包 \pkg*{enumitem} 为系统预置的三个列表环境提供了灵活的标签以及间距控制。
 \begin{cnltxlist}
   \command{setlist}[\sarg\splitoarg{列表类型,级别}\marg{键值列表}]
-  列表宏包 \pkg*{enumitem} 为系统预置的三个列表环境提供了灵活的标签以及间距控制,这是设置列表环境的通用接口命令。带有星号参数的命令在原有格式上补充。\meta{列表类型} 是排序列表 \code{enumerate}、常规列表 \code{itemize} 和主题列表 \code{description} 三个基本类型,也可以是 \cs{newlist} 新建的定理环境,若不指定则设置所有列表类型的格式。若不指定 \meta{级别} 则设置所有列表级别的格式。
+  设置列表环境的通用接口命令。带有星号参数的命令在原有格式上补充。\meta{列表类型} 是排序列表 \code{enumerate}、常规列表 \code{itemize} 和主题列表 \code{description} 三个基本类型,也可以是 \cs{newlist} 新建的定理环境,若不指定则设置所有列表类型的格式。若不指定 \meta{级别} 则设置所有列表级别的格式。
   \command{newlist}[\marg{列表名}\marg{列表类型}\marg{最大级别}]
   克隆基本的 \meta{列表类型} 在其基础上新建一个名为 \meta{列表名} 的列表环境。不要将 \meta{最大级别} 设置过大以避免创建过多的计数器和相关宏。
   \begin{ctexexam}
@@ -1283,9 +1291,10 @@
 \end{cnltxlist}
 
 \subsection{代码}
+代码抄录宏包 \pkg*{listings} 提供了完善的代码排版功能,并且不需要前端处理器。
 \begin{cnltxlist}
   \command{lstdefinestyle}[\marg{代码风格}\marg{键值列表}]
-  代码抄录宏包 \pkg*{listings} 提供了完善的排版功能,不需要前端处理器。这是它的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言定义多种风格,默认使用的 \meta{代码风格} 为适用于\TeX 语言的 \code{lst-latex}。
+  代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言定义多种风格,默认使用的 \meta{代码风格} 为适用于\TeX 语言的 \code{lst-latex}。
   \command{lstinline}[\oarg{键值列表}\marg{行内代码}]
   行内代码抄录命令。较原生的 \cs*{verb} 命令有较大改进,具有代码语言和样式支持。
   \environment{lstlisting}[\oarg{键值列表}]
@@ -1414,9 +1423,10 @@
 \end{cnltxlist}
 
 \subsection{索引}
+\pkg*{imakeidx} 宏包增强了索引的功能,可使用户在制作和排版文档的同时制作一个或多个索引。
 \begin{cnltxlist}
   \command{indexsetup}[\marg{键值列表}]
-  \pkg*{imakeidx} 宏包增强了索引的功能,可使用户在制作和排版文档的同时制作一个或多个索引。这是 \pkg*{imakeidx} 宏包的接口命令,用于设置索引表的整体格式,它的 \option{level} 和 \option{headers} 选项失效。
+  设置索引表整体格式的通用接口命令,它的 \option{level} 和 \option{headers} 选项失效。
   \command{index}[\oarg{索引名}\marg{标签}]
   索引标签命令的可选参数可以用不同的 \meta{索引名} 给多个索引表设置标签。
   \command{makeindex}[\oarg{键值列表}]
@@ -1560,6 +1570,7 @@
   \end{version}
   \shortversion{v = 2024dq,date = 2024/09/16,changes = 修复脚注重置编号的方式为 \code{page} 时在一些换页情况下失败的问题。}
   \shortversion{v = 2024dt,date = 2024/09/22,changes = 新增用于设置行距的命令 \cs{usestretch} 和环境 \env{usespace}。}
+  \shortversion{v = 2024ea,date = 2024/09/28,changes = 定理模块 \module*{thmt} 支持使用 \pkg*{keytheorems} 宏包。}
 \end{changelog}
 \nocite{*}
 % \AddToHook{cmd/printindex/before}{\clearpage}

Modified: trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx	2024-09-30 20:09:28 UTC (rev 72419)
+++ trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx	2024-09-30 20:09:37 UTC (rev 72420)
@@ -14,7 +14,7 @@
 % This work has the LPPL maintenance status `maintained'.
 %<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
 %<*class>
-\ProvidesExplClass{easybook}{2024/09/24}{2024dx}
+\ProvidesExplClass{easybook}{2024/09/28}{2024ea}
   {Easily typesetting Chinese theses or books}
 
 \bool_new:N \l__eb_compile_draft_bool
@@ -301,7 +301,7 @@
 %</class>
 %<*package>
 \RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/09/24}{2024dx}
+\ProvidesExplPackage{easybase}{2024/09/28}{2024ea}
   {Easily typesetting Chinese theses or books}
 
 \cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -397,9 +397,13 @@
     floatpage .bool_set:N   = \l__eb_float_page_bool,
     floatpage .default:n    = true,
     floatpage .initial:n    = false,
-    theorem .bool_set:N     = \l__eb_theorem_support_bool,
-    theorem .default:n      = true,
-    theorem .initial:n      = true,
+    theorem .choices:nn     =
+      { thmtools,keytheorems,false }
+      { \tl_set:Nn \l__eb_theorem_support_tl {#1} },
+    theorem .value_required:n = true,
+    theorem/true .meta:n    = { theorem = thmtools },
+    theorem .default:n      = thmtools,
+    theorem .initial:n      = thmtools,
     paper .code:n           = \eb_put_geometry:n {#1},
     paper .initial:n        = a4paper,
     class .choice:,
@@ -1846,8 +1850,6 @@
     hang .initial:n       = true,
     pagenumwd .code:n     = \contentsmargin{#1},
     pagenumwd .initial:n  = 1.55em,
-    fileopen .tl_set:N    = \l__eb_fileopen_type_tl,
-    fileopen .initial:n   = once,
     unknown .code:n       = \eb_msg_deprecated_option:n { toc }
   }
 
@@ -1868,21 +1870,13 @@
         \group_begin:
         \makeatletter
         \file_if_exist_input:n { \jobname.#1 }
-        \UseHookWithArguments{starttoc/after}{1}{#1}
+        \AddToHook{enddocument/afterlastpage}
+          {\UseHookWithArguments{starttoc/after}{1}{#1}}
         \boolfalse{@nobreak}
         \group_end:
       }
       { \eb at starttoc{#1} }
   }
-\AddToHook{enddocument/afterlastpage}
-  {
-    \tl_if_eq:NnTF \l__eb_fileopen_type_tl { once }
-      { \iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[*] } }
-      {
-        \IfHookEmptyTF{starttoc/after}{}
-          {\iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[aux] }}
-      }
-  }
 \cs_set_protected:Npn \AssignPartialExt #1#2
   {
     \tl_if_exist:cTF { ttl at partial#1 }
@@ -2343,24 +2337,24 @@
     \tl_clear:N \l__eb_eqsymb_intro_tl
     \ignorespaces
   }
-\bool_if:NT \l__eb_theorem_support_bool
+\cs_new_protected:Npn \eb_theorem_load_thmtools:
   {
     \RequirePackage{amsthm,thmtools}
     \cs_set_eq:NN \eb at declaretheoremstyle@save \declaretheoremstyle
     \cs_set_eq:NN \eb at declaretheorem@save \declaretheorem
     \RenewDocumentCommand{\declaretheoremstyle}{+O{}m+O{}}
-      {\eb at declaretheoremstyle@save[#1,#3]{#2}}
+      {\eb at declaretheoremstyle@save[##1,##3]{##2}}
     \RenewDocumentCommand{\declaretheorem}{+O{}m+O{}}
       {
-        \eb at declaretheorem@save[style = default,#1,#3]{#2}
-        \settheoremtocline{#2}
+        \eb at declaretheorem@save[style = default,##1,##3]{##2}
+        \settheoremtocline{##2}
           {
-            \listnumberline{#2}
+            \listnumberline{##2}
             \thmtname\thmtifnote{~(\thmtnote)}{}
           }
-        \cs_gset:cpn { thmt at contentsline@#2 }
+        \cs_gset:cpn { thmt at contentsline@##2 }
           { \thmt at contentslineIfNamed }
-        \exp_args:Nc \providecommand { p@#2 }[1]{##1}
+        \exp_args:Nc \providecommand { p@##2 }[1]{####1}
       }
     \ctex_define:nn { thmt }
       {
@@ -2378,7 +2372,6 @@
       bodyfont      = \normalfont,
       postheadspace = 1em
       ]
-    \theoremstyle{default}
     \cs_undefine:N \proof
     \DeclareFloatList{theorem}{loe}
     \AssignPartialExt{loe}{ple}
@@ -2385,7 +2378,8 @@
     \eb_preto_cmd:nn { listoftheorems }
       {
         \group_begin:
-        \def\contentsline #1 {\use:c { thmt at contentsline@#1 }{#1}}
+        \let\thmt at contentsline\contentsline
+        \def\contentsline ##1 {\use:c { thmt at contentsline@##1 }{##1}}
       }
     \eb_appto_cmd:nn { listoftheorems } { \group_end: }
     \eb_preto_cmd:nn { @chapter }
@@ -2397,20 +2391,29 @@
     \def\thmtname{\thmt at thmname}
     \def\thmtenvname{\thmt at envname}
     \def\thmtnote{\thmt at shortoptarg}
-    \def\thmtformatoptarg #1 {#1}
-    \def\thmtifname #1#2 {\ifbool{thmt at isstarred}{#2}{#1}}
-    \def\thmtifnote #1#2
+    \def\thmtformatoptarg ##1 {##1}
+    \def\thmtifname ##1##2 {\ifbool{thmt at isstarred}{##2}{##1}}
+    \def\thmtifnote ##1##2
       {
         \tl_if_empty:NTF \thmt at shortoptarg
-          {#2}
-          { \protect\thmtformatoptarg{#1} }
+          {##2}
+          { \protect\thmtformatoptarg{##1} }
       }
     \NewDocumentCommand{\settheoremtocline}{smm}
       {
-        \IfBooleanT{#1}{\def\thmt at contentslineIgnore{\thmt at contentsline}}
-        \cs_set:cpn { ll@#2 } { \@bsphack #3\@esphack }
+        \IfBooleanT{##1}{\def\thmt at contentslineIgnore{\thmt at contentsline}}
+        \cs_set:cpn { ll@##2 } { \@bsphack ##3\@esphack }
       }
   }
+\cs_new_protected:Npn \eb_theorem_load_keytheorems:
+  { \RequirePackage{keytheorems} }
+\str_case:Vn \l__eb_theorem_support_tl
+  {
+    { thmtools }
+    { \eb_theorem_load_thmtools: }
+    { keytheorems }
+    { \eb_theorem_load_keytheorems: }
+  }
 \setchemformula
   {
     math-scripts      = false,
@@ -2731,6 +2734,8 @@
         lstlistingname      = 代码,
         listtheoremname     = 定理清单
       }
+    \ctex_at_end_package:nn { keytheorems }
+      { \keytheoremlistset{title = 定理清单} }
   }
   {
     \keys_set_known:nn { ctex }
@@ -2835,7 +2840,7 @@
   }
 %</package>
 %<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/09/24}{2024dx}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/09/28}{2024ea}
   {Customization of tcolorbox for easybook}
 
 \cs_set_protected:Npn \addtotcbstyle #1#2

Modified: trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty	2024-09-30 20:09:28 UTC (rev 72419)
+++ trunk/Master/texmf-dist/tex/latex/easybook/easybase.sty	2024-09-30 20:09:37 UTC (rev 72420)
@@ -20,7 +20,7 @@
 %% This work has the LPPL maintenance status `maintained'.
 \NeedsTeXFormat{LaTeX2e}[2021/11/15]
 \RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/09/24}{2024dx}
+\ProvidesExplPackage{easybase}{2024/09/28}{2024ea}
   {Easily typesetting Chinese theses or books}
 
 \cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -116,9 +116,13 @@
     floatpage .bool_set:N   = \l__eb_float_page_bool,
     floatpage .default:n    = true,
     floatpage .initial:n    = false,
-    theorem .bool_set:N     = \l__eb_theorem_support_bool,
-    theorem .default:n      = true,
-    theorem .initial:n      = true,
+    theorem .choices:nn     =
+      { thmtools,keytheorems,false }
+      { \tl_set:Nn \l__eb_theorem_support_tl {#1} },
+    theorem .value_required:n = true,
+    theorem/true .meta:n    = { theorem = thmtools },
+    theorem .default:n      = thmtools,
+    theorem .initial:n      = thmtools,
     paper .code:n           = \eb_put_geometry:n {#1},
     paper .initial:n        = a4paper,
     class .choice:,
@@ -1565,8 +1569,6 @@
     hang .initial:n       = true,
     pagenumwd .code:n     = \contentsmargin{#1},
     pagenumwd .initial:n  = 1.55em,
-    fileopen .tl_set:N    = \l__eb_fileopen_type_tl,
-    fileopen .initial:n   = once,
     unknown .code:n       = \eb_msg_deprecated_option:n { toc }
   }
 
@@ -1587,21 +1589,13 @@
         \group_begin:
         \makeatletter
         \file_if_exist_input:n { \jobname.#1 }
-        \UseHookWithArguments{starttoc/after}{1}{#1}
+        \AddToHook{enddocument/afterlastpage}
+          {\UseHookWithArguments{starttoc/after}{1}{#1}}
         \boolfalse{@nobreak}
         \group_end:
       }
       { \eb at starttoc{#1} }
   }
-\AddToHook{enddocument/afterlastpage}
-  {
-    \tl_if_eq:NnTF \l__eb_fileopen_type_tl { once }
-      { \iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[*] } }
-      {
-        \IfHookEmptyTF{starttoc/after}{}
-          {\iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[aux] }}
-      }
-  }
 \cs_set_protected:Npn \AssignPartialExt #1#2
   {
     \tl_if_exist:cTF { ttl at partial#1 }
@@ -2062,24 +2056,24 @@
     \tl_clear:N \l__eb_eqsymb_intro_tl
     \ignorespaces
   }
-\bool_if:NT \l__eb_theorem_support_bool
+\cs_new_protected:Npn \eb_theorem_load_thmtools:
   {
     \RequirePackage{amsthm,thmtools}
     \cs_set_eq:NN \eb at declaretheoremstyle@save \declaretheoremstyle
     \cs_set_eq:NN \eb at declaretheorem@save \declaretheorem
     \RenewDocumentCommand{\declaretheoremstyle}{+O{}m+O{}}
-      {\eb at declaretheoremstyle@save[#1,#3]{#2}}
+      {\eb at declaretheoremstyle@save[##1,##3]{##2}}
     \RenewDocumentCommand{\declaretheorem}{+O{}m+O{}}
       {
-        \eb at declaretheorem@save[style = default,#1,#3]{#2}
-        \settheoremtocline{#2}
+        \eb at declaretheorem@save[style = default,##1,##3]{##2}
+        \settheoremtocline{##2}
           {
-            \listnumberline{#2}
+            \listnumberline{##2}
             \thmtname\thmtifnote{~(\thmtnote)}{}
           }
-        \cs_gset:cpn { thmt at contentsline@#2 }
+        \cs_gset:cpn { thmt at contentsline@##2 }
           { \thmt at contentslineIfNamed }
-        \exp_args:Nc \providecommand { p@#2 }[1]{##1}
+        \exp_args:Nc \providecommand { p@##2 }[1]{####1}
       }
     \ctex_define:nn { thmt }
       {
@@ -2097,7 +2091,6 @@
       bodyfont      = \normalfont,
       postheadspace = 1em
       ]
-    \theoremstyle{default}
     \cs_undefine:N \proof
     \DeclareFloatList{theorem}{loe}
     \AssignPartialExt{loe}{ple}
@@ -2104,7 +2097,8 @@
     \eb_preto_cmd:nn { listoftheorems }
       {
         \group_begin:
-        \def\contentsline #1 {\use:c { thmt at contentsline@#1 }{#1}}
+        \let\thmt at contentsline\contentsline
+        \def\contentsline ##1 {\use:c { thmt at contentsline@##1 }{##1}}
       }
     \eb_appto_cmd:nn { listoftheorems } { \group_end: }
     \eb_preto_cmd:nn { @chapter }
@@ -2116,20 +2110,29 @@
     \def\thmtname{\thmt at thmname}
     \def\thmtenvname{\thmt at envname}
     \def\thmtnote{\thmt at shortoptarg}
-    \def\thmtformatoptarg #1 {#1}
-    \def\thmtifname #1#2 {\ifbool{thmt at isstarred}{#2}{#1}}
-    \def\thmtifnote #1#2
+    \def\thmtformatoptarg ##1 {##1}
+    \def\thmtifname ##1##2 {\ifbool{thmt at isstarred}{##2}{##1}}
+    \def\thmtifnote ##1##2
       {
         \tl_if_empty:NTF \thmt at shortoptarg
-          {#2}
-          { \protect\thmtformatoptarg{#1} }
+          {##2}
+          { \protect\thmtformatoptarg{##1} }
       }
     \NewDocumentCommand{\settheoremtocline}{smm}
       {
-        \IfBooleanT{#1}{\def\thmt at contentslineIgnore{\thmt at contentsline}}
-        \cs_set:cpn { ll@#2 } { \@bsphack #3\@esphack }
+        \IfBooleanT{##1}{\def\thmt at contentslineIgnore{\thmt at contentsline}}
+        \cs_set:cpn { ll@##2 } { \@bsphack ##3\@esphack }
       }
   }
+\cs_new_protected:Npn \eb_theorem_load_keytheorems:
+  { \RequirePackage{keytheorems} }
+\str_case:Vn \l__eb_theorem_support_tl
+  {
+    { thmtools }
+    { \eb_theorem_load_thmtools: }
+    { keytheorems }
+    { \eb_theorem_load_keytheorems: }
+  }
 \setchemformula
   {
     math-scripts      = false,
@@ -2450,6 +2453,8 @@
         lstlistingname      = 代码,
         listtheoremname     = 定理清单
       }
+    \ctex_at_end_package:nn { keytheorems }
+      { \keytheoremlistset{title = 定理清单} }
   }
   {
     \keys_set_known:nn { ctex }

Modified: trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls	2024-09-30 20:09:28 UTC (rev 72419)
+++ trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls	2024-09-30 20:09:37 UTC (rev 72420)
@@ -19,7 +19,7 @@
 %% 
 %% This work has the LPPL maintenance status `maintained'.
 \NeedsTeXFormat{LaTeX2e}[2021/11/15]
-\ProvidesExplClass{easybook}{2024/09/24}{2024dx}
+\ProvidesExplClass{easybook}{2024/09/28}{2024ea}
   {Easily typesetting Chinese theses or books}
 
 \bool_new: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	2024-09-30 20:09:28 UTC (rev 72419)
+++ trunk/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg	2024-09-30 20:09:37 UTC (rev 72420)
@@ -18,7 +18,7 @@
 %% LaTeX version 2005/12/01 or later.
 %% 
 %% This work has the LPPL maintenance status `maintained'.
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/09/24}{2024dx}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/09/28}{2024ea}
   {Customization of tcolorbox for easybook}
 
 \cs_set_protected:Npn \addtotcbstyle #1#2



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