\documentclass{ctxdoc}
\hypersetup{linkcolor = blue,urlcolor = blue}

\title{\sffamily easybook书籍文档类}
\author{瞿毅}
\date{2021/02/20\hskip\ccwd\relax v1.23e\thanks{\url{https://gitee.com/texl3/easybook}}}

\begin{document}
\maketitle
\changes{v1.20}{2021/01/09}{修改和完善用户文档。}
\changes{v1.20}{2021/01/09}{模板更改为使用CC-BY许可协议。}
\begin{abstract}
  \cls{easybook} 是基于 \cls{ctexbook} 书籍文档类创建以极简为风格的模板，可以看作对 \cls{ctexbook} 的进一步包装。虽然\CTeX 文档类提供了较好的中文支持，但想实现个性化功能一般需要在其基础上载入更多宏包来定制。\cls{easybook} 考虑了一些细节并载入一些常用宏包实现一般的排版需求，它适用于排版中英文书籍或笔记，甚至可稍加调整成为学位论文模板。
\end{abstract}
\tableofcontents

\section{编译方式}
模板含有一个使用示例文件 \opt{easybook-demo.tex}，编译前建议满足以下的条件
\begin{itemize}
  \item 使用 \hologo{XeLaTeX}（推荐）或 \hologo{LuaLaTeX} 两种编译方式。
  \item 参考文献支持用 \hologo{BibTeX}（默认）或 \hologo{biber} 后端处理。
  \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{字体设置}
\label{font settings}
默认使用\CTeX 预置中文字库，当开启 \opt{font = noto} 选项时需要安装开源字体，中文使用方正系列的{\songti 方正书宋}、{\heiti 方正黑体}、{\kaishu 方正楷体}和{\fangsong 方正仿宋}，英文使用思源系列的{\rmfamily Noto Serif}、{\sffamily Noto Sans}和{\ttfamily Noto Sans Mono}，数学字体使用 \pkg{notomath}。相关选项可以见小节 \ref{document class options} 中的 \opt{font} 选项，字体点击此处下载\href{https://wws.lanzous.com/b01ns361i}{下载地址}。

如果您不想使用\CTeX 默认字体和方正、思源字体，\textbf{自定义字体}需启用选项 \opt{font = none}，并可在导言区设置中文字体，粗体与斜体不设置会产生警告。
\begin{ctexexam}
    \setCJKmainfont{SimSun}[BoldFont = SimHei,ItalicFont = KaiTi]
    \setCJKsansfont{SimHei}
    \setCJKmonofont{FangSong}
\end{ctexexam}

\section{文档类选项}
\label{document class options}
标准 \cls{book} 文类与 \cls{ctexbook} 文类的选项同样适用于本文档。除此之外选项分为两类
\begin{itemize}
  \item 带有 \rexptarget\rexpstar{} 号的选项，需要在引入文档类的时候设定。
  \item 带有 \exptarget\expstar{} 号的选项，需要通过\CTeX 宏集提供的用户接口命令 \tn{ctexset} 设定。
\end{itemize}

\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}
部分标题编号由中文数字变为大写罗马数字，章标题编号由中文数字变为阿拉伯数字。比如\textbf{第一部分}变为\textbf{第I部分}，\textbf{第一章}变为\textbf{第1章}。
\end{function}
\begin{function}[rEXP,added = 2021-01-05]{english}
使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。如\textbf{第一章}变为\textbf{Chapter 1}，\textbf{图1.1} 变为 \textbf{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,updated = 2021-02-02]{font}
\begin{syntax}
  font = <adobe|founder|mac|windows|linux|(overleaf)|noto|none>
\end{syntax}
\changes{v1.21b}{2021/01/12}{默认字体与\CTeX 一致，不再是自定义字体。}
传递给 \cls{ctexbook} 设置字体，最好不要使用原有的 \opt{fontset} 选项，默认情况下使用自定义字体而不开启这个选项，可根据安装的字体及电脑系统选取。\opt{noto} 与 \opt{none} 选项的相关描述见小节 \ref{font settings}，\opt{overleaf} 是一个各系统通用选项，会检测系统环境选取对应字体。
\end{function}

\begin{function}[rEXP,added = 2021-01-05,updated = 2021-01-13]{paper}
\begin{syntax}
  paper = <(a4paper)|b5paper|letterpaper|...>
\end{syntax}
设置页面大小，交给 \pkg{geometry} 宏包处理，可使用它支持的所有规格。建议选项 \opt{b5paper} 和 \opt{zihao = 5}，选项 \opt{a4paper} 和 \opt{zihao = -4} 配合。
\end{function}

\subsection{文档命令}
\begin{function}[added = 2021-02-20]{\frontmatter,\mainmatter,\backmatter,\listoffigures,\listoftables,\listoflistings}
\begin{syntax}
  \tn{frontmatter}\oarg{编号格式|(Roman)}
  \tn{printindex}\oarg{索引名}
\end{syntax}
\tn{frontmatter} 为前言区命令，章标题不编号，页码可设置为例如 \opt{roman}、\opt{Alph} 等格式，带有星号的命令 \tn{frontmatter*} 不使用 \tn{cleardoublepage}。\tn{mainmatter} 为主文区命令，章标题正常编号且页码为从1开始计数的阿拉伯数字，\tn{mainmatter*} 命令不使用 \tn{cleardoublepage}。\tn{backmatter} 为后记区命令，页码格式与编号保持不变，章标题不编号。\tn{listoffigures} 命令输出图片目录，\tn{listoftables} 命令输出表格目录，\tn{listoflistings} 命令输出代码目录。
\end{function}

\section{接口选项}
\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}[EXP,added = 2021-01-08]{config}
\begin{syntax}
  config = <配置文件名>
\end{syntax}
\changes{v1.10}{2021/01/08}{加入载入用户配置选项。}
\opt{config}为载入用户配置选项，配置文件名不需加括号但需带有后缀名如 \opt{tex}、\opt{def} 和 \opt{cfg}。
\end{function}

\subsection{风格}
\begin{function}[EXP,added = 2021-01-05,updated = 2021-02-09]{style/color,style/capdash,style/multoc,style/withpart,style/perpart,style/perpage,style/notomath,style/rulewidth}
\begin{syntax}
  color = <(none)|seaside|energy|cyberpunk>
  capdash = <true|(false)>
  multoc = <true|(false)>
  withpart = <true|(false)>
  perpart = <true|(false)>
  perpage = <true|(false)>
  notomath = <(true)|false>
  rulewidth = <(0.75pt)>
\end{syntax}
\changes{v1.10}{2021/01/08}{更改颜色实现方式与选项名。}
\changes{v1.23}{2021/02/02}{noto风格的数学字体独立出来，可自定义设置。}
\changes{v1.23b}{2021/02/09}{增加控制页面横线粗细的选项。}
\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.10}{2021/01/08}{可以自定义主题颜色。}
    主题颜色用到这三个颜色，可以使用 \tn{definecolor} 命令进行更改，类似地更改超链接颜色见小节 \ref{hyperlinks}。
    \end{function}
  \item[capdash] 将图表代码标题风格由例如\textbf{图1.1}变为\textbf{图1\textendash 1}的形式。
  \item[multoc] 开启双栏目录，可与 \opt{onecolumn} 和 \opt{twocolumn} 选项配合出单栏正文、单栏目录，双栏正文、单栏目录，单栏正文、双栏目录和双栏正文、双栏目录四种方式 。
  \item[withpart] 使章跟随每一部分编号，默认不跟随。
  \item[perpart] 使脚注跟随每一部分编号，默认不跟随。
  \item[perpage] 使脚注跟随每一页编号，默认不跟随。
  \item[notomath] 使用 \opt{noto} 风格的数学字体，将会加载 \pkg{newtxmath} 宏包。
  \item[rulewidth] 调整页眉、定理盒子以及代码框线条的粗细。
\end{optdesc}

\subsection{超链接}
\label{hyperlinks}
\begin{function}[EXP,added = 2021-01-05,updated = 2021-01-08]{link/hyperlink,link/linkcolor,link/linktopage}
\begin{syntax}
  hyperlink = <(edge)|various|none>
  linkcolor = <(fresh)|cutepink|skyblue|crimson>
  linktopage = <true|(false)>
\end{syntax}
\changes{v1.10}{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}
    \changes{v1.10}{2021/01/08}{可以自定义超链接颜色。}
    超链接颜色用到这三个颜色，可以使用 \tn{definecolor} 命令进行更改。
    \end{function}
  \item[linktopage] 将目录中的超链接置于页码上，默认是置于标题上。
\end{optdesc}

\subsection{行距}
\begin{function}[EXP,added = 2021-01-05,updated = 2021-02-13]{spread/line,spread/table,spread/math,spread/caption,spread/footnote}
\begin{syntax}
  line = <(1.3)>
  table = <(1.05)>
  math = <(1.05)>
  caption = <(1)>
  footnote = <(1)>
\end{syntax}
\changes{v1.21b}{2021/01/12}{增加脚注线间的距离选项。}
\changes{v1.23b}{2021/02/09}{取消使用 \pkg{zhlineskip} 宏包设置数学间距。}
行距因子用于设置各种行距倍数，只能是浮点数，不能带有长度单位。\tn{ctexset} 原有的行距选项\opt{linespread}失效。各行距既可在导言区全局设置也可正文中设置对后面生效，行距的意义为
\end{function}

\begin{optdesc}
  \item[line] 正文行距。
  \item[table] 表格行距。
  \item[math] 数学环境行距。
  \item[caption] 图表代码标题行距。
  \item[footnote] 脚注行距。
\end{optdesc}

\subsection{其它字体}
\begin{function}[EXP,added = 2021-01-08,updated = 2021-02-13]{elfont/table-cap,elfont/figure-cap,elfont/listing-cap,elfont/footnote,elfont/marginpart}
\begin{syntax}
  table-cap = <\tn{sffamily}\tn{small}>
  figure-cap = <\tn{sffamily}\tn{small}>
  listing-cap = <\tn{sffamily}\tn{small}>
  footnote = <\tn{rmfamily}>
  marginpart = <\tn{rmfamily}\tn{footnotesize}>
\end{syntax}
\changes{v1.10}{2021/01/08}{加入自定义非正文字体选项。}
\changes{v1.23a}{2021/02/08}{修复使用 \tn{zihao} 命令设置字体失效的问题。}
\end{function}

\begin{optdesc}
  \item[table-cap] 表格标题的字体设置。
  \item[figure-cap] 图片标题的字体设置。
  \item[listing-cap] 代码标题的字体设置。
  \item[footnote] 脚注的字体设置，请不要使用字号命令。
  \item[marginpar] 边注的字体设置。
\end{optdesc}

\subsection{参考文献}
\begin{function}[EXP,added = 2021-01-11]{bibset/backend,bibset/bibstyle,bibset/citestyle,bibset/bibfile,\printbibliography}
\begin{syntax}
  backend = <(bibtex)|biblatex>
  bibstyle = <(number)|authoryear|其它格式>
  citestyle = <引用格式>
  bibfile = <ref/refs.bib>
  \tn{printbibliography}\oarg{选项列表}
\end{syntax}
\changes{v1.21}{2021/01/11}{增加 \opt{bibset} 选项，可以使用 \hologo{BibTeX} 或 \hologo{biber} 编译参考文献。}
\end{function}

\begin{optdesc}
  \item[backend] 参考文献处理后端，默认用传统的 \hologo{BibTeX} 处理参考文献。
  \item[bibstyle] 参考文献格式为中国的参考文献推荐标准GB/T 7714-2015，有顺序编码制和著者-出版年制两种风格，理工科类一般使用顺序编码制，文科类一般使用著者-出版年制。若使用其它格式，使用 \hologo{BibTeX} 处理时需确保正确的 \opt{bst} 文件，使用 \hologo{biber} 处理可使用 \pkg{biblatex} 宏包支持的参考文献风格名称。
  \item[citestyle] 引用参考文献的格式，对 \opt{backend = bibtex} 选项\textbf{无效}，可使用 \pkg{biblatex} 宏包支持的引用文献风格名称。
  \item[bibfile] 参考文献的数据文件，使用 \hologo{biber} 处理时要带有 \opt{bib} 后缀，默认为一个在 \opt{ref} 文件夹中以 \opt{refs.bib} 命名的文件。
  \item[\tn{printbibliography}] 两种方式\textbf{均使用}此命令打印参考文献，其中可选项仅在 \hologo{biber} 处理时有效。
\end{optdesc}

\subsection{定理样式}
\begin{function}[EXP,added = 2021-01-12,updated = 2021-01-18]{thmset/thmbox,thmset/numberwith,thmset/headpunct,thmset/bodyfont,thmset/notefont,thmset/headfont,thmset/headindent,thmset/spaceabove,thmset/spacebelow,thmset/spacepost}
\begin{syntax}
  thmbox = <true|(false)>
  numberwith = <(chapter)|section|其它环境|空置>
  headpunct = <(未设置)>
  bodyfont = <(未设置)>
  notefont = <(未设置)>
  headfont = <(\tn{color}\marg{ctex@emph}\tn{sffamily})>
  headindent = <(0\tn{ccwd})>
  spaceabove = <(0.75ex plus .1ex)>
  spacebelow = <(0.75ex plus .1ex)>
  spacepost = <(\tn{ccwd})>
\end{syntax}
\changes{v1.21b}{2021/01/12}{增加配置定理环境样式的选项。}
\end{function}

\begin{optdesc}
  \item[thmbox] 开启定理及习题环境的盒子边框。
  \item[numberwith] 定理编号格式，默认跟随章的编号，也可以与其它定理环境共享编号，空置时不跟随其它计数器编号。
  \item[headpunct] 定理标题后的标记。
  \item[bodyfont] 定理内容部分的字体。
  \item[notefont] 定理标题内容的字体。
  \item[headfont] 定理类型标题名的字体。
  \item[headindent] 定理标题的缩进，默认无缩进，可用 \tn{parindent} 命令设置为段落缩进。
  \item[spaceabove] 定理环境前的间距。
  \item[spacebelow] 定理环境后的间距。
  \item[spacepost] 定理标题后与内容的间距。
\end{optdesc}

\subsubsection{新的定理样式}
定理由 \pkg{thmtools} 设置，自带定理的样式为 \opt{mythm}，如果使用这个样式而只是增加新的定理名称，可以这样
\begin{ctexexam}
    \AfterPreamble{\declaretheorem[style = mythm,name = 定理名]{定理环境名}}
\end{ctexexam}
若要重新定义一个全新的定理样式，具体参数可以查看 \pkg{thmtools} 宏包帮助文档。

\subsection{页面边距}
\begin{function}[EXP,added = 2021-01-13]{geoset/left,geoset/top,geoset/hmargin,geoset/textwidth,geoset/includehead,...}
\begin{syntax}
  left = <长度>
  top = <长度>
  hmargin = \marg{左边距,右边距}
  textwidth = <长度>
  includehead = <true|(false)>
\end{syntax}
\changes{v1.21c}{2021/01/13}{增加配置页面边距的选项。}
\opt{geoset} 将选项交给 \pkg{geometry} 宏包接口命令 \tn{geometry} 处理，并且选项的键值列表与之相同，支持的参数可查阅宏包帮助文档。当在此设置页面大小时，会覆盖 \opt{paper} 选项的设置。
\begin{ctexexam}
    \ctexset
      {
        geoset =
          {
            top = 2.5cm,
            bottom = 2.5cm,
            left = 3.2cm,
            right = 3.2cm
          }
      }
\end{ctexexam}
\end{function}

\subsection{页眉页脚}
\begin{function}[EXP,added = 2021-01-13,updated = 2021-02-08]{hdrset,\easyhead,\easyfoot,...}
\begin{syntax}
  hdrset = <载入 \opt{fancyhdr} 的设置>
  \tn{easyhead}\oarg{位置}\marg{内容}
  \tn{easyfoot}\oarg{位置}\marg{内容}
\end{syntax}
\changes{v1.21}{2021/01/11}{修复单面文档时页眉横线消失的问题。}
\changes{v1.21c}{2021/01/13}{增加配置页眉页脚的选项。}
\opt{hdrset} 设置的命令由 \pkg{fancyhdr} 宏包提供支持，命令 \tn{easyhead} 和 \tn{easyfoot} 的含义与 \tn{fancyhead} 和 \tn{fancyfoot} 相同，设置的是一个名为 \opt{fancy} 的页面风格。\pkg{fancyhdr} 将页眉页脚分成了左中右和奇数页（odd）、偶数页（even）共12个部分，可选参数中E、O代表偶数、奇数，L、C、R代表左、中、右部分。单面打印时，含有偶数的选项无效。
\begin{ctexexam}
    \ctexset
      {
        hdrset =
          {
            \easyhead[ER]{\leftmark}
            \easyhead[OL]{\rightmark}
            \easyhead[EL,OR]{\textbf{\thepage}}
          }
      }
\end{ctexexam}
\end{function}

\subsection{目录样式}
\begin{function}[EXP,added = 2021-01-13,updated = 2021-01-15]{tocset/.../format,tocset/.../indent,tocset/.../rule,lists/lolskip,lists/belowoffset,tocset/belowoffset,\tocrule}
\begin{syntax}
  format = <目录标题格式>
  indent = <目录标题左边缩进>
  rule = <目录引导线样式>
  lolskip = <(0.8pc)>
  lists/belowoffset = <(0pc)>
  belowoffset = <(-1pc)>
  \tn{tocrule} = \oarg{引导点间距|(0.7pc)}\oarg{引导点大小|(1.2)}\marg{引导点}\oarg{页码格式}
\end{syntax}
\changes{v1.21c}{2021/01/13}{增加配置目录样式的选项。}
\opt{tocset} 将目录样式交给 \pkg{titletoc} 处理，预置了 \opt{part}、\opt{chapter}、\opt{section}、\opt{subsection} 和 \opt{lists} 五种级别的目录标题，键值列表中的...代表它们。\opt{lists} 为图片、表格和代码目录格式的级别。

\opt{lolskip} 是代码目录中章之间的代码标题的距离，使用刚性间距，与\CTeX 的 \opt{lotskip} 和 \opt{lofskip} 类似，它们的值均默认0.8pc。\opt{belowoffset} 选项为目录总标题 \tn{contentsname} 后的间距补偿，一般为负值，用于抵消 \opt{format} 中设置的间距。\opt{lists} 中的 \opt{belowoffset} 意义类似，但是一般为正值，在 \opt{lolskip = 0pc} 时使用。建议 \opt{lolskip+lists/format/addvspace = -belowoffset}。

\tn{tocrule} 命令生成目录引导线，需要在 \opt{rule} 选项中使用，其中引导线间距需带有长度单位，引导点大小不带单位，为引导点符号正常大小的倍数，引导点一般为英文句号或 \tn{cdot} 中心点符号。页码格式的内容位于页码前面，可以设置页码字体、距离。
\begin{ctexexam}
    \ctexset
      {
        tocset =
          {
            chapter =
              {
                format = \addvspace{8pt}\large,
                indent = 1.5\ccwd,
                rule = \tocrule[0.6pc][1.1]{.}[\zihao{5}]
              }
          }
      }
\end{ctexexam}
\end{function}

\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} 宏包为系统自带的列表环境提供了更灵活的标签以及间距的控制，可使用 \tn{setlist} 命令设置原有的三种列表格式。已设置默认格式，若自定义标签可例如
\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{sort list}
使用 \opt{enumerate} 环境可创建排序列表，使用 \opt{enumerate*} 环境产生行内部列表，可以使用\textbf{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}[added = 2021-01-05,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,updated = 2021-02-13]{exercise}
\begin{syntax}
  \tn{begin}\marg{exercise}\oarg{颜色名|(LightYellow)}\oarg{编号|(1.)}\oarg{标题|(习题)}
  \tn{item} <习题内容>
  \tn{end}\marg{exercise}
