From d231c6331f53a048d29c2f847254a9f56d5ee2dd Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 3 Jun 2021 03:02:31 +0000 Subject: CTAN sync 202106030302 --- macros/latex/contrib/easybook/easybook.dtx | 647 ++++++++++++++++------------- macros/latex/contrib/easybook/easybook.ins | 6 +- macros/latex/contrib/easybook/easybook.pdf | Bin 313301 -> 315453 bytes 3 files changed, 361 insertions(+), 292 deletions(-) (limited to 'macros/latex/contrib/easybook') 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 = +% 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 = % \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 + } + } +% +%<*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 - } - } -% +% \endinput \ No newline at end of file diff --git a/macros/latex/contrib/easybook/easybook.ins b/macros/latex/contrib/easybook/easybook.ins index af8f3f8134..b70169f22a 100644 --- a/macros/latex/contrib/easybook/easybook.ins +++ b/macros/latex/contrib/easybook/easybook.ins @@ -20,6 +20,10 @@ The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode \endpreamble -\generate{\file{\jobname.cls}{\from{\jobname.dtx}{class}}} +\generate + { + \file{easybook.cls}{\from{\jobname.dtx}{class}} + \file{easybase.sty}{\from{\jobname.dtx}{package}} + } \endbatchfile \ No newline at end of file diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf index 80221ec676..7d7ea10892 100644 Binary files a/macros/latex/contrib/easybook/easybook.pdf and b/macros/latex/contrib/easybook/easybook.pdf differ -- cgit v1.2.3