\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}