\subsection{\file{hduthesis-pg.config-module.code} 的实现} 由于模块 \file{pg.config} 是通过命令 \cs{__hduthesis_docinfo_degree_if_aux:} 在命令 \cs{DocInfo} 中加载的,所以需要在此模块前后用 \cmd{\ExplSyntaxOn \makeatletter} 和 \cmd{\makeatother \ExplSyntaxOff} 包裹. 提供模块 \file{pg.config} 文件 \begin{minted} [ linenos, bgcolor = bg, breaklines ] {tex} \hduthesis_provide_module:n {pg.config} \end{minted} 设置页面布局、页眉、目录页码格式 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \geometry { top = 2.8cm, bottom = 3.2cm, left = 3.2cm, right = 3.2cm, headheight = 15pt, headsep = .72cm, footskip = 1.5cm } \fancyhead[C] { \raisebox { .12ex } { \small 杭州电子科技大学硕士学位论文 } } \hook_gput_code:nnn { cmd/tableofcontents/after } { . } { \clearpage \pagenumbering{arabic} \cfoot{\small \thepage} } \end{minted} 使用辅助函数 \cs{__hduthesis_cover_pg_aux:} 重定义 \cs{maketitle} 命令,用于生成封面与扉页,并对其单独设置页面布局 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \RenewDocumentCommand \maketitle {} { \newgeometry{margin = 2.75cm} \begin{titlepage} \__hduthesis_cover_pg_aux: \end{titlepage} \titlepage \__hduthesis_cnoverleaf_pg_aux: \endtitlepage \titlepage \__hduthesis_enoverleaf_pg_aux: \endtitlepage \restoregeometry \pagenumbering{Roman} \cfoot {\small \thepage} } \end{minted} 使用辅助函数 \cs{__hduthesis_cover_pg_aux:} 重定义封面页的内容 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Nn \__hduthesis_cover_pg_aux: { \begin{center} \null \includegraphics[height = 2.35cm]{hdutitle} \par \vspace*{40\p@} { \LARGE\__hduthesis_cover_spread_box:nn {.575\linewidth} {硕士学位论文} } \par\vspace*{100\p@} \semiLarge 题 \qquad 目: \__hduthesis_cover_center_box:nn { .75\linewidth } { \kaishu \@title } \vspace*{24\p@}\par \begin{tabular} { >{\semiLarge\centering\arraybackslash}p{4\ccwd}@{} >{\semiLarge\centering\arraybackslash\kaishu}p{.65\linewidth}@{} } \__hduthesis_cover_spread_box:nn { 4\ccwd } { 研究生 } & \__hduthesis_cover_center_box:nn { .96\linewidth } { \@author }\\ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 专业 } & \__hduthesis_cover_center_box:nn { .96\linewidth } { \l__docinfo_major_tl }\\ \__hduthesis_cover_spread_box:nn { 4\ccwd } { 指导教师 } & \__hduthesis_cover_center_box:nn { .96\linewidth } { \l__docinfo_cnsupervisor_tl \qquad \l__docinfo_cnrole_tl }\\[13.5ex] \semilarge 完成日期 & \__hduthesis_cover_center_box:nn { .96\linewidth } { \semilarge \textsf{\int_use:N \c_sys_year_int} 年 \textsf{\int_use:N \c_sys_month_int} 月 } \end{tabular} \end{center} } \end{minted} 使用辅助函数 \cs{__hduthesis_cnoverleaf_pg_aux:} 重定义中文扉页的内容 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Nn \__hduthesis_cnoverleaf_pg_aux: { \begin{center} \vspace*{25\p@} { \LARGE 杭州电子科技大学硕士学位论文 } \vspace*{140\p@} \par \begin{spacing}{1.15} \huge\textsf{ \@title } \end{spacing} \vspace*{128\p@} \par \begin{tabular}{>{\semiLarge}p{6.25\ccwd}>{\semiLarge\kaishu}l} \__hduthesis_cover_spread_box:nn { 4\ccwd } {研究生}:& \__hduthesis_cover_spread_box:nn { 4\ccwd } { \@author }\\[2ex] \__hduthesis_cover_spread_box:nn { 4\ccwd } {指导教师}:& \__hduthesis_cover_spread_box:nn { 4\ccwd } { \l__docinfo_cnsupervisor_tl } \hskip1.5em \l__docinfo_cnrole_tl \end{tabular} \par \vspace{60\p@} \semilarge \textsf{\int_use:N \c_sys_year_int} \kaishu 年 \textsf{\int_use:N \c_sys_month_int} \kaishu 月 \end{center} } \end{minted} 使用辅助函数 \cs{__hduthesis_enoverleaf_pg_aux:} 重定义英文扉页的内容 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Nn \__hduthesis_enoverleaf_pg_aux: { \begin{center} \vspace*{16\p@}{\bfseries \semilarge Dissertation~Submitted~to~Hangzhou~Dianzi~University\\[.8ex] for~the~Degree~of~Master} \vspace*{120\p@} \par \begin{spacing}{1.12} \huge\bfseries\l__docinfo_entitle_tl \end{spacing} \vspace*{112\p@} \par \begin{tabular} { >{\bfseries\large}l >{\bfseries\large}l } \__hduthesis_cover_spread_box:nn { 5em } {Candidate:~} & \l__docinfo_enauthor_tl\\[3ex] \__hduthesis_cover_spread_box:nn { 5em } {Supervisor:~} & \l__docinfo_enrole_tl{}~ \l__docinfo_ensupervisor_tl \\[11ex] \end{tabular} \vspace*{8\p@}\par \bfseries \large \clist_item:Nn \g_system_month_clist { \int_use:N \c_sys_month_int },~ \int_use:N \c_sys_year_int \end{center} } \end{minted} 使用辅助函数 \cs{__hduthesis_commitment_pg_aux:} 定义 \cs{commitment} 命令,用于生成承诺书页面. 该命令接收一个可选参数,用于添加签名图片与日期 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \NewDocumentCommand \commitment { O{} } { \cfoot {} \newgeometry{margin = 2.75cm} \titlepage \__hduthesis_commitment_pg_aux:n {#1} \endtitlepage \restoregeometry \cfoot {\small \thepage} } \end{minted} 使用辅助函数 \cs{__hduthesis_commitment_pg_aux:} 定义承诺书页面的内容 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Npn \__hduthesis_commitment_pg_aux:n #1 { \vspace*{-12\p@} \begin{center} \large 杭州电子科技大学\\[1ex] 学位论文原创性声明和使用授权说明 \end{center} \vspace*{20\p@} \begin{center} \semilarge 原创性声明 \end{center} \par \vspace*{.4\baselineskip} \begin{spacing}{1.65} 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。 除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。\par \noindent 申请学位论文与资料若有不实之处,本人承担一切相关责任。 \par \vspace*{1.25\baselineskip} \noindent \makebox[.45\linewidth][l] { 论文作者签名: \__hduthesis_signature_process_aux:nnn {#1}{1}{0} \tl_if_empty:NF \l__hduthesis_signature_figure_tl { \signature { \l__hduthesis_signature_figure_tl } \tl_clear:N \l__hduthesis_signature_figure_tl } } 日期: \makebox [ 2.5em ] [ l ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{1} } 年 \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{2} } 月 \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{3} } 日 \par\vspace*{20\p@} \begin{center} \semilarge 学位论文使用授权说明 \end{center} \par \vspace*{.4\baselineskip} 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定, 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。 本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容, 可以允许采用影印、缩印或其它复制手段保存论文。(保密论文在解密后遵守此规定) \par \vspace*{1.25\baselineskip} \noindent \makebox[.45\linewidth][l] { 论文作者签名: \__hduthesis_signature_process_aux:nnn {#1}{2}{0} \tl_if_empty:NF \l__hduthesis_signature_figure_tl { \signature { \l__hduthesis_signature_figure_tl } \tl_clear:N \l__hduthesis_signature_figure_tl } } 日期: \makebox [ 2.5em ] [ l ] { \__hduthesis_signature_process_aux:nnn {#1}{2}{1} } 年 \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{2}{2} } 月 \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{2}{3} } 日 \par \vspace*{\baselineskip} \noindent \makebox[.45\linewidth][l] { 指导教师签名: \__hduthesis_signature_process_aux:nnn {#1}{3}{0} \tl_if_empty:NF \l__hduthesis_signature_figure_tl { \signature { \l__hduthesis_signature_figure_tl } \tl_clear:N \l__hduthesis_signature_figure_tl } } 日期: \makebox [ 2.5em ] [ l ] { \__hduthesis_signature_process_aux:nnn {#1}{3}{1} } 年 \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{3}{2} } 月 \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{3}{3} } 日 \end{spacing} } \end{minted} 重新定义摘要环境,该环境接收一个可选参数,用于生成中英文摘要页面,默认为英文页面 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \RenewDocumentEnvironment {abstract} { O{en} } { \str_if_eq:nnT {#1} {en} { \tl_set:Nn \l__keywords_name_tl {Keywords:~} \tl_set:Nn \l__keywords_sep_tl {,~} \@beginparpenalty\@lowpenalty \chapter*{\normalfont\bfseries Abstract} \addcontentsline{toc}{chapter}{\bfseries Abstract} } \str_if_eq:nnT {#1} {cn} { \tl_set:Nn \l__keywords_name_tl {\textsf{关键词:}} \tl_set:Nn \l__keywords_sep_tl {,} \@beginparpenalty\@lowpenalty \chapter*{摘要} \addcontentsline{toc}{chapter}{摘要} } } { \tl_clear:N \l__abstract_name_tl \clearpage } \end{minted} 新建一个列表 \cs{l__abstract_keywords_clist} 保存关键词,定义 \cs{keywords} 命令,通过 \env{abstract} 环境的可选参数来以不同的分隔符输出关键词 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \clist_new:N \l__abstract_keywords_clist \NewDocumentCommand \keywords { m } { \par \vspace*{\baselineskip} \noindent\textbf{\l__keywords_name_tl} \clist_set:Nn \l__abstract_keywords_clist {#1} \clist_use:Nn \l__abstract_keywords_clist {\l__keywords_sep_tl} } \end{minted} 加载 \pkg{tocloft} 宏包,重新定义目录页的格式 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \RequirePackage{tocloft} \renewcommand \contentsname {\hfill 目录 \hfill} \renewcommand* \cfttoctitlefont{\sffamily\semiLarge} \dim_set:Nn \cftbeforetoctitleskip {12pt} \dim_set:Nn \cftaftertoctitleskip {24pt} \dim_set:Nn \cftbeforechapskip {1pt} \dim_set:Nn \cftbeforesecskip {-.2pt} \end{minted} 对 \hologo{LaTeX2e} 中用于生成目录导向线的宏 \cs{@dottedtocline} 打补丁,更改导向线密度 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \patchcmd { \@dottedtocline } { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } } { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{.}\mkern .4 mu$ } } {}{} \end{minted} 更改目录章节的项目间距、字体格式、导向线密度和目录深度 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}} \renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}} \renewcommand* \@dotsep {1.7} \renewcommand* \@pnumwidth {2.5ex} \renewcommand* \cftchapfont {\normalfont} \setcounter{tocdepth}{1} \end{minted} 使用 \pkg{ctex} 宏包设置章节标题格式 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \ctexset { chapter = { aftername = \hspace{.5\ccwd}, fixskip = true, beforeskip = 32pt, afterskip = 32pt, format+ = \sffamily\semiLarge, pagestyle = fancy }, section = { aftername = \hspace{.5\ccwd}, fixskip = true, beforeskip = 2ex, afterskip = 2.75ex, format = \sffamily\large }, subsection = { aftername = \hspace{.5\ccwd}, fixskip = true, beforeskip = 2ex, afterskip = 2.75ex, format = \sffamily\semilarge } } \end{minted} 结束模块 \file{hduthesis-pg.config-module.code} 文件 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \endinput \end{minted}