diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/README.md | 63 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/appendix.tex | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/chapter1.tex | 103 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/chapter2.tex | 77 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/chapter3.tex | 54 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/easybook-demo.pdf | bin | 0 -> 308924 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/easybook-demo.tex | 74 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/easybook.pdf | bin | 0 -> 197489 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/easybook.tex | 407 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/preface.tex | 22 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/easybook/refs.bib | 31 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/easybook/easybook.cls | 1221 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/easybook.tlpsrc | 0 |
16 files changed, 2066 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/latex/easybook/README.md b/Master/texmf-dist/doc/latex/easybook/README.md new file mode 100644 index 00000000000..9c98211412a --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/README.md @@ -0,0 +1,63 @@ +# Easybook book document class + +Easybook is a minimalist style template based on the ctexbook book document class. It is mainly suitable for typesetting Chinese books or notes, and can even be slightly modified to become a dissertation template. Some commonly used macro packages have been loaded to achieve general typesetting requirements. Although some details have been considered as much as possible, there are still deficiencies. + +## Compilation method + +Please use the UTF8 encoding and enter the following command on the command line + +``` +xelatex -shell-escape easybook-demo +bibtex easybook-demo +makeindex easybook-demo +xelatex -shell-escape easybook-demo +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) +- [Wuhan University graduation thesis template](https://github.com/mtobeiyf/whu-thesis) +- [ElegantBook book template](https://ctan.org/pkg/elegantbook) + +## License + +This work may be distributed and/or modified under the conditions of the CC-BY 4.0 License. The latest version of this license is in https://creativecommons.org/licenses/by/4.0/legalcode. + +## Website + +| [Gitee](https://gitee.com/TeX-doc/easybook) | [Github](https://github.com/TeX-doc/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [Font](https://wws.lanzous.com/b01ns361i) | + +# easybook 书籍文档类 + +easybook 是基于 ctexbook 书籍文档类的极简风格模板。它主要适用于中文书籍或笔记的排版,甚至可以稍作修改成为论文模板。已加载一些常用的宏包以实现一般的排版要求。尽管已尽可能多地考虑了一些细节,但仍然存在不足。 + +## 编译方法 + +请使用 UTF8 编码,并在命令行上输入以下命令 + +``` +xelatex -shell-escape easybook-demo +bibtex easybook-demo +makeindex easybook-demo +xelatex -shell-escape easybook-demo +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/mtobeiyf/whu-thesis) +- [ElegantBook 书籍模板](https://ctan.org/pkg/elegantbook) + +## 协议 + +可以使用 CC-BY 4.0 许可协议传播和修改此作品。此许可协议的最新版本位于 https://creativecommons.org/licenses/by/4.0/legalcode。 + +## 网址 + +| [Gitee](https://gitee.com/TeX-doc/easybook) | [Github](https://github.com/TeX-doc/easybook) | [CTAN](https://ctan.org/pkg/easybook) | [字体](https://wws.lanzous.com/b01ns361i) |
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/appendix.tex b/Master/texmf-dist/doc/latex/easybook/appendix.tex new file mode 100644 index 00000000000..f5981487b1b --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/appendix.tex @@ -0,0 +1,11 @@ +% 附录 +\documentclass[../easybook-demo]{subfiles} +\begin{document} + +\appendix +\chapter{维基百科} + +\section{阿司匹林} +\zhlipsum[50-52][name = aspirin] + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/chapter1.tex b/Master/texmf-dist/doc/latex/easybook/chapter1.tex new file mode 100644 index 00000000000..ffb86ee290e --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/chapter1.tex @@ -0,0 +1,103 @@ +% Chapter 1 +\documentclass[../easybook-demo]{subfiles} +\begin{document} + +\chapter{常用环境} + +\section{公式}\index{g@公式} +\zhlipsum*[42][name = aspirin] +\begin{equation}\label{eq1} + \bm{A} = \left[ + \begin{matrix} + a_{11} & a_{12} & \cdots & a_{1n} \\ + a_{21} & a_{22} & \cdots & a_{2n} \\ + \vdots & \vdots & \ddots & \vdots \\ + a_{m1} & a_{m2} & \cdots & a_{mn} \\ + \end{matrix} + \right] = \left[ + \begin{matrix} + \bm{a}_1 & \bm{a}_2 & \cdots & \bm{a}_n + \end{matrix} + \right] +\end{equation} +可以通过添加标签在正文中引用公式,如带有中文括号的引用\cref{eq1}。 + +\zhlipsum*[56][name = aspirin] +\begin{equation} + \begin{split} + \iint_{A}E\rho(\bm{v}\cdot\bm{n})\mathrm{d}A+\frac{\partial}{\partial t}\iiint_{V}E\rho \mathrm{d}V & = \frac{\delta Q}{\mathrm{d}t}-\frac{\delta W}{\mathrm{d}t} + \\ + \iint_{A}\left(U+\frac{v^{2}}{2}+gz+\frac{P}{\rho}\right)\rho(\bm{v}\cdot\bm{n})\mathrm{d}A+\frac{\partial}{\partial t}\iiint_{V}E\rho\mathrm{d}V & = \frac{\delta Q}{\mathrm{d}t}-\frac{\delta W_{s}}{\mathrm{d}t} + \end{split} +\end{equation} + +\zhlipsum*[42][name = aspirin] +\begin{subnumcases}{y =} + C_1e^{r_1x}+C_2e^{r_2x} & \quad $p^2-4q > 0$ + \\ + \left(C_1+C_2\right)e^{r_1x} & \quad $p^2-4q=0$ + \\ + e^{\alpha x}\left(C_1\cos\beta x+C_2\sin\beta x\right) & \quad $p^2-4q<0$ +\end{subnumcases} + +\zhlipsum*[57][name = aspirin] + +\clearpage +\section{插图}\index{c@插图} +当我们需要排列一组子图共享标题的图片时,可以使用依赖于 \lstinline{caption} 宏包的 \lstinline{subcaption} 宏包的功能,效果见\cref{fig1}。 +\begin{figure}[htbp] + \centering + \subcaptionbox{并排子图1} + {\includegraphics[width=0.4\textwidth]{example-image-4x3}} + \hspace{1.2em} + \subcaptionbox{并排子图2} + {\includegraphics[width=0.4\textwidth]{example-image-4x3}} + \bicaption[使用subcaption排版子图]{使用subcaption宏包的subcaptionbox命令排版子图}[Use subcaption to typeset subgraphs]{Use the subcaptionbox command of the subcaption package to typeset sub-pictures}\label{fig1} +\end{figure} + +\section{表格}\index{b@表格} +合并表格列使用 \lstinline{\multicolumn} 命令,合并行使用 \lstinline{\multirowcell} 命令。当插入的表格内容过长以至于一行放不下的情况可以使用 \lstinline{tabularx} 环境,设置了\textsf{L、C和R}三个列对齐选项,一个例子如\cref{tab1} 所示。 +\begin{table}[htbp] + \centering + \bicaption{使用tabularx创建内容过长表格}{Use tabularx to create a table with too long content}\label{tab1}\small + \begin{tabularx}{0.87\textwidth}{@{}llL@{}} + \toprule + Aliquam & Integer & Pellentesque tincidunt purus + vel magna. \\ + \midrule + viverra & \multirowcell{3}[0ex][l]{metus} & Nulla malesuada porttitor diam. Vestibulum lectus. Proin mauris. Proin eu nunc eu urna hendrerit faucibus. \\ + semper & & Nullam elementum, urna vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante justo a nulla. Curabitur tristique arcu eu metus. \\ + \multicolumn{2}{c}{\multirowcell{3}{convallis}} & Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget enim. \\ + \bottomrule + \end{tabularx} +\end{table} + +\clearpage +\section{列表}\index{l@列表} +\zhlipsum*[10][name = aspirin] + +\subsection{排序列表}\label{subsec1}\index{l@列表!p@排序列表} +\begin{enumerate} + \item \zhlipsum*[41][name = aspirin] + \begin{enumerate} + \item \zhlipsum*[42][name = aspirin] + \end{enumerate} + \item \zhlipsum*[41][name = aspirin] +\end{enumerate} + +\subsection{常规列表}\index{l@列表!c@常规列表} +\begin{itemize} + \item \zhlipsum[41-42][name = aspirin] + \begin{itemize} + \item \zhlipsum*[42][name = aspirin] + \end{itemize} + \item \zhlipsum*[41][name = aspirin] +\end{itemize} + +\subsection{主题列表}\index{l@列表!z@主题列表} +\begin{description} + \item[主题一] \zhlipsum*[42][name = aspirin] + \item[主题二] \zhlipsum*[42][name = aspirin] +\end{description} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/chapter2.tex b/Master/texmf-dist/doc/latex/easybook/chapter2.tex new file mode 100644 index 00000000000..b8ab64147d2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/chapter2.tex @@ -0,0 +1,77 @@ +% Chapter 2 +\documentclass[../easybook-demo]{subfiles} +\begin{document} + +\chapter{定理盒子} + +\begin{outline}\index{zhaiyao@摘要盒子} + \item 这是一个摘要盒子。 + \item 它的标题是可选参数,默认标题是摘要。 +\end{outline} + +\section{定理}\index{d@定理} +\begin{theorem}[(高斯公式\footnote{选自高等数学公式。})]\label{theo1}\index{d@定理!g@高斯公式} +设空间闭区域$\Omega$是由分片光滑的闭曲面$\Sigma$围成,若函数$P(x,y,z)$,$Q(x,y,z)$,$R(x,y,z)$在$\Omega$上具有一节连续偏导数,则有 +\begin{align} + \iiint_\Omega\left(\frac{\partial P}{\partial x}+\frac{\partial Q}{\partial y}+\frac{\partial R}{\partial x}\right)\mathrm{d}V & =\oiint_\Sigma P\mathrm{d}y\mathrm{d}z+Q\mathrm{d}z\mathrm{d}x+R\mathrm{d}x\mathrm{d}y + \\ + & =\oiint_\Sigma \left(P\cos\alpha+Q\cos\beta+R\cos\gamma\right)\mathrm{d}S +\end{align} +这里$\Sigma$是整个边界曲面$\Omega$的外侧,$\cos\alpha,\cos\beta,\cos\gamma$是$\Sigma$在点$(x,y,z)$处的法向量的方向余弦。引用这个公式如\cref{theo1}。 +\end{theorem} + +\begin{definition}[(Stokes formula)]\label{defi1}\index{d@定理!s@Stokes formula} +Let $\Gamma$ be a piecewise smooth directed closed curve, $\Sigma$ is a piecewise smooth directed surface bounded by $\Gamma$, the side of $\Gamma$ and the positive direction of $\Sigma$ According to the right-hand rule, if the function $P(x,y,z)$, $Q(x,y,z)$, $R(x,y,z)$ has a first-order continuous deviation on the curve $\Sigma$ Derivative, then +\begin{multline} + \iint_\Sigma\left(\frac{\partial R}{\partial y}-\frac{\partial Q}{\partial z}\right)\mathrm{d}y\mathrm{d}z+\left(\frac{\partial P}{\partial z}-\frac{\partial R}{\partial x}\right)\mathrm{d}z\mathrm{d}x+\left(\frac{\partial Q}{\partial x}-\frac{\partial P}{\partial y}\right)\mathrm{d}x\mathrm{d}y + \\ + = \oint_\Gamma P\mathrm{d}x+Q\mathrm{d}y+R\mathrm{d}z +\end{multline} +The Stokes formula is an extension of the basic calculus formula in the case of surface integration. It is also an extension of the Green formula. This formula gives the second type of surface integral on the surface block and the second type of curve on the boundary curve Link between points. +\end{definition} + +\clearpage +\begin{lemma} +定理环境的边框和习题标题盒子可使用 \lstinline{thmbox = false} 关闭。 +\end{lemma} + +\begin{corollary} +这是一个推论。 +\end{corollary} + +\begin{proposition} +这是一个性质。 +\end{proposition} + +\begin{example} +这是一个例。 +\end{example} + +\begin{remark} +这是一个注。 +\end{remark} + +\begin{proof} +这是一个证明,末尾自动添加证明结束符。 +\end{proof} + +\begin{mybox}*[My title]\index{z@自定义盒子} + \zhlipsum*[3][name = aspirin] +\tcblower + \zhlipsum*[8][name = aspirin] +\end{mybox} + +\zhlipsum*[3][name = aspirin] +\begin{exercise}[black][1.][习题]\index{x@习题环境} + \item 设$w = f(x+y+z,xyz)$,$f$具有二阶连续偏导数,求$\dfrac{{\partial w}}{{\partial x}}$和$\dfrac{{{\partial ^2}w}}{{\partial x\partial z}}$。 + \item 已知$y = y(x)$在任意点$x$处的增量$\Delta y = \dfrac{y\Delta x}{1+x^2}+\alpha$,其中$\alpha$是$\Delta x$的高阶无穷小($\Delta x\to 0$时),$y(0) = \pi$,则$y(1) = \uline{\mbox{\hspace{2em}}}$。 + \item 设函数$f(x)$在$(-\infty,+\infty)$上有定义,则下述命题中正确的是 \mbox{(\hspace{1.5em})} + \begin{tasks} + \task 若$f(x)$在$(-\infty,+\infty)$上可导且单调增加,则对一切$x\in (-\infty,+\infty)$,都有$f'(x) > 0$。 + \task 若$f(x)$在点$x_0$处取得极值,则$f'(x_0) = 0$。 + \task 若$f''(x_0) = 0$,则$(x_0,f(x_0))$是曲线$y = f(x)$的拐点坐标。 + \task 若$f'(x_0) = 0$, $f''(x_0) = 0$,$f'''(x_0)\ne 0$,则$x_0$一定不是$f(x)$的极值点。 + \end{tasks} +\end{exercise} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/chapter3.tex b/Master/texmf-dist/doc/latex/easybook/chapter3.tex new file mode 100644 index 00000000000..6ca662ca0dc --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/chapter3.tex @@ -0,0 +1,54 @@ +% Chapter 3 +\documentclass[../easybook-demo]{subfiles} +\begin{document} + +\chapter{其它格式}\label{chap1} + +\section{代码}\index{d@代码} +\zhlipsum[42][name = aspirin] +\begin{lstlisting}[language = Python,caption = {python程序练习题}] +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +if __name__ == '__main__': + ptr = [] + for i in range(5): + num = int(raw_input('please input a number:\n')) + ptr.append(num) + print ptr +\end{lstlisting} + +\section{物理量}\index{w@物理量} +阿司匹林还有三种作用方式 \num{-21x.3e5}。一是使线粒体的氧化磷酸化解偶联。阿司匹林会携带质子从线粒体膜间隙扩散进入线粒体基质,然后再次电离释放质子 \SI{.5}{mol}。 + +\section{化学式}\index{h@化学式} +阿司匹林还有三种作用方式。一是使线粒体的氧化磷酸化解偶联。阿司匹林会携带质子从线粒体膜间隙扩散进入线粒体基质,然后再次电离释放质子\ch{(NH4)2S}、\ch{[Cu(NH3)4]^2+}。 +\[\ch{$x$ Na(NH4)HPO4 ->[$\Delta$] (NaPO3)_{$x$} + $x$ NH3 ^ + $x$ H2O}\] +阿司匹林还有三种作用方式。 +\[\zihao{-5}\chemfig[cram width=5pt]{*6((-HO)-=-(-(<[::60]OH)-[::-60]-[::-60,,,2] +HN-[::+60]CH_3)=-(-HO)=)}\] + +\clearpage +\section{引用}\index{y@引用} +\zhlipsum[8][name = aspirin] +\subsection{索引}\index{y@引用!s@索引} +\zhlipsum[8][name = aspirin] + +\subsection{脚注}\index{y@引用!j@脚注} +六年之后的1859年,冯·基尔姆让水杨酸和乙酰氯反应,制得了分析纯的乙酰水杨酸,他称之为“乙酰化水杨酸”(acetylierte*Salicyls+"aure)\footnote{这是一个悬挂缩进的脚注。\par 这是分段将会缩进两字符。}。 + +60和70年代,约翰·范恩等人发现了阿司匹林的作用机理,60至80年代的其他研究和临床试验证明该药有抗凝血的药效,可降低血栓疾病的发病率\Footnote{*}{这是可以自定义标记的脚注。}。 + +\subsection{边注}\index{y@引用!b@边注} +对乙酰氨基酚和布洛芬\marginnote{这是一个边注。}于1956年和1959年相继问世以后,阿司匹林的使用率开始下降。 + +\subsection{引用章节}\label{sec1}\index{y@引用!s@索引} +兽医有时用阿司匹林来镇痛或抗血栓,主要给狗用\cref{chap1},有时给马用\cref{sec1},不过现在一般会用副作用较少的新疗法。 + +\subsection{参考文献}\index{y@引用!c@参考文献} +这是一个参考文献引用的范例\cite{1979Prospect}。引用多个文献,将引用标号中的多个文献序号按升序排列,若其中有2个以上的连续序号,则改用范围序号,例如\cite{1979Prospect,1989The,2010An}。 + +\section{行内盒子}\index{h@行内盒子} +对乙酰氨基酚和布洛芬 \concise[Aqua][fontupper = \rmfamily]{concise} 于1956年和1959年相继问世以后,阿司匹林 \fuzzy[yellow][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 Binary files differnew file mode 100644 index 00000000000..16869f252c3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/easybook-demo.pdf diff --git a/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex b/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex new file mode 100644 index 00000000000..b03695b0bd9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/easybook-demo.tex @@ -0,0 +1,74 @@ +\documentclass[zihao = -4,openany]{easybook} +\ctexset + { + style = + { + color = forest, + % cite = authoryear, + thmbox = true, + % capdash = true, + % multoc = true, + % withpart = true, + % perpart = true, + perpage = true + }, + link = + { + hyperlink = various, + linkcolor = skyblue, + linktopage = false + }, + spread = + { + linespread = 1.355, + tabspread = 1.05, + mathspread = 1, + capspread = 1, + fnspread = 1 + }, + elfont = + { + tabfont = \sffamily\small, + figfont = \sffamily\small, + lstfont = \sffamily\small, + fnfont = \rmfamily, + marfont = \sffamily\footnotesize + }, + % secnumdepth = 2, + % tocdepth = 2 + } + +\AfterPreamble + { + \title{\sffamily easybook书籍文档类} + \author + { + 瞿毅\thanks{texeasybook@foxmail.com.} \\ + \textcolor[HTML]{c71d23}{\faGit}~\url{https://gitee.com/TeX-doc/easybook}\thanks{Gitee为项目的主要发布地址。} \\ + \faGithub~\url{https://github.com/TeX-doc/easybook} \\ + \textcolor[HTML]{00c2ff}{\faEdge}~\url{https://latexstudio.net} \\ + \url{https://ctan.org/pkg/easybook} + } + \date{2021/01/09\hskip\ccwd\relax v1.2} + } + +\begin{document} +\frontmatter +\maketitle +\subfile{pages/preface} +\tableofcontents + +\mainmatter +\part{使用示例} +\subfile{pages/chapter1} +\subfile{pages/chapter2} +\subfile{pages/chapter3} +\subfile{pages/appendix} + +\backmatter +\bibliography{ref/refs} +\listoffigures +\listoftables +\listoflistings +\printindex +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.pdf b/Master/texmf-dist/doc/latex/easybook/easybook.pdf Binary files differnew file mode 100644 index 00000000000..3ec672b5183 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/easybook.pdf diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.tex b/Master/texmf-dist/doc/latex/easybook/easybook.tex new file mode 100644 index 00000000000..ab65b0c7c81 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/easybook.tex @@ -0,0 +1,407 @@ +\documentclass{ctxdoc} +\hypersetup + { + colorlinks, + 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}}} + +\begin{document} +\maketitle +\changes{v1.2}{2021/01/09}{修改和完善用户文档。} +\changes{v1.2}{2021/01/09}{模板更改为使用CC-BY许可协议。} +\begin{abstract} + \cls{easybook} 是基于 \cls{ctexbook} 书籍文档类创建以极简为风格的模板,可以看作对 \cls{ctexbook} 的进一步包装。虽然\CTeX 文档类提供了较好的中文支持,但想实现个性化功能一般需要在其基础上载入更多宏包来定制。\cls{easybook} 考虑了一些细节并载入一些常用宏包实现一般的排版需求,它适用于排版中英文书籍或笔记,甚至可稍加修改成为学位论文模板。 +\end{abstract} +\tableofcontents + +\section{编译文档} +成功地编译演示文档,可能需要满足以下的条件 +\begin{itemize} + \item 使用 \hologo{XeLaTeX}(推荐)或 \hologo{LuaLaTeX} 两种编译方式,参考文献使用 \hologo{BibTeX} 编译。 + \item 默认情况下安装方正与思源字体。 + \item 安装最新的\TeX 发行版并将宏包升级为最新。 +\end{itemize} + +\subsection{编译步骤} +\begin{frameverb} + xelatex -shell-escape easybook-demo + bibtex easybook-demo + makeindex easybook-demo + xelatex -shell-escape easybook-demo + xelatex -shell-escape easybook-demo +\end{frameverb} + +需注意,正确\textbf{编译索引}需要增加 \opt{-shell-escape} 命令行选项。若不需要索引和参考文献,可以在正文中注释掉命令。若出现以下警告,再编译一次即可。 +\begin{frameverb} + LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. +\end{frameverb} + +\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},并可在导言区设置中文字体,粗体与斜体不设置会产生警告。 +\begin{ctexexam} + \setCJKmainfont{SimSun}[BoldFont = SimHei,ItalicFont = KaiTi] + \setCJKsansfont{SimHei} + \setCJKmonofont{FangSong} +\end{ctexexam} + +\section{模板选项} +标准 \cls{book} 文类与 \cls{ctexbook} 文类的选项同样适用于本文档。除此之外选项分为两类 +\begin{itemize} + \item 带有 \rexptarget\rexpstar{} 号的选项,需要在引入文档类的时候设定。 + \item 带有 \exptarget\expstar{} 号的选项,需要通过\CTeX 宏集提供的用户接口命令 \tn{ctexset} 设定。 +\end{itemize} +\subsection{文档类选项}\label{subsec1} + +\begin{function}[rEXP,added = 2021-01-05]{draft} +开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。 +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{newline} +章标题风格为另起一行,英文模式使用较为常见。类似下面的效果 +\begin{flushleft}\sffamily\LARGE + Chapter 1\vskip 1.3pc + This is a title +\end{flushleft} +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{entitle} +部分标题编号由中文数字变为大写罗马数字,章标题编号由中文数字变为阿拉伯数字。比如\textsf{第一部分}变为\textsf{第I部分},\textsf{第一章}变为\textsf{第1章}。 +\end{function} +\begin{function}[rEXP,added = 2021-01-05]{english} +使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。如\textsf{第一章}变为\textsf{Chapter 1},\textsf{图1.1} 变为 \textsf{Table 1.1}。 +\end{function} +\begin{function}[rEXP,added = 2021-01-05]{enstyle} +同时开启 \opt{newline}、\opt{entitle} 和 \opt{english} 三个选项以符合英文原生风格。 +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{font} +\begin{syntax} + font = <adobe|founder|mac|windows|linux|overleaf|none> +\end{syntax} +传递给 \cls{ctexbook} 设置字体,最好不要使用原有的 \opt{fontset} 选项,默认情况下使用自定义字体而不开启这个选项,可根据安装的字体及电脑系统选取。\opt{overleaf} 是一个各系统通用选项,会检测系统环境选取对应字体。 +\end{function} + +\begin{function}[rEXP,added = 2021-01-05]{paper} +\begin{syntax} + paper = <(a4)|b5> +\end{syntax} +设置版面规格,有A4和B5两种纸张大小,建议 选项 \opt{a4} 和 \opt{zihao = 5},选项 \opt{b5} 和 \opt{zihao = -4} 配合。 +\end{function} + +\subsection{接口选项} +\begin{function}[added = 2021-01-05]{\ctexset} +\begin{syntax} + \tn{ctexset}\marg{键值列表} +\end{syntax} +\cls{easybook} 扩展了\CTeX 宏集\LaTeX 3风格键值的通用控制命令 \tn{ctexset},接口选项同样用它设置, 原有的键值列表仍然可用。 +\end{function} + +\begin{function}[added = 2021-01-08]{config} +\begin{syntax} + config = <配置文件名> +\end{syntax} +\changes{v1.1}{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{syntax} + color = <(none)|forest|energy|cyberpunk> + cite = <(number)|authoryear> + thmbox = <true|(false)> + capdash = <true|(false)> + multoc = <true|(false)> + withpart = <true|(false)> + perchap = <true|(false)> + perpage = <true|(false)> +\end{syntax} +\changes{v1.1}{2021/01/08}{更改颜色实现方式与选项名。} +\opt{style} 选项控制文章的风格。 +\end{function} + +\begin{optdesc} + \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}{可以自定义主题颜色。} + 主题颜色用到这三个颜色,可以使用 \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]使脚注跟随每一页编号,默认不跟随。 +\end{optdesc} + +\subsubsection{超链接}\label{ssubsec1} +\begin{function}[EXP,updated = 2021-01-08]{link/hyperlink,link/linkcolor,link/linktopage} +\begin{syntax} + hyperlink = <(edge)|various|none> + linkcolor = <(graphite)|cutepink|skyblue|crimson> + linktopage = <true|(false)> +\end{syntax} +\changes{v1.1}{2021/01/08}{修复了 \opt{linktopage} 选项关闭时目录中标题编号无超链接的问题。} +\end{function} + +\begin{optdesc} + \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}{可以自定义超链接颜色。} + \end{function} + \item[linktopage]将目录中的超链接置于页码上,默认是置于标题上。 +\end{optdesc} + +\subsubsection{行距} +\begin{function}[EXP,added = 2021-01-05]{spread/linespread,spread/tabspread,spread/mathspread,spread/capspread,spread/fnspread} +\begin{syntax} + linespread = <(1.3)> + tabspread = <(1)> + mathspread = <(1)> + capspread = <(1)> + fnspread = <(1)> +\end{syntax} +行距因子用于设置各种行距倍数,只能是浮点数,不能带有长度单位。\tn{ctexset} 原有的行距选项\opt{linespread}失效。各行距既可在导言区全局设置也可正文中设置对后面生效,行距的意义为 +\end{function} + +\begin{optdesc} + \item[linespread]正文行距。 + \item[tabspread]表格行距。 + \item[mathspread]数学环境行距。 + \item[capspread]图表代码标题行距。 + \item[fnspread]脚注行距。 +\end{optdesc} + +\subsubsection{其它字体} +\begin{function}[EXP,added = 2021-01-08]{elfont/tabfont,elfont/figfont,elfont/lstfont,elfont/fnfont,elfont/marfont} +\begin{syntax} + tabfont = <\tn{sffamily}\tn{small}> + figfont = <\tn{sffamily}\tn{small}> + lstfont = <\tn{sffamily}\tn{small}> + fnfont = <\tn{rmfamily}> + marfont = <\tn{rmfamily}\tn{footnotesize}> +\end{syntax} +\changes{v1.1}{2021/01/08}{加入自定义非正文字体选项。} +\end{function} + +\begin{optdesc} + \item[tabfont]表格标题的字体设置。 + \item[figfont]图片标题的字体设置。 + \item[lstfont]代码标题的字体设置。 + \item[fnfont]脚注的字体设置,请不要使用字号命令。 + \item[marfont]边注的字体设置。 +\end{optdesc} + +\section{常用环境} +\subsection{公式} +\begin{function}[added = 2021-01-05]{equation,multline,gather,align} +\begin{syntax} + \tn{begin}\marg{环境名} + \tn{item} <行间公式> + \tn{end}\marg{环境名} +\end{syntax} +\opt{amsmath} 宏包提供了一系列数学环境,它们可以排布各种对齐或不对齐的公式组。\opt{multline} 环境用于一行无法放下的长公式,\opt{gather} 环境用于每行居中的公式组,\opt{align} 环境用于多列对齐的公式组。 +\end{function} + +\subsection{列表} +\begin{function}[added = 2021-01-05]{enumerate,itemize,description} +\begin{syntax} + \tn{begin}\marg{环境名}\oarg{键值列表} + \tn{item} <列表内容> + \tn{end}\marg{环境名} +\end{syntax} +\pkg{enumitem} 宏包为系统自带的列表环境提供了更灵活的标签以及间距的控制。已设置默认格式,若自定义标签可例如 +\begin{ctexexam} + \begin{enumerate}[label = \arabic*(a),leftmargin = 1cm,resume] + \begin{itemize}[label = \textbullet] + \begin{description}[font = \sffamily\bfseries,style = nextline] +\end{ctexexam} +\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}格式可以这样 +\begin{ctexexam} + \begin{enumerate*}[(a)] + \begin{enumerate}[\bfseries{Item} I] +\end{ctexexam} + +\subsubsection{常规列表} +使用 \opt{itemize} 环境可创建不计数列表,列表环境中若换行不缩进,若在列表中分段后则缩进两字符。 \opt{itemize*} 为行内常规列表,也提供一个可选参数。 + +用$\star$取代默认的符号 +\begin{ctexexam} + \begin{itemize*}[$\star$] + \begin{itemize}[$\star$] +\end{ctexexam} + +\subsubsection{主题列表}使用 \opt{description} 环境可创建带有主题词的列表。 +\begin{ctexexam} +\begin{description} + \item[主题一] 内容一 + \item[主题二] 内容二 +\end{description} +\end{ctexexam} + +\subsection{定理} +\begin{function}[updated = 2021-01-08]{theorem,definition,lemma,corollary,proposition,example,remark,proof} +\begin{syntax} + \tn{begin}\marg{环境名} + <定理内容> + \tn{end}\marg{环境名} +\end{syntax} +定理环境除了注和证明跟随章编号并可带有边框,边框和习题标题盒子可使用 \opt{thmbox = false} 开启,证明末尾会自动添加证明结束符。 +\end{function} + +\subsection{习题} +\begin{function}[added = 2021-01-05]{exercise} + \begin{syntax} + \tn{begin}\marg{exercise}\oarg{颜色名}\oarg{编号}\oarg{标题} + \tn{item} <习题内容> + \tn{end}\marg{exercise} +\end{syntax} +习题环境 \opt{exercise} 的标题紧接上一节编号并加入目录与页眉,当使用星号环境时不进行编号。三个可选参数中颜色为自定义或 \pkg{xcolor} 包含的颜色名称(深色),正文编号格式与小节 \ref{ssubsec2} 排序列表相同,标题名默认为摘要,参数只能\textsf{从右往左}省略。 +\begin{ctexexam} + \begin{exercise}[black][1.][习题] + \item 习题内容 + \item 习题内容 + \end{exercise} +\end{ctexexam} +\end{function} + +\subsection{盒子} + +\subsubsection{摘要盒子} +\begin{function}[added = 2021-01-05]{outline} +\begin{syntax} + \tn{begin}\marg{outline}\oarg{标题名称} + \tn{item} <摘要内容> + \tn{end}\marg{outline} +\end{syntax} +摘要盒子可用于章前摘要,它的标题是可选参数,默认标题是摘要。 +\begin{ctexexam} + \begin{outline}[标题名称] + \item 摘要内容 + \item 摘要内容 + \end{outline} +\end{ctexexam} +\end{function} + +\subsubsection{段落盒子} +\begin{function}[added = 2021-01-05]{mybox} +\begin{syntax} + \tn{begin}\marg{mybox}\oarg{段落标题} + <盒子内容> + \tn{end}\marg{mybox} +\end{syntax} +环境 \opt{mybox} 创建一个段落盒子,可以添加可选参数的标题,否则无标题框。带有星号的环境会生成浅灰背景,否则是纯白背景。 +\begin{ctexexam} + \begin{mybox}*[段落标题] + 盒子内容 + \tcblower % 盒子上下部分分界线 + 盒子内容 + \end{mybox} +\end{ctexexam} +\end{function} + +\subsubsection{行内盒子} +\begin{function}[added = 2021-01-05]{\concise,\fuzzy} +\begin{syntax} + \tn{concise}\oarg{颜色名}\oarg{配置}\marg{内容} + \tn{fuzzy}\oarg{颜色名}\oarg{配置}\marg{内容} +\end{syntax} +设置了两个参数选项相同的行内盒子,盒子 \opt{concise} 可以为抄录盒子有三个参数,行内盒子内容是必选参数其他可选。盒子 \opt{fuzzy} 不是抄录盒子,具有模糊边缘类似高亮的效果。 +\end{function} + +\section{其它格式} + +\subsection{代码} +\begin{function}[added = 2021-01-05]{\lstinline,lstlisting} +\begin{syntax} + \tn{lstinline}\oarg{键值列表}\marg{行内代码} + \tn{begin}\marg{lstlisting}\oarg{键值列表} + <行间代码> + \tn{end}\marg{lstlisting} +\end{syntax} +使用 \pkg{listings} 宏包可以对代码格式进行高度定制。 +\end{function} + +\subsection{物理量} +\begin{function}[added = 2021-01-05]{\num,\si,\SI} +\begin{syntax} + \tn{num}\oarg{选项}\marg{数字} + \tn{si}\oarg{选项}\marg{单位} + \tn{SI}\oarg{选项}\marg{数字}\oarg{前缀}\marg{单位} +\end{syntax} +\pkg{siunitx} 宏包的 \tn{num} 命令可以输出科学计数法,而 \tn{SI} 命令可用来输出带有单位的量,\tn{si} 命令支持数学模式,可以代替数学行内公式输入。 +\begin{ctexexam} + \num{-21x.3e5} + \si{mL.min^{-1}} + \SI{5}{\mole} +\end{ctexexam} +\end{function} + +\subsection{化学式} +\begin{function}[added = 2021-01-05]{\ch,\chemfig} +\begin{syntax} + \tn{ch}\oarg{选项}\marg{输入} + \tn{chemfig}\oarg{键值列表}\marg{分子代码} +\end{syntax} +除了以普通公式的方式,化学式还可用 \pkg{chemformula} 实现,无机化学式使用 \tn{ch} 命令书写。有机化学式推荐使用 \pkg{chemfig} 的 \tn{chemfig} 命令完成。 +\end{function} + +\subsection{引用} +\begin{function}[added = 2021-01-05]{\cref} + \begin{syntax} + \tn{cref}\marg{标签} + \end{syntax} +使用 \pkg{cleveref} 宏包的 \tn{cref} 命令进行引用,将会自动检测环境并添加相应的前缀。 +\end{function} + +\subsubsection{索引} +\begin{function}[added = 2021-01-05]{\index} +\begin{syntax} + \tn{index}\marg{标签} +\end{syntax} +使用 \pkg{imakeidx} 生成索引,仅做了简单的设置如将索引设为双栏并加入目录,其他选项可另外配置。 +\end{function} + +\subsubsection{脚注} +\begin{function}[added = 2021-01-05]{\Footnote,\Footnotetext,\Footnotemark} +\begin{syntax} + \tn{Footnote}\marg{标记}\marg{插入文本} + \tn{Footnotetext}\marg{标记}\marg{插入文本} + \tn{Footnotemark}\marg{标记} +\end{syntax} +自定义标记且不影响正常编号的脚注命令。 +\begin{ctexexam} + \Footnote{*}{这是可以自定义标记的脚注。} +\end{ctexexam} +\end{function} + +\subsubsection{边注} +\begin{function}[added = 2021-01-05]{\marginnote} +\begin{syntax} + \tn{marginnote}\oarg{左文本}\marg{右文本}\oarg{垂直偏移} +\end{syntax} +命令 \tn{marginnote} 可以生成简单的边注,如果只给定了\meta{右文本},那么边注在奇偶数页文字相同。如果同时给定了\meta{左文本},则偶数页使用\meta{左文本}的文字。 +\end{function} + +\IndexLayout +\PrintChanges +\PrintIndex +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/preface.tex b/Master/texmf-dist/doc/latex/easybook/preface.tex new file mode 100644 index 00000000000..fc862b21f86 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/preface.tex @@ -0,0 +1,22 @@ +% Preface +\documentclass[../easybook-demo]{subfiles} +\begin{document} + +\chapter*{前言} + +\lstinline{easybook} 使用\LaTeX 3语法将选项扩展入\CTeX 宏集接口命令 \lstinline{\ctexset} 的列表。如果无法编译以及选项说明细节参见~\href{./easybook.pdf}{easybook用户手册}。 + +\begin{enumerate}[label = \color{DarkBlue}\protect\circled{\arabic*}] +\item 修复了 \lstinline{linktopage} 选项关闭时目录中标题编号无超链接的问题。 +\item 增加 \lstinline{elfont} 选项可以自定义图表、代码、脚注和边注的字体。 +\item 增加 \lstinline{config} 选项可以载入用户配置文件。 +\item 优化页眉页脚,单面或双面排版适配了不同风格。 +\item 更改草稿选项,与标准文类行为一致并显示页面边框。 +\item 使用功能更丰富的 \lstinline{thmtools} 设置定理环境。 +\item 可自定义正文、表格、公式环境、图表标题以及脚注的行距。 +\item 图表可以使用双语标题,增加代码索引和索引目录,脚注标记可以设置为自定义的符号。 +\end{enumerate} + +\vfill{\small\doclicenseThis} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/easybook/refs.bib b/Master/texmf-dist/doc/latex/easybook/refs.bib new file mode 100644 index 00000000000..187a6938054 --- /dev/null +++ b/Master/texmf-dist/doc/latex/easybook/refs.bib @@ -0,0 +1,31 @@ +% Encoding: UTF-8 + +@article{1979Prospect, + title={Prospect Theory: An Analysis of Decision under Risk}, + author={ Tversky, Kahneman Amos }, + journal={Econometrica}, + volume={47}, + number={2}, + pages={263-291}, + year={1979}, +} + +@article{2010An, + title={An Introduction to Sociolinguistics}, + author={ Grabe, William and Wardhaugh, Ronald }, + journal={Language in Society}, + volume={36}, + number={2}, + pages={605-605}, + year={2010}, +} + +@article{1989The, + title={The structural transformation of the public sphere: an inquiry into a cstergory of burgeois society}, + author={ Scaff, Lawrence A. and Habermas, Jurgen and Burger, Thomas and Nicholson, Shierry Weber }, + journal={American Political Science Review}, + volume={84}, + number={3}, + pages={967}, + year={1989}, +}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls new file mode 100644 index 00000000000..f413155cbaf --- /dev/null +++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls @@ -0,0 +1,1221 @@ +%% +%% This is file `easybook.cls'. +%% +%% Copyright (C) 2021 by Qu Yi <texeasybook@foxmail.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the CC-BY 4.0 License. +%% The latest version of this license is in +%% https://creativecommons.org/licenses/by/4.0/legalcode +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{l3keys2e} +\ProvidesExplClass{easybook}{2021/01/09}{v1.2}{} + +\cs_generate_variant:Nn \keys_define:nn {nx} +\cs_generate_variant:Nn \int_to_arabic:n {v} +\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 + {\ctex_appto_cmd:NnnTF #1{}{#2}{}{\ctex_patch_failure:N #1}} + +\bool_set_false:N \l__draft_bool +\bool_set_false:N \l__newline_bool +\bool_set_false:N \l__enstyle_bool +\bool_set_true:N \l__zhtitle_bool +\bool_set_true:N \l__myfont_bool +\bool_set_true:N \l__lang_chinese_bool +\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} + { + draft .code:n = {\bool_set_true:N \l__draft_bool}, + newline .code:n = {\bool_set_true:N \l__newline_bool}, + enstyle .code:n = {\bool_set_true:N \l__enstyle_bool}, + entitle .code:n = {\bool_set_false:N \l__zhtitle_bool}, + english .code:n = {\bool_set_false:N \l__lang_chinese_bool}, + + font .choice:, + font/adobe .code:n = + { + \PassOptionsToClass{fontset = #1}{ctexbook} + \bool_set_false:N \l__myfont_bool + }, + font/founder .code:n = + { + \PassOptionsToClass{fontset = #1}{ctexbook} + \bool_set_false:N \l__myfont_bool + }, + font/mac .code:n = + { + \PassOptionsToClass{fontset = #1}{ctexbook} + \bool_set_false:N \l__myfont_bool + }, + font/windows .code:n = + { + \PassOptionsToClass{fontset = #1}{ctexbook} + \bool_set_false:N \l__myfont_bool + }, + font/linux .code:n = + { + \PassOptionsToClass{fontset = ubuntu}{ctexbook} + \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} + \bool_set_false:N \l__myfont_bool + }, + font .default:n = windows, + + paper .choice:, + paper/a4 .code:n = {}, + paper/b5 .code:n = {\bool_set_true:N \l__paper_bfive_bool}, + paper .initial:n = a4, + + oneside .value_forbidden:n = true, + twoside .value_forbidden:n = true, + oneside .code:n = + {\bool_set_false:N \l__page_twoside_bool}, + + unknown .code:n = + {\clist_gput_right:No \g__options_clist{\CurrentOption}} + } + +\ProcessKeysOptions{easybook} + +\bool_if:NT \l__myfont_bool{\PassOptionsToClass{fontset = none}{ctexbook}} +\bool_if:NT \l__enstyle_bool + { + \bool_set_false:N \l__lang_chinese_bool + \bool_set_false:N \l__zhtitle_bool + \bool_set_true:N \l__newline_bool + } +\bool_if:NTF \l__lang_chinese_bool + {\PassOptionsToClass{scheme = chinese}{ctexbook}} + {\PassOptionsToClass{scheme = plain}{ctexbook}} + +\PassOptionsToClass{\g__options_clist}{ctexbook} +\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 +\tl_new:N \g__config_tl + +\ctex_define:n + { + style .meta:nn = {ctex/style}{#1}, + link .meta:nn = {ctex/link}{#1}, + spread .meta:nn = {ctex/spread}{#1}, + elfont .meta:nn = {ctex/elfont}{#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, + style/capdash .bool_set:N = \l__capdash_bool, + style/capdash .default:n = true, + style/capdash .initial:n = false, + style/multoc .bool_set:N = \l__multoc_bool, + style/multoc .default:n = true, + style/multoc .initial:n = false, + style/withpart .bool_set:N = \l__chap_withpart_bool, + style/withpart .default:n = true, + style/withpart .initial:n = false, + style/perpart .bool_set:N = \l__foot_perpart_bool, + style/perpart .default:n = true, + style/perpart .initial:n = false, + style/perpage .bool_set:N = \l__foot_perpage_bool, + style/perpage .default:n = true, + style/perpage .initial:n = false, + + spread/linespread .fp_set:N = \g__line_spread_fp, + spread/linespread .initial:n = 1.3, + spread/tabspread .fp_set:N = \g__tab_spread_fp, + spread/tabspread .initial:n = 1, + spread/mathspread .tl_set:N = \g__math_spread_tl, + spread/mathspread .initial:n = 1, + spread/capspread .tl_set:N = \g__cap_spread_tl, + spread/capspread .initial:n = 1, + spread/fnspread .tl_set:N = \g__foot_spread_tl, + spread/fnspread .initial:n = 1, + + elfont/tabfont .tl_set:N = \g__tab_font_tl, + elfont/tabfont .initial:n = \sffamily\small, + elfont/figfont .tl_set:N = \g__fig_font_tl, + elfont/figfont .initial:n = \sffamily\small, + elfont/lstfont .tl_set:N = \g__lst_font_tl, + elfont/lstfont .initial:n = \sffamily\small, + elfont/fnfont .tl_set:N = \g__foot_font_tl, + elfont/fnfont .initial:n = \rmfamily, + elfont/marfont .tl_set:N = \g__margin_font_tl, + elfont/marfont .initial:n = \rmfamily\footnotesize, + + lstlistlistingname .tl_set:N = \lstlistlistingname, + lstlistingname .tl_set:N = \lstlistingname + } + +\RequirePackage[svgnames]{xcolor} +\RequirePackage{pdfpages,subfiles} +\includepdfset{fitpaper = true} +\RequirePackage[hang,stable]{footmisc} +\RequirePackage{setspace,zhlineskip} +\RequirePackage{amsthm,thmtools,cases} +\RequirePackage[noto,upint]{newtxmath} +\RequirePackage{chemformula} +\RequirePackage{chemfig} +\RequirePackage{siunitx,physics,bm} +\RequirePackage[normalem]{ulem} +\RequirePackage[protrusion = false]{microtype} +\RequirePackage{hologo} +\hologoSetup{discretionarybreak = true} +\RequirePackage{rotfloat} +\RequirePackage{geometry,marginnote,nccfoots,tablefootnote} +\RequirePackage{fancyhdr,titletoc} +\RequirePackage{caption,bicaption,subcaption} +\RequirePackage{graphicx,wrapfig} +\RequirePackage{zhlipsum,fontawesome,pifont} +\RequirePackage{tabularx,multirow,makecell,tabu,booktabs} +\RequirePackage{paralist,tasks} +\RequirePackage[shortlabels,inline]{enumitem} +\RequirePackage[most]{tcolorbox} +\RequirePackage[sort&compress]{gbt7714} +\RequirePackage[xindy]{imakeidx} +\RequirePackage[ + lang = {chinese-utf8}, + type = {CC}, + modifier = {by}, + version = {4.0} + ]{doclicense} +\ctex_at_end_preamble:n + { + \tl_if_empty:NF \g__config_tl + {\file_input:n {\g__config_tl}} + } + +\sys_if_engine_xetex:TF + { + \cs_new_eq:NN \__set_family:nnn \xeCJK_set_family:nnn + \cs_new_eq:NN \__switch_family:n \xeCJK_switch_family:n + }{ + \cs_new_eq:NN \__set_family:nnn \ctex_ltj_set_family:nnn + \cs_new_eq:NN \__switch_family:n \ctex_ltj_switch_family:n + } + +\cs_new_protected:Npn \__setmainfont:nn #1#2 + {\__fontspec_main_setmainfont:nn {#2}{#1}} +\cs_new_protected:Npn \__setsansfont:nn #1#2 + {\__fontspec_main_setsansfont:nn {#2}{#1}} +\cs_new_protected:Npn \__setmonofont:nn #1#2 + {\__fontspec_main_setmonofont:nn {#2}{#1}} +\cs_new_protected:Npn \__setCJKmainfont:nn #1#2 + {\__set_family:nnn {\CJKrmdefault}{#2}{#1}} +\cs_new_protected:Npn \__setCJKsansfont:nn #1#2 + {\__set_family:nnn {\CJKsfdefault}{#2}{#1}} +\cs_new_protected:Npn \__setCJKmonofont:nn #1#2 + {\__set_family:nnn {\CJKttdefault}{#2}{#1}} +\cs_new_protected:Npn \__set_zhfont_songti:nn #1#2 + {\__set_family:nnn {songti}{#2}{#1}} +\cs_new_protected:Npn \__set_zhfont_heiti:nn #1#2 + {\__set_family:nnn {heiti}{#2}{#1}} +\cs_new_protected:Npn \__set_zhfont_kaishu:nn #1#2 + {\__set_family:nnn {kaishu}{#2}{#1}} +\cs_new_protected:Npn \__set_zhfont_fangsong:nn #1#2 + {\__set_family:nnn {fangsong}{#2}{#1}} + +\tl_const:Nn \__option_zhfont: + {UprightFont = *,AutoFakeBold = 1.5,ItalicFont = *} +\cs_new_protected:Npx \__setCJKmainfont:n #1 + {\__setCJKmainfont:nn {#1}{\__option_zhfont:}} +\cs_new_protected:Npx \__setCJKsansfont:n #1 + {\__setCJKsansfont:nn {#1}{\__option_zhfont:}} +\cs_new_protected:Npx \__setCJKmonofont:n #1 + {\__setCJKmonofont:nn {#1}{\__option_zhfont:}} +\cs_new_protected:Npx \__set_zhfont_songti:n #1 + {\__set_zhfont_songti:nn {#1}{\__option_zhfont:}} +\cs_new_protected:Npx \__set_zhfont_heiti:n #1 + {\__set_zhfont_heiti:nn {#1}{\__option_zhfont:}} +\cs_new_protected:Npx \__set_zhfont_kaishu:n #1 + {\__set_zhfont_kaishu:nn {#1}{\__option_zhfont:}} +\cs_new_protected:Npx \__set_zhfont_fangsong:n #1 + {\__set_zhfont_fangsong:nn {#1}{\__option_zhfont:}} + +\bool_if:NT \l__myfont_bool + { + \__setmainfont:nn {NotoSerif} + { + Extension = .ttf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic + } + \__setsansfont:nn {NotoSans} + { + Extension = .ttf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic + } + \__setmonofont:nn {NotoSansMono} + { + Extension = .ttf, + UprightFont = *-Regular, + BoldFont = *-Bold + } + \__setCJKmainfont:nn {FZShuSong-Z01S} + { + UprightFont = *, + BoldFont = FZHei-B01S, + ItalicFont = FZKai-Z03S + } + \__setCJKsansfont:n {FZHei-B01S} + \__setCJKmonofont:n {FZFangSong-Z02S} + \__set_zhfont_songti:n {FZShuSong-Z01S} + \__set_zhfont_heiti:n {FZHei-B01S} + \__set_zhfont_kaishu:n {FZKai-Z03S} + \__set_zhfont_fangsong:n {FZFangSong-Z02S} + \cs_new_protected:Npn \songti{\__switch_family:n {songti}} + \cs_new_protected:Npn \heiti{\__switch_family:n {heiti}} + \cs_new_protected:Npn \kaishu{\__switch_family:n {kaishu}} + \cs_new_protected:Npn \fangsong{\__switch_family:n {fangsong}} + } +\cs_if_exist:NF \kaishu{\cs_gset_eq:NN \kaishu\normalfont} + +\bool_if:NT \l__paper_afour_bool + { + \geometry + { + a4paper, + columnsep = 2\ccwd, + vmargin = 2.54cm, + hmargin = 3.17cm, + headheight = 2.04cm, + headsep = 0.5cm, + footskip = 0.79cm, + footnotesep = 0.5cm, + marginparsep = 8pt, + marginparwidth = 2.54cm + } + } +\bool_if:NT \l__paper_bfive_bool + { + \geometry + { + b5paper, + columnsep = 2\ccwd, + margin = 2.54cm, + headheight = 2.09cm, + headsep = 0.45cm, + footskip = 0.7cm, + footnotesep = 0.45cm, + marginparsep = 0.25cm, + marginparwidth = 2.25cm + } + } + +\cs_gset:Npn \cleardoublepage + { + \clearpage + \bool_if:NT \l__page_twoside_bool + { + \int_if_odd:nF \c@page + {\hbox:n {}\thispagestyle{empty}\clearpage} + } + } +\cs_gset:Npn \frontmatter + { + \cleardoublepage + \@mainmatterfalse + \pagenumbering{Roman} + } +\pagestyle{fancy} +\fancyhf{} +\bool_if:NTF \l__page_twoside_bool + { + \cs_gset:Npn \chaptermark#1 + { + \markboth + { + \MakeUppercase + { + \ifnum\c@secnumdepth>\m@ne + \if@mainmatter + \ifodd\CTEX@chapter@numbering + \CTEXthechapter\hspace{\ccwd} + \fi + \fi + \fi#1 + } + }{ + \MakeUppercase + { + \ifnum\c@secnumdepth>\m@ne + \if@mainmatter + \ifodd\CTEX@chapter@numbering + \CTEXthechapter\hspace{\ccwd} + \fi + \fi + \fi#1 + } + } + } + \fancyhead[EC]{\color{ctex@frame}\kaishu\leftmark} + \fancyhead[OC]{\color{ctex@frame}\kaishu\rightmark} + \fancyhead[EL,OR]{\color{ctex@frame}\thepage} + \cs_gset_eq:NN \ps@plain\ps@empty + }{ + \cs_gset:Npn \chaptermark#1 + { + \markboth + { + \MakeUppercase + { + \ifnum\c@secnumdepth>\m@ne + \if@mainmatter + \ifodd\CTEX@chapter@numbering + \CTEXthechapter\hspace{\ccwd} + \fi + \fi + \fi#1 + } + }{} + } + \fancyhead[L]{\color{ctex@frame}\kaishu\leftmark} + \fancyhead[R]{\color{ctex@frame}\kaishu\rightmark} + \fancyfoot[C]{\color{ctex@frame}\thepage} + \fancypagestyle{plain} + { + \fancyhf{}\cs_gset:Npn \headrule{} + \fancyfoot[C]{\color{ctex@frame}\thepage} + } + } +\cs_gset:Npn \sectionmark#1 + { + \markright + { + \ifnum\c@secnumdepth>\z@ + \ifodd\CTEX@section@numbering + \CTEXthesection\hspace{0.5\ccwd} + \fi + \fi#1 + } + } +\cs_gset:Npn \headrule + { + \color{ctex@frame}\vspace{2.5pt} + \hrule width\textwidth height 0.75pt + } +\bool_if:NT \l__draft_bool + { + \bool_if:NTF \l__page_twoside_bool + {\fancyfoot[C]{\color{gray!60}\sffamily\today}} + {\fancyhead[C]{\color{gray!60}\sffamily\today}} + \geometry{showframe} + } + +\titlecontents{part} + [0\ccwd] + {\addvspace{1pc}\sffamily\large} + {}{} + {\normalsize\titlerule*{}\bf\contentspage} +\titlecontents{chapter} + [0\ccwd] + {\addvspace{1pc}\sffamily\large} + {}{} + {\normalsize\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\bf\contentspage} +\titlecontents{section} + [1.5\ccwd] + {\addvspace{0.35pc}} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} +\titlecontents{subsection} + [3.8\ccwd] + {\addvspace{0.35pc}} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} +\titlecontents{figure} + [0\ccwd] + {\addvspace{0.2pc}} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} +\titlecontents{table} + [0\ccwd] + {\addvspace{0.2pc}} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} +\contentsuse{lstlisting}{lol} +\titlecontents{lstlisting} + [0\ccwd] + {\addvspace{0.2pc}} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} +\ctex_patch_cmd:Nnn \caption@@@addcontentsline + {\addcontentsline{#1}{#2}{\protect\numberline{#3}{#4}}} + {\addcontentsline{#1}{#2}{#3\hspace{\ccwd}#4}} +\ctex_patch_cmd:Nnn \lst@MakeCaption + { + \addcontentsline{lol}{lstlisting} + {\protect\numberline{\thelstlisting}\lst@@caption} + }{ + \addcontentsline{lol}{lstlisting} + {\thelstlisting\hspace{\ccwd}\lst@@caption} + } + +\cs_new_protected:Npn \__header_mark:n #1 + { + \chapter*{\phantomsection#1} + \bool_if:NTF \l__page_twoside_bool + {\markboth{\MakeUppercase#1}{\MakeUppercase#1}} + {\markboth{\MakeUppercase#1}{}} + } +\cs_gset:Npn \tableofcontents + { + \if@twocolumn + \@restonecoltrue\onecolumn + \bool_if:NT \l__multoc_bool{\twocolumn} + \else + \@restonecolfalse + \bool_if:NT \l__multoc_bool{\twocolumn} + \fi + \__header_mark:n {\contentsname} + \vspace*{-1pc} + \@starttoc{toc} + \if@restonecol + \twocolumn + \else + \onecolumn + \fi + } +\cs_gset:Npn \listoffigures + { + \if@twocolumn + \@restonecoltrue\onecolumn + \bool_if:NT \l__multoc_bool{\twocolumn} + \else + \@restonecolfalse + \bool_if:NT \l__multoc_bool{\twocolumn} + \fi + \__header_mark:n {\listfigurename} + \CTEX@addtocline{chapter}{\listfigurename} + \vspace*{-1pc} + \@starttoc{lof} + \if@restonecol + \twocolumn + \else + \onecolumn + \fi + } +\cs_gset:Npn \listoftables + { + \if@twocolumn + \@restonecoltrue\onecolumn + \bool_if:NT \l__multoc_bool{\twocolumn} + \else + \@restonecolfalse + \bool_if:NT \l__multoc_bool{\twocolumn} + \fi + \__header_mark:n {\listtablename} + \CTEX@addtocline{chapter}{\listtablename} + \vspace*{-1pc} + \@starttoc{lot} + \if@restonecol + \twocolumn + \else + \onecolumn + \fi + } +\cs_new:Npn \listoflistings + { + \group_begin: + \@ifundefined{@restonecoltrue}{} + { + \if@twocolumn + \@restonecoltrue\onecolumn + \bool_if:NT \l__multoc_bool{\twocolumn} + \else + \@restonecolfalse + \bool_if:NT \l__multoc_bool{\twocolumn} + \fi + } + \__header_mark:n {\lstlistlistingname} + \CTEX@addtocline{chapter}{\lstlistlistingname} + \vspace*{-0.2pc} + \@starttoc{lol} + \@ifundefined{@restonecoltrue}{} + { + \if@restonecol + \twocolumn + \else + \onecolumn + \fi + } + \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, + program = truexindy, + columns = 2, + columnsep = 2\ccwd + ] +\indexsetup + { + level = \chapter*, + toclevel = chapter, + firstpagestyle = plain + } +\__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}{}} + } + +\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} +\captionsetup + { + format = hang, + % figurewithin = section, + % tablewithin = section, + labelsep = ccwd, + belowskip = 0pt,aboveskip = 10pt + } +\captionsetup[table] + { + labelfont = {tabfont,color = ctex@frame}, + textfont = {tabfont,stretch = \g__cap_spread_tl} + } +\captionsetup[figure] + { + labelfont = {figfont,color = ctex@frame}, + textfont = {figfont,stretch = \g__cap_spread_tl} + } +\captionsetup[subfigure] + { + labelformat = parens, + belowskip = 2pt,aboveskip = 6pt + } +\captionsetup[lstlisting] + { + singlelinecheck = false, + labelfont = {lstfont,color = ctex@frame}, + textfont = {lstfont,stretch = \g__cap_spread_tl} + } +\captionsetup[figure][bi-second]{name = Figure} +\captionsetup[table][bi-second]{name = Table} +\cs_new:Npn \__arabic:n #1{\int_to_arabic:v {c@#1}} +\AtBeginDocument + { + \bool_if:NT \l__capdash_bool + { + \cs_gset:Npn \thefigure{\thechapter\textendash\__arabic:n {figure}} + \cs_gset:Npn \thetable{\thechapter\textendash\__arabic:n {table}} + \cs_gset:Npn \thelstlisting{\thechapter\textendash\__arabic:n {lstlisting}} + } + } +\AtBeginEnvironment{tabularx} + {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces} +\AtBeginEnvironment{tabular} + {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces} + +\skip_set:Nn \parskip{0pt plus 2pt minus 1pt} +\skip_set:Nn \floatsep{12pt plus 2pt minus 2pt} +\skip_set:Nn \intextsep{14pt plus 2pt minus 2pt} +\skip_set:Nn \textfloatsep{16pt plus 2pt minus 4pt} +\skip_set:Nn \dbltextfloatsep{16pt plus 2pt minus 4pt} +\skip_set:Nn \@fpsep{8pt plus 2.0fil} +\setcounter{topnumber}{4} +\setcounter{bottomnumber}{4} +\setcounter{totalnumber}{8} +\cs_gset:Npn \textfraction{0.18} +\cs_gset:Npn \topfraction{0.85} +\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} + +\newcolumntype{L}{X} +\newcolumntype{C}{>{\centering\arraybackslash}X} +\newcolumntype{R}{>{\raggedleft\arraybackslash}X} +\graphicspath{{figures/}} +\DeclareGraphicsExtensions{.pdf,.png,.jpg,.eps,.tif} + +\setlist + { + labelsep = .75\ccwd,listparindent = 2\ccwd, + itemsep = .75ex plus .1ex,parsep = 0ex,topsep = .75ex plus .1ex,partopsep = 0ex + } +\setlist[itemize,1] + {label = \color{ctex@emph}\ensuremath{\bullet},leftmargin = *} +\setlist[itemize,2] + {label = \color{ctex@emph}\ensuremath{\circ},leftmargin = *} +\setlist[enumerate,1] + {label = \color{ctex@emph}\arabic*.,ref = \arabic*,leftmargin = *} +\setlist[enumerate,2] + {label = \color{ctex@emph}(\alph*),ref = \theenumi(\alph*),leftmargin = *} +\setlist[description] + {font = \color{ctex@emph}\sf,labelwidth = *,leftmargin = 2\ccwd} +\newlist{outlinelist}{itemize}{1} +\setlist[outlinelist] + {label = \color{ctex@emph}\upshape\ding{112},itemsep = .5ex plus .1ex,leftmargin = *} +\skip_set:Nn \pltopsep{.75ex plus .1ex} +\skip_set:Nn \plpartopsep{0ex} +\skip_set:Nn \plitemsep{.75ex plus .1ex} +\skip_set:Nn \plparsep{0ex} +\cs_new:Npn \circled#1 + { + \lower .7ex + \hbox{\tikz\draw(0pt,0pt)circle(.5\ccwd)node{\makebox[\ccwd][c]{\small#1}};} + } + +\cs_new_protected:Npn \__thmname_set:nn #1#2 + {\tl_const:cn {c__name_#1_tl}{#2}} +\bool_if:NTF \l__lang_chinese_bool + { + \clist_map_inline:nn + { + {theorem}{定理}, + {definition}{定义}, + {lemma}{引理}, + {corollary}{推论}, + {proposition}{性质}, + {example}{例}, + {remark}{注}, + {exercise}{练习} + }{\__thmname_set:nn #1} + }{ + \clist_map_inline:nn + { + {theorem}{Theorem}, + {definition}{Definition}, + {lemma}{Lemma}, + {corollary}{Corollary}, + {proposition}{Proposition}, + {example}{Example}, + {remark}{Remark}, + {exercise}{Exercise} + }{\__thmname_set:nn #1} + } + +\declaretheoremstyle[ + spaceabove = .75ex plus .1ex, + spacebelow = .75ex plus .1ex, + headindent = 0\ccwd, + headfont = \color{ctex@emph}\sffamily, + notefont = {}, + notebraces = {}{}, + bodyfont = \normalfont, + headpunct = {.}, + postheadspace = \ccwd, + numberwithin = chapter, + headformat = \NAME\space\NUMBER\NOTE + ]{mythm} +\declaretheorem[style = mythm,name = \c__name_theorem_tl]{theorem} +\declaretheorem[style = mythm,name = \c__name_definition_tl]{definition} +\declaretheorem[style = mythm,name = \c__name_lemma_tl]{lemma} +\declaretheorem[style = mythm,name = \c__name_corollary_tl]{corollary} +\declaretheorem[style = mythm,name = \c__name_proposition_tl]{proposition} +\declaretheorem[style = mythm,name = \c__name_example_tl]{example} +\cs_gset_eq:NN \proof\relax +\declaretheorem{remark}[ + style = mythm, + name = \faCommentingO\space\c__name_remark_tl, + numbered = no + ] +\declaretheorem{proof}[ + style = mythm, + name = \faPencilSquareO\space\proofname, + numbered = no, + qed = \qedsymbol + ] + +\settasks + { + label = (\Alph*), + after-item-skip = 0ex plus .1ex, + column-sep = .5\ccwd, + item-indent = 2\ccwd, + label-width = 1.5\ccwd + } +\setchemformula + { + math-scripts = false, + charge-hshift = 0.25\ccwd, + subscript-vshift = -0.2ex + } +\sisetup + { + detect-family, + detect-weight, + detect-shape, + detect-inline-family = math, + detect-inline-weight = math, + detect-display-math, + unit-math-rm = \mathrm, + number-math-rm = \mathrm, + table-parse-only, + group-digits = false + } +\allowdisplaybreaks[4] +\cs_gset:Npn \ULthickness{.75pt} +\SetMathEnvironmentSinglespace{\g__math_spread_tl} +\skip_set:Nn \jot{4pt plus 1pt minus 1pt} +\ctex_after_end_preamble:n + { + \skip_set:Nn \abovedisplayskip{5pt plus 1pt minus 1pt} + \skip_set:Nn \belowdisplayskip{5pt plus 1pt minus 1pt} + \skip_set:Nn \abovedisplayshortskip{0pt} + \skip_set:Nn \belowdisplayshortskip{5pt plus 1pt minus 1pt} + } +\cs_gset:Npn \tagform@#1 + {\maketag@@@{\color{ctex@emph}(\ignorespaces#1\unskip\@@italiccorr)}} + +\tcbset + { + thmsty/.style = + { + enhanced~jigsaw,pad~at~break* = 3pt, + opacityback = 0, + colframe = ctex@emph, + left = .2pc,right = .2pc,top = .5pc,bottom = .5pc,middle= .5pc, + arc = 0pt + }, + outlinesty/.style = + { + enhanced,nofloat, + tikznode~boxed~title, + interior~style = white,colframe = ctex@emph, + colbacktitle = white,coltitle = ctex@emph, + fonttitle = \large\sffamily,fontupper = \itshape, + boxed~title~style = {size = normal,opacityframe = 0,boxrule = 0pt}, + attach~boxed~title~to~top~center = {yshift = -\tcboxedtitleheight/2}, + arc = 3pt, + after~skip = 3ex, + left = 1.5pc,right = 1.5pc,top = 1pc,bottom = 0.5pc, + boxsep = 5pt + }, + exsty/.style = + { + enhanced,on~line, + arc = 5pt, + fontupper = \sffamily\Large, + boxrule = 1pt,boxsep = 0pt, + left = 6pt,right = 6pt,top = 3.5pt,bottom = 3.5pt, + before~skip = 4ex,after~skip = 2.25ex + }, + breakable, + boxrule = .75pt + } +\ctex_at_end_preamble:n + { + \bool_if:NT \l__thmbox_bool + { + \tcolorboxenvironment{theorem}{thmsty} + \tcolorboxenvironment{definition}{thmsty} + \tcolorboxenvironment{lemma}{thmsty} + \tcolorboxenvironment{corollary}{thmsty} + \tcolorboxenvironment{proposition}{thmsty} + \tcolorboxenvironment{example}{thmsty} + } + } +\NewDocumentEnvironment{outline}{O{\abstractname}} + { + \begin{tcolorbox}[outlinesty,title = #1] + \begin{outlinelist} + }{ + \end{outlinelist} + \end{tcolorbox} + } +\NewDocumentEnvironment{exercise}{sO{black}O{1.}O{\c__name_exercise_tl}} + { + \IfBooleanF{#1} + { + \refstepcounter{section} + \CTEX@addtocline{section}{#4} + \markright + { + \ifnum\c@secnumdepth>\z@ + \CTEXthesection\hspace{0.5\ccwd} + \fi#4 + } + } + \begin{center} + \bool_if:NTF \l__thmbox_bool + { + \tcbox[ + exsty, + colback = #2!8!white,colframe = #2!50!black, + drop~fuzzy~shadow = #2!50!white, + ]{\IfBooleanF{#1}{\CTEXthesection\hspace{0.5\ccwd}}#4} + }{ + \sffamily\Large\IfBooleanF{#1}{\CTEXthesection\hspace{0.5\ccwd}}#4 + } + \end{center} + \begin{compactenum}[#3] + }{ + \end{compactenum} + } +\DeclareTColorBox{mybox}{so} + { + enhanced~jigsaw,pad~at~break* = 3pt, + IfBooleanF = {#1}{opacityback = 0,colframe = ctex@emph}, + coltitle = black,opacitybacktitle = 0, + fonttitle = \sffamily, + left = .2pc,right = .2pc,top = .5pc,bottom = .5pc,middle= .5pc, + arc = 0pt, + toptitle = 2pt,bottomtitle = 2pt, + beforeafter~skip=2ex, + halign~upper = left,halign~lower = left, + center~title, + IfValueT = {#2}{title = #2} + } +\NewTCBox{\fuzzy}{O{yellow}O{}} + {nobeforeafter,tcbox~raise~base,blank,fuzzy~halo = 2pt~with~#1,#2} +\DeclareTotalTCBox{\concise}{O{Aqua}O{}v} + { + nobeforeafter,tcbox~raise~base, + top = 2pt,bottom = 2.5pt,left = 2pt,right = 2pt, + boxsep = 0pt,arc = 1pt, + colback = #1!15!white,#2 + }{#3} + +\skip_set:Nn \footnotemargin{0.5\ccwd} +\skip_set:Nn \footnotesep{0ex} +\cs_gset:Npn \hangfootparskip{0ex} +\cs_gset:Npn \footnoterule + { + \color{ctex@frame}\hrule width 0.35\columnwidth height 0.75pt + \vspace*{2.6pt}\color{black} + } +\bool_if:NT \l__lang_chinese_bool + {\cs_gset:Npn \hangfootparindent{2\ccwd}} +\ctex_at_end_preamble:n + { + \bool_if:NT \l__chap_withpart_bool + {\counterwithin*{chapter}{part}} + \bool_if:NT \l__foot_perpart_bool + { + \counterwithout*{footnote}{chapter} + \counterwithin*{footnote}{part} + } + \bool_if:NT \l__foot_perpage_bool + { + \counterwithout*{footnote}{chapter} + \counterwithin*{footnote}{page} + } + } +\__patch_cmd:Nnn \@footnotetext + {\def\baselinestretch{\ZhLS@footlinespread}\reset@font} + {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl} +\__patch_cmd:Nnn \@mpfootnotetext + {\def\baselinestretch{\ZhLS@footlinespread}\reset@font} + {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl} +\__patch_cmd:Nnn \@makefnmark + {\normalfont}{\g__foot_font_tl} +\cs_gset:Npn \marginfont{\g__margin_font_tl} + +\lstdefinestyle{mystyle} + { + language = [LaTeX]TeX, + texcsstyle = *\lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi, + basicstyle = \ttfamily\lst@ifdisplaystyle\small\else\color{ctex@verb}\fi, + framexleftmargin = 0pt, + framexrightmargin = 0pt, + xleftmargin = 0pt, + xrightmargin = 0pt, + framesep = 3pt, + frame = lines, + rulecolor = \color{ctex@frame}, + commentstyle = \color{gray}, + emphstyle = \color{ctex@emph}, + emph = + { + caption,config,easybook,elfont,linktopage,subcaption,tabularx,thmtools + }, + keywordstyle = \lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi, + morekeywords = + { + includegraphics,setmainfont,setsansfont,setmonofont,setCJKmainfont,setCJKsansfont,setCJKmonofont,setCJKfamilyfont,RequirePackage + } + } +\lstset + { + style = mystyle, + breaklines = true, + resetmargins = true, + numbers = left, + numberstyle = \small, + abovecaptionskip = -1ex, + belowcaptionskip = 1ex, + aboveskip = 1.5ex plus .2ex minus .1ex, + belowskip = 0.55ex plus .2ex minus .1ex, + keepspaces = true, + framerule = 0.75pt, + columns = flexible + } +\lstloadlanguages{C,C++,Java,Python,Matlab} +\AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}} + +\cs_new_protected:Npn \__clist_put_hyperref:n #1 + {\clist_gput_right:Nn \g__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 + {\definecolorset{HTML}{ctex@}{}{frame,#1;emph,#2;verb,#3}} +\cs_new:Npn \__linkcolor_set:n #1 + { + linkcolor/\clist_item:nn {#1}{1} .code:n = + { + \__define_linkcolor:nnn + {\clist_item:nn {#1}{2}} + {\clist_item:nn {#1}{3}} + {\clist_item:nn {#1}{4}} + \__clist_put_hyperref:n + { + linkcolor = ctex@link,linkbordercolor = ctex@link, + urlcolor = ctex@url,urlbordercolor = ctex@url, + citecolor = ctex@cite,citebordercolor = ctex@cite + } + }, + } +\cs_new:Npn \__themecolor_set:n #1 + { + color/\clist_item:nn {#1}{1} .code:n = + { + \__define_themecolor:nnn + {\clist_item:nn {#1}{2}} + {\clist_item:nn {#1}{3}} + {\clist_item:nn {#1}{4}} + }, + } + +\cs_new:Npn \__allow_urlbreak: + { + \cs_new:Npn \__add_urlbreak_points: + {\tl_map_function:NN \c__urlbreak_points_tl\do} + \__appto_cmd:Nn + \UrlBreaks{\UrlOrds\__add_urlbreak_points:} + } +\tl_const:Nn \c__urlbreak_points_tl + {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789} + +\keys_define:nx {ctex/link} + { + hyperlink .choice:, + hyperlink/edge .code:n = {}, + hyperlink/various .code:n = {\__clist_put_hyperref:n {colorlinks}}, + hyperlink/none .code:n = {\__clist_put_hyperref:n {hidelinks}}, + hyperlink .default:n = edge, + hyperlink .initial:n = edge, + + linkcolor .choice:, + \clist_map_function:nN + { + {graphite, 626262,0000B2,005752}, + {cutepink, ff69b4,9d5196,57b5e5}, + {skyblue, 0000ff,004986,eb6877}, + {crimson, dc143c,00c1c9,afcd20} + } + \__linkcolor_set:n, + linkcolor .default:n = graphite, + linkcolor .initial:n = graphite, + + linktopage .choice:, + linktopage/true .code:n = {\__clist_put_hyperref:n {linktocpage}}, + linktopage/false .code:n = {}, + linktopage .default:n = true, + linktopage .initial:n = false + } +\keys_define:nx {ctex/style} + { + color .choice:, + color .value_required:n = true, + \clist_map_function:nN + { + {none, 000000,000000,000000}, + {forest, 005752,004986,a40000}, + {energy, f39800,00a0e9,893895}, + {cyberpunk, 005982,eb6877,a4005b} + } + \__themecolor_set:n, + color .initial:n = none + } + +\ctex_at_end_preamble:n + { + \RequirePackage[pdfstartview = FitH,bookmarksnumbered]{hyperref} + \RequirePackage{cleveref} + \urlstyle{same} + \exp_args:NV \hypersetup\g__hyperref_clist + \__allow_urlbreak: + + \bool_if:NTF \l__lang_chinese_bool + { + \keys_set_known:nn {ctex} + { + contentsname = {目\hspace{\ccwd}录}, + indexname = {索\hspace{\ccwd}引}, + listfigurename = {图片索引}, + listtablename = {表格索引}, + abstractname = {摘\hspace{\ccwd}要}, + lstlistlistingname = {代码索引}, + lstlistingname = {\faCode 代码} + } + \crefformat{equation}{#2式(#1)#3} + \crefformat{align}{#2式(#1)#3} + \crefformat{multline}{#2式(#1)#3} + \crefformat{gather}{#2式(#1)#3} + \crefformat{figure}{#2图#1#3} + \crefformat{table}{#2表#1#3} + \crefformat{chapter}{#2第#1章#3} + \crefformat{section}{#2节#1#3} + \crefformat{subsection}{#2小节#1#3} + \crefformat{theorem}{#2定理#1#3} + \crefformat{definition}{#2定义#1#3} + \crefformat{lemma}{#2引理#1#3} + \crefformat{corollary}{#2推论#1#3} + \crefformat{proposition}{#2性质#1#3} + \crefformat{example}{#2例#1#3} + }{ + \keys_set_known:nn {ctex} + { + abstractname = {Abstract}, + lstlistlistingname = {List~of~Listings}, + lstlistingname = {\faCode\space Code} + } + \crefformat{equation}{#2Equation~(#1)#3} + \crefformat{align}{#2Equation~(#1)#3} + \crefformat{multline}{#2Equation~(#1)#3} + \crefformat{gather}{#2Equation~(#1)#3} + \crefformat{figure}{#2Figure~#1#3} + \crefformat{table}{#2Table~#1#3} + \crefformat{chapter}{#2Chapter~#1#3} + \crefformat{section}{#2Section~#1#3} + \crefformat{subsection}{#2Subsection~#1#3} + \crefformat{theorem}{#2Theorem~#1#3} + \crefformat{definition}{#2Definition~#1#3} + \crefformat{lemma}{#2Lemma~#1#3} + \crefformat{corollary}{#2Corollary~#1#3} + \crefformat{proposition}{#2Proposition~#1#3} + \crefformat{example}{#2Example~#1#3} + } + } + +\ctex_set:n + { + secnumdepth = 3, + tocdepth = 1, + part = + { + pagestyle = empty, + number = + {\bool_if:NTF \l__zhtitle_bool{\chinese{part}}{\thepart}}, + format = {\color{ctex@frame}\sffamily\Huge}, + aftername = + {\bool_if:NTF \l__newline_bool{\par\nobreak}{\hspace{\ccwd}}}, + tocline = {\CTEXifname{\CTEXthepart\hspace{\ccwd}}{}#2} + }, + chapter = + { + % pagestyle = fancy, + number = + {\bool_if:NTF \l__zhtitle_bool{\chinese{chapter}}{\thechapter}}, + format = + { + \color{ctex@frame}\sffamily\LARGE + \bool_if:NF \l__newline_bool{\centering} + }, + aftername = + { + \bool_if:NTF \l__newline_bool + {\par\nobreak\vskip 1.5pc}{\hspace{\ccwd}} + }, + beforeskip = -1.5ex, + afterskip = 3ex, + lotskip = 0.8pc, + lofskip = 0.8pc, + tocline = {\CTEXifname{\CTEXthechapter\hspace{\ccwd}}{}#2} + }, + 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, + tocline = {\CTEXifname{\CTEXthesection\hspace{\ccwd}}{}#2} + }, + 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, + tocline = {\CTEXifname{\CTEXthesubsection\hspace{\ccwd}}{}#2} + }, + subsubsection = + { + hang = true, + format = {\color{ctex@frame}\sffamily}, + aftername = {\hspace{0.5\ccwd}}, + beforeskip = \parskip, + afterskip = \parskip + } + } + +\bool_if:NF \l__newline_bool + { + \ctex_set:n + { + part/hang = true, + chapter/hang = true + } + } +%% +%% End of file `easybook.cls'.
\ No newline at end of file diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 294e046edfe..2e2474bcd03 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -261,7 +261,7 @@ my @TLP_working = qw( dvdcoll dvgloss dviasm dviincl dviinfox dvipsconfig dynamicnumber dynblocks dynkin-diagrams dyntree e-french ean ean13isbn easy easy-todo - easyfig easyfloats easyformat easylist easyreview + easybook easyfig easyfloats easyformat easylist easyreview ebezier ebgaramond ebgaramond-maths ebong ebook ebproof ebsthesis ec ecc ecclesiastic ecltree eco ecobiblatex econ-bst econometrics economic ecothesis diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 706c13d2881..a1b2a59eb84 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -419,7 +419,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`); 'ecards', "die 'skipping, per author request'", 'ean13isbn', "&MAKEcopy", 'easy', "&MAKEeasy", - 'easybook', "die 'skipping, nonfree doc'", + 'easybook', "&MAKEflatten", 'easylatex', "die 'skipping, complicated perl modules, sorry'", 'ebib', "die 'skipping, as it is Emacs'", 'ebong', "&MAKEflatten", diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index cf27b40fd4e..5551f8a304b 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -352,6 +352,7 @@ depend dynblocks depend ean13isbn depend easy depend easy-todo +depend easybook depend easyfig depend easyfloats depend easyformat diff --git a/Master/tlpkg/tlpsrc/easybook.tlpsrc b/Master/tlpkg/tlpsrc/easybook.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/easybook.tlpsrc |