% \iffalse
%<*driver>
\ProvidesFile{xduts.dtx}
[2022/06/28 v2.10.3.0 Xidian University TeX Suite]
%</driver>
%<class|sty>\NeedsTeXFormat{LaTeX2e}
%<class|sty>\RequirePackage{expl3}
%<xdufont>\ProvidesExplPackage{xdufont}
%<xdupgthesis>\ProvidesExplClass{xdupgthesis}
%<xduugthesis>\ProvidesExplClass{xduugthesis}
%<class|sty>  {2022/06/28}{2.10.3.0}
%<xdufont>  {Xidian University Font package}
%<xdupgthesis>  {Xidian University Postgraduate Thesis document class}
%<xduugthesis>  {Xidian University Undergraduate Thesis document class}
%<*driver>
\PassOptionsToPackage{AutoFakeBold=3}{xeCJK}
\documentclass{ctxdoc}
\changes{v1.9.0.0}{2022/05/03}{支持中文选项默认值加粗}
\changes{v1.9.0.0}{2022/05/03}{增大function环境盒子宽度}
\addtolength{\marginparwidth}{5mm}
\geometry{hmargin={0mm,10mm}}
\changes{v0.6.0.0}{2022/04/10}{新增xdufont宏包}
\changes{v0.5.2.1}{2022/04/09}{修改项目名称}
\changes{v0.4.2.1}{2022/04/05}{调整文档目录缩进}
\usepackage{tocloft}
\setlength{\cftsecindent}{0em}
\setlength{\cftsubsecindent}{1em}
\setlength{\cftsubsubsecindent}{2em}
\setlength{\cftparaindent}{3em}
\setlength{\cftsubparaindent}{4em}
\ctexset{
  secnumdepth = 5,
  subparagraph = {
    afterskip = 1ex plus .2ex,
    runin = false
  }
}
\setcounter{tocdepth}{5}
\ctexset{punct=quanjiao}
\usepackage{hologo}
\usepackage{fetamont}
\usepackage{xurl}
\usepackage{xspace}
\xspaceaddexceptions{。？！，、；：“”‘’—….－-～·《》<>＿}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{multirow}
\usepackage{pifont}
\newcommand{\cmark}{\ding{51}}
\usepackage{tabularray}
\SetTblrStyle{caption-tag}{font=\bfseries}
\DefTblrTemplate{caption-sep}{default}{\quad}
\DefTblrTemplate{conthead-text}{default}{(续表)}
\DefTblrTemplate{contfoot-text}{default}{接下页}
% 交叉引用
\newcommand{\secrefx}[1]{第\xspace\ref{#1}\xspace 节}
\newcommand{\tabrefx}[1]{\tablename\xspace\ref{#1}\xspace}
% 文档类选项
\newcommand{\optx}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace}
% \name LaTeX3控制序列
\newcommand{\csx}[1]{\xspace\cs{#1}\xspace}
% \name 传统LaTeX2e命令
\newcommand{\tnx}[1]{\xspace\tn{#1}\xspace}
% <name> LaTeX3键值
\newcommand{\metax}[1]{\xspace\meta{#1}\xspace}
% LaTeX3键值对
\newcommand{\breakablethinspace}{\hskip 0.16667em\relax}
\newcommand{\kvoptx}[2]{\xspace\texttt{#1\breakablethinspace=\breakablethinspace#2}\xspace}
% {<name>} LaTeX2e参数
\newcommand{\argx}[1]{\xspace\Arg{#1}\xspace}
% [<name>] LaTeX2e可选参数
\newcommand{\oargx}[1]{\xspace\Arg{#1}\xspace}
% 文件
\usepackage{seqsplit}
\newcommand{\filex}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace}
% 环境
\newcommand{\envx}[1]{\xspace\env{#1}\xspace}
% 宏包
\newcommand{\pkgx}[1]{\xspace\pkg{#1}\xspace}
% 文档类
\newcommand{\clsx}[1]{\xspace\cls{#1}\xspace}
% 值
\newcommand{\valuex}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace}
% 命令
\newcommand{\cmdx}[1]{\xspace{\ttfamily\seqsplit{#1}}\xspace}
% 链接
\newcommand{\footurl}[1]{\footnote{\url{#1}}}
\newcommand{\ctanurl}[1]{\href{https://mirrors.ustc.edu.cn/CTAN/#1}{\ttfamily CTAN://#1}}
\newcommand{\footctan}[1]{\footnote{\ctanurl{#1}}}
% logo
\newcommand{\xduts}{{\bfseries\ffmfamily XDUTS}}
\newcommand{\texlive}{\TeX{} Live}
\newcommand{\mactex}{Mac\TeX{}}
\newcommand{\miktex}{\xspace\hologo{MiKTeX}\xspace}
\newcommand{\bibtex}{\xspace\hologo{BibTeX}\xspace}
\newcommand{\biber}{\xspace\hologo{biber}\xspace\xspace}
% arguments list
\setlist[arguments]{label=\texttt{\#\arabic*}\,:}
% 浮动体默认设置
\makeatletter
\renewcommand{\fps@table}{htbp}
\makeatother
% listings
\definecolor{xdu-ai-orange}{cmyk}{0,0.75,1,0}
\definecolor{xdu-blue}{cmyk}{0.80,0.50,0,0}
\definecolor{xdu-chem-red}{cmyk}{0.28,0.95,0.84,0}
\definecolor{xdu-cs-green}{cmyk}{0.60,0.23,1,0}
\definecolor{xdu-magenta}{cmyk}{0.05,1,0.55,0}
\definecolor{xdu-violet}{cmyk}{0.50,1,0,0.40}
\usepackage{listings}
\lstdefinestyle{style@base}
  {
    basewidth       = 0.5 em,
    gobble          = 3,
    lineskip        = 3 pt,
    frame           = l,
    framerule       = 1 pt,
    framesep        = 0 pt,
    xleftmargin     = 0 em,
    xrightmargin    = 0 em,
    escapeinside    = {(*}{*)},
    breaklines      = true,
    basicstyle      = \small\ttfamily,
    keywordstyle    = \bfseries\color{xdu-violet},
    commentstyle    = \itshape\color{white!50!gray},
    stringstyle     = \color{xdu-chem-red},
    backgroundcolor = \color{white!95!gray}
  }
\lstdefinestyle{style@shell}
  {
    style      = style@base,
    rulecolor  = \color{xdu-magenta},
    language   = bash,
    alsoletter = {-},
    emphstyle  = \color{xdu-cs-green}
  }
\lstdefinestyle{style@latex}
  {
    style      = style@base,
    rulecolor  = \color{xdu-blue},
    language   = [LaTeX]TeX,
    alsoletter = {*, -},
    texcsstyle = *\color{xdu-violet},
    emphstyle  = [1]\color{xdu-ai-orange},
    emphstyle  = [2]\color{xdu-cs-green}
  }
\lstnewenvironment{shellexample}[1][]{%
  \lstset{style=style@shell, #1}}{}
\lstnewenvironment{latexexample}[1][]{%
  \lstset{style=style@latex, #1}}{}
\begin{document}
\DocInput{\jobname.dtx}
\IndexLayout
\PrintChanges
\PrintIndex
\end{document}
%</driver>
% \fi
% \CheckSum{3008}
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
% \GetFileInfo{\jobname.dtx}
% \title{\bfseries\xduts{}手册}
% \author{\href{https://github.com/note286/}{note286}}
% \date{\href{https://github.com/note286/xduts/releases/tag/\fileversion/}{\fileversion}~(\filedate)}
% \maketitle
% \thispagestyle{empty}
% \begin{abstract}
% \xduts{}是面向西安电子科技大学本科生/研究生的\LaTeXiii{}文档类和宏包套装，
% 仅支持\XeLaTeX{}，
% 仅支持\texlive{}、\mactex{}、\miktex{}，
% 支持Windows、macOS、GNU/Linux、Overleaf和TeXPage。
% \end{abstract}
% \renewcommand{\abstractname}{免责声明}
% \begin{abstract}
% 在使用\xduts{}时，默认您同意以下内容：
% \begin{enumerate}
% \item \xduts{}作者不对使用\xduts{}产生的格式审查问题负责。
% \item \xduts{}的发布遵守
% \LaTeX{} Project Public License\footurl{https://www.latex-project.org/lppl.txt}，
% 使用前请认真阅读协议内容。
% \item 任何个人或组织以\xduts{}为基础进行修改、扩展而生成的新的\LaTeX{}文档类/宏包，
% 请严格遵守\LaTeX{} Project Public License，
% 由于违犯协议而引起的任何纠纷争端均与\xduts{}作者无关。
% \end{enumerate}
% \end{abstract}
% \clearpage
% \section*{\contentsname\markright{目录}}
% \makeatletter
% \@starttoc{toc}
% \makeatother
% \clearpage
% \section{介绍}
% \xduts{} (Xidian University \TeX{} Suite)
% 是为了帮助西安电子科技大学本科生/研究生撰写开题报告/学位论文及其他文档
% 而编写的\LaTeXiii{}文档类和宏包套装，目前有：
% \begin{itemize}
% \item \pkgx{xdufont}，中/英/数学字体配置宏包。
% \item \clsx{xdupgthesis}，研究生学位论文。
% \item \clsx{xduugthesis}，本科毕业设计论文。
% \end{itemize}
% 即将支持：
% \begin{itemize}
% \item \clsx{xdupgtp}，研究生学位论文开题报告表。
% \item \clsx{xduugtp}，本科毕业设计论文开题报告表。
% \end{itemize}
% \par
% \changes{v1.2.0.1}{2022/04/19}{增加GitHub Discussions}
% 本文档将尽量完整地介绍\xduts{}的使用方法，
% 如有不清楚之处，或者想提出改进建议，
% 可以在GitHub Discussions\footurl{https://github.com/note286/xduts/discussions/}
% 参与讨论或提问。
% 如确定\xduts{}存在bug，
% 可以在GitHub Issues\footurl{https://github.com/note286/xduts/issues/}
% 具体描述。另外，\textbf{不接受任何Pull Requests}。
% \StopEventually{}
% \section{使用说明}
% \label{使用说明}
% 《一份（不太）简短的\LaTeXe{}介绍》\footctan{info/lshort/chinese/lshort-zh-cn.pdf}
% 中提及的内容本文档将不再赘述。
% \xduts{}中的所有文档类和宏包仅内置了实现功能所需的宏包，
% 对于常用的宏包如\pkgx{subfig}、\pkgx{algpseudocodex}、
% \pkgx{amsmath}、\pkgx{amsthm}和\pkgx{siunitx}等\textbf{均未内置}，
% 用户可以参考\secrefx{兼容性说明}后，视需求自行加载。
% 相应格式规范均已实现，用户仅需要撰写文章内容即可，请勿随意添加格式修改命令。
% \changes{v1.1.2.1}{2022/04/15}{增加默认值说明}
% \textbf{部分样式的默认值并不严格符合学校规范}，
% 用户可以结合学校规范并参考\secrefx{功能说明}功能说明自行修改。
% \par
% 请在最新版\LaTeX{}环境中使用最新版\xduts{}，
% 认真阅读相应文档类/宏包使用说明章节即可使用\xduts{}。
% \subsection{xdufont}
% \pkgx{xdufont}宏包基于\pkgx{xeCJK}和\pkgx{unicode-math}，
% 在中文字体配置方面相较于\pkgx{ctex}宏包的主要优势为默认支持宋体粗体、斜体，
% 内置多种字体配置，可任意搭配中/英/数学字体，更加符合校内各种文档的撰写要求。
% \par
% \secrefx{编译}介绍了如何编译，\secrefx{参数设置}介绍了如何自定义配置，具体的配置选项见\secrefx{字体选项}。\pkgx{xdufont}可以搭配任意文档类进行使用，例如：
% \begin{latexexample}[moretexcs={\xdusetup},emph={[1]document}]
%   \documentclass{article}
%   \usepackage{xdufont}
%   \xdusetup{}
%   \begin{document}
%   宋体\textbf{加粗}\textsl{加斜}
%   \textsf{黑体}\textbf{\textsf{加粗}}\textsl{\textsf{加斜}}
%   \end{document}
% \end{latexexample}
% \par
% 学会以上用法后即可使用\pkgx{xdufont}宏包。
% \changes{v1.4.0.0}{2022/04/26}{新增研究生学位论文}
% \changes{v1.30.0.2}{2022/06/20}{研究生学位论文文档}
% \changes{v2.2.1.1}{2022/06/23}{移除研究生学位论文中关于章节配置的文档}
% \subsection{xdupgthesis}
% \pkgx{xdupgthesis}基于\clsx{ctexbook}文档类，
% 提供多种字体配置，部分样式可自定义，信息录入便捷。
% 请在阅读《西安电子科技大学研究生学位论文模板（2015年修订版）-2019.03修订》后再使用\pkgx{xdupgthesis}。
% 专业学位硕士请额外阅读《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板（2015年版）-2019.03修订》，
% 撰写英文学位论文请额外阅读《西安电子科技大学英文学位论文撰写相关规定》。
% \par
% 典型的\clsx{xdupgthesis}主文件结构如下所示：
% \begin{latexexample}[moretexcs={\xdusetup,\frontmatter,\mainmatter,\chapter,\backmatter},emph={[1]document}]
%   \documentclass{xdupgthesis}
%   \xdusetup{}
%   \begin{document}
%   \frontmatter
%   \mainmatter
%   \chapter{欢迎}
%   使用\LaTeX{}！
%   \backmatter
%   \end{document}
% \end{latexexample}
% \par
% \secrefx{编译}介绍了如何编译，
% \secrefx{参考文献引用}介绍了如何引用参考文献，
% \secrefx{参数设置}介绍了如何自定义配置。
% 其中，字体选项见\secrefx{字体选项}，
% 部分英文字体切换见\secrefx{英文字体}，
% 语言配置见\secrefx{语言配置}，
% 参考文献配置见\secrefx{参考文献配置}，
% 页面配置见\secrefx{页面配置}，
% 交叉引用配置见\secrefx{交叉引用配置}，
% Caption配置见\secrefx{Caption配置}，
% 表格配置见\secrefx{表格配置}，
% 算法配置见\secrefx{算法配置}，
% 对照表配置见\secrefx{对照表配置}，
% 作者简介配置见\secrefx{作者简介配置}。
% 如需附录，请使用附录环境，具体见\secrefx{附录环境}。
% 支持的信息录入选项见\secrefx{信息录入}。
% 页面和信息移除见\secrefx{页面和信息移除}。
% \par
% 学会以上用法后即可使用\clsx{xdupgthesis}文档类。
% 另外，在\secrefx{额外命令}中提供了部分额外命令来增强排版。
% \subsection{xduugthesis}
% \pkgx{xduugthesis}基于\clsx{ctexbook}文档类，
% 提供多种字体配置，部分样式可自定义，信息录入便捷。
% \changes{v1.3.1.1}{2022/04/26}{英文本科生毕业设计规范参考说明}
% 论文语言为英文时，部分格式符合《外国语学院学士论文写作手册》。
% 请在阅读《本科生毕业设计（论文）工作手册》后再使用\pkgx{xduugthesis}。
% \par
% 典型的\clsx{xduugthesis}主文件结构如下所示：
% \begin{latexexample}[moretexcs={\xdusetup,\frontmatter,\mainmatter,\chapter,\backmatter},emph={[1]document}]
%   \documentclass{xduugthesis}
%   \xdusetup{}
%   \begin{document}
%   \frontmatter
%   \mainmatter
%   \chapter{欢迎}
%   使用\LaTeX{}！
%   \backmatter
%   \end{document}
% \end{latexexample}
% \par
% \changes{v1.30.0.1}{2022/06/20}{移除info录入示例}
% \secrefx{编译}介绍了如何编译，
% \secrefx{参考文献引用}介绍了如何引用参考文献，
% \secrefx{参数设置}介绍了如何自定义配置。
% 其中，字体选项见\secrefx{字体选项}，
% 部分英文字体切换见\secrefx{英文字体}，
% 参考文献配置见\secrefx{参考文献配置}，
% 页面配置见\secrefx{页面配置}，
% 交叉引用配置见\secrefx{交叉引用配置}，
% Caption配置见\secrefx{Caption配置}，
% 表格配置见\secrefx{表格配置}，
% 算法配置见\secrefx{算法配置}，
% 章节配置见\secrefx{章节配置}，
% 附录配置见\secrefx{附录环境}，
% 支持的信息录入选项见\secrefx{信息录入}。
% \par
% 学会以上用法后即可使用\clsx{xduugthesis}文档类。
% 另外，在\secrefx{额外命令}和\secrefx{额外功能}中提供了部分额外命令和功能来增强排版。
% \changes{v1.3.0.1}{2022/04/20}{增加兼容性说明}
% \section{兼容性说明}
% \label{兼容性说明}
% \xduts{}对部分常见宏包进行了针对性地适配，
% 需要注意的是，这些宏包仍需用户视需求自行加载。
% \subsection{算法}
% 主要适配算法内容字号和默认浮动位置。
% \pkgx{algorithm}宏包提供了算法浮动体\envx{algorithm}环境，
% 可以搭配\pkgx{algpseudocodex}等宏包使用。
% \pkgx{algorithm2e}宏包提供了算法环境，
% 该宏包提供的\envx{algorithm}环境实际将浮动体与算法内容合二为一。
% \subsection{图片}
% \changes{v1.13.5.1}{2022/05/08}{补充子图引用样式文档}
% 主要适配子图caption字体字号和子图引用样式，
% \changes{v1.4.1.1}{2022/04/27}{修正子图适配宏包名称}
% 包括\pkgx{subfig}宏包和\pkgx{subcaption}宏包。
% \subsection{表格}
% 主要适配表格内容字号，
% 包括所有使用\envx{table}浮动体的表格、
% \pkgx{tabularray}宏包提供的\envx{tblr}、\envx{longtblr}环境
% 和\pkgx{longtable}宏包提供的\envx{longtable}环境。
% \section{功能说明}
% \label{功能说明}
% 请根据\secrefx{使用说明}中相应文档类/宏包的说明来选择性地阅读本节内容。
% \subsection{编译}
% \label{编译}
% \changes{v0.5.1.2}{2022/04/07}{增加编译说明}
% \LaTeX{}本身是命令行程序，通过不同的命令调用所需的编译引擎，编辑器提供的快捷按钮实际只是做了包装。
% \xduts{}仅支持\XeLaTeX{}，参考文献默认使用\biber{}，也可以切换为\bibtex{}。
% \subsection{参考文献引用}
% \label{参考文献引用}
% \xduts{}提供了两种参考文献处理方式，
% 一种是\pkgx{natbib}和\pkgx{gbt7714}宏包组合，搭配\cmdx{bibtex}命令；
% 另一种是\pkgx{biblatex}宏包，搭配\cmdx{biber}命令。
% 引用参考文献时，\tnx{cite}为上标样式，\tnx{parencite}为非上标样式。
% \subsection{参数设置}
% \label{参数设置}
% \changes{v0.5.1.1}{2022/04/06}{增加xdusetup配置文档}
% \changes{v1.30.0.1}{2022/06/20}{修改xdusetup配置文档}
% \begin{function}[added=2022-03-07]{\xdusetup}
%   \begin{syntax}
%     \tnx{xdusetup}=\argx{键值列表}
%   \end{syntax}
% \xduts{}提供了一系列选项，可自行配置。
% 载入文档类/宏包之后，以下所有选项均可通过统一的命令\tnx{xdusetup}来设置。
% \csx{xdusetup}的参数是一组由（英文）逗号隔开的选项列表，
% 下文中尖括号内列出了若干个允许的选项，其中加粗的为默认选项。
% 列表中的选项通常是\kvoptx{\metax{key}}{\metax{value}}的形式。
% \csx{xdusetup}采用\LaTeXiii{}风格的键值设置，
% 支持不同类型以及多种层次的选项设定。
% 键值列表中，“|=|”左右的空格不影响设置；
% 但需注意，参数列表中不可以出现空行。
% 一些选项包含子选项，如\optx{style}和\optx{info}等，
% 它们可以按如下两种等价方式来设定：
% \end{function}
% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,cjk-font,latin-font,info,title,author,department,abstract,keywords*}]
%   \xdusetup{
%     style = { cjk-font = fandol, latin-font = gyre },
%     info  = {
%       title      = {论如何让用户\\认真阅读文档},
%       author     = {张三},
%       department = {排版学院},
%       abstract   = {chapters/abstract-zh.tex},
%       keywords*  = {Dummy,Keywords,Here,it is}
%     }
%   }
% \end{latexexample}
% 或者
% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,cjk-font,latin-font,info,title,author,department,abstract,keywords*}]
%   \xdusetup{
%     style / cjk-font   = fandol,
%     style / latin-font = gyre,
%     info  / title      = {论如何让用户\\认真阅读文档},
%     info  / author     = {张三},
%     info  / department = {排版学院},
%     info  / abstract   = {chapters/abstract-zh.tex},
%     info  / keywords*  = {Dummy,Keywords,Here,it is}
%   }
% \end{latexexample}
% \subsection{字体选项}
% \label{字体选项}
% \begin{function}[added=2022-03-06]{style/cjk-font}
%   \begin{syntax}
%     \optx{style/cjk-font}=\metax{adobe|(fandol)|founder|sinotype|win|none}
%   \end{syntax}
% 设置中文字体，具体配置见\tabrefx{tab:cjk-font}。
% \end{function}
% \begin{optdesc}
%   \item[none] 关闭内置中文字体配置，需自行配置中文字体。
% \end{optdesc}
% \begin{table}
% \begin{threeparttable}
% \caption{中文字体配置}
% \label{tab:cjk-font}
% \centering
% \begin{tabularx}{\linewidth}{cccc}
% \toprule
% \strong{选项名称}   & \strong{罗马字体族}           & \strong{无衬线字体族} & \strong{打字机字体族} \\
% \midrule
% |adobe|\tnote{1}    & Adobe 宋体 Std/Adobe 楷体 Std & Adobe 黑体 Std        & Adobe 仿宋 Std        \\
% |fandol|            & FandolSong/FandolKai          & FandolHei             & FandolFang            \\
% |founder|\tnote{2}  & 方正书宋_GBK/方正楷体_GBK     & 方正黑体_GBK          & 方正仿宋_GBK          \\
% |sinotype|\tnote{3} & 华文宋体/华文楷体             & 华文细黑/华文黑体     & 华文仿宋              \\
% |win|\tnote{4}      & 中易宋体/中易楷体             & 中易黑体              & 中易仿宋              \\
% \bottomrule
% \end{tabularx}
% \begin{tablenotes}
% \item [1] \filex{adobesongstd-light.otf}、\filex{adobekaitistd-regular.otf}、\filex{adobeheitistd-regular.otf}和\filex{Adobe-Fangsong-Std-R-Font.otf}。
% \item [2] \filex{FZShuSong-Z01.ttf}、\filex{FZKai-Z03.ttf}、\filex{FZHei-B01.ttf}和\filex{FZFSK.TTF}。
% \item [3] \filex{STSONG.TTF}、\filex{STKAITI.TTF}、\filex{STXIHEI.TTF}、\filex{STHeiti.ttf}和\filex{STFANGSO.TTF}。
% \item [4] \filex{simsun.ttc}、\filex{simkai.ttf}、\filex{simhei.ttf}和\filex{simfang.ttf}。
% \end{tablenotes}
% \end{threeparttable}
% \end{table}
% \begin{function}[added=2022-04-01]{style/cjk-fake-bold}
%   \begin{syntax}
%     \optx{style/cjk-fake-bold}=\metax{伪粗体粗细程度}
%   \end{syntax}
% 设置中文字体伪粗体粗细程度。默认为\valuex{3}，对于部分存在对应粗体字体的中文字体，如FandolSong和FandolHei等，该选项不生效。
% \end{function}
% \begin{function}[added=2022-04-01]{style/cjk-fake-slant}
%   \begin{syntax}
%     \optx{style/cjk-fake-slant}=\metax{伪斜体倾斜程度}
%   \end{syntax}
% 设置中文字体伪斜体倾斜程度。默认为\valuex{0.2}。
% \end{function}
% \begin{function}[added=2022-03-06,updated=2022-05-06]{style/latin-font}
%   \begin{syntax}
%     \optx{style/latin-font}=\metax{tac|tacn|thcs|(gyre)|none}
%   \end{syntax}
% 设置英文字体，具体配置见\tabrefx{tab:latin-font}。
% \end{function}
% \begin{optdesc}
%   \item[none] 关闭内置英文字体配置，需自行配置英文字体。
% \end{optdesc}
% \begin{table}
% \begin{threeparttable}
% \caption{英文字体配置}
% \label{tab:latin-font}
% \centering
% \begin{tabularx}{\linewidth}{cYYY}
% \toprule
% \strong{选项名称} & \strong{罗马字体族} & \strong{无衬线字体族} & \strong{打字机字体族} \\
% \midrule
% |tac|\tnote{1}    & Times New Roman     & Arial                 & Consolas              \\
% |tacn|\tnote{2}   & Times New Roman     & Arial                 & Courier New           \\
% |thcs|\tnote{3}   & Times New Roman     & Helvetica             & Courier Std           \\
% |gyre|            & TeX Gyre Termes     & TeX Gyre Heros        & TeX Gyre Cursor       \\
% \bottomrule
% \end{tabularx}
% \begin{tablenotes}
% \item [1] \filex{times.ttf}、\filex{timesbd.ttf}、\filex{timesi.ttf}、\filex{timesbi.ttf}、\filex{arial.ttf}、\filex{arialbd.ttf}、\filex{ariali.ttf}、\filex{arialbi.ttf}、\filex{consola.ttf}、\filex{consolab.ttf}、\filex{consolai.ttf}和\filex{consolaz.ttf}。
% \item [2] \filex{times.ttf}、\filex{timesbd.ttf}、\filex{timesi.ttf}、\filex{timesbi.ttf}、\filex{arial.ttf}、\filex{arialbd.ttf}、\filex{ariali.ttf}、\filex{arialbi.ttf}、\filex{cour.ttf}、\filex{courbd.ttf}、\filex{couri.ttf}和\filex{courbi.ttf}。
% \item [3] \filex{times.ttf}、\filex{timesbd.ttf}、\filex{timesi.ttf}、\filex{timesbi.ttf}、\filex{Helvetica.ttf}、\filex{Helvetica~Bold.ttf}、\filex{Helvetica~Oblique.ttf}、\filex{Helvetica~Bold~Oblique.ttf}、\filex{CourierStd.otf}、\filex{CourierStd-Bold.otf}、\filex{CourierStd-Oblique.otf}和\filex{CourierStd-BoldOblique.otf}。
% \end{tablenotes}
% \end{threeparttable}
% \end{table}
% \begin{function}[added=2022-03-06,updated=2022-03-09]{style/math-font}
%   \begin{syntax}
%     \optx{style/math-font}=\metax{asana|cambria|(cm)|fira|garamond|lm|...|termes|xits|none}
%   \end{syntax}
% 设置数学字体，具体配置见\tabrefx{tab:math-font}。除Computer Modern字体外，均使用\pkgx{unicode-math}宏包调用字体。
% \end{function}
% \changes{v0.1.4.1}{2022/04/04}{数学字体风格介绍}
% \begin{optdesc}
%   \item[cambria] 微软Office预装的数学字体。
%   \item[fira] 无衬线数学字体。
%   \item[garamond] Garamond风格。
%   \item[lm] 基于Computer Modern风格。
%   \item[libertinus] Linux Libertine风格。
%   \item[stix] Times风格。
%   \item[dejavu] DejaVu风格。
%   \item[pagella] Palatino风格。
%   \item[termes] Times风格。
%   \item[xits] 基于STIX，Times风格，有粗体XITS Math Bold可用。
%   \item[none] 关闭内置数学字体配置，需自行配置数学字体。
% \end{optdesc}
% \begin{table}
% \begin{threeparttable}
% \caption{数学字体配置}
% \label{tab:math-font}
% \centering
% \begin{tabularx}{\linewidth}{cY}
% \toprule
% \strong{选项名称}  & \strong{字体名称}     \\
% \midrule
% |asana|            & Asana Math            \\
% |cambria|\tnote{1} & Cambria Math          \\
% |cm|               & Computer Modern       \\
% |fira|             & Fira Math             \\
% |garamond|         & Garamond Math         \\
% |lm|               & Latin Modern Math     \\
% |libertinus|       & Libertinus Math       \\
% |stix|             & STIX Math             \\
% |bonum|            & TeX Gyre Bonum Math   \\
% |dejavu|           & TeX Gyre DejaVu Math  \\
% |pagella|          & TeX Gyre Pagella Math \\
% |schola|           & TeX Gyre Schola Math  \\
% |termes|           & TeX Gyre Termes Math  \\
% |xits|             & XITS Math             \\
% \bottomrule
% \end{tabularx}
% \begin{tablenotes}
% \item [1] \filex{cambria.ttc}。
% \end{tablenotes}
% \end{threeparttable}
% \end{table}
% \begin{function}[added=2022-03-14]{style/unicode-math}
%   \begin{syntax}
%     \optx{style/unicode-math}=\argx{unicode-math宏包选项}
%   \end{syntax}
% 修改\pkgx{unicode-math}默认选项，具体配置参考\pkgx{unicode-math}宏包文档，仅在数学字体不为Computer Modern时有效。
% \end{function}
% \begin{function}[added=2022-03-07]{style/font-type}
%   \begin{syntax}
%     \optx{style/font-type}=\metax{(font)|file}
%   \end{syntax}
% 设置字体调用方式。
% \end{function}
% \begin{optdesc}
%   \item[font] 相应字体已安装，使用字体名称调用字体。
%   \item[file] 相应字体未安装，使用字体文件名称调用字体，适合Overleaf或TeXPage等在线平台，或不方便安装字体的情况。
% \end{optdesc}
% \begin{function}[added=2022-03-07]{style/font-path}
%   \begin{syntax}
%     \optx{style/font-path}=\argx{路径}
%   \end{syntax}
% 设置字体文件路径，即\metax{路径}目录内存储全部所需中文、英文和数学字体文件，仅在\optx{font-type}等于|file|时有效，默认值为\valuex{fonts}。
% \end{function}
% \subsection{英文字体}
% \label{英文字体}
% \begin{function}[added=2022-04-01]{style/en-cjk-font}
%   \begin{syntax}
%     \optx{style/en-cjk-font}=\metax{true|(false)}
%   \end{syntax}
% 切换字体族时，英文是否使用中文字体。主要作用于封面、章节标题、caption、页眉页脚、参考文献列表等。
% \end{function}
% \begin{optdesc}
%   \item[true] 英文使用相对应字体族的中文字体。
%   \item[false] 英文使用相对应字体族的英文字体。
% \end{optdesc}
% \subsection{语言配置}
% \label{语言配置}
% \begin{function}[added=2022-03-29]{style/language}
%   \begin{syntax}
%     \optx{style/language}=\metax{(zh)|en}
%   \end{syntax}
% 设置论文语言。
% \end{function}
% \begin{optdesc}
%   \item[zh] 中文。
%   \item[en] 英文。注意，研究生学位论文一二三级标题命令请参考\secrefx{英文研究生学位论文双语标题}。
% \end{optdesc}
% \subsection{参考文献配置}
% \label{参考文献配置}
% \begin{function}[added=2022-04-02,updated=2022-04-03]{style/bib-backend}
%   \begin{syntax}
%     \optx{style/bib-backend}=\metax{bibtex|(biblatex)}
%   \end{syntax}
% 设置参考文献支持方式。
% \end{function}
% \begin{optdesc}
%   \item[bibtex] 使用\bibtex{}处理文献，样式由\pkgx{natbib}宏包负责。
%   \item[biblatex] 使用\biber{}处理文献，样式由\pkgx{biblatex}宏包负责。
% \end{optdesc}
% \changes{v1.31.0.0}{2022/06/21}{修改\pkgx{biblatex}默认选项}
% \begin{function}[added=2022-06-21]{style/biblatex-option}
%   \begin{syntax}
%     \optx{style/biblatex-option}=\argx{biblatex宏包选项}
%   \end{syntax}
% 修改\pkgx{biblatex}默认选项，具体配置参考\filex{biblatex-gb7714-2015.pdf}，
% 仅在\optx{style/bib-backend}等于|biblatex|时有效。例如：
% \begin{latexexample}[morekeywords={\xdusetup},emph={[1]style,biblatex-option}]
%   \xdusetup{
%     style / biblatex-option = { gbnamefmt=quanpin }
%   }
% \end{latexexample}
% \end{function}
% \begin{function}[added=2022-04-02]{style/bib-resource}
% 已弃用，请使用\secrefx{信息录入}中的\optx{info/bib-resource}。
% \end{function}
% \subsection{页面配置}
% \label{页面配置}
% \begin{function}[added=2022-04-12]{style/symmetric-margin}
%   \begin{syntax}
%     \optx{style/symmetric-margin}=\metax{true|(false)}
%   \end{syntax}
% 设置左右页边距是否对称。
% \end{function}
% \begin{optdesc}
%   \item[true] 对称。
%   \item[false] 不对称。
% \end{optdesc}
% \begin{function}[added=2022-05-08]{style/page-vertical-align}
%   \begin{syntax}
%     \optx{style/page-vertical-align}=\metax{分散对齐|(顶部对齐)}
%   \end{syntax}
% 设置页面垂直方向的对齐方式。
% \end{function}
% \begin{optdesc}
%   \item[分散对齐] 页面高度均匀地填满，使每一页的底部直接对齐。
%   \item[顶部对齐] 页面中的内容保持它的自然高度，每一页的页面底部用空白填满。
% \end{optdesc}
% \subsection{交叉引用配置}
% \label{交叉引用配置}
% \begin{function}[added=2022-04-16,updated=2022-05-08]{style/ref-add-space}
%   \begin{syntax}
%     \optx{style/ref-add-space}=\metax{true|(false)}
%   \end{syntax}
% 是否自动调整\tnx{ref}和\tnx{pageref}两侧中英文间空白。
% \end{function}
% \begin{optdesc}
%   \item[true] 自动调整\tnx{ref}和\tnx{pageref}两侧中英文间空白。
% 未避免产生不正常的空白宽度，请不要在\tnx{ref}和\tnx{pageref}两侧输入空格。
% 仅在\optx{language}等于|zh|时有效。
% 请不要使用\pkgx{subcaption}宏包的提供的\tnx{subref}和\tnx{subref*}命令。
%   \item[false] 保持原始\tnx{ref}和\tnx{pageref}命令效果。
% \end{optdesc}
% \subsection{Caption配置}
% \label{Caption配置}
% \changes{v1.0.0.0}{2022/04/14}{设置图、表、算法标签与后面标题之间的间距}
% \begin{function}[added=2022-04-14]{style/caption-label-sep}
%   \begin{syntax}
%     \optx{style/caption-label-sep}=\argx{间距}
%   \end{syntax}
% 设置图、表、算法标签与后面标题之间的间距，默认值为\valuex{0.75em}。
% \end{function}
% \begin{function}[added=2022-04-03]{style/fig-label-sep}
% 已弃用。
% \end{function}
% \subsection{表格配置}
% \label{表格配置}
% \changes{v0.10.0.1}{2022/04/13}{补充表格内容字号文档说明}
% \begin{function}[added=2022-04-13,updated=2022-04-15]{style/table-small-font}
%   \begin{syntax}
%     \optx{style/table-small-font}=\metax{(true)|false}
%   \end{syntax}
% 设置表格内容字号是否为五号。
% \end{function}
% \begin{optdesc}
%   \item[true] 五号。
%   \item[false] 小四号。
% \end{optdesc}
% \subsection{算法配置}
% \label{算法配置}
% \begin{function}[added=2022-06-25]{style/algorithm-small-caption}
%   \begin{syntax}
%     \optx{style/algorithm-small-caption}=\metax{(true)|false}
%   \end{syntax}
% 设置算法Caption字号是否为五号。
% \end{function}
% \begin{optdesc}
%   \item[true] 五号。
%   \item[false] 小四号。
% \end{optdesc}
% \begin{function}[added=2022-04-15]{style/algorithm-small-font}
%   \begin{syntax}
%     \optx{style/algorithm-small-font}=\metax{(true)|false}
%   \end{syntax}
% 设置算法内容字号是否为五号。
% \end{function}
% \begin{optdesc}
%   \item[true] 五号。
%   \item[false] 小四号。
% \end{optdesc}
% \subsection{章节配置}
% \label{章节配置}
% \begin{function}[added=2022-04-05]{style/before-skip}
%   \begin{syntax}
%     \optx{style/before-skip}=\argx{间距列表}
%   \end{syntax}
% 设置章节标题前的垂直间距，默认值为\valuex{\{24pt, 18pt, 12pt, 12pt, 12pt, 12pt\}}，分别对应\tnx{chapter}、\tnx{section}、\tnx{subsection}、\tnx{subsubsection}、\tnx{paragraph}和\tnx{subparagraph}。
% \end{function}
% \begin{function}[added=2022-04-05]{style/after-skip}
%   \begin{syntax}
%     \optx{style/after-skip}=\argx{间距列表}
%   \end{syntax}
% 设置章节标题后的垂直间距，默认值为\valuex{\{18pt, 12pt, 6pt, 6pt, 6pt, 6pt\}}，分别对应\tnx{chapter}、\tnx{section}、\tnx{subsection}、\tnx{subsubsection}、\tnx{paragraph}和\tnx{subparagraph}。
% \end{function}
% \begin{function}[added=2022-04-11]
%   {
%     style/chap-zihao,
%     style/sec-zihao,
%     style/subsec-zihao,
%     style/subsubsec-zihao,
%     style/para-zihao,
%     style/subpara-zihao
%   }
%   \begin{syntax}
%     \optx{style/chap-zihao}=\metax{0|-0|1|-1|2|-2|3|-3|4|-4|5|-5|6|-6|7|8}
%     \optx{style/sec-zihao}=\metax{0|-0|1|-1|2|-2|3|-3|4|-4|5|-5|6|-6|7|8}
%     \optx{style/subsec-zihao}=\metax{0|-0|1|-1|2|-2|3|-3|4|-4|5|-5|6|-6|7|8}
%     \optx{style/subsubsec-zihao}=\metax{0|-0|1|-1|2|-2|3|-3|4|-4|5|-5|6|-6|7|8}
%     \optx{style/para-zihao}=\metax{0|-0|1|-1|2|-2|3|-3|4|-4|5|-5|6|-6|7|8}
%     \optx{style/subpara-zihao}=\metax{0|-0|1|-1|2|-2|3|-3|4|-4|5|-5|6|-6|7|8}
%   \end{syntax}
% 设置章节标题字号。
% 当论文语言为中文时，默认值分别为\valuex{3}、\valuex{4}、\valuex{4}、\valuex{4}、\valuex{4}、\valuex{4}。
% 当论文语言为英文时，默认值分别为\valuex{4}、\valuex{-4}、\valuex{-4}、\valuex{-4}、\valuex{-4}、\valuex{-4}。
% \end{function}
% \begin{optdesc}
%   \item[0] 初号
%   \item[−0] 小初号
%   \item[1] 一号
%   \item[-1] 小一号
%   \item[2] 二号
%   \item[-2] 小二号
%   \item[3] 三号
%   \item[-3] 小三号
%   \item[4] 四号
%   \item[-4] 小四号
%   \item[5] 五号
%   \item[-5] 小五号
%   \item[6] 六号
%   \item[-6] 小六号
%   \item[7] 七号
%   \item[8] 八号
% \end{optdesc}
% \subsection{对照表配置}
% \label{对照表配置}
% \begin{function}[added=2022-06-05]{style/customize-los,style/customize-loa}
%   \begin{syntax}
%     \optx{style/customize-los}=\metax{(true)|false}
%     \optx{style/customize-loa}=\metax{(true)|false}
%   \end{syntax}
% 是否完全自定义符号对照表和缩略语对照表。
% \end{function}
% \begin{optdesc}
%   \item[true] 完全自定义符号对照表和缩略语对照表，对照表由用户自行排版。
% 在\secrefx{信息录入}中提及的\optx{info/los}和\optx{info/loa}中对应的文件中可以通过表格或列表等方式实现对照表，例如：
% \begin{latexexample}[emph={[1]tabular}]
%   \begin{tabular}{ll}
%     符号         & 符号名称 \\
%     $\pi$        & 圆周率   \\
%     $\mathbb{R}$ & 实数     \\
%   \end{tabular}
% \end{latexexample}
%   \item[false] 使用内置的基于\envx{longtblr}环境（\pkgx{tabularray}宏包）实现的
% 符号对照表和缩略语对照表样式。
% 在\secrefx{信息录入}中提及的\optx{info/los}和\optx{info/loa}中对应的文件仅需填写相应列数的内容即可，例如：
% \begin{latexexample}
%   $\pi$        & 圆周率 \\
%   $\mathbb{R}$ & 实数   \\
% \end{latexexample}
% \end{optdesc}
% \changes{v2.10.2.1}{2022/06/28}{修改对照表默认列格式}
% \begin{function}[added=2022-06-05,updated=2022-06-28]{style/colspec-los,style/colspec-loa}
%   \begin{syntax}
%     \optx{style/colspec-los}=\argx{符号对照表列格式}
%     \optx{style/colspec-loa}=\argx{缩略语对照表列格式}
%   \end{syntax}
% 设置符号对照表和缩略语对照表列格式，
% 符号对照表列格式默认值为\valuex{Q[l,h]X[l,h]}。
% 缩略语对照表列格式默认值为\valuex{Q[l,h]X[l,h]X[l,h]}。
% 语法参考\pkgx{tabularray}宏包\cmdx{colspec}选项。
% 仅在\optx{style/customize-los}和\optx{style/customize-loa}等于\valuex{false}时有效。
% \end{function}
% \begin{function}[added=2022-06-05]{style/title-row-los,style/title-row-loa}
%   \begin{syntax}
%     \optx{style/title-row-los}=\metax{true|(false)}
%     \optx{style/title-row-loa}=\metax{true|(false)}
%   \end{syntax}
% 是否每页均显示符号对照表和缩略语对照表标题行。
% 仅在\optx{style/customize-los}和\optx{style/customize-loa}等于\valuex{false}时有效。
% \end{function}
% \begin{optdesc}
%   \item[true] 每页均显示符号对照表和缩略语对照表标题行。
%   \item[false] 仅第一页显示显示符号对照表和缩略语对照表标题行。
% \end{optdesc}
% \changes{v1.26.0.0}{2022/06/07}{作者简介配置}
% \subsection{作者简介配置}
% \label{作者简介配置}
% \changes{v1.28.4.1}{2022/06/19}{修正作者简介示例}
% \begin{function}[added=2022-06-07]{style/customize-edubg,style/customize-resresult}
%   \begin{syntax}
%     \optx{style/customize-edubg}=\metax{(true)|false}
%     \optx{style/customize-resresult}=\metax{(true)|false}
%   \end{syntax}
% 是否完全自定义作者简介中教育背景和攻读硕士学位期间的研究成果。
% \end{function}
% \begin{optdesc}
%   \item[true] 完全自定义作者简介中教育背景和攻读硕士学位期间的研究成果，由用户自行排版。
% 在\secrefx{信息录入}中提及的\optx{info/bio}中对应的文件中
% 可以通过段落、表格或列表等方式排版教育背景和攻读硕士学位期间的研究成果，例如：
% \begin{latexexample}[moretexcs={\subsection}]
%   \section{基本情况}
%   张三，男，陕西西安人，1982年8月出生，西安电子科技大学XX学院XX专业2008级硕士研究生。
%   \section{教育背景}
%   2001.08～2005.07 西安电子科技大学，本科，专业：电子信息工程
%   \par
%   2008.08～ 西安电子科技大学，硕士研究生，专业：电磁场与微波技术
%   \section{攻读硕士学位期间的研究成果}
%   \subsection{发表学术论文}
%   [1] XXX, XXX, XXX. Rapid development technique for drip irrigation emitters[J]. RP Journal,UK.,2003,9(2): 104-110.(SCI: 672CZ, EI: 03187452127)
%   \par
%   [2] XXX, XXX, XXX. 基于快速成型制造的滴管快速制造技术研究[J]. 西安交通大学学报, 2001, 15(9): 935-939. (EI: 02226959521)
%   \subsection{申请（授权）专利}
%   [1] XXX, XXX, XXX等. 专利名称: 国别,专利号[P]. 出版日期.
%   \subsection{参与科研项目及获奖}
%   [1] XXX项目, 项目名称, 起止时间, 完成情况, 作者贡献。
%   \par
%   [2] XXX, XXX, XXX等. 科研项目名称. 陕西省科技进步三等奖, 获奖日期.
% \end{latexexample}
%   \item[false] 使用内置的基于\envx{tblr}环境（\pkgx{tabularray}宏包）实现的
% 教育背景表格环境\envx{edubg}和基于\envx{enumerate}环境（\pkgx{enumitem}宏包）实现的
% 攻读硕士学位期间的研究成果列表环境\envx{resresult}。
% 在\secrefx{信息录入}中提及的\optx{info/bio}中对应的文件中使用\envx{edubg}和\envx{resresult}环境即可，例如：
% \begin{latexexample}[moretexcs={\subsection},emph={[1]edubg,resresult}]
%   \section{基本情况}
%   张三，男，陕西西安人，1982年8月出生，西安电子科技大学XX学院XX专业2008级硕士研究生。
%   \section{教育背景}
%   \begin{edubg}
%   2001.08～2005.07 & 西安电子科技大学，本科，专业：电子信息工程\\
%   2008.08～ & 西安电子科技大学，硕士研究生，专业：电磁场与微波技术\\
%   \end{edubg}
%   \section{攻读硕士学位期间的研究成果}
%   \subsection{发表学术论文}
%   \begin{resresult}
%   \item XXX, XXX, XXX. Rapid development technique for drip irrigation emitters[J]. RP Journal,UK.,2003,9(2): 104-110.(SCI: 672CZ, EI: 03187452127)
%   \item XXX, XXX, XXX. 基于快速成型制造的滴管快速制造技术研究[J]. 西安交通大学学报, 2001, 15(9): 935-939. (EI: 02226959521)
%   \end{resresult}
%   \subsection{申请（授权）专利}
%   \begin{resresult}
%   \item XXX, XXX, XXX等. 专利名称: 国别,专利号[P]. 出版日期.
%   \end{resresult}
%   \subsection{参与科研项目及获奖}
%   \begin{resresult}
%   \item XXX项目, 项目名称, 起止时间, 完成情况, 作者贡献。
%   \item XXX, XXX, XXX等. 科研项目名称. 陕西省科技进步三等奖, 获奖日期.
%   \end{resresult}
% \end{latexexample}
% \end{optdesc}
% \subsection{附录环境}
% \label{附录环境}
% \changes{v1.29.0.0}{2022/06/19}{研究生学位论文附录环境}
% \begin{function}[added=2022-04-04,updated=2022-06-19]{appendixes}
% 本科生毕业设计附录位于参考文献后，即在\tnx{backmatter}后。
% \begin{latexexample}[moretexcs={\backmatter,\chapter},emph={[1]appendixes}]
%   \chapter{这是正文章节}
%   \backmatter
%   \begin{appendixes}
%       \chapter{这是一个附录}
%       \chapter{这是另一个附录}
%   \end{appendixes}
% \end{latexexample}
% 研究生学位论文附录位于参考文献前，即在\tnx{backmatter}前。
% \begin{latexexample}[moretexcs={\backmatter,\chapter},emph={[1]appendixes}]
%   \chapter{这是正文章节}
%   \begin{appendixes}
%       \chapter{这是一个附录}
%       \chapter{这是另一个附录}
%   \end{appendixes}
%   \backmatter
% \end{latexexample}
% \end{function}
% \subsection{信息录入}
% \label{信息录入}
% \changes{v1.9.0.0}{2022/05/03}{增加信息录入选项分类表}
% \changes{v1.10.3.1}{2022/05/04}{移除专业博士校外导师信息录入}
% 用户根据\tabrefx{tblr:info}选择相应的选项并使用\secrefx{参数设置}中的方式进行信息录入。
% \begin{tblr}
% [
% long,
% caption = {信息录入选项分类},
% label = {tblr:info}
% ]
% {
% width      = \linewidth,
% colspec    = lX[c]X[c]X[c]X[c]X[c]X[c],
% cell{1}{1} = {r = 2}{},
% cell{1}{2} = {c = 2}{},
% cell{1}{4} = {c = 2}{},
% cell{1}{6} = {c = 2}{},
% hline{1,Z} = {.08em},
% hline{2} = {2-3}{.08em, leftpos = -1, rightpos = -1, endpos},
% hline{2} = {4-5}{.08em, leftpos = -1, rightpos = -1, endpos},
% hline{2} = {6-7}{.08em, leftpos = -1, rightpos = -1, endpos},
% hline{3} = {.08em},
% cell{odd[3-Z]}{1-Z} = {gray9},
% cell{3-Z}{1} = {cmd = \texttt},
% rowhead = 2
% }
%                              & 本科   &        & 硕士   &        & 博士   &        \\
%                              & 校内   & 校外   & 学术   & 专业   & 学术   & 专业   \\
% graduate-type                &        &        & \cmark & \cmark & \cmark & \cmark \\
% degree-type                  &        &        & \cmark & \cmark & \cmark & \cmark \\
% degree                       &        &        & \cmark & \cmark & \cmark & \cmark \\
% degree*                      &        &        &        & \cmark &        &        \\
% title                        & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% title*                       &        &        & \cmark & \cmark & \cmark & \cmark \\
% department                   & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% major                        & \cmark & \cmark & \cmark &        & \cmark &        \\
% major*                       &        &        & \cmark &        & \cmark &        \\
% sub-major                    &        &        & \cmark &        & \cmark &        \\
% domain                       &        &        &        & \cmark &        & \cmark \\
% author                       & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% author*                      &        &        & \cmark & \cmark & \cmark & \cmark \\
% supervisor                   & \cmark &        & \cmark & \cmark & \cmark & \cmark \\
% supervisor*                  &        &        & \cmark & \cmark & \cmark & \cmark \\
% supervisor-department        & \cmark &        &        &        &        &        \\
% supervisor-enterprise        &        & \cmark &        & \cmark &        &        \\
% supervisor-enterprise*       &        &        &        & \cmark &        &        \\
% supervisor-school            &        & \cmark &        &        &        &        \\
% supervisor-title             &        &        & \cmark & \cmark & \cmark & \cmark \\
% supervisor-title*            &        &        & \cmark & \cmark & \cmark & \cmark \\
% supervisor-enterprise-title  &        &        &        & \cmark &        &        \\
% supervisor-enterprise-title* &        &        &        & \cmark &        &        \\
% class-id                     & \cmark & \cmark &        &        &        &        \\
% student-id                   & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% clc                          &        &        & \cmark & \cmark & \cmark & \cmark \\
% secret-level                 &        &        & \cmark & \cmark & \cmark & \cmark \\
% secret-year                  &        &        & \cmark & \cmark & \cmark & \cmark \\
% submit-date                  &        &        & \cmark & \cmark & \cmark & \cmark \\
% statement-scan               &        &        & \cmark & \cmark & \cmark & \cmark \\
% abstract                     & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% abstract*                    & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% keywords                     & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% keywords*                    & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% los                          &        &        & \cmark & \cmark & \cmark & \cmark \\
% loa                          &        &        & \cmark & \cmark & \cmark & \cmark \\
% bib-resource                 & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% acknowledgements             & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\
% bio                          &        &        & \cmark & \cmark & \cmark & \cmark \\
% \end{tblr}
% \changes{v1.9.0.0}{2022/05/03}{增加研究生信息录入选项文档}
% \begin{function}[added=2022-05-02,updated=2022-05-03]{info/graduate-type}
%   \begin{syntax}
%     \optx{info/graduate-type}=\metax{(硕士)|博士}
%   \end{syntax}
% 设置研究生类型。
% \end{function}
% \begin{optdesc}
%   \item[硕士] 硕士研究生。
%   \item[博士] 博士研究生。
% \end{optdesc}
% \begin{function}[added=2022-05-03]{info/degree-type}
%   \begin{syntax}
%     \optx{info/degree-type}=\metax{(学术)|专业}
%   \end{syntax}
% 设置研究生学位类型。
% \end{function}
% \begin{optdesc}
%   \item[学术] 学术学位。
%   \item[专业] 专业学位。
% \end{optdesc}
% \begin{function}[added=2022-05-03]{info/degree,info/degree*}
%   \begin{syntax}
%     \optx{info/degree}=\argx{研究生学位类别中文名称}
%     \optx{info/degree*}=\argx{研究生学位类别英文名称}
%   \end{syntax}
% 设置研究生学位类别。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-30]{info/title,info/title*}
%   \begin{syntax}
%     \optx{info/title}=\argx{论文中文标题}
%     \optx{info/title*}=\argx{论文英文标题}
%   \end{syntax}
% 设置论文标题。建议使用换行控制符（|\\|）手动制定换行位点，
% 本科毕业设计论文最多两行，研究生学位论文无限制。
% \end{function}
% \begin{function}[added=2022-04-01]{info/department}
%   \begin{syntax}
%     \optx{info/department}=\argx{院系名称}
%   \end{syntax}
% 设置院系名称。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/major,info/major*}
%   \begin{syntax}
%     \optx{info/major}=\argx{专业名称/一级学科名称}
%     \optx{info/major*}=\argx{一级学科英文名称}
%   \end{syntax}
% 设置专业名称/一级学科名称。
% \end{function}
% \begin{function}[added=2022-05-03]{info/sub-major}
%   \begin{syntax}
%     \optx{info/sub-major}=\argx{二级学科名称}
%   \end{syntax}
% 设置二级学科名称。
% \end{function}
% \begin{function}[added=2022-05-03]{info/domain}
%   \begin{syntax}
%     \optx{info/domain}=\argx{领域}
%   \end{syntax}
% 设置领域名称。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/author,info/author*}
%   \begin{syntax}
%     \optx{info/author}=\argx{作者姓名}
%     \optx{info/author*}=\argx{作者姓名拼音}
%   \end{syntax}
% 设置作者姓名。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/supervisor,info/supervisor*}
%   \begin{syntax}
%     \optx{info/supervisor}=\argx{导师姓名}
%     \optx{info/supervisor*}=\argx{导师姓名拼音}
%   \end{syntax}
% 设置导师姓名。
% \end{function}
% \begin{function}[added=2022-04-01]{info/supervisor-department}
%   \begin{syntax}
%     \optx{info/supervisor-department}=\argx{院内导师姓名}
%   \end{syntax}
% 设置院内导师姓名。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/supervisor-enterprise,info/supervisor-enterprise*}
%   \begin{syntax}
%     \optx{info/supervisor-enterprise}=\argx{校外导师姓名}
%     \optx{info/supervisor-enterprise*}=\argx{校外导师姓名拼音}
%   \end{syntax}
% 设置校外导师姓名。
% \end{function}
% \begin{function}[added=2022-04-01]{info/supervisor-school}
%   \begin{syntax}
%     \optx{info/supervisor-school}=\argx{校内导师姓名}
%   \end{syntax}
% 设置校内导师姓名。
% \end{function}
% \begin{function}[added=2022-05-03]{info/supervisor-title,info/supervisor-title*}
%   \begin{syntax}
%     \optx{info/supervisor-title}=\argx{导师职称}
%     \optx{info/supervisor-title*}=\argx{导师职称英文名称}
%   \end{syntax}
% 设置导师职称。
% \end{function}
% \begin{function}[added=2022-05-03]{info/supervisor-enterprise-title,info/supervisor-enterprise-title*}
%   \begin{syntax}
%     \optx{info/supervisor-enterprise-title}=\argx{校外导师职称}
%     \optx{info/supervisor-enterprise-title*}=\argx{校外导师职称英文名称}
%   \end{syntax}
% 设置校外导师职称。
% \end{function}
% \begin{function}[added=2022-04-01]{info/class-id}
%   \begin{syntax}
%     \optx{info/class-id}=\argx{作者班级号}
%   \end{syntax}
% 设置作者班级号。
% \end{function}
% \begin{function}[added=2022-04-01]{info/student-id}
%   \begin{syntax}
%     \optx{info/student-id}=\argx{作者学号}
%   \end{syntax}
% 设置作者学号。
% \end{function}
% \begin{function}[added=2022-05-03]{info/clc}
%   \begin{syntax}
%     \optx{info/clc}=\argx{中图分类号}
%   \end{syntax}
% 设置中图分类号。
% \end{function}
% \begin{function}[added=2022-05-03]{info/secret-level}
%   \begin{syntax}
%     \optx{info/secret-level}=\metax{秘密|(公开)}
%   \end{syntax}
% 设置密级。
% \end{function}
% \begin{function}[added=2022-05-30]{info/secret-year}
%   \begin{syntax}
%     \optx{info/secret-year}=\argx{保密年限}
%   \end{syntax}
% 设置保密年限，仅在\optx{secret-level}等于|秘密|时有效。
% \end{function}
% \changes{v1.17.0.1}{2022/05/29}{研究生学位论文提交日期格式}
% \begin{function}[added=2022-05-03,updated=2022-05-29]{info/submit-date}
%   \begin{syntax}
%     \optx{info/submit-date}=\argx{yyyy-mm}
%   \end{syntax}
% 设置提交日期，如果留空，则自动使用编译当天年份和月份。
% \end{function}
% \changes{v2.1.0.0}{2022/06/22}{声明页扫描文件路径}
% \begin{function}[added=2022-06-22]{info/statement-scan}
%   \begin{syntax}
%     \optx{info/statement-scan}=\argx{学位论文独创性声明和关于论文使用授权的说明页扫描文件路径}
%   \end{syntax}
% 设置学位论文独创性声明和关于论文使用授权的说明页扫描文件路径。
% \end{function}
% \changes{v2.2.0.0}{2022/06/23}{声明页签名文件路径}
% \begin{function}[added=2022-06-23]{info/statement-sign}
%   \begin{syntax}
%     \optx{info/statement-sign}=\argx{文件路径1,文件路径2,文件路径3,文件路径4,文件路径5,文件路径6}
%   \end{syntax}
% 设置声明页签名文件路径。
% 文件支持格式与\tnx{includegraphics}一致，建议文件为透明背景且仅有黑色，并尽量减少边距。
% \end{function}
% \begin{optdesc}
%   \item[文件路径1] 学位论文独创性声明本人签名文件路径。
%   \item[文件路径2] 学位论文独创性声明日期文件路径。
%   \item[文件路径3] 关于论文使用授权的说明本人签名文件路径。
%   \item[文件路径4] 关于论文使用授权的说明日期文件路径。
%   \item[文件路径5] 关于论文使用授权的说明导师签名文件路径。
%   \item[文件路径6] 关于论文使用授权的说明日期文件路径。
% \end{optdesc}
% \begin{function}[added=2022-04-02]{info/abstract,info/abstract*}
%   \begin{syntax}
%     \optx{info/abstract}=\argx{中文摘要文件路径}
%     \optx{info/abstract*}=\argx{英文摘要文件路径}
%   \end{syntax}
% 设置摘要文件路径，相应文件内仅撰写摘要内容，无需任何环境。
% \end{function}
% \begin{function}[added=2022-04-02]{info/keywords,info/keywords*}
%   \begin{syntax}
%     \optx{info/keywords}=\argx{中文关键词}
%     \optx{info/keywords*}=\argx{英文关键词}
%   \end{syntax}
% 设置关键词，关键词之间需要使用英文半角逗号隔开。
% \end{function}
% \changes{v1.22.0.0}{2022/06/05}{符号对照表文件路径}
% \begin{function}[added=2022-06-05]{info/los}
%   \begin{syntax}
%     \optx{info/los}=\argx{符号对照表文件路径}
%   \end{syntax}
% 设置符号对照表文件路径。
% \end{function}
% \changes{v1.22.0.0}{2022/06/05}{缩略语对照表文件路径}
% \begin{function}[added=2022-06-05]{info/loa}
%   \begin{syntax}
%     \optx{info/loa}=\argx{缩略语对照表文件路径}
%   \end{syntax}
% 设置缩略语对照表文件路径。
% \end{function}
% \changes{v2.0.0.0}{2022/06/21}{修改参考文献文件路径选项名称}
% \begin{function}[added=2022-06-21]{info/bib-resource}
%   \begin{syntax}
%     \optx{info/bib-resource}=\argx{参考文献文件路径}
%   \end{syntax}
% 设置参考文献\filex{.bib}文件路径，多个文件之间需要使用英文半角逗号隔开。
% \end{function}
% \begin{function}[added=2022-04-02]{info/acknowledgements}
%   \begin{syntax}
%     \optx{info/acknowledgements}=\argx{致谢文件路径}
%   \end{syntax}
% 设置致谢文件路径，相应文件内仅撰写致谢内容，无需任何环境。
% \end{function}
% \begin{function}[added=2022-06-07]{info/bio}
%   \begin{syntax}
%     \optx{info/bio}=\argx{作者简介路径}
%   \end{syntax}
% 设置作者简介文件路径，文件内容可参考\secrefx{作者简介配置}中的示例。
% \end{function}
% \changes{v1.26.11.2}{2022/06/18}{研究生信息推荐值}
% \subsubsection{研究生信息推荐值}
% \label{研究生信息推荐值}
% 以下研究生信息推荐值均来自
% 《西安电子科技大学研究生学位论文模板（2015年修订版）-2019.03修订》
% 和《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板（2015年版）-2019.03修订》，
% 无任何修改，仅供参考。
% \setlength\parindent{0pt}
% \begin{itemize}
% \item \optx{degree} (非专业硕士)
% \begin{itemize}
% \item 工学硕士
% \item 工学博士
% \item 哲学硕士
% \item 经济学硕士
% \item 法学硕士
% \item 教育学硕士
% \item 文学硕士
% \item 理学硕士
% \item 理学博士
% \item 军事学硕士
% \item 军事学博士
% \item 管理学硕士
% \item 管理学博士
% \end{itemize}
% \item \optx{degree} (专业硕士)
% \begin{itemize}
% \item 金融硕士
% \item 应用统计硕士
% \item 翻译硕士
% \item 工程硕士
% \item 工商管理硕士
% \item 公共管理硕士
% \end{itemize}
% \item \optx{degree*}
% \begin{itemize}
% \item Finance
% \item Applied Statistics
% \item Translation
% \item Engineering
% \item Business Administration
% \item Public Administration
% \end{itemize}
% \item \optx{department}
% \begin{itemize}
% \item 通信工程学院
% \item 电子工程学院
% \item 计算机科学与技术学院
% \item 机电工程学院
% \item 物理与光电工程学院
% \item 经济与管理学院
% \item 数学与统计学院
% \item 微电子学院
% \item 外国语学院
% \item 生命科学技术学院
% \item 空间科学与技术学院
% \item 先进材料与纳米科技学院
% \item 网络与信息安全学院
% \item 人文学院
% \item 马克思主义学院
% \item 人工智能学院
% \end{itemize}
% \item \optx{major}
% \begin{itemize}
% \item 哲学
% \item 应用经济学
% \item 马克思主义理论
% \item 教育学
% \item 体育学
% \item 外国语言文学
% \item 数学
% \item 物理学
% \item 统计学
% \item 力学
% \item 机械工程
% \item 光学工程
% \item 仪器科学与技术
% \item 材料科学与工程
% \item 电气工程
% \item 电子科学与技术
% \item 信息与通信工程
% \item 控制科学与工程
% \item 计算机科学与技术
% \item 化学工程与技术
% \item 交通运输工程
% \item 环境科学与工程
% \item 生物医学工程
% \item 软件工程
% \item 军队指挥学
% \item 管理科学与工程
% \item 工商管理
% \item 公共管理
% \item 图书情报与档案管理
% \item 网络空间安全
% \end{itemize}
% \item \optx{major*}
% \begin{itemize}
% \item Philosophy
% \item Applied Economics
% \item Marxist Theory
% \item Education Science
% \item Science of Physical Culture and Sports
% \item Foreign Languages and Literature
% \item Mathematics
% \item Physics
% \item Statistics
% \item Mechanics
% \item Mechanical Engineering
% \item Optical Engineering
% \item Instrument Science and Technology
% \item Materials Science and Engineering
% \item Electrical Engineering
% \item Electronics Science and Technology
% \item Information and Communications Engineering
% \item Control Science and Engineering
% \item Computer Science and Technology
% \item Chemical Engineering and Technology
% \item Communication and Transportation Engineering
% \item Environmental Science and Engineering
% \item Biomedical Engineering
% \item Software Engineering
% \item Science of Command
% \item Management Science and Engineering
% \item Business Administration
% \item Public Management
% \item Science of Library, Information and Archival
% \item Cyber Security
% \end{itemize}
% \item \optx{sub-major}
% \begin{itemize}
% \item 美学
% \item 宗教学
% \item 国民经济学
% \item 金融学
% \item 产业经济学
% \item 马克思主义基本原理
% \item 思想政治教育
% \item 高等教育学
% \item 教育技术学
% \item 教育哲学
% \item 体育教育训练学
% \item 英语语言文学
% \item 外国语言学及应用语言学
% \item 计算数学
% \item 概率论与数理统计
% \item 应用数学
% \item 运筹学与控制论
% \item 等离子体物理
% \item 凝聚态物理
% \item 光学
% \item 无线电物理
% \item 统计学
% \item 工程力学
% \item 机械制造及其自动化
% \item 机械电子工程
% \item 机械设计及理论
% \item 电子机械科学与技术
% \item 工业设计
% \item 光学工程
% \item 精密仪器及机械
% \item 测试计量技术及仪器
% \item 材料物理与化学
% \item 材料学
% \item 电机与电器
% \item 电力电子与电力传动
% \item 物理电子学
% \item 电路与系统
% \item 微电子学与固体电子学
% \item 电磁场与微波技术
% \item 信息对抗技术
% \item 集成电路系统设计
% \item 通信与信息系统
% \item 信号与信息处理
% \item 智能信息处理
% \item 空间信息科学与技术
% \item 控制理论与控制工程
% \item 检测技术与自动化装置
% \item 系统工程
% \item 模式识别与智能系统
% \item 导航、制导与控制
% \item 计算机系统结构
% \item 计算机软件与理论
% \item 计算机应用技术
% \item 应用化学
% \item 交通信息工程及控制
% \item 环境科学
% \item 环境工程
% \item 生物医学工程
% \item 生物材料与细胞工程
% \item 软件工程
% \item 软件工程技术
% \item 军事通信学
% \item 密码学
% \item 管理科学与工程
% \item 管理哲学
% \item 会计学
% \item 企业管理
% \item 技术经济及管理
% \item 行政管理
% \item 图书馆学
% \item 情报学
% \item 光通信
% \item 信息安全
% \item 生物信息科学与技术
% \item 机器人技术
% \item 遥感信息科学与技术
% \item 空间科学与技术
% \item 马克思主义中国化研究
% \item 外国文学
% \item 翻译学
% \item 基础数学
% \item 流体力学
% \item 固体力学
% \item 智能机电系统及测控技术
% \item 空间科学仪器与电磁实验技术
% \item 飞行器测控与导航制导
% \item 智能检测与新型传感器
% \end{itemize}
% \item \optx{domain}
% \begin{itemize}
% \item 金融
% \item 应用统计
% \item 英语笔译
% \item 机械工程
% \item 光学工程
% \item 仪器仪表工程
% \item 材料工程
% \item 电子与通信工程
% \item 集成电路工程
% \item 控制工程
% \item 计算机技术
% \item 软件工程
% \item 生物医学工程
% \item 航天工程
% \item 项目管理
% \item 物流工程
% \item 工商管理
% \item 公共管理
% \end{itemize}
% \item \optx{supervisor-title}
% \begin{itemize}
% \item 教授
% \item 副教授
% \end{itemize}
% \item \optx{supervisor-title*}
% \begin{itemize}
% \item Professor
% \item Associate Professor
% \end{itemize}
% \item \optx{supervisor-enterprise-title}
% \begin{itemize}
% \item 研究员
% \item 副研究员
% \item 高工
% \end{itemize}
% \item \optx{supervisor-enterprise-title*}
% \begin{itemize}
% \item Research Fellow
% \item Associate Research Fellow
% \item Senior Engineer
% \end{itemize}
% \end{itemize}
% \setlength\parindent{2em}
% \subsection{页面和信息移除}
% \label{页面和信息移除}
% \begin{function}[added=2022-06-26]{style/remove-page}
%   \begin{syntax}
%     \optx{style/remove-page}=\metax{封面|提名页|声明页|摘要|索引|对照表|目录|附录|参考文献|致谢|作者简介}
%   \end{syntax}
% 设置移除的页面，可多选，多个值之间需要使用英文半角逗号隔开。
% \end{function}
% \begin{optdesc}
%   \item[提名页] 中英文提名页。
%   \item[摘要] 中英文摘要。
%   \item[索引] 图片索引和表格索引。
%   \item[对照表] 符号对照表和缩略语对照表。
% \end{optdesc}
% \begin{function}[added=2022-06-26]{style/remove-header}
%   \begin{syntax}
%     \optx{style/remove-header}=\metax{true|(false)}
%   \end{syntax}
% 设置是否移除页眉。
% \end{function}
% \begin{function}[added=2022-06-26]{style/remove-footer}
%   \begin{syntax}
%     \optx{style/remove-footer}=\metax{true|(false)}
%   \end{syntax}
% 设置是否移除页脚。
% \end{function}
% \begin{function}[added=2022-06-26]{style/anonymous}
%   \begin{syntax}
%     \optx{anonymous}=\metax{true|(false)}
%   \end{syntax}
% 设置是否开启匿名，与\secrefx{额外命令}中的\tnx{anon}搭配使用。
% \end{function}
% \subsection{额外命令}
% \label{额外命令}
% \subsubsection{\tn{noauxwrite}}
% \label{noauxwrite}
% \begin{function}[added=2022-05-13]{\noauxwrite}
%   \begin{syntax}
%     \tn{noauxwrite}\marg{参考文献引用命令}
%   \end{syntax}
% \tnx{noauxwrite}允许添加不影响现有引用列表顺序的引用。
% 一个简单的例子如下所示：
% \begin{latexexample}[moretexcs={\noauxwrite,\caption,\parencite}]
%   \caption{本文与文献\noauxwrite{\parencite{某文献}}计算开销对比}
% \end{latexexample}
% \end{function}
% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文双语标题}
% \subsubsection{英文研究生学位论文双语标题}
% \label{英文研究生学位论文双语标题}
% \begin{function}[added=2022-06-20]{\chapter,\section,\subsection}
%   \begin{syntax}
%     \tn{chapter}\marg{英文标题}\marg{中文标题}
%     \tn{section}\marg{英文标题}\marg{中文标题}
%     \tn{subsection}\marg{英文标题}\marg{中文标题}
%   \end{syntax}
% 在英文研究生学位论文中一二三级标题为中英双语，其他级别标题为英文。
% 一个简单的例子如下所示：
% \begin{latexexample}[moretexcs={\chapter,\section,\subsection,\subsubsection,\paragraph,\subparagraph}]
%   \chapter{This Is Chapter}{这是一级标题}
%   \section{This Is Section}{这是二级标题}
%   \subsection{This Is Subsection}{这是三级标题}
%   \subsubsection{This Is Subsubsection}
%   \paragraph{This Is Paragraph}
%   \subparagraph{This Is Subparagraph}
% \end{latexexample}
% \end{function}
% \subsubsection{匿名命令}
% \label{匿名命令}
% \begin{function}[added=2022-06-26]{\anon}
%   \begin{syntax}
%     \tn{anon}\oarg{匿名内容}\marg{非匿名内容}
%   \end{syntax}
% 根据\optx{style/anonymous}的状态来显示相应的\metax{匿名内容}和\metax{非匿名内容}。
% 其中\oargx{匿名内容}为可选参数，默认为XXX。
% 一个简单的例子如下所示：
% \begin{latexexample}[moretexcs={\anon}]
%   \anon[XX]{张三}
% \end{latexexample}
% 当\optx{style/anonymous}为\valuex{true}，输出张三；当\optx{style/anonymous}为\valuex{false}，输出XX。
% \end{function}
% \subsection{额外功能}
% \label{额外功能}
% \changes{v1.26.11.1}{2022/06/17}{带教导师与挂名导师}
% \subsubsection{带教导师与挂名导师}
% 已和学位办确认，对于研究生，如挂名导师与带教导师不是一人的，
% 仅需填写带教导师，无需填写挂名导师。
% 如有特殊需求，需要填写两位老师，
% 可在\optx{info/supervisor}、\optx{info/supervisor*}、
% \optx{info/supervisor-title}和\optx{info/supervisor-title*}中
% 使用逗号分隔两位老师的信息。
% \changes{v2.10.1.1}{2022/06/26}{相似性检测、盲审和抽查评估}
% \subsubsection{相似性检测、盲审和抽查评估}
% 对于相似性检测、盲审和抽查评估，主要分为两种操作，
% 一种是页面移除，另外一种是信息的隐藏和替换。
% 页面移除请参考\secrefx{页面和信息移除}，
% 信息隐藏请自行删除或注释相应的信息录入选项，
% 信息替换请自行修改相应的信息录入选项；
% 作者简介部分的信息匿名请参考\secrefx{匿名命令}。
% 用户根据学校和学院的具体要求，
% 组合使用以上两种操作来生成符合相似性检测、盲审和抽查评估要求的论文。
% \section{贡献者}
% \xduts{}的开发过程中，唯一维护者为
% \href{https://github.com/note286/}{\ttfamily @note286}。
% \changes{v1.15.0.1}{2022/05/15}{增加\clsx{xduugthesis}内测人员}
% 其中，在\clsx{xduugthesis}的开发过程中，
% \href{https://github.com/Ke-Huo}{\ttfamily @Ke-Huo}、
% \href{https://github.com/GRHun}{\ttfamily @RH}、
% \href{https://github.com/songyueran}{\ttfamily @syr-bloom}
% 等人参与了内测。
% 同时，也要感谢所有在GitHub和睿思上反馈问题和提出建议的同学、老师们。
% \xduts{}的持续发展，离不开你们的帮助与支持。
% \section{致谢}
% 在学习文学编程的过程中，
% 《在\LaTeX{}中进行文学编程》\footurl{https://liam.page/2015/01/23/literate-programming-in-latex/}
% 和《Good things come in little packages: An introduction to writing .ins and .dtx files》\footurl{https://www.tug.org/TUGboat/tb29-2/tb92pakin.pdf}
% 提供了很大帮助。
% 在文档的编写过程中，参考了\filex{ctex.dtx}、\filex{fduthesis.dtx}、\filex{njuthesis.dtx}和\filex{thuthesis.dtx}。
% \clearpage
% \section{代码实现}
% \changes{v0.1.0.0}{2022/04/03}{基本完成本科毕业设计论文模板}
% \setlength\parindent{0pt}
%    \begin{macrocode}
%<@@=xdu>
%    \end{macrocode}
% \subsection{文档类和宏包}
%    \begin{macrocode}
%<*class|sty>
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage { xparse, l3keys2e }
%    \end{macrocode}
% \begin{macro}{\PassOptionsToPackage}
% 忽略字体警告。
%    \begin{macrocode}
\PassOptionsToPackage { quiet } { xeCJK }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</class|sty>
%<*class>
%    \end{macrocode}
% \begin{macro}{\PassOptionsToClass,\LoadClass}
% \changes{v0.3.2.0}{2022/04/04}{修正行间距为1.5倍}
% \changes{v1.8.1.0}{2022/05/03}{修正页面尺寸}
% \changes{v1.9.2.0}{2022/05/04}{修正行间距为1.625倍}
% 加载\clsx{ctexbook}文档类。
% \\
% \LaTeX{}中基本行距是字号大小的1.2倍，Microsoft Word中基本行距是字号大小的1.3倍，
% Microsoft Word中1.5倍行距，相当于LaTeX中$1.5\times\frac{1.3}{1.2}=1.625$倍行距。
%    \begin{macrocode}
\PassOptionsToClass
  {
    a4paper,
    zihao=-4,
    sub4section,
%<xduugthesis>    linespread = 1.625,
    fontset    = none
  }
  { ctexbook }
\LoadClass { ctexbook }
%    \end{macrocode}
% \end{macro}
% 设置纸张尺寸为A4。
%    \begin{macrocode}
\RequirePackage { geometry        }
\geometry       { paper = a4paper }
%    \end{macrocode}
%    \begin{macrocode}
%</class>
%<*thesis>
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage { fancyhdr        }
\RequirePackage { xeCJKfntef      }
\RequirePackage { graphicx        }
%    \end{macrocode}
%    \begin{macrocode}
%</thesis>
%<*xdufont>
%    \end{macrocode}
%    \begin{macrocode}
\RequirePackage { xeCJK           }
%    \end{macrocode}
%    \begin{macrocode}
%</xdufont>
%    \end{macrocode}
% \subsection{字体配置}
%    \begin{macrocode}
%<*class|xdufont>
%    \end{macrocode}
% \begin{variable}
%   {
%     \l_@@_cjk_font_tl,
%     \l_@@_fake_bold_tl,
%     \l_@@_fake_slant_tl,
%     \l_@@_latin_font_tl,
%     \l_@@_math_font_tl,
%     \l_@@_unicode_math_tl,
%     \l_@@_font_type_tl,
%     \l_@@_font_path_tl
%   }
% 中文字体配置名称。
%    \begin{macrocode}
\tl_new:N \l_@@_cjk_font_tl
%    \end{macrocode}
% \changes{v0.8.2.0}{2022/04/12}{修复LaTeX3新接口导致的Overleaf无法编译}
% 中文字体伪粗体粗细程度。
%    \begin{macrocode}
\tl_new:N \l_@@_fake_bold_tl
%    \end{macrocode}
% 中文字体伪斜体倾斜程度。
%    \begin{macrocode}
\tl_new:N \l_@@_fake_slant_tl
%    \end{macrocode}
% 英文字体配置名称。
%    \begin{macrocode}
\tl_new:N \l_@@_latin_font_tl
%    \end{macrocode}
% 数学字体配置名称。
%    \begin{macrocode}
\tl_new:N \l_@@_math_font_tl
%    \end{macrocode}
% unicode-math配置选项。
%    \begin{macrocode}
\tl_new:N \l_@@_unicode_math_tl
%    \end{macrocode}
% 字体名称/文件名称。
%    \begin{macrocode}
\tl_new:N \l_@@_font_type_tl
%    \end{macrocode}
% 字体文件路径。
%    \begin{macrocode}
\tl_new:N \l_@@_font_path_tl
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义样式键值。
%    \begin{macrocode}
\keys_define:nn { xdu / style }
  {
%    \end{macrocode}
% 中文字体配置。
%    \begin{macrocode}
    cjk-font .choices:nn =
      { win, adobe, founder, sinotype, fandol, none }
      { \tl_set_eq:NN \l_@@_cjk_font_tl \l_keys_choice_tl },
%    \end{macrocode}
% 中文字体伪粗体粗细程度。
%    \begin{macrocode}
    cjk-fake-bold .tl_set:N = \l_@@_fake_bold_tl,
%    \end{macrocode}
% 中文字体伪斜体倾斜程度。
%    \begin{macrocode}
    cjk-fake-slant .tl_set:N = \l_@@_fake_slant_tl,
%    \end{macrocode}
% 英文字体配置。
%    \begin{macrocode}
    latin-font .choices:nn = { tac, tacn, thcs, gyre, none }
      { \tl_set_eq:NN \l_@@_latin_font_tl \l_keys_choice_tl },
%    \end{macrocode}
% 数学字体配置。
%    \begin{macrocode}
    math-font .choices:nn =
      {
        asana, cambria, cm, fira, garamond, lm, libertinus, stix,
        bonum, dejavu, pagella, schola, termes, xits, none
      }
      { \tl_set_eq:NN \l_@@_math_font_tl \l_keys_choice_tl },
    unicode-math .tl_set:N = \l_@@_unicode_math_tl,
%    \end{macrocode}
% 字体调用方式配置，文件名称/字体名称。
%    \begin{macrocode}
    font-type .choices:nn = { font, file }
      { \tl_set_eq:NN \l_@@_font_type_tl \l_keys_choice_tl },
%    \end{macrocode}
% 字体文件路径配置。
%    \begin{macrocode}
    font-path .tl_set:N = \l_@@_font_path_tl
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% \changes{v0.9.1.0}{2022/04/13}{修改中英文字体默认配置}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    style / cjk-font       = fandol,
    style / cjk-fake-bold  = 3,
    style / cjk-fake-slant = 0.2,
    style / latin-font     = gyre,
    style / math-font      = cm,
    style / unicode-math   = { },
    style / font-type      = font,
    style / font-path      = fonts
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_if_platform_macos:FT}
% \changes{v0.5.1.0}{2022/04/06}{判断操作系统是否是macOS}
% 判断操作系统是否是macOS。
% \begin{arguments}
%   \item 非macOS。
%   \item macOS。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_if_platform_macos:FT #1#2
  { \file_if_exist:nTF { /System/Library/Fonts/Menlo.ttc } { #2 } { #1 } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_texmf_font:nn}
% \changes{v0.5.1.0}{2022/04/06}{加载字体时自动判断是否为macOS平台}
% 调用TEXMF中的字体时根据操作系统是否是macOS自动选择调用字体名或文件名。
% \begin{arguments}
%   \item 字体名。
%   \item 文件名。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_texmf_font:nn #1#2
  { \@@_if_platform_macos:FT { #1 } { #2 } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_select_font:nn}
% 自动选择字体文件名称或字体名称。
% \begin{arguments}
%   \item 字体名称。
%   \item 字体文件名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_select_font:nn #1#2
  {
    \str_if_eq:NNTF { \l_@@_font_type_tl } { font }
      { #1 }
      { #2 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_font_path:}
% 当选择使用字体文件配置字体时，设置字体文件路径。
%    \begin{macrocode}
\cs_new:Npn \@@_font_path:
  {
    \str_if_eq:NNTF { \l_@@_font_type_tl } { font }
      { }
      { Path = \l_@@_font_path_tl / , }
  }
%    \end{macrocode}
% \end{macro}
% \subsubsection{中文字体}
% \begin{macro}{\@@_cfg_cjk_font_sub_b:}
% 中文粗体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_b:n #1
  {
    BoldFont = { #1 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_fb:n}
% 中文伪粗体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_fb:n #1
  {
    BoldFont     = { #1 },
    BoldFeatures = { FakeBold = \l_@@_fake_bold_tl }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_fs:n}
% 中文伪斜体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_fs:n #1
  {
    SlantedFont     = { #1 },
    SlantedFeatures = { FakeSlant = \l_@@_fake_slant_tl }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_fbfs:n}
% 中文伪粗斜体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_fbfs:n #1
  {
    BoldSlantedFont     = { #1 },
    BoldSlantedFeatures =
      {
        FakeBold  = \l_@@_fake_bold_tl,
        FakeSlant = \l_@@_fake_slant_tl
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_bfs:n}
% 中文粗伪斜体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_bfs:n #1
  {
    BoldSlantedFont     = { #1 },
    BoldSlantedFeatures = { FakeSlant = \l_@@_fake_slant_tl }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_i:n}
% 中文意大利体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_i:n #1
  {
    ItalicFont = { #1 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_fi:n}
% 中文伪意大利体，即伪斜体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_fi:n #1
  {
    ItalicFont     = { #1 },
    ItalicFeatures = { FakeSlant = \l_@@_fake_slant_tl }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_ifb:n}
% 中文意大利体伪粗体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_ifb:n #1
  {
    BoldItalicFont     = { #1 },
    BoldItalicFeatures = { FakeBold = \l_@@_fake_bold_tl }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_sub_fifb:n}
% 中文伪意大利体伪粗体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_sub_fifb:n #1
  {
    BoldItalicFont     = { #1 },
    BoldItalicFeatures =
      {
        FakeBold  = \l_@@_fake_bold_tl,
        FakeSlant = \l_@@_fake_slant_tl
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_r:n}
% 配置中文字体，包括粗体、斜体、斜粗体、意大利体、粗意大利体。
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_r:n #1
  {
    \@@_cfg_cjk_font_sub_fb:n   { #1 },
    \@@_cfg_cjk_font_sub_fs:n   { #1 },
    \@@_cfg_cjk_font_sub_fbfs:n { #1 },
    \@@_cfg_cjk_font_sub_fi:n   { #1 },
    \@@_cfg_cjk_font_sub_fifb:n { #1 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_rb:nn}
% 配置中文字体，包括粗体、斜体、斜粗体、意大利体、粗意大利体，其中粗体和斜粗体为其他字体。
% \begin{arguments}
%   \item 常规字体。
%   \item 粗体字体。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_rb:nn #1#2
  {
    \@@_cfg_cjk_font_sub_b:n    { #2 },
    \@@_cfg_cjk_font_sub_fs:n   { #1 },
    \@@_cfg_cjk_font_sub_bfs:n  { #2 },
    \@@_cfg_cjk_font_sub_fi:n   { #1 },
    \@@_cfg_cjk_font_sub_fifb:n { #1 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_ri:nn}
% 配置中文字体，包括粗体、斜体、斜粗体、意大利体、粗意大利体，其中意大利体和粗意大利体为其他字体。
% \begin{arguments}
%   \item 常规字体。
%   \item 意大利体字体。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_ri:nn #1#2
  {
    \@@_cfg_cjk_font_sub_fb:n   { #1 },
    \@@_cfg_cjk_font_sub_fs:n   { #1 },
    \@@_cfg_cjk_font_sub_fbfs:n { #1 },
    \@@_cfg_cjk_font_sub_i:n    { #2 },
    \@@_cfg_cjk_font_sub_ifb:n  { #2 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cfg_cjk_font_rbi:nnn}
% 配置中文字体，包括粗体、斜体、斜粗体、意大利体、粗意大利体，其中粗体、斜粗体、意大利体和粗意大利体为其他字体。
% \begin{arguments}
%   \item 常规字体。
%   \item 粗体字体。
%   \item 意大利体字体。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cfg_cjk_font_rbi:nnn #1#2#3
  {
    \@@_cfg_cjk_font_sub_b:n   { #2 },
    \@@_cfg_cjk_font_sub_fs:n  { #1 },
    \@@_cfg_cjk_font_sub_bfs:n { #2 },
    \@@_cfg_cjk_font_sub_i:n   { #3 },
    \@@_cfg_cjk_font_sub_ifb:n { #3 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_cjk_main_font:nn,\@@_set_cjk_main_font:nnn}
% 配置中文罗马族字体。
% \begin{arguments}
%   \item 宋体字体。
%   \item 楷体字体。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_cjk_main_font:nn #1#2
  {
    \setCJKmainfont { #1 }
      [ \@@_font_path: \@@_cfg_cjk_font_ri:nn { #1 } { #2 } ]
  }
\cs_new:Npn \@@_set_cjk_main_font:nnn #1#2#3
  {
    \setCJKmainfont { #1 }
      [ \@@_font_path: \@@_cfg_cjk_font_rbi:nnn { #1 } { #2 } { #3 } ]
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_cjk_sans_font:n,\@@_set_cjk_sans_font:nn}
% 配置中文无衬线族字体。
%    \begin{macrocode}
\cs_new:Npn \@@_set_cjk_sans_font:n #1
  {
    \setCJKsansfont { #1 }
      [ \@@_font_path: \@@_cfg_cjk_font_r:n { #1 } ]
  }
\cs_new:Npn \@@_set_cjk_sans_font:nn #1#2
  {
    \setCJKsansfont { #1 }
      [ \@@_font_path: \@@_cfg_cjk_font_rb:nn { #1 } { #2 } ]
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_cjk_mono_font:n}
% 配置中文等宽族字体。
%    \begin{macrocode}
\cs_new:Npn \@@_set_cjk_mono_font:n #1
  {
    \setCJKmonofont { #1 }
      [ \@@_font_path: \@@_cfg_cjk_font_r:n { #1 } ]
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_cjk_font_win:}
% 中文字体配置\valuex{win}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_win:
  {
    \@@_set_cjk_main_font:nn
      { \@@_select_font:nn { SimSun   } { simsun.ttc  } }
      { \@@_select_font:nn { KaiTi    } { simkai.ttf  } }
    \@@_set_cjk_sans_font:n
      { \@@_select_font:nn { SimHei   } { simhei.ttf  } }
    \@@_set_cjk_mono_font:n
      { \@@_select_font:nn { FangSong } { simfang.ttf } }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_cjk_font_adobe:}
% 中文字体配置\valuex{adobe}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_adobe:
  {
    \@@_set_cjk_main_font:nn
      { \@@_select_font:nn { Adobe~Song~Std     } { adobesongstd-light.otf        } }
      { \@@_select_font:nn { Adobe~Kaiti~Std    } { adobekaitistd-regular.otf     } }
    \@@_set_cjk_sans_font:n
      { \@@_select_font:nn { Adobe~Heiti~Std    } { adobeheitistd-regular.otf     } }
    \@@_set_cjk_mono_font:n
      { \@@_select_font:nn { Adobe~Fangsong~Std } { Adobe-Fangsong-Std-R-Font.otf } }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_cjk_font_founder:}
% \changes{v0.5.1.0}{2022/04/06}{适配macOS平台方正字体}
% 中文字体配置\valuex{founder}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_founder:
  {
    \@@_set_cjk_main_font:nn
      { \@@_select_font:nn { FZShuSong-Z01  } { FZShuSong-Z01.ttf } }
      { \@@_select_font:nn { FZKai-Z03      } { FZKai-Z03.ttf     } }
    \@@_set_cjk_sans_font:n
      { \@@_select_font:nn { FZHei-B01      } { FZHei-B01.ttf     } }
    \@@_set_cjk_mono_font:n
      { \@@_select_font:nn { FZFangSong-Z02 } { FZFSK.TTF         } }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_cjk_font_sinotype:}
% 中文字体配置\valuex{sinotype}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_sinotype:
  {
    \@@_set_cjk_main_font:nn
      { \@@_select_font:nn { STSong     } { STSONG.TTF   } }
      { \@@_select_font:nn { STKaiti    } { STKAITI.TTF  } }
    \@@_set_cjk_sans_font:nn
      { \@@_select_font:nn { STXihei    } { STXIHEI.TTF  } }
      { \@@_select_font:nn { STHeiti    } { STHeiti.ttf  } }
    \@@_set_cjk_mono_font:n
      { \@@_select_font:nn { STFangsong } { STFANGSO.TTF } }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_cjk_font_fandol:}
% \changes{v0.5.1.0}{2022/04/06}{适配macOS平台Fandol字体}
% 中文字体配置\valuex{fandol}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_fandol:
  {
    \@@_set_cjk_main_font:nnn
      { FandolSong-Regular.otf }
      { FandolSong-Bold.otf    }
      { FandolKai-Regular.otf  }
    \@@_set_cjk_sans_font:nn
      { FandolHei-Regular.otf  }
      { FandolHei-Bold.otf     }
    \@@_set_cjk_mono_font:n
      { FandolFang-Regular.otf }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_cjk_font_none:}
% 中文字体配置\valuex{none}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_none: { }
%    \end{macrocode}
% \end{macro}
% \subsubsection{英文字体}
% \begin{macro}{\@@_set_latin_font:nnn}
% 配置英文字体。
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_font:nnn #1#2#3
  {
    BoldFont        = { #1 },
    SlantedFont     = { #2 },
    BoldSlantedFont = { #3 },
    ItalicFont      = { #2 },
    BoldItalicFont  = { #3 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_off_latin_ligatures:}
% \changes{v0.8.3.0}{2022/04/13}{匹配小写字母字符高度}
% 匹配小写字母字符高度。
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_scale:
  { Scale = MatchLowercase , }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_off_latin_ligatures:}
% \changes{v0.8.3.0}{2022/04/13}{关闭连字}
% 关闭连字。
%    \begin{macrocode}
\cs_new:Npn \@@_off_latin_ligatures:
  { Ligatures = CommonOff , }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_latin_main_font:nnnnn}
% 配置英文罗马族字体，参数分别为字体名称、字体文件名称（常规、粗体、意大利体、粗意大利体）。
% \begin{arguments}
%   \item 字体名称。
%   \item 常规字体名称。
%   \item 粗体字体名称。
%   \item 意大利体字体名称。
%   \item 粗意大利体字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_main_font:nnnnn #1#2#3#4#5
  {
    \str_if_eq:NNTF { \l_@@_font_type_tl } { font }
      { \setmainfont { #1 } }
      {
        \setmainfont { #2 }
          [
            \@@_font_path:
            \@@_set_latin_font:nnn { #3 } { #4 } { #5 }
          ]
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_latin_sans_font:nnnnn}
% \changes{v0.8.3.0}{2022/04/13}{修正英文无衬线族字体字符高度}
% 配置英文无衬线族字体，参数分别为字体名称、字体文件名称（常规、粗体、意大利体、粗意大利体）。
% \begin{arguments}
%   \item 字体名称。
%   \item 常规字体名称。
%   \item 粗体字体名称。
%   \item 意大利体字体名称。
%   \item 粗意大利体字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_sans_font:nnnnn #1#2#3#4#5
  {
    \str_if_eq:NNTF { \l_@@_font_type_tl } { font }
      { \setsansfont { #1 } [ \@@_set_latin_scale: ] }
      {
        \setsansfont { #2 }
          [
            \@@_font_path:
            \@@_set_latin_scale:
            \@@_set_latin_font:nnn { #3 } { #4 } { #5 }
          ]
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_latin_mono_font:nnnnn}
% \changes{v0.8.3.0}{2022/04/13}{修正英文等宽族字体字符高度并取消连字}
% 配置英文等宽族字体，参数分别为字体名称、字体文件名称（常规、粗体、意大利体、粗意大利体）。
% \begin{arguments}
%   \item 字体名称。
%   \item 常规字体名称。
%   \item 粗体字体名称。
%   \item 意大利体字体名称。
%   \item 粗意大利体字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_mono_font:nnnnn #1#2#3#4#5
  {
    \str_if_eq:NNTF { \l_@@_font_type_tl } { font }
      { \setmonofont { #1 } [ \@@_set_latin_scale: \@@_off_latin_ligatures: ] }
      {
        \setmonofont { #2 }
          [
            \@@_font_path:
            \@@_set_latin_scale:
            \@@_off_latin_ligatures:
            \@@_set_latin_font:nnn { #3 } { #4 } { #5 }
          ]
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_latin_main_font:nnnn}
% \changes{v0.9.0.0}{2022/04/13}{配置TeX Live内置英文罗马族字体}
% 配置英文罗马族字体，参数分别为字体文件名称（常规、粗体、意大利体、粗意大利体）。
% \begin{arguments}
%   \item 常规字体名称。
%   \item 粗体字体名称。
%   \item 意大利体字体名称。
%   \item 粗意大利体字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_main_font:nnnn #1#2#3#4
  {
    \setmainfont { #1 }
      [
        \@@_set_latin_font:nnn { #2 } { #3 } { #4 }
      ]
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_latin_sans_font:nnnn}
% \changes{v0.9.0.0}{2022/04/13}{配置TeX Live内置英文无衬线族字体}
% 配置英文无衬线族字体，参数分别为字体文件名称（常规、粗体、意大利体、粗意大利体）。
% \begin{arguments}
%   \item 常规字体名称。
%   \item 粗体字体名称。
%   \item 意大利体字体名称。
%   \item 粗意大利体字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_sans_font:nnnn #1#2#3#4
  {
    \setsansfont { #1 }
      [
        \@@_set_latin_scale:
        \@@_set_latin_font:nnn { #2 } { #3 } { #4 }
      ]
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_set_latin_mono_font:nnnn}
% \changes{v0.9.0.0}{2022/04/13}{配置TeX Live内置英文等宽族字体}
% 配置英文等宽族字体，参数分别为字体文件名称（常规、粗体、意大利体、粗意大利体）。
% \begin{arguments}
%   \item 常规字体名称。
%   \item 粗体字体名称。
%   \item 意大利体字体名称。
%   \item 粗意大利体字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_mono_font:nnnn #1#2#3#4
  {
    \setmonofont { #1 }
      [
        \@@_set_latin_scale:
        \@@_off_latin_ligatures:
        \@@_set_latin_font:nnn { #2 } { #3 } { #4 }
      ]
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_latin_font_tac:}
% \changes{v1.12.0.0}{2022/05/06}{新增Arial和Consolas英文字体配置}
% 英文字体配置\valuex{tac}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_tac:
  {
    \@@_set_latin_main_font:nnnnn
      { Times~New~Roman } { times.ttf   } { timesbd.ttf  } { timesi.ttf   } { timesbi.ttf  }
    \@@_set_latin_sans_font:nnnnn
      { Arial           } { arial.ttf   } { arialbd.ttf  } { ariali.ttf   } { arialbi.ttf  }
    \@@_set_latin_mono_font:nnnnn
      { Consolas        } { consola.ttf } { consolab.ttf } { consolai.ttf } { consolaz.ttf }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_latin_font_tacn:}
% 英文字体配置\valuex{tacn}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_tacn:
  {
    \@@_set_latin_main_font:nnnnn
      { Times~New~Roman } { times.ttf } { timesbd.ttf } { timesi.ttf } { timesbi.ttf }
    \@@_set_latin_sans_font:nnnnn
      { Arial           } { arial.ttf } { arialbd.ttf } { ariali.ttf } { arialbi.ttf }
    \@@_set_latin_mono_font:nnnnn
      { Courier~New     } { cour.ttf  } { courbd.ttf  } { couri.ttf  } { courbi.ttf  }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_latin_font_thcs:}
% 英文字体配置\valuex{thcs}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_thcs:
  {
    \@@_set_latin_main_font:nnnnn
      { Times~New~Roman            }
      { times.ttf                  }
      { timesbd.ttf                }
      { timesi.ttf                 }
      { timesbi.ttf                }
    \@@_set_latin_sans_font:nnnnn
      { Helvetica                  }
      { Helvetica.ttf              }
      { Helvetica~Bold.ttf         }
      { Helvetica~Oblique.ttf      }
      { Helvetica~Bold~Oblique.ttf }
    \@@_set_latin_mono_font:nnnnn
      { Courier~Std                }
      { CourierStd.otf             }
      { CourierStd-Bold.otf        }
      { CourierStd-Oblique.otf     }
      { CourierStd-BoldOblique.otf }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_latin_font_gyre:}
% \changes{v0.9.0.0}{2022/04/13}{新增gyre系列英文字体配置}
% 英文字体配置\valuex{gyre}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_gyre:
  {
    \@@_set_latin_main_font:nnnn
      { texgyretermes-regular.otf    }
      { texgyretermes-bold.otf       }
      { texgyretermes-italic.otf     }
      { texgyretermes-bolditalic.otf }
    \@@_set_latin_sans_font:nnnn
      { texgyreheros-regular.otf     }
      { texgyreheros-bold.otf        }
      { texgyreheros-italic.otf      }
      { texgyreheros-bolditalic.otf  }
    \@@_set_latin_mono_font:nnnn
      { texgyrecursor-regular.otf    }
      { texgyrecursor-bold.otf       }
      { texgyrecursor-italic.otf     }
      { texgyrecursor-bolditalic.otf }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_latin_font_none:}
% 英文字体配置\valuex{none}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_none: { }
%    \end{macrocode}
% \end{macro}
% \subsubsection{数学字体}
% \begin{macro}{\@@_load_unicode_math_pkg:}
% \changes{v1.14.1.0}{2022/05/10}{使用\tnx{PassOptionsToPackage}传递\pkgx{unicode-math}宏包参数}
% 加载\pkgx{unicode-math}宏包。
%    \begin{macrocode}
\cs_new:Npn \@@_load_unicode_math_pkg:
  {
    \PassOptionsToPackage { \l_@@_unicode_math_tl } { unicode-math }
    \RequirePackage { unicode-math }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_math_font_cambria:}
% 数学字体配置\valuex{cambria}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_math_font_cambria:
  {
    \@@_load_unicode_math_pkg:
    \str_if_eq:NNTF { \l_@@_font_type_tl } { font }
      { \setmathfont { Cambria~Math } }
      { \setmathfont { cambria.ttc } [ Path = \l_@@_font_path_tl/, FontIndex = 1 ] }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_define_math_font:nn}
% 批量定义数学字体配置。
% \changes{v0.2.0.0}{2022/04/04}{增加Garamond Math数学字体}
% \changes{v0.5.1.0}{2022/04/06}{适配macOS平台MacTeX内置数学字体}
% \begin{arguments}
%   \item 配置名称。
%   \item 字体名称。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_define_math_font:nn #1#2
  {
    \cs_new:cpn { @@_load_math_font_ #1 : }
      {
        \@@_load_unicode_math_pkg:
        \setmathfont { #2 }
      }
  }
\clist_map_inline:nn
  {
    { asana      } { Asana-Math.otf             },
    { fira       } { FiraMath-Regular.otf       },
    { garamond   } { Garamond-Math.otf          },
    { lm         } { latinmodern-math.otf       },
    { libertinus } { LibertinusMath-Regular.otf },
    { stix       } { STIXMath-Regular.otf       },
    { bonum      } { texgyrebonum-math.otf      },
    { dejavu     } { texgyredejavu-math.otf     },
    { pagella    } { texgyrepagella-math.otf    },
    { schola     } { texgyreschola-math.otf     },
    { termes     } { texgyretermes-math.otf     }
  }
  { \@@_define_math_font:nn #1 }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_math_font_xits:}
% \changes{v0.5.1.0}{2022/04/06}{适配macOS平台MacTeX内置XITSMath数学字体}
% 数学字体配置\valuex{xits}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_math_font_xits:
  {
    \@@_load_unicode_math_pkg:
    \@@_if_platform_macos:FT
      {
        \setmathfont { XITS~Math }
      }
      {
        \@@_load_unicode_math_pkg:
        \setmathfont { XITSMath-Regular.otf }
        \setmathfont { XITSMath-Bold.otf    }
          [ range= { bfup -> up, bfit -> it } ]
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_math_font_cm:}
% 数学字体配置\valuex{cm}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_math_font_cm: { }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_math_font_none:}
% 数学字体配置\valuex{none}。
%    \begin{macrocode}
\cs_new:Npn \@@_load_math_font_none: { }
%    \end{macrocode}
% \end{macro}
% \subsubsection{加载字体}
% \begin{macro}{\@@_load_font:}
% 加载中文字体、英文字体和数学字体。
%    \begin{macrocode}
\cs_new:Npn \@@_load_font:
  {
    \use:c { @@_load_cjk_font_   \l_@@_cjk_font_tl   : }
    \use:c { @@_load_latin_font_ \l_@@_latin_font_tl : }
    \use:c { @@_load_math_font_  \l_@@_math_font_tl  : }
  }
%    \end{macrocode}
% 在导言区末尾加载中文字体、英文字体和数学字体。
%    \begin{macrocode}
\ctex_at_end_preamble:n { \@@_load_font: }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</class|xdufont>
%<*thesis>
%    \end{macrocode}
% \subsection{信息录入}
% \changes{v1.8.0.0}{2022/05/02}{拆分信息录入选项}
% \begin{variable}
%   {
%     \l_@@_title_str,
%     \l_@@_title_i_str,
%     \l_@@_title_ii_str,
%     \l_@@_dept_str,
%     \l_@@_major_str,
%     \l_@@_author_str,
%     \l_@@_supv_clist,
%     \l_@@_supv_ent_str,
%     \l_@@_student_id_str,
%     \l_@@_abstract_zh_tl,
%     \l_@@_abstract_en_tl,
%     \l_@@_keywords_zh_clist,
%     \l_@@_keywords_en_clist,
%     \l_@@_bib_file_clist,
%     \l_@@_ack_tl
%   }
% 论文标题。
%    \begin{macrocode}
\str_new:N \l_@@_title_str
\str_new:N \l_@@_title_i_str
\str_new:N \l_@@_title_ii_str
%    \end{macrocode}
% 院系名称。
%    \begin{macrocode}
\str_new:N \l_@@_dept_str
%    \end{macrocode}
% 专业名称。
%    \begin{macrocode}
\str_new:N \l_@@_major_str
%    \end{macrocode}
% 作者姓名。
%    \begin{macrocode}
\str_new:N \l_@@_author_str
%    \end{macrocode}
% 导师姓名。
%    \begin{macrocode}
\clist_new:N \l_@@_supv_clist
%    \end{macrocode}
% 校外导师姓名。
%    \begin{macrocode}
\str_new:N \l_@@_supv_ent_str
%    \end{macrocode}
% 作者学号。
%    \begin{macrocode}
\str_new:N \l_@@_student_id_str
%    \end{macrocode}
% 中文摘要。
%    \begin{macrocode}
\tl_new:N \l_@@_abstract_zh_tl
%    \end{macrocode}
% 英文摘要。
%    \begin{macrocode}
\tl_new:N \l_@@_abstract_en_tl
%    \end{macrocode}
% 中文关键词。
%    \begin{macrocode}
\clist_new:N \l_@@_keywords_zh_clist
%    \end{macrocode}
% 英文关键词。
%    \begin{macrocode}
\clist_new:N \l_@@_keywords_en_clist
%    \end{macrocode}
% 参考文献文件。
%    \begin{macrocode}
\clist_new:N \l_@@_bib_file_clist
%    \end{macrocode}
% 致谢。
%    \begin{macrocode}
\tl_new:N \l_@@_ack_tl
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义信息键值。
%    \begin{macrocode}
\keys_define:nn { xdu / info }
  {
%    \end{macrocode}
% 论文标题。
%    \begin{macrocode}
    title .tl_set:N = \l_@@_title_str,
%    \end{macrocode}
% 院系名称。
%    \begin{macrocode}
    department .tl_set:N = \l_@@_dept_str,
%    \end{macrocode}
% 专业名称。
%    \begin{macrocode}
    major .tl_set:N = \l_@@_major_str,
%    \end{macrocode}
% 作者姓名。
%    \begin{macrocode}
    author .tl_set:N = \l_@@_author_str,
%    \end{macrocode}
% 导师姓名。
%    \begin{macrocode}
    supervisor .clist_set:N = \l_@@_supv_clist,
%    \end{macrocode}
% 校外导师姓名。
%    \begin{macrocode}
    supervisor-enterprise .tl_set:N = \l_@@_supv_ent_str,
%    \end{macrocode}
% 作者学号。
%    \begin{macrocode}
    student-id .tl_set:N = \l_@@_student_id_str,
%    \end{macrocode}
% 中文摘要。
%    \begin{macrocode}
    abstract .tl_set:N = \l_@@_abstract_zh_tl,
%    \end{macrocode}
% 英文摘要。
%    \begin{macrocode}
    abstract* .tl_set:N = \l_@@_abstract_en_tl,
%    \end{macrocode}
% 中文关键词。
%    \begin{macrocode}
    keywords .clist_set:N = \l_@@_keywords_zh_clist,
%    \end{macrocode}
% 英文关键词。
%    \begin{macrocode}
    keywords* .clist_set:N = \l_@@_keywords_en_clist,
%    \end{macrocode}
% 参考文献文件。
%    \begin{macrocode}
    bib-resource .clist_set:N = \l_@@_bib_file_clist,
%    \end{macrocode}
% 致谢。
%    \begin{macrocode}
    acknowledgements .tl_set:N = \l_@@_ack_tl
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    info / title                 = { },
    info / department            = { },
    info / major                 = { },
    info / author                = { },
    info / supervisor            = { },
    info / supervisor-enterprise = { },
    info / student-id            = { },
    info / abstract              = { },
    info / abstract*             = { },
    info / keywords              = { },
    info / keywords*             = { },
    info / bib-resource          = { },
    info / acknowledgements      = { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}
%   {
%     \l_@@_supv_str,
%     \l_@@_supv_ii_str
%   }
% \changes{v1.16.0.0}{2022/05/22}{拆分导师姓名}
% 拆分导师姓名。
%    \begin{macrocode}
\str_new:N \l_@@_supv_str
\str_new:N \l_@@_supv_ii_str
\ctex_at_end_preamble:n
  {
    \str_set:Nx \l_@@_supv_str    { \clist_item:Nn \l_@@_supv_clist { 1 } }
    \str_set:Nx \l_@@_supv_ii_str { \clist_item:Nn \l_@@_supv_clist { 2 } }
  }
%    \end{macrocode}
% \end{variable}
%    \begin{macrocode}
%</thesis>
%<*xduugthesis>
%    \end{macrocode}
% \subsubsection{本科生}
% \begin{variable}
%   {
%     \l_@@_supv_dept_str,
%     \l_@@_supv_sch_str,
%     \l_@@_class_id_str
%   }
% 院内导师姓名。
%    \begin{macrocode}
\str_new:N \l_@@_supv_dept_str
%    \end{macrocode}
% 校内导师姓名。
%    \begin{macrocode}
\str_new:N \l_@@_supv_sch_str
%    \end{macrocode}
% 作者班级号。
%    \begin{macrocode}
\str_new:N \l_@@_class_id_str
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义信息键值。
%    \begin{macrocode}
\keys_define:nn { xdu / info }
  {
%    \end{macrocode}
% 院内导师姓名。
%    \begin{macrocode}
    supervisor-department .tl_set:N = \l_@@_supv_dept_str,
%    \end{macrocode}
% 校内导师姓名。
%    \begin{macrocode}
    supervisor-school .tl_set:N = \l_@@_supv_sch_str,
%    \end{macrocode}
% 作者班级号。
%    \begin{macrocode}
    class-id .tl_set:N = \l_@@_class_id_str
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    info / supervisor-department = { },
    info / supervisor-school     = { },
    info / class-id              = { }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugthesis>
%<*xdupgthesis>
%    \end{macrocode}
% \subsubsection{研究生}
% \changes{v1.9.0.0}{2022/05/03}{增加研究生信息录入选项}
% \begin{variable}
%   {
%     \l_@@_gr_type_tl,
%     \l_@@_degree_type_tl,
%     \l_@@_degree_str,
%     \l_@@_degree_en_str,
%     \l_@@_author_en_str,
%     \l_@@_supv_en_clist,
%     \l_@@_supv_ent_en_str,
%     \l_@@_supv_t_clist,
%     \l_@@_supv_t_en_clist,
%     \l_@@_supv_ent_t_str,
%     \l_@@_supv_ent_t_en_str,
%     \l_@@_title_en_str,
%     \l_@@_major_en_str,
%     \l_@@_sub_major_str,
%     \l_@@_domain_str,
%     \l_@@_clc_str,
%     \l_@@_secret_lv_str,
%     \l_@@_secret_year_str,
%     \l_@@_submit_date_str,
%     \l_@@_statement_scan_str,
%     \l_@@_statement_sign_clist,
%     \l_@@_los_str,
%     \l_@@_loa_str,
%     \l_@@_bio_str
%   }
% 研究生类型。
%    \begin{macrocode}
\tl_new:N \l_@@_gr_type_tl
%    \end{macrocode}
% 学位类型。
%    \begin{macrocode}
\tl_new:N \l_@@_degree_type_tl
%    \end{macrocode}
% 学位类别。
%    \begin{macrocode}
\str_new:N \l_@@_degree_str
\str_new:N \l_@@_degree_en_str
%    \end{macrocode}
% 作者姓名拼音。
%    \begin{macrocode}
\str_new:N \l_@@_author_en_str
%    \end{macrocode}
% 导师姓名拼音。
%    \begin{macrocode}
\clist_new:N \l_@@_supv_en_clist
%    \end{macrocode}
% 校外导师姓名拼音。
%    \begin{macrocode}
\str_new:N \l_@@_supv_ent_en_str
%    \end{macrocode}
% 导师职称。
%    \begin{macrocode}
\clist_new:N \l_@@_supv_t_clist
\clist_new:N \l_@@_supv_t_en_clist
%    \end{macrocode}
% 校外导师职称。
%    \begin{macrocode}
\str_new:N \l_@@_supv_ent_t_str
\str_new:N \l_@@_supv_ent_t_en_str
%    \end{macrocode}
% 论文标题英文。
%    \begin{macrocode}
\str_new:N \l_@@_title_en_str
%    \end{macrocode}
% 一级学科英文名称。
%    \begin{macrocode}
\str_new:N \l_@@_major_en_str
%    \end{macrocode}
% 二级学科。
%    \begin{macrocode}
\str_new:N \l_@@_sub_major_str
%    \end{macrocode}
% 领域。
%    \begin{macrocode}
\str_new:N \l_@@_domain_str
%    \end{macrocode}
% 中图分类号。
%    \begin{macrocode}
\str_new:N \l_@@_clc_str
%    \end{macrocode}
% 密级。
%    \begin{macrocode}
\str_new:N \l_@@_secret_lv_str
%    \end{macrocode}
% 保密年限。
%    \begin{macrocode}
\str_new:N \l_@@_secret_year_str
%    \end{macrocode}
% 提交日期。
%    \begin{macrocode}
\str_new:N \l_@@_submit_date_str
%    \end{macrocode}
% 声明页扫描文件路径。
%    \begin{macrocode}
\str_new:N \l_@@_statement_scan_str
%    \end{macrocode}
% 声明页签名文件路径。
%    \begin{macrocode}
\clist_new:N \l_@@_statement_sign_clist
%    \end{macrocode}
% 符号对照表文件路径。
%    \begin{macrocode}
\str_new:N \l_@@_los_str
%    \end{macrocode}
% 缩略语对照表文件路径。
%    \begin{macrocode}
\str_new:N \l_@@_loa_str
%    \end{macrocode}
% 作者简介文件路径。
%    \begin{macrocode}
\str_new:N \l_@@_bio_str
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义信息键值。
%    \begin{macrocode}
\keys_define:nn { xdu / info }
  {
%    \end{macrocode}
% 研究生类型。
%    \begin{macrocode}
    graduate-type .choices:nn = { 硕士, 博士 }
      { \tl_set_eq:NN \l_@@_gr_type_tl \l_keys_choice_tl },
%    \end{macrocode}
% 学位类型。
%    \begin{macrocode}
    degree-type .choices:nn = { 学术, 专业 }
      { \tl_set_eq:NN \l_@@_degree_type_tl \l_keys_choice_tl },
%    \end{macrocode}
% 学位类别。
%    \begin{macrocode}
    degree .tl_set:N = \l_@@_degree_str,
    degree* .tl_set:N = \l_@@_degree_en_str,
%    \end{macrocode}
% 作者姓名拼音。
%    \begin{macrocode}
    author* .tl_set:N = \l_@@_author_en_str,
%    \end{macrocode}
% 导师姓名拼音。
%    \begin{macrocode}
    supervisor* .clist_set:N = \l_@@_supv_en_clist,
%    \end{macrocode}
% 校外导师姓名拼音。
%    \begin{macrocode}
    supervisor-enterprise* .tl_set:N = \l_@@_supv_ent_en_str,
%    \end{macrocode}
% 导师职称。
%    \begin{macrocode}
    supervisor-title .clist_set:N = \l_@@_supv_t_clist,
    supervisor-title* .clist_set:N = \l_@@_supv_t_en_clist,
%    \end{macrocode}
% 校外导师职称。
%    \begin{macrocode}
    supervisor-enterprise-title .tl_set:N = \l_@@_supv_ent_t_str,
    supervisor-enterprise-title* .tl_set:N = \l_@@_supv_ent_t_en_str,
%    \end{macrocode}
% 论文标题英文。
%    \begin{macrocode}
    title* .tl_set:N = \l_@@_title_en_str,
%    \end{macrocode}
% 一级学科英文名称。
%    \begin{macrocode}
    major* .tl_set:N = \l_@@_major_en_str,
%    \end{macrocode}
% 二级学科。
%    \begin{macrocode}
    sub-major .tl_set:N = \l_@@_sub_major_str,
%    \end{macrocode}
% 领域。
%    \begin{macrocode}
    domain .tl_set:N = \l_@@_domain_str,
%    \end{macrocode}
% 中图分类号。
%    \begin{macrocode}
    clc .tl_set:N = \l_@@_clc_str,
%    \end{macrocode}
% 密级。
%    \begin{macrocode}
    secret-level .choices:nn = { 秘密, 公开 }
      { \tl_set_eq:NN \l_@@_secret_lv_str \l_keys_choice_tl },
%    \end{macrocode}
% 保密年限。
%    \begin{macrocode}
    secret-year .tl_set:N = \l_@@_secret_year_str,
%    \end{macrocode}
% 提交日期。
%    \begin{macrocode}
    submit-date .tl_set:N = \l_@@_submit_date_str,
%    \end{macrocode}
% 声明页扫描文件路径。
%    \begin{macrocode}
    statement-scan .tl_set:N = \l_@@_statement_scan_str,
%    \end{macrocode}
% 声明页签名文件路径。
%    \begin{macrocode}
    statement-sign .clist_set:N = \l_@@_statement_sign_clist,
%    \end{macrocode}
% 符号对照表文件路径。
%    \begin{macrocode}
    los .tl_set:N = \l_@@_los_str,
%    \end{macrocode}
% 缩略语对照表文件路径。
%    \begin{macrocode}
    loa .tl_set:N = \l_@@_loa_str,
%    \end{macrocode}
% 作者简介文件路径。
%    \begin{macrocode}
    bio .tl_set:N = \l_@@_bio_str
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% \changes{v1.7.1.0}{2022/05/02}{设置研究生类型默认值}
% \changes{v1.7.2.0}{2022/05/02}{修正guard}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    info / graduate-type                = { 硕士 },
    info / degree-type                  = { 学术 },
    info / degree                       = { },
    info / degree*                      = { },
    info / author*                      = { },
    info / supervisor*                  = { },
    info / supervisor-enterprise*       = { },
    info / supervisor-title             = { },
    info / supervisor-title*            = { },
    info / supervisor-enterprise-title  = { },
    info / supervisor-enterprise-title* = { },
    info / title*                       = { },
    info / major*                       = { },
    info / sub-major                    = { },
    info / domain                       = { },
    info / clc                          = { },
    info / secret-level                 = { 公开 },
    info / secret-year                  = { },
    info / submit-date                  = { },
    info / statement-scan               = { },
    info / statement-sign               = { },
    info / los                          = { },
    info / loa                          = { },
    info / bio                          = { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}
%   {
%     \l_@@_supv_en_str,
%     \l_@@_supv_ii_en_str,
%     \l_@@_supv_t_str,
%     \l_@@_supv_ii_t_str,
%     \l_@@_supv_t_en_str,
%     \l_@@_supv_ii_t_en_str
%   }
% \changes{v1.16.0.0}{2022/05/22}{拆分导师英文姓名和中英文职称}
% 拆分导师英文姓名和中英文职称。
%    \begin{macrocode}
\str_new:N \l_@@_supv_en_str
\str_new:N \l_@@_supv_ii_en_str
\str_new:N \l_@@_supv_t_str
\str_new:N \l_@@_supv_ii_t_str
\str_new:N \l_@@_supv_t_en_str
\str_new:N \l_@@_supv_ii_t_en_str
\ctex_at_end_preamble:n
  {
    \str_set:Nx \l_@@_supv_en_str
      { \clist_item:Nn \l_@@_supv_en_clist   { 1 } }
    \str_set:Nx \l_@@_supv_ii_en_str
      { \clist_item:Nn \l_@@_supv_en_clist   { 2 } }
    \str_set:Nx \l_@@_supv_t_str
      { \clist_item:Nn \l_@@_supv_t_clist    { 1 } }
    \str_set:Nx \l_@@_supv_ii_t_str
      { \clist_item:Nn \l_@@_supv_t_clist    { 2 } }
    \str_set:Nx \l_@@_supv_t_en_str
      { \clist_item:Nn \l_@@_supv_t_en_clist { 1 } }
    \str_set:Nx \l_@@_supv_ii_t_en_str
      { \clist_item:Nn \l_@@_supv_t_en_clist { 2 } }
  }
%    \end{macrocode}
% \end{variable}
% \changes{v2.7.0.0}{2022/06/26}{页面移除开关}
% \subsection{页面移除开关}
% \label{页面移除开关}
% \begin{variable}
%   {
%     \l_@@_rm_page_clist,
%     \l_@@_rm_header_bool,
%     \l_@@_rm_footer_bool
%   }
% 页面移除开关。
%    \begin{macrocode}
\clist_new:N \l_@@_rm_page_clist
%    \end{macrocode}
% 页眉移除开关。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_header_bool
%    \end{macrocode}
% 页脚移除开关。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_footer_bool
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义样式键值。
%    \begin{macrocode}
\keys_define:nn { xdu / style }
  {
%    \end{macrocode}
% 设置页面移除开关。
%    \begin{macrocode}
    remove-page .clist_set:N = \l_@@_rm_page_clist,
    remove-header .bool_set:N = \l_@@_rm_header_bool,
    remove-footer .bool_set:N = \l_@@_rm_footer_bool
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    style / remove-page   = { },
    style / remove-header = { false },
    style / remove-footer = { false }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}
%   {
%     \l_@@_rm_cover_bool,
%     \l_@@_rm_title_page_bool,
%     \l_@@_rm_statement_bool,
%     \l_@@_rm_abstract_bool,
%     \l_@@_rm_loft_bool,
%     \l_@@_rm_losa_bool,
%     \l_@@_rm_toc_bool,
%     \l_@@_rm_appendix_bool,
%     \l_@@_rm_ref_bool,
%     \l_@@_rm_ack_bool,
%     \l_@@_rm_bio_bool
%   }
% 封面。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_cover_bool
%    \end{macrocode}
% 中英文提名页。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_title_page_bool
%    \end{macrocode}
% 声明页。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_statement_bool
%    \end{macrocode}
% 中英文摘要。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_abstract_bool
%    \end{macrocode}
% 索引。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_loft_bool
%    \end{macrocode}
% 符号对照表和缩略语对照表。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_losa_bool
%    \end{macrocode}
% 目录。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_toc_bool
%    \end{macrocode}
% 附录。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_appendix_bool
%    \end{macrocode}
% 参考文献。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_ref_bool
%    \end{macrocode}
% 致谢。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_ack_bool
%    \end{macrocode}
% 作者简介。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_bio_bool
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\clist_if_in:NnT,\bool_set_true:N}
% 设置页面移除开关布尔值。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \clist_if_in:NnT \l_@@_rm_page_clist { 封面 }
      { \bool_set_true:N \l_@@_rm_cover_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 提名页 }
      { \bool_set_true:N \l_@@_rm_title_page_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 声明页 }
      { \bool_set_true:N \l_@@_rm_statement_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 摘要 }
      { \bool_set_true:N \l_@@_rm_abstract_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 索引 }
      { \bool_set_true:N \l_@@_rm_loft_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 对照表 }
      { \bool_set_true:N \l_@@_rm_losa_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 目录 }
      { \bool_set_true:N \l_@@_rm_toc_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 附录 }
      { \bool_set_true:N \l_@@_rm_appendix_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 参考文献 }
      { \bool_set_true:N \l_@@_rm_ref_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 致谢 }
      { \bool_set_true:N \l_@@_rm_ack_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 作者简介 }
      { \bool_set_true:N \l_@@_rm_bio_bool }
  }
%    \end{macrocode}
% \end{macro}
% \changes{v2.10.0.0}{2022/06/26}{匿名命令}
% \subsection{匿名操作}
% \label{匿名操作}
% \begin{variable}{\l_@@_anon_bool}
% 匿名开关。
%    \begin{macrocode}
\bool_new:N \l_@@_anon_bool
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义样式键值。
%    \begin{macrocode}
\keys_define:nn { xdu / style }
  {
%    \end{macrocode}
% 匿名操作。
%    \begin{macrocode}
    anonymous .bool_set:N = \l_@@_anon_bool
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    style / anonymous = { false }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\anon}
% 匿名命令。
%    \begin{macrocode}
\NewDocumentCommand \anon { O { XXX } m }
  {
    \bool_if:NTF \l_@@_anon_bool
      { #1 } { #2 }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*thesis>
%    \end{macrocode}
% \subsection{标签宏配置}
% \label{标签宏配置}
% \begin{macro}
%   {
%     \figurename,
%     \figname,
%     \tablename,
%     \tabname,
%   }
% \changes{v1.21.0.0}{2022/06/01}{配置图表标签宏}
%    \begin{macrocode}
\cs_set:Npn \figurename { \@@_lang_switch:nn { 图 } { Figure } }
\cs_new_eq:NN \figname \figurename
\cs_set:Npn \tablename  { \@@_lang_switch:nn { 表 } { Table  } }
\cs_new_eq:NN \tabname \tablename
%    \end{macrocode}
% \end{macro}
% \subsection{样式配置}
% \begin{variable}
%   {
%     \l_@@_en_cjk_font_bool,
%     \l_@@_lang_tl,
%     \l_@@_bib_tool_tl,
%     \l_@@_biblatex_option_tl,
%     \l_@@_cap_label_sep_tl,
%     \l_@@_tab_small_bool,
%     \l_@@_alg_small_cap_bool,
%     \l_@@_alg_small_bool,
%     \l_@@_before_skip_clist,
%     \l_@@_after_skip_clist,
%     \l_@@_chap_tl,
%     \l_@@_sec_tl,
%     \l_@@_subsec_tl,
%     \l_@@_subsubsec_tl,
%     \l_@@_para_tl,
%     \l_@@_subpara_tl,
%     \l_@@_sym_mgn_bool,
%     \l_@@_page_v_align_tl
%   }
% 英文是否使用中文字体。
%    \begin{macrocode}
\bool_new:N \l_@@_en_cjk_font_bool
%    \end{macrocode}
% 语言。
%    \begin{macrocode}
\tl_new:N \l_@@_lang_tl
%    \end{macrocode}
% 参考文献支持方式。
%    \begin{macrocode}
\tl_new:N \l_@@_bib_tool_tl
%    \end{macrocode}
% 修改\pkgx{biblatex}默认选项。
%    \begin{macrocode}
\tl_new:N \l_@@_biblatex_option_tl
%    \end{macrocode}
% 是否在\tnx{ref}和\tnx{pageref}两侧自动调整中英文间空白。
%    \begin{macrocode}
\tl_new:N \l_@@_ref_add_space
%    \end{macrocode}
% 标签与后面标题之间的间距。
%    \begin{macrocode}
\tl_new:N \l_@@_cap_label_sep_tl
%    \end{macrocode}
% 设置表格字号是否为五号。
%    \begin{macrocode}
\bool_new:N \l_@@_tab_small_bool
%    \end{macrocode}
% 设置算法Caption字号是否为五号。
%    \begin{macrocode}
\bool_new:N \l_@@_alg_small_cap_bool
%    \end{macrocode}
% 设置算法内容字号是否为五号。
%    \begin{macrocode}
\bool_new:N \l_@@_alg_small_bool
%    \end{macrocode}
% 设置章节标题前后的垂直间距。
%    \begin{macrocode}
\clist_new:N \l_@@_before_skip_clist
\clist_new:N \l_@@_after_skip_clist
%    \end{macrocode}
% 设置章节标题字号。
%    \begin{macrocode}
\tl_new:N \l_@@_chap_tl
\tl_new:N \l_@@_sec_tl
\tl_new:N \l_@@_subsec_tl
\tl_new:N \l_@@_subsubsec_tl
\tl_new:N \l_@@_para_tl
\tl_new:N \l_@@_subpara_tl
%    \end{macrocode}
% 设置页边距是否对称。
%    \begin{macrocode}
\bool_new:N \l_@@_sym_mgn_bool
%    \end{macrocode}
% 设置页面垂直方向的对齐方式。
%    \begin{macrocode}
\tl_new:N \l_@@_page_v_align_tl
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义样式键值。
%    \begin{macrocode}
\keys_define:nn { xdu / style }
  {
%    \end{macrocode}
% 英文是否使用中文字体。
%    \begin{macrocode}
    en-cjk-font .bool_set:N = \l_@@_en_cjk_font_bool,
%    \end{macrocode}
% 论文语言配置。
%    \begin{macrocode}
    language .choices:nn = { zh, en }
      { \tl_set_eq:NN \l_@@_lang_tl \l_keys_choice_tl },
%    \end{macrocode}
% 参考文献支持方式配置。
%    \begin{macrocode}
    bib-backend .choices:nn = { bibtex, biblatex }
      { \tl_set_eq:NN \l_@@_bib_tool_tl \l_keys_choice_tl },
%    \end{macrocode}
% 修改\pkgx{biblatex}默认选项。
%    \begin{macrocode}
    biblatex-option .tl_set:N = \l_@@_biblatex_option_tl,
%    \end{macrocode}
% 是否在\tnx{ref}和\tnx{pageref}两侧自动调整中英文间空白。
%    \begin{macrocode}
    ref-add-space .bool_set:N = \l_@@_ref_add_space,
%    \end{macrocode}
% 标签与后面标题之间的间距。
%    \begin{macrocode}
    caption-label-sep .tl_set:N = \l_@@_cap_label_sep_tl,
%    \end{macrocode}
% 设置表格字号是否为五号。
%    \begin{macrocode}
    table-small-font .bool_set:N = \l_@@_tab_small_bool,
%    \end{macrocode}
% 设置算法Caption字号是否为五号。
%    \begin{macrocode}
    algorithm-small-caption .bool_set:N = \l_@@_alg_small_cap_bool,
%    \end{macrocode}
% 设置算法内容字号是否为五号。
%    \begin{macrocode}
    algorithm-small-font .bool_set:N = \l_@@_alg_small_bool,
%    \end{macrocode}
% 设置章节标题前的垂直间距。
%    \begin{macrocode}
    before-skip .clist_set:N = \l_@@_before_skip_clist,
%    \end{macrocode}
% 设置章节标题后的垂直间距。
%    \begin{macrocode}
    after-skip .clist_set:N = \l_@@_after_skip_clist,
%    \end{macrocode}
% 设置章节标题字号。
%    \begin{macrocode}
    chap-zihao .tl_set:N = \l_@@_chap_tl,
    sec-zihao .tl_set:N = \l_@@_sec_tl,
    subsec-zihao .tl_set:N = \l_@@_subsec_tl,
    subsubsec-zihao .tl_set:N = \l_@@_subsubsec_tl,
    para-zihao .tl_set:N = \l_@@_para_tl,
    subpara-zihao .tl_set:N = \l_@@_subpara_tl,
%    \end{macrocode}
% 设置页边距是否对称。
%    \begin{macrocode}
    symmetric-margin .bool_set:N = \l_@@_sym_mgn_bool,
%    \end{macrocode}
% 设置页面垂直方向的对齐方式。
%    \begin{macrocode}
    page-vertical-align .tl_set:N = \l_@@_page_v_align_tl
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    style / en-cjk-font             = false,
    style / language                = zh,
    style / bib-backend             = biblatex,
    style / biblatex-option         = { },
    style / ref-add-space           = false,
    style / caption-label-sep       = { 0.75em },
    style / table-small-font        = true,
    style / algorithm-small-caption = true,
    style / algorithm-small-font    = true,
    style / before-skip             = { 24pt, 18pt, 12pt, 12pt, 12pt, 12pt },
    style / after-skip              = { 18pt, 12pt, 6pt, 6pt, 6pt, 6pt },
    style / symmetric-margin        = false,
    style / page-vertical-align     = { 顶部对齐 }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</thesis>
%<*xdupgthesis>
%    \end{macrocode}
% \changes{v1.22.0.0}{2022/06/05}{对照表样式配置}
% \subsection{对照表样式配置}
% \begin{variable}
%   {
%     \l_@@_customize_los_bool,
%     \l_@@_customize_loa_bool,
%     \l_@@_colspec_los_tl,
%     \l_@@_colspec_loa_tl,
%     \l_@@_title_row_los_bool,
%     \l_@@_title_row_los_bool,
%   }
% 是否完全自定义符号对照。
%    \begin{macrocode}
\bool_new:N \l_@@_customize_los_bool
%    \end{macrocode}
% 是否完全自定义缩略语对照表。
%    \begin{macrocode}
\bool_new:N \l_@@_customize_loa_bool
%    \end{macrocode}
% 符号对照表列格式。
%    \begin{macrocode}
\tl_new:N \l_@@_colspec_los_tl
%    \end{macrocode}
% 缩略语对照表列格式。
%    \begin{macrocode}
\tl_new:N \l_@@_colspec_loa_tl
%    \end{macrocode}
% 是否每页均显示符号对照表标题行。
%    \begin{macrocode}
\bool_new:N \l_@@_title_row_los_bool
%    \end{macrocode}
% 是否每页均显示缩略语对照表标题行。
%    \begin{macrocode}
\bool_new:N \l_@@_title_row_loa_bool
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义信息键值。
%    \begin{macrocode}
\keys_define:nn { xdu / style }
  {
%    \end{macrocode}
% 是否完全自定义符号对照。
%    \begin{macrocode}
    customize-los .bool_set:N = \l_@@_customize_los_bool,
%    \end{macrocode}
% 是否完全自定义缩略语对照表。
%    \begin{macrocode}
    customize-loa .bool_set:N = \l_@@_customize_loa_bool,
%    \end{macrocode}
% 符号对照表列格式。
%    \begin{macrocode}
    colspec-los .tl_set:N = \l_@@_colspec_los_tl,
%    \end{macrocode}
% 缩略语对照表列格式。
%    \begin{macrocode}
    colspec-loa .tl_set:N = \l_@@_colspec_loa_tl,
%    \end{macrocode}
% 是否每页均显示符号对照表标题行。
%    \begin{macrocode}
    title-row-los .bool_set:N = \l_@@_title_row_los_bool,
%    \end{macrocode}
% 是否每页均显示缩略语对照表标题行。
%    \begin{macrocode}
    title-row-loa .bool_set:N = \l_@@_title_row_loa_bool
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    style / customize-los = { true               },
    style / customize-loa = { true               },
    style / colspec-los   = { Q[l,h]X[l,h]       },
    style / colspec-loa   = { Q[l,h]X[l,h]X[l,h] },
    style / title-row-los = { false              },
    style / title-row-loa = { false              }
  }
%    \end{macrocode}
% \end{macro}
% \changes{v1.26.0.0}{2022/06/07}{作者简介样式配置}
% \subsection{作者简介样式配置}
% \begin{variable}
%   {
%     \l_@@_customize_edubg_bool,
%     \l_@@_customize_resresult_bool
%   }
% 是否完全自定义作者简介中教育背景。
%    \begin{macrocode}
\bool_new:N \l_@@_customize_edubg_bool
%    \end{macrocode}
% 是否完全自定义作者简介中攻读硕士学位期间的研究成果。
%    \begin{macrocode}
\bool_new:N \l_@@_customize_resresult_bool
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义信息键值。
%    \begin{macrocode}
\keys_define:nn { xdu / style }
  {
%    \end{macrocode}
% 是否完全自定义作者简介中教育背景。
%    \begin{macrocode}
    customize-edubg .bool_set:N = \l_@@_customize_edubg_bool,
%    \end{macrocode}
% 是否完全自定义作者简介中攻读硕士学位期间的研究成果。
%    \begin{macrocode}
    customize-resresult .bool_set:N = \l_@@_customize_resresult_bool
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    style / customize-edubg     = { true },
    style / customize-resresult = { true }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*class|xdufont>
%    \end{macrocode}
% \subsection{键值选项}
% \begin{macro}{\xdusetup}
% 用户设置接口。
%    \begin{macrocode}
\NewDocumentCommand \xdusetup { m }
  { \keys_set:nn { xdu } { #1 } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_define:nn}
% 定义元（meta）键值对。
%    \begin{macrocode}
\keys_define:nn { xdu }
  {
    style .meta:nn = { xdu / style } { #1 },
    info  .meta:nn = { xdu / info  } { #1 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ProcessKeysOptions}
% 处理选项。
%    \begin{macrocode}
\ProcessKeysOptions { xdu / style }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</class|xdufont>
%<*xdupgthesis>
%    \end{macrocode}
% \subsection{内部文本}
% \begin{variable}{l_@@_header_str}
% \changes{v1.7.0.0}{2022/05/02}{研究生页眉文本}
% 研究生页眉文本。
%    \begin{macrocode}
\str_new:N \l_@@_header_str
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      {
        \tl_if_eq:NnTF \l_@@_gr_type_tl { 硕士 }
          { \str_set:Nn \l_@@_header_str { 西安电子科技大学硕士学位论文 } }
          { \str_set:Nn \l_@@_header_str { 西安电子科技大学博士学位论文 } }
      }
      {
        \tl_if_eq:NnTF \l_@@_gr_type_tl { 硕士 }
          {
            \str_set:Nn \l_@@_header_str
              { Master~Thesis~of~XIDIAN~UNIVERSITY }
          }
          {
            \str_set:Nn \l_@@_header_str
              { Doctoral~Dissertation~of~XIDIAN~UNIVERSITY }
          }
      }
  }
%    \end{macrocode}
% \end{variable}
%    \begin{macrocode}
%</xdupgthesis>
%<*thesis>
%    \end{macrocode}
% \subsection{内部函数}
% \begin{macro}{\@@_lang_switch:nn}
% 根据论文语言自动选择中文对应内容或英文对应内容。
% \begin{arguments}
%   \item 中文对应内容。
%   \item 英文对应内容。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_lang_switch:nn #1#2
  {
    \str_if_eq:NNTF { \l_@@_lang_tl } { zh }
      { #1 }
      { #2 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_rm_family:,\@@_sf_family:,\@@_tt_family:}
% 切换字体族时，英文根据配置选择是否使用中文字体。
%    \begin{macrocode}
\cs_new:Npn \@@_rm_family:
  { \bool_if:NTF \l_@@_en_cjk_font_bool { \CJKfamily+ { rm } } { \rmfamily } }
\cs_new:Npn \@@_sf_family:
  { \bool_if:NTF \l_@@_en_cjk_font_bool { \CJKfamily+ { sf } } { \sffamily } }
\cs_new:Npn \@@_tt_family:
  { \bool_if:NTF \l_@@_en_cjk_font_bool { \CJKfamily+ { tt } } { \ttfamily } }
%    \end{macrocode}
% \end{macro}
% \begin{variable}{\l_@@_pure_title_str}
% 移除标题中换行符。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \str_new:N \l_@@_pure_title_str
    \str_set_eq:NN \l_@@_pure_title_str \l_@@_title_str
    \str_remove_all:Nn \l_@@_pure_title_str { \\ }
  }
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_split_title:Nn,\@@_split_title:NV}
% 拆分标题。
% \begin{arguments}
%   \item 拆分后标题。
%   \item 拆分前标题。
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_split_title:Nn #1#2
  {
    \seq_new:N \l_@@_title_seq
    \tl_if_in:nnTF { #2 } { \\ }
      {
        \seq_set_split:Nnn \l_@@_title_seq { \\ } { #2 }
        \clist_set_from_seq:NN #1 \l_@@_title_seq
      }
      {
        \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 1  } { 14 } }
        \clist_put_right:Nx #1 { \tl_range:nnn { #2 } { 15 } { -1 } }
      }
  }
\cs_generate_variant:Nn \@@_split_title:Nn { NV }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_uline:n}
% 绘制下划线。
%    \begin{macrocode}
\cs_new:Npn \@@_uline:n #1
  { \CJKunderline [ thickness = 0.5pt ] { #1 } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_tl_set_if_empty:Nn}
% \changes{v0.7.0.0}{2022/04/11}{对空凭据表赋值}
% 对空凭据表赋值。
%    \begin{macrocode}
\cs_new:Npn \@@_tl_set_if_empty:Nn #1#2
  { \tl_if_empty:NT #1 { \tl_set:Nn #1 { #2 } } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_get_text_width:Nn,\@@_get_text_width:NV}
% 获取文本宽度。
% \begin{arguments}
%   \item 文本宽度。
%   \item 文本。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_get_text_width:Nn #1#2
  {
    \box_clear_new:N \l_@@_tmp_box
    \hbox_set:Nn \l_@@_tmp_box { #2 }
    \dim_set:Nn #1 { \box_wd:N \l_@@_tmp_box }
  }
\cs_generate_variant:Nn \@@_get_text_width:Nn { NV }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_add_bookmark:n}
% 为当前位置添加书签。
%    \begin{macrocode}
\cs_new:Npn \@@_add_bookmark:n #1
  { \currentpdfbookmark { #1 } { #1 } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_add_toc:n}
% 章节添加目录。
%    \begin{macrocode}
\cs_new:Npn \@@_add_toc:n #1
  {
    \cleardoublepage
    \phantomsection
    \addcontentsline { toc } { chapter } { #1 }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head:n}
% 新建无编号章节并添加页眉和书签。
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head:n #1
  {
    \@@_add_bookmark:n { #1 }
    \chapter*          { #1 }
    \markboth          { #1 } { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head_ii:nn}
% 新建无编号章节并添加页眉和书签并单独设置标题样式。
% \begin{arguments}
%   \item 章节标题处。
%   \item 章节标题样式。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head_ii:nn #1#2
  {
    \group_begin:
      \ctexset { chapter / format = { #2 } }
      \@@_n_chapter_head:n { #1 }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head:nn}
% \changes{v1.1.4.0}{2022/04/16}{新建无编号章节并单独添加页眉和书签}
% 新建无编号章节并添加页眉和书签，多用于章节标题为2个汉字的情况。
% \begin{arguments}
%   \item 书签和页眉处。
%   \item 章节标题处。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head:nn #1#2
  {
    \@@_add_bookmark:n { #1 }
    \chapter*          { #2 }
    \markboth          { #1 } { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head_ii:nnn}
% \changes{v1.2.1.0}{2022/04/19}{新建无编号章节并单独添加页眉和书签并单独设置标题样式}
% 新建无编号章节并添加页眉和书签并单独设置标题样式，多用于章节标题为2个汉字的情况。
% \begin{arguments}
%   \item 章节标题处。
%   \item 书签和页眉处。
%   \item 章节标题样式。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head_ii:nnn #1#2#3
  {
    \group_begin:
      \ctexset { chapter / format = { #3 } }
      \@@_n_chapter_head:nn { #1 } { #2 }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head_toc:n}
% 新建无编号章节并添加目录及页眉。
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head_toc:n #1
  {
    \@@_add_toc:n { #1 }
    \chapter* { #1 }
    \markboth { #1 } { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head_toc:nn}
% \changes{v1.1.4.0}{2022/04/16}{新建无编号章节并单独添加目录及页眉}
% 新建无编号章节并添加目录及页眉，多用于章节标题为2个汉字的情况。
% \begin{arguments}
%   \item 目录、书签、页眉处。
%   \item 章节标题处。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head_toc:nn #1#2
  {
    \@@_add_toc:n { #1 }
    \chapter* { #2 }
    \markboth { #1 } { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_n_chapter_head_toc_ii:nn}
% \changes{v1.28.1.0}{2022/06/18}{新建无编号章节并单独添加目录及页眉并单独设置标题样式}
% 新建无编号章节并单独添加目录及页眉并单独设置标题样式。
% \begin{arguments}
%   \item 目录、书签、页眉处。
%   \item 章节标题处。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_n_chapter_head_toc_ii:nn #1#2
  {
    \group_begin:
      \ctexset { chapter / format = { #2 } }
      \@@_n_chapter_head_toc:n { #1 }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_typeout_keywords:nNn}
% \changes{v1.20.0.0}{2022/05/30}{允许关键词标签带格式}
% 排版关键词。
% \begin{arguments}
%   \item 标签名称。
%   \item 关键词列表。
%   \item 关键词分隔符。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_typeout_keywords:nNn #1#2#3
  {
    \tl_clear_new:N \l_@@_keywords_label_str
    \tl_set:Nn \l_@@_keywords_label_tl { #1 }
    \dim_zero_new:N \l_@@_keywords_label_dim
    \@@_get_text_width:NV \l_@@_keywords_label_dim \l_@@_keywords_label_tl
    \begin { list } { \l_@@_keywords_label_tl }
      {
        \labelwidth  \l_@@_keywords_label_dim
        \labelsep    \c_zero_dim
        \rightmargin \c_zero_dim
        \leftmargin  \l_@@_keywords_label_dim
      }
      \item \clist_use:Nnnn #2 { #3 } { #3 } { #3 }
    \end { list }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_str_max_dim:Nn}
% \changes{v1.26.4.0}{2022/06/10}{计算字符串多大长度}
% 计算字符串多大长度。
% \begin{arguments}
%   \item 最大值长度。
%   \item 字符串。
% \end{arguments}
%    \begin{macrocode}
\dim_new:N \l_@@_str_dim
\box_new:N \l_@@_str_box
\cs_new:Npn \@@_str_max_dim:Nn #1#2
  {
    \hbox_set:Nn \l_@@_str_box { #2 }
    \dim_set:Nn \l_@@_str_dim { \box_wd:N \l_@@_str_box }
    \dim_set:Nn #1  { \dim_max:nn { \l_@@_str_dim } { #1 } }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{额外命令}
% \begin{macro}{\noauxwrite}
% \changes{v1.15.0.0}{2022/05/13}{\tnx{noauxwrite}允许添加不影响现有引用列表顺序的引用}
% \tnx{noauxwrite}允许添加不影响现有引用列表顺序的引用。
%    \begin{macrocode}
\NewDocumentCommand \noauxwrite { m }
  {
    \if@filesw
      \@fileswfalse
      #1
      \@fileswtrue
    \else
      #1
    \fi
  }
%    \end{macrocode}
% \end{macro}
% \subsection{页面设置}
% \subsubsection{页面尺寸}
% \begin{macro}{\geometry,\newgeometry,\savegeometry}
% \changes{v1.5.1.0}{2022/05/01}{修正页脚高度}
% \changes{v1.5.2.0}{2022/05/02}{修正底部页边距高度}
% \changes{v1.26.8.0}{2022/06/13}{修正研究生页眉高度}
% 正文页面。
% \begin{description}
% \item[本科生] 上3、下2、内3、外2；装订线1；页眉2、页脚1。
% \item[研究生] 上3、\textbf{下2.5}、内2.5、外2.5；装订线0.5；页眉2、页脚$2.5-1.75=0.75$。
% 实测上3.14，headheight和headsep均为实测。
% \end{description}
%    \begin{macrocode}
\newgeometry
  {
%<*xduugthesis>
    top           = 3cm,
    bottom        = 2cm,
    inner         = 3cm,
    outer         = 2cm,
    bindingoffset = 1cm,
    head          = 2cm,
    foot          = 1cm
%</xduugthesis>
%<*xdupgthesis>
    top           = 3.14cm,
    bottom        = 2.5cm,
    inner         = 2.5cm,
    outer         = 2.5cm,
    bindingoffset = 0.5cm,
    headheight    = 20pt,
    headsep       = 10pt,
    foot          = 0.75cm
%</xdupgthesis>
  }
\savegeometry { main }
%    \end{macrocode}
% \changes{v1.5.1.0}{2022/05/01}{修正页脚高度}
% \changes{v1.5.2.0}{2022/05/02}{修正底部页边距高度}
% 左右对称正文页面。
% \begin{description}
% \item[本科生] 上3、下2、内3、外3；页眉2、页脚1。
% \item[研究生] 上3、\textbf{下2.5}、内2.75、外2.75；页眉2、页脚$2.5-1.75=0.75$。
% \end{description}
%    \begin{macrocode}
\newgeometry
  {
%<*xduugthesis>
    top    = 3cm,
    bottom = 2cm,
    inner  = 3cm,
    outer  = 3cm,
    head   = 2cm,
    foot   = 1cm
%</xduugthesis>
%<*xdupgthesis>
    top        = 3.14cm,
    bottom     = 2.5cm,
    inner      = 2.75cm,
    outer      = 2.75cm,
    headheight = 20pt,
    headsep    = 10pt,
    foot       = 0.75cm
%</xdupgthesis>
  }
\savegeometry { main-sym }
%    \end{macrocode}
% \changes{v0.10.3.0}{2022/04/14}{修复封面超页}
% 封面页面。
% \begin{description}
% \item[本科生] 上2.5、下2、内3、外2。
% \item[研究生] 上3、下1、内3、外2.5。
% \end{description}
%    \begin{macrocode}
\newgeometry
  {
%<*xduugthesis>
    top    = 2.5cm,
    bottom = 2cm,
    inner  = 3cm,
    outer  = 2cm
%</xduugthesis>
%<*xdupgthesis>
    top    = 3cm,
    bottom = 1cm,
    inner  = 3cm,
    outer  = 2.5cm
%</xdupgthesis>
  }
\savegeometry { cover }
%    \end{macrocode}
% \changes{v2.1.0.0}{2022/06/22}{无页边距页面}
% 无页边距页面。
%    \begin{macrocode}
%<*xdupgthesis>
\newgeometry  { margin = 0cm }
\savegeometry { nomargin     }
%</xdupgthesis>
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_load_main_geometry:}
% \changes{v0.8.0.0}{2022/04/12}{根据用户配置加载正文页边距配置}
% 根据用户配置加载正文页边距配置。
%    \begin{macrocode}
\cs_new:Npn \@@_load_main_geometry:
  {
    \bool_if:NTF \l_@@_sym_mgn_bool
      { \loadgeometry { main-sym } }
      { \loadgeometry { main     } }
  }
%    \end{macrocode}
% \end{macro}
% \subsubsection{页眉页脚}
% \begin{macro}
%   {
%     \@@_chinese:,
%     \@@_arabic:,
%     \@@_roman:,
%     \@@_Roman:,
%     \@@_alph:,
%     \@@_Alph:,
%     \@@_fnsymbol:
%   }
% \changes{v1.2.2.0}{2022/04/20}{定义序号转换函数}
% 定义序号转换函数。
%    \begin{macrocode}
\clist_map_inline:nn
  {
    { chinese  },
    { arabic   },
    { roman    },
    { Roman    },
    { alph     },
    { Alph     },
    { fnsymbol }
  }
  { \cs_new_eq:cc { @@ _ #1 : } { #1 } }
%    \end{macrocode}
% \end{macro}
% \begin{variable}{\l_@@_chaptername}
% \changes{v1.2.2.0}{2022/04/20}{页眉内部英文章节名}
% 页眉内部英文章节名。
%    \begin{macrocode}
\tl_set:Nn \chaptername { Chapter }
\tl_new:N \l_@@_chaptername
\tl_set_eq:NN \l_@@_chaptername \chaptername
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\chaptermark}
% 设置奇数页页眉为章标题。
%    \begin{macrocode}
\renewcommand { \chaptermark } [ 1 ]
  {
    \markboth
      {
        \@@_lang_switch:nn
          { \CTEXthechapter }
          { \l_@@_chaptername \space \@@_Roman: { chapter } }
        \quad #1
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\fancypagestyle}
% \changes{v0.1.1.0}{2022/04/03}{修正页眉字号}
% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码}
% \changes{v1.7.0.0}{2022/05/02}{设置页眉}
% \changes{v1.26.9.0}{2022/06/13}{修正页眉文字和双横线高度}
% \changes{v2.8.0.0}{2022/06/26}{研究生学位论文支持移除页眉}
% \changes{v2.9.0.0}{2022/06/26}{研究生学位论文支持移除页脚}
% \changes{v2.9.1.0}{2022/06/26}{研究生学位论文支持移除页眉双横线}
% 设置正文页眉页脚。
% \begin{description}
% \item[本科生] 页眉：宋体五号，居中排列。左面页眉为论文题目，右面页眉为章次和章标题。页眉底划线的宽度为0.75磅。页码：宋体小五号，排在页眉行的最外侧，不加任何修饰。
% \item[研究生] 页眉设置：单面页码页眉标题为章节题目，每一章节的起始页必须在单面页码，双面页码页眉标题统一为“西安电子科技大学博/硕士学位论文”，页眉标题居中排列，字体为宋体，字号为五号。页眉文字下添加双横线，双横线宽度为0.5磅。页眉的“西安电子科技大学博士/硕士学位论文”统一翻译成：Doctoral Dissertation of XIDIAN UNIVERSITY/Master Thesis of XIDIAN UNIVERSITY。页码设置：前置部分的页码用罗马数字标识，字体为Times New Roman，字号为小五号；主体部分的页码用阿拉伯数字标识，字体为宋体，字号为小五号。页码统一居于页面底端中部，不加任何修饰。
% \end{description}
%    \begin{macrocode}
\fancypagestyle { plain }
  {
    \pagestyle { fancy }
    \fancyhf { }
%<*xduugthesis>
    \fancyhead [ CE ] { \@@_rm_family: \zihao { 5  } \l_@@_pure_title_str }
    \fancyhead [ CO ] { \@@_rm_family: \zihao { 5  } \leftmark            }
    \fancyhead [ LE ] { \@@_rm_family: \zihao { -5 } \thepage             }
    \fancyhead [ RO ] { \@@_rm_family: \zihao { -5 } \thepage             }
    \renewcommand { \headrulewidth } { 0.75pt }
%</xduugthesis>
%<*xdupgthesis>
    \bool_if:NF \l_@@_rm_header_bool
      {
        \fancyhead [ CE ] { \@@_rm_family: \zihao { 5  } \l_@@_header_str     }
        \fancyhead [ CO ] { \@@_rm_family: \zihao { 5  } \leftmark            }
      }
    \bool_if:NTF \l_@@_rm_footer_bool
      { \fancyfoot [ C ] { } }
      { \fancyfoot [ C ] { \@@_rm_family: \zihao { -5 } \thepage } }
    \cs_set:Npn \headrulewidth { 0.5pt }
    \bool_if:NTF \l_@@_rm_header_bool
      { \cs_set:Npn \headrule { } }
      {
        \cs_set:Npn \headrule
          {
            \hrule \@height 0pt
            \skip_vertical:N 2pt
            \hrule \@height \headrulewidth
            \skip_vertical:N \headrulewidth
            \hrule \@height \headrulewidth
            \skip_vertical:N -\headrulewidth
          }
      }
%</xdupgthesis>
  }
%<*xdupgthesis>
\fancypagestyle { front }
  {
    \pagestyle { plain }
    \bool_if:NTF \l_@@_rm_footer_bool
      { \fancyfoot [ C ] { } }
      { \fancyfoot [ C ] { \rmfamily \zihao { -5 } \thepage } }
  }
%</xdupgthesis>
%    \end{macrocode}
% \end{macro}
% \subsubsection{对齐方式}
% \begin{macro}{\raggedbottom,\flushbottom}
% \changes{v1.13.0.0}{2022/05/08}{设置页面垂直方向的对齐方式}
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_page_v_align_tl { 顶部对齐 }
      { \raggedbottom }
      { \flushbottom  }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</thesis>
%<*xduugthesis>
%    \end{macrocode}
% \subsection{标题设置}
% \subsubsection{本科生}
% 中文章标题黑体，三号，居中排列。节标题宋体，四号，居中排列。英文一级标题字体为Times New Roman，四号，正体，左对齐，以大写罗马数字（I、II 等）标出序号。其余各级标题的字体均为Times New Roman，小四号，正体。二级及以下级别的标题依次缩进4个英文字符，以1.1，1.2，1.1.1，1.1.2形式标出序号。
% \paragraph{章节层次}
% \begin{macro}{\ctexset}
% 设置章节层次为subparagraph。
%    \begin{macrocode}
\ctexset { secnumdepth=5 }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节名字}
% \begin{macro}{\ctexset}
% 设置章节的名字。
%    \begin{macrocode}
\ctexset
  {
    chapter       / name =
      {
        \@@_lang_switch:nn { 第 } { \l_@@_chaptername \space },
        \@@_lang_switch:nn { 章 } { }
      },
    section       / name = { },
    subsection    / name = { },
    subsubsection / name = { },
    paragraph     / name = { },
    subparagraph  / name = { }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节编号}
% \begin{macro}{\ctexset}
% \changes{v1.2.1.0}{2022/04/19}{修正英文论文标题序号}
% 设置章节编号的数字输出格式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      {
        \ctexset
          {
            chapter       / number = { \chinese { chapter } },
            section       / number = { \thesection          },
            subsection    / number = { \thesubsection       },
            subsubsection / number = { \thesubsubsection    },
            paragraph     / number = { \theparagraph        },
            subparagraph  / number = { \thesubparagraph     }
          }
      }
      {
        \ctexset
          {
            chapter       / number = { \Roman { chapter }           },
            section       / number = { \thesection                  },
            subsection    / number = { \thesubsection               },
            subsubsection / number = { ( \roman { subsubsection } ) },
            paragraph     / number = { ( \alph { paragraph } )      },
            subparagraph  / number = { ( \arabic { subparagraph } ) }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节和标题}
% \begin{macro}{\@@_zh_t:nnn}
% 设置中文章节名字和随后的标题内容格式。
% \begin{arguments}
%   \item 字体族。
%   \item 字号。
%   \item 位置。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_zh_t:nnn #1#2#3
  {
    \use:c { @@_ #1 _family : }
    \zihao { \use:c { l_@@_ #2 _tl } }
    \str_if_eq:ccTF { #3 } { c }
      { \centering   }
      { \raggedright }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_en_t:nnn}
% \changes{v1.2.1.0}{2022/04/19}{英文章节样式增加位置参数}
% 设置英文章节名字和随后的标题内容格式。
% \begin{arguments}
%   \item 字号。
%   \item 位置。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_en_t:nn #1#2
  {
    \rmfamily
    \zihao { \use:c { l_@@_ #1 _tl } }
    \bfseries
    \str_if_eq:ccTF { #2 } { c }
      { \centering   }
      { \raggedright }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ctexset}
% \changes{v0.7.0.0}{2022/04/11}{自定义章节标题字号}
% 设置章节名字和随后的标题内容格式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      {
        \@@_tl_set_if_empty:Nn \l_@@_chap_tl      { 3 }
        \@@_tl_set_if_empty:Nn \l_@@_sec_tl       { 4 }
        \@@_tl_set_if_empty:Nn \l_@@_subsec_tl    { 4 }
        \@@_tl_set_if_empty:Nn \l_@@_subsubsec_tl { 4 }
        \@@_tl_set_if_empty:Nn \l_@@_para_tl      { 4 }
        \@@_tl_set_if_empty:Nn \l_@@_subpara_tl   { 4 }
        \ctexset
          {
            chapter       / format = { \@@_zh_t:nnn { sf } { chap      } { c } },
            section       / format = { \@@_zh_t:nnn { rm } { sec       } { c } },
            subsection    / format = { \@@_zh_t:nnn { rm } { subsec    } { l } },
            subsubsection / format = { \@@_zh_t:nnn { rm } { subsubsec } { l } },
            paragraph     / format = { \@@_zh_t:nnn { rm } { para      } { l } },
            subparagraph  / format = { \@@_zh_t:nnn { rm } { subpara   } { l } }
          }
      }
      {
        \@@_tl_set_if_empty:Nn \l_@@_chap_tl      { 3  }
        \@@_tl_set_if_empty:Nn \l_@@_sec_tl       { 4  }
        \@@_tl_set_if_empty:Nn \l_@@_subsec_tl    { -4 }
        \@@_tl_set_if_empty:Nn \l_@@_subsubsec_tl { -4 }
        \@@_tl_set_if_empty:Nn \l_@@_para_tl      { -4 }
        \@@_tl_set_if_empty:Nn \l_@@_subpara_tl   { -4 }
        \ctexset
          {
            chapter       / format = { \@@_en_t:nn { chap      } { c } },
            section       / format = { \@@_en_t:nn { sec       } { l } },
            subsection    / format = { \@@_en_t:nn { subsec    } { l } },
            subsubsection / format = { \@@_en_t:nn { subsubsec } { l } },
            paragraph     / format = { \@@_en_t:nn { para      } { l } },
            subparagraph  / format = { \@@_en_t:nn { subpara   } { l } }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ctexset}
% 设置章节标题前后的垂直间距。
% \changes{v0.4.0.0}{2022/04/05}{设置章节标题前后的垂直间距}
%    \begin{macrocode}
\ctexset
  {
    chapter       / fixskip    = true,
    section       / fixskip    = true,
    subsection    / fixskip    = true,
    subsubsection / fixskip    = true,
    paragraph     / fixskip    = true,
    subparagraph  / fixskip    = true,
    chapter       / beforeskip = { \clist_item:Nn \l_@@_before_skip_clist { 1 } },
    section       / beforeskip = { \clist_item:Nn \l_@@_before_skip_clist { 2 } },
    subsection    / beforeskip = { \clist_item:Nn \l_@@_before_skip_clist { 3 } },
    subsubsection / beforeskip = { \clist_item:Nn \l_@@_before_skip_clist { 4 } },
    paragraph     / beforeskip = { \clist_item:Nn \l_@@_before_skip_clist { 5 } },
    subparagraph  / beforeskip = { \clist_item:Nn \l_@@_before_skip_clist { 6 } },
    chapter       / afterskip  = { \clist_item:Nn \l_@@_after_skip_clist  { 1 } },
    section       / afterskip  = { \clist_item:Nn \l_@@_after_skip_clist  { 2 } },
    subsection    / afterskip  = { \clist_item:Nn \l_@@_after_skip_clist  { 3 } },
    subsubsection / afterskip  = { \clist_item:Nn \l_@@_after_skip_clist  { 4 } },
    paragraph     / afterskip  = { \clist_item:Nn \l_@@_after_skip_clist  { 5 } },
    subparagraph  / afterskip  = { \clist_item:Nn \l_@@_after_skip_clist  { 6 } }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugthesis>
%<*xdupgthesis>
%    \end{macrocode}
% \changes{v1.27.0.0}{2022/06/18}{研究生学位论文章节标题样式}
% \subsubsection{研究生}
% \paragraph{章节层次}
% \begin{macro}{\ctexset}
% 设置章节层次为subparagraph。
%    \begin{macrocode}
\ctexset { secnumdepth=5 }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节名字}
% \begin{macro}{\ctexset}
% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题名称}
% 设置章节的名字。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      { \ctexset { chapter / name = { 第, 章        } } }
      { \ctexset { chapter / name = { Chapter\space } } }
  }
\ctexset
  {
    section       / name = {        },
    subsection    / name = {        },
    subsubsection / name = { （, ） },
    paragraph     / name = { （, ） },
    subparagraph  / name = { （, ） }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节编号}
% \begin{macro}{\ctexset}
% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题数字输出格式}
% 设置章节编号的数字输出格式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      { \ctexset { chapter / number = { \chinese { chapter } } } }
      { \ctexset { chapter / number = { \Roman   { chapter } } } }
  }
\ctexset
  {
    section       / number = { \thesection               },
    subsection    / number = { \thesubsection            },
    subsubsection / number = { \arabic { subsubsection } },
    paragraph     / number = { \alph { paragraph }       },
    subparagraph  / number = { \roman { subparagraph }   }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节格式}
% \begin{macro}
%   {
%     \@@_sec_format_i:n,
%     \@@_sec_format_ii:,
%     \@@_sec_format_iii:,
%     \ctexset
%   }
% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题字体}
% 设置章节名字和随后的标题内容格式。
%    \begin{macrocode}
\cs_new:Npn \@@_sec_format_i:n #1
  { \@@_rm_family: \bfseries \zihao { #1 } \dim_set:Nn \baselineskip { 20pt } }
\cs_new:Npn \@@_sec_format_ii:
  { \@@_sf_family: \centering \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } }
\cs_new:Npn \@@_sec_format_iii:
  { \@@_rm_family: \centering \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } }
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      { \ctexset { chapter / format = { \@@_sec_format_ii:  } } }
      { \ctexset { chapter / format = { \@@_sec_format_iii: } } }
  }
\ctexset
  {
    section       / format = { \@@_sec_format_i:n { -3 } },
    subsection    / format = { \@@_sec_format_i:n { 4  } },
    subsubsection / format = { \@@_sec_format_i:n { 4  } },
    paragraph     / format = { \@@_sec_format_i:n { 4  } },
    subparagraph  / format = { \@@_sec_format_i:n { 4  } }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节编号与标题间距}
% \begin{macro}{\ctexset}
% 设置章节编号与标题间距。
%    \begin{macrocode}
\ctexset
  {
    chapter       / aftername = { \quad   },
    section       / aftername = { \enskip },
    subsection    / aftername = { \enskip },
    subsubsection / aftername = { },
    paragraph     / aftername = { },
    subparagraph  / aftername = { }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节缩进}
% \begin{macro}{\ctexset}
% 设置章节标题本身的首行缩进。
%    \begin{macrocode}
\ctexset
  {
    chapter       / indent = { 0bp  },
    section       / indent = { 0bp  },
    subsection    / indent = { 24bp },
    subsubsection / indent = { 24bp },
    paragraph     / indent = { 24bp },
    subparagraph  / indent = { 24bp }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{章节间距}
% \begin{macro}{\ctexset}
% 设置章节标题前后的垂直间距。
%    \begin{macrocode}
\ctexset
  {
    chapter       / beforeskip = { 6pt  },
    section       / beforeskip = { 18pt },
    subsection    / beforeskip = { 12pt },
    subsubsection / beforeskip = { 12pt },
    paragraph     / beforeskip = { 12pt },
    subparagraph  / beforeskip = { 12pt },
    chapter       / afterskip  = { 18pt },
    section       / afterskip  = { 12pt },
    subsection    / afterskip  = { 6pt  },
    subsubsection / afterskip  = { 6pt  },
    paragraph     / afterskip  = { 6pt  },
    subparagraph  / afterskip  = { 6pt  }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*thesis>
%    \end{macrocode}
% \subsection{目录}
% \begin{macro}{\RequirePackage}
% \changes{v0.4.1.0}{2022/04/05}{设置目录样式}
% \changes{v1.14.1.0}{2022/05/10}{使用\tnx{PassOptionsToPackage}传递\pkgx{tocloft}宏包参数}
% 设置目录样式。
%    \begin{macrocode}
\PassOptionsToPackage { titles } { tocloft }
\RequirePackage { tocloft }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</thesis>
%<*xduugthesis>
%    \end{macrocode}
% \subsubsection{本科生}
% \begin{variable}{\cftchapleader}
% 修改目录中一级标题引导点。
%    \begin{macrocode}
\cs_set:Npn \cftchapleader { \bfseries \cftdotfill { \cftdotsep } }
%    \end{macrocode}
% \end{variable}
% \begin{variable}
%   {
%     \cftbeforechapskip,
%     \cftbeforesecskip
%   }
% \changes{v1.10.1.0}{2022/05/04}{修正目录条目间距}
% 设置一级标题与其余各级标题条目前垂直间距一致。
%    \begin{macrocode}
\dim_set_eq:NN \cftbeforechapskip \cftbeforesecskip
%    \end{macrocode}
% \end{variable}
% \begin{variable}
%   {
%     \cftchapfont,
%     \cftchappagefont
%   }
% 设置一级标题及相应页码字体字号。
%    \begin{macrocode}
\clist_map_inline:nn
  {
    \cftchapfont,
    \cftchappagefont
  }
  { \renewcommand { #1 } { \@@_rm_family: \zihao { -4 } \bfseries } }
%    \end{macrocode}
% \end{variable}
% \begin{variable}
%   {
%     \cftsecfont,,
%     \cftsubsecfont,,
%     \cftsubsubsecfont,,
%     \cftparafont,,
%     \cftsubparafont,,
%     \cftsecpagefont,,
%     \cftsubsecpagefont,,
%     \cftsubsubsecpagefont,,
%     \cftparapagefont,,
%     \cftsubparapagefont
%   }
% 设置二三四五六级标题及相应页码字体字号。
%    \begin{macrocode}
\clist_map_inline:nn
  {
    \cftsecfont,
    \cftsubsecfont,
    \cftsubsubsecfont,
    \cftparafont,
    \cftsubparafont,
    \cftsecpagefont,
    \cftsubsecpagefont,
    \cftsubsubsecpagefont,
    \cftparapagefont,
    \cftsubparapagefont
  }
  { \renewcommand { #1 } { \@@_rm_family: \zihao { -4 } } }
%    \end{macrocode}
% \end{variable}
%    \begin{macrocode}
%</xduugthesis>
%<*xdupgthesis>
%    \end{macrocode}
% \changes{v1.28.0.0}{2022/06/18}{研究生学位论文目录样式}
% \subsubsection{研究生}
% \begin{variable}{\cftdotsep}
% 修改引导点之间的距离。
%    \begin{macrocode}
\cs_set:Npn \cftdotsep { 0 }
%    \end{macrocode}
% \end{variable}
% \begin{variable}{\cftchapleader}
% 修改目录中一级标题引导点。
%    \begin{macrocode}
\cs_set:Npn \cftchapleader { \cftdotfill { \cftdotsep } }
%    \end{macrocode}
% \end{variable}
% \begin{variable}
%   {
%     \cftbeforechapskip,
%     \cftbeforesecskip
%   }
% 设置一级标题与其余各级标题条目前垂直间距一致。
%    \begin{macrocode}
\dim_set_eq:NN \cftbeforechapskip \cftbeforesecskip
%    \end{macrocode}
% \end{variable}
% \begin{variable}{\cftchapfont}
% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文目录中一级标题字体}
% 设置一级标题字体字号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      { \cs_set:Npn \cftchapfont { \@@_sf_family: \zihao { -4 } } }
      { \cs_set:Npn \cftchapfont { \@@_rm_family: \zihao { -4 } } }
  }
%    \end{macrocode}
% \end{variable}
% \begin{variable}
%   {
%     \cftsecfont,
%     \cftsubsecfont,
%     \cftchappagefont,
%     \cftsecpagefont,
%     \cftsubsecpagefont
%   }
% 设置二三级标题及一二三级标题页码字体字号。
%    \begin{macrocode}
\clist_map_inline:nn
  {
    \cftsecfont,
    \cftsubsecfont,
    \cftchappagefont,
    \cftsecpagefont,
    \cftsubsecpagefont
  }
  { \renewcommand { #1 } { \@@_rm_family: \zihao { -4 } } }
%    \end{macrocode}
% \end{variable}
%    \begin{macrocode}
%</xdupgthesis>
%<*thesis>
%    \end{macrocode}
% \subsection{公式}
% \begin{macro}{\theequation}
% 重定义公式编号样式。
%    \begin{macrocode}
\renewcommand { \theequation } { \thechapter - \arabic { equation } }
%    \end{macrocode}
% \end{macro}
% \subsection{算法}
% \begin{macro}{\ALG@name,\algorithmcfname}
% \changes{v1.1.1.0}{2022/04/15}{汉化算法标签名称}
% 算法标签名称。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \clist_map_inline:nn
      {
        { \algorithmname   },
        { \ALG@name        },
        { \algorithmcfname }
      }
      { \cs_set:Npn #1 { \@@_lang_switch:nn { 算法 } { Algorithm } } }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\thealgorithm,\floatplacement}
% \changes{v0.10.1.0}{2022/04/13}{重定义算法编号样式}
% \changes{v0.10.2.0}{2022/04/14}{修正算法环境未加载导致的无法编译}
% \changes{v0.10.4.0}{2022/04/14}{修正\pkgx{algorithm}算法编号样式}
% \changes{v1.0.1.0}{2022/04/14}{修改\pkgx{algorithm}算法浮动体默认浮动位置}
% \changes{v1.1.2.0}{2022/04/15}{检测是否加载\pkgx{algorithm}}
% 重定义\pkgx{algorithm}宏包算法编号样式并修改默认浮动位置。
%    \begin{macrocode}
\PassOptionsToPackage { chapter } { algorithm }
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { algorithm }
      {
        \cs_if_exist:NT \thealgorithm
          {
            \floatplacement { algorithm } { tbp }
            \cs_set:Npn \thealgorithm { \thechapter . \arabic { algorithm } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\renewenvironment}
% \changes{v1.1.0.0}{2022/04/15}{设置\pkgx{algorithm}算法内容字号}
% 设置\pkgx{algorithm}算法内容字号。
%    \begin{macrocode}
            \bool_if:NT \l_@@_alg_small_bool
              {
                \renewenvironment { algorithm }
                  {
                    \@nameuse { fst@algorithm }
                    \@float@setevery { algorithm }
                    \ctex_gadd_ltxhook:nn
                      { cmd/@floatboxreset/after }
                      { \zihao { 5 } }
                    \@float { algorithm }
                  }
                  { \float@end }
              }
          }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\thealgocf}
% \changes{v0.10.4.0}{2022/04/14}{修正\pkgx{algorithm2e}算法编号样式}
% \changes{v1.1.2.0}{2022/04/15}{检测是否加载\pkgx{algorithm2e}}
% 重定义\pkgx{algorithm2e}宏包算法编号样式。
%    \begin{macrocode}
\PassOptionsToPackage { algochapter } { algorithm2e }
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { algorithm2e }
      {
        \cs_if_exist:NT \thealgocf
          {
            \cs_set:Npn \thealgocf { \thechapter . \arabic { algocf } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\renewenvironment}
% \changes{v1.0.3.0}{2022/04/15}{修改\pkgx{algorithm2e}算法浮动体默认浮动位置}
% 修改\pkgx{algorithm2e}算法浮动体默认浮动位置。
%    \begin{macrocode}
            \renewenvironment { \algocf@envname } [ 1 ] [ tbp ]
              {
                \setboolean { algocf@algostar } { false }
                \setboolean { algocf@procenvironment } { false }
                \gdef \algocfautorefname { \algorithmautorefname }
                \begin { algocf@algorithm } [ #1 ] \ignorespaces
              }
              { \end { algocf@algorithm } \ignorespacesafterend }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\SetAlFnt}
% \changes{v1.1.0.0}{2022/04/15}{设置\pkgx{algorithm2e}算法内容字号}
% 设置\pkgx{algorithm2e}算法内容字号。
%    \begin{macrocode}
            \bool_if:NT \l_@@_alg_small_bool
              { \SetAlFnt { \zihao { 5 } } }
          }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{Caption}
% \begin{macro}{\DeclareCaptionLabelSeparator,\DeclareCaptionFont,\captionsetup}
% \changes{v0.1.2.0}{2022/04/03}{设置图片标签与后面标题之间的间距}
% \changes{v0.1.3.0}{2022/04/03}{设置图片标签与标题字体字号}
% \changes{v2.10.1.0}{2022/06/26}{修复算法标签与标题字体字号警告}
% 设置图表标签与后面标题之间的间距及caption字体字号。
%    \begin{macrocode}
\RequirePackage { caption }
\DeclareCaptionLabelSeparator { customskip } { \hskip \l_@@_cap_label_sep_tl }
\DeclareCaptionFont { customfont   } { \@@_rm_family: \zihao { 5 } }
\DeclareCaptionFont { algcustomfont }
  {
    \@@_rm_family:
    \bool_if:NTF \l_@@_alg_small_cap_bool
      { \zihao { 5  } }
      { \zihao { -4 } }
  }
\captionsetup
  {
    labelsep = customskip,
    font     = customfont
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\captionsetup}
% \changes{v1.0.4.0}{2022/04/15}{设置\pkgx{algorithm}算法标签与标题字体字号及标签与后面标题之间的间距}
% \changes{v1.1.3.0}{2022/04/15}{修正\pkgx{algorithm}算法标签字体系列}
% \changes{v2.6.0.0}{2022/06/25}{设置\pkgx{algorithm}算法Caption字号是否为五号}
% 设置\pkgx{algorithm}算法标签与标题字体字号及标签与后面标题之间的间距。
%    \begin{macrocode}
\captionsetup [ algorithm ]
  {
    labelsep  = customskip,
    labelfont = algcustomfont,
    font      = algcustomfont
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\SetAlgoCaptionSeparator,\SetAlCapNameFnt,\SetAlCapFnt}
% \changes{v1.0.0.0}{2022/04/14}{修正\pkgx{algorithm2e}算法标签与后面标题之间的间距}
% \changes{v1.0.4.0}{2022/04/15}{修正\pkgx{algorithm2e}算法标签与标题字体字号}
% \changes{v2.6.0.0}{2022/06/25}{设置\pkgx{algorithm2e}算法Caption字号是否为五号}
% 设置\pkgx{algorithm2e}算法标签与标题字体字号及标签与后面标题之间的间距。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \cs_if_exist:NT \thealgocf
      {
        \SetAlgoCaptionSeparator { \hbox_to_wd:nn { \l_@@_cap_label_sep_tl } { } }
        \bool_if:NTF \l_@@_alg_small_cap_bool
          {
            \SetAlCapNameFnt         { \@@_rm_family: \zihao { 5  } }
            \SetAlCapFnt             { \@@_rm_family: \zihao { 5  } }
          }
          {
            \SetAlCapNameFnt         { \@@_rm_family: \zihao { -4 } }
            \SetAlCapFnt             { \@@_rm_family: \zihao { -4 } }
          }
        \SetAlCapSty             { }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\SetTblrStyle,\DefTblrTemplate}
% \changes{v1.11.0.0}{2022/05/06}{适配\pkgx{tabularray}宏包caption样式}
% 设置\pkgx{tabularray}宏包中表格标签与后面标题之间的间距及caption字体字号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { tabularray }
      {
        \SetTblrStyle { head } { font = \@@_rm_family: \zihao { 5 } }
        \DefTblrTemplate { caption-sep } { default }
          { \hskip \l_@@_cap_label_sep_tl }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{图片}
% \begin{macro}{\PassOptionsToPackage,\captionsetup}
% \changes{v0.4.2.0}{2022/04/05}{设置子图标签与标题字体字号}
% 设置子图标签与标题字体字号，支持\pkgx{subfig}和\pkgx{subcaption}宏包。
%    \begin{macrocode}
\PassOptionsToPackage { font = small } { subfig }
\captionsetup [ sub ] { font = customfont }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\captionsetup}
% \changes{v1.13.4.0}{2022/05/08}{设置\pkgx{subfig}宏包子图引用样式}
% 设置\pkgx{subfig}宏包子图引用样式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { subfig }
      { \captionsetup [ subfloat ] { subrefformat = parens } }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\thesubfigure}
% \changes{v1.13.5.0}{2022/05/08}{设置\pkgx{subcaption}宏包子图引用样式}
% \changes{v1.20.1.0}{2022/05/30}{修复\pkgx{subcaption}宏包子图标签样式}
% 设置\pkgx{subcaption}宏包子图引用样式。
%    \begin{macrocode}
\PassOptionsToPackage { labelformat = simple } { subcaption }
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { subcaption }
      { \cs_set:Npn \thesubfigure { ( \alph { subfigure } ) } }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{表格}
% \changes{v0.10.0.0}{2022/04/13}{设置表格字号是否为五号}
% \changes{v1.0.2.0}{2022/04/14}{修复表格五号字无法设定浮动位置}
% \begin{macro}{table}
% 设置表格字号是否为五号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_tab_small_bool
      {
        \renewenvironment { table }
          { \def\@floatboxreset { \reset@font\small\@setminipage } \@float { table } }
          { \end@float }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{longtable}
% \changes{v1.3.0.0}{2022/04/20}{设置\envx{longtable}环境字号是否为五号}
% 设置\pkgx{longtable}宏包中\envx{longtable}环境字号是否为五号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { longtable }
      {
        \bool_if:NT \l_@@_tab_small_bool
          {
            \ctex_gadd_ltxhook:nn
              { env/longtable/begin }
              { \small }
          }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{tblr,longtblr}
% \changes{v1.11.0.0}{2022/05/06}{适配\pkgx{tabularray}宏包中\envx{tblr}和\envx{longtblr}环境字号}
% 设置\pkgx{tabularray}宏包中\envx{tblr}和\envx{longtblr}环境字号是否为五号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { tabularray }
      {
        \bool_if:NT \l_@@_tab_small_bool
          {
            \ctex_gadd_ltxhook:nn
              { env/tblr/begin }
              { \small }
            \ctex_gadd_ltxhook:nn
              { env/longtblr/begin }
              { \small }
          }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{超链接和PDF元数据}
% \begin{macro}{\hyperref}
% \changes{v0.5.0.0}{2022/04/05}{添加PDF主题元数据}
% \changes{v1.10.0.0}{2022/05/04}{添加PDF应用程序元数据}
% 配置超链接和PDF元数据。
%    \begin{macrocode}
\RequirePackage { hyperref }
\hypersetup
  {
    bookmarksnumbered,
    hidelinks
  }
\ctex_at_end_preamble:n
  {
    \hypersetup
      {
        pdftitle   = \l_@@_pure_title_str,
%<xduugthesis>        pdfsubject = { 西安电子科技大学本科毕业设计论文 },
%<xduugthesis>        pdfcreator = { XeLaTeX~with~xduugthesis~class~in~XDUTS },
%<xdupgthesis>        pdfsubject = \l_@@_header_str,
%<xdupgthesis>        pdfcreator = { XeLaTeX~with~xdupgthesis~class~in~XDUTS },
        pdfauthor  = \l_@@_author_str
      }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{交叉引用}
% \begin{macro}{\ref,\pageref}
% \changes{v1.2.0.0}{2022/04/16}{优化中文环境下\tnx{ref}两侧中英文间空白}
% \changes{v1.13.3.0}{2022/05/08}{优化中文环境下\tnx{pageref}两侧中英文间空白}
% 优化中文环境下\tnx{ref}和\tnx{pageref}两侧中英文间空白。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_ref_add_space
      {
        \str_if_eq:NNT { \l_@@_lang_tl } { zh }
          {
            \RequirePackage { xspace }
            \xspaceaddexceptions { 。？！，、；：“”‘’—….－-～·《》<>＿ }
            \cs_generate_variant:Nn \str_if_in:nnTF { xnTF }
            \ctex_after_end_preamble:n
              {
                \cs_set_eq:NN \@@_trad_ref:n \ref
                \cs_set:Npn \ref #1
                  {
                    \str_if_in:xnTF { \__hyp_get_anchor:n { #1 } } { chapter }
                      {         \@@_trad_ref:n { #1 }         }
                      { \xspace \@@_trad_ref:n { #1 } \xspace }
                  }
                \cs_set_eq:NN \@@_trad_page_ref:n \pageref
                \cs_set:Npn \pageref #1
                  { \xspace \@@_trad_page_ref:n { #1 } \xspace }
              }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{参考文献}
% \begin{macro}{\@@_begin_document:n}
% 钩子。
%    \begin{macrocode}
\cs_new_protected:Npn \@@_begin_document:n #1
  { \ctex_gadd_ltxhook:nn { env/document/begin } { #1 } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\RequirePackage,\bibliographystyle,\addbibresource}
% \changes{v1.13.6.0}{2022/05/09}{移除\pkgx{natbib}宏包显式调用}
% \changes{v1.14.0.0}{2022/05/10}{为\bibtex{}提供\tnx{parencite}命令}
% \changes{v1.14.1.0}{2022/05/10}{使用\tnx{PassOptionsToPackage}传递\pkgx{gbt7714}和\pkgx{biblatex}宏包参数}
% \changes{v2.2.4.0}{2022/06/24}{修改参考文献\bibtex{}标签右对齐}
% \changes{v2.2.5.0}{2022/06/24}{修改\bibtex{}和\pkgx{biblatex}字体配置方式}
% \changes{v2.7.1.0}{2022/06/26}{修改\pkgx{biblatex}中斜杠字符字体族}
% 参考文献。
%    \begin{macrocode}
\PassOptionsToPackage { sort&compress       } { gbt7714  }
\PassOptionsToPackage { style = gb7714-2015 } { biblatex }
\@@_begin_document:n
  {
    \tl_if_eq:NnTF \l_@@_bib_tool_tl { bibtex }
      {
        \RequirePackage { gbt7714 }
        \bibliographystyle { gbt7714-numerical }
        \cs_set:Npn \@biblabel #1 { \hfill [ #1 ] }
        \cs_set:Npn \bibsection { }
        \dim_set:Nn \bibsep { 0pt }
        \NewDocumentCommand \parencite { m }
          { \group_begin: \citestyle { numbers } \cite { #1 } \group_end: }
      }
      {
        \PassOptionsToPackage { \l_@@_biblatex_option_tl } { biblatex }
        \RequirePackage { biblatex }
        \clist_map_inline:Nn \l_@@_bib_file_clist { \addbibresource { #1 } }
        \defbibheading { bibliography } [ ] { }
        \dim_set:Nn \biblabelsep { 1ex }
        \dim_set:Nn \bibitemsep { 0pt }
        \cs_set_eq:NN \SlashFont \rmfamily
      }
%    \end{macrocode}
% \changes{v2.7.0.0}{2022/06/26}{\bibtex{}下允许不生成文献列表}
% \bibtex{}下允许不生成文献列表。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_rm_ref_bool
      { \RequirePackage { bibentry } }
  }
%    \end{macrocode}
% \bibtex{}和\pkgx{biblatex}通用字体字号配置。
%    \begin{macrocode}
    \cs_set:Npn \bibfont
      {
%<xdupgthesis>        \rmfamily
%<xduugthesis>        \@@_rm_family:
        \zihao { 5 }
%<xdupgthesis>        \dim_set:Nn \baselineskip { 20pt }
      }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{附录}
% \begin{macro}{appendixes}
% 附录环境。
% \changes{v0.3.0.0}{2022/04/04}{新增附录环境}
% \changes{v0.3.1.0}{2022/04/04}{修正附录中图表编号样式}
% \changes{v0.10.2.0}{2022/04/14}{修正附录中算法编号样式}
% \changes{v0.10.4.0}{2022/04/14}{修正附录中\pkgx{algorithm2e}算法编号样式}
% \changes{v1.2.2.0}{2022/04/20}{修正英文附录编号}
%    \begin{macrocode}
\RequirePackage { environ }
\NewEnviron { appendixes }
  {
    \cs_set:Npn \appendixname { \@@_lang_switch:nn { 附录 } { Appendix } }
    \tl_set_eq:NN \l_@@_chaptername \appendixname
    \cs_set_eq:NN \@@_Roman: \@@_Alph:
    \appendix
    \renewcommand { \thefigure } { \thechapter \arabic { figure } }
    \renewcommand { \thetable  } { \thechapter \arabic { table  } }
    \cs_if_exist:NT \thealgorithm
      { \cs_set:Npn \thealgorithm { \thechapter \arabic { algorithm } } }
    \cs_if_exist:NT \thealgocf
      { \cs_set:Npn \thealgocf { \thechapter \arabic { algocf } } }
    \BODY
  }
%    \end{macrocode}
%    \begin{macrocode}
%</thesis>
%<*xdupgthesis>
%    \end{macrocode}
% \changes{v2.7.0.0}{2022/06/26}{研究生学位论文支持移除附录}
% 研究生学位论文支持移除附录。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_rm_appendix_bool
      { \RenewEnviron { appendixes } { } }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*xduugthesis>
%    \end{macrocode}
% \changes{v1.26.7.1}{2022/06/12}{整理代码结构}
% \subsection{前言部分}
% \subsubsection{本科生}
% \paragraph{前言组件}
% \begin{macro}{\@@_cover_i:nn}
% 绘制班级和学号。
% \begin{arguments}
%   \item 标签名称。
%   \item 班级和学号对应值。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cover_i:nn #1#2
  {
    \vbox_to_ht:nn { 12pt }
      {
        \mode_leave_vertical:
        \hfill
        \hbox:n
          {
            \@@_rm_family: \zihao { -4 } \bfseries
            \hbox_to_wd:nn { 3em } { #1 }
            \skip_horizontal:n { 1em }
            \@@_uline:n { \hbox_to_wd:nn { 15ex } { \hfil #2 \hfil } }
            \skip_horizontal:n { 1.5cm }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cover_ii:nnn}
% \changes{v0.6.1.0}{2022/04/11}{修复logo不存在导致的无法编译}
% \changes{v1.13.1.0}{2022/05/08}{使用融合logo文件}
% 绘制西电logo。
% \begin{arguments}
%   \item 盒子高度。
%   \item logo高度。
%   \item logo类型。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cover_ii:nnn #1#2#3
  {
    \vbox_to_ht:nn { #1 }
      {
        \mode_leave_vertical:
        \hfil
        \file_if_exist:nT { xdulogo.pdf }
          {
            \str_if_eq:nnTF { #3 } { text }
              { \includegraphics [ page = 1, height = #2 ] { xdulogo.pdf } }
              { \includegraphics [ page = 2, height = #2 ] { xdulogo.pdf } }
          }
        \hfil
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cover_iii:nnnnn}
% 绘制论文信息。
% \begin{arguments}
%   \item 标签宽度。
%   \item 标签名称。
%   \item 字体族。
%   \item 字号。
%   \item 论文信息。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cover_iii:nnnnn #1#2#3#4#5
  {
    \vbox_to_ht:nn { 42.5pt }
      {
        \vfill
        \mode_leave_vertical:
        \hfil
        \hbox:n
          {
            \@@_rm_family:
            \zihao { 3 }
            \hbox_to_wd:nn { #1 } { \bfseries #2 }
            \skip_horizontal:n { 1em }
            \zihao { -3 }
            \@@_uline:n
              {
                \hbox_to_wd:nn { 16em }
                  { \hfil \use:c { @@_ #3 _family : } \zihao { #4 } #5 \hfil }
              }
          }
        \hfil
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}{\l_@@_is_ent_bool,\l_@@_is_wide_bool}
% \changes{v0.8.1.0}{2022/04/12}{封面导师标签标志位}
% 是否为校外毕设，是否为宽名称。
%    \begin{macrocode}
\bool_new:N \l_@@_is_ent_bool
\bool_new:N \l_@@_is_wide_bool
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_cover_iii:nnnn}
% \changes{v0.8.1.0}{2022/04/12}{使用标志位计算论文信息标签宽度}
% \changes{v0.1.4.0}{2022/04/03}{自动调整论文信息标签宽度}
% 绘制论文信息并自动调整论文信息标签宽度。
% \begin{arguments}
%   \item 标签名称。
%   \item 字体族。
%   \item 字号。
%   \item 论文信息。
% \end{arguments}
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \tl_if_blank:VF \l_@@_supv_dept_str
      { \bool_set_true:N \l_@@_is_wide_bool }
    \tl_if_blank:VF \l_@@_supv_ent_str
      { \bool_set_true:N \l_@@_is_wide_bool }
    \tl_if_blank:VF \l_@@_supv_sch_str
      { \bool_set_true:N \l_@@_is_wide_bool }
    \cs_new:Npn \@@_cover_iii:nnnn #1#2#3#4
      {
        \bool_if:NTF \l_@@_is_wide_bool
          { \@@_cover_iii:nnnnn { 6em } { #1 } { #2 } { #3 } { #4 } }
          { \@@_cover_iii:nnnnn { 4em } { #1 } { #2 } { #3 } { #4 } }
      }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{\tn{frontmatter}}
% \begin{macro}{\frontmatter}
% \changes{v1.9.1.0}{2022/05/04}{修正封面元素位置及尺寸}
% 排版前言部分。
%    \begin{macrocode}
\renewcommand { \frontmatter }
  {
    \loadgeometry { cover }
    \pagestyle    { empty }
    \dim_set:Nn \parindent { 0pt }
    \@@_add_bookmark:n { \@@_lang_switch:nn { 封面 } { Cover } }
%    \end{macrocode}
% 排版班级和学号。
%    \begin{macrocode}
    \@@_cover_i:nn   { 班级 } { \l_@@_class_id_str   }
    \@@_cover_i:nn   { 学号 } { \l_@@_student_id_str }
    \skip_vertical:n { 30pt }
%    \end{macrocode}
% 排版西电文字logo。
%    \begin{macrocode}
    \@@_cover_ii:nnn { 65pt } { 35pt } { text }
%    \end{macrocode}
% \changes{v1.13.2.0}{2022/05/08}{修正封面标题偏移}
% 排版封面标题。
%    \begin{macrocode}
    \vbox_to_ht:nn { 90pt }
      {
        \mode_leave_vertical:
        \hfil
        \hbox_to_wd:nn { 375pt } { \sffamily \zihao { 0 } 本科毕业设计论文 }
        \hfil
      }
%    \end{macrocode}
% 排版西电logo。
%    \begin{macrocode}
    \@@_cover_ii:nnn { 140pt } { 120pt } { icon }
%    \end{macrocode}
% 拆分论文标题并排版。
%    \begin{macrocode}
    \clist_new:N \l_@@_title_clist
    \@@_split_title:NV \l_@@_title_clist \l_@@_title_str
    \str_set:Nx \l_@@_title_i_str  { \clist_item:Nn  \l_@@_title_clist { 1 } }
    \str_set:Nx \l_@@_title_ii_str { \clist_item:Nn  \l_@@_title_clist { 2 } }
    \@@_cover_iii:nnnn { 题目 } { sf } { 3 } { \l_@@_title_i_str }
    \tl_if_blank:VF \l_@@_title_ii_str
      { \@@_cover_iii:nnnn { } { sf } { 3 } { \l_@@_title_ii_str } }
%    \end{macrocode}
% 排版学院、专业、学生姓名。
%    \begin{macrocode}
    \@@_cover_iii:nnnn { 学院     } { rm } { -3 } { \l_@@_dept_str   }
    \@@_cover_iii:nnnn { 专业     } { rm } { -3 } { \l_@@_major_str  }
    \@@_cover_iii:nnnn { 学生姓名 } { rm } { -3 } { \l_@@_author_str }
%    \end{macrocode}
% \changes{v0.8.1.0}{2022/04/12}{修正封面论文信息标签宽度}
% 校外毕设，排版校外导师姓名、校内导师姓名。
%    \begin{macrocode}
    \tl_if_blank:VF \l_@@_supv_ent_str
      { \bool_set_true:N \l_@@_is_ent_bool }
    \tl_if_blank:VF \l_@@_supv_sch_str
      { \bool_set_true:N \l_@@_is_ent_bool }
    \bool_if:NTF \l_@@_is_ent_bool
      {
        \@@_cover_iii:nnnn { 校外导师姓名 } { rm } { -3 } { \l_@@_supv_ent_str }
        \@@_cover_iii:nnnn { 校内导师姓名 } { rm } { -3 } { \l_@@_supv_sch_str }
      }
%    \end{macrocode}
% \changes{v1.15.1.0}{2022/05/21}{使用\csx{group_begin:}和\csx{group_end:}替换分组}
% 校内毕设，排版导师姓名、院内导师姓名。
%    \begin{macrocode}
      \group_begin:
        \@@_cover_iii:nnnn { 导师姓名 } { rm } { -3 } { \l_@@_supv_str }
        \tl_if_blank:VF \l_@@_supv_dept_str
          {
            \@@_cover_iii:nnnn
              { 院内导师姓名        }
              { rm                  }
              { -3                  }
              { \l_@@_supv_dept_str }
          }
      \group_end:
    \cleardoublepage
%    \end{macrocode}
% \changes{v0.8.0.0}{2022/04/12}{支持对称页边距}
% \changes{v1.10.2.0}{2022/05/04}{修正正文前页码样式}
% 更换页面尺寸、页面样式和页码样式。
%    \begin{macrocode}
    \@@_load_main_geometry:
    \pagestyle     { plain }
    \pagenumbering { roman }
%    \end{macrocode}
% \changes{v1.2.1.0}{2022/04/19}{修正英文论文下中文摘要标题样式}
% 中文摘要，宋体小四号。
%    \begin{macrocode}
    \@@_lang_switch:nn
      { \@@_n_chapter_head:nn { 摘要 } { 摘 { \quad } 要 } }
      {
        \@@_n_chapter_head_ii:nnn
          { 摘要 }
          { 摘 { \quad } 要 }
          { \@@_sf_family: \zihao { 3 } \centering }
      }
    \group_begin:
      \dim_set:Nn \parindent { 2 \ccwd }
      \rmfamily \zihao { -4 }
      \file_if_exist_input:n { \l_@@_abstract_zh_tl }
    \group_end:
%    \end{macrocode}
% \changes{v1.10.3.0}{2022/05/04}{使用弹性长度分隔关键词}
% 关键词弹性分隔间距。
%    \begin{macrocode}
    \cs_new:Npn \@@_keywords_space: { \hspace { 2em plus 1em minus 1em } }
%    \end{macrocode}
% 中文关键词，黑体小四号。
%    \begin{macrocode}
    \group_begin:
      \sffamily \zihao { -4 } \par
      \@@_typeout_keywords:nNn
        { 关键词： } { \l_@@_keywords_zh_clist } { \@@_keywords_space: }
    \group_end:
    \cleardoublepage
%    \end{macrocode}
% 英文摘要，Times New Roman字体，小四号。
% \changes{v0.4.3.0}{2022/04/05}{修正英文摘要标题字体}
%    \begin{macrocode}
    \@@_n_chapter_head_ii:nn
      { ABSTRACT } { \rmfamily \zihao { 3 } \bfseries \centering }
    \group_begin:
      \dim_set:Nn \parindent { 2 \ccwd }
      \rmfamily \zihao { -4 }
      \file_if_exist_input:n { \l_@@_abstract_en_tl }
    \group_end:
%    \end{macrocode}
% 英文关键词，Times New Roman字体加粗，小四号。
%    \begin{macrocode}
    \group_begin:
      \rmfamily \zihao { -4 } \bfseries \par
      \@@_typeout_keywords:nNn
        { Keywords： } { \l_@@_keywords_en_clist } { \@@_keywords_space: }
    \group_end:
    \cleardoublepage
%    \end{macrocode}
% \changes{v1.1.4.0}{2022/04/16}{为目录章节标题增加间距}
% \changes{v1.1.5.0}{2022/04/16}{目录中移除目录章节}
% 目录。
%    \begin{macrocode}
    \setcounter { tocdepth } { 5 }
    \@@_n_chapter_head:nn
      { \@@_lang_switch:nn { 目录            } { Contents } }
      { \@@_lang_switch:nn { 目 { \quad } 录 } { Contents } }
    \@starttoc { toc }
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugthesis>
%<*xdupgthesis>
%    \end{macrocode}
% \subsubsection{研究生}
% \paragraph{封面}
% \begin{variable}
%   {
%     \l_@@_ac_master,
%     \l_@@_pro_master,
%     \l_@@_ac_phd,
%     \l_@@_pro_phd,
%     \l_@@_phd,
%     \l_@@_master,
%     \l_@@_ac,
%     \l_@@_pro
%   }
% \changes{v1.16.0.0}{2022/05/22}{研究生类别}
% \changes{v1.17.0.0}{2022/05/28}{增加学术和专业研究生布尔变量}
% \changes{v1.18.0.0}{2022/05/29}{增加硕士和博士研究生布尔变量}
% 研究生类别。
%    \begin{macrocode}
\bool_new:N \l_@@_ac_master
\bool_new:N \l_@@_pro_master
\bool_new:N \l_@@_ac_phd
\bool_new:N \l_@@_pro_phd
\bool_new:N \l_@@_phd
\bool_new:N \l_@@_master
\bool_new:N \l_@@_ac
\bool_new:N \l_@@_pro
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_gr_type_tl { 硕士 }
      {
        \bool_set_true:N \l_@@_master
        \tl_if_eq:NnTF \l_@@_degree_type_tl { 学术 }
          { \bool_set_true:N \l_@@_ac_master  }
          { \bool_set_true:N \l_@@_pro_master }
      }
      {
        \bool_set_true:N \l_@@_phd
        \tl_if_eq:NnTF \l_@@_degree_type_tl { 学术 }
          { \bool_set_true:N \l_@@_ac_phd  }
          { \bool_set_true:N \l_@@_pro_phd }
      }
    \tl_if_eq:NnTF \l_@@_degree_type_tl { 学术 }
      { \bool_set_true:N \l_@@_ac  }
      { \bool_set_true:N \l_@@_pro }
  }
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_cover_i:nnnnn}
% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面单行内容}
% \changes{v1.17.0.0}{2022/05/28}{绘制研究生封面和提名页单行内容}
% 绘制研究生封面和提名页单行内容。
% \begin{arguments}
%   \item 盒子高度。
%   \item 字体族。
%   \item 字号。
%   \item 是否加粗。
%   \item 盒子内容。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cover_i:nnnnn #1#2#3#4#5
  {
    \dim_set:Nn \baselineskip { 20pt }
    \vbox_to_ht:nn { #1 }
      {
        \vfill
        \mode_leave_vertical:
        \hfil
        \use:c { #2 family } \zihao { #3 }
        \str_if_eq:nnTF { #4 } { bf } { \bfseries } { }
        #5
        \hfil
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cover_ii:nnnn}
% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面论文信息}
% \changes{v1.26.4.0}{2022/06/10}{研究生封面论文信息可指定宽度}
% 绘制研究生封面论文信息。
% \begin{arguments}
%   \item 标签宽度。
%   \item 标签名称。
%   \item 盒子宽度。
%   \item 盒子内容。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cover_ii:nnnn #1#2#3#4
  {
    \dim_set:Nn \baselineskip { 20pt }
    \vbox_to_ht:nn { 25pt }
      {
        \vfill
        \mode_leave_vertical:
        \hfil
        \hbox:n
          {
            \zihao { 4 } \bfseries
            \hbox_to_wd:nn { #1 } { \sffamily #2 }
            \skip_horizontal:n { 0.5em }
            \@@_uline:n
              {
                \skip_horizontal:n { 9em - #1 }
                \hbox_to_wd:nn { #3 } { \hfil \rmfamily #4 \hfil }
              }
          }
        \hfil
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cover_iii:nnnn}
% \changes{v1.17.0.0}{2022/05/28}{绘制研究生中文提名页顶部信息}
% 绘制研究生中文提名页顶部信息。
% \begin{arguments}
%   \item 标签宽度。
%   \item 标签名称。
%   \item 值宽度。
%   \item 值内容。
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_cover_iii:nnnn #1#2#3#4
  {
    \dim_set:Nn \baselineskip { 20pt }
    \hbox:n
      {
        \rmfamily \zihao { 5 } \bfseries
        \hbox_to_wd:nn { #1 } { #2 }
        \skip_horizontal:n { 0.5em }
        \@@_uline:n { \hbox_to_wd:nn { #3 } { \hfil #4 \hfil } }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_en_month:n}
% \changes{v1.18.0.0}{2022/05/29}{英文月份}
% 英文月份。
%    \begin{macrocode}
\cs_new:Npn \@@_en_month:n #1
  {
    \str_case:Vn #1
      {
        { 1  } { January   }
        { 2  } { February  }
        { 3  } { March     }
        { 4  } { April     }
        { 5  } { May       }
        { 6  } { June      }
        { 7  } { July      }
        { 8  } { August    }
        { 9  } { September }
        { 10 } { October   }
        { 11 } { November  }
        { 12 } { December  }
        { 01 } { January   }
        { 02 } { February  }
        { 03 } { March     }
        { 04 } { April     }
        { 05 } { May       }
        { 06 } { June      }
        { 07 } { July      }
        { 08 } { August    }
        { 09 } { September }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_zh_today:,\@@_en_today:}
% \changes{v1.17.0.0}{2022/05/28}{中文今日年月}
% \changes{v1.18.0.0}{2022/05/29}{英文今日年月}
% 今日年月。
%    \begin{macrocode}
\cs_new:Npn \@@_zh_today:
  { \int_use:N \c_sys_year_int 年 \int_use:N \c_sys_month_int 月 }
\cs_new:Npn \@@_en_today:
  { \@@_en_month:n { \c_sys_month_int } ~ \int_use:N \c_sys_year_int }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_split_submit_date:N}
% \changes{v1.17.0.0}{2022/05/28}{拆分提交日期为年和月}
% 拆分提交日期为年和月。
%    \begin{macrocode}
\seq_new:N \l_@@_submit_date_seq
\cs_new:Npn \@@_split_submit_date:N #1
  {
    \seq_set_split:NnV \l_@@_submit_date_seq { - } \l_@@_submit_date_str
    \clist_set_from_seq:NN #1 \l_@@_submit_date_seq
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_zh_submit_date:}
% \changes{v1.17.0.0}{2022/05/28}{中文提交日期}
% 中文提交日期。
%    \begin{macrocode}
\clist_new:N \l_@@_submit_date_clist
\cs_new:Npn \@@_zh_submit_date:
  {
    \str_if_empty:NTF \l_@@_submit_date_str
      { \@@_zh_today: }
      {
        \@@_split_submit_date:N \l_@@_submit_date_clist
        \clist_item:Nn \l_@@_submit_date_clist { 1 } 年
        \clist_item:Nn \l_@@_submit_date_clist { 2 } 月
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_en_submit_date:}
% \changes{v1.18.0.0}{2022/05/29}{英文提交日期}
% 英文提交日期。
%    \begin{macrocode}
\str_new:N \l_@@_submit_date_month_str
\cs_new:Npn \@@_en_submit_date:
  {
    \str_if_empty:NTF \l_@@_submit_date_str
      { \@@_en_today: }
      {
        \@@_split_submit_date:N \l_@@_submit_date_clist
        \str_set:Nx \l_@@_submit_date_month_str
          { \clist_item:Nn \l_@@_submit_date_clist { 2 } }
        \@@_en_month:n { \l_@@_submit_date_month_str } ~
        \clist_item:Nn \l_@@_submit_date_clist { 1 }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cover_author_info:}
% \changes{v1.26.4.0}{2022/06/10}{研究生封面底部作者信息}
% 研究生封面底部作者信息。
%    \begin{macrocode}
\cs_new:Npn \@@_cover_author_info:
  {
%    \end{macrocode}
% 计算作者信息最大宽度。
%    \begin{macrocode}
    \rmfamily \zihao { 4 }
    \dim_new:N \l_@@_cover_author_info_dim
    \dim_set:Nn \l_@@_cover_author_info_dim { 7em }
    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_author_str }
    \bool_if:NTF \l_@@_pro_master
      {
        \@@_str_max_dim:Nn \l_@@_cover_author_info_dim
          { \l_@@_supv_str \enskip \l_@@_supv_t_str }
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \@@_str_max_dim:Nn \l_@@_cover_author_info_dim
              { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str }
          }
        \@@_str_max_dim:Nn \l_@@_cover_author_info_dim
          { \l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str }
      }
      {
        \@@_str_max_dim:Nn \l_@@_cover_author_info_dim
          { \l_@@_supv_str \enskip \l_@@_supv_t_str }
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \@@_str_max_dim:Nn \l_@@_cover_author_info_dim
              { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str }
          }
      }
    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_degree_str }
    \dim_add:Nn \l_@@_cover_author_info_dim { 3em }
%    \end{macrocode}
% 排版封面论文信息。
%    \begin{macrocode}
    \@@_cover_ii:nnnn { 4em } { 作者姓名 }
      { \l_@@_cover_author_info_dim }
      { \l_@@_author_str }
    \bool_if:NTF \l_@@_pro_master
      {
        \@@_cover_ii:nnnn { 9em } { 学校导师姓名、职称 }
          { \l_@@_cover_author_info_dim }
          { \l_@@_supv_str \enskip \l_@@_supv_t_str }
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \@@_cover_ii:nnnn { 9em } { }
              { \l_@@_cover_author_info_dim }
              { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str }
          }
        \@@_cover_ii:nnnn { 9em } { 企业导师姓名、职称 }
          { \l_@@_cover_author_info_dim }
          { \l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str }
      }
      {
        \@@_cover_ii:nnnn { 9em } { 指导教师姓名、职称 }
          { \l_@@_cover_author_info_dim }
          { \l_@@_supv_str \enskip \l_@@_supv_t_str }
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \@@_cover_ii:nnnn { 9em } { }
              { \l_@@_cover_author_info_dim }
              { \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str }
          }
      }
    \@@_cover_ii:nnnn { 6em } { 申请学位类别 }
      { \l_@@_cover_author_info_dim }
      { \l_@@_degree_str }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{中文提名页}
% \begin{macro}{\@@_zh_title_page_info:}
% \changes{v1.26.7.0}{2022/06/11}{拆分研究生中文提名页底部信息}
% 中文提名页底部信息。
%    \begin{macrocode}
\cs_new:Npn \@@_zh_title_page_info:
  {
%    \end{macrocode}
% \changes{v1.26.6.0}{2022/06/11}{研究生中文提名页底部信息宽度测量}
% 底部信息宽度测量。
%    \begin{macrocode}
    \rmfamily \zihao { 4 }
    \dim_new:N \l_@@_zh_title_page_info_dim
    \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
      { 作者姓名：\l_@@_author_str }
    \bool_if:NTF \l_@@_ac
      {
        \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
          { 一级学科：\l_@@_major_str }
        \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
          { 二级学科（研究方向）：\l_@@_sub_major_str }
      }
      {
        \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
          { 领\qquad{}域：\l_@@_domain_str }
      }
      \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
        { 学位类别：\l_@@_degree_str }
    \bool_if:NTF \l_@@_pro_master
      {
        \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
          { 学校导师姓名、职称：\l_@@_supv_str \enskip \l_@@_supv_t_str }
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
              { 学校导师姓名、职称：\l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str }
          }
        \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
          { 企业导师姓名、职称：\l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str }
      }
      {
        \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
          { 指导教师姓名、职称：\l_@@_supv_str \enskip \l_@@_supv_t_str }
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
              { 指导教师姓名、职称：\l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str }
          }
      }
    \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
      { 学\qquad{}院：\l_@@_dept_str }
    \@@_str_max_dim:Nn \l_@@_zh_title_page_info_dim
      { 提交日期：\@@_zh_submit_date: }
%    \end{macrocode}
% \changes{v1.26.6.0}{2022/06/11}{研究生中文提名页底部信息自动居中}
% \changes{v1.26.10.0}{2022/06/17}{修正中文提名页底部信息字体系列}
% 底部信息。
%    \begin{macrocode}
    \dim_new:N \l_@@_zh_title_page_info_skip_dim
    \dim_set_eq:NN \l_@@_zh_title_page_info_skip_dim \linewidth
    \dim_sub:Nn \l_@@_zh_title_page_info_skip_dim { \l_@@_zh_title_page_info_dim }
    \skip_horizontal:n { \dim_eval:n { \l_@@_zh_title_page_info_skip_dim / 2 } }
    \vbox:n
      {
        \rmfamily \zihao { 4 }
        \dim_set:Nn \baselineskip { 32pt }
        { \bfseries 作者姓名： } \l_@@_author_str
        \bool_if:NTF \l_@@_ac
          {
            \par
            { \bfseries 一级学科： } \l_@@_major_str
            \par
            { \bfseries 二级学科（研究方向）： } \l_@@_sub_major_str
          }
          {
            \par
            { \bfseries 领\qquad{}域： } \l_@@_domain_str
          }
        \par
        { \bfseries 学位类别： } \l_@@_degree_str
        \bool_if:NTF \l_@@_pro_master
          {
            \par
            { \bfseries 学校导师姓名、职称： }
            \l_@@_supv_str \enskip \l_@@_supv_t_str
            \str_if_empty:NF \l_@@_supv_ii_str
              {
                \par
                \phantom { 学校导师姓名、职称： }
                \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str
              }
            \par
            { \bfseries 企业导师姓名、职称： }
            \l_@@_supv_ent_str \enskip \l_@@_supv_ent_t_str
          }
          {
            \par
            { \bfseries 指导教师姓名、职称： }
            \l_@@_supv_str \enskip \l_@@_supv_t_str
            \str_if_empty:NF \l_@@_supv_ii_str
              {
                \par
                \phantom { 指导教师姓名、职称： }
                \l_@@_supv_ii_str \enskip \l_@@_supv_ii_t_str
              }
          }
        \par
        { \bfseries 学\qquad{}院： } \l_@@_dept_str
        \par
        { \bfseries 提交日期： } \@@_zh_submit_date:
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_zh_title_page:}
% \changes{v1.17.0.0}{2022/05/28}{中文提名页}
% 中文提名页。
%    \begin{macrocode}
\cs_new:Npn \@@_zh_title_page:
  {
%    \end{macrocode}
% 顶部信息。
%    \begin{macrocode}
    \vbox:n { }
    \skip_vertical:n { -7.5pt }
    \dim_set:Nn \baselineskip { 15.6bp }
    \vbox:n
      {
        \mode_leave_vertical:
        \@@_cover_iii:nnnn { 4em } { 学校代码 } { 7em } { 10701                }
        \hfill
        \@@_cover_iii:nnnn { 3em } { 学号     } { 7em } { \l_@@_student_id_str }
      }
    \vbox:n
      {
        \mode_leave_vertical:
        \@@_cover_iii:nnnn { 4em } { 分类号   } { 7em } { \l_@@_clc_str        }
        \hfill
        \@@_cover_iii:nnnn { 3em } { 密级     } { 7em } { \l_@@_secret_lv_str  }
      }
%    \end{macrocode}
% 学校名称和论文类型。
%    \begin{macrocode}
    \@@_cover_i:nnnnn { 100pt  } { sf } { 1  } { bf } { 西安电子科技大学   }
    \@@_cover_i:nnnnn { 85pt   } { rm } { -1 } { bf } { \l_@@_gr_type_tl 学位论文 }
%    \end{macrocode}
% \changes{v1.18.1.0}{2022/05/30}{不拆分研究生中文提名页标题}
% 论文标题。
%    \begin{macrocode}
    \skip_vertical:n { 87.5pt }
    \vbox_to_ht:nn { 150pt }
      {
        \rmfamily \zihao { 2 } \bfseries \centering
        \dim_set:Nn \baselineskip { 30pt }
        \l_@@_title_str
      }
%    \end{macrocode}
% 底部信息。
%    \begin{macrocode}
    \group_begin:
      \@@_zh_title_page_info:
    \group_end:
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{中文提名页}
% \begin{macro}{\@@_en_title_supv:n}
% \changes{v1.18.0.0}{2022/05/29}{英文提名页底部导师姓名拼音盒子}
% 英文提名页底部导师姓名拼音盒子。
%    \begin{macrocode}
\dim_new:N \l_@@_supv_dim
\dim_new:N \l_@@_supv_max_dim
\box_new:N \l_@@_supv_box
\cs_new:Npn \@@_en_title_supv:n #1
  {
    \rmfamily \zihao { 3 }
    \dim_zero:N \l_@@_supv_max_dim
    \hbox_set:Nn \l_@@_supv_box { \l_@@_supv_en_str }
    \dim_set:Nn \l_@@_supv_dim { \box_wd:N \l_@@_supv_box }
    \dim_set:Nn \l_@@_supv_max_dim
      { \dim_max:nn { \l_@@_supv_dim } { \l_@@_supv_max_dim } }
    \str_if_empty:NF \l_@@_supv_ii_str
      {
        \hbox_set:Nn \l_@@_supv_box { \l_@@_supv_ii_en_str }
        \dim_set:Nn \l_@@_supv_dim { \box_wd:N \l_@@_supv_box }
        \dim_set:Nn \l_@@_supv_max_dim
          { \dim_max:nn { \l_@@_supv_dim } { \l_@@_supv_max_dim } }
      }
    \bool_if:NT \l_@@_pro_master
      {
        \hbox_set:Nn \l_@@_supv_box { \l_@@_supv_ent_en_str }
        \dim_set:Nn \l_@@_supv_dim { \box_wd:N \l_@@_supv_box }
        \dim_set:Nn \l_@@_supv_max_dim
          { \dim_max:nn { \l_@@_supv_dim } { \l_@@_supv_max_dim } }
      }
    \hbox_to_wd:nn { \l_@@_supv_max_dim } { #1 \hfil } \quad
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_en_title_supv_t:n}
% \changes{v1.18.0.0}{2022/05/29}{英文提名页底部导师英文职称盒子}
% 英文提名页底部导师英文职称盒子。
%    \begin{macrocode}
\dim_new:N \l_@@_supv_t_dim
\dim_new:N \l_@@_supv_t_max_dim
\box_new:N \l_@@_supv_t_box
\cs_new:Npn \@@_en_title_supv_t:n #1
  {
    \rmfamily \zihao { 3 }
    \dim_zero:N \l_@@_supv_t_max_dim
    \hbox_set:Nn \l_@@_supv_t_box { \l_@@_supv_t_en_str }
    \dim_set:Nn \l_@@_supv_t_dim { \box_wd:N \l_@@_supv_t_box }
    \dim_set:Nn \l_@@_supv_t_max_dim
      { \dim_max:nn { \l_@@_supv_t_dim } { \l_@@_supv_t_max_dim } }
    \str_if_empty:NF \l_@@_supv_ii_str
      {
        \hbox_set:Nn \l_@@_supv_t_box { \l_@@_supv_ii_t_en_str }
        \dim_set:Nn \l_@@_supv_t_dim { \box_wd:N \l_@@_supv_t_box }
        \dim_set:Nn \l_@@_supv_t_max_dim
          { \dim_max:nn { \l_@@_supv_t_dim } { \l_@@_supv_t_max_dim } }
      }
    \bool_if:NT \l_@@_pro_master
      {
        \hbox_set:Nn \l_@@_supv_t_box { \l_@@_supv_ent_t_en_str }
        \dim_set:Nn \l_@@_supv_t_dim { \box_wd:N \l_@@_supv_t_box }
        \dim_set:Nn \l_@@_supv_t_max_dim
          { \dim_max:nn { \l_@@_supv_t_dim } { \l_@@_supv_t_max_dim } }
      }
    \hbox_to_wd:nn { \l_@@_supv_t_max_dim } { #1 \hfil } \quad
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_en_title_page:}
% \changes{v1.18.0.0}{2022/05/29}{英文提名页}
% \changes{v1.26.1.0}{2022/06/07}{修复作者拼音为空无法编译}
% \changes{v1.26.11.0}{2022/06/17}{修复非专业硕士英文提名页英文一级学科}
% 英文提名页。
%    \begin{macrocode}
\cs_new:Npn \@@_en_title_page:
  {
    \vbox:n { }
    \skip_vertical:n { -3.5pt }
    \dim_set:Nn \baselineskip { 30pt }
    \vbox_to_ht:nn { 170pt }
      {
        \rmfamily \zihao { 2 } \bfseries \centering
        \dim_set:Nn \baselineskip { 30pt }
        \l_@@_title_en_str
      }
    \vbox_to_ht:nn { 360pt }
      {
        \rmfamily \zihao { 3 } \centering
        \dim_set:Nn \baselineskip { 30pt }
        A
        \bool_if:NTF \l_@@_master { ~thesis~ } { ~dissertation~ }
        submitted~to\\
        XIDIAN~UNIVERSITY\\
        in~partial~fulfillment~of~the~requirements\\
        for~the~degree~of
        \bool_if:NTF \l_@@_master { ~Master\\ } { ~Doctor~of~Philosophy\\ }
        in
        \bool_if:NTF \l_@@_pro_master
          { ~\l_@@_degree_en_str\\ }
          { ~\l_@@_major_en_str\\  }
      }
    \vbox:n
      {
        \rmfamily \zihao { 3 } \centering
        \dim_set:Nn \baselineskip { 30pt }
        By\\
        \l_@@_author_en_str
        \str_if_empty:NTF \l_@@_author_en_str
          { \skip_vertical:N \baselineskip }
          { \\ }
        Supervisor:~\@@_en_title_supv:n { \l_@@_supv_en_str }
        Title:~\@@_en_title_supv_t:n { \l_@@_supv_t_en_str } \\
        \str_if_empty:NF \l_@@_supv_ii_str
          {
            \phantom { Supervisor:~ } \@@_en_title_supv:n { \l_@@_supv_ii_en_str }
            \phantom { Title:~ } \@@_en_title_supv_t:n { \l_@@_supv_ii_t_en_str } \\
          }
        \bool_if:NT \l_@@_pro_master
          {
            Supervisor:~ \@@_en_title_supv:n { \l_@@_supv_ent_en_str }
            Title:~ \@@_en_title_supv_t:n { \l_@@_supv_ent_t_en_str } \\
          }
        \@@_en_submit_date:
      }
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{声明页}
% \begin{macro}
%   {
%     \@@_statement_scan_sign_uline:n,
%     \@@_statement_scan_sign:nnnn
%   }
% \changes{v2.2.0.0}{2022/06/23}{声明页签字扫描文件}
% 声明页签字扫描文件。
%    \begin{macrocode}
\cs_new:Npn \@@_statement_scan_sign_uline:n #1
  {
    \@@_uline:n
      {
        \vbox_to_ht:nn { 17.5pt }
          {
            \vfil
            \hbox_to_wd:nn { 10em }
              {
                \hfil
                \includegraphics [ width = 10em, height = 25pt, keepaspectratio ] { #1 }
                \hfil
              }
          }
      }
  }
\cs_new:Npn \@@_statement_scan_sign:nnnn #1#2#3#4
  {
    \vbox_to_ht:nn { 30pt }
      {
        \vfil
        #1：
        \@@_statement_scan_sign_uline:n { #2 }
        \hfill
        #3：
        \@@_statement_scan_sign_uline:n { #4 }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_statement:}
% \changes{v1.19.0.0}{2022/05/30}{学位论文独创性声明和关于论文使用授权的说明}
% \changes{v2.2.0.0}{2022/06/23}{支持声明页插入签字扫描文件}
% 学位论文独创性声明和关于论文使用授权的说明。
%    \begin{macrocode}
\cs_new:Npn \@@_statement:
  {
    \vbox:n { }
    \skip_vertical:n { -7.5pt }
    \vbox_to_ht:nn { 60pt }
      {
        \rmfamily \zihao { 4 } \bfseries \centering
        \dim_set:Nn \baselineskip { 20pt }
        西安电子科技大学\\
        学位论文独创性（或创新性）声明
      }
    \vbox_to_ht:nn { 120pt }
      {
        \rmfamily \zihao { -4 }
        \dim_set:Nn \parindent { 2em }
        \dim_set:Nn \baselineskip { 20pt }
        秉承学校严谨的学风和优良的科学道德，本人声明所呈交的论文是我个人在导师指
        导下进行的研究工作及取得的研究成果。尽我所知，除了文中特别加以标注和致谢
        中所罗列的内容以外，论文中不包含其他人已经发表或撰写过的研究成果；也不包
        含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一
        同工作的同事对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
        \par
        学位论文若有不实之处，本人承担一切法律责任。
        \vfil
      }
    \clist_if_empty:NT \l_@@_statement_sign_clist
      { \skip_vertical:n { 20pt } }
    \vbox_to_ht:nn { 175pt }
      {
        \rmfamily \zihao { -4 }
        \dim_set:Nn \parindent { 2em }
        \dim_set:Nn \baselineskip { 20pt }
        \clist_if_empty:NTF \l_@@_statement_sign_clist
          {
            本人签名：\@@_uline:n { \skip_horizontal:n { 10em } }
            \hfill
            日\qquad{}期：\@@_uline:n { \skip_horizontal:n { 10em } }
          }
          {
            \@@_statement_scan_sign:nnnn
              { 本人签名     } { \clist_item:Nn \l_@@_statement_sign_clist { 1 } }
              { 日\qquad{}期 } { \clist_item:Nn \l_@@_statement_sign_clist { 2 } }
          }
      }
    \clist_if_empty:NF \l_@@_statement_sign_clist
      { \skip_vertical:n { 20pt } }
    \vbox_to_ht:nn { 60pt }
      {
        \rmfamily \zihao { 4 } \bfseries \centering
        \dim_set:Nn \baselineskip { 20pt }
        西安电子科技大学\\
        关于论文使用授权的说明
      }
    \vbox_to_ht:nn { 120pt }
      {
        \rmfamily \zihao { -4 }
        \dim_set:Nn \parindent { 2em }
        \dim_set:Nn \baselineskip { 20pt }
        本人完全了解西安电子科技大学有关保留和使用学位论文的规定，即：研究生在校
        攻读学位期间论文工作的知识产权属于西安电子科技大学。学校有权保留送交论文
        的复印件，允许查阅、借阅论文；学校可以公布论文的全部或部分内容，允许采用
        影印、缩印或其它复制手段保存论文。同时本人保证，结合学位论文研究成果完成
        的论文、发明专利等成果，署名单位为西安电子科技大学。
        \par
        保密的学位论文在
        \str_if_eq:NNTF \l_@@_secret_lv_str { 秘密 }
          {
            \str_if_empty:NTF \l_@@_secret_year_str
              { \@@_uline:n { \skip_horizontal:n { 1.5em } } }
              { \@@_uline:n { \enskip \l_@@_secret_year_str \enskip } }
          }
          { \@@_uline:n { \skip_horizontal:n { 1.5em } } }
        年解密后适用本授权书。
        \vfil
      }
    \clist_if_empty:NT \l_@@_statement_sign_clist
      { \skip_vertical:n { 20pt } }
    \vbox:n
      {
        \rmfamily \zihao { -4 }
        \dim_set:Nn \parindent { 2em }
        \dim_set:Nn \baselineskip { 40pt }
        \clist_if_empty:NTF \l_@@_statement_sign_clist
          {
            本人签名：\@@_uline:n { \skip_horizontal:n { 10em } }
            \hfill
            导师签名：\@@_uline:n { \skip_horizontal:n { 10em } }
            \par
            日\qquad{}期：\@@_uline:n { \skip_horizontal:n { 10em } }
            \hfill
            日\qquad{}期：\@@_uline:n { \skip_horizontal:n { 10em } }
          }
          {
            \@@_statement_scan_sign:nnnn
              { 本人签名     } { \clist_item:Nn \l_@@_statement_sign_clist { 3 } }
              { 导师签名     } { \clist_item:Nn \l_@@_statement_sign_clist { 5 } }
            \par
            \@@_statement_scan_sign:nnnn
              { 日\qquad{}期 } { \clist_item:Nn \l_@@_statement_sign_clist { 4 } }
              { 日\qquad{}期 } { \clist_item:Nn \l_@@_statement_sign_clist { 6 } }
          }
      }
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{中英文摘要}
% \begin{macro}{\@@_zh_abstract_keywords:}
% \changes{v1.20.0.0}{2022/05/30}{中文摘要和关键词}
% \changes{v1.28.1.0}{2022/06/18}{添加中文摘要至目录}
% \changes{v1.28.2.0}{2022/06/18}{修正英文语言下中文摘要标题样式}
% 中文摘要和关键词。
%    \begin{macrocode}
\cs_new:Npn \@@_zh_abstract_keywords:
  {
%    \end{macrocode}
% 中文摘要。
%    \begin{macrocode}
    \@@_n_chapter_head_toc:nn { 摘要 } { 摘 { \quad } 要 }
    \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 摘要 } }
    \group_begin:
      \dim_set:Nn \parindent { 2 \ccwd }
      \rmfamily \zihao { -4 }
      \dim_set:Nn \baselineskip { 20pt }
      \file_if_exist_input:n { \l_@@_abstract_zh_tl }
    \group_end:
%    \end{macrocode}
% 中文关键词。
%    \begin{macrocode}
    \group_begin:
      \rmfamily \zihao { -4 }
      \dim_set:Nn \baselineskip { 20pt }
      \skip_vertical:n { 20pt }
      \@@_typeout_keywords:nNn
        { \textbf { 关键词 } ： } { \l_@@_keywords_zh_clist } { ， }
    \group_end:
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_en_abstract_keywords:}
% \changes{v1.20.0.0}{2022/05/30}{英文摘要和关键词}
% \changes{v1.28.1.0}{2022/06/18}{添加英文摘要至目录}
% \changes{v1.28.2.0}{2022/06/18}{修正英文摘要标题样式}
% \changes{v1.28.3.0}{2022/06/18}{修正目录中英文摘要标题样式}
% 英文摘要和关键词。
%    \begin{macrocode}
\cs_new:Npn \@@_en_abstract_keywords:
  {
%    \end{macrocode}
% 英文摘要。
%    \begin{macrocode}
    \@@_n_chapter_head_toc_ii:nn
      { \textrm { ABSTRACT } } { \centering \rmfamily \zihao { 3 } \dim_set:Nn \baselineskip { 20pt } }
    \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { \textrm { ABSTRACT } } }
    \group_begin:
      \dim_set:Nn \parskip { 20pt }
      \rmfamily \zihao { -4 }
      \dim_set:Nn \baselineskip { 20pt }
      \file_if_exist:nT { \l_@@_abstract_en_tl } { \skip_vertical:n { -20pt } }
      \file_if_exist_input:n { \l_@@_abstract_en_tl }
    \group_end:
%    \end{macrocode}
% 英文关键词。
%    \begin{macrocode}
    \group_begin:
      \rmfamily \zihao { -4 }
      \dim_set:Nn \baselineskip { 20pt }
      \skip_vertical:n { 20pt }
      \@@_typeout_keywords:nNn
        { \textbf { Keywords } ： } { \l_@@_keywords_en_clist } { ,~ }
    \group_end:
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{图表索引}
% \begin{macro}{\@@_loft_label_num_width:nN}
% \changes{v1.21.0.0}{2022/06/01}{计算图表索引编号标签最大宽度}
% 计算图表索引编号标签最大宽度。
%    \begin{macrocode}
\cs_new:Npn \@@_loft_label_num_width:nN #1#2
  {
%    \end{macrocode}
% 读取索引文件。
%    \begin{macrocode}
    \tl_clear_new:N \l_@@_loft_tl
    \file_get:nnN
      { \jobname.#1 }
      { \let\do\@makeother \dospecials }
      \l_@@_loft_tl
%    \end{macrocode}
% 使用正则表达式匹配索引编号。
%    \begin{macrocode}
    \seq_clear_new:N \l_@@_loft_label_num_seq
    \cs_generate_variant:Nn \regex_extract_all:nnN { nVN }
    \str_if_eq:nnTF { #1 } { lof }
      {
        \regex_extract_all:nVN
          { \\contentsline\ \{figure\}\{\\numberline\ \{\K[0-9A-Z\.]+ }
          \l_@@_loft_tl \l_@@_loft_label_num_seq
      }
      {
        \regex_extract_all:nVN
          { \\contentsline\ \{table\}\{\\numberline\ \{\K[0-9A-Z\.]+ }
          \l_@@_loft_tl \l_@@_loft_label_num_seq
      }
%    \end{macrocode}
% 计算所有索引编号的最大宽度。
%    \begin{macrocode}
    \dim_zero_new:N \l_@@_loft_label_num_dim
    \seq_map_inline:Nn \l_@@_loft_label_num_seq
      {
        \@@_get_text_width:Nn \l_@@_loft_label_num_dim { ##1 }
        \dim_set:Nn #2 { \dim_max:nn { \l_@@_loft_label_num_dim } { #2 } }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_list_of_figure:}
% \changes{v1.21.0.0}{2022/05/31}{插图索引}
% \changes{v1.28.1.0}{2022/06/18}{添加插图索引至目录}
% \changes{v1.29.3.0}{2022/06/19}{修正插图索引字号}
% 插图索引。
%    \begin{macrocode}
\cs_new:Npn \@@_list_of_figure:
  {
    \@@_n_chapter_head_toc:n
      { \@@_lang_switch:nn { 插图索引 } { List~of~Figures } }
    \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 插图索引 } }
    \group_begin:
      \addtocontents { lof } { \vspace { 10pt } }
      \renewcommand { \addvspace } [1] { }
%    \end{macrocode}
% 配置文本标签及宽度。
%    \begin{macrocode}
      \tl_set:Nn \cftfigpresnum {  \figurename \space }
      \dim_zero_new:N \l_@@_lof_label_dim
      \@@_get_text_width:NV \l_@@_lof_label_dim \cftfigpresnum
      \dim_set:Nn \cftfignumwidth { \l_@@_lof_label_dim }
%    \end{macrocode}
% 配置索引编号标签宽度。
%    \begin{macrocode}
      \dim_new:N \l_@@_lof_label_num_max_dim
      \@@_loft_label_num_width:nN { lof } \l_@@_lof_label_num_max_dim
      \dim_add:Nn \cftfignumwidth { \l_@@_lof_label_num_max_dim }
      \dim_add:Nn \cftfignumwidth { .75em }
      \dim_set:Nn \cftfigindent { 0pt }
%    \end{macrocode}
% 排版索引表。
%    \begin{macrocode}
      \rmfamily \zihao { -4 } \dim_set:Nn \baselineskip { 20pt }
      \@starttoc { lof }
    \group_end:
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_list_of_table:}
% \changes{v1.21.0.0}{2022/05/31}{表格索引}
% \changes{v1.28.1.0}{2022/06/18}{添加表格索引至目录}
% \changes{v1.29.3.0}{2022/06/19}{修正表格索引字号}
% 表格索引。
%    \begin{macrocode}
\cs_new:Npn \@@_list_of_table:
  {
    \@@_n_chapter_head_toc:n
      { \@@_lang_switch:nn { 表格索引 } { List~of~Tables } }
    \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 表格索引 } }
    \group_begin:
      \addtocontents { lot } { \vspace { 10pt } }
      \renewcommand { \addvspace } [1] { }
%    \end{macrocode}
% 配置文本标签及宽度。
%    \begin{macrocode}
      \tl_set:Nn \cfttabpresnum {  \tablename \space }
      \dim_zero_new:N \l_@@_lot_label_dim
      \@@_get_text_width:NV \l_@@_lot_label_dim \cfttabpresnum
      \dim_set:Nn \cfttabnumwidth { \l_@@_lot_label_dim }
%    \end{macrocode}
% 配置索引编号标签宽度。
%    \begin{macrocode}
      \dim_new:N \l_@@_lot_label_num_max_dim
      \@@_loft_label_num_width:nN { lot } \l_@@_lot_label_num_max_dim
      \dim_add:Nn \cfttabnumwidth { \l_@@_lot_label_num_max_dim }
      \dim_add:Nn \cfttabnumwidth { .75em }
      \dim_set:Nn \cfttabindent { 0pt }
%    \end{macrocode}
% 排版索引表。
%    \begin{macrocode}
      \rmfamily \zihao { -4 } \dim_set:Nn \baselineskip { 20pt }
      \@starttoc { lot }
    \group_end:
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{对照表}
% \begin{macro}{\UseTblrLibrary,\NewTblrTheme}
% \changes{v1.22.0.0}{2022/06/05}{对照表样式}
% 对照表样式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_new:N \l_@@_load_tabularray_bool
    \bool_if:NF \l_@@_customize_los_bool
      { \bool_set_true:N \l_@@_load_tabularray_bool }
    \bool_if:NF \l_@@_customize_loa_bool
      { \bool_set_true:N \l_@@_load_tabularray_bool }
    \bool_if:NT \l_@@_load_tabularray_bool
      {
        \RequirePackage { tabularray }
        \UseTblrLibrary { functional }
        \NewTblrTheme { losloatheme }
          {
            \DefTblrTemplate { caption-tag   } { default } { }
            \DefTblrTemplate { caption-sep   } { default } { }
            \DefTblrTemplate { caption-text  } { default } { }
            \DefTblrTemplate { conthead-text } { default } { }
            \DefTblrTemplate { contfoot-text } { default } { }
          }
      }
    \cs_generate_variant:Nn \__tblr_parse_colrow_spec:nn { nV }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}{\l_@@_losa_add_skip_dim}
% \changes{v2.10.2.0}{2022/06/28}{对照表行间距补偿值}
% 对照表行间距补偿值：
% $20pt-12bp\times(72.27/72)pt/bp\times1.2\times1.3=1.2098pt$。
%    \begin{macrocode}
\dim_new:N \l_@@_losa_add_skip_dim
\dim_set:Nn \l_@@_losa_add_skip_dim { 1.2098pt }
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_symbols_list:}
% \changes{v1.22.0.0}{2022/06/05}{符号对照表}
% \changes{v1.26.2.0}{2022/06/09}{修复符号对照表列格式解析错误}
% \changes{v1.26.3.0}{2022/06/09}{修复符号对照表文件导入接口}
% \changes{v1.26.5.0}{2022/06/10}{修复符号对照表空文件标题行错误}
% \changes{v1.28.1.0}{2022/06/18}{添加符号对照表至目录}
% \changes{v1.29.1.0}{2022/06/19}{修复符号对照表引起的章节段前段后间距错误}
% \changes{v2.2.1.0}{2022/06/23}{移除表格索引中生成的符号对照表}
% \changes{v2.10.2.0}{2022/06/28}{修正符号对照表行内行间距}
% 符号对照表。
%    \begin{macrocode}
\cs_new:Npn \@@_symbols_list:
  {
    \@@_n_chapter_head_toc:n
      { \@@_lang_switch:nn { 符号对照表 } { List~of~Symbols } }
    \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 符号对照表 } }
%    \end{macrocode}
% 是否完全自定义符号对照表。
%    \begin{macrocode}
    \bool_if:NTF \l_@@_customize_los_bool
      { \file_if_exist_input:n { \l_@@_los_str } }
      {
%    \end{macrocode}
% 配置符号对照表标题行。
%    \begin{macrocode}
        \tl_new:N \l_@@_los_head_tl
        \@@_lang_switch:nn
          { \tl_set:Nn \l_@@_los_head_tl { 符号 & 符号名称 \\        } }
          { \tl_set:Nn \l_@@_los_head_tl { Notation & Description \\ } }
%    \end{macrocode}
% 是否每页均显示符号对照表标题行。
%    \begin{macrocode}
        \tl_new:N \l_@@_los_rowhead_tl
        \bool_if:NTF \l_@@_title_row_los_bool
          { \tl_set:Nn \l_@@_los_rowhead_tl { 1 } }
          { \tl_set:Nn \l_@@_los_rowhead_tl { 0 } }
%    \end{macrocode}
% 使用\envx{longtblr}环境排版符号对照表。
%    \begin{macrocode}
        \tl_new:N \l_@@_los_begin_tblr_tl
        \tl_set:Nx \l_@@_los_begin_tblr_tl
          {
            \exp_not:n
              {
                \begin { longtblr }
                  [
                    evaluate = \fileIfExistInput,
                    expand   = \l_@@_los_head_tl,
                    entry    = none,
                    theme    = losloatheme
                  ]
              }
              {
                colspec = { \exp_not:V \l_@@_colspec_los_tl },
                \exp_not:n
                  {
                    rowhead  = \int_compare:nNnTF
                                 { \value { rowcount } } > { 1 }
                                 { \l_@@_los_rowhead_tl } { 0 },
                    cells    = {
                                 font = \rmfamily \zihao { -4 }
                                 \dim_add:Nn \baselineskip { \l_@@_losa_add_skip_dim }
                               },
                    abovesep = 0pt,
                    belowsep = \l_@@_losa_add_skip_dim
                  }
              }
          }
        \tl_use:N \l_@@_los_begin_tblr_tl
          \l_@@_los_head_tl
          \fileIfExistInput { \l_@@_los_str }
        \end { longtblr }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_abbreviations_list:}
% \changes{v1.22.0.0}{2022/06/05}{缩略语对照表}
% \changes{v1.26.2.0}{2022/06/09}{修复缩略语对照表列格式解析错误}
% \changes{v1.26.3.0}{2022/06/09}{修复缩略语对照表文件导入接口}
% \changes{v1.26.5.0}{2022/06/10}{修复缩略语对照表空文件标题行错误}
% \changes{v1.28.1.0}{2022/06/18}{添加缩略语对照表至目录}
% \changes{v1.29.1.0}{2022/06/19}{修复缩略语对照表引起的章节段前段后间距错误}
% \changes{v2.2.1.0}{2022/06/23}{移除表格索引中生成的缩略语对照表}
% \changes{v2.10.2.0}{2022/06/28}{修正缩略语对照表行内行间距}
% 缩略语对照表。
%    \begin{macrocode}
\cs_new:Npn \@@_abbreviations_list:
  {
    \@@_n_chapter_head_toc:n
      { \@@_lang_switch:nn { 缩略语对照表 } { List~of~Abbreviations } }
    \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 缩略语对照表 } }
%    \end{macrocode}
% 是否完全自定义缩略语对照表。
%    \begin{macrocode}
    \bool_if:NTF \l_@@_customize_loa_bool
      { \file_if_exist_input:n { \l_@@_loa_str } }
      {
%    \end{macrocode}
% 配置缩略语对照表标题行。
%    \begin{macrocode}
        \tl_new:N \l_@@_loa_head_tl
        \@@_lang_switch:nn
          {
            \tl_set:Nn \l_@@_loa_head_tl
              { 缩略语 & 英文全称 & 中文对照 \\ }
          }
          {
            \tl_set:Nn \l_@@_loa_head_tl
              { Abbreviation & English~Full~Name & Chinese~Full~Name \\ }
          }
%    \end{macrocode}
% 是否每页均显示缩略语对照表标题行。
%    \begin{macrocode}
        \tl_new:N \l_@@_loa_rowhead_tl
        \bool_if:NTF \l_@@_title_row_loa_bool
          { \tl_set:Nn \l_@@_loa_rowhead_tl { 1 } }
          { \tl_set:Nn \l_@@_loa_rowhead_tl { 0 } }
%    \end{macrocode}
% 使用\envx{longtblr}环境排版缩略语对照表。
%    \begin{macrocode}
        \tl_new:N \l_@@_loa_begin_tblr_tl
        \tl_set:Nx \l_@@_loa_begin_tblr_tl
          {
            \exp_not:n
              {
                \begin { longtblr }
                  [
                    evaluate = \fileIfExistInput,
                    expand   = \l_@@_loa_head_tl,
                    entry    = none,
                    theme    = losloatheme
                  ]
              }
              {
                colspec = { \exp_not:V \l_@@_colspec_loa_tl },
                \exp_not:n
                  {
                    rowhead  = \int_compare:nNnTF
                                 { \value { rowcount } } > { 1 }
                                 { \l_@@_loa_rowhead_tl } { 0 },
                    cells    = {
                                 font = \rmfamily \zihao { -4 }
                                 \dim_add:Nn \baselineskip { \l_@@_losa_add_skip_dim }
                               },
                    abovesep = 0pt,
                    belowsep = \l_@@_losa_add_skip_dim
                  }
              }
          }
        \tl_use:N \l_@@_loa_begin_tblr_tl
          \l_@@_loa_head_tl
          \fileIfExistInput { \l_@@_loa_str }
        \end { longtblr }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_add_zh_toc:nn}
% \changes{v1.30.0.0}{2022/06/20}{添加章节至中文目录}
%    \begin{macrocode}
\cs_new:Npn \@@_add_zh_toc:nn #1#2
  {
    \str_if_eq:NNTF { #1 } { chapter }
      { \phantomsection \addcontentsline { zh.toc } { #1 } { \@@_sf_family: #2 } }
      { \phantomsection \addcontentsline { zh.toc } { #1 } { #2 } }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{\tn{frontmatter}}
% \begin{macro}{\frontmatter}
% \changes{v1.5.0.0}{2022/05/01}{设置封面页边距}
% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码}
% \changes{v1.16.0.0}{2022/05/22}{绘制研究生封面}
% \changes{v2.7.0.0}{2022/06/26}{研究生学位论文支持移除前言部分页面}
% 排版前言部分。
%    \begin{macrocode}
\renewcommand { \frontmatter }
  {
    \loadgeometry { cover }
    \pagestyle    { empty }
    \dim_set:Nn \parindent { 0pt }
    \dim_set:Nn \baselineskip { 20pt }
    \bool_if:NF \l_@@_rm_cover_bool
      {
        \@@_add_bookmark:n { \@@_lang_switch:nn { 封面 } { Cover } }
%    \end{macrocode}
% \changes{v1.18.1.0}{2022/05/30}{不拆分研究生封面标题}
% 封面标题。
%    \begin{macrocode}
        \vbox:n { }
        \skip_vertical:n { 435pt }
        \vbox_to_ht:nn { 120pt }
          {
            \rmfamily \zihao { 2 } \bfseries \centering
            \dim_set:Nn \baselineskip { 30pt }
            \l_@@_title_str
          }
%    \end{macrocode}
% 封面底部作者信息。
%    \begin{macrocode}
        \@@_cover_author_info:
        \cleardoublepage
      }
%    \end{macrocode}
% 中英文提名页。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_title_page_bool
      {
        \@@_lang_switch:nn
          { \@@_zh_title_page: \@@_en_title_page: }
          { \@@_en_title_page: \@@_zh_title_page: }
      }
%    \end{macrocode}
% 声明页。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_statement_bool
      {
        \file_if_exist:nTF { \l_@@_statement_scan_str }
          {
            \loadgeometry { nomargin }
            \vbox_to_ht:nn { \textheight }
              {
                \vfil
                \centering
                \includegraphics
                  [ width = \textwidth, height = \textheight, keepaspectratio ]
                  { \l_@@_statement_scan_str }
                \vfil
              }
            \cleardoublepage
          }
          { \@@_statement: }
      }
%    \end{macrocode}
% 更改页面样式。
%    \begin{macrocode}
    \@@_load_main_geometry:
    \pagestyle     { front }
    \pagenumbering { Roman }
    \dim_set:Nn \baselineskip { 20pt }
%    \end{macrocode}
% 中英文摘要。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_abstract_bool
      {
        \@@_lang_switch:nn
          { \@@_zh_abstract_keywords: \@@_en_abstract_keywords: }
          { \@@_en_abstract_keywords: \@@_zh_abstract_keywords: }
      }
%    \end{macrocode}
% 图表索引。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_loft_bool
      {
        \@@_list_of_figure:
        \@@_list_of_table:
      }
%    \end{macrocode}
% 符号对照表和缩略语对照表。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_losa_bool
      {
        \@@_symbols_list:
        \@@_abbreviations_list:
      }
%    \end{macrocode}
% \changes{v1.23.0.0}{2022/06/05}{研究生学位论文目录}
% \changes{v1.28.0.0}{2022/06/18}{设置研究生学位论文目录深度}
% 目录。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_toc_bool
      {
        \setcounter { tocdepth } { 2 }
        \@@_n_chapter_head:nn
          { \@@_lang_switch:nn { 目录            } { Contents } }
          { \@@_lang_switch:nn { 目 { \quad } 录 } { Contents } }
        \@starttoc { toc }
        \cleardoublepage
%    \end{macrocode}
% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文中文目录}
% 英文研究生学位论文中文目录。
%    \begin{macrocode}
        \@@_lang_switch:nn { }
          {
            \setcounter { tocdepth } { 2 }
            \@@_n_chapter_head:nn { 目录 } { \@@_sf_family: 目 { \quad } 录 }
            \@starttoc { zh.toc }
            \cleardoublepage
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*xduugthesis>
%    \end{macrocode}
% \subsection{正文部分}
% \subsubsection{本科生}
% \begin{macro}{\mainmatter}
% \changes{v0.8.0.0}{2022/04/12}{支持对称页边距}
% 排版正文部分。
%    \begin{macrocode}
\renewcommand { \mainmatter }
  {
    \@@_load_main_geometry:
    \pagestyle     { plain  }
    \pagenumbering { arabic }
    \dim_set:Nn \parindent { 2 \ccwd }
    \rmfamily \zihao { -4 }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugthesis>
%<*xdupgthesis>
%    \end{macrocode}
% \subsubsection{研究生}
% \begin{macro}{\mainmatter}
% \changes{v1.5.0.0}{2022/05/01}{设置正文页边距}
% \changes{v1.6.0.0}{2022/05/02}{设置页脚页码}
% \changes{v1.23.1.0}{2022/06/05}{设置正文字号和行间距}
% \changes{v2.10.3.0}{2022/06/28}{修正公式与正文间距}
% 排版正文部分。
%    \begin{macrocode}
\renewcommand { \mainmatter }
  {
    \@@_load_main_geometry:
    \pagestyle     { plain  }
    \pagenumbering { arabic }
    \dim_set:Nn \parindent { 2 \ccwd }
    \rmfamily \zihao { -4 }
    \dim_set:Nn \baselineskip { 20pt }
%    \end{macrocode}
% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文目录中正文一二三级中英双语标题}
% 英文研究生学位论文目录中正文一二三级中英双语标题。
%    \begin{macrocode}
    \@@_lang_switch:nn { }
      {
        \cs_new_eq:NN \@@_org_chapter:n \chapter
        \RenewDocumentCommand { \chapter } { m m }
          {
            \@@_org_chapter:n { ##1 }
            \@@_add_zh_toc:nn { chapter }
              { \numberline { 第 \chinese { chapter } 章 \hspace { .3em } } ##2 }
          }
        \cs_new_eq:NN \@@_org_section:n \section
        \RenewDocumentCommand { \section } { m m }
          {
            \@@_org_section:n { ##1 }
            \@@_add_zh_toc:nn { section } { \numberline { \thesection } ##2 }
          }
        \cs_new_eq:NN \@@_org_subsection:n \subsection
        \RenewDocumentCommand { \subsection } { m m }
          {
            \@@_org_subsection:n { ##1 }
            \@@_add_zh_toc:nn { subsection } { \numberline { \thesubsection } ##2 }
          }
      }
%    \end{macrocode}
% 修正公式与正文间距。
%    \begin{macrocode}
    \dim_set:Nn \abovedisplayskip      { 12bp }
    \dim_set:Nn \belowdisplayskip      { 12bp }
    \dim_set:Nn \abovedisplayshortskip { 0bp  }
    \dim_set:Nn \belowdisplayshortskip { 12bp }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*xduugthesis>
%    \end{macrocode}
% \subsection{后记部分}
% \subsubsection{本科生}
% \begin{macro}{\backmatter}
% 排版后记部分。
%    \begin{macrocode}
\renewcommand { \backmatter }
  {
%    \end{macrocode}
% \changes{v1.1.4.0}{2022/04/16}{为致谢章节标题增加间距}
% 致谢。
%    \begin{macrocode}
    \@@_n_chapter_head_toc:nn
      { \@@_lang_switch:nn { 致谢            } { Acknowledgements } }
      { \@@_lang_switch:nn { 致 { \quad } 谢 } { Acknowledgements } }
    \group_begin:
      \dim_set:Nn \parindent { 2 \ccwd }
      \rmfamily \zihao { -4 }
      \file_if_exist_input:n { \l_@@_ack_tl }
    \group_end:
%    \end{macrocode}
% 参考文献。
% \changes{v0.2.1.0}{2022/04/04}{参考文献添加至目录}
% \changes{v0.5.2.0}{2022/04/07}{修正参考文献列表字体字号}
% \changes{v1.3.1.0}{2022/04/21}{修复参考文献列表字体字号}
% \changes{v1.4.1.0}{2022/04/27}{修复bibtex产生的多余参考文献列表章节}
% \changes{v2.2.2.0}{2022/06/24}{修正本科生毕业设计参考文献行间距}
% \changes{v2.2.3.0}{2022/06/24}{修改本科生毕业设计参考文献\bibtex{}字体字号设置方式}
% \changes{v2.2.5.0}{2022/06/24}{修改本科生毕业设计参考文献标签与文献内容的间距}
% \changes{v2.6.1.0}{2022/06/25}{修正本科生毕业设计参考文献斜杠符号字体}
%    \begin{macrocode}
    \cs_set:Npn \bibname { \@@_lang_switch:nn { 参考文献 } { Bibliography } }
    \@@_n_chapter_head_toc:n { \bibname }
    \group_begin:
      \tl_if_eq:NnTF \l_@@_bib_tool_tl { bibtex }
        {
          \dim_set:Nn \labelsep { 1ex }
          \bibliography { \l_@@_bib_file_clist }
        }
        { \printbibliography }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugthesis>
%<*xdupgthesis>
%    \end{macrocode}
% \subsubsection{研究生}
% \begin{macro}{\RequirePackage,\newenvironment}
% \changes{v1.26.0.0}{2022/06/07}{作者简介样式}
% 作者简介样式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
%    \end{macrocode}
% 计算列表和表格缩进距离。
%    \begin{macrocode}
      \dim_new:N \l_@@_bio_indent_dim
      \box_new:N \l_@@_bio_indent_box
      \hbox_set:Nn \l_@@_bio_indent_box { \rmfamily \zihao { -3 } \bfseries 1. \quad}
      \dim_set:Nn \l_@@_bio_indent_dim { \box_wd:N \l_@@_bio_indent_box }
%    \end{macrocode}
% 定义教育背景表格环境。
%    \begin{macrocode}
    \bool_if:NF \l_@@_customize_edubg_bool
      {
        \RequirePackage { tabularray }
        \newenvironment { edubg }
          {
            \dim_set:Nn \parindent { 0pt }
            \begin { tblr }
              {
                colspec = { @{ \skip_horizontal:N \l_@@_bio_indent_dim } lX @{ } },
                rows    = { font = \zihao { -4 } \dim_set:Nn \baselineskip { 20pt } }
              }
          }
          {
            \end { tblr }
            \dim_set:Nn \parindent { 2 \ccwd }
          }
      }
%    \end{macrocode}
% 定义研究成果列表。
%    \begin{macrocode}
    \bool_if:NF \l_@@_customize_resresult_bool
      {
        \RequirePackage { enumitem }
        \SetEnumitemKey { resresult }
          {
            label   = {[}\arabic*{]},
            left    = \l_@@_bio_indent_dim,
            align   = right,
            parsep  = 0pt,
            itemsep = 0pt,
            topsep  = 0pt
          }
        \newenvironment { resresult }
          { \begin { enumerate } [ resresult ] }
          { \end { enumerate } }
      }
  }
%    \end{macrocode}
% \end{macro}
% \changes{v2.7.0.0}{2022/06/26}{研究生学位论文支持移除后记部分页面}
% \begin{macro}{\backmatter}
% 排版后记部分。
%    \begin{macrocode}
\renewcommand { \backmatter }
  {
%    \end{macrocode}
% \changes{v1.30.0.0}{2022/06/20}{恢复英文研究生学位论文后记一二三级标题命令}
% 恢复英文研究生学位论文后记一二三级标题命令。
%    \begin{macrocode}
    \@@_lang_switch:nn { }
      {
        \cs_set_eq:NN \chapter \@@_org_chapter:n
        \cs_set_eq:NN \section \@@_org_section:n
        \cs_set_eq:NN \subsection \@@_org_subsection:n
      }
%    \end{macrocode}
% \changes{v1.25.0.0}{2022/06/05}{研究生学位论文参考文献}
% \changes{v2.2.2.0}{2022/06/24}{修正研究生学位论文参考文献行间距}
% \changes{v2.2.3.0}{2022/06/24}{修改研究生学位论文参考文献\bibtex{}字体字号设置方式}
% \changes{v2.2.5.0}{2022/06/24}{修改研究生学位论文参考文献标签与文献内容的间距}
% \changes{v2.6.1.0}{2022/06/25}{修正研究生学位论文参考文献斜杠符号字体}
% 参考文献。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_ref_bool
      {
        \cs_set:Npn \bibname { \@@_lang_switch:nn { 参考文献 } { Bibliography } }
        \@@_n_chapter_head_toc:n { \bibname }
        \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 参考文献 } }
      }
    \group_begin:
      \tl_if_eq:NnTF \l_@@_bib_tool_tl { bibtex }
        {
          \bool_if:NTF \l_@@_rm_ref_bool
            { \nobibliography { \l_@@_bib_file_clist } }
            {
              \dim_set:Nn \labelsep { 1ex }
              \bibliography { \l_@@_bib_file_clist }
            }
        }
        {
          \bool_if:NF \l_@@_rm_ref_bool
            { \printbibliography }
        }
    \group_end:
%    \end{macrocode}
% \changes{v1.24.0.0}{2022/06/05}{研究生学位论文致谢}
% 致谢。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_ack_bool
      {
        \@@_n_chapter_head_toc:nn
          { \@@_lang_switch:nn { 致谢            } { Acknowledgements } }
          { \@@_lang_switch:nn { 致 { \quad } 谢 } { Acknowledgements } }
        \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 致谢 } }
        \group_begin:
          \dim_set:Nn \parindent { 2 \ccwd }
          \rmfamily \zihao { -4 }
          \dim_set:Nn \baselineskip { 20pt }
          \file_if_exist_input:n { \l_@@_ack_tl }
        \group_end:
      }
%    \end{macrocode}
% \changes{v1.26.0.0}{2022/06/07}{研究生学位论文作者简介}
% \changes{v1.28.4.0}{2022/06/18}{移除研究生学位论文目录中作者简介二三级标题}
% 作者简介。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_bio_bool
      {
        \@@_n_chapter_head_toc:n
          { \@@_lang_switch:nn { 作者简介 } { Author~Biography } }
        \@@_lang_switch:nn { } { \@@_add_zh_toc:nn { chapter } { 作者简介 } }
        \group_begin:
          \dim_set:Nn \parindent { 2 \ccwd }
          \rmfamily \zihao { -4 }
          \dim_set:Nn \baselineskip { 20pt }
%    \end{macrocode}
% 配置作者简介部分标题样式。
%    \begin{macrocode}
          \ctexset
            {
                section    / number = { \arabic { section } . },
                section    / format = { \rmfamily \zihao { -3 } \bfseries \raggedright },
                subsection / number = { \arabic { section } . \arabic { subsection } },
                subsection / format = { \rmfamily \zihao { 4 } \bfseries \raggedright },
                subsection / indent = { \l_@@_bio_indent_dim }
            }
          \setcounter { section } { 0 }
          \addtocontents { toc } { \setcounter { tocdepth } { 0 } }
%    \end{macrocode}
% 作者简介文件。
%    \begin{macrocode}
          \file_if_exist_input:n { \l_@@_bio_str }
        \group_end:
      }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%    \end{macrocode}
%    \begin{macrocode}
%<@@=>
%    \end{macrocode}
% \Finale
\endinput
