texlive[64793] Master/texmf-dist: njuthesis (23oct22)

commits+karl at tug.org commits+karl at tug.org
Sun Oct 23 22:38:45 CEST 2022


Revision: 64793
          http://tug.org/svn/texlive?view=revision&revision=64793
Author:   karl
Date:     2022-10-23 22:38:45 +0200 (Sun, 23 Oct 2022)
Log Message:
-----------
njuthesis (23oct22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/njuthesis/njuthesis.pdf
    trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx
    trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.ins
    trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def
    trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def
    trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def
    trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls

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

Modified: trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx	2022-10-23 20:38:23 UTC (rev 64792)
+++ trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx	2022-10-23 20:38:45 UTC (rev 64793)
@@ -20,8 +20,9 @@
 % This work consists of the files njuthesis.dtx,
 %           and the derived files njuthesis.ins,
 %                                 njuthesis.cls,
+%                                 njuthesis-graduate.def,
+%                                 njuthesis-postdoctoral.def,
 %                                 njuthesis-undergraduate.def,
-%                                 njuthesis-graduate.def,
 %                                 njuthesis.pdf,
 %                             and README.md.
 %
@@ -61,7 +62,7 @@
 or (at your option) any later version.  The latest version of this
 license is in:
 
-   http://www.latex-project.org/lppl.txt
+  http://www.latex-project.org/lppl.txt
 
 and version 1.3 or later is part of all distributions of LaTeX version
 2005/12/01 or later.
@@ -118,7 +119,7 @@
 %<*!(driver|install)>
 % ^^A 诚耀百廿,雄创一流
 % ^^A 南京大学一百二十周年华诞邀您共襄盛举!
-%<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.0.0 2022-08-08 14:50:00
+%<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.1.0 2022-10-23 12:30:00
 %<+!driver>  +0800 NJU LUG <git+nju-lug-email-3104-issue- at yaoge123.cn>$
 %<class>  {Thesis template for Nanjing University}
 %<class>\ProvidesExplClass{njuthesis}
@@ -134,7 +135,7 @@
 %<*driver>
 \ProvidesFile{njuthesis.dtx}
 \documentclass[fontset=fandol]{ctxdoc}
-\usepackage{listings,njuvisual,tabularray,unicode-math,zhlineskip}
+\usepackage{listings,njuvisual,tabularray,unicode-math,xeCJKfntef,zhlineskip}
 \usepackage[firstpage=true]{background}
 \backgroundsetup{
   contents={\njuemblem[white!85!gray]{22cm}{!}},
@@ -141,8 +142,10 @@
   scale=1, angle=0, hshift=-4cm
 }
 \definecolor{olgreen}{HTML}{138a07}
+\renewcommand\emph[1]{\CJKunderdot[textformat=\itshape]{#1}}
 \newcommand\olbutton[1]{\textcolor{olgreen}{\bfseries #1}}
 \newcommand\tikzlogo{Ti\emph{k}Z}
+\newcommand\OPT[1]{\textcolor{njuyellow}{\bfseries#1}}
 \hypersetup{
   pdftitle  = {
     The njuthesis class -
@@ -216,7 +219,8 @@
     alsoletter = {*, -, .},
     texcsstyle = *\color{njuviolet},
     emphstyle  = [1]\color{nju-ai-orange},
-    emphstyle  = [2]\color{nju-cs-green}
+    emphstyle  = [2]\color{nju-cs-green},
+    emphstyle  = [3]\bfseries\color{njuyellow}
   }
 \lstnewenvironment{shellexample}[1][]{%
   \lstset{style=style at shell, #1}}{}
@@ -351,7 +355,7 @@
 % \thanks{E-mail: \href{mailto:git+nju-lug-email-3104-issue- at yaoge123.cn}
 %   {git+nju-lug-email-3104-issue- at yaoge123.cn}}}
 %
-% \date{v1.0.0 \quad 2022-08-08}
+% \date{v1.1.0 \quad 2022-10-23}
 %
 % \changes{v0.1}{2021/09/04}{开始开发。}
 % \changes{v0.2}{2021/09/07}{初步搭建了可用的模板。}
@@ -389,10 +393,10 @@
 % \maketitle
 %
 % \begin{abstract}
-% 南京大学学位论文 \LaTeX 模板 \cls{njuthesis} 基于本科生院的论文撰写
-% 规范制作,同时参考研究生院提供的硕士、博士学位材料包,用于生成符合南京大学学
-% 位论文排版要求和相应的国家规范、行业标准的学位论文,旨在为同学提供毕业论文书
-% 写的方便。
+% \cls{njuthesis} 是制作南京大学本科生毕业论文、研究生学位论文、博士后出站报告的
+% \LaTeX 文档类。本模板基于本科生院的论文撰写规范制作,同时参考研究生院提供的硕士、
+% 博士学位材料包,用于生成符合南京大学排版要求和相应的国家规范、行业标准的学位论
+% 文,力求通过 \LaTeX3 语法实现清晰的实现逻辑、较高的可定制性以及友好的用户接口。
 % \end{abstract}
 %
 % \def\abstractname{Abstract}
@@ -399,7 +403,7 @@
 % \begin{abstract}
 % The \cls{njuthesis} class is intended for typesetting Nanjing University
 % dissertations with \LaTeX, providing support for bachelor, master,
-% and doctoral thesis.
+% doctoral theses as well as postdoctoral reports.
 % \end{abstract}
 %
 % \vspace{2cm}
@@ -652,6 +656,7 @@
 %     \file{njuthesis-sample.bib}        & 示例参考文献列表                 \\
 %     \file{njuthesis-sample.tex}        & 示例文档,不妨以此为基础撰写论文 \\
 %     \file{njuthesis-graduate.def}      & 研究生参数配置文件               \\
+%     \file{njuthesis-postdoctoral.def}  & 博士后参数配置文件               \\
 %     \file{njuthesis-undergraduate.def} & 本科生参数配置文件               \\
 %     \file{README.md}                   & 自述文件                         \\
 %     \bottomrule
@@ -829,7 +834,7 @@
 % \begin{description}
 %   \item[Perl] 一般预装于 macOS 和 Linux,而 Windows 用户需要单独安装
 %        \href{https://strawberryperl.com/}{Strawberry Perl}。
-%   \item[\pkg{latexmk}] 如果终端找不到 |latexmk| 命令,需使用包管理器单独安装。
+%   \item[\normalfont\pkg{latexmk}] 如果终端找不到 |latexmk| 命令,需使用包管理器单独安装。
 % \end{description}
 %
 % 该命令的使用方法为
@@ -960,15 +965,15 @@
 % \subsubsection{学位信息}
 % \begin{function}[added=2021-09-07,updated=2022-07-23]{type}
 %   \begin{syntax}
-%     type = <(bachelor)|master|doctor|postdoc>
+%     \OPT{type} = <(bachelor)|master|doctor|postdoc>
 %   \end{syntax}
-% 选择毕业论文模板类型,这将决定模板整体的外观。
-% 可选值分别为学士(本科生)、硕士研究生和博士研究生,默认为学士。
+% 选择毕业论文模板类型,这将决定模板整体的外观。可选值分别为
+% 学士(本科生)、硕士研究生、博士研究生和博士后,默认为学士。
 % \end{function}
 %
 % \begin{function}[added=2021-09-07,updated=2022-07-01]{degree}
 %   \begin{syntax}
-%     degree = <(academic)|professional>
+%     \OPT{degree} = <(academic)|professional>
 %   \end{syntax}
 % 选择研究生的学位类型。可选值分别学术型和专业型,默认为学术型。
 % \end{function}
@@ -978,7 +983,7 @@
 %
 % \begin{function}[added=2021-09-07,updated=2022-07-05]{nl-cover}
 %   \begin{syntax}
-%     nl-cover = <\TFF>
+%     \OPT{nl-cover} = <\TFF>
 %   \end{syntax}
 % 是否使用国家图书馆封面,默认关闭。
 % \end{function}
@@ -988,7 +993,7 @@
 %
 % \begin{function}[updated=2022-01-06]{decl-page}
 %   \begin{syntax}
-%     decl-page = <\TFF>
+%     \OPT{decl-page} = <\TFF>
 %   \end{syntax}
 % 是否需要自动生成声明页面,默认关闭。
 % \end{function}
@@ -1009,7 +1014,7 @@
 %
 % \begin{function}[added=2022-01-14]{oneside,twoside}
 %   \begin{syntax}
-%     <oneside|(twoside)>
+%     <\OPT{oneside}|(\OPT{twoside})>
 %   \end{syntax}
 % 开启单面或双面模式,默认为双面模式。
 % \end{function}
@@ -1022,7 +1027,7 @@
 %
 % \begin{function}[added=2021-12-15]{draft}
 %   \begin{syntax}
-%     draft = <\TFF>
+%     \OPT{draft} = <\TFF>
 %   \end{syntax}
 % 是否开启草稿模式,默认关闭。
 % \end{function}
@@ -1042,9 +1047,9 @@
 % 宏包的代码环境不会显示内容,具体效果需要参照各个宏包的说明文档。
 % 如需抵消草稿模式的影响,请使用 \opt{final} 选项载入相关宏包。
 %
-% \begin{function}[added=2022-04-19,updated=2022-07-04]{anonymous}
+% \begin{function}[added=2022-04-19,updated=2022-09-26]{anonymous}
 %   \begin{syntax}
-%     anonymous = <\TFF>
+%     \OPT{anonymous} = <\TFF>
 %   \end{syntax}
 % 是否开启盲审模式。
 % \end{function}
@@ -1054,6 +1059,7 @@
 %   \item 不显示校名校徽图片
 %   \item 不显示“南京大学”字样
 %   \item 不显示作者、导师等基本信息
+%   \item 不显示声明页、致谢页
 % \end{itemize}
 %
 %
@@ -1068,12 +1074,12 @@
 %   footmisc,
 %   unicode-math}
 %   \begin{syntax}
-%     biblatex       = <\TTF>
-%     cleveref       = <\TTF>
-%     ntheorem       = <\TTF>
-%     enumitem       = <\TTF>
-%     footmisc       = <\TTF>
-%     unicode-math   = <\TTF>
+%     \OPT{biblatex}     = <\TTF>
+%     \OPT{cleveref}     = <\TTF>
+%     \OPT{ntheorem}     = <\TTF>
+%     \OPT{enumitem}     = <\TTF>
+%     \OPT{footmisc}     = <\TTF>
+%     \OPT{unicode-math} = <\TTF>
 %   \end{syntax}
 % 是否默认载入某些宏包,默认均是。选项名和宏包名是一致的。
 % \end{function}
@@ -1080,7 +1086,7 @@
 %
 % \begin{function}[added=2022-08-03]{minimal}
 %   \begin{syntax}
-%     <minimal>
+%     <\OPT{minimal}>
 %   \end{syntax}
 % 最小化模式,禁用所有上述宏包。
 % \end{function}
@@ -1087,12 +1093,12 @@
 %
 % 本模板内置了一系列宏包以进行功能扩展。这些宏包为:
 % \begin{description}
-%   \item[\pkg{biblatex}] 复杂参考文献数据的处理。
-%   \item[\pkg{cleveref}] 按来源类型自动处理引用标签。
-%   \item[\pkg{ntheorem}] 定理类环境定制。
-%   \item[\pkg{enumitem}] 列表环境样式定制。
-%   \item[\pkg{footmisc}] 脚注样式定制。
-%   \item[\pkg{unicode-math}] 支持 Unicode 数学字体。
+%   \item[\normalfont\pkg{biblatex}] 复杂参考文献数据的处理。
+%   \item[\normalfont\pkg{cleveref}] 按来源类型自动处理引用标签。
+%   \item[\normalfont\pkg{ntheorem}] 定理类环境定制。
+%   \item[\normalfont\pkg{enumitem}] 列表环境样式定制。
+%   \item[\normalfont\pkg{footmisc}] 脚注样式定制。
+%   \item[\normalfont\pkg{unicode-math}] 支持 Unicode 数学字体。
 % \end{description}
 %
 % 在某些情况下,这些宏包会与旧有的经验方法冲突,可以使用上述选项在模板
@@ -1102,7 +1108,7 @@
 %
 % \begin{function}[added=2022-02-23]{config}
 %   \begin{syntax}
-%     config = \Arg{文件}
+%     \OPT{config} = \Arg{文件}
 %   \end{syntax}
 % 配置文件路径。
 % \end{function}
@@ -1118,8 +1124,8 @@
 %
 % \begin{function}[added=2021-09-07,updated=2021-12-18]{cjk-font,latin-font}
 %   \begin{syntax}
-%     cjk-font = <win|mac|fandol|founder|noto|source|none>
-%     latin-font = <win|mac|gyre|none>
+%     \OPT{cjk-font} = <win|mac|fandol|founder|noto|source|none>
+%     \OPT{latin-font} = <win|mac|gyre|none>
 %   \end{syntax}
 % 手动指定字体。
 % \end{function}
@@ -1202,18 +1208,19 @@
 % 字体配置。Windows 和 macOS 以外的系统采用 \opt{gyre} 配置。
 %
 % \begin{table}[!htbp]
+%   \def\TG#1{TG~#1~\TA}
 %   \centering
 %   \begin{talltblr} [
 %       caption = {西文字体配置},
-%       label = {tab:latin-fontset},
+%       label   = {tab:latin-fontset},
 %       note{a} = {TG 表示 \href{http://www.gust.org.pl/projects/e-foundry/tex-gyre}{\TeX~Gyre}。} ]
 %     { colspec = {cccc} }
 %     \toprule
-%       配置名称   & 衬线体          & 无衬线体 & 等宽字体    \\
+%       配置名称   & 衬线体          & 无衬线体   & 等宽字体    \\
 %     \midrule
-%       \opt{win}  & Times~New~Roman & Arial    & Courier~New \\
-%       \opt{mac}  & Times~New~Roman & Arial    & Menlo       \\
-%       \opt{gyre} & TG Termes       & TG Heros & TG Cursor   \\
+%       \opt{win}  & Times~New~Roman & Arial      & Courier~New \\
+%       \opt{mac}  & Times~New~Roman & Arial      & Menlo       \\
+%       \opt{gyre} & \TG{Termes}     & \TG{Heros} & \TG{Cursor} \\
 %     \bottomrule
 %   \end{talltblr}
 % \end{table}
@@ -1223,39 +1230,40 @@
 %
 % \begin{function}[added=2022-07-02]{math-font}
 %   \begin{syntax}
-%     math-font=<asana|cambria|fira|garamond|lm|...|termes|xits|none>
+%     \OPT{math-font} = <asana|cambria|fira|garamond|lm|...|termes|(xits)|none>
 %   \end{syntax}
-% 设置数学字体。
+% 设置数学字体。完整列表见表 {tab:math-fontset}。
 % \end{function}
 %
-% 本模板采用 \pkg{unicode-math} 宏包配置数学公式环境中使用的字体。
-% 与原生 \LaTeX{} 最接近的字体对应 \opt{lm},
-% 与 MS Word 最接近的字体对应 \opt{cambria}。
+% 本模板默认采用 \pkg{unicode-math} 宏包配置数学模式下使用的字体。
+% 与原生 \LaTeX{} 最接近的字体对应 \opt{lm},MS Word 预装的字体对应 \opt{cambria}。
 %
 % \begin{table}[!htbp]
+%   \def\NCM{New Computer Modern}
 %   \centering
 %   \begin{talltblr} [
 %       caption = {数学字体配置},
-%       label = {tab:math-fontset},
+%       label   = {tab:math-fontset},
 %       note{a} = {TG 表示 \href{http://www.gust.org.pl/projects/e-foundry/tex-gyre}{\TeX~Gyre}。},
 %       note{b} = {粗体使用 XITS Math Bold。} ]
 %     { colspec = {ccl} }
 %   \toprule
-%     配置名称          & 字体名称           & 描述                            \\
+%     配置名称          & 字体名称            & 描述                       \\
 %   \midrule
-%     \opt{asana}       & Asana Math         &                                 \\
-%     \opt{cambria}     & Cambria Math       & 微软 Office 预装的数学字体      \\
-%     \opt{fira}        & Fira Math          & 无衬线数学字体,Fira 风格       \\
-%     \opt{garamond}    & Garamond Math      & Garamond 风格                   \\
-%     \opt{lm}          & Latin Modern Math  & Computer Modern 风格            \\
-%     \opt{libertinus}  & Libertinus Math    &                                 \\
-%     \opt{stix}        & STIX Math          & Times 风格                      \\
-%     \opt{bonum}       & TG Bonum Math   \TblrNote{a} &                       \\
-%     \opt{dejavu}      & TG DejaVu Math  \TblrNote{a} & DejaVu 风格           \\
-%     \opt{pagella}     & TG Pagella Math \TblrNote{a} & Palatino 风格         \\
-%     \opt{schola}      & TG Schola Math  \TblrNote{a} &                       \\
-%     \opt{termes}      & TG Termes Math  \TblrNote{a} & Times 风格            \\
-%     \opt{xits}        & XITS Math       \TblrNote{b} & 基于 STIX,Times 风格 \\
+%     \opt{asana}       & Asana Math          &                            \\
+%     \opt{cambria}     & Cambria Math        & 微软 Office 预装的数学字体 \\
+%     \opt{fira}        & Fira Math           & 无衬线数学字体,Fira 风格  \\
+%     \opt{garamond}    & Garamond Math       & Garamond 风格              \\
+%     \opt{lm}          & Latin Modern Math   & Computer Modern 风格       \\
+%     \opt{libertinus}  & Libertinus Math     &                            \\
+%     \opt{newcm}       & \NCM~Math           & Computer Modern 风格       \\
+%     \opt{stix}        & STIX Math           & Times 风格                 \\
+%     \opt{bonum}       & TG Bonum Math   \TA &                            \\
+%     \opt{dejavu}      & TG DejaVu Math  \TA & DejaVu 风格                \\
+%     \opt{pagella}     & TG Pagella Math \TA & Palatino 风格              \\
+%     \opt{schola}      & TG Schola Math  \TA &                            \\
+%     \opt{termes}      & TG Termes Math  \TA & Times 风格                 \\
+%     \opt{xits}        & XITS Math       \TB & 基于 STIX,Times 风格      \\
 %   \bottomrule
 %   \end{talltblr}
 % \end{table}
@@ -1264,7 +1272,7 @@
 %
 % 本节提及的字库中,中文字库只有方正书宋、方正黑体、方正楷体、方正仿宋、
 % 两种思源字体和四种Fandol字体能够\emph{免费商用};
-% 英文字库中只有 Times New Roman、XITS 和三种 \TeX Gyre字体能够\emph{免费商用}。
+% 英文字库中只有 Times New Roman、XITS 和三种 \TeX~Gyre字体能够\emph{免费商用}。
 % 因此,若需要将本模板用于商业相关的活动,请咨询专业人士。
 %
 %
@@ -1280,20 +1288,22 @@
 % 根据可选参数填写方式不同,\tn{njusetup} 共有四种等效的使用方式,
 % 可以根据实际情况进行灵活选择。
 %
-% 在键路径留空时,为最基础的用法。此时设置项的参数是一个使用英文
-% 半角逗号分隔的键值列表,通常形如 \meta{key}|=|\meta{value}。
+% 在键路径留空时,为最基础的用法。此时设置项的参数是一个使用
+% \emph{英文半角逗号}分隔的键值列表,通常形如 \meta{key}|=|\meta{value}。
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib},
+%   emph={[3]title,author,resource}]
 %   \njusetup{
 %       info/title   = {奇文},
 %       info/author  = {佚名},
-%       bib/resource = {ref1.bib, ref1.bib}
+%       bib/resource = {ref1.bib, ref2.bib}
 %     }
 % \end{latexexample}
 %
 % 以上为最基础的填写方法,可以分组为:
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib},
+%   emph={[3]title,author,resource}]
 %   \njusetup{
 %       info = {
 %           title    = {奇文},
@@ -1300,7 +1310,7 @@
 %           author   = {佚名}
 %         },
 %       bib = {
-%           resource = {ref1.bib, ref1.bib},
+%           resource = {ref1.bib, ref2.bib},
 %         }
 %     }
 % \end{latexexample}
@@ -1307,22 +1317,24 @@
 %
 % 在键路径填入模块(类)时,只能设定当前模块下的选项。此时参数是键值列表。
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib},
+%   emph={[3]title,author,resource}]
 %   \njusetup[info]{
 %       title    = {奇文},
 %       author   = {佚名}
 %     }
 %   \njusetup[bib]{
-%       resource = {ref1.bib, ref1.bib}
+%       resource = {ref1.bib, ref2.bib}
 %     }
 % \end{latexexample}
 %
 % 在键路径填入具体选项名称时,只能设定该选项的值。
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info,bib},
+%   emph={[3]title,author,resource}]
 %   \njusetup[info/title]{奇文}
 %   \njusetup[info/author]{佚名}
-%   \njusetup[bib/resource]{ref1.bib, ref1.bib}
+%   \njusetup[bib/resource]{ref1.bib, ref2.bib}
 % \end{latexexample}
 %
 %
@@ -1333,8 +1345,8 @@
 %
 % \begin{function}[updated=2022-01-14]{info/title,info/title*}
 %   \begin{syntax}
-%     title  = \Arg{标题}
-%     title* = \Arg{英文标题}
+%     \OPT{title}  = \Arg{标题}
+%     \OPT{title*} = \Arg{英文标题}
 %   \end{syntax}
 % 题目。由于封面上提供给中文题目的横线长度有限\footnote{单行最长约为15
 % 个汉字,建议总长度不超过45字,当然你也可以对照 \ref{subsubsec:modify-length}
@@ -1352,8 +1364,8 @@
 %
 % \begin{function}[updated=2021-10-01]{info/keywords,info/keywords*}
 %   \begin{syntax}
-%     keywords  = \Arg{关键词}
-%     keywords* = \Arg{英文关键词}
+%     \OPT{keywords}  = \Arg{关键词}
+%     \OPT{keywords*} = \Arg{英文关键词}
 %   \end{syntax}
 % 关键词列表。关键词之间需要使用英文半角逗号隔开,
 % 含有空格的关键字需要使用花括号包裹以避免歧义。可以参照下方的填写示例。
@@ -1361,7 +1373,7 @@
 %
 % \begin{function}[updated=2021-10-01]{info/grade}
 %   \begin{syntax}
-%     grade = \Arg{20XX}
+%     \OPT{grade} = \Arg{20XX}
 %   \end{syntax}
 % 年级,推荐格式为“20XX”。
 % \end{function}
@@ -1368,7 +1380,7 @@
 %
 % \begin{function}[updated=2021-10-01]{info/student-id}
 %   \begin{syntax}
-%     student-id = \Arg{学号或工号}
+%     \OPT{student-id} = \Arg{学号或工号}
 %   \end{syntax}
 % 学号或工号。南京大学本科生为9位数字学号,
 % 研究生为两位大写字母标识加上数字组成的学号(2022级改为纯数字)。
@@ -1376,8 +1388,8 @@
 %
 % \begin{function}[updated=2021-10-01]{info/author,info/author*}
 %   \begin{syntax}
-%     author  = \Arg{你的名字}
-%     author* = \Arg{姓名拼音}
+%     \OPT{author}  = \Arg{你的名字}
+%     \OPT{author*} = \Arg{姓名拼音}
 %   \end{syntax}
 % 姓名。
 % \end{function}
@@ -1384,8 +1396,8 @@
 %
 % \begin{function}[updated=2021-10-01]{info/department,info/department*}
 %   \begin{syntax}
-%     department  = \Arg{院系}
-%     department* = \Arg{院系}
+%     \OPT{department}  = \Arg{院系}
+%     \OPT{department*} = \Arg{院系}
 %   \end{syntax}
 % 院系。
 % \end{function}
@@ -1392,8 +1404,8 @@
 %
 % \begin{function}[updated=2021-10-01]{info/major,info/major*}
 %   \begin{syntax}
-%     major  = \Arg{专业}
-%     major* = \Arg{专业}
+%     \OPT{major}  = \Arg{专业}
+%     \OPT{major*} = \Arg{专业}
 %   \end{syntax}
 % 专业。
 % \end{function}
@@ -1400,8 +1412,8 @@
 %
 % \begin{function}[updated=2021-10-01]{info/field,info/field*}
 %   \begin{syntax}
-%     field = \Arg{方向}
-%     field* = \Arg{方向}
+%     \OPT{field}  = \Arg{方向}
+%     \OPT{field*} = \Arg{方向}
 %   \end{syntax}
 % 研究领域。只有研究生存在研究领域的说法,本科生无需填写。
 % \end{function}
@@ -1408,8 +1420,8 @@
 %
 % \begin{function}[updated=2022-01-12]{info/supervisor,info/supervisor*}
 %   \begin{syntax}
-%     supervisor = \Arg{导师姓名,职称}
-%     supervisor* = \Arg{导师英文全称}
+%     \OPT{supervisor}  = \Arg{导师姓名,职称}
+%     \OPT{supervisor*} = \Arg{导师英文全称}
 %   \end{syntax}
 % 导师全称。请使用逗号( |,| )分隔导师的中文姓名与职称,英文名则不需添加逗号。
 % \end{function}
@@ -1416,8 +1428,8 @@
 %
 % \begin{function}[updated=2021-01-12]{info/supervisor-ii,info/supervisor-ii*}
 %   \begin{syntax}
-%     supervisor-ii = \Arg{第二导师姓名,职称}
-%     supervisor-ii* = \Arg{第二导师英文全称}
+%     \OPT{supervisor-ii}  = \Arg{第二导师姓名,职称}
+%     \OPT{supervisor-ii*} = \Arg{第二导师英文全称}
 %   \end{syntax}
 % 第二导师全称。无第二导师时不填即可。
 % \end{function}
@@ -1424,7 +1436,7 @@
 %
 % \begin{function}[updated=2022-01-14]{info/submit-date}
 %   \begin{syntax}
-%     submit-date = \Arg{yyyy-mm-dd}
+%     \OPT{submit-date} = \Arg{yyyy-mm-dd}
 %   \end{syntax}
 % 提交日期。中英文日期现在可以由 ISO 日期格式\cite{gb-t-7408-2005}
 % 的字符串统一生成。如果在等号后留空,则原本中文日期处使用空白的年月日字样;
@@ -1433,7 +1445,7 @@
 %
 % \begin{function}[updated=2022-01-14]{info/defend-date}
 %   \begin{syntax}
-%     defend-date = \Arg{yyyy-mm-dd}
+%     \OPT{defend-date} = \Arg{yyyy-mm-dd}
 %   \end{syntax}
 % 答辩日期,只对研究生有效,要求同提交日期。
 % \end{function}
@@ -1440,7 +1452,7 @@
 %
 % \begin{function}[updated=2022-05-23]{info/confer-date}
 %   \begin{syntax}
-%     confer-date = \Arg{yyyy-mm-dd}
+%     \OPT{confer-date} = \Arg{yyyy-mm-dd}
 %   \end{syntax}
 % 学位授予日期,只用于国家图书馆封面,要求同提交日期。
 % \end{function}
@@ -1447,7 +1459,7 @@
 %
 % \begin{function}[updated=2022-05-23]{info/bottom-date}
 %   \begin{syntax}
-%     bottom-date = \Arg{yyyy-mm-dd}
+%     \OPT{bottom-date} = \Arg{yyyy-mm-dd}
 %   \end{syntax}
 % 底部日期,只用于国家图书馆封面,要求同提交日期。
 % \end{function}
@@ -1454,8 +1466,8 @@
 %
 % \begin{function}[updated=2022-05-27]{info/chairman,info/reviewer}
 %   \begin{syntax}
-%     chairman = \Arg{答辩主席姓名职称}
-%     reviewer = \Arg{答辩评委姓名职称}
+%     \OPT{chairman} = \Arg{答辩主席姓名职称}
+%     \OPT{reviewer} = \Arg{答辩评委姓名职称}
 %   \end{syntax}
 % 答辩委员会信息,分别为评审委员会主席及成员的姓名加职称,只对研究生有效。
 % 评审成员名单以逗号分隔的列表形式存储,填写方法同关键词。
@@ -1465,10 +1477,10 @@
 % \begin{function}[updated=2021-10-01]{info/clc,info/secret-level,
 %   info/udc,info/supervisor-contact}
 %   \begin{syntax}
-%     clc = \Arg{中图分类号}
-%     secret-level = <不涉密|秘密|机密|绝密>
-%     udc = \Arg{udc}
-%     supervisor-contact = \Arg{导师联系方式}
+%     \OPT{clc} = \Arg{中图分类号}
+%     \OPT{secret-level} = <不涉密|秘密|机密|绝密>
+%     \OPT{udc} = \Arg{UDC 分类号}
+%     \OPT{supervisor-contact} = \Arg{导师联系方式}
 %   \end{syntax}
 % 国家图书馆封面相关,包括中图分类号、密级、UDC 分类号和导师联系方式。
 % \end{function}
@@ -1478,10 +1490,12 @@
 %
 % 本科生可以参考如下范例输入个人信息。注意不能有空行。
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]title,title*,
+%   keywords,keywords*,grade,student-id,author,author*,department,department*,
+%   major,major*,supervisor,supervisor*,submit-date}]
 %   \njusetup[info]{
 %       title        = {第一行标题\\第二行标题},
-%       title*       = {My title in English},
+%       title*       = {My Awesome Work},
 %       keywords     = {我,就是,充数的,关键词},
 %       keywords*    = {Dummy, Keywords, Here, {it is}},
 %       grade        = {2018},
@@ -1500,10 +1514,12 @@
 %
 % 研究生可以参考如下列表输入个人信息
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]title,title*,
+%   keywords,keywords*,grade,student-id,author,author*,department,department*,
+%   major,major*,field,field*,supervisor,supervisor*,submit-date,defend-date,email}]
 %   \njusetup[info]{
 %       title        = {第一行标题\\第二行标题\\第三行标题},
-%       title*       = {My title in English},
+%       title*       = {My Awesome Work},
 %       keywords     = {我,就是,充数的,关键词},
 %       keywords*    = {Dummy,Keywords,Here,{it is}},
 %       grade        = {2018},
@@ -1526,7 +1542,8 @@
 %
 % 如果需要国家图书馆封面,还需要加入如下信息
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]confer-date,
+%   bottom-date,chairman,reviewer,clc,secret-level,udc,supervisor-contact}]
 %   \njusetup[info]{
 %       confer-date  = {2022-05-20},
 %       bottom-date  = {2022-05-21},
@@ -1541,10 +1558,11 @@
 %
 % 博士后可以参考如下范例输入个人信息。
 %
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]info},emph={[3]title,title*,
+%   keywords,keywords*,student-id,author,department,major,supervisor,submit-date}]
 %   \njusetup[info]{
 %       title        = {第一行标题\\第二行标题},
-%       title*       = {My title in English},
+%       title*       = {My Awesome Work},
 %       keywords     = {我,就是,充数的,关键词},
 %       keywords*    = {Dummy, Keywords, Here, {it is}},
 %       student-id   = {189114514},
@@ -1588,8 +1606,8 @@
 %
 % \begin{function}{header/content,header/content*,footer/content,footer/content*}
 %   \begin{syntax}
-%     content  = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\}
-%     content* = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\}
+%     \OPT{content}  = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\}
+%     \OPT{content*} = \{\Arg{位置}\Arg{内容},\Arg{位置}\Arg{内容},...\}
 %   \end{syntax}
 % 页眉页脚的格式与内容设置。带有星号的设置项供单面模式下使用。
 % \end{function}
