summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/easybook/easybook.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-06-03 03:02:31 +0000
committerNorbert Preining <norbert@preining.info>2021-06-03 03:02:31 +0000
commitd231c6331f53a048d29c2f847254a9f56d5ee2dd (patch)
treec8b2637a679254e40e8d4da5c03fda92cfaa7974 /macros/latex/contrib/easybook/easybook.dtx
parent138d0a6cfd5f2187973fb6b83ad2fb0dcf5a8348 (diff)
CTAN sync 202106030302
Diffstat (limited to 'macros/latex/contrib/easybook/easybook.dtx')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx647
1 files changed, 356 insertions, 291 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index ad29040915..c89a99181f 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -23,11 +23,12 @@
%
% \changes{v1.20}{2021/01/09}{修改和完善用户文档。}
% \changes{v1.20}{2021/01/09}{模板更改为使用 CC-BY 许可协议。}
-% \changes{v1.25p}{2021/05/03}{取消附带的示例文件,可查看历史版本及其它来源的使用样例。}
+% \changes{v1.25q}{2021/05/03}{取消附带的示例文件,可查看历史版本及其它来源的使用样例。}
+% \changes{v1.25q}{2021/06/02}{将模块的代码独立出来为 \pkg{easybase} 宏包,适用于 \CTeX 文档类。}
%
% \title{\sffamily easybook 文档类手册}
% \author{瞿毅}
-% \date{2021/05/31\hskip\ccwd\relax v1.25p\thanks{\url{https://gitee.com/texl3/easybook}}}
+% \date{2021/06/02\hskip\ccwd\relax v1.25q\thanks{\url{https://gitee.com/texl3/easybook}}}
%
% \maketitle
% \begin{abstract}
@@ -57,6 +58,22 @@
% \end{document}
% \end{frameverb}
%
+% 或者直接使用 \pkg{easybase} 宏包,它的宏包选项有 \opt{class} 和 \opt{draft},包含了节 \ref{sec:interface options} 所示各个模块接口命令的功能,目前只适用于 \cls{ctexbook} 和 \cls{ctexart} 文档类。
+% \begin{frameverb}
+% \documentclass{ctexbook}
+%
+% \usepackage{easybase}
+% \ctexset{键值列表}
+%
+% \usepackage{宏包列表}
+%
+% \begin{document}
+% \chapter{欢迎}
+% \section{Welcome to easybook}
+% Hello, \LaTeX
+% \end{document}
+% \end{frameverb}
+%
% \subsection{编译方式}
% 假设您的 \TeX 源文件名为 \opt{easybook.tex},需要使用参考文献和索引功能,并使用 \hologo{XeLaTeX} 和 \hologo{BibTeX} 引擎编译文档,那么需要在命令行中执行
% \begin{frameverb}
@@ -117,7 +134,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.25p}{2021/05/04}{修复使用 \pkg{xeCJK} 与 \pkg{fontspec} 宏包的字体设置命令在 \hologo{LuaLaTeX} 下失效的问题。}
+% \changes{v1.25q}{2021/05/04}{修复使用 \pkg{xeCJK} 与 \pkg{fontspec} 宏包的字体设置命令在 \hologo{LuaLaTeX} 下失效的问题。}
% \end{function}
%
% \begin{function}[rEXP,added = 2021-01-05,updated = 2021-01-13]{paper}
@@ -140,11 +157,10 @@
% \begin{syntax}
% class = <(book)|article>
% \end{syntax}
-% 设置文类风格,默认为 \opt{book} 文档类。选用 \opt{article} 会变为 \opt{oneside} 单面排版,同时使文档编号、结构等与标准 \cls{article} 文档类的特性相似,可用于短篇幅的文章,不需要再使用 \tn{chapter} 命令,此时设置双栏目录的 \opt{style/multoc} 选项、小节 \ref{subsec:document command} 中打印目录命令的 \opt{multoc} 及 \opt{book} 选项均会失效,会以 \opt{section} 标题级别输出目录。
+% 设置文类风格,默认为 \opt{book} 文档类。选用 \opt{article} 会变为 \opt{oneside} 单面排版,同时使文档编号、结构等与标准 \cls{article} 文档类的特性相似,可用于短篇幅的文章,不需要再使用 \tn{chapter} 命令,此时设置双栏目录的 \opt{style/multoc} 选项、小节 \ref{subsec:document command} 中打印目录命令的 \opt{multoc} 及 \opt{book} 选项均会失效,会以 \opt{section} 标题级别输出目录。如果使用 \cls{ctexart} 配合 \pkg{easybase} 宏包,则 \opt{book} 宏包选项会失效。
% \changes{v1.23}{2021/03/16}{增加 article 文章模式,可用于短篇幅的文章。}
% \end{function}
%
-% \clearpage
% \subsection{文档命令}
% \label{subsec:document command}
% \subsubsection{文区命令}
@@ -160,7 +176,7 @@
% \end{function}
%
% \subsubsection{目录命令}
-% \begin{function}[added = 2021-02-20,updated = 2021-05-05]{\tableofcontents,\listoffigures,\listoftables,\listoflistings}
+% \begin{function}[added = 2021-02-20,updated = 2021-06-02]{\tableofcontents,\listoffigures,\listoftables,\listoflistings}
% \begin{syntax}
% \tn{tableofcontents+}\oarg{键值列表}\parg{附加代码}
% \tn{listoffigures*+}\oarg{键值列表}
@@ -168,22 +184,24 @@
% \tn{listoflistings*+}\oarg{键值列表}
% \end{syntax}
% \tn{listoffigures} 命令输出图片目录,\tn{listoftables} 输出表格目录,\tn{listoflistings} 输出代码目录。带有星号的目录命令不将标题添加进主文档目录,带有+号的目录命令可以使当前标题编号。\tn{tableofcontents+} 与其它命令不同是用于输出双语目录,需要与双语目录标题命令 \tn{bichapter} 等或设置图片、表格和代码等英文目录的标题配合使用,附加代码是中文与英文目录之间的代码,可以插入文本和换页命令等。目录的键值列表选项如下
-% \changes{v1.25p}{2021/05/05}{命令 \tn{tableofcontents} 可以输出双语目录。}
+% \changes{v1.25q}{2021/05/05}{命令 \tn{tableofcontents} 可以输出双语目录。}
% \end{function}
%
-% \begin{function}{multoc,title,format,aftertitle,pagestyle,book,article}
+% \begin{function}{multoc,columns,title,format,aftertitle,pagestyle,book,article}
% \begin{syntax}
% multoc = <true|(false)>
+% columns = <目录栏数|(2)>
% title = \{<中文目录标题>,<英文目录标题>\}
% format = <目录标题格式>
% aftertitle = <目录标题后的代码>
% pagestyle = <标题页的页面格式>
% \end{syntax}
-% \opt{multoc} 与 \opt{style/multoc} 选项具有相同的效果,但是具有优先性且可单独设置不同目录是否双栏排版。\opt{title} 选项用于更改目录的标题,标题之间用一个半角逗号分开,也可以只有一部分,表示中文目录的标题。当设置了英文目录标题时,英文目录标题将会自动加入主文档目录,与 \tn{tableofcontents+} 配合输出。
+% \opt{multoc} 与 \opt{style/multoc} 选项具有相同的效果,但是具有优先性且可单独设置不同目录是否多栏排版,默认为双栏,可使用 \opt{columns} 更改。\opt{title} 选项用于更改目录的标题,标题之间用一个半角逗号分开,也可以只有一部分,表示中文目录的标题。当设置了英文目录标题时,英文目录标题将会自动加入主文档目录,与 \tn{tableofcontents+} 配合输出。
%
% 在书籍模式且 \opt{book} 选项开启或者文章模式的情况下,\opt{format} 用于设置目录标题的格式,\opt{aftertitle} 选项的代码将被插入到目录标题内容之后,\opt{pagestyle} 是目录标题所在页的页面格式,除此之外还支持 \opt{ctexset/chapter} 或 \opt{ctexset/section} 所有的章节标题样式选项。\opt{book} 选项使目录标题按照 chapter 级别输出,\opt{article} 选项使目录标题按照 section 级别输出,默认为 chapter 级别。
% \changes{v1.23}{2021/03/15}{为几个目录增加键值列表的选项,可设置标题输出级别以及是否加入主目录。}
% \changes{v1.24}{2021/04/04}{目录命令的可选参数增加标题键值。}
+% \changes{v1.25q}{2021/06/02}{目录可设置多栏,并在 article 模式仍然生效。}
% \end{function}
%
% \subsubsection{标题命令}
@@ -199,7 +217,7 @@
% 双语目录的标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录,这个功能是为国内一些大学的学位论文模板的要求设计,在一般情况和英文模式下不需要使用。
%
% 它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \tn{chapter*} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。双语目录的格式是一致的,共享使用 \tn{tocset} 的设置,英文目录的章级别标题名及编号的修改方式如下
-% \changes{v1.25p}{2021/05/05}{增加与双语目录配合的标题命令。}
+% \changes{v1.25q}{2021/05/05}{增加与双语目录配合的标题命令。}
% \end{function}
%
% \begin{function}{biname,binmuber}
@@ -272,7 +290,7 @@
% \changes{v1.10}{2021/01/08}{可以自定义主题颜色。}
% \end{function}
% \item[color-all] 统一设置主题的各部分颜色,参数是6个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
-% \item[multoc] 开启双栏目录,可与 \opt{onecolumn} 和 \opt{twocolumn} 选项配合出单栏正文、单栏目录,双栏正文、单栏目录,单栏正文、双栏目录和双栏正文、双栏目录四种方式。
+% \item[multoc] 开启多栏目录,与小节 \ref{subsec:document command} 中目录命令的同名选项有相同效果。
% \item[withpart] 使章跟随每一部分编号,默认不跟随。
% \item[footwith] 使脚注跟随编号的计数器,默认跟随章,当开启新的一章时脚注编号从1开始。
% \item[rulewidth] 调整页眉、定理盒子以及代码框线条的粗细。
@@ -299,7 +317,7 @@
% \changes{v1.10}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。}
% \changes{v1.23}{2021/03/19}{修复在 \pkg{ctex} v2.5.6 更新后 \cls{easybook} 与 \pkg{hyperref} 冲突问题。}
% \changes{v1.24}{2021/04/05}{增加 \pkg{hyperref} 超链接选项完整的支持。}
-% \changes{v1.25p}{2021/05/06}{模块名 \opt{link} 改为 \opt{refset},\opt{link} 作为兼容性保留。}
+% \changes{v1.25q}{2021/05/06}{模块名 \opt{link} 改为 \opt{refset},\opt{link} 作为兼容性保留。}
% \end{function}
%
% \begin{optdesc}
@@ -356,7 +374,7 @@
% \ding{229} 以上选项路径为 \opt{subfont/...}
% \changes{v1.10}{2021/01/08}{加入自定义非正文字体选项。}
% \changes{v1.23}{2021/02/08}{修复使用 \tn{zihao} 命令设置字体失效的问题。}
-% \changes{v1.25p}{2021/05/31}{其它字体模块名由 \opt{elsefont} 改为 \opt{subfont},并增加数学字体的选项 \opt{subfont/math}。}
+% \changes{v1.25q}{2021/05/31}{其它字体模块名由 \opt{elsefont} 改为 \opt{subfont},并增加数学字体的选项 \opt{subfont/math}。}
% \end{function}
%
% \begin{optdesc}
@@ -381,7 +399,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.25p}{2021/05/12}{取消 \opt{bib-loadpkg} 选项,由是否设置参考文献数据库来决定载入宏包。}
+% \changes{v1.25q}{2021/05/12}{取消 \opt{bib-loadpkg} 选项,由是否设置参考文献数据库来决定载入宏包。}
% \end{function}
%
% \begin{optdesc}
@@ -490,8 +508,10 @@
%
% \subsection{页面尺寸}
% \label{subsec:page margins}
-% \begin{function}[EXP,added = 2021-01-13,updated = 2021-05-11]{left,top,hmargin,textwidth,includehead}
+% \begin{function}[EXP,added = 2021-01-13,updated = 2021-06-02]{headruleskip,footruleskip,left,top,hmargin,textwidth,includehead}
% \begin{syntax}
+% headruleskip = <页眉线间距>
+% footruleskip = <页脚线间距>
% left = <页面左边距>
% top = <页面上边距>
% hmargin = \marg{左边距,右边距}
@@ -499,17 +519,18 @@
% includehead = <true|(false)>
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{geoset/...} \\
-% 预置的页面尺寸与 \cls{Word} 的默认值接近,\opt{geoset} 会将选项交给 \pkg{geometry} 宏包接口命令 \tn{geometry} 处理,并且选项的键值列表与之相同,上面的选项仅是一小部分,支持的参数可查阅宏包帮助文档。当在此设置页面大小时,会覆盖 \opt{paper} 选项的设置。
+% 预置的页面尺寸与 \cls{Word} 的默认值接近,\opt{geoset} 会将前两个之外的选项交给 \pkg{geometry} 宏包接口命令 \tn{geometry} 处理,并且选项的键值列表与之相同,上面的选项仅是一小部分,支持的参数可查阅宏包帮助文档。当在此设置页面大小时,会覆盖 \opt{paper} 选项的设置。
% \changes{v1.21}{2021/01/13}{增加配置页面尺寸的选项。}
% \end{function}
%
% \begin{ctexexam}
% \geoset
% {
-% top = 2.5cm,
-% bottom = 2.5cm,
-% left = 3.2cm,
-% right = 3.2cm,
+% headruleskip = 3pt,
+% top = 2.5cm,
+% bottom = 2.5cm,
+% left = 3.2cm,
+% right = 3.2cm,
% ignoreall
% }
% \end{ctexexam}
@@ -584,7 +605,7 @@
% 上面几个选项用于设置脚注格式,\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{subfont/footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注编号,一般配合 \opt{fnmark-num = plain} 使用。\opt{afterfnmark} 是脚注标记后的代码,一般用于设置标记与文本间的距离。
-% \changes{v1.25p}{2021/05/12}{增加脚注样式设置选项。}
+% \changes{v1.25q}{2021/05/12}{增加脚注样式设置选项。}
% \end{function}
%
% \subsection{目录样式}
@@ -603,7 +624,7 @@
% \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.25p}{2021/05/14}{可以分别设置图片、表格和代码目录的格式。}
+% \changes{v1.25q}{2021/05/14}{可以分别设置图片、表格和代码目录的格式。}
% \end{function}
%
% \begin{function}[added = 2021-01-13,updated = 2021-04-20]{\tocrule,\EbNumberLine}
@@ -688,7 +709,7 @@
% \tn{end}\marg{环境名}
% \end{syntax}
% \pkg{tabularray} 是一个较新的宏包,不仅提供了 \pkg{tabularx}、\pkg{multirow}、和 \pkg{booktabs} 宏包的功能,并且不依赖其它宏包与它们同时使用不会产生冲突,还实现了用简便的键值列表方式设置表格样式。目前除了表头斜线以及跨页功能存在不足,其它方面已满足对表格绝大多数格式的需求,具体用法可见宏包的说明文档。
-% \changes{v1.25p}{2021/05/17}{使用功能更便捷齐全的 \pkg{tabularray} 宏包设置表格样式。}
+% \changes{v1.25q}{2021/05/17}{使用功能更便捷齐全的 \pkg{tabularray} 宏包设置表格样式。}
% \end{function}
%
% \subsection{列表}
@@ -852,7 +873,7 @@
% \tn{qtyrange}\oarg{键值列表}\marg{数字1}\marg{数字2}\marg{单位}
% \end{syntax}
% \pkg{siunitx} 宏包的 \tn{num} 命令可以输出以科学计数法表示的数值,单位格式化命令 \tn{unit} 包含文字项目(例如字母或数字)时,使用 . 和 \~{} 放置在单元乘积中间,并使用 \_ 和 \^{} 正确放置指定的下标和上标。格式化方法可在数学和文本模式下使用。而 \tn{qty} 命令可用来输出带有单位的量,\tn{qtyrange} 可以输出带有范围和单位的量。
-% \changes{v1.25p}{2021/05/18}{\pkg{siunitx} 宏包 v3.0.0 更新后用法改变,修改相关配置选项。}
+% \changes{v1.25q}{2021/05/18}{\pkg{siunitx} 宏包 v3.0.0 更新后用法改变,修改相关配置选项。}
% \end{function}
%
% \begin{ctexexam}
@@ -969,6 +990,7 @@
% \item[ulem] 提供可断行多样式的下划线命令。
% \item[geometry] 灵活完整的页面尺寸设置。
% \item[pdfpages] 在 \LaTeX 中插入 pdf 文档。
+% \item[multicol] 混合单栏和多栏排版。
% \item[graphicx] 增强了对图形插入的支持。
% \item[fancyhdr] 广泛控制页面的页眉和页脚。
% \item[titletoc] 设置目录中的标题格式。
@@ -988,42 +1010,8 @@
% \StopEventually{}
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplClass{easybook}{2021/05/31}{1.25p}{beta}
-
-\cs_generate_variant:Nn \eb_ctex_define:nn { nx }
-\cs_generate_variant:Nn \int_to_arabic:n { v }
-\cs_generate_variant:Nn \dim_add:Nn { NV }
-\cs_generate_variant:Nn \eb_put_hyperref:n { x }
-\cs_generate_variant:Nn \seq_set_from_clist:Nn { No }
-\cs_new_protected:Npn \eb_ctex_define:nn #1
- { \keys_define:nn { ctex/#1 } }
-\cs_new_protected:Npn \eb_put_ctexbook:n #1
- { \PassOptionsToClass{#1}{ctexbook} }
-\cs_new_protected:Npn \eb_patch_cmd:Nnn #1#2#3
- {
- \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
- { } { \ctex_patch_failure:N #1 }
- }
-\cs_new_protected:Npn \eb_preto_cmd:Nn #1#2
- {
- \ctex_preto_cmd:NnnTF #1 { } {#2}
- { } { \ctex_patch_failure:N #1 }
- }
-\cs_new_protected:Npn \eb_appto_cmd:Nn #1#2
- {
- \ctex_appto_cmd:NnnTF #1 { } {#2}
- { } { \ctex_patch_failure:N #1 }
- }
-\cs_new_protected:Npn \eb_at_begin_environment:nn #1#2
- {
- \seq_set_from_clist:No \l__eb_env_hook_name_seq {#1}
- \seq_map_inline:Nn \l__eb_env_hook_name_seq
- { \AtBeginEnvironment{##1}{#2} }
- }
-\cs_new_protected:Npn \eb_at_end_preamble:n
- { \ctex_gadd_ltxhook:nn { env/document/before } }
-\cs_gset_eq:NN \PackageWarning \use_none:nn
+\RequirePackage{l3keys2e}
+\ProvidesExplClass{easybook}{2021/06/02}{1.25q}{beta}
\bool_set_false:N \l__eb_compile_draft_bool
\bool_set_false:N \l__eb_title_newline_bool
@@ -1032,6 +1020,8 @@
\bool_set_true:N \l__eb_class_book_bool
\tl_new:N \g__eb_config_tl
\clist_new:N \g__eb_options_clist
+\cs_new_protected:Npn \eb_put_ctexbook:n #1
+ { \PassOptionsToClass{#1}{ctexbook} }
\keys_define:nn { easybook }
{
@@ -1087,6 +1077,249 @@
}
\ProcessKeysOptions{easybook}
+\eb_put_ctexbook:n { \g__eb_options_clist }
+\LoadClass[UTF8]{ctexbook}
+
+\RequirePackage{easybase}
+\ctex_at_end:n
+ {
+ \tl_if_empty:NF \g__eb_config_tl
+ { \file_input:n { \g__eb_config_tl } }
+ }
+
+\sys_if_engine_xetex:TF
+ {
+ \cs_new_eq:NN \eb_set_family:nnn \xeCJK_set_family:nnn
+ \cs_new_eq:NN \eb_switch_family:n \xeCJK_switch_family:n
+ }
+ {
+ \cs_new_eq:NN \eb_set_family:nnn \ctex_ltj_set_family:nnn
+ \cs_new_eq:NN \eb_switch_family:n \ctex_ltj_switch_family:n
+ }
+\cs_new_protected:Npn \eb_font_double_engine_set:n #1
+ {
+ \exp_args:Nc \RenewDocumentCommand {set#1font}{O{}mO{}}
+ {\use:c { eb_set#1font:nn } {##2} {##1,##3}}
+ }
+\seq_const_from_clist:Nn \c__eb_font_reset_family_seq
+ { main,sans,mono,CJKmain,CJKsans,CJKmono }
+\seq_map_inline:Nn \c__eb_font_reset_family_seq
+ { \eb_font_double_engine_set:n {#1} }
+
+\cs_new_protected:Npn \eb_setmainfont:nn #1#2
+ { \__fontspec_main_setmainfont:nn {#2} {#1} }
+\cs_new_protected:Npn \eb_setsansfont:nn #1#2
+ { \__fontspec_main_setsansfont:nn {#2} {#1} }
+\cs_new_protected:Npn \eb_setmonofont:nn #1#2
+ { \__fontspec_main_setmonofont:nn {#2} {#1} }
+\cs_new_protected:Npn \eb_setCJKmainfont:nn #1#2
+ { \eb_set_family:nnn { \CJKrmdefault } {#2} {#1} }
+\cs_new_protected:Npn \eb_setCJKsansfont:nn #1#2
+ { \eb_set_family:nnn { \CJKsfdefault } {#2} {#1} }
+\cs_new_protected:Npn \eb_setCJKmonofont:nn #1#2
+ { \eb_set_family:nnn { \CJKttdefault } {#2} {#1} }
+\cs_new_protected:Npn \eb_set_zhfont_songti:nn #1#2
+ { \eb_set_family:nnn { songti } {#2} {#1} }
+\cs_new_protected:Npn \eb_set_zhfont_heiti:nn #1#2
+ { \eb_set_family:nnn { heiti } {#2} {#1} }
+\cs_new_protected:Npn \eb_set_zhfont_kaishu:nn #1#2
+ { \eb_set_family:nnn { kaishu } {#2} {#1} }
+\cs_new_protected:Npn \eb_set_zhfont_fangsong:nn #1#2
+ { \eb_set_family:nnn { fangsong } {#2} {#1} }
+
+\tl_const:Nn \eb_option_zhfont_tl
+ { UprightFont = *,AutoFakeBold = 1.5,ItalicFont = * }
+\cs_new_protected:Npx \eb_setCJKmainfont:n #1
+ { \eb_setCJKmainfont:nn {#1} { \eb_option_zhfont_tl } }
+\cs_new_protected:Npx \eb_setCJKsansfont:n #1
+ { \eb_setCJKsansfont:nn {#1} { \eb_option_zhfont_tl } }
+\cs_new_protected:Npx \eb_setCJKmonofont:n #1
+ { \eb_setCJKmonofont:nn {#1} { \eb_option_zhfont_tl } }
+\cs_new_protected:Npx \eb_set_zhfont_songti:n #1
+ { \eb_set_zhfont_songti:nn {#1} { \eb_option_zhfont_tl } }
+\cs_new_protected:Npx \eb_set_zhfont_heiti:n #1
+ { \eb_set_zhfont_heiti:nn {#1} { \eb_option_zhfont_tl } }
+\cs_new_protected:Npx \eb_set_zhfont_kaishu:n #1
+ { \eb_set_zhfont_kaishu:nn {#1} { \eb_option_zhfont_tl } }
+\cs_new_protected:Npx \eb_set_zhfont_fangsong:n #1
+ { \eb_set_zhfont_fangsong:nn {#1} { \eb_option_zhfont_tl } }
+
+\bool_if:NT \l__eb_font_noto_bool
+ {
+ \eb_setmainfont:nn { NotoSerif }
+ {
+ Extension = .ttf,
+ UprightFont = *-Regular,
+ BoldFont = *-Bold,
+ ItalicFont = *-Italic
+ }
+ \eb_setsansfont:nn { NotoSans }
+ {
+ Extension = .ttf,
+ UprightFont = *-Regular,
+ BoldFont = *-Bold,
+ ItalicFont = *-Italic
+ }
+ \eb_setmonofont:nn { NotoSansMono }
+ {
+ Extension = .ttf,
+ UprightFont = *-Regular,
+ BoldFont = *-Bold
+ }
+ \eb_setCJKmainfont:nn { FZShuSong-Z01S }
+ {
+ UprightFont = *,
+ BoldFont = FZHei-B01S,
+ ItalicFont = FZKai-Z03S
+ }
+ \eb_setCJKsansfont:n { FZHei-B01S }
+ \eb_setCJKmonofont:n { FZFangSong-Z02S }
+ \eb_set_zhfont_songti:n { FZShuSong-Z01S }
+ \eb_set_zhfont_heiti:n { FZHei-B01S }
+ \eb_set_zhfont_kaishu:n { FZKai-Z03S }
+ \eb_set_zhfont_fangsong:n { FZFangSong-Z02S }
+ \cs_new_protected:Npn \songti { \eb_switch_family:n { songti } }
+ \cs_new_protected:Npn \heiti { \eb_switch_family:n { heiti } }
+ \cs_new_protected:Npn \kaishu { \eb_switch_family:n { kaishu } }
+ \cs_new_protected:Npn \fangsong { \eb_switch_family:n { fangsong } }
+ }
+
+\ctex_set:n
+ {
+ secnumdepth = 3,
+ tocdepth = \bool_if:NTF \l__eb_class_book_bool { 1 } { 2 },
+ part =
+ {
+ pagestyle = empty,
+ tocline = \EbNumberLine{#1}#2,
+ format = \color{ctex@frame}\sffamily\Huge,
+ aftername =
+ {
+ \bool_if:NTF \l__eb_title_newline_bool
+ { \par\nobreak } { \hspace{\ccwd} }
+ }
+ },
+ chapter =
+ {
+ % pagestyle = fancy,
+ format =
+ {
+ \color{ctex@frame}\sffamily\LARGE
+ \bool_if:NF \l__eb_title_newline_bool { \centering }
+ },
+ aftername =
+ {
+ \bool_if:NTF \l__eb_title_newline_bool
+ { \par\nobreak\vskip 1.5pc } { \hspace{\ccwd} }
+ },
+ beforeskip = -1.5ex,
+ afterskip = 3ex,
+ lotskip = 0.8pc,
+ lofskip = 0.8pc
+ },
+ section =
+ {
+ hang = true,
+ format = \color{ctex@frame}\sffamily\Large,
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = 1.5ex plus .2ex minus .1ex,
+ afterskip = 1.5ex plus .2ex minus .1ex
+ },
+ subsection =
+ {
+ hang = true,
+ format = \color{ctex@frame}\sffamily\large,
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = 1.3ex plus .2ex minus .1ex,
+ afterskip = 1.3ex plus .2ex minus .1ex
+ },
+ subsubsection =
+ {
+ hang = true,
+ format = \color{ctex@frame}\sffamily,
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = \parskip,
+ afterskip = \parskip
+ }
+ }
+
+\bool_if:NF \l__eb_title_newline_bool
+ {
+ \ctex_set:n
+ {
+ part/hang = true,
+ chapter/hang = true
+ }
+ }
+%</class>
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\RequirePackage{etoolbox}
+\ProvidesExplPackage{easybase}{2021/06/02}{1.25q}{beta}
+
+\cs_generate_variant:Nn \eb_ctex_define:nn { nx }
+\cs_generate_variant:Nn \int_to_arabic:n { v }
+\cs_generate_variant:Nn \dim_add:Nn { NV }
+\cs_generate_variant:Nn \eb_put_hyperref:n { x }
+\cs_generate_variant:Nn \seq_set_from_clist:Nn { No }
+\cs_generate_variant:Nn \int_compare:nNnT { oNnT }
+\cs_new_protected:Npn \eb_ctex_define:nn #1
+ { \keys_define:nn { ctex/#1 } }
+\cs_new_protected:Npn \eb_patch_cmd:Nnn #1#2#3
+ {
+ \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
+ { } { \ctex_patch_failure:N #1 }
+ }
+\cs_new_protected:Npn \eb_preto_cmd:Nn #1#2
+ {
+ \ctex_preto_cmd:NnnTF #1 { } {#2}
+ { } { \ctex_patch_failure:N #1 }
+ }
+\cs_new_protected:Npn \eb_appto_cmd:Nn #1#2
+ {
+ \ctex_appto_cmd:NnnTF #1 { } {#2}
+ { } { \ctex_patch_failure:N #1 }
+ }
+\cs_new_protected:Npn \eb_at_begin_environment:nn #1#2
+ {
+ \seq_set_from_clist:No \l__eb_env_hook_name_seq {#1}
+ \seq_map_inline:Nn \l__eb_env_hook_name_seq
+ { \AtBeginEnvironment{##1}{#2} }
+ }
+\NewDocumentCommand{\eb@package@load}{O{}m}
+ {
+ \seq_set_from_clist:No \l__eb_package_name_seq {#2}
+ \int_compare:oNnT
+ { \seq_count:N \l__eb_package_name_seq } = { 1 }
+ { \PassOptionsToPackage{#1}{#2} }
+ \seq_map_inline:Nn \l__eb_package_name_seq
+ { \@ifpackageloaded{##1}{}{\RequirePackage{##1}} }
+ }
+\cs_new_protected:Npn \eb_at_end_preamble:n
+ { \ctex_gadd_ltxhook:nn { env/document/before } }
+\cs_gset_eq:NN \PackageWarning \use_none:nn
+
+\bool_if_exist:NF \l__eb_class_book_bool
+ { \bool_set_true:N \l__eb_class_book_bool }
+\bool_if_exist:NF \l__eb_page_twoside_bool
+ { \bool_set_true:N \l__eb_page_twoside_bool }
+\bool_if_exist:NF \l__eb_compile_draft_bool
+ { \bool_set_false:N \l__eb_compile_draft_bool }
+
+\keys_define:nn { easybase }
+ {
+ draft .code:n =
+ { \bool_set_true:N \l__eb_compile_draft_bool },
+
+ class .choice:,
+ class .value_required:n = true,
+ class/book .code:n = { },
+ class/article .code:n =
+ {
+ \bool_set_false:N \l__eb_class_book_bool
+ \bool_set_false:N \l__eb_page_twoside_bool
+ }
+ }
\clist_map_inline:nn
{
@@ -1098,13 +1331,12 @@
{ shortlabels,inline } { enumitem },
{ many } { tcolorbox },
{ xindy } { imakeidx },
- { CJKmath = true } { xeCJK },
+ { CJKmath } { xeCJK },
{ no-math } { fontspec },
{ upint } { newtxmath }
}
{ \PassOptionsToPackage #1 }
-\eb_put_ctexbook:n { \g__eb_options_clist }
-\LoadClass[UTF8]{ctexbook}
+\ProcessKeysOptions{easybase}
\bool_new:N \l__eb_multoc_bool
\bool_new:N \l__eb_uppercase_bool
@@ -1137,7 +1369,7 @@
withpart .bool_set:N = \l__eb_chap_withpart_bool,
withpart .default:n = true,
withpart .initial:n = false,
- rulewidth .dim_set:N = \l__eb_rule_width_dim,
+ rulewidth .dim_set:N = \eb@rule@width@dim,
rulewidth .initial:n = 0.75pt,
uppercase .bool_set:N = \l__eb_uppercase_bool,
uppercase .default:n = true,
@@ -1167,31 +1399,25 @@
number-sep .initial:n = { . }
}
-\RequirePackage
+\eb@package@load
{
xcolor,
footmisc,setspace,
amsmath,amsthm,thmtools,
chemformula,siunitx,ulem,pifont,
geometry,marginnote,nccfoots,
- pdfpages,graphicx,
+ pdfpages,graphicx,multicol,
fancyhdr,titletoc,caption,
tabularray,
enumitem,
listings
}
-\ctex_at_end:n
- {
- \tl_if_empty:NF \g__eb_config_tl
- { \file_input:n { \g__eb_config_tl } }
- }
-
\cs_new_protected:Npn \eb_package_later_bool:nn #1#2
{
\@ifpackagelater{#1}{#2}
- {}{\msg_warning:nnn { easybook } { package-old } {#1}}
+ {}{\msg_warning:nnn { easybase } { package-old } {#1}}
}
-\msg_new:nnn { easybook } { package-old }
+\msg_new:nnn { easybase } { package-old }
{
Package~#1~has~been~out~of~date. \\
Some~problems~or~errors~may~occur \\
@@ -1210,109 +1436,12 @@
}
{ \eb_package_later_bool:nn #1 }
-\sys_if_engine_xetex:TF
- {
- \cs_new_eq:NN \eb_set_family:nnn \xeCJK_set_family:nnn
- \cs_new_eq:NN \eb_switch_family:n \xeCJK_switch_family:n
- }
- {
- \cs_new_eq:NN \eb_set_family:nnn \ctex_ltj_set_family:nnn
- \cs_new_eq:NN \eb_switch_family:n \ctex_ltj_switch_family:n
- }
-\cs_new_protected:Npn \eb_font_double_engine_set:n #1
- {
- \exp_args:Nc \RenewDocumentCommand {set#1font}{O{}mO{}}
- {\use:c { eb_set#1font:nn } {##2} {##1,##3}}
- }
-\seq_const_from_clist:Nn \c__eb_font_reset_family_seq
- { main,sans,mono,CJKmain,CJKsans,CJKmono }
-\seq_map_inline:Nn \c__eb_font_reset_family_seq
- { \eb_font_double_engine_set:n {#1} }
-
-\cs_new_protected:Npn \eb_setmainfont:nn #1#2
- { \__fontspec_main_setmainfont:nn {#2} {#1} }
-\cs_new_protected:Npn \eb_setsansfont:nn #1#2
- { \__fontspec_main_setsansfont:nn {#2} {#1} }
-\cs_new_protected:Npn \eb_setmonofont:nn #1#2
- { \__fontspec_main_setmonofont:nn {#2} {#1} }
-\cs_new_protected:Npn \eb_setCJKmainfont:nn #1#2
- { \eb_set_family:nnn { \CJKrmdefault } {#2} {#1} }
-\cs_new_protected:Npn \eb_setCJKsansfont:nn #1#2
- { \eb_set_family:nnn { \CJKsfdefault } {#2} {#1} }
-\cs_new_protected:Npn \eb_setCJKmonofont:nn #1#2
- { \eb_set_family:nnn { \CJKttdefault } {#2} {#1} }
-\cs_new_protected:Npn \eb_set_zhfont_songti:nn #1#2
- { \eb_set_family:nnn { songti } {#2} {#1} }
-\cs_new_protected:Npn \eb_set_zhfont_heiti:nn #1#2
- { \eb_set_family:nnn { heiti } {#2} {#1} }
-\cs_new_protected:Npn \eb_set_zhfont_kaishu:nn #1#2
- { \eb_set_family:nnn { kaishu } {#2} {#1} }
-\cs_new_protected:Npn \eb_set_zhfont_fangsong:nn #1#2
- { \eb_set_family:nnn { fangsong } {#2} {#1} }
-
-\tl_const:Nn \eb_option_zhfont_tl
- { UprightFont = *,AutoFakeBold = 1.5,ItalicFont = * }
-\cs_new_protected:Npx \eb_setCJKmainfont:n #1
- { \eb_setCJKmainfont:nn {#1} { \eb_option_zhfont_tl } }
-\cs_new_protected:Npx \eb_setCJKsansfont:n #1
- { \eb_setCJKsansfont:nn {#1} { \eb_option_zhfont_tl } }
-\cs_new_protected:Npx \eb_setCJKmonofont:n #1
- { \eb_setCJKmonofont:nn {#1} { \eb_option_zhfont_tl } }
-\cs_new_protected:Npx \eb_set_zhfont_songti:n #1
- { \eb_set_zhfont_songti:nn {#1} { \eb_option_zhfont_tl } }
-\cs_new_protected:Npx \eb_set_zhfont_heiti:n #1
- { \eb_set_zhfont_heiti:nn {#1} { \eb_option_zhfont_tl } }
-\cs_new_protected:Npx \eb_set_zhfont_kaishu:n #1
- { \eb_set_zhfont_kaishu:nn {#1} { \eb_option_zhfont_tl } }
-\cs_new_protected:Npx \eb_set_zhfont_fangsong:n #1
- { \eb_set_zhfont_fangsong:nn {#1} { \eb_option_zhfont_tl } }
-
-\bool_if:NT \l__eb_font_noto_bool
- {
- \eb_setmainfont:nn { NotoSerif }
- {
- Extension = .ttf,
- UprightFont = *-Regular,
- BoldFont = *-Bold,
- ItalicFont = *-Italic
- }
- \eb_setsansfont:nn { NotoSans }
- {
- Extension = .ttf,
- UprightFont = *-Regular,
- BoldFont = *-Bold,
- ItalicFont = *-Italic
- }
- \eb_setmonofont:nn { NotoSansMono }
- {
- Extension = .ttf,
- UprightFont = *-Regular,
- BoldFont = *-Bold
- }
- \eb_setCJKmainfont:nn { FZShuSong-Z01S }
- {
- UprightFont = *,
- BoldFont = FZHei-B01S,
- ItalicFont = FZKai-Z03S
- }
- \eb_setCJKsansfont:n { FZHei-B01S }
- \eb_setCJKmonofont:n { FZFangSong-Z02S }
- \eb_set_zhfont_songti:n { FZShuSong-Z01S }
- \eb_set_zhfont_heiti:n { FZHei-B01S }
- \eb_set_zhfont_kaishu:n { FZKai-Z03S }
- \eb_set_zhfont_fangsong:n { FZFangSong-Z02S }
- \cs_new_protected:Npn \songti { \eb_switch_family:n { songti } }
- \cs_new_protected:Npn \heiti { \eb_switch_family:n { heiti } }
- \cs_new_protected:Npn \kaishu { \eb_switch_family:n { kaishu } }
- \cs_new_protected:Npn \fangsong { \eb_switch_family:n { fangsong } }
- }
-
\includepdfset{fitpaper = true}
\geometry
{
vmargin = 2.54cm,
hmargin = 3.17cm,
- columnsep = 2\ccwd,
+ columnsep = \ccwd,
headheight = 2.04cm,
headsep = 0.5cm,
footskip = 0.79cm,
@@ -1323,6 +1452,9 @@
\clist_new:N \g__eb_geometry_clist
\eb_ctex_define:nn { geoset }
{
+ headruleskip .tl_set:N = \headruleskip,
+ headruleskip .initial:n = 1.5pt,
+ footruleskip .tl_set:N = \footruleskip,
unknown .code:n =
{
\clist_gput_right:Nx \g__eb_geometry_clist
@@ -1342,13 +1474,13 @@
{ \hbox:n { }\thispagestyle{#1}\clearpage }
}
}
-\RenewDocumentCommand{\frontmatter}{sO{Roman}}
+\DeclareDocumentCommand{\frontmatter}{sO{Roman}}
{
\IfBooleanTF{#1}{\clearpage}{\cleardoublepage}
\boolfalse{@mainmatter}
\pagenumbering{#2}
}
-\RenewDocumentCommand{\mainmatter}{s}
+\DeclareDocumentCommand{\mainmatter}{s}
{
\IfBooleanTF{#1}{\clearpage}{\cleardoublepage}
\booltrue{@mainmatter}
@@ -1429,8 +1561,8 @@
headrule .initial:n =
{
\group_begin:
- \color{ctex@frame}\vspace*{1.5pt}
- \hrule width \textwidth height \l__eb_rule_width_dim
+ \color{ctex@frame}
+ \hrule\@width\textwidth\@height\eb@rule@width@dim
\group_end:
},
footrule .tl_gset:N = \footrule,
@@ -1440,7 +1572,7 @@
{
\group_begin:
\color{ctex@frame}
- \hrule width 0.35\columnwidth height \l__eb_rule_width_dim
+ \hrule\@width 0.35\columnwidth\@height\eb@rule@width@dim
\vspace*{2.6pt}
\group_end:
},
@@ -1674,7 +1806,7 @@
figure/#1 = ##1,
table/#1 = ##1,
lstlisting/#1 = ##1
- }
+ }
}
}
@@ -1686,6 +1818,12 @@
\hspace{\use:c { eb@toc@#1@numsep }}
}{}
}
+\cs_if_exist:NF \chapter
+ {
+ \newcounter{chapter}
+ \bool_set_false:N \l__eb_class_book_bool
+ \ctex_define:n { chapter/tocline .code:n = { } }
+ }
\newbool{eb@titletoc@hang@fix}
\eb_ctex_define:nn { tocset }
{
@@ -1863,29 +2001,32 @@
}
}
}
-
-\eb_appto_cmd:Nn \@chapter
+\cs_if_exist:NT \chapter
{
- \skip_if_eq:nnF { \l__eb_toc_lolskip_skip } { \c_zero_skip }
+ \eb_appto_cmd:Nn \@chapter
{
- \addtocontents{lol}
- {\protect\addvspace{\skip_use:N \l__eb_toc_lolskip_skip}}
+ \skip_if_eq:nnF { \l__eb_toc_lolskip_skip } { \c_zero_skip }
+ {
+ \addtocontents{lol}
+ {\protect\addvspace{\skip_use:N \l__eb_toc_lolskip_skip}}
+ }
+ \bool_if:NF \l__eb_class_book_bool
+ { \msg_error:nn { easybase } { no-chapter } }
+ }
+ \eb_appto_cmd:Nn \@schapter
+ {
+ \bool_if:NF \l__eb_class_book_bool
+ { \msg_error:nn { easybase } { no-chapter } }
}
- \bool_if:NF \l__eb_class_book_bool
- { \msg_error:nn { easybook } { no-chapter } }
- }
-\eb_appto_cmd:Nn \@schapter
- {
- \bool_if:NF \l__eb_class_book_bool
- { \msg_error:nn { easybook } { no-chapter } }
}
-\msg_new:nnn { easybook } { no-chapter }
+\msg_new:nnn { easybase } { no-chapter }
{
Your~document~class~is~in~article~mode. \\
The~\string\chapter\space~command~will~not~be~used.
}
-\tl_set:Nn \l__eb_toc_type_tl { book }
+\tl_set:Nx \l__eb_toc_type_tl
+ { \bool_if:NTF \l__eb_class_book_bool { book } { article } }
\tl_new:N \eb@bitoc@title
\keys_define:nn { eb/listoc }
{
@@ -1894,7 +2035,9 @@
multoc .bool_set:N = \l__eb_multoc_bool,
multoc .default:n = true,
multoc .initial:n = false,
- title .code:n = \eb_assign_toc_title:n {#1}
+ title .code:n = \eb_assign_toc_title:n {#1},
+ columns .int_set:N = \l__eb_toc_columns_int,
+ columns .initial:n = 2
}
\bool_if:NTF \l__eb_class_book_bool
{ \keys_define:nn { } { eb/listoc .inherit:n = ctex/chapter } }
@@ -1978,32 +2121,19 @@
}
\cs_new_protected:Npn \eb_multoc_pre_bool:
{
- \bool_if:NTF \l__eb_class_book_bool
- {
- \ifbool{@twocolumn}
- {
- \booltrue{@restonecol}
- \bool_if:NF \l__eb_multoc_bool { \onecolumn }
- }{
- \boolfalse{@restonecol}
- \bool_if:NT \l__eb_multoc_bool { \twocolumn }
- }
- }
- { \tl_set:Nn \l__eb_toc_type_tl { article } }
+ \bool_if:NT \l__eb_multoc_bool
+ { \begin{multicols}{\int_use:N \l__eb_toc_columns_int} }
}
\cs_new_protected:Npn \eb_multoc_post_bool:
- {
- \bool_if:NT \l__eb_class_book_bool
- { \ifbool{@restonecol}{\twocolumn}{\onecolumn} }
- }
+ { \bool_if:NT \l__eb_multoc_bool { \end{multicols} } }
\RenewDocumentCommand{\tableofcontents}{t+oD(){}}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \contentsname
\tl_set:Nn \eb@bitoc@title { Contents }
\IfValueT{#2}{\keys_set:nn { eb/listoc } {#2}}
- \eb_multoc_pre_bool:
\eb_title_mark_notoc:n { \eb@toc@title }
+ \eb_multoc_pre_bool:
\vspace*{\dim_use:N \l__eb_toc_offset_dim}
\@starttoc{toc}#3
\IfBooleanT{#1}
@@ -2020,8 +2150,8 @@
\group_begin:
\tl_set_eq:NN \eb@toc@title \listfigurename
\IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
- \eb_multoc_pre_bool:
\eb_title_number_intoc_bool:nn {#2} {#1}
+ \eb_multoc_pre_bool:
\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}
@@ -2033,8 +2163,8 @@
\group_begin:
\tl_set_eq:NN \eb@toc@title \listtablename
\IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
- \eb_multoc_pre_bool:
\eb_title_number_intoc_bool:nn {#2} {#1}
+ \eb_multoc_pre_bool:
\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}
@@ -2046,8 +2176,8 @@
\group_begin:
\tl_set_eq:NN \eb@toc@title \lstlistlistingname
\IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
- \eb_multoc_pre_bool:
\eb_title_number_intoc_bool:nn {#2} {#1}
+ \eb_multoc_pre_bool:
\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}
@@ -2189,7 +2319,7 @@
\c__eb_subfont_math_charter_tl
{ \eb_put_newtxmath:n { charter,noOT1 } }
}
- { \RequirePackage{newtxmath,bm} }
+ { \eb@package@load{newtxmath,bm} }
}
\fp_new:N \l__eb_spread_line_fp
@@ -2438,6 +2568,7 @@
label = (\Alph*),
column-sep = \ccwd,
item-indent = 2\ccwd,
+ label-offset = 0.5\ccwd,
label-width = 1.5\ccwd,
after-item-skip = 0ex plus .1ex
}
@@ -2545,7 +2676,7 @@
boxsep = 0pt,
arc = 0pt,
fonttitle = \sffamily,
- boxrule = \l__eb_rule_width_dim
+ boxrule = \eb@rule@width@dim
}
\newtcbox[auto~counter]{\eb@exercise@box}[1]{tc-exercise,#1}
\NewDocumentEnvironment{outline}{O{}D(){\abstractname}o+b}
@@ -2632,7 +2763,7 @@
{
standard~jigsaw,
nobeforeafter,tcbox~raise~base,
- top = 1.25pt,bottom = 1.25pt,left = 1.25pt,right = 1.25pt,
+ top = 1.25qt,bottom = 1.25qt,left = 1.25qt,right = 1.25qt,
boxrule = 0.75pt,arc = 1pt,
colback = #1,opacityback = 0.12,colframe = #1,#3
}{#2}
@@ -2697,9 +2828,11 @@
\group_begin:
\tl_set_eq:NN \eb@toc@title \bibname
\IfValueT{##3}{ \keys_set:nn { eb/listoc } {##3} }
- \eb_multoc_pre_bool:
\tl_set:Nn \bibsection
- { \eb_title_number_intoc_bool:nn {##2} {##1} }
+ {
+ \eb_title_number_intoc_bool:nn {##2} {##1}
+ \eb_multoc_pre_bool:
+ }
\exp_args:NV \bibliography \l__eb_bib_datafile_tl
\eb_multoc_post_bool:
\group_end:
@@ -2735,12 +2868,12 @@
{
\bool_if:NTF \l__eb_backend_bibtex_bool
{
- \RequirePackage[sort&compress]{natbib}
+ \eb@package@load[sort&compress]{natbib}
\EbBibtexSet
}
{
\EbBiblatexPreset
- \RequirePackage{biblatex}
+ \eb@package@load{biblatex}
\EbBiblatexPostset
}
}
@@ -2799,7 +2932,7 @@
aboveskip = 1.5ex plus .2ex minus .1ex,
belowskip = 0.55ex plus .2ex minus .1ex,
keepspaces = true,
- framerule = \l__eb_rule_width_dim,
+ framerule = \eb@rule@width@dim,
columns = flexible,
abovecaptionskip = -1ex,
belowcaptionskip = 1.5ex
@@ -2931,7 +3064,7 @@
}
\ctex_at_end_preamble:n
{
- \RequirePackage{hyperref}
+ \eb@package@load{hyperref}
\urlstyle{same}
\eb_allow_urlbreak:
\ctex_hypersetup:n { pdfstartview = FitH }
@@ -2969,73 +3102,5 @@
\labelformat{section}{Section~#1}
\labelformat{subsection}{Subsection~#1}
}
-
-\ctex_set:n
- {
- secnumdepth = 3,
- tocdepth = \bool_if:NTF \l__eb_class_book_bool { 1 } { 2 },
- part =
- {
- pagestyle = empty,
- tocline = \EbNumberLine{#1}#2,
- format = \color{ctex@frame}\sffamily\Huge,
- aftername =
- {
- \bool_if:NTF \l__eb_title_newline_bool
- { \par\nobreak } { \hspace{\ccwd} }
- }
- },
- chapter =
- {
- % pagestyle = fancy,
- format =
- {
- \color{ctex@frame}\sffamily\LARGE
- \bool_if:NF \l__eb_title_newline_bool { \centering }
- },
- aftername =
- {
- \bool_if:NTF \l__eb_title_newline_bool
- { \par\nobreak\vskip 1.5pc } { \hspace{\ccwd} }
- },
- beforeskip = -1.5ex,
- afterskip = 3ex,
- lotskip = 0.8pc,
- lofskip = 0.8pc
- },
- section =
- {
- hang = true,
- format = \color{ctex@frame}\sffamily\Large,
- aftername = \hspace{0.5\ccwd},
- beforeskip = 1.5ex plus .2ex minus .1ex,
- afterskip = 1.5ex plus .2ex minus .1ex
- },
- subsection =
- {
- hang = true,
- format = \color{ctex@frame}\sffamily\large,
- aftername = \hspace{0.5\ccwd},
- beforeskip = 1.3ex plus .2ex minus .1ex,
- afterskip = 1.3ex plus .2ex minus .1ex
- },
- subsubsection =
- {
- hang = true,
- format = \color{ctex@frame}\sffamily,
- aftername = \hspace{0.5\ccwd},
- beforeskip = \parskip,
- afterskip = \parskip
- }
- }
-
-\bool_if:NF \l__eb_title_newline_bool
- {
- \ctex_set:n
- {
- part/hang = true,
- chapter/hang = true
- }
- }
-%</class>
+%</package>
\endinput \ No newline at end of file