summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/easybook/easybook.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-07-31 03:00:52 +0000
committerNorbert Preining <norbert@preining.info>2021-07-31 03:00:52 +0000
commit6476d9b56070f64c62d6a81514c0c9b25aad1eda (patch)
treebbcbbc5af76f023abb6d36c84ae8a2c2e46dc601 /macros/latex/contrib/easybook/easybook.tex
parent83b88676e8526454a292a894c5f30451eb75b828 (diff)
CTAN sync 202107310300
Diffstat (limited to 'macros/latex/contrib/easybook/easybook.tex')
-rw-r--r--macros/latex/contrib/easybook/easybook.tex1144
1 files changed, 1144 insertions, 0 deletions
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
new file mode 100644
index 0000000000..1f85ee17da
--- /dev/null
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -0,0 +1,1144 @@
+\documentclass[load-preamble+]{cnltx-doc}
+
+\usepackage[fontset = fandol]{ctex}
+\usepackage
+ {
+ hologo,pifont,booktabs,enumitem,colortbl,
+ fancyvrb-ex,geometry,indentfirst
+ }
+\setcnltx
+ {
+ name = easybook,
+ title = EASYBOOK 使用手册,
+ version = v1.28,
+ date = 2021/07/30,
+ authors = 瞿毅,
+ info = 排版简体中文学位论文和书籍,
+ email = quee123@foxmail.com,
+ url = https://gitee.com/texl3/easybook,
+ abstract =
+ {
+ \cls*{easybook} 是基于 \cls*{ctexbook} 书籍文档类创建以极简为风格的模板,同时兼具 \cls*{book} 与 \cls*{article} 文档类的用途,它的基础宏包 \pkg*{easybase} 还可以搭配 C\TeX 和标准文档类使用。\cls*{easybook} 考虑了一些细节并载入一些几乎必备的宏包进行包装和改进,提供多个命令和接口可以使用户简便地进行设置。它适用于排版中英文学位论文、学术书籍或者是笔记。
+ },
+ code-only,
+ arg-format = \normalfont\small\itshape,
+ abstract-format = \small,
+ color-scheme = blue,
+ title-format = \huge\sffamily,
+ add-frame-options = {innerleftmargin = 2em},
+ listings-options = {numbers = none}
+ }
+\KOMAoptions{headsepline = 0.6pt}
+\setfootnoterule[0.6pt]{0.4\columnwidth}
+\addtokomafont{headsepline}{\color{cnltxblue}}
+\addtokomafont{footnoterule}{\color{cnltxblue}}
+\addtokomafont{section}{\normalfont\sffamily}
+\addtokomafont{subsection}{\normalfont\sffamily}
+\addtokomafont{subsubsection}{\normalfont\sffamily}
+\DeclareTOCStyleEntry[entryformat = \sffamily]{default}{section}
+\geometry{margin = 1in,marginparwidth = 0.65in}
+\setlist{nosep,labelindent = \parindent,leftmargin = *,labelsep = 0.5em}
+\setlist[itemize,1]{label = \small\color{cnltxblue}\textbullet}
+\newnote*{\change}[2][]{Introduced in #2\newline\ifblank{#1}{}{Changed in #1}}
+\arrayrulecolor{cnltxblue}
+\setcounter{tocdepth}{2}
+
+\ExplSyntaxOn\makeatletter
+\NewDocumentCommand{\passto}{smm}
+ {\IfBooleanF{#1}{\color{cnltxblue}}#3\ifblank{#2}{}{\ttfamily[#2]}}
+\newcommand{\splitmeta}[2][\texttt{,}]
+ {
+ \clist_map_inline:nn {#2}
+ { \clist_put_right:Nn \l_tmpa_clist { \meta{##1} } }
+ \clist_use:Nn \l_tmpa_clist {#1}
+ }
+\newcommand{\newsplitarg}[4][\splitmeta]
+ {
+ \newcommand{#2}[1]
+ {\code{\textcolor{argument}{#3\textnormal{#1{##1}}#4}}}
+ }
+\NewDocumentCommand{\kvsplit}{st-mm}
+ {
+ \item\code
+ {
+ \option{#3}\cnltx@isvalue
+ \IfBooleanTF{#2}{#4}{\IfBooleanTF{#1}{\Marg{#4}}{\splitmarg{#4}}}
+ }
+ }
+\newsplitarg{\splitoarg}{[}{]}
+\newsplitarg{\splitdarg}{(}{)}
+\newsplitarg{\splitmarg}{\{}{\}}
+\newcommand{\spemmeta}{\splitmeta[\texttt{!}]}
+\newsplitarg[\spemmeta]{\spemcoarg}{[}{]}
+\renewcommand{\cnltx@package@abstract@width}{0.85\linewidth}
+\newcommand{\noitemsep}{\setlength{\itemsep}{0ex}}
+\renewcommand{\cmltx@list@setup}
+ {
+ \setlength{\leftmargin}{0em}
+ \setlength{\labelwidth}{2em}
+ \setlength{\itemindent}{-1em}
+ \setlength{\labelsep}{0em}
+ \setlength{\topsep}{0.75ex}
+ \setlength{\itemsep}{0.75ex}
+ \setlength{\listparindent}{2em}
+ \setlength{\partopsep}{0ex}
+ \setlength{\parsep}{0ex}
+ }
+\newcounter{ctexexam}
+\define@key{FV}{labelref}{\def\ctexexamlabelref{\label{#1}}}
+\let\ctexexamlabelref\empty
+\DefineVerbatimEnvironment{frameverb}{Verbatim}
+ {
+ baselinestretch = 1.2,gobble = 2,fontsize = \small,
+ rulecolor = \color{cnltxblue},framerule = 0.6pt,
+ frame = single,framesep = 10pt,
+ listparameters =
+ {
+ \setlength{\topsep}{\bigskipamount}
+ \appto\FV@EndList{\nointerlineskip}
+ }
+ }
+\DefineVerbatimEnvironment{ctexexam}{Verbatim}
+ {
+ baselinestretch = 1.2,gobble = 2,fontsize = \small,
+ rulecolor = \color{cnltxblue},framerule = 0.6pt,
+ frame = single,framesep = 10pt,
+ label = \rule{0pt}{12pt}\textnormal{\bfseries 例 \arabic{ctexexam}},
+ listparameters =
+ {
+ \setlength{\topsep}{\bigskipamount}
+ \refstepcounter{ctexexam}\ctexexamlabelref
+ \appto\FV@EndList{\nointerlineskip}
+ }
+ }
+\makeatother\ExplSyntaxOff
+
+\begin{document}
+
+\clearpage
+\section{使用说明}
+您在使用 \cls*{easybook} 文档类编写文档前可能需要满足以下的条件:
+\begin{itemize}
+ \item 使用 \hologo{XeLaTeX}(推荐)或 \hologo{LuaLaTeX} 两种编译方式。
+ \item 由于用到了一些 \LaTeX 和宏包较新的功能,建议安装最新的 \TeX 发行版,例如 \TeX~Live 2021 或 \hologo{MiKTeX} 21.2 之后的版本。
+ \item 虽然手册对基本用法做了介绍,但这并不是入门教程,所涉及到宏包的用法与命令也需要有了解。您应当具有一定的 \LaTeX 使用基础,可以在 \TeX 综合网站 \href{https://www.ctan.org/}{CTAN} 查看相关资源。
+\end{itemize}
+
+\subsection{基本用法}
+以下一份简单的 \TeX 文档演示了 \cls*{easybook} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\LaTeX 工作室} 的网站。
+\begin{frameverb}
+ \documentclass{easybook}
+
+ \ctexset{键值列表}
+ \usepackage{宏包列表}
+
+ \begin{document}
+ \chapter{欢迎}
+ \section{Welcome to easybook}
+ Hello, \LaTeX
+ \end{document}
+\end{frameverb}
+
+或者直接使用 \pkg*{easybase} 宏包,目前适用于 \cls*{ctexbook}、\cls*{ctexrep}、\cls*{ctexart} 以及标准文档类。它的宏包选项有 \option{class}、\option{draft}、\option{paper} 和 \option{floatpage},包含了节 \ref{sec:interface options} 所示各个模块接口命令的功能。当在\textbf{标准文档类}后载入时还可以使用 \pkg*{ctex} 宏包的选项,将会传递给 \pkg*{ctex} 宏包。
+\begin{frameverb}
+ \documentclass{ctexbook}
+
+ \usepackage{easybase}
+ \ctexset{键值列表}
+
+ \usepackage{宏包列表}
+
+ \begin{document}
+ \chapter{欢迎}
+ \section{Welcome to easybook}
+ Hello, \LaTeX
+ \end{document}
+\end{frameverb}
+
+\subsection{编译方式}
+假设您的 \TeX 源文件名为 \code{easybook.tex},需要使用参考文献和索引功能,并使用 \hologo{XeLaTeX} 和 \hologo{BibTeX} 引擎编译文档,那么需要在命令行中执行:
+\begin{frameverb}
+ xelatex -shell-escape easybook
+ bibtex easybook
+ makeindex easybook
+ xelatex -shell-escape easybook
+ xelatex -shell-escape easybook
+\end{frameverb}
+当然也可以使用 \code{latexmk} 及一些软件自带的编译工具,这里就不做介绍。 \\
+\ding{72} 需要注意正确\textbf{编译索引}要增加 \code{-shell-escape} 命令行选项。
+
+\section{文档类选项}
+\label{sec:document class options}
+\begin{options}
+ \opt{draft}\Default!
+ 开启草稿模式会加快编译速度,表现有显示页面边框、行溢出的地方显示黑色方块、图片变成占位方框、显示当前日期和关闭超链接渲染。不载入 \pkg*{tcolorbox} 宏包使用盒子环境也会提高编译速度,详情见小节 \ref{subsec:box}。
+ \opt{newline}\Default!
+ 部分和章标题的样式为另起一行,符合一般英文书籍的习惯。
+ \keychoice{scheme}{chinese,plain}\Default{chinese}
+ \option{scheme} 代表文档的主题,扩展了此选项在 C\TeX 文档类中原有的作用范围,\option{plain} 选项可使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。
+ \opt{enmode}\Default!
+ 同时开启 \option{newline} 和 \keyis-{scheme}{plain} 选项以符合英文原生风格。
+ \keychoice{scheme}{a4paper,b5paper,c5paper,letterpaper,其它纸张}\Default{a4paper}
+ 设置页面大小,交给 \pkg*{geometry} 宏包处理,可使用它支持的所有规格。建议选项 \option*{b5paper} 和 \keyis*-{zihao}{5},选项 \option*{a4paper} 和 \keyis*-{zihao}{-4} 配合。
+ \keyval-{config}{配置文件名}
+ \option{config} 为载入用户配置选项,配置文件名不需加括号但需带有后缀名如 \code{tex}、\code{def} 和 \code{cfg}。
+ \keybool{floatpage}\Default{true}
+ 开启这个选项后浮动环境 \env*{table} 和 \env*{figure} 的比例参数会使用默认值,关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。
+\end{options}
+
+\subsection{中文字体}
+\begin{options}
+ \keychoice{cjkfont}{adobe,fandol,founder,mac,macnew,macold,ubuntu,windows,none}\Default
+ 中文字体采用 C\TeX 宏集包含的字库并与其一致,具体配置方案可以查看 C\TeX 使用手册。它与 \option*{fontset} 选项是等效的,如果没有指定 \option{cjkfont} 的值,将会自动检测操作系统并选择相应的字体。
+\end{options}
+
+如果需要使用其它中文字体,可以在启用选项 \keyis-{cjkfont}{none} 后,再使用 \pkg*{xeCJK} 宏包的相关命令设置字体以及声明字体族:
+\begin{ctexexam}
+ \setCJKmainfont{SimSun}[BoldFont = SimHei,ItalicFont = KaiTi]
+ \setCJKsansfont{SimHei}
+ \setCJKmonofont{FangSong}
+ \newCJKfontfamily[song]\songti{SimSun}
+\end{ctexexam}
+
+\subsection{英文字体}
+\begin{options}
+ \keychoice{font}{noto,garamond,times,libertine,palatino,auto}\Default{auto}
+ 预置的英文字体相关配置方案如下表所示,这些字体已经包含在了 \TeX~Live 发行版中,所以通常不需要再专门安装。如果您想使用其他英文字体,可以使用 \pkg*{fontspec} 宏包的相关命令进行设置。
+ \begin{center}
+ \begin{tabular}{cccc}
+ \toprule
+ & \sffamily{正文字体} & \sffamily{无衬线字体} & \sffamily{等宽字体} \\
+ \midrule[0.6pt]
+ \code{noto} & Noto Serif & Noto Sans & Noto Sans Mono \\
+ \code{garamond} & EB Garamond & Libertinus Sans & LM Mono \\
+ \code{palatino} & TG Pagella & Libertinus Sans & LM Mono \\
+ \code{libertine} & TG Pagella & Libertinus Sans & LM Mono \\
+ \code{times} & XITS & TG Heros & TG Cursor \\
+ \bottomrule
+ \end{tabular}
+ \end{center}
+\end{options}
+
+\subsection{article 模式}
+\begin{options}
+ \keychoice{class}{book,article}\Default{book}
+ 使用 \cls*{easybook} 文档类可以有两种模式,默认为 \cls*{book} 模式。选用 \option{article} 会变为 \option*{oneside} 单面排版,同时使文档编号、结构等与标准 \cls*{article} 文档类的特性相似,可用于短篇幅的文章,不需要再使用 \cs*{chapter} 命令,此时节 \ref{sec:document command} 中目录命令的 \option{chapter} 选项会失效,将以 \option{section} 标题级别输出目录。如果使用 \cls*{ctexart} 配合 \pkg*{easybase} 宏包,则选项值 \code{book} 会失效。
+ \opt{book}\Default
+ 开启 \cls*{book} 模式,与 \keyis*-{class}{book} 等效。
+ \opt{article}\Default
+ 开启 \cls*{article} 模式,与 \keyis*-{class}{article} 等效。
+\end{options}
+
+\section{文档命令}
+\label{sec:document command}
+
+\subsection{文区命令}
+\begin{commands}
+ \command{frontmatter}[\sarg\oarg{编号格式}]\Default{Roman}
+ 前言区命令,使部分和章标题不编号,带有星号的变体命令不使用 \cs{cleardoublepage} 命令。页码 \meta{编号格式} 可设置为例如 \code{roman}、\code{Alph} 等格式。
+ \command{mainmatter}[\sarg]
+ 文区命令,章标题正常编号且页码为从 1 开始计数的阿拉伯数字,带有星号的变体命令不使用 \cs{cleardoublepage} 清双页命令。
+ \command{backmatter} 后记区命令,页码格式与编号保持不变,章标题不编号。
+ \command{cleardoublepage}[\oarg{页面风格}]\Default{empty}
+ 清双页命令可以确保下一页文本总在奇数页开始,在奇数页使用它会产生空白偶数页。文区命令 \cs{frontmatter} 和 \cs{mainmatter} 会用到清双页命令,在启用文类选项 \option*{openright} 时标题命令 \cs*{part} 和 \cs*{chapter} 也会用到清双页命令。
+ \command{blankpagestyle}[\marg{页面风格}]
+ 空白页面风格命令全局指定多出空白页的默认页面风格,或使用可选参数局部指定。默认的风格为 \code{empty},即空的页眉页脚。
+\end{commands}
+
+\subsection{目录命令}
+\begin{commands}
+ \command{tableofcontents}[\parg\oarg{键值列表}\darg{附加代码}]
+ 主文档目录命令。带有 \parg{} 号参数的命令输出双语目录,需要与双语目录标题命令 \cs{bichapter} 等或设置图片、表格和代码等英文目录的标题配合使用,附加代码是中文与英文目录之间的代码,可以插入目录样式和换页等命令
+ \command{listoffigures}[\sarg\parg\oarg{键值列表}]
+ 输出图片目录命令。带有星号的目录命令不将标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。
+ \command{listoftables}[\sarg\parg\oarg{键值列表}]
+ 输出表格目录命令。带有星号的目录命令不将标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。
+ \command{listoflstlistings}[\sarg\parg\oarg{键值列表}]
+ 输出代码目录命令。带有星号的目录命令不将标题添加进主文档目录,带有 \parg{} 号的目录命令可以使当前标题编号。以上命令可选参数的 \meta{键值列表} 如下:
+\end{commands}
+
+\begin{options}
+ \opt{chapter}\Default!
+ 使目录标题按照 \code{chapter} 级别输出,这是默认级别。
+ \opt{section}\Default!
+ 使目录标题按照 \code{section} 级别输出。
+ \keybool{multoc}\Default{false}
+ 与 \code{style/multoc} 选项具有相同的效果,但是具有优先性且可单独设置不同目录是否多栏排版,栏数默认为双栏,可使用 \option{columns} 更改。
+ \keyval-{columns}{目录栏数}\Default{2}
+ 设置目录的栏数,仅在 \keyis-{multoc}{true} 时有效,默认为双栏。
+ \kvsplit{title}{中文目录标题,英文目录标题}\Default
+ 用于更改目录的标题,标题之间用一个英文逗号分开,也可以只有一部分,表示中文目录的标题。当设置了英文目录标题时,英文目录标题将会自动加入主文档目录 \cs*{tableofcontents+} 命令。
+ \keyval-{format}{目录标题格式}\Default
+ 在书籍模式且 \option{chapter} 选项开启或者文章模式的情况下,\option{format} 用于设置目录标题的格式。
+ \keyval-{aftertitle}{目录标题格式}\Default
+ 目录标题文本之后插入的代码。
+ \keyval-{pagestyle}{标题页的页面格式}\Default{empty}
+ 目录标题所在页的页面格式,仅当目录以 \code{chapter} 级别输出时有效。除了上述选项还支持 C\TeX 键值列表路径 \module*{chapter} 或 \module*{section} 所有的章节标题样式选项。
+\end{options}
+
+\subsection{标题命令}
+\change[2021-06-13]{2021-05-05}
+双语目录标题命令目前设置了常用的三个级别,它们将中文标题正常输出,并使中英文标题加入双语目录。类似于标准文档类,这三个标题命令分别具有独立的计数器\footnote{默认情况下与普通标题命令共享使用计数器。},并对应 \cs*{the}\meta{计数器} 的值,可以用于 \option{binumber} 选项更改英文目录中的编号。这个功能是为国内一些高校的学位论文模板的要求设计,在一般情况和英文模式下\textbf{不需要使用}。
+\begin{commands}
+ \command{bichapter}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
+ \code{chapter} 级别的双语目录标题命令,具有独立的 \code{bichapter} 计数器。
+ \command{bisection}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
+ \code{section} 级别的双语目录标题命令,具有独立的 \code{bisection} 计数器。
+ \command{bisubsection}[\sarg\oarg{目录中文标题}\marg{中文标题}\marg{目录英文标题}]
+ \code{subsection} 级别的双语目录标题命令,具有独立的 \code{bisubsection} 计数器。
+\end{commands}
+
+它们的星号变体命令使文中标题不编号,但是仍然加入双语目录,若英文标题参数空置那么仅加入中文目录而不加入英文目录,这一特点与 \cs{chapter*} 等命令的行为不太一样,在一些情况下会用到。可选参数是目录中的中文标题,默认与中文标题一致,正文标题过长时可用它设置在目录中显示的标题。默认情况下双语目录的格式是一致的,共享使用 \cs*{tocset} 的设置,英文目录的章级别标题名及编号的修改方式如下:
+\begin{options}
+ \kvsplit{biname}{英文目录前名字,英文目录后名字}\Module{chapter}\Default{Chapter\cs*{space}}
+ 更改英文目录 \code{chapter} 级别的标题编号前后名字,类似 C\TeX 的 \option*{name} 选项。
+ \keyval-{binmuber}{英文目录数字输出命令}\Module{chapter}\Default{\cs*{arabic}\Marg{chapter}}
+ 更改英文目录 \code{chapter} 级别的标题编号输出格式,类似 C\TeX 的 \option*{nuber} 选项。
+\end{options}
+
+\begin{commands}
+ \command{appendix}[\splitoarg{前名字,后名字}\darg{数字输出命令}]
+ \change[2021-06-13]{2021-05-05}
+ 附录开始命令,其后的章节标题变为附录形式。英文目录中附录标题的 \meta{前名字} 为英文附录目录前名字,\meta{后名字} 为英文附录目录后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文附录目录前名字。\meta{数字输出命令} 为附录标题在英文目录中的编号命令。
+ \command{BeforeAddBitoc}[\sarg\marg{加入目录英文标题前的代码}]
+ 作用于局部范围的英文目录钩子,可以插入标题或目录设置的命令改变英文目录中标题的显示格式,也可以覆盖上述的目录前后名字和编号等设置,带有星号的命令会重置之前的代码,放置在导言区或 \cs{bichapter} 等命令前生效。
+\end{commands}
+
+\subsection{上标和下标}
+上标和下标的功能来自 \pkg*{spbmark} 宏包,\cs{super}、\cs{sub} 和 \cs{supersub} 三个命令可以用于输出上标和下标。它们根据当前处于文本模式还是数学模式来匹配相应的模式,或者可以使用它们的星号变体命令来强制使用数学模式。也可以使用键值列表对偏移量进行全局设置,详情见小节 \ref{subsubsec:super-sub-script}。
+\begin{commands}
+ \command{super}[\sarg\oarg{垂直偏移}\splitoarg{高度,深度}\darg{格式代码}\marg{内容}\oarg{水平偏移}]
+ 上标命令,与简短命令 \cs{sp} 等效。水平和垂直偏移进行距离微调,可以为带有长度单位的正值或负值,为正值时代表向上或向右移动,否则相反,默认均为 \code{0pt}。\meta{格式代码} 可以插入字体或颜色等命令,代码中的最后一个命令可以接受一个为上标或下标的参数。
+ \command{sub}[\sarg\oarg{垂直偏移}\splitoarg{高度,深度}\darg{格式代码}\marg{内容}\oarg{水平偏移}]
+ 下标命令,与简短命令 \cs{sp} 等效。水平和垂直偏移为正值时代表向下或向右移动,否则相反。其它用法和参数与上标命令 \cs{super} 类似。
+ \command{supersub}[\sarg\oarg{间距}\darg{对齐方式}\marg{上标内容}\marg{下标内容}\oarg{水平偏移}\splitdarg{上标代码,下标代码}]
+ 同时输出上标和下标的命令。\meta{间距} 为上下标的垂直间距,\meta{对齐方式} 是下标的水平对齐方式,参数与 \option{supersubalign} 相同,\meta{水平偏移} 默认为 \code{0pt}。
+\end{commands}
+
+\section{接口选项}
+\label{sec:interface options}
+\begin{commands}
+ \command*{ctexset}[\marg{键值列表}]
+ \cls*{easybook} 扩展了 C\TeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs*{ctexset},接口选项同样可用它设置, 原有的 \meta{键值列表} 仍然可用。本文档类目前有九个模块用于实现常规的排版功能,如下表所示,它们既是统一接口 \cs*{ctexset} 的路径,也是相关模块的接口命令名:
+ \begin{center}
+ \begin{tabular}{*{5}{c}}
+ \toprule
+ \hyperref[subsec:style]{风格} & \hyperref[subsec:other font]{其它字体} & \hyperref[subsec:spacing]{行距} & \hyperref[subsec:hyperlinks]{超链接} & \hyperref[subsec:reference]{参考文献} \\
+ style & subfont & spread & refset & bibset \\
+ \midrule[0.6pt]
+ \hyperref[subsec:theorem of style]{定理样式} & \hyperref[subsec:page margins]{页面尺寸} & \hyperref[subsec:header and footer]{页眉页脚} & \hyperref[subsec:catalog style]{目录样式} & \\
+ thmset & geoset & hdrset & tocset & \\
+ \bottomrule
+ \end{tabular}
+ \end{center}
+\end{commands}
+
+\subsection{风格}
+\label{subsec:style}
+\begin{options}
+ \keychoice{color}{none,seaside,energy,cyberpunk}\Module{style}\Default{none}
+ \change[2021-07-03]{2021-01-05}
+ 预置了四种主题颜色,默认主题 \code{none} 为黑白页面,主题颜色不包括超链接。
+ \begin{commands}
+ \command{DeclareThemeColor}[\splitmarg{风格名称,ctex@frame,ctex@emph,ctex@verb}]
+ 可以使用 \cs{DeclareThemeColor} 命令声明新的主题颜色,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成主题颜色。类似地更改超链接颜色见小节 \ref{subsec:hyperlinks}。
+ \end{commands}
+ \keyval-{color-all}{HTML颜色代码}\Default
+ 统一设置主题的各部分颜色,参数是 6 个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
+ \keybool{multoc}\Default{false}
+ 开启多栏目录,与节 \ref{sec:document command} 中目录命令的同名选项有相同效果。
+ \keybool{withpart}\Default{false}
+ 使章跟随每一部分编号,默认不跟随。
+ \keychoice{footwith}{part,chapter,page}\Default{chapter}
+ 使脚注跟随编号的计数器,默认跟随章,当开启新的一章时脚注编号从 1 开始。
+ \keyval-{rulewidth}{线宽}\Default{0.75pt}
+ 调整页眉、定理盒子以及代码框线条的粗细。
+ \keybool{uppercase}\Default{true}
+ 使用 \cs*{rightmark} 及 \cs*{leftmark} 获取标题内容设置页眉页脚时英文是否大小写。
+ \kvsplit*{figurepath}{\meta{路径名1}\code{\}}\code{\{}\meta{路径名2}}\Default
+ 设置插入图片的文件夹路径名,可以有多个路径名,每个路径包含在括号分隔,只有一个路径时需要包含在两层括号内。
+\end{options}
+
+\subsubsection{连接符}
+\begin{options}
+ \keyval-{figure-con}{图片连接符}\Module{style}\Default{\Marg{.}}
+ \change[2021-07-02]{2021-01-05}
+ 设置图片题注编号的连接符。
+ \keyval-{table-con}{表格连接符}\Default{\Marg{.}}
+ 设置表格题注编号的连接符。
+ \keyval-{listing-con}{代码连接符}\Default{\Marg{.}}
+ 设置代码题注编号的连接符。
+ \keyval-{equation-con}{公式连接符}\Default{\Marg{.}}
+ 设置公式题注编号的连接符。
+ \keyval-{number-con}{连接符}\Default{\Marg{.}}
+ 统一设置上述所有编号的连接符。
+\end{options}
+
+\subsubsection{上下标全局设置}
+\label{subsubsec:super-sub-script}
+\begin{options}
+ \keyval-{super-vshift}{刚性长度}\Default{0pt}
+ 上标垂直偏移量,对应 \cs{super} 命令的参数 \meta{垂直偏移}。
+ \keyval-{super-hshift}{刚性长度}\Default{0pt}
+ 上标水平偏移量,对应 \cs{super} 命令的参数 \meta{水平偏移}。
+ \keyval-{sub-vshift}{刚性长度}\Default{0pt}
+ 下标垂直偏移量,对应 \cs{sub} 命令的参数 \meta{垂直偏移}。
+ \keyval-{sub-hshift}{刚性长度}\Default{0pt}
+ 下标水平偏移量,对应 \cs{sub} 命令的参数 \meta{水平偏移}。
+ \keyval-{super-format}{上标格式}\Default
+ 上标的格式,对应 \cs{super} 命令的参数 \meta{格式代码}。
+ \keyval-{sub-format}{下标格式}\Default
+ 下标的格式,对应 \cs{sub} 命令的参数 \meta{格式代码}。
+ \keyval-{supersub-hshift}{刚性长度}\Default{0pt}
+ 上下标水平偏移量,对应 \cs{supersub} 命令的参数 \meta{水平偏移}。
+ \kvsplit{supersub-format}{上标格式,下标格式}\Default
+ 上下标格式,对应 \cs{supersub} 命令的参数 \splitmeta{上标格式,下标格式}。以英文逗号分隔为前后部分,也可以只有前部分,表示上标的格式。
+ \keyval-{supersubsep}{刚性长度}\Default{0.3ex}
+ 上下标垂直间距,对应 \cs{supersub} 命令的参数 \meta{间距}。
+ \keychoice{supersubalign}{l,c,r}\Default{l}
+ 上下标的水平对齐方式,有左对齐、居中对齐和右对齐三种 \meta{对齐方式}。
+\end{options}
+
+\subsection{超链接}
+\label{subsec:hyperlinks}
+\module*{refset} 将超链接选项(包括以上选项)交给 \pkg*{hyperref} 处理,除了一些关于 pdf 书签的选项可能会失效,其它由键值选项命令 \cs*{hypersetup} 支持的多数选项可用。
+\begin{options}
+ \keychoice{linktype}{edge,colors,none}\Module{refset}\Default{edge}
+ \change[2021-07-03]{2021-01-05}
+ 使超链接为边框形式,\option{various} 使超链接变为彩色,预置了四种颜色样式。\code{none} 关闭超链接边框与颜色,此时 \option{linkcolor} 选项无效。
+ \keychoice{linkcolor}{fresh,cutepink,navyblue,crimson}\Default{navyblue}
+ 超链接颜色样式,预置了四种超链接颜色风格。
+ \begin{commands}
+ \command{DeclareLinkColor}[\splitmarg{风格名称,ctex@link,ctex@url,ctex@cite}]
+ 可以使用 \cs{DeclareLinkColor} 命令声明新的超链接颜色样式,它的参数以英文逗号分隔,第一部分为颜色风格名称,后面三部分为 HTML 颜色代码,构成超链接颜色。
+ \end{commands}
+ \keyval-{linkcol-all}{HTML颜色代码}\Default
+ 统一设置超链接的各部分颜色,参数是 6 个十六进制数字组成的 HTML 颜色代码,任意颜色的代码可以在常见的图片处理工具拾色器中查看。
+ \keychoice{linktoc}{none,section,page,all}\Default{all}
+ 将目录中的超链接取消、置于标题上、置于页码上或置于标题和页码上。
+\end{options}
+
+\subsection{行距}
+\label{subsec:spacing}
+行距因子用于设置各种行距倍数,只能是浮点数,不能带有长度单位。各行距既可在导言区全局设置也可正文中设置对后面生效。
+\begin{options}
+ \keyval-{line}{数值}\Module{spread}\Default{1.3}
+ \change[2021-05-17]{2021-01-05}
+ 正文行距,C\TeX 原有的行距选项 \option*{linespread} 失效。
+ \keyval-{table}{数值}\Default{1.05}
+ 表格行距,对传统表格环境 \env*{tabular}、\env*{tabularx} 以及 \pkg*{tabularray} 宏包的 \env{tblr} 环境生效,同时 \env{tblr} 也自带有 \option*{stretch} 选项设置行距。
+ \keyval-{math}{数值}\Default{1.05}
+ 数学环境行距,包括 \pkg*{amsmath} 和 \pkg*{mathtools} 宏包附带的环境,但并未加载 \pkg*{mathtools} 宏包。
+ \keyval-{caption}{数值}\Default{1.1}
+ 图片、表格和代码题注的行距。
+ \keyval-{footnote}{数值}\Default{1.1}
+ 脚注整体内容的行距,可以使用 \option{fntext-form} 的代码覆盖每个脚注单独的行距,从而与不同脚注的段落间距不同。
+ \begin{ctexexam}
+ \spread{footnote = 1.3}
+ \hdrset{fntext-form = \linespread{1.2}\selectfont}
+ \end{ctexexam}
+ \keyval-{spread-all}{数值}\Default
+ 统一设置上述各种行距。
+\end{options}
+
+\subsection{其它字体}
+\label{subsec:other font}
+\begin{options}
+ \keyval-{table-cap}{字体命令}\Module{subfont}\Default{\cs*{sffamily}\cs*{small}}
+ \change[2021-05-19]{2021-01-08}
+ 表格标题的字体设置,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval-{figure-cap}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
+ 图片标题的字体设置,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval-{listing-cap}{字体命令}\Default{\cs*{sffamily}\cs*{small}}
+ 代码标题的字体设置,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval-{footnote}{字体命令}\Default{\cs*{rmfamily}}
+ 设置脚注标记与内容的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval-{marginpar}{字体命令}\Default{\cs*{rmfamily}\cs*{footnotesize}}
+ 边注的字体设置,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keychoice{math}{times,noto,notosans,nc,stix,charter,garamond,libertine,none}\Default{times}
+ 选择合适的数学字体,将会加载 \pkg*{newtxmath} 和 \pkg*{bm} 宏包。使用选项 \code{none} 时可以使用 \pkg*{unicode-math} 等其它数学字体宏包定义字体。
+\end{options}
+
+\subsection{参考文献}
+\label{subsec:reference}
+\begin{options}
+ \keychoice{backend}{bibtex,biblatex}\Module{bibset}\Default{bibtex}
+ \change[2021-06-13]{2021-01-11}
+ 参考文献处理后端,默认用传统的 \hologo{BibTeX} 处理参考文献\footnote{使用 \hologo{BibTeX} 引擎时加载 \pkg*{natbib} 宏包,使用 \hologo{biber} 时将加载 \pkg*{biblatex} 宏包。}。
+ \keychoice{bib-style}{numerical,authoryear,其它格式}\Default{numerical}
+ 参考文献格式为中国的参考文献推荐标准 GB/T 7714-2015,有顺序编码制和著者-出版年制两种风格,理工科类一般使用顺序编码制,文科类一般使用著者-出版年制。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \code{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg*{biblatex} 宏包支持的参考文献风格名称。
+ \keyval-{cite-style}{标注风格}\Default
+ 标注参考文献的风格,选项 \keyis-{backend}{bibtex} 下可使用 \option{super}(数字上标标注,默认)或 \option{numbers}(数字标注)等 \pkg*{natbib} 宏包带有的标注风格,选项 \keyis-{backend}{biblatex} 下可使用 \pkg*{biblatex} 宏包支持的标注风格名称。
+ \keyval-{datafile}{参考文献数据库名}\Default
+ 参考文献数据库的文件名,可以是单个文件也可以是以括号包裹并以英文逗号分隔的文件列表,使用 \hologo{biber} 处理时要带有 \code{bib} 后缀,若不在当前文件夹名称需要包含路径。不设置参考文献数据库名时 \module*{bibset} 中的选项会失效,即不自动载入 \pkg*{natbib} 或 \pkg*{biblatex} 宏包,此时需要手动载入相关宏包配置参考文献。
+\end{options}
+
+\subsubsection{配置参考文献}
+\begin{commands}
+ \command{printbibliography}[\oarg{键值列表}]
+ \change[2021-04-09]{2021-01-11}
+ 两种方式\textbf{均使用}此命令打印参考文献,不同处理后端此命令的 \meta{键值列表} 不同。使用 \hologo{BibTeX} 处理时选项与节 \ref{sec:document command} 目录的选项相同,使用 \hologo{biber} 处理时常用的选项如下:
+\end{commands}
+
+\begin{options}
+ \keychoice*{heading}{bibliography,subbibliography,bibintoc,subbibintoc}\Default{bibintoc}
+ 参考文献通常有一个章标题或者节标题,该选项选择由 \cs*{defbibheading} 定义的标题名。
+ \keyval*-{title}{参考文献标题名}\Default
+ 如果标题定义支持的话,该选项覆盖由 \option*{heading} 选项提供的缺省标题名。
+ \keyval*-{prenote}{参考文献前注}\Default
+ 该选项选择由 \cs*{defbibnote} 所定义的前注,缺省状态下不打印任何前注。
+ \keyval*-{section}{整数}\Default{0}
+ 只打印在指定文节中引用的条目。该参考文献节从 1 开始编号,所有在 \env*{refsection} 环境外给出的引用标记为第零节。
+ \keyval*-{type}{条目类型}\Default
+ 指定条目的打印类型。
+ \keyval*-{filter}{过滤器名}\Default
+ 使用由 \cs*{defbibfilter} 定义的 \option*{filter} 来过滤条目。
+\end{options}
+
+可能一些情况下您希望更加灵活地设置参考文献或有更多需求,下面举一个在导言区手动配置 \pkg*{biblatex} 宏包的例子:
+\begin{ctexexam}
+ \usepackage[style = numeric]{biblatex}
+ \addbibresource{myrefs.bib}
+ \defbibheading{bibliography}[参考文献] % 定义参考文献标题
+ {\chapter*{#1}\markboth{#1}{#1}}
+\end{ctexexam}
+
+\subsection{定理样式}
+\label{subsec:theorem of style}
+\begin{options}
+ \keybool{thmbox}\Module{thmset}\Default{false}
+ \change[2021-07-01]{2021-01-12}
+ 开启定理环境盒子的边框,需载入 \pkg*{tcolorbox} 宏包才生效。这个选项与 \pkg*{thmtools} 中并不一致,\pkg*{thmtools} 的同名选项包括 \code{L}、\code{M} 和 \code{S} 三个参数。
+ \keychoice{within}{chapter,section,其它环境,空置}\Default{chapter}
+ 定理编号跟随的计数器,默认跟随章的编号,也可以跟随其它定理环境的编号,当计数器增加时定理编号会从零开始,空置时不跟随其它计数器。
+ \keyval-{headpunct}{字体命令}\Default{false}
+ 定理标题末尾后的标记,在换行符或第一段内容的间隔之前。
+ \keyval-{bodyfont}{字体命令}\Default{chapter}
+ 定理内容部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval-{notefont}{字体命令}\Default
+ 定理题注部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keychoice{headfont}{字体命令}\Default
+ 定理标题部分的字体,包括字体族、字体系列、字体尺寸和字体形状命令。
+ \keyval-{headindent}{刚性长度}\Default{0em}
+ 定理标题的缩进,默认无缩进,可用 \cs*{parindent} 命令设置为段落缩进。
+ \keyval-{spaceabove}{弹性长度}\Default{0.75ex plus .1ex}
+ 定理环境前的间距,使用 \pkg*{tcolorbox} 的环境包装后被覆盖。
+ \keyval-{spacebelow}{弹性长度}\Default{0.75ex plus .1ex}
+ 定理环境后的间距,使用 \pkg*{tcolorbox} 的环境包装后被覆盖。
+ \keyval-{spacepost}{刚性长度}\Default{1em}
+ 定理标题后与第一段内容的间距。
+ \keyval-{headformat}{标题格式}\Default{\cs*{NAME}\cs*{space}\cs*{NUMBER}\cs*{NOTE}}
+ 定理开头部分各组成元素的排列和格式,这个选项一般不需要使用,其中 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表标题、编号和题注。
+ \kvsplit{brackets}{左括号,右括号}\Default{\Marg{(,)}}
+ 设置行间公式编号标签的括号,以英文逗号分隔,分别为左右括号。
+\end{options}
+
+\subsubsection{新建定理样式}
+文档类已预置 8 个定理环境,环境名及对应的定理标题名见小节 \ref{subsec:theorem},如果需要新的定理标题名或定理样式可使用这三个命令,由 \pkg*{thmtools} 提供支持。
+\begin{commands}
+ \command{declaretheorem}[\oarg{键值列表1}\marg{定理环境名}\oarg{键值列表2}]
+ \change[2021-07-13]{2021-01-12}
+ 定义新的定理类环境,\cs{newtheorem} 命令与它等效。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与它们的同名命令一致。\meta{键值列表} 中常用的选项如下:
+ \begin{options}
+ \keyval*-{name}{定理环境标题}
+ 定理标题的默认值是环境的名称,并且首字母大写(英文标题)。
+ \keychoice*{numbered}{no,yes,unless unique}
+ 定理可以被编号、不被编号或者只有在文档中多次出现时才被编号。
+ \keyval*-{numberlike}{定理环境名}
+ 定理将使用此计数器进行编号,通常这是另一个定理环境的名称。
+ \keyval*-{style}{定理样式名}
+ 用 \cs{declaretheoremstyle} 定义的定理样式的名称,定理将使用这种样式的设置。
+ \end{options}
+ \command{DeclareTheorem}[\marg{定理环境名}\oarg{英文标题}\marg{中文标题}\darg{盒子样式}\oarg{键值列表}]
+ \cs{DeclareTheorem} 是更便捷的定理命令,它定义一个新的定理环境,与 \cs{declaretheorem} 命令 \meta{键值列表} 支持的选项相同,但它们的区别有:
+ \begin{itemize}
+ \item 中英文模式下标题不同,英文标题为可选项,默认为首字母大写的环境名。
+ \item 自动定义交叉引用的格式,引用标签前缀为定理名称。
+ \item 定理盒子选项 \option{thmbox} 仍然生效,盒子样式选项是用于设置定理盒子样式的名称,它需要 \pkg*{tcolorbox} 的 \cs*{tcbset} 接口命令或 \cs{tcbappstyle} 设定,默认为 \code{tc-theorem}。
+ \item 默认使用 \code{easy-theorem} 定理样式,可在最后一个选项使用 \option*{style} 更改样式。
+ \end{itemize}
+ \command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式名}\oarg{键值列表2}]
+ 定义新的定理样式,\meta{键值列表} 中包括上述定理样式以及 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与它们的同名命令一致。
+\end{commands}
+
+下面简单列举定理命令的用法,预置定理的样式为 \code{easy-theorem},上述定理样式选项将对这个定理样式生效。如果使用这个样式而只是增加新的定理名称,可以这样:
+\begin{ctexexam}
+ \DeclareTheorem{定理环境名}{中文标题}[style = easy-theorem]
+ \declaretheorem[style = easy-theorem,name = 定理名]{定理环境名}
+\end{ctexexam}
+
+\cs{declaretheorem} 定义的定理环境需要手动增加盒子边框:
+\begin{ctexexam}
+ \tcolorboxenvironment{定理环境名}{tc-theorem}
+\end{ctexexam}
+
+使用 \cs{tcbappstyle} 命令调整开启定理盒子时默认的样式,第一个参数为 \code{theorem},关于命令的介绍在小节 \ref{subsec:box}。
+\begin{ctexexam}
+ \tcbappstyle{theorem}{colback = GreenYellow}
+\end{ctexexam}
+
+定义一个新的定理样式可用于 \cs{declaretheorem} 的 \option*{style} 选项:
+\begin{ctexexam}
+ \declaretheoremstyle[bodyfont = \rmfamily,spacepost = 0.5em]{定理样式名}
+\end{ctexexam}
+
+\subsection{页面尺寸}
+\label{subsec:page margins}
+预置的页面尺寸与 \cls*{Word} 的默认值接近,\module*{geoset} 会将前两个之外的选项交给 \pkg*{geometry} 宏包接口命令 \cs*{geometry} 处理,并且 \meta{键值列表} 的选项与之相同,上面的选项仅是一小部分,支持的参数可查阅宏包帮助文档。当在此设置页面大小时,会覆盖 \option{paper} 选项的设置。
+\begin{options}\noitemsep
+ \keyval-{headruleskip}{页眉线间距}\Module{geoset}\Default*
+ \keyval-{footruleskip}{页脚线间距}\Default*
+ \change[2021-06-02]{2021-01-13}
+ \keyval*-{left}{页面左边距}\Default*{3.17cm}
+ \keyval*-{top}{页面上边距}\Default*{2.54cm}
+ \keyval*-{hmargin}{左边距,右边距}\Default*
+ \keyval*-{textwidth}{页面文本区宽度}\Default*
+ \keybool*{includehead}\Default*{false}
+ \begin{ctexexam}
+ \geoset
+ {
+ headruleskip = 3pt,
+ top = 2.5cm,
+ bottom = 2.5cm,
+ left = 3.2cm,
+ right = 3.2cm,
+ ignoreall
+ }
+ \end{ctexexam}
+\end{options}
+
+\subsection{页眉页脚}
+\label{subsec:header and footer}
+\module*{hdrset} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。在 \cls*{book} 模式时使用章节页眉标志内容选项 \option{chap-mark} 和 \option{sec-mark},在 \cls*{article} 模式时使用 \option{sec-mark} 和 \option{subsec-mark} 选项,这与标准文档类的行为一致,标志内容中参数 \code{\#1} 代表当前章、节或小节的标题。也可以直接重新定义这些标志命令,但此时 \module*{style/}\option{uppercase} 选项失效,这时可以用例如 \cs*{MakeUppercase} 命令来设置标志内容的大小写。
+\begin{options}
+ \keyval-{head-foot}{页眉页脚代码}\Module{hdrset}
+ \change[2021-06-14]{2021-01-13}
+ 设置页眉页脚的格式,使用 \pkg*{fancyhdr} 支持的 \cs*{fancyhead} 和 \cs*{fancyhead} 等命令,或在正文中使用这些命令改变其后的页面风格。
+ \keyval-{chap-mark}{标题标记}
+ \cs*{chaptermark} 标题标记命令的内容,包括了标签选项 \option{chap-label} 的内容。
+ \keyval-{sec-mark}{标题标记}
+ \cs*{sectionmark} 标题标记命令的内容,包括了标签选项 \option{sec-label} 的内容。
+ \keyval-{subsec-mark}{标题标记}
+ \cs*{subsectionmark} 标题标记命令的内容,包括了标签选项 \option{subsec-label} 的内容。
+ \kvsplit-{chap-label}{\oarg{编号}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
+ \cs*{chaptermark} 标题标记命令内容的标签,比标记命令内容选项更常用,可选参数是页眉的标题编号形式,必选参数是编号与标题之间的距离命令:
+ \begin{ctexexam}
+ \hdrset
+ {
+ chap-label = [\thechapter]{\hspace{1em}},
+ sec-mark = C\TeXifname{C\TeXthesection——}{}#1
+ }
+ \end{ctexexam}
+ \kvsplit-{sec-label}{\oarg{编号}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
+ \cs*{sectionmark} 标题标记命令内容的标签,用法与 \option{chap-label} 类似。
+ \kvsplit-{subsec-label}{\oarg{编号}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}}
+ \cs*{subsectionmark} 标题标记命令内容的标签,用法与 \option{chap-label} 类似。
+ \keyval-{headrule}{横线命令}
+ 绘制页眉横线的选项,可以使用 \cs*{hrule}、\cs*{rule} 或下述 \cs{markrule} 等画线命令来绘制横线。手动绘制横线时线条粗细选项 \code{style/rulewidth} 会失效。
+ \keyval-{footrule}{横线命令}\Default
+ 绘制页脚横线的选项,可以使用 \cs*{hrule}、\cs*{rule} 或下述 \cs{markrule} 等画线命令来绘制横线。
+ \keyval-{footnoterule}{横线命令}
+ 绘制脚注横线的选项,可以使用 \cs*{hrule}、\cs*{rule} 或下述 \cs{markrule} 等画线命令来绘制横线。
+\end{options}
+
+\begin{commands}\noitemsep
+ \command{easyhead}[\oarg{位置}\marg{内容}]\default{}
+ \change[2021-07-25]{2021-01-13}
+ \command{easyfoot}[\oarg{位置}\marg{内容}]
+ 命令 \cs{easyhead} 和 \cs{easyfoot} 的使用方法与 \cs{fancyhead} 和 \cs{fancyfoot} 完全相同,它们需要在 \option{head-foot} 选项中使用,设置的是一个名为 \code{fancy} 的页面风格。\pkg*{fancyhdr} 将页眉页脚分成了左中右和奇数页(odd)、偶数页(even)共 12 个部分,可选参数中 \code{E} 和 \code{O} 代表偶数和奇数,\code{L}、\code{C} 和 \code{R} 代表左、中和右部分。单面打印时,含有偶数位置的命令无效。
+\end{commands}
+
+\begin{commands}\noitemsep
+ \command*{markboth}[\marg{左页页眉内容}\marg{右页页眉内容}]\default{}
+ \command*{markright}[\marg{右页页眉内容}]
+ \cs*{markboth} 和 \cs*{markright} 这两个命令用于手动设置页眉内容,一般紧随标题命令,特殊情况下可以使用它们得到需要的页眉标志。上述标志命令内容的选项便是基于这两个命令。如果是单面排版,则 \meta{左页页眉内容} 无效。
+\end{commands}
+
+\begin{commands}
+ \command{markrule}[\oarg{长度}\darg{颜色名}\marg{线宽}\spemcoarg{上间距,下间距}]
+ 命令 \cs{markrule} 用于绘制页眉页脚横线,\meta{长度} 默认为页面文本区的宽度,上下间距为横线与上下方部件的间距,带有长度单位,间距长度之间用 \code{!} 号分开,若只有一部分则表示 \meta{上间距},这个命令也可以在正文中绘制横线。下面举一个设置页眉内容的例子:
+ \begin{ctexexam}
+ \hdrset
+ {
+ head-foot =
+ {
+ \easyhead[ER]{\leftmark}
+ \easyhead[OL]{\rightmark}
+ \easyhead[EL,OR]{\textbf{\thepage}}
+ },
+ headrule = \markrule(Darkcnltxblue){0.5pt}[2pt!2pt]
+ }
+ \end{ctexexam}
+\end{commands}
+
+\subsubsection{脚注格式}
+\begin{options}
+ \keyval-{fnmargin}{刚性长度}\Module{hdrset}\Default{0.75em}
+ \change[2021-07-14]{2021-05-12}\
+ 脚注首段缩进距离,等于长度 \cs{footnoteindent} 的值.
+ \keyval-{fnparskip}{弹性长度}\Default{0ex}
+ 脚注段落间距,等于长度 \cs{footparskip} 的值。
+ \keyval-{fnparindent}{刚性长度}\Default{2em}
+ 脚注段落缩进,等于长度 \cs{footparindent} 的值。
+ \keychoice{footnotetype}{hang,default,bottom}\Default{hang}
+ 脚注的类型,悬挂缩进 \code{hang} 是默认值,\code{default} 是原始的类型,在一些浮动体排版的情况下,脚注可能位于页面中间,\code{bottom} 使脚注始终位于页面底端。这是个复合选项,\option{bottom} 可以与前两种类型重复或复合使用:
+ \begin{ctexexam}
+ \hdrset{footnotetype = default,footnotetype = bottom}
+ \hdrset{footnotetype = {hang,bottom}}
+ \end{ctexexam}
+ \keychoice{fnmark-pos}{normal,super}\Default{super}
+ 设置脚注编号的位置,正常文本或是上标形式。
+ \keychoice{fnmark-num}{plain,pifont,pifont*,pifont-sans,pifont-sans*}\Default{plain}
+ 脚注编号的格式,默认为原生样式 \code{plain},还可以改为 \code{pifont} 的各个版本,从左往右依次为普通版、阴文衬线版、阳文无衬线版和阴文无衬线版,缺点是它们的编号仅包括 1-10。
+ \keyval-{fnmark-form}{格式代码}\Default{格式代码}
+ 脚注标记的格式,在此设置字体命令会覆盖 \module*{subfont/}\option{footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注标记,一般配合 \keyis-{fnmark-num}{plain} 使用。
+ \keyval-{fntext-form}{格式代码}\Default{格式代码}
+ 脚注内容的格式,在此设置字体命令会覆盖 \module*{subfont/}\option{footnote} 的设置,最后一个格式命令可以带有一个参数,这个参数接受脚注内容。
+ \keyval-{afterfnmark}{格式代码}\Default{格式代码}
+ 脚注标记后的代码,由于脚注标记处于水平盒子中,它一般用于设置标记与文本间的距离。
+\end{options}
+
+\subsection{目录样式}
+\label{subsec:catalog style}
+\module*{tocset} 将目录样式交给 \pkg*{titletoc} 处理,\code{level} 代表 \code{part}、\code{chapter}、\code{section}、\code{subsection}、\code{figure}、\code{table} 和 \code{lstlisting} 级别的目录,而使用 \code{list} 级别可以统一设置图片、表格和代码目录的样式。
+\begin{options}
+ \keyval-{format}{目录标题格式}\Module{/(level)}
+ \change[2021-05-14]{2021-01-13}
+ 目录中标题的格式,可以设置字体和加入垂直间距等,垂直间距最好使用无间距重合的 \cs*{addvspace} 命令。
+ \keyval-{format+}{目录标题格式}
+ 与 \option{format} 用法一样,在已有的格式命令后附加内容。
+ \keyval-{indent}{刚性长度}
+ 目录中的标题左边缩进距离,通常标题级别越低缩进越大。
+ \keyval-{rule}{目录引导线样式}
+ \option{rule} 选项中一般应当使用 \cs{tocrule} 命令,将会在接下来介绍。
+ \keyval-{numsep}{刚性长度}\Default{1em}
+ 有编号的标题在目录中编号与标题的间距,默认距离统一为 \code{1em}。
+\end{options}
+
+\begin{commands}
+ \command{tocrule}[\sarg\oarg{引导点间距}\parg{引导点大小}\marg{引导点}\oarg{页码格式}]
+ \change[2021-06-11]{2021-01-13}
+ \cs{tocrule} 命令生成目录引导线,需要在 \option{rule} 选项中使用。带有星号的命令会使当前级别的目录引导线右边与页码连接而不是对齐。引导点间距需带有长度单位,引导点大小不带单位,为引导点符号正常大小的倍数,引导点一般为英文句号或 \cs*{cdot} 中心点符号。页码格式的内容位于页码前面,可以设置页码字体和距离等,最后一个格式命令可以带有一个参数,这个参数接受页码编号。
+ \command*{CTEXnumberline}[\marg{编号级别}]
+ \cs*{CTEXnumberline} 命令用于在 C\TeX 文档类的 \option*{tocline} 选项中设置目录标签的编号,它已经被重新定义,使得目录编号后间距选项 \option{numsep} 仍然有效。\meta{编号级别} 为 \code{chapter} 和 \code{section} 等,也可用参数 \code{\#1} 代替当前级别类型,标题名用参数 \code{\#2} 代替一般不变。
+ \begin{ctexexam}
+ \tocset
+ {
+ chapter =
+ {
+ format = \addvspace{8pt}\large,
+ indent = 1.5em,
+ rule = \tocrule[0.6pc](1.1){.}[\zihao{5}]
+ }
+ }
+ \end{ctexexam}
+\end{commands}
+
+\begin{options}
+ \keyval-{belowoffset}{长度}\Module{tocset}\Default{-1pc}
+ 主文档目录标题下方的间距补偿,一般为负值,用于抵消 \option{format} 中额外的垂直间距。
+ \keyval-{belowoffset}{长度}\Module{/(level)}\Default{0pc}
+ 与之上面选项的意义类似,代表 \code{figure}、\code{table} 和 \code{lstlisting} 三个级别,也可以使用 \code{list} 统一设置,一般为正值。
+ \keyval-{lolskip}{长度}\Module{tocset}\Default{0.8pc}
+ \change[2021-05-14]{2021-01-13}
+ 代码目录中章之间的代码标题的距离,与 C\TeX 的表格目录和图片目录中章之间的标题距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,它们的值均默认为 \code{0.8pc},在 \cls*{article} 模式中此选项失效。
+ \keyval-{tocline-fig}{图片目录标签}
+ 图片目录标签,选项参数中 \code{\#1} 代表编号,还可包含标签名称,默认标签名称与图片题注名称一致。
+ \keyval-{tocline-tab}{表格目录标签}
+ 表格目录标签,选项参数中 \code{\#1} 代表编号,还可包含标签名称,默认标签名称与表格题注名称一致。
+ \keyval-{tocline-lst}{代码目录标签}
+ 代码目录标签,选项参数中 \cs*{thelstlisting} 代表编号,还可包含标签名称,默认标签名称与代码题注名称一致。
+ \begin{ctexexam}
+ \tocset
+ {
+ hang = false,
+ tocline-fig = 图 #1\hspace{1em},
+ tocline-lst = 代码\thelstlisting\hspace{1em}
+ }
+ \end{ctexexam}
+ \keybool{line-align}\Default{true}
+ \option{line-align} 选项可以使目录引导线右边对齐并与页码保持一定间隙,否则会与页码连接。
+ \keybool{hang}\Default{false}
+ \option{hang} 选项使目录标题为悬挂缩进形式,缩进距离为编号及其与标题间距的长度,但此时目录编号会失去超链接。
+ \keyval-{numsep-all}{刚性长度}\Default{1em}
+ 统一设置所有有编号的标题在目录中编号与标题的间距。
+ \keyval-{indent-all}{刚性长度}
+ 统一设置所有级别的目录标题左边缩进。
+ \keyval-{rule-all}{目录引导线样式}
+ 统一设置所有级别的目录引导线样式。
+\end{options}
+
+\section{常用环境}
+
+\subsection{公式}
+\begin{environments}\noitemsep
+ \environment*{equation}\default{}
+ \environment*{multline}\default{}
+ \environment*{gather}\default{}
+ \environment*{align}
+ \pkg*{amsmath} 宏包提供了一系列行间数学环境,它们可以排布各种对齐或不对齐的公式组。\env*{multline} 环境用于一行无法放下的长公式,\env*{gather} 环境用于每行居中的公式组,\env*{align} 环境用于多列对齐的公式组。
+\end{environments}
+
+\subsection{表格}
+\begin{environments}\noitemsep
+ \environment*{tabularx}[\marg{长度}\marg{列格式}]\default{}
+ \environment*{tabular}[\marg{列格式}]\default{}
+ \environment{tblr}[\marg{键值列表}]
+ \pkg*{tabularray} 是一个较新的宏包,不仅提供了 \pkg*{tabularx}、\pkg*{multirow}、和 \pkg*{booktabs} 宏包的功能,并且不依赖其它宏包与它们同时使用不会产生冲突,还实现了用简便的键值列表方式设置表格样式。具体用法可见宏包的说明文档,下面演示一个 \env{tblr} 表格的用法:
+ \begin{ctexexam}
+ \begin{tblr}
+ {
+ colspec = {X[2,l]XX[LimeGreen]X},
+ rowspec = {Q[t]Q[m]Q[b,Magenta]Q[t]Q[m]Q[b]},
+ hline{1,6} = {1pt,solid},
+ hline{3-5} = {LightBlue,dashed},
+ vline{1,5} = {3-4}{dotted},
+ rows = {1cm,abovesep = 2pt}
+ }
+ Alpha & Beta & Gamma & Delta \\
+ Epsilon & Zeta & Eta & Theta \\
+ Iota & Kappa & \SetCell[r=2]{h,c,Cyan}Lambda & Mu \\
+ Nu & Xi & Omicron & Pi \\
+ Rho & Sigma & Tau & Upsilon
+ \end{tblr}
+ \end{ctexexam}
+\end{environments}
+
+\subsection{列表}
+\pkg*{enumitem} 宏包为系统预置的三种列表环境即排序列表 \env{enumerate}、常规列表 \env{itemize} 和 主题列表 \env{description} 提供了更灵活的标签以及间距的控制,可使用 \cs*{setlist} 命令设置三种列表格式,或者直接使用可选参数的 \meta{键值列表},具体选项见 \pkg*{enumitem} 宏包文档。
+\begin{environments}\noitemsep
+ \environment*{enumerate}[\oarg{键值列表}]\default{}
+ \environment*{itemize}[\oarg{键值列表}]\default{}
+ \environment*{description}[\oarg{键值列表}]
+ 已为三种列表预置了三个级别,同种列表或不同种列表间的不同级别可相互嵌套,可以使用短编号的形式,带有星号的环境为行内列表。默认列表标签与标准文档类一致,下面举几个更改列表标签以及其它格式的例子:
+ \begin{ctexexam}
+ \setlist{nosep} % 取消所有列表额外的垂直间距
+ \begin{enumerate}[label = \arabic*(a),leftmargin = 1cm,resume]
+ \begin{itemize}[label = \textbullet]
+ \begin{description}[font = \sffamily\bfseries,style = nextline]
+ \end{ctexexam}
+\end{environments}
+
+\subsection{定理}
+\label{subsec:theorem}
+\begin{environments}\noitemsep
+ \environment{theorem}\default{}
+ \environment{definition}\default{}
+ \environment{lemma}\default{}
+ \environment{corollary}\default{}
+ \environment{proposition}\default{}
+ \environment{example}\default{}
+ \environment{remark}\default{}
+ \environment{proof}
+ 这些是预置的定理环境,可使用选项 \module*{thmset/}\option{thmbox} 为它们添加盒子边框,其中注与证明环境不编号,证明末尾会自动添加证明结束符,声明新的定理环境或更改边框样式见小节 \ref{subsec:theorem of style}。环境名与之对应的定理标题名如下:
+ \begin{center}
+ \begin{tabular}{*{8}{c}}
+ \toprule
+ theorem & definition & lemma & corollary & proposition & example & remark & proof \\
+ 定理 & 定义 & 引理 & 推论& 性质 & 例 & 注 & 证明 \\
+ \bottomrule
+ \end{tabular}
+ \end{center}
+\end{environments}
+
+\subsection{悬挂缩进}
+\change{2021-07-11}
+\begin{commands}
+ \command{hangpara}[\marg{缩进长度}\marg{缩进开始行数}]
+ 悬挂缩进命令 \cs{hangpara} 使其后的一个段落保持悬挂缩进,参数与 \env{hangparas} 环境相同,不过只有一个段落。
+\end{commands}
+\begin{environments}
+ \environment{hangparas}[\marg{缩进长度}\marg{缩进开始行数}]
+ 悬挂缩进环境 \env{hangparas} 有两个必选参数,使其中的段落均保持悬挂缩进。每个段落的缩进将以 \meta{缩进长度} 从 \meta{缩进开始行数} 开始。
+\end{environments}
+
+\subsection{代码}
+\pkg*{listings} 宏包提供了大量选项对代码格式进行高度定制,代码格式可使用 \cs*{lstset} 命令全局设置,预置的代码风格 \option*{style} 为 \code{easy-listings}。
+\begin{commands}
+ \command{lstinline}[\oarg{键值列表}\marg{行内代码}]
+ 行内代码抄录命令,较 \cs*{verb} 命令有较大改进,具有代码语言和样式支持。
+\end{commands}
+\begin{environments}
+ \environment{lstlisting}[\oarg{键值列表}]
+ 行间代码抄录环境,支持多种语言库,默认使用 \code{LaTeX} 代码语言,使用可选参数局部设置代码格式。
+\end{environments}
+\begin{options}\noitemsep
+ \keyval-{lstlistlistingname}{代码目录标题名}\default{}
+ \keyval-{lstlistingname}{代码题注标题名}
+ \option*{lstlistlistingname} 和 \option*{lstlistingname} 分别是代码目录名与代码环境题注名,与 C\TeX 使用手册标题汉化一节类似,可使用 \cs*{ctexset} 接口命令直接修改。
+\end{options}
+
+\subsection{习题}
+\label{subsec:exercise}
+\begin{environments}
+ \environment{exercise}[\sarg\parg\oarg{键值列表1}\darg{键值列表2}\oarg{键值列表3}]
+ \change[2021-07-25]{2021-01-05}
+ 习题环境的标题使用 \cs*{tcbox} 行内盒子包装样式,内容则使用 \env{enumerate} 列表环境。它有 5 个可选参数,应当注意用法。当使用星号参数时标题不进行编号,使用 \parg{} 号参数时不使用预置标题,此时 \meta{键值列表1} 除了 \option{label} 选项失效。\par
+
+ \meta{键值列表2} 包括 \pkg*{tcolorbox} 的盒子样式选项,例如 \option*{boxsep} 和 \option*{fontupper} 等,也可以使用下述 \option{tcolorbox} 选项。在这里可以使用 \cs{tcbappstyle} 命令设置标题选项 \meta{键值列表2} 的值,第一个参数为 \code{exercise}。
+ \begin{ctexexam}
+ \tcphantomifname{\markright{\UseCounter{tcbcounter}{\quad 习题}}}{}
+ \tcbappstyle{exercise}{boxsep = 5pt}
+ \exerprologue{习题前的一段文本}
+ \begin{exercise}+[color = LightSkyBlue](after skip = 2pc)[itemsep = 1ex]
+ \item 第一题
+ \item 第二题
+ \end{exercise}
+ \end{ctexexam}
+\end{environments}
+
+\begin{commands}
+ \command{setexercise}[\marg{键值列表1}]
+ \cs{setexercise} 命令用于全局设置上述习题环境 \env{exercise} 标题样式可选参数中 \meta{键值列表1} 的默认值,包含的选项如下:
+ \begin{options}
+ \keyval-{color}{标题背景颜色名}\Default{DeepSkyBlue}
+ 习题标题盒子背景颜色,可以使用 \pkg*{xcolor} 自定义颜色或使用色库。
+ \keyval-{title}{环境标题}\Default{习题}
+ 习题的标题,可以匹配中英文模式,习题环境使用 \parg{} 参数时无效。
+ \keyval-{number}{习题编号格式}\Default{\Marg{1.}}
+ 标题编号输出选项 \option{number} 为短编号形式,应当包含 A、a、I、i、或 1 其中一个符号。
+ \keyval-{numsep}{编号与标题的间距}\Default{0.5em}
+ 习题标题编号与后方标题文本的间距,习题环境使用星号参数时无效。
+ \keyval-{tcolorbox}{键值列表2}
+ 局部传递 \pkg*{tcolorbox} 宏包的格式选项给习题标题(如果存在)。
+ \keyval-{enumitem}{键值列表3}
+ 局部传递 \pkg*{enumitem} 宏包的格式选项给习题条目列表。
+ \keyval-{label}{标签内容}
+ 设置习题环境的引用标签,它与标签格式命令 \cs{labelformat} 对应的计数器是 \code{eb@exercise}。
+ \end{options}
+ \command{setexerlist}[\marg{键值列表3}]
+ \meta{键值列表3} 的选项与 \pkg*{enumitem} 的排序列表相同,也可以使用下述 \option{enumitem} 选项,不过第一个选项无法是短编号形式,这被 \option{number} 选项代替。
+ \cs{setexerlist} 命令用于设置习题条目选项 \meta{键值列表3} 的值。
+ \command{exerprologue}[\marg{序言内容}]
+ 序言命令 \cs{exerprologue} 在习题环境开始前插入一段内容,可以是文本或者代码,需要在每一个习题环境前使用。
+ \command{tcphantomifname}[\marg{编号代码}\marg{不编号代码}]
+ \cs{tcphantomifname} 根据使用 \pkg*{tcolorbox} 生成的习题标题是否编号,在超链接锚点的位置加入代码,比如使用 \cs*{addcontentsline} 命令将习题标题加入目录。
+\end{commands}
+
+\subsection{盒子}
+\label{subsec:box}
+使用盒子以及小节 \ref{subsec:exercise} 中的 \env{exercise} 环境需要在导言区\textbf{手动载入} \pkg*{tcolorbox} 宏包,它们 \meta{配置选项} 的键值列表同样由 \pkg*{tcolorbox} 提供支持,具体选项可见宏包文档的 Option Keys 一节,可以进行边距、字体及背景颜色等各种个性化设置,一些配置会覆盖预设。
+
+\begin{commands}
+ \command{tcbappstyle}[\sarg\marg{风格名称}\marg{键值列表}]
+ \change{2021-07-25}
+ 这是一个 \pkg*{tcolorbox} 宏包盒子风格定义命令,带有星号的命令可以\textbf{新建或重置}一个名为 \code{tc-}\meta{风格名称} 的盒子风格,否则是修改\textbf{已存在}的风格。这个命令可以调整以下即将介绍的预置盒子风格,对于预置盒子来说参数 \meta{风格名称} 即为它们对应的环境或命令名。
+ \begin{ctexexam}
+ \tcbappstyle*{mytcb} % 新建一个盒子风格tc-mytcb
+ {
+ colback = Snow,colframe = LimeGreen,coltext = Coral,
+ fontupper = \bfseries,arc = 6pt,
+ boxrule = 5pt,boxsep = 5pt,
+ borderline = {2pt}{2pt}{white}
+ }
+ \newtcolorbox{mytcbox}[1][]{enhanced,tc-mytcb,title = #1}
+ \begin{tcolorbox}[tc-mytcb,enhanced]
+ 盒子内容1
+ \end{tcolorbox}
+ \begin{mytcbox}[盒子标题]
+ 盒子内容2
+ \end{mytcbox}
+ \end{ctexexam}
+\end{commands}
+
+\subsubsection{摘要盒子}
+\begin{environments}
+ \environment{outline}[\oarg{键值列表1}\darg{标题名称}\oarg{键值列表2}]
+ 摘要盒子 \env{outline} 可用于章前摘要,它的标题是可选参数,默认标题是摘要。\meta{键值列表2} 是摘要盒子样式选项,可以使用 \cs{tcbappstyle} 命令对它进行全局设置,命令第一个参数为 \code{outline}。
+\end{environments}
+\begin{commands}
+ \command{setoutlinelist}[\marg{键值列表1}]
+ \meta{键值列表1} 与 \pkg*{enumitem} 宏包中列表配置选项相同,可以设置摘要条目的各种距离,要对它进行全局设置可以使用 \cs{setoutlinelist} 命令。
+ \begin{ctexexam}
+ \tcbappstyle{outline}{arc = 6pt}
+ \begin{outline}[leftmargin = *](摘要标题)
+ \item 摘要内容1
+ \item 摘要内容2
+ \end{outline}
+ \end{ctexexam}
+\end{commands}
+
+\subsubsection{段落盒子}
+\begin{environments}
+ \environment{easybox}[\sarg\oarg{颜色名}\darg{段落标题}\oarg{配置选项}]
+ 环境 \env{easybox} 创建一个带有三个可选参数的扁平盒子。使用星号参数时给盒子添加边框,\meta{颜色名} 选项设置背景颜色,\meta{段落标题} 选项可以设置标题,默认无标题。如果 \meta{配置选项} 较长且希望在原有基础上更改为全局固定的样式,可以使用 \cs{tcbappstyle} 命令设置,命令第一个参数为 \code{easybox}。
+ \begin{ctexexam}
+ \begin{easybox}*[DarkCyan](段落标题)
+ 上半盒子内容
+ \tcblower % 盒子上下部分分界线
+ 下半盒子内容
+ \end{easybox}
+ \end{ctexexam}
+ \environment{ebparbox}[\sarg\oarg{颜色名}\darg{段落标题}\oarg{配置选项}]
+ 环境 \env{ebparbox} 用法与 \env{easybox} 类似,同样带有三个可选参数。当使用星号参数时盒子左边带有一条竖线,\meta{颜色名} 选项可以自定义竖线颜色,使用带有星号的环境则盒子带有竖线颜色的浅色背景。\meta{段落标题} 选项可以设置标题,默认无标题。
+\end{environments}
+
+\subsubsection{行内盒子}
+\begin{commands}
+ \command{eblink}[\oarg{颜色名}\marg{内容}\oarg{配置选项}]
+ 使用 \pkg*{tcolorbox} 预置了三个参数选项相同的行内盒子,它们均为抄录命令。盒子 \cs{eblink} 具有类似超链接边框的效果。
+ \command{ebemph}[\oarg{颜色名}\marg{内容}\oarg{配置选项}]
+ 盒子 \cs{ebemph} 具有模糊边缘类似高亮的效果。
+ \command{ebfbox}[\oarg{颜色名}\marg{内容}\oarg{配置选项}]
+ 盒子 \cs{ebfbox} 则有直角边缘并带有上下框线。
+\end{commands}
+
+\section{更多用法}
+
+\subsection{物理量}
+\begin{commands}
+ \command*{num}[\oarg{键值列表}\marg{数字}]
+ \pkg*{siunitx} 宏包的 \cs*{num} 命令可以输出以科学计数法表示的数值。
+ \command*{unit}[\oarg{键值列表}\marg{单位}]
+ 单位格式化命令 \cs*{unit} 包含文字元素(例如字母或数字)时,使用 \Marg{.} 和 \code{\~{}} 放置在单元乘积中间,并使用 \code{\_} 和 \code{\^{}} 正确放置指定的下标和上标。格式化方法可在数学和文本模式下使用。
+ \command*{qty}[\oarg{键值列表}\marg{数字}\oarg{前缀}\marg{单位}]
+ \cs*{qty} 命令可用来输出带有单位的量。
+ \command*{qtyrange}[\oarg{键值列表}\marg{数字1}\marg{数字2}\marg{单位}]
+ \cs*{qtyrange} 可以输出带有范围和单位的量。
+ \begin{ctexexam}
+ \numproduct{-21x3e5}
+ \unit{mL~min^{-1}}
+ \qty{5}{\mole}
+ \qtyrange[unit-color = green]{1.5}{4}{kg}
+ \end{ctexexam}
+\end{commands}
+
+\subsection{计数器}
+\begin{commands}\noitemsep
+ \command{newcounter}[\marg{计数器}\oarg{父计数器}]\default{}
+ \command{UseCounter}[\sarg\oarg{父计数器}\darg{编号}\marg{计数器}\marg{内容}\oarg{分隔符}]
+ \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,\cs{UseCounter} 将会以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器}\meta{内容} 输出当前内容。
+ 需要注意的是 \cs{UseCounter} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加 1,带有星号的命令使 \meta{计数器} 保持当前值,\meta{编号} 为 \code{arabic} 和 \code{alpha} 等格式,\meta{数值} 可以手动将 \meta{计数器} 设为指定值。
+\end{commands}
+
+在一定的场合下可能用到 \cs{UseCounter} 命令,比如通过新建快捷命令在一些位置使用定理环境的计数器,使用 \cs{labelformat} 设置计数器的引用标签需添加 \code{eb@}:
+\begin{ctexexam}
+ \labelformat{eb@theorem}{定理 #1}
+ \newcommand{\theoremhead}[1]
+ {定理 \UseCounter[chapter]{theorem}{\hspace{1em}#1}}
+ \theoremhead{定理标题}\label{thm:theorem}
+\end{ctexexam}
+
+\subsection{图表题注}
+\begin{commands}\noitemsep
+ \command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{}
+ \command{captionof}[\sarg\marg{题注类型}\oarg{目录标题}\marg{标题}]\default{}
+ \command{bicaption}[\sarg\oarg{目录标题1}\marg{标题2}\oarg{目录标题1}\marg{标题2}]
+ 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动体环境 \env*{figure} 和 \env*{table} 中使用,在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定题注类型。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。
+\end{commands}
+
+\subsection{化学式}
+\begin{commands}\noitemsep
+ \command*{ch}[\oarg{键值列表}\marg{化学式}]\default{}
+ \command*{chemfig}[\oarg{键值列表}\marg{化学式}]
+ 除了以普通公式的方式,化学式还可用 \pkg*{chemformula} 实现,无机化学式使用 \cs*{ch} 命令书写。有机化学式推荐在导言区载入 \pkg*{chemfig} 宏包,使用 \cs*{chemfig} 命令完成。
+\end{commands}
+
+\subsection{公式符号对照}
+\change{2021-07-22}
+\begin{environments}
+ \environment{eqcomp}[\oarg{键值列表1}\darg{键值列表2}]
+ 一些公式之后可以使用基于列表环境的 \env{eqcomp} 进行符号对照。对照列表的 \meta{键值列表2} 与 \pkg*{enumitem} 的选项相同,一般较少用到,可以用于设置垂直间距等。
+\end{environments}
+
+\begin{commands}
+ \command{symb}[\sarg\marg{符号}\oarg{引导符}]
+ \cs{symb} 类似列表条目 \cs*{item},需要在环境内使用,带有星号的命令可在文本段落单独使用。
+ \command{seteqcomplist}[\marg{键值列表2}]
+ 对照列表条目格式的 \meta{键值列表2} 可以使用 \cs{seteqcomplist} 全局设置。
+ \command{seteqcomp}[\marg{键值列表1}]
+ 对照环境的 \meta{键值列表1} 可以使用 \cs{seteqcomp} 全局设置,它的选项如下:
+ \begin{options}
+ \keyval-{width}{符号宽度}\Default{2em}
+ 设置适当的符号宽度可以防止文字重叠和边界溢出等问题。
+ \keyval-{delim}{引导符}\Default{——}
+ 符号对照的引导符,\cs{symb} 的 \meta{引导符} 和对齐方式是基于这个符号的宽度。
+ \keyval-{space}{符号间隙}\Default{0.25em}
+ 符号间隙为引导符两侧与符号和说明文字间的距离。
+ \keychoice{item-align}{l,c,r}\Default{r}
+ 符号的对齐方式,分为左(\code{l})、中(\code{c})和右(\code{r})三种对齐方式。
+ \keychoice{delim-align}{l,c,r}\Default{c}
+ 引导符的对齐方式,分为左(\code{l})、中(\code{c})和右(\code{r})三种对齐方式。
+ \keyval-{enumitem}{键值列表2}
+ 可以使用选项 \option{enumitem} 或命令 \cs{seteqcomplist} 调整对照列表的水平垂直间距。
+ \keyval-{intro}{首行文字}\Default
+ 符号对照的说明文字,应当为简短的几个字,只显示在第一行,其后为悬挂缩进的对照列表。
+ \keyval-{font}{符号字体}\Default
+ 符号的字体,数学和文本符号模式应采用不同的字体命令,最后一个命令可以接受一个参数,这个参数为符号。
+ \keychoice{mode}{math,text}\Default{math}
+ 符号字体模式,可以为数学字体或者文本字体。
+ \end{options}
+\end{commands}
+
+\subsection{引用}
+\begin{commands}
+ \command{ref}[\marg{标签}]
+ 使用 \cs*{ref} 命令引用 \cs*{label} 设置的标签,将会检测临近计数器并添加相应的前缀,比如图表、章节标题和定理等。
+ \command{footref}[\marg{脚注标签}]
+ \cs{footref} 对自动编号的脚注进行引用,为上标形式与脚注标记一致。
+ \command{labelformat}[\marg{计数器}\marg{标签引用格式}]
+ \cs{labelformat} 可以设置标签引用格式,第二个参数中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。
+\end{commands}
+
+\subsubsection{索引}
+\begin{commands}
+ \command{printindex}[\sarg\parg\oarg{键值列表}\darg{索引名}]
+ \pkg*{imakeidx} 宏包提供了索引的功能,重新定义了它的 \cs{printindex} 命令用于生成索引目录,\meta{键值列表} 及选项与节 \ref{sec:document command} 相同,但是原本接口命令 \cs*{indexsetup} 的部分选项失效。
+ \command*{index}[\oarg{索引名}\marg{标签}]
+ 索引标签命令 \cs*{index} 的 \meta{索引名} 与索引输出命令 \cs{printindex} 一致,可以存在多个索引目录。
+ \command{makeindex}[\oarg{键值列表}]
+ 使用 \cs{makeindex} 命令开启索引收集,输出不同的索引目录时使用 \meta{索引名} 选项。
+\end{commands}
+
+\subsubsection{自定义脚注}
+\begin{commands}\noitemsep
+ \command{Footnote}[\marg{标记}\marg{脚注文本}]\default{}
+ \command{Footnotetext}[\marg{标记}\marg{脚注文本}]\default{}
+ \command{Footnotemark}[\marg{标记}]
+ 这些是自定义 \meta{标记} 且不影响正常编号的脚注命令,用法与它们对应首字母小写的命令类似。如果 \meta{标记} 为空,那么将会使用上一个脚注标记。
+ \begin{ctexexam}
+ \Footnote{*}{这是可以自定义标记的脚注。}
+ \end{ctexexam}
+\end{commands}
+
+\subsubsection{边注}
+\begin{commands}
+ \command{marginnote}[\oarg{左文本}\marg{右文本}\oarg{垂直偏移}]
+ 命令 \cs{marginnote} 可以生成简单的边注,如果只给定了 \meta{右文本},那么边注在奇偶数页文字相同。如果同时给定了 \meta{左文本},则偶数页使用 \meta{左文本} 的文字。
+\end{commands}
+
+\section{依赖的宏包}
+以下为 \pkg*{easybase} 直接调用的关键宏包,方括号内为宏包已使用的选项。蓝色的宏包表示截至当前在 \TeX~Live 2021 中存在更新,旧版本并不影响使用。带有 \ding{81} 符号的宏包并未载入它们,仅做了一些预配置,可在导言区手动载入以实现相关的功能。
+\begin{description}[font = \normalfont\sffamily]
+ \item[amsmath] 提供 \LaTeX 中的数学功能。
+ \item[\passto{heading}{ctex}] 提供中文排版的通用框架。
+ \item[chemformula] 提供了对化学式进行排版的命令。
+ \item[caption] 在浮动环境中自定义题注。
+ \item[\passto*{shortlabels,inline}{enumitem}] 提供列表环境的布局控制。
+ \item[fancyhdr] 广泛控制页面的页眉和页脚。
+ \item[graphicx] 增强了对图形插入的支持。
+ \item[geometry] 灵活完整的页面尺寸设置。
+ \item[\color{cnltxblue}hyperref] 处理交叉引用命令以及在文档中生成超文本链接。
+ \item[listings] 可以在 \LaTeX 中排版程序/编程代码。
+ \item[marginnote] 增强了边注输出的功能。
+ \item[multicol] 混合单栏和多栏排版。
+ \item[\passto{upint}{newtxmath}] 提供多种数学字体。
+ \item[pdfpages] 在 \LaTeX 中插入 \code{pdf} 文档。
+ \item[\passto{ctex}{spbmark}] 定制上标和下标的格式。
+ \item[\color{cnltxblue}siunitx] 全面的国际标准单位支持。
+ \item[setspace] 提供对文档中行间距的支持。
+ \item[\color{cnltxblue}tabularray] 完全分离表格的内容和样式,并且可以通过键值方式完全设置表格。
+ \item[thmtools] 用于通常需要的排版定理支持。
+ \item[titletoc] 设置目录中的标题格式。
+ \item[\passto*{normalem}{ulem}] 提供可断行多样式的下划线命令。
+ \item[\passto*{svgnames}{xcolor}] 提供任意颜色的设定与混合。
+ \item[\ding{81} \passto{list = off}{bicaption}] 提供图表的双语题注。
+ \item[\ding{81} imakeidx] 可以让文档同时生成和排版一个或多个索引。
+ \item[\ding{81} mathtools] 增强 \pkg*{amsmath} 的数学功能。
+ \item[\color{cnltxblue}\ding{81} \passto{many}{tcolorbox}] 为带有标题线的彩色和带框文本框提供了一个环境。
+ \item[\ding{81} unicode-math] 处理使用 \code{unicode} 编码的数学字体。
+\end{description}
+
+\nocite{*}
+
+\end{document} \ No newline at end of file