texlive[62872] Master/texmf-dist: nwafuthesis (21mar22)

commits+karl at tug.org commits+karl at tug.org
Mon Mar 21 21:35:25 CET 2022


Revision: 62872
          http://tug.org/svn/texlive?view=revision&revision=62872
Author:   karl
Date:     2022-03-21 21:35:25 +0100 (Mon, 21 Mar 2022)
Log Message:
-----------
nwafuthesis (21mar22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/nwafuthesis/README.md
    trunk/Master/texmf-dist/doc/latex/nwafuthesis/nwafudoc.cls
    trunk/Master/texmf-dist/doc/latex/nwafuthesis/nwafuthesis.pdf
    trunk/Master/texmf-dist/source/latex/nwafuthesis/nwafuthesis.dtx
    trunk/Master/texmf-dist/tex/latex/nwafuthesis/nwafuthesis.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/nwafuthesis/logo/nwafu-bar.pdf

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/latex/nwafuthesis/nwafu-bar.pdf

Modified: trunk/Master/texmf-dist/doc/latex/nwafuthesis/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nwafuthesis/README.md	2022-03-21 20:33:59 UTC (rev 62871)
+++ trunk/Master/texmf-dist/doc/latex/nwafuthesis/README.md	2022-03-21 20:35:25 UTC (rev 62872)
@@ -1,7 +1,7 @@
-The nwafuthesis Class
-LaTeX thesis template for Northwest A&F University, China, v1.01
+## The nwafuthesis Class
+LaTeX thesis template for Northwest A&F University, China, v1.10
 
-Overview
+## Overview
 This template supports doctoral or master dissertion and undergraduate thesis in Chinese. With the help of modern LaTeX3 technology, nwafuthesis aims to create a simple interface, a normative format, as well as a hackable class for the users.
 
 At present, nwafuthesis only supports XeTeX and LuaTEX engines. nwafuthesis only allows UTF-8 encoding.
@@ -10,7 +10,7 @@
 
 Gitee re­pos­i­tory: https://gitee.com/nwafu_nan/nwafuthesis-l3.
 
-Installation
+## Installation
 To install nwafuthesis, you can use one of the following methods:
 
 If you are running TeX Live or MikTeX, the simplest way is to use that distribution's package manager.
@@ -24,10 +24,10 @@
 nwafuthesis.cls
 Do not forget to update the filename database afterwards.
 
-Contributing
+## Contributing
 Issues and pull requests are always welcome.
 
-License
+## License
 This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version.
 
-Copyright (C) 2017–2021 by Nan Geng <nangeng at nwafu.edu.cn>.
+Copyright (C) 2017–2022 by Nan Geng <nangeng at nwafu.edu.cn>.

Added: trunk/Master/texmf-dist/doc/latex/nwafuthesis/logo/nwafu-bar.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/nwafuthesis/logo/nwafu-bar.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nwafuthesis/logo/nwafu-bar.pdf	2022-03-21 20:33:59 UTC (rev 62871)
+++ trunk/Master/texmf-dist/doc/latex/nwafuthesis/logo/nwafu-bar.pdf	2022-03-21 20:35:25 UTC (rev 62872)

Property changes on: trunk/Master/texmf-dist/doc/latex/nwafuthesis/logo/nwafu-bar.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/nwafuthesis/nwafudoc.cls
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nwafuthesis/nwafudoc.cls	2022-03-21 20:33:59 UTC (rev 62871)
+++ trunk/Master/texmf-dist/doc/latex/nwafuthesis/nwafudoc.cls	2022-03-21 20:35:25 UTC (rev 62872)
@@ -31,7 +31,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
-\GetIdInfo $Id: nwafuthesis.dtx 1.01 2021-08-07 Nan Geng <nangeng at nwafu.edu.cn> $
+\GetIdInfo $Id: nwafuthesis.dtx 1.10 2022-03-17 Nan Geng <nangeng at nwafu.edu.cn> $
   {Documentation class for nwafuthesis}
 \ProvidesExplClass{nwafudoc}
   {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}

Modified: trunk/Master/texmf-dist/doc/latex/nwafuthesis/nwafuthesis.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/nwafuthesis/nwafuthesis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/nwafuthesis/nwafuthesis.dtx	2022-03-21 20:33:59 UTC (rev 62871)
+++ trunk/Master/texmf-dist/source/latex/nwafuthesis/nwafuthesis.dtx	2022-03-21 20:35:25 UTC (rev 62872)
@@ -110,7 +110,7 @@
 %<class|doc>\NeedsTeXFormat{LaTeX2e}
 %<class|doc>\RequirePackage{expl3}
 %<*!(driver|install)>
-%<!readme>\GetIdInfo $Id: nwafuthesis.dtx 1.01 2021-08-07 Nan Geng <nangeng at nwafu.edu.cn> $
+%<!readme>\GetIdInfo $Id: nwafuthesis.dtx 1.10 2022-03-17 Nan Geng <nangeng at nwafu.edu.cn> $
 %<class>  {Thesis template for Northwest A\&F University}
 %<class>\ProvidesExplClass{\ExplFileName}
 %<definition>  {Definition file for nwafuthesis}
@@ -143,12 +143,12 @@
   \textbf{\nwafuthesis: 西北农林科技大学学位论文
           \xpinyin[font=\sffamily,format=\color{MaterialIndigo800}]{模}{mu2}板}}}
 \author{耿楠}
