texlive[59197] Master/texmf-dist: easybook (14may21)

commits+karl at tug.org commits+karl at tug.org
Fri May 14 22:14:05 CEST 2021


Revision: 59197
          http://tug.org/svn/texlive?view=revision&revision=59197
Author:   karl
Date:     2021-05-14 22:14:04 +0200 (Fri, 14 May 2021)
Log Message:
-----------
easybook (14may21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/easybook/easybook.pdf
    trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx
    trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls

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

Modified: trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx	2021-05-14 20:13:45 UTC (rev 59196)
+++ trunk/Master/texmf-dist/source/latex/easybook/easybook.dtx	2021-05-14 20:14:04 UTC (rev 59197)
@@ -24,11 +24,11 @@
 % \changes{v1.20}{2021/01/09}{修改和完善用户文档。}
 % \changes{v1.20}{2021/01/09}{模板更改为使用 CC-BY 许可协议。}
 % \changes{v1.23}{2021/03/19}{修复在 \pkg{ctex} v2.5.6 更新后 \cls{easybook} 与 \pkg{hyperref} 冲突问题。}
-% \changes{v1.25h}{2021/05/03}{取消附带的示例文件,可查看历史版本及其它来源的使用样例。}
+% \changes{v1.25i}{2021/05/03}{取消附带的示例文件,可查看历史版本及其它来源的使用样例。}
 %
 % \title{\sffamily easybook 文档类手册}
 % \author{瞿毅}
-% \date{2021/05/12\hskip\ccwd\relax v1.25h\thanks{\url{https://gitee.com/texl3/easybook}}}
+% \date{2021/05/14\hskip\ccwd\relax v1.25i\thanks{\url{https://gitee.com/texl3/easybook}}}
 %
 % \maketitle
 % \begin{abstract}
@@ -118,7 +118,7 @@
 % \end{syntax}
 % 传递给 \cls{ctexbook} 设置字体,最好不要使用原有的 \opt{fontset} 选项,默认情况下使用自定义字体而不开启这个选项,可根据安装的字体及电脑系统选取。\opt{noto} 与 \opt{none} 选项的相关描述见小节 \ref{subsec:font settings},\opt{overleaf} 是一个各系统通用选项,会检测系统环境选取对应字体。
 % \changes{v1.21}{2021/01/12}{默认字体与 \CTeX 一致,不再是自定义字体。}
-% \changes{v1.25h}{2021/05/04}{修复使用 \pkg{xeCJK} 与 \pkg{fontspec} 宏包的字体设置命令在 \hologo{LuaLaTeX} 下失效的问题。}
+% \changes{v1.25i}{2021/05/04}{修复使用 \pkg{xeCJK} 与 \pkg{fontspec} 宏包的字体设置命令在 \hologo{LuaLaTeX} 下失效的问题。}
 % \end{function}
 %
 % \begin{function}[rEXP,added = 2021-01-05,updated = 2021-01-13]{paper}
@@ -169,7 +169,7 @@
 %   \tn{listoflistings*+}\oarg{键值列表}
 % \end{syntax}
 % \tn{listoffigures} 命令输出图片目录,\tn{listoftables} 输出表格目录,\tn{listoflistings} 输出代码目录。带有星号的目录命令不将标题添加进主文档目录,带有+号的目录命令可以使当前标题编号。\tn{tableofcontents+} 与其它命令不同是用于输出双语目录,需要与双语目录标题命令 \tn{bichapter} 等或设置图片、表格和代码等英文目录的标题配合使用,附加代码是中文与英文目录之间的代码,可以插入文本和换页命令等。目录的键值列表选项如下
-% \changes{v1.25h}{2021/05/05}{命令 \tn{tableofcontents} 可以输出双语目录。}
+% \changes{v1.25i}{2021/05/05}{命令 \tn{tableofcontents} 可以输出双语目录。}
 % \end{function}
 %
 % \begin{function}{multoc,title,format,aftertitle,pagestyle,book,article}
@@ -200,7 +200,7 @@
 % 双语目录的标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录,这个功能是为国内一些大学的学位论文模板的要求设计,在一般情况和英文模式下不需要使用。
 %
 % 它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \tn{chapter*} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。双语目录的格式是一致的,共享使用 \tn{tocset} 的设置,英文目录的章级别标题名及编号的修改方式如下
-% \changes{v1.25h}{2021/05/05}{增加与双语目录配合的标题命令。}
+% \changes{v1.25i}{2021/05/05}{增加与双语目录配合的标题命令。}
 % \end{function}
 %
 % \begin{function}{biname,binmuber}
@@ -288,9 +288,9 @@
 %
 % \subsection{超链接}
 % \label{subsec:hyperlinks}
-% \begin{function}[EXP,added = 2021-01-05,updated = 2021-05-06]{hyperlink,linkcolor,linkcol-all,linktoc}
+% \begin{function}[EXP,added = 2021-01-05,updated = 2021-05-06]{linktype,linkcolor,linkcol-all,linktoc}
 % \begin{syntax}
-%   hyperlink = <(edge)|various|none>
+%   linktype = <(edge)|various|none>
 %   linkcolor = <fresh|cutepink|(navyblue)|crimson>
 %   linkcol-all = <HTML颜色代码>
 %   linktoc = <none|section|page|(all)>
@@ -299,11 +299,11 @@
 % \opt{refset} 将超链接选项(包括以上选项)交给 \pkg{hyperref} 处理,除了一些关于 pdf 书签的选项可能会失效,其它由键值选项命令 \tn{hypersetup} 支持的多数选项可用。
 % \changes{v1.10}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。}
 % \changes{v1.24}{2021/04/05}{增加 \pkg{hyperref} 超链接选项完整的支持。}
-% \changes{v1.25h}{2021/05/06}{模块名 \opt{link} 改为 \opt{refset},\opt{link} 作为兼容性保留。}
+% \changes{v1.25i}{2021/05/06}{模块名 \opt{link} 改为 \opt{refset},\opt{link} 作为兼容性保留。}
 % \end{function}
 %
 % \begin{optdesc}
-%   \item[hyperlink] \opt{edge} 使超链接为边框形式,\opt{various} 使超链接为彩色字体,有四种颜色风格。\opt{none} 关闭超链接边框与颜色,此时 \opt{linkcolor} 选项无效。
+%   \item[linktype] \opt{edge} 使超链接为边框形式,\opt{various} 使超链接为彩色字体,有四种颜色风格。\opt{none} 关闭超链接边框与颜色,此时 \opt{linkcolor} 选项无效。
 %   \item[linkcolor] 超链接颜色样式。
 %     \begin{function}{ctex at link,ctex at url,ctex at cite}
 %     \begin{syntax}
@@ -378,7 +378,7 @@
 % \changes{v1.21}{2021/01/11}{增加 \opt{bibset} 选项,可以使用 \hologo{BibTeX} 或 \hologo{biber} 编译参考文献。}
 % \changes{v1.23}{2021/02/23}{使用 \opt{bibset} 选项时可设置标注风格。}
 % \changes{v1.24}{2021/04/09}{可以不载入参考文献包手动配置参考文献格式。}
-% \changes{v1.25h}{2021/05/12}{取消 \opt{bib-loadpkg} 选项,由是否设置参考文献数据库来决定载入宏包。}
+% \changes{v1.25i}{2021/05/12}{取消 \opt{bib-loadpkg} 选项,由是否设置参考文献数据库来决定载入宏包。}
 % \end{function}
 %
 % \begin{optdesc}
@@ -572,12 +572,12 @@
 % 上面几个选项用于设置脚注格式,\opt{fnparskip} 和 \opt{fnparindent} 选项仅在 \opt{fnhang = true} 时有效。\opt{fnhang} 用于将脚注设置为悬挂缩进的格式,\opt{fnmark-pos} 选项设置脚注编号的位置,正常文本或是上标形式。\opt{fnmark-num} 选项设置脚注编号的格式,默认为原生样式 \opt{plain},还可以改为 \opt{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括1-10。
 %
 % \opt{fnmark-form} 是脚注标记的格式,默认为空,在此设置字体命令会覆盖 \opt{elsefont/footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注编号,一般配合 \opt{fnmark-num = plain} 使用。\opt{afterfnmark} 是脚注标记后的代码,一般用于设置标记与文本间的距离。
-% \changes{v1.25h}{2021/05/12}{增加脚注样式设置选项。}
+% \changes{v1.25i}{2021/05/12}{增加脚注样式设置选项。}
 % \end{function}
 %
 % \subsection{目录样式}
 % \label{subsec:catalog style}
-% \begin{function}[EXP,added = 2021-01-13,updated = 2021-05-01]{format,format+,indent,rule,numsep}
+% \begin{function}[EXP,added = 2021-01-13,updated = 2021-05-14]{format,format+,indent,rule,numsep}
 % \begin{syntax}
 %   format = <目录标题格式>
 %   format += <目录标题格式>
@@ -586,11 +586,12 @@
 %   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{list} 五种级别的目录样式设置,其中 \opt{list} 为图片、表格和代码目录样式的级别。
+% \opt{tocset} 将目录样式交给 \pkg{titletoc} 处理,\opt{level} 代表 part、chapter、section、subsection、figure、table 和 lstlisting 级别的目录,而使用 \opt{list} 级别可以统一设置图片、表格和代码目录的样式。
 %
 % \opt{format} 是目录中标题的格式,可以设置字体和加入垂直间距等,垂直间距最好使用无间距重合的 \tn{addvspace} 命令,带有加号的 \opt{format+} 选项用于在已有的格式命令后附加内容。\opt{indent} 是目录中标题在页面左侧的缩进距离,应该有长度单位。\opt{rule} 选项中一般应当使用 \tn{tocrule} 命令,将会在接下来介绍。\opt{numsep} 是有编号的标题在目录中编号与标题的间距。
 % \changes{v1.21}{2021/01/13}{增加配置目录样式的选项。}
 % \changes{v1.24}{2021/04/20}{增加目录中编号与标题的间距选项 \opt{numsep}。}
+% \changes{v1.25i}{2021/05/14}{可以分别设置图片、表格和代码目录的格式。}
 % \end{function}
 %
 % \begin{function}[added = 2021-01-13,updated = 2021-04-20]{\tocrule,\EbNumberline}
@@ -615,10 +616,10 @@
 %     }
 % \end{ctexexam}
 %
-% \begin{function}[EXP,added = 2021-01-13,updated = 2021-05-01]{list/lolskip,list/belowoffset,tocset/tocline-fig,tocset/tocline-tab,tocset/tocline-lst,tocset/belowoffset,tocset/line-align,tocset/hang,tocset/numsep-all,tocset/indent-all,tocset/rule-all}
+% \begin{function}[EXP,added = 2021-01-13,updated = 2021-05-14]{level/belowoffset,lolskip,tocline-fig,tocline-tab,tocline-lst,belowoffset,line-align,hang,numsep-all,indent-all,rule-all}
 % \begin{syntax}
+%   belowoffset = <(0pc)>
 %   lolskip = <(0.8pc)>
-%   belowoffset = <(0pc)>
 %   tocline-fig = <图片目录标签>
 %   tocline-tab = <表格目录标签>
 %   tocline-lst = <代码目录标签>
@@ -629,7 +630,7 @@
 %   indent-all = <目录标题左边缩进>
 %   rule-all = <目录引导线样式>
 % \end{syntax}
-% \ding{229} 以上选项路径为 \opt{tocset/list/...} 或 \opt{tocset/...}
+% \ding{229} 以上选项路径为 \opt{tocset/level/...} 或 \opt{tocset/...}
 % \changes{v1.24}{2021/04/05}{可以设置图、表和代码目录的标签。}
 % \changes{v1.24}{2021/04/06}{增加目录引导线右边对齐方式。}
 % \changes{v1.24}{2021/04/19}{给目录增加 \opt{hang} 样式选项。}
@@ -638,7 +639,7 @@
 %
 % \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{list} 中的 \opt{belowoffset} 与之意义类似,但是一般为正值,可以在 \opt{article} 模式中使用。建议 \opt{list/lolskip(0.8pc) + list/format/addvspace(0.2pc) + list/belowoffset(0pc) = belowoffset(-1pc)}。
+%   \item[belowoffset] \opt{belowoffset} 选项为主目录标题 \tn{contentsname} 后的间距补偿,一般为负值,用于抵消 \opt{format} 中设置的垂直间距。\opt{level} 中的 \opt{belowoffset} 与之意义类似,代表 figure、table 和 lstlisting 三个级别,也可以使用 \opt{list} 统一设置,一般为正值。建议 \opt{lolskip(0.8pc) + list/format/addvspace(0.2pc) + list/belowoffset(0pc) = belowoffset(-1pc)}。
 %   \item[tocline] 目录标签整体使用 \opt{tocline} 设置,在图表标签的参数中\#1代表编号,代码标签中则是 \tn{thelstlisting} 代表编号,标签中还可包含标签名称,默认标签名称与图、表和代码环境的标题名称一致。下面举个设置标签的例子
 %   \begin{ctexexam}
 %   \tocset
@@ -966,7 +967,7 @@
 %<*class>
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplClass{easybook}{2021/05/12}{1.25h}{beta}
+\ProvidesExplClass{easybook}{2021/05/14}{1.25i}{beta}
 
 \cs_generate_variant:Nn \eb_ctex_define:nn { nx }
 \cs_generate_variant:Nn \int_to_arabic:n { v }
@@ -1091,9 +1092,10 @@
 \seq_map_inline:Nn \c__eb_options_path_seq
   {
     \ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} }
-    \cs_new:cpn {#1} ##1 { \keys_set:nn {ctex/#1} {##1} }
+    \cs_new:cpn {#1} ##1 { \keys_set:nn { ctex/#1 } {##1} }
   }
 \keys_define:nn { } { ctex/link .inherit:n = ctex/refset }
+\cs_set_eq:NN \link \refset
 \ctex_define:n
   {
     link .meta:nn                 = { ctex/link } {#1},
@@ -1425,7 +1427,7 @@
 \cs_new:Npn \eb_upper_number_mark_bool:nn #1#2
   {
     \bool_if:NT \l__eb_uppercase_bool
-      { \text_uppercase:n } { \use:c { eb_fancyhf_#1_mark:n } {#2} }
+      { \text_uppercase:n } {\use:c { eb_fancyhf_#1_mark:n } {#2}}
   }
 \cs_new:Npn \eb at number@markdouble #1#2
   {
@@ -1521,7 +1523,7 @@
       {
         \hbox:n
           {
-            \tl_if_eq:NnT \l__eb_fnmark_position_tl {super}
+            \tl_if_eq:NnT \l__eb_fnmark_position_tl { super }
               { \textsuperscript }{\@thefnmark}
             \tl_use:N \l__eb_fnmark_after_tl
           }
@@ -1567,9 +1569,10 @@
       { \int_use:N #1 }
   }
 
-\seq_const_from_clist:Nn \c__eb_toc_headings_level_seq
-  { part,chapter,section,subsection,list }
-\seq_map_inline:Nn \c__eb_toc_headings_level_seq
+\contentsuse{lstlisting}{lol}
+\seq_const_from_clist:Nn \c__eb_toc_heading_level_seq
+  { part,chapter,section,subsection,figure,table,lstlisting }
+\cs_new_protected:Npn \eb_toc_assign_keys:n #1
   {
     \ctex_define:n { tocset/#1 .meta:nn = { ctex/tocset/#1 } {##1} }
     \eb_ctex_define:nn { tocset }
@@ -1583,8 +1586,48 @@
         #1/rule .tl_set:c   = l__eb_toc_#1_rule_tl,
         #1/numsep .tl_set:c = eb at toc@#1 at numsep
       }
+    \seq_if_in:NnF \c__eb_toc_heading_level_seq { subsection }
+      {
+        \eb_ctex_define:nn { tocset }
+          { #1/belowoffset .dim_set:c = l__eb_toc_#1_offset_dim }
+      }
+    \seq_pop:NN \c__eb_toc_heading_level_seq \l_tmpa_tl
+    \titlecontents{#1}
+      [\use:c { l__eb_toc_#1_indent_tl }]
+      {\use:c { l__eb_toc_#1_format_tl }}
+      {
+        \ifbool{eb at titletoc@hang at fix}
+          {
+            \contentspush
+              {
+                \bool_if:NT \l__eb_toc_number_color_bool
+                  { \color{ctex at toc@number} }
+                \thecontentslabel
+                \hspace{\use:c { eb at toc@#1 at numsep }}
+              }
+          }{}
+      }{}
+      {\use:c { l__eb_toc_#1_rule_tl }}
   }
+\seq_map_function:NN
+\c__eb_toc_heading_level_seq \eb_toc_assign_keys:n
 
+\seq_const_from_clist:Nn \c__eb_toc_list_meta_keys_seq
+  { format,format+,format~+,indent,rule,numsep,belowoffset }
+\ctex_define:n { tocset/list .meta:nn = { ctex/tocset/list } {#1} }
+\seq_map_inline:Nn \c__eb_toc_list_meta_keys_seq
+  {
+    \eb_ctex_define:nn { tocset }
+      {
+        list/#1 .meta:n   =
+          {
+            figure/#1     = ##1,
+            table/#1      = ##1,
+            lstlisting/#1 = ##1
+          }   
+      }
+  }
+
 \cs_new:Npn \EbNumberline #1
   {
     \CTEXifname
@@ -1596,11 +1639,8 @@
 \newbool{eb at titletoc@hang at fix}
 \eb_ctex_define:nn { tocset }
   {
-    list/lolskip .skip_set:N    = \l__eb_toc_lolskip_skip,
-    list/lolskip .initial:n     = 0.8pc,
-    list/belowoffset .dim_set:N = \l__eb_toc_listoffset_dim,
-    list/belowoffset .initial:n =
-      { \bool_if:NTF \l__eb_class_book_bool { 0pc } { 0.15pc } },
+    lolskip .skip_set:N     = \l__eb_toc_lolskip_skip,
+    lolskip .initial:n      = 0.8pc,
 
     belowoffset .dim_set:N  = \l__eb_toc_offset_dim,
     belowoffset .initial:n  =
@@ -1610,7 +1650,7 @@
       {
         \figurename\space #1
         \notbool{eb at titletoc@hang at fix}
-          {\hspace{\eb at toc@list at numsep}}{}
+          {\hspace{\eb at toc@figure at numsep}}{}
       },
     tocline-tab .cs_set:Np  = \eb at labelname@lot #1,
     tocline-tab .initial:n  =
@@ -1617,7 +1657,7 @@
       {
         \tablename\space #1
         \notbool{eb at titletoc@hang at fix}
-          {\hspace{\eb at toc@list at numsep}}{}
+          {\hspace{\eb at toc@table at numsep}}{}
       },
     tocline-lst .tl_set:N   = \eb at labelname@lol,
     tocline-lst .initial:n  =
@@ -1624,7 +1664,7 @@
       {
         \lstlistingname\space\thelstlisting
         \notbool{eb at titletoc@hang at fix}
-          {\hspace{\eb at toc@list at numsep}}{}
+          {\hspace{\eb at toc@lstlisting at numsep}}{}
       },
     line-align .bool_set:N  = \l__eb_toc_line_align_bool,
     line-align .default:n   = true,
@@ -1679,6 +1719,18 @@
         list/rule         = #1
       }
   }
+
+\NewDocumentCommand{\tocrule}{sO{0.7pc}D(){1.2}mO{}}
+  {
+    \normalsize\normalfont
+    \titlerule*[#2]{\scalebox{#3}{#4}}#5
+    \IfBooleanTF{#1}
+      {\thecontentspage}
+      {
+        \bool_if:NTF \l__eb_toc_line_align_bool
+          { \contentspage } { \thecontentspage }
+      }
+  }
 \ctex_set:nn { tocset }
   {
     part/format = \addvspace{1pc}\sffamily\large,
@@ -1699,54 +1751,13 @@
       { \bool_if:NTF \l__eb_class_book_bool { 3.8\ccwd } { 1.4\ccwd } },
     subsection/rule   = \tocrule{$\cdot$},
 
-    list/format = \addvspace{0.2pc},
-    list/indent = 0\ccwd,
-    list/rule   = \tocrule{$\cdot$}
+    list/format       = \addvspace{0.2pc},
+    list/indent       = 0\ccwd,
+    list/rule         = \tocrule{$\cdot$},
+    list/belowoffset  =
+      { \bool_if:NTF \l__eb_class_book_bool { 0pc } { 0.15pc } }
   }
 
-\NewDocumentCommand{\tocrule}{sO{0.7pc}D(){1.2}mO{}}
-  {
-    \normalsize\normalfont
-    \titlerule*[#2]{\scalebox{#3}{#4}}#5
-    \IfBooleanTF{#1}
-      {\thecontentspage}
-      {
-        \bool_if:NTF \l__eb_toc_line_align_bool
-          { \contentspage } { \thecontentspage }
-      }
-  }
-\cs_new_protected:Npn \eb_titlecontents_set:nn #1#2
-  {
-    \titlecontents{#1}
-      [\use:c { l__eb_toc_#2_indent_tl }]
-      {\use:c { l__eb_toc_#2_format_tl }}
-      {
-        \ifbool{eb at titletoc@hang at fix}
-          {
-            \contentspush
-              {
-                \bool_if:NT \l__eb_toc_number_color_bool
-                  { \color{ctex at toc@number} }
-                \thecontentslabel
-                \hspace{\use:c { eb at toc@#2 at numsep }}
-              }
-          }{}
-      }{}
-      {\use:c { l__eb_toc_#2_rule_tl }}
-  }
-\contentsuse{lstlisting}{lol}
-\clist_map_inline:nn
-  {
-    { part } { part },
-    { chapter } { chapter },
-    { section } { section },
-    { subsection } { subsection },
-    { figure } { list },
-    { table } { list },
-    { lstlisting } { list }
-  }
-  { \eb_titlecontents_set:nn #1 }
-
 \prop_new:N \l__eb_label_name_prop
 \prop_set_from_keyval:Nn \l__eb_label_name_prop
   {
@@ -1962,7 +1973,7 @@
     \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
     \eb_multoc_pre_bool:
     \eb_title_number_intoc_bool:nn {#2} {#1}
-    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_listoffset_dim
+    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_figure_offset_dim
     \vspace*{\dim_use:N \l__eb_toc_offset_dim}
     \@starttoc{lof}
     \eb_multoc_post_bool:
@@ -1975,7 +1986,7 @@
     \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
     \eb_multoc_pre_bool:
     \eb_title_number_intoc_bool:nn {#2} {#1}
-    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_listoffset_dim
+    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_table_offset_dim
     \vspace*{\dim_use:N \l__eb_toc_offset_dim}
     \@starttoc{lot}
     \eb_multoc_post_bool:
@@ -1988,7 +1999,7 @@
     \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
     \eb_multoc_pre_bool:
     \eb_title_number_intoc_bool:nn {#2} {#1}
-    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_listoffset_dim
+    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_lstlisting_offset_dim
     \vspace*{\dim_use:N \l__eb_toc_offset_dim}
     \@starttoc{lol}
     \eb_multoc_post_bool:
@@ -2754,16 +2765,16 @@
 \bool_set_false:N \l__eb_toc_number_color_bool
 \eb_ctex_define:nn { refset }
   {
-    hyperlink .choice:,
-    hyperlink/edge .code:n    = { },
-    hyperlink/none .code:n    = \eb_put_hyperref:n { hidelinks },
-    hyperlink/various .code:n =
+    linktype .choice:,
+    linktype/edge .code:n       = { },
+    linktype/none .code:n       = \eb_put_hyperref:n { hidelinks },
+    linktype/various .code:n    =
       {
         \bool_set_true:N \l__eb_toc_number_color_bool
         \eb_put_hyperref:n { colorlinks }
       },
-    hyperlink .default:n      = edge,
-    hyperlink .initial:n      = edge,
+    linktype .value_required:n  = true,
+    linktype .initial:n         = edge,
 
     linktoc .choice:,
     linktoc/unknown .code:n =
@@ -2778,9 +2789,9 @@
               }
           }
       },
-    linktoc .default:n    = all,
-    linktoc .initial:n    = all,
-    unknown .code:n       =
+    linktoc .default:n      = all,
+    linktoc .initial:n      = all,
+    unknown .code:n         =
       {
         \eb_put_hyperref:x
           {

Modified: trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls	2021-05-14 20:13:45 UTC (rev 59196)
+++ trunk/Master/texmf-dist/tex/latex/easybook/easybook.cls	2021-05-14 20:14:04 UTC (rev 59197)
@@ -13,7 +13,7 @@
 %%   https://creativecommons.org/licenses/by/4.0/legalcode
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 \RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplClass{easybook}{2021/05/12}{1.25h}{beta}
+\ProvidesExplClass{easybook}{2021/05/14}{1.25i}{beta}
 
 \cs_generate_variant:Nn \eb_ctex_define:nn { nx }
 \cs_generate_variant:Nn \int_to_arabic:n { v }
@@ -138,9 +138,10 @@
 \seq_map_inline:Nn \c__eb_options_path_seq
   {
     \ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} }
-    \cs_new:cpn {#1} ##1 { \keys_set:nn {ctex/#1} {##1} }
+    \cs_new:cpn {#1} ##1 { \keys_set:nn { ctex/#1 } {##1} }
   }
 \keys_define:nn { } { ctex/link .inherit:n = ctex/refset }
+\cs_set_eq:NN \link \refset
 \ctex_define:n
   {
     link .meta:nn                 = { ctex/link } {#1},
@@ -472,7 +473,7 @@
 \cs_new:Npn \eb_upper_number_mark_bool:nn #1#2
   {
     \bool_if:NT \l__eb_uppercase_bool
-      { \text_uppercase:n } { \use:c { eb_fancyhf_#1_mark:n } {#2} }
+      { \text_uppercase:n } {\use:c { eb_fancyhf_#1_mark:n } {#2}}
   }
 \cs_new:Npn \eb at number@markdouble #1#2
   {
@@ -568,7 +569,7 @@
       {
         \hbox:n
           {
-            \tl_if_eq:NnT \l__eb_fnmark_position_tl {super}
+            \tl_if_eq:NnT \l__eb_fnmark_position_tl { super }
               { \textsuperscript }{\@thefnmark}
             \tl_use:N \l__eb_fnmark_after_tl
           }
@@ -614,9 +615,10 @@
       { \int_use:N #1 }
   }
 
-\seq_const_from_clist:Nn \c__eb_toc_headings_level_seq
-  { part,chapter,section,subsection,list }
-\seq_map_inline:Nn \c__eb_toc_headings_level_seq
+\contentsuse{lstlisting}{lol}
+\seq_const_from_clist:Nn \c__eb_toc_heading_level_seq
+  { part,chapter,section,subsection,figure,table,lstlisting }
+\cs_new_protected:Npn \eb_toc_assign_keys:n #1
   {
     \ctex_define:n { tocset/#1 .meta:nn = { ctex/tocset/#1 } {##1} }
     \eb_ctex_define:nn { tocset }
@@ -630,8 +632,48 @@
         #1/rule .tl_set:c   = l__eb_toc_#1_rule_tl,
         #1/numsep .tl_set:c = eb at toc@#1 at numsep
       }
+    \seq_if_in:NnF \c__eb_toc_heading_level_seq { subsection }
+      {
+        \eb_ctex_define:nn { tocset }
+          { #1/belowoffset .dim_set:c = l__eb_toc_#1_offset_dim }
+      }
+    \seq_pop:NN \c__eb_toc_heading_level_seq \l_tmpa_tl
+    \titlecontents{#1}
+      [\use:c { l__eb_toc_#1_indent_tl }]
+      {\use:c { l__eb_toc_#1_format_tl }}
+      {
+        \ifbool{eb at titletoc@hang at fix}
+          {
+            \contentspush
+              {
+                \bool_if:NT \l__eb_toc_number_color_bool
+                  { \color{ctex at toc@number} }
+                \thecontentslabel
+                \hspace{\use:c { eb at toc@#1 at numsep }}
+              }
+          }{}
+      }{}
+      {\use:c { l__eb_toc_#1_rule_tl }}
   }
+\seq_map_function:NN
+\c__eb_toc_heading_level_seq \eb_toc_assign_keys:n
 
+\seq_const_from_clist:Nn \c__eb_toc_list_meta_keys_seq
+  { format,format+,format~+,indent,rule,numsep,belowoffset }
+\ctex_define:n { tocset/list .meta:nn = { ctex/tocset/list } {#1} }
+\seq_map_inline:Nn \c__eb_toc_list_meta_keys_seq
+  {
+    \eb_ctex_define:nn { tocset }
+      {
+        list/#1 .meta:n   =
+          {
+            figure/#1     = ##1,
+            table/#1      = ##1,
+            lstlisting/#1 = ##1
+          }
+      }
+  }
+
 \cs_new:Npn \EbNumberline #1
   {
     \CTEXifname
@@ -643,11 +685,8 @@
 \newbool{eb at titletoc@hang at fix}
 \eb_ctex_define:nn { tocset }
   {
-    list/lolskip .skip_set:N    = \l__eb_toc_lolskip_skip,
-    list/lolskip .initial:n     = 0.8pc,
-    list/belowoffset .dim_set:N = \l__eb_toc_listoffset_dim,
-    list/belowoffset .initial:n =
-      { \bool_if:NTF \l__eb_class_book_bool { 0pc } { 0.15pc } },
+    lolskip .skip_set:N     = \l__eb_toc_lolskip_skip,
+    lolskip .initial:n      = 0.8pc,
 
     belowoffset .dim_set:N  = \l__eb_toc_offset_dim,
     belowoffset .initial:n  =
@@ -657,7 +696,7 @@
       {
         \figurename\space #1
         \notbool{eb at titletoc@hang at fix}
-          {\hspace{\eb at toc@list at numsep}}{}
+          {\hspace{\eb at toc@figure at numsep}}{}
       },
     tocline-tab .cs_set:Np  = \eb at labelname@lot #1,
     tocline-tab .initial:n  =
@@ -664,7 +703,7 @@
       {
         \tablename\space #1
         \notbool{eb at titletoc@hang at fix}
-          {\hspace{\eb at toc@list at numsep}}{}
+          {\hspace{\eb at toc@table at numsep}}{}
       },
     tocline-lst .tl_set:N   = \eb at labelname@lol,
     tocline-lst .initial:n  =
@@ -671,7 +710,7 @@
       {
         \lstlistingname\space\thelstlisting
         \notbool{eb at titletoc@hang at fix}
-          {\hspace{\eb at toc@list at numsep}}{}
+          {\hspace{\eb at toc@lstlisting at numsep}}{}
       },
     line-align .bool_set:N  = \l__eb_toc_line_align_bool,
     line-align .default:n   = true,
@@ -726,6 +765,18 @@
         list/rule         = #1
       }
   }
+
+\NewDocumentCommand{\tocrule}{sO{0.7pc}D(){1.2}mO{}}
+  {
+    \normalsize\normalfont
+    \titlerule*[#2]{\scalebox{#3}{#4}}#5
+    \IfBooleanTF{#1}
+      {\thecontentspage}
+      {
+        \bool_if:NTF \l__eb_toc_line_align_bool
+          { \contentspage } { \thecontentspage }
+      }
+  }
 \ctex_set:nn { tocset }
   {
     part/format = \addvspace{1pc}\sffamily\large,
@@ -746,54 +797,13 @@
       { \bool_if:NTF \l__eb_class_book_bool { 3.8\ccwd } { 1.4\ccwd } },
     subsection/rule   = \tocrule{$\cdot$},
 
-    list/format = \addvspace{0.2pc},
-    list/indent = 0\ccwd,
-    list/rule   = \tocrule{$\cdot$}
+    list/format       = \addvspace{0.2pc},
+    list/indent       = 0\ccwd,
+    list/rule         = \tocrule{$\cdot$},
+    list/belowoffset  =
+      { \bool_if:NTF \l__eb_class_book_bool { 0pc } { 0.15pc } }
   }
 
-\NewDocumentCommand{\tocrule}{sO{0.7pc}D(){1.2}mO{}}
-  {
-    \normalsize\normalfont
-    \titlerule*[#2]{\scalebox{#3}{#4}}#5
-    \IfBooleanTF{#1}
-      {\thecontentspage}
-      {
-        \bool_if:NTF \l__eb_toc_line_align_bool
-          { \contentspage } { \thecontentspage }
-      }
-  }
-\cs_new_protected:Npn \eb_titlecontents_set:nn #1#2
-  {
-    \titlecontents{#1}
-      [\use:c { l__eb_toc_#2_indent_tl }]
-      {\use:c { l__eb_toc_#2_format_tl }}
-      {
-        \ifbool{eb at titletoc@hang at fix}
-          {
-            \contentspush
-              {
-                \bool_if:NT \l__eb_toc_number_color_bool
-                  { \color{ctex at toc@number} }
-                \thecontentslabel
-                \hspace{\use:c { eb at toc@#2 at numsep }}
-              }
-          }{}
-      }{}
-      {\use:c { l__eb_toc_#2_rule_tl }}
-  }
-\contentsuse{lstlisting}{lol}
-\clist_map_inline:nn
-  {
-    { part } { part },
-    { chapter } { chapter },
-    { section } { section },
-    { subsection } { subsection },
-    { figure } { list },
-    { table } { list },
-    { lstlisting } { list }
-  }
-  { \eb_titlecontents_set:nn #1 }
-
 \prop_new:N \l__eb_label_name_prop
 \prop_set_from_keyval:Nn \l__eb_label_name_prop
   {
@@ -1009,7 +1019,7 @@
     \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
     \eb_multoc_pre_bool:
     \eb_title_number_intoc_bool:nn {#2} {#1}
-    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_listoffset_dim
+    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_figure_offset_dim
     \vspace*{\dim_use:N \l__eb_toc_offset_dim}
     \@starttoc{lof}
     \eb_multoc_post_bool:
@@ -1022,7 +1032,7 @@
     \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
     \eb_multoc_pre_bool:
     \eb_title_number_intoc_bool:nn {#2} {#1}
-    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_listoffset_dim
+    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_table_offset_dim
     \vspace*{\dim_use:N \l__eb_toc_offset_dim}
     \@starttoc{lot}
     \eb_multoc_post_bool:
@@ -1035,7 +1045,7 @@
     \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
     \eb_multoc_pre_bool:
     \eb_title_number_intoc_bool:nn {#2} {#1}
-    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_listoffset_dim
+    \dim_add:NV \l__eb_toc_offset_dim \l__eb_toc_lstlisting_offset_dim
     \vspace*{\dim_use:N \l__eb_toc_offset_dim}
     \@starttoc{lol}
     \eb_multoc_post_bool:
@@ -1801,16 +1811,16 @@
 \bool_set_false:N \l__eb_toc_number_color_bool
 \eb_ctex_define:nn { refset }
   {
-    hyperlink .choice:,
-    hyperlink/edge .code:n    = { },
-    hyperlink/none .code:n    = \eb_put_hyperref:n { hidelinks },
-    hyperlink/various .code:n =
+    linktype .choice:,
+    linktype/edge .code:n       = { },
+    linktype/none .code:n       = \eb_put_hyperref:n { hidelinks },
+    linktype/various .code:n    =
       {
         \bool_set_true:N \l__eb_toc_number_color_bool
         \eb_put_hyperref:n { colorlinks }
       },
-    hyperlink .default:n      = edge,
-    hyperlink .initial:n      = edge,
+    linktype .value_required:n  = true,
+    linktype .initial:n         = edge,
 
     linktoc .choice:,
     linktoc/unknown .code:n =
@@ -1825,9 +1835,9 @@
               }
           }
       },
-    linktoc .default:n    = all,
-    linktoc .initial:n    = all,
-    unknown .code:n       =
+    linktoc .default:n      = all,
+    linktoc .initial:n      = all,
+    unknown .code:n         =
       {
         \eb_put_hyperref:x
           {



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