@@ -1604,7 +1622,7 @@
 % 并将页眉格式设置成五号黑体,奇数页左侧为节名,右侧为页码,
 % 偶数页左侧为页码,右侧为章名。
 % \begin{latexexample}[moretexcs={\njusetup,\sffamily,\njusetformat},
-%   emph={[2]header,footer}]
+%   emph={[2]header,footer},emph={[3]content}]
 %   \njusetup[header/content]{
 %       { OR } { \thepage }, { OL } { \rightmark },
 %       { EL } { \thepage }, { ER } { \leftmark  }
@@ -1639,7 +1657,7 @@
 %
 % \begin{function}[added=2022-08-06]{image/path}
 %   \begin{syntax}
-%     path = \{\marg{路径1},\marg{路径2},...\}
+%     \OPT{path} = \{\marg{路径1},\marg{路径2},...\}
 %   \end{syntax}
 % 图片搜索路径,等效于 \tn{graphicspath}。这个选项仅能设置一次。
 % \end{function}
@@ -1646,14 +1664,31 @@
 %
 % \subsubsection{脚注}
 %
-% \begin{function}[added=2022-05-01,updated=2022-08-03]{footnote/style}
+% \begin{function}[added=2022-05-01,updated=2022-10-16]{footnote/style}
 %   \begin{syntax}
-%     style = <(plain)|pifont>
+%     \OPT{style} = <(plain)|pifont|circled|circled*>
 %   \end{syntax}
-% 设置脚注编号样式。默认为普通数字,使用 |pifont|
-% 选项可修改为带圈数字。单一页面内请尽量避免超过 10 条脚注。
+% 设置脚注编号样式。默认为普通数字;使用 \opt{pifont} 可修改为带圈数字,
+% 此样式受到字符闲置,单页不建议超过10条脚注;使用 \opt{circled} 或 \opt{circled*}
+% 选项同样可修改为带圈数字,且不受单页脚注数量的限制,带星号的选项为黑底白字(阴文)。
+% \footnote{此功能依赖的 \pkg{circledtext} 宏包于 2022 年 4 月发布,可能需要手动安装。}
 % \end{function}
 %
+% \begin{function}[added=2022-10-16]{footnote/circledtext-option}
+%   \begin{syntax}
+%     \OPT{circledtext-option} = \meta{选项列表}
+%   \end{syntax}
+% \opt{circled} 或 \opt{circled*} 选项的带圈数字编号使用 \pkg{circledtext}
+% 宏包绘制,可使用本选项载入更多定制设置,详见其手册。
+% \end{function}
+%
+% \begin{function}[added=2022-10-16]{footnote/hang}
+%   \begin{syntax}
+%     \OPT{hang} = \TTF
+%   \end{syntax}
+% 是否进行悬挂缩进。默认为是,缩进宽度为 \qty{1.5}{em}。
+% \end{function}
+%
 % 脚注样式的调整依赖 \pkg{footmisc}。如果希望使用 \LaTeX 的默认样式,
 % 可以通过第 \ref{subsubsec:optional-pkg} 节提供的选项禁用该宏包。
 %
@@ -1678,13 +1713,15 @@
 %
 % \begin{function}[added=2022-07-31]{math/style}
 %   \begin{syntax}
-%     style = <TeX|ISO|(GB)>
+%     \OPT{style} = <TeX|ISO|(GB)>
 %   \end{syntax}
 % 数学符号风格。
 % \end{function}
 %
 % 默认的国标风格 \opt{GB} 相当于在导言区设置了
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]math}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]math},
+%   emph={[3]integral,integral-limits,less-than-or-equal,
+%   math-ellipsis,partial,real-part,vector,uppercase-greek}]
 %   \njusetup[math]{
 %       integral           = upright,
 %       integral-limits    = false,
@@ -1701,7 +1738,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/integral}
 %   \begin{syntax}
-%     integral = <upright|slanted>
+%     \OPT{integral} = <upright|slanted>
 %   \end{syntax}
 % 积分号的正/斜体。
 % 该选项需要字体的支持,目前仅限 \opt{xits}、\opt{newcm}。
@@ -1709,7 +1746,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/integral-limits}
 %   \begin{syntax}
-%     integral-limits = <\TF>
+%     \OPT{integral-limits} = <\TF>
 %   \end{syntax}
 % 积分号上下限的位置,可选:\opt{true}(在上下)、\opt{false}(在右侧)。
 % 这个设置只影响行间公式,行内公式统一居右侧,不受影响。
@@ -1717,7 +1754,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/less-than-or-equal}
 %   \begin{syntax}
-%     less-than-or-equal = <slanted|horizontal>
+%     \OPT{less-than-or-equal} = <slanted|horizontal>
 %   \end{syntax}
 % 小于等于号和大于等于号的字形。
 % 这将控制 \tn{le}、\tn{ge}、\tn{leq} 和 \tn{geq} 的符号是
@@ -1726,7 +1763,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/math-ellipsis}
 %   \begin{syntax}
-%     math-ellipsis = <centered|lower>
+%     \OPT{math-ellipsis} = <centered|lower>
 %   \end{syntax}
 % 省略号 \tn{dots} 的样式,可选:\opt{centered}(按照中文的习惯固定居中)、
 % \opt{lower}(取决于前后符号的位置)。
@@ -1735,7 +1772,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/partial}
 %   \begin{syntax}
-%     partial = <upright|italic>
+%     \OPT{partial} = <upright|italic>
 %   \end{syntax}
 % 偏微分符号的正/斜体。
 % \end{function}
@@ -1742,7 +1779,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/real-part}
 %   \begin{syntax}
-%     real-part = <roman|fraktur>
+%     \OPT{real-part} = <roman|fraktur>
 %   \end{syntax}
 % 实部 \tn{Re} 和虚部 \tn{Im} 的字体。
 % \end{function}
@@ -1749,7 +1786,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/vector}
 %   \begin{syntax}
-%     vector = <boldfont|arrow>
+%     \OPT{vector} = <boldfont|arrow>
 %   \end{syntax}
 % 向量的表示方法,可选粗斜体或箭头。
 % \end{function}
@@ -1756,7 +1793,7 @@
 %
 % \begin{function}[added=2022-07-31]{math/uppercase-greek}
 %   \begin{syntax}
-%     uppercase-greek = <upright|italic>
+%     \OPT{uppercase-greek} = <upright|italic>
 %   \end{syntax}
 % 大写希腊字母的正/斜体。
 % 有限增量符号 $\increment x$ 固定使用正体,推荐使用 \tn{increment} 表示。
@@ -1787,7 +1824,7 @@
 %
 % \begin{function}[added=2022-04-21]{theorem/style}
 %   \begin{syntax}
-%     style = <(plain)|break|change|margin|empty|...>
+%     \OPT{style} = <(plain)|break|change|margin|empty|...>
 %   \end{syntax}
 % 定理基本样式。等效于 \tn{theoremstyle}\marg{样式名称}。
 % \end{function}
@@ -1794,7 +1831,7 @@
 %
 % \begin{function}[added=2022-04-21]{theorem/header-font}
 %   \begin{syntax}
-%     header-font = \meta{头部字体格式}
+%     \OPT{header-font} = \meta{头部字体格式}
 %   \end{syntax}
 % 定理头部字体格式。等效于 \tn{theoremheaderfont}\marg{格式}。
 % \end{function}
@@ -1801,7 +1838,7 @@
 %
 % \begin{function}[added=2022-04-21]{theorem/body-font}
 %   \begin{syntax}
-%     body-font = \meta{内部字体格式}
+%     \OPT{body-font} = \meta{内部字体格式}
 %   \end{syntax}
 % 定理内部字体格式。等效于 \tn{theorembodyfont}\marg{格式}。
 % \end{function}
@@ -1808,7 +1845,7 @@
 %
 % \begin{function}[added=2022-04-21]{theorem/qed-symbol}
 %   \begin{syntax}
-%     qed-symbol = \meta{证毕符号}
+%     \OPT{qed-symbol} = \meta{证毕符号}
 %   \end{syntax}
 % 证毕符号。等效于 \tn{theoremsymbol}\marg{符号}。默认为空心方块(\mdlgwhtsquare)。
 % 禁用 \pkg{unicode-math} 时为实心黑色方块(\rule{1ex}{1ex})。
@@ -1816,7 +1853,7 @@
 %
 % \begin{function}[added=2022-04-21]{theorem/counter}
 %   \begin{syntax}
-%     counter = <part|(chapter)|section|...>
+%     \OPT{counter} = <part|(chapter)|section|...>
 %   \end{syntax}
 % 定理计数器范围。
 % \end{function}