\end{syntax}
\changes{v1.23a}{2021/02/08}{增加准确的习题盒子标题目录锚点。}
习题环境 \opt{exercise} 的标题紧接上一节编号并加入目录与页眉，当使用星号环境时不进行编号。三个可选参数中颜色为自定义或 \pkg{xcolor} 包含的颜色名称，正文编号格式与小节 \ref{sort list} 排序列表相同，标题名默认为摘要，参数只能\textbf{从右往左}省略。
\begin{ctexexam}
    \begin{exercise}[LightYellow][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,updated = 2021-02-13]{mybox}
\begin{syntax}
  \tn{begin}\marg{mybox}\oarg{段落标题}\oarg{颜色名|(MintCream)}
  <盒子内容>
  \tn{end}\marg{mybox}
\end{syntax}
环境 \opt{mybox} 创建一个段落盒子，可以添加可选参数的标题，否则无标题框。当使用带有星号的环境时 \oarg{颜色名} 选项生效，可以自定义背景颜色，否则无背景颜色。
\begin{ctexexam}
    \begin{mybox}*[段落标题][MintCream]
      盒子内容
      \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} 不是抄录盒子，具有模糊边缘类似高亮的效果。配置的选项由 \pkg{tcolorbox} 提供支持。
\end{function}

\section{其它格式}

\subsection{代码}
\begin{function}[added = 2021-01-05]{\lstinline,lstlisting,\listoflistings}
\begin{syntax}
  \tn{lstinline}\oarg{键值列表}\marg{行内代码}
  \tn{begin}\marg{lstlisting}\oarg{键值列表}
  <行间代码>
  \tn{end}\marg{lstlisting}
\end{syntax}
加载 \pkg{listings} 宏包以对代码格式进行高度定制，代码样式可使用 \tn{lstset} 命令设置，\tn{listoflistings} 命令用于输出代码目录。
\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,\printindex}
\begin{syntax}
  \tn{index}\marg{标签}
  \tn{printindex}\oarg{索引名}
\end{syntax}
使用 \pkg{imakeidx} 生成索引，\tn{printindex} 命令用于生成索引目录。仅做了简单的设置如将索引设为双栏并加入目录，其他选项可另外配置。
\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}