diff options
author | Karl Berry <karl@freefriends.org> | 2022-03-09 21:12:24 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-03-09 21:12:24 +0000 |
commit | 60118760d0eae7aae978f74f86103d03ca16ada7 (patch) | |
tree | 1932c7f1be4ad6c4d429437e12cd71e91a8f952b | |
parent | 451f5fba84b104d19a11b85053dc2cd1ba955730 (diff) |
easybook (9mar22)
git-svn-id: svn://tug.org/texlive/trunk@62555 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/easybook.pdf | bin | 586959 -> 592701 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/easybook.tex | 62 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/easybook/easybook.dtx | 475 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/easybook/easybase.sty | 471 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/easybook/easybook.cls | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg | 2 |
6 files changed, 510 insertions, 502 deletions
diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.pdf b/Master/texmf-dist/doc/latex/easybook/easybook.pdf Binary files differindex e17b80e4c52..fe31a2f5613 100644 --- a/Master/texmf-dist/doc/latex/easybook/easybook.pdf +++ b/Master/texmf-dist/doc/latex/easybook/easybook.pdf diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.tex b/Master/texmf-dist/doc/latex/easybook/easybook.tex index 20fd6cbb522..ae9ecb96b53 100644 --- a/Master/texmf-dist/doc/latex/easybook/easybook.tex +++ b/Master/texmf-dist/doc/latex/easybook/easybook.tex @@ -21,7 +21,7 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v1.642, + version = v1.643, date = 2022/03/08, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, @@ -322,7 +322,7 @@ \command{backmatter} 后记区命令。页码格式与编号保持不变,章标题不编号。 \command{cleardoublepage}[\oarg{页面风格}]\Default{empty} - 清双页命令可以确保下一页文本总在奇数页开始,在奇数页使用它会产生空白偶数页。文区命令 \cs{frontmatter} 和 \cs{mainmatter} 会用到清双页命令,在启用文类选项 \option*{openright} 时标题命令 \cs*{part} 和 \cs*{chapter} 也会用到清双页命令。 + 清双页命令可以确保下一页文本总在奇数页开始,在奇数页使用它会产生空白偶数页。文区命令 \cs{frontmatter} 和 \cs{mainmatter} 会用到清双页命令,在启用文类选项 \option*{openright} 时标题命令 \cs*{part} 和 \cs*{chapter} 也会默认用到清双页命令。 \command{blankpagestyle}[\marg{页面风格}] 多出空白页的 \meta{页面风格} 用空白页面风格命令 \cs{blankpagestyle} 全局指定,或使用清双页命令的可选参数局部指定。空白页默认的风格为 \code{empty},即空的页眉页脚。 \end{commands} @@ -793,7 +793,7 @@ 模块 \module*{hdrset} 还可以灵活调整脚注编号和内容的格式。格式主要包括脚注标记的编号类型、字体、附加符号、对齐方式和缩进距离等,以及脚注内容的首行缩进、行距和字体等。基本思想是默认脚注和自定义编号脚注标记的格式分离,两种类型脚注各自正文和内容的标记又共享格式,默认脚注中正文和内容标记的编号类型分离。 \begin{options} \keychoice{footnotetype}{hang,default,flush,bottom}\Module{hdrset}\Default{hang} - 脚注的类型。悬挂缩进 \code{hang} 是默认值,\code{default} 是原始的类型,\code{flush} 使脚注内容标记位于脚注首行边缘外侧并右对齐。在一些浮动体排版的情况下,脚注可能位于页面中间,\code{bottom} 使脚注始终位于页面底端。其中 \code{bottom} 是复合选项,可以与前三种类型重复或复合使用: + 脚注的类型。悬挂缩进 \code{hang} 是默认值,\code{default} 是原始的类型,\code{flush} 使脚注内容标记位于脚注首行边缘外侧并右对齐。当存在浮动环境排版时,脚注可能位于页面中间,\code{bottom} 使脚注始终位于页面底端。其中 \code{bottom} 是复合选项,可以与前三种类型重复或复合使用: \begin{ctexexam} \ebhdrset{footnotetype = default,footnotetype = bottom} \ebhdrset{footnotetype = {hang,bottom}} @@ -892,7 +892,7 @@ \subsection{目录样式} \label{subsec:catalog style} -模块 \module*{tocset} 将使用 \pkg*{titletoc} 宏包处理目录样式。模块或扩展包括了 \module*{part}、\module*{chapter}、\module*{section}、\module*{subsection}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 二级路径,而使用 \module*{list} 路径可以统一设置图片、表格和代码目录的样式。选项前带有 \ding{73} 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{tocset} 路径下。目前支持标准的论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。 +模块 \module*{tocset} 将使用 \pkg*{titletoc} 宏包处理目录样式。默认包括 \module*{part}、\module*{chapter}、\module*{section}、\module*{subsection}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 二级路径,而使用 \module*{float} 路径可以统一设置图片、表格和代码目录的样式。选项前带有 \ding{73} 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{tocset} 一级路径下。目前支持标准的论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。 \begin{options} \keyval{tocformat}{条目格式}\dtag\smodule{tocset}% 目录中各级别条目的格式。可以设置条目字体和加入垂直间距等,垂直间距最好使用防止垂直间距重合的 \cs*{addvspace} 命令。 @@ -902,12 +902,16 @@ 目录条目左边的缩进距离,通常标题级别越低缩进越大。 \keyval{tocrule}{引导线命令}\dtag 引导线选项 \option{tocrule} 中一般可以使用基于 \cs*{xleaders} 命令的 \cs{tocrule} 绘制引导线。 + \begin{commands} + \command{tocrule}[\sarg\harg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}] + 生成目录引导线的命令,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令与 \keyis{dotalign}{false} 效果相同。带有 \harg{} 号的命令不添加引导线后的目录页码。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 为 \meta{引导点} 的放大倍数。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数为页码编号。 + \end{commands} \keyval{tocafter}{距离命令}\dtag\Default{\cs*{hspace}\Marg{1em}} 目录条目编号与标题间的代码,默认为插入 \code{1em} 横向距离。 \keyval{tocbelow}{距离命令}\dtag\newtag% 在目录条目下方执行的代码,可以插入垂直距离等命令。 \keyval{tocline}{条目定义}\dtag[\textcolor{red}{\ding{73}}] - 这个选项扩展了图片、表格或代码题注在目录文件中的定义。选项中参数 \code{\#1} 代表相应题注编号 \cs*{the}\meta{计数器} 的值,参数 \code{\#2} 代表相应题注内容。 + 这个选项在章节标题基础上扩展了浮动环境的题注在目录文件中的定义。选项中参数 \code{\#1} 代表相应题注编号 \cs*{the}\meta{计数器} 的值,参数 \code{\#2} 代表相应题注内容。 \begin{ctexexam} \ctexset { @@ -924,14 +928,23 @@ \begin{commands} \command{RegisterTocName}[\marg{条目名}]\newtag% - 给 \meta{条目名} 注册上述设置目录样式的选项,选项前有红色的符号 \textcolor{red}{\ding{73}} 表示目前在注册后不可用。 + 给名称为 \meta{条目名} 的浮动环境注册设置目录样式的选项,选项前有符号 \ding{73} 表示在注册后可用。 \command{contentsuse}[\marg{条目名}\marg{扩展名}] - 激活名为 \meta{条目名} 的目录条目定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。 - \command{tocrule}[\sarg\harg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}] - 生成目录引导线的命令,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令会使当前级别的目录引导线右端与页码相连而不是对齐。带有 \harg{} 号的命令不添加引导线后的目录页码。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 不带单位,为 \meta{引导点} 的放大倍数,\meta{引导点} 一般为英文句号或 \cs*{cdot} 中心点符号。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数为页码编号。 + 激活名称为 \meta{条目名} 的浮动环境目录定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。 + \command{DeclareFloatList}[\marg{条目名}\marg{扩展名}]\newtag% + 声明一个新的 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}} 的浮动环境目录命令,并且支持\ref{sec:document command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,推荐搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有符号 \textcolor{red}{\ding{73}} 表示在声明后可用。下面举一个声明算法目录的例子: + \begin{ctexexam} + \usepackage{newfloat} + \DeclareFloatingEnvironment[ + fileext = loa, + listname = 算法清单 + ]{algorithm} + \DeclareFloatList{algorithm}{loa} + \listofalgorithms[multoc] % 在正文中输出双栏算法目录 + \end{ctexexam} \command{listnumberline}[\marg{条目名}] - 在图片、表格或代码目录中插入条目编号的命令,默认包含与题注名相同的标签名。其中 \meta{条目名} 需要显示指定,即为 \code{figure}、\code{table} 或 \code{lstlisting}。关于命令的用法可见\ref{exam:list command usage}。 - \begin{ctexexam}[labelref = exam:list command usage] + 在图表等浮动环境目录中插入条目标签和编号,默认标签可以由格式命令 \cs{labelformat} 设置。注意其中 \meta{条目名} 需要用对应名称\textbf{显示指定}。 + \begin{ctexexam} \ctexset { figure/tocline = \listnumberline{figure}#2, @@ -945,8 +958,8 @@ 悬挂缩进选项 \option{hang} 使目录条目为悬挂缩进形式。缩进距离为条目编号及其与标题间距的长度和。这个选项对所有条目名同时生效。 \keyval{lolskip}{弹性长度}\Default{10pt} 代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。 - \keyval{between}{代码钩子} - 目录标题与内容间的钩子(作用于标题下方间距之后),一般插入负的垂直距离代码用于抵消目录首行额外的垂直间距。一级路径此选项对应文档主目录的钩子,二级路径为 \module*{figure}、\module*{table} 和 \module*{lstlisting},或者用位于 \module*{list} 路径的此选项统一设置相应类型目录的钩子。 + \keyval{between}{代码钩子}\dtag[\textcolor{red}{\ding{73}}] + 目录标题与内容间的钩子(作用于标题下方间距之后),一般插入负的垂直距离代码用于抵消目录首行额外的垂直间距。一级路径此选项对应文档主目录的钩子,二级路径为浮动环境的 \meta{条目名}。 \keyval{bibetween}{代码钩子}\newtag% 与选项 \option{between} 类似,是位于一级路径的英文文档主目录(如果启用)代码钩子。 \keybool{dotalign}\Default{true} @@ -1140,13 +1153,13 @@ \subsection{计数器} \begin{commands}\noitemsep \command{newcounter}[\marg{计数器}\oarg{父计数器}]\default{} - \command{counteruse}[\sarg\oarg{父计数器}\darg{编号}\marg{计数器}\oarg{分隔符}\darg{整数}] - 命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,计数器值输出命令 \cs{counteruse} 以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器} 输出这种计数器的值。命令 \cs{counteruse} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加1,带有星号的命令使 \meta{计数器} 值保持不变,\meta{计数器} 的值也可以设为指定的 \meta{整数}。计数器的 \meta{编号} 为 \code{arabic} 或 \code{alph} 等计数形式。 + \command{counteruse}[\sarg\oarg{编号}\darg{分隔符}\marg{计数器}\oarg{父计数器}] + 命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,计数器值输出命令 \cs{counteruse} 将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器} 形式输出这种计数器的值。命令 \cs{counteruse} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加1,带有星号参数的命令使 \meta{计数器} 的值保持不变。计数器的 \meta{编号} 为 \code{arabic} 或 \code{alph} 等计数形式。 在一定的场合下可能用到 \cs{counteruse} 命令,比如通过新建快捷命令在一些位置使用定理环境的计数器,使用 \cs{labelformat} 设置计数器的标签引用需添加 \code{eb@}: \begin{ctexexam} \labelformat{eb@theorem}{定理#1} - \newcommand{\theoremhead}[1]{定理\counteruse[chapter]{theorem}\hspace{1em}#1} + \newcommand{\theoremhead}[1]{定理\counteruse{theorem}[chapter]\hspace{1em}#1} \theoremhead{定理内容}\label{thm:theorem} \end{ctexexam} \command{counterwithin}[\sarg\oarg{格式}\marg{计数器}\marg{父计数器}] @@ -1162,7 +1175,7 @@ \subsection{标签引用} \begin{commands} \command{labelformat}[\marg{计数器}\marg{标签引用格式}] - 标签格式命令 \cs{labelformat} 可以设置标签引用格式,\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。也可以使用 \pkg*{cleveref} 宏包提供更强大的标签功能。 + 标签格式命令 \cs{labelformat} 可以设置标签引用格式。\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。也可以使用 \pkg*{cleveref} 宏包提供更强大的标签功能。 \command{AtEndPreamble}[\marg{钩子代码}] 导言区末尾的钩子命令。为了保证兼容性 \pkg*{hyperref} 宏包被设计在导言区末尾载入,一些情况下需要合适的钩子在 \pkg*{hyperref} 后方执行 \meta{钩子代码},例如载入 \pkg*{cleveref} 宏包。 \begin{ctexexam} @@ -1182,7 +1195,7 @@ \command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{} \command{captionof}[\sarg\marg{条目名}\oarg{目录标题}\marg{标题}]\default{} \command{bicaption}[\sarg\oarg{目录中文标题}\marg{中文标题}\oarg{目录英文标题}\marg{英文标题}] - 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动体环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。 + 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。 \end{commands} \subsection{化学式} @@ -1237,13 +1250,17 @@ \subsection{索引} \begin{commands} \command*{indexsetup}[\marg{键值列表}] - \pkg*{imakeidx} 宏包增强了索引的功能,这是它的的接口命令,用于设置索引表的整体格式。 + \pkg*{imakeidx} 宏包增强了索引的功能。这是它的的接口命令,用于设置索引表的整体格式。 \command*{index}[\oarg{索引名}\marg{标签}] - 索引标签命令 \cs*{index} 的 \meta{索引名} 与索引打印命令 \cs{printindex} 一致,可以存在多个索引表。 + 索引标签命令 \cs*{index} 的 \meta{索引名} 与索引输出命令 \cs{printindex} 一致,可以存在多个索引表。 \command*{makeindex}[\oarg{键值列表}] 使用 \cs*{makeindex} 命令开启索引收集。这个命令可以重复使用打印多个索引表,以不同的 \meta{索引名} 作为区分,如果仅打印一个索引表就没必要再使用。 - \command{printindex}[\sarg\oarg{键值列表}\darg{索引名}] - 现在索引表生成命令 \cs{printindex} 被重新定义,\meta{键值列表} 中的选项与\ref{sec:document command} 其它目录命令相同,但是原本接口命令 \cs*{indexsetup} 的部分选项失效。 + \command{printindex}[\sarg\oarg{键值列表}] + 现在索引表生成命令 \cs{printindex} 被重新定义。\meta{键值列表} 中的选项与\ref{sec:document command} 其它目录命令相同,但是原本接口命令 \cs*{indexsetup} 的部分选项失效。 + \begin{options} + \keyval{name}{索引名} + 指定输出名为 \meta{索引名} 的索引表,如果只使用一个索引表则默认为项目文件名不需要指定。 + \end{options} \end{commands} \subsection{边注} @@ -1301,6 +1318,7 @@ \item 增加英文主文档目录钩子选项 \option{bibetween}。 \end{version} \shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。} + \shortversion{v = 1.643,date = 2022/03/08,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。} \end{changelog} \nocite{*} diff --git a/Master/texmf-dist/source/latex/easybook/easybook.dtx b/Master/texmf-dist/source/latex/easybook/easybook.dtx index 54cc9221758..660f3e63751 100644 --- a/Master/texmf-dist/source/latex/easybook/easybook.dtx +++ b/Master/texmf-dist/source/latex/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2022/03/08}{1.642} +\ProvidesExplClass{easybook}{2022/03/08}{1.643} {Easily typesetting Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -303,7 +303,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2022/03/08}{1.642} +\ProvidesExplPackage{easybase}{2022/03/08}{1.643} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -447,18 +447,21 @@ } } -\eb_seq_map_inline:nn +\seq_set_from_clist:Nn \l__eb_module_paths_seq { style,subfont,spread, - refset,bibset,thmset, - geoset,hdrset,tocset,list + bibset,thmset,tocset, + hdrset,refset,geoset,float } +\seq_map_inline:Nn \l__eb_module_paths_seq { \ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} } \cs_new_protected:cpn { eb#1 } ##1 { \ctex_set:nn {#1} {##1} } } -\eb_seq_map_inline:nn - { style,subfont,spread,bibset,thmset,hdrset,tocset } +\bool_until_do:nn + { \int_compare_p:nNn { \seq_count:N \l__eb_module_paths_seq } < { 8 } } + { \seq_pop_right:NN \l__eb_module_paths_seq \l_tmpa_tl } +\seq_map_inline:Nn \l__eb_module_paths_seq { \msg_new:nnn { easybase } { deprecated-#1 } { @@ -1196,193 +1199,6 @@ \cs_new:Npn \eb@footmisc@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi } \cs_set:Npn \thempfootnote { \int_to_alph:n { \c@mpfootnote } } -\contentsuse{lstlisting}{lol} -\seq_put_left:Nn \c__ctex_headings_seq { chapter } -\seq_put_right:Nn \c__ctex_headings_seq { figure } -\seq_put_right:Nn \c__ctex_headings_seq { table } -\seq_put_right:Nn \c__ctex_headings_seq { lstlisting } -\seq_remove_duplicates:N \c__ctex_headings_seq -\ctex_define:n { lstlisting/#1 .meta:nn = { ctex/#1 } {##1} } -\ctex_define:n { figure/#1 .meta:nn = { ctex/#1 } {##1} } -\ctex_define:n { table/#1 .meta:nn = { ctex/#1 } {##1} } -\ctex_define:n { list/#1 .meta:nn = { ctex/#1 } {##1} } -\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1 - { - \bool_if:NTF \l__eb_toc_entry_hang_bool - { \contentspush } - { \use:n } - { - \bool_if:NTF \l__eb_toc_number_color_bool - { \textcolor{ctex@toc@number} } - { \use:n } - { \thecontentslabel } - \tl_use:c { l__eb_toc_#1_after_tl } - } - } -\cs_new_protected:Npn \RegisterTocName #1 - { - \ctex_define:n - { - #1/tocformat .tl_set:c = l__eb_toc_#1_format_tl, - #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, - #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, - #1/tocindent .dim_set:c = l__eb_toc_#1_indent_dim, - #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl, - #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl, - #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl - } - \titlecontents{#1} - [\dim_use:c { l__eb_toc_#1_indent_dim }] - {\tl_use:c { l__eb_toc_#1_format_tl }} - {\eb_toc_entry_if_hang:n {#1}}{} - {\tl_use:c { l__eb_toc_#1_rule_tl }} - [\tl_use:c { l__eb_toc_#1_below_tl }] - } -\seq_map_function:NN -\c__ctex_headings_seq \RegisterTocName -\eb_seq_map_inline:nn - { figure,table,lstlisting } - { - \ctex_define:n - { - #1/between .tl_set:c = l__eb_toc_#1_between_hook_tl, - #1/tocline .cs_set:cp = { eb@tocline@#1 } ##1##2, - } - } -\eb_seq_map_inline:nn - { - tocformat,tocformat+,tocformat~+, - tocindent,tocrule,tocline,tocafter,between - } - { - \ctex_define:n - { - list/#1 .meta:n = - { - figure/#1 = ##1,table/#1 = ##1, - lstlisting/#1 = ##1 - } - } - } -\eb_seq_map_inline:nn - { tocafter,tocindent,tocrule } - { - \ctex_define:nn { tocset } - { - #1-every .code:n = - { - \ctex_set:n - { - part/#1 = ##1,chapter/#1 = ##1, - section/#1 = ##1,subsection/#1 = ##1, - list/#1 = ##1 - } - } - } - } - -\ctex_define:nn { tocset } - { - lolskip .skip_set:N = \eb@toc@lol@skip, - lolskip .initial:n = 10pt, - between .tl_set:N = \l__eb_toc_main_between_hook_tl, - between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, - bibetween .tl_set:N = \l__eb_toc_bimain_between_hook_tl, - bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, - dotalign .bool_set:N = \l__eb_toc_dot_align_bool, - dotalign .default:n = true, - dotalign .initial:n = true, - hang .bool_set:N = \l__eb_toc_entry_hang_bool, - hang .default:n = true, - hang .initial:n = true, - pagenumwd .code:n = \contentsmargin{#1}, - pagenumwd .initial:n = 1.55em, - unknown .code:n = \eb_msg_deprecated_option:n { tocset } - } -\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}} - { - \normalsize\normalfont - \titlerule*[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6 - \bgroup - \IfBooleanF{#2} - { - \IfBooleanTF{#1} - {\thecontentspage} - { - \bool_if:NTF \l__eb_toc_dot_align_bool - { \contentspage } - { \thecontentspage } - } - } - \egroup - } -\cs_new:Npn \p@numberline { \protect\numberline } -\cs_new:Npn \listnumberline #1 - { \p@numberline{\use:c { #1name }~\use:c { the#1 }} } -\ctex_set:n - { - part = - { - tocformat = \addvspace{1pc}\sffamily\large, - tocindent = 0em, - tocrule = \tocrule{}[\bfseries], - tocline = \CTEXnumberline{#1}#2 - }, - chapter = - { - tocformat = \addvspace{1pc}\sffamily, - tocindent = 0em, - tocrule = \tocrule{$\cdot$}[\bfseries], - tocline = \CTEXnumberline{#1}#2 - }, - section = - { - tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily }, - tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em }, - tocrule = - { - \bool_if:NTF \l__eb_class_mode_book_bool - { \tocrule{$\cdot$} } - { \tocrule{$\cdot$}[\bfseries] } - } - }, - subsection = - { - tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em }, - tocrule = \tocrule{$\cdot$} - }, - list = - { - tocindent = 0em, - tocrule = \tocrule{$\cdot$}, - between = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-10pt} } - }, - table/tocline = \listnumberline{table}#2, - figure/tocline = \listnumberline{figure}#2, - lstlisting/tocline = \listnumberline{lstlisting}#2, - tocset/tocafter-every = \hspace{1em} - } -\prop_new:N \l__eb_list_label_entry_prop -\prop_set_from_keyval:Nn \l__eb_list_label_entry_prop - { - figure = \eb@tocline@figure, - table = \eb@tocline@table - } -\cs_gset:Npn \caption@@@addcontentsline #1#2#3#4 - { - \addcontentsline{#1}{#2} - {\prop_item:Nn \l__eb_list_label_entry_prop {#2}{#3}{#4}} - } -\ctex_patch_cmd:Nnn \lst@MakeCaption - { - \addcontentsline{lol}{lstlisting} - {\protect\numberline{\thelstlisting}\lst@@caption} - } - { - \addcontentsline{lol}{lstlisting} - {\eb@tocline@lstlisting{\thelstlisting}{\lst@@caption}} - } - \newcounter{bichapter} \newcounter{bisection}[bichapter] \newcounter{bisubsection}[bisection] @@ -1394,14 +1210,13 @@ \use:c { p@#1 } { the#1 } } } -\NewDocumentCommand{\counteruse}{soD(){arabic}mO{.}d()} +\NewDocumentCommand{\counteruse}{sO{arabic}D(){.}mod()} { \IfBooleanF{#1}{\stepcounter{#4}} - \IfValueT{#6}{\setcounter{#4}{#6}} \tl_set:cn { theeb@#4 } { - \IfValueT{#2}{\use:c { the#2 }#5} - \use:c {#3}{#4} + \IfValueT{#5}{\use:c { the#5 }#3} + \use:c {#2}{#4} } \tl_use:c { theeb@#4 } \eb_current_label:n { eb@#4 } @@ -1415,7 +1230,6 @@ \cs_set:Npn \thebisection { \eb_section_counter_prefix:n { bi } } \cs_set:Npn \thebisubsection { \thebisection.\@arabic\c@bisubsection } \cs_set:Npn \thesection { \eb_section_counter_prefix:n { } } - \contentsuse{}{tec} \tl_new:N \eb@before@addbitoc@hook \NewDocumentCommand{\BeforeAddBitoc}{sm} @@ -1491,7 +1305,7 @@ } \tl_new:N \eb@bitoc@title -\keys_define:nn { eb/listoc } +\keys_define:nn { eb/floattoc } { level .tl_set:N = \eb@toc@title@level, level .initial:n = @@ -1526,11 +1340,13 @@ plan .initial:n = cn, columns .meta:n = { multoc = #1 }, title .code:n = \eb_assign_toc_title:n {#1}, - bilist .tl_gset:N = \g__eb_bilist_permute_value_tl + bilist .tl_gset:N = \g__eb_bilist_permute_value_tl, + name .tl_set:N = \l__eb_print_index_name_tl, + name .initial:n = \imki@jobname } \bool_if:NTF \l__eb_class_mode_book_bool - { \keys_define:nn { } { eb/listoc .inherit:n = ctex/chapter } } - { \keys_define:nn { } { eb/listoc .inherit:n = ctex/section } } + { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/chapter } } + { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/section } } \NewDocumentCommand{\eb_assign_toc_title:n} {>{\SplitArgument{1}{,}}m} {\eb_assign_toc_title_judge:nn #1} @@ -1541,13 +1357,7 @@ { \tl_clear:N \eb@bitoc@title } { \tl_set:Nn \eb@bitoc@title {#2} } } -\cs_new_protected:Npn \eb_biber_toc_title:n #1 - { - \bool_if:NTF \l__eb_class_mode_book_bool - { \bichapter*{#1}{\eb@bib@bitoc@title} } - { \bisection*{#1}{\eb@bib@bitoc@title} } - \sectionmark{#1} - } +\prop_new:N \l__eb_toc_float_label_prop \cs_new_protected:Npn \eb_toc_start_multi_column_ext:n #1 { \int_compare:nNnTF { \l__eb_toc_columns_int } > { 1 } @@ -1568,29 +1378,60 @@ \IfBooleanF{#1} {\eb@toc@title@level{\eb@toc@title}{\eb@bitoc@title}} } -\cs_new_protected:Npn \eb_toc_list_parse:nnnnn #1#2#3#4#5 +\cs_new_protected:Npn \eb_toc_float_list_parse:nnnnn #1#2#3#4#5 { \group_begin: \tl_set_eq:Nc \eb@toc@title { list#4name } - \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} \eb_toc_title_level_cmd:n {#1} \eb_toc_if_title_between_hook:nn {#1} {#4} \eb_toc_start_multi_column_ext:n {#5} \group_end: } -\cs_new_protected:Npn \eb_list_content_cmd_set:nn #1#2 +\cs_new:Npn \listnumberline #1 + { + \protect\numberline + { + \exp_args:Nnv + \use:c { p@#1 } { the#1 } + } + } +\cs_new_protected:Npn \DeclareFloatList #1#2 { \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st+o} - {\eb_toc_list_parse:nnnnn {##1} {##2} {##3} {#1} {#2}} + {\eb_toc_float_list_parse:nnnnn {##1} {##2} {##3} {#1} {#2}} + \ctex_define:n + { + #1/##1 .meta:nn = { ctex/##1 } {####1}, + #1/between .tl_set:c = l__eb_toc_#1_between_hook_tl, + #1/tocline .cs_set:cp = { eb@tocline@#1 } ##1##2, + #1/tocline .initial:n = \listnumberline{#1}##2 + } + \prop_put_from_keyval:Nn \l__eb_toc_float_label_prop + { #1 = \use:c { eb@tocline@#1 } } } -\eb_seq_map_inline:nn +\DeclareFloatList{table}{lot} +\DeclareFloatList{figure}{lof} +\DeclareFloatList{lstlisting}{lol} +\cs_gset:Npn \caption@@@addcontentsline #1#2#3#4 { - { figure } { lof }, - { table } { lot }, - { lstlisting } { lol } + \addcontentsline{#1}{#2} + { + \prop_if_in:NnTF \l__eb_toc_float_label_prop {#2} + { \prop_item:Nn \l__eb_toc_float_label_prop {#2} } + { \protect\numberline } + {#3}{#4} + } + } +\ctex_patch_cmd:Nnn \lst@MakeCaption + { + \addcontentsline{lol}{lstlisting} + {\protect\numberline{\thelstlisting}\lst@@caption} + } + { + \addcontentsline{lol}{lstlisting} + {\eb@tocline@lstlisting{\thelstlisting}{\lst@@caption}} } - { \eb_list_content_cmd_set:nn #1 } -\cs_set_eq:NN \listoflistings \listoflstlistings \ctex_define:n { bicontentsname .tl_set:N = \bicontentsname, @@ -1607,7 +1448,7 @@ { \chapter* } { \section* } } - \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} \bool_if:NT \l__eb_toc_plan_cn_bool { \IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}} @@ -1623,22 +1464,169 @@ \group_end: } +\contentsuse{lstlisting}{lol} +\seq_put_left:Nn \c__ctex_headings_seq { chapter } +\seq_put_right:Nn \c__ctex_headings_seq { table } +\seq_put_right:Nn \c__ctex_headings_seq { figure } +\seq_put_right:Nn \c__ctex_headings_seq { lstlisting } +\seq_remove_duplicates:N \c__ctex_headings_seq +\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1 + { + \bool_if:NTF \l__eb_toc_entry_hang_bool + { \contentspush } + { \use:n } + { + \bool_if:NTF \l__eb_toc_number_color_bool + { \textcolor{ctex@toc@number} } + { \use:n } + { \thecontentslabel } + \tl_use:c { l__eb_toc_#1_after_tl } + } + } +\cs_new_protected:Npn \RegisterTocName #1 + { + \ctex_define:n + { + #1/tocformat .tl_set:c = l__eb_toc_#1_format_tl, + #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, + #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, + #1/tocindent .dim_set:c = l__eb_toc_#1_indent_dim, + #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl, + #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl, + #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl + } + \titlecontents{#1} + [\dim_use:c { l__eb_toc_#1_indent_dim }] + {\tl_use:c { l__eb_toc_#1_format_tl }} + {\eb_toc_entry_if_hang:n {#1}}{} + {\tl_use:c { l__eb_toc_#1_rule_tl }} + [\tl_use:c { l__eb_toc_#1_below_tl }] + } +\seq_map_function:NN +\c__ctex_headings_seq \RegisterTocName +\eb_seq_map_inline:nn + { + tocformat,tocformat+,tocformat~+, + tocindent,tocrule,tocline,tocafter,between + } + { + \ctex_define:n + { + float/#1 .meta:n = + { + figure/#1 = ##1,table/#1 = ##1, + lstlisting/#1 = ##1 + } + } + } +\eb_seq_map_inline:nn + { tocafter,tocindent,tocrule } + { + \ctex_define:nn { tocset } + { + #1-every .code:n = + { + \ctex_set:n + { + part/#1 = ##1,chapter/#1 = ##1, + section/#1 = ##1,subsection/#1 = ##1, + float/#1 = ##1 + } + } + } + } +\ctex_define:nn { tocset } + { + lolskip .skip_set:N = \eb@toc@lol@skip, + lolskip .initial:n = 10pt, + between .tl_set:N = \l__eb_toc_main_between_hook_tl, + between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, + bibetween .tl_set:N = \l__eb_toc_bimain_between_hook_tl, + bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, + dotalign .bool_set:N = \l__eb_toc_dot_align_bool, + dotalign .default:n = true, + dotalign .initial:n = true, + hang .bool_set:N = \l__eb_toc_entry_hang_bool, + hang .default:n = true, + hang .initial:n = true, + pagenumwd .code:n = \contentsmargin{#1}, + pagenumwd .initial:n = 1.55em, + unknown .code:n = \eb_msg_deprecated_option:n { tocset } + } +\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}} + { + \normalsize\normalfont + \titlerule*[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6 + \bgroup + \IfBooleanF{#2} + { + \IfBooleanTF{#1} + {\thecontentspage} + { + \bool_if:NTF \l__eb_toc_dot_align_bool + { \contentspage } + { \thecontentspage } + } + } + \egroup + } +\ctex_set:n + { + part = + { + tocformat = \addvspace{1pc}\sffamily\large, + tocindent = 0em, + tocrule = \tocrule{}[\bfseries], + tocline = \CTEXnumberline{#1}#2 + }, + chapter = + { + tocformat = \addvspace{1pc}\sffamily, + tocindent = 0em, + tocrule = \tocrule{$\cdot$}[\bfseries], + tocline = \CTEXnumberline{#1}#2 + }, + section = + { + tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily }, + tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em }, + tocrule = + { + \bool_if:NTF \l__eb_class_mode_book_bool + { \tocrule{$\cdot$} } + { \tocrule{$\cdot$}[\bfseries] } + } + }, + subsection = + { + tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em }, + tocrule = \tocrule{$\cdot$} + }, + float = + { + tocindent = 0em, + tocrule = \tocrule{$\cdot$}, + between = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-10pt} } + }, + tocset/tocafter-every = \hspace{1em} + } + \ctex_at_end_package:nn { imakeidx } { \makeindex - \RenewDocumentCommand{\printindex}{st+oD(){\imki@jobname}} + \RenewDocumentCommand{\printindex}{st+od()} { \group_begin: \tl_set_eq:NN \eb@toc@title \indexname \cs_set_eq:NN \imki@indexlevel \use_none:n \setkeys{imkiindex}{noclearpage} - \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} \cs_set_protected:Npn \imki@indexheaders { \eb_toc_title_level_cmd:n {#1} \cs_set_eq:NN \thispagestyle \use_none:n } - \imki@putindex{#4} + \imki@putindex{\l__eb_print_index_name_tl} \group_end: } } @@ -1690,9 +1678,9 @@ \ctex_define:nn { subfont } { - caption-table .tl_set:N = \l__eb_subfont_cap_table_tl, - caption-figure .tl_set:N = \l__eb_subfont_cap_figure_tl, - caption-listing .tl_set:N = \l__eb_subfont_cap_listing_tl, + caption-table .tl_set:N = \l__eb_subfont_caption_table_tl, + caption-figure .tl_set:N = \l__eb_subfont_caption_figure_tl, + caption-listing .tl_set:N = \l__eb_subfont_caption_listing_tl, caption-every .meta:n = { caption-table = #1,caption-figure = #1, @@ -1709,16 +1697,16 @@ \str_case:nnF {#1} { { table } - { \tl_put_right:Nn \l__eb_subfont_cap_table_tl {#2} } + { \tl_put_right:Nn \l__eb_subfont_caption_table_tl {#2} } { figure } - { \tl_put_right:Nn \l__eb_subfont_cap_figure_tl {#2} } + { \tl_put_right:Nn \l__eb_subfont_caption_figure_tl {#2} } { listing } - { \tl_put_right:Nn \l__eb_subfont_cap_listing_tl {#2} } + { \tl_put_right:Nn \l__eb_subfont_caption_listing_tl {#2} } { every } { - \tl_put_right:Nn \l__eb_subfont_cap_table_tl {#2} - \tl_put_right:Nn \l__eb_subfont_cap_figure_tl {#2} - \tl_put_right:Nn \l__eb_subfont_cap_listing_tl {#2} + \tl_put_right:Nn \l__eb_subfont_caption_table_tl {#2} + \tl_put_right:Nn \l__eb_subfont_caption_figure_tl {#2} + \tl_put_right:Nn \l__eb_subfont_caption_listing_tl {#2} } } { \tl_put_right:cn { l__eb_subfont_#1_tl } {#2} } @@ -1738,9 +1726,9 @@ math .initial:n = 1.354, footnote .fp_set:N = \l__eb_spread_footnote_fp, footnote .initial:n = 1.2, - caption-table .fp_set:N = \l__eb_spread_cap_table_fp, - caption-figure .fp_set:N = \l__eb_spread_cap_figure_fp, - caption-listing .fp_set:N = \l__eb_spread_cap_listing_fp, + caption-table .fp_set:N = \l__eb_spread_caption_table_fp, + caption-figure .fp_set:N = \l__eb_spread_caption_figure_fp, + caption-listing .fp_set:N = \l__eb_spread_caption_listing_fp, caption-every .meta:n = { caption-table = #1,caption-figure = #1, @@ -1761,8 +1749,8 @@ { \DeclareCaptionFont{eb@#1@font} { - \setspread{\fp_use:c { l__eb_spread_cap_#1_fp }} - \tl_use:c { l__eb_subfont_cap_#1_tl } + \setspread{\fp_use:c { l__eb_spread_caption_#1_fp }} + \tl_use:c { l__eb_subfont_caption_#1_tl } } } \captionsetup @@ -2043,7 +2031,7 @@ { \group_begin: \tl_set_eq:NN \eb@toc@title \bibname - \IfValueT{##3}{ \keys_set:nn { eb/listoc } {##3} } + \IfValueT{##3}{ \keys_set:nn { eb/floattoc } {##3} } \cs_set_protected:Npn \bibsection { \eb_toc_title_level_cmd:n {##1} @@ -2059,6 +2047,13 @@ } \cs_new_protected:Npn \eb_put_biblatex:n #1 { \PassOptionsToPackage{#1}{biblatex} } +\cs_new_protected:Npn \eb_biber_toc_title:n #1 + { + \bool_if:NTF \l__eb_class_mode_book_bool + { \bichapter*{#1}{\eb@bib@bitoc@title} } + { \bisection*{#1}{\eb@bib@bitoc@title} } + \sectionmark{#1} + } \cs_new_protected:Npn \eb_biber_biblatex_set: { \str_case:VnF \l__eb_bib_both_style_tl @@ -2317,7 +2312,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/08}{1.642} +\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/08}{1.643} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/Master/texmf-dist/tex/latex/easybook/easybase.sty b/Master/texmf-dist/tex/latex/easybook/easybase.sty index 9c405313159..a272e34af37 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybase.sty +++ b/Master/texmf-dist/tex/latex/easybook/easybase.sty @@ -20,7 +20,7 @@ %% This work has the LPPL maintenance status `maintained'. \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2022/03/08}{1.642} +\ProvidesExplPackage{easybase}{2022/03/08}{1.643} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -164,18 +164,21 @@ } } -\eb_seq_map_inline:nn +\seq_set_from_clist:Nn \l__eb_module_paths_seq { style,subfont,spread, - refset,bibset,thmset, - geoset,hdrset,tocset,list + bibset,thmset,tocset, + hdrset,refset,geoset,float } +\seq_map_inline:Nn \l__eb_module_paths_seq { \ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} } \cs_new_protected:cpn { eb#1 } ##1 { \ctex_set:nn {#1} {##1} } } -\eb_seq_map_inline:nn - { style,subfont,spread,bibset,thmset,hdrset,tocset } +\bool_until_do:nn + { \int_compare_p:nNn { \seq_count:N \l__eb_module_paths_seq } < { 8 } } + { \seq_pop_right:NN \l__eb_module_paths_seq \l_tmpa_tl } +\seq_map_inline:Nn \l__eb_module_paths_seq { \msg_new:nnn { easybase } { deprecated-#1 } { @@ -913,193 +916,6 @@ \cs_new:Npn \eb@footmisc@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi } \cs_set:Npn \thempfootnote { \int_to_alph:n { \c@mpfootnote } } -\contentsuse{lstlisting}{lol} -\seq_put_left:Nn \c__ctex_headings_seq { chapter } -\seq_put_right:Nn \c__ctex_headings_seq { figure } -\seq_put_right:Nn \c__ctex_headings_seq { table } -\seq_put_right:Nn \c__ctex_headings_seq { lstlisting } -\seq_remove_duplicates:N \c__ctex_headings_seq -\ctex_define:n { lstlisting/#1 .meta:nn = { ctex/#1 } {##1} } -\ctex_define:n { figure/#1 .meta:nn = { ctex/#1 } {##1} } -\ctex_define:n { table/#1 .meta:nn = { ctex/#1 } {##1} } -\ctex_define:n { list/#1 .meta:nn = { ctex/#1 } {##1} } -\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1 - { - \bool_if:NTF \l__eb_toc_entry_hang_bool - { \contentspush } - { \use:n } - { - \bool_if:NTF \l__eb_toc_number_color_bool - { \textcolor{ctex@toc@number} } - { \use:n } - { \thecontentslabel } - \tl_use:c { l__eb_toc_#1_after_tl } - } - } -\cs_new_protected:Npn \RegisterTocName #1 - { - \ctex_define:n - { - #1/tocformat .tl_set:c = l__eb_toc_#1_format_tl, - #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, - #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, - #1/tocindent .dim_set:c = l__eb_toc_#1_indent_dim, - #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl, - #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl, - #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl - } - \titlecontents{#1} - [\dim_use:c { l__eb_toc_#1_indent_dim }] - {\tl_use:c { l__eb_toc_#1_format_tl }} - {\eb_toc_entry_if_hang:n {#1}}{} - {\tl_use:c { l__eb_toc_#1_rule_tl }} - [\tl_use:c { l__eb_toc_#1_below_tl }] - } -\seq_map_function:NN -\c__ctex_headings_seq \RegisterTocName -\eb_seq_map_inline:nn - { figure,table,lstlisting } - { - \ctex_define:n - { - #1/between .tl_set:c = l__eb_toc_#1_between_hook_tl, - #1/tocline .cs_set:cp = { eb@tocline@#1 } ##1##2, - } - } -\eb_seq_map_inline:nn - { - tocformat,tocformat+,tocformat~+, - tocindent,tocrule,tocline,tocafter,between - } - { - \ctex_define:n - { - list/#1 .meta:n = - { - figure/#1 = ##1,table/#1 = ##1, - lstlisting/#1 = ##1 - } - } - } -\eb_seq_map_inline:nn - { tocafter,tocindent,tocrule } - { - \ctex_define:nn { tocset } - { - #1-every .code:n = - { - \ctex_set:n - { - part/#1 = ##1,chapter/#1 = ##1, - section/#1 = ##1,subsection/#1 = ##1, - list/#1 = ##1 - } - } - } - } - -\ctex_define:nn { tocset } - { - lolskip .skip_set:N = \eb@toc@lol@skip, - lolskip .initial:n = 10pt, - between .tl_set:N = \l__eb_toc_main_between_hook_tl, - between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, - bibetween .tl_set:N = \l__eb_toc_bimain_between_hook_tl, - bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, - dotalign .bool_set:N = \l__eb_toc_dot_align_bool, - dotalign .default:n = true, - dotalign .initial:n = true, - hang .bool_set:N = \l__eb_toc_entry_hang_bool, - hang .default:n = true, - hang .initial:n = true, - pagenumwd .code:n = \contentsmargin{#1}, - pagenumwd .initial:n = 1.55em, - unknown .code:n = \eb_msg_deprecated_option:n { tocset } - } -\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}} - { - \normalsize\normalfont - \titlerule*[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6 - \bgroup - \IfBooleanF{#2} - { - \IfBooleanTF{#1} - {\thecontentspage} - { - \bool_if:NTF \l__eb_toc_dot_align_bool - { \contentspage } - { \thecontentspage } - } - } - \egroup - } -\cs_new:Npn \p@numberline { \protect\numberline } -\cs_new:Npn \listnumberline #1 - { \p@numberline{\use:c { #1name }~\use:c { the#1 }} } -\ctex_set:n - { - part = - { - tocformat = \addvspace{1pc}\sffamily\large, - tocindent = 0em, - tocrule = \tocrule{}[\bfseries], - tocline = \CTEXnumberline{#1}#2 - }, - chapter = - { - tocformat = \addvspace{1pc}\sffamily, - tocindent = 0em, - tocrule = \tocrule{$\cdot$}[\bfseries], - tocline = \CTEXnumberline{#1}#2 - }, - section = - { - tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily }, - tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em }, - tocrule = - { - \bool_if:NTF \l__eb_class_mode_book_bool - { \tocrule{$\cdot$} } - { \tocrule{$\cdot$}[\bfseries] } - } - }, - subsection = - { - tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em }, - tocrule = \tocrule{$\cdot$} - }, - list = - { - tocindent = 0em, - tocrule = \tocrule{$\cdot$}, - between = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-10pt} } - }, - table/tocline = \listnumberline{table}#2, - figure/tocline = \listnumberline{figure}#2, - lstlisting/tocline = \listnumberline{lstlisting}#2, - tocset/tocafter-every = \hspace{1em} - } -\prop_new:N \l__eb_list_label_entry_prop -\prop_set_from_keyval:Nn \l__eb_list_label_entry_prop - { - figure = \eb@tocline@figure, - table = \eb@tocline@table - } -\cs_gset:Npn \caption@@@addcontentsline #1#2#3#4 - { - \addcontentsline{#1}{#2} - {\prop_item:Nn \l__eb_list_label_entry_prop {#2}{#3}{#4}} - } -\ctex_patch_cmd:Nnn \lst@MakeCaption - { - \addcontentsline{lol}{lstlisting} - {\protect\numberline{\thelstlisting}\lst@@caption} - } - { - \addcontentsline{lol}{lstlisting} - {\eb@tocline@lstlisting{\thelstlisting}{\lst@@caption}} - } - \newcounter{bichapter} \newcounter{bisection}[bichapter] \newcounter{bisubsection}[bisection] @@ -1111,14 +927,13 @@ \use:c { p@#1 } { the#1 } } } -\NewDocumentCommand{\counteruse}{soD(){arabic}mO{.}d()} +\NewDocumentCommand{\counteruse}{sO{arabic}D(){.}mod()} { \IfBooleanF{#1}{\stepcounter{#4}} - \IfValueT{#6}{\setcounter{#4}{#6}} \tl_set:cn { theeb@#4 } { - \IfValueT{#2}{\use:c { the#2 }#5} - \use:c {#3}{#4} + \IfValueT{#5}{\use:c { the#5 }#3} + \use:c {#2}{#4} } \tl_use:c { theeb@#4 } \eb_current_label:n { eb@#4 } @@ -1132,7 +947,6 @@ \cs_set:Npn \thebisection { \eb_section_counter_prefix:n { bi } } \cs_set:Npn \thebisubsection { \thebisection.\@arabic\c@bisubsection } \cs_set:Npn \thesection { \eb_section_counter_prefix:n { } } - \contentsuse{}{tec} \tl_new:N \eb@before@addbitoc@hook \NewDocumentCommand{\BeforeAddBitoc}{sm} @@ -1208,7 +1022,7 @@ } \tl_new:N \eb@bitoc@title -\keys_define:nn { eb/listoc } +\keys_define:nn { eb/floattoc } { level .tl_set:N = \eb@toc@title@level, level .initial:n = @@ -1243,11 +1057,13 @@ plan .initial:n = cn, columns .meta:n = { multoc = #1 }, title .code:n = \eb_assign_toc_title:n {#1}, - bilist .tl_gset:N = \g__eb_bilist_permute_value_tl + bilist .tl_gset:N = \g__eb_bilist_permute_value_tl, + name .tl_set:N = \l__eb_print_index_name_tl, + name .initial:n = \imki@jobname } \bool_if:NTF \l__eb_class_mode_book_bool - { \keys_define:nn { } { eb/listoc .inherit:n = ctex/chapter } } - { \keys_define:nn { } { eb/listoc .inherit:n = ctex/section } } + { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/chapter } } + { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/section } } \NewDocumentCommand{\eb_assign_toc_title:n} {>{\SplitArgument{1}{,}}m} {\eb_assign_toc_title_judge:nn #1} @@ -1258,13 +1074,7 @@ { \tl_clear:N \eb@bitoc@title } { \tl_set:Nn \eb@bitoc@title {#2} } } -\cs_new_protected:Npn \eb_biber_toc_title:n #1 - { - \bool_if:NTF \l__eb_class_mode_book_bool - { \bichapter*{#1}{\eb@bib@bitoc@title} } - { \bisection*{#1}{\eb@bib@bitoc@title} } - \sectionmark{#1} - } +\prop_new:N \l__eb_toc_float_label_prop \cs_new_protected:Npn \eb_toc_start_multi_column_ext:n #1 { \int_compare:nNnTF { \l__eb_toc_columns_int } > { 1 } @@ -1285,29 +1095,60 @@ \IfBooleanF{#1} {\eb@toc@title@level{\eb@toc@title}{\eb@bitoc@title}} } -\cs_new_protected:Npn \eb_toc_list_parse:nnnnn #1#2#3#4#5 +\cs_new_protected:Npn \eb_toc_float_list_parse:nnnnn #1#2#3#4#5 { \group_begin: \tl_set_eq:Nc \eb@toc@title { list#4name } - \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} \eb_toc_title_level_cmd:n {#1} \eb_toc_if_title_between_hook:nn {#1} {#4} \eb_toc_start_multi_column_ext:n {#5} \group_end: } -\cs_new_protected:Npn \eb_list_content_cmd_set:nn #1#2 +\cs_new:Npn \listnumberline #1 + { + \protect\numberline + { + \exp_args:Nnv + \use:c { p@#1 } { the#1 } + } + } +\cs_new_protected:Npn \DeclareFloatList #1#2 { \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st+o} - {\eb_toc_list_parse:nnnnn {##1} {##2} {##3} {#1} {#2}} + {\eb_toc_float_list_parse:nnnnn {##1} {##2} {##3} {#1} {#2}} + \ctex_define:n + { + #1/##1 .meta:nn = { ctex/##1 } {####1}, + #1/between .tl_set:c = l__eb_toc_#1_between_hook_tl, + #1/tocline .cs_set:cp = { eb@tocline@#1 } ##1##2, + #1/tocline .initial:n = \listnumberline{#1}##2 + } + \prop_put_from_keyval:Nn \l__eb_toc_float_label_prop + { #1 = \use:c { eb@tocline@#1 } } } -\eb_seq_map_inline:nn +\DeclareFloatList{table}{lot} +\DeclareFloatList{figure}{lof} +\DeclareFloatList{lstlisting}{lol} +\cs_gset:Npn \caption@@@addcontentsline #1#2#3#4 { - { figure } { lof }, - { table } { lot }, - { lstlisting } { lol } + \addcontentsline{#1}{#2} + { + \prop_if_in:NnTF \l__eb_toc_float_label_prop {#2} + { \prop_item:Nn \l__eb_toc_float_label_prop {#2} } + { \protect\numberline } + {#3}{#4} + } + } +\ctex_patch_cmd:Nnn \lst@MakeCaption + { + \addcontentsline{lol}{lstlisting} + {\protect\numberline{\thelstlisting}\lst@@caption} + } + { + \addcontentsline{lol}{lstlisting} + {\eb@tocline@lstlisting{\thelstlisting}{\lst@@caption}} } - { \eb_list_content_cmd_set:nn #1 } -\cs_set_eq:NN \listoflistings \listoflstlistings \ctex_define:n { bicontentsname .tl_set:N = \bicontentsname, @@ -1324,7 +1165,7 @@ { \chapter* } { \section* } } - \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} \bool_if:NT \l__eb_toc_plan_cn_bool { \IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}} @@ -1340,22 +1181,169 @@ \group_end: } +\contentsuse{lstlisting}{lol} +\seq_put_left:Nn \c__ctex_headings_seq { chapter } +\seq_put_right:Nn \c__ctex_headings_seq { table } +\seq_put_right:Nn \c__ctex_headings_seq { figure } +\seq_put_right:Nn \c__ctex_headings_seq { lstlisting } +\seq_remove_duplicates:N \c__ctex_headings_seq +\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1 + { + \bool_if:NTF \l__eb_toc_entry_hang_bool + { \contentspush } + { \use:n } + { + \bool_if:NTF \l__eb_toc_number_color_bool + { \textcolor{ctex@toc@number} } + { \use:n } + { \thecontentslabel } + \tl_use:c { l__eb_toc_#1_after_tl } + } + } +\cs_new_protected:Npn \RegisterTocName #1 + { + \ctex_define:n + { + #1/tocformat .tl_set:c = l__eb_toc_#1_format_tl, + #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, + #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1}, + #1/tocindent .dim_set:c = l__eb_toc_#1_indent_dim, + #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl, + #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl, + #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl + } + \titlecontents{#1} + [\dim_use:c { l__eb_toc_#1_indent_dim }] + {\tl_use:c { l__eb_toc_#1_format_tl }} + {\eb_toc_entry_if_hang:n {#1}}{} + {\tl_use:c { l__eb_toc_#1_rule_tl }} + [\tl_use:c { l__eb_toc_#1_below_tl }] + } +\seq_map_function:NN +\c__ctex_headings_seq \RegisterTocName +\eb_seq_map_inline:nn + { + tocformat,tocformat+,tocformat~+, + tocindent,tocrule,tocline,tocafter,between + } + { + \ctex_define:n + { + float/#1 .meta:n = + { + figure/#1 = ##1,table/#1 = ##1, + lstlisting/#1 = ##1 + } + } + } +\eb_seq_map_inline:nn + { tocafter,tocindent,tocrule } + { + \ctex_define:nn { tocset } + { + #1-every .code:n = + { + \ctex_set:n + { + part/#1 = ##1,chapter/#1 = ##1, + section/#1 = ##1,subsection/#1 = ##1, + float/#1 = ##1 + } + } + } + } +\ctex_define:nn { tocset } + { + lolskip .skip_set:N = \eb@toc@lol@skip, + lolskip .initial:n = 10pt, + between .tl_set:N = \l__eb_toc_main_between_hook_tl, + between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, + bibetween .tl_set:N = \l__eb_toc_bimain_between_hook_tl, + bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} }, + dotalign .bool_set:N = \l__eb_toc_dot_align_bool, + dotalign .default:n = true, + dotalign .initial:n = true, + hang .bool_set:N = \l__eb_toc_entry_hang_bool, + hang .default:n = true, + hang .initial:n = true, + pagenumwd .code:n = \contentsmargin{#1}, + pagenumwd .initial:n = 1.55em, + unknown .code:n = \eb_msg_deprecated_option:n { tocset } + } +\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}} + { + \normalsize\normalfont + \titlerule*[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6 + \bgroup + \IfBooleanF{#2} + { + \IfBooleanTF{#1} + {\thecontentspage} + { + \bool_if:NTF \l__eb_toc_dot_align_bool + { \contentspage } + { \thecontentspage } + } + } + \egroup + } +\ctex_set:n + { + part = + { + tocformat = \addvspace{1pc}\sffamily\large, + tocindent = 0em, + tocrule = \tocrule{}[\bfseries], + tocline = \CTEXnumberline{#1}#2 + }, + chapter = + { + tocformat = \addvspace{1pc}\sffamily, + tocindent = 0em, + tocrule = \tocrule{$\cdot$}[\bfseries], + tocline = \CTEXnumberline{#1}#2 + }, + section = + { + tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily }, + tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em }, + tocrule = + { + \bool_if:NTF \l__eb_class_mode_book_bool + { \tocrule{$\cdot$} } + { \tocrule{$\cdot$}[\bfseries] } + } + }, + subsection = + { + tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em }, + tocrule = \tocrule{$\cdot$} + }, + float = + { + tocindent = 0em, + tocrule = \tocrule{$\cdot$}, + between = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-10pt} } + }, + tocset/tocafter-every = \hspace{1em} + } + \ctex_at_end_package:nn { imakeidx } { \makeindex - \RenewDocumentCommand{\printindex}{st+oD(){\imki@jobname}} + \RenewDocumentCommand{\printindex}{st+od()} { \group_begin: \tl_set_eq:NN \eb@toc@title \indexname \cs_set_eq:NN \imki@indexlevel \use_none:n \setkeys{imkiindex}{noclearpage} - \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}} + \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}} \cs_set_protected:Npn \imki@indexheaders { \eb_toc_title_level_cmd:n {#1} \cs_set_eq:NN \thispagestyle \use_none:n } - \imki@putindex{#4} + \imki@putindex{\l__eb_print_index_name_tl} \group_end: } } @@ -1407,9 +1395,9 @@ \ctex_define:nn { subfont } { - caption-table .tl_set:N = \l__eb_subfont_cap_table_tl, - caption-figure .tl_set:N = \l__eb_subfont_cap_figure_tl, - caption-listing .tl_set:N = \l__eb_subfont_cap_listing_tl, + caption-table .tl_set:N = \l__eb_subfont_caption_table_tl, + caption-figure .tl_set:N = \l__eb_subfont_caption_figure_tl, + caption-listing .tl_set:N = \l__eb_subfont_caption_listing_tl, caption-every .meta:n = { caption-table = #1,caption-figure = #1, @@ -1426,16 +1414,16 @@ \str_case:nnF {#1} { { table } - { \tl_put_right:Nn \l__eb_subfont_cap_table_tl {#2} } + { \tl_put_right:Nn \l__eb_subfont_caption_table_tl {#2} } { figure } - { \tl_put_right:Nn \l__eb_subfont_cap_figure_tl {#2} } + { \tl_put_right:Nn \l__eb_subfont_caption_figure_tl {#2} } { listing } - { \tl_put_right:Nn \l__eb_subfont_cap_listing_tl {#2} } + { \tl_put_right:Nn \l__eb_subfont_caption_listing_tl {#2} } { every } { - \tl_put_right:Nn \l__eb_subfont_cap_table_tl {#2} - \tl_put_right:Nn \l__eb_subfont_cap_figure_tl {#2} - \tl_put_right:Nn \l__eb_subfont_cap_listing_tl {#2} + \tl_put_right:Nn \l__eb_subfont_caption_table_tl {#2} + \tl_put_right:Nn \l__eb_subfont_caption_figure_tl {#2} + \tl_put_right:Nn \l__eb_subfont_caption_listing_tl {#2} } } { \tl_put_right:cn { l__eb_subfont_#1_tl } {#2} } @@ -1455,9 +1443,9 @@ math .initial:n = 1.354, footnote .fp_set:N = \l__eb_spread_footnote_fp, footnote .initial:n = 1.2, - caption-table .fp_set:N = \l__eb_spread_cap_table_fp, - caption-figure .fp_set:N = \l__eb_spread_cap_figure_fp, - caption-listing .fp_set:N = \l__eb_spread_cap_listing_fp, + caption-table .fp_set:N = \l__eb_spread_caption_table_fp, + caption-figure .fp_set:N = \l__eb_spread_caption_figure_fp, + caption-listing .fp_set:N = \l__eb_spread_caption_listing_fp, caption-every .meta:n = { caption-table = #1,caption-figure = #1, @@ -1478,8 +1466,8 @@ { \DeclareCaptionFont{eb@#1@font} { - \setspread{\fp_use:c { l__eb_spread_cap_#1_fp }} - \tl_use:c { l__eb_subfont_cap_#1_tl } + \setspread{\fp_use:c { l__eb_spread_caption_#1_fp }} + \tl_use:c { l__eb_subfont_caption_#1_tl } } } \captionsetup @@ -1760,7 +1748,7 @@ { \group_begin: \tl_set_eq:NN \eb@toc@title \bibname - \IfValueT{##3}{ \keys_set:nn { eb/listoc } {##3} } + \IfValueT{##3}{ \keys_set:nn { eb/floattoc } {##3} } \cs_set_protected:Npn \bibsection { \eb_toc_title_level_cmd:n {##1} @@ -1776,6 +1764,13 @@ } \cs_new_protected:Npn \eb_put_biblatex:n #1 { \PassOptionsToPackage{#1}{biblatex} } +\cs_new_protected:Npn \eb_biber_toc_title:n #1 + { + \bool_if:NTF \l__eb_class_mode_book_bool + { \bichapter*{#1}{\eb@bib@bitoc@title} } + { \bisection*{#1}{\eb@bib@bitoc@title} } + \sectionmark{#1} + } \cs_new_protected:Npn \eb_biber_biblatex_set: { \str_case:VnF \l__eb_bib_both_style_tl diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls index ec137f0e3af..9bf606d8cb4 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybook.cls +++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls @@ -20,7 +20,7 @@ %% This work has the LPPL maintenance status `maintained'. \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2022/03/08}{1.642} +\ProvidesExplClass{easybook}{2022/03/08}{1.643} {Easily typesetting Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool diff --git a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg index 668d515e9fc..a73ee95339f 100644 --- a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg +++ b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg @@ -18,7 +18,7 @@ %% LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. -\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/08}{1.642} +\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/08}{1.643} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 |