summaryrefslogtreecommitdiff
path: root/macros/unicodetex/latex/njuthesis/profile
diff options
context:
space:
mode:
Diffstat (limited to 'macros/unicodetex/latex/njuthesis/profile')
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/abstract.sty136
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/components.sty173
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/cover.sty251
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/font.sty219
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/packages.sty71
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/page.sty54
-rw-r--r--macros/unicodetex/latex/njuthesis/profile/reference.sty68
7 files changed, 972 insertions, 0 deletions
diff --git a/macros/unicodetex/latex/njuthesis/profile/abstract.sty b/macros/unicodetex/latex/njuthesis/profile/abstract.sty
new file mode 100644
index 0000000000..37814cef13
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/abstract.sty
@@ -0,0 +1,136 @@
+\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/macros/unicodetex/latex/njuthesis/profile/components.sty b/macros/unicodetex/latex/njuthesis/profile/components.sty
new file mode 100644
index 0000000000..4a24fe4f59
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/components.sty
@@ -0,0 +1,173 @@
+\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/macros/unicodetex/latex/njuthesis/profile/cover.sty b/macros/unicodetex/latex/njuthesis/profile/cover.sty
new file mode 100644
index 0000000000..8293e64780
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/cover.sty
@@ -0,0 +1,251 @@
+\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/macros/unicodetex/latex/njuthesis/profile/font.sty b/macros/unicodetex/latex/njuthesis/profile/font.sty
new file mode 100644
index 0000000000..d939fb4842
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/font.sty
@@ -0,0 +1,219 @@
+\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/macros/unicodetex/latex/njuthesis/profile/packages.sty b/macros/unicodetex/latex/njuthesis/profile/packages.sty
new file mode 100644
index 0000000000..029488b787
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/packages.sty
@@ -0,0 +1,71 @@
+\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/macros/unicodetex/latex/njuthesis/profile/page.sty b/macros/unicodetex/latex/njuthesis/profile/page.sty
new file mode 100644
index 0000000000..e926fa73ea
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/page.sty
@@ -0,0 +1,54 @@
+\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/macros/unicodetex/latex/njuthesis/profile/reference.sty b/macros/unicodetex/latex/njuthesis/profile/reference.sty
new file mode 100644
index 0000000000..4087f9f561
--- /dev/null
+++ b/macros/unicodetex/latex/njuthesis/profile/reference.sty
@@ -0,0 +1,68 @@
+\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}{假设}{假设}