From 1516b5dcbb347d2c41c1322b43b0e2ad35284431 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 Jan 2021 22:43:51 +0000 Subject: easybook (11jan21) git-svn-id: svn://tug.org/texlive/trunk@57389 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/easybook/README.md | 6 +- Master/texmf-dist/doc/latex/easybook/chapter2.tex | 2 +- Master/texmf-dist/doc/latex/easybook/chapter3.tex | 2 +- .../doc/latex/easybook/easybook-demo.pdf | Bin 308924 -> 309273 bytes .../doc/latex/easybook/easybook-demo.tex | 10 +- Master/texmf-dist/doc/latex/easybook/easybook.pdf | Bin 197489 -> 212031 bytes Master/texmf-dist/doc/latex/easybook/easybook.tex | 108 +++++---- Master/texmf-dist/doc/latex/easybook/preface.tex | 4 +- Master/texmf-dist/tex/latex/easybook/easybook.cls | 268 +++++++++++++-------- 9 files changed, 250 insertions(+), 150 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/easybook/README.md b/Master/texmf-dist/doc/latex/easybook/README.md index 9c98211412a..57446073602 100644 --- a/Master/texmf-dist/doc/latex/easybook/README.md +++ b/Master/texmf-dist/doc/latex/easybook/README.md @@ -17,8 +17,8 @@ xelatex -shell-escape easybook-demo ## Reference documents - [CTeX macro collection manual](https://ctan.org/pkg/ctex) -- [Xiamen University graduation thesis template](https://github.com/CamuseCao/XMU-thesis) - [Fudan University graduation thesis template](https://github.com/stone-zeng/fduthesis) +- [Xiamen University graduation thesis template](https://github.com/CamuseCao/XMU-thesis) - [Wuhan University graduation thesis template](https://github.com/mtobeiyf/whu-thesis) - [ElegantBook book template](https://ctan.org/pkg/elegantbook) @@ -32,7 +32,7 @@ This work may be distributed and/or modified under the conditions of the CC-BY 4 # easybook 书籍文档类 -easybook 是基于 ctexbook 书籍文档类的极简风格模板。它主要适用于中文书籍或笔记的排版,甚至可以稍作修改成为论文模板。已加载一些常用的宏包以实现一般的排版要求。尽管已尽可能多地考虑了一些细节,但仍然存在不足。 +easybook 是基于 ctexbook 书籍文档类的极简风格模板。它主要适用于中文书籍或笔记的排版,甚至可以稍作修改成为学位论文模板。已加载一些常用的宏包以实现一般的排版要求。尽管已尽可能多地考虑了一些细节,但仍然存在不足。 ## 编译方法 @@ -49,8 +49,8 @@ xelatex -shell-escape easybook-demo ## 参考文档 - [CTeX 宏集手册](https://ctan.org/pkg/ctex) -- [厦门大学毕业论文模板](https://github.com/CamuseCao/XMU-thesis) - [复旦大学毕业论文模板](https://github.com/stone-zeng/fduthesis) +- [厦门大学毕业论文模板](https://github.com/CamuseCao/XMU-thesis) - [武汉大学毕业论文模板](https://github.com/mtobeiyf/whu-thesis) - [ElegantBook 书籍模板](https://ctan.org/pkg/elegantbook) diff --git a/Master/texmf-dist/doc/latex/easybook/chapter2.tex b/Master/texmf-dist/doc/latex/easybook/chapter2.tex index b8ab64147d2..43af513c95e 100644 --- a/Master/texmf-dist/doc/latex/easybook/chapter2.tex +++ b/Master/texmf-dist/doc/latex/easybook/chapter2.tex @@ -57,7 +57,7 @@ The Stokes formula is an extension of the basic calculus formula in the case of \begin{mybox}*[My title]\index{z@自定义盒子} \zhlipsum*[3][name = aspirin] -\tcblower + \tcblower \zhlipsum*[8][name = aspirin] \end{mybox} diff --git a/Master/texmf-dist/doc/latex/easybook/chapter3.tex b/Master/texmf-dist/doc/latex/easybook/chapter3.tex index 6ca662ca0dc..df8ca09eafc 100644 --- a/Master/texmf-dist/doc/latex/easybook/chapter3.tex +++ b/Master/texmf-dist/doc/latex/easybook/chapter3.tex @@ -49,6 +49,6 @@ HN-[::+60]CH_3)=-(-HO)=)}\] 这是一个参考文献引用的范例\cite{1979Prospect}。引用多个文献,将引用标号中的多个文献序号按升序排列,若其中有2个以上的连续序号,则改用范围序号,例如\cite{1979Prospect,1989The,2010An}。 \section{行内盒子}\index{h@行内盒子} -对乙酰氨基酚和布洛芬 \concise[Aqua][fontupper = \rmfamily]{concise} 于1956年和1959年相继问世以后,阿司匹林 \fuzzy[yellow][fontupper = \ttfamily,colupper = black]{fuzzy} 的使用率开始下降。 +对乙酰氨基酚和布洛芬 \concise[Aqua][fontupper = \rmfamily]{concise} 于1956年和1959年相继问世以后,阿司匹林 \fuzzy[DarkSeaGreen][fontupper = \ttfamily,colupper = black]{fuzzy} 的使用率开始下降。 \end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/easybook-demo.pdf b/Master/texmf-dist/doc/latex/easybook/easybook-demo.pdf index 16869f252c3..764f18f4469 100644 Binary files a/Master/texmf-dist/doc/latex/easybook/easybook-demo.pdf and b/Master/texmf-dist/doc/latex/easybook/easybook-demo.pdf differ diff --git a/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex b/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex index b03695b0bd9..ab7a864b753 100644 --- a/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex +++ b/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex @@ -4,7 +4,6 @@ style = { color = forest, - % cite = authoryear, thmbox = true, % capdash = true, % multoc = true, @@ -34,6 +33,11 @@ fnfont = \rmfamily, marfont = \sffamily\footnotesize }, + bibset = + { + backend = bibtex, + bibstyle = number + }, % secnumdepth = 2, % tocdepth = 2 } @@ -49,7 +53,7 @@ \textcolor[HTML]{00c2ff}{\faEdge}~\url{https://latexstudio.net} \\ \url{https://ctan.org/pkg/easybook} } - \date{2021/01/09\hskip\ccwd\relax v1.2} + \date{2021/01/11\hskip\ccwd\relax v1.21} } \begin{document} @@ -66,7 +70,7 @@ \subfile{pages/appendix} \backmatter -\bibliography{ref/refs} +\printbibliography \listoffigures \listoftables \listoflistings diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.pdf b/Master/texmf-dist/doc/latex/easybook/easybook.pdf index 3ec672b5183..dc02797df43 100644 Binary files a/Master/texmf-dist/doc/latex/easybook/easybook.pdf and b/Master/texmf-dist/doc/latex/easybook/easybook.pdf differ diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.tex b/Master/texmf-dist/doc/latex/easybook/easybook.tex index ab65b0c7c81..0ccfde03c0c 100644 --- a/Master/texmf-dist/doc/latex/easybook/easybook.tex +++ b/Master/texmf-dist/doc/latex/easybook/easybook.tex @@ -2,18 +2,19 @@ \hypersetup { colorlinks, - linkcolor=blue, - urlcolor=blue + linkcolor = blue, + urlcolor = blue } \title{\sffamily easybook书籍文档类} \author{瞿毅} -\date{2021/01/09\hskip\ccwd\relax v1.2\thanks{\url{https://gitee.com/TeX-doc/easybook}}} +\date{2021/01/11\hskip\ccwd\relax v1.21\thanks{\url{https://gitee.com/TeX-doc/easybook}}} \begin{document} \maketitle -\changes{v1.2}{2021/01/09}{修改和完善用户文档。} -\changes{v1.2}{2021/01/09}{模板更改为使用CC-BY许可协议。} +\changes{v1.20}{2021/01/09}{修改和完善用户文档。} +\changes{v1.20}{2021/01/09}{模板更改为使用CC-BY许可协议。} +\changes{v1.21}{2021/01/11}{修复单面文档时页眉横线消失的问题。} \begin{abstract} \cls{easybook} 是基于 \cls{ctexbook} 书籍文档类创建以极简为风格的模板,可以看作对 \cls{ctexbook} 的进一步包装。虽然\CTeX 文档类提供了较好的中文支持,但想实现个性化功能一般需要在其基础上载入更多宏包来定制。\cls{easybook} 考虑了一些细节并载入一些常用宏包实现一般的排版需求,它适用于排版中英文书籍或笔记,甚至可稍加修改成为学位论文模板。 \end{abstract} @@ -36,7 +37,7 @@ xelatex -shell-escape easybook-demo \end{frameverb} -需注意,正确\textbf{编译索引}需要增加 \opt{-shell-escape} 命令行选项。若不需要索引和参考文献,可以在正文中注释掉命令。若出现以下警告,再编译一次即可。 +需注意,正确\textsf{编译索引}需要增加 \opt{-shell-escape} 命令行选项。若不需要索引和参考文献,可以在正文中注释掉命令。若出现以下警告,再编译一次即可。 \begin{frameverb} LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. \end{frameverb} @@ -44,7 +45,7 @@ \subsection{字体设置} 默认中文使用方正系列的{\songti 方正书宋}、{\heiti 方正黑体}、{\kaishu 方正楷体}和{\fangsong 方正仿宋},英文使用思源系列的{\rmfamily Noto Serif}、{\sffamily Noto Sans}和{\ttfamily Noto Sans Mono},数学字体使用 \pkg{notomath}。字体点击此处下载\href{https://wws.lanzous.com/b01ns361i}{下载地址}。 -如果您\textbf{懒于安装字体},可以见小节 \ref{subsec1} 使用\CTeX 预置中文字库。如果您不喜欢方正、思源字体,\textbf{自定义字体}需启用选项 \opt{font = none},并可在导言区设置中文字体,粗体与斜体不设置会产生警告。 +如果您\textsf{懒于安装字体},可以见小节 \ref{subsec1} 使用\CTeX 预置中文字库。如果您不喜欢方正、思源字体,\textsf{自定义字体}需启用选项 \opt{font = none},并可在导言区设置中文字体,粗体与斜体不设置会产生警告。 \begin{ctexexam} \setCJKmainfont{SimSun}[BoldFont = SimHei,ItalicFont = KaiTi] \setCJKsansfont{SimHei} @@ -57,8 +58,8 @@ \item 带有 \rexptarget\rexpstar{} 号的选项,需要在引入文档类的时候设定。 \item 带有 \exptarget\expstar{} 号的选项,需要通过\CTeX 宏集提供的用户接口命令 \tn{ctexset} 设定。 \end{itemize} -\subsection{文档类选项}\label{subsec1} +\subsection{文档类选项}\label{subsec1} \begin{function}[rEXP,added = 2021-01-05]{draft} 开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。 \end{function} @@ -107,15 +108,14 @@ \begin{syntax} config = <配置文件名> \end{syntax} -\changes{v1.1}{2021/01/08}{加入载入用户配置选项。} +\changes{v1.10}{2021/01/08}{加入载入用户配置选项。} \opt{config}为载入用户配置选项,配置文件名不需加括号但需带有后缀名如 \opt{tex}、\opt{def} 和 \opt{cfg}。 \end{function} \subsubsection{风格} -\begin{function}[EXP,updated = 2021-01-08]{style/color,style/cite,style/thmbox,style/capdash,style/multoc,style/withpart,style/perchap,style/perpage} +\begin{function}[EXP,updated = 2021-01-08]{style/color,style/thmbox,style/capdash,style/multoc,style/withpart,style/perchap,style/perpage} \begin{syntax} color = <(none)|forest|energy|cyberpunk> - cite = <(number)|authoryear> thmbox = capdash = multoc = @@ -123,26 +123,25 @@ perchap = perpage = \end{syntax} -\changes{v1.1}{2021/01/08}{更改颜色实现方式与选项名。} +\changes{v1.10}{2021/01/08}{更改颜色实现方式与选项名。} \opt{style} 选项控制文章的风格。 \end{function} \begin{optdesc} - \item[color]主题颜色,包括标题、页眉颜色等,选项 \opt{none} 为黑白页面,但不包括超链接。 + \item[color] 主题颜色,包括标题、页眉颜色等,选项 \opt{none} 为黑白页面,但不包括超链接。 \begin{function}{ctex@frame,ctex@emph,ctex@verb} \begin{syntax} \tn{definecolor}\oarg{类型}\marg{名称}\marg{模式列表}\marg{参数列表} \end{syntax} - \changes{v1.1}{2021/01/08}{可以自定义主题颜色。} + \changes{v1.10}{2021/01/08}{可以自定义主题颜色。} 主题颜色用到这三个颜色,可以使用 \tn{definecolor} 命令进行更改,类似地更改超链接颜色见小节 \ref{ssubsec1}。 \end{function} - \item[cite]参考文献格式为中国的参考文献推荐标准GB/T 7714-2015,有顺序编码制和著者-出版年制两种风格,理工科类一般使用顺序编码制,文科类一般使用著者-出版年制。 - \item[thmbox]开启定理及习题环境的盒子边框。 - \item[capdash]将图表代码标题风格由例如\textsf{图1.1}变为\textsf{图1--1}的形式。 - \item[multoc]开启双栏目录,可与 \opt{onecolumn} 和 \opt{twocolumn} 选项配合出单栏正文、单栏目录,双栏正文、单栏目录,单栏正文、双栏目录和双栏正文、双栏目录四种方式 。 - \item[withpart]使章跟随每一部分编号,默认不跟随。 - \item[perchap]使脚注跟随每一章编号,默认不跟随。 - \item[perpage]使脚注跟随每一页编号,默认不跟随。 + \item[thmbox] 开启定理及习题环境的盒子边框。 + \item[capdash] 将图表代码标题风格由例如\textsf{图1.1}变为\textsf{图1\textendash 1}的形式。 + \item[multoc] 开启双栏目录,可与 \opt{onecolumn} 和 \opt{twocolumn} 选项配合出单栏正文、单栏目录,双栏正文、单栏目录,单栏正文、双栏目录和双栏正文、双栏目录四种方式 。 + \item[withpart] 使章跟随每一部分编号,默认不跟随。 + \item[perchap] 使脚注跟随每一章编号,默认不跟随。 + \item[perpage] 使脚注跟随每一页编号,默认不跟随。 \end{optdesc} \subsubsection{超链接}\label{ssubsec1} @@ -152,19 +151,19 @@ linkcolor = <(graphite)|cutepink|skyblue|crimson> linktopage = \end{syntax} -\changes{v1.1}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。} +\changes{v1.10}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。} \end{function} \begin{optdesc} - \item[hyperlink]\opt{edge} 使超链接为边框形式,\opt{various} 使超链接为彩色字体,有四种颜色风格。\opt{none} 关闭超链接边框与颜色,此时 \opt{linkcolor} 选项无效。 - \item[linkcolor]超链接颜色样式。 + \item[hyperlink] \opt{edge} 使超链接为边框形式,\opt{various} 使超链接为彩色字体,有四种颜色风格。\opt{none} 关闭超链接边框与颜色,此时 \opt{linkcolor} 选项无效。 + \item[linkcolor] 超链接颜色样式。 \begin{function}{ctex@link,ctex@url,ctex@cite} \begin{syntax} \tn{definecolor}\oarg{类型}\marg{名称}\marg{模式列表}\marg{参数列表} \end{syntax}超链接颜色用到这三个颜色,可以使用 \tn{definecolor} 命令进行更改。 - \changes{v1.1}{2021/01/08}{可以自定义超链接颜色。} + \changes{v1.10}{2021/01/08}{可以自定义超链接颜色。} \end{function} - \item[linktopage]将目录中的超链接置于页码上,默认是置于标题上。 + \item[linktopage] 将目录中的超链接置于页码上,默认是置于标题上。 \end{optdesc} \subsubsection{行距} @@ -180,11 +179,11 @@ \end{function} \begin{optdesc} - \item[linespread]正文行距。 - \item[tabspread]表格行距。 - \item[mathspread]数学环境行距。 - \item[capspread]图表代码标题行距。 - \item[fnspread]脚注行距。 + \item[linespread] 正文行距。 + \item[tabspread] 表格行距。 + \item[mathspread] 数学环境行距。 + \item[capspread] 图表代码标题行距。 + \item[fnspread] 脚注行距。 \end{optdesc} \subsubsection{其它字体} @@ -196,18 +195,39 @@ fnfont = <\tn{rmfamily}> marfont = <\tn{rmfamily}\tn{footnotesize}> \end{syntax} -\changes{v1.1}{2021/01/08}{加入自定义非正文字体选项。} +\changes{v1.10}{2021/01/08}{加入自定义非正文字体选项。} +\end{function} + +\begin{optdesc} + \item[tabfont] 表格标题的字体设置。 + \item[figfont] 图片标题的字体设置。 + \item[lstfont] 代码标题的字体设置。 + \item[fnfont] 脚注的字体设置,请不要使用字号命令。 + \item[marfont] 边注的字体设置。 +\end{optdesc} + +\subsubsection{参考文献} +\begin{function}[EXP,added = 2021-01-11]{bibset/backend,bibset/bibstyle,bibset/citestyle,bibset/bibfile,\printbibliography} +\begin{syntax} + backend = <(bibtex)|biblatex> + bibstyle = <(number)|authoryear|其它格式> + citestyle = <引用格式> + bibfile = + \tn{printbibliography}\oarg{选项列表} +\end{syntax} +\changes{v1.21}{2021/01/11}{增加 \opt{bibset} 选项,可以使用 \hologo{BibTeX} 或 \hologo{biber} 编译参考文献。} \end{function} \begin{optdesc} - \item[tabfont]表格标题的字体设置。 - \item[figfont]图片标题的字体设置。 - \item[lstfont]代码标题的字体设置。 - \item[fnfont]脚注的字体设置,请不要使用字号命令。 - \item[marfont]边注的字体设置。 + \item[backend] 参考文献处理后端,默认用传统的 \hologo{BibTeX} 处理参考文献。 + \item[bibstyle] 参考文献格式为中国的参考文献推荐标准GB/T 7714-2015,有顺序编码制和著者-出版年制两种风格,理工科类一般使用顺序编码制,文科类一般使用著者-出版年制。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \opt{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg{biblatex} 宏包支持的参考文献风格名称。 + \item[citestyle] 引用参考文献的格式,对 \opt{backend = bibtex} 选项\textsf{无效},可使用 \pkg{biblatex} 宏包支持的引用文献风格名称。 + \item[bibfile] 参考文献的数据文件,使用 \hologo{biber} 处理时要带有 \opt{bib} 后缀,默认为一个在 \opt{ref} 文件夹中以 \opt{refs.bib} 命名的文件。 + \item[\tn{printbibliography}] 两种方式\textsf{均使用}此命令打印参考文献,其中可选项仅在 \hologo{biber} 处理时有效。 \end{optdesc} \section{常用环境} + \subsection{公式} \begin{function}[added = 2021-01-05]{equation,multline,gather,align} \begin{syntax} @@ -234,7 +254,7 @@ \end{function} \subsubsection{排序列表}\label{ssubsec2} -使用 \opt{enumerate} 环境可创建排序列表,使用 \opt{enumerate*} 环境产生行内部列表,可以使用\textsf{A、a、I、i和1}作为可选项为 \opt{enumerate} 与 \opt{enumerate*} 格式化标签。若生成\textbf{Item I、Item II、Item III}格式可以这样 +使用 \opt{enumerate} 环境可创建排序列表,使用 \opt{enumerate*} 环境产生行内部列表,可以使用\textsf{A、a、I、i和1}作为可选项为 \opt{enumerate} 与 \opt{enumerate*} 格式化标签。若生成\textsf{Item I、Item II、Item III}格式可以这样 \begin{ctexexam} \begin{enumerate*}[(a)] \begin{enumerate}[\bfseries{Item} I] @@ -249,7 +269,8 @@ \begin{itemize}[$\star$] \end{ctexexam} -\subsubsection{主题列表}使用 \opt{description} 环境可创建带有主题词的列表。 +\subsubsection{主题列表} +使用 \opt{description} 环境可创建带有主题词的列表。 \begin{ctexexam} \begin{description} \item[主题一] 内容一 @@ -330,14 +351,14 @@ \section{其它格式} \subsection{代码} -\begin{function}[added = 2021-01-05]{\lstinline,lstlisting} +\begin{function}[added = 2021-01-05]{\lstinline,lstlisting,\listoflistings} \begin{syntax} \tn{lstinline}\oarg{键值列表}\marg{行内代码} \tn{begin}\marg{lstlisting}\oarg{键值列表} <行间代码> \tn{end}\marg{lstlisting} \end{syntax} -使用 \pkg{listings} 宏包可以对代码格式进行高度定制。 +使用 \pkg{listings} 宏包可以对代码格式进行高度定制,\tn{listoflistings} 命令用于输出代码目录。 \end{function} \subsection{物理量} @@ -373,11 +394,12 @@ \end{function} \subsubsection{索引} -\begin{function}[added = 2021-01-05]{\index} +\begin{function}[added = 2021-01-05]{\index,\printindex} \begin{syntax} \tn{index}\marg{标签} + \tn{printindex}\oarg{索引名} \end{syntax} -使用 \pkg{imakeidx} 生成索引,仅做了简单的设置如将索引设为双栏并加入目录,其他选项可另外配置。 +使用 \pkg{imakeidx} 生成索引,\tn{printindex} 命令用于生成索引目录。仅做了简单的设置如将索引设为双栏并加入目录,其他选项可另外配置。 \end{function} \subsubsection{脚注} diff --git a/Master/texmf-dist/doc/latex/easybook/preface.tex b/Master/texmf-dist/doc/latex/easybook/preface.tex index fc862b21f86..d913c3abe16 100644 --- a/Master/texmf-dist/doc/latex/easybook/preface.tex +++ b/Master/texmf-dist/doc/latex/easybook/preface.tex @@ -7,14 +7,14 @@ \lstinline{easybook} 使用\LaTeX 3语法将选项扩展入\CTeX 宏集接口命令 \lstinline{\ctexset} 的列表。如果无法编译以及选项说明细节参见~\href{./easybook.pdf}{easybook用户手册}。 \begin{enumerate}[label = \color{DarkBlue}\protect\circled{\arabic*}] +\item 增加 \lstinline{bibset} 选项,可以使用 \lstinline{bibtex} 或 \lstinline{biber} 编译参考文献。 +\item 修复单面文档时页眉横线消失的问题。 \item 修复了 \lstinline{linktopage} 选项关闭时目录中标题编号无超链接的问题。 \item 增加 \lstinline{elfont} 选项可以自定义图表、代码、脚注和边注的字体。 \item 增加 \lstinline{config} 选项可以载入用户配置文件。 \item 优化页眉页脚,单面或双面排版适配了不同风格。 \item 更改草稿选项,与标准文类行为一致并显示页面边框。 \item 使用功能更丰富的 \lstinline{thmtools} 设置定理环境。 -\item 可自定义正文、表格、公式环境、图表标题以及脚注的行距。 -\item 图表可以使用双语标题,增加代码索引和索引目录,脚注标记可以设置为自定义的符号。 \end{enumerate} \vfill{\small\doclicenseThis} diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls index f413155cbaf..48f079ad663 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybook.cls +++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls @@ -9,10 +9,12 @@ %% https://creativecommons.org/licenses/by/4.0/legalcode \NeedsTeXFormat{LaTeX2e} \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/01/09}{v1.2}{} +\ProvidesExplClass{easybook}{2021/01/11}{v1.21}{} \cs_generate_variant:Nn \keys_define:nn {nx} \cs_generate_variant:Nn \int_to_arabic:n {v} +\cs_new_protected:Npn \__put_ctexbook:n #1 + {\PassOptionsToClass{#1}{ctexbook}} \cs_new_protected:Npn \__patch_cmd:Nnn #1#2#3 {\ctex_patch_cmd_once:NnnnTF #1{}{#2}{#3}{}{\ctex_patch_failure:N #1}} \cs_new_protected:Npn \__appto_cmd:Nn #1#2 @@ -27,13 +29,6 @@ \bool_set_false:N \l__paper_bfive_bool \bool_set_true:N \l__paper_afour_bool \bool_set_true:N \l__page_twoside_bool -\bool_new:N \l__thmbox_bool -\bool_new:N \l__capdash_bool -\bool_new:N \l__multoc_bool -\bool_new:N \l__chap_withpart_bool -\bool_new:N \l__foot_perpart_bool -\bool_new:N \l__foot_perpage_bool -\clist_new:N \g__hyperref_clist \clist_new:N \g__options_clist \keys_define:nn {easybook} @@ -47,36 +42,36 @@ font .choice:, font/adobe .code:n = { - \PassOptionsToClass{fontset = #1}{ctexbook} + \__put_ctexbook:n {fontset = #1} \bool_set_false:N \l__myfont_bool }, font/founder .code:n = { - \PassOptionsToClass{fontset = #1}{ctexbook} + \__put_ctexbook:n {fontset = #1} \bool_set_false:N \l__myfont_bool }, font/mac .code:n = { - \PassOptionsToClass{fontset = #1}{ctexbook} + \__put_ctexbook:n {fontset = #1} \bool_set_false:N \l__myfont_bool }, font/windows .code:n = { - \PassOptionsToClass{fontset = #1}{ctexbook} + \__put_ctexbook:n {fontset = #1} \bool_set_false:N \l__myfont_bool }, font/linux .code:n = { - \PassOptionsToClass{fontset = ubuntu}{ctexbook} + \__put_ctexbook:n {fontset = ubuntu} \bool_set_false:N \l__myfont_bool }, font/overleaf .code:n = {\bool_set_false:N \l__myfont_bool}, font/none .code:n = { - \PassOptionsToClass{fontset = #1}{ctexbook} + \__put_ctexbook:n {fontset = #1} \bool_set_false:N \l__myfont_bool - }, + }, font .default:n = windows, paper .choice:, @@ -95,7 +90,7 @@ \ProcessKeysOptions{easybook} -\bool_if:NT \l__myfont_bool{\PassOptionsToClass{fontset = none}{ctexbook}} +\bool_if:NT \l__myfont_bool{\__put_ctexbook:n {fontset = none}} \bool_if:NT \l__enstyle_bool { \bool_set_false:N \l__lang_chinese_bool @@ -103,25 +98,35 @@ \bool_set_true:N \l__newline_bool } \bool_if:NTF \l__lang_chinese_bool - {\PassOptionsToClass{scheme = chinese}{ctexbook}} - {\PassOptionsToClass{scheme = plain}{ctexbook}} + {\__put_ctexbook:n {scheme = chinese}} + {\__put_ctexbook:n {scheme = plain}} -\PassOptionsToClass{\g__options_clist}{ctexbook} +\__put_ctexbook:n {\g__options_clist} \PassOptionsToPackage{CJKmath = true}{xeCJK} \LoadClass[UTF8]{ctexbook} -\tl_new:N \g__keys_color_tl -\tl_new:N \g__keys_cite_tl -\fp_new:N \g__line_spread_fp -\fp_new:N \g__tab_spread_fp -\tl_new:N \g__math_spread_tl -\tl_new:N \g__cap_spread_tl -\tl_new:N \g__foot_spread_tl -\tl_new:N \g__tab_font_tl -\tl_new:N \g__fig_font_tl -\tl_new:N \g__lst_font_tl -\tl_new:N \g__foot_font_tl -\tl_new:N \g__margin_font_tl +\bool_set_true:N \l__backend_bibtex_bool +\clist_new:N \l__hyperref_clist +\bool_new:N \l__thmbox_bool +\bool_new:N \l__capdash_bool +\bool_new:N \l__multoc_bool +\bool_new:N \l__chap_withpart_bool +\bool_new:N \l__foot_perpart_bool +\bool_new:N \l__foot_perpage_bool +\fp_new:N \l__line_spread_fp +\fp_new:N \l__tab_spread_fp +\tl_new:N \l__math_spread_tl +\tl_new:N \l__cap_spread_tl +\tl_new:N \l__foot_spread_tl +\tl_new:N \l__tab_font_tl +\tl_new:N \l__fig_font_tl +\tl_new:N \l__lst_font_tl +\tl_new:N \l__foot_font_tl +\tl_new:N \l__margin_font_tl +\tl_new:N \l__bib_mysty_tl +\tl_new:N \l__bib_style_tl +\tl_new:N \l__bib_citesty_tl +\tl_new:N \l__bib_file_tl \tl_new:N \g__config_tl \ctex_define:n @@ -130,13 +135,9 @@ link .meta:nn = {ctex/link}{#1}, spread .meta:nn = {ctex/spread}{#1}, elfont .meta:nn = {ctex/elfont}{#1}, + bibset .meta:nn = {ctex/bibset}{#1}, config .tl_set:N = \g__config_tl, - style/cite .choices:nn = - {number,authoryear} - {\tl_set_eq:NN \g__keys_cite_tl\l_keys_choice_tl}, - style/cite .initial:n = number, - style/thmbox .bool_set:N = \l__thmbox_bool, style/thmbox .default:n = true, style/thmbox .initial:n = false, @@ -156,30 +157,54 @@ style/perpage .default:n = true, style/perpage .initial:n = false, - spread/linespread .fp_set:N = \g__line_spread_fp, + spread/linespread .fp_set:N = \l__line_spread_fp, spread/linespread .initial:n = 1.3, - spread/tabspread .fp_set:N = \g__tab_spread_fp, + spread/tabspread .fp_set:N = \l__tab_spread_fp, spread/tabspread .initial:n = 1, - spread/mathspread .tl_set:N = \g__math_spread_tl, + spread/mathspread .tl_set:N = \l__math_spread_tl, spread/mathspread .initial:n = 1, - spread/capspread .tl_set:N = \g__cap_spread_tl, + spread/capspread .tl_set:N = \l__cap_spread_tl, spread/capspread .initial:n = 1, - spread/fnspread .tl_set:N = \g__foot_spread_tl, + spread/fnspread .tl_set:N = \l__foot_spread_tl, spread/fnspread .initial:n = 1, - elfont/tabfont .tl_set:N = \g__tab_font_tl, + elfont/tabfont .tl_set:N = \l__tab_font_tl, elfont/tabfont .initial:n = \sffamily\small, - elfont/figfont .tl_set:N = \g__fig_font_tl, + elfont/figfont .tl_set:N = \l__fig_font_tl, elfont/figfont .initial:n = \sffamily\small, - elfont/lstfont .tl_set:N = \g__lst_font_tl, + elfont/lstfont .tl_set:N = \l__lst_font_tl, elfont/lstfont .initial:n = \sffamily\small, - elfont/fnfont .tl_set:N = \g__foot_font_tl, + elfont/fnfont .tl_set:N = \l__foot_font_tl, elfont/fnfont .initial:n = \rmfamily, - elfont/marfont .tl_set:N = \g__margin_font_tl, + elfont/marfont .tl_set:N = \l__margin_font_tl, elfont/marfont .initial:n = \rmfamily\footnotesize, - lstlistlistingname .tl_set:N = \lstlistlistingname, - lstlistingname .tl_set:N = \lstlistingname + bibset/backend .choice:, + bibset/backend/bibtex .code:n = {}, + bibset/backend/biblatex .code:n = + {\bool_set_false:N \l__backend_bibtex_bool}, + bibset/bibstyle .choice:, + bibset/bibstyle .value_required:n = true, + bibset/bibstyle/number .code:n = + { + \tl_set:Nn \l__bib_style_tl{number} + \tl_clear:N \l__bib_mysty_tl + }, + bibset/bibstyle/authoryear .code:n = + { + \tl_set:Nn \l__bib_style_tl{authoryear} + \tl_clear:N \l__bib_mysty_tl + }, + bibset/bibstyle/unknown .code:n = + {\tl_set_eq:NN \l__bib_mysty_tl\l_keys_value_tl}, + bibset/bibstyle .initial:n = number, + bibset/citestyle .code:n = + {\tl_set:Nn \l__bib_citesty_tl{#1}}, + bibset/bibfile .tl_set:N = \l__bib_file_tl, + bibset/bibfile .initial:n = ref/refs.bib, + + lstlistlistingname .tl_set:N = \lstlistlistingname, + lstlistingname .tl_set:N = \lstlistingname } \RequirePackage[svgnames]{xcolor} @@ -197,8 +222,9 @@ \RequirePackage{hologo} \hologoSetup{discretionarybreak = true} \RequirePackage{rotfloat} -\RequirePackage{geometry,marginnote,nccfoots,tablefootnote} -\RequirePackage{fancyhdr,titletoc} +\RequirePackage{geometry,marginnote,changepage} +\RequirePackage{nccfoots,tablefootnote} +\RequirePackage{fancyhdr,fancybox,titletoc} \RequirePackage{caption,bicaption,subcaption} \RequirePackage{graphicx,wrapfig} \RequirePackage{zhlipsum,fontawesome,pifont} @@ -206,7 +232,6 @@ \RequirePackage{paralist,tasks} \RequirePackage[shortlabels,inline]{enumitem} \RequirePackage[most]{tcolorbox} -\RequirePackage[sort&compress]{gbt7714} \RequirePackage[xindy]{imakeidx} \RequirePackage[ lang = {chinese-utf8}, @@ -412,7 +437,7 @@ \fancyfoot[C]{\color{ctex@frame}\thepage} \fancypagestyle{plain} { - \fancyhf{}\cs_gset:Npn \headrule{} + \fancyhf{}\cs_set:Npn \headrule{} \fancyfoot[C]{\color{ctex@frame}\thepage} } } @@ -488,12 +513,22 @@ {\thelstlisting\hspace{\ccwd}\lst@@caption} } -\cs_new_protected:Npn \__header_mark:n #1 +\cs_new_protected:Npn \__markboth:n #1 { - \chapter*{\phantomsection#1} \bool_if:NTF \l__page_twoside_bool - {\markboth{\MakeUppercase#1}{\MakeUppercase#1}} - {\markboth{\MakeUppercase#1}{}} + {\markboth{\MakeUppercase#1}{\MakeUppercase#1}} + {\markboth{\MakeUppercase#1}{}} + } +\cs_new_protected:Npn \__title_mark_intoc:n #1 + { + \chapter*{\phantomsection#1} + \CTEX@addtocline{chapter}{#1} + \__markboth:n #1 + } +\cs_new_protected:Npn \__title_mark:n #1 + { + \chapter*{\phantomsection#1} + \__markboth:n #1 } \cs_gset:Npn \tableofcontents { @@ -504,7 +539,7 @@ \@restonecolfalse \bool_if:NT \l__multoc_bool{\twocolumn} \fi - \__header_mark:n {\contentsname} + \__title_mark:n {\contentsname} \vspace*{-1pc} \@starttoc{toc} \if@restonecol @@ -522,8 +557,7 @@ \@restonecolfalse \bool_if:NT \l__multoc_bool{\twocolumn} \fi - \__header_mark:n {\listfigurename} - \CTEX@addtocline{chapter}{\listfigurename} + \__title_mark_intoc:n {\listfigurename} \vspace*{-1pc} \@starttoc{lof} \if@restonecol @@ -541,8 +575,7 @@ \@restonecolfalse \bool_if:NT \l__multoc_bool{\twocolumn} \fi - \__header_mark:n {\listtablename} - \CTEX@addtocline{chapter}{\listtablename} + \__title_mark_intoc:n {\listtablename} \vspace*{-1pc} \@starttoc{lot} \if@restonecol @@ -564,8 +597,7 @@ \bool_if:NT \l__multoc_bool{\twocolumn} \fi } - \__header_mark:n {\lstlistlistingname} - \CTEX@addtocline{chapter}{\lstlistlistingname} + \__title_mark_intoc:n {\lstlistlistingname} \vspace*{-0.2pc} \@starttoc{lol} \@ifundefined{@restonecoltrue}{} @@ -579,18 +611,6 @@ \group_end: } -\cs_gset:Npn \bibsection{\chapter{\bibname}} -\skip_set:Nn \bibsep{0ex} -\cs_new_protected:Npn \__load_cite_number: - { - \setcitestyle{square,comma,super} - \bibliographystyle{gbt7714-numerical} - } -\cs_new_protected:Nn \__load_cite_authoryear: - {\bibliographystyle{gbt7714-author-year}} -\cs_new_protected:Nn \__load_cite: - {\use:c {__load_cite_ \g__keys_cite_tl :}} -\ctex_at_end_preamble:n {\__load_cite:} \makeindex[ intoc, options = -M~texindy~-C~utf8, @@ -606,17 +626,13 @@ } \__patch_cmd:Nnn \imki@indexheaders {\@mkboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}} - { - \bool_if:NTF \l__page_twoside_bool - {\markboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}} - {\markboth{\MakeUppercase\indexname}{}} - } + {\__markboth:n \indexname} \DeclareCaptionLabelSeparator{ccwd}{\hspace{\ccwd}} \DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)} -\DeclareCaptionFont{tabfont}{\g__tab_font_tl} -\DeclareCaptionFont{figfont}{\g__fig_font_tl} -\DeclareCaptionFont{lstfont}{\g__lst_font_tl} +\DeclareCaptionFont{tabfont}{\l__tab_font_tl} +\DeclareCaptionFont{figfont}{\l__fig_font_tl} +\DeclareCaptionFont{lstfont}{\l__lst_font_tl} \captionsetup { format = hang, @@ -628,12 +644,12 @@ \captionsetup[table] { labelfont = {tabfont,color = ctex@frame}, - textfont = {tabfont,stretch = \g__cap_spread_tl} + textfont = {tabfont,stretch = \l__cap_spread_tl} } \captionsetup[figure] { labelfont = {figfont,color = ctex@frame}, - textfont = {figfont,stretch = \g__cap_spread_tl} + textfont = {figfont,stretch = \l__cap_spread_tl} } \captionsetup[subfigure] { @@ -644,7 +660,7 @@ { singlelinecheck = false, labelfont = {lstfont,color = ctex@frame}, - textfont = {lstfont,stretch = \g__cap_spread_tl} + textfont = {lstfont,stretch = \l__cap_spread_tl} } \captionsetup[figure][bi-second]{name = Figure} \captionsetup[table][bi-second]{name = Table} @@ -659,9 +675,9 @@ } } \AtBeginEnvironment{tabularx} - {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces} + {\exp_args:Nx \linespread{\fp_use:N \l__tab_spread_fp}\selectfont\ignorespaces} \AtBeginEnvironment{tabular} - {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces} + {\exp_args:Nx \linespread{\fp_use:N \l__tab_spread_fp}\selectfont\ignorespaces} \skip_set:Nn \parskip{0pt plus 2pt minus 1pt} \skip_set:Nn \floatsep{12pt plus 2pt minus 2pt} @@ -677,7 +693,7 @@ \cs_gset:Npn \bottomfraction{0.65} \cs_gset:Npn \floatpagefraction{0.60} \ctex_after_end_preamble:n - {\exp_args:Nx \linespread{\fp_use:N \g__line_spread_fp}\selectfont} + {\exp_args:Nx \linespread{\fp_use:N \l__line_spread_fp}\selectfont} \newcolumntype{L}{X} \newcolumntype{C}{>{\centering\arraybackslash}X} @@ -803,7 +819,7 @@ } \allowdisplaybreaks[4] \cs_gset:Npn \ULthickness{.75pt} -\SetMathEnvironmentSinglespace{\g__math_spread_tl} +\SetMathEnvironmentSinglespace{\l__math_spread_tl} \skip_set:Nn \jot{4pt plus 1pt minus 1pt} \ctex_after_end_preamble:n { @@ -924,6 +940,64 @@ colback = #1!15!white,#2 }{#3} +\cs_new_protected:Npn \__bibtex_set: + { + \tl_if_empty:NTF \l__bib_mysty_tl + { + \tl_if_eq:VnTF \l__bib_style_tl{numerber} + { + \bibliographystyle{gbt7714-numerical} + }{ + \tl_if_eq:VnT \l__bib_style_tl{authoryear} + {\bibliographystyle{gbt7714-author-year}} + \cs_set_eq:NN \cite\citep + } + }{ + \exp_args:NV \bibliographystyle\l__bib_mysty_tl + } + \cs_set:Npn \bibsection{\__title_mark_intoc:n \bibname} + \skip_set:Nn \bibsep{0ex} + \NewDocumentCommand\printbibliography{o} + {\exp_args:NV \bibliography\l__bib_file_tl} + } +\cs_new_protected:Npn \__put_biblatex:n #1 + {\PassOptionsToPackage{#1}{biblatex}} +\cs_new_protected:Npn \__biblatex_pre_set: + { + \tl_if_empty:NTF \l__bib_mysty_tl + { + \tl_if_eq:VnTF \l__bib_style_tl{number} + { + \__put_biblatex:n {style = gb7714-2015} + }{ + \tl_if_eq:VnT \l__bib_style_tl{authoryear} + {\__put_biblatex:n {style = gb7714-2015ay}} + } + }{ + \__put_biblatex:n {style = \l__bib_mysty_tl} + } + \tl_if_empty:NF \l__bib_citesty_tl + {\__put_biblatex:n {citestyle = \l__bib_mysty_tl}} + \__put_biblatex:n {backend = biber} + } +\cs_new_protected:Npn \__biblatex_after_set: + { + \exp_args:NV \addbibresource\l__bib_file_tl + \defbibheading{bibliography}[\bibname]{\__title_mark_intoc:n {##1}} + } +\ctex_at_end_preamble:n + { + \bool_if:NTF \l__backend_bibtex_bool + { + \RequirePackage[sort&compress]{gbt7714} + \__bibtex_set: + }{ + \__biblatex_pre_set: + \RequirePackage{biblatex} + \__biblatex_after_set: + } + } + \skip_set:Nn \footnotemargin{0.5\ccwd} \skip_set:Nn \footnotesep{0ex} \cs_gset:Npn \hangfootparskip{0ex} @@ -951,13 +1025,13 @@ } \__patch_cmd:Nnn \@footnotetext {\def\baselinestretch{\ZhLS@footlinespread}\reset@font} - {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl} + {\def\baselinestretch{\l__foot_spread_tl}\l__foot_font_tl} \__patch_cmd:Nnn \@mpfootnotetext {\def\baselinestretch{\ZhLS@footlinespread}\reset@font} - {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl} + {\def\baselinestretch{\l__foot_spread_tl}\l__foot_font_tl} \__patch_cmd:Nnn \@makefnmark - {\normalfont}{\g__foot_font_tl} -\cs_gset:Npn \marginfont{\g__margin_font_tl} + {\normalfont}{\l__foot_font_tl} +\cs_gset:Npn \marginfont{\l__margin_font_tl} \lstdefinestyle{mystyle} { @@ -975,7 +1049,7 @@ emphstyle = \color{ctex@emph}, emph = { - caption,config,easybook,elfont,linktopage,subcaption,tabularx,thmtools + bibset,bibtex,biber,caption,config,easybook,elfont,linktopage,subcaption,tabularx,thmtools }, keywordstyle = \lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi, morekeywords = @@ -1002,7 +1076,7 @@ \AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}} \cs_new_protected:Npn \__clist_put_hyperref:n #1 - {\clist_gput_right:Nn \g__hyperref_clist{#1}} + {\clist_put_right:Nn \l__hyperref_clist{#1}} \cs_new_protected:Npn \__define_linkcolor:nnn #1#2#3 {\definecolorset{HTML}{ctex@}{}{link,#1;url,#2;cite,#3}} \cs_new_protected:Npn \__define_themecolor:nnn #1#2#3 @@ -1091,7 +1165,7 @@ \RequirePackage[pdfstartview = FitH,bookmarksnumbered]{hyperref} \RequirePackage{cleveref} \urlstyle{same} - \exp_args:NV \hypersetup\g__hyperref_clist + \exp_args:NV \hypersetup\l__hyperref_clist \__allow_urlbreak: \bool_if:NTF \l__lang_chinese_bool -- cgit v1.2.3