-\date{\today\quad v1.01%
+\date{\today\quad v1.10%
   \thanks{\url{https://gitee.com/nwafu_nan/nwafuthesis-l3}.}}
 
 \begin{document}
 %<!--CODEDOC-->  \DisableImplementation
-  \EnableImplementation
+ \EnableImplementation
 %<!--CODEDOC-->  \def\nwafuCODEDOC{}
   \DocInput{nwafuthesis.dtx}
   \DocInput{nwafuthesis-doc.dtx}
@@ -159,6 +159,7 @@
 %</driver>
 % \fi
 %
+% \changes{v1.10}{2022/03/17}{更新实现细节。}
 % \changes{v1.00}{2021/06/06}{开始发布测试。}
 % \changes{v1.00}{2021/05/12}{开始编写模板。}
 %
@@ -245,7 +246,8 @@
 % 建议先阅读相关入门文档,如刘海洋编著的《\LaTeX{} 入门》
 % \scite{刘海洋2013latex入门} 第一章,或大名鼎鼎的“\pkg{lshort}”
 % \scite{lshort} 及其中文翻译版 \scite{lshort-zh-cn}。当然,
-% 网络上诸如耿楠录制的\LaTeX{}教学系列视频等入门教程多如牛毛,可以自行选取学习。
+% 网络上诸如耿楠录制的\LaTeX{}教学系列视频等入门教程多如牛毛,
+% 可以自行选取学习。
 %
 % \subsection*{关于本文档}
 %
@@ -350,7 +352,6 @@
 %     \file{nwafuthesis.cls} & 模板文档类 \\
 %     \file{nwafudoc.cls}    & 编译该用户手册时需要的文档类 \\
 %     \file{nwafuthesis.pdf} & 用户手册 \\
-%     \file{main.tex}        & 空白模板,可以此为基础撰写论文 \\
 %     \bottomrule
 %   \end{tabular}
 % \end{table}
@@ -359,8 +360,10 @@
 %
 % \subsection{基本用法}
 %
-% 在当前工作目录下创建一个名为logo的文件夹,并将学校的\enquote{\texttt{nwafu-bar.pdf}}
-% logo矢量图保存在该文件夹内,然后建立如下一份简单的 \TeX{} 文档,它演示了 \cls{nwafuthesis}
+% 在当前工作目录下创建一个名为logo的文件夹,
+% 并将学校的\enquote{\texttt{nwafu-bar.pdf}}
+% logo矢量图保存在该文件夹内,然后建立如下一份
+% 简单的 \TeX{} 文档,它演示了 \cls{nwafuthesis}
 % 的最基本用法:
 % \begin{latexexample}[deletetexcs={\documentclass},%
 %     moretexcs={\chapter},morekeywords={\documentclass},%
@@ -377,12 +380,11 @@
 % 按照 \ref{subsec:编译方式}~小节中的方式编译该文档,应当得到
 % 一篇包含封面、独创声明等在内的空白论文(研究生7页,本科生3页)。
 %
-%
 % \subsection{编译方式} \label{subsec:编译方式}
 %
 % 本模板不支持 \pdfTeX{} 引擎,请使用 \XeLaTeX{} 或 \LuaLaTeX{}
-% 编译,推荐使用 \XeLaTeX{}编译。为了生成正确的目录、脚注、参考文献以及交叉引用,
-% 至少需要连续编译四次。
+% 编译,推荐使用 \XeLaTeX{}编译。为了生成正确的目录、脚注、参考
+% 文献以及交叉引用,至少需要连续编译4次。
 %
 % 假设\TeX{} 源文件名为 \file{main.tex},使用 \XeLaTeX{} 编译论文。
 % 则在命令行中可以顺序执行:
@@ -434,7 +436,7 @@
 %     type = (*<doctor|master|(bachelor)>*)
 %   \end{nwafusyntax}
 %   选择论文类型。三种选项分别代表博士学位论文、硕士学位论文和本科
-%   毕业论文。
+%   毕业论文(设计)。
 % \end{function}
 %
 % \begin{function}[added=2021-05-12]{oneside,twoside}
@@ -478,7 +480,7 @@
 %   所有选项均可通过统一的\cs{nwafuset}命令进行设置。
 % \end{function}
 %
-% \cs{nwafuset} 的参数是一组由(英文)逗号隔开的选项列表,列表中的
+% \cs{nwafuset} 的参数是一组由(英文)逗号分隔的选项列表,列表中的
 % 选项通常是 \kvopt{\meta{key}}{\meta{value}} 形式。部分选项的
 % \meta{value} 可以省略。对于同一项,后续设置会覆盖以前的设置。
 % 在下文的说明中,将用\textbf{粗体}表示默认值。
@@ -528,7 +530,7 @@
 %     style = (*\marg{键值列表}*)
 %     style/(*\meta{key}*) = (*\meta{value}*)
 %   \end{nwafusyntax}
-%   该选项包含多个子项目,用于设置字体、字号等论文格式,具体内容见下。
+%   该选项包含多个子项目,用于设置字体、字号等论文格式。
 % \end{function}
 %
 % \begin{function}[added=2021-05-12]{style/font}
@@ -781,9 +783,6 @@
 %
 % \subsubsection{信息录入} \label{subsubsec:信息录入}
 %
-% \emph{这一部分代码基于\cls{fduthesis},并针对西北农林科技大学的要求,
-% 进行了必要的删除和添加}。
-%
 % \begin{function}[added=2021-05-12]{info}
 %   \begin{nwafusyntax}[emph={[1]info}]
 %     info = (*\marg{键值列表}*)
@@ -1054,6 +1053,18 @@
 %
 % \subsubsection{凤头}
 %
+% \begin{function}[added=2021-05-29]{\frontmatter,\frontmatter*}
+%   \begin{nwafusyntax}[deletetexcs={\frontmatter,\frontmatter*},
+%                       morekeywords={\frontmatter,\frontmatter*}]
+%     \frontmatter(*\oarg{编号格式|(Roman)}*)
+%     \frontmatter*(*\oarg{编号格式|(Roman)}*)
+%   \end{nwafusyntax}
+%   \cs{frontmatter} 为前言区命令,章标题不编号,
+%   默认页码为从I开始计数的大写罗马数字,也可以指定你页码格式
+%   带有星号的命令 \cs{frontmatter*} 不使用清双页命令 \tn{cleardoublepage}。
+%
+% \end{function}
+%
 % 对于研究生学位论文,该部分包含封面(研究生包括封面一$\sim$七,
 % 本科生包括封面一和封面七)、中英文摘要、主要符号对照表和目录。
 % 在前置部分中,中英文摘要开始至主要符号对照表,页码采用大写罗马字母,并且与目录分开计数。
@@ -1077,8 +1088,8 @@
 % \begin{function}[added=2021-05-29]{\mainmatter,\mainmatter*}
 %   \begin{nwafusyntax}[deletetexcs={\mainmatter,\mainmatter*},
 %                       morekeywords={\mainmatter,\mainmatter*}]
-%     \mainmatter(*\oarg{编号格式|(Roman)}*)
-%     \mainmatter*(*\oarg{编号格式|(Roman)}*)
+%     \mainmatter
+%     \mainmatter*
 %   \end{nwafusyntax}
 %   \cs{mainmatter} 为主文区命令,章标题正常编号,
 %   且页码为从1开始计数的阿拉伯数字,
@@ -1425,8 +1436,6 @@
 %       \item \pkg{footmisc},处理脚注。
 %       \item \pkg{ntheorem},提供增强版的定理类环境。
 %       \item \pkg{graphicx},提供图形插入的接口。
-%       \item \pkg{longtable},长表格(允许跨页)支持。
-%       \item \pkg{booktabs},三线表支持。
 %       \item \pkg{caption},用于设置标题。
 %       \item \pkg{bicaption},用于设置标题。
 %       \item \pkg{xcolor},提供彩色支持。
@@ -1437,7 +1446,8 @@
 %   \item 开启 \kvopt{style/footnote-style}{pifont} 后,会调用
 %     \pkg{pifont} 宏包。它属于 \pkg{psnfss} 套件。
 %   \item \pkg{biblatex} 宏包需要依赖 \biber{} 程序。参考文献样式由
-%     \pkg{biblatex-gb7714-2015} 宏包提供\scite{biblatex,biblatex-gb7714-2015}。
+%     \pkg{biblatex-gb7714-2015} 宏包提供的\texttt{gb7714-NWAFU}样式
+%     文件控制,请注意将其升级到最新版\scite{biblatex,biblatex-gb7714-2015}。
 % \end{itemize}
 %
 % 这里只列出了本模板直接调用的宏包。这些宏包自身的调用情况,
@@ -1635,7 +1645,7 @@
 % 单独一行代码的归属。这些 guard 的颜色深浅不一,用以明确嵌套关系。
 %
 % 另有若干形如 \textcolor{MaterialPink}{\textsf{<@@=nwafu>}} 的 guard,
-% 它们由 \pkg{l3docstrip} 定义,用来标识名字空间(模块)。
+% 它们用来标识名字空间(模块)。
 %
 % \subsection{准备}
 %
@@ -1646,10 +1656,10 @@
 %
 % 检查 \LaTeX3 编程环境。
 %    \begin{macrocode}
-\RequirePackage { xparse, xtemplate, l3keys2e }
-\clist_map_inline:nn { expl3, xparse, xtemplate, l3keys2e }
+\RequirePackage {xtemplate, l3keys2e }
+\clist_map_inline:nn { xtemplate, l3keys2e }
   {
-    \@ifpackagelater {#1} { 2018/05/12 }
+    \@ifpackagelater {#1} { 2020/07/17 }
       { } { \msg_error:nnn { nwafuthesis } { l3-too-old } {#1} }
   }
 \msg_new:nnn { nwafuthesis } { l3-too-old }
@@ -1677,7 +1687,6 @@
     "#1"~ is~ not~ supported~ at~ present.~ You~ must~ change \\
     your~ typesetting~ engine~ to~ "xelatex"~ or~ "lualatex".
   }
-\hook_gset_rule:nnnn { begindocument/before } { nwafuthesis } { < } { xeCJK }
 %    \end{macrocode}
 %
 % \subsubsection{内部变量声明}
@@ -1735,15 +1744,6 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\l_@@_withchap_bool}
-% 是否按章编写论文(默认按章编写)。
-% 该选项是针对部分学院需要按报告形式(类似"1 绪论")撰写本科毕业论文(设计)
-% 而设置的。
-%    \begin{macrocode}
-\bool_new:N \l_@@_withchap_bool
-%    \end{macrocode}
-% \end{variable}
-%
 % \begin{variable}{\g_@@_twoside_bool}
 % 是否开启双页模式(默认打开)。
 % 本模板中,目前使用双页与单页模式的排版结果是一样的,
@@ -1761,10 +1761,18 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{variable}{\l_@@_withchap_bool}
+% 是否按章编写论文(默认按章编写)。
+% 该选项是针对部分学院需要按报告形式(类似``1\ 绪论'')的形式
+% 撰写本科毕业论文(设计)而设置的。
+%    \begin{macrocode}
+\bool_new:N \l_@@_withchap_bool
+%    \end{macrocode}
+% \end{variable}
+%
 % \subsubsection{内部函数}
 %
-% \begin{macro}{\cs_generate_variant:cn,
-%   \file_input:V,
+% \begin{macro}{\file_input:V,
 %   \int_to_arabic:v,
 %   \keys_define:nx,
 %   \tl_map_inline:xn}
@@ -1771,7 +1779,6 @@
 % \begin{macro}[TF]{\tl_if_eq:Vn}
 % \LaTeX3{} 函数的函数变体。
 %    \begin{macrocode}
-\cs_generate_variant:Nn \cs_generate_variant:Nn { cn }
 \cs_generate_variant:Nn \file_input:n           { V  }
 \cs_generate_variant:Nn \int_to_arabic:n        { v  }
 \cs_generate_variant:Nn \keys_define:nn         { nx }
@@ -1825,6 +1832,18 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \changes{v1.10}{2022/03/17}{统一使用 \LaTeX{} 2020/10/01 新钩子机制。}
+%
+% \begin{macro}{\@@_gadd_ltxhook:nn}
+% 封装 \LaTeX{} 的钩子管理机制。本模板中的字体加载命令位于
+% |begindocument/before| 钩子中,需确保在 \pkg{xeCJK} 之前执行。
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_gadd_ltxhook:nn #1#2
+  { \hook_gput_code:nnn {#1} { . } {#2} }
+\hook_gset_rule:nnnn { begindocument/before } { . } { < } { xeCJK }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\@@_patch_cmd:Nnn,\@@_preto_cmd:Nn,\@@_appto_cmd:Nn}
 % 补丁工具,来自 \pkg{ctexpatch} 宏包。
 %    \begin{macrocode}
@@ -1899,6 +1918,7 @@
 \cs_new:Npn \@@_error:nn    { \msg_error:nnn    { nwafuthesis } }
 \cs_new:Npn \@@_error:nx    { \msg_error:nnx    { nwafuthesis } }
 \cs_new:Npn \@@_error:nnn   { \msg_error:nnnn   { nwafuthesis } }
+\cs_new:Npn \@@_error:nnnn  { \msg_error:nnnnn  { nwafuthesis } }
 \cs_new:Npn \@@_warning:n   { \msg_warning:nn   { nwafuthesis } }
 \cs_new:Npn \@@_warning:nn  { \msg_warning:nnn  { nwafuthesis } }
 \cs_new:Npn \@@_warning:nxx { \msg_warning:nnxx { nwafuthesis } }
@@ -1940,7 +1960,7 @@
     twoside .code:n =
       {
 %    \end{macrocode}
-% 将双面设置为openany,从结果来讲与单面一样,
+% 将双面设置为openany(我校特例),从结果来讲与单面一样,
 % 此处是为后续诸如页边距调整为左右不同保留的设置。
 %    \begin{macrocode}
         \clist_gput_right:Nn \g_@@_to_ctexbook_clist { twoside, openany }
@@ -1980,7 +2000,7 @@
 %
 % \subsection{模板参数配置}
 %
-% \subsubsection{定义模板LOGO和中英文年月命令}
+% \subsubsection{定义NWAFU LOGO和中英文年月命令}
 %
 % \begin{macro}{\nwafuthesis}
 % nwafuthesis模板的LOGO。
@@ -1988,7 +2008,8 @@
 \NewDocumentCommand \nwafuthesis { }
   {%
     \makebox{\rmfamily%
-      N\hspace{-0.2ex}\raisebox{-0.5ex}{W}\raisebox{0.5ex}{\hspace{-0.2ex}\textsc{AFU}}\hspace{0.3ex}%
+      N\hspace{-0.2ex}\raisebox{-0.5ex}{W}\raisebox{0.5ex}
+      {\hspace{-0.2ex}\textsc{AFU}}\hspace{0.3ex}%
       \textsc{Thesis}
     }
   }
@@ -2007,18 +2028,18 @@
 % \end{macro}
 %
 % \begin{macro}{\dateen}
-% 取得英文月年,详见:
-% 1  = Jan.(January),
-% 2  = Feb.(February),
-% 3  = Mar.(March),
-% 4  = Apr.(April),
-% 5  = May.(May),
-% 6  = Jun.(June),
-% 7  = Jul.(July),
-% 8  = Aug.(August),
-% 9  = Sept.(September),
-% 10 = Oct.(October),
-% 11 = Nov.(November),
+% 取得英文月年,详见:\\
+% 1  = Jan.(January),\\
+% 2  = Feb.(February),\\
+% 3  = Mar.(March),\\
+% 4  = Apr.(April),\\
+% 5  = May.(May),\\
+% 6  = Jun.(June),\\
+% 7  = Jul.(July),\\
+% 8  = Aug.(August),\\
+% 9  = Sept.(September),\\
+% 10 = Oct.(October),\\
+% 11 = Nov.(November),\\
 % 12 = Dec.(December),
 %    \begin{macrocode}
 \prop_new:N \l_@@_dateen_prop
@@ -2048,7 +2069,7 @@
 % \subsubsection{通用常量}
 %
 % 这一部分内容在原\cls{fduthesis}中,是通过``*.def''文件实现的,
-% 由于针对本校而言这些内容极少发生改变,为了减少文件依赖,将其
+% 由于针对我校而言这些内容极少发生改变,为了减少文件依赖,将其
 % 全部写入了\cls{nwafuthesis.cls}文件。
 %
 % \begin{variable}{\c_@@_name_simp_tl,\c_@@_name_trad_tl,
@@ -2115,40 +2136,46 @@
 % \begin{variable}{\c_@@_orig_decl_text_tl}
 % 论文独创性声明。
 %    \begin{macrocode}
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_define_orig_decl_text:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
-% 研究生独创性声明,注意测试后,此处分段只能用\tn{par}实现。
+% 研究生独创性声明,注意此处分段只能用\tn{par}实现。
 %    \begin{macrocode}
-    \tl_const:Nn \c_@@_orig_decl_text_tl
+        \tl_const:Nn \c_@@_orig_decl_text_tl
+          {
+            本人声明:所呈交的学位论文是我个人在导师指导下独立进行的研究工作及取
+            得的研究结果;论文中的研究数据及结果的获得完全符合学校《关于规范西北
+            农林科技大学研究生学术道德的暂行规定》,如果违反此规定,一切后果与法
+            律责任均由本人承担。\par
+
+            尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经
+            发表或撰写过的研究结果,也不包含其他人和自己本人已获得西北农林科技大
+            学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同事对本
+            研究所做的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
+          }
+      }
       {
-        本人声明:所呈交的学位论文是我个人在导师指导下独立进行的研究工作及取
-        得的研究结果;论文中的研究数据及结果的获得完全符合学校《关于规范西北
-        农林科技大学研究生学术道德的暂行规定》,如果违反此规定,一切后果与法
-        律责任均由本人承担。\par
-        尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经
-        发表或撰写过的研究结果,也不包含其他人和自己本人已获得西北农林科技大
-        学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同事对本
-        研究所做的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
-      }
-  }
-  {
 %    \end{macrocode}
-% 本科生生独创性声明,注意测试后,此处分段只能用\tn{par}实现。
+% 本科生生独创性声明,注意此处分段只能用\tn{par}实现。
 %    \begin{macrocode}
-    \tl_const:Nn \c_@@_orig_decl_text_tl
-      {
-        本人声明:所呈交的毕业
-        \clist_item:Nn \c__@@_bachelor_type_clist { \l__@@_info_bachelor_type_int }
-        是我个人在导师指导下
-        独立进行的研究工作及取得的研究结果。尽我所知,除了文中特别加
-        以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究结果,
-        也不包含其他人和自己本人已获得\c_@@_name_simp_tl{}或其它教育
-        机构的学位或证书而使用过的材料。与我一同工作的同事对本研究所做
-        的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
-        如违反此声明,一切后果与法律责任均由本人承担。
+        \tl_const:Nn \c_@@_orig_decl_text_tl
+          {
+            本人声明:所呈交的毕业
+            \clist_item:Nn \c__@@_bachelor_type_clist
+              { \l__@@_info_bachelor_type_int }
+            是我个人在导师指导下
+            独立进行的研究工作及取得的研究结果。尽我所知,除了文中特别加
+            以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究结果,
+            也不包含其他人和自己本人已获得\c_@@_name_simp_tl{}或其它教育
+            机构的学位或证书而使用过的材料。与我一同工作的同事对本研究所做
+            的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
+            如违反此声明,一切后果与法律责任均由本人承担。
+          }
       }
   }
+\@@_define_orig_decl_text:
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2170,56 +2197,62 @@
 % \begin{variable}{\c_@@_auth_decl_text_tl}
 % 论文使用授权声明。
 %    \begin{macrocode}
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_auth_orig_decl_text:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
-% 研究生使用授权声明,注意测试后,此处分段只能用\tn{par}实现。
+% 研究生使用授权声明,注意此处分段只能用\tn{par}实现。
 %    \begin{macrocode}
-    \tl_const:Nn \c_@@_auth_decl_text_tl
-      {
-        本学位论文的知识产权归属西北农林科技大学。本人同意西北农林科技大学
-        保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和
-        借阅;同意西北农林科技大学将本学位论文的全部或部分内容授权汇编录入
-        中国博士/硕士学位论文全文数据库》和《中国学位论文全文数据库》进行
-        出版,并享受相关权益。\par
+        \tl_const:Nn \c_@@_auth_decl_text_tl
+          {
+            本学位论文的知识产权归属西北农林科技大学。本人同意西北农林科技大学
+            保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和
+            借阅;同意西北农林科技大学将本学位论文的全部或部分内容授权汇编录入
+            中国博士/硕士学位论文全文数据库》和《中国学位论文全文数据库》进行
+            出版,并享受相关权益。\par
 
-        本人保证,在毕业离开(或者工作调离)西北农林科技大学后,发表或者使用本
-        学位论文及其相关的工作成果时,将以西北农林科技大学为第一署名单位,否
-        则,愿意按《中华人民共和国著作权法》等有关规定接受处理并承担法律责任。\par
+            本人保证,在毕业离开(或者工作调离)西北农林科技大学后,发表或者使用本
+            学位论文及其相关的工作成果时,将以西北农林科技大学为第一署名单位,否
+            则,愿意按《中华人民共和国著作权法》等有关规定接受处理并承担法律责任。\par
 
-        任何收存和保管本论文各种版本的其他单位和个人(包括研究生本人)未经本
-        论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、改编等
-        侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》等有关规定处
-        理并追究法律责任。\par
+            任何收存和保管本论文各种版本的其他单位和个人(包括研究生本人)未经本
+            论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、改编等
+            侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》等有关规定处
+            理并追究法律责任。\par
 
-        {\sffamily (保密的学位论文在保密期限内,不得以任何方式发表、借阅、复印、
-            缩印或扫描复制手段保存、汇编论文)}
+            {\sffamily (保密的学位论文在保密期限内,不得以任何方式发表、借阅、复印、
+                缩印或扫描复制手段保存、汇编论文)}
+          }
       }
-  }
-  {
+      {
 %    \end{macrocode}
-% 本科生使用授权声明,注意测试后,此处分段只能用\tn{par}实现。
+% 本科生使用授权声明,注意此处分段只能用\tn{par}实现。
 %    \begin{macrocode}
-    \tl_const:Nn \c_@@_auth_decl_text_tl
-      {
-        本毕业
-        \clist_item:Nn \c__@@_bachelor_type_clist { \l__@@_info_bachelor_type_int }
-        的知识产权归属\c_@@_name_simp_tl{}。
-        本人同意\c_@@_name_simp_tl{}保存或向国家有关部门或机构
-        送交论文的纸质版和电子版,允许论文被查阅和借阅。\par
+        \tl_const:Nn \c_@@_auth_decl_text_tl
+          {
+            本毕业
+            \clist_item:Nn \c__@@_bachelor_type_clist
+              { \l__@@_info_bachelor_type_int }
+            的知识产权归属\c_@@_name_simp_tl{}。
+            本人同意\c_@@_name_simp_tl{}保存或向国家有关部门或机构
+            送交论文的纸质版和电子版,允许论文被查阅和借阅。\par
 
-        本人保证,在毕业离开\c_@@_name_simp_tl{}后,发表或者使用本毕业
-        \clist_item:Nn \c__@@_bachelor_type_clist { \l__@@_info_bachelor_type_int }
-        及其相关的工作成果时,将以\c_@@_name_simp_tl{}
-        为第一署名单位,否则,愿意按《中华人民共和国著作权法》等
-        有关规定接受处理并承担法律责任。\par
+            本人保证,在毕业离开\c_@@_name_simp_tl{}后,发表或者使用本毕业
+            \clist_item:Nn \c__@@_bachelor_type_clist
+              { \l__@@_info_bachelor_type_int }
+            及其相关的工作成果时,将以\c_@@_name_simp_tl{}
+            为第一署名单位,否则,愿意按《中华人民共和国著作权法》等
+            有关规定接受处理并承担法律责任。\par
 
-        任何收存和保管本论文各种版本的其他单位和个人(包括作者本人)未经
-        本论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、
-        改编等侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》
-        等有关规定处理并追究法律责任。
+            任何收存和保管本论文各种版本的其他单位和个人(包括作者本人)未经
+            本论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、
+            改编等侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》
+            等有关规定处理并追究法律责任。
+          }
       }
   }
+\@@_auth_orig_decl_text:
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2227,25 +2260,29 @@
 %   \c_@@_super_decl_sign_tl}
 % 声明页签名项目。
 %    \begin{macrocode}
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_orig_decl_sign:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
 % 研究生。
 %    \begin{macrocode}
-    \tl_const:Nn \c_@@_orig_decl_sign_tl
-      { 研究生签名 }
-    \tl_const:Nn \c_@@_super_decl_sign_tl
-      { 导师签名 }
-  }
-  {
+        \tl_const:Nn \c_@@_orig_decl_sign_tl
+          { 研究生签名 }
+        \tl_const:Nn \c_@@_super_decl_sign_tl
+          { 导师签名 }
+      }
+      {
 %    \end{macrocode}
 % 本科生。
 %    \begin{macrocode}
-    \tl_const:Nn \c_@@_orig_decl_sign_tl
-      { 本科生签名 }
-    \tl_const:Nn \c_@@_super_decl_sign_tl
-      { 指导教师签名 }
+        \tl_const:Nn \c_@@_orig_decl_sign_tl
+          { 本科生签名 }
+        \tl_const:Nn \c_@@_super_decl_sign_tl
+          { 指导教师签名 }
+      }
   }
+\@@_orig_decl_sign:
 \clist_const:Nn \c_@@_auth_decl_sign_clist
   { 作者签名, 导师签名, 日期 }
 %    \end{macrocode}
@@ -2268,7 +2305,7 @@
 % \end{variable}
 %
 % \begin{variable}{\c_@@_secret_clist}
-% 四种密级,公开直接用,未列入。
+% 四种密级,公开无需列入。
 %    \begin{macrocode}
 \clist_const:Nn \c_@@_secret_clist { 限制, 秘密, 机密, 绝密 }
 %    \end{macrocode}
@@ -2301,45 +2338,50 @@
    { pdf_creator       } { LaTeX~ with~ nwafuthesis~ class },
  }
  { \@@_define_name:nn #1 }
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+
+\cs_new_protected:Npn \@@_define_name_const_zh:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %
 %    \end{macrocode}
 % 研究生的字段。
 %    \begin{macrocode}
 %
-    \clist_map_inline:nn
-      {
-        { student_id      } { 研究生学号                       },
-        { orig_decl       } { 研究生学位论文的独创性声明       },
-        { super_decl      } { 导师指导研究生学位论文的承诺     },
-        { auth_decl       } { 关于研究生学位论文使用授权的说明 }
-      }
-      { \@@_define_name:nn #1 }
-   }{
+        \clist_map_inline:nn
+          {
+            { student_id      } { 研究生学号                       },
+            { orig_decl       } { 研究生学位论文的独创性声明       },
+            { super_decl      } { 导师指导研究生学位论文的承诺     },
+            { auth_decl       } { 关于研究生学位论文使用授权的说明 }
+          }
+          { \@@_define_name:nn ##1 }
+       }{
 %
 %    \end{macrocode}
 % 本科生的字段。
 %    \begin{macrocode}
 %
-    \clist_map_inline:nn
-      {
-        { major           } { 专业                           },
-        { student_id      } { 学号                           },
-        { author          } { 学生姓名                       },
-        { cosupervisor    } { 协助指导教师                   },
-        { date            } { 完成日期                       },
-        { orig_decl       } { 本科生毕业\clist_item:Nn
-                              \c__@@_bachelor_type_clist {
-                              \l__@@_info_bachelor_type_int
-                              }的独创性声明                  },
-        { auth_decl       } { 关于本科生毕业\clist_item:Nn
-                              \c__@@_bachelor_type_clist {
-                              \l__@@_info_bachelor_type_int
-                              }知识产权的说明                }
+        \clist_map_inline:nn
+          {
+            { major           } { 专业                           },
+            { student_id      } { 学号                           },
+            { author          } { 学生姓名                       },
+            { cosupervisor    } { 协助指导教师                   },
+            { date            } { 完成日期                       },
+            { orig_decl       } { 本科生毕业\clist_item:Nn
+                                  \c__@@_bachelor_type_clist {
+                                  \l__@@_info_bachelor_type_int
+                                  }的独创性声明                  },
+            { auth_decl       } { 关于本科生毕业\clist_item:Nn
+                                  \c__@@_bachelor_type_clist {
+                                  \l__@@_info_bachelor_type_int
+                                  }知识产权的说明                }
+          }
+          { \@@_define_name:nn ##1 }
       }
-      { \@@_define_name:nn #1 }
   }
+\@@_define_name_const_zh:
 %
 %    \end{macrocode}
 % 研究生与本科生相同的中英文字段。
@@ -2351,45 +2393,49 @@
   }
   { \@@_define_name:nnn #1 }
 %
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_define_name_const_zh_en:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %
 %    \end{macrocode}
 % 研究生。
 %    \begin{macrocode}
 %
-    \clist_map_inline:nn
-      {
-        { major             } { 学科专业       } { Major                },
-        { researchfield     } { 研究方向       } { Research~ Field      },
-        { professionaltype  } { 专业学位类型   } { Degree~ Type         },
-        { professionalfield } { 领域名称       } { Field                },
-        { author            } { 论文作者       } { Candidate            },
-        { cosupervisor      } { 联合指导教师   } { Co-Supervisor        },
-        { date              } { 论文提交时间   } { Date~ of~ Submission },
-        { abstract          } { 摘 \quad 要    } { ABSTRACT             },
-        { keywords          } { 关键字         } { KEYWORDS             },
-        { clc               } { 分类号         } { CLC~ number:         },
-        { notation          } { 主要符号对照表 } { List~ of~ Symbols    }
-      }
-      { \@@_define_name:nnn #1 }
-  }{
+        \clist_map_inline:nn
+          {
+            { major             } { 学科专业       } { Major                },
+            { researchfield     } { 研究方向       } { Research~ Field      },
+            { professionaltype  } { 专业学位类型   } { Degree~ Type         },
+            { professionalfield } { 领域名称       } { Field                },
+            { author            } { 论文作者       } { Candidate            },
+            { cosupervisor      } { 联合指导教师   } { Co-Supervisor        },
+            { date              } { 论文提交时间   } { Date~ of~ Submission },
+            { abstract          } { 摘 \quad 要    } { ABSTRACT             },
+            { keywords          } { 关键字         } { KEYWORDS             },
+            { clc               } { 分类号         } { CLC~ number:         },
+            { notation          } { 主要符号对照表 } { List~ of~ Symbols    }
+          }
+          { \@@_define_name:nnn ##1 }
+      }{
 %
 %    \end{macrocode}
 % 本科生。
 %    \begin{macrocode}
 %
-    \clist_map_inline:nn
-      {
-        { abstract } { 摘要        } { Abstract          },
-        { keywords } { 关键字      } { Keywords          },
-        { clc      } { 分类号      } { CLC~ number       },
+        \clist_map_inline:nn
+          {
+            { abstract } { 摘要        } { Abstract          },
+            { keywords } { 关键字      } { Keywords          },
+            { clc      } { 分类号      } { CLC~ number       },
+          }
+          { \@@_define_name:nnn ##1 }
       }
-      { \@@_define_name:nnn #1 }
   }
+\@@_define_name_const_zh_en:
 %    \end{macrocode}
 %
-% 定理标题中英文名称常量。
+% 定理定理类标题中英文名称常量。
 %    \begin{macrocode}
 %
 \clist_map_inline:nn
@@ -2433,17 +2479,6 @@
   { \PassOptionsToPackage #1 }
 %    \end{macrocode}
 %
-% 本模板会在 \pkg{ctexhook} 提供的钩子 \cs{ctex_at_end_preamble:n}
-% 中调用 \pkg{biblatex},而 \pkg{biblatex} 自身又会使用 \pkg{etoolbox}
-% 的钩子 \tn{AtEndPreamble},因此需要在载入 \cls{ctexbook} 之前调用
-% \pkg{etoolbox}。钩子的顺序为:
-% \[ \text{\tn{CTEX at document@left at hook}}
-%    \prec \text{\tn{@endpreamblehook}}
-%    \prec \text{\texttt{\textbackslash begin\{document\}}}. \]
-%    \begin{macrocode}
-\RequirePackage { etoolbox }
-%    \end{macrocode}
-%
 % 载入 \cls{ctexbook} 文档类。
 % 在使用 \XeLaTeX{} 编译时,\cls{ctexbook} 的底层将调用 \pkg{xeCJK}
 % 宏包;而在使用 \LuaLaTeX{} 编译时,则将调用 \pkg{LuaTeX-ja} 宏包。
@@ -2466,13 +2501,14 @@
     ntheorem,
     enumitem,
     graphicx,
-    longtable,
-    booktabs,
     caption,
+    bicaption,
     xcolor,
   }
 %    \end{macrocode}
 %
+% \changes{v1.10}{2022/03/17}{只检查 \cls{ctexbook} 和 \pkg{xeCJK} 的版本。}
+%
 % \begin{macro}{\@@_check_package:nnn}
 % 检查过时宏包。
 %    \begin{macrocode}
@@ -2479,15 +2515,20 @@
 \cs_new_protected:Npn \@@_check_package:nnn #1#2#3
   {
     \@ifpackagelater {#1} {#2}
-      { } { \@@_error:nnn { package-too-old } {#1} {#3} }
+      { } { \@@_error:nnnn { package-too-old } { Package } {#1} {#3} }
   }
+\cs_new_protected:Npn \@@_check_class:nnn #1#2#3
+  {
+    \@ifclasslater {#1} {#2}
+      { } { \@@_error:nnnn { package-too-old } { Class } {#1} {#3} }
+  }
 \@@_msg_new:nn { package-too-old }
   {
-    Package~ "#1"~ is~ too~ old. \\
-    The~ nwafuthesis~ class~ only~ supports~ "#1"~ with~ a~ version \\
-    higher~ than~ v#2. \\\\
-    Please~ update~ an~ up-to-date~ version~ of~ it~ using~ your \\
-    TeX~ package~ manager~ or~ from~ CTAN.
+    #1~ "#2"~ is~ too~ old. \\
+    The~ nwafuthesis~ class~ only~ supports~ "#2" \\
+    with~ a~ version~ higher~ than~ v#3. \\\\
+    Please~ update~ an~ up-to-date~ version~ of~ it \\
+    using~ your~ TeX~ package~ manager~ or~ from~ CTAN.
   }
 %    \end{macrocode}
 % \end{macro}
@@ -2495,13 +2536,9 @@
 % \changes{v1.01}{2021/08/06}{由于无法获取ctex版本信息,暂时关闭对ctex版本检测。}
 %
 %    \begin{macrocode}
-%\@@_check_package:nnn { ctex         } { 2020/04/30 } { 2.5 }
-\@@_check_package:nnn { fontspec     } { 2017/09/22 } { 2.6e   }
-\@@_check_package:nnn { unicode-math } { 2017/11/18 } { 0.8i   }
+\@@_check_class:nnn { ctexbook } { 2021/03/14 } { 2.5.6 }
 \sys_if_engine_xetex:T
-  { \@@_check_package:nnn { xeCJK          } { 2017/08/07 } { 3.5.0 } }
-\sys_if_engine_luatex:T
-  { \@@_check_package:nnn { xunicode-addon } { 2018/04/30 } { 3.7.1 } }
+  { \@@_check_package:nnn { xeCJK } { 2020/05/01 } { 3.8.3 } }
 %    \end{macrocode}
 %
 % \subsection{页面布局}
@@ -2513,40 +2550,44 @@
 % 研究论文页面尺寸与本科生毕业论文(设计)的
 % 页面尺寸不一致,需要分开设置。
 %    \begin{macrocode}
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_thesis_geometry:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
 % 研究生论文页边距
 %    \begin{macrocode}
-    \geometry
-      {
-        paper=a4paper,
-        top=3.1cm,
-        bottom=3.3cm,
-        left=2.6cm,
-        right=2.6cm,
-        headheight=0.8cm,
-        headsep=0.7cm,
-        footskip=1.4cm,
-        %includehead,
-        %includefoot,
-      }
-  }{
+        \geometry
+          {
+            paper=a4paper,
+            top=3.1cm,
+            bottom=3.3cm,
+            left=2.6cm,
+            right=2.6cm,
+            headheight=0.8cm,
+            headsep=0.7cm,
+            footskip=1.4cm,
+            %includehead,
+            %includefoot,
+          }
+      }{
 %    \end{macrocode}
 % 本科生论文页边距
 %    \begin{macrocode}
-    \geometry
-      {
-        paper=a4paper,
-        top=3.14cm,
-        bottom=3.8cm,
-        left=2.45cm,
-        right=2.45cm,
-        headheight=0.8cm,
-        headsep=0.63cm,
-        footskip=2.3cm,
+        \geometry
+          {
+            paper=a4paper,
+            top=3.14cm,
+            bottom=3.8cm,
+            left=2.45cm,
+            right=2.45cm,
+            headheight=0.8cm,
+            headsep=0.63cm,
+            footskip=2.3cm,
+          }
       }
   }
+\@@_thesis_geometry:
 %    \end{macrocode}
 %
 % 草稿模式下显示页面边框及页眉、页脚线 。
@@ -2581,7 +2622,6 @@
 % \begin{macro}{style/cjk-font}
 % 预定义中文字体。
 %    \begin{macrocode}
-%<*class>
 \keys_define:nn { nwafu / style }
   {
     cjk-font .choices:nn =
@@ -2589,7 +2629,6 @@
       { \tl_set_eq:NN \g_@@_cjk_fontset_tl \l_keys_choice_tl }
   }
 %    \end{macrocode}
-%</class>
 % \end{macro}
 %
 % \begin{macro}{withchapter}
@@ -2632,13 +2671,12 @@
 %   \@@_setCJKmonofont:nn}
 % 用于设置中文字体的辅助函数,来源于 \pkg{xeCJK} 和 \pkg{ctex} 宏包。
 %    \begin{macrocode}
-%<*class>
 \cs_new_protected:Npn \@@_setCJKmainfont:nn #1#2
-  { \@@_set_family:nnn { \CJKrmdefault } {#2} {#1} }
+  { \@@_set_family:xnn { \CJKrmdefault } {#2} {#1} }
 \cs_new_protected:Npn \@@_setCJKsansfont:nn #1#2
-  { \@@_set_family:nnn { \CJKsfdefault } {#2} {#1} }
+  { \@@_set_family:xnn { \CJKsfdefault } {#2} {#1} }
 \cs_new_protected:Npn \@@_setCJKmonofont:nn #1#2
-  { \@@_set_family:nnn { \CJKttdefault } {#2} {#1} }
+  { \@@_set_family:xnn { \CJKttdefault } {#2} {#1} }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2707,7 +2745,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_set_family:nnn,\@@_switch_family:n}
+% \begin{macro}{\@@_set_family:nnn,\@@_set_family:xnn,\@@_switch_family:n}
 % 封装 CJK 字体族的设定和切换命令。
 %    \begin{macrocode}
 \sys_if_engine_xetex:TF
@@ -2719,7 +2757,7 @@
     \cs_new_eq:NN \@@_set_family:nnn  \ctex_ltj_set_family:nnn
     \cs_new_eq:NN \@@_switch_family:n \ctex_ltj_switch_family:n
   }
-%</class>
+\cs_generate_variant:Nn \@@_set_family:nnn { x }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2748,6 +2786,8 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \changes{v1.10}{2022/03/17}{判断 Libertinus Sans Bold Oblique 字体是否存在。}
+%
 % \begin{macro}{
 %   \g_@@_font_family_libertinus_serif_tl,
 %   \g_@@_font_family_libertinus_sans_tl,
@@ -2796,7 +2836,12 @@
     \tl_set:Nn \g_@@_font_style_libertinus_bf_tl     { Bold            }
     \tl_set:Nn \g_@@_font_style_libertinus_it_tl     { Italic          }
     \tl_set:Nn \g_@@_font_style_libertinus_bfit_tl   { BoldItalic      }
-    \tl_set:Nn \g_@@_font_style_libertinus_bfsl_tl   { BoldOblique     }
+%    \end{macrocode}
+% 较新版本中 Libertinus Sans Bold Oblique 字体被移除,需进行额外判断。
+%    \begin{macrocode}
+    \fontspec_font_if_exist:nTF { LibertinusSans-BoldOblique.otf }
+      { \tl_set:Nn \g_@@_font_style_libertinus_bfsl_tl { BoldOblique } }
+      { \tl_set:Nn \g_@@_font_style_libertinus_bfsl_tl { Bold        } }
   }
   {
     \tl_set:Nn \g_@@_font_family_libertinus_serif_tl { libertinusserif }
@@ -3068,12 +3113,7 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_load_cjk_font_founder:
   {
-    \@@_setCJKmainfont:nn   { FZShuSong-Z01 }
-      {
-        UprightFont    = *,
-        BoldFont       = FZHei-B01,
-        ItalicFont     = FZKai-Z03,
-      }
+    \@@_setCJKmainfont:n   { FZShuSong-Z01 }
     \@@_setCJKsansfont:n   { FZHei-B01      }
     \@@_setCJKmonofont:n   { FZFangSong-Z02 }
     \@@_set_cjk_font_hei:n { FZHei-B01      }
@@ -3176,8 +3216,8 @@
 %
 % 探测操作系统,以设置中英文字体。
 %    \begin{macrocode}
+\tl_new:N \l_@@_font_tl
 \tl_new:N \l_@@_cjkfont_tl
-\tl_new:N \l_@@_font_tl
 \cs_new_protected:Npn \@@_detect_platform:
   {
     \sys_if_platform_windows:TF
@@ -3205,17 +3245,15 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_load_font:
   {
-    \tl_if_empty:NTF \g_@@_fontset_tl
+    \tl_if_empty:NT \g_@@_fontset_tl
       {
         \@@_detect_platform:
         \tl_gset_eq:NN \g_@@_fontset_tl \l_@@_font_tl
-      }{
       }
-    \tl_if_empty:NTF \g_@@_cjk_fontset_tl
+    \tl_if_empty:NT \g_@@_cjk_fontset_tl
       {
         \@@_detect_platform:
         \tl_gset_eq:NN \g_@@_cjk_fontset_tl \l_@@_cjkfont_tl
-      }{
       }
     \use:c { @@_load_font_     \g_@@_fontset_tl     : }
     \use:c { @@_load_cjk_font_ \g_@@_cjk_fontset_tl : }
@@ -3271,12 +3309,11 @@
         \RenewDocumentCommand \LARGE        { } { \zihao { -2 } }
         \RenewDocumentCommand \huge         { } { \zihao {  2 } }
         \RenewDocumentCommand \Huge         { } { \zihao {  1 } }
-%<*class>
       },
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsubsection{句号}
+% \subsubsection{其它设置}
 %
 % \begin{macro}{style/fullwidth-stop}
 % 设置句号形状(圆圈或是圆点)。
@@ -3330,14 +3367,26 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_set_fullwidth_stop_catcode:
   {
-    \char_set_active_eq:nN { "3002 } \c_@@_fwid_full_stop_tl
-    \char_set_catcode_active:n { "3002 }
+    \char_set_active_eq:NN ^^^^3002 \c_@@_fwid_full_stop_tl
+    \char_set_catcode_active:N ^^^^3002
+    \clist_map_inline:nn
+      { \c_@@_orig_decl_text_tl, \c_@@_auth_decl_text_tl }
+      { \tl_set_rescan:Nno ##1 { } {##1} }
   }
-%</class>
 %    \end{macrocode}
 % \end{macro}
 %
+% \changes{v1.10}{2022/03/17}{允许 \tn{emph} 对中文生效。}
 %
+% 声明 \tn{emph} 样式序列,使得中文强调以楷体显示。
+%    \begin{macrocode}
+\DeclareEmphSequence
+  {
+    \bfseries,
+    \upshape \CJKfamily { \CJKfamilydefault },
+  }
+%    \end{macrocode}
+%
 % \subsection{页眉页脚}
 %
 % 清除默认页眉页脚格式。
@@ -3359,7 +3408,7 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\cleardoublepage}
-% 重定义 \tn{cleardoublepage},使得偶数页面在没有内容时也不显示页眉页脚,见
+% 重定义 \tn{cleardoublepage},使得偶数页面在没有内容时不显示页眉页脚,见
 % \url{https://tex.stackexchange.com/a/1683}。最后清空中间页眉,确保正文部分
 % 页眉显示正确。
 %    \begin{macrocode}
@@ -3390,9 +3439,9 @@
 \cs_gset_eq:NN \nwafuhead\fancyhead
 \cs_gset_eq:NN \nwafufoot\fancyfoot
 %    \end{macrocode}
-% 重定义 \tn{frontmatter},带星号的命令不会启用\cs{cleardoublepage}。
+% 重定义 \tn{frontmatter},带星号的命令不启用\cs{cleardoublepage}。
 %    \begin{macrocode}
-\RenewDocumentCommand{\frontmatter}{sO{Roman}}
+\RenewDocumentCommand{\frontmatter}{s O{Roman}}
   {
 %    \end{macrocode}
 % 判断是否有*号参数
@@ -3418,8 +3467,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
             \nwafuhead[EC]{\small \nouppercase{
-                \c_@@_name_simp_tl \clist_item:Nn
-                \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                \c_@@_name_simp_tl
+                \clist_item:Nn \c_@@_thesis_type_clist
+                  { \g_@@_thesis_type_int } }
               }
           }{
 %    \end{macrocode}
@@ -3467,8 +3517,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
             \nwafuhead[EC]{\small \nouppercase{
-                \c_@@_name_simp_tl \clist_item:Nn
-                \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                \c_@@_name_simp_tl
+                \clist_item:Nn \c_@@_thesis_type_clist
+                  { \g_@@_thesis_type_int } }
               }
           }{
 %    \end{macrocode}
@@ -3478,7 +3529,7 @@
           }
       }{
 %    \end{macrocode}
-% 单面模式,奇偶页设成一样
+% 单面模式
 %    \begin{macrocode}
         \nwafuhead [ C ]
           {
@@ -3495,8 +3546,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
                     \small \nouppercase{
-                        \c_@@_name_simp_tl \clist_item:Nn
-                        \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                        \c_@@_name_simp_tl
+                        \clist_item:Nn \c_@@_thesis_type_clist
+                          { \g_@@_thesis_type_int } }
                   }{
 %    \end{macrocode}
 % 本科生偶数页页眉
@@ -3547,8 +3599,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
             \nwafuhead[EC]{\small \nouppercase{
-                \c_@@_name_simp_tl \clist_item:Nn
-                \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                \c_@@_name_simp_tl
+                \clist_item:Nn \c_@@_thesis_type_clist
+                  { \g_@@_thesis_type_int } }
               }
           }{
 %    \end{macrocode}
@@ -3575,8 +3628,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
                     \small \nouppercase{
-                        \c_@@_name_simp_tl \clist_item:Nn
-                        \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                        \c_@@_name_simp_tl
+                        \clist_item:Nn \c_@@_thesis_type_clist
+                          { \g_@@_thesis_type_int } }
                   }{
 %    \end{macrocode}
 % 本科生偶数页页眉
@@ -3612,8 +3666,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
             \nwafuhead[EC]{\small \nouppercase{
-                \c_@@_name_simp_tl \clist_item:Nn
-                \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                \c_@@_name_simp_tl
+                \clist_item:Nn \c_@@_thesis_type_clist
+                  { \g_@@_thesis_type_int } }
               }
           }{
 %    \end{macrocode}
@@ -3640,8 +3695,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
                     \small \nouppercase{
-                        \c_@@_name_simp_tl \clist_item:Nn
-                        \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                        \c_@@_name_simp_tl
+                        \clist_item:Nn \c_@@_thesis_type_clist
+                          { \g_@@_thesis_type_int } }
                   }{
 %    \end{macrocode}
 % 本科生偶数页页眉
@@ -3668,8 +3724,9 @@
 % 研究生偶数页页眉
 %    \begin{macrocode}
             \nwafuhead[EC]{\small \nouppercase{
-                \c_@@_name_simp_tl \clist_item:Nn
-                \c_@@_thesis_type_clist { \g_@@_thesis_type_int } }
+                \c_@@_name_simp_tl
+                \clist_item:Nn \c_@@_thesis_type_clist
+                  { \g_@@_thesis_type_int } }
               }
           }{
 %    \end{macrocode}
@@ -3713,7 +3770,7 @@
 %
 % \subsection{章节标题设置}
 %
-% |\keys_set:nn{ctex}| 实际相当于 \cs{ctexset}。
+% |\keys_set:nn{ctex}| 实际相当于调用 \cs{ctexset}。
 %
 % 设置章(chapter)、节(section)与小节(sub-section)标题样式。
 % 此处使用 \kvopt{fixskip}{true} 选项来抑制前后的多余间距。
@@ -3720,102 +3777,105 @@
 %
 % 设置标题级别
 %    \begin{macrocode}
-\int_compare:nNnTF{ \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_ctexset_caption:
   {
+    \int_compare:nNnTF{ \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
 % 研究生
 %    \begin{macrocode}
-    \keys_set:nn { ctex }
-      {
-        secnumdepth = 3,
-        chapter =
+        \keys_set:nn { ctex }
           {
-            pagestyle   = fancy,
-            aftername   = \hspace*{1.0\ccwd},
-            format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
-            beforeskip  = 1.47\baselineskip,
-            afterskip   = 1.24\baselineskip,
-            number      = \@@_arabic:n { chapter },
-            fixskip     = true
-          },
-        section =
-          {
-            format      = \zihao{-3} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 1.09\baselineskip,
-            afterskip   = 0.80\baselineskip,
-            fixskip     = true
-          },
-        subsection =
-          {
-            format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 0.80\baselineskip,
-            fixskip     = true
-          },
-        subsubsection =
-          {
-            format      = \zihao{-4} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 0.40\baselineskip,
-            afterskip   = 0.40\baselineskip,
-            fixskip     = true
+            secnumdepth = 3,
+            chapter =
+              {
+                pagestyle   = fancy,
+                aftername   = \hspace*{1.0\ccwd},
+                format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
+                beforeskip  = 1.47\baselineskip,
+                afterskip   = 1.24\baselineskip,
+                number      = \@@_arabic:n { chapter },
+                fixskip     = true
+              },
+            section =
+              {
+                format      = \zihao{-3} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 1.09\baselineskip,
+                afterskip   = 0.80\baselineskip,
+                fixskip     = true
+              },
+            subsection =
+              {
+                format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 0.80\baselineskip,
+                fixskip     = true
+              },
+            subsubsection =
+              {
+                format      = \zihao{-4} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 0.40\baselineskip,
+                afterskip   = 0.40\baselineskip,
+                fixskip     = true
+              }
           }
-      }
-  }{
+      }{
 %    \end{macrocode}
 % 本科生
 %    \begin{macrocode}
-    \keys_set:nn { ctex }
-      {
-        secnumdepth = 3,
-        chapter =
+        \keys_set:nn { ctex }
           {
-            pagestyle   = fancy,
-            name = { \bool_if:NT \l_@@_withchap_bool {第},
-                     \bool_if:NT \l_@@_withchap_bool {章} },
-            number      = \@@_arabic:n { chapter },
-            aftername   = \hspace*{\ccwd},
-            format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
-            beforeskip  = 0.25\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true
-          },
-        section =
-          {
-            aftername   = \hspace*{0.5\ccwd},
-            format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 0.60\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true,
-            afterindent = true,
-          },
-        subsection =
-          {
-            aftername   = \hspace*{0.5\ccwd},
-            format      = \zihao{-4} \normalfont \nwafu at hei \bfseries,
-            beforeskip  = 0.60\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true,
-            afterindent = true,
-            % indent      = 2\ccwd,
-          },
-        subsubsection =
-          {
-            name        = {(,)},
-            aftername   = \hspace*{0.5\ccwd},
-            number      = \@@_arabic:n { subsubsection },
-            format      = \zihao{-4} \normalfont,
-            beforeskip  = 0.60\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true,
-            % afterindent = true,
-            indent      = 2\ccwd,
+            secnumdepth = 3,
+            chapter =
+              {
+                pagestyle   = fancy,
+                name = { \bool_if:NT \l_@@_withchap_bool {第},
+                         \bool_if:NT \l_@@_withchap_bool {章} },
+                number      = \@@_arabic:n { chapter },
+                aftername   = \hspace*{\ccwd},
+                format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
+                beforeskip  = 0.25\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true
+              },
+            section =
+              {
+                aftername   = \hspace*{0.5\ccwd},
+                format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 0.60\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true,
+                afterindent = true,
+              },
+            subsection =
+              {
+                aftername   = \hspace*{0.5\ccwd},
+                format      = \zihao{-4} \normalfont \nwafu at hei \bfseries,
+                beforeskip  = 0.60\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true,
+                afterindent = true,
+                % indent      = 2\ccwd,
+              },
+            subsubsection =
+              {
+                name        = {(,)},
+                aftername   = \hspace*{0.5\ccwd},
+                number      = \@@_arabic:n { subsubsection },
+                format      = \zihao{-4} \normalfont,
+                beforeskip  = 0.60\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true,
+                % afterindent = true,
+                indent      = 2\ccwd,
+              }
           }
       }
   }
+\@@_ctexset_caption:
 %    \end{macrocode}
 %
-%
 % \begin{macro}{\@@_chapter:n,\@@_chapter:V}
-% 手动生成章的标题,用于摘要、参考文献等。
+% 手动生成章标题,用于摘要、参考文献等。
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_chapter:n #1
   {
@@ -3830,7 +3890,7 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_chapter_no_toc:n,\@@_chapter_no_toc:V}
-% 目录自身不出现在目录中,需特别处理。参考
+% 目录自身不应出现在目录中,需特别处理。参考
 % \url{https://tex.stackexchange.com/a/1821}。
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_chapter_no_toc:n #1
@@ -3844,7 +3904,7 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_chapter_header:n}
-% 单页模式下,目录、摘要、符号表等的页眉中间为相应标题,左右为空。
+% 单面排版模式下,目录、摘要、符号表等的页眉中间为相应标题,左右为空。
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_chapter_header:n #1
   {
@@ -4177,7 +4237,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-%
 % \begin{macro}{\newtheorem}
 % 定义新的定理环境。
 %    \begin{macrocode}
@@ -4194,7 +4253,6 @@
 %    \end{macrocode}
 % 设置默认样式为 \opt{plain}。
 %    \begin{macrocode}
-% TODO: (2017-12-07) Move to interface
     \tl_set:Nn \l_@@_thm_style_tl { plain }
 %    \end{macrocode}
 % 处理可选参数。利用 |nwafu/theorem| 键值对设置,并按此修改证毕符号、
@@ -4778,8 +4836,7 @@
     \dim_set:Nn \l_@@_tmpt_dim {#1}
     \dim_add:Nn \l_@@_tmpt_dim {0.6em}
     \makebox[0cm][l]{\rule[-0.5ex]{\l_@@_tmpt_dim}{0.4 pt}}
-      {\hbox_to_wd:nn {\l_@@_tmpt_dim} { \hfil #2 \hfil }}
-    % \fbox[b]{\parbox {#1} { \centering #2 }}
+    \hbox_to_wd:nn {\l_@@_tmpt_dim} { \hfil #2 \hfil }
   }
 \cs_generate_variant:Nn \@@_center_box:nn  { Vn }
 %    \end{macrocode}
@@ -4894,7 +4951,7 @@
 %    \begin{macrocode}
         \group_begin:
 %    \end{macrocode}
-% 将中图分类号、udc码和密级标记名称存入逗号分隔列表,并计算最宽宽度赋给
+% 将中图分类号、udc码和密级名称常量存入逗号分隔列表,并计算最宽宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
         \clist_clear:N \l_@@_tmpa_clist
@@ -4906,7 +4963,7 @@
           }
         \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
-% 将中图分类号、udc码和密级信息值存入逗号分隔列表,并计算最宽宽度赋给
+% 将中图分类号、udc码和密级变量值存入逗号分隔列表,并计算最宽宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
         \clist_set:Nx \l_@@_tmpb_clist
@@ -4928,7 +4985,7 @@
           }
         \@@_get_max_text_width:NN \l_@@_tmpc_dim \l_@@_tmpc_clist
 %    \end{macrocode}
-% 将学校代码、研究生学号信息值存入逗号分隔列表,并计算最宽宽度赋给
+% 将学校代码、研究生学号变量值存入逗号分隔列表,并计算最宽宽度赋给
 % \cs{l_@@_tmpd_dim}。
 %    \begin{macrocode}
         \clist_set:Nx \l_@@_tmpd_clist
@@ -5061,7 +5118,7 @@
     \begin{minipage} [ c ] { \textwidth }
       \centering
 %    \end{macrocode}
-% 根据论文类型(博士、硕士、本科)分支输出不同信息
+% 根据论文类型(博士、硕士、本科)输出不同信息
 %    \begin{macrocode}
       \int_case:nn {\g_@@_thesis_type_int}
         {
@@ -5070,21 +5127,21 @@
 %    \begin{macrocode}
           {1}{
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识常量,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
             \clist_set:Nx \l_@@_tmpa_clist
               {
-                \c_@@_name_major_tl,
-                \c_@@_name_researchfield_tl,
-                \c_@@_name_author_tl,
-                \c_@@_name_supervisor_tl,
-                \c_@@_name_cosupervisor_tl,
-                \c_@@_name_date_tl,
+                { \c_@@_name_major_tl         },
+                { \c_@@_name_researchfield_tl },
+                { \c_@@_name_author_tl        },
+                { \c_@@_name_supervisor_tl    },
+                { \c_@@_name_cosupervisor_tl  },
+                { \c_@@_name_date_tl          }
               }
             \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
             \clist_set:Nx \l_@@_tmpb_clist
@@ -5109,21 +5166,21 @@
 %    \begin{macrocode}
               {1}{
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识常量,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
                 \clist_set:Nx \l_@@_tmpa_clist
                   {
-                    \c_@@_name_major_tl,
-                    \c_@@_name_researchfield_tl,
-                    \c_@@_name_author_tl,
-                    \c_@@_name_supervisor_tl,
-                    \c_@@_name_cosupervisor_tl,
-                    \c_@@_name_date_tl,
+                    { \c_@@_name_major_tl         },
+                    { \c_@@_name_researchfield_tl },
+                    { \c_@@_name_author_tl        },
+                    { \c_@@_name_supervisor_tl    },
+                    { \c_@@_name_cosupervisor_tl  },
+                    { \c_@@_name_date_tl,         }
                   }
                 \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
                 \clist_set:Nx \l_@@_tmpb_clist
@@ -5142,21 +5199,21 @@
 %    \begin{macrocode}
               {2}{
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识常量,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
                 \clist_set:Nx \l_@@_tmpa_clist
                   {
-                    \c_@@_name_professionaltype_tl,
-                    \c_@@_name_professionalfield_tl,
-                    \c_@@_name_author_tl,
-                    \c_@@_name_supervisor_tl,
-                    \c_@@_name_cosupervisor_tl,
-                    \c_@@_name_date_tl,
+                    { \c_@@_name_professionaltype_tl  },
+                    { \c_@@_name_professionalfield_tl },
+                    { \c_@@_name_author_tl            },
+                    { \c_@@_name_supervisor_tl        },
+                    { \c_@@_name_cosupervisor_tl      },
+                    { \c_@@_name_date_tl              }
                   }
                 \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
                 \clist_set:Nx \l_@@_tmpb_clist
@@ -5177,22 +5234,22 @@
 %    \begin{macrocode}
           {3}{
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识常量,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
             \clist_set:Nx \l_@@_tmpa_clist
               {
-                \c_@@_name_department_tl,
-                \c_@@_name_major_tl,
-                \c_@@_name_enroll_tl\c_@@_name_class_id_tl,
-                \c_@@_name_author_tl,
-                \c_@@_name_supervisor_tl,
-                \c_@@_name_cosupervisor_tl,
-                \c_@@_name_date_tl,
+                { \c_@@_name_department_tl                   },
+                { \c_@@_name_major_tl                        },
+                { \c_@@_name_enroll_tl\c_@@_name_class_id_tl },
+                { \c_@@_name_author_tl                       },
+                { \c_@@_name_supervisor_tl                   },
+                { \c_@@_name_cosupervisor_tl                 },
+                { \c_@@_name_date_tl                         }
               }
             \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
             \clist_set:Nx \l_@@_tmpb_clist
@@ -5240,12 +5297,12 @@
 %    \begin{macrocode}
           \clist_set:Nx \l_@@_tmpa_clist
             {
-              {\c_@@_name_major_en_tl{\l_@@_info_major_en_tl}},
-              {\c_@@_name_researchfield_en_tl{\l_@@_info_researchfield_en_tl}},
-              {\c_@@_name_author_en_tl{\l_@@_info_author_en_tl}},
-              {\c_@@_name_supervisor_en_tl{\l_@@_info_supervisor_en_tl}},
-              {\c_@@_name_cosupervisor_en_tl{\l_@@_info_cosupervisor_en_tl}},
-              {\c_@@_name_date_en_tl{\l_@@_info_date_en_tl}},
+              {\c_@@_name_major_en_tl{\l_@@_info_major_en_tl}                 },
+              {\c_@@_name_researchfield_en_tl{\l_@@_info_researchfield_en_tl} },
+              {\c_@@_name_author_en_tl{\l_@@_info_author_en_tl}               },
+              {\c_@@_name_supervisor_en_tl{\l_@@_info_supervisor_en_tl}       },
+              {\c_@@_name_cosupervisor_en_tl{\l_@@_info_cosupervisor_en_tl}   },
+              {\c_@@_name_date_en_tl{\l_@@_info_date_en_tl}                   }
             }
           \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
@@ -5255,20 +5312,20 @@
           \begin{minipage} [ c ] { \l_@@_tmpa_dim }
             \flushleft
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
             \clist_set:Nx \l_@@_tmpa_clist
               {
-                \c_@@_name_major_en_tl,
-                \c_@@_name_researchfield_en_tl,
-                \c_@@_name_author_en_tl,
-                \c_@@_name_supervisor_en_tl,
-                \c_@@_name_cosupervisor_en_tl,
-                \c_@@_name_date_en_tl,
+                { \c_@@_name_major_en_tl         },
+                { \c_@@_name_researchfield_en_tl },
+                { \c_@@_name_author_en_tl        },
+                { \c_@@_name_supervisor_en_tl    },
+                { \c_@@_name_cosupervisor_en_tl  },
+                { \c_@@_name_date_en_tl          }
               }
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
             \clist_set:Nx \l_@@_tmpb_clist
@@ -5309,12 +5366,12 @@
 %    \begin{macrocode}
                 \clist_set:Nx \l_@@_tmpa_clist
                   {
-                    {\c_@@_name_major_en_tl{\l_@@_info_major_en_tl}},
-                    {\c_@@_name_researchfield_en_tl{\l_@@_info_researchfield_en_tl}},
-                    {\c_@@_name_author_en_tl{\l_@@_info_author_en_tl}},
-                    {\c_@@_name_supervisor_en_tl{\l_@@_info_supervisor_en_tl}},
-                    {\c_@@_name_cosupervisor_en_tl{\l_@@_info_cosupervisor_en_tl}},
-                    {\c_@@_name_date_en_tl{\l_@@_info_date_en_tl}},
+                    {\c_@@_name_major_en_tl{\l_@@_info_major_en_tl}                 },
+                    {\c_@@_name_researchfield_en_tl{\l_@@_info_researchfield_en_tl} },
+                    {\c_@@_name_author_en_tl{\l_@@_info_author_en_tl}               },
+                    {\c_@@_name_supervisor_en_tl{\l_@@_info_supervisor_en_tl}       },
+                    {\c_@@_name_cosupervisor_en_tl{\l_@@_info_cosupervisor_en_tl}   },
+                    {\c_@@_name_date_en_tl{\l_@@_info_date_en_tl}                   }
                   }
                 \@@_get_max_text_width:NN \l_@@_tmpa_dim \l_@@_tmpa_clist
 %    \end{macrocode}
@@ -5324,20 +5381,20 @@
                 \begin{minipage} [ c ] { \l_@@_tmpa_dim }
                   \flushleft
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识常量,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
                   \clist_set:Nx \l_@@_tmpa_clist
                      {
-                       \c_@@_name_major_en_tl,
-                       \c_@@_name_researchfield_en_tl,
-                       \c_@@_name_author_en_tl,
-                       \c_@@_name_supervisor_en_tl,
-                       \c_@@_name_cosupervisor_en_tl,
-                       \c_@@_name_date_en_tl,
+                       { \c_@@_name_major_en_tl         },
+                       { \c_@@_name_researchfield_en_tl },
+                       { \c_@@_name_author_en_tl        },
+                       { \c_@@_name_supervisor_en_tl    },
+                       { \c_@@_name_cosupervisor_en_tl  },
+                       { \c_@@_name_date_en_tl          }
                      }
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
                   \clist_set:Nx \l_@@_tmpb_clist
@@ -5389,20 +5446,20 @@
                 \begin{minipage} [ c ] { \l_@@_tmpa_dim }
                   \flushleft
 %    \end{macrocode}
-% 读取左侧作者信息标识名称字段,并将最宽者的宽度赋给
+% 读取作者信息标识常量,并将最宽者的宽度赋给
 % \cs{l_@@_tmpa_dim}。
 %    \begin{macrocode}
                   \clist_set:Nx \l_@@_tmpa_clist
                      {
-                       \c_@@_name_professionaltype_en_tl,
-                       \c_@@_name_professionalfield_en_tl,
-                       \c_@@_name_author_en_tl,
-                       \c_@@_name_supervisor_en_tl,
-                       \c_@@_name_cosupervisor_en_tl,
-                       \c_@@_name_date_en_tl,
+                       { \c_@@_name_professionaltype_en_tl  },
+                       { \c_@@_name_professionalfield_en_tl },
+                       { \c_@@_name_author_en_tl            },
+                       { \c_@@_name_supervisor_en_tl        },
+                       { \c_@@_name_cosupervisor_en_tl      },
+                       { \c_@@_name_date_en_tl              }
                      }
 %    \end{macrocode}
-% 读取右侧作者信息各栏字段,并将最宽者的宽度赋给
+% 读取作者信息变量值,并将最宽者的宽度赋给
 % \cs{l_@@_tmpb_dim}。
 %    \begin{macrocode}
                   \clist_set:Nx \l_@@_tmpb_clist
@@ -5449,7 +5506,7 @@
 %    \begin{macrocode}
         {1}{
 %    \end{macrocode}
-% 作者、导师、指导小组标识,并取得最宽宽度。
+% 作者、导师、指导小组标识常量,并取得最宽宽度。
 %    \begin{macrocode}
           \clist_set:Nx \l_@@_tmpa_clist
             {
@@ -5463,7 +5520,7 @@
 %    \begin{macrocode}
           \tl_set:Nn \l_@@_tmpa_tl {\clist_use:Nn \l_@@_info_instructors_clist {\@@_quad: }}
 %    \end{macrocode}
-% 作者、导师、指导小组信息,并取得最宽宽度。
+% 作者、导师、指导小组信息变量值,并取得最宽宽度。
 %    \begin{macrocode}
           \clist_set:Nx \l_@@_tmpb_clist
             {
@@ -5909,7 +5966,7 @@
 %
 % \begin{macro}{\makecoveri,\makecoverii,\makecoveriii,
 %     \makecoveriv,\makecoverv,\makecovervi,\makecovervii}
-% 封面一~七,其中一~六为研究生使用,一和七为本科生使用。
+% 封面一$\sim$七,其中一$\sim$六为研究生使用,一和七为本科生使用。
 %    \begin{macrocode}
 % 封面一,研究生、本科生中文封面
 \NewDocumentCommand \makecoveri { }
@@ -5989,20 +6046,24 @@
 %
 % 声明各封面模板组成部分。
 %    \begin{macrocode}
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_declare_cover_i_template:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
 % 研究生封面一
 %    \begin{macrocode}
-    \DeclareCoverTemplate { cover-i   }
-      { logo, type, title, info }
-  }{
+        \DeclareCoverTemplate { cover-i   }
+          { logo, type, title, info }
+      }{
 %    \end{macrocode}
 % 本科生封面一
 %    \begin{macrocode}
-    \DeclareCoverTemplate { cover-i   }
-      { id, logo, type, title, info }
+        \DeclareCoverTemplate { cover-i   }
+          { id, logo, type, title, info }
+      }
   }
+\@@_declare_cover_i_template:
 %    \end{macrocode}
 % 研究生封面二
 %    \begin{macrocode}
@@ -6059,144 +6120,152 @@
 % 定义封面的具体配置参数。
 % 封面一
 %    \begin{macrocode}
-\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \@@_define_cover_i_entities:
   {
+    \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
+      {
 %    \end{macrocode}
 % 研究生
 %    \begin{macrocode}
-    \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
-      {
-        bottom-skip            = 0 pt plus 1.5 fill,
-        logo     / content     = \@@_cover_logo:,
-        logo     / bottom-skip = -45 pt plus 0.3 fill,
-        logo     / align       = center,
-        type     / content     = \@@_cover_type:,
-        type     / format      = \sffamily \zihao {  0 },% \bfseries,
-        type     / bottom-skip = -20 pt plus 0.3 fill,
-        type     / align       = center,
-        title    / content     =
-          \@@_fixed_width_center_box:nn
-            { 0.9 \textwidth } { \l_@@_info_title_tl },
-        title    / format      = \nwafu at hei \bfseries \zihao { 2 },
-        title    / bottom-skip = 80 pt plus 0.3 fill,
-        title    / align       = center,
-        info     / content     = \@@_cover_info:,
-        info     / format      = \@@_line_spread:n {1.05}\nwafu at hei \zihao { -3 },
-        info     / align       = center,
-      }
-  }{
+        \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
+          {
+            bottom-skip            = 0 pt plus 1.5 fill,
+            logo     / content     = \@@_cover_logo:,
+            logo     / bottom-skip = -45 pt plus 0.3 fill,
+            logo     / align       = center,
+            type     / content     = \@@_cover_type:,
+            type     / format      = \sffamily \zihao {  0 },% \bfseries,
+            type     / bottom-skip = -20 pt plus 0.3 fill,
+            type     / align       = center,
+            title    / content     =
+              \@@_fixed_width_center_box:nn
+                { 0.9 \textwidth } { \l_@@_info_title_tl },
+            title    / format      = \nwafu at hei \bfseries \zihao { 2 },
+            title    / bottom-skip = 80 pt plus 0.3 fill,
+            title    / align       = center,
+            info     / content     = \@@_cover_info:,
+            info     / format      = \@@_line_spread:n {1.05}\nwafu at hei \zihao { -3 },
+            info     / align       = center,
+          }
+      }{
 %    \end{macrocode}
 % 本科生
 %    \begin{macrocode}
-    \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
-      {
-        bottom-skip            = 0 pt plus 0.5 fill,
-        id       / content     = \@@_cover_id:,
-        id       / format      = \bfseries\zihao { 4 },
-        id       / bottom-skip = 0 pt plus 0.3 fill,
-        id       / align       = right,
-        logo     / content     = \@@_cover_logo:,
-        logo     / bottom-skip = -30 pt,% plus 0.3 fill,
-        logo     / align       = center,
-        type     / content     = \@@_cover_type:,
-        type     / format      = \bfseries\nwafu at kai\zihao {  1 },
-        type     / bottom-skip = -20 pt plus 0.3 fill,
-        type     / align       = center,
-        title    / content     =
-          \@@_fixed_width_center_box:nn
-            { 0.9 \textwidth } { \l_@@_info_title_tl },
-        title    / format      = \nwafu at hei \bfseries\zihao { 2 },
-        title    / bottom-skip = 80 pt plus 0.3 fill,
-        title    / align       = center,
-        info     / content     = \@@_cover_info:,
-        info     / format      = \rmfamily\zihao { 3 },
-        info     / align       = center,
+        \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
+          {
+            bottom-skip            = 0 pt plus 0.5 fill,
+            id       / content     = \@@_cover_id:,
+            id       / format      = \bfseries\zihao { 4 },
+            id       / bottom-skip = 0 pt plus 0.3 fill,
+            id       / align       = right,
+            logo     / content     = \@@_cover_logo:,
+            logo     / bottom-skip = -30 pt,% plus 0.3 fill,
+            logo     / align       = center,
+            type     / content     = \@@_cover_type:,
+            type     / format      = \bfseries\nwafu at kai\zihao {  1 },
+            type     / bottom-skip = -20 pt plus 0.3 fill,
+            type     / align       = center,
+            title    / content     =
+              \@@_fixed_width_center_box:nn
+                { 0.9 \textwidth } { \l_@@_info_title_tl },
+            title    / format      = \nwafu at hei \bfseries\zihao { 2 },
+            title    / bottom-skip = 80 pt plus 0.3 fill,
+            title    / align       = center,
+            info     / content     = \@@_cover_info:,
+            info     / format      = \rmfamily\zihao { 3 },
+            info     / align       = center,
+          }
       }
   }
+\@@_define_cover_i_entities:
 %    \end{macrocode}
 % 封面二
 %    \begin{macrocode}
-\int_case:nn {\g_@@_thesis_type_int}
+\cs_new_protected:Npn \@@_define_cover_ii_entities:
   {
-    {1}{
+    \int_case:nn {\g_@@_thesis_type_int}
+      {
+        {1}{
 %    \end{macrocode}
 % 博士研究生
 %    \begin{macrocode}
-         \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
-           {
-             bottom-skip            = 0 pt plus 0.5 fill,
-             type     / content =
-               \@@_fixed_width_center_box:nn { 0.7\textwidth } {
-                  Thesis~Submitted~to~\c_@@_name_en_tl\\
-                  in~Partial~Fulfillment~of~the~Requirements\\
-                  for~Degree~of\\
-                  Doctor~of~Philosophy
-              },
-             type     / format  = \@@_line_spread:n {1.22} \zihao { -3 },
-             type     / bottom-skip = 42 pt,% plus 0.3 fill,
-             type     / align   = center,
-             title     / content = \l_@@_info_title_en_tl,
-             title     / format  = \@@_line_spread:n {0.90}
-                                   \zihao { 1 } \bfseries,
-             title     / bottom-skip = 35 pt,% plus 0.3 fill,
-             title     / align   = center,
-             info     / content     = \@@_cover_info_en:,
-             info     / format      = \@@_line_spread:n {1.12} \zihao { -3 },
-             info    / bottom-skip = 72 pt,% plus 0.3 fill,
-             info     / align       = center,
-             department     / content     = \l_@@_info_department_en_tl,
-             department     / format      = \zihao { -3 },
-             department     / bottom-skip = -32 pt,% plus 0.3 fill,
-             department     / align       = center,
-             nwafu     / content     = \c_@@_name_en_tl,
-             nwafu     / format      = \zihao { -3 },
-             nwafu     / align       = center,
-           }
-    }
-    {2}{
+             \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
+               {
+                 bottom-skip            = 0 pt plus 0.5 fill,
+                 type     / content =
+                   \@@_fixed_width_center_box:nn { 0.7\textwidth } {
+                      Thesis~Submitted~to~\c_@@_name_en_tl\\
+                      in~Partial~Fulfillment~of~the~Requirements\\
+                      for~Degree~of\\
+                      Doctor~of~Philosophy
+                  },
+                 type     / format  = \@@_line_spread:n {1.22} \zihao { -3 },
+                 type     / bottom-skip = 42 pt,% plus 0.3 fill,
+                 type     / align   = center,
+                 title     / content = \l_@@_info_title_en_tl,
+                 title     / format  = \@@_line_spread:n {0.90}
+                                       \zihao { 1 } \bfseries,
+                 title     / bottom-skip = 35 pt,% plus 0.3 fill,
+                 title     / align   = center,
+                 info     / content     = \@@_cover_info_en:,
+                 info     / format      = \@@_line_spread:n {1.12} \zihao { -3 },
+                 info    / bottom-skip = 72 pt,% plus 0.3 fill,
+                 info     / align       = center,
+                 department     / content     = \l_@@_info_department_en_tl,
+                 department     / format      = \zihao { -3 },
+                 department     / bottom-skip = -32 pt,% plus 0.3 fill,
+                 department     / align       = center,
+                 nwafu     / content     = \c_@@_name_en_tl,
+                 nwafu     / format      = \zihao { -3 },
+                 nwafu     / align       = center,
+               }
+        }
+        {2}{
 %    \end{macrocode}
 % 硕士研究生
 %    \begin{macrocode}
-         \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
-           {
-             bottom-skip            = 0 pt plus 0.5 fill,
-             type     / content =
-               \@@_fixed_width_center_box:nn { 0.7\textwidth } {
-                  Thesis~Submitted~to~\c_@@_name_en_tl\\
-                  in~Partial~Fulfillment~of~the~Requirements\\
-                  for~Degree~of\\
-                  Master~of
-                 \int_case:nn {\l_@@_info_degree_type_int}
-                  {
-                    {1}{
-                      \@@_text_uline:V \l_@@_info_mastertype_en_tl
-                    }
-                    {2}{
-                      \@@_text_uline:V \l_@@_info_professionaltype_en_tl
-                    }
-                  }
-               },
-             type     / format  = \@@_line_spread:n {1.22} \zihao { -3 },
-             type     / bottom-skip = 42 pt,% plus 0.3 fill,
-             type     / align   = center,
-             title     / content = \l_@@_info_title_en_tl,
-             title     / format  = \@@_line_spread:n {0.90} \zihao { 1 } \bfseries,
-             title     / bottom-skip = 35 pt,% plus 0.3 fill,
-             title     / align   = center,
-             info     / content     = \@@_cover_info_en:,
-             info     / format      = \@@_line_spread:n {1.12} \zihao { -3 },
-             info    / bottom-skip = 72 pt,% plus 0.3 fill,
-             info     / align       = center,
-             department     / content     = \l_@@_info_department_en_tl,
-             department     / format      = \zihao { -3 },
-             department     / bottom-skip = -32 pt,% plus 0.3 fill,
-             department     / align       = center,
-             nwafu     / content     = \c_@@_name_en_tl,
-             nwafu     / format      = \zihao { -3 },
-             nwafu     / align       = center,
-           }
-    }
+             \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
+               {
+                 bottom-skip            = 0 pt plus 0.5 fill,
+                 type     / content =
+                   \@@_fixed_width_center_box:nn { 0.7\textwidth } {
+                      Thesis~Submitted~to~\c_@@_name_en_tl\\
+                      in~Partial~Fulfillment~of~the~Requirements\\
+                      for~Degree~of\\
+                      Master~of
+                     \int_case:nn {\l_@@_info_degree_type_int}
+                      {
+                        {1}{
+                          \@@_text_uline:V \l_@@_info_mastertype_en_tl
+                        }
+                        {2}{
+                          \@@_text_uline:V \l_@@_info_professionaltype_en_tl
+                        }
+                      }
+                   },
+                 type     / format  = \@@_line_spread:n {1.22} \zihao { -3 },
+                 type     / bottom-skip = 42 pt,% plus 0.3 fill,
+                 type     / align   = center,
+                 title     / content = \l_@@_info_title_en_tl,
+                 title     / format  = \@@_line_spread:n {0.90} \zihao { 1 } \bfseries,
+                 title     / bottom-skip = 35 pt,% plus 0.3 fill,
+                 title     / align   = center,
+                 info     / content     = \@@_cover_info_en:,
+                 info     / format      = \@@_line_spread:n {1.12} \zihao { -3 },
+                 info    / bottom-skip = 72 pt,% plus 0.3 fill,
+                 info     / align       = center,
+                 department     / content     = \l_@@_info_department_en_tl,
+                 department     / format      = \zihao { -3 },
+                 department     / bottom-skip = -32 pt,% plus 0.3 fill,
+                 department     / align       = center,
+                 nwafu     / content     = \c_@@_name_en_tl,
+                 nwafu     / format      = \zihao { -3 },
+                 nwafu     / align       = center,
+               }
+        }
+      }
   }
+\@@_define_cover_ii_entities:
 %    \end{macrocode}
 % 封面三
 %    \begin{macrocode}
@@ -6456,7 +6525,7 @@
         \tl_if_empty:NF \l_@@_abstract_file_tl
           {
 %    \end{macrocode}
-% 根据提供的文件,排版中文摘要,否则什么都不做。
+% 根据提供的文件,排版中文摘要,如果提供的文件为空,则什么都不做。
 %    \begin{macrocode}
             \begin{abstract}
               \file_input:V \l_@@_abstract_file_tl
@@ -6465,7 +6534,7 @@
         \tl_if_empty:NF \l_@@_abstract_file_en_tl
           {
 %    \end{macrocode}
-% 根据提供的文件,排版英文摘要,否则什么都不做。
+% 根据提供的文件,排版英文摘要,如果提供的文件为空,则什么都不做。
 %    \begin{macrocode}
             \begin{abstract*}
               \file_input:V \l_@@_abstract_file_en_tl
@@ -6484,7 +6553,7 @@
         \tl_if_empty:NF \l_@@_notation_file_tl
           {
 %    \end{macrocode}
-% 根据提供的文件,排版主要符号对照表,否则什么都不做。
+% 根据提供的文件,排版主要符号对照表,如果提供的文件为空,则什么都不做。
 %    \begin{macrocode}
             \cleardoublepage
             \pagenumbering{Roman}
@@ -6499,7 +6568,7 @@
         \tl_if_empty:NF \l_@@_abstract_file_tl
           {
 %    \end{macrocode}
-% 根据提供的文件,排版中文摘要,否则什么都不做。
+% 根据提供的文件,排版中文摘要,如果提供的文件为空,则什么都不做。
 %    \begin{macrocode}
             \begin{abstract}
               \@@_get_text_width:Nn \l_@@_tmpa_dim {\c_@@_name_keywords_tl}
@@ -6518,7 +6587,7 @@
         \tl_if_empty:NF \l_@@_abstract_file_en_tl
           {
 %    \end{macrocode}
-% 根据提供的文件,排版英文摘要,否则什么都不做。
+% 根据提供的文件,排版英文摘要,如果提供的文件为空,则什么都不做。
 %    \begin{macrocode}
             \begin{abstract*}
               \group_begin:
@@ -6537,8 +6606,10 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% 在 \env{document} 开始位置添加封面以及指导小组成员名单。
+%
 %    \begin{macrocode}
-\AfterEndPreamble
+\ctex_after_end_preamble:n
   {
     \bool_if:NT \l_@@_auto_make_cover_bool
       {
@@ -6858,10 +6929,8 @@
 %    \begin{macrocode}
 \NewDocumentEnvironment { abstract  } { }
   { \@@_abstract_begin:    } { \@@_abstract_end:      }
-%<*class>
 \NewDocumentEnvironment { abstract* } { }
   { \@@_abstract_en_begin: } { \@@_abstract_en_end:   }
-%</class>
 %    \end{macrocode}
 % \end{environment}
 % \end{environment}
@@ -6869,7 +6938,6 @@
 % \begin{macro}{\@@_abstract_begin:,\@@_abstract_en_begin:}
 % 摘要页标题。
 %    \begin{macrocode}
-%<*class>
 \cs_new_protected:Npn \@@_abstract_begin:
   {
     \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
@@ -6880,7 +6948,6 @@
         \begin{center}\nwafu at hei\bfseries\zihao{3}\l_@@_info_title_tl\end{center}
       }
   }
-%</class>
 \cs_new_protected:Npn \@@_abstract_en_begin:
   {
     \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
@@ -6897,7 +6964,6 @@
 % \begin{macro}{\@@_abstract_end:,\@@_abstract_en_end:}
 % 摘要正文完成后,输出关键字列表。
 %    \begin{macrocode}
-%<*class>
 \cs_new_protected:Npn \@@_abstract_end:
   {
     \@@_keywords:nNn
@@ -6904,7 +6970,6 @@
       { \sffamily \zihao{-4} \c_@@_name_keywords_tl \c_@@_fwid_colon_tl  }
       \l_@@_abstract_keywords_clist { ; ~}
   }
-%</class>
 \cs_new_protected:Npn \@@_abstract_en_end:
   {
     \@@_keywords:nNn
@@ -7002,7 +7067,7 @@
 % \subsection{个人简历}
 %
 % \begin{environment}{resume}
-% 致谢环境,只是简单地设置章节不编号标题。
+% 个人简历环境,只是简单地设置章节不编号标题。
 %    \begin{macrocode}
 \NewDocumentEnvironment { resume } { }
   {
@@ -7016,12 +7081,15 @@
 % \end{environment}
 %
 % \begin{macro}{\resumeitem,\researchitem}
-% 摘要页标题。
+% 学习经历。
 %    \begin{macrocode}
 \NewDocumentCommand{ \resumitem }{ O{ 学习经历 } }
   {%
     \vspace{24bp}{\zihao{-4}\nwafu at hei\bfseries\centerline{#1}}\par\vspace{6bp}
   }
+%    \end{macrocode}
+% 学术成果。
+%    \begin{macrocode}
 \NewDocumentCommand{ \researchitem }{ O{ 发表的学术论文 } }
   {%
     \vspace{32bp}{\zihao{-4}\nwafu at hei\bfseries\centerline{#1}}\par\vspace{14bp}
@@ -7034,16 +7102,18 @@
 % 个人简历中发论文和研究成果列表环境。
 %    \begin{macrocode}
 \newlist{publications}{enumerate}{1}
-\setlist[publications]{label=[\arabic*],align=left,nosep,itemsep=6bp,
-  leftmargin=10mm,before=\zihao{-4},resume}
+\setlist[publications]{label=[\arabic*],align=left,nosep,itemsep=3bp,
+  leftmargin=10mm,before=\zihao{5},resume}
 \newlist{achievements}{enumerate}{1}
-\setlist[achievements]{label=[\arabic*],align=left,nosep,itemsep=6bp,
-  leftmargin=10mm,before=\zihao{-4}}
+\setlist[achievements]{label=[\arabic*],align=left,nosep,itemsep=3bp,
+  leftmargin=10mm,before=\zihao{5}}
 \def\publicationskip{\bigskip\bigskip}
 %    \end{macrocode}
 % \end{environment}
 % \end{environment}
 %
+% \changes{v1.10}{2022/03/17}{直接使用胡振震制定的gb7714-NWAFU实现参考文献样式控制。}
+%
 % \subsection{参考文献著录与引用}
 %
 % \begin{variable}{\l_@@_bib_resource_clist}
@@ -7068,8 +7138,6 @@
 % 为了保证导言区中的设置能起作用,\pkg{biblatex} 宏包均需要在
 % 导言区末尾载入(仍在 \pkg{hyperref} 之前),并做相关设置。
 %    \begin{macrocode}
-% \AddToHook
-%   { env/document/begin }
 \@@_at_end_preamble:n
   {
     \@@_biblatex_pre_setup:
@@ -7089,15 +7157,11 @@
 %    \end{macrocode}
 % 参考文献引用与著录样式。
 %    \begin{macrocode}
-    \@@_pass_options_to_biblatex:n { style = gb7714-2015ay }
+    \@@_pass_options_to_biblatex:n { style = gb7714-NWAFU }
 %    \end{macrocode}
 % 其它参数。
 %    \begin{macrocode}
-    \@@_pass_options_to_biblatex:n { backend = biber, sortlocale=zh__pinyin,
-        gbtype=false, maxbibnames=99, maxcitenames=2, mincitenames=1,
-        gbpub=false, uniquename=false, uniquelist=false, gbnamefmt=lowercase,
-        doi=false, isbn=false, gbfieldtype=true, gbpunctin=false,
-      }
+    \@@_pass_options_to_biblatex:n { backend = biber, }
   }
 \cs_new_protected:Npn \@@_biblatex_post_setup:
   {
@@ -7104,9 +7168,7 @@
 %    \end{macrocode}
 % 载入参考文献数据源文件。
 %    \begin{macrocode}
-    \@@_biblatex_misc:
     \clist_map_function:NN \l_@@_bib_resource_clist \addbibresource
-    \@@_biblatex_allow_url_break:
 %    \end{macrocode}
 % 修改参考文献标题。
 %    \begin{macrocode}
@@ -7117,455 +7179,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_biblatex_misc:}
-% \pkg{biblatex} 中需要针对西北农林科技大学参考文献规范的特殊设置。
-% 由符合 GB/T 7714-2015 标准的 biblatex 参考文献样式
-% (\url{https://github.com/hushidong/biblatex-gb7714-2015})
-% 作者胡振震协助实现。
-%    \begin{macrocode}
-\cs_new:Npn \@@_biblatex_misc:
-  {
-%    \end{macrocode}
-% 表示范围的波浪线符号
-%    \begin{macrocode}
-    \DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{$\sim$}}
-%    \end{macrocode}
-% 设置全局字体字号(5号字,行间距为1.3)
-%    \begin{macrocode}
-    \newcommand\nwafu at font@bib{\@@_line_spread:n {1.3}\zihao{5}}
-    \renewcommand{\bibfont}{\nwafu at font@bib}
-%    \end{macrocode}
-% 英文期刊名称用斜休(Italic体)
-%    \begin{macrocode}
-    \DeclareFieldFormat[article]{journaltitle}{\iffieldequalstr{userd}{chinese}{##1}{\textit{##1}}\isdot}
-%    \end{macrocode}
-% \tn{parencite}命令引用标注后导分割符
-%    \begin{macrocode}
-    \renewcommand{\postnotedelim}{\addcolon\space}
-%    \end{macrocode}
-% 删除\tn{parencite}命令引用标注中有页码选项时的p. pp.字符
-%    \begin{macrocode}
-    \DeclareFieldFormat{postnote}{##1}
-%    \end{macrocode}
-% 引用标注作者年制中作者和年份之间的标点(人名与年之间用空格分隔)
-%    \begin{macrocode}
-    \DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{\space}
-    \DeclareDelimFormat[textcite]{nameyeardelim}{\space}
-%    \end{macrocode}
-% 文献著录列表中作者与年之间的分割符(最后一个作者后用点)
-%    \begin{macrocode}
-    \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}
-%    \end{macrocode}
-% 删除文献著录列表中最后的点
-%    \begin{macrocode}
-    \renewcommand*{\finentrypunct}{}
-%    \end{macrocode}
-% 修改部分中文化字符串
-%    \begin{macrocode}
-    \DefineBibliographyStrings{english}{
-        andincitecn = {和},
-        andincite   = {and},
-        mathesiscn={[硕士学位论文]},
-        phdthesiscn={[博士学位论文]},
-        in={In:\addspace},
-        incn={见:\addspace},
-      }
-%    \end{macrocode}
-% 修改最后一个作者前的字符串,比如“and”、“和”。
-%
-% 原理方法:默认情况下判断作者或译者是否中文,若中文用字符andcn=“和”,否则用and=“and”。
-% 非默认情况,根据选项信息,选择选择强制中文或英文
-% 首先设置全局的,然后设置文献表中的,这一等价于将所有的cite命令环境都设置过了
-% 而不用对每一个引用命令单独设置,比如cite,parancite,textcite都设置
-%    \begin{macrocode}
-    \DeclareDelimFormat{finalnamedelim}{%
-        \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
-        \edef\userfieldabcde{userd}%
-        \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
-        \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
-        \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
-        \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
-        \ifcase\value{gbcitelocalcase}%
-          \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}%
-          \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}%
-          \iffieldequalstr{\userfieldabcde}{japnese}{\bibstring{andjp}}{}%
-          \iffieldequalstr{\userfieldabcde}{english}{\addspace\bibstring{andincite}\addspace}{}%
-          \iffieldequalstr{\userfieldabcde}{french}{\addspace\bibstring{and}\addspace}{}%
-          \iffieldequalstr{\userfieldabcde}{russian}{\addspace\bibstring{and}\addspace}{}%
-        \or%
-        \bibstring{andincitecn}%
-        \or%
-        \addspace\bibstring{andincite}\addspace%
-        \fi
-      }
-%    \end{macrocode}
-% 20190215, 胡振震邮件指导代码
-% 去掉超过3个著者时汉字“等”前的空格(GB/T 7714-2015规定需要有空格)
-%    \begin{macrocode}
-    \DeclareDelimFormat{strandothersdelim}{%
-        \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
-        %\addspace%
-        \edef\userfieldabcde{userd}%
-        \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
-        \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
-        \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
-        \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
-        \ifcase\value{gbcitelocalcase}%
-          \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andothersincitecn}}{}%
-          \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}%
-          \iffieldequalstr{\userfieldabcde}{japnese}{\bibstring{andothersjp}}{}%
-          \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothersincite}}{}%
-          \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%
-          \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%
-        \or%
-        \bibstring{andothersincitecn}%
-        \or%
-        \bibstring{andothersincite}%
-        \fi
-      }
-%    \end{macrocode}
-% 设置andothersdelim
-%    \begin{macrocode}
-    \AtEveryCitekey{%
-        \iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{}}%\addthinspace
-        {\renewcommand*{\andothersdelim}{\addspace}}%
-      }
-%    \end{macrocode}
-% 标注压缩时,直接用date+extradate代替extradate实现2006a,2006b的效果
-%    \begin{macrocode}
-    \renewbibmacro*{cite:extradate}{%
-        \iffieldundef{extradate} {}
-        {\printtext[bibhyperref]{\printlabeldateextra}}%\printfield{extradate}
-      }
-%    \end{macrocode}
-% 文献表中的日期格式
-%    \begin{macrocode}
-    \renewbibmacro*{date+extradate}{%
-        \iffieldundef{labelyear}{}%
-        {\ifboolexpr{%
-           test {\ifentrytype{patent}}
-           or
-           (test {\ifentrytype{newspaper}} )%
-         }%
-         {\printtext{\blx at isodate{}{}}}%
-         {\printtext{%
-             \iflabeldateisdate
-             {\printdateextra}
-             {\printlabeldateextra}
-          }
-         }%
-        }%
-      }
-    \newbibmacro*{origdate+extradate}{%
-        \printtext{\printorigdate}%
-      }
-%    \end{macrocode}
-% 修改译者位置格式
-%    \begin{macrocode}
-    \renewbibmacro*{bytranslator+others}{%
-        \ifnameundef{translator}
-          {}
-          {\printnames[bytranslator]{translator}%
-           \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。
-           \newunit
-          }%
-        \usebibmacro{withothers}%
-        \ifboolexpr{%
-          test {\iffieldundef{origyear}} or test {\ifnameundef{translator}}%%
-        }{}{\printtext{\printdate}}%
-      }
-%    \end{macrocode}
-% url和url日期格式
-%    \begin{macrocode}
-    \renewbibmacro*{url+urldate}{%
-        \usebibmacro{url}%
-        \iffieldundef{urlyear}%
-        {}
-        {\usebibmacro{urldate}
-        }
-      }
-    \DeclareFieldFormat{addnumflag}{%
-        \ifentrytype{newspaper}
-        {\setunit{\addcomma\addspace}\printtext{##1}}
-        {\nobreak\printtext{(}\nobreak ##1\nobreak\printtext{)}}
-      }
-%    \end{macrocode}
-% 重设专利title的输出,输出文献类型标识符
-%    \begin{macrocode}
-    \renewbibmacro*{patenttitle}{%原输出来自biblatex.def文件
-        \ifboolexpr{%
-          test{\iffieldundef{title}}%
-          and%
-          test{\iffieldundef{subtitle}}%
-        }%
-        {}%
-        {
-          \printtext[title]{\bibtitlefont%
-          \printfield[titlecase]{title}%
-          \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题
-          {}
-          {
-            \setunit{\subtitlepunct}%
-            \printfield[titlecase]{subtitle}}%
-            \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格
-            {\setunit{\subtitlepunct}\printfield{titleaddon}}%
-            \setunit{\adddot\addspace}\printfield{number}%写专利号
-            \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}%
-          }%
-        }%
-      }
-%    \end{macrocode}
-% 修改作者数量超过限定值,省略时的处理格式
-% 20190103,hzz,修改利用新定义的一个分隔符strandothersdelim
-%
-% 原理方法:判断作者或译者是否中文,若中文用字符等,否则用et al. 。
-%    \begin{macrocode}
-    \renewbibmacro*{name:andothers}{%
-        \ifboolexpr{
-          test {\ifnumequal{\value{listcount}}{\value{liststop}}}
-          and
-          test \ifmorenames
-        }{\ifnumgreater{\value{liststop}}{1}%
-            {\finalandcomma}%
-            {}%
-            \printdelim{andothersdelim}\printdelim{strandothersdelim}%
-        }{%当是译者的时候需要特殊处理
-          \ifcurrentname{translator}{\addcomma}{}%
-        }
-      }
-%    \end{macrocode}
-% 修改对edition版本信息格式
-%    \begin{macrocode}
-    \DeclareFieldFormat{edition}{%
-        \testCJKfirst{userd}%
-        \iftoggle{ifCJKforgbt}%
-        {\ifinteger{##1}%
-          {\printtext{\bibstring{serialcn}\zhnumber{##1}\str at edition}}%
-          {##1\isdot}
-        }%
-        {\ifinteger{##1}%
-          {\mkbibordedition{##1}~\bibstring{edition}}%
-          {##1\isdot}
-        }
-      }
-%    \end{macrocode}
-% 注意这里当没有作者只有标题时在年份之前的标点是否需要
-% 标准并未涉及,所以未做处理。
-%    \begin{macrocode}
-    \renewbibmacro*{author}{%
-        \ifboolexpr{
-          test \ifuseauthor
-          and
-          not test {\ifnameundef{author}}
-        }{\usebibmacro{bbx:dashcheck}
-           {\printnames{author}\setunit{\printdelim{nameyeardelim}}%把标点也带上
-           }{\usebibmacro{bbx:savehash}%
-             \printnames{author}%
-             \iffieldundef{authortype}
-               {\setunit{\printdelim{nameyeardelim}}}
-               {\setunit{\printdelim{authortypedelim}}}
-           }%
-           \iffieldundef{authortype}
-             {}
-             {\usebibmacro{authorstrg}%
-              \setunit{\printdelim{nameyeardelim}}
-             }
-        }%
-        {\global\undef\bbx at lasthash
-         \usebibmacro{labeltitle}%
-         \setunit*{\printdelim{nonameyeardelim}}
-        }%
-        \ifboolexpr{%
-          test {\iffieldundef{origyear}} or test {\ifnameundef{translator}}%
-        }{\usebibmacro{date+extradate}}%
-        {\usebibmacro{origdate+extradate}}%
-      }
-%    \end{macrocode}
-% book条目类的驱动
-%    \begin{macrocode}
-    \DeclareBibliographyDriver{book}{%源来自standard.bbx文件
-        \usebibmacro{bibindex}%
-        \usebibmacro{begentry}%
-        \usebibmacro{author/editor+others/translator+others}%
-        \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-        \usebibmacro{maintitle+title}%
-        \iftoggle{bbx:gbstrict}{}{%
-          \newunit%
-          \printlist{language}%
-          \newunit\newblock%
-          \usebibmacro{byauthor}%
-          \newunit\newblock%
-        }%
-        \newunit%
-        \printfield{edition}%
-        \newunit%
-        \usebibmacro{byeditor+others}%
-        \newunit\newblock%
-        \iftoggle{bbx:gbstrict}{}{%
-          \iffieldundef{maintitle}%
-          {%
-            \printfield{volume}%
-            \printfield{part}%
-          }%
-          {}%
-          \newunit%
-          \printfield{volumes}%
-          \newunit\newblock%
-          \usebibmacro{series+number}%
-        }%
-        \newunit\newblock%
-        \usebibmacro{publisher+location+date}%
-        \usebibmacro{chapter+pages}%
-        \iffieldundef{url}{}{%当没有网址时也不输出
-          \usebibmacro{modifydate}%带括号的修改或更新日期,
-        }%
-        \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
-        \newunit\newblock%
-        \printfield{pagetotal}%
-        \newunit\newblock%
-        \iftoggle{bbx:isbn}%
-          {\printfield{isbn}}
-          {}%
-        \newunit\newblock%
-        \usebibmacro{addendum+pubstate}%
-        \setunit{\bibpagerefpunct}\newblock
-        \usebibmacro{pageref}%
-        \newunit\newblock%
-        \iftoggle{bbx:related}%
-          {\usebibmacro{related:init}%
-           \usebibmacro{related}%
-          }{}%
-        \usebibmacro{finentry}
-      }
-%    \end{macrocode}
-% 在线文献驱动
-%    \begin{macrocode}
-    \DeclareBibliographyDriver{online}{%源来自standard.BBX
-        \usebibmacro{bibindex}%
-        \usebibmacro{begentry}%
-        \usebibmacro{author/editor+others/translator+others}%
-        \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-        \usebibmacro{title}%
-        \iftoggle{bbx:gbstrict}{}{%
-          \newunit%
-          \printlist{language}%
-          \newunit\newblock
-          \usebibmacro{byauthor}%
-          \newunit\newblock
-          \usebibmacro{byeditor+others}%
-          \newunit\newblock
-          \printfield{note}
-        }%
-        \newunit
-        \printfield{version}%
-        \newunit\newblock
-        \printlist{institution}%
-        \newunit\newblock
-        \ifboolexpr{%
-          test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
-        }{\usebibmacro{date}}%
-        \usebibmacro{url+urldate}%从下面移上来
-        \newunit\newblock
-        \iftoggle{bbx:eprint}
-          {\usebibmacro{eprint}}
-          {}%
-        \newunit\newblock
-        \usebibmacro{addendum+pubstate}%
-        \setunit{\bibpagerefpunct}\newblock
-        \usebibmacro{pageref}%
-        \newunit\newblock
-        \iftoggle{bbx:related}
-          {\usebibmacro{related:init}%
-           \usebibmacro{related}}
-          {}%
-        \usebibmacro{finentry}
-      }
-%    \end{macrocode}
-% 专利文献驱动
-%    \begin{macrocode}
-    \DeclareBibliographyDriver{patent}{%源来自standard.BBX
-        \usebibmacro{bibindex}%
-        \usebibmacro{begentry}%
-        \usebibmacro{author}%
-        \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-        \usebibmacro{patenttitle}%给出专利专用的标题输出
-        \iftoggle{bbx:gbstrict}{}{%
-          \newunit%
-          \printlist{language}%
-          \newunit\newblock
-          \usebibmacro{byauthor}
-        }%
-        \newunit\newblock
-        \printfield{type}%
-        \setunit*{\addspace}%
-        \iflistundef{location}
-          {}
-          {\setunit*{\addspace}%
-           \printtext{%[parens]
-           \printlist[][-\value{listtotal}]{location}}
-          }%
-        \newunit\newblock
-        \usebibmacro{byholder}%
-        \newunit\newblock
-        \printfield{note}%
-        \newunit\newblock
-        \usebibmacro{doi+eprint+url}%
-        \newunit\newblock
-        \usebibmacro{addendum+pubstate}%
-        \setunit{\bibpagerefpunct}\newblock
-        \usebibmacro{pageref}%
-        \newunit\newblock
-        \iftoggle{bbx:related}
-          {\usebibmacro{related:init}%
-           \usebibmacro{related}
-          }
-          {}%
-        \usebibmacro{finentry}
-      }
-%    \end{macrocode}
-% 间距的控制
-%    \begin{macrocode}
-    \setlength{\bibitemsep}{2pt}
-    \setlength{\bibnamesep}{0ex}
-    \setlength{\bibinitsep}{0ex}
-%    \end{macrocode}
-% 文献著录条目缩进控制(悬挂缩进4英文字符)
-%    \begin{macrocode}
-    \setlength{\bibitemindent}{-2\ccwd}% bibitemindent表示一条文献中第一行相对后面各行的缩进
-    \setlength{\bibhang}{2\ccwd} % 表示的各行起始位置到页边的距离
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_biblatex_allow_url_break:}
-% \pkg{biblatex} 下允许 URL 在字母、数字和一些特殊符号处断行。
-%    \begin{macrocode}
-\cs_new:Npn \@@_biblatex_allow_url_break:
-  {
-    \int_set_eq:NN \c at biburlucpenalty  \c_one_int
-    \int_set_eq:NN \c at biburlnumpenalty \c_one_int
-    \int_set_eq:NN \c at biburllcpenalty  \c_one_int
-  }
-%    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_set_cite_style_author_year:}
-% 著者—出版年制下的引用样式。
-%    \begin{macrocode}
-\cs_new:Npn \@@_set_cite_style_author_year:
-  {
-    \NAT at numbersfalse
-%<*class>
-    \cs_set_eq:NN \NAT at open  \c_@@_fwid_left_paren_tl
-    \cs_set_eq:NN \NAT at close \c_@@_fwid_right_paren_tl
-    \cs_set_eq:NN \NAT at sep   \c_@@_fwid_semicolon_tl
-    \cs_set_eq:NN \NAT at aysep \c_@@_fwid_comma_tl
-    \cs_set_eq:NN \NAT at yrsep \c_@@_ideo_comma_tl
-%</class>
-  }
-%    \end{macrocode}
-% \end{macro}
-%
 % \subsection{间距设置}
 %
 % 段落间距
@@ -7572,7 +7185,7 @@
 %    \begin{macrocode}
 \skip_set:Nn \parskip { 0pt plus 2pt minus 1pt }
 %    \end{macrocode}
-% 浮动体顶商与底端所留距离
+% 浮动体顶端与底端所留距离
 %    \begin{macrocode}
 \skip_set:Nn \intextsep { 14pt plus 2pt minus 2pt }
 %    \end{macrocode}
@@ -7611,13 +7224,10 @@
     { bullet   } { \textbullet                      },
     { endash   } { \normalfont\bfseries\textendash  },
     { asterisk } { \textasteriskcentered            },
-    { arabic   } { \bool_if:NTF \l_@@_withchap_bool
-                      { \arabic*. }{ (\arabic*) }   },
-    { alph     } { \bool_if:NTF \l_@@_withchap_bool
-                      { \alph*. }{ (\alph*) }       },
-    { roman    } { \bool_if:NTF \l_@@_withchap_bool
-                      { \roman*. }{ (\roman*) }     },
+    { arabic   } { (\arabic*)                       },
     { alph     } { (\alph*)                         },
+    { roman    } { (\roman*)                        },
+    { alph     } { (\alph*)                         },
     { roman    } { \roman*.                         },
     { outline  } { \upshape\ding{111}               }
   }
@@ -7884,7 +7494,6 @@
 % 模板预定义的常用数学环境。
 % 其中的“证明”比较特殊,它不编号,但会添加证毕符号。
 %    \begin{macrocode}
-%<*class>
 \newtheorem* { proof       } { \c_@@_name_proof_tl      }
 \newtheorem  { axiom       } { \c_@@_name_axiom_tl      }
 \newtheorem  { corollary   } { \c_@@_name_corollary_tl  }
@@ -7893,7 +7502,6 @@
 \newtheorem  { lemma       } { \c_@@_name_lemma_tl      }
 \newtheorem  { theorem     } { \c_@@_name_theorem_tl    }
 %</class>
-%</class>
 %    \end{macrocode}
 % \end{environment}
 % \end{environment}

Deleted: trunk/Master/texmf-dist/tex/latex/nwafuthesis/nwafu-bar.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/nwafuthesis/nwafuthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nwafuthesis/nwafuthesis.cls	2022-03-21 20:33:59 UTC (rev 62871)
+++ trunk/Master/texmf-dist/tex/latex/nwafuthesis/nwafuthesis.cls	2022-03-21 20:35:25 UTC (rev 62872)
@@ -30,14 +30,14 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
-\GetIdInfo $Id: nwafuthesis.dtx 1.01 2021-08-07 Nan Geng <nangeng at nwafu.edu.cn> $
+\GetIdInfo $Id: nwafuthesis.dtx 1.10 2022-03-17 Nan Geng <nangeng at nwafu.edu.cn> $
   {Thesis template for Northwest A\&F University}
 \ProvidesExplClass{\ExplFileName}
   {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
-\RequirePackage { xparse, xtemplate, l3keys2e }
-\clist_map_inline:nn { expl3, xparse, xtemplate, l3keys2e }
+\RequirePackage {xtemplate, l3keys2e }
+\clist_map_inline:nn { xtemplate, l3keys2e }
   {
-    \@ifpackagelater {#1} { 2018/05/12 }
+    \@ifpackagelater {#1} { 2020/07/17 }
       { } { \msg_error:nnn { nwafuthesis } { l3-too-old } {#1} }
   }
 \msg_new:nnn { nwafuthesis } { l3-too-old }
@@ -61,7 +61,6 @@
     "#1"~ is~ not~ supported~ at~ present.~ You~ must~ change \\
     your~ typesetting~ engine~ to~ "xelatex"~ or~ "lualatex".
   }
-\hook_gset_rule:nnnn { begindocument/before } { nwafuthesis } { < } { xeCJK }
 \box_new:N   \l__nwafu_tmpa_box
 \clist_new:N \l__nwafu_tmpa_clist
 \clist_new:N \l__nwafu_tmpb_clist
@@ -82,11 +81,10 @@
 \int_new:N \g__nwafu_thesis_type_int
 \clist_new:N \g__nwafu_to_ctexbook_clist
 \clist_new:N \g__nwafu_to_hyperref_clist
-\bool_new:N \l__nwafu_withchap_bool
 \bool_new:N \g__nwafu_twoside_bool
 \bool_set_true:N \g__nwafu_twoside_bool
 \bool_new:N \g__nwafu_draft_bool
-\cs_generate_variant:Nn \cs_generate_variant:Nn { cn }
+\bool_new:N \l__nwafu_withchap_bool
 \cs_generate_variant:Nn \file_input:n           { V  }
 \cs_generate_variant:Nn \int_to_arabic:n        { v  }
 \cs_generate_variant:Nn \keys_define:nn         { nx }
@@ -112,6 +110,9 @@
 \cs_new:Npn \__nwafu_symbol:n #1 { \tex_char:D #1 \scan_stop: }
 \cs_new:Npn \__nwafu_arabic:n #1
   { \int_to_arabic:v { c@ #1 } }
+\cs_new_protected:Npn \__nwafu_gadd_ltxhook:nn #1#2
+  { \hook_gput_code:nnn {#1} { . } {#2} }
+\hook_gset_rule:nnnn { begindocument/before } { . } { < } { xeCJK }
 \cs_new_protected:Npn \__nwafu_patch_cmd:Nnn #1#2#3
   {
     \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
@@ -153,6 +154,7 @@
 \cs_new:Npn \__nwafu_error:nn    { \msg_error:nnn    { nwafuthesis } }
 \cs_new:Npn \__nwafu_error:nx    { \msg_error:nnx    { nwafuthesis } }
 \cs_new:Npn \__nwafu_error:nnn   { \msg_error:nnnn   { nwafuthesis } }
+\cs_new:Npn \__nwafu_error:nnnn  { \msg_error:nnnnn  { nwafuthesis } }
 \cs_new:Npn \__nwafu_warning:n   { \msg_warning:nn   { nwafuthesis } }
 \cs_new:Npn \__nwafu_warning:nn  { \msg_warning:nnn  { nwafuthesis } }
 \cs_new:Npn \__nwafu_warning:nxx { \msg_warning:nnxx { nwafuthesis } }
@@ -195,7 +197,8 @@
 \NewDocumentCommand \nwafuthesis { }
   {%
     \makebox{\rmfamily%
-      N\hspace{-0.2ex}\raisebox{-0.5ex}{W}\raisebox{0.5ex}{\hspace{-0.2ex}\textsc{AFU}}\hspace{0.3ex}%
+      N\hspace{-0.2ex}\raisebox{-0.5ex}{W}\raisebox{0.5ex}
+      {\hspace{-0.2ex}\textsc{AFU}}\hspace{0.3ex}%
       \textsc{Thesis}
     }
   }
@@ -242,34 +245,40 @@
   { \__nwafu_define_punct:nn #1 }
 \fp_const:Nn \c__nwafu_line_spread_fp
   { \dim_ratio:nn { 20 pt } { 12 bp } / 1.2 }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \__nwafu_define_orig_decl_text:
   {
-    \tl_const:Nn \c__nwafu_orig_decl_text_tl
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
       {
-        本人声明:所呈交的学位论文是我个人在导师指导下独立进行的研究工作及取
-        得的研究结果;论文中的研究数据及结果的获得完全符合学校《关于规范西北
-        农林科技大学研究生学术道德的暂行规定》,如果违反此规定,一切后果与法
-        律责任均由本人承担。\par
-        尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经
-        发表或撰写过的研究结果,也不包含其他人和自己本人已获得西北农林科技大
-        学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同事对本
-        研究所做的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
+        \tl_const:Nn \c__nwafu_orig_decl_text_tl
+          {
+            本人声明:所呈交的学位论文是我个人在导师指导下独立进行的研究工作及取
+            得的研究结果;论文中的研究数据及结果的获得完全符合学校《关于规范西北
+            农林科技大学研究生学术道德的暂行规定》,如果违反此规定,一切后果与法
+            律责任均由本人承担。\par
+
+            尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经
+            发表或撰写过的研究结果,也不包含其他人和自己本人已获得西北农林科技大
+            学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同事对本
+            研究所做的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
+          }
       }
-  }
-  {
-    \tl_const:Nn \c__nwafu_orig_decl_text_tl
       {
-        本人声明:所呈交的毕业
-        \clist_item:Nn \c__nwafu_bachelor_type_clist { \l__nwafu_info_bachelor_type_int }
-        是我个人在导师指导下
-        独立进行的研究工作及取得的研究结果。尽我所知,除了文中特别加
-        以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究结果,
-        也不包含其他人和自己本人已获得\c__nwafu_name_simp_tl{}或其它教育
-        机构的学位或证书而使用过的材料。与我一同工作的同事对本研究所做
-        的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
-        如违反此声明,一切后果与法律责任均由本人承担。
+        \tl_const:Nn \c__nwafu_orig_decl_text_tl
+          {
+            本人声明:所呈交的毕业
+            \clist_item:Nn \c__nwafu_bachelor_type_clist
+              { \l__nwafu_info_bachelor_type_int }
+            是我个人在导师指导下
+            独立进行的研究工作及取得的研究结果。尽我所知,除了文中特别加
+            以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究结果,
+            也不包含其他人和自己本人已获得\c__nwafu_name_simp_tl{}或其它教育
+            机构的学位或证书而使用过的材料。与我一同工作的同事对本研究所做
+            的任何贡献均已在论文的致谢中作了明确的说明并表示了谢意。
+            如违反此声明,一切后果与法律责任均由本人承担。
+          }
       }
   }
+\__nwafu_define_orig_decl_text:
 \tl_const:Nn \c__nwafu_super_decl_text_tl
   {
     本人承诺:我的研究生{\__nwafu_text_uline:V \l__nwafu_info_author_tl}所呈交的
@@ -279,63 +288,73 @@
     技大学研究生学术道德的暂行规定》,我愿接受按学校有关规定的处罚处理并
     承担相应导师连带责任。
   }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \__nwafu_auth_orig_decl_text:
   {
-    \tl_const:Nn \c__nwafu_auth_decl_text_tl
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
       {
-        本学位论文的知识产权归属西北农林科技大学。本人同意西北农林科技大学
-        保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和
-        借阅;同意西北农林科技大学将本学位论文的全部或部分内容授权汇编录入
-        中国博士/硕士学位论文全文数据库》和《中国学位论文全文数据库》进行
-        出版,并享受相关权益。\par
+        \tl_const:Nn \c__nwafu_auth_decl_text_tl
+          {
+            本学位论文的知识产权归属西北农林科技大学。本人同意西北农林科技大学
+            保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和
+            借阅;同意西北农林科技大学将本学位论文的全部或部分内容授权汇编录入
+            中国博士/硕士学位论文全文数据库》和《中国学位论文全文数据库》进行
+            出版,并享受相关权益。\par
 
-        本人保证,在毕业离开(或者工作调离)西北农林科技大学后,发表或者使用本
-        学位论文及其相关的工作成果时,将以西北农林科技大学为第一署名单位,否
-        则,愿意按《中华人民共和国著作权法》等有关规定接受处理并承担法律责任。\par
+            本人保证,在毕业离开(或者工作调离)西北农林科技大学后,发表或者使用本
+            学位论文及其相关的工作成果时,将以西北农林科技大学为第一署名单位,否
+            则,愿意按《中华人民共和国著作权法》等有关规定接受处理并承担法律责任。\par
 
-        任何收存和保管本论文各种版本的其他单位和个人(包括研究生本人)未经本
-        论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、改编等
-        侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》等有关规定处
-        理并追究法律责任。\par
+            任何收存和保管本论文各种版本的其他单位和个人(包括研究生本人)未经本
+            论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、改编等
+            侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》等有关规定处
+            理并追究法律责任。\par
 
-        {\sffamily (保密的学位论文在保密期限内,不得以任何方式发表、借阅、复印、
-            缩印或扫描复制手段保存、汇编论文)}
+            {\sffamily (保密的学位论文在保密期限内,不得以任何方式发表、借阅、复印、
+                缩印或扫描复制手段保存、汇编论文)}
+          }
       }
-  }
-  {
-    \tl_const:Nn \c__nwafu_auth_decl_text_tl
       {
-        本毕业
-        \clist_item:Nn \c__nwafu_bachelor_type_clist { \l__nwafu_info_bachelor_type_int }
-        的知识产权归属\c__nwafu_name_simp_tl{}。
-        本人同意\c__nwafu_name_simp_tl{}保存或向国家有关部门或机构
-        送交论文的纸质版和电子版,允许论文被查阅和借阅。\par
+        \tl_const:Nn \c__nwafu_auth_decl_text_tl
+          {
+            本毕业
+            \clist_item:Nn \c__nwafu_bachelor_type_clist
+              { \l__nwafu_info_bachelor_type_int }
+            的知识产权归属\c__nwafu_name_simp_tl{}。
+            本人同意\c__nwafu_name_simp_tl{}保存或向国家有关部门或机构
+            送交论文的纸质版和电子版,允许论文被查阅和借阅。\par
 
-        本人保证,在毕业离开\c__nwafu_name_simp_tl{}后,发表或者使用本毕业
-        \clist_item:Nn \c__nwafu_bachelor_type_clist { \l__nwafu_info_bachelor_type_int }
-        及其相关的工作成果时,将以\c__nwafu_name_simp_tl{}
-        为第一署名单位,否则,愿意按《中华人民共和国著作权法》等
-        有关规定接受处理并承担法律责任。\par
+            本人保证,在毕业离开\c__nwafu_name_simp_tl{}后,发表或者使用本毕业
+            \clist_item:Nn \c__nwafu_bachelor_type_clist
+              { \l__nwafu_info_bachelor_type_int }
+            及其相关的工作成果时,将以\c__nwafu_name_simp_tl{}
+            为第一署名单位,否则,愿意按《中华人民共和国著作权法》等
+            有关规定接受处理并承担法律责任。\par
 
-        任何收存和保管本论文各种版本的其他单位和个人(包括作者本人)未经
-        本论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、
-        改编等侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》
-        等有关规定处理并追究法律责任。
+            任何收存和保管本论文各种版本的其他单位和个人(包括作者本人)未经
+            本论文作者的导师同意,不得有对本论文进行复制、修改、发行、出租、
+            改编等侵犯著作权的行为,否则,按违背《中华人民共和国著作权法》
+            等有关规定处理并追究法律责任。
+          }
       }
   }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+\__nwafu_auth_orig_decl_text:
+\cs_new_protected:Npn \__nwafu_orig_decl_sign:
   {
-    \tl_const:Nn \c__nwafu_orig_decl_sign_tl
-      { 研究生签名 }
-    \tl_const:Nn \c__nwafu_super_decl_sign_tl
-      { 导师签名 }
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+      {
+        \tl_const:Nn \c__nwafu_orig_decl_sign_tl
+          { 研究生签名 }
+        \tl_const:Nn \c__nwafu_super_decl_sign_tl
+          { 导师签名 }
+      }
+      {
+        \tl_const:Nn \c__nwafu_orig_decl_sign_tl
+          { 本科生签名 }
+        \tl_const:Nn \c__nwafu_super_decl_sign_tl
+          { 指导教师签名 }
+      }
   }
-  {
-    \tl_const:Nn \c__nwafu_orig_decl_sign_tl
-      { 本科生签名 }
-    \tl_const:Nn \c__nwafu_super_decl_sign_tl
-      { 指导教师签名 }
-  }
+\__nwafu_orig_decl_sign:
 \clist_const:Nn \c__nwafu_auth_decl_sign_clist
   { 作者签名, 导师签名, 日期 }
 \clist_const:Nn \c__nwafu_thesis_type_clist
@@ -366,66 +385,75 @@
    { pdf_creator       } { LaTeX~ with~ nwafuthesis~ class },
  }
  { \__nwafu_define_name:nn #1 }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+
+\cs_new_protected:Npn \__nwafu_define_name_const_zh:
   {
-    \clist_map_inline:nn
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
       {
-        { student_id      } { 研究生学号                       },
-        { orig_decl       } { 研究生学位论文的独创性声明       },
-        { super_decl      } { 导师指导研究生学位论文的承诺     },
-        { auth_decl       } { 关于研究生学位论文使用授权的说明 }
+        \clist_map_inline:nn
+          {
+            { student_id      } { 研究生学号                       },
+            { orig_decl       } { 研究生学位论文的独创性声明       },
+            { super_decl      } { 导师指导研究生学位论文的承诺     },
+            { auth_decl       } { 关于研究生学位论文使用授权的说明 }
+          }
+          { \__nwafu_define_name:nn ##1 }
+       }{
+        \clist_map_inline:nn
+          {
+            { major           } { 专业                           },
+            { student_id      } { 学号                           },
+            { author          } { 学生姓名                       },
+            { cosupervisor    } { 协助指导教师                   },
+            { date            } { 完成日期                       },
+            { orig_decl       } { 本科生毕业\clist_item:Nn
+                                  \c__nwafu_bachelor_type_clist {
+                                  \l__nwafu_info_bachelor_type_int
+                                  }的独创性声明                  },
+            { auth_decl       } { 关于本科生毕业\clist_item:Nn
+                                  \c__nwafu_bachelor_type_clist {
+                                  \l__nwafu_info_bachelor_type_int
+                                  }知识产权的说明                }
+          }
+          { \__nwafu_define_name:nn ##1 }
       }
-      { \__nwafu_define_name:nn #1 }
-   }{
-    \clist_map_inline:nn
-      {
-        { major           } { 专业                           },
-        { student_id      } { 学号                           },
-        { author          } { 学生姓名                       },
-        { cosupervisor    } { 协助指导教师                   },
-        { date            } { 完成日期                       },
-        { orig_decl       } { 本科生毕业\clist_item:Nn
-                              \c__nwafu_bachelor_type_clist {
-                              \l__nwafu_info_bachelor_type_int
-                              }的独创性声明                  },
-        { auth_decl       } { 关于本科生毕业\clist_item:Nn
-                              \c__nwafu_bachelor_type_clist {
-                              \l__nwafu_info_bachelor_type_int
-                              }知识产权的说明                }
-      }
-      { \__nwafu_define_name:nn #1 }
   }
+\__nwafu_define_name_const_zh:
 \clist_map_inline:nn
   {
     { supervisor } { 指导教师 } { Supervisor },
   }
   { \__nwafu_define_name:nnn #1 }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \__nwafu_define_name_const_zh_en:
   {
-    \clist_map_inline:nn
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
       {
-        { major             } { 学科专业       } { Major                },
-        { researchfield     } { 研究方向       } { Research~ Field      },
-        { professionaltype  } { 专业学位类型   } { Degree~ Type         },
-        { professionalfield } { 领域名称       } { Field                },
-        { author            } { 论文作者       } { Candidate            },
-        { cosupervisor      } { 联合指导教师   } { Co-Supervisor        },
-        { date              } { 论文提交时间   } { Date~ of~ Submission },
-        { abstract          } { 摘 \quad 要    } { ABSTRACT             },
-        { keywords          } { 关键字         } { KEYWORDS             },
-        { clc               } { 分类号         } { CLC~ number:         },
-        { notation          } { 主要符号对照表 } { List~ of~ Symbols    }
+        \clist_map_inline:nn
+          {
+            { major             } { 学科专业       } { Major                },
+            { researchfield     } { 研究方向       } { Research~ Field      },
+            { professionaltype  } { 专业学位类型   } { Degree~ Type         },
+            { professionalfield } { 领域名称       } { Field                },
+            { author            } { 论文作者       } { Candidate            },
+            { cosupervisor      } { 联合指导教师   } { Co-Supervisor        },
+            { date              } { 论文提交时间   } { Date~ of~ Submission },
+            { abstract          } { 摘 \quad 要    } { ABSTRACT             },
+            { keywords          } { 关键字         } { KEYWORDS             },
+            { clc               } { 分类号         } { CLC~ number:         },
+            { notation          } { 主要符号对照表 } { List~ of~ Symbols    }
+          }
+          { \__nwafu_define_name:nnn ##1 }
+      }{
+        \clist_map_inline:nn
+          {
+            { abstract } { 摘要        } { Abstract          },
+            { keywords } { 关键字      } { Keywords          },
+            { clc      } { 分类号      } { CLC~ number       },
+          }
+          { \__nwafu_define_name:nnn ##1 }
       }
-      { \__nwafu_define_name:nnn #1 }
-  }{
-    \clist_map_inline:nn
-      {
-        { abstract } { 摘要        } { Abstract          },
-        { keywords } { 关键字      } { Keywords          },
-        { clc      } { 分类号      } { CLC~ number       },
-      }
-      { \__nwafu_define_name:nnn #1 }
   }
+\__nwafu_define_name_const_zh_en:
 \clist_map_inline:nn
   {
     { proof      } { 证明 } { Proof      },
@@ -455,7 +483,6 @@
     { amsmath, thmmarks } { ntheorem }
   }
   { \PassOptionsToPackage #1 }
-\RequirePackage { etoolbox }
 \LoadClass { ctexbook }
 \RequirePackage
   {
@@ -468,58 +495,63 @@
     ntheorem,
     enumitem,
     graphicx,
-    longtable,
-    booktabs,
     caption,
+    bicaption,
     xcolor,
   }
 \cs_new_protected:Npn \__nwafu_check_package:nnn #1#2#3
   {
     \@ifpackagelater {#1} {#2}
-      { } { \__nwafu_error:nnn { package-too-old } {#1} {#3} }
+      { } { \__nwafu_error:nnnn { package-too-old } { Package } {#1} {#3} }
   }
+\cs_new_protected:Npn \__nwafu_check_class:nnn #1#2#3
+  {
+    \@ifclasslater {#1} {#2}
+      { } { \__nwafu_error:nnnn { package-too-old } { Class } {#1} {#3} }
+  }
 \__nwafu_msg_new:nn { package-too-old }
   {
-    Package~ "#1"~ is~ too~ old. \\
-    The~ nwafuthesis~ class~ only~ supports~ "#1"~ with~ a~ version \\
-    higher~ than~ v#2. \\\\
-    Please~ update~ an~ up-to-date~ version~ of~ it~ using~ your \\
-    TeX~ package~ manager~ or~ from~ CTAN.
+    #1~ "#2"~ is~ too~ old. \\
+    The~ nwafuthesis~ class~ only~ supports~ "#2" \\
+    with~ a~ version~ higher~ than~ v#3. \\\\
+    Please~ update~ an~ up-to-date~ version~ of~ it \\
+    using~ your~ TeX~ package~ manager~ or~ from~ CTAN.
   }
-\__nwafu_check_package:nnn { fontspec     } { 2017/09/22 } { 2.6e   }
-\__nwafu_check_package:nnn { unicode-math } { 2017/11/18 } { 0.8i   }
+\__nwafu_check_class:nnn { ctexbook } { 2021/03/14 } { 2.5.6 }
 \sys_if_engine_xetex:T
-  { \__nwafu_check_package:nnn { xeCJK          } { 2017/08/07 } { 3.5.0 } }
-\sys_if_engine_luatex:T
-  { \__nwafu_check_package:nnn { xunicode-addon } { 2018/04/30 } { 3.7.1 } }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+  { \__nwafu_check_package:nnn { xeCJK } { 2020/05/01 } { 3.8.3 } }
+\cs_new_protected:Npn \__nwafu_thesis_geometry:
   {
-    \geometry
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
       {
-        paper=a4paper,
-        top=3.1cm,
-        bottom=3.3cm,
-        left=2.6cm,
-        right=2.6cm,
-        headheight=0.8cm,
-        headsep=0.7cm,
-        footskip=1.4cm,
-        %includehead,
-        %includefoot,
+        \geometry
+          {
+            paper=a4paper,
+            top=3.1cm,
+            bottom=3.3cm,
+            left=2.6cm,
+            right=2.6cm,
+            headheight=0.8cm,
+            headsep=0.7cm,
+            footskip=1.4cm,
+            %includehead,
+            %includefoot,
+          }
+      }{
+        \geometry
+          {
+            paper=a4paper,
+            top=3.14cm,
+            bottom=3.8cm,
+            left=2.45cm,
+            right=2.45cm,
+            headheight=0.8cm,
+            headsep=0.63cm,
+            footskip=2.3cm,
+          }
       }
-  }{
-    \geometry
-      {
-        paper=a4paper,
-        top=3.14cm,
-        bottom=3.8cm,
-        left=2.45cm,
-        right=2.45cm,
-        headheight=0.8cm,
-        headsep=0.63cm,
-        footskip=2.3cm,
-      }
   }
+\__nwafu_thesis_geometry:
 \bool_if:NT \g__nwafu_draft_bool { \geometry { showframe } }
 \tl_new:N \g__nwafu_fontset_tl
 \tl_new:N \g__nwafu_cjk_fontset_tl
@@ -550,11 +582,11 @@
 \cs_new_protected:Npn \__nwafu_setmathfont:nn #1#2
   { \__um_setmathfont:nn {#2} {#1} }
 \cs_new_protected:Npn \__nwafu_setCJKmainfont:nn #1#2
-  { \__nwafu_set_family:nnn { \CJKrmdefault } {#2} {#1} }
+  { \__nwafu_set_family:xnn { \CJKrmdefault } {#2} {#1} }
 \cs_new_protected:Npn \__nwafu_setCJKsansfont:nn #1#2
-  { \__nwafu_set_family:nnn { \CJKsfdefault } {#2} {#1} }
+  { \__nwafu_set_family:xnn { \CJKsfdefault } {#2} {#1} }
 \cs_new_protected:Npn \__nwafu_setCJKmonofont:nn #1#2
-  { \__nwafu_set_family:nnn { \CJKttdefault } {#2} {#1} }
+  { \__nwafu_set_family:xnn { \CJKttdefault } {#2} {#1} }
 \cs_new_protected:Npn \__nwafu_set_cjk_font_hei:nn #1#2
   { \__nwafu_set_family:nnn { nwafu at hei } {#2} {#1} }
 \cs_new_protected:Npn \nwafu at hei
@@ -586,6 +618,7 @@
     \cs_new_eq:NN \__nwafu_set_family:nnn  \ctex_ltj_set_family:nnn
     \cs_new_eq:NN \__nwafu_switch_family:n \ctex_ltj_switch_family:n
   }
+\cs_generate_variant:Nn \__nwafu_set_family:nnn { x }
 \cs_new_protected:Npn \__nwafu_set_font_helper:n #1
   {
     \exp_args:Nc \RenewDocumentCommand { set #1 font } { O { } m O { } }
@@ -623,7 +656,9 @@
     \tl_set:Nn \g__nwafu_font_style_libertinus_bf_tl     { Bold            }
     \tl_set:Nn \g__nwafu_font_style_libertinus_it_tl     { Italic          }
     \tl_set:Nn \g__nwafu_font_style_libertinus_bfit_tl   { BoldItalic      }
-    \tl_set:Nn \g__nwafu_font_style_libertinus_bfsl_tl   { BoldOblique     }
+    \fontspec_font_if_exist:nTF { LibertinusSans-BoldOblique.otf }
+      { \tl_set:Nn \g__nwafu_font_style_libertinus_bfsl_tl { BoldOblique } }
+      { \tl_set:Nn \g__nwafu_font_style_libertinus_bfsl_tl { Bold        } }
   }
   {
     \tl_set:Nn \g__nwafu_font_family_libertinus_serif_tl { libertinusserif }
@@ -840,12 +875,7 @@
   }
 \cs_new_protected:Npn \__nwafu_load_cjk_font_founder:
   {
-    \__nwafu_setCJKmainfont:nn   { FZShuSong-Z01 }
-      {
-        UprightFont    = *,
-        BoldFont       = FZHei-B01,
-        ItalicFont     = FZKai-Z03,
-      }
+    \__nwafu_setCJKmainfont:n   { FZShuSong-Z01 }
     \__nwafu_setCJKsansfont:n   { FZHei-B01      }
     \__nwafu_setCJKmonofont:n   { FZFangSong-Z02 }
     \__nwafu_set_cjk_font_hei:n { FZHei-B01      }
@@ -919,8 +949,8 @@
     \__nwafu_set_cjk_font_hei:n { SimHei   }
     \__nwafu_set_cjk_font_kai:n { KaiTi    }
   }
+\tl_new:N \l__nwafu_font_tl
 \tl_new:N \l__nwafu_cjkfont_tl
-\tl_new:N \l__nwafu_font_tl
 \cs_new_protected:Npn \__nwafu_detect_platform:
   {
     \sys_if_platform_windows:TF
@@ -943,17 +973,15 @@
   { \file_if_exist:nTF { /System/Library/Fonts/Menlo.ttc } }
 \cs_new_protected:Npn \__nwafu_load_font:
   {
-    \tl_if_empty:NTF \g__nwafu_fontset_tl
+    \tl_if_empty:NT \g__nwafu_fontset_tl
       {
         \__nwafu_detect_platform:
         \tl_gset_eq:NN \g__nwafu_fontset_tl \l__nwafu_font_tl
-      }{
       }
-    \tl_if_empty:NTF \g__nwafu_cjk_fontset_tl
+    \tl_if_empty:NT \g__nwafu_cjk_fontset_tl
       {
         \__nwafu_detect_platform:
         \tl_gset_eq:NN \g__nwafu_cjk_fontset_tl \l__nwafu_cjkfont_tl
-      }{
       }
     \use:c { __nwafu_load_font_     \g__nwafu_fontset_tl     : }
     \use:c { __nwafu_load_cjk_font_ \g__nwafu_cjk_fontset_tl : }
@@ -1010,9 +1038,17 @@
   }
 \cs_new:Npn \__nwafu_set_fullwidth_stop_catcode:
   {
-    \char_set_active_eq:nN { "3002 } \c__nwafu_fwid_full_stop_tl
-    \char_set_catcode_active:n { "3002 }
+    \char_set_active_eq:NN ^^^^3002 \c__nwafu_fwid_full_stop_tl
+    \char_set_catcode_active:N ^^^^3002
+    \clist_map_inline:nn
+      { \c__nwafu_orig_decl_text_tl, \c__nwafu_auth_decl_text_tl }
+      { \tl_set_rescan:Nno ##1 { } {##1} }
   }
+\DeclareEmphSequence
+  {
+    \bfseries,
+    \upshape \CJKfamily { \CJKfamilydefault },
+  }
 \fancyhf { }
 \tl_new:N \l__nwafu_header_center_mark_tl
 \RenewDocumentCommand \cleardoublepage { }
@@ -1028,7 +1064,7 @@
 \pagestyle { fancy }
 \cs_gset_eq:NN \nwafuhead\fancyhead
 \cs_gset_eq:NN \nwafufoot\fancyfoot
-\RenewDocumentCommand{\frontmatter}{sO{Roman}}
+\RenewDocumentCommand{\frontmatter}{s O{Roman}}
   {
     \IfBooleanTF{#1}{\clearpage}{\cleardoublepage}
     \@mainmatterfalse
@@ -1039,8 +1075,9 @@
         \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
           {
             \nwafuhead[EC]{\small \nouppercase{
-                \c__nwafu_name_simp_tl \clist_item:Nn
-                \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                \c__nwafu_name_simp_tl
+                \clist_item:Nn \c__nwafu_thesis_type_clist
+                  { \g__nwafu_thesis_type_int } }
               }
           }{
             \nwafuhead[EC]{\small \nouppercase{ \leftmark } }
@@ -1064,8 +1101,9 @@
         \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
           {
             \nwafuhead[EC]{\small \nouppercase{
-                \c__nwafu_name_simp_tl \clist_item:Nn
-                \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                \c__nwafu_name_simp_tl
+                \clist_item:Nn \c__nwafu_thesis_type_clist
+                  { \g__nwafu_thesis_type_int } }
               }
           }{
             \nwafuhead[EC]{\small \nouppercase{ \l__nwafu_info_title_tl } }
@@ -1080,8 +1118,9 @@
                 \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
                   {
                     \small \nouppercase{
-                        \c__nwafu_name_simp_tl \clist_item:Nn
-                        \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                        \c__nwafu_name_simp_tl
+                        \clist_item:Nn \c__nwafu_thesis_type_clist
+                          { \g__nwafu_thesis_type_int } }
                   }{
                     \small \nouppercase{ \l__nwafu_info_title_tl }
                   }
@@ -1105,8 +1144,9 @@
         \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
           {
             \nwafuhead[EC]{\small \nouppercase{
-                \c__nwafu_name_simp_tl \clist_item:Nn
-                \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                \c__nwafu_name_simp_tl
+                \clist_item:Nn \c__nwafu_thesis_type_clist
+                  { \g__nwafu_thesis_type_int } }
               }
           }{
             \nwafuhead[EC]{\small \nouppercase{ \leftmark } }
@@ -1121,8 +1161,9 @@
                 \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
                   {
                     \small \nouppercase{
-                        \c__nwafu_name_simp_tl \clist_item:Nn
-                        \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                        \c__nwafu_name_simp_tl
+                        \clist_item:Nn \c__nwafu_thesis_type_clist
+                          { \g__nwafu_thesis_type_int } }
                   }{
                     \small \nouppercase{ \leftmark }
                   }
@@ -1140,8 +1181,9 @@
         \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
           {
             \nwafuhead[EC]{\small \nouppercase{
-                \c__nwafu_name_simp_tl \clist_item:Nn
-                \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                \c__nwafu_name_simp_tl
+                \clist_item:Nn \c__nwafu_thesis_type_clist
+                  { \g__nwafu_thesis_type_int } }
               }
           }{
             \nwafuhead[EC]{\small \nouppercase{ \@chapapp } }
@@ -1156,8 +1198,9 @@
                 \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
                   {
                     \small \nouppercase{
-                        \c__nwafu_name_simp_tl \clist_item:Nn
-                        \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                        \c__nwafu_name_simp_tl
+                        \clist_item:Nn \c__nwafu_thesis_type_clist
+                          { \g__nwafu_thesis_type_int } }
                   }{
                     \small \nouppercase{ \@chapapp }
                   }
@@ -1175,8 +1218,9 @@
         \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
           {
             \nwafuhead[EC]{\small \nouppercase{
-                \c__nwafu_name_simp_tl \clist_item:Nn
-                \c__nwafu_thesis_type_clist { \g__nwafu_thesis_type_int } }
+                \c__nwafu_name_simp_tl
+                \clist_item:Nn \c__nwafu_thesis_type_clist
+                  { \g__nwafu_thesis_type_int } }
               }
           }{
             \nwafuhead[EC]{\small \nouppercase{ \leftmark } }
@@ -1200,91 +1244,95 @@
           }
       }
   }
-\int_compare:nNnTF{ \g__nwafu_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \__nwafu_ctexset_caption:
   {
-    \keys_set:nn { ctex }
+    \int_compare:nNnTF{ \g__nwafu_thesis_type_int } < { 3 }
       {
-        secnumdepth = 3,
-        chapter =
+        \keys_set:nn { ctex }
           {
-            pagestyle   = fancy,
-            aftername   = \hspace*{1.0\ccwd},
-            format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
-            beforeskip  = 1.47\baselineskip,
-            afterskip   = 1.24\baselineskip,
-            number      = \__nwafu_arabic:n { chapter },
-            fixskip     = true
-          },
-        section =
-          {
-            format      = \zihao{-3} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 1.09\baselineskip,
-            afterskip   = 0.80\baselineskip,
-            fixskip     = true
-          },
-        subsection =
-          {
-            format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 0.80\baselineskip,
-            fixskip     = true
-          },
-        subsubsection =
-          {
-            format      = \zihao{-4} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 0.40\baselineskip,
-            afterskip   = 0.40\baselineskip,
-            fixskip     = true
+            secnumdepth = 3,
+            chapter =
+              {
+                pagestyle   = fancy,
+                aftername   = \hspace*{1.0\ccwd},
+                format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
+                beforeskip  = 1.47\baselineskip,
+                afterskip   = 1.24\baselineskip,
+                number      = \__nwafu_arabic:n { chapter },
+                fixskip     = true
+              },
+            section =
+              {
+                format      = \zihao{-3} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 1.09\baselineskip,
+                afterskip   = 0.80\baselineskip,
+                fixskip     = true
+              },
+            subsection =
+              {
+                format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 0.80\baselineskip,
+                fixskip     = true
+              },
+            subsubsection =
+              {
+                format      = \zihao{-4} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 0.40\baselineskip,
+                afterskip   = 0.40\baselineskip,
+                fixskip     = true
+              }
           }
-      }
-  }{
-    \keys_set:nn { ctex }
-      {
-        secnumdepth = 3,
-        chapter =
+      }{
+        \keys_set:nn { ctex }
           {
-            pagestyle   = fancy,
-            name = { \bool_if:NT \l__nwafu_withchap_bool {第},
-                     \bool_if:NT \l__nwafu_withchap_bool {章} },
-            number      = \__nwafu_arabic:n { chapter },
-            aftername   = \hspace*{\ccwd},
-            format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
-            beforeskip  = 0.25\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true
-          },
-        section =
-          {
-            aftername   = \hspace*{0.5\ccwd},
-            format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
-            beforeskip  = 0.60\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true,
-            afterindent = true,
-          },
-        subsection =
-          {
-            aftername   = \hspace*{0.5\ccwd},
-            format      = \zihao{-4} \normalfont \nwafu at hei \bfseries,
-            beforeskip  = 0.60\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true,
-            afterindent = true,
-            % indent      = 2\ccwd,
-          },
-        subsubsection =
-          {
-            name        = {(,)},
-            aftername   = \hspace*{0.5\ccwd},
-            number      = \__nwafu_arabic:n { subsubsection },
-            format      = \zihao{-4} \normalfont,
-            beforeskip  = 0.60\baselineskip,
-            afterskip   = 0.65\baselineskip,
-            fixskip     = true,
-            % afterindent = true,
-            indent      = 2\ccwd,
+            secnumdepth = 3,
+            chapter =
+              {
+                pagestyle   = fancy,
+                name = { \bool_if:NT \l__nwafu_withchap_bool {第},
+                         \bool_if:NT \l__nwafu_withchap_bool {章} },
+                number      = \__nwafu_arabic:n { chapter },
+                aftername   = \hspace*{\ccwd},
+                format      = \zihao{3} \normalfont \nwafu at hei \bfseries \centering,
+                beforeskip  = 0.25\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true
+              },
+            section =
+              {
+                aftername   = \hspace*{0.5\ccwd},
+                format      = \zihao{4} \normalfont \nwafu at hei \bfseries \raggedright,
+                beforeskip  = 0.60\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true,
+                afterindent = true,
+              },
+            subsection =
+              {
+                aftername   = \hspace*{0.5\ccwd},
+                format      = \zihao{-4} \normalfont \nwafu at hei \bfseries,
+                beforeskip  = 0.60\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true,
+                afterindent = true,
+                % indent      = 2\ccwd,
+              },
+            subsubsection =
+              {
+                name        = {(,)},
+                aftername   = \hspace*{0.5\ccwd},
+                number      = \__nwafu_arabic:n { subsubsection },
+                format      = \zihao{-4} \normalfont,
+                beforeskip  = 0.60\baselineskip,
+                afterskip   = 0.65\baselineskip,
+                fixskip     = true,
+                % afterindent = true,
+                indent      = 2\ccwd,
+              }
           }
       }
   }
+\__nwafu_ctexset_caption:
 \cs_new_protected:Npn \__nwafu_chapter:n #1
   {
     \group_begin:
@@ -1683,8 +1731,7 @@
     \dim_set:Nn \l__nwafu_tmpt_dim {#1}
     \dim_add:Nn \l__nwafu_tmpt_dim {0.6em}
     \makebox[0cm][l]{\rule[-0.5ex]{\l__nwafu_tmpt_dim}{0.4 pt}}
-      {\hbox_to_wd:nn {\l__nwafu_tmpt_dim} { \hfil #2 \hfil }}
-    % \fbox[b]{\parbox {#1} { \centering #2 }}
+    \hbox_to_wd:nn {\l__nwafu_tmpt_dim} { \hfil #2 \hfil }
   }
 \cs_generate_variant:Nn \__nwafu_center_box:nn  { Vn }
 \cs_new:Npn \__nwafu_fixed_width_box:nn #1#2
@@ -1843,12 +1890,12 @@
           {1}{
             \clist_set:Nx \l__nwafu_tmpa_clist
               {
-                \c__nwafu_name_major_tl,
-                \c__nwafu_name_researchfield_tl,
-                \c__nwafu_name_author_tl,
-                \c__nwafu_name_supervisor_tl,
-                \c__nwafu_name_cosupervisor_tl,
-                \c__nwafu_name_date_tl,
+                { \c__nwafu_name_major_tl         },
+                { \c__nwafu_name_researchfield_tl },
+                { \c__nwafu_name_author_tl        },
+                { \c__nwafu_name_supervisor_tl    },
+                { \c__nwafu_name_cosupervisor_tl  },
+                { \c__nwafu_name_date_tl          }
               }
             \__nwafu_get_max_text_width:NN \l__nwafu_tmpa_dim \l__nwafu_tmpa_clist
             \clist_set:Nx \l__nwafu_tmpb_clist
@@ -1868,12 +1915,12 @@
               {1}{
                 \clist_set:Nx \l__nwafu_tmpa_clist
                   {
-                    \c__nwafu_name_major_tl,
-                    \c__nwafu_name_researchfield_tl,
-                    \c__nwafu_name_author_tl,
-                    \c__nwafu_name_supervisor_tl,
-                    \c__nwafu_name_cosupervisor_tl,
-                    \c__nwafu_name_date_tl,
+                    { \c__nwafu_name_major_tl         },
+                    { \c__nwafu_name_researchfield_tl },
+                    { \c__nwafu_name_author_tl        },
+                    { \c__nwafu_name_supervisor_tl    },
+                    { \c__nwafu_name_cosupervisor_tl  },
+                    { \c__nwafu_name_date_tl,         }
                   }
                 \__nwafu_get_max_text_width:NN \l__nwafu_tmpa_dim \l__nwafu_tmpa_clist
                 \clist_set:Nx \l__nwafu_tmpb_clist
@@ -1890,12 +1937,12 @@
               {2}{
                 \clist_set:Nx \l__nwafu_tmpa_clist
                   {
-                    \c__nwafu_name_professionaltype_tl,
-                    \c__nwafu_name_professionalfield_tl,
-                    \c__nwafu_name_author_tl,
-                    \c__nwafu_name_supervisor_tl,
-                    \c__nwafu_name_cosupervisor_tl,
-                    \c__nwafu_name_date_tl,
+                    { \c__nwafu_name_professionaltype_tl  },
+                    { \c__nwafu_name_professionalfield_tl },
+                    { \c__nwafu_name_author_tl            },
+                    { \c__nwafu_name_supervisor_tl        },
+                    { \c__nwafu_name_cosupervisor_tl      },
+                    { \c__nwafu_name_date_tl              }
                   }
                 \__nwafu_get_max_text_width:NN \l__nwafu_tmpa_dim \l__nwafu_tmpa_clist
                 \clist_set:Nx \l__nwafu_tmpb_clist
@@ -1914,13 +1961,13 @@
           {3}{
             \clist_set:Nx \l__nwafu_tmpa_clist
               {
-                \c__nwafu_name_department_tl,
-                \c__nwafu_name_major_tl,
-                \c__nwafu_name_enroll_tl\c__nwafu_name_class_id_tl,
-                \c__nwafu_name_author_tl,
-                \c__nwafu_name_supervisor_tl,
-                \c__nwafu_name_cosupervisor_tl,
-                \c__nwafu_name_date_tl,
+                { \c__nwafu_name_department_tl                   },
+                { \c__nwafu_name_major_tl                        },
+                { \c__nwafu_name_enroll_tl\c__nwafu_name_class_id_tl },
+                { \c__nwafu_name_author_tl                       },
+                { \c__nwafu_name_supervisor_tl                   },
+                { \c__nwafu_name_cosupervisor_tl                 },
+                { \c__nwafu_name_date_tl                         }
               }
             \__nwafu_get_max_text_width:NN \l__nwafu_tmpa_dim \l__nwafu_tmpa_clist
             \clist_set:Nx \l__nwafu_tmpb_clist
@@ -1955,12 +2002,12 @@
         {1}{
           \clist_set:Nx \l__nwafu_tmpa_clist
             {
-              {\c__nwafu_name_major_en_tl{\l__nwafu_info_major_en_tl}},
-              {\c__nwafu_name_researchfield_en_tl{\l__nwafu_info_researchfield_en_tl}},
-              {\c__nwafu_name_author_en_tl{\l__nwafu_info_author_en_tl}},
-              {\c__nwafu_name_supervisor_en_tl{\l__nwafu_info_supervisor_en_tl}},
-              {\c__nwafu_name_cosupervisor_en_tl{\l__nwafu_info_cosupervisor_en_tl}},
-              {\c__nwafu_name_date_en_tl{\l__nwafu_info_date_en_tl}},
+              {\c__nwafu_name_major_en_tl{\l__nwafu_info_major_en_tl}                 },
+              {\c__nwafu_name_researchfield_en_tl{\l__nwafu_info_researchfield_en_tl} },
+              {\c__nwafu_name_author_en_tl{\l__nwafu_info_author_en_tl}               },
+              {\c__nwafu_name_supervisor_en_tl{\l__nwafu_info_supervisor_en_tl}       },
+              {\c__nwafu_name_cosupervisor_en_tl{\l__nwafu_info_cosupervisor_en_tl}   },
+              {\c__nwafu_name_date_en_tl{\l__nwafu_info_date_en_tl}                   }
             }
           \__nwafu_get_max_text_width:NN \l__nwafu_tmpa_dim \l__nwafu_tmpa_clist
           \dim_add:Nn \l__nwafu_tmpa_dim {2.5em}
@@ -1968,12 +2015,12 @@
             \flushleft
             \clist_set:Nx \l__nwafu_tmpa_clist
               {
-                \c__nwafu_name_major_en_tl,
-                \c__nwafu_name_researchfield_en_tl,
-                \c__nwafu_name_author_en_tl,
-                \c__nwafu_name_supervisor_en_tl,
-                \c__nwafu_name_cosupervisor_en_tl,
-                \c__nwafu_name_date_en_tl,
+                { \c__nwafu_name_major_en_tl         },
+                { \c__nwafu_name_researchfield_en_tl },
+                { \c__nwafu_name_author_en_tl        },
+                { \c__nwafu_name_supervisor_en_tl    },
+                { \c__nwafu_name_cosupervisor_en_tl  },
+                { \c__nwafu_name_date_en_tl          }
               }
             \clist_set:Nx \l__nwafu_tmpb_clist
               {
@@ -2002,12 +2049,12 @@
               {1}{
                 \clist_set:Nx \l__nwafu_tmpa_clist
                   {
-                    {\c__nwafu_name_major_en_tl{\l__nwafu_info_major_en_tl}},
-                    {\c__nwafu_name_researchfield_en_tl{\l__nwafu_info_researchfield_en_tl}},
-                    {\c__nwafu_name_author_en_tl{\l__nwafu_info_author_en_tl}},
-                    {\c__nwafu_name_supervisor_en_tl{\l__nwafu_info_supervisor_en_tl}},
-                    {\c__nwafu_name_cosupervisor_en_tl{\l__nwafu_info_cosupervisor_en_tl}},
-                    {\c__nwafu_name_date_en_tl{\l__nwafu_info_date_en_tl}},
+                    {\c__nwafu_name_major_en_tl{\l__nwafu_info_major_en_tl}                 },
+                    {\c__nwafu_name_researchfield_en_tl{\l__nwafu_info_researchfield_en_tl} },
+                    {\c__nwafu_name_author_en_tl{\l__nwafu_info_author_en_tl}               },
+                    {\c__nwafu_name_supervisor_en_tl{\l__nwafu_info_supervisor_en_tl}       },
+                    {\c__nwafu_name_cosupervisor_en_tl{\l__nwafu_info_cosupervisor_en_tl}   },
+                    {\c__nwafu_name_date_en_tl{\l__nwafu_info_date_en_tl}                   }
                   }
                 \__nwafu_get_max_text_width:NN \l__nwafu_tmpa_dim \l__nwafu_tmpa_clist
                 \dim_add:Nn \l__nwafu_tmpa_dim {2.5em}
@@ -2015,12 +2062,12 @@
                   \flushleft
                   \clist_set:Nx \l__nwafu_tmpa_clist
                      {
-                       \c__nwafu_name_major_en_tl,
-                       \c__nwafu_name_researchfield_en_tl,
-                       \c__nwafu_name_author_en_tl,
-                       \c__nwafu_name_supervisor_en_tl,
-                       \c__nwafu_name_cosupervisor_en_tl,
-                       \c__nwafu_name_date_en_tl,
+                       { \c__nwafu_name_major_en_tl         },
+                       { \c__nwafu_name_researchfield_en_tl },
+                       { \c__nwafu_name_author_en_tl        },
+                       { \c__nwafu_name_supervisor_en_tl    },
+                       { \c__nwafu_name_cosupervisor_en_tl  },
+                       { \c__nwafu_name_date_en_tl          }
                      }
                   \clist_set:Nx \l__nwafu_tmpb_clist
                     {
@@ -2059,12 +2106,12 @@
                   \flushleft
                   \clist_set:Nx \l__nwafu_tmpa_clist
                      {
-                       \c__nwafu_name_professionaltype_en_tl,
-                       \c__nwafu_name_professionalfield_en_tl,
-                       \c__nwafu_name_author_en_tl,
-                       \c__nwafu_name_supervisor_en_tl,
-                       \c__nwafu_name_cosupervisor_en_tl,
-                       \c__nwafu_name_date_en_tl,
+                       { \c__nwafu_name_professionaltype_en_tl  },
+                       { \c__nwafu_name_professionalfield_en_tl },
+                       { \c__nwafu_name_author_en_tl            },
+                       { \c__nwafu_name_supervisor_en_tl        },
+                       { \c__nwafu_name_cosupervisor_en_tl      },
+                       { \c__nwafu_name_date_en_tl              }
                      }
                   \clist_set:Nx \l__nwafu_tmpb_clist
                     {
@@ -2450,14 +2497,18 @@
     \UseInstance { nwafu / cover } { cover-vii-default }
     \restoregeometry
   }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \__nwafu_declare_cover_i_template:
   {
-    \DeclareCoverTemplate { cover-i   }
-      { logo, type, title, info }
-  }{
-    \DeclareCoverTemplate { cover-i   }
-      { id, logo, type, title, info }
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+      {
+        \DeclareCoverTemplate { cover-i   }
+          { logo, type, title, info }
+      }{
+        \DeclareCoverTemplate { cover-i   }
+          { id, logo, type, title, info }
+      }
   }
+\__nwafu_declare_cover_i_template:
 \DeclareCoverTemplate { cover-ii  } {
   type, title, info, department, nwafu
   }
@@ -2491,129 +2542,137 @@
     authorization-decl-sig,
     supervisor-decl-sig
   }
-\int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
+\cs_new_protected:Npn \__nwafu_define_cover_i_entities:
   {
-    \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
+    \int_compare:nNnTF { \g__nwafu_thesis_type_int } < { 3 }
       {
-        bottom-skip            = 0 pt plus 1.5 fill,
-        logo     / content     = \__nwafu_cover_logo:,
-        logo     / bottom-skip = -45 pt plus 0.3 fill,
-        logo     / align       = center,
-        type     / content     = \__nwafu_cover_type:,
-        type     / format      = \sffamily \zihao {  0 },% \bfseries,
-        type     / bottom-skip = -20 pt plus 0.3 fill,
-        type     / align       = center,
-        title    / content     =
-          \__nwafu_fixed_width_center_box:nn
-            { 0.9 \textwidth } { \l__nwafu_info_title_tl },
-        title    / format      = \nwafu at hei \bfseries \zihao { 2 },
-        title    / bottom-skip = 80 pt plus 0.3 fill,
-        title    / align       = center,
-        info     / content     = \__nwafu_cover_info:,
-        info     / format      = \__nwafu_line_spread:n {1.05}\nwafu at hei \zihao { -3 },
-        info     / align       = center,
+        \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
+          {
+            bottom-skip            = 0 pt plus 1.5 fill,
+            logo     / content     = \__nwafu_cover_logo:,
+            logo     / bottom-skip = -45 pt plus 0.3 fill,
+            logo     / align       = center,
+            type     / content     = \__nwafu_cover_type:,
+            type     / format      = \sffamily \zihao {  0 },% \bfseries,
+            type     / bottom-skip = -20 pt plus 0.3 fill,
+            type     / align       = center,
+            title    / content     =
+              \__nwafu_fixed_width_center_box:nn
+                { 0.9 \textwidth } { \l__nwafu_info_title_tl },
+            title    / format      = \nwafu at hei \bfseries \zihao { 2 },
+            title    / bottom-skip = 80 pt plus 0.3 fill,
+            title    / align       = center,
+            info     / content     = \__nwafu_cover_info:,
+            info     / format      = \__nwafu_line_spread:n {1.05}\nwafu at hei \zihao { -3 },
+            info     / align       = center,
+          }
+      }{
+        \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
+          {
+            bottom-skip            = 0 pt plus 0.5 fill,
+            id       / content     = \__nwafu_cover_id:,
+            id       / format      = \bfseries\zihao { 4 },
+            id       / bottom-skip = 0 pt plus 0.3 fill,
+            id       / align       = right,
+            logo     / content     = \__nwafu_cover_logo:,
+            logo     / bottom-skip = -30 pt,% plus 0.3 fill,
+            logo     / align       = center,
+            type     / content     = \__nwafu_cover_type:,
+            type     / format      = \bfseries\nwafu at kai\zihao {  1 },
+            type     / bottom-skip = -20 pt plus 0.3 fill,
+            type     / align       = center,
+            title    / content     =
+              \__nwafu_fixed_width_center_box:nn
+                { 0.9 \textwidth } { \l__nwafu_info_title_tl },
+            title    / format      = \nwafu at hei \bfseries\zihao { 2 },
+            title    / bottom-skip = 80 pt plus 0.3 fill,
+            title    / align       = center,
+            info     / content     = \__nwafu_cover_info:,
+            info     / format      = \rmfamily\zihao { 3 },
+            info     / align       = center,
+          }
       }
-  }{
-    \DeclareInstance { nwafu / cover } { cover-i-default } { cover-i }
+  }
+\__nwafu_define_cover_i_entities:
+\cs_new_protected:Npn \__nwafu_define_cover_ii_entities:
+  {
+    \int_case:nn {\g__nwafu_thesis_type_int}
       {
-        bottom-skip            = 0 pt plus 0.5 fill,
-        id       / content     = \__nwafu_cover_id:,
-        id       / format      = \bfseries\zihao { 4 },
-        id       / bottom-skip = 0 pt plus 0.3 fill,
-        id       / align       = right,
-        logo     / content     = \__nwafu_cover_logo:,
-        logo     / bottom-skip = -30 pt,% plus 0.3 fill,
-        logo     / align       = center,
-        type     / content     = \__nwafu_cover_type:,
-        type     / format      = \bfseries\nwafu at kai\zihao {  1 },
-        type     / bottom-skip = -20 pt plus 0.3 fill,
-        type     / align       = center,
-        title    / content     =
-          \__nwafu_fixed_width_center_box:nn
-            { 0.9 \textwidth } { \l__nwafu_info_title_tl },
-        title    / format      = \nwafu at hei \bfseries\zihao { 2 },
-        title    / bottom-skip = 80 pt plus 0.3 fill,
-        title    / align       = center,
-        info     / content     = \__nwafu_cover_info:,
-        info     / format      = \rmfamily\zihao { 3 },
-        info     / align       = center,
+        {1}{
+             \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
+               {
+                 bottom-skip            = 0 pt plus 0.5 fill,
+                 type     / content =
+                   \__nwafu_fixed_width_center_box:nn { 0.7\textwidth } {
+                      Thesis~Submitted~to~\c__nwafu_name_en_tl\\
+                      in~Partial~Fulfillment~of~the~Requirements\\
+                      for~Degree~of\\
+                      Doctor~of~Philosophy
+                  },
+                 type     / format  = \__nwafu_line_spread:n {1.22} \zihao { -3 },
+                 type     / bottom-skip = 42 pt,% plus 0.3 fill,
+                 type     / align   = center,
+                 title     / content = \l__nwafu_info_title_en_tl,
+                 title     / format  = \__nwafu_line_spread:n {0.90}
+                                       \zihao { 1 } \bfseries,
+                 title     / bottom-skip = 35 pt,% plus 0.3 fill,
+                 title     / align   = center,
+                 info     / content     = \__nwafu_cover_info_en:,
+                 info     / format      = \__nwafu_line_spread:n {1.12} \zihao { -3 },
+                 info    / bottom-skip = 72 pt,% plus 0.3 fill,
+                 info     / align       = center,
+                 department     / content     = \l__nwafu_info_department_en_tl,
+                 department     / format      = \zihao { -3 },
+                 department     / bottom-skip = -32 pt,% plus 0.3 fill,
+                 department     / align       = center,
+                 nwafu     / content     = \c__nwafu_name_en_tl,
+                 nwafu     / format      = \zihao { -3 },
+                 nwafu     / align       = center,
+               }
+        }
+        {2}{
+             \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
+               {
+                 bottom-skip            = 0 pt plus 0.5 fill,
+                 type     / content =
+                   \__nwafu_fixed_width_center_box:nn { 0.7\textwidth } {
+                      Thesis~Submitted~to~\c__nwafu_name_en_tl\\
+                      in~Partial~Fulfillment~of~the~Requirements\\
+                      for~Degree~of\\
+                      Master~of
+                     \int_case:nn {\l__nwafu_info_degree_type_int}
+                      {
+                        {1}{
+                          \__nwafu_text_uline:V \l__nwafu_info_mastertype_en_tl
+                        }
+                        {2}{
+                          \__nwafu_text_uline:V \l__nwafu_info_professionaltype_en_tl
+                        }
+                      }
+                   },
+                 type     / format  = \__nwafu_line_spread:n {1.22} \zihao { -3 },
+                 type     / bottom-skip = 42 pt,% plus 0.3 fill,
+                 type     / align   = center,
+                 title     / content = \l__nwafu_info_title_en_tl,
+                 title     / format  = \__nwafu_line_spread:n {0.90} \zihao { 1 } \bfseries,
+                 title     / bottom-skip = 35 pt,% plus 0.3 fill,
+                 title     / align   = center,
+                 info     / content     = \__nwafu_cover_info_en:,
+                 info     / format      = \__nwafu_line_spread:n {1.12} \zihao { -3 },
+                 info    / bottom-skip = 72 pt,% plus 0.3 fill,
+                 info     / align       = center,
+                 department     / content     = \l__nwafu_info_department_en_tl,
+                 department     / format      = \zihao { -3 },
+                 department     / bottom-skip = -32 pt,% plus 0.3 fill,
+                 department     / align       = center,
+                 nwafu     / content     = \c__nwafu_name_en_tl,
+                 nwafu     / format      = \zihao { -3 },
+                 nwafu     / align       = center,
+               }
+        }
       }
   }
-\int_case:nn {\g__nwafu_thesis_type_int}
-  {
-    {1}{
-         \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
-           {
-             bottom-skip            = 0 pt plus 0.5 fill,
-             type     / content =
-               \__nwafu_fixed_width_center_box:nn { 0.7\textwidth } {
-                  Thesis~Submitted~to~\c__nwafu_name_en_tl\\
-                  in~Partial~Fulfillment~of~the~Requirements\\
-                  for~Degree~of\\
-                  Doctor~of~Philosophy
-              },
-             type     / format  = \__nwafu_line_spread:n {1.22} \zihao { -3 },
-             type     / bottom-skip = 42 pt,% plus 0.3 fill,
-             type     / align   = center,
-             title     / content = \l__nwafu_info_title_en_tl,
-             title     / format  = \__nwafu_line_spread:n {0.90}
-                                   \zihao { 1 } \bfseries,
-             title     / bottom-skip = 35 pt,% plus 0.3 fill,
-             title     / align   = center,
-             info     / content     = \__nwafu_cover_info_en:,
-             info     / format      = \__nwafu_line_spread:n {1.12} \zihao { -3 },
-             info    / bottom-skip = 72 pt,% plus 0.3 fill,
-             info     / align       = center,
-             department     / content     = \l__nwafu_info_department_en_tl,
-             department     / format      = \zihao { -3 },
-             department     / bottom-skip = -32 pt,% plus 0.3 fill,
-             department     / align       = center,
-             nwafu     / content     = \c__nwafu_name_en_tl,
-             nwafu     / format      = \zihao { -3 },
-             nwafu     / align       = center,
-           }
-    }
-    {2}{
-         \DeclareInstance { nwafu / cover } { cover-ii-default } { cover-ii }
-           {
-             bottom-skip            = 0 pt plus 0.5 fill,
-             type     / content =
-               \__nwafu_fixed_width_center_box:nn { 0.7\textwidth } {
-                  Thesis~Submitted~to~\c__nwafu_name_en_tl\\
-                  in~Partial~Fulfillment~of~the~Requirements\\
-                  for~Degree~of\\
-                  Master~of
-                 \int_case:nn {\l__nwafu_info_degree_type_int}
-                  {
-                    {1}{
-                      \__nwafu_text_uline:V \l__nwafu_info_mastertype_en_tl
-                    }
-                    {2}{
-                      \__nwafu_text_uline:V \l__nwafu_info_professionaltype_en_tl
-                    }
-                  }
-               },
-             type     / format  = \__nwafu_line_spread:n {1.22} \zihao { -3 },
-             type     / bottom-skip = 42 pt,% plus 0.3 fill,
-             type     / align   = center,
-             title     / content = \l__nwafu_info_title_en_tl,
-             title     / format  = \__nwafu_line_spread:n {0.90} \zihao { 1 } \bfseries,
-             title     / bottom-skip = 35 pt,% plus 0.3 fill,
-             title     / align   = center,
-             info     / content     = \__nwafu_cover_info_en:,
-             info     / format      = \__nwafu_line_spread:n {1.12} \zihao { -3 },
-             info    / bottom-skip = 72 pt,% plus 0.3 fill,
-             info     / align       = center,
-             department     / content     = \l__nwafu_info_department_en_tl,
-             department     / format      = \zihao { -3 },
-             department     / bottom-skip = -32 pt,% plus 0.3 fill,
-             department     / align       = center,
-             nwafu     / content     = \c__nwafu_name_en_tl,
-             nwafu     / format      = \zihao { -3 },
-             nwafu     / align       = center,
-           }
-    }
-  }
+\__nwafu_define_cover_ii_entities:
 \DeclareInstance { nwafu / cover } { cover-iii-default } { cover-iii }
   {
     top-skip            = -55 pt plus 0.1 fill,
@@ -2850,7 +2909,7 @@
         \tableofcontents
       }
   }
-\AfterEndPreamble
+\ctex_after_end_preamble:n
   {
     \bool_if:NT \l__nwafu_auto_make_cover_bool
       {
@@ -3164,11 +3223,11 @@
     \vspace{32bp}{\zihao{-4}\nwafu at hei\bfseries\centerline{#1}}\par\vspace{14bp}
   }
 \newlist{publications}{enumerate}{1}
-\setlist[publications]{label=[\arabic*],align=left,nosep,itemsep=6bp,
-  leftmargin=10mm,before=\zihao{-4},resume}
+\setlist[publications]{label=[\arabic*],align=left,nosep,itemsep=3bp,
+  leftmargin=10mm,before=\zihao{5},resume}
 \newlist{achievements}{enumerate}{1}
-\setlist[achievements]{label=[\arabic*],align=left,nosep,itemsep=6bp,
-  leftmargin=10mm,before=\zihao{-4}}
+\setlist[achievements]{label=[\arabic*],align=left,nosep,itemsep=3bp,
+  leftmargin=10mm,before=\zihao{5}}
 \def\publicationskip{\bigskip\bigskip}
 \clist_new:N \l__nwafu_bib_resource_clist
 \keys_define:nn { nwafu / style }
@@ -3183,363 +3242,16 @@
   }
 \cs_new_protected:Npn \__nwafu_biblatex_pre_setup:
   {
-    \__nwafu_pass_options_to_biblatex:n { style = gb7714-2015ay }
-    \__nwafu_pass_options_to_biblatex:n { backend = biber, sortlocale=zh__pinyin,
-        gbtype=false, maxbibnames=99, maxcitenames=2, mincitenames=1,
-        gbpub=false, uniquename=false, uniquelist=false, gbnamefmt=lowercase,
-        doi=false, isbn=false, gbfieldtype=true, gbpunctin=false,
-      }
+    \__nwafu_pass_options_to_biblatex:n { style = gb7714-NWAFU }
+    \__nwafu_pass_options_to_biblatex:n { backend = biber, }
   }
 \cs_new_protected:Npn \__nwafu_biblatex_post_setup:
   {
-    \__nwafu_biblatex_misc:
     \clist_map_function:NN \l__nwafu_bib_resource_clist \addbibresource
-    \__nwafu_biblatex_allow_url_break:
     \defbibheading { bibliography } [ \bibname ] { \__nwafu_chapter:n {##1} }
   }
 \cs_new_protected:Npn \__nwafu_pass_options_to_biblatex:n #1
   { \PassOptionsToPackage {#1} { biblatex } }
-\cs_new:Npn \__nwafu_biblatex_misc:
-  {
-    \DefineBibliographyExtras{english}{\renewcommand*{\bibrangedash}{$\sim$}}
-    \newcommand\nwafu at font@bib{\__nwafu_line_spread:n {1.3}\zihao{5}}
-    \renewcommand{\bibfont}{\nwafu at font@bib}
-    \DeclareFieldFormat[article]{journaltitle}{\iffieldequalstr{userd}{chinese}{##1}{\textit{##1}}\isdot}
-    \renewcommand{\postnotedelim}{\addcolon\space}
-    \DeclareFieldFormat{postnote}{##1}
-    \DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{\space}
-    \DeclareDelimFormat[textcite]{nameyeardelim}{\space}
-    \DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}
-    \renewcommand*{\finentrypunct}{}
-    \DefineBibliographyStrings{english}{
-        andincitecn = {和},
-        andincite   = {and},
-        mathesiscn={[硕士学位论文]},
-        phdthesiscn={[博士学位论文]},
-        in={In:\addspace},
-        incn={见:\addspace},
-      }
-    \DeclareDelimFormat{finalnamedelim}{%
-        \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
-        \edef\userfieldabcde{userd}%
-        \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
-        \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
-        \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
-        \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
-        \ifcase\value{gbcitelocalcase}%
-          \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andincitecn}}{}%
-          \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andkr}}{}%
-          \iffieldequalstr{\userfieldabcde}{japnese}{\bibstring{andjp}}{}%
-          \iffieldequalstr{\userfieldabcde}{english}{\addspace\bibstring{andincite}\addspace}{}%
-          \iffieldequalstr{\userfieldabcde}{french}{\addspace\bibstring{and}\addspace}{}%
-          \iffieldequalstr{\userfieldabcde}{russian}{\addspace\bibstring{and}\addspace}{}%
-        \or%
-        \bibstring{andincitecn}%
-        \or%
-        \addspace\bibstring{andincite}\addspace%
-        \fi
-      }
-    \DeclareDelimFormat{strandothersdelim}{%
-        \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
-        %\addspace%
-        \edef\userfieldabcde{userd}%
-        \ifcurrentname{translator}{\edef\userfieldabcde{usere}}{}%
-        \ifcurrentname{editor}{\edef\userfieldabcde{userc}}{}%
-        \ifcurrentname{author}{\edef\userfieldabcde{userf}}{}%
-        \ifcurrentname{bookauthor}{\edef\userfieldabcde{userb}}{}%
-        \ifcase\value{gbcitelocalcase}%
-          \iffieldequalstr{\userfieldabcde}{chinese}{\bibstring{andothersincitecn}}{}%
-          \iffieldequalstr{\userfieldabcde}{korean}{\bibstring{andotherskr}}{}%
-          \iffieldequalstr{\userfieldabcde}{japnese}{\bibstring{andothersjp}}{}%
-          \iffieldequalstr{\userfieldabcde}{english}{\bibstring{andothersincite}}{}%
-          \iffieldequalstr{\userfieldabcde}{french}{\bibstring{andothers}}{}%
-          \iffieldequalstr{\userfieldabcde}{russian}{\bibstring{andothers}}{}%
-        \or%
-        \bibstring{andothersincitecn}%
-        \or%
-        \bibstring{andothersincite}%
-        \fi
-      }
-    \AtEveryCitekey{%
-        \iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{}}%\addthinspace
-        {\renewcommand*{\andothersdelim}{\addspace}}%
-      }
-    \renewbibmacro*{cite:extradate}{%
-        \iffieldundef{extradate} {}
-        {\printtext[bibhyperref]{\printlabeldateextra}}%\printfield{extradate}
-      }
-    \renewbibmacro*{date+extradate}{%
-        \iffieldundef{labelyear}{}%
-        {\ifboolexpr{%
-           test {\ifentrytype{patent}}
-           or
-           (test {\ifentrytype{newspaper}} )%
-         }%
-         {\printtext{\blx at isodate{}{}}}%
-         {\printtext{%
-             \iflabeldateisdate
-             {\printdateextra}
-             {\printlabeldateextra}
-          }
-         }%
-        }%
-      }
-    \newbibmacro*{origdate+extradate}{%
-        \printtext{\printorigdate}%
-      }
-    \renewbibmacro*{bytranslator+others}{%
-        \ifnameundef{translator}
-          {}
-          {\printnames[bytranslator]{translator}%
-           \usebibmacro{bytranslator+othersstrg}%“译”的位置换到下面来,即放到译者后面。
-           \newunit
-          }%
-        \usebibmacro{withothers}%
-        \ifboolexpr{%
-          test {\iffieldundef{origyear}} or test {\ifnameundef{translator}}%%
-        }{}{\printtext{\printdate}}%
-      }
-    \renewbibmacro*{url+urldate}{%
-        \usebibmacro{url}%
-        \iffieldundef{urlyear}%
-        {}
-        {\usebibmacro{urldate}
-        }
-      }
-    \DeclareFieldFormat{addnumflag}{%
-        \ifentrytype{newspaper}
-        {\setunit{\addcomma\addspace}\printtext{##1}}
-        {\nobreak\printtext{(}\nobreak ##1\nobreak\printtext{)}}
-      }
-    \renewbibmacro*{patenttitle}{%原输出来自biblatex.def文件
-        \ifboolexpr{%
-          test{\iffieldundef{title}}%
-          and%
-          test{\iffieldundef{subtitle}}%
-        }%
-        {}%
-        {
-          \printtext[title]{\bibtitlefont%
-          \printfield[titlecase]{title}%
-          \ifboolexpr{test {\iffieldundef{subtitle}}}%这里增加了对子标题的判断,解决不判断多一个点的问题
-          {}
-          {
-            \setunit{\subtitlepunct}%
-            \printfield[titlecase]{subtitle}}%
-            \iffieldundef{titleaddon}{}%判断一下titleaddon,否则直接加可能多一个空格
-            {\setunit{\subtitlepunct}\printfield{titleaddon}}%
-            \setunit{\adddot\addspace}\printfield{number}%写专利号
-            \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}%
-          }%
-        }%
-      }
-    \renewbibmacro*{name:andothers}{%
-        \ifboolexpr{
-          test {\ifnumequal{\value{listcount}}{\value{liststop}}}
-          and
-          test \ifmorenames
-        }{\ifnumgreater{\value{liststop}}{1}%
-            {\finalandcomma}%
-            {}%
-            \printdelim{andothersdelim}\printdelim{strandothersdelim}%
-        }{%当是译者的时候需要特殊处理
-          \ifcurrentname{translator}{\addcomma}{}%
-        }
-      }
-    \DeclareFieldFormat{edition}{%
-        \testCJKfirst{userd}%
-        \iftoggle{ifCJKforgbt}%
-        {\ifinteger{##1}%
-          {\printtext{\bibstring{serialcn}\zhnumber{##1}\str at edition}}%
-          {##1\isdot}
-        }%
-        {\ifinteger{##1}%
-          {\mkbibordedition{##1}~\bibstring{edition}}%
-          {##1\isdot}
-        }
-      }
-    \renewbibmacro*{author}{%
-        \ifboolexpr{
-          test \ifuseauthor
-          and
-          not test {\ifnameundef{author}}
-        }{\usebibmacro{bbx:dashcheck}
-           {\printnames{author}\setunit{\printdelim{nameyeardelim}}%把标点也带上
-           }{\usebibmacro{bbx:savehash}%
-             \printnames{author}%
-             \iffieldundef{authortype}
-               {\setunit{\printdelim{nameyeardelim}}}
-               {\setunit{\printdelim{authortypedelim}}}
-           }%
-           \iffieldundef{authortype}
-             {}
-             {\usebibmacro{authorstrg}%
-              \setunit{\printdelim{nameyeardelim}}
-             }
-        }%
-        {\global\undef\bbx at lasthash
-         \usebibmacro{labeltitle}%
-         \setunit*{\printdelim{nonameyeardelim}}
-        }%
-        \ifboolexpr{%
-          test {\iffieldundef{origyear}} or test {\ifnameundef{translator}}%
-        }{\usebibmacro{date+extradate}}%
-        {\usebibmacro{origdate+extradate}}%
-      }
-    \DeclareBibliographyDriver{book}{%源来自standard.bbx文件
-        \usebibmacro{bibindex}%
-        \usebibmacro{begentry}%
-        \usebibmacro{author/editor+others/translator+others}%
-        \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-        \usebibmacro{maintitle+title}%
-        \iftoggle{bbx:gbstrict}{}{%
-          \newunit%
-          \printlist{language}%
-          \newunit\newblock%
-          \usebibmacro{byauthor}%
-          \newunit\newblock%
-        }%
-        \newunit%
-        \printfield{edition}%
-        \newunit%
-        \usebibmacro{byeditor+others}%
-        \newunit\newblock%
-        \iftoggle{bbx:gbstrict}{}{%
-          \iffieldundef{maintitle}%
-          {%
-            \printfield{volume}%
-            \printfield{part}%
-          }%
-          {}%
-          \newunit%
-          \printfield{volumes}%
-          \newunit\newblock%
-          \usebibmacro{series+number}%
-        }%
-        \newunit\newblock%
-        \usebibmacro{publisher+location+date}%
-        \usebibmacro{chapter+pages}%
-        \iffieldundef{url}{}{%当没有网址时也不输出
-          \usebibmacro{modifydate}%带括号的修改或更新日期,
-        }%
-        \usebibmacro{doi+eprint+url}%从下面移动到上面来,因为gbt2015的url需直接放在页码后面。
-        \newunit\newblock%
-        \printfield{pagetotal}%
-        \newunit\newblock%
-        \iftoggle{bbx:isbn}%
-          {\printfield{isbn}}
-          {}%
-        \newunit\newblock%
-        \usebibmacro{addendum+pubstate}%
-        \setunit{\bibpagerefpunct}\newblock
-        \usebibmacro{pageref}%
-        \newunit\newblock%
-        \iftoggle{bbx:related}%
-          {\usebibmacro{related:init}%
-           \usebibmacro{related}%
-          }{}%
-        \usebibmacro{finentry}
-      }
-    \DeclareBibliographyDriver{online}{%源来自standard.BBX
-        \usebibmacro{bibindex}%
-        \usebibmacro{begentry}%
-        \usebibmacro{author/editor+others/translator+others}%
-        \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-        \usebibmacro{title}%
-        \iftoggle{bbx:gbstrict}{}{%
-          \newunit%
-          \printlist{language}%
-          \newunit\newblock
-          \usebibmacro{byauthor}%
-          \newunit\newblock
-          \usebibmacro{byeditor+others}%
-          \newunit\newblock
-          \printfield{note}
-        }%
-        \newunit
-        \printfield{version}%
-        \newunit\newblock
-        \printlist{institution}%
-        \newunit\newblock
-        \ifboolexpr{%
-          test{\iffieldundef{day}} and test{\iffieldundef{endday}} and test{\iffieldundef{eventday}}%
-        }{\usebibmacro{date}}%
-        \usebibmacro{url+urldate}%从下面移上来
-        \newunit\newblock
-        \iftoggle{bbx:eprint}
-          {\usebibmacro{eprint}}
-          {}%
-        \newunit\newblock
-        \usebibmacro{addendum+pubstate}%
-        \setunit{\bibpagerefpunct}\newblock
-        \usebibmacro{pageref}%
-        \newunit\newblock
-        \iftoggle{bbx:related}
-          {\usebibmacro{related:init}%
-           \usebibmacro{related}}
-          {}%
-        \usebibmacro{finentry}
-      }
-    \DeclareBibliographyDriver{patent}{%源来自standard.BBX
-        \usebibmacro{bibindex}%
-        \usebibmacro{begentry}%
-        \usebibmacro{author}%
-        \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%这一段用于去除作者不存在时多出的标点
-        \usebibmacro{patenttitle}%给出专利专用的标题输出
-        \iftoggle{bbx:gbstrict}{}{%
-          \newunit%
-          \printlist{language}%
-          \newunit\newblock
-          \usebibmacro{byauthor}
-        }%
-        \newunit\newblock
-        \printfield{type}%
-        \setunit*{\addspace}%
-        \iflistundef{location}
-          {}
-          {\setunit*{\addspace}%
-           \printtext{%[parens]
-           \printlist[][-\value{listtotal}]{location}}
-          }%
-        \newunit\newblock
-        \usebibmacro{byholder}%
-        \newunit\newblock
-        \printfield{note}%
-        \newunit\newblock
-        \usebibmacro{doi+eprint+url}%
-        \newunit\newblock
-        \usebibmacro{addendum+pubstate}%
-        \setunit{\bibpagerefpunct}\newblock
-        \usebibmacro{pageref}%
-        \newunit\newblock
-        \iftoggle{bbx:related}
-          {\usebibmacro{related:init}%
-           \usebibmacro{related}
-          }
-          {}%
-        \usebibmacro{finentry}
-      }
-    \setlength{\bibitemsep}{2pt}
-    \setlength{\bibnamesep}{0ex}
-    \setlength{\bibinitsep}{0ex}
-    \setlength{\bibitemindent}{-2\ccwd}% bibitemindent表示一条文献中第一行相对后面各行的缩进
-    \setlength{\bibhang}{2\ccwd} % 表示的各行起始位置到页边的距离
-  }
-\cs_new:Npn \__nwafu_biblatex_allow_url_break:
-  {
-    \int_set_eq:NN \c at biburlucpenalty  \c_one_int
-    \int_set_eq:NN \c at biburlnumpenalty \c_one_int
-    \int_set_eq:NN \c at biburllcpenalty  \c_one_int
-  }
-\cs_new:Npn \__nwafu_set_cite_style_author_year:
-  {
-    \NAT at numbersfalse
-    \cs_set_eq:NN \NAT at open  \c__nwafu_fwid_left_paren_tl
-    \cs_set_eq:NN \NAT at close \c__nwafu_fwid_right_paren_tl
-    \cs_set_eq:NN \NAT at sep   \c__nwafu_fwid_semicolon_tl
-    \cs_set_eq:NN \NAT at aysep \c__nwafu_fwid_comma_tl
-    \cs_set_eq:NN \NAT at yrsep \c__nwafu_ideo_comma_tl
-  }
 \skip_set:Nn \parskip { 0pt plus 2pt minus 1pt }
 \skip_set:Nn \intextsep { 14pt plus 2pt minus 2pt }
 \skip_set:Nn \textfloatsep { 16pt plus 2pt minus 4pt }
@@ -3558,13 +3270,10 @@
     { bullet   } { \textbullet                      },
     { endash   } { \normalfont\bfseries\textendash  },
     { asterisk } { \textasteriskcentered            },
-    { arabic   } { \bool_if:NTF \l__nwafu_withchap_bool
-                      { \arabic*. }{ (\arabic*) }   },
-    { alph     } { \bool_if:NTF \l__nwafu_withchap_bool
-                      { \alph*. }{ (\alph*) }       },
-    { roman    } { \bool_if:NTF \l__nwafu_withchap_bool
-                      { \roman*. }{ (\roman*) }     },
+    { arabic   } { (\arabic*)                       },
     { alph     } { (\alph*)                         },
+    { roman    } { (\roman*)                        },
+    { alph     } { (\alph*)                         },
     { roman    } { \roman*.                         },
     { outline  } { \upshape\ding{111}               }
   }



More information about the tex-live-commits mailing list.