Skip to content
Snippets Groups Projects
njuthesis.dtx 64.5 KiB
Newer Older
Yu Xiong's avatar
Yu Xiong committed
%
%
% \begin{macro}{\@@_load_cjk_font_macos:}
% macOS 字体
Yu Xiong's avatar
Yu Xiong committed
%    \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,      
    % 参考CTeX手册第9节 LuaLATEX 下的中文支持方式
    % AlternateFont =
    %   {
    %   {⟨character range1⟩} {⟨alternate font name1⟩} 
    %   {⟨alternate font features2⟩} ,
    %   ......
    %   }
  ]
\setCJKfamilyfont{zhnewhei}{PingFang~SC}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
%
% \begin{macro}{\@@_load_cjk_font_fandol:}
% Fandol 字体
Yu Xiong's avatar
Yu Xiong committed
%    \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]
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
%
% \begin{macro}{\@@_load_cjk_font_founder:}
%  方正字符集(简繁扩展)
Yu Xiong's avatar
Yu Xiong committed
%    \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 
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
%
% \begin{macro}{\@@_load_cjk_font_noto:}
% 思源字体
Yu Xiong's avatar
Yu Xiong committed
%    \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]
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
% 载入设置的字体
Yu Xiong's avatar
Yu Xiong committed
%    \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}}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% 设置数学字体 (XITS, 或者 STIX, 与 Times New Roman 最为相近)
% \setmathfont{STIXTwoMath-Regular}[Extension = .otf]
\setmathfont{XITSMath-Regular}[
  BoldFont = XITSMath-Bold,
  Extension = .otf]
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
%
% \subsection{页面样式}
%
% \subsubsection{页眉页脚}
Yu Xiong's avatar
Yu Xiong committed
%
% Put text here.
%    \begin{macrocode}
\RequirePackage{fancyhdr} % 调整页眉页脚
% 本科生页眉页脚 
\fancypagestyle{njuplain}{%
   \fancyhead{}               
   \fancyfoot[C]{\zihao{5}\thepage} % 页脚居中 五号新罗马体数字
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
% TODO: 研究生页眉页脚 
\fancypagestyle{njuheadings}{%
   \fancyhead{}               
   \fancyfoot[C]{\zihao{5}\thepage}        
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}} % 研究生有页眉页脚
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
\cs_set:Npn \CTEX@addtocline #1#2
{ 
  \addcontentsline { toc } {#1} 
  { \use:c { CTEX@#1@tocline } {#1} {#2} } 
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% \begin{environment}{preface}
Yu Xiong's avatar
Yu Xiong committed
% Put text here.
%    \begin{macrocode}
% 定制前言、致谢环境
\NewDocumentEnvironment{preface}{}
{%
  \chapter*{前言}
  \addcontentsline{toc}{chapter}{前言}
}{}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
% \begin{environment}{acknowledgement}
Yu Xiong's avatar
Yu Xiong committed
% 单独制作的致谢页。
%    \begin{macrocode}
\NewDocumentEnvironment{acknowledgement}{}
{%
  \chapter*{致谢}
  \addcontentsline{toc}{chapter}{致谢}
}{}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
% Put text here.
%    \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)
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}}{}
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}{假设}{假设}
Yu Xiong's avatar
Yu Xiong committed
%    \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%
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
\lstdefinestyle{LaTeX}{
  language=TeX,
  morekeywords={
    begin, caption, label, mathrm, frac, 
    toprule, midrule, bottomrule, includegraphics}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
% list configuration
\renewcommand{\labelitemi}{\tiny$\blacktriangleright$}
\renewcommand{\labelitemii}{\textbullet}

\setlist[itemize]{noitemsep}
\setlist[enumerate]{noitemsep}
\setlist[description]{noitemsep}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
\let\oldproofname=\proofname
\renewcommand*{\proofname}{\rm\bf\songti{\oldproofname}} % 修改证明环境标题
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% \subsection{封面绘制}
Yu Xiong's avatar
Yu Xiong committed
%    \begin{macrocode}
\tl_const:Nn \l_@@_info_title_tl 
{
  \l_@@_info_title_a_tl
  \l_@@_info_title_b_tl
  \l_@@_info_title_c_tl
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
Yu Xiong's avatar
Yu Xiong committed
%    \begin{macrocode}
\tl_if_empty:NTF \l_@@_info_supv_b_tl
{
  \tl_const:Nn \l_@@_info_supv_full_tl
     \l_@@_info_supv_a_tl\hspace{.5em}
     \l_@@_info_supv_a_title_tl
  \tl_const:Nn \l_@@_info_supv_full_tl_en
    \l_@@_info_supv_a_en_tl\hspace{.5em}
    \l_@@_info_supv_a_title_en_tl
{ 
  \tl_const:Nn \l_@@_info_supv_full_tl
    \l_@@_info_supv_a_tl\hspace{.5em}
    \l_@@_info_supv_a_title_tl\hspace{1em}
    \l_@@_info_supv_b_tl\hspace{.5em}
    \l_@@_info_supv_b_title_tl
  \tl_const:Nn \l_@@_info_supv_full_tl_en
    \l_@@_info_supv_a_en_tl\hspace{.5em}
    \l_@@_info_supv_a_title_en_tl\hspace{1em}
    \l_@@_info_supv_b_en_tl\hspace{.5em}
    \l_@@_info_supv_b_title_en_tl
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \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 \nju_nl_cover
} 
{ 
  % 本科以外都是研究生 
  \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_case_e:nn { \l_@@_info_degree_tl }
    { mg } { \tl_const:Nn \c_@@_name_degree_tl { 硕士 } }
    { mf } { \tl_const:Nn \c_@@_name_degree_tl { 硕士专业 } }
    { phd } { \tl_const:Nn \c_@@_name_degree_tl { 博士 } }
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% \begin{macro}{\@@_cover_uline_a:n}
% 在封面绘制下划线
Yu Xiong's avatar
Yu Xiong committed
%    \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}
%
% Put text here.
%    \begin{macrocode}
% 封面表格边框
\cs_new:Npn \@@_cover_box:n #1 
{
  \makebox[\c_@@_cover_box_len_tl][s]{
    #1\c_@@_cover_uline_bskip_tl}
}
%    \end{macrocode}
%
% Put text here.
%    \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 计 }
% \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 } \\
      }
  }
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
Yu Xiong's avatar
Yu Xiong committed
%
% Put text here.
% 封面信息栏 本科
%    \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}
  } 
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%
% Put text here.
%    \begin{macrocode}
% 绘制封面命令
\tl_new:N \nju_printcover_nl % 国家图书馆封面
\tl_new:N \nju_printcover_ug % 本科封面
\tl_new:N \nju_printcover_g % 研究生封面
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
% 按需绘制国家图书馆封面,修改自旧模板
\bool_if:NT \nju_nl_cover
{
  \tl_set:Nn \nju_printcover_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
  }
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
% 本科封面
\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\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
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
% 研究生封面
\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=2cm]{njuname-large}
    \vskip 15mm 
    {\zihao{1}\makebox[10em][s]{\bf{\kaishu\l_@@_info_type_tl_name}}}
    {\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}
    \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
}
Yu Xiong's avatar
Yu Xiong committed
%    \end{macrocode}
%
% Put text here.
%    \begin{macrocode}
% 重定义maketitle生成封面