% \iffalse
%<*driver>
\ProvidesFile{xduts.dtx}
[2025/04/26 v6.2.7.2 Xidian University TeX Suite]
%</driver>
%<class|sty>\NeedsTeXFormat{LaTeX2e}
%<class|sty>\RequirePackage{expl3}
%<xdufont>\ProvidesExplPackage{xdufont}
%<xduugtp>\ProvidesExplClass{xduugtp}
%<xdupgthesis>\ProvidesExplClass{xdupgthesis}
%<xduugthesis>\ProvidesExplClass{xduugthesis}
%<class|sty>  {2025/04/26}{6.2.7.2}
%<xdufont>  {Xidian University Font package}
%<xduugtp>  {Xidian University Undergraduate Thesis Proposal class}
%<xdupgthesis>  {Xidian University Postgraduate Thesis document class}
%<xduugthesis>  {Xidian University Undergraduate Thesis document class}
%<*driver>
\PassOptionsToPackage{AutoFakeBold=3}{xeCJK}
\RequirePackage{silence}
\WarningsOff[hyperref,tocloft,latexfont]
\renewcommand{\message}[1]{}
\documentclass{ctxdoc}
\changes{v4.3.0.2}{2023/01/30}{移除文档编译警告和消息}
\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{pifont}
\newcommand{\cmark}{\ding{51}}
\usepackage{subcaption}
\changes{v5.1.0.1}{2023/02/22}{修改文档内表格样式}
\DeclareCaptionLabelSeparator{customskip}{\hskip.75em}
\captionsetup{font=bf,labelsep=customskip}
\usepackage{tabularray}
\changes{v2.16.1.3}{2022/11/27}{修改文档中caption字体样式}
\setlength{\intextsep}{\the\abovecaptionskip}
\SetTblrOuter[tblr,longtblr]{presep=\belowcaptionskip+\intextsep,headsep=\abovecaptionskip}
\SetTblrStyle{caption-tag}{font=\bfseries}
\SetTblrStyle{caption-text}{font=\bfseries}
\DefTblrTemplate{caption-sep}{default}{\hskip.75em}
\DefTblrTemplate{conthead-text}{default}{\textbf{(续表)}}
\DefTblrTemplate{contfoot-text}{default}{\textbf{接下页}}
\changes{v6.1.2.1}{2023/03/09}{修改文档交叉引用样式}
\changes{v4.4.5.1}{2023/02/11}{移除文档对xspace的依赖}
% 交叉引用
\NewDocumentCommand{\secrefx}{m}{第\nobreakspace\ref{#1}\nobreakspace{}节}
\NewDocumentCommand{\tabrefx}{mO{\space}}{表\nobreakspace\ref{#1}#2}
\NewDocumentCommand{\figrefx}{mO{\space}}{图\nobreakspace\ref{#1}#2}
% 选项
\NewDocumentCommand{\optx}{O{\space}mO{\space}}{#1{\ttfamily\seqsplit{#2}}#3}
% \name LaTeX3控制序列
\NewDocumentCommand{\csx}{O{\space}mO{\space}}{#1\cs{#2}#3}
% \name LaTeX2e命令
\NewDocumentCommand{\tnx}{O{\space}mO{\space}}{#1\tn{#2}#3}
% <name> 键值
\NewDocumentCommand{\metax}{O{\space}mO{\space}}{#1\meta{#2}#3}
% LaTeX3键值对
\newcommand{\breakablethinspace}{\hskip.16667em\relax}
\NewDocumentCommand{\kvoptx}{O{\space}mmO{\space}}{#1\texttt{#2\breakablethinspace=\breakablethinspace#3}#4}
% {<name>} 必选参数
\NewDocumentCommand{\margx}{O{\space}mO{\space}}{#1\marg{#2}#3}
% [<name>] 可选参数
\NewDocumentCommand{\oargx}{O{\space}mO{\space}}{#1\oarg{#2}#3}
% 文件
\usepackage{seqsplit}
\NewDocumentCommand{\filex}{O{\space}mO{\space}}{#1{\ttfamily\seqsplit{#2}}#3}
% 环境
\NewDocumentCommand{\envx}{O{\space}mO{\space}}{#1\env{#2}#3}
% 宏包
\NewDocumentCommand{\pkgx}{O{\space}mO{\space}}{#1\pkg{#2}#3}
% 文档类
\NewDocumentCommand{\clsx}{O{\space}mO{\space}}{#1\cls{#2}#3}
% 值
\NewDocumentCommand{\valuex}{O{\space}mO{\space}}{#1{\ttfamily\seqsplit{#2}}#3}
% 程序
\NewDocumentCommand{\cmdx}{O{\space}mO{\space}}{#1{\ttfamily\seqsplit{#2}}#3}
% 链接
\NewDocumentCommand{\footurl}{m}{\footnote{\url{#1}}}
\NewDocumentCommand{\footctan}{m}{\footnote{\href{https://mirrors.cloud.tencent.com/CTAN/#1}{\ttfamily CTAN://#1}}}
% logo
\changes{v4.1.1.1}{2023/01/21}{修正LOGO字形高度}
\newfontfamily{\ffmfamily}[Scale=MatchUppercase]{ffmb10.otf}
\NewDocumentCommand{\xduts}{O{\space}mO{\space}}{#1{\ffmfamily XDUTS}#3}
\NewDocumentCommand{\bibtex}{O{\space}mO{\space}}{#1\hologo{BibTeX}#3}
\NewDocumentCommand{\biblatex}{O{\space}mO{\space}}{#1 Bib\LaTeX #3}
% arguments list
\setlist[arguments]{label=\texttt{\#\arabic*}\,:}
% 浮动体默认设置
\makeatletter
\renewcommand{\fps@table}{htbp}
\makeatother
% listings
\changes{v2.14.1.2}{2022/11/23}{修改示例代码缩进}
\changes{v2.14.1.1}{2022/11/22}{修改示例代码样式}
\usepackage{listings}
\lstset{
language        = [LaTeX]TeX,
gobble          = 1,
basewidth       = 0.5em,
breaklines      = true,
basicstyle      = \small\ttfamily,
backgroundcolor = \color{gray9!25},
texcsstyle      = *[1]{\color{brown3}},
texcsstyle      = *[2]{\color{teal3}},
texcsstyle      = *[3]{\color{azure3}},
texcsstyle      = *[4]{\color{violet3}},
texcsstyle      = *[5]{\color{yellow3}},
emphstyle       = [6]{\color{blue3}},
texcs           = [1]{documentclass,usepackage},
texcs           = [2]{begin,end},
texcs           = [3]{part,chapter,section,subsection,subsubsection,paragraph,subparagraph},
texcs           = [4]{xdusetup,anon,noauxwrite},
texcs           = [5]{textbf,textsl,textsf,par,item,caption,parencite},
emph            = [6]{document,tabular,edubg,resresult,appendixes},
literate        = {\$}{{\textcolor{purple3}{\$}}}{1}
                  {\{}{{\textcolor{purple3}{\{}}}{1}
                  {\}}{{\textcolor{purple3}{\}}}}{1}
                  {[}{{\textcolor{purple3}{[}}}{1}
                  {]}{{\textcolor{purple3}{]}}}{1}
                  {=}{{\textcolor{purple3}{=}}}{1}
                  {\&}{{\textcolor{purple3}{\&}}}{1}
                  {\\\\}{{\textcolor{purple3}{\textbackslash{}\textbackslash{}}}}{2}
}
\changes{v2.14.1.2}{2022/11/23}{增加示例代码换行符高亮}
\makeatletter
\lst@AddToHook{SelectCharTable}
{\ifx\lst@literate\@empty\else\expandafter\lst@Literate\lst@literate{}\relax\z@\fi}
\makeatother
\RenewDocumentCommand{\floatpagefraction}{}{.8}
\usepackage[nolinks]{qrcode}
\usepackage{fontawesome5}
\usepackage{tikz}
\changes{v3.1.1.1}{2022/12/04}{手册首页增加水印}
\usepackage[firstpageonly=true]{draftwatermark}
\DraftwatermarkOptions{angle=45,fontsize=40pt,color={gray9!25}}
\ExplSyntaxOn
\SetWatermarkText{\prg_replicate:nn{18}{\prg_replicate:nn{6}{\xduts[]{}[]~}\xduts[]{}[]\\[30pt]}}
\ExplSyntaxOff
\begin{document}
\changes{v2.18.1.1}{2022/12/01}{隐藏源码、版本和索引}
\OnlyDescription
\DocInput{\jobname.dtx}
% \IndexLayout
% \PrintChanges
% \PrintIndex
\end{document}
%</driver>
% \fi
% \GetFileInfo{\jobname.dtx}
% \title{\bfseries\xduts[]{}手册}
% \hypersetup{pdftitle=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{}、Mac\TeX{}、\MiKTeX{}，
% 支持Windows、macOS、GNU/Linux、Overleaf和TeXPage。
% \end{abstract}
% \changes{v4.4.5.4}{2023/02/11}{更新许可证版本号}
% \renewcommand{\abstractname}{免责声明}
% \begin{abstract}
% 在使用\xduts{}时，默认你同意以下内容：
% \begin{enumerate}
% \item \xduts[]{}作者不对使用\xduts{}产生的格式审查问题负责。
% \item \xduts[]{}的发布遵守\LaTeX{} Project Public License Version 1.3c或更高版本\footurl{https://www.latex-project.org/lppl.txt}。
% \item 任何个人或组织以\xduts{}为基础进行修改或扩展生成新的\LaTeX{}宏包/文档类，
% 请严格遵守\LaTeX{} Project Public License，
% 由于违犯协议而引起的任何纠纷争端均与\xduts{}作者无关。
% \end{enumerate}
% \end{abstract}
% \clearpage
% \begin{documentation}
% \changes{v2.12.1.1}{2022/07/28}{使用\clsx{l3doc}文档和实现环境}
% \section*{\contentsname\markright{\contentsname}}
% \makeatletter
% \@starttoc{toc}
% \makeatother
% \clearpage
% \changes{v4.4.5.2}{2023/02/11}{调整文档介绍顺序}
% \changes{v2.14.1.3}{2022/11/23}{修改文档措辞}
% \section{介绍}
% \xduts[]{}(Xidian University \TeX{} Suite)
% 是为了帮助西安电子科技大学本科生/研究生撰写开题报告/学位论文及其他文档
% 而编写的\LaTeXiii{}宏包和文档类套装，目前有：
% \begin{itemize}
% \item \pkgx[]{xdufont.sty}[]，中/英/数学字体配置宏包。
% \item \clsx[]{xduugtp.cls}[]，本科生毕业设计论文开题报告文档类。
% \item \clsx[]{xduugthesis.cls}[]，本科生毕业设计论文文档类。
% \item \clsx[]{xdupgthesis.cls}[]，研究生学位论文文档类。
% \end{itemize}
% 即将支持：
% \begin{itemize}
% \item \clsx[]{xdupgtp.cls}[]，研究生学位论文开题报告文档类。
% \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}。
% \changes{v6.2.7.1}{2025/04/26}{移除贡献者和致谢并修改赞助位置}
% \changes{v4.0.1.1}{2022/12/12}{增加支付宝红包二维码}
% \changes{v3.1.1.3}{2022/12/10}{二维码增加图标}
% \changes{v3.1.1.2}{2022/12/06}{增加QQ支付二维码}
% \changes{v2.16.1.2}{2022/11/27}{修正文档中图片引用间距}
% \changes{v2.15.0.1}{2022/11/26}{增加赞助二维码}
% \section{赞助}
% \xduts[]{}为公益项目，由开发者利用业余时间无偿维护。
% 若\xduts{}对您有所帮助，欢迎通过\figrefx{fig:zanzhu}中的二维码赞助支持，
% 并备注\xduts{}或其他相关字样以便于确认款项来源。
% 您的每一份支持都将直接用于模板的持续优化与问题解答，感谢助力开源项目发展！
% \ExplSyntaxOn
% \str_set_convert:Nnnn \l_xduts_email_address_str {%
% 6e6f746532383640666f786d61696c2e636f6d} { utf8/hex } { }
% \newcommand{\emailaddress}{\str_use:N \l_xduts_email_address_str}
% \ExplSyntaxOff
% \par
% 另外，如需个性化\LaTeX{}技术支持，包括但不限于\xduts{}一对一技术支持、
% Word转\LaTeX{}、论文排版优化、其他\LaTeX{}相关技术咨询等，
% 欢迎通过邮箱\texttt{\emailaddress}联系，将根据具体需求提供专业的技术支持。
% \ExplSyntaxOn
% \str_set_convert:Nnnn \l_xduts_alipay_red_packet_qr_str {%
% 68747470733A2F2F71722E616C697061792E636F6D2F31317731333035336232617236757438%
% 71386C6A323062} { utf8/hex } { }
% \newcommand{\alipayredpacketqr}{\str_use:N \l_xduts_alipay_red_packet_qr_str}
% \str_set_convert:Nnnn \l_xduts_alipay_qr_str {%
% 68747470733A2F2F71722E616C697061792E636F6D2F666B7831353935393164716575747463%
% 77626175726235} { utf8/hex } { }
% \newcommand{\alipayqr}{\str_use:N \l_xduts_alipay_qr_str}
% \str_set_convert:Nnnn \l_xduts_wxp_qr_str {%
% 7778703A2F2F6632663074504D4D506D3161616467483665396162527030446E317746337344%
% 6C6468764350382D66765346424577} { utf8/hex } { }
% \newcommand{\wxpqr}{\str_use:N \l_xduts_wxp_qr_str}
% \str_set_convert:Nnnn \l_xduts_qq_qr_str {%
% 68747470733A2F2F692E7169616E62616F2E71712E636F6D2F77616C6C65742F737172636F64%
% 652E68746D3F6D3D74656E70617926613D3126753D313138333133313434372661633D434145%
% 517438365574415159343457366E415934414549675A4755775A6D51314D6A55784E3249354E%
% 32566A4D4455794E445A684D32457A4D6A45325A6A55314E7A512533445F7878785F7369676E%
% 266E3D4361726F6C26663D77616C6C6574 } { utf8/hex } { }
% \newcommand{\qqqr}{\str_use:N \l_xduts_qq_qr_str}
% \ExplSyntaxOff
% \definecolor{alipayredpacketc}{RGB}{198,48,56}
% \definecolor{alipayc}{RGB}{22,120,255}
% \definecolor{weixinc}{RGB}{7,193,96}
% \definecolor{qqc}{RGB}{18,184,246}
% \NewDocumentCommand{\qrcodex}{mmm}{
% \begin{tikzpicture}
% \node at (0,0) {\textcolor{#3!30}{\qrcode[height=.21\textwidth]{#1}}};
% \node at (current bounding box.center) {\textcolor{#3}{\scalebox{2.1}{\faIcon{#2}}}};
% \end{tikzpicture}
% }
% \begin{figure}[htbp]
% \centering
% \mbox{}\hfill
% \subcaptionbox{扫码领红包}{\qrcodex{\alipayredpacketqr}{alipay}{alipayredpacketc}}\hfill
% \subcaptionbox{支付宝}{\qrcodex{\alipayqr}{alipay}{alipayc}}\hfill
% \subcaptionbox{微信支付}{\qrcodex{\wxpqr}{weixin}{weixinc}}\hfill
% \subcaptionbox{QQ支付}{\qrcodex{\qqqr}{qq}{qqc}}
% \hfill\mbox{}
% \caption{赞助二维码}
% \label{fig:zanzhu}
% \end{figure}
% \section{使用说明}
% \label{使用说明}
% 《一份（不太）简短的\LaTeXe{}介绍》\footctan{info/lshort/chinese/lshort-zh-cn.pdf}
% 中提及的内容本文档将不再赘述。
% 此外，在\secrefx{使用建议}中给出了部分使用建议。
% \xduts[]{}中的所有宏包和文档类仅内置了实现功能所需的宏包，
% 对于常用的宏包如\pkgx{subcaption}[]、\pkgx[]{algorithm}[]、\pkgx[]{algpseudocodex}[]、^^A
% \pkgx[]{amsmath}[]、\pkgx[]{theorem}和\pkgx{siunitx}等\textbf{均未内置}，
% 用户可以参考\secrefx{兼容性说明}视需求自行加载。
% 相应格式规范均已实现，用户仅需要撰写文章内容即可，请勿随意添加格式修改命令。
% \changes{v1.1.2.1}{2022/04/15}{增加默认值说明}
% \textbf{部分样式的默认值并不严格符合学校规范}，
% 用户可以结合学校规范并参考\secrefx{功能说明}功能说明自行修改。
% \par
% 请在最新版\LaTeX{}环境中使用最新版\xduts{}[]，
% 认真阅读相应宏包/文档类使用说明章节后即可使用\xduts{}[]。
% \changes{v6.2.7.2}{2025/04/26}{修正xdufont使用范围说明}
% \changes{v6.0.1.1}{2023/03/04}{修正文档中部分标题书签字符}
% \subsection{\textsf{xdufont}宏包}
% \pkgx[]{xdufont}宏包基于\pkgx{xeCJK}宏包和\pkgx{unicode-math}宏包，
% 在中文字体配置方面相较于\pkgx{ctex}宏包的主要优势为默认支持宋体粗体、斜体，
% 内置多种字体配置，可任意搭配中/英/数学字体，更加符合校内各种文档的撰写要求。
% \par
% \pkgx[]{xdufont}宏包可以搭配除\xduts{}所包含的其他文档类进行使用，例如：
% \begin{lstlisting}
% \documentclass{article}
% \usepackage{xdufont}
% \xdusetup{}
% \begin{document}
% 宋体\textbf{加粗}\textsl{加斜}
% \textsf{黑体}\textbf{\textsf{加粗}}\textsl{\textsf{加斜}}
% \end{document}
% \end{lstlisting}
% \par
% \secrefx{编译}介绍了如何编译，\secrefx{参数设置}介绍了如何自定义配置，具体的配置选项见\secrefx{字体选项}。
% \par
% 学会以上用法后即可使用\pkgx{xdufont}宏包。
% \subsection{\textsf{xduugtp}文档类}
% \clsx[]{xduugtp}文档类基于\clsx{ctexart}文档类，
% 提供多种字体配置，信息录入便捷。
% 请在阅读《西安电子科技大学本科毕设设计（论文）开题报告》后再使用\clsx{xduugtp}文档类。
% \par
% 使用\clsx{xduugtp}文档类的最小示例如下所示：
% \begin{lstlisting}
% \documentclass{xduugtp}
% \xdusetup{}
% \begin{document}
% \section{论文名称及项目来源}
% \section{研究目的和意义}
% \section{国内外研究现状和发展趋势}
% \section{主要研究内容、要解决的问题及本文的初步方案}
% \section{工作的主要阶段、进度和完成时间}
% \section{已进行的前期准备工作}
% \section{指导教师意见}
% \section{学院审核意见}
% \end{document}
% \end{lstlisting}
% \par
% \secrefx{编译}介绍了如何编译，
% \secrefx{参考文献引用}介绍了如何引用参考文献，
% \secrefx{参数设置}介绍了如何自定义配置。
% 其中，字体选项见\secrefx{字体选项}，
% 参考文献配置见\secrefx{参考文献配置}，
% 支持的信息录入选项见\secrefx{信息录入}。
% \par
% 学会以上用法后即可使用\clsx{xduugtp}文档类。
% \subsection{\textsf{xduugthesis}文档类}
% \clsx[]{xduugthesis}文档类基于\clsx{ctexbook}文档类，
% 提供多种字体配置，部分样式可自定义，信息录入便捷。
% \changes{v1.3.1.1}{2022/04/26}{英文本科生毕业设计规范参考说明}
% 请在阅读《本科生毕业设计（论文）工作手册》后再使用\clsx{xduugthesis}文档类。
% \par
% 使用\clsx{xduugthesis}文档类的最小示例如下所示：
% \begin{lstlisting}
% \documentclass{xduugthesis}
% \xdusetup{}
% \begin{document}
% \chapter{欢迎}
% 使用\LaTeX{}！
% \end{document}
% \end{lstlisting}
% \par
% \changes{v1.30.0.1}{2022/06/20}{移除info录入示例}
% \secrefx{编译}介绍了如何编译，
% \secrefx{参考文献引用}介绍了如何引用参考文献，
% \secrefx{参数设置}介绍了如何自定义配置。
% 其中，字体选项见\secrefx{字体选项}，
% 部分英文字体切换见\secrefx{英文字体}，
% 标题数学字体配置见\secrefx{标题数学字体配置}，
% 参考文献配置见\secrefx{参考文献配置}，
% 页面配置见\secrefx{页面配置}，
% \changes{v2.12.0.1}{2022/07/01}{本科生毕业设计增加文件配置}
% 文件配置见\secrefx{文件配置}，
% 交叉引用配置见\secrefx{交叉引用配置}，
% caption配置见\secrefx{caption配置}，
% 图表配置见\secrefx{图表配置}，
% 算法配置见\secrefx{算法配置}，
% 章节配置见\secrefx{章节配置}，
% 支持的信息录入选项见\secrefx{信息录入}。
% \par
% 学会以上用法后即可使用\clsx{xduugthesis}文档类。
% \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{\textsf{xdupgthesis}文档类}
% \clsx[]{xdupgthesis}文档类基于\clsx{ctexbook}文档类，
% 提供多种字体配置，部分样式可自定义，信息录入便捷。
% 请在阅读《西安电子科技大学研究生学位论文模板（2015年修订版）-2025.01修订》后再使用\clsx{xdupgthesis}文档类。
% 专业学位硕士请额外阅读《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板（2015年版）-2022.11修订》，
% 撰写英文学位论文请额外阅读《西安电子科技大学英文学位论文撰写相关规定》。
% \par
% 使用\clsx{xdupgthesis}文档类的最小示例如下所示：
% \begin{lstlisting}
% \documentclass{xdupgthesis}
% \xdusetup{}
% \begin{document}
% \chapter{欢迎}
% 使用\LaTeX{}！
% \end{document}
% \end{lstlisting}
% \par
% \secrefx{编译}介绍了如何编译，
% \secrefx{参考文献引用}介绍了如何引用参考文献，
% \secrefx{参数设置}介绍了如何自定义配置。
% 其中，字体选项见\secrefx{字体选项}，
% 部分英文字体切换见\secrefx{英文字体}，
% 标题数学字体配置见\secrefx{标题数学字体配置}，
% 语言配置见\secrefx{语言配置}，
% 参考文献配置见\secrefx{参考文献配置}，
% 页面配置见\secrefx{页面配置}，
% \changes{v2.12.0.1}{2022/07/01}{研究生学位论文增加文件配置}
% 文件配置见\secrefx{文件配置}，
% 交叉引用配置见\secrefx{交叉引用配置}，
% caption配置见\secrefx{caption配置}，
% 图表配置见\secrefx{图表配置}，
% 算法配置见\secrefx{算法配置}，
% 对照表配置见\secrefx{对照表配置}，
% 作者简介配置见\secrefx{作者简介配置}。
% 支持的信息录入选项见\secrefx{信息录入}。
% 页面和信息移除见\secrefx{页面和信息移除}。
% \par
% 学会以上用法后即可使用\clsx{xdupgthesis}文档类。
% 另外，在\secrefx{额外命令}和\secrefx{额外功能}中提供了部分额外命令和功能来增强排版效果。
% \changes{v1.3.0.1}{2022/04/20}{增加兼容性说明}
% \section{兼容性说明}
% \label{兼容性说明}
% \clsx[]{xduugthesis}和\clsx{xdupgthesis}文档类对部分常见宏包进行了针对性地适配，
% 需要注意的是，这些宏包仍需用户视需求自行加载。
% \subsection{算法}
% 主要适配算法内容字号和默认浮动位置。^^A
% \pkgx[]{algorithm}宏包提供了算法浮动体\envx{algorithm}环境，
% 可以搭配\pkgx{algpseudocodex}等宏包使用。^^A
% \pkgx[]{algorithm2e}宏包提供了算法环境，
% 该宏包提供的\envx{algorithm}环境实际将浮动体与算法内容合二为一。
% \subsection{图片}
% \changes{v1.13.5.1}{2022/05/08}{补充子图引用样式文档}
% 主要适配子图caption字体字号和子图引用样式，
% \changes{v1.4.1.1}{2022/04/27}{修正子图适配宏包名称}
% 包括\pkgx{subcaption}宏包和\pkgx{subfig}宏包。
% \subsection{表格}
% 主要适配表格内容字号，
% 包括所有使用\envx{table}浮动体的表格、^^A
% \pkgx[]{tabularray}宏包提供的\envx{tblr}[]、\envx[]{longtblr}环境
% 和\pkgx{longtable}宏包提供的\envx{longtable}环境。
% \changes{v4.1.1.0}{2023/01/16}{适配子表样式}
% 以及适配子表caption字体字号和子表引用样式，
% 包括\pkgx{subcaption}宏包和\pkgx{subfig}宏包。
% \changes{v4.4.5.5}{2023/02/15}{增加定理环境自定义建议}
% \changes{v4.0.0.1}{2022/12/11}{增加使用建议}
% \section{使用建议}
% \label{使用建议}
% 本节主要针对\clsx{xduugthesis}和\clsx{xdupgthesis}文档类提出使用建议，
% 用户仍可不遵守本节的建议并根据自己的偏好进行使用。
% \par
% 宏包方面，在\secrefx{兼容性说明}中提到已适配多种宏包。
% 但是，由于各种原因，部分宏包已不建议使用。
% 推荐使用\pkgx{algorithm}和\pkgx{algpseudocodex}宏包排版算法；
% 推荐使用\pkgx{subcaption}宏包排版子图和子表；
% 推荐使用\pkgx{tabularray}宏包排版\textbf{所有的表格}；
% 推荐使用\pkgx{enumitem}宏包修改列表环境样式；
% 推荐使用\pkgx{theorem}宏包修改定理环境样式；
% 推荐使用\pkgx{siunitx}宏包排版单位。
% 另外，不要加载任何与参考文献和中英文字体相关的宏包。
% 使用宏包提供的功能时，\textbf{请阅读相应的宏包文档}。
% \par
% 字体方面，中文、英文和数学字体均提供了多种配置。
% 对于中英文字体，用户可以根据自己的喜好选择合适的配置，
% 部分配置对应的字体可能需要自行购买并安装。
% 对于数学字体，建议用户选择一个与英文字体搭配的数学字体。
% 注意，当使用非Computer Modern字体时，
% 部分命令（例如，加粗等）可能与传统方式不同，
% 请阅读\pkgx{unicode-math}宏包文档。
% \section{功能说明}
% \label{功能说明}
% 请根据\secrefx{使用说明}中相应宏包/文档类的说明来选择性地阅读本节内容。
% \subsection{编译}
% \label{编译}
% \changes{v0.5.1.2}{2022/04/07}{增加编译说明}
% \xduts[]{}仅支持\XeLaTeX{}，
% 参考文献后端程序默认为\cmdx{biber}[]，也可以参考\secrefx{参考文献配置}切换为\cmdx{bibtex}[]。
% \subsection{参考文献引用}
% \label{参考文献引用}
% \changes{v4.3.0.1}{2023/01/30}{修改文档中关于参考文献的描述}
% \xduts[]{}提供了两种参考文献处理方式，
% 一种是\pkgx{natbib}宏包搭配\pkgx{gbt7714}宏包，后端程序为\cmdx{bibtex}[]；
% 另一种是\pkgx{biblatex}宏包，后端程序为\cmdx{biber}[]。
% 引用参考文献时，\tnx[]{cite}为上标样式，\tnx[]{parencite}为非上标样式。
% \subsection{参数设置}
% \label{参数设置}
% \changes{v6.2.6.2}{2025/03/18}{修改字体设置示例代码}
% \changes{v4.4.2.1}{2023/02/08}{修正接口文档说明样式}
% \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}
%     \tn{xdusetup}\marg{键值列表}
%   \end{syntax}
% \xduts[]{}提供了一系列选项，可自行配置。
% 载入宏包/文档类之后，以下所有选项均可通过统一的命令\tnx{xdusetup}来设置。^^A
% \tnx[]{xdusetup}的参数是一组由（英文）逗号隔开的选项列表，
% 下文中尖括号内列出了若干个允许的选项，其中加粗的为默认选项。
% 列表中的选项通常是\kvoptx{\metax[]{key}[]}{\metax[]{value}[]}的形式。^^A
% \tnx[]{xdusetup}采用\LaTeXiii{}风格的键值设置，
% 支持不同类型以及多种层次的选项设定。
% 键值列表中，“|=|”左右的空格不影响设置；
% 但需注意，参数列表中不可以出现空行。
% 一些选项包含子选项，如\optx{style}和\optx{info}等，
% 它们可以按如下两种等价方式来设定：
% \end{function}
% \begin{lstlisting}
% \xdusetup{
%   style = { cjk-font = win, latin-font = tac },
%   info  = {
%     title      = {论如何让用户\\认真阅读文档},
%     author     = {张三},
%     department = {排版学院},
%     abstract   = {chapters/abstract-zh.tex},
%     keywords*  = {Dummy,Keywords,Here,it is}
%   }
% }
% \end{lstlisting}
% 或者
% \begin{lstlisting}
% \xdusetup{
%   style / cjk-font   = win,
%   style / latin-font = tac,
%   info  / title      = {论如何让用户\\认真阅读文档},
%   info  / author     = {张三},
%   info  / department = {排版学院},
%   info  / abstract   = {chapters/abstract-zh.tex},
%   info  / keywords*  = {Dummy,Keywords,Here,it is}
% }
% \end{lstlisting}
% \subsection{字体选项}
% \label{字体选项}
% \begin{function}[added=2022-03-06,updated=2023-02-20]{style/cjk-font}
%   \begin{syntax}
%     \opt{style/cjk-font} = adobe|(fandol)|founder|hanyi|sinotype|win|none
%   \end{syntax}
% 设置中文字体，具体配置见\tabrefx{tab:cjk-font}[]。
% \end{function}
% \begin{optdesc}
%   \item[adobe] \filex[]{adobesongstd-light.otf}[]、\filex[]{adobekaitistd-regular.otf}[]、\filex[]{adobeheitistd-regular.otf}和\filex{Adobe-Fangsong-Std-R-Font.otf}[]。
%   \item[fandol] \filex[]{FandolSong-Regular.otf}[]、\filex[]{FandolSong-Bold.otf}[]、\filex[]{FandolKai-Regular.otf}[]、\filex[]{FandolHei-Regular.otf}[]、\filex[]{FandolHei-Bold.otf}和\filex{FandolFang-Regular.otf}[]。
%   \item[founder] \filex[]{FZShuSong-Z01.ttf}[]、\filex[]{FZKai-Z03.ttf}[]、\filex[]{FZHei-B01.ttf}和\filex{FZFSK.TTF}[]。
%   \item[hanyi] \filex[]{HYShuSongErS.ttf}[]、\filex[]{HYKaiTiS.ttf}[]、\filex[]{HYZhongHeiTiS.ttf}和\filex{HYFangSongS.ttf}[]。
%   \item[sinotype] \filex[]{STSONG.TTF}[]、\filex[]{STKAITI.TTF}[]、\filex[]{STXIHEI.TTF}[]、\filex[]{STHeiti.ttf}和\filex{STFANGSO.TTF}[]。
%   \item[win] \filex[]{simsun.ttc}[]、\filex[]{simkai.ttf}[]、\filex[]{simhei.ttf}和\filex{simfang.ttf}[]。
%   \item[none] 关闭内置中文字体配置，需自行配置中文字体。
% \end{optdesc}
% \changes{v6.2.6.1}{2025/03/18}{适配tabularray选择器语法}
% \changes{v2.16.1.1}{2022/11/27}{修改中文字体配置表文档样式}
% \begin{table}
% \caption{中文字体配置}
% \label{tab:cjk-font}
% \begin{tblr}
% {
% width          = \linewidth,
% colspec        = {Q[c,m]*{4}{X[c,m]}},
% hline{1,3,Z}   = {wd=.08em},
% hline{2}       = {2-3}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% row{odd[3]}    = {bg=gray9!40},
% cell{1}{2}     = {c=2}{},
% cell{1}{1,4,5} = {r=2}{},
% cell{3-Z}{1}   = {font=\ttfamily},
% row{1-2}       = {font=\bfseries}
% }
% 选项名称 & 罗马族         &                & 无衬线族       & 打字机族       \\
%          & 直立/倾斜形状  & 意大利形状     &                &                \\
% adobe    & Adobe 宋体 Std & Adobe 楷体 Std & Adobe 黑体 Std & Adobe 仿宋 Std \\
% fandol   & FandolSong     & FandolKai      & FandolHei      & FandolFang     \\
% founder  & 方正书宋\_GBK  & 方正楷体\_GBK  & 方正黑体\_GBK  & 方正仿宋\_GBK  \\
% hanyi    & 汉仪书宋二S    & 汉仪楷体S      & 汉仪中黑S      & 汉仪仿宋S      \\
% sinotype & 华文宋体       & 华文楷体       & 华文细黑/黑体  & 华文仿宋       \\
% win      & 中易宋体       & 中易楷体       & 中易黑体       & 中易仿宋       \\
% \end{tblr}
% \end{table}
% \begin{function}[added=2022-04-01]{style/cjk-fake-bold}
%   \begin{syntax}
%     \opt{style/cjk-fake-bold} = \meta{伪粗体粗细程度}
%   \end{syntax}
% 设置中文字体伪粗体粗细程度。默认为\valuex{3}[]，对于部分存在对应粗体字体的中文字体，如FandolSong和FandolHei等，该选项不生效。
% \end{function}
% \begin{function}[added=2022-04-01]{style/cjk-fake-slant}
%   \begin{syntax}
%     \opt{style/cjk-fake-slant} = \meta{伪斜体倾斜程度}
%   \end{syntax}
% 设置中文字体伪斜体倾斜程度。默认为\valuex{0.2}[]。
% \end{function}
% \changes{v6.1.4.2}{2023/03/23}{补充TeX Live内置字体文件名}
% \changes{v5.4.0.1}{2023/02/23}{修正文档内英文字体配置表格错误}
% \begin{function}[added=2022-03-06,updated=2023-02-23]{style/latin-font}
%   \begin{syntax}
%     \opt{style/latin-font} = (gyre)|tac|tacn|tcc|thcs|tll|none
%   \end{syntax}
% 设置英文字体，具体配置见\tabrefx{tab:latin-font}[]。
% \end{function}
% \begin{optdesc}
%   \item[gyre] \filex[]{texgyretermes-regular.otf}[]、\filex[]{texgyretermes-bold.otf}[]、\filex[]{texgyretermes-italic.otf}[]、\filex[]{texgyretermes-bolditalic.otf}[]、\filex[]{texgyreheros-regular.otf}[]、\filex[]{texgyreheros-bold.otf}[]、\filex[]{texgyreheros-italic.otf}[]、\filex[]{texgyreheros-bolditalic.otf}[]、\filex[]{texgyrecursor-regular.otf}[]、\filex[]{texgyrecursor-bold.otf}[]、\filex[]{texgyrecursor-italic.otf}和\filex{texgyrecursor-bolditalic.otf}[]。
%   \item[tac] \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[tacn] \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[tcc] \filex[]{times.ttf}[]、\filex[]{timesbd.ttf}[]、\filex[]{timesi.ttf}[]、\filex[]{timesbi.ttf}[]、\filex[]{cmunss.otf}[]、\filex[]{cmunsx.otf}[]、\filex[]{cmunsi.otf}[]、\filex[]{cmunso.otf}[]、\filex[]{cmuntt.otf}[]、\filex[]{cmuntb.otf}[]、\filex[]{cmunit.otf}和\filex{cmuntx.otf}。
%   \item[thcs] \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}[]。
%   \item[tll] \filex[]{times.ttf}[]、\filex[]{timesbd.ttf}[]、\filex[]{timesi.ttf}[]、\filex[]{timesbi.ttf}[]、\filex[]{LinBiolinum_R.otf}[]、\filex[]{LinBiolinum_RB.otf}[]、\filex[]{LinBiolinum_RI.otf}[]、\filex[]{LinBiolinum_RBO.otf}[]、\filex[]{LinLibertine_M.otf}[]、\filex[]{LinLibertine_MB.otf}[]、\filex[]{LinLibertine_MO.otf}和\filex{LinLibertine_MBO.otf}。
%   \item[none] 关闭内置英文字体配置，需自行配置英文字体。
% \end{optdesc}
% \changes{v2.16.1.1}{2022/11/27}{修改英文字体配置表文档样式}
% \begin{table}
% \caption{英文字体配置}
% \label{tab:latin-font}
% \begin{tblr}
% {
% width        = \linewidth,
% colspec      = {Q[c,m]*{3}{X[-1,c,m]}},
% hline{1,2,Z} = {wd=.08em},
% row{even[2]} = {bg=gray9!40},
% cell{2-Z}{1} = {font=\ttfamily},
% row{1}       = {font=\bfseries}
% }
% 选项名称 & 罗马族          & 无衬线族         & 打字机族               \\
% gyre     & TeX Gyre Termes & TeX Gyre Heros   & TeX Gyre Cursor        \\
% tac      & Times New Roman & Arial            & Consolas               \\
% tacn     & Times New Roman & Arial            & Courier New            \\
% tcc      & Times New Roman & CMU Sans Serif   & CMU Typewriter Text    \\
% thcs     & Times New Roman & Helvetica        & Courier Std            \\
% tll      & Times New Roman & Linux Biolinum O & Linux Libertine Mono O \\
% \end{tblr}
% \end{table}
% \begin{function}[added=2023-01-28]{style/latin-sans-scale,style/latin-mono-scale}
%   \begin{syntax}
%     \opt{style/latin-sans-scale} = upper|lower|(off)
%     \opt{style/latin-mono-scale} = upper|lower|(off)
%   \end{syntax}
% 匹配无衬线族和打字机族字符高度。
% \end{function}
% \begin{optdesc}
%   \item[upper] 按大写字母的高度缩放以匹配罗马族字体。
%   \item[lower] 按小写字母的高度缩放以匹配罗马族字体。
%   \item[off] 不缩放。
% \end{optdesc}
% \begin{function}[added=2022-03-06,updated=2022-11-27]{style/math-font}
%   \begin{syntax}
%     \opt{style/math-font} = asana|cambria|(cm)|fira|garamond|lm|...|termes|xits|none
%   \end{syntax}
% 设置数学字体，具体配置见\tabrefx{tab:math-font}[]。除Computer Modern字体外，均使用\pkgx{unicode-math}宏包调用字体。
% \end{function}
% \changes{v2.16.1.1}{2022/11/27}{修改数学字体配置表文档样式}
% \changes{v0.1.4.1}{2022/04/04}{数学字体风格介绍}
% \begin{optdesc}
%   \item[cambria] \filex[]{cambria.ttc}[]。
%   \item[none] 关闭内置数学字体配置，需自行配置数学字体。
% \end{optdesc}
% \begin{tblr}
% [
% long,
% caption = {数学字体配置},
% label   = {tab:math-font}
% ]
% {
% width        = \linewidth,
% colspec      = {X[2,c,m]X[3,c,m]},
% hline{1,2,Z} = {wd=.08em},
% row{even[2]} = {bg=gray9!40},
% cell{2-Z}{1} = {font=\ttfamily},
% row{1}       = {font=\bfseries},
% rowhead      = 1
% }
% 选项名称       & 字体名称                 \\
% asana          & Asana Math               \\
% cambria        & Cambria Math             \\
% cm             & Computer Modern          \\
% concrete       & Concrete Math            \\
% erewhon        & Erewhon Math             \\
% euler          & Euler Math               \\
% fira           & Fira Math                \\
% garamond       & Garamond Math            \\
% gfsneohellenic & GFS Neohellenic Math     \\
% kp             & KpMath                   \\
% libertinus     & Libertinus Math          \\
% lm             & Latin Modern Math        \\
% newcm          & New Computer Modern Math \\
% stix2          & STIX Two Math            \\
% stix           & STIX Math                \\
% xcharter       & XCharter Math            \\
% xits           & XITS 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     \\
% \end{tblr}
% \begin{function}[added=2022-03-14]{style/unicode-math}
%   \begin{syntax}
%     \opt{style/unicode-math} = \marg{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}
%     \opt{style/font-type} = (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}
%     \opt{style/font-path} = \marg{路径}
%   \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}
%     \opt{style/en-cjk-font} = true|(false)
%   \end{syntax}
% 切换字体族时，英文是否使用中文字体。主要作用于封面、章节标题、caption、页眉页脚、参考文献列表等。
% \end{function}
% \begin{optdesc}
%   \item[true] 英文使用相对应字体族的中文字体。
%   \item[false] 英文使用相对应字体族的英文字体。
% \end{optdesc}
% \subsection{标题数学字体配置}
% \label{标题数学字体配置}
% \begin{function}[added=2023-02-03]{style/title-bold-math}
%   \begin{syntax}
%     \opt{style/title-bold-math} = true|(false)
%   \end{syntax}
% 是否自动加粗如下位置中的数学字体：
% 中文研究生学位论文中，封面和题名页中英文标题，正文所有级别标题和目录一级标题；
% 英文研究生学位论文中，封面和题名页中英文标题，正文二三四五六级标题和中文目录一级标题；
% 本科生毕业设计论文中，封面标题，中英文关键词，目录一级标题和正文一级标题。
% 目前仅支持Computer Modern数学字体。
% \end{function}
% \begin{optdesc}
%   \item[true] 加粗。
%   \item[false] 不加粗。
% \end{optdesc}
% \subsection{语言配置}
% \label{语言配置}
% \begin{function}[added=2022-03-29]{style/language}
%   \begin{syntax}
%     \opt{style/language} = (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}
%     \opt{style/bib-backend} = bibtex|(biblatex)
%   \end{syntax}
% 设置参考文献支持方式。
% \end{function}
% \begin{optdesc}
%   \item[bibtex] 使用\bibtex{}处理参考文献，后端程序为\cmdx{bibtex}[]。
%   \item[biblatex] 使用\biblatex{}处理参考文献，后端程序为\cmdx{biber}[]。
% \end{optdesc}
% \changes{v1.31.0.0}{2022/06/21}{修改\pkgx{biblatex}默认选项}
% \begin{function}[added=2022-06-21]{style/biblatex-option}
%   \begin{syntax}
%     \opt{style/biblatex-option} = \marg{biblatex宏包选项}
%   \end{syntax}
% 修改\pkgx{biblatex}默认选项，具体配置参考\pkgx{biblatex-gb7714-2015}宏包文档，
% 仅在\optx{style/bib-backend}等于|biblatex|时有效。例如：
% \begin{lstlisting}
% \xdusetup{ style / biblatex-option = { gbnamefmt = quanpin } }
% \end{lstlisting}
% \end{function}
% \subsection{页面配置}
% \label{页面配置}
% \begin{function}[added=2022-04-12]{style/symmetric-margin}
%   \begin{syntax}
%     \opt{style/symmetric-margin} = 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}
%     \opt{style/page-vertical-align} = 分散对齐|(顶部对齐)
%   \end{syntax}
% 设置页面垂直方向的对齐方式。
% \end{function}
% \begin{optdesc}
%   \item[分散对齐] 页面高度均匀地填满，使每一页的底部直接对齐。
%   \item[顶部对齐] 页面中的内容保持它的自然高度，每一页的页面底部用空白填满。
% \end{optdesc}
% \subsection{文件配置}
% \label{文件配置}
% \begin{function}[added=2022-07-01]{style/file-search-path}
%   \begin{syntax}
%     \opt{style/file-search-path} = \marg{路径}
%   \end{syntax}
% 设置文件搜索路径，可用于\tnx{input}[]、\tnx[]{include}和\tnx{includegraphics}[]，
% 多个路径之间需要使用英文半角逗号隔开。
% 设置后\tnx{input}[]、\tnx[]{include}和\tnx{includegraphics}仅需填写文件名。
% \end{function}
% \begin{function}[added=2022-07-01]{style/fix-input,style/fix-include,style/fix-includegraphics}
%   \begin{syntax}
%     \opt{style/fix-input} = true|(false)
%     \opt{style/fix-include} = true|(false)
%     \opt{style/fix-includegraphics} = true|(false)
%   \end{syntax}
% TEXMF树搜索优先级高于用户自定义的文件搜索路径，
% 如果在TEXMF树内存在同名文件，则会导致错误的文件被加载。
% 通过为\tnx{input}[]、\tnx[]{include}和\tnx{includegraphics}命令打补丁可以避免该问题。
% 如果用户的\TeX{}或图片等文件不与TEXMF树内文件同名，或与\TeX{}主文件在同一目录，则无需打补丁。
% \end{function}
% \subsection{交叉引用配置}
% \label{交叉引用配置}
% \begin{function}[added=2022-04-16,updated=2022-05-08]{style/ref-add-space}
%   \begin{syntax}
%     \opt{style/ref-add-space} = 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}
%     \opt{style/caption-label-sep} = \meta{间距}
%   \end{syntax}
% 设置图、表、算法标签与后面标题之间的间距，默认值为\valuex{0.75em}[]。
% \end{function}
% \subsection{图表配置}
% \label{图表配置}
% \changes{v3.0.0.0}{2022/12/03}{设置图表caption格式}
% \begin{function}[added=2022-12-03]{style/ft-caption-format}
%   \begin{syntax}
%     \opt{style/ft-caption-format} = plain|(hang)
%   \end{syntax}
% 设置图表caption格式。
% \begin{optdesc}
%   \item[plain] 无缩进，即自然段落。
%   \item[hang] 悬挂缩进。
% \end{optdesc}
% \end{function}
% \changes{v3.0.0.0}{2022/12/03}{设置图表caption对齐方式}
% \begin{function}[added=2022-12-03]{style/ft-caption-align}
%   \begin{syntax}
%     \opt{style/ft-caption-align} = left|centering|(centering-left)
%   \end{syntax}
% 设置图表caption对齐方式。
% \begin{optdesc}
%   \item[left] 左对齐。
%   \item[centering] 居中。
%   \item[centering-left] 只有一行时居中，多行时左对齐。
% \end{optdesc}
% \end{function}
% \changes{v6.1.0.0}{2023/03/04}{增加图表对齐接口}
% \begin{function}[added=2023-03-04]{style/figure-align,style/table-align}
%   \begin{syntax}
%     \opt{style/figure-align} = left|(centering)|right
%     \opt{style/table-align} = left|(centering)|right
%   \end{syntax}
% 设置\envx{figure}和\envx{table}环境中内容对齐方式。
% \end{function}
% \begin{optdesc}
%   \item[left] 左对齐。
%   \item[centering] 居中。
%   \item[right] 右对齐。
% \end{optdesc}
% \changes{v0.10.0.1}{2022/04/13}{补充表格内容字号文档说明}
% \begin{function}[added=2022-04-13,updated=2022-04-15]{style/table-small-font}
%   \begin{syntax}
%     \opt{style/table-small-font} = (true)|false
%   \end{syntax}
% 设置表格内容字号是否为五号。
% \end{function}
% \begin{optdesc}
%   \item[true] 五号。
%   \item[false] 小四号。
% \end{optdesc}
% \subsection{算法配置}
% \label{算法配置}
% \changes{v5.0.0.0}{2023/02/17}{精简算法接口名称}
% \begin{function}[added=2022-06-25,updated=2023-02-17]{style/alg-small-caption}
%   \begin{syntax}
%     \opt{style/alg-small-caption} = (true)|false
%   \end{syntax}
% 设置算法caption字号是否为五号。
% \end{function}
% \begin{optdesc}
%   \item[true] 五号。
%   \item[false] 小四号。
% \end{optdesc}
% \begin{function}[added=2022-04-15,updated=2023-02-17]{style/alg-small-font}
%   \begin{syntax}
%     \opt{style/alg-small-font} = (true)|false
%   \end{syntax}
% 设置算法内容字号是否为五号。
% \end{function}
% \begin{optdesc}
%   \item[true] 五号。
%   \item[false] 小四号。
% \end{optdesc}
% \changes{v3.0.0.0}{2022/12/03}{设置算法caption格式}
% \begin{function}[added=2022-12-03]{style/alg-caption-format}
%   \begin{syntax}
%     \opt{style/alg-caption-format} = plain|(hang)
%   \end{syntax}
% 设置算法caption格式。
% \begin{optdesc}
%   \item[plain] 无缩进，即自然段落。
%   \item[hang] 悬挂缩进。
% \end{optdesc}
% \end{function}
% \changes{v3.0.0.0}{2022/12/03}{设置算法caption对齐方式}
% \begin{function}[added=2022-12-03]{style/alg-caption-align}
%   \begin{syntax}
%     \opt{style/alg-caption-align} = (left)|centering|centering-left
%   \end{syntax}
% 设置算法caption对齐方式。
% \begin{optdesc}
%   \item[left] 左对齐。
%   \item[centering] 居中。
%   \item[centering-left] 只有一行时居中，多行时左对齐。
% \end{optdesc}
% \end{function}
% \changes{v3.1.0.0}{2022/12/03}{设置算法三线间距}
% \begin{function}[added=2022-12-03]{style/add-alg-rule-vspace}
%   \begin{syntax}
%     \opt{style/add-alg-rule-vspace} = true|(false)
%   \end{syntax}
% 设置是否为ruled样式的算法环境的三条横线增加纵向间距。
% \begin{optdesc}
%   \item[true] 增加。
%   \item[false] 不增加。
% \end{optdesc}
% \end{function}
% \subsection{章节配置}
% \label{章节配置}
% \begin{function}[added=2022-04-05]{style/before-skip}
%   \begin{syntax}
%     \opt{style/before-skip} = \marg{间距列表}
%   \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}
%     \opt{style/after-skip} = \marg{间距列表}
%   \end{syntax}
% 设置章节标题后的垂直间距，默认值为\valuex{\{18pt, 12pt, 6pt, 6pt, 6pt, 6pt\}}[]，分别对应\tnx{chapter}[]、\tnx[]{section}[]、\tnx[]{subsection}[]、\tnx[]{subsubsection}[]、\tnx[]{paragraph}和\tnx{subparagraph}。
% \end{function}
% \changes{v6.2.3.0}{2025/01/12}{修复本科生毕业设计三四五六级标题字号默认值}
% \begin{function}[added=2022-04-11,updated=2025-01-12]
%   {
%     style/chap-zihao,
%     style/sec-zihao,
%     style/subsec-zihao,
%     style/subsubsec-zihao,
%     style/para-zihao,
%     style/subpara-zihao
%   }
%   \begin{syntax}
%     \opt{style/chap-zihao} = 0|-0|1|-1|2|-2|(3)|-3|4|-4|5|-5|6|-6|7|8
%     \opt{style/sec-zihao} = 0|-0|1|-1|2|-2|3|-3|(4)|-4|5|-5|6|-6|7|8
%     \opt{style/subsec-zihao} = 0|-0|1|-1|2|-2|3|-3|4|(-4)|5|-5|6|-6|7|8
%     \opt{style/subsubsec-zihao} = 0|-0|1|-1|2|-2|3|-3|4|(-4)|5|-5|6|-6|7|8
%     \opt{style/para-zihao} = 0|-0|1|-1|2|-2|3|-3|4|(-4)|5|-5|6|-6|7|8
%     \opt{style/subpara-zihao} = 0|-0|1|-1|2|-2|3|-3|4|(-4)|5|-5|6|-6|7|8
%   \end{syntax}
% 设置章节标题字号。
% \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}
%     \opt{style/customize-los} = (true)|false
%     \opt{style/customize-loa} = (true)|false
%   \end{syntax}
% 是否完全自定义符号对照表和缩略语对照表。
% \end{function}
% \begin{optdesc}
%   \item[true] 完全自定义符号对照表和缩略语对照表，对照表由用户自行排版。
% 在\secrefx{信息录入}中提及的\optx{info/los}和\optx{info/loa}中对应的文件中可以通过表格或列表等方式实现对照表，例如：
% \begin{lstlisting}
% \begin{tabular}{ll}
% 符号         & 符号名称 \\
% $\pi$        & 圆周率   \\
% $\mathbb{R}$ & 实数     \\
% \end{tabular}
% \end{lstlisting}
%   \item[false] 使用内置的基于\envx{longtblr}环境（\pkgx{tabularray}宏包）实现的
% 符号对照表和缩略语对照表样式。
% 在\secrefx{信息录入}中提及的\optx{info/los}和\optx{info/loa}中对应的文件仅需填写相应列数的内容即可，例如：
% \begin{lstlisting}
% $\pi$        & 圆周率 \\
% $\mathbb{R}$ & 实数   \\
% \end{lstlisting}
% \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}
%     \opt{style/colspec-los} = \marg{符号对照表列格式}
%     \opt{style/colspec-loa} = \marg{缩略语对照表列格式}
%   \end{syntax}
% 设置符号对照表和缩略语对照表列格式，
% 符号对照表列格式默认值为\valuex{Q[l,h]X[l,h]}[]。
% 缩略语对照表列格式默认值为\valuex{Q[l,h]X[l,h]X[l,h]}[]。
% 语法参考\pkgx{tabularray}宏包\valuex{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}
%     \opt{style/title-row-los} = true|(false)
%     \opt{style/title-row-loa} = 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}
%     \opt{style/customize-edubg} = (true)|false
%     \opt{style/customize-resresult} = (true)|false
%   \end{syntax}
% 是否完全自定义作者简介中教育背景和攻读硕士学位期间的研究成果。
% \end{function}
% \begin{optdesc}
%   \item[true] 完全自定义作者简介中教育背景和攻读硕士学位期间的研究成果，由用户自行排版。
% 在\secrefx{信息录入}中提及的\optx{info/bio}中对应的文件中
% 可以通过段落、表格或列表等方式排版教育背景和攻读硕士学位期间的研究成果，例如：
% \begin{lstlisting}
% \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{lstlisting}
%   \item[false] 使用内置的基于\envx{tblr}环境（\pkgx[]{tabularray}宏包）实现的
% 教育背景表格环境\envx{edubg}和基于\envx{enumerate}环境（\pkgx[]{enumitem}宏包）实现的
% 攻读硕士学位期间的研究成果列表环境\envx{resresult}。
% 在\secrefx{信息录入}中提及的\optx{info/bio}中对应的文件中使用\envx{edubg}和\envx{resresult}环境即可，例如：
% \begin{lstlisting}
% \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{lstlisting}
% \end{optdesc}
% \subsection{信息录入}
% \label{信息录入}
% \changes{v2.18.1.0}{2022/12/01}{增加专业博士校外导师和英文学位类别信息录入}
% \changes{v2.16.1.1}{2022/11/27}{修改信息录入选项分类表文档样式}
% \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        = {Q[l,m]*{7}{X[c,m]}},
% cell{1}{3}     = {c=2}{},
% cell{1}{5}     = {c=4}{},
% cell{2}{2}     = {r=2}{},
% cell{2}{3,5,7} = {c=2}{},
% hline{1,4,Z}   = {wd=.08em},
% hline{2}       = {2-2}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% hline{2}       = {3-4}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% hline{2}       = {5-8}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% hline{3}       = {3-4}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% hline{3}       = {5-6}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% hline{3}       = {7-8}{wd=.08em,leftpos=-1,rightpos=-1,endpos=true},
% row{odd[4]}    = {bg=gray9!40},
% cell{4-Z}{1}   = {font=\ttfamily},
% row{1-3}       = {font=\bfseries},
% rowhead        = 3
% }
%                  & 开题   & 毕业设计 &        & 学位论文 &        &        &        \\
%                  & 本科   & 本科     &        & 硕士     &        & 博士   &        \\
%                  &        & 校内     & 校外   & 学术     & 专业   & 学术   & 专业   \\
% graduate-type    &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% degree-type      &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% degree           &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% degree*          &        &          &        &          & \cmark &        & \cmark \\
% title            &        & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
% title*           &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% department       & \cmark & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
% major            & \cmark & \cmark   & \cmark & \cmark   &        & \cmark &        \\
% major*           &        &          &        & \cmark   &        & \cmark &        \\
% sub-major        &        &          &        & \cmark   &        & \cmark &        \\
% domain           &        &          &        &          & \cmark &        & \cmark \\
% author           & \cmark & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
% author*          &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% supervisor       & \cmark & \cmark   &        & \cmark   & \cmark & \cmark & \cmark \\
% supervisor*      &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% supv-dept        &        & \cmark   &        &          &        &        &        \\
% supv-ent         &        &          & \cmark &          & \cmark &        & \cmark \\
% supv-ent*        &        &          &        &          & \cmark &        & \cmark \\
% supv-school      &        &          & \cmark &          &        &        &        \\
% supv-title       &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% supv-title*      &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% supv-ent-title   &        &          &        &          & \cmark &        & \cmark \\
% supv-ent-title*  &        &          &        &          & \cmark &        & \cmark \\
% class            & \cmark &          &        &          &        &        &        \\
% class-id         &        & \cmark   & \cmark &          &        &        &        \\
% student-id       & \cmark & \cmark   & \cmark & \cmark   & \cmark & \cmark & \cmark \\
% clc              &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% secret-level     &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% submit-date      & \cmark &          &        & \cmark   & \cmark & \cmark & \cmark \\
% statement-scan   &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% statement-sign   &        &          &        & \cmark   & \cmark & \cmark & \cmark \\
% sign             & \cmark &          &        &          &        &        &        \\
% date             & \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 & \cmark \\
% appendix         &        & \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}
%     \opt{info/graduate-type} = (硕士)|博士
%   \end{syntax}
% 设置研究生类型。
% \end{function}
% \begin{optdesc}
%   \item[硕士] 硕士研究生。
%   \item[博士] 博士研究生。
% \end{optdesc}
% \begin{function}[added=2022-05-03]{info/degree-type}
%   \begin{syntax}
%     \opt{info/degree-type} = (学术)|专业
%   \end{syntax}
% 设置研究生学位类型。
% \end{function}
% \begin{optdesc}
%   \item[学术] 学术学位。
%   \item[专业] 专业学位。
% \end{optdesc}
% \begin{function}[added=2022-05-03]{info/degree,info/degree*}
%   \begin{syntax}
%     \opt{info/degree} = \meta{研究生学位类别中文名称}
%     \opt{info/degree*} = \meta{研究生学位类别英文名称}
%   \end{syntax}
% 设置研究生学位类别。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-30]{info/title,info/title*}
%   \begin{syntax}
%     \opt{info/title} = \meta{论文中文标题}
%     \opt{info/title*} = \meta{论文英文标题}
%   \end{syntax}
% 设置论文标题。建议使用换行控制符（|\\|）手动制定换行位点，
% 本科毕业设计论文最多两行，研究生学位论文无限制。
% \end{function}
% \begin{function}[added=2022-04-01]{info/department}
%   \begin{syntax}
%     \opt{info/department} = \meta{院系名称}
%   \end{syntax}
% 设置院系名称。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/major,info/major*}
%   \begin{syntax}
%     \opt{info/major} = \meta{专业名称/一级学科名称}
%     \opt{info/major*} = \meta{一级学科英文名称}
%   \end{syntax}
% 设置专业名称/一级学科名称。
% \end{function}
% \begin{function}[added=2022-05-03]{info/sub-major}
%   \begin{syntax}
%     \opt{info/sub-major} = \meta{二级学科名称}
%   \end{syntax}
% 设置二级学科名称。
% \end{function}
% \begin{function}[added=2022-05-03]{info/domain}
%   \begin{syntax}
%     \opt{info/domain} = \meta{领域}
%   \end{syntax}
% 设置领域名称。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/author,info/author*}
%   \begin{syntax}
%     \opt{info/author} = \meta{作者姓名}
%     \opt{info/author*} = \meta{作者姓名拼音}
%   \end{syntax}
% 设置作者姓名。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2022-05-03]{info/supervisor,info/supervisor*}
%   \begin{syntax}
%     \opt{info/supervisor} = \meta{导师姓名}
%     \opt{info/supervisor*} = \meta{导师姓名拼音}
%   \end{syntax}
% 设置导师姓名。
% \end{function}
% \changes{v5.0.0.0}{2023/02/17}{精简部分信息录入接口名称}
% \begin{function}[added=2022-04-01,updated=2023-02-17]{info/supv-dept}
%   \begin{syntax}
%     \opt{info/supv-dept} = \meta{院内导师姓名}
%   \end{syntax}
% 设置院内导师姓名。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2023-02-17]{info/supv-ent,info/supv-ent*}
%   \begin{syntax}
%     \opt{info/supv-ent} = \meta{校外导师姓名}
%     \opt{info/supv-ent*} = \meta{校外导师姓名拼音}
%   \end{syntax}
% 设置校外导师姓名。
% \end{function}
% \begin{function}[added=2022-04-01,updated=2023-02-17]{info/supv-school}
%   \begin{syntax}
%     \opt{info/supv-school} = \meta{校内导师姓名}
%   \end{syntax}
% 设置校内导师姓名。
% \end{function}
% \begin{function}[added=2022-05-03,updated=2023-02-17]{info/supv-title,info/supv-title*}
%   \begin{syntax}
%     \opt{info/supv-title} = \meta{导师职称}
%     \opt{info/supv-title*} = \meta{导师职称英文名称}
%   \end{syntax}
% 设置导师职称。
% \end{function}
% \begin{function}[added=2022-05-03,updated=2023-02-17]{info/supv-ent-title,info/supv-ent-title*}
%   \begin{syntax}
%     \opt{info/supv-ent-title} = \meta{校外导师职称}
%     \opt{info/supv-ent-title*} = \meta{校外导师职称英文名称}
%   \end{syntax}
% 设置校外导师职称。
% \end{function}
% \begin{function}[added=2022-12-31]{info/class}
%   \begin{syntax}
%     \opt{info/class} = \meta{界}
%   \end{syntax}
% 设置界，即毕业年份。
% \end{function}
% \begin{function}[added=2022-04-01]{info/class-id}
%   \begin{syntax}
%     \opt{info/class-id} = \meta{作者班级号}
%   \end{syntax}
% 设置作者班级号。
% \end{function}
% \begin{function}[added=2022-04-01]{info/student-id}
%   \begin{syntax}
%     \opt{info/student-id} = \meta{作者学号}
%   \end{syntax}
% 设置作者学号。
% \end{function}
% \begin{function}[added=2022-05-03]{info/clc}
%   \begin{syntax}
%     \opt{info/clc} = \meta{中图分类号}
%   \end{syntax}
% 设置中图分类号。
% \end{function}
% \begin{function}[added=2022-05-03]{info/secret-level}
%   \begin{syntax}
%     \opt{info/secret-level} = 秘密|(公开)
%   \end{syntax}
% 设置密级。
% \end{function}
% \changes{v1.17.0.1}{2022/05/29}{研究生学位论文提交日期格式}
% \begin{function}[added=2022-05-03,updated=2022-12-31]{info/submit-date}
%   \begin{syntax}
%     \opt{info/submit-date} = \meta{yyyy-mm}
%     \opt{info/submit-date} = \meta{yyyy-mm-dd}
%   \end{syntax}
% 设置提交日期，如果留空，则自动使用编译当天日期。
% \end{function}
% \changes{v2.1.0.0}{2022/06/22}{声明页扫描文件路径}
% \begin{function}[added=2022-06-22]{info/statement-scan}
%   \begin{syntax}
%     \opt{info/statement-scan} = \marg{学位论文独创性声明和关于论文使用授权的说明页扫描文件路径}
%   \end{syntax}
% 设置学位论文独创性声明和关于论文使用授权的说明页扫描文件路径。
% \end{function}
% \changes{v2.2.0.0}{2022/06/23}{声明页签名文件路径}
% \begin{function}[added=2022-06-23]{info/statement-sign}
%   \begin{syntax}
%     \opt{info/statement-sign} = \marg{文件路径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-12-31]{info/sign}
%   \begin{syntax}
%     \opt{info/sign} = \marg{文件路径1,文件路径2}
%   \end{syntax}
% 设置开题报告签名文件路径。
% 文件支持格式与\tnx{includegraphics}一致，建议文件为透明背景且仅有黑色，并尽量减少边距。
% \end{function}
% \begin{optdesc}
%   \item[文件路径1] 指导教师意见签名文件路径。
%   \item[文件路径2] 学院审核意见签名文件路径。
% \end{optdesc}
% \begin{function}[added=2022-12-31]{info/date}
%   \begin{syntax}
%     \opt{info/date} = \marg{日期1,日期2}
%   \end{syntax}
% 设置开题报告签名日期，格式为\margx{yyyy-mm-dd}[]，如果留空，则自动使用编译当天日期。
% \end{function}
% \begin{optdesc}
%   \item[日期1] 指导教师意见签名日期。
%   \item[日期2] 学院审核意见签名日期。
% \end{optdesc}
% \begin{function}[added=2022-04-02]{info/abstract,info/abstract*}
%   \begin{syntax}
%     \opt{info/abstract} = \marg{中文摘要文件路径}
%     \opt{info/abstract*} = \marg{英文摘要文件路径}
%   \end{syntax}
% 设置摘要文件路径，相应文件内仅撰写摘要内容，无需任何环境。
% \end{function}
% \begin{function}[added=2022-04-02]{info/keywords,info/keywords*}
%   \begin{syntax}
%     \opt{info/keywords} = \marg{中文关键词}
%     \opt{info/keywords*} = \marg{英文关键词}
%   \end{syntax}
% 设置关键词，关键词之间需要使用英文半角逗号隔开。
% \end{function}
% \changes{v1.22.0.0}{2022/06/05}{符号对照表文件路径}
% \begin{function}[added=2022-06-05]{info/los}
%   \begin{syntax}
%     \opt{info/los} = \marg{符号对照表文件路径}
%   \end{syntax}
% 设置符号对照表文件路径。
% \end{function}
% \changes{v1.22.0.0}{2022/06/05}{缩略语对照表文件路径}
% \begin{function}[added=2022-06-05]{info/loa}
%   \begin{syntax}
%     \opt{info/loa} = \marg{缩略语对照表文件路径}
%   \end{syntax}
% 设置缩略语对照表文件路径。
% \end{function}
% \changes{v2.0.0.0}{2022/06/21}{修改参考文献文件路径选项名称}
% \begin{function}[added=2022-06-21]{info/bib-resource}
%   \begin{syntax}
%     \opt{info/bib-resource} = \marg{参考文献文件路径}
%   \end{syntax}
% 设置参考文献\filex{.bib}文件路径，多个文件之间需要使用英文半角逗号隔开。
% \end{function}
% \changes{v4.0.0.0}{2022/12/11}{增加附录文件接口}
% \begin{function}[added=2022-12-11]{info/appendix}
%   \begin{syntax}
%     \opt{info/appendix} = \marg{附录文件路径}
%   \end{syntax}
% 设置附录文件路径，多个文件之间需要使用英文半角逗号隔开。
% \end{function}
% \begin{function}[added=2022-04-02]{info/acknowledgements}
%   \begin{syntax}
%     \opt{info/acknowledgements} = \marg{致谢文件路径}
%   \end{syntax}
% 设置致谢文件路径，相应文件内仅撰写致谢内容，无需任何环境。
% \end{function}
% \begin{function}[added=2022-06-07]{info/bio}
%   \begin{syntax}
%     \opt{info/bio} = \marg{作者简介路径}
%   \end{syntax}
% 设置作者简介文件路径，文件内容可参考\secrefx{作者简介配置}中的示例。
% \end{function}
% \changes{v6.2.3.1}{2025/01/12}{更新研究生信息推荐值来源}
% \changes{v6.1.4.1}{2023/03/14}{更新研究生信息推荐值}
% \changes{v2.18.1.0}{2022/12/01}{增加专业博士信息录入推荐值来源}
% \changes{v2.12.2.1}{2022/11/20}{调整研究生信息推荐值展示样式}
% \changes{v1.26.11.2}{2022/06/18}{研究生信息推荐值}
% \subsubsection{研究生信息推荐值}
% \label{研究生信息推荐值}
% 以下研究生信息推荐值均来自
% 《西安电子科技大学研究生学位论文模板（2015年修订版）-2025.01修订》、
% 《西安电子科技大学专业学位硕士学位论文封面及中英文题名页模板（2015年版）-2022.11修订》和
% 《西安电子科技大学专业学位博士学位论文封面及中英文题名页模板-2022.11》，
% 无任何修改，仅供参考。
% \setlength\parindent{0pt}
% \begin{itemize}
% \item \optx{degree} (学术硕士、学术博士)
% \par
% 工学硕士、
% 工学博士、
% 哲学硕士、
% 经济学硕士、
% 法学硕士、
% 教育学硕士、
% 文学硕士、
% 理学硕士、
% 理学博士、
% 军事学硕士、
% 军事学博士、
% 管理学硕士、
% 管理学博士
% \item \optx{degree} (专业硕士)
% \par
% 金融硕士、
% 应用统计硕士、
% 翻译硕士、
% 电子信息硕士、
% 机械硕士、
% 材料与化工硕士、
% 工商管理硕士、
% 公共管理硕士、
% 图书情报硕士、
% 工程管理硕士、
% 工程硕士
% \item \optx{degree} (专业博士)
% \par
% 电子信息博士、
% 机械博士、
% 工程博士
% \item \optx{degree*} (专业硕士)
% \par
% Finance、
% Applied Statistics、
% Translation、
% Electronic Information、
% Machinery、
% Material and Chemistry、
% Business Administration、
% Public Administration、
% Engineering Administration、
% Engineering
% \item \optx{degree*} (专业博士)
% \par
% Electronic Information、
% Machinery、
% Engineering
% \item \optx{department}
% \par
% 通信工程学院、
% 电子工程学院、
% 计算机科学与技术学院、
% 机电工程学院、
% 光电工程学院、
% 物理学院、
% 经济与管理学院、
% 数学与统计学院、
% 人文学院、
% 外国语学院、
% 微电子学院、
% 生命科学技术学院、
% 空间科学与技术学院、
% 先进材料与纳米科技学院、
% 网络与信息安全学院、
% 马克思主义学院、
% 人工智能学院、
% 集成电路研究院
% \item \optx{major}
% \par
% 哲学、
% 应用经济学、
% 马克思主义理论、
% 体育学、
% 外国语言文学、
% 数学、
% 物理学、
% 统计学、
% 力学、
% 机械工程、
% 光学工程、
% 仪器科学与技术、
% 材料科学与工程、
% 电气工程、
% 电子科学与技术、
% 信息与通信工程、
% 控制科学与工程、
% 计算机科学与技术、
% 交通运输工程、
% 生物医学工程、
% 软件工程、
% 网络空间安全、
% 军队指挥学、
% 管理科学与工程、
% 工商管理、
% 图书情报与档案管理、
% 集成电路科学与工程
% \item \optx{major*}
% \par
% Philosophy、
% Applied Economics、
% Marxist Theory、
% Sports Science、
% Foreign Languages and Literature、
% Mathematics、
% Physics、
% Statistics、
% Mechanics、
% Mechanical Engineering、
% Optical Engineering、
% Instrument Science and Technology、
% Materials Science and Engineering、
% Electrical Engineering、
% Electronics Science and Technology、
% Information and Communications Engineering、
% Control Science and Engineering、
% Computer Science and Technology、
% Communication and Transportation Engineering、
% Biomedical Engineering、
% Software Engineering、
% Cyber Security、
% Military Command Science、
% Management Science and Engineering、
% Business Administration、
% Science of Library, Information and Archival
% \item \optx{sub-major}
% \par
% 美学、
% 宗教学、
% 国民经济学、
% 金融学、
% 产业经济学、
% 马克思主义基本原理、
% 思想政治教育、
% 体育教育训练学、
% 英语语言文学、
% 外国语言学及应用语言学、
% 计算数学、
% 概率论与数理统计、
% 应用数学、
% 运筹学与控制论、
% 等离子体物理、
% 凝聚态物理、
% 光学、
% 无线电物理、
% 统计学、
% 工程力学、
% 机械制造及其自动化、
% 机械电子工程、
% 机械设计及理论、
% 电子机械科学与技术、
% 工业设计、
% 光学工程、
% 精密仪器及机械、
% 测试计量技术及仪器、
% 材料物理与化学、
% 材料学、
% 电机与电器、
% 电力电子与电力传动、
% 物理电子学、
% 电路与系统、
% 微电子学与固体电子学、
% 电磁场与微波技术、
% 信息对抗技术、
% 集成电路系统设计、
% 通信与信息系统、
% 信号与信息处理、
% 智能信息处理、
% 空间信息科学与技术、
% 控制理论与控制工程、
% 检测技术与自动化装置、
% 系统工程、
% 模式识别与智能系统、
% 导航、制导与控制、
% 计算机系统结构、
% 计算机软件与理论、
% 计算机应用技术、
% 交通信息工程及控制、
% 生物医学工程、
% 生物材料与细胞工程、
% 软件工程、
% 软件工程技术、
% 军事通信学、
% 密码学、
% 管理科学与工程、
% 管理哲学、
% 会计学、
% 企业管理、
% 技术经济及管理、
% 图书馆学、
% 情报学、
% 光通信、
% 信息安全、
% 生物信息科学与技术、
% 机器人技术、
% 遥感信息科学与技术、
% 空间科学与技术、
% 马克思主义中国化研究、
% 外国文学、
% 翻译学、
% 基础数学、
% 流体力学、
% 固体力学、
% 智能机电系统及测控技术、
% 空间科学仪器与电磁实验技术、
% 飞行器测控与导航制导、
% 智能检测与新型传感器
% \item \optx{domain} (专业硕士)
% \par
% 金融、
% 应用统计、
% 英语笔译、
% 新一代电子信息技术（含量子技术等）、
% 通信工程（含宽带网络、移动通信等）、
% 集成电路工程、
% 计算机技术、
% 软件工程、
% 控制工程、
% 仪器仪表工程、
% 光电信息工程、
% 生物医学工程、
% 人工智能、
% 网络与信息安全、
% 机械、
% 材料与化工、
% 工商管理、
% 公共管理、
% 图书情报、
% 工程管理、
% 物流工程与管理、
% 机械工程、
% 光学工程、
% 材料工程、
% 电子与通信工程、
% 航天工程、
% 项目管理、
% 物流工程
% \item \optx{domain} (专业博士)
% \par
% 电子与信息、
% 先进制造、
% 电子信息、
% 机械
% \item \optx{supv-title}
% \par
% 教授、
% 副教授
% \item \optx{supv-title*}
% \par
% Professor、
% Associate Professor
% \item \optx{supv-ent-title}
% \par
% 研究员、
% 副研究员、
% 高工
% \item \optx{supv-ent-title*}
% \par
% Research Fellow、
% Associate Research Fellow、
% Senior Engineer
% \end{itemize}
% \setlength\parindent{2em}
% \subsection{页面和信息移除}
% \label{页面和信息移除}
% \changes{v6.1.1.1}{2023/03/06}{修正文档中页面移除值样式}
% \changes{v6.0.0.0}{2023/03/02}{修正题名页键值}
% \changes{v2.12.1.0}{2022/07/03}{页面和信息移除选项增加分组}
% \begin{function}[added=2022-06-26,updated=2023-03-02]{style/remove-page}
%   \begin{syntax}
%     \opt{style/remove-page} = \texttt{\char`\{}封面|题名页|声明页|摘要|索引|对照表|目录|附录|参考文献|致谢|作者简介\texttt{\char`\}}
%   \end{syntax}
% 设置移除的页面，可多选，多个值之间需要使用英文半角逗号隔开，例如：
% \begin{lstlisting}
% \xdusetup{ style / remove-page = { 封面, 题名页, 致谢 } }
% \end{lstlisting}
% \end{function}
% \begin{optdesc}
%   \item[题名页] 中英文题名页。
%   \item[摘要] 中英文摘要。
%   \item[索引] 图片索引和表格索引。
%   \item[对照表] 符号对照表和缩略语对照表。
% \end{optdesc}
% \begin{function}[added=2022-06-26]{style/remove-header}
%   \begin{syntax}
%     \opt{style/remove-header} = true|(false)
%   \end{syntax}
% 设置是否移除页眉。
% \end{function}
% \begin{function}[added=2022-06-26]{style/remove-footer}
%   \begin{syntax}
%     \opt{style/remove-footer} = true|(false)
%   \end{syntax}
% 设置是否移除页脚。
% \end{function}
% \begin{function}[added=2022-06-26]{style/anonymous}
%   \begin{syntax}
%     \opt{anonymous} = 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{lstlisting}
% \caption{本文与文献\noauxwrite{\parencite{某文献}}计算开销对比}
% \end{lstlisting}
% \end{function}
% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文标题}
% \subsubsection{英文研究生学位论文标题}
% \label{英文研究生学位论文标题}
% \begin{function}[added=2022-06-20,updated=2023-01-28]{\chapter,\section,\subsection}
%   \begin{syntax}
%     \tn{chapter}\marg{英文标题}\oarg{中文标题}
%     \tn{section}\marg{英文标题}\oarg{中文标题}
%     \tn{subsection}\marg{英文标题}\oarg{中文标题}
%   \end{syntax}
% 在英文研究生学位论文中一二三级标题为中英双语，其他级别标题为英文。
% 一个简单的例子如下所示：
% \begin{lstlisting}
% \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{lstlisting}
% \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{lstlisting}
% \anon[XX]{张三}
% \end{lstlisting}
% 当\optx{style/anonymous}为\valuex{true}[]，输出XX；当\optx{style/anonymous}为\valuex{false}[]，输出张三。
% \end{function}
% \subsection{额外功能}
% \label{额外功能}
% \changes{v1.26.11.1}{2022/06/17}{带教导师与挂名导师}
% \subsubsection{带教导师与挂名导师}
% 已和学位办确认，对于研究生，如挂名导师与带教导师不是一人的，
% 仅需填写带教导师，无需填写挂名导师。
% 如有特殊需求，需要填写两位老师，
% 可在\optx{info/supervisor}[]、\optx[]{info/supervisor*}[]、^^A
% \optx[]{info/supv-title}和\optx{info/supv-title*}中
% 使用逗号分隔两位老师的信息。
% \changes{v2.10.1.1}{2022/06/26}{相似性检测、盲审和抽查评估}
% \subsubsection{相似性检测、盲审和抽查评估}
% 对于相似性检测、盲审和抽查评估，主要分为两种操作，
% 一种是页面移除，另外一种是信息的隐藏和替换。
% 页面移除请参考\secrefx{页面和信息移除}，
% 信息隐藏请自行删除或注释相应的信息录入选项，
% 信息替换请自行修改相应的信息录入选项；
% 作者简介部分的信息匿名请参考\secrefx{匿名命令}。
% 用户根据学校和学院的具体要求，
% 组合使用以上两种操作来生成符合相似性检测、盲审和抽查评估要求的论文。
% \changes{v2.14.0.0}{2022/11/21}{隐藏部分索引和对照表}
% \subsubsection{隐藏部分索引和对照表}
% 由于存在插图索引、表格索引、符号对照表或缩略语对照表为空的情况，
% 故支持隐藏插图索引、表格索引、符号对照表或缩略语对照表，例如：
% \begin{lstlisting}
% \xdusetup{ style / remove-page = { 插图索引, 符号对照表 } }
% \end{lstlisting}
% \clearpage
% \end{documentation}
% \StopEventually{}
% \begin{implementation}
% \addtocontents{toc}{\protect\value{tocdepth}=5}
% \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}
% \changes{v5.5.0.0}{2023/03/01}{抑制\pkgx{fontspec}对数学字体的修改}
% \begin{macro}{\PassOptionsToPackage}
% 抑制\pkgx{fontspec}对数学字体的修改。
%    \begin{macrocode}
\PassOptionsToPackage { no-math } { fontspec }
%    \end{macrocode}
% \end{macro}
% \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}或\clsx{ctexart}文档类。
% \\
% \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
  }
%<thesis>  { ctexbook }
%<tp>  { ctexart }
%<thesis>\LoadClass { ctexbook }
%<tp>\LoadClass { ctexart }
%    \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_@@_latin_sans_scale_tl,
%     \l_@@_latin_mono_scale_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_@@_latin_sans_scale_tl
\tl_new:N \l_@@_latin_mono_scale_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, hanyi, 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-sans-scale .choices:nn = { upper, lower, off }
      { \tl_set_eq:NN \l_@@_latin_sans_scale_tl \l_keys_choice_tl },
    latin-mono-scale .choices:nn = { upper, lower, off }
      { \tl_set_eq:NN \l_@@_latin_mono_scale_tl \l_keys_choice_tl },
%    \end{macrocode}
% 英文字体配置。
%    \begin{macrocode}
    latin-font .choices:nn = { gyre, tac, tacn, tcc, thcs, tll, none }
      { \tl_set_eq:NN \l_@@_latin_font_tl \l_keys_choice_tl },
%    \end{macrocode}
% 数学字体配置。
%    \begin{macrocode}
    math-font .choices:nn =
      {
        asana, bonum, cambria, cm, concrete, dejavu, erewhon, euler,
        fira, garamond, gfsneohellenic, kp, libertinus, lm, newcm,
        pagella, schola, stix, stix2, termes, xcharter, 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 / latin-sans-scale = off,
    style / latin-mono-scale = off,
    style / math-font        = cm,
    style / unicode-math     = { },
    style / font-type        = font,
    style / font-path        = fonts
  }
%    \end{macrocode}
% \end{macro}
% \changes{v0.5.1.0}{2022/04/06}{判断操作系统是否是macOS}
% \changes{v0.5.1.0}{2022/04/06}{加载字体时自动判断是否为macOS平台}
% \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}
% \changes{v5.1.0.0}{2023/02/20}{增加汉仪字体}
% \begin{macro}{\@@_load_cjk_font_hanyi:}
% 中文字体配置\valuex{hanyi}[]。
%    \begin{macrocode}
\cs_new:Npn \@@_load_cjk_font_hanyi:
  {
    \@@_set_cjk_main_font:nn
      { \@@_select_font:nn { HYShuSongErS } { HYShuSongErS.ttf  } }
      { \@@_select_font:nn { HYKaiTiS     } { HYKaiTiS.ttf      } }
    \@@_set_cjk_sans_font:n
      { \@@_select_font:nn { HYZhongHei   } { HYZhongHeiTiS.ttf } }
    \@@_set_cjk_mono_font:n
      { \@@_select_font:nn { HYFangSongS  } { HYFangSongS.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}
% \changes{v6.1.2.0}{2023/03/07}{修正匹配打字机族字符高度}
% \changes{v4.3.0.0}{2023/01/28}{匹配无衬线族和打字机族字符高度}
% \changes{v0.8.3.0}{2022/04/13}{匹配小写字母字符高度}
% \begin{macro}{\@@_set_latin_sans_scale:,\@@_set_latin_mono_scale:}
% 匹配无衬线族和打字机族字符高度。
%    \begin{macrocode}
\cs_new:Npn \@@_set_latin_sans_scale: { }
\cs_new:Npn \@@_set_latin_mono_scale: { }
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_latin_sans_scale_tl { upper }
      { \cs_set:Npn \@@_set_latin_sans_scale: { Scale = MatchUppercase , } }
      {
        \tl_if_eq:NnT \l_@@_latin_sans_scale_tl { lower }
          { \cs_set:Npn \@@_set_latin_sans_scale: { Scale = MatchLowercase , } }
      }
    \tl_if_eq:NnTF \l_@@_latin_mono_scale_tl { upper }
      { \cs_set:Npn \@@_set_latin_mono_scale: { Scale = MatchUppercase , } }
      {
        \tl_if_eq:NnT \l_@@_latin_mono_scale_tl { lower }
          { \cs_set:Npn \@@_set_latin_mono_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_sans_scale: ] }
      {
        \setsansfont { #2 }
          [
            \@@_font_path:
            \@@_set_latin_sans_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_mono_scale: \@@_off_latin_ligatures: ] }
      {
        \setmonofont { #2 }
          [
            \@@_font_path:
            \@@_set_latin_mono_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_sans_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_mono_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_tcc:}
% \changes{v5.3.0.0}{2023/02/23}{增加tcc系列英文字体配置}
% 英文字体配置\valuex{tcc}[]。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_tcc:
  {
    \@@_set_latin_main_font:nnnnn
      { Times~New~Roman }
      { times.ttf       }
      { timesbd.ttf     }
      { timesi.ttf      }
      { timesbi.ttf     }
    \@@_set_latin_sans_font:nnnn
      { cmunss.otf      }
      { cmunsx.otf      }
      { cmunsi.otf      }
      { cmunso.otf      }
    \@@_set_latin_mono_font:nnnn
      { cmuntt.otf      }
      { cmuntb.otf      }
      { cmunit.otf      }
      { cmuntx.otf      }
  }
%    \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_tll:}
% \changes{v5.3.0.0}{2023/02/23}{增加tll系列英文字体配置}
% 英文字体配置\valuex{tll}[]。
%    \begin{macrocode}
\cs_new:Npn \@@_load_latin_font_tll:
  {
    \@@_set_latin_main_font:nnnnn
      { Times~New~Roman      }
      { times.ttf            }
      { timesbd.ttf          }
      { timesi.ttf           }
      { timesbi.ttf          }
    \@@_set_latin_sans_font:nnnn
      { LinBiolinum_R.otf    }
      { LinBiolinum_RB.otf   }
      { LinBiolinum_RI.otf   }
      { LinBiolinum_RBO.otf  }
    \@@_set_latin_mono_font:nnnn
      { LinLibertine_M.otf   }
      { LinLibertine_MB.otf  }
      { LinLibertine_MO.otf  }
      { LinLibertine_MBO.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{数学字体}
% \changes{v6.1.1.0}{2023/03/06}{修复\pkgx{unicode-math}下书签中公式}
% \changes{v5.6.0.0}{2023/03/01}{设置\pkgx{unicode-math}下算符字体为数学字体}
% \changes{v1.14.1.0}{2022/05/10}{使用\tnx{PassOptionsToPackage}传递\pkgx{unicode-math}宏包参数}
% \begin{macro}{\@@_load_unicode_math_pkg:}
% 加载\pkgx{unicode-math}宏包并设置算符字体为数学字体。
%    \begin{macrocode}
\cs_new:Npn \@@_load_unicode_math_pkg:
  {
    \PassOptionsToPackage { \l_@@_unicode_math_tl } { unicode-math }
    \RequirePackage  { unicode-math }
    \setoperatorfont { \symup       }
    \hypersetup      { psdextra     }
  }
%    \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{v2.16.1.0}{2022/11/27}{修改XITS Math数学字体调用方式}
% \changes{v2.16.0.0}{2022/11/27}{增加若干数学字体}
% \changes{v2.15.0.0}{2022/11/26}{增加New Computer Modern Math数学字体}
% \changes{v2.13.0.0}{2022/11/21}{增加Erewhon Math数学字体}
% \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             },
    { concrete       } { Concrete-Math.otf          },
    { erewhon        } { Erewhon-Math.otf           },
    { euler          } { Euler-Math.otf             },
    { fira           } { FiraMath-Regular.otf       },
    { garamond       } { Garamond-Math.otf          },
    { gfsneohellenic } { GFSNeohellenicMath.otf     },
    { kp             } { KpMath-Regular.otf         },
    { libertinus     } { LibertinusMath-Regular.otf },
    { lm             } { latinmodern-math.otf       },
    { newcm          } { NewCMMath-Regular.otf      },
    { stix           } { STIXMath-Regular.otf       },
    { stix2          } { STIXTwoMath-Regular.otf    },
    { xcharter       } { XCharter-Math.otf          },
    { xits           } { XITSMath-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}
% \changes{v0.5.1.0}{2022/04/06}{适配macOS平台MacTeX内置XITSMath数学字体}
% \changes{v2.12.1.0}{2022/07/03}{移除XITSMath数学字体冗余语句}
% \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|tp>
%    \end{macrocode}
% \subsection{信息录入}
% \changes{v1.8.0.0}{2022/05/02}{拆分信息录入选项}
% \begin{variable}
%   {
%     \l_@@_title_tl,
%     \l_@@_title_i_tl,
%     \l_@@_title_ii_tl,
%     \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_@@_appendix_clist,
%     \l_@@_ack_tl
%   }
% 论文标题。
%    \begin{macrocode}
\tl_new:N \l_@@_title_tl
\tl_new:N \l_@@_title_i_tl
\tl_new:N \l_@@_title_ii_tl
%    \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}
\clist_new:N \l_@@_appendix_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_tl,
%    \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}
    supv-ent .tl_set:N = \l_@@_supv_ent_str,
    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}
    appendix .clist_set:N = \l_@@_appendix_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 / supv-ent              = { },
    info / supervisor-enterprise = { },
    info / student-id            = { },
    info / abstract              = { },
    info / abstract*             = { },
    info / keywords              = { },
    info / keywords*             = { },
    info / bib-resource          = { },
    info / appendix              = { },
    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|tp>
%<*xduugtp>
%    \end{macrocode}
% \subsubsection{本科生开题报告}
% \begin{variable}
%   {
%     \l_@@_class_str,
%     \l_@@_submit_date_str,
%     \l_@@_sign_clist,
%     \l_@@_date_clist
%   }
% 界。
%    \begin{macrocode}
\str_new:N \l_@@_class_str
%    \end{macrocode}
% 提交日期。
%    \begin{macrocode}
\str_new:N \l_@@_submit_date_str
%    \end{macrocode}
% 签名文件路径。
%    \begin{macrocode}
\clist_new:N \l_@@_sign_clist
%    \end{macrocode}
% 签名日期。
%    \begin{macrocode}
\clist_new:N \l_@@_date_clist
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\keys_define:nn}
% 定义信息键值。
%    \begin{macrocode}
\keys_define:nn { xdu / info }
  {
%    \end{macrocode}
% 界。
%    \begin{macrocode}
    class .tl_set:N = \l_@@_class_str,
%    \end{macrocode}
% 提交日期。
%    \begin{macrocode}
    submit-date .tl_set:N = \l_@@_submit_date_str,
%    \end{macrocode}
% 签名文件路径。
%    \begin{macrocode}
    sign .clist_set:N = \l_@@_sign_clist,
%    \end{macrocode}
% 签名日期。
%    \begin{macrocode}
    date .clist_set:N = \l_@@_date_clist
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\keys_set:nn}
% 初始设置。
%    \begin{macrocode}
\keys_set:nn { xdu }
  {
    info / class       = { },
    info / submit-date = { },
    info / sign        = { },
    info / date        = { }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugtp>
%<*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}
    supv-dept .tl_set:N = \l_@@_supv_dept_str,
    supervisor-department .tl_set:N = \l_@@_supv_dept_str,
%    \end{macrocode}
% 校内导师姓名。
%    \begin{macrocode}
    supv-school .tl_set:N = \l_@@_supv_sch_str,
    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 / supv-dept             = { },
    info / supervisor-department = { },
    info / supv-school           = { },
    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_@@_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_@@_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}
    supv-ent* .tl_set:N = \l_@@_supv_ent_en_str,
    supervisor-enterprise* .tl_set:N = \l_@@_supv_ent_en_str,
%    \end{macrocode}
% 导师职称。
%    \begin{macrocode}
    supv-title .clist_set:N = \l_@@_supv_t_clist,
    supervisor-title .clist_set:N = \l_@@_supv_t_clist,
    supv-title* .clist_set:N = \l_@@_supv_t_en_clist,
    supervisor-title* .clist_set:N = \l_@@_supv_t_en_clist,
%    \end{macrocode}
% 校外导师职称。
%    \begin{macrocode}
    supv-ent-title .tl_set:N = \l_@@_supv_ent_t_str,
    supervisor-enterprise-title .tl_set:N = \l_@@_supv_ent_t_str,
    supv-ent-title* .tl_set:N = \l_@@_supv_ent_t_en_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}
    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 / supv-ent*                    = { },
    info / supervisor-enterprise*       = { },
    info / supv-title                   = { },
    info / supervisor-title             = { },
    info / supv-title*                  = { },
    info / supervisor-title*            = { },
    info / supv-ent-title               = { },
    info / supervisor-enterprise-title  = { },
    info / supv-ent-title*              = { },
    info / supervisor-enterprise-title* = { },
    info / title*                       = { },
    info / major*                       = { },
    info / sub-major                    = { },
    info / domain                       = { },
    info / clc                          = { },
    info / secret-level                 = 公开,
    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_lof_bool,
%     \l_@@_rm_lot_bool,
%     \l_@@_rm_los_bool,
%     \l_@@_rm_loa_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_lof_bool
\bool_new:N \l_@@_rm_lot_bool
%    \end{macrocode}
% 符号对照表和缩略语对照表。
%    \begin{macrocode}
\bool_new:N \l_@@_rm_los_bool
\bool_new:N \l_@@_rm_loa_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_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_lof_bool
        \bool_set_true:N \l_@@_rm_lot_bool
      }
    \clist_if_in:NnT \l_@@_rm_page_clist { 插图索引 }
      { \bool_set_true:N \l_@@_rm_lof_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 表格索引 }
      { \bool_set_true:N \l_@@_rm_lot_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 对照表 }
      {
        \bool_set_true:N \l_@@_rm_los_bool
        \bool_set_true:N \l_@@_rm_loa_bool
      }
    \clist_if_in:NnT \l_@@_rm_page_clist { 符号对照表 }
      { \bool_set_true:N \l_@@_rm_los_bool }
    \clist_if_in:NnT \l_@@_rm_page_clist { 缩略语对照表 }
      { \bool_set_true:N \l_@@_rm_loa_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|xduugtp>
%    \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_@@_title_bold_math_bool,
%     \l_@@_en_cjk_font_bool,
%     \l_@@_lang_tl,
%     \l_@@_bib_tool_tl,
%     \l_@@_biblatex_option_tl,
%     \l_@@_search_path_clist,
%     \l_@@_fix_input_bool,
%     \l_@@_fix_include_bool,
%     \l_@@_fix_graphics_bool,
%     \l_@@_ref_add_space_bool,
%     \l_@@_cap_label_sep_tl,
%     \l_@@_ft_cap_format_tl,
%     \l_@@_alg_cap_format_tl,
%     \l_@@_ft_cap_align_tl,
%     \l_@@_alg_cap_align_tl,
%     \l_@@_add_alg_rule_vspace_bool,
%     \l_@@_tab_small_bool,
%     \l_@@__figure_align_tl,
%     \l_@@__table_align_tl,
%     \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_@@_title_bold_math_bool
%    \end{macrocode}
% \changes{v2.12.0.2}{2022/07/01}{精简变量名称}
% 英文是否使用中文字体。
%    \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}
% 设置文件搜索路径。
%    \begin{macrocode}
\clist_new:N \l_@@_search_path_clist
%    \end{macrocode}
% 是否修复文件导入命令。
%    \begin{macrocode}
\bool_new:N \l_@@_fix_input_bool
\bool_new:N \l_@@_fix_include_bool
\bool_new:N \l_@@_fix_graphics_bool
%    \end{macrocode}
% 是否在\tnx{ref}和\tnx{pageref}两侧自动调整中英文间空白。
%    \begin{macrocode}
\tl_new:N \l_@@_ref_add_space_bool
%    \end{macrocode}
% 标签与后面标题之间的间距。
%    \begin{macrocode}
\tl_new:N \l_@@_cap_label_sep_tl
%    \end{macrocode}
% 图、表、算法caption格式。
%    \begin{macrocode}
\tl_new:N \l_@@_ft_cap_format_tl
\tl_new:N \l_@@_alg_cap_format_tl
%    \end{macrocode}
% 图、表、算法caption对齐方式。
%    \begin{macrocode}
\tl_new:N \l_@@_ft_cap_align_tl
\tl_new:N \l_@@_alg_cap_align_tl
%    \end{macrocode}
% 设置算法三线间距。
%    \begin{macrocode}
\bool_new:N \l_@@_add_alg_rule_vspace_bool
%    \end{macrocode}
% 设置表格字号是否为五号。
%    \begin{macrocode}
\bool_new:N \l_@@_tab_small_bool
%    \end{macrocode}
% 设置图表内容对齐方式。
%    \begin{macrocode}
\tl_new:N \l_@@_figure_align_tl
\tl_new:N \l_@@_table_align_tl
%    \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}
    title-bold-math .bool_set:N = \l_@@_title_bold_math_bool,
%    \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}
% 设置文件搜索路径。
%    \begin{macrocode}
    file-search-path .clist_set:N = \l_@@_search_path_clist,
%    \end{macrocode}
% 是否修复文件导入命令。
%    \begin{macrocode}
    fix-input .bool_set:N = \l_@@_fix_input_bool,
    fix-include .bool_set:N = \l_@@_fix_include_bool,
    fix-includegraphics .bool_set:N = \l_@@_fix_graphics_bool,
%    \end{macrocode}
% 是否在\tnx{ref}和\tnx{pageref}两侧自动调整中英文间空白。
%    \begin{macrocode}
    ref-add-space .bool_set:N = \l_@@_ref_add_space_bool,
%    \end{macrocode}
% 标签与后面标题之间的间距。
%    \begin{macrocode}
    caption-label-sep .tl_set:N = \l_@@_cap_label_sep_tl,
%    \end{macrocode}
% 图、表、算法caption格式。
%    \begin{macrocode}
    ft-caption-format .choices:nn = { plain, hang }
      { \tl_set_eq:NN \l_@@_ft_cap_format_tl \l_keys_choice_tl },
    alg-caption-format .choices:nn = { plain, hang }
      { \tl_set_eq:NN \l_@@_alg_cap_format_tl \l_keys_choice_tl },
%    \end{macrocode}
% 图、表、算法caption对齐方式。
%    \begin{macrocode}
    ft-caption-align .choices:nn = { left, centering, centering-left }
      { \tl_set_eq:NN \l_@@_ft_cap_align_tl \l_keys_choice_tl },
    alg-caption-align .choices:nn = { left, centering, centering-left }
      { \tl_set_eq:NN \l_@@_alg_cap_align_tl \l_keys_choice_tl },
%    \end{macrocode}
% 设置算法三线间距。
%    \begin{macrocode}
    add-alg-rule-vspace .bool_set:N = \l_@@_add_alg_rule_vspace_bool,
%    \end{macrocode}
% 设置表格字号是否为五号。
%    \begin{macrocode}
    table-small-font .bool_set:N = \l_@@_tab_small_bool,
%    \end{macrocode}
% 设置图表内容对齐方式。
%    \begin{macrocode}
    figure-align .choices:nn = { left, centering, right }
      { \tl_set_eq:NN \l_@@_figure_align_tl \l_keys_choice_tl },
    table-align .choices:nn = { left, centering, right }
      { \tl_set_eq:NN \l_@@_table_align_tl \l_keys_choice_tl },
%    \end{macrocode}
% 设置算法Caption字号是否为五号。
%    \begin{macrocode}
    alg-small-caption .bool_set:N = \l_@@_alg_small_cap_bool,
    algorithm-small-caption .bool_set:N = \l_@@_alg_small_cap_bool,
%    \end{macrocode}
% 设置算法内容字号是否为五号。
%    \begin{macrocode}
    alg-small-font .bool_set:N = \l_@@_alg_small_bool,
    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 / title-bold-math         = false,
    style / en-cjk-font             = false,
    style / language                = zh,
    style / bib-backend             = biblatex,
    style / biblatex-option         = { },
    style / file-search-path        = { },
    style / fix-input               = false,
    style / fix-include             = false,
    style / fix-includegraphics     = false,
    style / ref-add-space           = false,
    style / caption-label-sep       = 0.75em,
    style / ft-caption-format       = hang,
    style / alg-caption-format      = hang,
    style / ft-caption-align        = centering-left,
    style / alg-caption-align       = left,
    style / add-alg-rule-vspace     = false,
    style / table-small-font        = true,
    style / figure-align            = centering,
    style / table-align             = centering,
    style / alg-small-caption       = true,
    style / algorithm-small-caption = true,
    style / alg-small-font          = 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}
% \changes{v4.4.0.0}{2023/02/03}{标题数学字体配置}
% \subsection{标题数学字体配置}
% \begin{macro}{\@@_bold_math:}
% 自定义数学字体加粗命令。
%    \begin{macrocode}
\cs_new:Npn \@@_bold_math: { }
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_title_bold_math_bool
      {
        \tl_if_eq:NnT \l_@@_math_font_tl { cm }
          { \cs_set_eq:NN \@@_bold_math: \boldmath }
      }
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</thesis|xduugtp>
%<*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_@@_cust_edubg_bool,
%     \l_@@_cust_resresult_bool
%   }
% 是否完全自定义作者简介中教育背景。
%    \begin{macrocode}
\bool_new:N \l_@@_cust_edubg_bool
%    \end{macrocode}
% 是否完全自定义作者简介中攻读硕士学位期间的研究成果。
%    \begin{macrocode}
\bool_new:N \l_@@_cust_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_@@_cust_edubg_bool,
%    \end{macrocode}
% 是否完全自定义作者简介中攻读硕士学位期间的研究成果。
%    \begin{macrocode}
    customize-resresult .bool_set:N = \l_@@_cust_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}
% \changes{v4.3.1.0}{2023/02/03}{修复本科毕设论文页眉公式显示}
% \begin{variable}{\l_@@_pure_title_tl}
% 移除标题中换行符。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \tl_new:N \l_@@_pure_title_tl
    \tl_set_eq:NN \l_@@_pure_title_tl \l_@@_title_tl
    \tl_remove_all:Nn \l_@@_pure_title_tl { \\ }
  }
%    \end{macrocode}
% \end{variable}
% \changes{v4.0.2.0}{2022/12/26}{移除本科生毕业设计标题自动换行功能}
% \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_set:Nx #1 { #2 } }
  }
\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}
% \changes{v4.4.5.0}{2023/02/09}{修复书签中目录跳转异常}
% \begin{macro}{\@@_add_bookmark:n}
% 为当前位置添加书签。
%    \begin{macrocode}
\cs_new:Npn \@@_add_bookmark:n #1
  {
    \cleardoublepage
    \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{macrocode}
%</thesis>
%<*thesis|xduugtp>
%    \end{macrocode}
% \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}
%    \begin{macrocode}
%</thesis|xduugtp>
%<*thesis>
%    \end{macrocode}
% \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{v2.14.1.0}{2022/11/21}{支持多行页眉}
% \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    = 60pt,
    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 = 60pt,
    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{macrocode}
%</thesis>
%<*tp>
%    \end{macrocode}
% \changes{v4.1.0.0}{2022/12/31}{设置本科生毕业设计开题报告页边距}
% \begin{macro}{\newgeometry,\savegeometry,\loadgeometry}
% 设置本科生毕业设计开题报告页边距。
%    \begin{macrocode}
\newgeometry
  {
    left       = 3.17cm,
    right      = 3.17cm,
    top        = 2.54cm,
    bottom     = 2.54cm,
    footskip   = 0cm,
    headsep    = 0cm,
    headheight = 0cm
  }
\savegeometry { main }
\loadgeometry { main }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</tp>
%<*thesis>
%    \end{macrocode}
% \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_tl }
    \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{v4.4.0.0}{2023/02/03}{本科生英文毕业设计所有级别标题中数学字体加粗}
% \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 \@@_bold_math:
    \str_if_eq:ccTF { #2 } { c }
      { \centering   }
      { \raggedright }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ctexset}
% \changes{v6.2.3.0}{2025/01/12}{修复本科生毕业设计三四五六级标题字号默认值}
% \changes{v4.4.0.0}{2023/02/03}{本科生毕业设计一级标题中数学字体加粗}
% \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 } \@@_bold_math: },
            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{v4.4.0.0}{2023/02/03}{研究生学位论文标题中数学字体加粗}
% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文一级标题字体}
% 设置章节名字和随后的标题内容格式。
%    \begin{macrocode}
\cs_new:Npn \@@_sec_format_i:n #1
  {
    \@@_rm_family:
    \bfseries \@@_bold_math:
    \zihao { #1 }
    \dim_set:Nn \baselineskip { 20pt }
  }
\cs_new:Npn \@@_sec_format_ii:
  {
    \@@_sf_family:
    \centering
    \@@_bold_math:
    \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
%   }
% \changes{v4.4.0.0}{2023/02/03}{本科生毕业设计目录一级标题中数学字体加粗}
% 设置一级标题及相应页码字体字号。
%    \begin{macrocode}
\clist_map_inline:nn
  {
    \cftchapfont,
    \cftchappagefont
  }
  { \renewcommand { #1 } { \@@_rm_family: \zihao { -4 } \bfseries \@@_bold_math: } }
%    \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{v4.4.0.0}{2023/02/03}{中文研究生学位论文目录中一级标题中数学字体加粗}
% \changes{v1.29.2.0}{2022/06/19}{修正英文研究生学位论文目录中一级标题字体}
% 设置一级标题字体字号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@@_lang_switch:nn
      { \cs_set:Npn \cftchapfont { \@@_sf_family: \@@_bold_math: \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}
%   {
%     \input,
%     \include,
%     \includegraphics
%   }
% \changes{v2.12.0.0}{2022/07/01}{配置文件搜索路径}
% 配置文件搜索路径。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \seq_if_empty:NF \l_@@_search_path_clist
      {
        \clist_map_inline:Nn \l_@@_search_path_clist
          { \seq_put_right:Nn \l_file_search_path_seq { #1 } }
      }
    \bool_if:NT \l_@@_fix_input_bool
      {
        \cs_new_eq:NN \@@_org_input:n \input
        \RenewDocumentCommand { \input } { m }
          { \@@_org_input:n { ./ #1 } }
      }
    \bool_if:NT \l_@@_fix_include_bool
      {
        \cs_new_eq:NN \@@_org_include:n \include
        \RenewDocumentCommand { \include } { m }
          { \@@_org_include:n { ./ #1 } }
      }
    \bool_if:NT \l_@@_fix_graphics_bool
      {
        \cs_new_eq:NN \@@_org_includegraphics:n \includegraphics
        \RenewDocumentCommand { \includegraphics } { o m }
          {
            \IfNoValueTF { #1 }
              { \@@_org_includegraphics:n        { ./ #2 } }
              { \@@_org_includegraphics:n [ #1 ] { ./ #2 } }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{公式}
% \begin{macro}{\theequation}
% 重定义公式编号样式。
%    \begin{macrocode}
\renewcommand { \theequation } { \thechapter - \arabic { equation } }
%    \end{macrocode}
% \end{macro}
% \subsection{浮动体}
% \begin{variable}
%   {
%     \topfraction,
%     \floatpagefraction
%   }
% \changes{v2.11.0.0}{2022/06/30}{限制浮动环境占用大小}
% 限制浮动环境占用大小。
%    \begin{macrocode}
\cs_set:Npn \topfraction       { .8 }
\cs_set:Npn \floatpagefraction { .8 }
%    \end{macrocode}
% \end{variable}
% \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{v6.0.1.0}{2023/03/03}{修正子图子表caption垂直间距}
% \changes{v5.2.0.0}{2023/02/23}{设置图表caption前后垂直间距}
% \changes{v3.0.0.0}{2022/12/03}{设置图表caption格式}
% \changes{v2.17.0.0}{2022/11/28}{设置图表caption格式}
% \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}
\PassOptionsToPackage { ruled } { caption }
\RequirePackage { caption }
\DeclareCaptionLabelSeparator { customskip } { \hskip \l_@@_cap_label_sep_tl }
\DeclareCaptionFont { customfont   } { \@@_rm_family: \zihao { 5 } }
\captionsetup
  {
    strut    = off,
    labelsep = customskip,
    font     = customfont
  }
\captionsetup [ subfigure ] { strut = on, skip = 0pt }
\captionsetup [ subtable  ] { strut = on, skip = 0pt }
\dim_set_eq:NN \intextsep \abovecaptionskip
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_ft_cap_format_tl { hang }
      { \captionsetup { format = hang  } }
      { \captionsetup { format = plain } }
    \tl_if_eq:NnTF \l_@@_ft_cap_align_tl { left }
      { \captionsetup { singlelinecheck = false, justification = justified } }
      {
        \tl_if_eq:NnTF \l_@@_ft_cap_align_tl { centering }
          { \captionsetup { singlelinecheck = false, justification = centerlast } }
          { \captionsetup { singlelinecheck = true, justification = justified   } }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\DeclareCaptionFont,\captionsetup*}
% \changes{v4.4.2.0}{2023/02/06}{修正\pkgx{algorithm}算法caption对齐方式}
% \changes{v3.1.1.0}{2022/12/04}{修正\pkgx{algorithm}算法caption格式设置}
% \changes{v3.0.0.0}{2022/12/03}{设置\pkgx{algorithm}算法caption格式}
% \changes{v2.18.0.0}{2022/11/28}{设置\pkgx{algorithm}算法caption对齐方式}
% \changes{v2.17.0.0}{2022/11/28}{设置\pkgx{algorithm}算法caption格式}
% \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}
\DeclareCaptionFont { algcustomfont }
  {
    \@@_rm_family:
    \bool_if:NTF \l_@@_alg_small_cap_bool
      { \zihao { 5  } }
      { \zihao { -4 } }
  }
\captionsetup* [ algorithm ]
  {
    labelsep  = customskip,
    labelfont = algcustomfont,
    font      = algcustomfont
  }
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_alg_cap_format_tl { hang }
      { \captionsetup* [ algorithm ] { format = hang  } }
      { \captionsetup* [ algorithm ] { format = plain } }
    \captionsetup* [ ruled ] { strut = off }
    \tl_if_eq:NnTF \l_@@_alg_cap_align_tl { left }
      {
        \captionsetup* [ algorithm ]
          { singlelinecheck = false, justification = justified }
      }
      {
        \tl_if_eq:NnTF \l_@@_alg_cap_align_tl { centering }
          {
            \captionsetup* [ algorithm ]
              { singlelinecheck = false, justification = centerlast }
          }
          {
            \captionsetup* [ ruled     ] { singlelinecheck = true    }
            \captionsetup* [ algorithm ] { justification = justified }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \changes{v4.4.1.0}{2023/02/06}{修正\pkgx{algorithm}算法三线间距配置}
% \changes{v3.1.0.0}{2022/12/03}{设置\pkgx{algorithm}算法三线间距}
% \begin{macro}{\ctex_at_end_preamble:n}
% 设置\pkgx{algorithm}算法三线间距。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_add_alg_rule_vspace_bool
      {
        \@ifpackageloaded { algorithm }
          {
            \cs_set:Npn \fs@ruled
              {
                \cs_set_eq:NN \@fs@capt \floatc@plain
                \cs_set:Npn   \@fs@pre  { \hrule height .8pt depth 0pt \kern 5pt }
                \cs_set:Npn   \@fs@post { \kern 5pt \hrule \relax                }
                \cs_set:Npn   \@fs@mid  { \kern 5pt \hrule \kern 5pt             }
                \cs_set_eq:NN \@fs@iftopcapt \iftrue
              }
          }
          { }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\SetAlgoCaptionSeparator,\SetAlCapNameFnt,\SetAlCapFnt}
% \changes{v2.18.0.0}{2022/11/29}{设置\pkgx{algorithm2e}算法caption对齐方式}
% \changes{v2.17.0.0}{2022/11/28}{设置\pkgx{algorithm2e}算法caption格式}
% \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
  {
    \@ifpackageloaded { algorithm2e }
      {
        \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}
% 设置\pkgx{algorithm2e}算法caption格式及对齐方式。
%    \begin{macrocode}
        \RenewDocumentCommand { \algocf@makecaption } { mm }
          {
            \box_clear_new:N \l_@@_algiie_capt_box
            \hbox_set:Nn \l_@@_algiie_capt_box
              { \AlCapFnt #1 \algocf@capseparator \AlCapNameFnt #2 }
            \dim_compare:nNnTF { \box_wd:N \l_@@_algiie_capt_box } > { \hsize }
              {
                \tl_if_eq:NnTF \l_@@_alg_cap_format_tl { hang }
                  {
                    \tl_if_eq:NnTF \l_@@_alg_cap_align_tl { centering }
                      {
                        \makebox { \AlCapFnt #1 \algocf@capseparator }
                        \makebox
                          {
                            \parbox [ t ] { \hsize }
                              { \centering \AlCapNameFnt #2 }
                          }
                      }
                      {
                        \makebox { \AlCapFnt #1 \algocf@capseparator }
                        \makebox { \parbox [ t ] { \hsize } { \AlCapNameFnt #2 } }
                      }
                  }
                  {
                    \tl_if_eq:NnTF \l_@@_alg_cap_align_tl { centering }
                      {
                        \parbox { \columnwidth }
                          { \centering \AlCapFnt #1 \algocf@capseparator \AlCapNameFnt #2 }
                      }
                      {
                        \parbox { \columnwidth }
                          { \AlCapFnt #1 \algocf@capseparator \AlCapNameFnt #2 }
                      }
                  }
              }
              {
                \tl_if_eq:NnTF \l_@@_alg_cap_align_tl { left }
                  {
                    \parbox { \columnwidth }
                      { \AlCapFnt #1 \algocf@capseparator \AlCapNameFnt #2 }
                  }
                  {
                    \parbox { \columnwidth }
                      { \centering \AlCapFnt #1 \algocf@capseparator \AlCapNameFnt #2 }
                  }
              }
          }
        \RenewDocumentCommand { \algocf@makecaption@ruled } { mm }
          { \global \sbox \algocf@capbox { \algocf@makecaption { #1 } { #2 } } }
        \RenewDocumentCommand { \algocf@makecaption@boxed } { mm }
          { \global \sbox \algocf@capbox { \algocf@makecaption { #1 } { #2 } } }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \changes{v4.4.1.0}{2023/02/06}{修正\pkgx{algorithm2e}算法三线间距配置}
% \changes{v3.1.0.0}{2022/12/03}{设置\pkgx{algorithm2e}算法三线间距}
% \begin{macro}{\ctex_at_end_preamble:n}
% 设置\pkgx{algorithm2e}算法三线间距。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_add_alg_rule_vspace_bool
      {
        \@ifpackageloaded { algorithm2e }
          {
            \dim_set:Nn \interspacetitleruled { 5pt }
            \dim_set:Nn \interspacealgoruled  { 5pt }
          }
          { }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_tblr_caption_box:n}
% \changes{v2.16.2.0}{2022/11/27}{\envx[]{longtblr}环境整页宽的caption盒子}
% \pkgx[]{tabularray}中\envx{longtblr}环境整页宽的caption盒子。
%    \begin{macrocode}
\cs_new:Npn \@@_tblr_caption_box:n #1
  { \makebox [ \tablewidth ] { \parbox { \columnwidth } { #1 } } }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\SetTblrStyle,\DefTblrTemplate}
% \changes{v5.2.0.0}{2023/02/23}{适配\pkgx{tabularray}宏包caption前后垂直间距}
% \changes{v2.17.0.0}{2022/11/28}{设置\pkgx{tabularray}中\envx{longtblr}环境caption格式}
% \changes{v2.16.3.0}{2022/11/27}{适配不同语言下的\envx{longtblr}环境中标题和尾部的续表文本}
% \changes{v2.16.2.0}{2022/11/27}{修正\envx{longtblr}环境caption宽度}
% \changes{v1.11.0.0}{2022/05/06}{适配\pkgx{tabularray}宏包caption样式}
% 设置\pkgx{tabularray}宏包中表格标签与后面标题之间的间距及caption字体字号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \@ifpackageloaded { tabularray }
      {
        \SetTblrOuter [ tblr, longtblr, talltblr ]
          { presep = \belowcaptionskip + \intextsep, headsep = \abovecaptionskip }
        \SetTblrStyle { head } { font = \@@_rm_family: \zihao { 5 } }
        \DefTblrTemplate { caption-sep } { default }
          { \hskip \l_@@_cap_label_sep_tl }
        \tl_if_eq:NnTF \l_@@_cap_format_tl { hang }
          {
            \DefTblrTemplate { firsthead } { default }
              { \@@_tblr_caption_box:n { \UseTblrTemplate { caption  } { default } } }
            \DefTblrTemplate { middlehead, lasthead } { default }
              { \@@_tblr_caption_box:n { \UseTblrTemplate { capcont  } { default } } }
          }
          {
            \DefTblrTemplate { firsthead } { default }
              { \@@_tblr_caption_box:n { \UseTblrTemplate { caption  } { plain } } }
            \DefTblrTemplate { middlehead, lasthead } { default }
              { \@@_tblr_caption_box:n { \UseTblrTemplate { capcont  } { plain } } }
          }
        \DefTblrTemplate { firstfoot, middlefoot } { default }
          { \@@_tblr_caption_box:n { \UseTblrTemplate { contfoot } { default } } }
        \DefTblrTemplate { lastfoot } { default }
          {
            \@@_tblr_caption_box:n
              {
                \UseTblrTemplate { note   } { default }
                \UseTblrTemplate { remark } { default }
              }
          }
        \DefTblrTemplate { conthead-text } { default }
          { \@@_lang_switch:nn { （续表） } { (Continued) } }
        \DefTblrTemplate { contfoot-text } { default }
          { \@@_lang_switch:nn { 接下页 } { Continued~on~next~page } }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{图片}
% \changes{v6.1.0.0}{2023/03/04}{设置\envx{figure}环境中内容对齐方式}
% \begin{macro}{\@floatboxreset}
% 设置\envx{figure}环境中内容对齐方式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_figure_align_tl { left }
      {
          \AtBeginEnvironment { figure }
            { \g@addto@macro { \@floatboxreset } { \raggedright } }
      }
      {
        \tl_if_eq:NnTF \l_@@_figure_align_tl { centering }
          {
            \AtBeginEnvironment { figure }
              { \g@addto@macro { \@floatboxreset } { \centering } }
          }
          {
            \AtBeginEnvironment { figure }
              { \g@addto@macro { \@floatboxreset } { \raggedleft } }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \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{v4.1.1.0}{2023/01/16}{适配子表样式}
% \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 } ) }
        \cs_set:Npn \thesubtable  { ( \alph { subtable  } ) }
      }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \subsection{表格}
% \changes{v6.1.0.0}{2023/03/04}{设置\envx{table}环境中内容对齐方式}
% \begin{macro}{\@floatboxreset}
% 设置\envx{table}环境中内容对齐方式。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnTF \l_@@_table_align_tl { left }
      {
          \AtBeginEnvironment { table }
            { \g@addto@macro { \@floatboxreset } { \raggedright } }
      }
      {
        \tl_if_eq:NnTF \l_@@_table_align_tl { centering }
          {
            \AtBeginEnvironment { table }
              { \g@addto@macro { \@floatboxreset } { \centering } }
          }
          {
            \AtBeginEnvironment { table }
              { \g@addto@macro { \@floatboxreset } { \raggedleft } }
          }
      }
  }
%    \end{macrocode}
% \end{macro}
% \changes{v6.1.0.0}{2023/03/04}{修改表格字号设置方法}
% \changes{v0.10.0.0}{2022/04/13}{设置表格字号是否为五号}
% \changes{v1.0.2.0}{2022/04/14}{修复表格五号字无法设定浮动位置}
% \begin{macro}{\@floatboxreset}
% 设置表格字号是否为五号。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \bool_if:NT \l_@@_tab_small_bool
      {
        \AtBeginEnvironment { table }
          { \g@addto@macro { \@floatboxreset } { \small } }
      }
  }
%    \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}
%    \begin{macrocode}
%</thesis>
%<*thesis|tp>
%    \end{macrocode}
% \subsection{超链接和PDF元数据}
% \begin{macro}{\hypersetup}
% \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
      {
%<thesis>        pdftitle   = \l_@@_pure_title_tl,
%<xduugtp>        pdfsubject = { 西安电子科技大学本科生毕业论文（设计）开题报告 },
%<xduugtp>        pdfcreator = { XeLaTeX~with~xduugtp~class~in~XDUTS },
%<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}
%    \begin{macrocode}
%</thesis|tp>
%<*thesis>
%    \end{macrocode}
% \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_bool
      {
        \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}
%    \begin{macrocode}
%</thesis>
%<*thesis|tp>
%    \end{macrocode}
% \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}
% \bibtex[]{}和\pkgx{biblatex}通用字体字号配置。
%    \begin{macrocode}
    \cs_set:Npn \bibfont
      {
%<xdupgthesis>        \rmfamily
%<xduugthesis>        \@@_rm_family:
%<thesis>        \zihao { 5 }
%<tp>        \zihao { -4 }
%<xdupgthesis>        \dim_set:Nn \baselineskip { 20pt }
      }
  }
%    \end{macrocode}
%    \begin{macrocode}
%<*xdupgthesis>
%    \end{macrocode}
% \changes{v4.4.4.0}{2023/02/09}{精简研究生学位论文移除参考文献列表宏包调用}
% \changes{v2.12.2.0}{2022/08/15}{修正本科毕业设计参考文献列表编译错误}
% \changes{v2.7.0.0}{2022/06/26}{\bibtex[]{}下允许不生成文献列表}
% \bibtex[]{}下允许不生成文献列表。
%    \begin{macrocode}
\ctex_at_end_preamble:n
  {
    \tl_if_eq:NnT \l_@@_bib_tool_tl { bibtex }
      {
        \bool_if:NT \l_@@_rm_ref_bool
          { \RequirePackage { bibentry } }
      }
  }
%    \end{macrocode}
%    \begin{macrocode}
%</xdupgthesis>
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</thesis|tp>
%<*thesis>
%    \end{macrocode}
% \subsection{附录}
% \begin{macro}{\@@_appendix:}
% 附录环境。
% \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}
\cs_new:Npn \@@_appendix:
  {
    \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 } } }
    \bool_if_exist:NTF \l_@@_rm_appendix_bool
      {
        \bool_if:NF \l_@@_rm_appendix_bool
          {
            \clist_map_inline:Nn \l_@@_appendix_clist
              { \file_if_exist_input:n { ##1 } }
          }
      }
      {
        \clist_map_inline:Nn \l_@@_appendix_clist
          { \file_if_exist_input:n { ##1 } }
      }
  }
%    \end{macrocode}
%    \begin{macrocode}
%</thesis>
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%<*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,\@@_frontmatter:}
% \changes{v1.9.1.0}{2022/05/04}{修正封面元素位置及尺寸}
% 排版前言部分。
%    \begin{macrocode}
\RenewDocumentCommand { \frontmatter } { } { }
\cs_new:Npn \@@_frontmatter:
  {
    \loadgeometry { cover }
    \pagestyle    { empty }
    \dim_set:Nn \parindent { 0pt }
%    \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}
% \changes{v4.4.0.0}{2023/02/03}{本科毕设论文标题中公式字体加粗}
% \changes{v4.3.1.0}{2023/02/03}{修复本科毕设论文标题公式显示}
% 拆分论文标题并排版。
%    \begin{macrocode}
    \clist_new:N \l_@@_title_clist
    \@@_split_title:NV \l_@@_title_clist \l_@@_title_tl
    \tl_set:Nx \l_@@_title_i_tl  { \clist_item:Nn  \l_@@_title_clist { 1 } }
    \tl_set:Nx \l_@@_title_ii_tl { \clist_item:Nn  \l_@@_title_clist { 2 } }
    \@@_cover_iii:nnnn { 题目 } { sf } { 3 } { \@@_bold_math: \l_@@_title_i_tl }
    \tl_if_blank:VF \l_@@_title_ii_tl
      { \@@_cover_iii:nnnn { } { sf } { 3 } { \@@_bold_math: \l_@@_title_ii_tl } }
%    \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{v6.2.1.0}{2025/01/12}{修复本科生毕业设计导师信息录入}
% \changes{v1.15.1.0}{2022/05/21}{使用\csx{group_begin:}和\csx{group_end:}替换分组}
% 校内毕设，排版导师姓名、院内导师姓名。
%    \begin{macrocode}
      {
        \@@_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 }
          }
      }
    \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}
% \changes{v4.4.0.0}{2023/02/03}{本科生毕业设计中文关键词中数学字体加粗}
% 中文关键词，黑体小四号。
%    \begin{macrocode}
    \group_begin:
      \sffamily \@@_bold_math: \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}
% \changes{v6.2.7.0}{2025/04/12}{修改本科生毕业设计英文关键词冒号字符}
% \changes{v4.4.0.0}{2023/02/03}{本科生毕业设计英文关键词中数学字体加粗}
% 英文关键词，Times New Roman字体加粗，小四号。
%    \begin{macrocode}
    \group_begin:
      \rmfamily \zihao { -4 } \bfseries \@@_bold_math: \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_@@_phd,
%     \l_@@_master,
%     \l_@@_ac,
%     \l_@@_pro
%   }
% \changes{v2.18.1.0}{2022/12/01}{移除部分研究生类型布尔变量}
% \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_@@_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 }
      { \bool_set_true:N \l_@@_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{v2.18.1.0}{2022/12/01}{修正专业博士封面和题名页信息}
% \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
      {
        \@@_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
      {
        \@@_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
      {
        \@@_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
          {
            \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{v4.4.0.0}{2023/02/03}{研究生中文题名页标题中数学字体加粗}
% \changes{v1.18.1.0}{2022/05/30}{不拆分研究生中文题名页标题}
% 论文标题。
%    \begin{macrocode}
    \skip_vertical:n { 87.5pt }
    \vbox_to_ht:nn { 150pt }
      {
        \rmfamily \zihao { 2 } \bfseries \@@_bold_math: \centering
        \dim_set:Nn \baselineskip { 30pt }
        \l_@@_title_tl
      }
%    \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
      {
        \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
      {
        \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{v4.4.0.0}{2023/02/03}{研究生英文题名页标题中数学字体加粗}
% \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 \@@_bold_math: \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
          { ~\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
          {
            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{v6.2.5.0}{2025/02/17}{修正声明页字距}
% \changes{v6.2.4.0}{2025/02/05}{修正研究生学位论文关于论文使用授权的说明标题后空行}
% \changes{v6.2.0.0}{2025/01/11}{更新研究生学位论文关于论文使用授权的说明}
% \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 { -8.5pt }
    \vbox_to_ht:nn { 59.5pt }
      {
        \rmfamily \zihao { 4 } \bfseries \centering
        \dim_set:Nn \baselineskip { 20pt }
        西安电子科技大学\\
        学位论文独创性（或创新性）声明
      }
    \vbox_to_ht:nn { 120pt }
      {
        \rmfamily \zihao { -4 }
        \xeCJKsetup { CJKglue = { \hskip 0pt } }
        \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 { 155pt }
      {
        \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 { 160pt }
      {
        \rmfamily \zihao { -4 }
        \xeCJKsetup { CJKglue = { \hskip 0pt } }
        \dim_set:Nn \parindent { 2em }
        \dim_set:Nn \baselineskip { 20pt }
        本人完全了解西安电子科技大学有关保留和使用学位论文的规定，即：研究生在校
        攻读学位期间论文工作的知识产权属于西安电子科技大学。学校有权保留并向国家
        有关部门或机构送交学位论文的复印件和电子版，以学术交流为目的赠送和交换学
        位论文，允许学位论文被查阅、借阅和复印，将学位论文的全部或部分内容编入有
        关数据库进行检索和提供相应阅览服务；允许采用影印、缩印或其它复制手段保存
        学位论文。同时本人保证，结合学位论文研究成果完成的论文、发明专利等成果，
        署名单位为西安电子科技大学。
        \par
        本人保证遵守上述规定。
        \par
        （保密的论文在解密后遵守此规定）
        \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}
% \changes{v6.2.6.0}{2025/03/18}{修正自定义符号对照表字号}
% 是否完全自定义符号对照表。
%    \begin{macrocode}
    \bool_if:NTF \l_@@_customize_los_bool
      {
        \group_begin:
        \zihao { -4 }
        \file_if_exist_input:n { \l_@@_los_str }
        \group_end:
      }
      {
%    \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}
% \changes{v6.2.6.0}{2025/03/18}{修正自定义缩略语对照表字号}
% 是否完全自定义缩略语对照表。
%    \begin{macrocode}
    \bool_if:NTF \l_@@_customize_loa_bool
      {
        \group_begin:
        \zihao { -4 }
        \file_if_exist_input:n { \l_@@_loa_str }
        \group_end:
      }
      {
%    \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{v4.4.0.0}{2023/02/03}{中文目录一级标题数学字体加粗}
% \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: \@@_bold_math: #2 }
      }
      { \phantomsection \addcontentsline { zh.toc } { #1 } { #2 } }
  }
%    \end{macrocode}
% \end{macro}
% \paragraph{重定义\tn{frontmatter}}
% \begin{macro}{\frontmatter,\@@_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}
\RenewDocumentCommand { \frontmatter } { } { }
\cs_new:Npn \@@_frontmatter:
  {
    \loadgeometry { cover }
    \pagestyle    { empty }
    \dim_set:Nn \parindent { 0pt }
    \dim_set:Nn \baselineskip { 20pt }
    \bool_if:NF \l_@@_rm_cover_bool
      {
%    \end{macrocode}
% \changes{v4.4.0.0}{2023/02/03}{研究生封面标题中数学字体加粗}
% \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 \@@_bold_math: \centering
            \dim_set:Nn \baselineskip { 30pt }
            \l_@@_title_tl
          }
%    \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_lof_bool
      { \@@_list_of_figure: }
    \bool_if:NF \l_@@_rm_lot_bool
      { \@@_list_of_table: }
%    \end{macrocode}
% 符号对照表和缩略语对照表。
%    \begin{macrocode}
    \bool_if:NF \l_@@_rm_los_bool
      { \@@_symbols_list: }
    \bool_if:NF \l_@@_rm_loa_bool
      { \@@_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,\@@_mainmatter:}
% \changes{v0.8.0.0}{2022/04/12}{支持对称页边距}
% 排版正文部分。
%    \begin{macrocode}
\RenewDocumentCommand { \mainmatter } { } { }
\cs_new:Npn \@@_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,\@@_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}
\RenewDocumentCommand { \mainmatter } { } { }
\cs_new:Npn \@@_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{v4.2.0.0}{2023/01/28}{修改英文研究生学位论文标题命令参数格式}
% \changes{v1.30.0.0}{2022/06/20}{英文研究生学位论文目录中正文一二三级中英双语标题}
% 英文研究生学位论文目录中正文一二三级中英双语标题。
%    \begin{macrocode}
    \@@_lang_switch:nn { }
      {
        \cs_new_eq:NN \@@_org_chapter:n \chapter
        \RenewDocumentCommand { \chapter } { m o }
          {
            \@@_org_chapter:n { ##1 }
            \@@_add_zh_toc:nn { chapter }
              {
                \numberline { 第 \chinese { chapter } 章 \hspace { .3em } }
                \IfNoValueTF { ##2 } { ##1 } { ##2 }
              }
          }
        \cs_new_eq:NN \@@_org_section:n \section
        \RenewDocumentCommand { \section } { m o }
          {
            \@@_org_section:n { ##1 }
            \@@_add_zh_toc:nn { section }
              { \numberline { \thesection } \IfNoValueTF { ##2 } { ##1 } { ##2 } }
          }
        \cs_new_eq:NN \@@_org_subsection:n \subsection
        \RenewDocumentCommand { \subsection } { m o }
          {
            \@@_org_subsection:n { ##1 }
            \@@_add_zh_toc:nn { subsection }
              { \numberline { \thesubsection } \IfNoValueTF { ##2 } { ##1 } { ##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,\@@_backmatter:}
% 排版后记部分。
%    \begin{macrocode}
\RenewDocumentCommand { \backmatter } { } { }
\cs_new:Npn \@@_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}
% 本科生毕业设计附录。
%    \begin{macrocode}
    \@@_appendix:
  }
%    \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_@@_cust_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_@@_cust_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,\@@_backmatter:}
% 排版后记部分。
%    \begin{macrocode}
\RenewDocumentCommand { \backmatter } { } { }
\cs_new:Npn \@@_backmatter:
  {
%    \end{macrocode}
% 研究生学位论文附录。
%    \begin{macrocode}
    \@@_appendix:
%    \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{v6.2.2.0}{2025/01/05}{修复研究生学位论文致谢二三级标题序号}
% \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 }
          \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 }
            }
          \setcounter { section } { 0 }
          \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}
% \changes{v4.0.1.0}{2022/12/11}{兼容\pkgx{calc}包}
% 配置作者简介部分标题样式。
%    \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 }
            }
%    \end{macrocode}
% \changes{v6.2.2.0}{2025/01/05}{修复研究生学位论文作者简介二三级标题序号}
% \changes{v6.1.3.0}{2023/03/13}{修复研究生学位论文作者简介书签深度}
% \changes{v4.4.3.0}{2023/02/09}{修复研究生学位论文书签深度}
% 作者简介文件。
%    \begin{macrocode}
          \addtocontents { toc } { \protect \setcounter { tocdepth } { 0 } }
          \setcounter { tocdepth } { 0 }
          \setcounter { section } { 0 }
          \file_if_exist_input:n { \l_@@_bio_str }
          \addtocontents { toc } { \protect \setcounter { tocdepth } { 2 } }
          \setcounter { tocdepth } { 2 }
        \group_end:
      }
%    \end{macrocode}
% \changes{v6.1.4.0}{2023/03/13}{修复研究生学位论文尾页缺失}
%    \begin{macrocode}
    \cleardoublepage
  }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xdupgthesis>
%<*thesis>
%    \end{macrocode}
% \subsection{前言、正文和后记部分}
% \changes{v4.0.0.0}{2022/12/11}{本科生毕业设计和研究生学位论文添加前言、正文和后记部分}
% 本科生毕业设计和研究生学位论文添加前言、正文和后记部分。
%    \begin{macrocode}
\ctex_after_end_preamble:n { \@@_frontmatter: \@@_mainmatter: }
\AtEndDocument             { \@@_backmatter:                  }
%    \end{macrocode}
%    \begin{macrocode}
%</thesis>
%<*xduugtp>
%    \end{macrocode}
% \changes{v4.1.0.0}{2022/12/31}{增加本科生毕业设计开题报告}
% \subsection{本科生毕业设计开题报告}
% \begin{macro}{\tcbset}
% 自定义线框样式。
%    \begin{macrocode}
\PassOptionsToPackage { breakable } { tcolorbox }
\RequirePackage       { tcolorbox }
\dim_new:N \l_@@_box_margin_dim
\dim_set:Nn \l_@@_box_margin_dim { 5pt }
\dim_new:N \l_@@_box_rule_dim
\dim_set:Nn \l_@@_box_rule_dim { 0.5pt }
\tcbset
  {
    standard~jigsaw,
    sharp~corners    = all,
    colframe         = black,
    opacityback      = 0,
    boxsep           = 0pt,
    boxrule          = \l_@@_box_rule_dim,
    top              = \l_@@_box_margin_dim,
    bottom           = \l_@@_box_margin_dim,
    left             = \l_@@_box_margin_dim,
    right            = \l_@@_box_margin_dim,
    beforeafter~skip = 0pt,
    before~upper     =
      {
        \dim_set:Nn \parindent    { 2em  }
        \dim_set:Nn \baselineskip { 20pt }
      }
  }
\tcbset
  {
    tpboxi/.style =
      {
        breakable        = true,
        height~fixed~for = first~and~middle
      },
    tpboxii/.style =
      {
        breakable        = true,
        height~fixed~for = all,
        height~fill      = maximum
      },
    tpboxiii/.style =
      {
        height           = .5\textheight + .5\l_@@_box_rule_dim,
        space~to~upper   = true,
        lower~separated  = false,
        halign~lower     = flush~right
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{tpbox}
% 自定义\envx{tpbox}环境，便于实现用户正文输入为空亦可编译。
%    \begin{macrocode}
\RequirePackage { graphicx }
\int_new:N \l_@@_sign_no_int
\int_set:Nn \l_@@_sign_no_int { 1 }
\NewDocumentEnvironment { tpbox } { oo }
  { \IfNoValueF { #1 } { \begin { tcolorbox } [ #1 ] } }
  {
    \IfNoValueF { #1 }
      {
        \IfNoValueF { #2 }
          {
            \tcblower
            签名
            \clist_if_empty:NTF \l_@@_sign_clist
              { \skip_horizontal:n { 6em } \hbox:n { } }
              {
                \skip_horizontal:n { 1em }
                \includegraphics [ width = 10em, height = 25pt, keepaspectratio ]
                  {
                    \str_if_eq:nnTF { #2 } { 指导教师意见 }
                      { \clist_item:Nn \l_@@_sign_clist { 1 } }
                      { \clist_item:Nn \l_@@_sign_clist { 2 } }
                  }
              }
            \\
            \clist_if_empty:NTF \l_@@_date_clist
              { \@@_zh_today: }
              {
                \str_if_eq:nnTF { #2 } { 指导教师意见 }
                  { \clist_item:Nn \l_@@_zh_date_clist { 1 } }
                  { \clist_item:Nn \l_@@_zh_date_clist { 2 } }
              }
          }
        \end { tcolorbox }
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_bib:}
%    \begin{macrocode}
\cs_new:Npn \@@_bib:
  {
    \cs_set:Npn \bibname { 参考文献 }
    \subsection* { \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{macro}{\section}
% 重定义\tnx{section}命令。
%    \begin{macrocode}
\cs_new_eq:NN \@@_org_sec:n \section
\RenewDocumentCommand \section { m }
  {
    \str_case:nnTF { #1 }
      {
        { 论文名称及项目来源 }
          {
            \end   { tpbox }
            \begin { tpbox } [tpboxi]
          }
        { 研究目的和意义 }
          {
            \end   { tpbox }
            \skip_vertical:n { -\l_@@_box_rule_dim }
            \skip_vertical:n { \z@skip }
            \begin { tpbox } [ tpboxii ]
          }
        { 国内外研究现状和发展趋势 }
          {
            \end   { tpbox }
            \begin { tpbox } [ tpboxii ]
          }
        { 主要研究内容、要解决的问题及本文的初步方案 }
          {
            \@@_bib:
            \end   { tpbox }
            \begin { tpbox } [ tpboxii ]
          }
        { 工作的主要阶段、进度和完成时间 }
          {
            \end   { tpbox }
            \begin { tpbox } [ tpboxi ]
          }
        { 已进行的前期准备工作 }
          {
            \end   { tpbox }
            \skip_vertical:n { -\l_@@_box_rule_dim }
            \skip_vertical:n { \z@skip }
            \begin { tpbox } [ tpboxii ]
          }
        { 指导教师意见 }
          {
            \end   { tpbox }
            \begin { tpbox } [ tpboxiii ] [ 指导教师意见 ]
          }
        { 学院审核意见 }
          {
            \end   { tpbox }
            \skip_vertical:n { -\l_@@_box_rule_dim }
            \skip_vertical:n { \z@skip }
            \begin { tpbox } [ tpboxiii ] [ 学院审核意见 ]
          }
      }
      { \@@_org_sec:n { #1 } }
      { }
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\pagestyle}
% 移除页码。
%    \begin{macrocode}
\pagestyle { empty }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ctexset}
% 设置标题样式。
%    \begin{macrocode}
\ctexset
  {
    section       / name       = { ,、   },
    subsection    / name       = { （,） },
    subsubsection / name       = { （,） },
    section       / number     = { \chinese { section       } },
    subsection    / number     = { \chinese { subsection    } },
    subsubsection / number     = { \arabic  { subsubsection } },
    section       / format     = { \raggedright \zihao { -4 } },
    subsection    / format     = { \raggedright \zihao { -4 } },
    subsubsection / format     = { \raggedright \zihao { -4 } },
    section       / aftername  = { },
    subsection    / aftername  = { },
    subsubsection / aftername  = { },
    section       / beforeskip = { 0pt },
    subsection    / beforeskip = { 8pt },
    subsubsection / beforeskip = { 8pt },
    section       / afterskip  = { 0pt },
    subsection    / afterskip  = { 0pt },
    subsubsection / afterskip  = { 0pt },
    section       / indent     = { 0em },
    subsection    / indent     = { 0em },
    subsubsection / indent     = { 2em },
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_uline:n,\@@_uline:nn}
% 下划线。
%    \begin{macrocode}
\RequirePackage { xeCJKfntef }
\cs_new:Npn \@@_uline:n #1
  { \CJKunderline [ thickness = 1pt ] { #1 } }
\cs_new:Npn \@@_uline:nn #1#2
  { \CJKunderline [ thickness = 1pt ] { \hbox_to_wd:nn { #1 } { \hfil #2 \hfil } } }
%    \end{macrocode}
% \end{macro}
% \begin{variable}{\l_@@_cover_author_info_dim}
% 获取封面作者信息最大宽度。
%    \begin{macrocode}
\dim_new:N \l_@@_cover_author_info_dim
\dim_set:Nn \l_@@_cover_author_info_dim { 5em }
\ctex_at_end_preamble:n
  {
    \rmfamily \zihao { -3 }
    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_author_str     }
    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_major_str      }
    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_student_id_str }
    \@@_str_max_dim:Nn \l_@@_cover_author_info_dim { \l_@@_supv_str       }
    \dim_add:Nn \l_@@_cover_author_info_dim { 2em }
  }
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_cover_author_info:nn}
% 绘制封面作者信息。
%    \begin{macrocode}
\cs_new:Npn \@@_cover_author_info:nn #1#2
  {
    \vbox_to_ht:nn { 31pt }
      {
        \mode_leave_vertical:
        \hfil
        \hbox:n
          {
            \rmfamily \zihao { -3 }
            \hbox_to_wd:nn { 4em } { #1 }
            \skip_horizontal:n { 0.5em }
            \@@_uline:nn { \l_@@_cover_author_info_dim } { #2 }
          }
        \hfil
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}{\l_@@_pure_dept_str}
% 移除末尾的学院二字。
%    \begin{macrocode}
\cs_generate_variant:Nn \str_if_eq:nnTF { xnTF }
\ctex_at_end_preamble:n
  {
    \str_new:N \l_@@_pure_dept_str
    \str_if_eq:xnTF { \str_range:Nnn \l_@@_dept_str { -2 } { -1 } } { 学院 }
      { \str_set:Nx \l_@@_pure_dept_str { \str_range:Nnn \l_@@_dept_str { 1 } { -3 } } }
      { \str_set:NV \l_@@_pure_dept_str \l_@@_dept_str }
  }
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_zh_today:}
% 今日年月日。
%    \begin{macrocode}
\cs_new:Npn \@@_zh_today:
  {
    \int_use:N \c_sys_year_int  年
    \int_use:N \c_sys_month_int 月
    \int_use:N \c_sys_day_int   日
  }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_split_submit_date:N}
% 拆分提交日期为年、月和日。
%    \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 } 月
        \clist_item:Nn \l_@@_submit_date_clist { 3 } 日
      }
  }
%    \end{macrocode}
% \end{macro}
% \begin{variable}
%   {
%     \l_@@_zh_date_clist,
%     \l_@@_zh_date_one_clist,
%     \l_@@_date_seq
%   }
% 格式化开题签名日期。
%    \begin{macrocode}
\clist_new:N \l_@@_zh_date_clist
\clist_new:N \l_@@_zh_date_one_clist
\seq_new:N \l_@@_date_seq
\ctex_at_end_preamble:n
  {
    \clist_map_inline:Nn \l_@@_date_clist
      {
        \seq_set_split:Nnn \l_@@_date_seq { - } { #1 }
        \clist_set_from_seq:NN \l_@@_zh_date_one_clist \l_@@_date_seq
        \clist_put_right:Nx \l_@@_zh_date_clist
          {
            \clist_item:Nn \l_@@_zh_date_one_clist { 1 } 年
            \clist_item:Nn \l_@@_zh_date_one_clist { 2 } 月
            \clist_item:Nn \l_@@_zh_date_one_clist { 3 } 日
          }
      }
  }
%    \end{macrocode}
% \end{variable}
% \begin{macro}{\@@_cover:,\ctex_after_end_preamble:n}
% 绘制封面。
%    \begin{macrocode}
\cs_new:Npn \@@_cover:
  {
    \vbox:n { }
    \skip_vertical:n { -5pt }
    \vbox_to_ht:nn { 85pt }
      {
        \rmfamily \zihao { -2 } \centering
        西安电子科技大学 \@@_uline:n { \l_@@_pure_dept_str } 学院
      }
    \vbox_to_ht:nn { 32.5pt }
      {
        \sffamily \zihao { 2 } \centering
        本科生毕业论文（设计）开题报告
      }
    \vbox_to_ht:nn { 171pt }
      {
        \CJKfamily+ { sf } \zihao { -3 } \centering
        （\l_@@_class_str{} 届）
      }
    \@@_cover_author_info:nn { 学生姓名 } { \l_@@_author_str     }
    \@@_cover_author_info:nn { 专业     } { \l_@@_major_str      }
    \@@_cover_author_info:nn { 学号     } { \l_@@_student_id_str }
    \@@_cover_author_info:nn { 指导教师 } { \l_@@_supv_str       }
    \skip_vertical:n { 92pt }
    \vbox_to_ht:nn { 81.5pt }
      {
        \rmfamily \zihao { 4 } \centering
        \@@_zh_submit_date:
      }
    \vbox:n
      {
        \rmfamily \zihao { 5 } \centering
        （本表一式三份，学生、指导教师、学院各一份）
      }
  }
\ctex_after_end_preamble:n { \@@_cover: \clearpage }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\ctex_after_end_preamble:n,\AtEndDocument}
% 实现用户正文为空可编译。
%    \begin{macrocode}
\ctex_after_end_preamble:n { \begin { tpbox } }
\AtEndDocument             { \end   { tpbox } }
%    \end{macrocode}
% \end{macro}
%    \begin{macrocode}
%</xduugtp>
%    \end{macrocode}
%    \begin{macrocode}
%<@@=>
%    \end{macrocode}
% \end{implementation}
% \Finale