@@ -1824,7 +1861,7 @@
 % 模板的默认设置等效于
 %
 % \begin{latexexample}[moretexcs={\njusetup,\bfseries,\itshape,\mdlgwhtsquare},
-%   emph={[2]theorem}]
+%   emph={[2]theorem},emph={[3]style,header-font,body-font,qed-symbol,counter}]
 %   \njusetup[theorem]{
 %       style       = plain,
 %       header-font = \normalfont \bfseries ,
@@ -1838,7 +1875,7 @@
 %
 % \begin{function}[added=2022-08-05]{theorem/type}
 %   \begin{syntax}
-%     type = \{\marg{环境名,类型标识} \marg{头名称},...\}
+%     \OPT{type} = \{\marg{环境名,类型标识} \marg{头名称},...\}
 %   \end{syntax}
 % 需要定义的定理类型列表。在可选的 \meta{类型标识} 中,含有\emph{星号}表示
 % 需要编号,含有\emph{加号}需要证毕符号。该选项存储的是用来定义环境的参数,
@@ -1846,28 +1883,29 @@
 % \end{function}
 %
 % \opt{theorem/type} 初始定义的环境列表如表~\ref{tab:mathenv} 所示。
-% 其中证明环境较为特殊,不编号且会在结尾添加证毕符号。
 % 这些环境并没有预先创建,使用方法见下面的例子。
 %
 % \begin{table}[htbp]
 %   \centering
-%   \caption{预置的数学定理环境}
-%   \label{tab:mathenv}
-%   \begin{tabular}{cc|cc}
+%   \begin{talltblr} [
+%       caption = {预置的数学定理环境},
+%       label   = {tab:mathenv},
+%       note{a} = {证明环境较为特殊,不编号且会在结尾添加证毕符号。} ]
+%     { colspec = {cc|cc} }
 %     \toprule
-%     \bf 标签   & \bf 名称 & \bf 标签   & \bf 名称 \\
+%       标签       & 名称     & 标签       & 名称     \\
 %     \midrule
-%     axiom      & 公理     & lemma      & 引理     \\
-%     corollary  & 推论     & proof      & 证明     \\
-%     definition & 定义     & theorem    & 定理     \\
-%     example    & 例       &            &          \\
+%       axiom      & 公理     & lemma      & 引理     \\
+%       corollary  & 推论     & proof \TA  & 证明     \\
+%       definition & 定义     & theorem    & 定理     \\
+%       example    & 例       &            &          \\
 %     \bottomrule
-%   \end{tabular}
+%   \end{talltblr}
 % \end{table}
 %
 % \begin{function}[added=2022-08-05]{theorem/define}
 %   \begin{syntax}
-%      <define>
+%      <\OPT{define}>
 %   \end{syntax}
 % 创建定理环境。
 % \end{function}
@@ -1880,9 +1918,9 @@
 % 宋体,定义了 \env{exercise} 和 \env{solution} 两种定理环境,后者没有编号。
 %
 % \begin{latexexample}[moretexcs={\njusetup,\normalfont},
-%   emph={[2]theorem}]
+%   emph={[2]theorem},emph={[3]define,body-font,type}]
 %   \njusetup[theorem]{
-%       define,
+%       define ,
 %       body-font   = \normalfont ,
 %       type        = {
 %           { {exercise} {习题} },
@@ -1897,9 +1935,9 @@
 %
 % \begin{function}[added=2022-07-31]{label-sep/figure,label-sep/table,label-sep/equation}
 %   \begin{syntax}
-%     figure   = \meta{符号}
-%     table    = \meta{符号}
-%     equation = \meta{符号}
+%     \OPT{figure}   = \meta{符号}
+%     \OPT{table}    = \meta{符号}
+%     \OPT{equation} = \meta{符号}
 %   \end{syntax}
 % 图片、表格、公式编号中的连接符样式,默认为短横线(en dash)。
 % \end{function}
@@ -1921,7 +1959,7 @@
 %
 % \begin{function}[added=2021-12-19]{bib/style}
 %   \begin{syntax}
-%     style = <(numeric)|author-year|\meta{自定义样式}>
+%     \OPT{style} = <(numeric)|author-year|\meta{自定义样式}>
 %   \end{syntax}
 % 参考文献样式。可选顺序编码制 \opt{numeric} 和著者-出版年制 \opt{author-year},
 % 或自行填入任意其他 \pkg{biblatex} 样式。默认为顺序编码制。
@@ -1945,7 +1983,7 @@
 %
 % \begin{function}[added=2022-02-15]{bib/option}
 %   \begin{syntax}
-%     option = \meta{选项列表}
+%     \OPT{option} = \meta{选项列表}
 %   \end{syntax}
 % 待传入 \pkg{biblatex} 宏包的额外选项列表。
 % \end{function}
@@ -1955,7 +1993,7 @@
 %
 % \begin{function}[added=2021-12-19]{bib/resource}
 %   \begin{syntax}
-%     resource = \Arg{文件}
+%     \OPT{resource} = \Arg{文件}
 %   \end{syntax}
 % 参考文献数据源。类似于 \tn{addbibresource} 命令,但可以使用逗号分隔的
 % 列表形式。必须使用带扩展名(\file{.bib})的完整文件名。
@@ -1973,7 +2011,8 @@
 % 可以参考如下范例进行参考文献设置。
 % 其中 \opt{bib/option} 的内容旨在关闭部分不需显示的文献信息,
 % 并采取仅首字母大写的作者姓名格式,可根据需要使用。
-% \begin{latexexample}[moretexcs={\njusetup},emph={[2]bib}]
+% \begin{latexexample}[moretexcs={\njusetup},emph={[2]bib},
+%   emph={[3]style,resource,option}]
 %   \njusetup[bib]{
 %       style    = author-year,
 %       resource = {njuthesis-sample.bib},
@@ -2050,16 +2089,15 @@
 %       note{a} = {在此样式下 \tn{parencite} 效果等同于 \tn{cite}。} ]
 %     { colspec = {cll} }
 %     \toprule
-%       引用方式       & 命令                  & 排版效果                     \\
+%       引用方式       & 命令               & 排版效果                       \\
 %     \midrule
-%       单篇文献       & \tn{cite}\TblrNote{a} &
-%                                              作者加年份用括号包围可设置页码 \\
-%       多篇文献       & \tn{cite}             & 分号隔开                     \\
-%       标注页码       & \tn{pagescite}        & 作者加年份用括号包围自动页码 \\
-%       标注年份       & \tn{yearcite}         & 用括号包围的年份             \\
-%       标注年份、页码 & \tn{yearpagescite}    & 提供年份用括号包围自动页码   \\
-%       标注作者       & \tn{textcite}         & 作者为主语加加括号包围年份   \\
-%       完整脚注       & \tn{footfullcite}     & 脚注方式                     \\
+%       单篇文献       & \tn{cite} \TA      & 作者加年份用括号包围可设置页码 \\
+%       多篇文献       & \tn{cite}          & 分号隔开                       \\
+%       标注页码       & \tn{pagescite}     & 作者加年份用括号包围自动页码   \\
+%       标注年份       & \tn{yearcite}      & 用括号包围的年份               \\
+%       标注年份、页码 & \tn{yearpagescite} & 提供年份用括号包围自动页码     \\
+%       标注作者       & \tn{textcite}      & 作者为主语加加括号包围年份     \\
+%       完整脚注       & \tn{footfullcite}  & 脚注方式                       \\
 %     \bottomrule
 %   \end{talltblr}
 % \end{table}
@@ -2111,8 +2149,8 @@
 % \begin{function}[added=2021-12-23,updated=2022-08-06]{
 %   image/nju-emblem,image/nju-name}
 %   \begin{syntax}
-%     nju-emblem = \Arg{文件}
-%     nju-name   = \Arg{文件}
+%     \OPT{nju-emblem} = \Arg{文件}
+%     \OPT{nju-name}   = \Arg{文件}
 %   \end{syntax}
 % 校名、校徽图片文件路径。
 % \end{function}
@@ -2141,7 +2179,7 @@
 %
 % \begin{function}[added=2022-02-04,updated=2022-07-31]{abstract/toc-entry}
 %   \begin{syntax}
-%     toc-entry = <\TTF>
+%     \OPT{toc-entry} = <\TTF>
 %   \end{syntax}
 % 是否将摘要条目插入目录,默认开启。
 % 关闭此选项后摘要页将不会出现在目录中,仅保留其 PDF 书签。
@@ -2149,7 +2187,7 @@
 %
 % \begin{function}[added=2022-03-26,updated=2022-07-31]{abstract/title-style}
 %   \begin{syntax}
-%     title-style = <(strict)|centered|natural>
+%     \OPT{title-style} = <(strict)|centered|natural>
 %   \end{syntax}
 % 选择研究生摘要标题样式。
 % 默认为严格模式(\opt{strict}),即完全模仿材料包要求。
@@ -2191,7 +2229,7 @@
 %
 % \begin{function}[added=2022-08-08]{tableofcontents/dotline}
 %   \begin{syntax}
-%     dotline = <chapter|(section)>
+%     \OPT{dotline} = <chapter|(section)>
 %   \end{syntax}
 % 目录中的引导线设置。选择 \opt{chapter} 会为章标题后添加引导线。
 % \end{function}
@@ -2200,7 +2238,7 @@
 %   tableofcontents/toc-entry,listoffigures/toc-entry,
 %   listoftables/toc-entry}
 %   \begin{syntax}
-%     toc-entry = <\TTF>
+%     \OPT{toc-entry} = <\TTF>
 %   \end{syntax}
 % 是否在目录中显示目录自身的条目,默认开启。关闭后目录、
 % 插图目录和表格目录将不会出现在目录中,仅保留其 PDF 书签。
@@ -2208,7 +2246,7 @@
 % \end{function}
 %
 % 如果仅需要禁用插图目录和表格目录的条目,可以这样设置
-% \begin{latexexample}[moretexcs={\njusetup},
+% \begin{latexexample}[moretexcs={\njusetup},emph={[3]toc-entry},
 %   emph={[2]tableofcontents,listoffigures,listoftables}]
 %   \njusetup{
 %       tableofcontents/toc-entry = true, % 仅作展示,无需手动启用
@@ -2236,7 +2274,8 @@
 % \subsubsection{致谢页}
 %
 % \DescribeEnv{acknowledgement}
-% 同前言,使用 \env{acknowledgement} 环境。
+% 使用 \env{acknowledgement} 环境生成致谢页,附带有相应目录条目。
+% 在开启盲审模式时,仅显示该目录条目。
 %
 % \begin{latexexample}[emph={[1]acknowledgement}]
 %   \begin{acknowledgement}
@@ -2421,6 +2460,9 @@
 %   \item \pkg{fandol}、\pkg{tex-gyre}、\pkg{tex-gyre-math}、\pkg{xits} 等,
 %         提供自由字体。
 %   \item \pkg{emptypage},在双面模式下清空空白页的页眉、页脚和页码。
+%   \item \pkg{circledtext} 和 \pkg{l3experimental},用于在 \opt{footnote/circled}
+%         和 \opt{footnote/circled*} 选项下生成脚注圈码。
+%   \item \pkg{pifont},用于在 \opt{footnote/pifont} 选项下生成脚注圈码。
 %   \item \pkg{tikz} 和 \pkg{njuvisual},用于绘制封面的校名校徽。
 %   \item \pkg{tabularray},用于绘制研究生的出版授权书信息表格。
 %   \item \pkg{xeCJKfntef} 或 \pkg{lua-ul},用于在对应引擎下绘制下划线。
@@ -2465,8 +2507,8 @@
 % \bibitem{install-latex-guide-zh-cn}
 % 王然.
 % \newblock \textit{一份简短的关于 \LaTeX 安装的介绍} [EB/OL].
-% \newblock version 2021.12.1,
-% \newblock (2021-12-01)
+% \newblock version 2022.10.1,
+% \newblock (2022-10-01)
 % \urlprefix\url{https://ctan.org/pkg/install-latex-guide-zh-cn}
 % \urlprefix\CTANurl[文档:]{info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf}
 %
@@ -2546,8 +2588,8 @@
 % \bibitem{biblatex-gb7714-2015}
 % 胡振震.
 % \newblock \textit{符合 GB/T 7714-2015 标准的 biblatex 参考文献样式} [EB/OL].
-% \newblock version 1.1b,
-% \newblock (2021-12-11)
+% \newblock version 1.1j,
+% \newblock (2022-08-29)
 % \urlprefix\url{https://ctan.org/pkg/biblatex-gb7714-2015}
 % \urlprefix\CTANurl[文档:]{biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf}
 %
@@ -2559,6 +2601,14 @@
 % \urlprefix\url{https://ctan.org/pkg/ctex}
 % \urlprefix\CTANurl[文档及源代码:]{language/chinese/ctex/ctex.pdf}
 %
+% \bibitem{circledtext}
+% 耿楠.
+% \newblock \textit{Create circled text} [EB/OL].
+% \newblock version 1.1.0,
+% \newblock (2022-04-28)
+% \urlprefix\url{https://ctan.org/pkg/circledtext}
+% \urlprefix\CTANurl[文档:]{macros/latex/contrib/circledtext/circledtext.pdf}
+%
 % \bibitem{latexmk}
 % \textsc{Collins J}.
 % \newblock \textit{Fully automated \LaTeX document generation} [EB/OL].
@@ -2763,8 +2813,8 @@
 %
 % \subsection{定义变量}
 %
-% 本模板的变量名称通式为 |\|\meta{作用域}|_@@_|\meta{族}|_|\meta{描述}|_|\meta{类型}
-% (出现在源代码中)或 |\|\meta{作用域}|__nju_|\meta{族}|_|\meta{描述}|_|\meta{类型}
+% 本模板的变量名称通式为 \cs[no-index]{\meta{作用域}_@@_\meta{族}_\meta{描述}_\meta{类型}}
+% (出现在源代码中)或 \cs[no-index,replace=false]{\meta{作用域}_@@_\meta{族}_\meta{描述}_\meta{类型}}
 % (出现在文档中)。作用域为单个字母,|l| 代表局部变量,|g| 代表全局变量,|c| 代表常
 % 量。最后一个下划线后的内容指示其类型,但引擎不会根据名称检查变量类型。
 %
@@ -2788,23 +2838,17 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{
-%   \g_@@_info_degree_int,
-%   \g_@@_info_type_int}
-% 用于存储学位类型的变量。
+% \begin{variable}{\g_@@_info_type_int}
+% 用于存储论文类型的变量。
 %    \begin{macrocode}
-\int_new:N \g_@@_info_degree_int
 \int_new:N \g_@@_info_type_int
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{
-%   \g_@@_info_degree_tl,
-%   \g_@@_info_type_en_tl}
-% 用于存储学位名称的变量。
+% \begin{variable}{\g_@@_opt_academic_bool}
+% 用于判断学术型或专业型学位的变量。
 %    \begin{macrocode}
-\tl_new:N  \g_@@_info_degree_tl
-\tl_new:N  \g_@@_info_type_en_tl
+\bool_new:N \g_@@_opt_academic_bool
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2811,15 +2855,15 @@
 % \begin{variable}{\g_@@_opt_twoside_bool}
 % 定义用于判断是否使用双面模式的变量,初始值为使用双面模式。
 %    \begin{macrocode}
-\bool_new:N \g_@@_opt_twoside_bool
+\bool_new:N      \g_@@_opt_twoside_bool
 \bool_set_true:N \g_@@_opt_twoside_bool
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\l_@@_second_supvbool}
+% \begin{variable}{\g_@@_opt_second_supv_bool}
 % 定义用于判断是否有第二导师的变量。
 %    \begin{macrocode}
-\bool_new:N \l_@@_second_supvbool
+\bool_new:N \g_@@_opt_second_supv_bool
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2856,7 +2900,6 @@
 % 是否使用独立的字体文件。
 %    \begin{macrocode}
 \bool_new:N \g_@@_font_path_bool
-\bool_gset_false:N \g_@@_font_path_bool
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2867,23 +2910,6 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{\g_@@_thm_type_clist}
-% 默认定理类型、头名称,以及是否需要编号和证毕符号。
-%    \begin{macrocode}
-\clist_new:N   \g_@@_thm_type_clist
-\clist_gset:Nn \g_@@_thm_type_clist
-  {
-    { axiom      } { 公理 },
-    { corollary  } { 推论 },
-    { definition } { 定义 },
-    { example    } { 例   },
-    { lemma      } { 引理 },
-    { proof, *+  } { 证明 },
-    { theorem    } { 定理 }
-  }
-%    \end{macrocode}
-% \end{variable}
-%
 % \begin{variable}{\c_@@_today_tl}
 % 编译当天日期,格式为 |yyyy-mm-dd|。
 %    \begin{macrocode}
@@ -2896,10 +2922,7 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{
-%   \c_@@_name_type_clist,
-%   \c_@@_name_type_en_clist,
-%   \c_@@_name_degree_clist}
+% \begin{variable}{\c_@@_name_type_clist,\c_@@_name_type_en_clist}
 % 论文类型与学位类型。
 %    \begin{macrocode}
 \clist_const:Nn \c_@@_name_type_clist
@@ -2906,8 +2929,6 @@
   { 学士, 硕士, 博士 }
 \clist_const:Nn \c_@@_name_type_en_clist
   { Bachelor, Master, Doctor~of~Philosophy }
-\clist_const:Nn \c_@@_name_degree_clist
-  { \c_empty_tl, 专业 }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2922,21 +2943,16 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% \begin{variable}{
-%   \c_@@_name_anon_clist,
-%   \c_@@_name_anon_en_clist,
-%   \c_@@_name_anonlist_clist}
-% 盲审模式下不显示的个人信息项。
+% \begin{variable}{\c_@@_name_anon_clist,\c_@@_name_anon_en_clist}
+% 盲审模式下不显示的个人信息键名。
 %    \begin{macrocode}
 \clist_const:Nn \c_@@_name_anon_clist
   {
-    author, chairman, clc, dept, email, field, grade,
-    id, major, secretlv, supvcont, udc
+    author, chairman, email, student-id, reviewer,
+    supervisor-contact, supervisor, supervisor-ii
   }
 \clist_const:Nn \c_@@_name_anon_en_clist
-  { author, dept, field, major, supv, supvii }
-\clist_const:Nn \c_@@_name_anonlist_clist
-  { reviewer, supv, supvii }
+  { author, supervisor, supervisor-ii }
 %    \end{macrocode}
 % \end{variable}
 %
@@ -2943,6 +2959,13 @@
 %
 % \subsection{内部函数}
 %
+% \begin{macro}{\@@_null:}
+% 等价于 \LaTeXe{} 中的 \tn{null}。
+%    \begin{macrocode}
+\cs_new:Nn \@@_null: { \hbox:n { } }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\@@_quad:,\@@_qquad:}
 % 等价于 \LaTeXe{} 中的 \tn{quad} 和 \tn{qquad}。
 %    \begin{macrocode}
@@ -3041,7 +3064,7 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_box_ulined_info:Nn}
-% 以上盒子只用来打印 \cs{g_@@_info_\meta{描述}_tl} 变量。
+% 以上盒子只用来打印 \cs[no-index]{g_@@_info_\meta{描述}_tl} 变量。
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_box_ulined_info:Nn #1#2
   { \@@_box_ulined:Nc #1 { g_@@_info_ #2 _tl } }
@@ -3062,13 +3085,13 @@
 \cs_new_protected:Npn \@@_box_spread:NNn #1#2#3
   {
     \mode_leave_vertical:
-    \@@_get_width:Nn \l_@@_tmpa_dim { #2 #3 }
+    \@@_get_width:Nn \l_@@_tmp_skip { #2 #3 }
     \hbox_to_wd:nn { #1 }
       {
-        \dim_compare:nTF { \l_@@_tmpa_dim > #1 }
+        \dim_compare:nTF { \l_@@_tmp_skip > #1 }
           {
             \tex_hfil:D \scalebox
-              { \dim_to_decimal_in_unit:nn { #1 } { \l_@@_tmpa_dim } }
+              { \dim_to_decimal_in_unit:nn { #1 } { \l_@@_tmp_skip } }
               [ 1.0 ] { #2 #3 } \tex_hfil:D
           }
           { #2 \tl_map_inline:nn { #3 } { ##1 \tex_hfil:D } \tex_unskip:D }
@@ -3079,7 +3102,7 @@
 % \end{macro}
 %
 % \begin{macro}{\@@_box_spread_name:Nn,\@@_box_spread_name:NNn}
-% 以上盒子只用来打印 \cs{c_@@_name_\meta{描述}_tl} 变量。
+% 以上盒子只用来打印 \cs[no-index]{c_@@_name_\meta{描述}_tl} 变量。
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_box_spread_name:Nn #1#2
   { \@@_box_spread:NNv #1 \c_empty_tl { c_@@_name_ #2 _tl } }
@@ -3184,9 +3207,9 @@
 %   \item |dim| 型变量
 %   \item 文本 |clist|
 % \end{arguments}
-% 当 \cs{l_@@_tmpa_clist} 非空时,弹出最后一个元素赋给 \cs{l_@@_tmpa_tl},
+% 当 \cs{l_@@_tmp_clist} 非空时,弹出最后一个元素赋给 \cs{l_@@_tmpa_tl},
 % 获取其长度后与 |#1| 进行比较,二者中较大的那一个将成为 |#1| 的新值。
-% 不断循环,直至 \cs{l_@@_tmpa_clist} 为空。
+% 不断循环,直至 \cs{l_@@_tmp_clist} 为空。
 %    \begin{macrocode}
 \cs_new:Npn \@@_get_max_width:NN #1#2
   {
@@ -3199,55 +3222,53 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_full_uline:Nn,\@@_full_uline:Nx}
+% \begin{macro}{\@@_get_width_print:Nn,\@@_get_width_print:Nv,
+%   \@@_get_width_print:Nx}
 % 横跨整页的下划线。
 % \begin{arguments}
 %   \item 宽度,|dim| 型变量
 %   \item 文本
 % \end{arguments}
-% 先使用 \cs{@@_get_text_width:Nn} 获取文本内容宽度,
+% 先使用 \cs{@@_get_width:Nn} 获取文本内容到右边距的宽度,
 % 该宽度存储在调用的 |dim| 型变量中。随后输出文本内容。
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_full_uline:Nn #1#2
+\cs_new_protected:Npn \@@_get_width_print:Nn #1#2
   {
     \@@_get_width:Nn #1 { #2 }
     \dim_set:Nn #1 { \textwidth - #1 } #2
   }
-\cs_generate_variant:Nn \@@_full_uline:Nn { Nx }
+\cs_generate_variant:Nn \@@_get_width_print:Nn { Nv }
+\cs_generate_variant:Nn \@@_get_width_print:Nn { Nx }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_uline_entry:Nnnn}
+% \begin{macro}{\@@_uline_entry:Nn}
 % 生成占整页宽度的下划线条目。
 % \begin{arguments}
 %   \item 宽度,|dim| 型变量
 %   \item 文本
-%   \item 文本
-%   \item 分隔符
 % \end{arguments}
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_uline_entry:Nnnn #1#2#3#4
+\cs_new_protected:Npn \@@_uline_entry:Nn #1#2
   {
-    \@@_full_uline:Nx #1 { \@@_name:n { #2 } #4 }
-    \@@_box_ulined_info:Nn #1 { #3 }
+    \@@_get_width_print:Nv #1 { c_@@_name_ #2 _tl }
+    \@@_box_ulined_info:Nn #1 { #2 }
   }
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_uline_bientry:Nnnn}
+% \begin{macro}{\@@_uline_bientry:Nn}
 % 生成占半页宽度的下划线条目。
 % \begin{arguments}
 %   \item 宽度,|dim| 型变量
 %   \item 文本
-%   \item 文本
-%   \item 分隔符
 % \end{arguments}
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_uline_bientry:Nnnn #1#2#3#4
+\cs_new_protected:Npn \@@_uline_bientry:Nn #1#2
   {
-    \@@_full_uline:Nx #1 { \@@_name:n { #2 } #4 }
+    \@@_get_width_print:Nv #1 { c_@@_name_ #2 _tl }
     \dim_sub:Nn #1 { \textwidth / 2 }
-    \@@_box_ulined_info:Nn #1 { #3 }
+    \@@_box_ulined_info:Nn #1 { #2 }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -3677,10 +3698,10 @@
     bottom-skip = \l_@@_bottom_skip,
     align =
       {
-        l = { \cs_set_eq:NN     \@@_align: \raggedright },
-        r = { \cs_set_eq:NN     \@@_align: \raggedleft  },
-        c = { \cs_set_eq:NN     \@@_align: \centering   },
-        n = { \__nju_cs_clear:N \@@_align:              }
+        l = { \cs_set_eq:NN \@@_align: \raggedright },
+        r = { \cs_set_eq:NN \@@_align: \raggedleft  },
+        c = { \cs_set_eq:NN \@@_align: \centering   },
+        n = { \cs_set:Nn    \@@_align: { }          }
       }
   }
   {
@@ -3802,9 +3823,9 @@
 % \changes{v1.0}{2022/06/30}{修改类型选项。}
 % 学位,默认为学士。
 %    \begin{macrocode}
-    type              .choices:nn = { bachelor, master, doctor, postdoc }
+    type               .choices:nn = { bachelor, master, doctor, postdoc }
       { \int_gset_eq:NN \g_@@_info_type_int   \l_keys_choice_int },
-    type              .initial:n  = bachelor,
+    type               .initial:n  = bachelor,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3812,9 +3833,12 @@
 % \changes{v1.0}{2022/06/30}{修改学位选项。}
 % 研究生的学位类型,默认为学术学位。
 %    \begin{macrocode}
-    degree            .choices:nn = { academic, professional }
-      { \int_gset_eq:NN \g_@@_info_degree_int \l_keys_choice_int },
-    degree            .initial:n  = academic,
+    degree              .choice:,
+    degree / academic     .code:n  =
+      { \bool_set_true:N  \g_@@_opt_academic_bool },
+    degree / professional .code:n  =
+      { \bool_set_false:N \g_@@_opt_academic_bool },
+    degree             .initial:n  = academic,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3822,8 +3846,8 @@
 % 是否需要国家图书馆封面。本选项仅用于研究生模板,默认关闭。
 % \footnote{nl 代表 National Library。}
 %    \begin{macrocode}
-    nl-cover         .bool_set:N  = \g_@@_opt_nlcover_bool,
-    nl-cover          .initial:n  = false,
+    nl-cover          .bool_set:N  = \g_@@_opt_nlcover_bool,
+    nl-cover           .initial:n  = false,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3834,8 +3858,8 @@
 % \footnote{原创性声明的英文翻译为 Declaration of Originality,
 % 为了使选项表义更清晰同时缩减名称长度,将其修改为“声明页”这一名称。}
 %    \begin{macrocode}
-    decl-page        .bool_set:N  = \g_@@_opt_decl_bool,
-    decl-page         .initial:n  = false,
+    decl-page         .bool_set:N  = \g_@@_opt_decl_bool,
+    decl-page          .initial:n  = false,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3843,8 +3867,8 @@
 % \changes{v0.13}{2021/12/15}{新增草稿模式选项。}
 % 是否开启草稿模式(默认关闭)。
 %    \begin{macrocode}
-    draft           .bool_gset:N  = \g_@@_opt_draft_bool,
-    draft             .initial:n  = false,
+    draft            .bool_gset:N  = \g_@@_opt_draft_bool,
+    draft              .initial:n  = false,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3852,9 +3876,9 @@
 % \changes{v0.14}{2022/01/14}{新增单双面模式选项。}
 % 单双面模式(默认为双面)。
 %    \begin{macrocode}
-    oneside   .value_forbidden:n  = true,
-    twoside   .value_forbidden:n  = true,
-    oneside .bool_gset_inverse:N  = \g_@@_opt_twoside_bool,
+    oneside    .value_forbidden:n  = true,
+    twoside    .value_forbidden:n  = true,
+    oneside  .bool_gset_inverse:N  = \g_@@_opt_twoside_bool,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3864,8 +3888,8 @@
 % \begin{macro}{\g_@@_opt_anon_bool}
 % 盲审模式。
 %    \begin{macrocode}
-    anonymous        .bool_set:N  = \g_@@_opt_anon_bool,
-    anonymous         .initial:n  = false,
+    anonymous         .bool_set:N  = \g_@@_opt_anon_bool,
+    anonymous          .initial:n  = false,
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3874,10 +3898,10 @@
 % \changes{v0.14}{2021/12/12}{简化字体选项名称。}
 % 中英文字体选项。
 %    \begin{macrocode}
-    latin-font        .choices:nn =
+    latin-font         .choices:nn =
       { gyre, mac, win, none }
       { \tl_set_eq:NN \g_@@_font_latin_tl \l_keys_choice_tl },
-    cjk-font          .choices:nn =
+    cjk-font           .choices:nn =
       { fandol, founder, mac, noto, source, win, none }
       { \tl_set_eq:NN \g_@@_font_cjk_tl   \l_keys_choice_tl },
 %    \end{macrocode}
@@ -3888,13 +3912,13 @@
 % 数学字体选项。
 % 由 \pkg{unicode-math} 指定 \XeTeX 和 \LuaTeX 下使用的数学字体。
 %    \begin{macrocode}
-    math-font         .choices:nn =
+    math-font          .choices:nn =
       {
         asana, cambria, fira, garamond, lm, libertinus, newcm,
         stix, bonum, dejavu, pagella, schola, termes, xits, none
       }
       { \tl_set_eq:NN \g_@@_font_math_tl  \l_keys_choice_tl },
-    math-font         .initial:n  = xits,
+    math-font          .initial:n  = xits,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -3901,10 +3925,10 @@
 % \begin{macro}{font-path}
 % 独立字体文件的路径。
 %    \begin{macrocode}
-    font-path            .code:n  =
+    font-path             .code:n  =
       {
         \bool_set_true:N \g_@@_font_path_bool
-        \tl_set_eq:NN \g_@@_font_path_tl  \l_keys_choice_tl
+        \tl_set_eq:NN \g_@@_font_path_tl \l_keys_value_tl
       },
 %    \end{macrocode}
 % \end{macro}
@@ -3914,8 +3938,8 @@
 % \begin{macro}{\g_@@_opt_zihao_tl}
 % 字号。默认为小四号。
 %    \begin{macrocode}
-    zihao              .tl_set:N  = \g_@@_opt_zihao_tl,
-    zihao             .initial:n  = -4,
+    zihao               .tl_set:N  = \g_@@_opt_zihao_tl,
+    zihao              .initial:n  = -4,
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3927,8 +3951,8 @@
 % Word 行距,故默认值为 $1.5\times\frac{1.3}{1.2} = 1.625$。
 % 更详细的说明请参考 \pkg{zhlineskip} 宏包文档。
 %    \begin{macrocode}
-    linespread         .tl_set:N  = \g_@@_opt_linespread_tl,
-    linespread        .initial:n  = 1.625,
+    linespread          .tl_set:N  = \g_@@_opt_linespread_tl,
+    linespread         .initial:n  = 1.625,
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -3937,7 +3961,7 @@
 % \changes{v0.16}{2022/02/23}{新增 \opt{config} 选项。}
 % 配置文件路径。
 %    \begin{macrocode}
-    config          .clist_set:N  = \g_@@_config_clist
+    config           .clist_set:N  = \g_@@_config_clist
   }
 %    \end{macrocode}
 % \end{macro}
@@ -4035,7 +4059,14 @@
   { \tl_const:Nn \c_@@_name_pagemode_tl { oneside } }
 %    \end{macrocode}
 %
+% \changes{v1.1}{2022/09/26}{盲审模式下不显示声明页。}
+% 盲审模式下不显示声明页。
+%    \begin{macrocode}
+\bool_if:NT \g_@@_opt_anon_bool
+  { \bool_set_false:N \g_@@_opt_decl_bool }
+%    \end{macrocode}
 %
+%
 % \subsection{用户接口}
 %
 % \begin{macro}{abstract, bib, image, footer, footnote, header,
@@ -4053,6 +4084,19 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\@@_keys_set:nn}
+% \changes{v1.1}{2022/09/26}{使用 \cs{keys_set_filter:nnn} 重构盲审模式。}
+% 在开启盲审模式时,屏蔽被编入 \opt{annoymous} 分组的键值对输入。
+%    \begin{macrocode}
+\bool_if:NTF \g_@@_opt_anon_bool
+  {
+    \cs_new:Npn \@@_keys_set:nn #1#2
+      { \keys_set_filter:nnn {#1} { anonymous } {#2} }
+  }
+  { \cs_new_eq:NN \@@_keys_set:nn \keys_set:nn }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\njusetup}
 % \changes{v0.6}{2021/09/10}{改用键值对输入信息。}
 % \changes{v1.0}{2022/08/01}{增加输入键路径的可选参数。}
@@ -4070,11 +4114,11 @@
 \NewDocumentCommand \njusetup { o m }
   {
     \tl_if_novalue:nTF { #1 }
-      { \keys_set:nn { nju } { #2 } }
+      { \@@_keys_set:nn { nju } { #2 } }
       {
         \tl_if_in:nnTF { #1 } { / }
-          { \keys_set:nn { nju } { #1 = {#2} } }
-          { \keys_set:nn { nju  /  #1 } {#2}   }
+          { \@@_keys_set:nn { nju } { #1 = {#2} } }
+          { \@@_keys_set:nn { nju  /  #1 } {#2}   }
       }
   }
 %    \end{macrocode}
@@ -4182,10 +4226,13 @@
 %    \begin{macrocode}
 \clist_map_inline:nn
   {
-    { no-math           } { fontspec     },
-    { perpage           } { footmisc     },
-    { capitalise, nameinlink, noabbrev }
-                          { cleveref     }
+%    \end{macrocode}
+% 隐藏 |does not contain script "CJK"| 警告。
+%    \begin{macrocode}
+    { quiet   } { xeCJK    },
+    { no-math } { fontspec },
+    { perpage } { footmisc },
+    { capitalise, nameinlink, noabbrev } { cleveref }
   }
   { \PassOptionsToPackage #1 }
 %    \end{macrocode}
@@ -4274,7 +4321,7 @@
 \sys_if_engine_luatex:T
   {
     \RequirePackage { lua-ul }
-    \NewDocumentCommand \njuline { m } { \underLine{#1} \null }
+    \NewDocumentCommand \njuline { m } { \underLine{#1} \@@_null: }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -4407,10 +4454,10 @@
 % \changes{v0.14}{2022/01/14}{将标题断行控制符修改为 |\\|。}
 % 题目。中文题目可使用 |\\| 手动断行。以下标注星号(|*|)的皆为对应的英文字段。
 %    \begin{macrocode}
-    title               .tl_set:N = \g_@@_info_title_tl,
-    title              .initial:n = { 空 },
-    title*              .tl_set:N = \g_@@_info_title_en_tl,
-    title*             .initial:n = { Empty },
+    title               .tl_set:N = \g_@@_info_title_tl             ,
+    title              .initial:n = { 空 }                            ,
+    title*              .tl_set:N = \g_@@_info_title_en_tl          ,
+    title*             .initial:n = { Empty }                         ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4418,8 +4465,8 @@
 % \changes{v0.11}{2021/10/01}{修改了添加关键词的方式。}
 % 关键词列表。
 %    \begin{macrocode}
-    keywords         .clist_set:N = \g_@@_info_keywords_clist,
-    keywords*        .clist_set:N = \g_@@_info_keywords_en_clist,
+    keywords         .clist_set:N = \g_@@_info_keywords_clist       ,
+    keywords*        .clist_set:N = \g_@@_info_keywords_en_clist    ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4426,10 +4473,10 @@
 % \begin{macro}{info/grade,info/student-id,info/author,info/author*}
 % 年级、学号、姓名。
 %    \begin{macrocode}
-    grade               .tl_set:N = \g_@@_info_grade_tl,
-    student-id          .tl_set:N = \g_@@_info_id_tl,
-    author              .tl_set:N = \g_@@_info_author_tl,
-    author*             .tl_set:N = \g_@@_info_author_en_tl,
+    grade               .tl_set:N = \g_@@_info_grade_tl             ,
+    student-id          .tl_set:N = \g_@@_info_id_tl                ,
+    author              .tl_set:N = \g_@@_info_author_tl            ,
+    author*             .tl_set:N = \g_@@_info_author_en_tl         ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4436,12 +4483,12 @@
 % \begin{macro}{info/department,info/department*,info/major,info/major*,info/field,info/field*}
 % 院系、专业、方向。
 %    \begin{macrocode}
-    department          .tl_set:N = \g_@@_info_dept_tl,
-    department*         .tl_set:N = \g_@@_info_dept_en_tl,
-    major               .tl_set:N = \g_@@_info_major_tl,
-    major*              .tl_set:N = \g_@@_info_major_en_tl,
-    field               .tl_set:N = \g_@@_info_field_tl,
-    field*              .tl_set:N = \g_@@_info_field_en_tl,
+    department          .tl_set:N = \g_@@_info_dept_tl              ,
+    department*         .tl_set:N = \g_@@_info_dept_en_tl           ,
+    major               .tl_set:N = \g_@@_info_major_tl             ,
+    major*              .tl_set:N = \g_@@_info_major_en_tl          ,
+    field               .tl_set:N = \g_@@_info_field_tl             ,
+    field*              .tl_set:N = \g_@@_info_field_en_tl          ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4450,8 +4497,8 @@
 % \changes{v0.14}{2022/01/12}{精简导师信息选项。}
 % 导师信息。中文导师全称使用 |clist| 存储,便于在本科生封面中进行分割。
 %    \begin{macrocode}
-    supervisor       .clist_set:N = \g_@@_info_supv_clist,
-    supervisor*         .tl_set:N = \g_@@_info_supv_en_tl,
+    supervisor       .clist_set:N = \g_@@_info_supv_clist           ,
+    supervisor*         .tl_set:N = \g_@@_info_supv_en_tl           ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4458,8 +4505,8 @@
 % \begin{macro}{info/supervisor-ii,info/supervisor-ii*}
 % 第二导师信息。
 %    \begin{macrocode}
-    supervisor-ii    .clist_set:N = \g_@@_info_supvii_clist,
-    supervisor-ii*      .tl_set:N = \g_@@_info_supvii_en_tl,
+    supervisor-ii    .clist_set:N = \g_@@_info_supvii_clist         ,
+    supervisor-ii*      .tl_set:N = \g_@@_info_supvii_en_tl         ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4467,8 +4514,8 @@
 % \changes{v0.14}{2022/01/14}{精简提交日期选项。}
 % 提交日期,初始值为编译当天日期。
 %    \begin{macrocode}
-    submit-date         .tl_set:N = \g_@@_info_submitdate_raw_tl,
-    submit-date        .initial:V = \c_@@_today_tl,
+    submit-date         .tl_set:N = \g_@@_info_submitdate_raw_tl    ,
+    submit-date        .initial:V = \c_@@_today_tl                  ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4476,8 +4523,8 @@
 % \changes{v0.14}{2022/01/14}{精简答辩日期选项。}
 % 答辩日期。
 %    \begin{macrocode}
-    defend-date         .tl_set:N = \g_@@_info_defenddate_raw_tl,
-    defend-date        .initial:V = \c_@@_today_tl,
+    defend-date         .tl_set:N = \g_@@_info_defenddate_raw_tl    ,
+    defend-date        .initial:V = \c_@@_today_tl                  ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4485,8 +4532,8 @@
 % \changes{v0.19}{2022/05/23}{新增国家图书馆封面的学位授予日期设置项。}
 % 学位授予日期。
 %    \begin{macrocode}
-    confer-date         .tl_set:N = \g_@@_info_conferdate_raw_tl,
-    confer-date        .initial:V = \c_@@_today_tl,
+    confer-date         .tl_set:N = \g_@@_info_conferdate_raw_tl    ,
+    confer-date        .initial:V = \c_@@_today_tl                  ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4494,8 +4541,8 @@
 % \changes{v0.19}{2022/05/23}{新增国家图书馆封面的底部日期设置项。}
 % 底部日期。
 %    \begin{macrocode}
-    bottom-date         .tl_set:N = \g_@@_info_bottomdate_raw_tl,
-    bottom-date        .initial:V = \c_@@_today_tl,
+    bottom-date         .tl_set:N = \g_@@_info_bottomdate_raw_tl    ,
+    bottom-date        .initial:V = \c_@@_today_tl                  ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4502,8 +4549,8 @@
 % \begin{macro}{info/defend-date,info/chairman,info/reviewer}
 % 答辩委员会信息。
 %    \begin{macrocode}
-    chairman            .tl_set:N = \g_@@_info_chairman_tl,
-    reviewer         .clist_set:N = \g_@@_info_reviewer_clist,
+    chairman            .tl_set:N = \g_@@_info_chairman_tl          ,
+    reviewer         .clist_set:N = \g_@@_info_reviewer_clist       ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4510,10 +4557,10 @@
 % \begin{macro}{info/clc,info/secret-level,info/udc,info/supervisor-contact}
 % 国家图书馆封面相关信息。
 %    \begin{macrocode}
-    clc                 .tl_set:N = \g_@@_info_clc_tl,
-    secret-level        .tl_set:N = \g_@@_info_secretlv_tl,
-    udc                 .tl_set:N = \g_@@_info_udc_tl,
-    supervisor-contact  .tl_set:N = \g_@@_info_supvcont_tl,
+    clc                 .tl_set:N = \g_@@_info_clc_tl               ,
+    secret-level        .tl_set:N = \g_@@_info_secretlv_tl          ,
+    udc                 .tl_set:N = \g_@@_info_udc_tl               ,
+    supervisor-contact  .tl_set:N = \g_@@_info_supvcont_tl          ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -4523,56 +4570,33 @@
 %    \begin{macrocode}
     email               .tl_set:N = \g_@@_info_email_tl
   }
+\clist_map_inline:Nn \c_@@_name_anon_clist
+  { \keys_define:nn { nju / info } { #1   .groups:n = { anonymous } } }
+\clist_map_inline:Nn \c_@@_name_anon_en_clist
+  { \keys_define:nn { nju / info } { #1 * .groups:n = { anonymous } } }
 %    \end{macrocode}
 % \end{macro}
 %
-% \changes{v0.16}{2022/03/06}{正确处理学位和类型信息。}
-% 设置学位信息。该设置需要放在 \tn{ProcessKeysOptions}
-% 命令以及载入配置文件中的常量信息后进行。
-%    \begin{macrocode}
-\tl_set:Nx \g_@@_info_type_tl
-  {
-    \clist_item:Nn \c_@@_name_type_clist
-      { \g_@@_info_type_int }
-  }
-\tl_set:Nx \g_@@_info_degree_tl
-  {
-    \g_@@_info_type_tl
-    \clist_item:Nn \c_@@_name_degree_clist
-      { \g_@@_info_degree_int }
-  }
-%    \end{macrocode}
-%
 % \changes{v0.15}{2022/01/22}{正确处理双导师信息。}
 % 在导言区录入用户信息后进行变量设置。此处使用到了 \pkg{ctex} 提供的命令,
 % 应当位于载入文档类之后。
 %    \begin{macrocode}
-\ctex_at_end_preamble:n
+\@@_at_begin_document:n
   {
 %    \end{macrocode}
-% 设置类型信息。
-%    \begin{macrocode}
-    \tl_set:Nx \g_@@_info_type_en_tl
-      { \clist_item:Nn \c_@@_name_type_en_clist { \g_@@_info_type_int } }
-%    \end{macrocode}
 % 拼合双导师的姓名和职称。
 %    \begin{macrocode}
-    \bool_set:Nn \l_@@_second_supvbool
-      { ! \clist_if_empty_p:N \g_@@_info_supvii_clist }
-    \tl_set:Nx \g_@@_info_supvfull_tl
+    \clist_map_inline:nn
+      { \g_@@_info_supv_clist, \g_@@_info_supvii_clist }
       {
-        \clist_use:Nn \g_@@_info_supv_clist { \@@_hskip: }
-        \bool_if:NT \l_@@_second_supvbool
-          {
-            \@@_quad:
-            \clist_use:Nn \g_@@_info_supvii_clist { \@@_hskip: }
-          }
+        \tl_gput_right:Nx \g_@@_info_supvfull_tl
+          { \clist_use:Nn #1 { \@@_hskip: } \@@_quad: }
       }
-    \tl_set:Nx \g_@@_info_supvfull_en_tl
+    \tl_gput_right:Nn \g_@@_info_supvfull_tl { \tex_unskip:D }
+    \tl_set:Nn \g_@@_info_supvfull_en_tl
       {
-        \g_@@_info_supv_en_tl
-        \bool_if:NT \l_@@_second_supvbool
-          { \@@_quad: \g_@@_info_supvii_en_tl }
+        \g_@@_info_supv_en_tl \@@_quad:
+        \g_@@_info_supvii_en_tl \tex_unskip:D
       }
   }
 %</class>
@@ -4624,22 +4648,46 @@
 %    \end{macrocode}
 % \end{variable}
 %
-% 盲审模式下抹去个人信息和学校名称。
+% \changes{v0.16}{2022/03/06}{正确处理学位和类型信息。}
+% 设置学位信息。该设置需要放在 \tn{ProcessKeysOptions} 命令后进行。
+%
+% \begin{variable}{\g_@@_info_type_tl}
+% 文档类型字样。
 %    \begin{macrocode}
+%<*def-g>
+\tl_new:N  \g_@@_info_type_tl
+\tl_set:Nx \g_@@_info_type_tl
+  { \clist_item:Nn \c_@@_name_type_clist { \g_@@_info_type_int } }
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_info_type_en_tl}
+% 英文的学位字样。
+%    \begin{macrocode}
+\tl_new:N  \g_@@_info_type_en_tl
+\tl_set:Nx \g_@@_info_type_en_tl
+  { \clist_item:Nn \c_@@_name_type_en_clist { \g_@@_info_type_int } }
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_info_degree_tl}
+% 学位类型字样。
+%    \begin{macrocode}
+\tl_new:N     \g_@@_info_degree_tl
+\tl_set_eq:NN \g_@@_info_degree_tl \g_@@_info_type_tl
+\bool_if:NF \g_@@_opt_academic_bool
+  { \tl_put_right:Nn \g_@@_info_degree_tl { 专业 } }
+%</def-g>
+%    \end{macrocode}
+% \end{variable}
+%
+% 盲审模式下抹去学校名称。
+%    \begin{macrocode}
 %<*class>
 \bool_if:NT \g_@@_opt_anon_bool
   {
-    \ctex_at_end_preamble:n
-      {
-        \clist_map_inline:Nn \c_@@_name_anon_clist
-          { \tl_gclear:c    { g_@@_info_ #1    _tl } }
-        \clist_map_inline:Nn \c_@@_name_anon_en_clist
-          { \tl_gclear:c    { g_@@_info_ #1 _en_tl } }
-        \clist_map_inline:Nn \c_@@_name_anonlist_clist
-          { \clist_gclear:c { g_@@_info_ #1 _clist } }
-        \tl_gclear:N \c_@@_name_nju_tl
-        \tl_gclear:N \c_@@_name_nju_en_tl
-      }
+    \tl_gclear:N \c_@@_name_nju_tl
+    \tl_gclear:N \c_@@_name_nju_en_tl
   }
 %    \end{macrocode}
 %
@@ -4789,17 +4837,18 @@
 \cs_new_protected:Npn \@@_loadfont_cjk_mac:
   {
     \@@_hide_no_script_msg:
-    \setCJKmainfont{Songti~SC~Light}[
-      BoldFont=Songti~SC~Bold,
-      ItalicFont=Kaiti~SC,
-      BoldItalicFont=Kaiti~SC~Bold]
-    \setCJKsansfont{Heiti~SC~Light}[BoldFont=Heiti~SC~Medium]
-    \setCJKmonofont{STFangsong}
-    \setCJKfamilyfont{zhsong}{Songti~SC~Light}[BoldFont=Songti~SC~Bold]
-    \setCJKfamilyfont{zhhei}{Heiti~SC~Light}[BoldFont=Heiti~SC~Medium]
-    \setCJKfamilyfont{zhfs}{STFangsong}
-    \setCJKfamilyfont{zhkai}{Kaiti~SC}[BoldFont=Kaiti~SC~Bold]
-    \setCJKfamilyfont{zhnewhei}{PingFang~SC}
+    \setCJKmainfont { Songti~SC~Light }
+      [
+        BoldFont       = Songti~SC~Bold,
+        ItalicFont     = Kaiti~SC,
+        BoldItalicFont = Kaiti~SC~Bold
+      ]
+    \setCJKsansfont { Heiti~SC~Light  } [ BoldFont = Heiti~SC~Medium ]
+    \setCJKmonofont { STFangsong      }
+    \setCJKfamilyfont { zhsong } { Songti~SC~Light } [ BoldFont = Songti~SC~Bold ]
+    \setCJKfamilyfont { zhhei  } { Heiti~SC~Light  } [ BoldFont = Heiti~SC~Medium ]
+    \setCJKfamilyfont { zhfs   } { STFangsong      }
+    \setCJKfamilyfont { zhkai  } { Kaiti~SC        } [ BoldFont = Kaiti~SC~Bold ]
   }
 %    \end{macrocode}
 % \end{macro}
@@ -4851,7 +4900,8 @@
 \cs_new_protected:Npn \@@_loadfont_cjk_founder:
   {
 %    \end{macrocode}
-% 调整方正字体括号位置。\footnote{\XeTeX 的调整方法来自 \url{https://www.zhihu.com/question/46241367/answer/101660183}。}
+% 调整方正字体括号位置。
+% \footnote{\XeTeX 的调整方法来自 \url{https://www.zhihu.com/question/46241367/answer/101660183}。}
 %    \begin{macrocode}
     \sys_if_engine_xetex:T
       { \xeCJKEditPunctStyle {quanjiao} { optimize-kerning = true } }
@@ -5502,14 +5552,6 @@
 % \end{variable}
 %
 %    \begin{macrocode}
-\msg_new:nnn { njuthesis } { extra-bib-style }
-  {
-    Wrongly-placed~ bib~ style.\\
-    Please~ use~ the~ `bib/style`~ field.
-  }
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 \keys_define:nn { nju / bib }
   {
 %    \end{macrocode}
@@ -5543,17 +5585,13 @@
 % \changes{v0.15}{2022/02/15}{提供传入 \pkg{biblatex} 宏包选项的接口。}
 % 待传入 \pkg{biblatex} 的额外宏包选项,以列表形式储存。
 % 更为常见的参考文献样式设置已由 \opt{bib/style} 提供,
-% 此处对重复的样式设置进行了检查。本设置项等效于在导言区使用
-% |\PassoptionToPackage{|\meta{key}|=|\meta{value}|}{biblatex}| 命令。
+% 两者中后传入的设置会覆盖已有的设定。本设置项等效于在导言区使用
+% |\PassoptionsToPackage{|\meta{key}|=|\meta{value}|}{biblatex}| 命令。
 %    \begin{macrocode}
     option              .code:n =
       {
-        \tl_if_in:VnTF \l_keys_value_tl { style = }
-          { \msg_error:nn { njuthesis } { extra-bib-style } }
-          {
             \clist_gput_right:NV \g_@@_blx_option_clist
               \l_keys_value_tl
-          }
       },
 %    \end{macrocode}
 % \end{macro}
@@ -5563,10 +5601,7 @@
 % 参考文献数据源,以列表形式储存。
 %    \begin{macrocode}
     resource            .code:n =
-      {
-        \clist_gput_right:NV \g_@@_blx_resource_clist
-          \l_keys_value_tl
-      },
+      { \clist_gput_right:NV \g_@@_blx_resource_clist \l_keys_value_tl },
   }
 %    \end{macrocode}
 % \end{macro}
@@ -5592,8 +5627,7 @@
   {
     \cs_undefine:N \addbibresource
     \clist_gput_right:Nn \g_@@_blx_option_clist { backend = biber }
-    \exp_args:NV \PassOptionsToPackage
-      \g_@@_blx_option_clist { biblatex }
+    \exp_args:NV \PassOptionsToPackage \g_@@_blx_option_clist { biblatex }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -5626,9 +5660,9 @@
 % 使用 \pkg{etoolbox} 提供的 \tn{BeforeBeginEnvironment},在 \env{document} 环境
 % 开始的钩子前载入 \pkg{biblatex} 并进行相关设置。
 %    \begin{macrocode}
-\BeforeBeginEnvironment { document }
+\bool_if:NT \g_@@_opt_load_blx_bool
   {
-    \bool_if:NT \g_@@_opt_load_blx_bool
+    \BeforeBeginEnvironment { document }
       {
         \@@_blx_pre_setup:
         \RequirePackage { biblatex }
@@ -5704,61 +5738,105 @@
 %
 % \subsection{脚注}
 % \changes{v0.18}{2022/05/01}{提供脚注设置项。}
-% ^^A 来自 fduthesis
+% ^^A 借鉴 fduthesis
+%
+% \begin{variable}{\g_@@_fn_ctext_option_clist}
+% 存储传入 \pkg{circledtext} 宏包的选项列表。
+% 由于当前版本放在编号位置的带圈数字无法正确缩放,这里手动指定了字体大小。
 %    \begin{macrocode}
-\tl_new:N \g_@@_fn_style_tl
+\clist_set:Nn \g_@@_fn_ctext_option_clist { charf = \scriptsize }
+%    \end{macrocode}
+% \end{variable}
+%
+%    \begin{macrocode}
 \keys_define:nn { nju / footnote }
   {
 %    \end{macrocode}
 % \begin{macro}{footnote/style}
+% \changes{v1.1}{2022/10/16}{增加 \opt{circled} 和 \opt{circled*} 选项。}
+% 脚注编号的样式。
 %    \begin{macrocode}
-    style .choices:nn = { plain, pifont }
+    style .choices:nn = { plain, pifont, circled, circled* }
+      {
+        \int_case:nnF { \l_keys_choice_int }
+          {
 %    \end{macrocode}
-% 若使用 \opt{pifont} 类型,则需引入 \pkg{pifont} 宏包。
+% \opt{pifont} 类型,用作对旧发行版的兼容选项。
 %    \begin{macrocode}
-      {
-        \tl_gset_eq:NN \g_@@_fn_style_tl \l_keys_choice_tl
-        \int_compare:nT { \l_keys_choice_int = 2 }
-          { \RequirePackage { pifont } }
-      }
-  }
+            { 2 }
+              {
+                \RequirePackage { pifont }
+                \cs_set_eq:NN \@@_fn_number:N \@@_fn_number_pifont:N
+              }
 %    \end{macrocode}
+% \opt{circled} 类型,带星号的版本为阴文,需引入 \pkg{circledtext} 宏包。
+%    \begin{macrocode}
+            { 3 }
+              {
+                \RequirePackage { circledtext }
+                \cs_set:Npn \@@_fn_number:N
+                  { \@@_fn_number_circled:NV \c_false_bool }
+              }
+            { 4 }
+              {
+                \RequirePackage { circledtext }
+                \cs_set:Npn \@@_fn_number:N
+                  { \@@_fn_number_circled:NV \c_true_bool }
+              }
+          }
+%    \end{macrocode}
+% \opt{plain} 或未知类型直接使用计数器的值。
+%    \begin{macrocode}
+          { \cs_set_eq:NN \@@_fn_number:N \int_use:N }
+      },
+%    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_fn_symbol_pifont:n}
-% \opt{pifont} 普通版。以下四种都只包含 \numrange{1}{10}。
+% \begin{macro}{footnote/circledtext-option}
+% \changes{v1.1}{2022/10/16}{将生成脚注圈码的 \pkg{pifont} 替换为 \pkg{circledtext}。}
+% \pkg{circledtext} 宏包选项。
 %    \begin{macrocode}
-\cs_new:Npn \@@_fn_symbol_pifont:n #1
-  { \ding { \int_eval:n { 171 + #1 } } }
+    circledtext-option .code:n =
+      { \clist_gput_right:Nn \g_@@_fn_ctext_option_clist {#1} },
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_footnote_number:N}
-% 脚注编号样式。
+% \begin{macro}{footnote/hang}
+% \changes{v1.1}{2022/10/16}{新增悬挂缩进选项。}
+% 是否悬挂缩进。
 %    \begin{macrocode}
-\tl_const:Nn \c_@@_fn_style_plain_tl  { plain  }
-\tl_const:Nn \c_@@_fn_style_pifont_tl { pifont }
-\cs_new:Npn \@@_footnote_number:N #1
-  {
-    \tl_case:NnF \g_@@_fn_style_tl
-      {
+    hang          .bool_gset:N = \g_@@_fn_hang_bool,
+    hang            .initial:n = true
+  }
 %    \end{macrocode}
-% \opt{plain} 类型直接使用计数器 |footnote| 的值。
+% \end{macro}
+%
+% \begin{macro}{\@@_fn_number_pifont:N}
+% \opt{pifont} 选项提供的带圈数字。
 %    \begin{macrocode}
-        \c_@@_fn_style_plain_tl
-          { \int_use:N #1 }
+\cs_new:Npn \@@_fn_number_pifont:N #1 { \ding { \int_eval:n { 171 + #1 } } }
 %    \end{macrocode}
-% \opt{pifont} 类型无需进行额外的操作。
+% \end{macro}
+%
+% \begin{macro}{\@@_fn_number_circled:Nn,\@@_fn_number_circled:NV}
+% \opt{circled} 选项提供的带圈数字。
 %    \begin{macrocode}
-        \c_@@_fn_style_pifont_tl
-          { \@@_fn_symbol_pifont:n {#1} }
-      }
+\cs_generate_variant:Nn \__circledtext_handle:nn { Vn }
+\cs_new_protected:Npn \@@_fn_number_circled:Nn #1#2
+  {
+    \group_begin:
+      \bool_set_eq:NN \l__circledtext_negative_bool #1
+      \__circledtext_handle:Vn \g_@@_fn_ctext_option_clist { #2 }
+    \group_end:
+  }
+\cs_generate_variant:Nn \@@_fn_number_circled:Nn { NV }
 %    \end{macrocode}
-% 变量 \cs{l_@@_fn_style_tl} 保存的类型未知时,默认使用 \opt{plain}
-% 类型。
+% \end{macro}
+%
+% \begin{macro}{\@@_fn_number:N}
+% 脚注编号。默认使用计数器 |footnote| 的值。
 %    \begin{macrocode}
-      { \int_use:N #1 }
-  }
+\cs_new_eq:NN \@@_fn_number:N \int_use:N
 %    \end{macrocode}
 % \end{macro}
 %
@@ -5767,7 +5845,7 @@
 %    \begin{macrocode}
 \bool_if:NT \g_@@_opt_load_fm_bool
   {
-    \cs_set:Npn \thefootnote { \@@_footnote_number:N \c at footnote }
+    \cs_set:Npn \thefootnote { \@@_fn_number:N \c at footnote }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -5774,14 +5852,21 @@
 % \subsubsection{整体样式}
 %
 % \begin{macro}[int]{\@makefntext}
-% 重定义内部脚注文字命令,使脚注编号不使用上标,宽度为 \qty{1.5}{em}。
+% 重定义内部脚注文字命令,使脚注编号不使用上标,宽度为 \qty{1.5}{em}
 % \footnote{\url{http://tex.stackexchange.com/q/19844},
-% \url{https://www.zhihu.com/question/53030087}}
+% \url{https://www.zhihu.com/question/53030087}},
+% 并自行实现悬挂缩进。注意这个操作会使 \pkg{footmisc} 宏包内建的 \opt{hang} 选项失效。
 %    \begin{macrocode}
     \cs_set:Npn \@makefntext #1
       {
         \mode_leave_vertical:
-        \hbox_to_wd:nn { 1.5 em } { \@thefnmark \tex_hfil:D }
+        \hbox_to_wd:nn { \c_@@_fnhang_dim } { \@thefnmark \tex_hfil:D }
+        \tex_penalty:D \@M
+        \bool_if:NT \g_@@_fn_hang_bool
+          {
+            \int_set:Nn \tex_hangafter:D { 1 }
+            \dim_set_eq:NN \tex_hangindent:D \c_@@_fnhang_dim
+          }
         #1
       }
   }
@@ -5792,7 +5877,7 @@
 % \subsection{图片表格}
 %
 % \begin{macro}{image/path}
-% \changes{v1.0}{2021/08/06}{提供图片路径设置。}
+% \changes{v1.0}{2022/08/06}{提供图片路径设置。}
 % 外置图片路径,等效于 \tn{graphicspath}。
 %    \begin{macrocode}
 \keys_define:nn { nju / image } { path .code:n = { \graphicspath {#1} } }
@@ -5860,7 +5945,7 @@
 % \end{macro}
 %
 % \begin{macro}{label-sep/figure,label-sep/table,label-sep/equation}
-% \changes{1.0}{2022/07/31}{添加编号连接符设置项。}
+% \changes{v1.0}{2022/07/31}{添加编号连接符设置项。}
 % 修改图片、表格、公式编号中的连接符。
 % \footnote{\url{https://tex.stackexchange.com/q/61756/}}
 %    \begin{macrocode}
@@ -5929,10 +6014,26 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{theorem/type,theorem/define}
-% 定义和创建定理类环境的接口。
+% \begin{macro}{theorem/type}
+% 定义定理类环境。
 %    \begin{macrocode}
-    type         .clist_set:N = \g_@@_thm_type_clist,
+    type        .clist_gset:N = \g_@@_thm_type_clist,
+    type           .initial:n =
+      {
+        { axiom      } { 公理 },
+        { corollary  } { 推论 },
+        { definition } { 定义 },
+        { example    } { 例   },
+        { lemma      } { 引理 },
+        { proof, *+  } { 证明 },
+        { theorem    } { 定理 }
+      },
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{theorem/define}
+% 创建定理类环境。
+%    \begin{macrocode}
     define .value_forbidden:n = true,
     define            .code:n =
       {
@@ -6218,8 +6319,8 @@
     \use:c { @@_loadfont_math_ \g_@@_font_math_tl : }
     \bool_if:NT \g_@@_opt_math_leq_bool
       {
-        \cs_set_eq:NN \le  \leslant
-        \cs_set_eq:NN \ge  \geslant
+        \cs_set_eq:NN \le  \leqslant
+        \cs_set_eq:NN \ge  \geqslant
         \cs_set_eq:NN \leq \leqslant
         \cs_set_eq:NN \geq \geqslant
       }
@@ -6321,7 +6422,7 @@
     \@@_cover_entry:NNNnn #1 \l_@@_tmpb_dim #4 { grade } { id }
     \@@_cover_entry:NNNn #1 #2 #4 { author }
     \@@_cover_entry_supv:NNNn #1 \l_@@_tmpb_dim #4 { supv }
-    \bool_if:NT \l_@@_second_supvbool
+    \bool_if:NT \g_@@_opt_second_supv_bool
       { \@@_cover_entry_supv:NNNn #1 \l_@@_tmpb_dim #4 { supvii } }
     \@@_cover_entry:NNNn #1 #2 #4 { submitdate }
   }
@@ -6567,10 +6668,8 @@
   {
     content     =
       \c_@@_text_cover_en_tl \@@_vskip:
-      \textsc { \clist_item:Nn \c_@@_name_type_en_clist
-                  { \g_@@_info_degree_int } }
-      \@@_vskip: { in } \@@_vskip:
-      \g_@@_info_major_en_tl,
+      \group_begin: \scshape \g_@@_info_type_en_tl \group_end:
+      \@@_vskip: { in } \@@_vskip: \g_@@_info_major_en_tl,
     bottom-skip = 2 cm
   }
 %    \end{macrocode}
@@ -6679,14 +6778,15 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_cover_top_nl:
   {
-    \dim_set:Nn \l_@@_tmpa_dim { 3.2 em }
-    \dim_set:Nn \l_@@_tmpb_dim { 9   em }
-    \@@_box_spread_name:Nn \l_@@_tmpa_dim { clc } \@@_hskip:
-    \@@_box_ulined_info:Nn \l_@@_tmpb_dim { clc } \tex_hfill:D
+    \dim_set:Nn               \l_@@_tmpa_dim { 38.6 pt  }
+    \dim_set:Nn               \l_@@_tmpb_dim { 109  pt  }
+    \@@_box_spread_name:Nn \l_@@_tmpa_dim { clc      } \@@_hskip:
+    \@@_box_ulined_info:Nn \l_@@_tmpb_dim { clc      } \tex_hfill:D
     \@@_box_spread_name:Nn \l_@@_tmpa_dim { secretlv } \@@_hskip:
     \@@_box_ulined_info:Nn \l_@@_tmpb_dim { secretlv } \tex_par:D
-    \@@_box_spread_name:Nn \l_@@_tmpa_dim { udc } \@@_hskip:
-    \@@_box_ulined_info:Nn \l_@@_tmpb_dim { udc } \tex_hfill:D \hbox:n { }
+    \@@_box_spread_name:Nn \l_@@_tmpa_dim { udc      } \@@_hskip:
+    \@@_box_ulined_info:Nn \l_@@_tmpb_dim { udc      } \tex_hfill:D
+    \@@_null:
   }
 %    \end{macrocode}
 % \end{macro}
@@ -6715,20 +6815,28 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_cover_info_nl:
   {
-    \skip_set:Nn \l_@@_tmp_skip { 1 em plus 1 fill }
-    \@@_uline_list:NNn \c_@@_name_supvinfo_tl \l_@@_tmp_skip
+    \tl_set:Nx \l_@@_tmpa_tl
       {
         \clist_use:Nn \g_@@_info_supv_clist   { ~ }
         \clist_use:Nn \g_@@_info_supvii_clist { ~ }
         \@@_hskip: \g_@@_info_supvcont_tl
       }
-    \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { degree     } { degree     } { }
-    \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { majorb     } { major      } { }
+    \skip_set:Nn \l_@@_tmp_skip { .5 em plus 1 fill }
+    \@@_uline_list:NNn \l_@@_tmpa_tl \l_@@_tmp_skip
+      { \c_@@_name_supvinfo_tl }
+%    \end{macrocode}
+% 临时替换显示的名称字样。
+%    \begin{macrocode}
+    \group_begin:
+      \tl_set_eq:NN \c_@@_name_major_tl \c_@@_name_majorb_tl
+      \@@_uline_bientry:Nn \l_@@_tmpa_dim { degree   }
+      \@@_uline_bientry:Nn \l_@@_tmpa_dim { major    }
+      \tex_par:D
+    \group_end:
+    \@@_uline_bientry:Nn \l_@@_tmpa_dim { submitdate }
+    \@@_uline_bientry:Nn \l_@@_tmpa_dim { defenddate }
     \tex_par:D
-    \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { submitdate } { submitdate } { }
-    \@@_uline_bientry:Nnnn \l_@@_tmpa_dim { defenddate } { defenddate } { }
-    \tex_par:D
-    \@@_uline_entry:Nnnn   \l_@@_tmpa_dim { confer     } { confer     } { }
+    \@@_uline_entry:Nn   \l_@@_tmpa_dim { confer     }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -6850,13 +6958,14 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_degree_checkbox:n}
+% \begin{macro}{\@@_degree_checkbox:Nn}
 % 信息栏的学位复选框。打勾符号对应 |U+2713|。
 %    \begin{macrocode}
-\cs_new_protected:Npn \@@_degree_checkbox:n #1
+\cs_new_protected:Npn \@@_degree_checkbox:Nn #1#2
   {
-    \int_compare:nNnTF { #1 } { = }
-      { \g_@@_info_degree_int * \g_@@_info_type_int }
+    \bool_lazy_and:nnTF
+      { \g_@@_opt_academic_bool && #1 }
+      { \int_compare_p:n { \g_@@_info_type_int = #2 } }
       {
         \makebox [ 0   pt ] [l] { \ensuremath { \mdwhtsquare } }
         \hspace  { 0.1 em }       \ensuremath { \checkmark   }
@@ -6874,8 +6983,8 @@
     \begin{tblr}
       {
         hlines, vlines, hspan=minimal,
-        cells = {font=\normalsize},
-        colspec = {cX[c]cX[c]cX[c]},
+        cells      = { font = \normalsize },
+        colspec    = { c X[c] c X[c] c X[c] },
         cell{1}{2} = {c=5}{m}, cell{3}{2} = {c=5}{m},
         cell{4}{2} = {c=5}{m}, cell{5}{2} = {c=5}{m}
       }
@@ -6882,23 +6991,20 @@
       \c_@@_name_titlec_tl  & \g_@@_info_title_tl \\
       \c_@@_name_ida_tl     & \g_@@_info_id_tl    &
       \c_@@_name_depta_tl   & \g_@@_info_dept_tl  &
-      \c_@@_name_year_tl     &
+      \c_@@_name_year_tl    &
         \tl_range:Nnn \g_@@_info_submitdate_raw_tl {1} {4} \\
       \c_@@_name_degreea_tl &
         {
-          \@@_degree_checkbox:n { 2 } 学术学位硕士 \qquad{}
-          \@@_degree_checkbox:n { 4 } 专业学位硕士 \\
-          \@@_degree_checkbox:n { 3 } 学术学位博士 \qquad{}
-          \@@_degree_checkbox:n { 6 } 专业学位博士
+          \@@_degree_checkbox:Nn \c_true_bool  { 2 } 学术学位硕士 \qquad
+          \@@_degree_checkbox:Nn \c_false_bool { 2 } 专业学位硕士 \\
+          \@@_degree_checkbox:Nn \c_true_bool  { 3 } 学术学位博士 \qquad
+          \@@_degree_checkbox:Nn \c_false_bool { 3 } 专业学位博士
         } \\
-      \c_@@_name_email_tl    & \g_@@_info_email_tl \\
+      \c_@@_name_email_tl   & \g_@@_info_email_tl \\
       \c_@@_name_supvb_tl   &
-        \clist_item:Nn \g_@@_info_supv_clist {1}
-        \bool_if:NT \l_@@_second_supvbool
-          {
-            \@@_quad:
-            \clist_item:Nn \g_@@_info_supvii_clist {1}
-          } \\
+        \clist_item:Nn \g_@@_info_supv_clist { 1 }
+        \bool_if:NT \g_@@_opt_second_supv_bool
+          { \@@_quad: \clist_item:Nn \g_@@_info_supvii_clist { 1 } } \\
     \end{tblr}
   }
 %    \end{macrocode}
@@ -7094,9 +7200,9 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_p_decl_sign:nn #1#2
   {
-    \@@_name:n {#1} \c_@@_name_colon_tl \hfill
+    \@@_name:n {#1} \c_@@_name_colon_tl \tex_hfill:D
     \@@_name:n {#2} \c_@@_name_colon_tl
-    \skip_horizontal:n { 160 pt } \null \@@_vskip:
+    \skip_horizontal:n { 160 pt } \@@_null: \@@_vskip:
   }
 %</def-p>
 %    \end{macrocode}
@@ -7602,7 +7708,7 @@
 %    \end{macrocode}
 % 专业、年级、姓名。
 %    \begin{macrocode}
-    \@@_full_uline:Nx \l_@@_tmp_skip
+    \@@_get_width_print:Nx \l_@@_tmp_skip
       {
         \dim_set:Nn \l_@@_tmpa_dim { 11 em }
         \dim_set:Nn \l_@@_tmpb_dim { 4  em }
@@ -7615,7 +7721,7 @@
 %    \end{macrocode}
 % 导师姓名、职称。
 %    \begin{macrocode}
-    \@@_full_uline:Nx \l_@@_tmpa_dim { \c_@@_name_supva_tl #1 }
+    \@@_get_width_print:Nx \l_@@_tmpa_dim { \c_@@_name_supva_tl #1 }
     \@@_box_ulined_info:Nn \l_@@_tmpa_dim { supvfull }
   }
 %    \end{macrocode}
@@ -7792,10 +7898,14 @@
 % 单独制作的前言致谢页。
 %    \begin{macrocode}
 \NewDocumentEnvironment { preface         } { +b }
-  { \@@_chapter:V \c_@@_name_preface_tl         #1 }
+  { \@@_chapter:V \c_@@_name_preface_tl #1 }
   { \cleardoublepage }
 \NewDocumentEnvironment { acknowledgement } { +b }
-  { \@@_chapter:V \c_@@_name_acknowledgement_tl #1 }
+  {
+    \bool_if:NTF \g_@@_opt_anon_bool
+      { \@@_bookmark_toc:V \c_@@_name_acknowledgementa_tl   }
+      { \@@_chapter:V      \c_@@_name_acknowledgement_tl #1 }
+  }
   { \cleardoublepage }
 %    \end{macrocode}
 % \end{environment}
@@ -7944,110 +8054,111 @@
 %<*(def-u|def-g|def-p)>
 \clist_map_inline:nn
   {
-    { acknowledgement } { 致 \qquad{} 谢                     },
-%<def-g>    { apply           } {(申请 \g_@@_info_degree_tl 学位)},
-%<def-g>    { auth decl       } { 学位论文出版授权书                 },
-%<def-p>    { auth decl       } { 研究报告使用授权书                 },
-%<def-p>    { author          } { 作者                               },
+    { acknowledgement   } { 致 \qquad{} 谢                     },
+    { acknowledgement a } { 致谢(盲审阶段,暂时隐去)         },
+%<def-g>    { apply             } {(申请 \g_@@_info_degree_tl 学位)},
+%<def-g>    { auth decl         } { 学位论文出版授权书                 },
+%<def-p>    { auth decl         } { 研究报告使用授权书                 },
+%<def-p>    { author            } { 作者                               },
 %    \end{macrocode}
 % 用于摘要的作者名称字样
 %    \begin{macrocode}
-%<def-u>    { author        a } { 本科生姓名                         },
-%<def-g>    { author        a } { \g_@@_info_type_tl 生姓名        },
-%<def-g>    { auth sign       } { 作者签名:\njuline{\hspace{6em}}   },
-%<def-p>    { auth sign       } { 本人签名                           },
-%<def-p>    { auth sign     a } { 导师签名                           },
-%<def-g>    { chairman        } { 答辩委员会主席:                   },
-%<def-g>    { clc             } { 分类号                             },
-%<def-g>    { confer          } { 学位授予单位和日期                 },
-    { date            } { 日期                               },
-%<def-g>    { defend date     } { 论文答辩日期                       },
-%<def-g>    { degree          } { 申请学位级别                       },
+%<def-u>    { author          a } { 本科生姓名                         },
+%<def-g>    { author          a } { \g_@@_info_type_tl 生姓名        },
+%<def-g>    { auth sign         } { 作者签名:\njuline{\hspace{6em}}   },
+%<def-p>    { auth sign         } { 本人签名                           },
+%<def-p>    { auth sign       a } { 导师签名                           },
+%<def-g>    { chairman          } { 答辩委员会主席:                   },
+%<def-g>    { clc               } { 分类号                             },
+%<def-g>    { confer            } { 学位授予单位和日期                 },
+    { date              } { 日期                               },
+%<def-g>    { defend date       } { 论文答辩日期                       },
+%<def-g>    { degree            } { 申请学位级别                       },
 %    \end{macrocode}
 % 用于出版授权书的学位名称字样
 %    \begin{macrocode}
-%<def-g>    { degree        a } { 论文级别                           },
-%<def-p>    { dept            } { 系别                               },
+%<def-g>    { degree          a } { 论文级别                           },
+%<def-p>    { dept              } { 系别                               },
 %    \end{macrocode}
 % 用于出版授权书的院系名称字样
 %    \begin{macrocode}
-%<def-g>    { dept          a } { 所在院系                           },
-%<def-g>    { email           } { 作者 Email                         },
-%<def-g>    { field           } { 研究方向                           },
-%<def-u>    { grade           } { 年级                               },
-%<def-g>    { grade           } { 级                                 },
-%<def-u|def-g>    { id              } { 学号                               },
-%<def-p>    { id              } { 工号                               },
+%<def-g>    { dept            a } { 所在院系                           },
+%<def-g>    { email             } { 作者 Email                         },
+%<def-g>    { field             } { 研究方向                           },
+%<def-u>    { grade             } { 年级                               },
+%<def-g>    { grade             } { 级                                 },
+%<def-u|def-g>    { id                } { 学号                               },
+%<def-p>    { id                } { 工号                               },
 %    \end{macrocode}
 % 用于出版授权书的学号名称字样
 %    \begin{macrocode}
-%<def-g>    { id            a } { 研究生学号                         },
-    { listoffigures   } { 插图目录                           },
-    { listoftables    } { 表格目录                           },
-%<def-p>    { major           } { 学科专业                           },
+%<def-g>    { id              a } { 研究生学号                         },
+    { listoffigures     } { 插图目录                           },
+    { listoftables      } { 表格目录                           },
+%<def-p>    { major             } { 学科专业                           },
 %    \end{macrocode}
 % 用于摘要的专业名称字样
 %    \begin{macrocode}
-%<def-g>    { major         a } { 专业                               },
+%<def-g>    { major           a } { 专业                               },
 %    \end{macrocode}
 % 用于国家图书馆封面的专业名称字样
 %    \begin{macrocode}
-%<def-g>    { major         b } { 专业名称                           },
-    { notation        } { 符号表                             },
-%<def-u>    { orig decl       }
-%<def-u>      { 南京大学本科毕业论文(设计) \\ 诚信承诺书           },
-%<def-g>    { orig decl       } { 南京大学学位论文原创性声明         },
-%<def-p>    { orig decl       } { 研究报告原创性声明                 },
-%<def-u>    { orig sign       } { 作者签名                           },
-%<def-g>    { orig sign       } { 研究生签名                         },
-%<def-p>    { orig sign       } { 研究报告作者签名                   },
-    { paper list      } { 发表文章目录                       },
-    { pdf creator     } { LaTeX~ with~ njuthesis~ class      },
-    { preface         } { 前 \qquad{} 言                     },
-%<def-p>    { report          } { 博士后研究工作报告                 },
-%<def-g>    { reviewer        } { 评阅人:                           },
-%<def-g>    { secret lv       } { 密级                               },
-%<def-g>    { secret status   } { 论文涉密情况:                     },
-%<def-g>    { secret free     } { 不保密                             },
-%<def-g>    { secret date     }
+%<def-g>    { major           b } { 专业名称                           },
+    { notation          } { 符号表                             },
+%<def-u>    { orig decl         }
+%<def-u>      { 南京大学本科毕业论文(设计) \\ 诚信承诺书             },
+%<def-g>    { orig decl         } { 南京大学学位论文原创性声明         },
+%<def-p>    { orig decl         } { 研究报告原创性声明                 },
+%<def-u>    { orig sign         } { 作者签名                           },
+%<def-g>    { orig sign         } { 研究生签名                         },
+%<def-p>    { orig sign         } { 研究报告作者签名                   },
+    { paper list        } { 发表文章目录                       },
+    { pdf creator       } { LaTeX~ with~ njuthesis~ class      },
+    { preface           } { 前 \qquad{} 言                     },
+%<def-p>    { report            } { 博士后研究工作报告                 },
+%<def-g>    { reviewer          } { 评阅人:                           },
+%<def-g>    { secret lv         } { 密级                               },
+%<def-g>    { secret status     } { 论文涉密情况:                     },
+%<def-g>    { secret free       } { 不保密                             },
+%<def-g>    { secret date       }
 %<def-g>      { 保密,保密期( \c_@@_name_blankdatea_tl 至
-%<def-g>                       \c_@@_name_blankdatea_tl )        },
-%<def-g>    { sign            } { (签字)                           },
-%<def-u>    { submit date     } { 提交日期                           },
-%<def-g>    { submit date     } { 论文提交日期                       },
-%<def-p>    { submit date     } { 完成日期                           },
-%<def-g>    { subtitle        } { (题名和副题名)                   },
-%<def-u>    { supv            } { 指导教师                           },
-%<def-g>    { supv            } { 导师                               },
-%<def-p>    { supv full       } { 合作导师                           },
+%<def-g>                       \c_@@_name_blankdatea_tl )           },
+%<def-g>    { sign              } { (签字)                           },
+%<def-u>    { submit date       } { 提交日期                           },
+%<def-g>    { submit date       } { 论文提交日期                       },
+%<def-p>    { submit date       } { 完成日期                           },
+%<def-g>    { subtitle          } { (题名和副题名)                   },
+%<def-u>    { supv              } { 指导教师                           },
+%<def-g>    { supv              } { 导师                               },
+%<def-p>    { supv full         } { 合作导师                           },
 %    \end{macrocode}
 % 用于摘要的导师名称字样
 %    \begin{macrocode}
-%<def-g>    { supv          a } { 指导教师(姓名、职称)             },
+%<def-g>    { supv            a } { 指导教师(姓名、职称)             },
 %    \end{macrocode}
 % 用于出版授权书的导师名称字样
 %    \begin{macrocode}
-%<def-g>    { supv          b } { 导师姓名                           },
-%<def-g>    { supv info       }
-%<def-g>      { 指导教师姓名、职务、职称、学位、单位名称及地址       },
-    { supv ii         } { 第二导师                           },
-    { supv title      } { 职称                               },
-    { tableofcontents } { 目 \qquad{} 录                     },
-%<def-p>    { title           } { 报告题目                           },
+%<def-g>    { supv            b } { 导师姓名                           },
+%<def-g>    { supv info         }
+%<def-g>      { 指导教师姓名、职务、职称、学位、单位名称及地址         },
+    { supv ii           } { 第二导师                           },
+    { supv title        } { 职称                               },
+    { tableofcontents   } { 目 \qquad{} 录                     },
+%<def-p>    { title             } { 报告题目                           },
 %    \end{macrocode}
 % 用于摘要的标题名称字样
 %    \begin{macrocode}
-%<def-g>    { title         a } { 毕业论文题目                       },
+%<def-g>    { title           a } { 毕业论文题目                       },
 %    \end{macrocode}
 % 用于国家图书馆封面的标题名称字样
 %    \begin{macrocode}
-%<def-g>    { title         b } { 学位论文                           },
+%<def-g>    { title           b } { 学位论文                           },
 %    \end{macrocode}
 % 用于出版授权书的标题名称字样
 %    \begin{macrocode}
-%<def-g>    { title         c } { 论文题名                           },
-%<def-g>    { udc             } { U D C                              },
-%<def-g>    { year            } { 学位年度                           }
+%<def-g>    { title           c } { 论文题名                           },
+%<def-g>    { udc               } { U D C                              },
+%<def-g>    { year              } { 学位年度                           }
   }
   { \@@_define_name:nn #1 }
 %    \end{macrocode}
@@ -8099,7 +8210,7 @@
 % 对专业硕士的封面条目进行临时修改。
 %    \begin{macrocode}
 %<*def-g>
-\int_compare:nT { \g_@@_info_degree_int == 2 }
+\bool_if:NF \g_@@_opt_academic_bool
   { \tl_set:Nn \c_@@_name_major_tl { 专业学位类别(领域) } }
 %</def-g>
 %    \end{macrocode}
@@ -8236,7 +8347,11 @@
 % 章节标题前后间距。
 %    \begin{macrocode}
     { chapter before } { 10   pt },
-    { chapter  after } { 60   pt }
+    { chapter  after } { 60   pt },
+%    \end{macrocode}
+% 脚注编号宽度。
+%    \begin{macrocode}
+    { fn hang        } { 13.5 pt }
   }
   { \@@_define_dim:nn #1 }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.ins	2022-10-23 20:38:23 UTC (rev 64792)
+++ trunk/Master/texmf-dist/source/latex/njuthesis/njuthesis.ins	2022-10-23 20:38:45 UTC (rev 64793)
@@ -15,7 +15,7 @@
 %% or (at your option) any later version.  The latest version of this
 %% license is in:
 %% 
-%%    http://www.latex-project.org/lppl.txt
+%%   http://www.latex-project.org/lppl.txt
 %% 
 %% and version 1.3 or later is part of all distributions of LaTeX version
 %% 2005/12/01 or later.
@@ -38,7 +38,7 @@
 or (at your option) any later version.  The latest version of this
 license is in:
 
-   http://www.latex-project.org/lppl.txt
+  http://www.latex-project.org/lppl.txt
 
 and version 1.3 or later is part of all distributions of LaTeX version
 2005/12/01 or later.

Modified: trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def	2022-10-23 20:38:23 UTC (rev 64792)
+++ trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-graduate.def	2022-10-23 20:38:45 UTC (rev 64793)
@@ -15,7 +15,7 @@
 %% or (at your option) any later version.  The latest version of this
 %% license is in:
 %% 
-%%    http://www.latex-project.org/lppl.txt
+%%   http://www.latex-project.org/lppl.txt
 %% 
 %% and version 1.3 or later is part of all distributions of LaTeX version
 %% 2005/12/01 or later.
@@ -23,7 +23,7 @@
 %% To produce the documentation run the original source files ending with
 %% `.dtx' through XeTeX.
 %% 
-\GetIdInfo $Id: njuthesis.dtx 1.0.0 2022-08-08 14:50:00
+\GetIdInfo $Id: njuthesis.dtx 1.1.0 2022-10-23 12:30:00
   +0800 NJU LUG <git+nju-lug-email-3104-issue- at yaoge123.cn>$
   {Graduate definition file for njuthesis}
 \ProvidesExplFile{njuthesis-graduate.def}
@@ -47,6 +47,16 @@
           }
       }
   }
+\tl_new:N  \g__nju_info_type_tl
+\tl_set:Nx \g__nju_info_type_tl
+  { \clist_item:Nn \c__nju_name_type_clist { \g__nju_info_type_int } }
+\tl_new:N  \g__nju_info_type_en_tl
+\tl_set:Nx \g__nju_info_type_en_tl
+  { \clist_item:Nn \c__nju_name_type_en_clist { \g__nju_info_type_int } }
+\tl_new:N     \g__nju_info_degree_tl
+\tl_set_eq:NN \g__nju_info_degree_tl \g__nju_info_type_tl
+\bool_if:NF \g__nju_opt_academic_bool
+  { \tl_put_right:Nn \g__nju_info_degree_tl { 专业 } }
 \cs_new_protected:Npn \__nju_decl_sign:
   {
     \clist_map_inline:nn { origsign,     date }
@@ -137,10 +147,8 @@
   {
     content     =
       \c__nju_text_cover_en_tl \__nju_vskip:
-      \textsc { \clist_item:Nn \c__nju_name_type_en_clist
-                  { \g__nju_info_degree_int } }
-      \__nju_vskip: { in } \__nju_vskip:
-      \g__nju_info_major_en_tl,
+      \group_begin: \scshape \g__nju_info_type_en_tl \group_end:
+      \__nju_vskip: { in } \__nju_vskip: \g__nju_info_major_en_tl,
     bottom-skip = 2 cm
   }
 \__nju_declare_element:nn { g / cover-en / emblem-img }
@@ -193,14 +201,15 @@
   }
 \cs_new_protected:Npn \__nju_cover_top_nl:
   {
-    \dim_set:Nn \l__nju_tmpa_dim { 3.2 em }
-    \dim_set:Nn \l__nju_tmpb_dim { 9   em }
-    \__nju_box_spread_name:Nn \l__nju_tmpa_dim { clc } \__nju_hskip:
-    \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { clc } \tex_hfill:D
+    \dim_set:Nn               \l__nju_tmpa_dim { 38.6 pt  }
+    \dim_set:Nn               \l__nju_tmpb_dim { 109  pt  }
+    \__nju_box_spread_name:Nn \l__nju_tmpa_dim { clc      } \__nju_hskip:
+    \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { clc      } \tex_hfill:D
     \__nju_box_spread_name:Nn \l__nju_tmpa_dim { secretlv } \__nju_hskip:
     \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { secretlv } \tex_par:D
-    \__nju_box_spread_name:Nn \l__nju_tmpa_dim { udc } \__nju_hskip:
-    \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { udc } \tex_hfill:D \hbox:n { }
+    \__nju_box_spread_name:Nn \l__nju_tmpa_dim { udc      } \__nju_hskip:
+    \__nju_box_ulined_info:Nn \l__nju_tmpb_dim { udc      } \tex_hfill:D
+    \__nju_null:
   }
 \cs_new_protected:Npn \__nju_cover_title_nl:
   {
@@ -215,20 +224,25 @@
   }
 \cs_new_protected:Npn \__nju_cover_info_nl:
   {
-    \skip_set:Nn \l__nju_tmp_skip { 1 em plus 1 fill }
-    \__nju_uline_list:NNn \c__nju_name_supvinfo_tl \l__nju_tmp_skip
+    \tl_set:Nx \l__nju_tmpa_tl
       {
         \clist_use:Nn \g__nju_info_supv_clist   { ~ }
         \clist_use:Nn \g__nju_info_supvii_clist { ~ }
         \__nju_hskip: \g__nju_info_supvcont_tl
       }
-    \__nju_uline_bientry:Nnnn \l__nju_tmpa_dim { degree     } { degree     } { }
-    \__nju_uline_bientry:Nnnn \l__nju_tmpa_dim { majorb     } { major      } { }
+    \skip_set:Nn \l__nju_tmp_skip { .5 em plus 1 fill }
+    \__nju_uline_list:NNn \l__nju_tmpa_tl \l__nju_tmp_skip
+      { \c__nju_name_supvinfo_tl }
+    \group_begin:
+      \tl_set_eq:NN \c__nju_name_major_tl \c__nju_name_majorb_tl
+      \__nju_uline_bientry:Nn \l__nju_tmpa_dim { degree   }
+      \__nju_uline_bientry:Nn \l__nju_tmpa_dim { major    }
+      \tex_par:D
+    \group_end:
+    \__nju_uline_bientry:Nn \l__nju_tmpa_dim { submitdate }
+    \__nju_uline_bientry:Nn \l__nju_tmpa_dim { defenddate }
     \tex_par:D
-    \__nju_uline_bientry:Nnnn \l__nju_tmpa_dim { submitdate } { submitdate } { }
-    \__nju_uline_bientry:Nnnn \l__nju_tmpa_dim { defenddate } { defenddate } { }
-    \tex_par:D
-    \__nju_uline_entry:Nnnn   \l__nju_tmpa_dim { confer     } { confer     } { }
+    \__nju_uline_entry:Nn   \l__nju_tmpa_dim { confer     }
   }
 \cs_new_protected:Npn \__nju_cover_bottom_nl:
   {
@@ -287,10 +301,11 @@
     format      = \zihao { 5 } ,
     align       = l
   }
-\cs_new_protected:Npn \__nju_degree_checkbox:n #1
+\cs_new_protected:Npn \__nju_degree_checkbox:Nn #1#2
   {
-    \int_compare:nNnTF { #1 } { = }
-      { \g__nju_info_degree_int * \g__nju_info_type_int }
+    \bool_lazy_and:nnTF
+      { \g__nju_opt_academic_bool && #1 }
+      { \int_compare_p:n { \g__nju_info_type_int = #2 } }
       {
         \makebox [ 0   pt ] [l] { \ensuremath { \mdwhtsquare } }
         \hspace  { 0.1 em }       \ensuremath { \checkmark   }
@@ -302,8 +317,8 @@
     \begin{tblr}
       {
         hlines, vlines, hspan=minimal,
-        cells = {font=\normalsize},
-        colspec = {cX[c]cX[c]cX[c]},
+        cells      = { font = \normalsize },
+        colspec    = { c X[c] c X[c] c X[c] },
         cell{1}{2} = {c=5}{m}, cell{3}{2} = {c=5}{m},
         cell{4}{2} = {c=5}{m}, cell{5}{2} = {c=5}{m}
       }
@@ -310,23 +325,20 @@
       \c__nju_name_titlec_tl  & \g__nju_info_title_tl \\
       \c__nju_name_ida_tl     & \g__nju_info_id_tl    &
       \c__nju_name_depta_tl   & \g__nju_info_dept_tl  &
-      \c__nju_name_year_tl     &
+      \c__nju_name_year_tl    &
         \tl_range:Nnn \g__nju_info_submitdate_raw_tl {1} {4} \\
       \c__nju_name_degreea_tl &
         {
-          \__nju_degree_checkbox:n { 2 } 学术学位硕士 \qquad{}
-          \__nju_degree_checkbox:n { 4 } 专业学位硕士 \\
-          \__nju_degree_checkbox:n { 3 } 学术学位博士 \qquad{}
-          \__nju_degree_checkbox:n { 6 } 专业学位博士
+          \__nju_degree_checkbox:Nn \c_true_bool  { 2 } 学术学位硕士 \qquad
+          \__nju_degree_checkbox:Nn \c_false_bool { 2 } 专业学位硕士 \\
+          \__nju_degree_checkbox:Nn \c_true_bool  { 3 } 学术学位博士 \qquad
+          \__nju_degree_checkbox:Nn \c_false_bool { 3 } 专业学位博士
         } \\
-      \c__nju_name_email_tl    & \g__nju_info_email_tl \\
+      \c__nju_name_email_tl   & \g__nju_info_email_tl \\
       \c__nju_name_supvb_tl   &
-        \clist_item:Nn \g__nju_info_supv_clist {1}
-        \bool_if:NT \l__nju_second_supvbool
-          {
-            \__nju_quad:
-            \clist_item:Nn \g__nju_info_supvii_clist {1}
-          } \\
+        \clist_item:Nn \g__nju_info_supv_clist { 1 }
+        \bool_if:NT \g__nju_opt_second_supv_bool
+          { \__nju_quad: \clist_item:Nn \g__nju_info_supvii_clist { 1 } } \\
     \end{tblr}
   }
 \cs_new_protected:Npn \__nju_g_decl_auth_sign:
@@ -453,7 +465,7 @@
   {
     \__nju_uline_list:NNx \g__nju_info_title_tl \g__nju_abs_title_left_skip
       { \c__nju_name_titlea_tl #1 }
-    \__nju_full_uline:Nx \l__nju_tmp_skip
+    \__nju_get_width_print:Nx \l__nju_tmp_skip
       {
         \dim_set:Nn \l__nju_tmpa_dim { 11 em }
         \dim_set:Nn \l__nju_tmpb_dim { 4  em }
@@ -463,7 +475,7 @@
         \c__nju_name_grade_tl \c__nju_name_authora_tl #1
       }
     \__nju_box_ulined_info:Nn \l__nju_tmp_skip { author } \tex_par:D
-    \__nju_full_uline:Nx \l__nju_tmpa_dim { \c__nju_name_supva_tl #1 }
+    \__nju_get_width_print:Nx \l__nju_tmpa_dim { \c__nju_name_supva_tl #1 }
     \__nju_box_ulined_info:Nn \l__nju_tmpa_dim { supvfull }
   }
 \cs_new_protected:Npn \__nju_abs_info_en_g:N #1
@@ -485,57 +497,58 @@
   }
 \clist_map_inline:nn
   {
-    { acknowledgement } { 致 \qquad{} 谢                     },
-    { apply           } {(申请 \g__nju_info_degree_tl 学位)},
-    { auth decl       } { 学位论文出版授权书                 },
-    { author        a } { \g__nju_info_type_tl 生姓名        },
-    { auth sign       } { 作者签名:\njuline{\hspace{6em}}   },
-    { chairman        } { 答辩委员会主席:                   },
-    { clc             } { 分类号                             },
-    { confer          } { 学位授予单位和日期                 },
-    { date            } { 日期                               },
-    { defend date     } { 论文答辩日期                       },
-    { degree          } { 申请学位级别                       },
-    { degree        a } { 论文级别                           },
-    { dept          a } { 所在院系                           },
-    { email           } { 作者 Email                         },
-    { field           } { 研究方向                           },
-    { grade           } { 级                                 },
-    { id              } { 学号                               },
-    { id            a } { 研究生学号                         },
-    { listoffigures   } { 插图目录                           },
-    { listoftables    } { 表格目录                           },
-    { major         a } { 专业                               },
-    { major         b } { 专业名称                           },
-    { notation        } { 符号表                             },
-    { orig decl       } { 南京大学学位论文原创性声明         },
-    { orig sign       } { 研究生签名                         },
-    { paper list      } { 发表文章目录                       },
-    { pdf creator     } { LaTeX~ with~ njuthesis~ class      },
-    { preface         } { 前 \qquad{} 言                     },
-    { reviewer        } { 评阅人:                           },
-    { secret lv       } { 密级                               },
-    { secret status   } { 论文涉密情况:                     },
-    { secret free     } { 不保密                             },
-    { secret date     }
+    { acknowledgement   } { 致 \qquad{} 谢                     },
+    { acknowledgement a } { 致谢(盲审阶段,暂时隐去)         },
+    { apply             } {(申请 \g__nju_info_degree_tl 学位)},
+    { auth decl         } { 学位论文出版授权书                 },
+    { author          a } { \g__nju_info_type_tl 生姓名        },
+    { auth sign         } { 作者签名:\njuline{\hspace{6em}}   },
+    { chairman          } { 答辩委员会主席:                   },
+    { clc               } { 分类号                             },
+    { confer            } { 学位授予单位和日期                 },
+    { date              } { 日期                               },
+    { defend date       } { 论文答辩日期                       },
+    { degree            } { 申请学位级别                       },
+    { degree          a } { 论文级别                           },
+    { dept            a } { 所在院系                           },
+    { email             } { 作者 Email                         },
+    { field             } { 研究方向                           },
+    { grade             } { 级                                 },
+    { id                } { 学号                               },
+    { id              a } { 研究生学号                         },
+    { listoffigures     } { 插图目录                           },
+    { listoftables      } { 表格目录                           },
+    { major           a } { 专业                               },
+    { major           b } { 专业名称                           },
+    { notation          } { 符号表                             },
+    { orig decl         } { 南京大学学位论文原创性声明         },
+    { orig sign         } { 研究生签名                         },
+    { paper list        } { 发表文章目录                       },
+    { pdf creator       } { LaTeX~ with~ njuthesis~ class      },
+    { preface           } { 前 \qquad{} 言                     },
+    { reviewer          } { 评阅人:                           },
+    { secret lv         } { 密级                               },
+    { secret status     } { 论文涉密情况:                     },
+    { secret free       } { 不保密                             },
+    { secret date       }
       { 保密,保密期( \c__nju_name_blankdatea_tl 至
-                       \c__nju_name_blankdatea_tl )        },
-    { sign            } { (签字)                           },
-    { submit date     } { 论文提交日期                       },
-    { subtitle        } { (题名和副题名)                   },
-    { supv            } { 导师                               },
-    { supv          a } { 指导教师(姓名、职称)             },
-    { supv          b } { 导师姓名                           },
-    { supv info       }
-      { 指导教师姓名、职务、职称、学位、单位名称及地址       },
-    { supv ii         } { 第二导师                           },
-    { supv title      } { 职称                               },
-    { tableofcontents } { 目 \qquad{} 录                     },
-    { title         a } { 毕业论文题目                       },
-    { title         b } { 学位论文                           },
-    { title         c } { 论文题名                           },
-    { udc             } { U D C                              },
-    { year            } { 学位年度                           }
+                       \c__nju_name_blankdatea_tl )           },
+    { sign              } { (签字)                           },
+    { submit date       } { 论文提交日期                       },
+    { subtitle          } { (题名和副题名)                   },
+    { supv              } { 导师                               },
+    { supv            a } { 指导教师(姓名、职称)             },
+    { supv            b } { 导师姓名                           },
+    { supv info         }
+      { 指导教师姓名、职务、职称、学位、单位名称及地址         },
+    { supv ii           } { 第二导师                           },
+    { supv title        } { 职称                               },
+    { tableofcontents   } { 目 \qquad{} 录                     },
+    { title           a } { 毕业论文题目                       },
+    { title           b } { 学位论文                           },
+    { title           c } { 论文题名                           },
+    { udc               } { U D C                              },
+    { year              } { 学位年度                           }
   }
   { \__nju_define_name:nn #1 }
 \clist_map_inline:nn
@@ -565,7 +578,7 @@
     { type          } { 研究生毕业论文  } { g                     }
   }
   { \__nju_define_name:nnn #1 }
-\int_compare:nT { \g__nju_info_degree_int == 2 }
+\bool_if:NF \g__nju_opt_academic_bool
   { \tl_set:Nn \c__nju_name_major_tl { 专业学位类别(领域) } }
 \tl_const:Nn \c__nju_text_origdecl_tl
   {
@@ -607,7 +620,8 @@
     { h sep          } { 5    pt },
     { v sep          } { 1    ex },
     { chapter before } { 10   pt },
-    { chapter  after } { 60   pt }
+    { chapter  after } { 60   pt },
+    { fn hang        } { 13.5 pt }
   }
   { \__nju_define_dim:nn #1 }
 \clist_map_inline:nn

Modified: trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def	2022-10-23 20:38:23 UTC (rev 64792)
+++ trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-postdoctoral.def	2022-10-23 20:38:45 UTC (rev 64793)
@@ -15,7 +15,7 @@
 %% or (at your option) any later version.  The latest version of this
 %% license is in:
 %% 
-%%    http://www.latex-project.org/lppl.txt
+%%   http://www.latex-project.org/lppl.txt
 %% 
 %% and version 1.3 or later is part of all distributions of LaTeX version
 %% 2005/12/01 or later.
@@ -23,7 +23,7 @@
 %% To produce the documentation run the original source files ending with
 %% `.dtx' through XeTeX.
 %% 
-\GetIdInfo $Id: njuthesis.dtx 1.0.0 2022-08-08 14:50:00
+\GetIdInfo $Id: njuthesis.dtx 1.1.0 2022-10-23 12:30:00
   +0800 NJU LUG <git+nju-lug-email-3104-issue- at yaoge123.cn>$
   {Postdoctoral definition file for njuthesis}
 \ProvidesExplFile{njuthesis-postdoctoral.def}
@@ -114,9 +114,9 @@
   }
 \cs_new_protected:Npn \__nju_p_decl_sign:nn #1#2
   {
-    \__nju_name:n {#1} \c__nju_name_colon_tl \hfill
+    \__nju_name:n {#1} \c__nju_name_colon_tl \tex_hfill:D
     \__nju_name:n {#2} \c__nju_name_colon_tl
-    \skip_horizontal:n { 160 pt } \null \__nju_vskip:
+    \skip_horizontal:n { 160 pt } \__nju_null: \__nju_vskip:
   }
 \__nju_declare_page:nn { cover-p }
   {
@@ -187,30 +187,31 @@
   }
 \clist_map_inline:nn
   {
-    { acknowledgement } { 致 \qquad{} 谢                     },
-    { auth decl       } { 研究报告使用授权书                 },
-    { author          } { 作者                               },
-    { auth sign       } { 本人签名                           },
-    { auth sign     a } { 导师签名                           },
-    { date            } { 日期                               },
-    { dept            } { 系别                               },
-    { id              } { 工号                               },
-    { listoffigures   } { 插图目录                           },
-    { listoftables    } { 表格目录                           },
-    { major           } { 学科专业                           },
-    { notation        } { 符号表                             },
-    { orig decl       } { 研究报告原创性声明                 },
-    { orig sign       } { 研究报告作者签名                   },
-    { paper list      } { 发表文章目录                       },
-    { pdf creator     } { LaTeX~ with~ njuthesis~ class      },
-    { preface         } { 前 \qquad{} 言                     },
-    { report          } { 博士后研究工作报告                 },
-    { submit date     } { 完成日期                           },
-    { supv full       } { 合作导师                           },
-    { supv ii         } { 第二导师                           },
-    { supv title      } { 职称                               },
-    { tableofcontents } { 目 \qquad{} 录                     },
-    { title           } { 报告题目                           },
+    { acknowledgement   } { 致 \qquad{} 谢                     },
+    { acknowledgement a } { 致谢(盲审阶段,暂时隐去)         },
+    { auth decl         } { 研究报告使用授权书                 },
+    { author            } { 作者                               },
+    { auth sign         } { 本人签名                           },
+    { auth sign       a } { 导师签名                           },
+    { date              } { 日期                               },
+    { dept              } { 系别                               },
+    { id                } { 工号                               },
+    { listoffigures     } { 插图目录                           },
+    { listoftables      } { 表格目录                           },
+    { major             } { 学科专业                           },
+    { notation          } { 符号表                             },
+    { orig decl         } { 研究报告原创性声明                 },
+    { orig sign         } { 研究报告作者签名                   },
+    { paper list        } { 发表文章目录                       },
+    { pdf creator       } { LaTeX~ with~ njuthesis~ class      },
+    { preface           } { 前 \qquad{} 言                     },
+    { report            } { 博士后研究工作报告                 },
+    { submit date       } { 完成日期                           },
+    { supv full         } { 合作导师                           },
+    { supv ii           } { 第二导师                           },
+    { supv title        } { 职称                               },
+    { tableofcontents   } { 目 \qquad{} 录                     },
+    { title             } { 报告题目                           },
   }
   { \__nju_define_name:nn #1 }
 \clist_map_inline:nn
@@ -259,7 +260,8 @@
     { h sep          } { 5    pt },
     { v sep          } { 1    ex },
     { chapter before } { 10   pt },
-    { chapter  after } { 60   pt }
+    { chapter  after } { 60   pt },
+    { fn hang        } { 13.5 pt }
   }
   { \__nju_define_dim:nn #1 }
 \clist_map_inline:nn

Modified: trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def	2022-10-23 20:38:23 UTC (rev 64792)
+++ trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis-undergraduate.def	2022-10-23 20:38:45 UTC (rev 64793)
@@ -15,7 +15,7 @@
 %% or (at your option) any later version.  The latest version of this
 %% license is in:
 %% 
-%%    http://www.latex-project.org/lppl.txt
+%%   http://www.latex-project.org/lppl.txt
 %% 
 %% and version 1.3 or later is part of all distributions of LaTeX version
 %% 2005/12/01 or later.
@@ -23,7 +23,7 @@
 %% To produce the documentation run the original source files ending with
 %% `.dtx' through XeTeX.
 %% 
-\GetIdInfo $Id: njuthesis.dtx 1.0.0 2022-08-08 14:50:00
+\GetIdInfo $Id: njuthesis.dtx 1.1.0 2022-10-23 12:30:00
   +0800 NJU LUG <git+nju-lug-email-3104-issue- at yaoge123.cn>$
   {Undergraduate definition file for njuthesis}
 \ProvidesExplFile{njuthesis-undergraduate.def}
@@ -72,7 +72,7 @@
     \__nju_cover_entry:NNNnn #1 \l__nju_tmpb_dim #4 { grade } { id }
     \__nju_cover_entry:NNNn #1 #2 #4 { author }
     \__nju_cover_entry_supv:NNNn #1 \l__nju_tmpb_dim #4 { supv }
-    \bool_if:NT \l__nju_second_supvbool
+    \bool_if:NT \g__nju_opt_second_supv_bool
       { \__nju_cover_entry_supv:NNNn #1 \l__nju_tmpb_dim #4 { supvii } }
     \__nju_cover_entry:NNNn #1 #2 #4 { submitdate }
   }
@@ -183,25 +183,26 @@
   }
 \clist_map_inline:nn
   {
-    { acknowledgement } { 致 \qquad{} 谢                     },
-    { author        a } { 本科生姓名                         },
-    { date            } { 日期                               },
-    { grade           } { 年级                               },
-    { id              } { 学号                               },
-    { listoffigures   } { 插图目录                           },
-    { listoftables    } { 表格目录                           },
-    { notation        } { 符号表                             },
-    { orig decl       }
-      { 南京大学本科毕业论文(设计) \\ 诚信承诺书           },
-    { orig sign       } { 作者签名                           },
-    { paper list      } { 发表文章目录                       },
-    { pdf creator     } { LaTeX~ with~ njuthesis~ class      },
-    { preface         } { 前 \qquad{} 言                     },
-    { submit date     } { 提交日期                           },
-    { supv            } { 指导教师                           },
-    { supv ii         } { 第二导师                           },
-    { supv title      } { 职称                               },
-    { tableofcontents } { 目 \qquad{} 录                     },
+    { acknowledgement   } { 致 \qquad{} 谢                     },
+    { acknowledgement a } { 致谢(盲审阶段,暂时隐去)         },
+    { author          a } { 本科生姓名                         },
+    { date              } { 日期                               },
+    { grade             } { 年级                               },
+    { id                } { 学号                               },
+    { listoffigures     } { 插图目录                           },
+    { listoftables      } { 表格目录                           },
+    { notation          } { 符号表                             },
+    { orig decl         }
+      { 南京大学本科毕业论文(设计) \\ 诚信承诺书             },
+    { orig sign         } { 作者签名                           },
+    { paper list        } { 发表文章目录                       },
+    { pdf creator       } { LaTeX~ with~ njuthesis~ class      },
+    { preface           } { 前 \qquad{} 言                     },
+    { submit date       } { 提交日期                           },
+    { supv              } { 指导教师                           },
+    { supv ii           } { 第二导师                           },
+    { supv title        } { 职称                               },
+    { tableofcontents   } { 目 \qquad{} 录                     },
   }
   { \__nju_define_name:nn #1 }
 \clist_map_inline:nn
@@ -255,7 +256,8 @@
     { h sep          } { 5    pt },
     { v sep          } { 1    ex },
     { chapter before } { 10   pt },
-    { chapter  after } { 60   pt }
+    { chapter  after } { 60   pt },
+    { fn hang        } { 13.5 pt }
   }
   { \__nju_define_dim:nn #1 }
 \clist_map_inline:nn

Modified: trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls	2022-10-23 20:38:23 UTC (rev 64792)
+++ trunk/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls	2022-10-23 20:38:45 UTC (rev 64793)
@@ -15,7 +15,7 @@
 %% or (at your option) any later version.  The latest version of this
 %% license is in:
 %% 
-%%    http://www.latex-project.org/lppl.txt
+%%   http://www.latex-project.org/lppl.txt
 %% 
 %% and version 1.3 or later is part of all distributions of LaTeX version
 %% 2005/12/01 or later.
@@ -24,7 +24,7 @@
 %% `.dtx' through XeTeX.
 %% 
 \NeedsTeXFormat{LaTeX2e}
-\GetIdInfo $Id: njuthesis.dtx 1.0.0 2022-08-08 14:50:00
+\GetIdInfo $Id: njuthesis.dtx 1.1.0 2022-10-23 12:30:00
   +0800 NJU LUG <git+nju-lug-email-3104-issue- at yaoge123.cn>$
   {Thesis template for Nanjing University}
 \ProvidesExplClass{njuthesis}
@@ -66,13 +66,11 @@
 \skip_new:N  \l__nju_tmp_skip
 \tl_new:N    \l__nju_tmpa_tl
 \tl_new:N    \l__nju_tmpb_tl
-\int_new:N \g__nju_info_degree_int
 \int_new:N \g__nju_info_type_int
-\tl_new:N  \g__nju_info_degree_tl
-\tl_new:N  \g__nju_info_type_en_tl
-\bool_new:N \g__nju_opt_twoside_bool
+\bool_new:N \g__nju_opt_academic_bool
+\bool_new:N      \g__nju_opt_twoside_bool
 \bool_set_true:N \g__nju_opt_twoside_bool
-\bool_new:N \l__nju_second_supvbool
+\bool_new:N \g__nju_opt_second_supv_bool
 \tl_new:N \g__nju_info_supvfull_tl
 \tl_new:N \g__nju_info_supvfull_en_tl
 \tl_new:N \g__nju_font_latin_tl
@@ -80,19 +78,7 @@
 \tl_new:N \g__nju_font_math_tl
 \tl_new:N \g__nju_font_path_tl
 \bool_new:N \g__nju_font_path_bool
-\bool_gset_false:N \g__nju_font_path_bool
 \tl_new:N \g__nju_config_tl
-\clist_new:N   \g__nju_thm_type_clist
-\clist_gset:Nn \g__nju_thm_type_clist
-  {
-    { axiom      } { 公理 },
-    { corollary  } { 推论 },
-    { definition } { 定义 },
-    { example    } { 例   },
-    { lemma      } { 引理 },
-    { proof, *+  } { 证明 },
-    { theorem    } { 定理 }
-  }
 \tl_const:Nx \c__nju_today_tl
   {
     \int_to_arabic:n { \c_sys_year_int  } -
@@ -103,8 +89,6 @@
   { 学士, 硕士, 博士 }
 \clist_const:Nn \c__nju_name_type_en_clist
   { Bachelor, Master, Doctor~of~Philosophy }
-\clist_const:Nn \c__nju_name_degree_clist
-  { \c_empty_tl, 专业 }
 \clist_const:Nn \c__nju_name_month_en_clist
   {
     January, February, March, April, May, June,
@@ -112,13 +96,12 @@
   }
 \clist_const:Nn \c__nju_name_anon_clist
   {
-    author, chairman, clc, dept, email, field, grade,
-    id, major, secretlv, supvcont, udc
+    author, chairman, email, student-id, reviewer,
+    supervisor-contact, supervisor, supervisor-ii
   }
 \clist_const:Nn \c__nju_name_anon_en_clist
-  { author, dept, field, major, supv, supvii }
-\clist_const:Nn \c__nju_name_anonlist_clist
-  { reviewer, supv, supvii }
+  { author, supervisor, supervisor-ii }
+\cs_new:Nn \__nju_null: { \hbox:n { } }
 \cs_new:Nn \__nju_quad:  { \skip_horizontal:n { 1 em } }
 \cs_new:Nn \__nju_qquad: { \skip_horizontal:n { 2 em } }
 \cs_new:Nn \__nju_vskip: { \skip_vertical:N   \c__nju_vsep_dim }
@@ -161,13 +144,13 @@
 \cs_new_protected:Npn \__nju_box_spread:NNn #1#2#3
   {
     \mode_leave_vertical:
-    \__nju_get_width:Nn \l__nju_tmpa_dim { #2 #3 }
+    \__nju_get_width:Nn \l__nju_tmp_skip { #2 #3 }
     \hbox_to_wd:nn { #1 }
       {
-        \dim_compare:nTF { \l__nju_tmpa_dim > #1 }
+        \dim_compare:nTF { \l__nju_tmp_skip > #1 }
           {
             \tex_hfil:D \scalebox
-              { \dim_to_decimal_in_unit:nn { #1 } { \l__nju_tmpa_dim } }
+              { \dim_to_decimal_in_unit:nn { #1 } { \l__nju_tmp_skip } }
               [ 1.0 ] { #2 #3 } \tex_hfil:D
           }
           { #2 \tl_map_inline:nn { #3 } { ##1 \tex_hfil:D } \tex_unskip:D }
@@ -224,22 +207,23 @@
         \dim_gset:Nn #1 { \dim_max:nn {#1} { \l__nju_tmpa_dim } }
       }
   }
-\cs_new_protected:Npn \__nju_full_uline:Nn #1#2
+\cs_new_protected:Npn \__nju_get_width_print:Nn #1#2
   {
     \__nju_get_width:Nn #1 { #2 }
     \dim_set:Nn #1 { \textwidth - #1 } #2
   }
-\cs_generate_variant:Nn \__nju_full_uline:Nn { Nx }
-\cs_new_protected:Npn \__nju_uline_entry:Nnnn #1#2#3#4
+\cs_generate_variant:Nn \__nju_get_width_print:Nn { Nv }
+\cs_generate_variant:Nn \__nju_get_width_print:Nn { Nx }
+\cs_new_protected:Npn \__nju_uline_entry:Nn #1#2
   {
-    \__nju_full_uline:Nx #1 { \__nju_name:n { #2 } #4 }
-    \__nju_box_ulined_info:Nn #1 { #3 }
+    \__nju_get_width_print:Nv #1 { c__nju_name_ #2 _tl }
+    \__nju_box_ulined_info:Nn #1 { #2 }
   }
-\cs_new_protected:Npn \__nju_uline_bientry:Nnnn #1#2#3#4
+\cs_new_protected:Npn \__nju_uline_bientry:Nn #1#2
   {
-    \__nju_full_uline:Nx #1 { \__nju_name:n { #2 } #4 }
+    \__nju_get_width_print:Nv #1 { c__nju_name_ #2 _tl }
     \dim_sub:Nn #1 { \textwidth / 2 }
-    \__nju_box_ulined_info:Nn #1 { #3 }
+    \__nju_box_ulined_info:Nn #1 { #2 }
   }
 \cs_new:Npn \__nju_date:www    #1-#2-#3 \q_stop
   { \__zhnum_date_aux:nnn { #1 } { #2 } { #3 } }
@@ -425,10 +409,10 @@
     bottom-skip = \l__njuelem_bottom_skip,
     align =
       {
-        l = { \cs_set_eq:NN     \__njuelem_align: \raggedright },
-        r = { \cs_set_eq:NN     \__njuelem_align: \raggedleft  },
-        c = { \cs_set_eq:NN     \__njuelem_align: \centering   },
-        n = { \__nju_cs_clear:N \__njuelem_align:              }
+        l = { \cs_set_eq:NN \__njuelem_align: \raggedright },
+        r = { \cs_set_eq:NN \__njuelem_align: \raggedleft  },
+        c = { \cs_set_eq:NN \__njuelem_align: \centering   },
+        n = { \cs_set:Nn    \__njuelem_align: { }          }
       }
   }
   {
@@ -487,46 +471,49 @@
   { \DeclareInstance { nju } {#1} { page    } {#2} }
 \keys_define:nn { nju }
   {
-    type              .choices:nn = { bachelor, master, doctor, postdoc }
+    type               .choices:nn = { bachelor, master, doctor, postdoc }
       { \int_gset_eq:NN \g__nju_info_type_int   \l_keys_choice_int },
-    type              .initial:n  = bachelor,
-    degree            .choices:nn = { academic, professional }
-      { \int_gset_eq:NN \g__nju_info_degree_int \l_keys_choice_int },
-    degree            .initial:n  = academic,
-    nl-cover         .bool_set:N  = \g__nju_opt_nlcover_bool,
-    nl-cover          .initial:n  = false,
-    decl-page        .bool_set:N  = \g__nju_opt_decl_bool,
-    decl-page         .initial:n  = false,
-    draft           .bool_gset:N  = \g__nju_opt_draft_bool,
-    draft             .initial:n  = false,
-    oneside   .value_forbidden:n  = true,
-    twoside   .value_forbidden:n  = true,
-    oneside .bool_gset_inverse:N  = \g__nju_opt_twoside_bool,
-    anonymous        .bool_set:N  = \g__nju_opt_anon_bool,
-    anonymous         .initial:n  = false,
-    latin-font        .choices:nn =
+    type               .initial:n  = bachelor,
+    degree              .choice:,
+    degree / academic     .code:n  =
+      { \bool_set_true:N  \g__nju_opt_academic_bool },
+    degree / professional .code:n  =
+      { \bool_set_false:N \g__nju_opt_academic_bool },
+    degree             .initial:n  = academic,
+    nl-cover          .bool_set:N  = \g__nju_opt_nlcover_bool,
+    nl-cover           .initial:n  = false,
+    decl-page         .bool_set:N  = \g__nju_opt_decl_bool,
+    decl-page          .initial:n  = false,
+    draft            .bool_gset:N  = \g__nju_opt_draft_bool,
+    draft              .initial:n  = false,
+    oneside    .value_forbidden:n  = true,
+    twoside    .value_forbidden:n  = true,
+    oneside  .bool_gset_inverse:N  = \g__nju_opt_twoside_bool,
+    anonymous         .bool_set:N  = \g__nju_opt_anon_bool,
+    anonymous          .initial:n  = false,
+    latin-font         .choices:nn =
       { gyre, mac, win, none }
       { \tl_set_eq:NN \g__nju_font_latin_tl \l_keys_choice_tl },
-    cjk-font          .choices:nn =
+    cjk-font           .choices:nn =
       { fandol, founder, mac, noto, source, win, none }
       { \tl_set_eq:NN \g__nju_font_cjk_tl   \l_keys_choice_tl },
-    math-font         .choices:nn =
+    math-font          .choices:nn =
       {
         asana, cambria, fira, garamond, lm, libertinus, newcm,
         stix, bonum, dejavu, pagella, schola, termes, xits, none
       }
       { \tl_set_eq:NN \g__nju_font_math_tl  \l_keys_choice_tl },
-    math-font         .initial:n  = xits,
-    font-path            .code:n  =
+    math-font          .initial:n  = xits,
+    font-path             .code:n  =
       {
         \bool_set_true:N \g__nju_font_path_bool
-        \tl_set_eq:NN \g__nju_font_path_tl  \l_keys_choice_tl
+        \tl_set_eq:NN \g__nju_font_path_tl \l_keys_value_tl
       },
-    zihao              .tl_set:N  = \g__nju_opt_zihao_tl,
-    zihao             .initial:n  = -4,
-    linespread         .tl_set:N  = \g__nju_opt_linespread_tl,
-    linespread        .initial:n  = 1.625,
-    config          .clist_set:N  = \g__nju_config_clist
+    zihao               .tl_set:N  = \g__nju_opt_zihao_tl,
+    zihao              .initial:n  = -4,
+    linespread          .tl_set:N  = \g__nju_opt_linespread_tl,
+    linespread         .initial:n  = 1.625,
+    config           .clist_set:N  = \g__nju_config_clist
   }
 \clist_new:N \g__nju_name_optional_pkg_clist
 \cs_new_protected:Npn \__nju_define_pkg_keys:nnn #1#2#3
@@ -567,6 +554,8 @@
 \bool_if:NTF \g__nju_opt_twoside_bool
   { \tl_const:Nn \c__nju_name_pagemode_tl { twoside } }
   { \tl_const:Nn \c__nju_name_pagemode_tl { oneside } }
+\bool_if:NT \g__nju_opt_anon_bool
+  { \bool_set_false:N \g__nju_opt_decl_bool }
 \clist_map_inline:nn
   {
     abstract, bib, image, footer, footnote, header,
@@ -574,14 +563,20 @@
     math, style, theorem, tableofcontents
   }
   { \keys_define:nn { nju } { #1 .meta:nn = { nju / #1 } {##1} } }
+\bool_if:NTF \g__nju_opt_anon_bool
+  {
+    \cs_new:Npn \__nju_keys_set:nn #1#2
+      { \keys_set_filter:nnn {#1} { anonymous } {#2} }
+  }
+  { \cs_new_eq:NN \__nju_keys_set:nn \keys_set:nn }
 \NewDocumentCommand \njusetup { o m }
   {
     \tl_if_novalue:nTF { #1 }
-      { \keys_set:nn { nju } { #2 } }
+      { \__nju_keys_set:nn { nju } { #2 } }
       {
         \tl_if_in:nnTF { #1 } { / }
-          { \keys_set:nn { nju } { #1 = {#2} } }
-          { \keys_set:nn { nju  /  #1 } {#2}   }
+          { \__nju_keys_set:nn { nju } { #1 = {#2} } }
+          { \__nju_keys_set:nn { nju  /  #1 } {#2}   }
       }
   }
 \@onlypreamble \njusetup
@@ -618,10 +613,10 @@
   { ctexbook }
 \clist_map_inline:nn
   {
-    { no-math           } { fontspec     },
-    { perpage           } { footmisc     },
-    { capitalise, nameinlink, noabbrev }
-                          { cleveref     }
+    { quiet   } { xeCJK    },
+    { no-math } { fontspec },
+    { perpage } { footmisc },
+    { capitalise, nameinlink, noabbrev } { cleveref }
   }
   { \PassOptionsToPackage #1 }
 \LoadClass { ctexbook } [ 2018/04/01 ]
@@ -655,7 +650,7 @@
 \sys_if_engine_luatex:T
   {
     \RequirePackage { lua-ul }
-    \NewDocumentCommand \njuline { m } { \underLine{#1} \null }
+    \NewDocumentCommand \njuline { m } { \underLine{#1} \__nju_null: }
   }
 \msg_new:nnn { njuthesis } { package-too-old }
   {
@@ -713,88 +708,65 @@
   }
 \keys_define:nn { nju / info }
   {
-    title               .tl_set:N = \g__nju_info_title_tl,
-    title              .initial:n = { 空 },
-    title*              .tl_set:N = \g__nju_info_title_en_tl,
-    title*             .initial:n = { Empty },
-    keywords         .clist_set:N = \g__nju_info_keywords_clist,
-    keywords*        .clist_set:N = \g__nju_info_keywords_en_clist,
-    grade               .tl_set:N = \g__nju_info_grade_tl,
-    student-id          .tl_set:N = \g__nju_info_id_tl,
-    author              .tl_set:N = \g__nju_info_author_tl,
-    author*             .tl_set:N = \g__nju_info_author_en_tl,
-    department          .tl_set:N = \g__nju_info_dept_tl,
-    department*         .tl_set:N = \g__nju_info_dept_en_tl,
-    major               .tl_set:N = \g__nju_info_major_tl,
-    major*              .tl_set:N = \g__nju_info_major_en_tl,
-    field               .tl_set:N = \g__nju_info_field_tl,
-    field*              .tl_set:N = \g__nju_info_field_en_tl,
-    supervisor       .clist_set:N = \g__nju_info_supv_clist,
-    supervisor*         .tl_set:N = \g__nju_info_supv_en_tl,
-    supervisor-ii    .clist_set:N = \g__nju_info_supvii_clist,
-    supervisor-ii*      .tl_set:N = \g__nju_info_supvii_en_tl,
-    submit-date         .tl_set:N = \g__nju_info_submitdate_raw_tl,
-    submit-date        .initial:V = \c__nju_today_tl,
-    defend-date         .tl_set:N = \g__nju_info_defenddate_raw_tl,
-    defend-date        .initial:V = \c__nju_today_tl,
-    confer-date         .tl_set:N = \g__nju_info_conferdate_raw_tl,
-    confer-date        .initial:V = \c__nju_today_tl,
-    bottom-date         .tl_set:N = \g__nju_info_bottomdate_raw_tl,
-    bottom-date        .initial:V = \c__nju_today_tl,
-    chairman            .tl_set:N = \g__nju_info_chairman_tl,
-    reviewer         .clist_set:N = \g__nju_info_reviewer_clist,
-    clc                 .tl_set:N = \g__nju_info_clc_tl,
-    secret-level        .tl_set:N = \g__nju_info_secretlv_tl,
-    udc                 .tl_set:N = \g__nju_info_udc_tl,
-    supervisor-contact  .tl_set:N = \g__nju_info_supvcont_tl,
+    title               .tl_set:N = \g__nju_info_title_tl             ,
+    title              .initial:n = { 空 }                            ,
+    title*              .tl_set:N = \g__nju_info_title_en_tl          ,
+    title*             .initial:n = { Empty }                         ,
+    keywords         .clist_set:N = \g__nju_info_keywords_clist       ,
+    keywords*        .clist_set:N = \g__nju_info_keywords_en_clist    ,
+    grade               .tl_set:N = \g__nju_info_grade_tl             ,
+    student-id          .tl_set:N = \g__nju_info_id_tl                ,
+    author              .tl_set:N = \g__nju_info_author_tl            ,
+    author*             .tl_set:N = \g__nju_info_author_en_tl         ,
+    department          .tl_set:N = \g__nju_info_dept_tl              ,
+    department*         .tl_set:N = \g__nju_info_dept_en_tl           ,
+    major               .tl_set:N = \g__nju_info_major_tl             ,
+    major*              .tl_set:N = \g__nju_info_major_en_tl          ,
+    field               .tl_set:N = \g__nju_info_field_tl             ,
+    field*              .tl_set:N = \g__nju_info_field_en_tl          ,
+    supervisor       .clist_set:N = \g__nju_info_supv_clist           ,
+    supervisor*         .tl_set:N = \g__nju_info_supv_en_tl           ,
+    supervisor-ii    .clist_set:N = \g__nju_info_supvii_clist         ,
+    supervisor-ii*      .tl_set:N = \g__nju_info_supvii_en_tl         ,
+    submit-date         .tl_set:N = \g__nju_info_submitdate_raw_tl    ,
+    submit-date        .initial:V = \c__nju_today_tl                  ,
+    defend-date         .tl_set:N = \g__nju_info_defenddate_raw_tl    ,
+    defend-date        .initial:V = \c__nju_today_tl                  ,
+    confer-date         .tl_set:N = \g__nju_info_conferdate_raw_tl    ,
+    confer-date        .initial:V = \c__nju_today_tl                  ,
+    bottom-date         .tl_set:N = \g__nju_info_bottomdate_raw_tl    ,
+    bottom-date        .initial:V = \c__nju_today_tl                  ,
+    chairman            .tl_set:N = \g__nju_info_chairman_tl          ,
+    reviewer         .clist_set:N = \g__nju_info_reviewer_clist       ,
+    clc                 .tl_set:N = \g__nju_info_clc_tl               ,
+    secret-level        .tl_set:N = \g__nju_info_secretlv_tl          ,
+    udc                 .tl_set:N = \g__nju_info_udc_tl               ,
+    supervisor-contact  .tl_set:N = \g__nju_info_supvcont_tl          ,
     email               .tl_set:N = \g__nju_info_email_tl
   }
-\tl_set:Nx \g__nju_info_type_tl
+\clist_map_inline:Nn \c__nju_name_anon_clist
+  { \keys_define:nn { nju / info } { #1   .groups:n = { anonymous } } }
+\clist_map_inline:Nn \c__nju_name_anon_en_clist
+  { \keys_define:nn { nju / info } { #1 * .groups:n = { anonymous } } }
+\__nju_at_begin_document:n
   {
-    \clist_item:Nn \c__nju_name_type_clist
-      { \g__nju_info_type_int }
-  }
-\tl_set:Nx \g__nju_info_degree_tl
-  {
-    \g__nju_info_type_tl
-    \clist_item:Nn \c__nju_name_degree_clist
-      { \g__nju_info_degree_int }
-  }
-\ctex_at_end_preamble:n
-  {
-    \tl_set:Nx \g__nju_info_type_en_tl
-      { \clist_item:Nn \c__nju_name_type_en_clist { \g__nju_info_type_int } }
-    \bool_set:Nn \l__nju_second_supvbool
-      { ! \clist_if_empty_p:N \g__nju_info_supvii_clist }
-    \tl_set:Nx \g__nju_info_supvfull_tl
+    \clist_map_inline:nn
+      { \g__nju_info_supv_clist, \g__nju_info_supvii_clist }
       {
-        \clist_use:Nn \g__nju_info_supv_clist { \__nju_hskip: }
-        \bool_if:NT \l__nju_second_supvbool
-          {
-            \__nju_quad:
-            \clist_use:Nn \g__nju_info_supvii_clist { \__nju_hskip: }
-          }
+        \tl_gput_right:Nx \g__nju_info_supvfull_tl
+          { \clist_use:Nn #1 { \__nju_hskip: } \__nju_quad: }
       }
-    \tl_set:Nx \g__nju_info_supvfull_en_tl
+    \tl_gput_right:Nn \g__nju_info_supvfull_tl { \tex_unskip:D }
+    \tl_set:Nn \g__nju_info_supvfull_en_tl
       {
-        \g__nju_info_supv_en_tl
-        \bool_if:NT \l__nju_second_supvbool
-          { \__nju_quad: \g__nju_info_supvii_en_tl }
+        \g__nju_info_supv_en_tl \__nju_quad:
+        \g__nju_info_supvii_en_tl \tex_unskip:D
       }
   }
 \bool_if:NT \g__nju_opt_anon_bool
   {
-    \ctex_at_end_preamble:n
-      {
-        \clist_map_inline:Nn \c__nju_name_anon_clist
-          { \tl_gclear:c    { g__nju_info_ #1    _tl } }
-        \clist_map_inline:Nn \c__nju_name_anon_en_clist
-          { \tl_gclear:c    { g__nju_info_ #1 _en_tl } }
-        \clist_map_inline:Nn \c__nju_name_anonlist_clist
-          { \clist_gclear:c { g__nju_info_ #1 _clist } }
-        \tl_gclear:N \c__nju_name_nju_tl
-        \tl_gclear:N \c__nju_name_nju_en_tl
-      }
+    \tl_gclear:N \c__nju_name_nju_tl
+    \tl_gclear:N \c__nju_name_nju_en_tl
   }
 \bool_lazy_or:nnT
   { \tl_if_empty_p:N \g__nju_font_latin_tl }
@@ -881,17 +853,18 @@
 \cs_new_protected:Npn \__nju_loadfont_cjk_mac:
   {
     \__nju_hide_no_script_msg:
-    \setCJKmainfont{Songti~SC~Light}[
-      BoldFont=Songti~SC~Bold,
-      ItalicFont=Kaiti~SC,
-      BoldItalicFont=Kaiti~SC~Bold]
-    \setCJKsansfont{Heiti~SC~Light}[BoldFont=Heiti~SC~Medium]
-    \setCJKmonofont{STFangsong}
-    \setCJKfamilyfont{zhsong}{Songti~SC~Light}[BoldFont=Songti~SC~Bold]
-    \setCJKfamilyfont{zhhei}{Heiti~SC~Light}[BoldFont=Heiti~SC~Medium]
-    \setCJKfamilyfont{zhfs}{STFangsong}
-    \setCJKfamilyfont{zhkai}{Kaiti~SC}[BoldFont=Kaiti~SC~Bold]
-    \setCJKfamilyfont{zhnewhei}{PingFang~SC}
+    \setCJKmainfont { Songti~SC~Light }
+      [
+        BoldFont       = Songti~SC~Bold,
+        ItalicFont     = Kaiti~SC,
+        BoldItalicFont = Kaiti~SC~Bold
+      ]
+    \setCJKsansfont { Heiti~SC~Light  } [ BoldFont = Heiti~SC~Medium ]
+    \setCJKmonofont { STFangsong      }
+    \setCJKfamilyfont { zhsong } { Songti~SC~Light } [ BoldFont = Songti~SC~Bold ]
+    \setCJKfamilyfont { zhhei  } { Heiti~SC~Light  } [ BoldFont = Heiti~SC~Medium ]
+    \setCJKfamilyfont { zhfs   } { STFangsong      }
+    \setCJKfamilyfont { zhkai  } { Kaiti~SC        } [ BoldFont = Kaiti~SC~Bold ]
   }
 \cs_new_protected:Npn \__nju_loadfont_cjk_fandol:
   {
@@ -1282,11 +1255,6 @@
   }
 \clist_new:N \g__nju_blx_option_clist
 \clist_new:N \g__nju_blx_resource_clist
-\msg_new:nnn { njuthesis } { extra-bib-style }
-  {
-    Wrongly-placed~ bib~ style.\\
-    Please~ use~ the~ `bib/style`~ field.
-  }
 \keys_define:nn { nju / bib }
   {
     style             .choice:,
@@ -1305,18 +1273,11 @@
     style            .initial:n = numeric,
     option              .code:n =
       {
-        \tl_if_in:VnTF \l_keys_value_tl { style = }
-          { \msg_error:nn { njuthesis } { extra-bib-style } }
-          {
             \clist_gput_right:NV \g__nju_blx_option_clist
               \l_keys_value_tl
-          }
       },
     resource            .code:n =
-      {
-        \clist_gput_right:NV \g__nju_blx_resource_clist
-          \l_keys_value_tl
-      },
+      { \clist_gput_right:NV \g__nju_blx_resource_clist \l_keys_value_tl },
   }
 \bool_if:NT \g__nju_opt_load_blx_bool
   {
@@ -1327,8 +1288,7 @@
   {
     \cs_undefine:N \addbibresource
     \clist_gput_right:Nn \g__nju_blx_option_clist { backend = biber }
-    \exp_args:NV \PassOptionsToPackage
-      \g__nju_blx_option_clist { biblatex }
+    \exp_args:NV \PassOptionsToPackage \g__nju_blx_option_clist { biblatex }
   }
 \cs_new_protected:Npn \__nju_blx_post_setup:
   {
@@ -1339,9 +1299,9 @@
     \clist_map_inline:Nn \g__nju_blx_resource_clist
       { \addbibresource { ##1 } }
   }
-\BeforeBeginEnvironment { document }
+\bool_if:NT \g__nju_opt_load_blx_bool
   {
-    \bool_if:NT \g__nju_opt_load_blx_bool
+    \BeforeBeginEnvironment { document }
       {
         \__nju_blx_pre_setup:
         \RequirePackage { biblatex }
@@ -1381,38 +1341,62 @@
     \clist_map_inline:nn { figure, table, appendix, proof }
       { \__nju_cref_name:n { #1 } }
   }
-\tl_new:N \g__nju_fn_style_tl
+\clist_set:Nn \g__nju_fn_ctext_option_clist { charf = \scriptsize }
 \keys_define:nn { nju / footnote }
   {
-    style .choices:nn = { plain, pifont }
+    style .choices:nn = { plain, pifont, circled, circled* }
       {
-        \tl_gset_eq:NN \g__nju_fn_style_tl \l_keys_choice_tl
-        \int_compare:nT { \l_keys_choice_int = 2 }
-          { \RequirePackage { pifont } }
-      }
+        \int_case:nnF { \l_keys_choice_int }
+          {
+            { 2 }
+              {
+                \RequirePackage { pifont }
+                \cs_set_eq:NN \__nju_fn_number:N \__nju_fn_number_pifont:N
+              }
+            { 3 }
+              {
+                \RequirePackage { circledtext }
+                \cs_set:Npn \__nju_fn_number:N
+                  { \__nju_fn_number_circled:NV \c_false_bool }
+              }
+            { 4 }
+              {
+                \RequirePackage { circledtext }
+                \cs_set:Npn \__nju_fn_number:N
+                  { \__nju_fn_number_circled:NV \c_true_bool }
+              }
+          }
+          { \cs_set_eq:NN \__nju_fn_number:N \int_use:N }
+      },
+    circledtext-option .code:n =
+      { \clist_gput_right:Nn \g__nju_fn_ctext_option_clist {#1} },
+    hang          .bool_gset:N = \g__nju_fn_hang_bool,
+    hang            .initial:n = true
   }
-\cs_new:Npn \__nju_fn_symbol_pifont:n #1
-  { \ding { \int_eval:n { 171 + #1 } } }
-\tl_const:Nn \c__nju_fn_style_plain_tl  { plain  }
-\tl_const:Nn \c__nju_fn_style_pifont_tl { pifont }
-\cs_new:Npn \__nju_footnote_number:N #1
+\cs_new:Npn \__nju_fn_number_pifont:N #1 { \ding { \int_eval:n { 171 + #1 } } }
+\cs_generate_variant:Nn \__circledtext_handle:nn { Vn }
+\cs_new_protected:Npn \__nju_fn_number_circled:Nn #1#2
   {
-    \tl_case:NnF \g__nju_fn_style_tl
-      {
-        \c__nju_fn_style_plain_tl
-          { \int_use:N #1 }
-        \c__nju_fn_style_pifont_tl
-          { \__nju_fn_symbol_pifont:n {#1} }
-      }
-      { \int_use:N #1 }
+    \group_begin:
+      \bool_set_eq:NN \l__circledtext_negative_bool #1
+      \__circledtext_handle:Vn \g__nju_fn_ctext_option_clist { #2 }
+    \group_end:
   }
+\cs_generate_variant:Nn \__nju_fn_number_circled:Nn { NV }
+\cs_new_eq:NN \__nju_fn_number:N \int_use:N
 \bool_if:NT \g__nju_opt_load_fm_bool
   {
-    \cs_set:Npn \thefootnote { \__nju_footnote_number:N \c at footnote }
+    \cs_set:Npn \thefootnote { \__nju_fn_number:N \c at footnote }
     \cs_set:Npn \@makefntext #1
       {
         \mode_leave_vertical:
-        \hbox_to_wd:nn { 1.5 em } { \@thefnmark \tex_hfil:D }
+        \hbox_to_wd:nn { \c__nju_fnhang_dim } { \@thefnmark \tex_hfil:D }
+        \tex_penalty:D \@M
+        \bool_if:NT \g__nju_fn_hang_bool
+          {
+            \int_set:Nn \tex_hangafter:D { 1 }
+            \dim_set_eq:NN \tex_hangindent:D \c__nju_fnhang_dim
+          }
         #1
       }
   }
@@ -1475,7 +1459,17 @@
     body-font      .initial:n = \itshape,
     qed-symbol     .initial:V = \c__nju_name_qed_tl,
     counter        .initial:n = chapter,
-    type         .clist_set:N = \g__nju_thm_type_clist,
+    type        .clist_gset:N = \g__nju_thm_type_clist,
+    type           .initial:n =
+      {
+        { axiom      } { 公理 },
+        { corollary  } { 推论 },
+        { definition } { 定义 },
+        { example    } { 例   },
+        { lemma      } { 引理 },
+        { proof, *+  } { 证明 },
+        { theorem    } { 定理 }
+      },
     define .value_forbidden:n = true,
     define            .code:n =
       {
@@ -1634,8 +1628,8 @@
     \use:c { __nju_loadfont_math_ \g__nju_font_math_tl : }
     \bool_if:NT \g__nju_opt_math_leq_bool
       {
-        \cs_set_eq:NN \le  \leslant
-        \cs_set_eq:NN \ge  \geslant
+        \cs_set_eq:NN \le  \leqslant
+        \cs_set_eq:NN \ge  \geqslant
         \cs_set_eq:NN \leq \leqslant
         \cs_set_eq:NN \geq \geqslant
       }
@@ -1766,10 +1760,14 @@
   }
   { \__nju_print_keywords:nn { _en } { ;~ } \group_end: }
 \NewDocumentEnvironment { preface         } { +b }
-  { \__nju_chapter:V \c__nju_name_preface_tl         #1 }
+  { \__nju_chapter:V \c__nju_name_preface_tl #1 }
   { \cleardoublepage }
 \NewDocumentEnvironment { acknowledgement } { +b }
-  { \__nju_chapter:V \c__nju_name_acknowledgement_tl #1 }
+  {
+    \bool_if:NTF \g__nju_opt_anon_bool
+      { \__nju_bookmark_toc:V \c__nju_name_acknowledgementa_tl   }
+      { \__nju_chapter:V      \c__nju_name_acknowledgement_tl #1 }
+  }
   { \cleardoublepage }
 \NewDocumentCommand \njupaperlist
   { O { \c__nju_name_paperlist_tl } m }



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