summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/README.md78
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/README_EN.md26
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/README_ZH_CN.md77
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.jpgbin817068 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.pdfbin0 -> 84739 bytes
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/njuthesis.pdfbin1468177 -> 638180 bytes
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/abstract.sty136
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/components.sty173
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/cover.sty251
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/font.sty219
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/packages.sty71
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/page.sty54
-rw-r--r--Master/texmf-dist/doc/latex/njuthesis/profile/reference.sty68
-rw-r--r--Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx2266
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls1239
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
16 files changed, 3599 insertions, 1060 deletions
diff --git a/Master/texmf-dist/doc/latex/njuthesis/README.md b/Master/texmf-dist/doc/latex/njuthesis/README.md
index d7c4cb33aa1..a3e0d046459 100644
--- a/Master/texmf-dist/doc/latex/njuthesis/README.md
+++ b/Master/texmf-dist/doc/latex/njuthesis/README.md
@@ -2,28 +2,76 @@
[![njuthesis](https://img.shields.io/badge/njuthesis-latex-blue)](https://git.nju.edu.cn/nju-lug/nju-latex-templates)
[![overleaf](https://img.shields.io/badge/overleaf-supported-brightgreen)](https://tex.nju.edu.cn)
+![build status](https://github.com/nju-lug/NJUThesis/actions/workflows/build.yml/badge.svg)
-## Overview
+> 此项目是基于[NJU thesis 2021](https://github.com/FengChendian/NJUThesis2021)的重构版本,目前本科生版本**已经基本重构完成**,硕博论文**正在**根据研究生院的文件重构,但研究生院的规定并不完善,因此部分格式可能会参考本科的,**如果院系另有要求,请自行修改或者提交issue**。
-This is A LaTex Template for Nanjing University Bachelor Thesis. The Template needs `xelatex` or `lualatex`.
+原来的[NJU thesis 2021](https://github.com/FengChendian/NJUThesis2021)模板太过古老并且不支持硕士、博士论文,目前难以维护,因此为了模板的可持续发展,现在将对该项目进行重构,项目挂载于[NJU-LUG](https://github.com/nju-lug)组织仓库下,目前已[发布在CTAN](https://ctan.org/pkg/njuthesis)。
-## License
+相关文档请参见[本项目wiki](https://github.com/nju-lug/NJUThesis/wiki)。
------
- This work may be distributed and/or modified under the conditions of
- the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
- either version 1.3c of this license or (at your option) any later
- version.
------
+## 快速开始
-## Contributing
+从0.9.0版以后,本模板以DocStrip(`.dtx`)格式进行维护。常规的`.cls`格式文件可从Releases页面下载或使用以下方法提取。
-If you find a problem with the template, please submit an issue or PR in Github
+### 关于DocStrip文件
-## Wiki
+DocStrip格式合并了LaTeX源代码和说明文档,更有利于宏包的发布。要使用该文件,请在当前工作目录下打开终端:
-Please see [Chinese wiki](https://github.com/nju-lug/NJUThesis/wiki)。
+- 输入`xetex njuthesis.dtx`以提取宏包内容
+- 输入`latexmk njuthesis.dtx`以生成并查看内置的文档
------
+请注意,由于文件重名原因,项目中的示例论文模板已被重命名为`njuthesis-sample.tex`。
+
+### 本地编译
+
+1. [从南大镜像站下载](https://mirror.nju.edu.cn/download/app/TeX%20%E6%8E%92%E7%89%88%E7%B3%BB%E7%BB%9F)并安装TeXLive或者MiKTeX最新版
+2. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包`njuthesis.zip`
+3. 根据需要更改`njuthesis-sample.tex`文件中的内容
+4. 在模板根目录下运行`latexmk`编译文件,得到对应的PDF
+
+#### **关于本地编译**
+
+- 模板支持`latexmk`、`xelatex`、`lualatex`三种编译方式
+- 如果使用`latexmk`,请务必使用完整的命令`latexmk -xelatex`以免产生不必要的问题
+- 如果使用`xelatex`或`lualatex`,需要按照`xelatex/lualatex` -> `biber` -> `xelatex/lualatex` -> `xelatex/lualatex`的顺序编译四次
+- 仓库中`.vscode`附带一份VScode的LaTeX WorkShop的配置文件,可根据需要使用
+
+### [南大TeX](https://tex.nju.edu.cn)编译
+
+1. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包`njuthesis.zip`
+2. 登录[南大TeX](https://tex.nju.edu.cn),点击New Project -> Upload Project上传刚刚得到的压缩包,上传后`njuthesis-sample.tex`、`njuthesis.cls`等文件应在根目录,0.9.0以后的目录结构如下所示:
+
+ ```shell
+ NJUThesis-master/
+ │
+ ├─figure/
+ │ njulogo.pdf
+ │ njuname.pdf
+ │
+ │ njuthesis.bib
+ │ njuthesis.cls
+ │ njuthesis-sample.tex
+ ```
+
+3. 在南大TeX项目内页面左上角的`Menu`中,将编译器改为`XeLaTeX`
+4. 编写TeX文档
+
+### 其他
+
+更多内容请参见项目Wiki中的[使用说明](https://github.com/nju-lug/NJUThesis/wiki/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)。
+
+你也可以下载[Release](https://github.com/nju-lug/NJUThesis/releases/latest)中附带的`njuthesis.pdf`,里面详尽阐述了模板的特性和使用方法。
+
+## 常见问题
+
+请参见[常见问题](https://github.com/nju-lug/NJUThesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。
+
+## 贡献
+
+如果你发现了模板的问题,欢迎在Github中[提交issue](https://github.com/nju-lug/NJUThesis/issues)或者PR。
+
+## 许可
+
+本模板的发布遵守 LaTeX Project Public License(版本 1.3c 或更高)。
-Copyright © NJU-LUG
diff --git a/Master/texmf-dist/doc/latex/njuthesis/README_EN.md b/Master/texmf-dist/doc/latex/njuthesis/README_EN.md
new file mode 100644
index 00000000000..e8e9c42190d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/njuthesis/README_EN.md
@@ -0,0 +1,26 @@
+# The njuthesis class
+
+## Overview
+
+This package is intended for typesetting Nanjing University thesis with LaTeX, providing support for bachelor, master, and doctoral thesis. Compilation of this class requires either `xelatex` or `lualatex` engine.
+
+## License
+
+-----
+ This work may be distributed and/or modified under the conditions of
+ the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+ either version 1.3c of this license or (at your option) any later
+ version.
+-----
+
+## Contributing
+
+If you run into any problem with the template, please contact us via Github issue or submit Pull Request.
+
+## Wiki
+
+Please see [Chinese wiki](https://github.com/nju-lug/NJUThesis/wiki)。
+
+-----
+
+Copyright © NJU-LUG
diff --git a/Master/texmf-dist/doc/latex/njuthesis/README_ZH_CN.md b/Master/texmf-dist/doc/latex/njuthesis/README_ZH_CN.md
new file mode 100644
index 00000000000..a3e0d046459
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/njuthesis/README_ZH_CN.md
@@ -0,0 +1,77 @@
+# NJU Thesis
+
+[![njuthesis](https://img.shields.io/badge/njuthesis-latex-blue)](https://git.nju.edu.cn/nju-lug/nju-latex-templates)
+[![overleaf](https://img.shields.io/badge/overleaf-supported-brightgreen)](https://tex.nju.edu.cn)
+![build status](https://github.com/nju-lug/NJUThesis/actions/workflows/build.yml/badge.svg)
+
+> 此项目是基于[NJU thesis 2021](https://github.com/FengChendian/NJUThesis2021)的重构版本,目前本科生版本**已经基本重构完成**,硕博论文**正在**根据研究生院的文件重构,但研究生院的规定并不完善,因此部分格式可能会参考本科的,**如果院系另有要求,请自行修改或者提交issue**。
+
+原来的[NJU thesis 2021](https://github.com/FengChendian/NJUThesis2021)模板太过古老并且不支持硕士、博士论文,目前难以维护,因此为了模板的可持续发展,现在将对该项目进行重构,项目挂载于[NJU-LUG](https://github.com/nju-lug)组织仓库下,目前已[发布在CTAN](https://ctan.org/pkg/njuthesis)。
+
+相关文档请参见[本项目wiki](https://github.com/nju-lug/NJUThesis/wiki)。
+
+## 快速开始
+
+从0.9.0版以后,本模板以DocStrip(`.dtx`)格式进行维护。常规的`.cls`格式文件可从Releases页面下载或使用以下方法提取。
+
+### 关于DocStrip文件
+
+DocStrip格式合并了LaTeX源代码和说明文档,更有利于宏包的发布。要使用该文件,请在当前工作目录下打开终端:
+
+- 输入`xetex njuthesis.dtx`以提取宏包内容
+- 输入`latexmk njuthesis.dtx`以生成并查看内置的文档
+
+请注意,由于文件重名原因,项目中的示例论文模板已被重命名为`njuthesis-sample.tex`。
+
+### 本地编译
+
+1. [从南大镜像站下载](https://mirror.nju.edu.cn/download/app/TeX%20%E6%8E%92%E7%89%88%E7%B3%BB%E7%BB%9F)并安装TeXLive或者MiKTeX最新版
+2. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包`njuthesis.zip`
+3. 根据需要更改`njuthesis-sample.tex`文件中的内容
+4. 在模板根目录下运行`latexmk`编译文件,得到对应的PDF
+
+#### **关于本地编译**
+
+- 模板支持`latexmk`、`xelatex`、`lualatex`三种编译方式
+- 如果使用`latexmk`,请务必使用完整的命令`latexmk -xelatex`以免产生不必要的问题
+- 如果使用`xelatex`或`lualatex`,需要按照`xelatex/lualatex` -> `biber` -> `xelatex/lualatex` -> `xelatex/lualatex`的顺序编译四次
+- 仓库中`.vscode`附带一份VScode的LaTeX WorkShop的配置文件,可根据需要使用
+
+### [南大TeX](https://tex.nju.edu.cn)编译
+
+1. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包`njuthesis.zip`
+2. 登录[南大TeX](https://tex.nju.edu.cn),点击New Project -> Upload Project上传刚刚得到的压缩包,上传后`njuthesis-sample.tex`、`njuthesis.cls`等文件应在根目录,0.9.0以后的目录结构如下所示:
+
+ ```shell
+ NJUThesis-master/
+ │
+ ├─figure/
+ │ njulogo.pdf
+ │ njuname.pdf
+ │
+ │ njuthesis.bib
+ │ njuthesis.cls
+ │ njuthesis-sample.tex
+ ```
+
+3. 在南大TeX项目内页面左上角的`Menu`中,将编译器改为`XeLaTeX`
+4. 编写TeX文档
+
+### 其他
+
+更多内容请参见项目Wiki中的[使用说明](https://github.com/nju-lug/NJUThesis/wiki/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)。
+
+你也可以下载[Release](https://github.com/nju-lug/NJUThesis/releases/latest)中附带的`njuthesis.pdf`,里面详尽阐述了模板的特性和使用方法。
+
+## 常见问题
+
+请参见[常见问题](https://github.com/nju-lug/NJUThesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。
+
+## 贡献
+
+如果你发现了模板的问题,欢迎在Github中[提交issue](https://github.com/nju-lug/NJUThesis/issues)或者PR。
+
+## 许可
+
+本模板的发布遵守 LaTeX Project Public License(版本 1.3c 或更高)。
+
diff --git a/Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.jpg b/Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.jpg
deleted file mode 100644
index b69db069210..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.jpg
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.pdf b/Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.pdf
new file mode 100644
index 00000000000..f7e71662e55
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/njuthesis/figure/njuname-large.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/njuthesis/njuthesis.pdf b/Master/texmf-dist/doc/latex/njuthesis/njuthesis.pdf
index 11b1922dea3..a254258dd51 100644
--- a/Master/texmf-dist/doc/latex/njuthesis/njuthesis.pdf
+++ b/Master/texmf-dist/doc/latex/njuthesis/njuthesis.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/abstract.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/abstract.sty
deleted file mode 100644
index 37814cef131..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/abstract.sty
+++ /dev/null
@@ -1,136 +0,0 @@
-\ProvidesExplPackage{profile/abstract}{2021-09-11}{0.7.0}{NJU Thesis abstract design}
-
-% 判断学位
-\str_if_eq:eeTF {\nju_degree} { ug }
-{
- % 本科摘要环境
- \NewDocumentEnvironment{abstract} {}
- {%
- \pagestyle{plain}
- \pagenumbering{Roman}
- % \phantomsection\addcontentsline{toc}{chapter}{中文摘要} % 将摘要插入目录和pdf书签
- \pdfbookmark[0]{中文摘要}{中文摘要} % 将摘要插入pdf书签,与上一行不可共存
- \begin{center}
- \kaishu\zihao{-2}{\textbf{\uuline{南京大学本科生毕业论文(设计、作品)中文摘要}}}
- \end{center}
- {\bgroup
- \kaishu\zihao{-4}
- \tl_set:Nn \tabcolsep {0pt}
- \tl_set:Nn \arraystretch {0.8}
- \noindent
- 题目: \nju_title \\
- 院系: \nju_department \\
- 专业: \nju_major \\
- 本科生姓名: \nju_student_name \\
- 指导教师(姓名、职称):\nju_mentor_full \\
- 摘要:
- \egroup
- }
- \kaishu\zihao{-4}\par%
- }{%
- \newpage
- }
-
- % 中文关键词
- \NewDocumentCommand \keywords {m} {%
- \par\vspace{2ex}\noindent%
- {\kaishu\zihao{-4}\makebox[4em][s]{关键词{:}}}~{#1}%
- }
-
- % 英文摘要
- \NewDocumentEnvironment{englishabstract} {}
- {%
- \pagestyle{plain}
- % \phantomsection\addcontentsline{toc}{chapter}{英文摘要} % 将摘要插入目录和pdf书签
- \pdfbookmark[0]{英文摘要}{英文摘要} % 将摘要插入pdf书签,与上一行不可共存
- \begin{center}
- \kaishu\zihao{-2}{\textbf{\uuline{南京大学本科生毕业论文(设计、作品)英文摘要}}}
- \end{center}
- {
- \bgroup
- THESIS: ~~\nju_title_en \\
- DEPARTMENT: ~~\nju_department_en \\
- SPECIALIZATION: ~~\nju_major_en \\
- UNDERGRADUATE:~~\nju_student_name_en \\
- MENTOR:~~\nju_mentor_full_en \\
- ABSTRACT:
- \egroup
- }
- \zihao{-4}\par%
- }{%
- \cleardoublepage
- \newpage
- }
-
- % 英文关键词
- \NewDocumentCommand \englishkeywords {m} {%
- \par\vspace{2ex}\noindent%
- {KEYWORDS{:}}~~{#1}%
- }
-}
-{
- % 摘要环境
- \NewDocumentEnvironment{abstract} {}
- {%
- \pagestyle{plain}
- \pagenumbering{Roman}
- % \phantomsection\addcontentsline{toc}{chapter}{中文摘要} % 将摘要插入目录和pdf书签
- \pdfbookmark[0]{中文摘要}{中文摘要} % 将摘要插入pdf书签,与上一行不可共存
- \begin{center}
- \kaishu\zihao{-2}{\textbf{\uuline{南京大学研究生毕业论文中文摘要首页用纸}}}
- \end{center}
-
- \bgroup
- \kaishu\zihao{4}
- \tl_set:Nn \tabcolsep {0pt}
- \tl_set:Nn \arraystretch {0.8}
- \noindent
- % 毕业论文题目:\ \uline{\nju_title} \\ % 下划线有问题
- 毕业论文题目:\ \nju_title \\
- \uline{\makebox[9em]{\nju_major}}专业\uline{\makebox[3em]{\nju_grade}}级
- \str_if_eq:eeTF {\nju_degree} { d } {博}{硕}
- 士生姓名:\uline{\hfill\nju_student_name\hfill} \\
- 指导教师(姓名、职称):\uline{\hfill\nju_mentor_full\hfill}\par
- \egroup
-
- \kaishu\zihao{4}\par%
- }{%
- \newpage
- }
-
- % 中文关键词
- \NewDocumentCommand \keywords {m} {%
- \par\vspace{2ex}\noindent%
- {\kaishu\zihao{4}\makebox[4em][s]{关键词{:}}}~{#1}%
- }
-
- % 英文摘要
- \NewDocumentEnvironment{englishabstract} {}
- {%
- \pagestyle{plain}
- % \phantomsection\addcontentsline{toc}{chapter}{英文摘要} % 将摘要插入目录和pdf书签
- \pdfbookmark[0]{英文摘要}{英文摘要} % 将摘要插入pdf书签,与上一行不可共存
- \begin{center}
- \kaishu\zihao{-2}{\textbf{\uuline{南京大学研究生毕业论文英文摘要首页用纸}}}
- \end{center}
- {
- \bgroup
- \zihao{4}
- THESIS: ~~\nju_title_en \\
- SPECIALIZATION: ~~\nju_major_en \\
- POSTGRADUATE:~~\nju_student_name_en \\
- MENTOR:~~\nju_mentor_full_en\par
- \egroup
- }
- \zihao{4}\par%
- }{%
- \cleardoublepage
- \newpage
- }
-
- % 英文关键词
- \NewDocumentCommand \englishkeywords {m} {%
- \par\vspace{2ex}\noindent%
- {KEYWORDS{:}}~~{#1}%
- }
-}
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/components.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/components.sty
deleted file mode 100644
index 4a24fe4f59b..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/components.sty
+++ /dev/null
@@ -1,173 +0,0 @@
-\ProvidesExplPackage{profile/components}{2021-09-11}{0.6.0}{NJU Thesis components configuration}
-
-% 图表位置调整
-\floatsetup[lstlisting]{ % Captions for lstlistings
- capposition=above,%
- margins=centering,%
- floatwidth=\textwidth%
-}
-\floatsetup[figure]{ % Captions for figures
- capposition=bottom,%
- margins=centering,%
- floatwidth=\textwidth%
-}
-\floatsetup[table]{ % Captions for tables
- capposition=above,%
- margins=centering,%
- floatwidth=\textwidth%
-}
-
-% 代码样式
-\lstset{
- basicstyle=\ttfamily\linespread{1}\small\selectfont,
- keywordstyle=\bfseries,% use bold style for keywords
- commentstyle=\rmfamily\itshape,% use italic style for comments
- stringstyle=\ttfamily,% 字符串风格
- flexiblecolumns,% ?
- numbers=left,% left-aligned numbering
- showspaces=false,% hide markers for spaces
- showstringspaces=false,
- captionpos=t,% place the caption at the top
- % frame=lrtb,% show all four sides of the frame
- % linewidth=.8\textwidth,
- % breakatwhitespace=true,
- breaklines=true,
- xleftmargin=2em,xrightmargin=2em,% set the width of the code environment
-}
-
-\lstdefinestyle{LaTeX}{
- language=TeX,
- morekeywords={begin, caption, label, mathrm, frac, toprule, midrule, bottomrule, includegraphics}
-}
-
-% 图表标题样式
-\DeclareCaptionFont{songticap}{\zihao{5}\bf\songti}
-\captionsetup{
- font=small,%
- labelfont=songticap,
- textfont=songticap,
- strut=no,%
- hypcap=true, % Links point to the top of the figure
- % indention=0pt, % Suppress indentation
- % % parindent=0pt, % Suppress space between paragraphs
- aboveskip=6pt, % Increase the space between the figure and the caption
- belowskip=6pt, % Increase the space between the caption and the table
-}
-
-% list configuration
-\renewcommand{\labelitemi}{\tiny$\blacktriangleright$}
-\renewcommand{\labelitemii}{\textbullet}
-
-\setlist[itemize]{noitemsep}
-\setlist[enumerate]{noitemsep}
-\setlist[description]{noitemsep}
-
-% 数学环境
-\declaretheoremstyle[
- %spaceabove=.5\thm@preskip,
- %spacebelow=.5\thm@postskip,
- headfont=\bf\songti,%\scshape,
- notefont=\songti,% notebraces={ (}{)},
- bodyfont=\songti,
- %headformat={\NAME\space\NUMBER\space\NOTE},
- headpunct={},
- %postheadspace={.5em plus .1em minus .1em},
- %prefoothook={\hfill\qedsymbol}
- ]{njuthm}
-
-\theoremstyle{njuthm}
-
-\let\oldproofname=\proofname
-\renewcommand*{\proofname}{\rm\bf\songti{\oldproofname}} % 修改证明环境标题
-
-\declaretheorem[
- name=算法,
- style=njuthm,
- refname={算法,算法},
- Refname={算法,算法},
- % numberwithin=section,
-]{algorithm}
-\declaretheorem[
- name=假设,
- style=njuthm,
- refname={假设,假设},
- Refname={假设,假设},
- % numberwithin=section,
-]{assumption}
-\declaretheorem[
- name=公理,
- style=njuthm,
- refname={公理,公理},
- Refname={公理,公理},
- % numberwithin=section,
-]{axiom}
-\declaretheorem[
- name=结论,
- style=njuthm,
- refname={结论,结论},
- Refname={结论,结论},
- % numberwithin=section,
-]{conclusion}
-\declaretheorem[
- name=条件,
- style=njuthm,
- refname={条件,条件},
- Refname={条件,条件},
- % numberwithin=section,
-]{condition}
-\declaretheorem[
- name=推论,
- style=njuthm,
- refname={推论,推论},
- Refname={推论,推论},
- % numberwithin=section,
-]{corollary}
-\declaretheorem[
- name=定义,
- style=njuthm,
- refname={定义,定义},
- Refname={定义,定义},
- % numberwithin=section,
-]{definition}
-\declaretheorem[
- name=例,
- style=njuthm,
- refname={例,例},
- Refname={例,例},
- % numberwithin=section,
-]{example}
-\declaretheorem[
- name=引理,
- style=njuthm,
- refname={引理,引理},
- Refname={引理,引理},
- % numberwithin=section,
-]{lemma}
-\declaretheorem[
- name=性质,
- style=njuthm,
- refname={性质,性质},
- Refname={性质,性质},
- % numberwithin=section,
-]{property}
-\declaretheorem[
- name=命题,
- style=njuthm,
- refname={命题,命题},
- Refname={命题,命题},
- % numberwithin=section,
-]{proposition}
-\declaretheorem[
- name=注解,
- style=njuthm,
- refname={注解,注解},
- Refname={注解,注解},
- % numberwithin=section,
-]{remark}
-\declaretheorem[
- name=定理,
- style=njuthm,
- refname={定理,定理},
- Refname={定理,定理},
- numberwithin=section,
-]{theorem}
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/cover.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/cover.sty
deleted file mode 100644
index 8293e64780b..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/cover.sty
+++ /dev/null
@@ -1,251 +0,0 @@
-\ProvidesExplPackage{profile/cover}{2021-09-11}{0.7.0}{NJU Thesis cover design}
-
-% 拼合标题
-\tl_const:Nn \nju_title {\nju_title_a \nju_title_b \nju_title_c}
-
-% 拼合导师
-\bool_if:NTF \nju_second_mentor
-{
- \tl_const:Nn \nju_mentor_full
- {
- \nju_mentor_a\ \nju_mentor_a_title
- \ \ \nju_mentor_b\ \nju_mentor_b_title
- }
- \tl_const:Nn \nju_mentor_full_en
- {
- \nju_mentor_a_en\ \nju_mentor_a_title_en
- \ \ \nju_mentor_b_en\ \nju_mentor_b_title_en
- }
-}
-{
- \tl_const:Nn \nju_mentor_full
- {
- \nju_mentor_a\ \nju_mentor_a_title
- }
- \tl_const:Nn \nju_mentor_full_en
- {
- \nju_mentor_a_en\ \nju_mentor_a_title_en
- }
-}
-
-% 封面下划线
-\cs_new:Npn \nju_cover_underline_ug:nn #1 #2 {
- \uline{\makebox[#1]{\rm\songti#2}}
-}
-\cs_new:Npn \nju_cover_underline_g:n #1 {
- \uline{\makebox[215pt]{\rm\kaishu#1}}
-}
-
-% 封面表格边框
-\cs_new:Npn \nju_coverbox_ug:n #1 {
- \makebox[4.2em][s]{#1}
-}
-\cs_new:Npn \nju_coverbox_g:n #1 {
- \makebox[6em][s]{#1\hspace{1em}}
-}
-
-% 判断学位
-\str_if_eq:eeTF {\nju_degree} { ug }
-{ \tl_const:Nn \nju_degree_name {本\hfill 科\hfill } } % 本科
-{
- % 本科以外都是研究生
- \tl_const:Nn \nju_degree_name {研\hfill 究\hfill 生\hfill }
-
- % 研究生类别
- \str_case_e:nn { \nju_degree }
- {
- { mg } { \tl_const:Nn \nju_degree_title {硕士} }
- { mf } { \tl_const:Nn \nju_degree_title {硕士专业} }
- { d } { \tl_const:Nn \nju_degree_title {博士} }
- }
-}
-
-% 判断类型
-\str_if_eq:eeTF {\nju_type} {thesis}
-{\tl_const:Nn \nju_type_name {\nju_degree_name 毕\hfill 业\hfill 论\hfill 文}}
-{\tl_const:Nn \nju_type_name {\nju_degree_name 毕\hfill 业\hfill 设\hfill 计}}
-
-% 封面信息栏 本科
-\tl_new:N \nju_printcoverinfo_ug
-\tl_set:Nn \nju_printcoverinfo_ug {
- \begin{tabular}{p{4.2em}c}
- \nju_coverbox_ug:n {院\hfill 系}
- & \nju_cover_underline_ug:nn {250pt}{\nju_department}\\
- \nju_coverbox_ug:n {专\hfill 业}
- & \nju_cover_underline_ug:nn {250pt}{\nju_major}\\
-
- % 标题换行
- \int_case:nn {\nju_titlelength}
- {
- { 1 } {
- \nju_coverbox_ug:n {题\hfill 目}
- & \nju_cover_underline_ug:nn {250pt}{\bf{\nju_title_a}} \\ }
- { 2 } {
- \nju_coverbox_ug:n {题\hfill 目}
- & \nju_cover_underline_ug:nn {250pt}{\bf{\nju_title_a}} \\
- & \nju_cover_underline_ug:nn {250pt}{\bf{\nju_title_b}} \\ }
- { 3 } {
- \nju_coverbox_ug:n {题\hfill 目}
- & \nju_cover_underline_ug:nn {250pt}{\bf{\nju_title_a}} \\
- & \nju_cover_underline_ug:nn {250pt}{\bf{\nju_title_b}} \\
- & \nju_cover_underline_ug:nn {250pt}{\bf{\nju_title_c}} \\}
- }
- \end{tabular}\\
-
- \begin{tabular}{p{4.2em}cp{4.2em}c}
- \nju_coverbox_ug:n {年\hfill 级}
- & \nju_cover_underline_ug:nn {90pt}{\nju_grade}
- & \nju_coverbox_ug:n {学\hfill 号}
- & \nju_cover_underline_ug:nn {90pt}{\nju_student_id}\\
- \end{tabular}\\
-
- \begin{tabular}{p{4.2em}c}
- \nju_coverbox_ug:n {学\hfill 生\hfill 姓\hfill 名}
- & \nju_cover_underline_ug:nn {250pt}{\nju_student_name}
- \end{tabular}\\
- \begin{tabular}{p{4.2em}cp{4.2em}c}
- \nju_coverbox_ug:n {导\hfill 师}
- & \nju_cover_underline_ug:nn {90pt}{\nju_mentor_a}
- & \nju_coverbox_ug:n {职\hfill 称}
- & \nju_cover_underline_ug:nn {90pt}{\nju_mentor_a_title}\\
-
- % 第二导师
- \bool_if:NTF \nju_second_mentor
- {
- \nju_coverbox_ug:n {第\hfill 二\hfill 导\hfill 师}
- & \nju_cover_underline_ug:nn {90pt}{\nju_mentor_b}
- & \nju_coverbox_ug:n {职\hfill 称}
- & \nju_cover_underline_ug:nn {90pt}{\nju_mentor_b_title}\\
- }
- {}
- \end{tabular}\\
-
- \begin{tabular}{p{4.2em}c}
- \nju_coverbox_ug:n {提\hfill 交\hfill 日\hfill 期}
- & \nju_cover_underline_ug:nn {250pt}{\nju_submit_date}\\
- \end{tabular}
-}
-
-% 封面信息栏 研究生
-\tl_new:N \nju_printcoverinfo_g
-\tl_set:Nn \nju_printcoverinfo_g {
- \begin{tabular}{p{6em}c}
- % 标题换行
- \int_case:nn {\nju_titlelength}
- {
- { 1 } {
- \nju_coverbox_g:n {论\hfill 文\hfill 题\hfill 目}
- & \nju_cover_underline_g:n {\nju_title_a} \\ }
- { 2 } {
- \nju_coverbox_g:n {论\hfill 文\hfill 题\hfill 目}
- & \nju_cover_underline_g:n {\nju_title_a} \\
- & \nju_cover_underline_g:n {\nju_title_b} \\ }
- { 3 } {
- \nju_coverbox_g:n {论\hfill 文\hfill 题\hfill 目}
- & \nju_cover_underline_g:n {\nju_title_a} \\
- & \nju_cover_underline_g:n {\nju_title_b} \\
- & \nju_cover_underline_g:n {\nju_title_c} \\}
- }
-
- \nju_coverbox_g:n {作\hfill 者\hfill 姓\hfill 名}
- & \nju_cover_underline_g:n {\nju_student_name}\\
- \nju_coverbox_g:n {专\hfill 业\hfill 名\hfill 称}
- & \nju_cover_underline_g:n {\nju_major}\\
- \nju_coverbox_g:n {研\hfill 究\hfill 方\hfill 向}
- & \nju_cover_underline_g:n {\nju_field}\\
- \nju_coverbox_g:n {指\hfill 导\hfill 教\hfill 师}
- & \nju_cover_underline_g:n {\nju_mentor_full}\\
- \end{tabular}
-}
-
-% 绘制封面命令
-\tl_new:N \nju_printcover_ug % 本科封面
-\tl_new:N \nju_printcover_g % 研究生封面
-
-% 本科封面
-\tl_set:Nn \nju_printcover_ug {
- \thispagestyle{empty}
- \pagenumbering{Roman}
- % Start
- \pdfbookmark{封面}{封面} % 将封面插入pdf书签
- \begin{spacing}{1.25}
- \vskip 0mm
- \hspace{-10mm}
- \includegraphics[height=3cm]{njulogo}\smallskip
- \begin{center}
- \includegraphics[height=3.35cm]{njuname}
- \vskip 10mm
- {\zihao{1}\makebox[9em][s]{\bf{\songti\nju_type_name}}}
- \vfill
- \vskip\stretch{0}
- {\bgroup
- \kaishu\zihao{3}
- \def\tabcolsep{1pt}
- \def\arraystretch{1.5}
- \nju_printcoverinfo_ug % 绘制信息框
- \egroup}
- \vfill
- \end{center}
- \end{spacing}
- \cleardoublepage
- \vfill
- % \newpage
-}
-
-% 研究生封面
-\tl_set:Nn \nju_printcover_g {
- \thispagestyle{empty}
- \pagenumbering{Roman}
- % Start
- \pdfbookmark{封面}{封面} % 将封面插入pdf书签
- \begin{spacing}{1.25}
- \begin{center}
- \hspace{0pt} \vskip 5mm
- \includegraphics[height=1.9cm]{njulogo}
- \vskip 10mm
- \includegraphics[height=1.9cm]{njuname-large}
- \vskip 15mm
- {\zihao{1}\makebox[10em][s]{\bf{\kaishu\nju_type_name}}}
- \vskip 5mm
- {\zihao{1}\bf{\kaishu{(申请\nju_degree_title 学位)}}}
- \par\vfill
- \vskip\stretch{0}
- {\bgroup
- \bf\kaishu\zihao{3}
- \def\tabcolsep{1pt}
- \def\arraystretch{1.5}
- \vskip 10mm
- \nju_printcoverinfo_g % 绘制信息框
- \egroup}
- \vfill
- \vskip 10mm
- \bf\kaishu\zihao{4}\nju_submit_date
- \vskip 15mm
- \end{center}
- \end{spacing}
-
- \newpage % 封面背面
- \thispagestyle{empty}
- \begin{spacing}{1.625}
- % TODO: 等待调整格式
- \hspace{0pt} \vfill
- {\bgroup
- \bf\kaishu\zihao{3}
- \makebox[6em][s]{学\hfill 号}:\nju_student_id
- \par
- \makebox[6em][s]{论文答辩日期}:\nju_defense_date
- \par
- \makebox[6em][s]{指\hfill 导\hfill 教\hfill 师}:\hspace{50mm}(签字)
- \par
- \egroup}
- \vskip 15mm
- \end{spacing}
- \cleardoublepage
-}
-
-% 重定义maketitle生成封面
-\RenewDocumentCommand \maketitle {} {%
- \str_if_eq:eeTF {\nju_degree} { ug }
- { \nju_printcover_ug } % 本科封面
- { \nju_printcover_g } % 研究生封面
-}
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/font.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/font.sty
deleted file mode 100644
index d939fb4842f..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/font.sty
+++ /dev/null
@@ -1,219 +0,0 @@
-\ProvidesExplPackage{profile/font}{2021-09-11}{0.7.0}{NJU Thesis font configuration}
-
-% \RequireXeTeX
-% \RequireLuaTeX
-
-% 设置西文字体
-\NewDocumentCommand\set_latin_fontset_windows{}{
- \setmainfont{Times~New~Roman}
- \setsansfont{Arial}
- \setmonofont{Courier~New}[Scale=MatchLowercase]
-}
-
-\NewDocumentCommand\set_latin_fontset_macos{}{
- \setmainfont{Times~New~Roman}
- \setsansfont{Arial}
- \setmonofont{Menlo}[Scale=MatchLowercase]
-}
-
-\NewDocumentCommand\set_latin_fontset_gyre{}{
- \setmainfont{texgyretermes}[
- Extension=.otf,
- UprightFont=*-regular,
- BoldFont=*-bold,
- ItalicFont=*-italic,
- BoldItalicFont=*-bolditalic]
- \setsansfont{texgyreheros}[
- Extension=.otf,
- UprightFont=*-regular,
- BoldFont=*-bold,
- ItalicFont=*-italic,
- BoldItalicFont=*-bolditalic]
- \setmonofont{texgyrecursor}[
- Extension=.otf,
- UprightFont=*-regular,
- BoldFont=*-bold,
- ItalicFont=*-italic,
- BoldItalicFont=*-bolditalic,
- Scale=MatchLowercase,
- Ligatures=CommonOff]
-}
-
-% 设置中文字体
-\NewDocumentCommand\set_chinese_fontset_windows{}{
- \setCJKmainfont{SimSun}[
- AutoFakeBold=2.17,
- ItalicFont=KaiTi]
- \setCJKsansfont{SimHei}
- \setCJKmonofont{FangSong}
- \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold=2.17]
- \setCJKfamilyfont{zhhei}{SimHei}
- \setCJKfamilyfont{zhfs}{FangSong}
- \setCJKfamilyfont{zhkai}{KaiTi}[AutoFakeBold=2.17]
- \setCJKfamilyfont{zhnewhei}{Microsoft~YaHei}[BoldFont=Microsoft~YaHei~Bold]
-}
-
-\NewDocumentCommand\set_chinese_fontset_macos{}{
- \msg_redirect_name:nnn {fontspec} {no-script} {info} % 移除 does not contain script "CJK" 警告
- \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}
-}
-
-\NewDocumentCommand\set_chinese_fontset_fandol{}{
- \msg_redirect_name:nnn {fontspec} {no-script} {info} % 移除 does not contain script "CJK" 警告
- \setCJKmainfont{FandolSong-Regular}[
- Extension=.otf,
- BoldFont=FandolSong-Bold,
- ItalicFont=FandolKai-Regular]
- \setCJKsansfont{FandolHei-Regular}[
- Extension=.otf,
- BoldFont=FandolHei-Bold]
- \setCJKmonofont{FandolFang-Regular}[Extension=.otf]
- \setCJKfamilyfont{zhsong}{FandolSong-Regular}[
- Extension=.otf,
- BoldFont=FandolSong-Bold]
- \setCJKfamilyfont{zhhei}{FandolHei-Regular}[
- Extension=.otf,
- BoldFont=FandolHei-Bold]
- \setCJKfamilyfont{zhfs}{FandolFang-Regular}[Extension=.otf]
- \setCJKfamilyfont{zhkai}{FandolKai-Regular}[
- Extension=.otf,
- AutoFakeBold=2.17]
-}
-
-% 方正字符集
-\NewDocumentCommand\set_chinese_fontset_founder{}{
- % FZSSK 方正书宋(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/151 免费商用
- % FZXBSK 方正小标宋(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/164 设计师非商免费
- % FZKTK 方正楷体(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/137 免费商用
- \setCJKmainfont{FZSSK}[
- Extension=.ttf,
- BoldFont=FZXBSK,
- ItalicFont=FZKTK]
- % FZXH1K 方正细黑一(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/161 设计师非商免费
- % FZHTK 方正黑体(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/131 免费商用
- \setCJKsansfont{FZXH1K}[
- Extension=.ttf,
- BoldFont=FZHTK]
- % FZFSK 方正仿宋(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/128
- \setCJKmonofont{FZFSK}[Extension=.ttf]
-
- \setCJKfamilyfont{zhsong}{FZSSK}[
- Extension=.ttf,
- BoldFont=FZXBSK]
- \setCJKfamilyfont{zhhei}{FZHTK}[
- Extension=.ttf,
- AutoFakeBold=2.17]
- \setCJKfamilyfont{zhfs}{FZFSK}[Extension=.ttf]
- \setCJKfamilyfont{zhkai}{FZKTK}[Extension=.ttf]
- % FZYouHK_508R 方正悠黑508R(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/244 设计师非商免费
- % FZYouHK_511M 方正悠黑511M(简繁扩展) http://www.foundertype.com/index.php/FontInfo/index/id/244 设计师非商免费
- \setCJKfamilyfont{zhnewhei}{FZYouHK_508R}[
- Extension=.ttf,
- BoldFont=FZYouHK_511M]
-}
-
-\NewDocumentCommand\set_chinese_fontset_noto{}{
- % 思源宋体 https://www.google.com/get/noto/#serif-hans
- \setCJKmainfont[
- UprightFont=NotoSerifCJKsc-Regular,
- BoldFont=NotoSerifCJKsc-Bold,
- ItalicFont=NotoSerifCJKsc-Regular,
- BoldItalicFont=NotoSerifCJKsc-Bold,
- ItalicFeatures=FakeSlant,
- BoldItalicFeatures=FakeSlant]{Noto~Serif~CJK~SC}
-
- % 思源黑体 https://www.google.com/get/noto/#sans-hans
- \setCJKsansfont[
- UprightFont=NotoSansCJKsc-Regular,
- BoldFont=NotoSansCJKsc-Bold,
- ItalicFont=NotoSansCJKsc-Regular,
- BoldItalicFont=NotoSansCJKsc-Bold,
- ItalicFeatures=FakeSlant,
- BoldItalicFeatures=FakeSlant]{Noto~Sans~CJK~SC}
-
- % 包含于上述思源黑体
- \setCJKmonofont[
- UprightFont=NotoSansMonoCJKsc-Regular,
- BoldFont=NotoSansMonoCJKsc-Bold,
- ItalicFont=NotoSansMonoCJKsc-Regular,
- BoldItalicFont=NotoSansMonoCJKsc-Bold,
- ItalicFeatures=FakeSlant,
- BoldItalicFeatures=FakeSlant]{Noto~Sans~Mono~SC}
-
- \setCJKfamilyfont{zhsong}{Noto~Serif~CJK~SC}
- \setCJKfamilyfont{zhhei}{Noto~Sans~CJK~SC}
-
- % 方正楷体、方正仿宋为免费商用字体,且支持CJK字符集
- % 方正仿宋 http://www.foundertype.com/index.php/FontInfo/index/id/128.html
- % 方正楷体 http://www.foundertype.com/index.php/FontInfo/index/id/137.html
- \setCJKfamilyfont{zhfs}{方正仿宋简体}[AutoFakeBold=2.17]
- \setCJKfamilyfont{zhkai}{方正楷体简体}[AutoFakeBold=2.17]
-}
-
-% 字体判断
-\bool_if:NTF \nju_systemfont
-% 根据操作系统自动选择相应字体
-{
- % 检测是否是 Windows
- \sys_if_platform_windows:TF
- {
- \set_latin_fontset_windows
- \set_chinese_fontset_windows
- }
- {
- % 检测是否是 macOS
- \ctex_if_platform_macos:TF
- {
- \set_latin_fontset_macos
- \set_chinese_fontset_macos
- }
- % 其余系统一律使用自由字体
- {
- \set_latin_fontset_gyre
- \set_chinese_fontset_fandol
- }
- }
-}
-{
- % 如果用户需要自定义字体
- % 此处需要使用\str_case_e而不是\str_case使宏展开为字符串
- \str_case_e:nn { \nju_customlatinfont }
- {
- { windows } { \set_latin_fontset_windows }
- { macos } { \set_latin_fontset_macos }
- { gyre } { \set_latin_fontset_gyre }
- { null } {}
- }
- \str_case_e:nn { \nju_customchinesefont }
- {
- { windows } { \set_chinese_fontset_windows }
- { macos } { \set_chinese_fontset_macos }
- { gyre } { \set_chinese_fontset_gyre }
- { founder } { \set_chinese_fontset_founder }
- { noto } { \set_chinese_fontset_noto }
- { null } {}
- }
-}
-% 选择其他字体,请确保相应字体已安装
-
-% 设置数学字体 (XITS, 或者 STIX, 与 Times New Roman 最为相近)
-% \setmathfont{STIXTwoMath-Regular}[Extension = .otf]
-\setmathfont{XITSMath-Regular}[
- BoldFont = XITSMath-Bold,
- Extension = .otf]
-
-\NewDocumentCommand\songti{}{\CJKfamily{zhsong}}
-\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}}
-\NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}}
-\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}}
-% \NewDocumentCommand\lishu{}{\CJKfamily{zhli}}
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/packages.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/packages.sty
deleted file mode 100644
index 029488b7870..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/packages.sty
+++ /dev/null
@@ -1,71 +0,0 @@
-\ProvidesExplPackage{profile/packages}{2021-09-11}{0.6.0}{NJU Thesis packages used}
-
-\RequirePackage{expl3}
-\RequirePackage{ifxetex}
-\RequirePackage{fontspec}
-\RequirePackage[
- top=2.5cm,
- bottom=2.5cm,
- left=3.2cm,
- right=3.2cm
-]{geometry}
-\RequirePackage{ifthen}
-\RequirePackage{xparse}
-% \RequirePackage{etoolbox}
-\RequirePackage{titlesec} % 修改章节标题功能由CTeX提供
-\RequirePackage{titletoc}
-% \RequirePackage{appendix} % 定义附录样式
-\RequirePackage{fancyhdr} % 调整页眉页脚
-\RequirePackage[hyphens]{url} % generate better linebreaks in the url
-% \RequirePackage[normalem]{ulem} % 绘制下划线
-% \RequirePackage{soul} % 用不起来
-% \RequirePackage{soulutf8}
-\RequirePackage{dashundergaps}
-\RequirePackage{setspace}
-\RequirePackage{lastpage}
-\RequirePackage{emptypage} % 清除空白页的页码
-\RequirePackage{listings} % 代码环境
-\RequirePackage{enumitem} % 用于修改列表环境
-\RequirePackage{caption}
-\RequirePackage{floatrow} % 用于图表等页面元素的定位
-\RequirePackage{booktabs} % 用于绘制三线表
-\RequirePackage{multirow} % Cells occupying multiple rows in tables
-\RequirePackage{multicol} % Multiple columns in dictionary
-\RequirePackage{siunitx} % 用于书写单位符号
-\RequirePackage[version=4]{mhchem} % 用于绘制分子式
-\RequirePackage{hologo} % 用于生成可以被插入书签的LaTeX logo
-% \RequirePackage{needspace} % Required to prevent page break right after a sectioning command
-% \RequirePackage{xspace} % Better print trailing whitespace
-\sys_if_engine_xetex:T{
- \RequirePackage{microtype}}
-% \sys_if_engine_luatex:T{
-% \RequirePackage{emoji}
-% \setemojifont{Segoe UI Emoji} % For windows.
-% % Shipped with the best `grinning-face-with-sweat' support.
-% % Use `Apple Color Emoji' for macos
-% % or `Noto Color Emoji' if you prefer.
-% }
-
-\RequirePackage{blindtext} % 生成用于测试的大段无意义英文文字
-\RequirePackage{zhlipsum} % 生成用于测试的大段无意义中文文字
-% \RequirePackage{showframe} % 加载以后展示内容边界
-
-\RequirePackage{amsmath} % Must be loaded before unicode-math
-\RequirePackage{amsthm} % Mathematical environments
-\RequirePackage{mathtools} % Mathematical tools to use with amsmath
-\RequirePackage{thmtools} % Theorem styles
-\RequirePackage[
- warnings-off={% 消除与mathtools合用产生的警告
- mathtools-colon,
- mathtools-overbracket}
- ]{unicode-math} % Math fonts in xetex or luatex
-
-\RequirePackage{graphicx}
-\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
-\graphicspath{{figure/}} % 图片路径
-\RequirePackage{wrapfig} % Wrap text around figures
-
-% 必须以该顺序加载以下三个包
-% \RequirePackage{varioref}
-\RequirePackage[hidelinks,bookmarksnumbered=true]{hyperref}
-\RequirePackage[capitalise,nameinlink,noabbrev]{cleveref}
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/page.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/page.sty
deleted file mode 100644
index e926fa73ea4..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/page.sty
+++ /dev/null
@@ -1,54 +0,0 @@
-\ProvidesExplPackage{profile/page}{2021-09-11}{0.6.0}{NJU Thesis page layout}
-
-% 论文页码 页脚居中、五号阿拉伯数字(新罗马体)连续编码
-\fancypagestyle{njuplain}{%
- \fancyhead{}
- \fancyfoot[C]{\zihao{5}\thepage}
-}
-% the header line
-\tl_set:Nn \headrulewidth {0pt}
-% the footer line
-\tl_set:Nn \footrulewidth {0pt}
-
-\AtBeginDocument{\pagestyle{njuplain}} % 无页眉页脚
-
-% ctex格式设置
-% 目录标题 三号宋体加粗
-% 各部分标题 四号黑体
-\ctexset{
- contentsname = \songti\bfseries\zihao{3}目\hspace{2em} 录,
- chapter/format = \zihao{4}\heiti\centering,
- section/format = \zihao{4}\heiti\raggedright,
- subsection/format = \zihao{4}\heiti\raggedright,
- subsubsection/format = \zihao{4}\heiti\raggedright
-}
-
-% 重定义目录中章节标题样式
-% 目录内容中章的标题 四号黑体
-% 目录中其他内容 小四号宋体
-\titlecontents{chapter}% 标题级别
- [5em]% 标题左间距
- {\heiti\zihao{4}\vspace{10pt}}% 标题格式
- {\contentslabel{4em}}% 标题标志
- {\hspace*{-4em}}% 无序号标题
- {~\titlerule*[0.6pc]{$.$}~\contentspage}% 指引线与页码
-
-\titlecontents{section}
- [5em]
- {\zihao{-4}\vspace{0pt}}
- {\contentslabel{2.5em}}
- {\hspace*{-4em}}
- {~\titlerule*[0.6pc]{$.$}~\contentspage}
-
-\titlecontents{subsection}
- [8em]
- {\zihao{-4}\vspace{0pt}}
- {\contentslabel{3em}}
- {\hspace*{-4em}}
- {~\titlerule*[0.6pc]{$.$}~\contentspage}
-
-% 将目录页插入pdf书签
-\let\savedtableofcontents\tableofcontents
-\renewcommand{\tableofcontents}{%
- \pdfbookmark{目录}{目录}
- \savedtableofcontents}
diff --git a/Master/texmf-dist/doc/latex/njuthesis/profile/reference.sty b/Master/texmf-dist/doc/latex/njuthesis/profile/reference.sty
deleted file mode 100644
index 4087f9f5616..00000000000
--- a/Master/texmf-dist/doc/latex/njuthesis/profile/reference.sty
+++ /dev/null
@@ -1,68 +0,0 @@
-\ProvidesExplPackage{profile/reference}{2021-09-11}{0.6.0}{NJU Thesis bibliography and reference}
-
-% biblatex设置
-\RequirePackage[
- style=gb7714-2015,
- %style=numeric-comp,
- %citestyle=authortitle-icomp,
- % citestyle=numeric-comp,
- %bibstyle=authoryear,
- % bibstyle=numeric,
- sorting=none,
- %sorting=nyt,
- %sortcites=true,
- %autocite=footnote,
- backend=biber, % Compile the bibliography with biber
- hyperref=true,
- backref=false,
- citecounter=true,
- pagetracker=true,
- citetracker=true,
- ibidtracker=context,
- autopunct=true,
- autocite=plain,
- % gbpub=false, % Uncomment if you do NOT want '[S.l. : s.n.]' in reference entries, GitHub Issue (#47)
- % gbnamefmt=lowercase, % Uncomment if you do NOT want uppercase author names in reference entries, GitHub Issue (#23)
-]{biblatex}
-
-% Remove some unwanted entries from the bibliography
-\AtEveryBibitem{
- \clearfield{abstract}
- \clearfield{issn}
- \clearfield{isbn}
- \clearfield{archivePrefix}
- \clearfield{arxivId}
- \clearfield{pmid}
- \clearfield{eprint}
- \ifentrytype{online}{}{\ifentrytype{misc}{}{\clearfield{url}}}
- % \ifentrytype{book}{\clearfield{doi}}{}
-}
-
-% 修改标签名称
-\crefdefaultlabelformat{#2#1#3\,} % 默认在名称后面添加空格
-
-\crefname{figure}{图}{图}
-\crefname{table}{表}{表}
-% \crefname{equation}{公式}{公式}
-\crefformat{equation}{公式~#2#1#3~} % 删除公式编号的括号
-
-\crefformat{chapter}{第#2#1#3章}
-\crefformat{section}{第~#2#1#3~节}
-\crefformat{subsection}{第~#2#1#3~小节}
-\crefformat{subsubsection}{第~#2#1#3~小节}
-% \crefname{chapter}{§}{§}
-% \crefname{section}{§}{§}
-% \crefname{subsection}{§}{§}
-% \crefname{subsubsection}{§}{§}
-\crefname{appendix}{附录}{附录}
-
-% \crefname{definition}{定义}{定义}
-% \crefname{axiom}{公理}{公理}
-% \crefname{property}{性质}{性质}
-% \crefname{proposition}{命题}{命题}
-% \crefname{lemma}{引理}{引理}
-% \crefname{corollary}{推论}{推论}
-% \crefname{remark}{注解}{注解}
-% \crefname{condition}{条件}{条件}
-% \crefname{conclusion}{结论}{结论}
-% \crefname{assumption}{假设}{假设}
diff --git a/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx b/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx
new file mode 100644
index 00000000000..008b7173f74
--- /dev/null
+++ b/Master/texmf-dist/source/latex/njuthesis/njuthesis.dtx
@@ -0,0 +1,2266 @@
+% \iffalse meta-comment
+% !TeX program = XeLaTeX
+% !TeX encoding = UTF-8
+%
+% Copyright (C) 2021
+% by Nanjing University Linux User Group <nju.lug@yaoge123.cn>
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the template can be found at
+%
+% https://github.com/nju-lug/NJUThesis
+%
+% for those people who are interested.
+%
+%<*internal>
+\iffalse
+%</internal>
+%
+%<*readme-zh>
+# NJU Thesis
+
+[![njuthesis](https://img.shields.io/badge/njuthesis-latex-blue)](https://git.nju.edu.cn/nju-lug/nju-latex-templates)
+[![overleaf](https://img.shields.io/badge/overleaf-supported-brightgreen)](https://tex.nju.edu.cn)
+![build status](https://github.com/nju-lug/NJUThesis/actions/workflows/build.yml/badge.svg)
+
+> 此项目是基于[NJU thesis 2021](https://github.com/FengChendian/NJUThesis2021)的重构版本,目前本科生版本**已经基本重构完成**,硕博论文**正在**根据研究生院的文件重构,但研究生院的规定并不完善,因此部分格式可能会参考本科的,**如果院系另有要求,请自行修改或者提交issue**。
+
+原来的[NJU thesis 2021](https://github.com/FengChendian/NJUThesis2021)模板太过古老并且不支持硕士、博士论文,目前难以维护,因此为了模板的可持续发展,现在将对该项目进行重构,项目挂载于[NJU-LUG](https://github.com/nju-lug)组织仓库下,目前已[发布在CTAN](https://ctan.org/pkg/njuthesis)。
+
+相关文档请参见[本项目wiki](https://github.com/nju-lug/NJUThesis/wiki)。
+
+## 快速开始
+
+从0.9.0版以后,本模板以DocStrip(`.dtx`)格式进行维护。常规的`.cls`格式文件可从Releases页面下载或使用以下方法提取。
+
+### 关于DocStrip文件
+
+DocStrip格式合并了LaTeX源代码和说明文档,更有利于宏包的发布。要使用该文件,请在当前工作目录下打开终端:
+
+- 输入`xetex njuthesis.dtx`以提取宏包内容
+- 输入`latexmk njuthesis.dtx`以生成并查看内置的文档
+
+请注意,由于文件重名原因,项目中的示例论文模板已被重命名为`njuthesis-sample.tex`。
+
+### 本地编译
+
+1. [从南大镜像站下载](https://mirror.nju.edu.cn/download/app/TeX%20%E6%8E%92%E7%89%88%E7%B3%BB%E7%BB%9F)并安装TeXLive或者MiKTeX最新版
+2. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包`njuthesis.zip`
+3. 根据需要更改`njuthesis-sample.tex`文件中的内容
+4. 在模板根目录下运行`latexmk`编译文件,得到对应的PDF
+
+#### **关于本地编译**
+
+- 模板支持`latexmk`、`xelatex`、`lualatex`三种编译方式
+- 如果使用`latexmk`,请务必使用完整的命令`latexmk -xelatex`以免产生不必要的问题
+- 如果使用`xelatex`或`lualatex`,需要按照`xelatex/lualatex` -> `biber` -> `xelatex/lualatex` -> `xelatex/lualatex`的顺序编译四次
+- 仓库中`.vscode`附带一份VScode的LaTeX WorkShop的配置文件,可根据需要使用
+
+### [南大TeX](https://tex.nju.edu.cn)编译
+
+1. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包`njuthesis.zip`
+2. 登录[南大TeX](https://tex.nju.edu.cn),点击New Project -> Upload Project上传刚刚得到的压缩包,上传后`njuthesis-sample.tex`、`njuthesis.cls`等文件应在根目录,0.9.0以后的目录结构如下所示:
+
+ ```shell
+ NJUThesis-master/
+ │
+ ├─figure/
+ │ njulogo.pdf
+ │ njuname.pdf
+ │
+ │ njuthesis.bib
+ │ njuthesis.cls
+ │ njuthesis-sample.tex
+ ```
+
+3. 在南大TeX项目内页面左上角的`Menu`中,将编译器改为`XeLaTeX`
+4. 编写TeX文档
+
+### 其他
+
+更多内容请参见项目Wiki中的[使用说明](https://github.com/nju-lug/NJUThesis/wiki/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)。
+
+你也可以下载[Release](https://github.com/nju-lug/NJUThesis/releases/latest)中附带的`njuthesis.pdf`,里面详尽阐述了模板的特性和使用方法。
+
+## 常见问题
+
+请参见[常见问题](https://github.com/nju-lug/NJUThesis/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。
+
+## 贡献
+
+如果你发现了模板的问题,欢迎在Github中[提交issue](https://github.com/nju-lug/NJUThesis/issues)或者PR。
+
+## 许可
+
+本模板的发布遵守 LaTeX Project Public License(版本 1.3c 或更高)。
+
+%</readme-zh>
+%
+%<*readme-en>
+# The njuthesis class
+
+## Overview
+
+This package is intended for typesetting Nanjing University thesis with LaTeX, providing support for bachelor, master, and doctoral thesis. Compilation of this class requires either `xelatex` or `lualatex` engine.
+
+## License
+
+-----
+ This work may be distributed and/or modified under the conditions of
+ the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+ either version 1.3c of this license or (at your option) any later
+ version.
+-----
+
+## Contributing
+
+If you run into any problem with the template, please contact us via Github issue or submit Pull Request.
+
+## Wiki
+
+Please see [Chinese wiki](https://github.com/nju-lug/NJUThesis/wiki)。
+
+-----
+
+Copyright © NJU-LUG
+%</readme-en>
+%
+%<*internal>
+\fi
+\begingroup
+ \def\NameOfLaTeXe{LaTeX2e}
+\expandafter\endgroup\ifx\NameOfLaTeXe\fmtname\else
+\csname fi\endcsname
+%</internal>
+%
+%<*install>
+\input l3docstrip.tex
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 2021
+by Nanjing University Linux User Group <nju.lug@yaoge123.cn>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+ 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.
+
+To produce the documentation run the original source files ending with `.dtx'
+through XeTeX.
+
+\endpreamble
+
+\generate{
+ \usedir{tex/latex/njuthesis}
+ \file{\jobname.cls} {\from{\jobname.dtx}{class}}
+%</install>
+%<*internal>
+ \usedir{source/latex/njuthesis}
+ \file{\jobname.ins} {\from{\jobname.dtx}{install}}
+%</internal>
+%<*install>
+ \usedir{doc/latex/njuthesis}
+ \nopreamble\nopostamble
+ \file{README_EN.md} {\from{\jobname.dtx}{readme-en}}
+ \file{README.md} {\from{\jobname.dtx}{readme-zh}}
+}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* files into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* The recommended directory is TDS:tex/latex/njuthesis *}
+\Msg{* *}
+\Msg{* njuthesis.cls *}
+\Msg{* njuthesis.ins *}
+\Msg{* README.md *}
+\Msg{* README_EN.md *}
+\Msg{* *}
+\Msg{* To produce the documentation, run the file njuthesis.dtx *}
+\Msg{* through XeLaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
+%</install>
+%
+%<*internal>
+\fi
+%</internal>
+%
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<class>\RequirePackage{expl3}
+%<!(readme-zh|readme-en)> \GetIdInfo $Id: njuthesis.dtx 0.9.2 2021-09-17 22:00:00 +0800 NJU LUG <nju.lug@yaoge123.cn> $
+%<class> {Thesis template for Nanjing University}
+%<class>\ProvidesExplClass{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
+%
+%<*driver>
+\ProvidesFile{njuthesis.dtx}
+\documentclass{ctxdoc}
+\usepackage{listings,xcolor}
+\definecolor{njuviolet}{cmyk}{0.5,1,0,0.4}
+\definecolor{njumagenta}{cmyk}{0.05,1,0.55,0}
+\definecolor{njublue}{cmyk}{0.8,0.5,0,0}
+\definecolor{njuyellow}{cmyk}{0,0.3,1,0}
+\begin{document}
+ \DocInput{njuthesis.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{\color{njuviolet}{The \textsc{NJuThesis} class\\ 南京大学学位论文模板}}
+%
+% \author{^^A
+% Nanjing University Linux User Group
+% \thanks{E-mail: \href{mailto:nju.lug@yaoge123.cn}{nju.lug@yaoge123.cn}}}
+%
+% \date{v0.9.2 \\ Released 2021-09-17}
+%
+% \maketitle
+%
+% \begin{abstract}
+% 南京大学学位论文\hologo{LaTeX}模板基于本科生院的论文撰写规范制作,同时参考研究生院提供的硕士、博士学位材料包,用于生成符合南京大学学位论文排版要求和相应的国家规范、行业标准的学位论文,旨在为同学提供毕业论文书写的方便。
+% \end{abstract}
+%
+% \def\abstractname{Abstract}
+% \begin{abstract}
+% The \textsc{NJuThesis} class is intended for typesetting Nanjing University thesis with LaTeX, providing support for bachelor, master, and doctoral thesis.
+% \end{abstract}
+%
+% \def\abstractname{特别声明}
+% \begin{abstract}
+% 请注意,本模板仍未完成开发,出现bug或者文档不完善属于正常情况,提issue或Pull Request即可。
+%
+% \href{https://git.nju.edu.cn/nju-lug/lug-introduction}{NJU LUG}始终欢迎您的加入与贡献!
+% \end{abstract}
+%
+% \clearpage
+%
+% \setcounter{tocdepth}{4}
+% \tableofcontents
+% \clearpage
+%
+% \EnableDocumentation
+%^^A \DisableDocumentation
+%
+% \begin{documentation}
+%
+%
+% \section{模板介绍}
+% \textsc{NJuThesis},即南京大学学位论文模板,是一个由南京大学LUG组织维护的,用于处理本校学生毕业论文排版需求的\hologo{LaTeX}模板。
+%
+% \subsection{历史沿革}
+%
+% 十几年来,多位热心校友发布过自己编写的模板,在GitHub上可考的包括
+% \begin{enumerate}
+% \item 杨文博(\href{http://yangwenbo.com/}{@solrex})的\href{https://github.com/solrex/njuthesis}{南京大学学位论文\hologo{LaTeX}模板}(2010)
+% \item \href{https://github.com/fireblue}{@fireblue}基于solrex模板的的\href{https://github.com/fireblue/NJUThesis}{南京大学学位论文\hologo{LaTeX}模板}(2013)
+% \item \href{https://github.com/wenhai-zheng}{@wenhai-zheng}的\href{https://github.com/wenhai-zheng/NJUThesis}{NJUThesis}(2013)
+% \item 胡海星(\href{http://haixing-hu.github.io/}{@Haixing-Hu})的\href{https://github.com/Haixing-Hu/nju-thesis}{NJU-Thesis}(2013 - 2018)
+% \item 张楚珩(\href{https://github.com/zhangchuheng123}{@zhangchuheng123})基于胡海星模板的\href{https://github.com/zhangchuheng123/NJUThesis}{NJUThesis}(2016)
+% \item 蒋炎岩(\href{http://ics.nju.edu.cn/~jyy/}{@jiangyy})的\href{https://github.com/jiangyy/njuthesis}{南京大学山寨\hologo{LyX}研究生毕业论文模板}(2017)
+% \item 饶安逸(\href{https://anyirao.com/}{@AnyiRao})基于胡海星模板的\href{https://github.com/jiangyy/njuthesis}{NJU-Thesis}(2018)
+% \item \href{https://github.com/njuHan}{@njuHan}基于胡海星模板的\href{https://github.com/njuHan/njuthesis-nju-thesis-template/}{NJU-Thesis}(2018 - 2021)
+% \item 赵懿晨(\href{https://fengchendian.github.io/about.html}{@FengChendian})基于AnyiRao模板的\href{https://github.com/FengChendian/NJUThesis2021}{NJU Thesis 2021}(2021)
+% \end{enumerate}
+% 至于不幸而未进行代码版本管理的,甚至于说以压缩包形式流传于各人硬盘中的,就更不可计数了。
+%
+% 与其让一千个学生做一千种不同的模板,不如有人牵起头来,集中力量办大事。因此,南京大学 Linux User Group 的有志之士在2021年暑期联合起来,参考以上的现成模板,兼顾友校thuthesis、fduthesis等优秀项目,构建了这一全新模板,力求通过\hologo{LaTeX3}语法和清淅的接口实现良好的易用性和可维护性。
+%
+% 目前,本模板的主要维护者包括:
+%
+% \begin{itemize}
+% \item 赵懿晨
+% \item 熊煜
+% \end{itemize}
+%
+% \subsection{君\hologo{LaTeX}本当上手}
+% \hologo{LaTeX}并不是一种零门槛的语言,亦不是南京大学学生的必备技能。有同学听到“\emph{给毕业论文交差也得写代码}”这种事情就头疼,实在是我们不愿意见到而必须要面对的情况。目前,中文互联网上的\hologo{LaTeX}写作教程不能说屈指可数,起码也是汗牛充栋,比较著名的包括刘海洋的《\hologo{LaTeX}入门》等等都是不错的参考资料。然而如何快速准确找到所需要的用法,尤其是\hologo{LaTeX3}的新接口,需要一定的时间或者良好的英文阅读能力。在本文档的写作中,我们无力从盘古开天辟地开始从头构建您的相关知识体系,只能\textbf{尽力做到有求必应},在需要的地方顺带提一嘴,保证您少走点弯路。
+%
+% \subsection{关于本说明手册}
+%
+% 本模板通过\textsc{DocStrip}进行维护,实际上是一种\emph{文学编程}。文学编程的本体是那些用来说明的文字,按写书写文章的方式组织。
+% \file{njuthesis.dtx}包含njuthesis模板的所有信息。前半部分为模板说明,即各种常用命令与必要的使用方法;后半部分为代码实现,为带有详细注释的\hologo{TeX}源代码。后者配合附录,为有意了解本模板细节的同学提供简明的指引。
+%
+% 下文中将出现若干特殊格式,包括\file{file-example.xxx}等。
+%
+% 如果您在使用最新版模板时发现了任何问题,抑或有意向参与本模板的维护,请通过GitHub issue或者QQ群聊联系LUG。
+%
+% \section{安装}
+% \label{sec:setup}
+%
+% 本节主要介绍本宏包的获取、安装以及编译方式
+% \subsection{下载模板}
+%
+% 本宏包已经发布在CTAN,将在明年进入\hologo{TeX}\,Live 2022 发行版。然而CTAN版更新不及时,更推荐使用以下方式下载。
+%
+% 从本模板的Github Releases页面下载最新的发布版
+%
+% 从本模板的Github仓库下载最新的dtx文件自行安装
+%
+% \subsection{本地编译}
+%
+% \subsubsection{安装\hologo{TeX}发行版}
+%
+% 首先需要下载\hologo{TeX}软件发行版,校园网环境中使用\href{https://mirror.nju.edu.cn/download/app/TeX%20%E6%8E%92%E7%89%88%E7%B3%BB%E7%BB%9F}{南大镜像站}可以获得最好的体验。\textbf{推荐使用最新的\hologo{TeX}\,Live 2021或者\hologo{MiKTeX} 21以避免潜在的兼容性问题。}
+%
+% \begin{itemize}
+% \item 为了避免不必要的麻烦,请尽可能下载 full 版本,如 texlive-full。简而言之,下载大的那个。
+% \item 并且,尽可能使用最新版(截至目前是 2021)。2020 及之前版本使用 PDF 格式的图片可能会出现加粗问题。
+% \end{itemize}
+%
+% 下表是目前经过测试的环境。如果有其他可用不可用的环境,欢迎补充。
+% \begin{table}[ht]
+% \centering
+% \caption{经过测试的环境}
+% % \label{tab:1}
+% \begin{tabular}{ccc}
+% \toprule
+% OS & TeX & 测试情况 \\
+% \midrule
+% Windows 10 & \hologo{TeX}\,Live 2020 & cref存在格式问题 \\
+% Windows 10 & \hologo{TeX}\,Live 2021 & 通过 \\
+% Windows 10 & \hologo{MiKTeX} & 通过 \\
+% macOS 10.15 & mac\hologo{TeX} 2021 & 通过 \\
+% Ubuntu 20.04 & \hologo{TeX}\,Live 2021 & 通过 \\
+% Arch Linux & \hologo{TeX}\,Live 2021 & 通过 \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \subsubsection{选择编辑器}
+%
+% 配置完编译器后,还需要一个\textbf{文本编辑器}作为前端来完成\texttt{.tex}文件内容的写作。
+%
+% 至今仍有相当一部分人认为Windows自带的\textit{记事本}是最好的文本编辑器,但对于本项目而言,在此诚心诚意地推荐你使用\textbf{更现代更美观更多功能}的编辑器,譬如\emph{安装了 LaTeX Workshop 插件 的 \href{https://code.visualstudio.com/}{Visual Studio Code}},来完成论文编写。你也可以根据个人的喜好随便使用其他编辑器,如 TeXworks、TeX Studio 等,顺手就行。
+%
+% 若使用 LaTeX Workshop 插件,本项目在|.vscode/|中提供一份简易配置,可以省略初始配置步骤直接使用。
+%
+% \subsubsection{编译顺序}
+% 假设即将使用的文件名为\file{mynjuthesis.tex}
+% 应采用以下命令顺序进行编译,以生成正确的目录、编号和参考文献条目。
+% \begin{ctexexam}
+% xelatex mynjuthesis
+% biber mynjuthesis
+% xelatex mynjuthesis
+% xelatex mynjuthesis
+% \end{ctexexam}
+% 使用 \pkg{latexmk}
+% \begin{ctexexam}
+% latexmk -xelatex mynjuthesis
+% \end{ctexexam}
+%
+% \begin{ctexexam}
+% lualatex mynjuthesis
+% biber mynjuthesis
+% lualatex mynjuthesis
+% lualatex mynjuthesis
+% \end{ctexexam}
+% 使用 \pkg{latexmk}
+% \begin{ctexexam}
+% latexmk -lualatex mynjuthesis
+% \end{ctexexam}
+%
+% 编译产物为\file{njuthesis.pdf},位于主目录下。此外还会生成一系列中间文件,可以选择使用以下命令进行清理。
+%
+% \begin{ctexexam}
+% latexmk -c
+% \end{ctexexam}
+%
+% \subsection{在线编译}
+%
+% 相信你在接触了本地编译以后,很快就会意识到一些十分显然的事实,譬如\hologo{TeX}编译器安装过程较为漫长,占用空间过大,而且在一部分处理器性能不佳的电脑上需要较长编译时间\footnote{其实这三点都是对广大的Windows用户说的,同一个模板在Linux编译可以节省一半耗时}。拒绝接受这些麻烦的同学不妨尝试本节介绍的在线编译方法。
+%
+% \subsubsection{南大\hologo{TeX}平台简介}
+%
+% \href{https://tex.nju.edu.cn}{南大\hologo{TeX}}基于开源的ShareLaTeX平台\footnote{理论上在\href{https://doc.nju.edu.cn/books/latex}{这个网站}能找到一段平台简介,实际上大家都有意无意地鸽了,下次一定补上。},于2021年3月4日正式上线,面向南京大学全体师生开放,首次使用需凭学校邮箱自助注册账号。
+%
+% \subsubsection{操作步骤}
+%
+% \begin{enumerate}
+% \item 下载\href{https://github.com/nju-lug/NJUThesisUndergraduate/archive/refs/heads/master.zip}{模板全部文件}
+% \item 访问\href{https://tex.nju.edu.cn}{南大\hologo{TeX}},点击界面右上方Register,使用\emph{南京大学邮箱}注册账号并登录
+% \item 点击New Project -> Upload Project上传刚刚得到的zip文件,上传后njuthesis.tex、njuthesis.cls等文件应在根目录,目录结构如{{sec:directory}}所示
+% \item 在项目页面左上角的Menu中,将编译器改为\hologo{XeLaTeX}或者\hologo{LuaLaTeX}
+% \item 编写论文
+% \item 点击Compile按钮进行编译和预览
+% \item 点击编译按钮右侧第三个按钮下载产物
+% \end{enumerate}
+%
+% \subsubsection{关于Overleaf平台}
+%
+% 由于\href{https://www.overleaf.com/}{Overleaf平台}的\hologo{TeX}\,Live版本停留在2020,\texttt{cleveref}包在引用章节时会生成错误的标签,引发格式错误;而南大\hologo{TeX}通过及时更新规避了这一问题。因此\emph{请务必不要使用Overleaf官网进行编译}。
+%
+%
+%
+% \section{使用方法}
+%
+% \subsection{自定义选项}
+%
+% 尖括号内列出了若干个允许的选项,其中加粗的为默认选项。
+%
+% 封面标题留空即可自动化换行
+%
+% 第二导师不填则留空,目前来说拥有两位指导老师并不是一种普遍状况。
+%
+% \begin{function}[added=2021-09-07]{nlcover}
+% \begin{syntax}
+% nlcover = <\TTF>
+% \end{syntax}
+%
+% 通过此项可选择是否添加国家图书馆封面,本选项仅对于研究生有效
+% \end{function}
+%
+%
+% \subsubsection{学位信息}
+% \begin{function}[added=2021-09-07]{degree}
+% \begin{syntax}
+% degree = <(ug)|mg|mf|phd>
+% \end{syntax}
+%
+% 选择学位,可选:
+% \opt{ug}(默认本科),\opt{mg}即学术硕士,\opt{mf},\opt{phd}。
+% \end{function}
+%
+%
+% \begin{function}[added=2021-09-07]{type}
+% \begin{syntax}
+% type = <(thesis)|design>
+% \end{syntax}
+%
+% 用于选择文档类型并将相关字段输出在封面和摘要页。可选值包括thesis(表示毕业论文)和design(表示毕业设计),缺省值为thesis。
+% \opt{thesis}(默认),\opt{design}。
+% \end{function}
+%
+%
+%
+% \subsubsection{指定字体}
+%
+%
+% 学校论文格式要求使用的字体一般已经预装在各个操作系统,本模板针对不同平台进行了自动检测适配,可以开箱即用。
+%
+% 如果希望更改本模板使用的字体,请填写以下两个选项覆盖检测操作系统得到的设置
+%
+%
+% \begin{function}[added=2021-09-07]{customlatinfont}
+% \begin{syntax}
+% customlatinfont = <(windows)|macos|gyre|null>
+% \end{syntax}
+%
+% 手动指定英文字体,可选:
+% \opt{windows}(默认), \opt{macos}, \opt{gyre}, \opt{null}。
+% \end{function}
+%
+%
+% \begin{function}[added=2021-09-07]{customchinesefont}
+% \begin{syntax}
+% customchinesefont = <(windows)|macos|fandol|founder|noto|null>
+% \end{syntax}
+%
+% 手动指定中文字体,可选:
+% \opt{windows}(默认), \opt{macos}, \opt{fandol}, \opt{founder},\opt{noto},\opt{null}。
+%
+% 方正字体(简繁扩展)系列
+% FZSSK \href{http://www.foundertype.com/index.php/FontInfo/index/id/151}{方正书宋} 免费商用
+%
+% FZXBSK \href{http://www.foundertype.com/index.php/FontInfo/index/id/164}{方正小标宋} 设计师非商免费
+%
+% FZKTK \href{http://www.foundertype.com/index.php/FontInfo/index/id/137}{方正楷体} 免费商用
+%
+% FZXH1K \href{http://www.foundertype.com/index.php/FontInfo/index/id/161}{方正细黑一} 设计师非商免费
+%
+% FZHTK \href{http://www.foundertype.com/index.php/FontInfo/index/id/131}{方正黑体} 免费商用
+%
+% FZFSK \href{http://www.foundertype.com/index.php/FontInfo/index/id/128}{方正仿宋}
+%
+% FZYouHK_508R \href{http://www.foundertype.com/index.php/FontInfo/index/id/244}{方正悠黑508R} 设计师非商免费
+%
+% FZYouHK_511M \href{http://www.foundertype.com/index.php/FontInfo/index/id/244}{方正悠黑511M} 设计师非商免费
+%
+% 思源字体\footnote{思源宋体和思源黑体有两种英文命名,本模板采用Google的noto系列}:
+% \href{https://www.google.com/get/noto/#serif-hans}{思源宋体}、
+% \href{https://www.google.com/get/noto/#sans-hans}{思源黑体}
+%
+%
+%
+% 方正楷体、方正仿宋为免费商用字体,且支持CJK字符集
+% \href{http://www.foundertype.com/index.php/FontInfo/index/id/128.html}{方正仿宋}
+% \href{http://www.foundertype.com/index.php/FontInfo/index/id/137.html}{方正楷体}
+%
+% 各个系统的默认字体请参考。可以看到,不同系统上使用的字体有所差别,实际输出结果可能存在细微不同, 使用时请注意。例如,在Linux平台或者使用了Ubuntu后端的南大\hologo{TeX}上,宋体加粗效果更明显;另一方面,在Windows平台进行编译的效果更接近Word加粗\footnote{因为SimSun没有原生粗体,通过AutoFakeBold=2.17进行模仿},符合视觉习惯。
+%
+% \end{function}
+%
+%
+% \subsection{封面信息}
+%
+% \subsection{输入个人信息}
+%
+% \begin{function}{\njusetup}
+%
+% 定义了用于文档封面的诸多属性参数,
+% 写作时修改相应字符串即可。注意不要有空行,否则可能报错
+%
+% \end{function}
+%
+% 本科生可以参考如下列表输入个人信息。注意不能有空行,有空格的内容需要将空格替换为波浪线或者两端加上大括号
+%
+% \begin{ctexexam}
+% \njusetup {
+% info = {
+% TitleA = 一种使用南京大学\hologo{LaTeX}模版,
+% TitleB = 编写毕业论文的经验性方法,
+% Title* = {An Empirical Way of Composing Thesis with NJU \hologo{LaTeX} Template},
+% Grade = 2018,
+% StudentID = 189114514,
+% StudentName = 周煜华,
+% StudentName* = Zhou~Yuhua,
+% Department = 拉太赫科学与技术学院,
+% Department* = School~of~\hologo{LaTeX},
+% Major = 拉太赫语言学,
+% Major* = \hologo{LaTeX}~Linguistics,
+% SupervisorA = 李成殿,
+% SupervisorA*= Li~Chengdian,
+% SupervisorATitle = 教授,
+% SupervisorATitle* = Professor,
+% SupervisorB = 孙赫弥,
+% SupervisorB* = Sun~Hemi,
+% SupervisorBTitle = 副教授,
+% SupervisorBTitle* = Associate professor,
+% SubmitDate = 2021年8月10日,
+% }
+% }
+% \end{ctexexam}
+%
+% 研究生可以参考如下列表输入个人信息
+%
+% \begin{ctexexam}
+% \njusetup {
+% info = {
+% TitleA = 一种使用南京大学\hologo{LaTeX}模版,
+% TitleB = 编写毕业论文的经验性方法,
+% TitleC = (内容已经过时,详见说明手册),
+% Title* = {An Empirical Way of Composing Thesis with NJU \hologo{LaTeX} Template},
+% Grade = 2018,
+% StudentID = dz18114514,
+% StudentName = 周煜华,
+% StudentName* = Zhou~Yuhua,
+% Department = 拉太赫科学与技术学院,
+% Department* = School~of~\hologo{LaTeX},
+% Major = 拉太赫语言学,
+% Major* = \hologo{LaTeX}~Linguistics,
+% Field = 拉太赫语言在现当代的使用,
+% Field* = Contemporary~Usage~of~the~\hologo{LaTeX}~Language,
+% SupervisorA = 李成殿,
+% SupervisorA*= Li~Chengdian,
+% SupervisorATitle = 教授,
+% SupervisorATitle* = Professor,
+% SubmitDate = 2021年8月10日,
+% SubmitDate* = {Aug 10, 2021},
+% DefendDate = 2021年9月19日,
+% ReviewerChairman = 张晓山~教授,
+% ReviewerA = 王瑞希~教授,
+% ReviewerB = 郭德纲~副教授,
+% ReviewerC = 华芈库~教授,
+% ReviewerD = 戴菲菲~教授,
+% Classification = 0175.2,
+% SecurityLevel = 限制,
+% UDC = 004.72,
+% SupervisorContact = {拉太赫科学与技术学院 枝江市结丘路 19 号 114514},
+% }
+% }
+% \end{ctexexam}
+%
+% \subsection{摘要页}
+%
+% 摘要页一般不插入目录,默认只添加pdf书签。如确实有插入目录的需求,请在\texttt{abstract.sty}文件中定位到如下语句
+%
+% 在使用\hologo{LuaLaTeX}编译时,研究生中文摘要页的标题会出现空格无下划线的问题,目前正在积极寻求解决方法。
+%
+% {前言页}
+% 使用\env{preface}环境定义
+%
+%
+% \subsection{正文格式}
+%
+% 本科生无页眉,页面编号居中位于页脚;研究生无页脚,页眉包括章节名和页面编号。
+%
+%
+% 对中文加下划线请使用xeCJKfntef包的CJKunderline命令代替uline,以解决中文的换行问题
+%
+% {参考文献页}
+%
+% 需要使用biber手动编译才会显示,具体内容参考
+%
+% {致谢页}
+% 同前言,使用\env{acknowledgement}环境
+%
+% {附录页}
+%
+% 附录放在|\appendix|命令后,以英文字母进行编号
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{代码实现}
+% @@在l3docstrip中表示名空间,在生成cls时会被相应字段替换,譬如在njuthesis中@@=nju。
+% 尖括号包裹的|<*class>||</class>|用来指定某段代码属于哪个文件。
+%
+% \begin{macrocode}
+%<@@=nju>
+%<*class>
+\LoadClass[
+ a4paper,
+ twoside,
+ UTF8,
+ scheme=chinese,
+% \end{macrocode}
+%
+% 关于行距,\hologo{LaTeX}默认1.2行距,word默认行距是1.3,要求1.5倍word行距,故
+% \[ 1.5\times\frac{1.3}{1.2} = 1.625\]
+% \begin{macrocode}
+ linespread=1.625,
+ fontset=none,
+ zihao=-4
+ ]{ctexbook}[2018/04/01]
+% \end{macrocode}
+%
+% 宏包\pkg{l3keys2e}用于配置模板选项。
+% \begin{macrocode}
+\RequirePackage{l3keys2e}
+% \end{macrocode}
+% 用于存储学位名称的全局变量,注意宏的命名,l代表局部变量,g代表全局变量
+% \begin{macrocode}
+\tl_new:N \l_@@_info_degree_tl
+\tl_new:N \l_@@_info_type_tl
+% \end{macrocode}
+%
+% 是否需要国家图书馆封面的设置
+% \begin{macrocode}
+\keys_define:nn { nju }
+{
+ nlcover .bool_set:N = \g_@@_nlcover_bool,
+ nlcover .initial:n = false,
+}
+% \end{macrocode}
+%
+% 学位信息的设置
+% \begin{macrocode}
+\keys_define:nn { nju }
+{
+ degree .choices:nn =
+ { ug, mg, mg, phd }
+ { \tl_set_eq:NN \l_@@_info_degree_tl \l_keys_choice_tl },
+ degree .initial:n = ug,
+ type .choices:nn =
+ { thesis, design }
+ { \tl_set_eq:NN \l_@@_info_type_tl \l_keys_choice_tl },
+ type .initial:n = thesis,
+}
+% \end{macrocode}
+%
+% \subsection{个人信息}
+% 输入个人信息的区域。
+% \begin{macrocode}
+\keys_define:nn { nju }
+{
+ info.meta:nn = { nju / info } { #1 }
+}
+% \end{macrocode}
+%
+% 题目
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ TitleA .tl_set:N = \l_@@_info_title_a_tl,
+ TitleB .tl_set:N = \l_@@_info_title_b_tl,
+ TitleC .tl_set:N = \l_@@_info_title_c_tl,
+ Title* .tl_set:N = \l_@@_info_title_en_tl,
+}
+% \end{macrocode}
+%
+% 年级、学号、姓名
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ Grade .tl_set:N = \l_@@_info_grade_tl,
+ StudentID .tl_set:N = \l_@@_info_id_tl,
+ StudentName .tl_set:N = \l_@@_info_author_tl,
+ StudentName* .tl_set:N = \l_@@_info_author_en_tl,
+}
+% \end{macrocode}
+%
+% 院系、专业、方向
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ Department .tl_set:N = \l_@@_info_dept_tl,
+ Department* .tl_set:N = \l_@@_info_dept_en_tl,
+ Major .tl_set:N = \l_@@_major_tl,
+ Major* .tl_set:N = \l_@@_major_en_tl,
+ Field .tl_set:N = \l_@@_field_tl,
+ Field* .tl_set:N = \l_@@_field_en_tl,
+}
+% \end{macrocode}
+%
+% 导师
+%
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ SupervisorA .tl_set:N = \l_@@_info_supv_a_tl,
+ SupervisorA* .tl_set:N = \l_@@_info_supv_a_en_tl,
+ SupervisorATitle .tl_set:N = \l_@@_info_supv_a_title_tl,
+ SupervisorATitle* .tl_set:N = \l_@@_info_supv_a_title_en_tl,
+}
+% \end{macrocode}
+%
+% 第二导师
+%
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ SupervisorB .tl_set:N = \l_@@_info_supv_b_tl,
+ SupervisorB* .tl_set:N = \l_@@_info_supv_b_en_tl,
+ SupervisorBTitle .tl_set:N = \l_@@_info_supv_b_title_tl,
+ SupervisorBTitle* .tl_set:N = \l_@@_info_supv_b_title_en_tl,
+}
+% \end{macrocode}
+%
+% 提交日期
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ SubmitDate .tl_set:N = \l_@@_submit_date_tl,
+ SubmitDate* .tl_set:N = \l_@@_submit_date_en_tl,
+}
+% \end{macrocode}
+%
+% 答辩
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ DefendDate .tl_set:N = \l_@@_defend_date_tl,
+ ReviewerChairman .tl_set:N = \l_@@_info_chairman_tl,
+ ReviewerA .tl_set:N = \l_@@_info_reviewer_a_tl,
+ ReviewerB .tl_set:N = \l_@@_info_reviewer_b_tl,
+ ReviewerC .tl_set:N = \l_@@_info_reviewer_c_tl,
+ ReviewerD .tl_set:N = \l_@@_info_reviewer_d_tl,
+}
+% \end{macrocode}
+%
+% 国家图书馆封面相关
+% \begin{macrocode}
+\keys_define:nn { nju / info }
+{
+ Classification .tl_set:N = \l_@@_info_classif_tl,
+ SecurityLevel .tl_set:N = \l_@@_info_seclv_tl,
+ UDC .tl_set:N = \l_@@_info_udc_tl,
+ SupervisorContact .tl_set:N = \l_@@_info_supv_cont_tl,
+}
+% \end{macrocode}
+% 定义用于设置个人信息的命令
+% \begin{macrocode}
+\NewDocumentCommand \njusetup { m }
+{ \keys_set:nn { nju } { #1 } }
+% \end{macrocode}
+%
+% 使用\pkg{geometry}设置页边距。
+% \begin{macrocode}
+\RequirePackage[
+ top=2.5cm,
+ bottom=2.5cm,
+ left=3.2cm,
+ right=3.2cm
+]{geometry}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\RequirePackage{xparse}
+\RequirePackage{titletoc} % 修改目录内标题格式
+\RequirePackage[hyphens]{url} % generate better linebreaks in the url
+% \RequirePackage[normalem]{ulem} % 绘制下划线
+\RequirePackage{dashundergaps}
+\RequirePackage{setspace}
+\RequirePackage{lastpage}
+\RequirePackage{emptypage} % 清除空白页的页码
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\RequirePackage{listings} % 代码环境
+\RequirePackage{enumitem} % 用于修改列表环境
+\RequirePackage{caption}
+\RequirePackage{floatrow} % 用于图表等页面元素的定位
+\RequirePackage{booktabs} % 用于绘制三线表
+\RequirePackage{multirow} % Cells occupying multiple rows in tables
+\RequirePackage{multicol} % Multiple columns in dictionary
+\RequirePackage{siunitx} % 用于书写单位符号
+% \end{macrocode}
+%
+% 用于化学
+% \begin{macrocode}
+\RequirePackage[version=4]{mhchem} % 用于绘制分子式
+% \end{macrocode}
+%
+% 用于生成可以被插入书签的LaTeX logo,TODO: 使用hologo创建|latex{}|命令
+% \begin{macrocode}
+\RequirePackage{hologo}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% Required to prevent page break right after a sectioning command
+% \RequirePackage{needspace}
+
+% \RequirePackage{xspace} % Better print trailing whitespace
+% \end{macrocode}
+%
+% 针对编译引擎,使用不同的宏包重构下划线命令
+% \begin{macrocode}
+\sys_if_engine_xetex:T
+{
+ \RequirePackage{microtype}
+
+ % 加中文下划线,不能用于lualatex
+ \RequirePackage{xeCJKfntef}
+ \cs_new:Npn \nju_underline:n #1 {\CJKunderline{#1}}
+}
+\sys_if_engine_luatex:T{
+ % 加中文下划线
+ \RequirePackage{lua-ul}
+ \cs_new:Npn \nju_underline:n #1 {\underLine{#1}}
+
+ % emoji支持
+ % \RequirePackage{emoji}
+ % \setemojifont{Segoe~UI~Emoji} % windows
+ % \setemojifont{Apple~Color~Emoji} % macos
+ % \setemojifont{Noto~Color~Emoji}
+ % For windows.
+ % Shipped with the best `grinning-face-with-sweat' support.
+}
+% \end{macrocode}
+%
+% 生成用于测试的大段无意义英文文字
+% \begin{macrocode}
+\RequirePackage{blindtext}
+\RequirePackage{zhlipsum}
+% \end{macrocode}
+%
+% 加载以后展示内容边界
+% \begin{macrocode}
+% \RequirePackage{showframe}
+% \end{macrocode}
+%
+% 数学
+% \begin{macrocode}
+\RequirePackage{amsmath} % Must be loaded before unicode-math
+\RequirePackage{amsthm} % Mathematical environments
+\RequirePackage{mathtools} % Mathematical tools to use with amsmath
+\RequirePackage{thmtools} % Theorem styles
+\RequirePackage[
+ warnings-off={% 消除与mathtools合用产生的警告
+ mathtools-colon,
+ mathtools-overbracket}
+ ]{unicode-math} % Math fonts in xetex or luatex
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\RequirePackage{graphicx}
+\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
+\graphicspath{{figure/}} % 图片路径
+\RequirePackage{wrapfig} % Wrap text around figures
+% \end{macrocode}
+%
+% 必须以该顺序加载以下三个包
+% \begin{macrocode}
+% \RequirePackage{varioref}
+\RequirePackage[hidelinks,bookmarksnumbered=true]{hyperref}
+\RequirePackage[capitalise,nameinlink,noabbrev]{cleveref}
+% \end{macrocode}
+%
+% \subsection{字体设置}
+%
+% 加载设置字体所需的包\pkg{fontspec}
+% \begin{macrocode}
+\RequirePackage{fontspec}
+% \end{macrocode}
+%
+%
+%
+% \begin{variable}{\g_@@_latin_fontset_tl,\g_@@_cjk_fontset_tl}
+% 用于存储所使用字体名称的全局变量
+% \begin{macrocode}
+\tl_new:N \g_@@_latin_fontset_tl
+\tl_new:N \g_@@_cjk_fontset_tl
+% \end{macrocode}
+% \end{variable}
+%
+% 定义字体选项
+% \begin{macrocode}
+\keys_define:nn { nju }
+{
+ customlatinfont .choices:nn =
+ { gyre, macos, windows, null }
+ { \tl_set_eq:NN \g_@@_latin_fontset_tl \l_keys_choice_tl },
+ customchinesefont .choices:nn =
+ { fandol, founder, macos, noto, windows, null }
+ { \tl_set_eq:NN \g_@@_cjk_fontset_tl \l_keys_choice_tl },
+}
+% \end{macrocode}
+%
+% \begin{macro}{\ProcessKeysOptions}
+% 在定义完全部设置以后从tex文件导言区输入参数
+% \begin{macrocode}
+\ProcessKeysOptions { nju }
+% \end{macrocode}
+% \end{macro}
+%
+% 如果未进行设置则使用系统默认字体覆盖输入参数
+%
+% \begin{variable}{\g_@@_load_system_fontset_bool}
+% 用于判断是否需要载入系统预装字体的全局变量
+% \begin{macrocode}
+\bool_new:N \g_@@_load_system_fontset_bool
+% \end{macrocode}
+% \end{variable}
+%
+% 判断用户是否自定义了中英文字体,如果其中任意一种未被定义,
+% 则使用系统预装字体覆盖字体选项
+% \begin{macrocode}
+\tl_if_empty:NTF \g_@@_latin_fontset_tl
+ { \bool_gset_true:N \g_@@_load_system_fontset_bool }
+{
+ \tl_if_empty:NT \g_@@_cjk_fontset_tl
+ { \bool_gset_true:N \g_@@_load_system_fontset_bool }
+}
+\bool_if:NT \g_@@_load_system_fontset_bool
+{
+ % 检测是否是 Windows
+ \sys_if_platform_windows:TF
+ {
+ \tl_set:Nn \g_@@_latin_fontset_tl { windows }
+ \tl_set:Nn \g_@@_cjk_fontset_tl { windows }
+ }
+ {
+ % 检测是否是 macOS
+ \ctex_if_platform_macos:TF
+ {
+ \tl_set:Nn \g_@@_latin_fontset_tl { macos }
+ \tl_set:Nn \g_@@_cjk_fontset_tl { macos }
+ }
+ % 其余系统一律使用自由字体
+ {
+ \tl_set:Nn \g_@@_latin_fontset_tl { gyre }
+ \tl_set:Nn \g_@@_cjk_fontset_tl { fandol }
+ }
+ }
+}
+% \end{macrocode}
+%
+% 接下来逐个定义所需要使用的字符集
+%
+% \begin{macro}{\@@_load_latin_font_windows:}
+% Windows 西文字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_latin_font_windows:
+{
+ \setmainfont{Times~New~Roman}
+ \setsansfont{Arial}
+ \setmonofont{Courier~New}[Scale=MatchLowercase]
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_load_latin_font_macos:}
+% macOS 西文字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_latin_font_macos:
+{
+\setmainfont{Times~New~Roman}
+\setsansfont{Arial}
+\setmonofont{Menlo}[Scale=MatchLowercase]
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_load_latin_font_gyre:}
+% 开源的 gyre 西文字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_latin_font_gyre:
+{
+\setmainfont{texgyretermes}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ BoldFont=*-bold,
+ ItalicFont=*-italic,
+ BoldItalicFont=*-bolditalic]
+\setsansfont{texgyreheros}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ BoldFont=*-bold,
+ ItalicFont=*-italic,
+ BoldItalicFont=*-bolditalic]
+\setmonofont{texgyrecursor}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ BoldFont=*-bold,
+ ItalicFont=*-italic,
+ BoldItalicFont=*-bolditalic,
+ Scale=MatchLowercase,
+ Ligatures=CommonOff]
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_load_cjk_font_windows:}
+% Windows 中文字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_cjk_font_windows:
+{
+ \setCJKmainfont{SimSun}[
+ AutoFakeBold=2.17,
+ ItalicFont=KaiTi]
+ \setCJKsansfont{SimHei}
+ \setCJKmonofont{FangSong}
+ \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhhei}{SimHei}
+ \setCJKfamilyfont{zhfs}{FangSong}
+ \setCJKfamilyfont{zhkai}{KaiTi}[AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhnewhei}{Microsoft~YaHei}[
+ BoldFont=Microsoft~YaHei~Bold]
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_load_cjk_font_macos:}
+% macOS 字体
+% 参考CTeX手册第9节 LuaLATEX 下的中文支持方式解决issue问题
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_cjk_font_macos:
+{
+ % 移除 does not contain script "CJK" 警告
+ \msg_redirect_name:nnn {fontspec} {no-script} {info}
+ \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,
+ % AlternateFont =
+ % {
+ % {character range1} {alternate font name1}
+ % {alternate font features2} ,
+ % ......
+ % }
+ ]
+ \setCJKfamilyfont{zhnewhei}{PingFang~SC}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_load_cjk_font_fandol:}
+% Fandol 字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_cjk_font_fandol:
+{
+ % 移除 does not contain script "CJK" 警告
+ \msg_redirect_name:nnn {fontspec} {no-script} {info}
+ \setCJKmainfont{FandolSong-Regular}[
+ Extension=.otf,
+ BoldFont=FandolSong-Bold,
+ ItalicFont=FandolKai-Regular]
+ \setCJKsansfont{FandolHei-Regular}[
+ Extension=.otf,
+ BoldFont=FandolHei-Bold]
+ \setCJKmonofont{FandolFang-Regular}[Extension=.otf]
+ \setCJKfamilyfont{zhsong}{FandolSong-Regular}[
+ Extension=.otf,
+ BoldFont=FandolSong-Bold]
+ \setCJKfamilyfont{zhhei}{FandolHei-Regular}[
+ Extension=.otf,
+ BoldFont=FandolHei-Bold]
+ \setCJKfamilyfont{zhfs}{FandolFang-Regular}[Extension=.otf]
+ \setCJKfamilyfont{zhkai}{FandolKai-Regular}[
+ Extension=.otf,
+ AutoFakeBold=2.17]
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_load_cjk_font_founder:}
+% 方正字符集(简繁扩展)
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_cjk_font_founder:
+{
+ \setCJKmainfont{FZSSK}[% 方正书宋
+ Extension=.ttf,
+ BoldFont=FZXBSK,% 方正小标宋
+ ItalicFont=FZKTK]% 方正楷体
+ \setCJKsansfont{FZXH1K}[% 方正细黑一
+ Extension=.ttf,
+ BoldFont=FZHTK]% FZHTK 方正黑体
+ \setCJKmonofont{FZFSK}[Extension=.ttf]% 方正仿宋
+ \setCJKfamilyfont{zhsong}
+ {FZSSK}[
+ Extension=.ttf,
+ BoldFont=FZXBSK]
+ \setCJKfamilyfont{zhhei}
+ {FZHTK}[
+ Extension=.ttf,
+ AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhfs}
+ {FZFSK}[Extension=.ttf]
+ \setCJKfamilyfont{zhkai}
+ {FZKTK}[Extension=.ttf]
+ \setCJKfamilyfont{zhnewhei}
+ {FZYouHK_508R}[% 方正悠黑508R
+ Extension=.ttf,
+ BoldFont=FZYouHK_511M]% 方正悠黑511M
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_load_cjk_font_noto:}
+% 思源字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_cjk_font_noto:
+{
+ % 思源宋体
+ \setCJKmainfont[
+ UprightFont=NotoSerifCJKsc-Regular,
+ BoldFont=NotoSerifCJKsc-Bold,
+ ItalicFont=NotoSerifCJKsc-Regular,
+ BoldItalicFont=NotoSerifCJKsc-Bold,
+ ItalicFeatures=FakeSlant,
+ BoldItalicFeatures=FakeSlant]{Noto~Serif~CJK~SC}
+
+ % 思源黑体
+ \setCJKsansfont[
+ UprightFont=NotoSansCJKsc-Regular,
+ BoldFont=NotoSansCJKsc-Bold,
+ ItalicFont=NotoSansCJKsc-Regular,
+ BoldItalicFont=NotoSansCJKsc-Bold,
+ ItalicFeatures=FakeSlant,
+ BoldItalicFeatures=FakeSlant]{Noto~Sans~CJK~SC}
+
+ % 包含于思源黑体
+ \setCJKmonofont[
+ UprightFont=NotoSansMonoCJKsc-Regular,
+ BoldFont=NotoSansMonoCJKsc-Bold,
+ ItalicFont=NotoSansMonoCJKsc-Regular,
+ BoldItalicFont=NotoSansMonoCJKsc-Bold,
+ ItalicFeatures=FakeSlant,
+ BoldItalicFeatures=FakeSlant]{Noto~Sans~Mono~SC}
+
+ \setCJKfamilyfont{zhsong}{Noto~Serif~CJK~SC}
+ \setCJKfamilyfont{zhhei}{Noto~Sans~CJK~SC}
+ \setCJKfamilyfont{zhfs}{方正仿宋简体}[AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhkai}{方正楷体简体}[AutoFakeBold=2.17]
+}
+% \end{macrocode}
+% \end{macro}
+%
+% 载入设置的字体
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_load_font:
+{
+ \use:c { @@_load_latin_font_ \g_@@_latin_fontset_tl : }
+ \use:c { @@_load_cjk_font_ \g_@@_cjk_fontset_tl : }
+
+ \NewDocumentCommand\songti{}{\CJKfamily{zhsong}}
+ \NewDocumentCommand\heiti{}{\CJKfamily{zhhei}}
+ \NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}}
+ \NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}}
+}
+\@@_load_font:
+% \end{macrocode}
+%
+% 设置数学字体 (XITS, 或者 STIX, 与 Times New Roman 最为相近)
+% \begin{macrocode}
+% \setmathfont{STIXTwoMath-Regular}[Extension = .otf]
+\setmathfont{XITSMath-Regular}[
+ BoldFont = XITSMath-Bold,
+ Extension = .otf]
+% \end{macrocode}
+%
+%
+% \subsection{页面样式}
+%
+% \subsubsection{页眉页脚}
+%
+%
+% \begin{macrocode}
+\RequirePackage{fancyhdr} % 调整页眉页脚
+% 本科生页眉页脚
+\fancypagestyle{njuplain}{%
+ \fancyhead{}
+ \fancyfoot[C]{\zihao{5}\thepage} % 页脚居中 五号新罗马体数字
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% TODO: 研究生页眉页脚
+\fancypagestyle{njuheadings}{%
+ \fancyhead{}
+ \fancyfoot[C]{\zihao{5}\thepage}
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\str_if_eq:NNTF {\l_@@_info_degree_tl} { ug }
+{
+ % the header line
+ \tl_set:Nn \headrulewidth {0pt}
+ % the footer line
+ \tl_set:Nn \footrulewidth {0pt}
+
+ \AtBeginDocument{\pagestyle{njuplain}} % 本科无页眉页脚
+}
+{
+ % the header line
+ \tl_set:Nn \headrulewidth {1pt}
+ % the footer line
+ \tl_set:Nn \footrulewidth {0pt}
+
+ % \AtBeginDocument{\pagestyle{njuplain}} % 无页眉页脚
+ \AtBeginDocument{\pagestyle{headings}} % 研究生有页眉页脚
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% ctex格式设置
+% 目录标题 三号宋体加粗
+% 各部分标题 四号黑体
+\ctexset{
+ contentsname = 目录,
+ listfigurename = 插图清单,
+ listtablename = 表格清单,
+ chapter/format = \zihao{4}\heiti\centering,
+ chapter/beforeskip = 10pt,
+ chapter/afterskip = 60pt,
+ section/format = \zihao{4}\heiti\raggedright,
+ subsection/format = \zihao{4}\heiti\raggedright,
+ subsubsection/format = \zihao{4}\heiti\raggedright
+}
+
+% 重定义目录中章节标题样式
+% 目录内容中章的标题 四号黑体
+% 目录中其他内容 小四号宋体
+\titlecontents{chapter}% 标题级别
+ [5em]% 标题左间距
+ {\heiti\zihao{4}\vspace{10pt}}% 标题格式
+ {\contentslabel{4em}}% 标题标志
+ {\hspace*{-4em}}% 无序号标题
+ {~\titlerule*[0.6pc]{$.$}~\contentspage}% 指引线与页码
+
+ \titlecontents{section}
+ [5em]
+ {\zihao{-4}\vspace{0pt}}
+ {\contentslabel{2.5em}}
+ {\hspace*{-4em}}
+ {~\titlerule*[0.6pc]{$.$}~\contentspage}
+
+\titlecontents{subsection}
+ [8em]
+ {\zihao{-4}\vspace{0pt}}
+ {\contentslabel{3em}}
+ {\hspace*{-4em}}
+ {~\titlerule*[0.6pc]{$.$}~\contentspage}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\cs_set:Npn \CTEX@addtocline #1#2
+{
+ \addcontentsline { toc } {#1}
+ { \use:c { CTEX@#1@tocline } {#1} {#2} }
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% 目录页面格式修改
+\cs_new:Npn \nju_tocpagestyle:nnn #1 #2 #3
+{
+ \newpage
+ \hspace{0pt}
+ \vskip 10pt
+ \begin{center}
+ \mbox{\songti\bf\zihao{3}{#1}} % 目录页面标题
+ \phantomsection
+ \addcontentsline{toc}{chapter}{#2} % 插入目录
+ \end{center}
+ \vskip 40pt
+ \@starttoc{#3}%
+ \cleardoublepage
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\tl_set:Nn \tableofcontents
+{
+ \nju_tocpagestyle:nnn {目\hspace{2em}录}{\contentsname}{toc}
+}
+\tl_set:Nn \listoffigures
+{
+ \nju_tocpagestyle:nnn {\listfigurename}{\listfigurename}{lof}
+}
+\tl_set:Nn \listoftables
+{
+ \nju_tocpagestyle:nnn {\listtablename}{\listtablename}{lot}
+}
+% \end{macrocode}
+%
+% \begin{environment}{preface}
+%
+% \begin{macrocode}
+% 定制前言、致谢环境
+\NewDocumentEnvironment{preface}{}
+{%
+ \chapter*{前言}
+ \addcontentsline{toc}{chapter}{前言}
+}{}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{acknowledgement}
+% 单独制作的致谢页。
+% \begin{macrocode}
+\NewDocumentEnvironment{acknowledgement}{}
+{%
+ \chapter*{致谢}
+ \addcontentsline{toc}{chapter}{致谢}
+}{}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \begin{macrocode}
+% biblatex设置
+\RequirePackage[
+ style=gb7714-2015,
+ %style=numeric-comp,
+ %citestyle=authortitle-icomp,
+ % citestyle=numeric-comp,
+ %bibstyle=authoryear,
+ % bibstyle=numeric,
+ sorting=none,
+ %sorting=nyt,
+ %sortcites=true,
+ %autocite=footnote,
+ backend=biber, % Compile the bibliography with biber
+ hyperref=true,
+ backref=false,
+ citecounter=true,
+ pagetracker=true,
+ citetracker=true,
+ ibidtracker=context,
+ autopunct=true,
+ autocite=plain,
+ % gbpub=false, % Uncomment if you do NOT want '[S.l. : s.n.]'
+ % in reference entries, GitHub Issue (#47)
+ % gbnamefmt=lowercase, % Uncomment if you do NOT want uppercase author
+ % names in reference entries, GitHub Issue (#23)
+]{biblatex}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% Remove some unwanted entries from the bibliography
+\AtEveryBibitem{
+ \clearfield{abstract}
+ \clearfield{issn}
+ \clearfield{isbn}
+ \clearfield{archivePrefix}
+ \clearfield{arxivId}
+ \clearfield{pmid}
+ \clearfield{eprint}
+ \ifentrytype{online}{}{\ifentrytype{misc}{}{\clearfield{url}}}
+ % \ifentrytype{book}{\clearfield{doi}}{}
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% 修改标签名称
+\crefdefaultlabelformat{#2#1#3\,} % 默认在名称后面添加空格
+
+\crefname{figure}{图}{图}
+\crefname{table}{表}{表}
+% \crefname{equation}{公式}{公式}
+\crefformat{equation}{公式~#2#1#3~} % 删除公式编号的括号
+
+\crefformat{chapter}{第#2#1#3章}
+\crefformat{section}{第~#2#1#3~节}
+\crefformat{subsection}{第~#2#1#3~小节}
+\crefformat{subsubsection}{第~#2#1#3~小节}
+% \crefname{chapter}{§}{§}
+% \crefname{section}{§}{§}
+% \crefname{subsection}{§}{§}
+% \crefname{subsubsection}{§}{§}
+\crefname{appendix}{附录}{附录}
+
+% \crefname{definition}{定义}{定义}
+% \crefname{axiom}{公理}{公理}
+% \crefname{property}{性质}{性质}
+% \crefname{proposition}{命题}{命题}
+% \crefname{lemma}{引理}{引理}
+% \crefname{corollary}{推论}{推论}
+% \crefname{remark}{注解}{注解}
+% \crefname{condition}{条件}{条件}
+% \crefname{conclusion}{结论}{结论}
+% \crefname{assumption}{假设}{假设}
+% \end{macrocode}
+%
+% soifjsojfosjfos
+% \begin{macrocode}
+% 图表位置调整
+\floatsetup[lstlisting]{ % Captions for lstlistings
+ capposition=above,%
+ margins=centering,%
+ floatwidth=\textwidth%
+}
+\floatsetup[figure]{ % Captions for figures
+ capposition=bottom,%
+ margins=centering,%
+ floatwidth=\textwidth%
+}
+\floatsetup[table]{ % Captions for tables
+ capposition=above,%
+ margins=centering,%
+ floatwidth=\textwidth%
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% 代码样式
+\lstset{
+ basicstyle=\ttfamily\linespread{1}\small\selectfont,
+ keywordstyle=\bfseries,% use bold style for keywords
+ commentstyle=\rmfamily\itshape,% use italic style for comments
+ stringstyle=\ttfamily,% 字符串风格
+ flexiblecolumns,% ?
+ numbers=left,% left-aligned numbering
+ showspaces=false,% hide markers for spaces
+ showstringspaces=false,
+ captionpos=t,% place the caption at the top
+ % frame=lrtb,% show all four sides of the frame
+ % linewidth=.8\textwidth,
+ % breakatwhitespace=true,
+ breaklines=true,
+ xleftmargin=2em,xrightmargin=2em,% set the width of the code environment
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\lstdefinestyle{LaTeX}{
+ language=TeX,
+ morekeywords={
+ begin, caption, label, mathrm, frac,
+ toprule, midrule, bottomrule, includegraphics}
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% 图表标题样式
+\DeclareCaptionFont{songticap}{\zihao{5}\bf\songti}
+\captionsetup{
+ font=small,%
+ labelfont=songticap,
+ textfont=songticap,
+ strut=no,%
+ hypcap=true, % Links point to the top of the figure
+ % indention=0pt, % Suppress indentation
+ % % parindent=0pt, % Suppress space between paragraphs
+ aboveskip=6pt, % Increase the space between the figure and the caption
+ belowskip=6pt, % Increase the space between the caption and the table
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% list configuration
+\renewcommand{\labelitemi}{\tiny$\blacktriangleright$}
+\renewcommand{\labelitemii}{\textbullet}
+
+\setlist[itemize]{noitemsep}
+\setlist[enumerate]{noitemsep}
+\setlist[description]{noitemsep}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+% 数学环境
+\declaretheoremstyle[
+ %spaceabove=.5\thm@preskip,
+ %spacebelow=.5\thm@postskip,
+ headfont=\bf\songti,%\scshape,
+ notefont=\songti,% notebraces={ (}{)},
+ bodyfont=\songti,
+ %headformat={\NAME\space\NUMBER\space\NOTE},
+ headpunct={},
+ %postheadspace={.5em plus .1em minus .1em},
+ %prefoothook={\hfill\qedsymbol}
+ ]{njuthm}
+
+\theoremstyle{njuthm}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\let\oldproofname=\proofname
+\renewcommand*{\proofname}{\rm\bf\songti{\oldproofname}} % 修改证明环境标题
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\declaretheorem[
+ name=算法,
+ style=njuthm,
+ refname={算法,算法},
+ Refname={算法,算法},
+ % numberwithin=section,
+]{algorithm}
+\declaretheorem[
+ name=假设,
+ style=njuthm,
+ refname={假设,假设},
+ Refname={假设,假设},
+ % numberwithin=section,
+]{assumption}
+\declaretheorem[
+ name=公理,
+ style=njuthm,
+ refname={公理,公理},
+ Refname={公理,公理},
+ % numberwithin=section,
+]{axiom}
+\declaretheorem[
+ name=结论,
+ style=njuthm,
+ refname={结论,结论},
+ Refname={结论,结论},
+ % numberwithin=section,
+]{conclusion}
+\declaretheorem[
+ name=条件,
+ style=njuthm,
+ refname={条件,条件},
+ Refname={条件,条件},
+ % numberwithin=section,
+]{condition}
+\declaretheorem[
+ name=推论,
+ style=njuthm,
+ refname={推论,推论},
+ Refname={推论,推论},
+ % numberwithin=section,
+]{corollary}
+\declaretheorem[
+ name=定义,
+ style=njuthm,
+ refname={定义,定义},
+ Refname={定义,定义},
+ % numberwithin=section,
+]{definition}
+\declaretheorem[
+ name=例,
+ style=njuthm,
+ refname={例,例},
+ Refname={例,例},
+ % numberwithin=section,
+]{example}
+\declaretheorem[
+ name=引理,
+ style=njuthm,
+ refname={引理,引理},
+ Refname={引理,引理},
+ % numberwithin=section,
+]{lemma}
+\declaretheorem[
+ name=性质,
+ style=njuthm,
+ refname={性质,性质},
+ Refname={性质,性质},
+ % numberwithin=section,
+]{property}
+\declaretheorem[
+ name=命题,
+ style=njuthm,
+ refname={命题,命题},
+ Refname={命题,命题},
+ % numberwithin=section,
+]{proposition}
+\declaretheorem[
+ name=注解,
+ style=njuthm,
+ refname={注解,注解},
+ Refname={注解,注解},
+ % numberwithin=section,
+]{remark}
+\declaretheorem[
+ name=定理,
+ style=njuthm,
+ refname={定理,定理},
+ Refname={定理,定理},
+ numberwithin=section,
+]{theorem}
+% \end{macrocode}
+%
+% \subsection{封面绘制}
+% \begin{macrocode}
+% 拼合标题
+\tl_const:Nn \l_@@_info_title_tl
+{
+ \l_@@_info_title_a_tl
+ \l_@@_info_title_b_tl
+ \l_@@_info_title_c_tl
+}
+% \end{macrocode}
+% 双导师的处理
+%% \begin{variable}{\l_@@_info_supv_full_tl,\l_@@_info_supv_full_en_tl}
+% 用于存储导师姓名加职称的变量,旧版编译器不支持字符串中含有|\hspace{.5em}|这样的空白空间命令
+% \begin{macrocode}
+\tl_new:N \l_@@_info_supv_full_tl
+\tl_new:N \l_@@_info_supv_full_en_tl
+% \end{macrocode}
+% \end{variable}
+%
+% 拼合导师
+% \begin{macrocode}
+\tl_set:Nn \l_@@_info_supv_full_tl
+{
+ \l_@@_info_supv_a_tl\
+ \l_@@_info_supv_a_title_tl\ \
+ \l_@@_info_supv_b_tl\
+ \l_@@_info_supv_b_title_tl
+}
+\tl_set:Nn \l_@@_info_supv_full_en_tl
+{
+ \l_@@_info_supv_a_en_tl\
+ \l_@@_info_supv_a_title_en_tl\ \
+ \l_@@_info_supv_b_en_tl\
+ \l_@@_info_supv_b_title_en_tl
+}
+% \end{macrocode}
+% \begin{variable}{\c_@@_name_degree_tl,\c_@@_name_degree_en_tl}
+% 用于存储学位名称的变量
+% \begin{macrocode}
+\tl_new:N \c_@@_name_degree_tl
+\tl_new:N \c_@@_name_degree_en_tl
+% \end{macrocode}
+% \end{variable}
+%
+% 判断学位进行命令定义
+% \begin{macrocode}
+\str_if_eq:NNTF {\l_@@_info_degree_tl} { ug }
+{
+ % 本科
+ \tl_const:Nn \l_@@_name_diploma_tl { 本\hfill 科\hfill }
+ \tl_const:Nn \c_@@_name_title_tl { 题\hfill 目 }
+
+ \tl_const:Nn \c_@@_cover_uline_len_a_tl { 250pt }
+ \tl_const:Nn \c_@@_cover_uline_len_b_tl { 90pt }
+ \tl_const:Nn \c_@@_cover_uline_font_tl { \songti }
+ \tl_const:Nn \c_@@_cover_uline_style_tl { \bf }
+ \tl_const:Nn \c_@@_cover_uline_bskip_tl {}
+
+ \tl_const:Nn \c_@@_cover_box_len_tl { 4.2em }
+
+ % 本科强制不打印国家图书馆封面
+ \bool_set_false:N \g_@@_nlcover_bool
+}
+{
+ % 本科以外都是研究生
+ \tl_const:Nn \l_@@_name_diploma_tl { 研\hfill 究\hfill 生\hfill }
+ \tl_const:Nn \c_@@_name_title_tl { 论\hfill 文\hfill 题\hfill 目 }
+
+ \tl_const:Nn \c_@@_cover_uline_len_a_tl { 250pt }
+ \tl_const:Nn \c_@@_cover_uline_len_b_tl { 14em }
+ \tl_const:Nn \c_@@_cover_uline_font_tl { \kaishu }
+ \tl_const:Nn \c_@@_cover_uline_style_tl {}
+ \tl_const:Nn \c_@@_cover_uline_bskip_tl { \hspace{1em} }
+
+ \tl_const:Nn \c_@@_cover_box_len_tl { 6em }
+
+ % 研究生学位名称
+ \str_if_eq:NNTF { \l_@@_info_degree_tl } { phd }
+ {
+ \tl_set:Nn \c_@@_name_degree_tl { 博士 }
+ \tl_set:Nn \c_@@_name_degree_en_tl { Doctor~of~Philosophy }
+ }
+ {
+ \tl_set:Nn \c_@@_name_degree_en_tl { Master }
+ \str_if_eq:NNTF { \l_@@_info_degree_tl } { mg }
+ { \tl_set:Nn \c_@@_name_degree_tl { 硕士 } }
+ { \tl_set:Nn \c_@@_name_degree_tl { 硕士专业 } }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_cover_uline_a:n}
+% 在封面绘制下划线
+% \begin{macrocode}
+\cs_new:Npn \@@_cover_uline_a:n #1
+{
+ \uline{\makebox[\c_@@_cover_uline_len_a_tl]
+ {\rm\c_@@_cover_uline_font_tl #1 }}
+}
+\cs_new:Npn \@@_cover_uline_b:n #1
+{
+ \uline{\makebox[\c_@@_cover_uline_len_b_tl]
+ {\rm\c_@@_cover_uline_font_tl #1 }}
+}
+\cs_new:Npn \@@_cover_uline_nl:nn #1 #2
+{
+ \uline{\makebox[#1]
+ {\rm\c_@@_cover_uline_font_tl #2 }}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_cover_box:n}
+% 封面表格边框
+% \begin{macrocode}
+\cs_new:Npn \@@_cover_box:n #1
+{
+ \makebox[\c_@@_cover_box_len_tl][s]{
+ #1\c_@@_cover_uline_bskip_tl}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% 判断类型
+%
+% \begin{macrocode}
+\str_if_eq:NNTF { \l_@@_info_type_tl } { thesis }
+{
+ \tl_const:Nn \l_@@_info_type_tl_name
+ { \l_@@_name_diploma_tl 毕\hfill 业\hfill 论\hfill 文 }
+}
+{
+ \tl_const:Nn \l_@@_info_type_tl_name
+ { \l_@@_name_diploma_tl 毕\hfill 业\hfill 设\hfill 计 }
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_cover_title_breakline:}
+% 对多行标题进行自动判断,并输出换行后的结果
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_cover_title_breakline:
+{
+ \@@_cover_box:n {\c_@@_name_title_tl}
+ & \@@_cover_uline_a:n
+ { \c_@@_cover_uline_style_tl \l_@@_info_title_a_tl } \\
+ % 如果某行标题空则不输出接下来的若干行
+ \tl_if_empty:NF \l_@@_info_title_b_tl
+ {
+ \tl_if_empty:NTF \l_@@_info_title_c_tl
+ {
+ & \@@_cover_uline_a:n
+ {\c_@@_cover_uline_style_tl \l_@@_info_title_b_tl } \\
+ }
+ {
+ & \@@_cover_uline_a:n
+ { \c_@@_cover_uline_style_tl \l_@@_info_title_b_tl } \\
+ & \@@_cover_uline_a:n
+ { \c_@@_cover_uline_style_tl \l_@@_info_title_c_tl } \\
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_print_covertab:}
+% 封面信息栏
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_covertab:
+{%
+ \str_if_eq:NNTF { \l_@@_info_degree_tl } { ug }
+ {
+ \begin{tabular}{p{4.2em}c}
+ \@@_cover_box:n {院\hfill 系}
+ & \@@_cover_uline_a:n {\l_@@_info_dept_tl} \\
+ \@@_cover_box:n {专\hfill 业}
+ & \@@_cover_uline_a:n {\l_@@_major_tl} \\
+ \@@_cover_title_breakline:
+ \end{tabular}\\
+
+ \begin{tabular}{p{4.2em}cp{4.2em}c}
+ \@@_cover_box:n {年\hfill 级}
+ & \@@_cover_uline_b:n {\l_@@_info_grade_tl}
+ & \@@_cover_box:n {学\hfill 号}
+ & \@@_cover_uline_b:n {\l_@@_info_id_tl}\\
+ \end{tabular}\\
+
+ \begin{tabular}{p{4.2em}c}
+ \@@_cover_box:n {学\hfill 生\hfill 姓\hfill 名}
+ & \@@_cover_uline_a:n {\l_@@_info_author_tl}
+ \end{tabular}\\
+ \begin{tabular}{p{4.2em}cp{4.2em}c}
+ \@@_cover_box:n {导\hfill 师}
+ & \@@_cover_uline_b:n {\l_@@_info_supv_a_tl}
+ & \@@_cover_box:n {职\hfill 称}
+ & \@@_cover_uline_b:n {\l_@@_info_supv_a_title_tl}\\
+
+ % 第二导师
+ \tl_if_empty:NF \l_@@_info_supv_b_tl
+ {
+ \@@_cover_box:n {第\hfill 二\hfill 导\hfill 师}
+ & \@@_cover_uline_b:n {\l_@@_info_supv_b_tl}
+ & \@@_cover_box:n {职\hfill 称}
+ & \@@_cover_uline_b:n {\l_@@_info_supv_b_title_tl}\\
+ }
+ \end{tabular}\\
+
+ \begin{tabular}{p{4.2em}c}
+ \@@_cover_box:n {提\hfill 交\hfill 日\hfill 期}
+ & \@@_cover_uline_a:n {\l_@@_submit_date_tl}\\
+ \end{tabular}
+ }
+ {
+ \begin{tabular}{p{6em}c}
+ \@@_cover_title_breakline:
+ \@@_cover_box:n {作\hfill 者\hfill 姓\hfill 名}
+ & \@@_cover_uline_a:n {\l_@@_info_author_tl}\\
+ \@@_cover_box:n {专\hfill 业\hfill 名\hfill 称}
+ & \@@_cover_uline_a:n {\l_@@_major_tl}\\
+ \@@_cover_box:n {研\hfill 究\hfill 方\hfill 向}
+ & \@@_cover_uline_a:n {\l_@@_field_tl}\\
+ \@@_cover_box:n {指\hfill 导\hfill 教\hfill 师}
+ & \@@_cover_uline_a:n {\l_@@_info_supv_full_tl}\\
+ \end{tabular}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \begin{macro}{\@@_print_cover_nl:}
+% 按需绘制国家图书馆封面,修改自胡海星模板
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_cover_nl:
+{
+ \thispagestyle{empty}
+ \pdfbookmark[0]{国家图书馆封面}{nl}
+ {
+ % 顶端
+ \hspace{0mm}
+ \vskip -20mm \hskip -15mm
+ \songti\zihao{-4}
+ \makebox[40pt][l]{分类号}
+ \@@_cover_uline_b:n {\l_@@_info_classif_tl}
+ \hfill
+ \makebox[40pt][l]{密级}
+ \@@_cover_uline_b:n {\l_@@_info_seclv_tl}
+ \vskip 10pt \hskip -15mm
+ \makebox[40pt][l]{UDC}
+ \@@_cover_uline_b:n {\l_@@_info_udc_tl}
+ }
+
+ % 中部
+ \vskip\stretch{2}
+ \begin{center}
+ \def\ULthickness{1pt}
+ {\kaishu\zihao{-0} 学\hspace{0.5em}位\hspace{0.5em}论\hspace{0.5em}文}
+ {
+ \kaishu\zihao{1}
+ \vskip \stretch{1}
+ \@@_cover_uline_b:n {\l_@@_info_title_a_tl}\\
+ \@@_cover_uline_b:n {\l_@@_info_title_b_tl}\\
+ \@@_cover_uline_b:n {\l_@@_info_title_c_tl}\\
+ }
+ \vskip \stretch{1}
+ {\kaishu\zihao{4}(题名和副题名)}
+ \vskip \stretch{1} \vskip 5mm
+ {\kaishu\zihao{1}\uline{\makebox{\l_@@_info_author_tl}}}
+ \vskip \stretch{1}
+ {\kaishu\zihao{4}(作者姓名)}
+ \end{center}
+
+ % 底部
+ \vskip\stretch{1}
+ {
+ \kaishu\zihao{4}
+ \noindent 指导教师姓名、职务、职称、学位、单位名称及地址%
+ \@@_cover_uline_nl:nn {94pt}{\l_@@_info_supv_a_tl}\par
+ \noindent\@@_cover_uline_nl:nn {\textwidth}{%
+ \l_@@_info_supv_cont_tl}\par
+ \noindent 申请学位级别%
+ \@@_cover_uline_nl:nn {9em}{\c_@@_name_degree_tl}%
+ \noindent 专业名称%
+ \uline{\hfill\l_@@_major_tl\hfill}\par% 需要调整下划线长度
+ \noindent 论文提交日期%
+ \@@_cover_uline_nl:nn {9em}{\l_@@_submit_date_tl}%
+ 论文答辩日期%
+ \uline{\hfill\l_@@_defend_date_tl\hfill}\par% 需要调整下划线长度
+ \noindent 学位授予单位和日期\uline{\hfill}\par
+ \noindent\hfill 答辩委员会主席:%
+ \@@_cover_uline_nl:nn {9em}{\l_@@_info_chairman_tl}\par
+ \noindent\hfill 评阅人:%
+ \@@_cover_uline_nl:nn {9em}{\l_@@_info_reviewer_a_tl}\par
+ \noindent\hfill\@@_cover_uline_nl:nn {9em}{\l_@@_info_reviewer_b_tl}\par
+ \noindent\hfill\@@_cover_uline_nl:nn {9em}{\l_@@_info_reviewer_c_tl}\par
+ \noindent\hfill\@@_cover_uline_nl:nn {9em}{\l_@@_info_reviewer_d_tl}\par
+
+ \begin{center}
+ \kaishu\zihao{3}\hspace{2em} 年\hspace{1em} 月\hspace{1em} 日
+ \end{center}
+ \vskip -10mm
+ }
+ \cleardoublepage
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_print_cover_ug:}
+% 本科封面
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_cover_ug:
+{
+ \thispagestyle{empty}
+ \pagenumbering{Roman}
+ % Start
+ \pdfbookmark{封面}{封面} % 将封面插入pdf书签
+ \begin{spacing}{1.25}
+ \vskip 0mm
+ \hspace{-10mm}
+ \includegraphics[height=3cm]{njulogo}\smallskip
+ \begin{center}
+ \includegraphics[height=3.35cm]{njuname}
+ \vskip 10mm
+ {\zihao{1}\makebox[9em][s]{\bf{\songti\l_@@_info_type_tl_name}}}
+ \vfill
+ \vskip\stretch{0}
+ {\bgroup
+ \kaishu\zihao{3}
+ \def\tabcolsep{1pt}
+ \def\arraystretch{1.5}
+ % 绘制信息框
+ \@@_print_covertab:
+ \egroup}
+ \vfill
+ \end{center}
+ \end{spacing}
+ \cleardoublepage
+ % \vfill
+ % \newpage
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_print_cover_g:}
+% 研究生封面
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_cover_g:
+{
+ \thispagestyle{empty}
+ \pagenumbering{Roman}
+ % Start
+ \pdfbookmark{封面}{封面} % 将封面插入pdf书签
+ \begin{spacing}{1.25}
+ \begin{center}
+ \hspace{0pt} \vskip 5mm
+ \includegraphics[height=1.9cm]{njulogo}
+ \vskip 10mm
+ \includegraphics[height=2cm]{njuname-large}
+ \vskip 15mm
+ {\zihao{1}\makebox[10em][s]{\bf{\kaishu\l_@@_info_type_tl_name}}}
+ \vskip 5mm
+ {\zihao{1}\bf{\kaishu{(申请\c_@@_name_degree_tl 学位)}}}
+ \par\vfill
+ \vskip\stretch{0}
+ {\bgroup
+ \bf\kaishu\zihao{3}
+ \def\tabcolsep{1pt}
+ \def\arraystretch{1.5}
+ \vskip 10mm
+ % 绘制信息框
+ \@@_print_covertab:
+ \egroup}
+ \vfill
+ \vskip 10mm
+ \bf\kaishu\zihao{4}\l_@@_submit_date_tl
+ \vskip 15mm
+ \end{center}
+ \end{spacing}
+
+ \newpage % 封面背面
+ \thispagestyle{empty}
+ \begin{spacing}{1.625}
+ % TODO: 等待调整格式
+ \hspace{0pt} \vfill
+ {\bgroup
+ \kaishu\zihao{3}
+ \makebox[6em][s]{\bf\kaishu 学\hfill 号}:\MakeUppercase{\l_@@_info_id_tl}
+ \par
+ \makebox[6em][s]{\bf\kaishu 论文答辩日期}:\l_@@_defend_date_tl
+ \par
+ \makebox[6em][s]{\bf\kaishu 指\hfill 导\hfill 教\hfill 师}:\hspace{50mm}(签字)
+ \par
+ \egroup}
+ \vskip 15mm
+ \end{spacing}
+ \cleardoublepage
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_print_cover_en:}
+% 研究生英文封面
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_cover_en:
+{
+ \thispagestyle{empty}
+ \pdfbookmark{英文封面}{English~cover} % 将封面插入pdf书签
+ \begin{center}
+ \vspace*{20pt}
+ \bf\sffamily\zihao{2}\l_@@_info_title_en_tl
+ \vskip \stretch{1}
+ \normalfont\rmfamily\zihao{4}{by}
+ \vskip 3pt
+ \bf\sffamily\zihao{4}\l_@@_info_author_en_tl
+ \vskip\stretch{1}
+ \normalfont\rmfamily\zihao{4}{Supervised~by}
+ \vskip 3pt
+ \normalfont\sffamily\zihao{4}\l_@@_info_supv_a_title_en_tl
+ \hspace{.5em}\l_@@_info_supv_a_en_tl
+ \vskip\stretch{1}
+ \normalsize\rmfamily{%
+ A~dissertation~submitted~to\\
+ the~graduate~school~of~Nanjing~University\\
+ in~partial~fulfilment~of~the~requirements~for~the~degree~of\\
+ {\textsc{\c_@@_name_degree_en_tl}}\\
+ in\\
+ {\l_@@_major_en_tl}
+ }
+ \vskip\stretch{2}
+ \includegraphics[width=2.5cm]{njulogo} \\
+ \vskip 3mm
+ \normalfont\l_@@_info_dept_en_tl\\
+ {Nanjing~University}
+ \vskip 30pt
+ \normalfont\normalsize\l_@@_submit_date_en_tl
+ \end{center}
+ \normalfont
+ \cleardoublepage
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% 重定义maketitle生成封面
+% \begin{macrocode}
+\tl_set:Nn \maketitle
+{%
+ \str_if_eq:NNTF { \l_@@_info_degree_tl } { ug }
+ {
+ \@@_print_cover_ug: % 本科封面
+ }
+ {
+ \bool_if:NT \g_@@_nlcover_bool { \@@_print_cover_nl: } % 国家图书馆封面
+ \@@_print_cover_g: % 研究生封面
+ \@@_print_cover_en: % 英文封面
+ }
+}
+% \end{macrocode}
+%
+% \subsection{摘要绘制}
+%
+% 中文关键词
+% \begin{macrocode}
+\NewDocumentCommand \keywords {m} {%
+ \par\vspace{2ex}\noindent%
+ {\kaishu\zihao{-4}\makebox[4em][s]{关键词{:}}}~{#1}%
+}
+% \end{macrocode}
+%
+%
+% 英文关键词
+%
+% \begin{macrocode}
+\NewDocumentCommand \englishkeywords {m} {%
+ \par\vspace{2ex}\noindent%
+ {KEYWORDS{:}}~~{#1}%
+}
+% \end{macrocode}
+%
+%
+%
+% \begin{macrocode}
+% 判断学位
+\str_if_eq:NNTF {\l_@@_info_degree_tl} { ug }
+{
+ % 本科摘要环境
+ \NewDocumentEnvironment{abstract} {}
+ {%
+ % \pagestyle{plain}
+ % \pagenumbering{Roman}
+ % \phantomsection\addcontentsline{toc}{chapter}{中文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{中文摘要}{中文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{
+ \uuline{南京大学本科生毕业论文(设计、作品)中文摘要}}}
+ \end{center}
+ {\bgroup
+ \kaishu\zihao{-4}
+ \tl_set:Nn \tabcolsep {0pt}
+ \tl_set:Nn \arraystretch {0.8}
+ \noindent
+ 题目: \l_@@_info_title_tl \\
+ 院系: \l_@@_info_dept_tl \\
+ 专业: \l_@@_major_tl \\
+ 本科生姓名: \l_@@_info_author_tl \\
+ 指导教师(姓名、职称):\l_@@_info_supv_full_tl \\
+ 摘要:
+ \egroup
+ }
+ \kaishu\zihao{-4}\par%
+ }{%
+ \newpage
+ }
+
+ % 英文摘要
+ \NewDocumentEnvironment{englishabstract} {}
+ {%
+ \pagestyle{plain}
+ % \phantomsection\addcontentsline{toc}{chapter}{英文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{英文摘要}{英文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{\uuline{
+ 南京大学本科生毕业论文(设计、作品)英文摘要}}}
+ \end{center}
+ {
+ \bgroup
+ THESIS: ~~\l_@@_info_title_en_tl \\
+ DEPARTMENT: ~~\l_@@_info_dept_en_tl \\
+ SPECIALIZATION: ~~\l_@@_major_en_tl \\
+ UNDERGRADUATE:~~\l_@@_info_author_en_tl \\
+ MENTOR:~~\l_@@_info_supv_full_en_tl \\
+ ABSTRACT:
+ \egroup
+ }
+ \zihao{-4}\par%
+ }{%
+ \cleardoublepage
+ \newpage
+ }
+}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+{
+ % 研究生摘要环境
+ \NewDocumentEnvironment{abstract} {}
+ {%
+ \pagestyle{plain}
+ \pagenumbering{Roman}
+ % \phantomsection\addcontentsline{toc}{chapter}{中文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{中文摘要}{中文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{\uuline{
+ 南京大学研究生毕业论文中文摘要首页用纸}}}
+ \end{center}
+
+ \bgroup
+ \kaishu\zihao{4}
+ \tl_set:Nn \tabcolsep {0pt}
+ \tl_set:Nn \arraystretch {0.8}
+ \noindent
+ 毕业论文题目:\hspace{0.5em}\nju_underline:n {\l_@@_info_title_tl\hfill}\\
+ \uline{\makebox[9em]{\l_@@_major_tl}}专业
+ \uline{\makebox[4em]{\l_@@_info_grade_tl}}级
+ \str_if_eq:NNTF {\l_@@_info_degree_tl} { phd } {博}{硕}
+ 士生姓名:\uline{\hfill\l_@@_info_author_tl\hfill} \\
+ 指导教师(姓名、职称):\uline{\hfill\l_@@_info_supv_full_tl\hfill}\par
+ \egroup
+
+ \kaishu\zihao{4}\par%
+ }{%
+ \newpage
+ }
+
+ % 英文摘要
+ \NewDocumentEnvironment{englishabstract} {}
+ {%
+ \pagestyle{plain}
+ % \phantomsection\addcontentsline{toc}{chapter}{英文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{英文摘要}{英文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{\uuline{
+ 南京大学研究生毕业论文英文摘要首页用纸}}}
+ \end{center}
+ {
+ \bgroup
+ \zihao{4}
+ THESIS: ~~\l_@@_info_title_en_tl \\
+ SPECIALIZATION: ~~\l_@@_major_en_tl \\
+ POSTGRADUATE:~~\l_@@_info_author_en_tl \\
+ MENTOR:~~\l_@@_info_supv_full_en_tl\par
+ \egroup
+ }
+ \zihao{4}\par%
+ }{%
+ \cleardoublepage
+ \newpage
+ }
+}
+%</class>
+% \end{macrocode}
+%
+%
+%
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
index d8d8f57f3a8..ff26bf84b14 100644
--- a/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
+++ b/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
@@ -1,96 +1,1189 @@
+%%
+%% This is file `njuthesis.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% njuthesis.dtx (with options: `class')
+%%
+%% Copyright (C) 2021
+%% by Nanjing University Linux User Group <nju.lug@yaoge123.cn>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% 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.
+%%
+%% To produce the documentation run the original source files ending with `.dtx'
+%% through XeTeX.
+%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplClass{njuthesis}{2021-09-11}{0.7.3}{NJU Thesis LaTeX Template}
-
-% 通过类传递参数
-\RequirePackage{l3keys2e}
-
+\RequirePackage{expl3}
+ \GetIdInfo $Id: njuthesis.dtx 0.9.2 2021-09-17 22:00:00 +0800 NJU LUG <nju.lug@yaoge123.cn> $
+ {Thesis template for Nanjing University}
+\ProvidesExplClass{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\LoadClass[
a4paper,
twoside,
UTF8,
scheme=chinese,
- linespread=1.625,% laTex默认1.2行距,word默认行距是1.3,要求1.5倍word行距,故1.5/1.2*1.3 = 1.625
+ linespread=1.625,
fontset=none,
zihao=-4
]{ctexbook}[2018/04/01]
+\RequirePackage{l3keys2e}
+\tl_new:N \l__nju_info_degree_tl
+\tl_new:N \l__nju_info_type_tl
+\keys_define:nn { nju }
+{
+ nlcover .bool_set:N = \g__nju_nlcover_bool,
+ nlcover .initial:n = false,
+}
+\keys_define:nn { nju }
+{
+ degree .choices:nn =
+ { ug, mg, mg, phd }
+ { \tl_set_eq:NN \l__nju_info_degree_tl \l_keys_choice_tl },
+ degree .initial:n = ug,
+ type .choices:nn =
+ { thesis, design }
+ { \tl_set_eq:NN \l__nju_info_type_tl \l_keys_choice_tl },
+ type .initial:n = thesis,
+}
+\keys_define:nn { nju }
+{
+ info.meta:nn = { nju / info } { #1 }
+}
+\keys_define:nn { nju / info }
+{
+ TitleA .tl_set:N = \l__nju_info_title_a_tl,
+ TitleB .tl_set:N = \l__nju_info_title_b_tl,
+ TitleC .tl_set:N = \l__nju_info_title_c_tl,
+ Title* .tl_set:N = \l__nju_info_title_en_tl,
+}
+\keys_define:nn { nju / info }
+{
+ Grade .tl_set:N = \l__nju_info_grade_tl,
+ StudentID .tl_set:N = \l__nju_info_id_tl,
+ StudentName .tl_set:N = \l__nju_info_author_tl,
+ StudentName* .tl_set:N = \l__nju_info_author_en_tl,
+}
+\keys_define:nn { nju / info }
+{
+ Department .tl_set:N = \l__nju_info_dept_tl,
+ Department* .tl_set:N = \l__nju_info_dept_en_tl,
+ Major .tl_set:N = \l__nju_major_tl,
+ Major* .tl_set:N = \l__nju_major_en_tl,
+ Field .tl_set:N = \l__nju_field_tl,
+ Field* .tl_set:N = \l__nju_field_en_tl,
+}
+\keys_define:nn { nju / info }
+{
+ SupervisorA .tl_set:N = \l__nju_info_supv_a_tl,
+ SupervisorA* .tl_set:N = \l__nju_info_supv_a_en_tl,
+ SupervisorATitle .tl_set:N = \l__nju_info_supv_a_title_tl,
+ SupervisorATitle* .tl_set:N = \l__nju_info_supv_a_title_en_tl,
+}
+\keys_define:nn { nju / info }
+{
+ SupervisorB .tl_set:N = \l__nju_info_supv_b_tl,
+ SupervisorB* .tl_set:N = \l__nju_info_supv_b_en_tl,
+ SupervisorBTitle .tl_set:N = \l__nju_info_supv_b_title_tl,
+ SupervisorBTitle* .tl_set:N = \l__nju_info_supv_b_title_en_tl,
+}
+\keys_define:nn { nju / info }
+{
+ SubmitDate .tl_set:N = \l__nju_submit_date_tl,
+ SubmitDate* .tl_set:N = \l__nju_submit_date_en_tl,
+}
+\keys_define:nn { nju / info }
+{
+ DefendDate .tl_set:N = \l__nju_defend_date_tl,
+ ReviewerChairman .tl_set:N = \l__nju_info_chairman_tl,
+ ReviewerA .tl_set:N = \l__nju_info_reviewer_a_tl,
+ ReviewerB .tl_set:N = \l__nju_info_reviewer_b_tl,
+ ReviewerC .tl_set:N = \l__nju_info_reviewer_c_tl,
+ ReviewerD .tl_set:N = \l__nju_info_reviewer_d_tl,
+}
+\keys_define:nn { nju / info }
+{
+ Classification .tl_set:N = \l__nju_info_classif_tl,
+ SecurityLevel .tl_set:N = \l__nju_info_seclv_tl,
+ UDC .tl_set:N = \l__nju_info_udc_tl,
+ SupervisorContact .tl_set:N = \l__nju_info_supv_cont_tl,
+}
+\NewDocumentCommand \njusetup { m }
+{ \keys_set:nn { nju } { #1 } }
+\RequirePackage[
+ top=2.5cm,
+ bottom=2.5cm,
+ left=3.2cm,
+ right=3.2cm
+]{geometry}
+\RequirePackage{xparse}
+\RequirePackage{titletoc} % 修改目录内标题格式
+\RequirePackage[hyphens]{url} % generate better linebreaks in the url
+\RequirePackage{dashundergaps}
+\RequirePackage{setspace}
+\RequirePackage{lastpage}
+\RequirePackage{emptypage} % 清除空白页的页码
+\RequirePackage{listings} % 代码环境
+\RequirePackage{enumitem} % 用于修改列表环境
+\RequirePackage{caption}
+\RequirePackage{floatrow} % 用于图表等页面元素的定位
+\RequirePackage{booktabs} % 用于绘制三线表
+\RequirePackage{multirow} % Cells occupying multiple rows in tables
+\RequirePackage{multicol} % Multiple columns in dictionary
+\RequirePackage{siunitx} % 用于书写单位符号
+\RequirePackage[version=4]{mhchem} % 用于绘制分子式
+\RequirePackage{hologo}
-% 定义模板键值
-% 用于格式控制的键值
+\sys_if_engine_xetex:T
+{
+ \RequirePackage{microtype}
+
+ % 加中文下划线,不能用于lualatex
+ \RequirePackage{xeCJKfntef}
+ \cs_new:Npn \nju_underline:n #1 {\CJKunderline{#1}}
+}
+\sys_if_engine_luatex:T{
+ % 加中文下划线
+ \RequirePackage{lua-ul}
+ \cs_new:Npn \nju_underline:n #1 {\underLine{#1}}
+
+ % emoji支持
+ % \RequirePackage{emoji}
+ % \setemojifont{Segoe~UI~Emoji} % windows
+ % \setemojifont{Apple~Color~Emoji} % macos
+ % \setemojifont{Noto~Color~Emoji}
+ % For windows.
+ % Shipped with the best `grinning-face-with-sweat' support.
+}
+\RequirePackage{blindtext}
+\RequirePackage{zhlipsum}
+\RequirePackage{amsmath} % Must be loaded before unicode-math
+\RequirePackage{amsthm} % Mathematical environments
+\RequirePackage{mathtools} % Mathematical tools to use with amsmath
+\RequirePackage{thmtools} % Theorem styles
+\RequirePackage[
+ warnings-off={% 消除与mathtools合用产生的警告
+ mathtools-colon,
+ mathtools-overbracket}
+ ]{unicode-math} % Math fonts in xetex or luatex
+\RequirePackage{graphicx}
+\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
+\graphicspath{{figure/}} % 图片路径
+\RequirePackage{wrapfig} % Wrap text around figures
+\RequirePackage[hidelinks,bookmarksnumbered=true]{hyperref}
+\RequirePackage[capitalise,nameinlink,noabbrev]{cleveref}
+\RequirePackage{fontspec}
+\tl_new:N \g__nju_latin_fontset_tl
+\tl_new:N \g__nju_cjk_fontset_tl
\keys_define:nn { nju }
{
- titlelength .int_set:N = \nju_titlelength,
- titlelength .initial:n = 1,
+ customlatinfont .choices:nn =
+ { gyre, macos, windows, null }
+ { \tl_set_eq:NN \g__nju_latin_fontset_tl \l_keys_choice_tl },
+ customchinesefont .choices:nn =
+ { fandol, founder, macos, noto, windows, null }
+ { \tl_set_eq:NN \g__nju_cjk_fontset_tl \l_keys_choice_tl },
+}
+\ProcessKeysOptions { nju }
+\bool_new:N \g__nju_load_system_fontset_bool
+\tl_if_empty:NTF \g__nju_latin_fontset_tl
+ { \bool_gset_true:N \g__nju_load_system_fontset_bool }
+{
+ \tl_if_empty:NT \g__nju_cjk_fontset_tl
+ { \bool_gset_true:N \g__nju_load_system_fontset_bool }
+}
+\bool_if:NT \g__nju_load_system_fontset_bool
+{
+ % 检测是否是 Windows
+ \sys_if_platform_windows:TF
+ {
+ \tl_set:Nn \g__nju_latin_fontset_tl { windows }
+ \tl_set:Nn \g__nju_cjk_fontset_tl { windows }
+ }
+ {
+ % 检测是否是 macOS
+ \ctex_if_platform_macos:TF
+ {
+ \tl_set:Nn \g__nju_latin_fontset_tl { macos }
+ \tl_set:Nn \g__nju_cjk_fontset_tl { macos }
+ }
+ % 其余系统一律使用自由字体
+ {
+ \tl_set:Nn \g__nju_latin_fontset_tl { gyre }
+ \tl_set:Nn \g__nju_cjk_fontset_tl { fandol }
+ }
+ }
+}
+\cs_new_protected:Npn \__nju_load_latin_font_windows:
+{
+ \setmainfont{Times~New~Roman}
+ \setsansfont{Arial}
+ \setmonofont{Courier~New}[Scale=MatchLowercase]
+}
+\cs_new_protected:Npn \__nju_load_latin_font_macos:
+{
+\setmainfont{Times~New~Roman}
+\setsansfont{Arial}
+\setmonofont{Menlo}[Scale=MatchLowercase]
+}
+\cs_new_protected:Npn \__nju_load_latin_font_gyre:
+{
+\setmainfont{texgyretermes}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ BoldFont=*-bold,
+ ItalicFont=*-italic,
+ BoldItalicFont=*-bolditalic]
+\setsansfont{texgyreheros}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ BoldFont=*-bold,
+ ItalicFont=*-italic,
+ BoldItalicFont=*-bolditalic]
+\setmonofont{texgyrecursor}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ BoldFont=*-bold,
+ ItalicFont=*-italic,
+ BoldItalicFont=*-bolditalic,
+ Scale=MatchLowercase,
+ Ligatures=CommonOff]
+}
+\cs_new_protected:Npn \__nju_load_cjk_font_windows:
+{
+ \setCJKmainfont{SimSun}[
+ AutoFakeBold=2.17,
+ ItalicFont=KaiTi]
+ \setCJKsansfont{SimHei}
+ \setCJKmonofont{FangSong}
+ \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhhei}{SimHei}
+ \setCJKfamilyfont{zhfs}{FangSong}
+ \setCJKfamilyfont{zhkai}{KaiTi}[AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhnewhei}{Microsoft~YaHei}[
+ BoldFont=Microsoft~YaHei~Bold]
+}
+\cs_new_protected:Npn \__nju_load_cjk_font_macos:
+{
+ % 移除 does not contain script "CJK" 警告
+ \msg_redirect_name:nnn {fontspec} {no-script} {info}
+ \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,
+ % AlternateFont =
+ % {
+ % {character range1} {alternate font name1}
+ % {alternate font features2} ,
+ % ......
+ % }
+ ]
+ \setCJKfamilyfont{zhnewhei}{PingFang~SC}
+}
+\cs_new_protected:Npn \__nju_load_cjk_font_fandol:
+{
+ % 移除 does not contain script "CJK" 警告
+ \msg_redirect_name:nnn {fontspec} {no-script} {info}
+ \setCJKmainfont{FandolSong-Regular}[
+ Extension=.otf,
+ BoldFont=FandolSong-Bold,
+ ItalicFont=FandolKai-Regular]
+ \setCJKsansfont{FandolHei-Regular}[
+ Extension=.otf,
+ BoldFont=FandolHei-Bold]
+ \setCJKmonofont{FandolFang-Regular}[Extension=.otf]
+ \setCJKfamilyfont{zhsong}{FandolSong-Regular}[
+ Extension=.otf,
+ BoldFont=FandolSong-Bold]
+ \setCJKfamilyfont{zhhei}{FandolHei-Regular}[
+ Extension=.otf,
+ BoldFont=FandolHei-Bold]
+ \setCJKfamilyfont{zhfs}{FandolFang-Regular}[Extension=.otf]
+ \setCJKfamilyfont{zhkai}{FandolKai-Regular}[
+ Extension=.otf,
+ AutoFakeBold=2.17]
+}
+\cs_new_protected:Npn \__nju_load_cjk_font_founder:
+{
+ \setCJKmainfont{FZSSK}[% 方正书宋
+ Extension=.ttf,
+ BoldFont=FZXBSK,% 方正小标宋
+ ItalicFont=FZKTK]% 方正楷体
+ \setCJKsansfont{FZXH1K}[% 方正细黑一
+ Extension=.ttf,
+ BoldFont=FZHTK]% FZHTK 方正黑体
+ \setCJKmonofont{FZFSK}[Extension=.ttf]% 方正仿宋
+ \setCJKfamilyfont{zhsong}
+ {FZSSK}[
+ Extension=.ttf,
+ BoldFont=FZXBSK]
+ \setCJKfamilyfont{zhhei}
+ {FZHTK}[
+ Extension=.ttf,
+ AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhfs}
+ {FZFSK}[Extension=.ttf]
+ \setCJKfamilyfont{zhkai}
+ {FZKTK}[Extension=.ttf]
+ \setCJKfamilyfont{zhnewhei}
+ {FZYouHK_508R}[% 方正悠黑508R
+ Extension=.ttf,
+ BoldFont=FZYouHK_511M]% 方正悠黑511M
+}
+\cs_new_protected:Npn \__nju_load_cjk_font_noto:
+{
+ % 思源宋体
+ \setCJKmainfont[
+ UprightFont=NotoSerifCJKsc-Regular,
+ BoldFont=NotoSerifCJKsc-Bold,
+ ItalicFont=NotoSerifCJKsc-Regular,
+ BoldItalicFont=NotoSerifCJKsc-Bold,
+ ItalicFeatures=FakeSlant,
+ BoldItalicFeatures=FakeSlant]{Noto~Serif~CJK~SC}
- secondmentor .bool_set:N = \nju_second_mentor,
- secondmentor .initial:n = false,
+ % 思源黑体
+ \setCJKsansfont[
+ UprightFont=NotoSansCJKsc-Regular,
+ BoldFont=NotoSansCJKsc-Bold,
+ ItalicFont=NotoSansCJKsc-Regular,
+ BoldItalicFont=NotoSansCJKsc-Bold,
+ ItalicFeatures=FakeSlant,
+ BoldItalicFeatures=FakeSlant]{Noto~Sans~CJK~SC}
- degree .tl_set:N = \nju_degree,
- degree .initial:n = UG,
+ % 包含于思源黑体
+ \setCJKmonofont[
+ UprightFont=NotoSansMonoCJKsc-Regular,
+ BoldFont=NotoSansMonoCJKsc-Bold,
+ ItalicFont=NotoSansMonoCJKsc-Regular,
+ BoldItalicFont=NotoSansMonoCJKsc-Bold,
+ ItalicFeatures=FakeSlant,
+ BoldItalicFeatures=FakeSlant]{Noto~Sans~Mono~SC}
- type .tl_set:N = \nju_type,
- type .initial:n = thesis,
+ \setCJKfamilyfont{zhsong}{Noto~Serif~CJK~SC}
+ \setCJKfamilyfont{zhhei}{Noto~Sans~CJK~SC}
+ \setCJKfamilyfont{zhfs}{方正仿宋简体}[AutoFakeBold=2.17]
+ \setCJKfamilyfont{zhkai}{方正楷体简体}[AutoFakeBold=2.17]
+}
+\cs_new_protected:Npn \__nju_load_font:
+{
+ \use:c { __nju_load_latin_font_ \g__nju_latin_fontset_tl : }
+ \use:c { __nju_load_cjk_font_ \g__nju_cjk_fontset_tl : }
+
+ \NewDocumentCommand\songti{}{\CJKfamily{zhsong}}
+ \NewDocumentCommand\heiti{}{\CJKfamily{zhhei}}
+ \NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}}
+ \NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}}
+}
+\__nju_load_font:
+\setmathfont{XITSMath-Regular}[
+ BoldFont = XITSMath-Bold,
+ Extension = .otf]
+\RequirePackage{fancyhdr} % 调整页眉页脚
+\fancypagestyle{njuplain}{%
+ \fancyhead{}
+ \fancyfoot[C]{\zihao{5}\thepage} % 页脚居中 五号新罗马体数字
+}
+\fancypagestyle{njuheadings}{%
+ \fancyhead{}
+ \fancyfoot[C]{\zihao{5}\thepage}
+}
+\str_if_eq:NNTF {\l__nju_info_degree_tl} { ug }
+{
+ % the header line
+ \tl_set:Nn \headrulewidth {0pt}
+ % the footer line
+ \tl_set:Nn \footrulewidth {0pt}
+
+ \AtBeginDocument{\pagestyle{njuplain}} % 本科无页眉页脚
+}
+{
+ % the header line
+ \tl_set:Nn \headrulewidth {1pt}
+ % the footer line
+ \tl_set:Nn \footrulewidth {0pt}
- systemfont .bool_set:N = \nju_systemfont,
- systemfont .initial:n = true,
+ % \AtBeginDocument{\pagestyle{njuplain}} % 无页眉页脚
+ \AtBeginDocument{\pagestyle{headings}} % 研究生有页眉页脚
+}
+\ctexset{
+ contentsname = 目录,
+ listfigurename = 插图清单,
+ listtablename = 表格清单,
+ chapter/format = \zihao{4}\heiti\centering,
+ chapter/beforeskip = 10pt,
+ chapter/afterskip = 60pt,
+ section/format = \zihao{4}\heiti\raggedright,
+ subsection/format = \zihao{4}\heiti\raggedright,
+ subsubsection/format = \zihao{4}\heiti\raggedright
+}
- customlatinfont .tl_set:N = \nju_customlatinfont,
- customlatinfont .initial:n = windows,
+\titlecontents{chapter}% 标题级别
+ [5em]% 标题左间距
+ {\heiti\zihao{4}\vspace{10pt}}% 标题格式
+ {\contentslabel{4em}}% 标题标志
+ {\hspace*{-4em}}% 无序号标题
+ {~\titlerule*[0.6pc]{$.$}~\contentspage}% 指引线与页码
- customchinesefont .tl_set:N = \nju_customchinesefont,
- customchinesefont .initial:n = windows,
+ \titlecontents{section}
+ [5em]
+ {\zihao{-4}\vspace{0pt}}
+ {\contentslabel{2.5em}}
+ {\hspace*{-4em}}
+ {~\titlerule*[0.6pc]{$.$}~\contentspage}
- info .meta:nn = { nju / info } { #1 }
+\titlecontents{subsection}
+ [8em]
+ {\zihao{-4}\vspace{0pt}}
+ {\contentslabel{3em}}
+ {\hspace*{-4em}}
+ {~\titlerule*[0.6pc]{$.$}~\contentspage}
+\cs_set:Npn \CTEX@addtocline #1#2
+{
+ \addcontentsline { toc } {#1}
+ { \use:c { CTEX@#1@tocline } {#1} {#2} }
}
+\cs_new:Npn \nju_tocpagestyle:nnn #1 #2 #3
+{
+ \newpage
+ \hspace{0pt}
+ \vskip 10pt
+ \begin{center}
+ \mbox{\songti\bf\zihao{3}{#1}} % 目录页面标题
+ \phantomsection
+ \addcontentsline{toc}{chapter}{#2} % 插入目录
+ \end{center}
+ \vskip 40pt
+ \@starttoc{#3}%
+ \cleardoublepage
+}
+\tl_set:Nn \tableofcontents
+{
+ \nju_tocpagestyle:nnn {目\hspace{2em}录}{\contentsname}{toc}
+}
+\tl_set:Nn \listoffigures
+{
+ \nju_tocpagestyle:nnn {\listfigurename}{\listfigurename}{lof}
+}
+\tl_set:Nn \listoftables
+{
+ \nju_tocpagestyle:nnn {\listtablename}{\listtablename}{lot}
+}
+\NewDocumentEnvironment{preface}{}
+{%
+ \chapter*{前言}
+ \addcontentsline{toc}{chapter}{前言}
+}{}
+\NewDocumentEnvironment{acknowledgement}{}
+{%
+ \chapter*{致谢}
+ \addcontentsline{toc}{chapter}{致谢}
+}{}
+\RequirePackage[
+ style=gb7714-2015,
+ %style=numeric-comp,
+ %citestyle=authortitle-icomp,
+ % citestyle=numeric-comp,
+ %bibstyle=authoryear,
+ % bibstyle=numeric,
+ sorting=none,
+ %sorting=nyt,
+ %sortcites=true,
+ %autocite=footnote,
+ backend=biber, % Compile the bibliography with biber
+ hyperref=true,
+ backref=false,
+ citecounter=true,
+ pagetracker=true,
+ citetracker=true,
+ ibidtracker=context,
+ autopunct=true,
+ autocite=plain,
+ % gbpub=false, % Uncomment if you do NOT want '[S.l. : s.n.]'
+ % in reference entries, GitHub Issue (#47)
+ % gbnamefmt=lowercase, % Uncomment if you do NOT want uppercase author
+ % names in reference entries, GitHub Issue (#23)
+]{biblatex}
+\AtEveryBibitem{
+\clearfield{abstract}
+\clearfield{issn}
+\clearfield{isbn}
+\clearfield{archivePrefix}
+\clearfield{arxivId}
+\clearfield{pmid}
+\clearfield{eprint}
+\ifentrytype{online}{}{\ifentrytype{misc}{}{\clearfield{url}}}
+}
+\crefdefaultlabelformat{#2#1#3\,} % 默认在名称后面添加空格
-\keys_define:nn { nju / info }
+\crefname{figure}{图}{图}
+\crefname{table}{表}{表}
+\crefformat{equation}{公式~#2#1#3~} % 删除公式编号的括号
+
+\crefformat{chapter}{第#2#1#3章}
+\crefformat{section}{第~#2#1#3~节}
+\crefformat{subsection}{第~#2#1#3~小节}
+\crefformat{subsubsection}{第~#2#1#3~小节}
+\crefname{appendix}{附录}{附录}
+
+\floatsetup[lstlisting]{ % Captions for lstlistings
+capposition=above,%
+margins=centering,%
+floatwidth=\textwidth%
+}
+\floatsetup[figure]{ % Captions for figures
+capposition=bottom,%
+margins=centering,%
+floatwidth=\textwidth%
+}
+\floatsetup[table]{ % Captions for tables
+capposition=above,%
+margins=centering,%
+floatwidth=\textwidth%
+}
+\lstset{
+basicstyle=\ttfamily\linespread{1}\small\selectfont,
+ keywordstyle=\bfseries,% use bold style for keywords
+ commentstyle=\rmfamily\itshape,% use italic style for comments
+ stringstyle=\ttfamily,% 字符串风格
+ flexiblecolumns,% ?
+ numbers=left,% left-aligned numbering
+ showspaces=false,% hide markers for spaces
+ showstringspaces=false,
+ captionpos=t,% place the caption at the top
+breaklines=true,
+xleftmargin=2em,xrightmargin=2em,% set the width of the code environment
+}
+\lstdefinestyle{LaTeX}{
+ language=TeX,
+ morekeywords={
+ begin, caption, label, mathrm, frac,
+ toprule, midrule, bottomrule, includegraphics}
+}
+\DeclareCaptionFont{songticap}{\zihao{5}\bf\songti}
+\captionsetup{
+ font=small,%
+ labelfont=songticap,
+textfont=songticap,
+strut=no,%
+hypcap=true, % Links point to the top of the figure
+aboveskip=6pt, % Increase the space between the figure and the caption
+belowskip=6pt, % Increase the space between the caption and the table
+}
+\renewcommand{\labelitemi}{\tiny$\blacktriangleright$}
+\renewcommand{\labelitemii}{\textbullet}
+
+\setlist[itemize]{noitemsep}
+\setlist[enumerate]{noitemsep}
+\setlist[description]{noitemsep}
+\declaretheoremstyle[
+ %spaceabove=.5\thm@preskip,
+ %spacebelow=.5\thm@postskip,
+ headfont=\bf\songti,%\scshape,
+ notefont=\songti,% notebraces={ (}{)},
+ bodyfont=\songti,
+ %headformat={\NAME\space\NUMBER\space\NOTE},
+ headpunct={},
+ %postheadspace={.5em plus .1em minus .1em},
+ %prefoothook={\hfill\qedsymbol}
+ ]{njuthm}
+
+\theoremstyle{njuthm}
+\let\oldproofname=\proofname
+\renewcommand*{\proofname}{\rm\bf\songti{\oldproofname}} % 修改证明环境标题
+\declaretheorem[
+name=算法,
+style=njuthm,
+refname={算法,算法},
+Refname={算法,算法},
+]{algorithm}
+\declaretheorem[
+name=假设,
+style=njuthm,
+refname={假设,假设},
+Refname={假设,假设},
+]{assumption}
+\declaretheorem[
+name=公理,
+style=njuthm,
+refname={公理,公理},
+Refname={公理,公理},
+]{axiom}
+\declaretheorem[
+name=结论,
+style=njuthm,
+refname={结论,结论},
+Refname={结论,结论},
+]{conclusion}
+\declaretheorem[
+name=条件,
+style=njuthm,
+refname={条件,条件},
+Refname={条件,条件},
+]{condition}
+\declaretheorem[
+name=推论,
+style=njuthm,
+refname={推论,推论},
+Refname={推论,推论},
+]{corollary}
+\declaretheorem[
+name=定义,
+style=njuthm,
+refname={定义,定义},
+Refname={定义,定义},
+]{definition}
+\declaretheorem[
+ name=例,
+ style=njuthm,
+ refname={例,例},
+ Refname={例,例},
+ % numberwithin=section,
+]{example}
+\declaretheorem[
+name=引理,
+style=njuthm,
+refname={引理,引理},
+Refname={引理,引理},
+]{lemma}
+\declaretheorem[
+name=性质,
+style=njuthm,
+refname={性质,性质},
+Refname={性质,性质},
+]{property}
+\declaretheorem[
+name=命题,
+style=njuthm,
+refname={命题,命题},
+Refname={命题,命题},
+]{proposition}
+\declaretheorem[
+name=注解,
+style=njuthm,
+refname={注解,注解},
+Refname={注解,注解},
+]{remark}
+\declaretheorem[
+name=定理,
+style=njuthm,
+refname={定理,定理},
+Refname={定理,定理},
+numberwithin=section,
+]{theorem}
+\tl_const:Nn \l__nju_info_title_tl
{
- % 题目
- TitleA .tl_set:N = \nju_title_a,
- TitleB .tl_set:N = \nju_title_b,
- TitleC .tl_set:N = \nju_title_c,
- TitleEN .tl_set:N = \nju_title_en,
-
- % 年级学号姓名
- Grade .tl_set:N = \nju_grade,
- StudentID .tl_set:N = \nju_student_id,
- StudentName .tl_set:N = \nju_student_name,
- StudentNameEN .tl_set:N = \nju_student_name_en,
-
- % 院系专业方向
- Department .tl_set:N = \nju_department,
- DepartmentEN .tl_set:N = \nju_department_en,
- Major .tl_set:N = \nju_major,
- MajorEN .tl_set:N = \nju_major_en,
- Field .tl_set:N = \nju_field,
- FieldEN .tl_set:N = \nju_field_en,
-
- % 导师
- MentorA .tl_set:N = \nju_mentor_a,
- MentorAEN .tl_set:N = \nju_mentor_a_en,
- MentorATitle .tl_set:N = \nju_mentor_a_title,
- MentorATitleEN .tl_set:N = \nju_mentor_a_title_en,
-
- % 第二导师
- MentorB .tl_set:N = \nju_mentor_b,
- MentorBEN .tl_set:N = \nju_mentor_b_en,
- MentorBTitle .tl_set:N = \nju_mentor_b_title,
- MentorBTitleEN .tl_set:N = \nju_mentor_b_title_en,
-
- % 日期
- SubmitDate .tl_set:N = \nju_submit_date,
- DefenseDate .tl_set:N = \nju_defense_date,
-}
-
-\NewDocumentCommand \njusetup { m }
-{ \keys_set:nn { nju } { #1 } }
-
-\ProcessKeysOptions { nju }
+ \l__nju_info_title_a_tl
+ \l__nju_info_title_b_tl
+ \l__nju_info_title_c_tl
+}
+%% \begin{variable}{\l_@@_info_supv_full_tl,\l_@@_info_supv_full_en_tl}
+\tl_new:N \l__nju_info_supv_full_tl
+\tl_new:N \l__nju_info_supv_full_en_tl
+\tl_set:Nn \l__nju_info_supv_full_tl
+{
+ \l__nju_info_supv_a_tl\
+ \l__nju_info_supv_a_title_tl\ \
+ \l__nju_info_supv_b_tl\
+ \l__nju_info_supv_b_title_tl
+}
+\tl_set:Nn \l__nju_info_supv_full_en_tl
+{
+ \l__nju_info_supv_a_en_tl\
+ \l__nju_info_supv_a_title_en_tl\ \
+ \l__nju_info_supv_b_en_tl\
+ \l__nju_info_supv_b_title_en_tl
+}
+\tl_new:N \c__nju_name_degree_tl
+\tl_new:N \c__nju_name_degree_en_tl
+\str_if_eq:NNTF {\l__nju_info_degree_tl} { ug }
+{
+ % 本科
+ \tl_const:Nn \l__nju_name_diploma_tl { 本\hfill 科\hfill }
+ \tl_const:Nn \c__nju_name_title_tl { 题\hfill 目 }
+
+ \tl_const:Nn \c__nju_cover_uline_len_a_tl { 250pt }
+ \tl_const:Nn \c__nju_cover_uline_len_b_tl { 90pt }
+ \tl_const:Nn \c__nju_cover_uline_font_tl { \songti }
+ \tl_const:Nn \c__nju_cover_uline_style_tl { \bf }
+ \tl_const:Nn \c__nju_cover_uline_bskip_tl {}
-% 输入配置文件
-\RequirePackage{profile/packages}
-\RequirePackage{profile/font}
-\RequirePackage{profile/page}
-\RequirePackage{profile/reference}
-\RequirePackage{profile/components}
-\RequirePackage{profile/cover}
-\RequirePackage{profile/abstract}
+ \tl_const:Nn \c__nju_cover_box_len_tl { 4.2em }
+
+ % 本科强制不打印国家图书馆封面
+ \bool_set_false:N \g__nju_nlcover_bool
+}
+{
+ % 本科以外都是研究生
+ \tl_const:Nn \l__nju_name_diploma_tl { 研\hfill 究\hfill 生\hfill }
+ \tl_const:Nn \c__nju_name_title_tl { 论\hfill 文\hfill 题\hfill 目 }
+
+ \tl_const:Nn \c__nju_cover_uline_len_a_tl { 250pt }
+ \tl_const:Nn \c__nju_cover_uline_len_b_tl { 14em }
+ \tl_const:Nn \c__nju_cover_uline_font_tl { \kaishu }
+ \tl_const:Nn \c__nju_cover_uline_style_tl {}
+ \tl_const:Nn \c__nju_cover_uline_bskip_tl { \hspace{1em} }
+
+ \tl_const:Nn \c__nju_cover_box_len_tl { 6em }
+
+ % 研究生学位名称
+ \str_if_eq:NNTF { \l__nju_info_degree_tl } { phd }
+ {
+ \tl_set:Nn \c__nju_name_degree_tl { 博士 }
+ \tl_set:Nn \c__nju_name_degree_en_tl { Doctor~of~Philosophy }
+ }
+ {
+ \tl_set:Nn \c__nju_name_degree_en_tl { Master }
+ \str_if_eq:NNTF { \l__nju_info_degree_tl } { mg }
+ { \tl_set:Nn \c__nju_name_degree_tl { 硕士 } }
+ { \tl_set:Nn \c__nju_name_degree_tl { 硕士专业 } }
+ }
+}
+\cs_new:Npn \__nju_cover_uline_a:n #1
+{
+ \uline{\makebox[\c__nju_cover_uline_len_a_tl]
+ {\rm\c__nju_cover_uline_font_tl #1 }}
+}
+\cs_new:Npn \__nju_cover_uline_b:n #1
+{
+ \uline{\makebox[\c__nju_cover_uline_len_b_tl]
+ {\rm\c__nju_cover_uline_font_tl #1 }}
+}
+\cs_new:Npn \__nju_cover_uline_nl:nn #1 #2
+{
+ \uline{\makebox[#1]
+ {\rm\c__nju_cover_uline_font_tl #2 }}
+}
+\cs_new:Npn \__nju_cover_box:n #1
+{
+ \makebox[\c__nju_cover_box_len_tl][s]{
+ #1\c__nju_cover_uline_bskip_tl}
+}
+\str_if_eq:NNTF { \l__nju_info_type_tl } { thesis }
+{
+ \tl_const:Nn \l__nju_info_type_tl_name
+ { \l__nju_name_diploma_tl 毕\hfill 业\hfill 论\hfill 文 }
+}
+{
+ \tl_const:Nn \l__nju_info_type_tl_name
+ { \l__nju_name_diploma_tl 毕\hfill 业\hfill 设\hfill 计 }
+}
+\cs_new_protected:Npn \__nju_cover_title_breakline:
+{
+ \__nju_cover_box:n {\c__nju_name_title_tl}
+ & \__nju_cover_uline_a:n
+ { \c__nju_cover_uline_style_tl \l__nju_info_title_a_tl } \\
+ % 如果某行标题空则不输出接下来的若干行
+ \tl_if_empty:NF \l__nju_info_title_b_tl
+ {
+ \tl_if_empty:NTF \l__nju_info_title_c_tl
+ {
+ & \__nju_cover_uline_a:n
+ {\c__nju_cover_uline_style_tl \l__nju_info_title_b_tl } \\
+ }
+ {
+ & \__nju_cover_uline_a:n
+ { \c__nju_cover_uline_style_tl \l__nju_info_title_b_tl } \\
+ & \__nju_cover_uline_a:n
+ { \c__nju_cover_uline_style_tl \l__nju_info_title_c_tl } \\
+ }
+ }
+}
+\cs_new_protected:Npn \__nju_print_covertab:
+{%
+ \str_if_eq:NNTF { \l__nju_info_degree_tl } { ug }
+ {
+ \begin{tabular}{p{4.2em}c}
+ \__nju_cover_box:n {院\hfill 系}
+ & \__nju_cover_uline_a:n {\l__nju_info_dept_tl} \\
+ \__nju_cover_box:n {专\hfill 业}
+ & \__nju_cover_uline_a:n {\l__nju_major_tl} \\
+ \__nju_cover_title_breakline:
+ \end{tabular}\\
+
+ \begin{tabular}{p{4.2em}cp{4.2em}c}
+ \__nju_cover_box:n {年\hfill 级}
+ & \__nju_cover_uline_b:n {\l__nju_info_grade_tl}
+ & \__nju_cover_box:n {学\hfill 号}
+ & \__nju_cover_uline_b:n {\l__nju_info_id_tl}\\
+ \end{tabular}\\
+
+ \begin{tabular}{p{4.2em}c}
+ \__nju_cover_box:n {学\hfill 生\hfill 姓\hfill 名}
+ & \__nju_cover_uline_a:n {\l__nju_info_author_tl}
+ \end{tabular}\\
+ \begin{tabular}{p{4.2em}cp{4.2em}c}
+ \__nju_cover_box:n {导\hfill 师}
+ & \__nju_cover_uline_b:n {\l__nju_info_supv_a_tl}
+ & \__nju_cover_box:n {职\hfill 称}
+ & \__nju_cover_uline_b:n {\l__nju_info_supv_a_title_tl}\\
+
+ % 第二导师
+ \tl_if_empty:NF \l__nju_info_supv_b_tl
+ {
+ \__nju_cover_box:n {第\hfill 二\hfill 导\hfill 师}
+ & \__nju_cover_uline_b:n {\l__nju_info_supv_b_tl}
+ & \__nju_cover_box:n {职\hfill 称}
+ & \__nju_cover_uline_b:n {\l__nju_info_supv_b_title_tl}\\
+ }
+ \end{tabular}\\
+
+ \begin{tabular}{p{4.2em}c}
+ \__nju_cover_box:n {提\hfill 交\hfill 日\hfill 期}
+ & \__nju_cover_uline_a:n {\l__nju_submit_date_tl}\\
+ \end{tabular}
+ }
+ {
+ \begin{tabular}{p{6em}c}
+ \__nju_cover_title_breakline:
+ \__nju_cover_box:n {作\hfill 者\hfill 姓\hfill 名}
+ & \__nju_cover_uline_a:n {\l__nju_info_author_tl}\\
+ \__nju_cover_box:n {专\hfill 业\hfill 名\hfill 称}
+ & \__nju_cover_uline_a:n {\l__nju_major_tl}\\
+ \__nju_cover_box:n {研\hfill 究\hfill 方\hfill 向}
+ & \__nju_cover_uline_a:n {\l__nju_field_tl}\\
+ \__nju_cover_box:n {指\hfill 导\hfill 教\hfill 师}
+ & \__nju_cover_uline_a:n {\l__nju_info_supv_full_tl}\\
+ \end{tabular}
+ }
+}
+\cs_new_protected:Npn \__nju_print_cover_nl:
+{
+ \thispagestyle{empty}
+ \pdfbookmark[0]{国家图书馆封面}{nl}
+ {
+ % 顶端
+ \hspace{0mm}
+ \vskip -20mm \hskip -15mm
+ \songti\zihao{-4}
+ \makebox[40pt][l]{分类号}
+ \__nju_cover_uline_b:n {\l__nju_info_classif_tl}
+ \hfill
+ \makebox[40pt][l]{密级}
+ \__nju_cover_uline_b:n {\l__nju_info_seclv_tl}
+ \vskip 10pt \hskip -15mm
+ \makebox[40pt][l]{UDC}
+ \__nju_cover_uline_b:n {\l__nju_info_udc_tl}
+ }
+
+ % 中部
+ \vskip\stretch{2}
+ \begin{center}
+ \def\ULthickness{1pt}
+ {\kaishu\zihao{-0} 学\hspace{0.5em}位\hspace{0.5em}论\hspace{0.5em}文}
+ {
+ \kaishu\zihao{1}
+ \vskip \stretch{1}
+ \__nju_cover_uline_b:n {\l__nju_info_title_a_tl}\\
+ \__nju_cover_uline_b:n {\l__nju_info_title_b_tl}\\
+ \__nju_cover_uline_b:n {\l__nju_info_title_c_tl}\\
+ }
+ \vskip \stretch{1}
+ {\kaishu\zihao{4}(题名和副题名)}
+ \vskip \stretch{1} \vskip 5mm
+ {\kaishu\zihao{1}\uline{\makebox{\l__nju_info_author_tl}}}
+ \vskip \stretch{1}
+ {\kaishu\zihao{4}(作者姓名)}
+ \end{center}
+
+ % 底部
+ \vskip\stretch{1}
+ {
+ \kaishu\zihao{4}
+ \noindent 指导教师姓名、职务、职称、学位、单位名称及地址%
+ \__nju_cover_uline_nl:nn {94pt}{\l__nju_info_supv_a_tl}\par
+ \noindent\__nju_cover_uline_nl:nn {\textwidth}{%
+ \l__nju_info_supv_cont_tl}\par
+ \noindent 申请学位级别%
+ \__nju_cover_uline_nl:nn {9em}{\c__nju_name_degree_tl}%
+ \noindent 专业名称%
+ \uline{\hfill\l__nju_major_tl\hfill}\par% 需要调整下划线长度
+ \noindent 论文提交日期%
+ \__nju_cover_uline_nl:nn {9em}{\l__nju_submit_date_tl}%
+ 论文答辩日期%
+ \uline{\hfill\l__nju_defend_date_tl\hfill}\par% 需要调整下划线长度
+ \noindent 学位授予单位和日期\uline{\hfill}\par
+ \noindent\hfill 答辩委员会主席:%
+ \__nju_cover_uline_nl:nn {9em}{\l__nju_info_chairman_tl}\par
+ \noindent\hfill 评阅人:%
+ \__nju_cover_uline_nl:nn {9em}{\l__nju_info_reviewer_a_tl}\par
+ \noindent\hfill\__nju_cover_uline_nl:nn {9em}{\l__nju_info_reviewer_b_tl}\par
+ \noindent\hfill\__nju_cover_uline_nl:nn {9em}{\l__nju_info_reviewer_c_tl}\par
+ \noindent\hfill\__nju_cover_uline_nl:nn {9em}{\l__nju_info_reviewer_d_tl}\par
+
+ \begin{center}
+ \kaishu\zihao{3}\hspace{2em} 年\hspace{1em} 月\hspace{1em} 日
+ \end{center}
+ \vskip -10mm
+ }
+ \cleardoublepage
+}
+\cs_new_protected:Npn \__nju_print_cover_ug:
+{
+ \thispagestyle{empty}
+ \pagenumbering{Roman}
+ % Start
+ \pdfbookmark{封面}{封面} % 将封面插入pdf书签
+ \begin{spacing}{1.25}
+ \vskip 0mm
+ \hspace{-10mm}
+ \includegraphics[height=3cm]{njulogo}\smallskip
+ \begin{center}
+ \includegraphics[height=3.35cm]{njuname}
+ \vskip 10mm
+ {\zihao{1}\makebox[9em][s]{\bf{\songti\l__nju_info_type_tl_name}}}
+ \vfill
+ \vskip\stretch{0}
+ {\bgroup
+ \kaishu\zihao{3}
+ \def\tabcolsep{1pt}
+ \def\arraystretch{1.5}
+ % 绘制信息框
+ \__nju_print_covertab:
+ \egroup}
+ \vfill
+ \end{center}
+ \end{spacing}
+ \cleardoublepage
+ % \vfill
+ % \newpage
+}
+\cs_new_protected:Npn \__nju_print_cover_g:
+{
+ \thispagestyle{empty}
+ \pagenumbering{Roman}
+ % Start
+ \pdfbookmark{封面}{封面} % 将封面插入pdf书签
+ \begin{spacing}{1.25}
+ \begin{center}
+ \hspace{0pt} \vskip 5mm
+ \includegraphics[height=1.9cm]{njulogo}
+ \vskip 10mm
+ \includegraphics[height=2cm]{njuname-large}
+ \vskip 15mm
+ {\zihao{1}\makebox[10em][s]{\bf{\kaishu\l__nju_info_type_tl_name}}}
+ \vskip 5mm
+ {\zihao{1}\bf{\kaishu{(申请\c__nju_name_degree_tl 学位)}}}
+ \par\vfill
+ \vskip\stretch{0}
+ {\bgroup
+ \bf\kaishu\zihao{3}
+ \def\tabcolsep{1pt}
+ \def\arraystretch{1.5}
+ \vskip 10mm
+ % 绘制信息框
+ \__nju_print_covertab:
+ \egroup}
+ \vfill
+ \vskip 10mm
+ \bf\kaishu\zihao{4}\l__nju_submit_date_tl
+ \vskip 15mm
+ \end{center}
+ \end{spacing}
+
+ \newpage % 封面背面
+ \thispagestyle{empty}
+ \begin{spacing}{1.625}
+ % TODO: 等待调整格式
+ \hspace{0pt} \vfill
+ {\bgroup
+ \kaishu\zihao{3}
+ \makebox[6em][s]{\bf\kaishu 学\hfill 号}:\MakeUppercase{\l__nju_info_id_tl}
+ \par
+ \makebox[6em][s]{\bf\kaishu 论文答辩日期}:\l__nju_defend_date_tl
+ \par
+ \makebox[6em][s]{\bf\kaishu 指\hfill 导\hfill 教\hfill 师}:\hspace{50mm}(签字)
+ \par
+ \egroup}
+ \vskip 15mm
+ \end{spacing}
+ \cleardoublepage
+}
+\cs_new_protected:Npn \__nju_print_cover_en:
+{
+ \thispagestyle{empty}
+ \pdfbookmark{英文封面}{English~cover} % 将封面插入pdf书签
+ \begin{center}
+ \vspace*{20pt}
+ \bf\sffamily\zihao{2}\l__nju_info_title_en_tl
+ \vskip \stretch{1}
+ \normalfont\rmfamily\zihao{4}{by}
+ \vskip 3pt
+ \bf\sffamily\zihao{4}\l__nju_info_author_en_tl
+ \vskip\stretch{1}
+ \normalfont\rmfamily\zihao{4}{Supervised~by}
+ \vskip 3pt
+ \normalfont\sffamily\zihao{4}\l__nju_info_supv_a_title_en_tl
+ \hspace{.5em}\l__nju_info_supv_a_en_tl
+ \vskip\stretch{1}
+ \normalsize\rmfamily{%
+ A~dissertation~submitted~to\\
+ the~graduate~school~of~Nanjing~University\\
+ in~partial~fulfilment~of~the~requirements~for~the~degree~of\\
+ {\textsc{\c__nju_name_degree_en_tl}}\\
+ in\\
+ {\l__nju_major_en_tl}
+ }
+ \vskip\stretch{2}
+ \includegraphics[width=2.5cm]{njulogo} \\
+ \vskip 3mm
+ \normalfont\l__nju_info_dept_en_tl\\
+ {Nanjing~University}
+ \vskip 30pt
+ \normalfont\normalsize\l__nju_submit_date_en_tl
+ \end{center}
+ \normalfont
+ \cleardoublepage
+}
+\tl_set:Nn \maketitle
+{%
+ \str_if_eq:NNTF { \l__nju_info_degree_tl } { ug }
+ {
+ \__nju_print_cover_ug: % 本科封面
+ }
+ {
+ \bool_if:NT \g__nju_nlcover_bool { \__nju_print_cover_nl: } % 国家图书馆封面
+ \__nju_print_cover_g: % 研究生封面
+ \__nju_print_cover_en: % 英文封面
+ }
+}
+\NewDocumentCommand \keywords {m} {%
+ \par\vspace{2ex}\noindent%
+ {\kaishu\zihao{-4}\makebox[4em][s]{关键词{:}}}~{#1}%
+}
+\NewDocumentCommand \englishkeywords {m} {%
+ \par\vspace{2ex}\noindent%
+ {KEYWORDS{:}}~~{#1}%
+}
+\str_if_eq:NNTF {\l__nju_info_degree_tl} { ug }
+{
+ % 本科摘要环境
+ \NewDocumentEnvironment{abstract} {}
+ {%
+ % \pagestyle{plain}
+ % \pagenumbering{Roman}
+ % \phantomsection\addcontentsline{toc}{chapter}{中文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{中文摘要}{中文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{
+ \uuline{南京大学本科生毕业论文(设计、作品)中文摘要}}}
+ \end{center}
+ {\bgroup
+ \kaishu\zihao{-4}
+ \tl_set:Nn \tabcolsep {0pt}
+ \tl_set:Nn \arraystretch {0.8}
+ \noindent
+ 题目: \l__nju_info_title_tl \\
+ 院系: \l__nju_info_dept_tl \\
+ 专业: \l__nju_major_tl \\
+ 本科生姓名: \l__nju_info_author_tl \\
+ 指导教师(姓名、职称):\l__nju_info_supv_full_tl \\
+ 摘要:
+ \egroup
+ }
+ \kaishu\zihao{-4}\par%
+ }{%
+ \newpage
+ }
+
+ % 英文摘要
+ \NewDocumentEnvironment{englishabstract} {}
+ {%
+ \pagestyle{plain}
+ % \phantomsection\addcontentsline{toc}{chapter}{英文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{英文摘要}{英文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{\uuline{
+ 南京大学本科生毕业论文(设计、作品)英文摘要}}}
+ \end{center}
+ {
+ \bgroup
+ THESIS: ~~\l__nju_info_title_en_tl \\
+ DEPARTMENT: ~~\l__nju_info_dept_en_tl \\
+ SPECIALIZATION: ~~\l__nju_major_en_tl \\
+ UNDERGRADUATE:~~\l__nju_info_author_en_tl \\
+ MENTOR:~~\l__nju_info_supv_full_en_tl \\
+ ABSTRACT:
+ \egroup
+ }
+ \zihao{-4}\par%
+ }{%
+ \cleardoublepage
+ \newpage
+ }
+}
+{
+ % 研究生摘要环境
+ \NewDocumentEnvironment{abstract} {}
+ {%
+ \pagestyle{plain}
+ \pagenumbering{Roman}
+ % \phantomsection\addcontentsline{toc}{chapter}{中文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{中文摘要}{中文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{\uuline{
+ 南京大学研究生毕业论文中文摘要首页用纸}}}
+ \end{center}
+
+ \bgroup
+ \kaishu\zihao{4}
+ \tl_set:Nn \tabcolsep {0pt}
+ \tl_set:Nn \arraystretch {0.8}
+ \noindent
+ 毕业论文题目:\hspace{0.5em}\nju_underline:n {\l__nju_info_title_tl\hfill}\\
+ \uline{\makebox[9em]{\l__nju_major_tl}}专业
+ \uline{\makebox[4em]{\l__nju_info_grade_tl}}级
+ \str_if_eq:NNTF {\l__nju_info_degree_tl} { phd } {博}{硕}
+ 士生姓名:\uline{\hfill\l__nju_info_author_tl\hfill} \\
+ 指导教师(姓名、职称):\uline{\hfill\l__nju_info_supv_full_tl\hfill}\par
+ \egroup
+
+ \kaishu\zihao{4}\par%
+ }{%
+ \newpage
+ }
+
+ % 英文摘要
+ \NewDocumentEnvironment{englishabstract} {}
+ {%
+ \pagestyle{plain}
+ % \phantomsection\addcontentsline{toc}{chapter}{英文摘要} % 将摘要插入目录和pdf书签
+ \pdfbookmark[0]{英文摘要}{英文摘要} % 将摘要插入pdf书签,与上一行不可共存
+ \begin{center}
+ \kaishu\zihao{-2}{\textbf{\uuline{
+ 南京大学研究生毕业论文英文摘要首页用纸}}}
+ \end{center}
+ {
+ \bgroup
+ \zihao{4}
+ THESIS: ~~\l__nju_info_title_en_tl \\
+ SPECIALIZATION: ~~\l__nju_major_en_tl \\
+ POSTGRADUATE:~~\l__nju_info_author_en_tl \\
+ MENTOR:~~\l__nju_info_supv_full_en_tl\par
+ \egroup
+ }
+ \zihao{4}\par%
+ }{%
+ \cleardoublepage
+ \newpage
+ }
+}
+\endinput
+%%
+%% End of file `njuthesis.cls'.
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 8a4ccdc017e..0f6192804e8 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -3019,6 +3019,7 @@ my $core_latex = "$Master/texmf-dist/tex/latex";
'mluexercise' => 'tex',
'mylatexformat'=> 'pdflatex',
'nameauth' => 'pdflatex-preserve-pdf',
+ 'njuthesis' => 'etex',
'notespages' => 'latex', # requires interaction
'nwafuthesis' => 'xetex',
'nwejm' => 'tex',