summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-09-17 22:10:41 +0000
committerKarl Berry <karl@freefriends.org>2021-09-17 22:10:41 +0000
commit7210b839ac193714ca7af5b9ec8390955092109a (patch)
treedcc8563268a4a4fca8a4dc91ef97fa1ff3646e16 /Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls
parent66b849234d54e78bbcce21445db4c6a26d72efac (diff)
njuthesis (17sep21)
git-svn-id: svn://tug.org/texlive/trunk@60529 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls')
-rw-r--r--Master/texmf-dist/tex/latex/njuthesis/njuthesis.cls1239
1 files changed, 1166 insertions, 73 deletions
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'.