<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
% !TEX program = XeLaTeX
%
% DO NOT REMOVE THE MARK MANUALLY (used in l3build) -&gt; %
%
%&lt;*internal&gt;
\iffalse
%&lt;/internal&gt;
%&lt;*internal&gt;
\fi
\begingroup
  \def\nameofLaTeXe{LaTeX2e}
\expandafter\endgroup\ifx\fmtname\nameofLaTeXe\else
\csname fi\endcsname
%&lt;/internal&gt;
%&lt;*install&gt;
\input docstrip
\keepsilent
\askforoverwritefalse
\preamble

    Copyright (C) 2013-2014 by Xu Cheng &lt;xucheng@me.com&gt;
                  2014-     by hust-latex &lt;https://github.com/hust-latex&gt;
                  2024-     by HUANG Yuxi &lt;hustthesis@hyxi.dev&gt;

    This work may be distributed and/or modified under the
    conditions of the LaTeX Project Public License, either
    version 1.3c of this license or (at your option) any later
    version. This version of this license is in
       https://www.latex-project.org/lppl/lppl-1-3c.txt
    and the latest version of this license is in
       https://www.latex-project.org/lppl.txt
    and version 1.3c or later is part of all distributions of LaTeX
    version 2008 or later.

    This work has the LPPL maintenance status "maintained".

    The Current Maintainer of this work is HUANG Yuxi &lt;hustthesis@hyxi.dev&gt;.

\endpreamble
\postamble

    This work consists of the files \jobname.dtx
              and the derived files \jobname.ins,
                                    \jobname.cls,
                                    \jobname-doc.sty,
                                    \jobname-m.def,
                                    \jobname-d.def,
                                    \jobname.cbx,
                                    \jobname.bbx.

\endpostamble

\generate
  {
%&lt;/install&gt;
%&lt;*internal&gt;
    \usedir{source/latex/\jobname}
    \file{\jobname.ins}{\from{\jobname.dtx}{install}}
%&lt;/internal&gt;
%&lt;*install&gt;
    \usedir{tex/latex/\jobname}
    \file{\jobname.cls}{\from{\jobname.dtx}{class}}
    \file{\jobname-doc.sty}{\from{\jobname.dtx}{doc-sty}}
    \file{\jobname-m.def}{\from{\jobname.dtx}{def-m}}
    \file{\jobname-d.def}{\from{\jobname.dtx}{def-d}}
    \file{\jobname.cbx}{\from{\jobname.dtx}{cbx}}
    \file{\jobname.bbx}{\from{\jobname.dtx}{bbx}}
  }

\Msg{*********************************************************}
\Msg{*}
\Msg{* To finish the installation you have to move the}
\Msg{* following file into a directory searched by TeX:}
\Msg{*}
\Msg{* \space\space \jobname.cls}
\Msg{* \space\space \jobname.cbx}
\Msg{* \space\space \jobname.bbx}
\Msg{* \space\space \jobname-m.def}
\Msg{* \space\space \jobname-d.def}
\Msg{* \space\space hust-title.pdf}
\Msg{*}
\Msg{* To produce the documentation run the file \jobname.dtx}
\Msg{* through LuaLaTeX.}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{*}
\Msg{*********************************************************}

\endbatchfile
%&lt;/install&gt;
%&lt;*internal&gt;
\fi
%&lt;/internal&gt;

%&lt;class&gt;\NeedsTeXFormat{LaTeX2e}[2024-11-01]
%&lt;class&gt;\ProvidesExplClass{hustthesis}
%&lt;doc-sty&gt;\ProvidesExplClass{hustthesis-doc}
%&lt;def-m&gt;\ProvidesExplFile{hustthesis-m.def}
%&lt;def-d&gt;\ProvidesExplFile{hustthesis-d.def}
%&lt;cbx&gt;\ProvidesFile{hustthesis.cbx}[Citation style for the hustthesis class]
%&lt;bbx&gt;\ProvidesFile{hustthesis.bbx}[Bibliography style for the hustthesis class]
%&lt;class|doc-sty|def-m|def-d&gt;  {2025-02-27}{2.0.0} %
%&lt;class&gt;  {Thesis Template for Huazhong University of Science and Technology}
%&lt;doc-sty&gt;  {Documentation for the hustthesis class}
%&lt;def-m&gt;  {Definition file for the hustthesis class in master thesis}
%&lt;def-d&gt;  {Definition file for the hustthesis class in doctoral thesis}
%&lt;*driver&gt;
\documentclass[]{\jobname}
\usepackage{useclass}
% Protect \maketitile from the redefinition in \cls{article} in \cls{l3doc}.
\let\maketitleold=\maketitle
\useclass*[full]{l3doc}
\let\maketitle=\maketitleold
\usepackage{\jobname-doc}
\usepackage{mdframed}
\begin{filecontents}[overwrite]{\jobname.bib}
@online{huang2024useclass,
  title = {The useclass.sty Package: Load Classes as Packages},
  author = {Huang, Yuxi},
  year = {2024},
  month = {mar},
  day = {06},
  url = {https://github.com/huangyxi/useclass},
}
@online{zeng2023fduthesis,
  title = {\cls{fduthesis}: 螟肴率螟ｧ蟄ｦ隶ｺ譁�ｨ｡譚ｿ},
  author = {譖ｾ, 逾･荳怡,
  year = {2023},
  month = {may},
  day = {27},
  url = {https://github.com/stone-zeng/fduthesis},
}
@online{sjtug2024SJTUTeX,
  title = {\cls{SJTU\TeX}: 荳頑ｵｷ莠､騾壼､ｧ蟄ｦ譁�｡｣邀ｻ髮�},
  author = {SJTUG},
  year = {2024},
  month = {feb},
  day = {18},
  url = {https://github.com/sjtug/SJTUTeX},
}
@online{njulug2023njuthesis,
  title = {蜊嶺ｺｬ螟ｧ蟄ｦ蟄ｦ菴崎ｮｺ譁�ｨ｡譚ｿ},
  author = {蜊嶺ｺｬ螟ｧ蟄ｦ~Linux~逕ｨ謌ｷ扈м,
  year = {2023},
  month = {dec},
  day = {05},
  url = {https://github.com/nju-lug/NJUThesis},
}
@online{hu2024bib,
  title = {隨ｦ蜷� GB/T 7714-2015 譬�㊥逧� biblatex 蜿り�枚迪ｮ譬ｷ蠑殉,
  author = {閭｡謖ｯ髴�},
  year = {2024},
  month = {nov},
  day = {15},
  url = {https://github.com/hushidong/biblatex-gb7714-2015},
}
\end{filecontents}
\begin{filecontents}[overwrite]{\jobname-fmt.bib}
@book{YanMingLi2006CFGZhuang,
  title = {CFG譯ｩ螟榊粋蝨ｰ蝓ｺ謚譛ｯ蜿雁ｷ･遞句ｮ櫁ｷｵ},
  author = {{髣ｫ譏守､ｼ} and {蠑�荳懷�}},
  date = {2006},
  edition = {2},
  publisher = {荳ｭ蝗ｽ豌ｴ蛻ｩ豌ｴ逕ｵ蜃ｺ迚育､ｾ},
  location = {蛹嶺ｺｬ}
}
@book{chalfi1998GreenFluo,
  title = {Green fluorescent protein: properties, applications, and protocols},
  editor = {Chalfie, Martin and {Steven R. Kain}},
  date = {1998},
  publisher = {Wiley-interscience},
  location = {Hoboken, New Jersey},
  pagetotal = {385}
}
@article{ZhanXiangHong2004ZhongYiY,
  title = {荳ｭ蛹ｻ闕ｯ髦ｲ豐ｻ髦ｿ蟆碑肩豬ｷ鮟倡羅螳樣ｪ檎�皮ｩｶ霑ｰ隕±,
  author = {{隧ｹ蜷醍ｺ｢} and {譚主ｾｷ譁ｰ}},
  date = {2004},
  journaltitle = {荳ｭ蛹ｻ闕ｯ蟄ｦ蛻笠,
  volume = {22},
  number = {11},
  pages = {2094--2096}
}
@article{lein2007Genomewide,
  title = {Genome-wide atlas of gene expression in the adult mouse brain},
  author = {Lein, Ed S. and Hawrylycz, Michael J. and Ao, Nancy and Ayres, Mikael and Bensinger, Amy and Bernard, Amy and Boe, Andrew F., et al.},
  date = {2007-01},
  journaltitle = {Nature},
  volume = {445},
  number = {7124},
  pages = {168--176},
  publisher = {Nature Publishing Group}
}
@article{bouxse2010Guidelines,
  title = {Guidelines for Assessment of bone microstructure in rodents using micro--computed tomography},
  author = {Bouxsein, Mary L and Boyd, Stephen K and Christiansen, Blaine A and Guldberg, Robert E and Jepsen, Karl J and M\"uller, Ralph},
  date = {2010},
  journaltitle = {Journal of Bone and Mineral Research},
  volume = {25},
  number = {7},
  pages = {1468--1486}
}
@inproceedings{yamaki2018Performanc,
  title = {Performance evaluation of phase-only correlation functions from the viewpoint of correlation {{Filters}}},
  booktitle = {2018 {{Asia-Pacific Signal}} and {{Information Processing Association Annual Summit}} and {{Conference}} ({{APSIPA ASC}})},
  author = {Yamaki, Shunsuke and Abet, Masahide and Kawamata, Masayuki and Yoshizawa, Makoto},
  date = {2019},
  pages = {1361--1364},
  publisher = {Proceedings of the IEEE},
  location = {Honolulu, HI, USA, 12-15 Nov. 2018}
}
@article{yao2017BuildingE,
  title = {Building efficient key-value stores via a lightweight compaction tree},
  author = {Yao, Ting and Wan, Jiguang and Huang, Ping and He, Xubin and Wu, Fei and Xie, Changsheng},
  date = {2017-11-24},
  journaltitle = {ACM Trans. Storage},
  volume = {13},
  number = {4},
  pages = {1--28}
}
@patent{LiuJiaLin1993DuoGongN,
  type = {patent},
  title = {螟壼粥閭ｽ荳谺｡諤ｧ蜴玖�譚ｿ},
  author = {蛻伜刈譫抑,
  holder = {{Individual}},
  date = {1993-04-14},
  number = {ZL92214985. 2},
  location = {荳ｭ蝗ｽ}
}
@thesis{LiQingQuan1998JiYuHun,
  type = {蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁�},
  title = {蝓ｺ莠取ｷｷ蜷育ｻ捺桷逧�ｸ臥ｻｴGIS謨ｰ謐ｮ讓｡蝙倶ｸ守ｩｺ髣ｴ蛻�梵遐皮ｩｶ},
  author = {{譚取ｸ�ｳ厭},
  namea = {{譚主ｾｷ莉±},
  nameatype = {collaborator},
  date = {1998},
  location = {豁ｦ豎厭,
  institution = {豁ｦ豎牙､ｧ蟄ｦ豁ｦ豎画ｵ狗ｻ倡ｧ第橿螟ｧ蟄ｦ}
}
\end{filecontents}
\addbibresource{\jobname-fmt.bib}
\addbibresource{\jobname.bib}

\providecommand{\name}{\jobname}
\providecommand{\clsname}{\cls{\name}}

\begin{document}
  \DocInput{\jobname.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%&lt;/driver&gt;
% \fi
%
% \changes{v2.0.0}{2024-10-01}{菴ｿ逕ｨ \LaTeX3 隸ｭ豕暮㍾譫м
% \changes{v2.0.0}{2024-10-01}{菴ｿ逕ｨ \cls{useclass} 螳樒鴫譁�｡｣邀ｻ窶懆�荳ｾ窶掵
%
% \hustsetup {
%   info =
%     {
%       title = { \clsname{} v2.0.0�壼克荳ｭ遘第橿螟ｧ蟄ｦ遐皮ｩｶ逕溷ｭｦ菴崎ｮｺ譁ⅨLaTeX{}譁�｡｣邀ｻ菴ｿ逕ｨ隸ｴ譏� }, %
%       title* = { \clsname{} v2.0.0: \LaTeX{} Thesis Template for Huazhong University of Science and Technology }, %
%       degree = { academic },
%       degree* = { Engineering },
%       author = { 鮟�ｮ�ｸ� },
%       author* = { HUANG Yuxi },
%       major = { \LaTeX{} 譁�｡｣邀ｻ隶ｾ隶｡ },
%       major* = { \LaTeX{} Template Design },
%       supervisor = { \TeX{}Book\quad{} 謨呎肢 },
%       supervisor* = { Prof.~ \TeX{}Book },
%date={2025-02-27},
%     },
% }
%
% \maketitle
% \frontmatter
% \begin{abstract}
%   \clsname{} 譏ｯ蜊惹ｸｭ遘第橿螟ｧ蟄ｦ遐皮ｩｶ逕溷ｭｦ菴崎ｮｺ譁ⅨLaTeX{}\emph{髱槫ｮ俶婿}譁�｡｣邀ｻ縲�
%   2.0.0 襍ｷ迚井ｽｿ逕ｨ \LaTeX3 隸ｭ豕暮㍾譫�ｼ悟ｹｶ荳比ｸ榊�蜈ｼ螳ｹ荵句燕逧�沿譛ｬ縲�
%   逶ｮ蜑堺ｻ�髪謖―emph{荳ｭ譁�｡募｣ｫ蜥悟忽螢ｫ}蟄ｦ菴崎ｮｺ譁��
%
%   譛ｬ譁�｡｣邀ｻ驕ｵ蠕ｪ \LaTeX{} 鬘ｹ逶ｮ蜈ｬ蜈ｱ隶ｸ蜿ｯ隸� 1.3c��\LaTeX Project Public License 1.3c 迚茨ｼ臥噪逶ｸ蜈ｳ隗�ｮ夊ｿ幄｡悟�蜿大柱菫ｮ謾ｹ縲�
%   菴ｿ逕ｨ譛ｬ譁�｡｣邀ｻ蜊ｳ陦ｨ遉ｺ謔ｨ蟾ｲ遏･謔牙ｹｶ蜷梧э隸･隶ｸ蜿ｯ隸∫噪譚｡谺ｾ縲�
%   譛ｬ譁�｡｣邀ｻ謖俄懷次譬ｷ窶晄署萓幢ｼ御ｸ埼刋蟶ｦ莉ｻ菴墓�遉ｺ謌匁囓遉ｺ逧�ｿ晁ｯ�ｼ悟桁諡ｬ菴�ｸ埼剞莠朱る楳諤ｧ謌也音螳夂畑騾皮噪騾ら畑諤ｧ縲�
%   菴懆�ｸ榊ｯｹ蝗�菴ｿ逕ｨ譛ｬ譁�｡｣邀ｻ蟇ｼ閾ｴ逧�ｻｻ菴慕峩謗･謌夜龍謗･謐溷､ｱ謇ｿ諡�ｴ｣莉ｻ縲�
%   隸ｷ蝨ｨ菫ｮ謾ｹ蜥悟�蜿第悽譁�｡｣邀ｻ譌ｶ驕ｵ蠕ｪ隶ｸ蜿ｯ隸∫噪逶ｸ蜈ｳ隕∵ｱゑｼ御ｻ･遑ｮ菫晏�螳梧紛諤ｧ蜥悟庄扈ｴ謚､諤ｧ縲�
%
%   譛ｬ鬘ｹ逶ｮ莉｣遐∵汚邂｡蝨ｨ GitHub \url{https://github.com/hust-latex/hustthesis}��
%   譛譁ｰ迚育噪 \clsname{} 譁�｡｣邀ｻ謇句�隸ｷ隶ｿ髣ｮ
%   \url{https://github.com/hust-latex/hustthesis/releases/latest/download/hustthesis.pdf}縲�
%
%   \keywords 蜊惹ｸｭ遘第橿螟ｧ蟄ｦ�帛ｭｦ菴崎ｮｺ譁�枚譯｣邀ｻ�媾LaTeX�媾LaTeX3
% \end{abstract}
%
% \begin{abstract*}
%   \clsname{} is an Unofficial \LaTeX{} thesis template for Huazhong University of Science and Technology.
%   Version 2.0.0 and later are written in \LaTeX3 and are not compatible with previous versions.
%   Currently, it only supports Science and Engineering master's and doctoral theses in Chinese.
%
%   This template is distributed and modified under the terms of the \LaTeX Project Public License 1.3c.
%   By using this template, you acknowledge and agree to the terms of this license.
%   This template is provided ``as is'' without any express or implied warranty, including but not limited to
%   merchantability or fitness for a particular purpose.
%   The author is not responsible for any direct or indirect losses arising from the use of this template.
%   Please follow the relevant requirements of the license when modifying and distributing this template
%   to ensure its integrity and maintainability.
%
%   This project is hosted on GitHub
%   \url{github.com/hust-latex/hustthesis},
%   and the latest version of the \clsname{} documentation can be found at
%   \url{github.com/hust-latex/hustthesis/releases/latest/download/hustthesis.pdf}.
%
%   \keywords* Huazhong University of Science and Technology, Dissertation Template, \LaTeX, \LaTeX3
% \end{abstract*}
%
% \tableofcontents
% \mainmatter
%
% \begin{documentation}
%
% \chapter{\clsname{} 莉狗ｻ閤
%
% \clsname{} 譏ｯ蜊惹ｸｭ遘第橿螟ｧ蟄ｦ遐皮ｩｶ逕溷ｭｦ菴崎ｮｺ譁ⅨLaTeX{}譁�｡｣邀ｻ��
% 譌ｨ蝨ｨ荳ｺ蜊守ｧ大ｭｦ逕滓署萓帑ｸ荳ｪ邂蜊穂ｸ頑焔�梧�莠惹ｽｿ逕ｨ逧�ｭｦ菴崎ｮｺ譁�枚譯｣邀ｻ縲�
%
% \section{\clsname{} 蜴�彰}
%
% 譛ｬ譁�｡｣邀ｻ |v1.x| 迚域悽逕ｱ蜊惹ｸｭ遘第橿螟ｧ蟄ｦ逕ｵ蟄蝉ｿ｡諱ｯ蟄ｦ髯｢2014螻頑悽遘醍函隶ｸ體門忽螢ｫ
% \footnote{\url{https://github.com/xu-cheng}}蠑蜿大ｹｶ扈ｴ謚､��
% 謾ｯ謖∽ｸｭ闍ｱ譁�噪譛ｬ遘代∫｡募｣ｫ蜥悟忽螢ｫ蟄ｦ菴崎ｮｺ譁�腸蜀吶�
% 菴應ｸｺ荳荳ｪ隶ｾ隶｡邊ｾ濶ｯ逧� \LaTeXe{} 譁�｡｣邀ｻ�瑚�2013蟷ｴ6譛�1譌･ |v1.0| 蛻晉沿
% 莉･ \LaTeX 鬘ｹ逶ｮ蜈ｬ蜈ｱ隶ｸ蜿ｯ隸� 1.3c��\LaTeX{} Project Public License 1.3c 迚茨ｼ牙書蟶�ｻ･譚･��
% 隸･譁�｡｣邀ｻ蟾ｲ荳ｺ譌�謨ｰ蜊守ｧ大ｭｦ蟄先署萓帑ｺ�ｼ倩ｴｨ逧�恪蜉｡縲�
%
% 辟ｶ閠鯉ｼ碁囂逹蟄ｦ譬｡蟄ｦ菴崎ｮｺ譁��ｼ蠑剰ｦ∵ｱら噪荳肴妙譖ｴ譁ｰ��
% 蜴滓怏逧�枚譯｣邀ｻ騾先ｸ宣埓莉･貊｡雜ｳ譁ｰ逧��ｼ蠑剰ｦ∵ｱゅ�
% 蜉�荵句次菴懆�ｧｻ螻�ｵｷ螟厄ｼ碁埓莉･蜿頑慮蜩榊ｺ疲律逶雁｢槫､夂噪逕ｨ謌ｷ髴豎ゅ�
% 蜷梧慮�碁囂逹 \LaTeX3 謚譛ｯ蜥� C\TeX{} 螳城寔逧�先ｸ先�辭滉ｸ取勸蜿奇ｼ�
% 荳惹ｹ狗嶌豈皮噪 \LaTeXe{} 隸ｭ豕墓仞蠕鈴埓莉･扈ｴ謚､縲�
% 蝗�豁､�瑚�2024蟷ｴ譁�｡｣邀ｻ |v2.x.x| 迚域悽蠑蟋倶ｺ､逕ｱ蜊惹ｸｭ遘第橿螟ｧ蟄ｦ蜊壼｣ｫ逕滄ｻ�ｮ�ｸ�
% \footnote{\url{https://github.com/huangyxi}}謗･謇狗ｻｴ謚､��
% 蟷ｶ蝓ｺ莠� \LaTeX3 謚譛ｯ蜥� C\TeX{} 螳城寔霑幄｡御ｺ��髱｢驥肴桷縲�
%
% 豁､螟厄ｼ芸v2.0.0|襍ｷ�梧枚譯｣邀ｻ隸ｴ譏取焔蜀御ｽｿ逕ｨ \pkg{useclass}\cite{huang2024useclass}
% 莉･螳丞桁逧�婿蠑剰ｽｽ蜈･ \pkg{l3doc} 譁�｡｣邀ｻ荳ｭ逧�ｼ怜､壼多莉､蜥檎識蠅�ｼ�
% 菴ｿ蠕� \pkg{l3doc} 譁�｡｣邀ｻ閭ｽ螟滉ｸ� \clsname{} 譁�｡｣邀ｻ蜈ｱ蟄假ｼ�
% 螳樒鴫 \clsname{} 譁�｡｣邀ｻ逧�懆�荳ｾ窶昴�
%
% 蠖灘燕\clsname{} 莉｣遐∝惠 GitHub
% \url{https://github.com/hust-latex/hustthesis} 荳頑汚邂｡��
% 谺｢霑主推菴榊酔蟄ｦ謠仙�諢剰ｧ∝柱蟒ｺ隶ｮ縲�
%
% \section{蟄ｦ菴崎ｮｺ譁��ｼ蠑剰ｧ�激}
%
% 逶ｮ蜑榊克荳ｭ遘第橿螟ｧ蟄ｦ蟇ｹ莠守｡募｣ｫ蜥悟忽螢ｫ逧�ｭｦ菴崎ｮｺ譁��ｼ蠑丈ｸｻ隕∫罰莉･荳区枚莉ｶ隗�激��
% \begin{itemize}
%   \item \href{http://gs.hust.edu.cn/content.jsp?urltype=news.NewsContentUrl&amp;wbtreeid=1022&amp;wbnewsid=1027}{蜊惹ｸｭ遘第橿螟ｧ蟄ｦ蜊壼｣ｫ縲∫｡募｣ｫ蟄ｦ菴崎ｮｺ譁�腸蜀呵ｧ�ｮ夲ｼ� 譬｡遐斐�2009縲�39蜿ｷ}
%   \item \href{http://gs.hust.edu.cn/info/1041/5462.htm}{蟄ｦ菴咲筏隸ｷ逶ｸ蜈ｳ譁�｡｣荳玖ｽｽ}��
%     蜿大ｸ�慮髣ｴ2023-02-10
% \end{itemize}
%
% 逕ｱ莠主�荳ｭ螯や懷盾閠�枚迪ｮ闡怜ｽ穂ｽ懆�怙螟壽焚驥鞘晉ｭ蛾Κ蛻�ｧ�激蟆壽悴扈滉ｸ��
% 譁�｡｣邀ｻ菴懆�惠豁､莉��ｹ謐ｮ霑�ｾ蟾ｲ騾夊ｿ�噪蟄ｦ菴崎ｮｺ譁�噪譬ｼ蠑乗叫蜿門�荳螳樒鴫��
% 萓帛酔蟄ｦ莉ｬ蜿り��
% 蜈ｷ菴鍋噪譬ｼ蠑剰ｦ∵ｱりｯｷ莉･蟄ｦ譬｡譛譁ｰ逧�夂衍荳ｺ蜃��
%
% \section{\clsname{} 蜿題｡檎沿譛ｬ蜿ｷ\label{sec:version}}
%
% 譖ｴ譁ｰ迚域悽蠕蠕莨壼ｸｦ譚･譁ｰ蜉溯�蜥御ｿｮ螟埼琉鬚假ｼ�
% 菴�怏譌ｶ荵滉ｼ壻ｸ榊庄驕ｿ蜈榊慍蟶ｦ譚･荳榊髄蜷主�螳ｹ逧�ｿｮ謾ｹ縲�
% 荳ｺ莠�ｸ�匆蝨ｰ莨�霎ｾ迚域悽荵矩龍逧�序蛹厄ｼ�
% 譛ｬ譁�｡｣邀ｻ蜿題｡檎噪迚域悽蜿ｷ菴ｿ逕ｨ邀ｻ莨ｼ菴�ｸ榊ｮ悟�蜷御ｺ手ｯｭ荵牙喧迚域悽謗ｧ蛻ｶ��Semantic Versioning�芽ｧ�激
% \footnote{\url{https://semver.org/}}逕ｨ莉･譬�ｯ��
% 蝨ｨ譛ｬ譁�｡｣邀ｻ荳ｭ�悟ｯｹ莠守沿譛ｬ蜿ｷ |MAJOR.MINOR.PATCH|�碁貞｢樒嶌蠎皮噪驛ｨ蛻�園陦ｨ遉ｺ逧�性荵牙ｦゆｸ具ｼ�
% \begin{itemize}
%   \item |MAJOR|�夐貞｢槫､ｧ迚域悽蜿ｷ��
%     陦ｨ遉ｺ蟾ｲ蝨ｨ豁｣譁�枚譯｣蛹也噪蜈ｬ蠑謗･蜿｣荳雁ｭ伜惠荳榊髄蜷主�螳ｹ��backward compatibility�臥噪菫ｮ謾ｹ��
%     荳闊ｬ蟇ｹ譁�｡｣莉｣遐∽ｸ咲ｻ丈ｿｮ謾ｹ譌�豕墓ｭ｣蟶ｸ郛冶ｯ托ｼ�
%   \item |MINOR|�夐貞｢槫ｰ冗沿譛ｬ蜿ｷ��
%     陦ｨ遉ｺ蟾ｲ蝨ｨ豁｣譁�枚譯｣蛹也噪髱槫ｮ樣ｪ梧ｧ蜈ｬ蠑謗･蜿｣荳浬emph{荳閤蟄伜惠荳榊髄蜷主�螳ｹ郛冶ｯ醍噪菫ｮ謾ｹ��
%     菴�惠螳樣ｪ梧ｧ蜈ｬ蠑謗･蜿｣荳雁ｭ伜惠荳榊髄蜷主�螳ｹ逧�ｿｮ謾ｹ��
%     謌冶�枚譯｣譬ｷ蠑丞書逕滓ｯ碑ｾ��譏ｾ逧�序蛹悶�
%     荳闊ｬ蟇ｹ譁�｡｣莉｣遐∽ｸ堺ｽ應ｿｮ謾ｹ謌冶�宵髴蟆丞ｹ�ｿｮ謾ｹ蟆ｱ蜿ｯ莉･豁｣蟶ｸ郛冶ｯ托ｼ�
%   \item |PATCH|�夐貞｢櫁｡･荳∫沿譛ｬ蜿ｷ��
%     陦ｨ遉ｺ譁ｰ迚域悽蜷ｫ譛牙髄蜷主�螳ｹ逧� bug 菫ｮ螟搾ｼ梧眠蜉溯��梧�閠�枚譯｣譬ｷ蠑冗噪扈�ｾｮ蜿伜喧��
%     蜈ｶ荳ｭ譛ｪ譁�｡｣蛹也噪遘∵怏謗･蜿｣蜿ｯ閭ｽ莨壼書逕溷序蛹悶�
% \end{itemize}
% 逕ｨ謌ｷ蝨ｨ譖ｴ譁ｰ譁�｡｣邀ｻ譌ｶ�悟庄莉･譬ｹ謐ｮ迚域悽蜿ｷ逧�序蛹紋ｻ･蜿頑峩譁ｰ譌･蠢玲擂蛻､譁ｭ譏ｯ蜷ｦ髴隕∽ｿｮ謾ｹ閾ｪ蟾ｱ逧�枚譯｣縲�
%
%
% \chapter{闔ｷ蜿夜泌ｾм
%
% 闔ｷ蜿匁怙譁ｰ迚域悽逧� \clsname{} 譁�｡｣邀ｻ荳ｻ隕∵怏荳､遘埼泌ｾ�ｼ�
% 莉� CTAN 荳贋ｸ玖ｽｽ�梧�閠�ｻ� GitHub Releases 鬘ｵ髱｢荳玖ｽｽ縲�
%
% \section{CTAN}
%
% CTAN \url{https://ctan.org/pkg/hustthesis}
% 荳顔噪 \clsname{} 譁�｡｣邀ｻ譏ｯ扈剰ｿ�遠蛹�噪迚域悽��
% 蜈ｶ荳ｭ蛹�性莠�枚譯｣邀ｻ縲∝柱譁�｡｣邀ｻ謇句�縲�
%
% \section{GitHub Release}
%
% \cls{hustthesis} 逧�ｺ千�∵汚邂｡蝨ｨ GitHub
% \url{https://github.com/hust-latex/hustthesis} 荳奇ｼ�
% 蜈ｶ荳ｭ蛹�性莠�怙譁ｰ逧�ｼ蜿醍沿譛ｬ縲�
% 逕ｱ莠取ｺ千�∵弍莉･ Doc\TeX{} 譬ｼ蠑冗ｼ門���
% 蟇ｹ莠主�蟄ｦ閠�擂隸ｴ�悟ｮ芽｣�柱菴ｿ逕ｨ驛ｽ豈碑ｾ�ｺｻ辜ｦ縲�
% 蝗�豁､�悟ｻｺ隶ｮ蛻晏ｭｦ閠�庄莉･逶ｴ謗･莉� Releases 鬘ｵ髱｢荳玖ｽｽ謇灘桁螂ｽ逧�沿譛ｬ�瑚ｧ｣蜴句錘逶ｴ謗･菴ｿ逕ｨ縲�
% \url{https://github.com/hust-latex/hustthesis/releases/latest/download/hustthesis-user.zip}
%
% \chapter{菴ｿ逕ｨ隸ｴ譏枝
%
% \section{螟ｪ髟ｿ荳崎ｯｻ��TL;DR�厭
%
% 譛ｬ闃ょｰ�ｱ慕､ｺ荳､谿ｵ邂蛹也ｨ句ｺｦ荳堺ｸ逧�ｻ｣遐∫､ｺ萓具ｼ�
% 蜿ｯ逕ｨ莠主ｿｫ騾滉ｺ�ｧ｣譛ｬ譁�｡｣邀ｻ逧�ｽｿ逕ｨ譁ｹ豕包ｼ�
% 謌冶�惠郛冶ｯ大､ｱ雍･逧�ｰ�ｯ暮亳谿ｵ菴應ｸｺ蜿り��
%
% \subsection{譛蟆丞庄逕ｨ遉ｺ萓急
%
% 莉･荳倶ｻ｣遐∝桁蜷ｫ莠�悽譁�｡｣邀ｻ逧�怙蟆丞庄逕ｨ遉ｺ萓具ｼ�Minimal Working Example�会ｼ�
% 逕ｨ莠主ｱ慕鴫譁�｡｣邀ｻ菴ｿ逕ｨ逧�ｸｻ菴鍋ｻ捺桷縲�
% \begin{latexcode}
%   \documentclass{hustthesis}
%   % \hustsetup{} % 隶ｾ鄂ｮ
%   \begin{document}
%     \maketitle
%     \frontmatter
%     鞫倩ｦ�Κ蛻�
%     \tableofcontents
%     \mainmatter
%     豁｣譁�Κ蛻�
%     \backmatter
%     閾ｴ隹｢莉･蜿雁盾閠�枚迪ｮ
%     \appendix
%     髯�ｽ暮Κ蛻�
%   \end{document}
% \end{latexcode}
%
% \subsection{譬ｸ蠢�､ｺ萓急
%
% 譛ｬ遉ｺ萓句桁蜷ｫ莠�ｾ�柄逧�ｸ谿ｵ譁�｡｣邀ｻ譬ｸ蠢�多莉､蜥檎識蠅�ｼ�
% 譖ｴ螟夊ｿ幃亳逕ｨ豕戊ｯｷ蜿り�錘扈ｭ蟆剰鰍縲�
% \begin{latexcode}[emph={[1]hustsetup}]
%   \documentclass[type=doctor]{hustthesis} % 蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁�: doctor, 遑募｣ｫ蟄ｦ菴崎ｮｺ譁�: master
%   \hustsetup { % 隶ｾ鄂ｮ荵矩龍荳螳壻ｸ崎�譛臥ｩｺ陦�
%     info =
%       {
%         title = { 荳ｭ譁���｢� },
%         title* = { English Title },
%         degree = { academic }, % 蟄ｦ譛ｯ蝙�: academic, 荳謎ｸ壼梛: professional
%         degree* = { Engineering }, % 闍ｱ譁�ｭｦ遘�
%         author = { 蟋灘錐 },
%         author* = { Author },
%         student-id = { D201234567 },
%         major = { 荳謎ｸ� },
%         major* = { Major },
%         supervisor = { 謖�ｯｼ閠∝ｸ�\quad{} 謨呎肢 },
%         supervisor* = { Prof.~ Supervisor },
%         date = { 2025-02-26 }, % 荳榊�霑呵｡檎噪隸昜ｼ夊�蜉ｨ逕滓��悟�逧�ｯ昜ｸ螳夊ｦ∵潔辣ｧ霑吩ｸｪ譬ｼ蠑�
%       },
%   }
%   \addbibresource{references.bib} % % biblatex 蜿り�枚迪ｮ譁�ｻｶ蜷�
%   \begin{document}
%     \maketitle
%     \frontmatter
%     \begin{abstract}
%       荳ｭ譁�遭隕�
%       \keywords 蜈ｳ髞ｮ隸�1�帛�髞ｮ隸�2�帛�髞ｮ隸�3
%     \end{abstract}
%     \begin{abstract*}
%       English Abstract
%       \keywords* keyword1, keyword2, keyword3
%     \end{abstract*}
%     \tableofcontents
%     \mainmatter
%     \chapter{隨ｬ荳遶�}
%     \section{隨ｬ荳闃�}
%     ...
%     \backmatter
%     \begin{acknowledgements} % 閾ｴ隹｢
%       諢溯ｰ｢ hustthesis 譁�｡｣邀ｻ縲�
%     \end{acknowledgements}
%     \printbibliography
%     \appendix
%     \chapter{髯�ｽ扶
%   \end{document}
% \end{latexcode}
%
% \section{郛冶ｯ題ｯｴ譏枝
%
% 譛ｬ譁�｡｣邀ｻ莉�庄菴ｿ逕ｨ \XeLaTeX{} 謌冶� \LuaLaTeX{} 郛冶ｯ代�
%
% \section{螯ゆｽ暮�隸ｻ譛ｬ遶�菴ｿ逕ｨ隸ｴ譏枝
%
% 譏ｯ逧�ｼ瑚ｯｴ譏取枚譯｣譛ｬ霄ｫ荵滄怙隕∬ｯｴ譏取枚譯｣譚･隸ｴ譏主ｦゆｽ暮�隸ｻ隸ｴ譏取枚譯｣縲�
%
% \subsection{螳樣ｪ梧ｧ蜀�ｮｹ}
%
% 譛ｬ譁�｡｣邀ｻ隸ｴ譏朱Κ蛻�噪蜷榊ｭ怜性譛� 窶彌rexpstar{}窶� 逧�醗蛟ｼ蟇ｹ騾蛾｡ｹ�瑚ｮｾ鄂ｮ�悟多莉､謌也識蠅�ｼ�
% 陦ｨ遉ｺ隸･蜀�ｮｹ荳ｺ螳樣ｪ梧ｧ蜀�ｮｹ縲�
% 蜈ｳ莠主ｮ樣ｪ梧ｧ蜀�ｮｹ逧�峩譁ｰ蟶ｦ譚･貎懷惠荳榊髄蜷主�螳ｹ菫ｮ謾ｹ逧�ｯｴ譏趣ｼ�
% 隸ｷ蜿り� \ref{sec:version} 闃ゅ�
%
% \subsection{蜊暮蛾醗蛟ｼ蟇ｹ隶ｾ鄂ｮ}
%
% \key{key} = &lt;\opt{option},\opt*{default}&gt;,
%
% 蜈ｶ遲牙捷蜿ｳ霎ｹ逧�蛾｡ｹ \opt{option}�悟柱 \opt*{default} 蝮�｡ｨ遉ｺ蜿ｯ騾臥噪蜊暮蛾｡ｹ��
% 蜈ｶ荳ｭ蜉�邊鈴蛾｡ｹ \opt*{default} 陦ｨ遉ｺ鮟倩ｮ､騾蛾｡ｹ縲�
%
% 譛蜷守噪騾怜捷譏ｯ荳ｺ莠�署驢定ｯｻ閠�ｼ�
% 螯よ棡蟄伜惠螟壻ｸｪ髞ｮ蛟ｼ蟇ｹ�悟�荵矩龍髴逕ｱ蜊願ｧ抵ｼ郁恭譁�ｼ蛾怜捷蛻�囈縲ゑｼ井ｻ･荳句ｦよ悴迚ｹ谿願ｯｴ譏趣ｼ碁怜捷蝮�欠蜊願ｧ帝怜捷��
%
% \subsection{閾ｪ螳壻ｹ蛾醗蛟ｼ蟇ｹ隶ｾ鄂ｮ}
%
% \key{key} = \marg{value},
%
% 蜈ｶ遲牙捷蜿ｳ霎ｹ逧�ｼ \marg{value} 陦ｨ遉ｺ蜿ｯ莉･閾ｪ螳壻ｹ臥噪蛟ｼ縲�
%
% \section{譁�｡｣邀ｻ騾蛾｡ｹ\label{sec:option}}
%
% 譛ｬ闃ゆｻ狗ｻ咲噪騾蛾｡ｹ莉�庄蝨ｨ螯ゆｸ区枚譯｣邀ｻ騾蛾｡ｹ�井ｸｭ諡ｬ蜿ｷ荳ｭ|type=doctor|�我ｸｭ菴ｿ逕ｨ縲�
% 螟壻ｸｪ騾蛾｡ｹ荵矩龍荵滓弍逕ｱ騾怜捷蛻�囈縲�
% \begin{latexcode}
%   \documentclass[type=doctor]{hustthesis}
% \end{latexcode}
%
% \begin{function}[module=option/]{type}
%   \begin{syntax}
%     \key{type} = &lt;\opt*{doctor},\opt{master}&gt;,
%   \end{syntax}
%   \begin{arguments}
%     \item[\opt*{doctor}] 蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁�
%     \item[\opt{master}] 遑募｣ｫ蟄ｦ菴崎ｮｺ譁�
%   \end{arguments}
%   \key{type} 騾蛾｡ｹ逕ｨ莠手ｮｾ鄂ｮ蟄ｦ菴崎ｮｺ譁�ｱｻ蝙九�
% \end{function}
%
% \begin{function}[rEXP, module=option/]{anonymous}
%   \begin{syntax}
%     \key{anonymous} = &lt;\opt*{false},\opt{true}&gt;,
%   \end{syntax}
%   \begin{arguments}
%     \item[\opt*{false}] 蜈ｳ髣ｭ逶ｲ螳｡讓｡蠑�
%     \item[\opt{true}] 蠑蜷ｯ逶ｲ螳｡讓｡蠑�
%   \end{arguments}
%   \key{anonymous} 騾蛾｡ｹ逕ｨ莠手ｮｾ鄂ｮ譏ｯ蜷ｦ蠑蜷ｯ逶ｲ螳｡讓｡蠑上�
%   逶ｲ螳｡讓｡蠑丈ｸ具ｼ圭key{anonymous-list} 荳ｭ逧�園譛我ｿ｡諱ｯ蝮�ｼ夊｢ｫ髫占酪縲�
% \end{function}
%
% \begin{function}[rEXP, module=option/]{anonymous-list}
%   \begin{syntax}
%     \key{anonymous-list} = \marg{逶ｲ螳｡讓｡蠑城嚼阯乗擅逶ｮ蛻苓｡ｨ},
%   \end{syntax}
%  \key{anonymous-list} 騾蛾｡ｹ逕ｨ莠手ｮｾ鄂ｮ蝨ｨ蠑蜷ｯ逶ｲ螳｡讓｡蠑丈ｸ矩怙隕�嚼阯冗噪譚｡逶ｮ縲�
%  \marg{蛹ｿ蜷肴擅逶ｮ蛻苓｡ｨ} 譏ｯ荳扈�罰蜊願ｧ抵ｼ郁恭譁�ｼ蛾怜捷髫泌ｼ逧�蛾｡ｹ蛻苓｡ｨ縲�
%  |info/| 荳矩醗蛟ｼ蟇ｹ髞ｮ蜷咲噪霑樊磁隨ｦ��|-|�蛾怙謇句勘譖ｿ謐｢荳ｺ荳句�郤ｿ��|_|�会ｼ�
%  譏溷捷��|*|�蛾怙謇句勘譖ｿ謐｢荳ｺ|_en|縲�
%  鮟倩ｮ､蛟ｼ荳ｺ \texttt{\{author, student_id, supervisor, author_en, supervisor_en\}}縲�
% \end{function}
%
% \section{譁�｡｣菫｡諱ｯ隶ｾ鄂ｮ}
%
% 譛ｬ闃ゆｻ狗ｻ咲噪譁�｡｣菫｡諱ｯ隶ｾ鄂ｮ騾蛾｡ｹ蜿ｪ蜿ｯ蝨ｨ \tn{hustsetup} 蜻ｽ莉､逧Ыmarg{髞ｮ蛟ｼ蛻苓｡ｨ}荳ｭ菴ｿ逕ｨ��
% 荳ｻ隕∫畑莠主ｰ�擇蜥梧演鬘ｵ逧���｢倥∽ｽ懆�ｭ我ｿ｡諱ｯ逧�ｾ灘�縲�
%
% \begin{function}{\hustsetup}
%   \begin{syntax}
%      \tn{hustsetup}\marg{髞ｮ蛟ｼ蛻苓｡ｨ}
%   \end{syntax}
%   \tn{hustsetup} 逧�盾謨ｰ譏ｯ荳扈�罰蜊願ｧ抵ｼ郁恭譁�ｼ蛾怜捷髫泌ｼ逧�蛾｡ｹ蛻苓｡ｨ��
%   蛻苓｡ｨ荳ｭ逧�蛾｡ｹ騾壼ｸｸ譏ｯ
%   \meta{key}|=|\meta{value}逧�ｽ｢蠑上�
%   蟇ｹ莠守嶌蜷碁醗�悟錘髱｢逧�ｼ莨夊ｦ�尠蜑埼擇逧�ｼ縲�
%   窶忿=|窶晏ｷｦ蜿ｳ逧�ｩｺ譬ｼ荳榊ｽｱ蜩榊ｮ樣刔隶ｾ鄂ｮ��
%   菴�怙豕ｨ諢擾ｼ悟盾謨ｰ蛻苓｡ｨ荳ｭ荳崎�譛臥ｩｺ陦後�
% \end{function}
%
% \begin{function}[module=info/]{info/degree}
%   \begin{syntax}
%     \key[info]{degree} = &lt;\opt*{academic},\opt{professional}&gt;,
%   \end{syntax}
%    隶ｾ鄂ｮ荳ｭ譁�ｭｦ菴咲ｱｻ蝙具ｼ御ｻ�庄騾牙ｭｦ譛ｯ蝙区�荳謎ｸ壼梛縲�
%   \begin{arguments}
%     \item[\opt*{academic}] 蟄ｦ譛ｯ蝙�
%     \item[\opt{professional}] 荳謎ｸ壼梛
%   \end{arguments}
% \end{function}
%
% \begin{function}[module=info/]{info/degree*}
%   \begin{syntax}
%     \key[info]{degree*} = &lt;\opt{Arts},\opt{Science},\opt{Education},\opt*{Engineering},\opt{Law},\opt{Medicine},...&gt;,
%   \end{syntax}
%   隶ｾ鄂ｮ闍ｱ譁�ｭｦ遘鷹葎邀ｻ��
%   蜿ｯ騾蛾｡ｹ譛会ｼ�
%   \begin{arguments}
%     \item[\opt{Arts}] 譁�ｭｦ蟄ｦ菴�
%     \item[\opt{Science}] 逅�ｭｦ蟄ｦ菴�
%     \item[\opt{Education}] 謨呵ご蟄ｦ蟄ｦ菴�
%     \item[\opt*{Engineering}] 蟾･蟄ｦ蟄ｦ菴�
%     \item[\opt{Law}] 豕募ｭｦ蟄ｦ菴�
%     \item[\opt{Medicine}] 蛹ｻ蟄ｦ蟄ｦ菴�
%     \item[...] 蜈ｶ莉門ｭｦ遘大庄閾ｪ陦瑚ｮｾ鄂ｮ
%   \end{arguments}
% \end{function}
%
% \begin{function}[module=info/]{info/title, info/title*}
%   \begin{syntax}
%     \key[info]{title} = \marg{荳ｭ譁���｢�},
%     \key[info]{title*} = \marg{闍ｱ譁���｢�},
%   \end{syntax}
%   隶ｾ鄂ｮ隶ｺ譁���｢倥�
% \end{function}
%
% \begin{function}[module=info/]{info/author, info/author*}
%   \begin{syntax}
%     \key[info]{author} = \marg{蟋灘錐荳ｭ譁�},
%     \key[info]{author*} = \marg{蟋灘錐闍ｱ譁�},
%   \end{syntax}
%   隶ｾ鄂ｮ蟄ｦ菴咲筏隸ｷ莠ｺ蟋灘錐縲�
%   譬ｹ謐ｮ蟄ｦ譬｡隕∵ｱゑｼ瑚恭譁�ｧ灘錐蠎碑ｯ･謖臥�荳ｭ譁�ｹ�諠ｯ��
%   荳ｺ蟋灘惠蜑榊錐蝨ｨ蜷趣ｼ御ｸ泌ｧ灘�驛ｨ螟ｧ蜀吶�
% \end{function}
%
% \begin{function}[module=info/]{info/major, info/major*}
%   \begin{syntax}
%     \key[info]{major} = \marg{荳謎ｸ壼錐遘ｰ荳ｭ譁�},
%     \key[info]{major*} = \marg{荳謎ｸ壼錐遘ｰ闍ｱ譁�},
%   \end{syntax}
%   隶ｾ鄂ｮ荳謎ｸ壼錐遘ｰ縲�
% \end{function}
%
% \begin{function}[module=info/]{info/supervisor, info/supervisor*}
%   \begin{syntax}
%     \key[info]{supervisor} = \marg{謖�ｯｼ閠∝ｸ井ｸｭ譁�ｧ灘錐},
%     \key[info]{supervisor*} = \marg{謖�ｯｼ閠∝ｸ郁恭譁�ｧ灘錐},
%   \end{syntax}
%   隶ｾ鄂ｮ謖�ｯｼ閠∝ｸ亥ｧ灘錐縲�
% \end{function}
%
% \begin{function}[module=info/]{info/date}
%   \begin{syntax}
%     \key[info]{date} = \marg{譌･譛毳,
%   \end{syntax}
%   隶ｾ鄂ｮ隶ｺ譁�署莠､譌･譛溘�
%   譌･譛滓�ｼ蠑丈ｸｺ |YYYY-MM-DD|縲�
%   螯よ棡荳崎ｮｾ鄂ｮ隸･騾蛾｡ｹ�梧枚譯｣邀ｻ莨夊�蜉ｨ逕滓�譌･譛溘�
% \end{function}
%
% \begin{function}[module=info/]{info/clc}
%   \begin{syntax}
%     \key[info]{clc} = \marg{荳ｭ蝗ｾ蛻�ｱｻ蜿ｷ},
%   \end{syntax}
%   隶ｾ鄂ｮ荳ｭ蝗ｾ蛻�ｱｻ蜿ｷ縲�
% \end{function}

% \begin{function}[module=info/]{info/student-id}
%   \begin{syntax}
%     \key[info]{student-id} = \marg{蟄ｦ蜿ｷ},
%   \end{syntax}
%   隶ｾ鄂ｮ蟄ｦ蜿ｷ縲�
% \end{function}
%
% \begin{function}[rEXP, module=info/]{info/secret}
%   \begin{syntax}
%     \key[info]{secret} = \marg{蟇�ｺｧ},
%   \end{syntax}
%   螳樣ｪ梧ｧ蜀�ｮｹ�瑚ｮｾ鄂ｮ蟇�ｺｧ縲ょｽ灘燕莉�ｽｱ蜩堺ｸｭ譁�ｰ�擇逧�仞遉ｺ�碁ｻ倩ｮ､荳ｺ遨ｺ縲�
% \end{function}
%
% \begin{function}[module=info/]{info/committee}
%   \begin{syntax}
%     \key[info]{committee} = \marg{遲碑ｾｩ蟋泌遭莨壽�蜻�},
%   \end{syntax}
%   隶ｾ鄂ｮ遲碑ｾｩ蟋泌遭莨壽�蜻倥�
%   隸･騾蛾｡ｹ逧�ｼ譏ｯ荳荳ｪ騾怜捷蛻�囈蟋泌遭莨壽�蜻倡噪蛻苓｡ｨ��
%   蜈ｶ荳ｭ豈丈ｸｪ謌仙遭逧�ｧ灘錐�瑚′遘ｰ蜥悟黒菴堺ｹ矩龍逕ｨ |&amp;| 蛻�牡縲�
%   隨ｬ荳荳ｪ謌仙遭荳ｺ荳ｻ蟶ｭ�悟�菴呎�蜻倅ｸｺ蟋泌遭縲�
%   逕ｱ莠取枚譯｣邀ｻ蜀�Κ螳樒鴫蜴溷屏�悟ｦよ棡隶ｾ鄂ｮ隸･騾蛾｡ｹ�瑚ｯｷ閾ｳ蟆題ｮｾ鄂ｮ3蜷肴�蜻倥�
%   萓句ｦゑｼ�
%   \begin{latexcode}
%   \hustsetup {
%     info/committee =
%       { 蠑�荳� &amp; 謨呎肢 &amp; 蜊惹ｸｭ遘第橿螟ｧ蟄ｦ , 譚主屁 &amp; 謨呎肢 &amp; 豁ｦ豎牙､ｧ蟄ｦ , 邇倶ｺ� &amp; 謨呎肢 &amp; 豁ｦ豎臥炊蟾･螟ｧ蟄ｦ },
%   }
%   \end{latexcode}
%   螯よ棡荳崎ｮｾ鄂ｮ隸･騾蛾｡ｹ�梧枚譯｣邀ｻ莨夊�蜉ｨ逕滓�7陦檎ｩｺ逋ｽ逧�ｭ碑ｾｩ蟋泌遭莨壽�蜻倥�
%
%   蜿ｦ螟厄ｼ瑚ｯ･騾蛾｡ｹ謇蟇ｹ蠎皮噪鬘ｵ髱｢莉�惠蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁�ｸｭ莨夊�蜉ｨ逕滓�縲�
%   螯よ棡髴隕∵焔蜉ｨ逕滓�鬘ｵ髱｢�悟庄莉･菴ｿ逕ｨ蜻ｽ莉､ \tn{makecommittee}縲�
% \end{function}
%
% \section{蜀�ｮｹ郛門�}
%
% 莉･荳句�螳ｹ鬘ｻ蝨ｨ |\begin{document}| 蜥� |\end{document}| 荵矩龍郛門�縲�
%
% \subsection{蟆�擇謇蛾｡ｵ}
%
% \begin{function}{\maketitle}
%   \begin{syntax}
%     \tn{maketitle}
%   \end{syntax}
%   \tn{maketitle} 蜻ｽ莉､逕ｨ莠守函謌蝉ｸｭ闍ｱ譁�ｰ�擇縲�
%   莉�ｽ捺枚譯｣邀ｻ邀ｻ蝙倶ｸｺ蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁�慮��
%   蝨ｨ荳ｭ譁�柱闍ｱ譁�ｰ�擇荵矩龍莨夊�蜉ｨ謠貞�遲碑ｾｩ蟋泌遭莨壽�蜻倥�
% \end{function}
%
% \begin{function}[rEXP]{\makezhtitle, \makeentitle}
%   \begin{syntax}
%     \tn{makezhtitle}
%     \tn{makeentitle}
%   \end{syntax}
%   \tn{makezhtitle} 蜥� \tn{makeentitle} 蜻ｽ莉､蛻�悪逕ｨ莠守函謌蝉ｸｭ譁�柱闍ｱ譁�ｰ�擇縲�
%   荳闊ｬ荳埼怙隕∵焔蜉ｨ隹�畑霑吩ｸ､荳ｪ蜻ｽ莉､縲�
% \end{function}
%
% \begin{function}[rEXP]{\makecommittee}
%   \begin{syntax}
%     \tn{makecommittee}
%   \end{syntax}
%   \tn{makecommittee} 蜻ｽ莉､逕ｨ莠守函謌千ｭ碑ｾｩ蟋泌遭莨壽�蜻倥�
%   荳闊ｬ荵滉ｸ埼怙隕∵焔蜉ｨ隹�畑隸･蜻ｽ莉､縲�
% \end{function}
%
% \subsection{蜑肴枚}
%
% \begin{function}{\frontmatter}
%   \begin{syntax}
%     \tn{frontmatter}
%   \end{syntax}
%   \tn{frontmatter} 蜻ｽ莉､逕ｨ莠惹ｿｮ謾ｹ鬘ｵ遐∵�ｼ蠑丈ｸｺ鄂鈴ｩｬ謨ｰ蟄暦ｼ�
%   蠅槫刈鬘ｵ逵牙柱鬘ｵ閼夲ｼ�
%   莉･蜿願ｮｾ鄂ｮ逶ｮ蠖穂ｸｭ陌夂ｺｿ譬ｷ蠑上�
%   隸･蜻ｽ莉､荳闊ｬ髴隕∝惠 \tn{maketitle} 蜻ｽ莉､荵句錘�梧遭隕∽ｹ句燕隹�畑縲�
% \end{function}
%
% \begin{environment}{abstract, abstract*}
%   \begin{latexcode}
%   \begin{abstract}
%     荳ｭ譁�遭隕�
%     \keywords 蜈ｳ髞ｮ隸�1�帛�髞ｮ隸�2�帛�髞ｮ隸�3
%   \end{abstract}
%
%   \begin{abstract*}
%     English abstract
%     \keywords* keyword1, keyword2, keyword3
%   \end{abstract*}
%   \end{latexcode}
%   |abstract| 蜥� |abstract*| 邇ｯ蠅��蛻ｫ逕ｨ莠守函謌蝉ｸｭ譁�柱闍ｱ譁�遭隕√�
% \end{environment}
%
% \begin{function}{keywords, keywords*}
%   \begin{syntax}
%     \tn{keywords} 蜈ｳ髞ｮ隸�1�帛�髞ｮ隸�2�帛�髞ｮ隸�3
%     \tn{keywords*} Keyword1, Keyword2, Keyword3
%   \end{syntax}
%   \tn{keywords} 蜥� \tn{keywords*} 蜻ｽ莉､蛻�悪逕ｨ莠守函謌蝉ｸｭ譁�柱闍ｱ譁��髞ｮ隸阪�
%   荳闊ｬ髴隕∝惠逶ｸ蠎皮噪 |abstract| 蜥� |abstract*| 邇ｯ蠅�ｸｭ逧�怙蜷惹ｸ陦瑚ｰ�畑縲�
% \end{function}
%
% \begin{function}{\tableofcontents}
%   \begin{syntax}
%     \tn{tableofcontents}
%   \end{syntax}
%   \tn{tableofcontents} 蜻ｽ莉､逕ｨ莠守函謌千岼蠖輔�
% \end{function}
%
% \subsection{豁｣譁�}
%
% \begin{function}{\mainmatter}
%   \begin{syntax}
%     \tn{mainmatter}
%   \end{syntax}
%   \tn{mainmatter} 蜻ｽ莉､逕ｨ莠惹ｿｮ謾ｹ鬘ｵ遐∵�ｼ蠑丈ｸｺ髦ｿ諡我ｼｯ謨ｰ蟄暦ｼ�
%   莉･蜿願ｮｾ鄂ｮ逶ｮ蠖穂ｸｭ陌夂ｺｿ譬ｷ蠑上�
%   隸･蜻ｽ莉､荳闊ｬ髴隕∝惠逶ｮ蠖穂ｹ句錘�梧ｭ｣譁�ｹ句燕隹�畑縲�
% \end{function}
%
% \begin{function}{\chapter, \chapter*, \chapter**}
%   \begin{syntax}
%     \tn{chapter}\marg{譬�｢伜錐}
%     \tn{chapter*}\marg{譬�｢伜錐}
%     \tn{chapter**}\marg{譬�｢伜錐}
%   \end{syntax}
%   \tn{chapter} 蜥� \tn{chapter*} 蜻ｽ莉､荳取��㊥ \LaTeXe-\pkg{book} 譁�｡｣邀ｻ荳ｭ逧�多莉､蜉溯�逶ｸ蜷鯉ｼ�
%   逕ｨ莠守函謌千ｫ�譬�｢倥�
%   蜑崎�ｸｺ譛臥ｼ門捷逧�ｫ�譬�｢假ｼ御ｼ壼惠逶ｮ蠖穂ｸｭ逕滓�蟇ｹ蠎皮噪譚｡逶ｮ��
%   蜷手�ｸｺ譌�郛門捷逧�ｫ�譬�｢假ｼ御ｸ堺ｼ壼惠逶ｮ蠖穂ｸｭ逕滓�蟇ｹ蠎皮噪譚｡逶ｮ縲�
%
%   \tn{chapter**} 蜻ｽ莉､譏ｯ譛ｬ譁�｡｣邀ｻ譁ｰ蠅樒噪遶�闃よ��｢倡函謌千噪蜻ｽ莉､��
%   逕ｨ莠守函謌先裏郛門捷遶�闃よ��｢假ｼ御ｽ�ｼ壼惠逶ｮ蠖穂ｸｭ逕滓�蟇ｹ蠎皮噪譚｡逶ｮ縲�
%   荳闊ｬ蜿ｯ逕ｨ莠主惠髯�ｽ穂ｸｭ逕滓�譌�郛門捷逧�ｫ�闃よ��｢倥�
% \end{function}
%
% \subsection{蜷取枚}
%
% \begin{function}{\backmatter}
%   \begin{syntax}
%     \tn{backmatter}
%   \end{syntax}
%   \tn{backmatter} 蜻ｽ莉､逕ｨ莠惹ｿｮ謾ｹ逶ｮ蠖穂ｸｭ陌夂ｺｿ譬ｷ蠑上�
%   隸･蜻ｽ莉､荳闊ｬ髴隕∝惠豁｣譁�ｹ句錘�瑚�隹｢荵句燕隹�畑縲�
% \end{function}
%
% \begin{environment}{acknowledgements}
%   \begin{syntax}
%     |\begin{acknowledgements}|
%       閾ｴ隹｢
%     |\end{acknowledgements}|
%   \end{syntax}
%   |acknowledgements| 邇ｯ蠅�畑莠守函謌占�隹｢縲�
% \end{environment}
%
% \begin{function}{\printbibliography}
%   \begin{syntax}
%     \tn{printbibliography}
%   \end{syntax}
%   \tn{printbibliography} 蜻ｽ莉､逕ｨ莠守函謌� \pkg{biblatex} 螳丞桁逧�盾閠�枚迪ｮ縲�
% \end{function}
%
% \subsection{髯�ｽ扶
%
% \begin{function}{\appendix}
%   \begin{syntax}
%     \tn{appendix}
%   \end{syntax}
%   \tn{appendix} 蜻ｽ莉､逕ｨ莠惹ｿｮ謾ｹ遶�闃よ��｢俶�ｼ蠑擾ｼ�
%   隸･蜻ｽ莉､荳闊ｬ髴隕∝惠蜿り�枚迪ｮ荵句錘隹�畑縲�
% \end{function}
%
% 髯�ｽ慕噪遶�闃ょｦらｭ碑ｾｩ蟋泌遭莨壼�隶ｮ遲会ｼ悟庄莉･譬ｹ謐ｮ髴隕∽ｽｿ逕ｨ \tn{chapter} 蜻ｽ莉､逕滓�譛臥ｼ門捷逧���｢假ｼ�
% 荵溷庄莉･菴ｿ逕ｨ \tn{chapter**} 蜻ｽ莉､逕滓�譌�郛門捷逧���｢倥�
%
% \section{蜿り�枚迪ｮ隸ｴ譏枝
%
% 霑咎㈹蛻嶺ｸｾ莠�惠蟄ｦ菴崎ｮｺ譁�ｧ�激譁�｡｣荳ｭ逧�盾閠�枚迪ｮ縲�
% 蜿ｯ莉･蝨ｨ豁｣譁�錘蜿り�枚迪ｮ蛻苓｡ｨ荳ｭ譟･逵狗函謌千噪譬ｷ蠑上�
% \citeauthor{YanMingLi2006CFGZhuang}
% \cite{chalfi1998GreenFluo, ZhanXiangHong2004ZhongYiY}
% \parencite{lein2007Genomewide,bouxse2010Guidelines,yamaki2018Performanc,yao2017BuildingE,LiuJiaLin1993DuoGongN,LiQingQuan1998JiYuHun}
%
% \backmatter
% \begin{acknowledgements}
%   諢溯ｰ｢ \cls{fduthesis} 譁�｡｣邀ｻ\cite{zeng2023fduthesis}��
%   \cls{SJTU\TeX} 譁�｡｣邀ｻ髮�\cite{sjtug2024SJTUTeX}��
%   蜥� \cls{njuthesis} 譁�｡｣邀ｻ\cite{njulug2023njuthesis}��
%   譛ｬ譁�｡｣邀ｻ逧�ｮｸ螟夊ｮｾ隶｡蜥悟ｮ樒鴫驛ｽ譏ｯ蜿り�ｺ�ｸ願ｿｰ莉｣遐√�
%   蟷ｶ荳皮音蛻ｫ諢溯ｰ｢ \pkg{biblatex-gb7714-2015} 螳丞桁\cite{hu2024bib}蜿雁�菴懆�Γ謖ｯ髴�ｼ�
%   譛ｬ莠ｺ蝨ｨ荵句燕逧�枚譯｣邀ｻ隶ｾ隶｡荳ｭ蠕怜芦莠��蠕亥､夂Ο諠�噪蟶ｮ蜉ｩ��
%   謾ｶ闔ｷ逧�ｻ城ｪ御ｹ滉ｸｺ譛ｬ譁�｡｣邀ｻ逧�ｮｾ隶｡螂�螳壻ｺ�渕遑縲�
%
%   豁､螟匁悽莠ｺ蠑蜿醍噪螳丞桁 \pkg{useclass}\cite{huang2024useclass}
%   荵溯ｮｩ譛ｬ譁�｡｣邀ｻ謇句�逧�枚譯｣邀ｻ窶懆�荳ｾ窶晏ｮ樒鴫蜿ｯ閭ｽ縲�
% \end{acknowledgements}
%
% \printbibliography
%
% \end{documentation}
%
% \begin{implementation}
%
% \appendix
% \newgeometry{
%   marginpar = 2.8 cm,
% }
%
% \chapter{\clsname{} 莉｣遐∝ｮ樒鴫}
% 譛ｬ譁�｡｣邀ｻ菴ｿ逕ｨ \LaTeX3 隸ｭ豕慕ｼ門��御ｾ晁ｵ� \pkg{expl3} 邇ｯ蠅��
%
%    \begin{macrocode}
%&lt;@@=hust&gt;
%&lt;*class&gt;
%    \end{macrocode}
%
% \section{譁�｡｣邀ｻ鬚�､�炊}
%
% 譛ｬ譁�｡｣邀ｻ髫仙ｼ丈ｾ晁ｵ門ｷｲ謨ｴ蜷郁ｿ� \LaTeX--\pkg{base} 逧� \pkg{ltkeys} (蜴� \pkg{l3keys2e}) 蜥� \pkg{lttemplates}�亥次 \pkg{xtemplate}�峨�
%
%    \begin{macrocode}
 \RequirePackage { }
%    \end{macrocode}
%
% \subsection{蜿倬㍼螢ｰ譏枝
%
% \begin{variable}{
%   \l_@@_tmpa_box,
%   \l_@@_tmpa_clist,
%   \l_@@_tmpa_dim,
%   \l_@@_tmpa_skip,
%   \l_@@_tmpa_tl, \l_@@_tmpb_tl,
% }
% 荳ｴ譌ｶ蜿倬㍼縲�
%    \begin{macrocode}
\box_new:N \l_@@_tmpa_box
\clist_new:N \l_@@_tmpa_clist
\dim_new:N \l_@@_tmpa_dim
\skip_new:N \l_@@_tmpa_skip
\tl_new:N \l_@@_tmpa_tl
\tl_new:N \l_@@_tmpb_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_degree_type_tl}
% 隶ｺ譁�ｱｻ蝙九�
%    \begin{macrocode}
\tl_new:N \g_@@_degree_type_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_to_ctex_class_clist, \g_@@_to_hyperref_clist}
% 蛻�悪菫晏ｭ倡罰 \clsname{} 莨�蜈･ \cls{ctexbook} 譁�｡｣邀ｻ蜥� \pkg{hyperref} 螳丞桁逧�蛾｡ｹ蛻苓｡ｨ縲�
%    \begin{macrocode}
\clist_new:N \g_@@_to_ctex_class_clist
\clist_new:N \g_@@_to_hyperref_clist
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_draft_bool}
% 闕臥ｨｿ讓｡蠑上�
%    \begin{macrocode}
\bool_new:N \g_@@_draft_bool
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_anonymous_bool}
% 逶ｲ螳｡讓｡蠑上�
%    \begin{macrocode}
\bool_new:N \g_@@_anonymous_bool
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_anonymous_clist}
% 逶ｲ螳｡讓｡蠑城怙隕�嚼阯冗噪蜀�ｮｹ縲�
%    \begin{macrocode}
\clist_new:N \g_@@_anonymous_clist
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{
%   \g_@@_font_set_tl,
%   \g_@@_font_latin_tl,
%   \g_@@_font_cjk_tl,
%   \g_@@_font_math_tl}
% 蟄伜お謇菴ｿ逕ｨ蟄嶺ｽ灘錐遘ｰ逧��螻蜿倬㍼縲�
%    \begin{macrocode}
\tl_new:N \g_@@_font_set_tl
\tl_new:N \g_@@_font_latin_tl
\tl_new:N \g_@@_font_cjk_tl
\tl_new:N \g_@@_font_math_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_font_dir_tl}
% 蟄伜お蟄嶺ｽ楢ｷｯ蠕�噪蜈ｨ螻蜿倬㍼縲�
%    \begin{macrocode}
\tl_new:N \g_@@_font_dir_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_font_dir_bool}
% 譏ｯ蜷ｦ菴ｿ逕ｨ迢ｬ遶狗噪蟄嶺ｽ捺枚莉ｶ縲�
%    \begin{macrocode}
\bool_new:N \g_@@_font_dir_bool
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_config_tl}
% 菫晏ｭ倬�鄂ｮ譁�ｻｶ蜷咲ｧｰ縲るｻ倩ｮ､荳ｺ遨ｺ縲�
%    \begin{macrocode}
\tl_new:N \g_@@_config_tl
%    \end{macrocode}
% \end{variable}
%
% \subsection{蜀�Κ蜃ｽ謨ｰ}
%
%
% \subsubsection{霎�勧蜃ｽ謨ｰ}
% \begin{macro}{\@@_patch_cmd:Nnn, \@@_appto_cmd:Nn}
% 陦･荳∝ｷ･蜈ｷ�梧擂閾ｪ \pkg{ctexpatch} 螳丞桁縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_patch_cmd:Nnn #1#2#3
  {
    \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
      { } { \ctex_patch_failure:N #1 }
  }
\cs_new_protected:Npn \@@_appto_cmd:Nn #1#2
  {
    \ctex_appto_cmd:NnnTF #1 { } {#2}
      { } { \ctex_patch_failure:N #1 }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_define_fn_style:nn,
%   \@@_define_punct:nn,
%   \@@_define_name:nn,
%   \@@_define_name:nnn}
% 逕ｨ譚･螳壻ｹ芽�豕ｨ譬ｷ蠑上∵��せ縲�ｻ倩ｮ､蜷咲ｧｰ逧�ｾ�勧蜃ｽ謨ｰ縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_define_fn_style:nn #1#2
  { \tl_const:cn { c_@@_fn_style_ #1 _tl } {#2} }
\cs_new_protected:Npn \@@_define_punct:nn #1#2
  { \tl_const:cn { c_@@_ #1 _tl } {#2} }
\cs_new_protected:Npn \@@_define_name:nn #1#2
  { \tl_const:cn { c_@@_name_ #1 _tl } {#2} }
\cs_new_protected:Npn \@@_define_name:nnn #1#2#3
  {
    \tl_const:cn { c_@@_name_ #1 _en_tl } {#2}
    \tl_const:cn { c_@@_name_ #1 _zh_tl } {#3}
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@@_msg_new:nn,
%   \@@_error:n, \@@_error:nn, \@@_error:nx, \@@_error:nnn, \@@_error:nnnn,
%   \@@_warning:n, \@@_warning:nn, \@@_warning:nxx,
%   \@@_info:nx
%}
% 蜷�ｧ堺ｿ｡諱ｯ蜃ｽ謨ｰ逧�ｼｩ逡･蠖｢蠑上�
%    \begin{macrocode}
\cs_new:Npn \@@_msg_new:nn { \msg_new:nnn { hustthesis } }
\cs_new:Npn \@@_error:n { \msg_error:nn { hustthesis } }
\cs_new:Npn \@@_error:nn { \msg_error:nnn { hustthesis } }
\cs_new:Npn \@@_error:nx { \msg_error:nnx { hustthesis } }
\cs_new:Npn \@@_error:nnn { \msg_error:nnnn { hustthesis } }
\cs_new:Npn \@@_error:nnnn { \msg_error:nnnnn { hustthesis } }
\cs_new:Npn \@@_warning:n { \msg_warning:nn { hustthesis } }
\cs_new:Npn \@@_warning:nn { \msg_warning:nnn { hustthesis } }
\cs_new:Npn \@@_warning:nxx { \msg_warning:nnxx { hustthesis } }
\cs_new:Npn \@@_info:nx { \msg_info:nnx { hustthesis } }
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{\LaTeXe{} 蟆∬｣�}
%
% \begin{macro}[deprecated]{\@@_vspace:N, \@@_vspace:n, \@@_vspace:c}
% 邀ｻ莨ｼ \LaTeXe{} 荳ｭ逧� \tn{vspace*}縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_vspace:N #1
  {
    \dim_set_eq:NN \l_@@_tmpa_dim \tex_prevdepth:D
    \tex_hrule:D height \c_zero_dim
    \nobreak
    \skip_vertical:N #1
    \skip_vertical:N \c_zero_skip
    \dim_set_eq:NN \tex_prevdepth:D \l_@@_tmpa_dim
  }
\cs_new_protected:Npn \@@_vspace:n #1
  {
    \skip_set:Nn \l_@@_tmpa_skip {#1}
    \@@_vspace:N \l_@@_tmpa_skip
  }
\cs_generate_variant:Nn \@@_vspace:N { c }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[deprecated]{\@@_hrule:nn}
% 荳肴隼蜿倅ｽ咲ｽｮ逧� \tn{hrule}縲�
% \begin{arguments}
%    \item 郤ｿ谿ｵ邊礼ｻ�ｼ磯ｫ伜ｺｦ��
%    \item 郤ｿ谿ｵ髟ｿ蠎ｦ�亥ｮｽ蠎ｦ��
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_hrule:nn #1#2
  {
    \rule [ -0.5 ex ] { #2 } { #1 }
    \skip_horizontal:n { -#2 }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_ul_to_wd:nnn}
  % \begin{arguments}
  %    \item 荳句�郤ｿ邊礼ｻ�
  %    \item 荳句�郤ｿ髟ｿ蠎ｦ
  %    \item 蜀�ｮｹ
  % \end{arguments}
%    \begin{macrocode}
\dim_new:N \l_@@_ul_dim
\cs_new_protected:Npn \@@_ul_to_wd:nnn #1#2#3
  {
    \hbox_overlap_right:n { \rule [ - 0.5 ex ] { #2 } { #1 } }
    \hbox_to_wd:nn { #2 } { \tex_hfil:D #3 \tex_hfil:D }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_line_spread:N, \@@_line_spread:n}
% 隶ｾ鄂ｮ陦瑚ｷ昴�
% \begin{arguments}
%   \item 陦瑚ｷ晏肴焚�� |fp| 蜿倬㍼
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_line_spread:N #1
  {
    \tl_set:Nn \baselinestretch { \fp_use:N #1 }
    \selectfont
  }
\cs_new:Npn \@@_line_spread:n #1
  {
    \tl_set:Nn \baselinestretch { #1 }
    \selectfont
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[deprecated]{\@@_arabic:n}
% 遲我ｻｷ莠� \LaTeXe{} 荳ｭ逧� \tn{arabic}縲�
%    \begin{macrocode}
\cs_new:Npn \@@_arabic:n #1
  { \int_to_arabic:v { c@ #1 } }
%    \end{macrocode}
% \end{macro}
%
% \subsection{騾蛾｡ｹ螟�炊}
%
% 螳壻ｹ� | hust / option | 髞ｮ蛟ｼ邀ｻ�瑚ｯ･髞ｮ蛟ｼ邀ｻ莉�庄蝨ｨ譁�｡｣邀ｻ騾蛾｡ｹ荳ｭ菴ｿ逕ｨ縲�
%    \begin{macrocode}
\keys_define:nn { hust / option }
  {
%    \end{macrocode}
%
% \begin{macro}[module=option/]{type}
% 隶ｺ譁�ｱｻ蝙九ら岼蜑榊�荳ｺ遑募｣ｫ蟄ｦ菴崎ｮｺ譁㍻\opt{master} 蜥悟忽螢ｫ蟄ｦ菴崎ｮｺ譁㍻\opt{doctor}�碁ｻ倩ｮ､荳ｺ蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁��
%    \begin{macrocode}
    type .choices:nn =
      { master, doctor }
      { \tl_gset_eq:NN \g_@@_degree_type_tl \l_keys_choice_tl },
    type .value_required:n = true,
    type .initial:n = { doctor },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{draft}
% 譏ｯ蜷ｦ蜷ｯ逕ｨ闕臥ｨｿ讓｡蠑上るｻ倩ｮ､荳ｺ \opt{false}縲�
%    \begin{macrocode}
    draft .choice:,
    draft / true .code:n =
      {
        \bool_gset_true:N \g_@@_draft_bool
        \clist_gput_right:Nn \g_@@_to_ctex_class_clist { draft }
      },
    draft / false .code:n =
      {
        \bool_gset_false:N \g_@@_draft_bool
      },
    draft .default:n = { true },
    draft .initial:n = { false },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{anonymous}
% \changes{v2.0.0}{2025-02-18}{謾ｯ謖∫峇螳｡讓｡蠑殉
% 譏ｯ蜷ｦ蜷ｯ逕ｨ逶ｲ螳｡讓｡蠑上るｻ倩ｮ､荳ｺ \opt{false}�悟叉譏ｾ遉ｺ菴懆�ｿ｡諱ｯ縲�\key[option]{anonymous}
%    \begin{macrocode}
    anonymous .choice:,
    anonymous / true .code:n =
      {
        \bool_gset_true:N \g_@@_anonymous_bool
      },
    anonymous / false .code:n =
      {
        \bool_gset_false:N \g_@@_anonymous_bool
      },
    anonymous .default:n = { true },
    anonymous .initial:n = { false },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{anonymous-list}
% 蝨ｨ蠑蜷ｯ逶ｲ螳｡讓｡蠑丈ｸ矩怙隕�嚼阯冗噪蜀�ｮｹ縲ょ�荳ｭ霑樊磁隨ｦ��|-|�蛾怙譖ｿ謐｢荳ｺ荳句�郤ｿ��|_|�会ｼ梧弌蜿ｷ��|*|�蛾怙譖ｿ謐｢荳ｺ|_en|縲�
%    \begin{macrocode}
    anonymous-list .clist_gset:N = \g_@@_anonymous_clist,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{latin-font, cjk-font}
% 荳ｭ闍ｱ譁�ｭ嶺ｽ馴蛾｡ｹ縲�\opt{fandol} 蜥� \opt{gyre} 譏ｯ遲我ｻｷ逧��
%    \begin{macrocode}
    latin-font .choices:nn =
      { fandol, gyre, mac, macoffice, win, none, }
      { \tl_gset:Nn \g_@@_font_latin_tl {#1} },
    cjk-font .choices:nn =
      { fandol, founder, mac, macoffice, noto, source, win, none, }
      { \tl_gset:Nn \g_@@_font_cjk_tl {#1} },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{fontset}
% 荳ｭ闍ｱ譁�ｭ嶺ｽ馴蛾｡ｹ縲�\opt{fontset} 霑吩ｸｪ蜷咲ｧｰ蜥� \pkg{ctex} 荳ｭ逧�弍荳閾ｴ逧��
%    \begin{macrocode}
    fontset .choices:nn =
      { fandol, mac, macoffice, win, none, }
      { \keys_set:nn { hust / option } { latin-font = #1, cjk-font = #1 } },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{math-font}
% 謨ｰ蟄ｦ蟄嶺ｽ馴蛾｡ｹ縲�
% 逕ｱ \pkg{unicode-math} 謖�ｮ� \XeTeX 蜥� \LuaTeX 荳倶ｽｿ逕ｨ逧�焚蟄ｦ蟄嶺ｽ薙�
%    \begin{macrocode}
    math-font .choices:nn =
      {
        asana, cambria, fira, garamond, lm, libertinus, newcm,
        stix, bonum, dejavu, pagella, schola, termes, xits, none,
      }
      { \tl_gset_eq:NN \g_@@_font_math_tl \l_keys_choice_tl },
    math-font .initial:n = xits,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{font-dir}
% 迢ｬ遶句ｭ嶺ｽ捺枚莉ｶ逧�ｷｯ蠕��
%    \begin{macrocode}
    font-dir .code:n =
      {
        \bool_gset_true:N \g_@@_font_dir_bool
        \tl_gset_eq:NN \g_@@_font_dir_tl \l_keys_value_tl
      },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=option/]{config}
% 閾ｪ螳壻ｹ蛾�鄂ｮ譁�ｻｶ蜷阪�
%    \begin{macrocode}
    config .tl_gset:N = \g_@@_config_tl,
%    \end{macrocode}
% \end{macro}
%
% 蟆�悴遏･騾蛾｡ｹ莨�扈� \cls{ctexbook} 譁�｡｣邀ｻ縲�
%    \begin{macrocode}
    unknown .code:n =
      { \clist_gput_right:No \g_@@_to_ctex_class_clist { \CurrentOption } }
  }
%    \end{macrocode}
%
% \begin{macro}[module=option/, int]{option/}
% 蟆�枚譯｣邀ｻ騾蛾｡ｹ莨�扈� |hust / option|縲�
%    \begin{macrocode}
\ProcessKeyOptions [ hust / option ]
%    \end{macrocode}
% \end{macro}
%
% \subsection{蟶ｸ驥剰ｽｽ蜈･}
%
% 霓ｽ蜈･蟶ｸ驥丞ｮ壻ｹ画枚莉ｶ縲�
%    \begin{macrocode}
\tl_if_empty:NTF \g_@@_config_tl
  {
    \tl_if_eq:NnT \g_@@_degree_type_tl { master }
      { \file_input:n { hustthesis-m.def } }
    \tl_if_eq:NnT \g_@@_degree_type_tl { doctor }
      { \file_input:n { hustthesis-d.def } }
  }
  {
    \@@_msg_new:nn { load-config-file }
      { You~ are~ loading~ config~ file~ "#1". }
    \@@_info:n { load-config-file }
    \file_input:V { \g_@@_config_tl }
  }
%    \end{macrocode}
%
% \subsection{螳丞桁霓ｽ蜈･}
%
% \sout{蟇ｹ荳肴髪謖∫ｲ嶺ｽ捺万菴鍋噪蟄嶺ｽ楢ｿ幄｡悟�螳ｹ螟�炊�御ｻ�剞莠� \XeTeX{} 蠑墓梼縲�}\\
% \sout{蜿り�� \url{https://ask.latexstudio.net/ask/question/17464.html}縲�}
%    \begin{macrocode}
%\sys_if_engine_xetex:T
%  {
%    \PassOptionsToPackage { AutoFakeBold=4.0 } { xeCJK }
%    \AddToHook { package / ctex / before }
%      {
%        \AddToHook { package / xeCJK / after }
%          {
%            \keys_define:nn { xeCJK / features }
%              {
%                BoldFont .code:n = ,
%                ItalicFont .code:n =,
%              }
%          }
%      }
%    \AddToHook { package / ctex / after }
%      {
%        \keys_define:nn { xeCJK / features }
%          {
%            BoldFont .tl_set:N = \l__xeCJK_font_name_bf_tl ,
%            ItalicFont .tl_set:N = \l__xeCJK_font_name_it_tl,
%          }
%      }
%  }
%    \end{macrocode}
%
% 蟆�蛾｡ｹ莨�蜈･ \cls{ctexbook} 譁�｡｣邀ｻ縲�
%    \begin{macrocode}
\PassOptionsToClass
  {
    a4paper,
    UTF8,
    scheme = chinese,
    fontset = none,
    oneside,
    heading = true,
    zihao = -4,
    linespread = \c_@@_line_spread_fp,
    \g_@@_to_ctex_class_clist,
  }
  { ctexbook }
\LoadClass { ctexbook }
%    \end{macrocode}
%
% 蜈ｶ荳ｭ \pkg{utfsym} 螳丞桁荳堺ｾ晁ｵ門､夜Κ蟄嶺ｽ難ｼ御ｽｿ逕ｨ \TikZ{} 螳丞桁扈伜宛 |U+2610|:~笘撰ｼ芸U+2611|:~笘托ｼ芸U+1F5F9|:~\usym{1F5F9} 遲臥ｬｦ蜿ｷ縲�
%    \begin{macrocode}
\RequirePackage
  {
    amsmath,
    geometry,
    fancyhdr,
    titletoc,
    graphicx,
    multirow,
    longtable,
    caption,
    utfsym,
  }
%    \end{macrocode}
%
% 霓ｽ蜈･蝓ｺ莠� \clsname{} 譬ｷ蠑冗噪 \pkg{biblatex} 螳丞桁縲�
%    \begin{macrocode}
\RequirePackage[style=hustthesis]{biblatex}
%    \end{macrocode}
%
%
% \section{蜈ｨ螻譬ｷ蠑殉
%
% 髫占酪逶ｲ螳｡讓｡蠑丈ｸ矩怙隕�嚼阯冗噪蜀�ｮｹ縲�
%    \begin{macrocode}
\clist_map_inline:Nn \g_@@_anonymous_clist
  {
    \tl_gset_eq:cN { g_@@_name_ #1 _tl } \c_empty_tl
  }
%    \end{macrocode}
%
% \subsection{鬘ｵ髱｢蟶�ｱ}
% 蛻ｩ逕ｨ \pkg{geometry} 螳丞桁隶ｾ鄂ｮ郤ｸ蠑�螟ｧ蟆上�｡ｵ髱｢霎ｹ霍昜ｻ･蜿企｡ｵ逵蛾ｫ伜ｺｦ縲�
%    \begin{macrocode}
\geometry
  {
    top = 4.5 cm,
    bottom = 2.8 cm,
    left = 2.8 cm,
    right = 2.8 cm,
    headheight = 30 pt,
  }
%    \end{macrocode}
%
% \subsection{蟄嶺ｽ楢ｮｾ鄂ｮ}
%
% ^^A 譛ｬ蟆剰鰍蛻晉沿螳樒鴫荳ｻ隕∵擂閾ｪ \pkg{njuthesis} 譁�｡｣邀ｻ縲�
%
% \pkg{fontspec} 蛹�性莠� \pkg{ctex} 螳城寔�梧裏髴蜿ｦ陦瑚ｽｽ蜈･縲�
%
% \subsubsection{謫堺ｽ懃ｳｻ扈滓｣豬急
%
% \begin{variable}{\c_@@_path_macoffice_tl}
% mac Office 蟄嶺ｽ楢ｷｯ蠕��
%    \begin{macrocode}
\tl_const:Nn \c_@@_path_macoffice_tl
  { /Applications/Microsoft~ Word.app/Contents/Resources/DFonts/ }
%    \end{macrocode}
% \end{variable}
%
% 謫堺ｽ懃ｳｻ扈滓｣豬九ら嶌霎�ｺ� \pkg{ctex} 謠蝉ｾ帷噪 \cs{ctex_detect_platform:}��
% 鬚晏､門｢槫刈莠�ｯｹ macOS 荳� MS Office 逧�｣豬九�
%    \begin{macrocode}
\sys_if_platform_windows:TF
  { \tl_gset:Nn \g_@@_font_set_tl { win } }
  {
    \ctex_if_platform_macos:TF
      {
        \file_if_exist:nTF { \c_@@_path_macoffice_tl times.ttf }
          { \tl_gset:Nn \g_@@_font_set_tl { macoffice } }
          { \tl_gset:Nn \g_@@_font_set_tl { mac } }
      }
      { \tl_gset:Nn \g_@@_font_set_tl { fandol } }
  }
%    \end{macrocode}
% 蛻､譁ｭ逕ｨ謌ｷ譏ｯ蜷ｦ閾ｪ螳壻ｹ我ｺ�ｸｭ闍ｱ譁�ｭ嶺ｽ薙ょｦよ棡蜈ｶ荳ｭ莉ｻ諢丈ｸ遘肴悴陲ｫ螳壻ｹ会ｼ�
% 蛻吩ｽｿ逕ｨ邉ｻ扈滄｢�｣�ｭ嶺ｽ楢ｦ�尠蟄嶺ｽ馴蛾｡ｹ縲�
% Windows 謌� macOS 螟也噪邉ｻ扈溯｢ｫ蛻､譁ｭ荳ｺ Linux�御ｸ蠕倶ｽｿ逕ｨ閾ｪ逕ｱ蟄嶺ｽ薙�
%    \begin{macrocode}
\tl_if_empty:NT \g_@@_font_latin_tl
  { \tl_gset_eq:NN \g_@@_font_latin_tl \g_@@_font_set_tl }
\tl_if_empty:NT \g_@@_font_cjk_tl
  { \tl_gset_eq:NN \g_@@_font_cjk_tl \g_@@_font_set_tl }
%    \end{macrocode}
%
%
% \subsubsection{螳壻ｹ芽恭譁�ｭ怜ｺ党
%
% 謗･荳区擂騾蝉ｸｪ螳壻ｹ画園髴隕∽ｽｿ逕ｨ逧�ｭ怜ｺ薙�
%
% \begin{macro}{
%   \@@_loadfont_latin:n,
%   \@@_loadfont_latin_win:,
%   \@@_loadfont_latin_mac:,
% }
% Windows 荳� macOS 隘ｿ譁�ｭ嶺ｽ鍋噪蛹ｺ蛻ｫ荳ｻ隕∝惠莠朱ｻ倩ｮ､遲牙ｮｽ蟄嶺ｽ薙�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_latin:n #1
  {
    \__fontspec_main_setmainfont:nn { } { Times~New~Roman }
    \__fontspec_main_setsansfont:nn { } { Arial }
    \__fontspec_main_setmonofont:nn { Scale = MatchLowercase } {#1}
  }
\cs_new_protected:Npn \@@_loadfont_latin_win:
  { \@@_loadfont_latin:n { Courier~New } }
\cs_new_protected:Npn \@@_loadfont_latin_mac:
  {
    \@@_loadfont_latin:n { Menlo }
%    \end{macrocode}
% 譽豬� Times New Roman 譏ｯ蜷ｦ蜈ｷ譛牙ｰ丞梛螟ｧ蜀吝ｭ玲ｯ搾ｼ�small caps�牙ｭ怜梛縲�
% 霑呎弍 macOS 鬚�｣�噪蟄嶺ｽ鍋沿譛ｬ霎�立蟇ｼ閾ｴ逧��
%    \begin{macrocode}
    \fontspec_if_small_caps:F
      {
        \@@_warning:n { no-small-caps }
        \__fontspec_main_setmainfont:nn
          { \c_@@_name_gyrefeature_clist } { texgyretermes }
      }
  }
\@@_msg_new:nn { no-small-caps }
  {
    I~ am~ using~ TeX~ Gyre~ Termes~ as~ default~ Roman~ font.\\
    This~ is~ because~ the~ "Times~ New~ Roman"~ font~ in~ your~
    system~ does~ not~ embed~ glyphs~ for~ small~ capitals.~
    You~ can~ ignore~ this~ warning~ if~ you~ do~ not~ need~
    \string\textsc.~ For~ more~ information,~
    please~ refer~ to~ section~ 3.2.6~ of~ the~ documentation.
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_latin_macoffice:}
% mac Office 隘ｿ譁�ｭ嶺ｽ薙�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_latin_macoffice:
  {
    \__fontspec_main_setmainfont:nn
      { \c_@@_name_macofficefeature_clist } { times }
    \__fontspec_main_setsansfont:nn
      { \c_@@_name_macofficefeature_clist } { arial }
    \__fontspec_main_setmonofont:nn
      { Scale = MatchLowercase } { Menlo }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\c_@@_name_macofficefeature_clist}
% 逕ｨ莠� \pkg{fontspec} 逧� mac Office 蟄嶺ｽ鍋音諤ｧ蛻苓｡ｨ縲�
%    \begin{macrocode}
\clist_const:Nn \c_@@_name_macofficefeature_clist
  {
    Path = \c_@@_path_macoffice_tl,
    Extension = .ttf,
    UprightFont = *,
    BoldFont = *bd,
    ItalicFont = *i,
    BoldItalicFont = *bi,
  }
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_loadfont_latin_gyre:}
% 蠑貅千噪 \TeX Gyre 隘ｿ譁�ｭ嶺ｽ薙�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_latin_gyre:
  {
    \__fontspec_main_setmainfont:nn
      { \c_@@_name_gyrefeature_clist } { texgyretermes }
    \__fontspec_main_setsansfont:nn
      { \c_@@_name_gyrefeature_clist } { texgyreheros }
    \__fontspec_main_setmonofont:nn
      {
        \c_@@_name_gyrefeature_clist,
        Scale = MatchLowercase,
        Ligatures = CommonOff,
      }
      { texgyrecursor }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_latin_fandol:}
% 荳ｺ蜈ｼ螳ｹ \pkg{ctex} 蛛壼�逧�錐遘ｰ謾ｹ蜿倥�
%    \begin{macrocode}
\cs_new_eq:NN \@@_loadfont_latin_fandol: \@@_loadfont_latin_gyre:
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\c_@@_name_gyrefeature_clist}
% 逕ｨ莠� \pkg{fontspec} 逧� \TeX Gyre 蟄嶺ｽ鍋音諤ｧ蛻苓｡ｨ縲�
%    \begin{macrocode}
\clist_const:Nn \c_@@_name_gyrefeature_clist
  {
    Extension = .otf,
    UprightFont = *-regular,
    BoldFont = *-bold,
    ItalicFont = *-italic,
    BoldItalicFont = *-bolditalic,
  }
%    \end{macrocode}
% \end{variable}
%
%
% \subsubsection{螳壻ｹ我ｸｭ譁�ｭ怜ｺ党
%
% \begin{macro}{\@@_hide_no_script_msg:}
% 髫占酪 |does not contain script "CJK"| 隴ｦ蜻翫�
%    \begin{macrocode}
\cs_new:Npn \@@_hide_no_script_msg:
  { \msg_redirect_name:nnn { fontspec } { no-script } { info } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_win:N, \@@_loadfont_cjk_win:}
% Windows 荳ｭ譁�ｭ嶺ｽ薙�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_cjk_win:N #1
  {
    \setCJKmainfont { SimSun } [ #1, ItalicFont = KaiTi ]
    \setCJKsansfont { SimHei } [#1]
    \setCJKmonofont { FangSong } [#1]
    \setCJKfamilyfont { zhsong } { SimSun } [#1]
    \setCJKfamilyfont { zhhei } { SimHei } [#1]
    \setCJKfamilyfont { zhfs } { FangSong } [#1]
    \setCJKfamilyfont { zhkai } { KaiTi } [#1]
    \@@_define_stzhongs:nn { STZhongsong } {#1}
  }
\cs_new:Npn \@@_loadfont_cjk_win:
  { \@@_loadfont_cjk_win:N \c_@@_name_fakebold_tl }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_mac:}
% macOS 蟄嶺ｽ薙�
% ^^A TODO: 菫ｮ螟� macOS 蟄嶺ｽ捺髪謖�ｼ悟ｮ樒鴫蠑邂ｱ蜊ｳ逕ｨ縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_cjk_mac:
  {
    \@@_hide_no_script_msg:
    \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 ]
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_macoffice:n, \@@_loadfont_cjk_macoffice:}
% mac Office 荳ｭ譁�ｭ嶺ｽ薙�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_cjk_macoffice:n #1
  {
    \setCJKmainfont { Simsun.ttc } [ ItalicFont = Kaiti.ttf, #1 ]
    \setCJKsansfont { SimHei.ttf } [#1]
    \setCJKmonofont { Fangsong.ttf } [#1]
    \setCJKfamilyfont { zhsong } { Simsun.ttc } [#1]
    \setCJKfamilyfont { zhhei } { SimHei.ttf } [#1]
    \setCJKfamilyfont { zhfs } { Fangsong.ttf } [#1]
    \setCJKfamilyfont { zhkai } { Kaiti.ttf } [#1]
    \@@_define_stzhongs:nn { \c__hust_path_macoffice_tl STZHONGS.ttf } {#1}
  }
\cs_new:Npn \@@_loadfont_cjk_macoffice:
  {
    \@@_loadfont_cjk_macoffice:n
      { Path = \c_@@_path_macoffice_tl, \c_@@_name_fakebold_tl }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_fandol:}
% Fandol 蟄嶺ｽ薙�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_cjk_fandol:
  {
    \@@_hide_no_script_msg:
    \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, \c_@@_name_fakebold_tl ]
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_founder:}
% 譁ｹ豁｣蟄怜ｺ難ｼ育ｮ郢∵黄螻包ｼ�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_cjk_founder:
  {
%    \end{macrocode}
% 隹�紛譁ｹ豁｣蟄嶺ｽ捺峡蜿ｷ菴咲ｽｮ縲�
% \footnote{\XeTeX 逧�ｰ�紛譁ｹ豕墓擂閾ｪ \url{https://www.zhihu.com/question/46241367/answer/101660183}縲�}
%    \begin{macrocode}
    \sys_if_engine_xetex:T
      { \xeCJKEditPunctStyle { quanjiao } { optimize-kerning = true } }
    \sys_if_engine_luatex:T
      { \defaultCJKfontfeatures { JFM = { zh_CN / { quanjiao, fzpr } } } }
    \setCJKmainfont { FZShuSong-Z01 }
      [ BoldFont = FZXiaoBiaoSong-B05, ItalicFont = FZKai-Z03 ]
    \setCJKsansfont { FZXiHeiI-Z08 } [ BoldFont = FZHei-B01 ]
    \setCJKmonofont { FZFangSong-Z02 }
    \setCJKfamilyfont { zhsong } { FZShuSong-Z01 }
      [ BoldFont = FZXiaoBiaoSong-B05 ]
    \setCJKfamilyfont { zhhei } { FZHei-B01 }
      [ \c_@@_name_fakebold_tl ]
    \setCJKfamilyfont { zhkai } { FZKai-Z03 }
      [ \c_@@_name_fakebold_tl ]
    \setCJKfamilyfont { zhfs } { FZFangSong-Z02 }
    \defaultCJKfontfeatures { }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_noto:}
% Noto 諤晄ｺ仙ｭ嶺ｽ薙�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_cjk_noto:
  {
    \setCJKmainfont [ \c_@@_name_notofeature_clist ]
      { NotoSerifCJKsc }
    \setCJKsansfont [ \c_@@_name_notofeature_clist ]
      { NotoSansCJKsc  }
    \setCJKmonofont { Noto~Sans~Mono~CJK~SC }
    \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC }
    \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC }
    \setCJKfamilyfont { zhfs } { FZFangSong-Z02 }
    \setCJKfamilyfont { zhkai } { FZKai-Z03 }
      [ \c_@@_name_fakebold_tl ]
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_cjk_source:}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont_cjk_source:
  {
    \setCJKmainfont [ \c_@@_name_notofeature_clist ]
      { SourceHanSerifSC }
    \setCJKsansfont [ \c_@@_name_notofeature_clist ]
      { SourceHanSansSC  }
    \setCJKmonofont { FZFangSong-Z02 }
    \setCJKfamilyfont { zhsong } { Source~Han~Serif~SC }
    \setCJKfamilyfont { zhhei } { Source~Han~Sans~SC }
    \setCJKfamilyfont { zhfs } { FZFangSong-Z02 }
    \setCJKfamilyfont { zhkai } { FZKai-Z03 }
      [ \c_@@_name_fakebold_tl ]
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\c_@@_name_fakebold_tl}
%    \begin{macrocode}
\tl_const:Nn \c_@@_name_fakebold_tl { AutoFakeBold = 2.17 }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\c_@@_name_notofeature_clist}
% 逕ｨ莠� \pkg{fontspec} 逧�晄ｺ仙ｭ嶺ｽ鍋音諤ｧ蛻苓｡ｨ縲�
%    \begin{macrocode}
\clist_const:Nn \c_@@_name_notofeature_clist
  {
    Extension = .otf,
    UprightFont = *-Regular,
    BoldFont = *-Bold,
    ItalicFont = *-Regular,
    BoldItalicFont = *-Bold,
    ItalicFeatures = FakeSlant,
    BoldItalicFeatures = FakeSlant,
  }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\l_@@_name_stzhongsopts_tl}
% 蜊取枚荳ｭ螳狗噪蟄嶺ｽ鍋音諤ｧ蛻苓｡ｨ�碁ｻ倩ｮ､荳ｺ莉�ｽｿ逕ｨ莨ｪ邊嶺ｽ薙�
%    \begin{macrocode}
\tl_new:N \l_@@_name_stzhongsopts_tl
\tl_set_eq:NN \l_@@_name_stzhongsopts_tl \c_@@_name_fakebold_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_define_stzhongs:nn}
% 荳ｭ譁�ｰ�擇鬚晏､夜怙隕∫噪蜊取枚荳ｭ螳九�
%    \begin{macrocode}
\tl_new:N \l_@@_name_stzhongsfile_tl
\cs_new:Npn \@@_define_stzhongs:nn #1#2
  {
    \tl_set:Nn \l_@@_name_stzhongsfile_tl {#1}
    \tl_set:Nn \l_@@_name_stzhongsopts_tl {#2}
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_stzhongs:n}
% \begin{macro}{\@@_loadfont_stzhongs:V, \@@_loadfont_stzhongs:, \@@_stzhongs:}
% 遐皮ｩｶ逕溷ｰ�擇鬚晏､夜怙隕∫噪蜊取枚荳ｭ螳九�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_stzhongs:
  {
    \@@_loadfont_stzhongs:V \l_@@_name_stzhongsfile_tl
  }
\cs_new_protected:Npn \@@_loadfont_stzhongs:n #1
  {
    \fontspec_font_if_exist:nTF { #1 }
      {
        \newCJKfontfamily \@@_stzhongs: { #1 }
          [ \l_@@_name_stzhongsopts_tl ]
      }
      {
        \bool_if:NTF \g_@@_font_dir_bool
          {
            \newCJKfontfamily \@@_stzhongs: { #1 }
              [ Path = \g_@@_font_dir_tl, \c_@@_name_fakebold_tl ]
          }
          {
            \cs_set_eq:NN \@@_stzhongs: \rmfamily
            \@@_warning:n { missing-stzhongs }
          }
      }
  }
\@@_msg_new:nn { missing-stzhongs }
  {
    "STZHONGS.TTF"~ is~ not~ found~ in~ your~ system.\\
    The~ font~ is~ normally~ distributed~ with~ MS~ Windows.~
    I~ have~ used~ songti~ for~ substitution.
  }
\cs_generate_variant:Nn \@@_loadfont_stzhongs:n { V }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%
% \subsubsection{螳壻ｹ画焚蟄ｦ蟄怜ｺ党
%
% \begin{macro}{\@@_define_math_font:nn}
% 謇ｹ驥丞ｮ壻ｹ画焚蟄ｦ蟄嶺ｽ馴�鄂ｮ縲�
%    \begin{macrocode}
\cs_new:Npn \@@_define_math_font:nn #1#2
  {
    \cs_new:cpn { @@_loadfont_math_ #1 : }
      { \__um_setmathfont:nn { } {#2} }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}
% {
%   \@@_loadfont_math_asana:,
%   \@@_loadfont_math_fira:,
%   \@@_loadfont_math_garamond:,
%   \@@_loadfont_math_lm:,
%   \@@_loadfont_math_libertinus:,
%   \@@_loadfont_math_stix:,
%   \@@_loadfont_math_bonum:,
%   \@@_loadfont_math_dejavu:,
%   \@@_loadfont_math_pagella:,
%   \@@_loadfont_math_schola:,
%   \@@_loadfont_math_termes:,
% }
% 謇ｹ驥丞ｮ壻ｹ芽凶蟷ｲ謨ｰ蟄ｦ蟄嶺ｽ鍋噪霓ｽ蜈･蜻ｽ莉､縲�
%    \begin{macrocode}
\clist_map_inline:nn
  {
    { asana } { Asana-Math.otf },
    { fira } { FiraMath-Regular.otf },
    { garamond } { Garamond-Math.otf },
    { lm } { latinmodern-math.otf },
    { libertinus } { LibertinusMath-Regular.otf },
    { stix } { STIXMath-Regular.otf },
    { bonum } { texgyrebonum-math.otf },
    { dejavu } { texgyredejavu-math.otf },
    { pagella } { texgyrepagella-math.otf },
    { schola } { texgyreschola-math.otf },
    { termes } { texgyretermes-math.otf },
  }
  { \@@_define_math_font:nn #1 }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_math_cambria:}
% Cambria Math 蟄嶺ｽ馴�鄂ｮ縲�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_math_cambria:
  {
    \bool_if:NTF \g_@@_font_dir_bool
      {
        \__um_setmathfont:nn
          { Path = \g_@@_font_dir_tl/, FontIndex = 1 }
          { cambria.ttc }
      }
      { \__um_setmathfont:nn { } { Cambria~Math } }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_math_xits:}
% XITS Math 蟄嶺ｽ薙�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_math_xits:
  {
    \bool_if:NTF \g_@@_opt_math_int_bool
      { \tl_set:Nn \l_@@_tmpa_tl { 8 } }
      { \tl_clear:N \l_@@_tmpa_tl }
    \__um_setmathfont:nn
      {
        Extension = .otf,
        StylisticSet = \l_@@_tmpa_tl,
        BoldFont = XITSMath-Bold,
      }
      { XITSMath-Regular }
    \__um_setmathfont:nn
      {
        Extension = .otf,
        StylisticSet = 1,
        range = {cal, bfcal},
      }
      { XITSMath-Regular }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_math_newcm:}
% New Computer Modern Math 蟄嶺ｽ薙�
%    \begin{macrocode}
\cs_new:Npn \@@_loadfont_math_newcm:
  {
    \bool_if:NTF \g_@@_opt_math_int_bool
      { \tl_set:Nn \l_@@_tmpa_tl { 2 } }
      { \tl_clear:N \l_@@_tmpa_tl }
    \__um_setmathfont:nn
      {
        Extension = .otf,
        StylisticSet = \l_@@_tmpa_tl,
      }
      { NewCMMath-Book }
    \__um_setmathfont:nn
      {
        Extension = .otf,
        StylisticSet = 1,
        range = {scr,bfscr},
      }
      { NewCMMath-Book }
    \__fontspec_main_setmathrm:nn
      {
        Extension = .otf,
        UprightFont = *-Book,
        BoldFont = *-Bold,
        ItalicFont = *-BookItalic,
        BoldItalicFont = *-BoldItalic,
      }
      { NewCM10 }
    \__fontspec_main_setmathsf:nn
      {
        Extension = .otf,
        UprightFont = *-Book,
        BoldFont = *-Bold,
        ItalicFont = *-BookOblique,
        BoldItalicFont = *-BoldOblique,
      }
      { NewCMSans10 }
    \__fontspec_main_setmathtt:nn
      {
        Extension = .otf,
        UprightFont = *-Book,
        ItalicFont = *-BookItalic,
        BoldFont = *-Bold,
        BoldItalicFont = *-BoldOblique,
      }
      { NewCMMono10 }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_loadfont_math_none:}
% 荳崎ｿ幄｡梧焚蟄ｦ蟄嶺ｽ馴�鄂ｮ縲�
%    \begin{macrocode}
\cs_set_eq:NN \@@_loadfont_math_none: \tex_relax:D
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{霓ｽ蜈･謖�ｮ壼ｭ怜ｺ党
%
% \begin{macro}{\@@_loadfont:}
% 霓ｽ蜈･蟄嶺ｽ灘多莉､縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_loadfont:
  {
    \use:c { @@_loadfont_latin_ \g_@@_font_latin_tl : }
    \use:c { @@_loadfont_cjk_ \g_@@_font_cjk_tl : }
%    \end{macrocode}
% 閾ｪ陦悟ｮ壻ｹ� \pkg{ctex} 荳ｭ逧�屁邀ｻ蟄嶺ｽ灘多莉､縲�
%    \begin{macrocode}
    \NewDocumentCommand \songti { } { \CJKfamily { zhsong } }
    \NewDocumentCommand \heiti { } { \CJKfamily { zhhei } }
    \NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } }
    \NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } }
  }
%    \end{macrocode}
% \end{macro}
%
% 霓ｽ蜈･隶ｾ鄂ｮ逧�ｭ嶺ｽ薙�^^A 荳ｺ莠�精謾ｶ蟇ｼ險蛹ｺ逧�ｮｾ鄂ｮ�梧叛蝨ｨ蜈ｶ蜷手ｽｽ蜈･縲�
%    \begin{macrocode}
% \BeforeBeginEnvironment { document } { \@@_loadfont: }
\@@_loadfont:
%    \end{macrocode}
%
% 蟆�克譁�ｸｭ螳区叛蝨ｨ譁�｡｣邀ｻ譛蜷手ｽｽ蜈･縲�
%    \begin{macrocode}
\ctex_at_end_preamble:n { \@@_loadfont_stzhongs: }
%    \end{macrocode}
%
% \subsection{鬘ｵ逵蛾｡ｵ閼嘲
%
% 貂�勁鮟倩ｮ､鬘ｵ逵蛾｡ｵ閼壽�ｼ蠑上�
%    \begin{macrocode}
\fancyhf {}
%    \end{macrocode}
%
% 隶ｾ鄂ｮ鬘ｵ逵蛾｡ｵ閼夐｢懆牡縲�
% \changes{v2.0.0}{2025-02-21}{菴ｿ逕ｨ \pkg{l3color}�御ｸ榊�萓晁ｵ� \pkg{xcolor}}
%    \begin{macrocode}
\color_set:nn { headfoot } { red }
% \providecolor { headfoot } { rgb } { 1, 0, 0 }
%    \end{macrocode}
%
% \begin{macro}{\@@_draw_hf_hline:n}
% 扈伜宛鬘ｵ逵蛾｡ｵ閼壽ｨｪ郤ｿ縲�
% \begin{arguments}
%   \item 鬘ｵ逵蛾｡ｵ閼夂ｺｿ逧�ｫ伜ｺｦ�育ｲ礼ｻ�ｼ�
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_draw_hf_hline:n #1
  {
    { \color_select:n { headfoot } \tex_hrule:D height #1 }
  }
%    \end{macrocode}
% \end{macro}
%
% \sout{隶ｾ鄂ｮ鬘ｵ逵画�ｼ蠑上ゆｻ�惠髱樒峇螳｡讓｡蠑淳\key{anonymous} 荳区仞遉ｺ蟄ｦ譬｡蜷咲ｧｰ縲�}
%    \begin{macrocode}
%\bool_if:NF \g_@@_anonymous_bool
%  {
    \chead
      {
        \zihao{3} \ziju{0.75} \bfseries \kaishu
        \color_group_begin:
        \color_select:n { headfoot }
        \c_@@_header_tl
        \color_group_end:
      }
%  }
\tl_set:Nn { \headrulewidth } { 1 pt }
\tl_set:Nn { \headrule }
  {
    \skip_vertical:n { 3 pt }
    \@@_draw_hf_hline:n \headrulewidth
    \skip_vertical:n \headrulewidth
    \@@_draw_hf_hline:n \headrulewidth
  }
%    \end{macrocode}
%
% 隶ｾ鄂ｮ鬘ｵ閼壽�ｼ蠑上�
%    \begin{macrocode}
\cfoot { \zihao{-5} \thepage }
\tl_set:Nn { \footrulewidth } { 0.5 pt }
\tl_set:Nn { \footrule }
  {
    \@@_draw_hf_hline:n \footrulewidth
    \skip_vertical:n { 3 pt }
  }
%    \end{macrocode}
%
% \pkg{ctex} 螳丞桁菴ｿ逕ｨ |heading| 騾蛾｡ｹ蜷趣ｼ御ｼ壽滑鬘ｵ髱｢譬ｼ蠑剰ｮｾ鄂ｮ荳ｺ |headings|縲�
% 蝗�豁､蠢�｡ｻ蝨ｨ \pkg{ctex} 隹�畑荵句錘驥肴眠隶ｾ鄂ｮ \tn{pagestyle} 荳ｺ |fancy|縲�
%    \begin{macrocode}
\pagestyle { fancy }
%    \end{macrocode}
%
%
% \section{蟆�擇謇蛾｡ｵ譬ｷ蠑殉
%
% 螳壻ｹ我ｸｭ闍ｱ譁�ｰ�擇�檎ｭ碑ｾｩ蟋泌遭莨夐｡ｵ�悟｣ｰ譏朱｡ｵ譬ｷ蠑擾ｼ悟叉蝨ｨ豁｣譁�燕荳榊性譛蛾｡ｵ逵蛾｡ｵ閼夂噪迚ｹ谿企｡ｵ髱｢譬ｷ蠑上�
%
% \subsection{菫｡諱ｯ蠖募�}
%
% \begin{variable}{
%   \g_@@_info_title_tl,
%   \g_@@_info_degree_tl,
%   \g_@@_info_author_tl,
%   \g_@@_info_major_tl,
%   \g_@@_info_supervisor_tl,
%   \g_@@_info_date_tl,
%   \g_@@_info_clc_tl,
%   \g_@@_info_student_id_tl,
%   \g_@@_info_school_id_tl,
%   \g_@@_info_secret_tl,
% }
% 螢ｰ譏惹ｸｭ譁�ｰ�擇菫｡諱ｯ縲�
%    \begin{macrocode}
\tl_new:N \g_@@_info_title_tl
\tl_new:N \g_@@_info_degree_type_tl
\tl_new:N \g_@@_info_author_tl
\tl_new:N \g_@@_info_major_tl
\tl_new:N \g_@@_info_supervisor_tl
\tl_new:N \g_@@_info_date_tl
\tl_new:N \g_@@_info_clc_tl
\tl_new:N \g_@@_info_student_id_tl
\tl_new:N \g_@@_info_school_id_tl
\tl_new:N \g_@@_info_secret_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{
%   \g_@@_info_title_en_tl,
%   \g_@@_info_author_en_tl,
%   \g_@@_info_major_en_tl,
%   \g_@@_info_supervisor_en_tl,
%   \g_@@_info_date_en_tl,
%   \g_@@_info_degree_en_tl,
% }
% 螢ｰ譏手恭譁�ｰ�擇菫｡諱ｯ縲�
%    \begin{macrocode}
\tl_new:N \g_@@_info_title_en_tl
\tl_new:N \g_@@_info_author_en_tl
\tl_new:N \g_@@_info_major_en_tl
\tl_new:N \g_@@_info_supervisor_en_tl
\tl_new:N \g_@@_info_date_en_tl
\tl_new:N \g_@@_info_degree_en_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\g_@@_info_committee_seq}
% 螢ｰ譏守ｭ碑ｾｩ蟋泌遭莨壽�蜻伜�陦ｨ縲�
%    \begin{macrocode}
\seq_new:N \g_@@_info_committee_seq
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\l_@@_info_title_sanitized_tl,\l_@@_info_title_en_sanitized_tl}
% 螟�炊蜷守噪隶ｺ譁���｢倥�
%    \begin{macrocode}
\tl_new:N \l_@@_info_title_sanitized_tl
\tl_new:N \l_@@_info_title_en_sanitized_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}[do-not-index={\1, \2}]{\@@_set_title:nn}
% 隶ｾ鄂ｮ隶ｺ譁���｢假ｼ悟ｹｶ蛻�髯､蜈ｶ荳ｭ逧� |\\| 蜥梧ｱ牙ｭ鈴龍逧�ｩｺ譬ｼ縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_set_title:nn #1#2
  {
    \tl_gset:cn { g_@@_info_ #1 _tl } { #2 }
    \tl_set:cn { l_@@_info_ #1 _sanitized_tl } { #2 }
    \tl_replace_all:cnn { l_@@_info_ #1 _sanitized_tl } { \\ } { ~ }
    \regex_replace_all:nnc
      { \s+ } { \ }
      { l_@@_info_ #1 _sanitized_tl }
    \regex_replace_all:nnc
      { ([\x{4e00}-\x{9fff}]) \s+ ([\x{4e00}-\x{9fff}]) } { \1 \2 }
      { l_@@_info_ #1 _sanitized_tl }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_set_date:n}
% 隶ｾ鄂ｮ隶ｺ譁�署莠､譌･譛溘�
%    \begin{macrocode}
\cs_new:Npn \@@_set_date:n #1
  {
    \@@_set_date_aux:w #1 \q_stop
  }
\cs_new_protected:Npn \@@_set_date_aux:w #1 - #2 - #3 \q_stop
  {
    \tl_gset:Nn \g_@@_info_date_tl { {#1} 蟷ｴ {#2} 譛� {#3} 譌･ }
    \tl_gset:Nn \g_@@_info_date_en_tl
      { \clist_item:Nn \c_@@_month_clist {#2},~ {#1} }
  }
\clist_const:Nn \c_@@_month_clist
  {
    January, February, March, April, May, June,
    July, August, September, October, November, December,
  }
%    \end{macrocode}
% \end{macro}
%
% 螳壻ｹ� |hust/info| 髞ｮ蛟ｼ邀ｻ縲�
%    \begin{macrocode}
\keys_define:nn { hust / info }
  {
%    \end{macrocode}
%
% \begin{macro}[module=info/]{info/title, info/title*}
% 隶ｺ譁�｢倡岼縲ゆｻ･荳句ｸｦ譏溷捷逧�｡ｹ逶ｮ蝮�｡ｨ遉ｺ逶ｸ蠎皮噪闍ｱ譁�ｭ玲ｮｵ縲�
%    \begin{macrocode}
    title .tl_gset:N = \g_@@_info_title_tl,
    title* .tl_gset:N = \g_@@_info_title_en_tl,
%    title .code:n = { \@@_set_title:nn { title } { #1 } },
%    title* .code:n = { \@@_set_title:nn { title_en } { #1 } },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/degree, info/degree*}
% 蟄ｦ菴咲ｱｻ蝙具ｼ井ｸｭ譁�ｼ画�蟄ｦ遘托ｼ郁恭譁�ｼ峨�
% 荳ｭ譁�ｱｻ蝙救\key[info]{degree} 蛻�ｸｺ蟄ｦ譛ｯ蝙救\opt{academic}�悟柱荳謎ｸ壼梛~\opt{professional}��
% 闍ｱ譁�ｭｦ遘掻\key[info]{degree*}\footnote{荳ｺ菫晄戟蜻ｽ蜷堺ｸ閾ｴ諤ｧ�悟ｭｦ遘� degree discipline 蝨ｨ豁､螟�ｻ堺ｽｿ逕ｨ髞ｮ蜷� |degree*|} 蛹�峡譁�ｭｦ~\opt{Arts}�檎炊蟄ｦ~\opt{Science}�梧蕗閧ｲ蟄ｦ~\opt{Education}�悟ｷ･蟄ｦ~\opt{Engineering}�梧ｳ募ｭｦ~\opt{Laws}�悟現蟄ｦ~\opt{Medicine}�御ｻ･蜿雁�莉盆\opt{XXX}縲�
%    \begin{macrocode}
    degree .choices:nn =
      { academic, professional }
      {
        \tl_gset_eq:NN \g_@@_info_degree_tl \l_keys_choice_tl
      },
    degree .default:n = { academic },
    degree* .tl_gset:N = \g_@@_info_degree_en_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/author, info/author*}
% 蟄ｦ菴咲筏隸ｷ莠ｺ蟋灘錐縲�
%    \begin{macrocode}
    author .tl_gset:N = \g_@@_info_author_tl,
    author* .tl_gset:N = \g_@@_info_author_en_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/major, info/major*}
% 荳謎ｸ壼錐遘ｰ縲�
%    \begin{macrocode}
    major .tl_gset:N = \g_@@_info_major_tl,
    major* .tl_gset:N = \g_@@_info_major_en_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/supervisor, info/supervisor*}
% 謖�ｯｼ閠∝ｸ医�
%    \begin{macrocode}
    supervisor .tl_gset:N = \g_@@_info_supervisor_tl,
    supervisor* .tl_gset:N = \g_@@_info_supervisor_en_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/date}
% 隶ｺ譁�署莠､譌･譛溘�
%    \begin{macrocode}
    date .code:n = { \@@_set_date:n { #1 } },
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/clc}
% 荳ｭ蝗ｾ蛻�ｱｻ蜿ｷ縲�
%    \begin{macrocode}
    clc .tl_gset:N = \g_@@_info_clc_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/student-id, info/school-id}
% 蟄ｦ蜿ｷ蜥悟ｭｦ譬｡莉｣遐√�
%    \begin{macrocode}
    student-id .tl_gset:N = \g_@@_info_student_id_tl,
    school-id .tl_gset:N = \g_@@_info_school_id_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/secret}
% 蟇�ｺｧ縲�
%    \begin{macrocode}
    secret .tl_gset:N = \g_@@_info_secret_tl,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[module=info/]{info/committee}
% 遲碑ｾｩ蟋泌遭莨壽�蜻伜�陦ｨ縲�
%    \begin{macrocode}
    committee .code:n =
      {
        \seq_gset_from_clist:Nn \g_@@_info_committee_seq { #1 }
      },
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
  }
%    \end{macrocode}
%
% \subsubsection{螳壻ｹ牙�驛ｨ蜃ｽ謨ｰ}
%
% \begin{macro}{\@@_spread_box:nn, \@@_spread_box:no}
% 蛻�淵蟇ｹ鮨千噪豌ｴ蟷ｳ逶貞ｭ舌�
% \begin{arguments}
%   \item 螳ｽ蠎ｦ
%   \item 蜀�ｮｹ
% \end{arguments}
% 蛻ｩ逕ｨ \cs{tl_map_inline:nn} 蝨ｨ蟄礼ｬｦ髣ｴ謠貞� \tn{hfil}�帷ｴｧ髫丞�蜷守噪 \tn{unskip}
% 蟆�ｼ壼悉謗画怙蜷惹ｸ荳ｪ \tn{hfil}縲りｧ� \url{https://tex.stackexchange.com/q/169689}縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_spread_box:nn #1#2
  {
    \mode_leave_vertical:
    \hbox_to_wd:nn {#1} { \tl_map_inline:nn {#2} { ##1 \hfil } \unskip }
  }
\cs_generate_variant:Nn \@@_spread_box:nn { no }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_center_box:nn, \@@_center_box:Vn}
% 螻�ｸｭ蟇ｹ鮨千噪豌ｴ蟷ｳ逶貞ｭ舌�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_center_box:nn #1#2
  {
    \mode_leave_vertical:
    \hbox_to_wd:nn {#1} { \tex_hfil:D #2 \tex_hfil:D }
  }
\cs_generate_variant:Nn \@@_center_box:nn { Vn }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_fixed_width_box:nn}
% 髯仙ｮｽ逶貞ｭ撰ｼ亥�隶ｸ謐｢陦鯉ｼ峨�
%    \begin{macrocode}
\cs_new:Npn \@@_fixed_width_box:nn #1#2
  { \parbox {#1} {#2} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_fixed_width_center_box:nn}
% 螻�ｸｭ蟇ｹ鮨千噪髯仙ｮｽ逶貞ｭ撰ｼ亥�隶ｸ謐｢陦鯉ｼ峨�
%    \begin{macrocode}
\cs_new:Npn \@@_fixed_width_center_box:nn #1#2
  { \parbox {#1} { \centering #2 } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_get_text_width:Nn, \@@_get_text_width:NV}
% 闔ｷ蜿匁枚譛ｬ螳ｽ蠎ｦ�悟ｹｶ蟄伜� |dim| 蝙句序驥上�
% \begin{arguments}
%   \item |dim| 蝙句序驥�
%   \item 蜀�ｮｹ
% \end{arguments}
%    \begin{macrocode}
\cs_new:Npn \@@_get_text_width:Nn #1#2
  {
    \hbox_set:Nn \l_@@_tmpa_box {#2}
    \dim_set:Nn #1 { \box_wd:N \l_@@_tmpa_box }
  }
\cs_generate_variant:Nn \@@_get_text_width:Nn { NV }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[deprecated]{\@@_blank_underline:n}
% 荳句�郤ｿ蜊�菴咲ｬｦ縲�|#1|: 髟ｿ蠎ｦ縲�
%    \begin{macrocode}
\cs_new:Npn \@@_blank_underline:n #1
  { \rule [ -0.5 ex ] {#1} { 0.4 pt } }
%    \end{macrocode}
% \end{macro}
%
% \subsection{蟆�擇讓｡譚ｿ}
%
% \begin{macro}[int, module=component/]{component/}
% 蟆�擇扈�ｻｶ縲�
% \begin{arguments}
%   \item[\opt{content}] 扈�ｻｶ荳ｻ菴灘�螳ｹ
%   \item[\opt{format}] 扈�ｻｶ蟄嶺ｽ�/谿ｵ關ｽ譬ｼ蠑�
%   \item[\opt{height}] 扈�ｻｶ蝗ｺ螳夐ｫ伜ｺｦ�御ｸ崎ｮｾ鄂ｮ蛻呵�蜉ｨ隶｡邂励ゆｸｻ隕∫畑莠手｡梧焚荳咲｡ｮ螳夲ｼ碁怙隕∝崋螳夐ｫ伜ｺｦ逧�ュ蜀ｵ
%   \item[\opt{top-lines}] 鬘ｶ驛ｨ遨ｺ蜃ｺ逧�｡梧焚�梧潔辣ｧ隶ｾ螳夂噪谿ｵ關ｽ譬ｼ蠑剰ｮ｡邂�
%   \item[\opt{top-skip}] 鬘ｶ驛ｨ髣ｴ霍晢ｼ亥ｻｺ隶ｮ莨伜�驟咲ｽｮ蠎暮Κ髣ｴ霍晢ｼ碁｡ｶ驛ｨ髣ｴ霍昜ｻ�惠迚ｹ谿頑ュ蜀ｵ菴ｿ逕ｨ��
%   \item[\opt{bottom-skip}] 蠎暮Κ髣ｴ霍�
%   \item[\opt{bottom-lines}] 蠎暮Κ遨ｺ蜃ｺ逧�｡梧焚�梧潔辣ｧ隶ｾ螳夂噪谿ｵ關ｽ譬ｼ蠑剰ｮ｡邂�
%   \item[\opt{align}] 蟇ｹ鮨先婿蠑擾ｼ悟庄騾牙ｼ荳ｺ髱�蟾ｦ蟇ｹ鮨厨\opt{left}�碁擒蜿ｳ蟇ｹ鮨厨\opt{right}�悟ｱ�ｸｭ蟇ｹ鮨厨\opt{center}�御ｻ･蜿贋ｸ､遶ｯ蟇ｹ鮨厨\opt{justify}縲るｻ倩ｮ､荳ｺ螻�ｸｭ蟇ｹ鮨�
% \end{arguments}
%    \begin{macrocode}
\NewTemplateType { hust / component } { 0 }
\DeclareTemplateInterface { hust / component } { plain } { 0 }
{
  content : tokenlist = \c_empty_tl,
  format : tokenlist = \c_empty_tl,
  width: skip = \c_zero_skip,
  height: skip = \c_zero_skip,
  top-lines : integer = \c_zero_int,
  top-skip : skip = \c_zero_skip,
  bottom-skip : skip = \c_zero_skip,
  bottom-lines : integer = \c_zero_int,
  align : choice { left, right, center, justify } = center,
}
\DeclareTemplateCode { hust / component } { plain } { 0 }
{
  content = \l_@@_component_content_tl,
  format = \l_@@_component_format_tl,
  width = \l_@@_component_width_skip,
  height = \l_@@_component_height_skip,
  top-lines = \l_@@_component_top_lines_int,
  top-skip = \l_@@_component_top_skip,
  bottom-skip = \l_@@_component_bottom_skip,
  bottom-lines = \l_@@_component_bottom_lines_int,
  align =
    {
      left =
        \cs_set_eq:NN \l_@@_component_align: \raggedright,
      right =
        \cs_set_eq:NN \l_@@_component_align: \raggedleft,
      center =
        \cs_set_eq:NN \l_@@_component_align: \centering,
      justify =
        \cs_set_eq:NN \l_@@_component_align: \prg_do_nothing:,
    }
}
{
  \AssignTemplateKeys
  \l_@@_component_format_tl
  \int_step_inline:nn { \l_@@_component_top_lines_int }
    {
      \mode_leave_vertical:
      \tex_par:D
    }
  \dim_compare:nNnTF { \l_@@_component_height_skip } &gt; { \c_zero_skip }
    {
      \box_clear_new:N \l_@@_component_box
      \vbox_set_to_ht:Nnn \l_@@_component_box { \l_@@_component_height_skip }
        {
          \skip_vertical:N \l_@@_component_top_skip
          \l_@@_component_align:
          \l_@@_component_content_tl
          \tex_vfill:D
        }
      \box_use:N \l_@@_component_box
    }
    {
      \skip_vertical:N \l_@@_component_top_skip
      \l_@@_component_align:
      \l_@@_component_content_tl
      \tex_par:D
    }
  \int_step_inline:nn { \l_@@_component_bottom_lines_int }
    {
      \mode_leave_vertical:
      \tex_par:D
    }
  \skip_vertical:N \l_@@_component_bottom_skip
  \skip_vertical:N \c_zero_skip
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/page]{page/}
% 鬘ｵ髱｢讓｡譚ｿ縲�
% \begin{arguments}
%   \item[\opt{prefix}] 扈�ｻｶ蜈ｱ逕ｨ蜑咲ｼ
%   \item[\opt{components}] 扈�ｻｶ蛻苓｡ｨ
%   \item[\opt{style}] 鬘ｵ髱｢譬ｷ蠑� �亥庄菴ｿ逕ｨ \tn{thispagestyle} 驟咲ｽｮ��
%   \item[\opt{format}] 鬘ｵ髱｢蟄嶺ｽ�/谿ｵ關ｽ譬ｼ蠑�
%   \item[\opt{top-skip}] 鬘ｶ驛ｨ髣ｴ霍�
% \end{arguments}
%    \begin{macrocode}
\NewTemplateType { hust / page } { 0 }
\DeclareTemplateInterface { hust / page } { title } { 0 }
  {
    prefix : tokenlist,
    components : commalist,
    style : tokenlist = empty,
    format : tokenlist = \linespread { } \selectfont,
    top-skip : skip = \c_zero_skip,
  }
\DeclareTemplateCode { hust / page } { title } { 0 }
  {
    prefix = \l_@@_page_prefix_tl,
    components = \l_@@_page_components_clist,
    style = \l_@@_page_style_tl,
    format = \l_@@_page_format_tl,
    top-skip = \l_@@_page_top_skip,
  }
  {
    \AssignTemplateKeys
    \skip_vertical:N \l_@@_page_top_skip
    \group_begin:
      \exp_args:No \thispagestyle { \l_@@_page_style_tl }
      \l_@@_page_format_tl
      \clist_map_inline:Nn \l_@@_page_components_clist
        {
          \group_begin:
          \UseInstance { hust / component } { \l_@@_page_prefix_tl / ##1 }
          \group_end:
        }
    \group_end:
    \clearpage
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{
%   \@@_declare_component_instance:nnn,
%   \@@_declare_page_instance:nn,
% }
% 螢ｰ譏取ｨ｡譚ｿ螳樔ｾ狗噪霎�勧蜃ｽ謨ｰ縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_declare_component_instance:nnn #1#2#3
  { \DeclareInstance { hust / component } { #1/#2 } { plain } {#3} }
\cs_new_protected:Npn \@@_declare_page_instance:nn #1#2
  {
    \DeclareInstance { hust / page } {#1} { title }
    {
      prefix = #1,
      #2,
    }
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{蟆�擇扈�ｻｶ}
%
% \subsubsection{荳ｭ譁�ｰ�擇}
%
% \begin{macro}[int, module=component/]{title zh/identifiers}
% 蛻�ｱｻ蜿ｷ�悟ｭｦ蜿ｷ�悟ｭｦ譬｡莉｣遐�ｼ悟ｯ�ｺｧ縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title zh } { identifiers }
  {
    content =
      {
        \@@_title_zh_ids_aux:nn { 6em } { clc } % 3 em
        \skip_horizontal:n { \linewidth - 19em }
        \@@_title_zh_ids_aux:nn { 8em } { student_id } % 4 em
        \tex_par:D
        \@@_title_zh_ids_aux:nn { 5em } { school_id } % 4 em
        \skip_horizontal:n { \linewidth - 19em }
        \@@_title_zh_ids_aux:nn { 8em } { secret } % 4 em
      },
    format =
      {
        \zihao{-4} \bfseries \rmfamily \songti
        \@@_line_spread:n { 1.5 }
      },
    bottom-skip = 2 cm,
  }
\cs_new:Npn \@@_title_zh_ids_aux:nn #1#2
  {
    \tl_use:c { c_@@_name_ #2 _tl }
    \@@_ul_to_wd:nnn { 1 pt } { #1 }
      { \tl_use:c { g_@@_info_ #2 _tl } }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title zh/logo}
% 譬｡蜷榊崟迚��
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title zh } { logo }
  {
    content =
      {
        \includegraphics [ height = 1.4 cm ] { hust-title.pdf }
      },
    bottom-skip = 0.5 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title zh/type}
% 蟄ｦ菴咲ｺｧ蛻ｫ縲�
%    \begin{macrocode}
\__ctex_save_font_size:nn { a } { 45 bp } % 螟ｧ蛻晏捷
\@@_declare_component_instance:nnn { title zh } { type }
  {
    content = { \c_@@_name_type_zh_tl },
    format = { \zihao { a } \bfseries \songti \ziju { 0.1 } },
    bottom-skip = 0.5 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title zh/degree}
% 蟄ｦ菴咲ｱｻ蝙九�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title zh } { degree }
  {
    content =
      {
        ��
        \c_@@_name_academic_zh_tl
        \tl_if_eq:NnTF \g_@@_info_degree_tl { academic }
          { \c_@@_checkbox_tl }
          { \c_@@_emptybox_tl }
        \skip_horizontal:n { 2.5 em }
        \c_@@_name_professional_zh_tl
        \tl_if_eq:NnTF \g_@@_info_degree_tl { professional }
          { \c_@@_checkbox_tl }
          { \c_@@_emptybox_tl }
        ��
      },
    format = { \zihao { -3 } \c_@@_name_degree_font_tl },
    bottom-skip = 1.5 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title zh/title}
% 隶ｺ譁�｢倡岼縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title zh } { title }
  {
    content = { \g_@@_info_title_tl },
    format =
      {
        \zihao { 1 } \bfseries \songti
        \@@_line_spread:n { 1.5 }
      },
    height = 4.8 cm,
    bottom-skip = 1 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title zh/info}
% 菫｡諱ｯ陦ｨ譬ｼ縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title zh } { info }
  {
    content =
      {
        \tl_set:Nn \arraystretch { 2 }
        \begin{tabular}{p{5em}@{�喀hspace{1em}}l}
          \c_@@_name_author_zh_tl &amp; \g_@@_info_author_tl \\
          \c_@@_name_major_zh_tl &amp; \g_@@_info_major_tl \\
          \c_@@_name_supervisor_zh_tl &amp; \g_@@_info_supervisor_tl \\
          \c_@@_name_date_tl &amp; \g_@@_info_date_tl \\
        \end{tabular}
      },
    format = { \zihao { -3 } \bfseries \rmfamily \songti },
    bottom-skip = 30 pt,
  }
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{闍ｱ譁�ｰ�擇}
%
% \begin{macro}[int, module=hust/component/]{title en/degree}
% 蟄ｦ菴咲ｺｧ蛻ｫ蜥悟ｭｦ遘代�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title en } { degree }
  {
    content =
      {
        \c_@@_name_type_en_tl
        \tl_if_eq:NnTF \g_@@_info_degree_tl { academic }
          { \c_@@_name_academic_en_tl }
          { \c_@@_name_professional_en_tl }
        \g_@@_info_degree_en_tl
      },
    format =
      {
        \zihao { -3 } \bfseries \rmfamily
        \@@_line_spread:n { 1.5 }
      },
    bottom-skip = 5.5 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title en/title}
% 隶ｺ譁�｢倡岼縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title en } { title }
  {
    content = { \g_@@_info_title_en_tl },
    format =
      {
        \zihao { -2 } \bfseries \rmfamily
        \@@_line_spread:n { 1.5 }
      },
    height = 3 cm,
    bottom-skip = 3 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title en/info}
% 菫｡諱ｯ陦ｨ譬ｼ縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title en } { info }
  {
    content =
      {
        \begin{tabular}{l@{\hspace{0.5em}:\hspace{0.5em}}l}
          \c_@@_name_author_en_tl &amp; \g_@@_info_author_en_tl \\
          \c_@@_name_major_en_tl &amp; \g_@@_info_major_en_tl \\
          \c_@@_name_supervisor_en_tl &amp; \g_@@_info_supervisor_en_tl \\
        \end{tabular}
      },
    format =
      {
        \zihao { -3 } \bfseries \rmfamily
        \@@_line_spread:n { 1.5 }
      },
    bottom-skip = 4 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title en/address}
% 蟄ｦ譬｡蜷咲ｧｰ蜥悟慍蝮縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title en } { address }
  {
    content = { \c_@@_address_tl },
    format =
      {
        \zihao { -3 } \bfseries \rmfamily
        \@@_line_spread:n { 1.5 }
      },
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{title en/date}
%    \begin{macrocode}
\@@_declare_component_instance:nnn { title en } { date }
  {
    content = { \tl_use:N \g_@@_info_date_en_tl },
    format =
      {
        \zihao { -3 } \bfseries \rmfamily
        \@@_line_spread:n { 1.5 }
      },
  }
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{遲碑ｾｩ蟋泌遭莨夐｡ｵ}
%
% \begin{macro}[int, module=hust/component/]{committee/title}
% 遲碑ｾｩ蟋泌遭莨壽��｢倥�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { committee } { title }
  {
    content = { \c_@@_name_committee_tl },
    format =
      {
        \zihao { 3 } \bfseries \sffamily
        \@@_line_spread:n { 1.5 }
      },
    bottom-lines = 1,
  }
\tl_const:Nn \c_@@_name_committee_tl { 遲碑ｾｩ蟋泌遭莨� }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{committee/members}
% 遲碑ｾｩ蟋泌遭莨壽�蜻伜�陦ｨ縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { committee } { members }
  {
    content =
      {
        \tl_set:Nn \arraystretch { 1.5 }
        \begin{tabular}
          { |c|c|c|c| }
          \hline
          \c_@@_committee_header_tl \\
          \hline
          \int_const:Nn \l_@@_info_committee_count_int
            { \seq_count:N \g_@@_info_committee_seq }
          \seq_map_indexed_inline:Nn \g_@@_info_committee_seq
            {
              \int_case:nnF { #1 }
                {
                  { 1 }
                    {
                      \clist_item:Nn \c_@@_committee_role_clist { 1 }
                      &amp; #2 \\ \hline
                    }
                  { 2 }
                    {
                      \multirow
                        { \int_eval:n { \l_@@_info_committee_count_int - 1 } }
                        { * }
                        { \clist_item:Nn \c_@@_committee_role_clist { 2 } }
                      &amp; #2 \\ \cline{2-4}
                    }
                  { \l_@@_info_committee_count_int }
                    { &amp; #2 }
                }
                { &amp; #2 \\ \cline{2-4} }
            }
            \\ \hline
        \end{tabular}
      },
    format =
      {
        \zihao { 4 } \sffamily
        \@@_line_spread:n { 1.5 }
      },
    top-lines = 1,
  }
\tl_const:Nn \c_@@_committee_header_tl
  { \makebox[3em]{} &amp; \makebox[4em][c]{蟋灘錐} &amp; \makebox[4em][c]{閨檎ｧｰ} &amp; \makebox[12em][c]{蜊穂ｽ閤 }
\clist_const:Nn \c_@@_committee_role_clist
  { 荳ｻ蟶ｭ, 蟋泌遭, }
\tl_new:N \l_@@_committee_member_tl
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{螢ｰ譏朱｡ｵ}
%
% \begin{macro}[int, module=hust/component/]{decl/orig title}
% 迢ｬ蛻帶ｧ螢ｰ譏取��｢倥�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { orig title }
  {
    content = { \c_@@_orig_decl_title_tl },
    format =
      {
        \zihao { 3 } \bfseries \heiti
      },
      bottom-lines = 1,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{decl/orig text}
% 迢ｬ蛻帶ｧ螢ｰ譏取ｭ｣譁��
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { orig text }
  {
    content = { \c_@@_orig_decl_text_tl },
    align = justify,
    bottom-lines = 1,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{decl/orig sign}
% 迢ｬ蛻帶ｧ螢ｰ譏守ｭｾ蜷阪�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { orig sign }
  {
    content =
      {
        \clist_map_inline:Nn \c_@@_orig_decl_sign_clist
          {
            #1 \\
          }
      },
    align = right,
    bottom-lines = 3,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{decl/auth title}
% 蟄ｦ菴崎ｮｺ譁�沿譚�ｽｿ逕ｨ謗域揀荵ｦ譬�｢倥�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { auth title }
  {
    content = { \c_@@_auth_decl_title_tl },
    format =
      {
        \zihao { 3 } \bfseries \heiti
      },
    top-lines = 1,
    bottom-lines = 1,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{decl/auth text}
% 蟄ｦ菴崎ｮｺ譁�沿譚�ｽｿ逕ｨ謗域揀荵ｦ豁｣譁��
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { auth text }
  {
    content = { \c_@@_auth_decl_text_tl },
    align = justify,
    bottom-skip = 0.5 cm,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{decl/auth secr}
% 蟄ｦ菴崎ｮｺ譁�ｿ晏ｯ�ｽｿ逕ｨ菫晏ｯ�蛾｡ｹ縲�
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { auth secr }
  {
    content =
      {
        \mode_leave_vertical:
        \hbox_overlap_right:n
          { \clist_item:Nn \c_@@_auth_decl_secr_clist { 1 } }
        \skip_vertical:n { -1.2 cm }
        \skip_horizontal:n { 6 em }
        \clist_item:Nn \c_@@_auth_decl_secr_clist { 2 }
        \tex_par:D
        \skip_horizontal:n { 6 em }
        \clist_item:Nn \c_@@_auth_decl_secr_clist { 3 }
        \tex_par:D
        \clist_item:Nn \c_@@_auth_decl_secr_clist { 4 }
      },
    align = justify,
    bottom-lines = 1,
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int, module=hust/component/]{decl/auth sign}
%    \begin{macrocode}
\@@_declare_component_instance:nnn { decl } { auth sign }
  {
    content =
      {
        \clist_map_inline:Nn \c_@@_auth_decl_sign_clist
          {
            #1
            \tex_par:D
          }
      },
    align = justify,
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{扈伜宛蟆�擇}
%
% \begin{macro}{\makezhtitle}
% 荳ｭ譁���｢倬｡ｵ縲�
%    \begin{macrocode}
\@@_declare_page_instance:nn { title zh }
  {
    components = { identifiers, logo, type, degree, title, info, },
  }
\DeclareDocumentCommand \makezhtitle { }
  {
    \UseInstance { hust / page } { title zh }
  }
%    \end{macrocode}
% \end{macro}
%

% \begin{macro}{\makeentitle}
% 闍ｱ譁���｢倬｡ｵ縲�
%    \begin{macrocode}
\@@_declare_page_instance:nn { title en }
  {
    components = { degree, title, info, address, date, },
  }
\DeclareDocumentCommand \makeentitle { }
  {
    \UseInstance { hust / page } { title en }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\makecommittee}
% 遲碑ｾｩ蟋泌遭莨夐｡ｵ縲�
%    \begin{macrocode}
\@@_declare_page_instance:nn { committee }
  {
    components = { title, members, },
  }
\DeclareDocumentCommand \makecommittee { }
  {
    \UseInstance { hust / page } { committee }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\makedecl}
% 螢ｰ譏朱｡ｵ縲�
%    \begin{macrocode}
\@@_declare_page_instance:nn { decl }
  {
    components =
      {
        orig title, orig text, orig sign,
        auth title, auth text, auth secr, auth sign,
      },
    format =
      {
        \zihao { -4 } \rmfamily
        \@@_line_spread:n { 1.5 }
      }
  }
\DeclareDocumentCommand \makedecl { }
  {
    \UseInstance { hust / page } { decl }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\maketitle}
% 蟆�擇縲�
%    \begin{macrocode}
\DeclareDocumentCommand \maketitle { }
  {
    \makezhtitle
    \tl_if_eq:NnT \g_@@_degree_type_tl { doctor }
      { \makecommittee }
    \makeentitle
    \makedecl
  }
%    \end{macrocode}
% \end{macro}
%
%
% \section{蜑肴枚譬ｷ蠑殉
%
% 螳壻ｹ我ｻ取遭隕∝芦逶ｮ蠖慕噪譬ｷ蠑擾ｼ悟叉譛蛾｡ｵ逵蛾｡ｵ閼夲ｼ悟性譛牙､ｧ蜀咏ｽ鈴ｩｬ謨ｰ蟄鈴｡ｵ遐�｡ｵ逧��ｷ蠑上�
%
% \begin{macro}{\frontmatter}
%    \begin{macrocode}
\@@_appto_cmd:Nn \frontmatter
  {
    \pagestyle { fancy }
    \pagenumbering { Roman }
    \@@_toc_chapter_frontmatter:
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{鞫倩ｦ∵�ｷ蠑殉
%
% \begin{environment}{abstract, abstract*}
% 鞫倩ｦ∫識蠅��
%    \begin{macrocode}
\NewDocumentEnvironment { abstract } { }
  {
    \chapter**{\c_@@_name_abstract_zh_tl}
  }
  { }
\NewDocumentEnvironment { abstract* } { }
  {
    \chapter**{\c_@@_name_abstract_en_tl}
  }
  { }
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{\keywords, \keywords*}
% 蜈ｳ髞ｮ隸榊多莉､縲�
%    \begin{macrocode}
\NewDocumentCommand \keywords { s }
  {
    \IfBooleanTF { #1 }
      { \@@_keywords:nw { en } }
      { \@@_keywords:nw { zh } }
  }
\cs_new_nopar:Npn \@@_keywords:nw #1 #2
  {
    \zihao{-4} \rmfamily
    \tex_par:D
    \skip_horizontal:n \c_zero_skip
    \tex_par:D
    \tex_noindent:D
    \group_begin:
      \bfseries \heiti
      \tl_use:c { c_@@_name_keywords_ #1 _tl }
    \group_end:
    \c_space_tl
    #2
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{逶ｮ蠖墓�ｷ蠑殉
%
%    \begin{macrocode}
\tl_set:Nn \contentsname { 逶ｮ\hspace{1em}蠖� }
%    \end{macrocode}
%
% 隶ｾ鄂ｮ逶ｮ蠖慕ｫ�闃よ仞遉ｺ豺ｱ蠎ｦ縲�
%    \begin{macrocode}
\keys_set:nn { ctex }
  {
    tocdepth = section,
  }
%    \end{macrocode}
%
% 隶ｾ鄂ｮ逶ｮ蠖暮｡ｹ蜿ｳ霎ｹ霍昴�
%    \begin{macrocode}
\contentsmargin { 0 pt }
%    \end{macrocode}
%
% \begin{macro}{\@@_toc_format:nnnn}
% 隶ｾ鄂ｮ逶ｮ蠖暮｡ｹ譬ｼ蠑上�
% \begin{arguments}
%   \item 遶�闃らｱｻ蝙�
%   \item 郛門捷荳守ｫ�闃ょ錐遘ｰ髣ｴ霍�
%   \item 遶�闃ょ錐遘ｰ譬ｷ蠑�
%   \item 遶�闃る｡ｵ遐∵�ｼ蠑擾ｼ�|\thecontentspage|陦ｨ遉ｺ鬘ｵ遐�ｼ�
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_toc_format:nnnn #1#2#3#4
  {
    \titlecontents
      { #1 }
      [ 0 pt ]
      { #3 }
      { \thecontentslabel \hspace{#2} #3 }
      { #3 }
      { #4 }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ddotfill}
% 螳樒鴫譖ｴ蟇�噪陌夂ｺｿ縲りｯ･蜻ｽ莉､莉�庄菴ｿ逕ｨ \LaTeXe 蜻ｽ莉､螳樒鴫縲�
%    \begin{macrocode}
\cs_new:Npn \ddotfill
  {
    \leavevmode \leaders \hbox to .22em {\hss .\hss } \hfill \kern 0pt
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{
%  \@@_toc_chapter_frontmatter:
%  \@@_toc_chapter_mainmatter:
%  \@@_toc_chapter_backmatter:
% }
% 隶ｾ鄂ｮ遶�逧�ｸ臥ｧ肴�ｷ蠑擾ｼ悟�蛻ｫ譏ｯ蝨ｨ蜑肴枚驛ｨ蛻�怏陌夂ｺｿ�御ｸ榊ｸｦ諡ｬ蜿ｷ鬘ｵ遐∫噪譬ｼ蠑擾ｼ�
% 豁｣譁�裏陌夂ｺｿ�悟ｸｦ諡ｬ蜿ｷ鬘ｵ遐∫噪譬ｼ蠑擾ｼ�
% 莉･蜿企刋蠖暮Κ蛻�怏陌夂ｺｿ�悟ｸｦ諡ｬ蜿ｷ鬘ｵ遐∫噪譬ｼ蠑上�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_toc_chapter_frontmatter:
  {
    \@@_toc_format:nnnn
      { chapter }
      { 1 em}
      { \zihao{4} \bfseries \rmfamily \heiti }
      { \mdseries \ddotfill \thecontentspage }
    }
\cs_new_protected:Npn \@@_toc_chapter_mainmatter:
  {
    \@@_toc_format:nnnn
      { chapter }
      { 1 em }
      { \zihao{4} \bfseries \rmfamily \heiti }
      { \mdseries \hfill (\thecontentspage) }
  }
\cs_new_protected:Npn \@@_toc_chapter_backmatter:
  {
    \@@_toc_format:nnnn
      { chapter }
      { 1 em }
      { \zihao{4} \bfseries \rmfamily \heiti }
      { \mdseries \ddotfill (\thecontentspage) }
  }
%    \end{macrocode}
% \end{macro}
%
% 隶ｾ鄂ｮ闃ら噪譬ｷ蠑上�
%    \begin{macrocode}
\@@_toc_format:nnnn
  { section }
  { 2 em }
  { \zihao{4} \rmfamily }
  { \ddotfill (\thecontentspage) }
%    \end{macrocode}
%
% \section{豁｣譁��ｷ蠑殉
%
%    \begin{macrocode}
\@@_appto_cmd:Nn \mainmatter
  {
    \pagestyle { fancy }
    \pagenumbering { arabic }
    \@@_toc_chapter_mainmatter:
  }
%    \end{macrocode}
%
% \subsection{遶�闃よ�ｷ蠑殉
%
%    \begin{macrocode}
\keys_set:nn { ctex }
  {
%    \end{macrocode}
% 隶ｾ鄂ｮ遶���chapter�峨∬鰍��section�我ｸ主ｰ剰鰍��sub-section�画��｢俶�ｷ蠑上�

%    \begin{macrocode}
    chapter =
      {
        format = \zihao{3} \bfseries \rmfamily \heiti \centering \linespread{1.5},
        name = {},
        beforeskip = 15.5 bp,
        afterskip = 14 bp + \CTEX@chapter@lofskip,
        number = \arabic{ chapter },
        pagestyle = fancy,
        fixskip = true,
      },
    section =
      {
        format = \zihao{4} \bfseries \rmfamily \heiti \raggedright,
        numberformat = \rmfamily,
        beforeskip = 10 bp,
        afterskip = 7 bp,
      },
    subsection =
      {
        format = \zihao{-4} \bfseries \rmfamily \heiti \raggedright,
        numberformat = \rmfamily,
        beforeskip = 7 bp,
        afterskip = 4 bp,
      }
  }
%    \end{macrocode}
%
% \begin{macro}{\chapter, \chapter*, \chapter**}
% 蟇ｹ蟶ｦ譛画弌蜿ｷ逧�ｫ�闃よ欠莉､陦･荳�ｼ御ｽｿ蠕怜�閭ｽ螟溷惠逶ｮ蠖穂ｸｭ譏ｾ遉ｺ縲�
%    \begin{macrocode}
\cs_set_eq:NN \@@_chapter:D \chapter
\RenewDocumentCommand \chapter { s s o m }
  {
    \IfNoValueTF{#3}
      {
        \IfBooleanTF{#1}
          {
            \@@_chapter:D*{#4}
            \IfBooleanT{#2}
              {  \CTEX@addtocline{chapter}{#4} }
          }
          { \@@_chapter:D{#4} }
      }
      {
        \IfBooleanTF{#1}
          {
            \@@_chapter:D*{#4}
            \IfBooleanT{#2}
              {  \CTEX@addtocline{chapter}{#3} }
          }
          { \@@_chapter:D[#3]{#4} }

      }
  }
%    \end{macrocode}
% \end{macro}
%
% \section{蜷取枚譬ｷ蠑殉
%
% \begin{macro}{\backmatter}
%    \begin{macrocode}
\@@_appto_cmd:Nn \backmatter
  {
    \@@_toc_chapter_backmatter:
  }
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{閾ｴ隹｢鬘ｵ}
%
% \begin{environment}{acknowledgements}
%    \begin{macrocode}
\NewDocumentEnvironment { acknowledgements } { }
  {
    \chapter**{閾ｴ\hspace{1em}隹｢}
  }
  { }
%    \end{macrocode}
% \end{environment}
%
% \subsection{蜿り�枚迪ｮ}
%
% \begin{macro}{\printbibliography}
% 蝨ｨ菴ｿ逕ｨ \tn{printbibliography} 逧�酔譌ｶ豺ｻ蜉�逶ｮ蠖暮｡ｹ縲�
%    \begin{macrocode}
\cs_if_exist:NT \printbibliography
  {
    \defbibheading{bibliography}[\refname]{%
      \chapter**{#1}%
    }
}
%    \end{macrocode}
% \end{macro}
%
% \section{髯�ｽ墓�ｷ蠑殉
%
%    \begin{macrocode}
\@@_appto_cmd:Nn \appendix
  {
  }
%    \end{macrocode}
%
%    \begin{macrocode}
\keys_set:nn { ctex / appendix }
  {
    number = \arabic{chapter},
  }
%    \end{macrocode}
%
% \subsection{遲碑ｾｩ蟋泌遭莨壼�隶ｮ}
%
% \subsection{謌先棡隶ｺ譁�ｯｹ蠎泌�邉ｻ}
%
% \subsection{荳ｭ闍ｱ譁�ｼｩ蜀吝ｯｹ辣ｧ陦ｨ}
%
% \subsection{遞句ｺ丈ｻ｣遐∵�ｷ蠑殉
%
% \section{譁�｡｣邀ｻ蜷主､�炊}
%
% \section{逕ｨ謌ｷ謗･蜿｣}
%
% \begin{macro}[module=info/]{info/}
% \begin{macro}[module=style/]{style/}
% 螳壻ｹ牙���meta�蛾醗蛟ｼ蟇ｹ縲�
%    \begin{macrocode}
\keys_define:nn { hust }
  {
    info .meta:nn = { hust / info } {#1},
    style .meta:nn = { hust / style } {#1}
  }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% 譁�｡｣邀ｻ蛻晏ｧ玖ｮｾ鄂ｮ縲ょｭｦ譬｡莉｣遐�ｻ倩ｮ､荳ｺ \opt{10487}縲�
%    \begin{macrocode}
\keys_set_known:nn { hust }
  {
    info =
      {
        degree = { academic },
        secret = ,
        school-id = { 10487 },
        date =
          {
            \int_use:N \c_sys_year_int -
            \int_use:N \c_sys_month_int -
            \int_use:N \c_sys_day_int
          },
        anonymous-list =
          {
            author, student_id, supervisor,
            author_en, supervisor_en,
          },
        committee =
          {
            { &amp;~&amp;~ },
            { &amp;~&amp;~ },
            { &amp;~&amp;~ },
            { &amp;~&amp;~ },
            { &amp;~&amp;~ },
            { &amp;~&amp;~ },
            { &amp;~&amp;~ },
          }
      }
  }
%    \end{macrocode}
%
% \begin{macro}{\hustsetup}
% 逕ｨ謌ｷ隶ｾ鄂ｮ謗･蜿｣縲�
% \changes{v2.0.0}{2025-02-11}{螳樒鴫扈滉ｸ逕ｨ謌ｷ謗･蜿｣驟咲ｽｮ騾蛾｡ｹ}
%    \begin{macrocode}
\NewDocumentCommand \hustsetup { m }
  { \keys_set:nn { hust } {#1} }
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%&lt;/class&gt;
%    \end{macrocode}
%
% \section{蟶ｸ驥丞ｮ壻ｹ厭
%
%    \begin{macrocode}
%&lt;*def-m|def-d&gt;
%    \end{macrocode}
%
% \subsection{蜈ｨ螻蟶ｸ驥殉
%
% \begin{variable}{\c_@@_name_school_zh_tl, \c_@@_name_school_en_tl}
% 蟄ｦ譬｡蜷咲ｧｰ縲�
%    \begin{macrocode}
\tl_const:Nn \c_@@_name_school_zh_tl { 蜊惹ｸｭ遘第橿螟ｧ蟄ｦ }
\tl_const:Nn \c_@@_name_school_en_tl { Huazhong~ University~ of~ Science~
  and~ Technology }
%    \end{macrocode}
% \end{variable}
%
% 蟶ｸ逕ｨ譬�せ隨ｦ蜿ｷ�瑚ｧ∬｡ｨ~\ref{tab:punctuations}�悟ｮ壻ｹ我ｸｺ |\c_@@_ #1 _tl|縲�
%    \begin{macrocode}
\clist_map_inline:nn
  {
    { ideo_comma       } { ^^^^3001 },
    { ideo_full_stop   } { ^^^^3002 },
    { fwid_comma       } { ^^^^ff0c },
    { fwid_full_stop   } { ^^^^ff0e },
    { fwid_colon       } { ^^^^ff1a },
    { fwid_semicolon   } { ^^^^ff1b },
    { fwid_left_paren  } { ^^^^ff08 },
    { fwid_right_paren } { ^^^^ff09 }
  }
  { \@@_define_punct:nn #1 }
%    \end{macrocode}
%
% \begin{table}[ht]
%   \caption{蟶ｸ逕ｨ譬�せ隨ｦ蜿ｷ}
%   \label{tab:punctuations}
%   \centering
%   \begin{tabular}{cccc}
%     \toprule
%       \textbf{荳ｭ譁�錐遘ｰ} &amp;
%       \textbf{闍ｱ譁�錐遘ｰ} &amp;
%       \textbf{隨ｦ蜿ｷ} &amp;
%       \textbf{Unicode 遐∽ｽ閤 \\
%     \midrule
%       荳ｭ譁�｡ｿ蜿ｷ     &amp; Ideographic comma           &amp; ^^^^3001 &amp; U+3001 \\
%       荳ｭ譁�唱蜿ｷ     &amp; Ideographic full stop       &amp; ^^^^3002 &amp; U+3002 \\
%       荳ｭ譁�怜捷     &amp; Fullwidth comma             &amp; ^^^^ff0c &amp; U+FF0C \\
%       蜈ｨ隗定･ｿ譁�唱轤ｹ &amp; Fullwidth full stop         &amp; ^^^^ff0e &amp; U+FF0E \\
%       荳ｭ譁��蜿ｷ     &amp; Fullwidth colon             &amp; ^^^^ff1a &amp; U+FF1A \\
%       荳ｭ譁��蜿ｷ     &amp; Fullwidth semicolon         &amp; ^^^^ff1b &amp; U+FF1B \\
%       荳ｭ譁�ｷｦ蝨�峡蜿ｷ &amp; Fullwidth left parenthesis  &amp; ^^^^ff08 &amp; U+FF08 \\
%       荳ｭ譁�承蝨�峡蜿ｷ &amp; Fullwidth right parenthesis &amp; ^^^^ff09 &amp; U+FF09 \\
%     \bottomrule
%   \end{tabular}
% \end{table}
%
% \begin{variable}{\c_@@_line_spread_fp}
% 隶ｾ鄂ｮ陦瑚ｷ晏肴焚1.5蛟阪�
%    \begin{macrocode}
\fp_const:Nn \c_@@_line_spread_fp { 1.5 }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\c_@@_emptybox_tl, \c_@@_checkbox_tl}
%    \begin{macrocode}
\tl_const:Nn \c_@@_emptybox_tl { \usym{2610} }
\tl_const:Nn \c_@@_checkbox_tl { \usym{2611} }
%    \end{macrocode}
% \end{variable}
%
% \subsection{蟆�擇鬘ｵ蟶ｸ驥殉
% \begin{variable}{
%   \c_@@_name_degree_font_tl,
%   \c_@@_name_professional_tl,
%   \c_@@_name_date_tl,
%   \c_@@_name_clc_tl,
%   \c_@@_name_student_id_tl,
%   \c_@@_name_school_id_tl,
%   \c_@@_name_secret_tl,
%   \c_@@_school_id_tl,
% }
% 荳ｭ譁�ｰ�擇鬘ｵ蟶ｸ驥上�
%    \begin{macrocode}
\clist_map_inline:nn
  {
%&lt;def-m&gt;    { degree_font } { \bfseries \songti },
%&lt;def-d&gt;    { degree_font } { \heiti },
    { date } { 遲能hfill 霎ｩ\hfill 譌･\hfill 譛� },
    { clc } { 蛻�ｱｻ蜿ｷ },
    { student_id } { 蟄ｦ蜿ｷ },
    { school_id } { 蟄ｦ譬｡莉｣遐� },
    { secret } { 蟇�ｺｧ },
  }
  { \@@_define_name:nn #1 }
\tl_const:Nn \c_@@_school_id_tl { 10487 }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{
%   \c_@@_address_tl
% }
% 闍ｱ譁�ｰ�擇鬘ｵ蟶ｸ驥上�
%    \begin{macrocode}
\tl_const:Nn \c_@@_address_tl
  {
    Huazhong~ University~ of~ Science~ and~ Technology\\
    Wuhan~ 430074,~ P.~ R.~ China
  }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{
%   \c_@@_name_type_en_tl,
%   \c_@@_name_type_zh_tl,
%   \c_@@_name_academic_en_tl,
%   \c_@@_name_academic_zh_tl,
%   \c_@@_name_professional_en_tl,
%   \c_@@_name_professional_zh_tl,
%   \c_@@_name_author_en_tl,
%   \c_@@_name_author_zh_tl,
%   \c_@@_name_major_en_tl,
%   \c_@@_name_major_zh_tl,
%   \c_@@_name_supervisor_en_tl,
%   \c_@@_name_supervisor_zh_tl,
% }
% 荳ｭ闍ｱ譁�｡ｵ蜈ｱ逕ｨ蟶ｸ驥上�
%    \begin{macrocode}
\clist_map_inline:nn
  {
    { type }
      { A~ Dissertation~ Submitted~ in~ Partial~ Fulfillment~ of~
%&lt;def-m&gt;      the~
%&lt;def-d&gt;      The~
      Requirements~ for~ }
%&lt;def-m&gt;      { 遑募｣ｫ蟄ｦ菴崎ｮｺ譁� },
%&lt;def-d&gt;      { 蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁� },
%&lt;*def-m&gt;
    { academic } { the~ Master~ Degree~ in } { 蟄ｦ譛ｯ蝙� },
    { professional } { the~ Professional~ Master~ Degree~ in }  { 荳謎ｸ壼梛 },
    { author } { Candidate } { 蟄ｦ\hfill 菴構hfill 逕ｳ\hfill 隸ｷ\hfill 莠ｺ },
%&lt;/def-m&gt;
%&lt;*def-d&gt;
    { academic } { The~ Degree~ of~ Doctor~ of } { 蟄ｦ譛ｯ蝙� },
    { professional } { The~ Degree~ of~ Doctor~ of } { 荳謎ｸ壼梛 }, % no diff in English
    { author } { Ph.D.~ Candidate } { 蟄ｦ\hfill 菴構hfill 逕ｳ\hfill 隸ｷ\hfill 莠ｺ },
%&lt;/def-d&gt;
    { major } { Major } { 蟄ｦ\hfill 遘曾hfill 荳貼hfill 荳� },
    { supervisor } { Supervisor } { 謖Ⅸhfill 蟇ｼ\hfill 閠―hfill 蟶� },
  }
  { \@@_define_name:nnn #1 }
%    \end{macrocode}
% \end{variable}
%
% \subsection{螢ｰ譏朱｡ｵ蟶ｸ驥殉
%
% \begin{variable}{\c_@@_orig_decl_title_tl, \c_@@_orig_decl_text_tl}
% 迢ｬ蛻帶ｧ螢ｰ譏弱�
%    \begin{macrocode}
\tl_const:Nn \c_@@_orig_decl_title_tl { 迢ｬ蛻帶ｧ螢ｰ譏� }
\tl_const:Nn \c_@@_orig_decl_text_tl
  {
    譛ｬ莠ｺ螢ｰ譏取園蜻井ｺ､逧�ｭｦ菴崎ｮｺ譁�弍謌台ｸｪ莠ｺ蝨ｨ蟇ｼ蟶域欠蟇ｼ荳玖ｿ幄｡檎噪遐皮ｩｶ蟾･菴懷所蜿門ｾ礼噪遐�
    遨ｶ謌先棡縲ょｰｽ謌第園遏･�碁勁譁�ｸｭ蟾ｲ扈乗���蠑慕畑逧��螳ｹ螟厄ｼ梧悽隶ｺ譁�ｸ榊桁蜷ｫ莉ｻ菴募�莉紋ｸｪ莠ｺ謌�
    髮�ｽ灘ｷｲ扈丞書陦ｨ謌匁腸蜀呵ｿ�噪遐皮ｩｶ謌先棡縲ょｯｹ譛ｬ譁�噪遐皮ｩｶ蛛壼�雍｡迪ｮ逧�ｸｪ莠ｺ蜥碁寔菴難ｼ悟插蟾ｲ蝨ｨ
    譁�ｸｭ莉･譏守｡ｮ譁ｹ蠑乗���縲よ悽莠ｺ螳悟�諢剰ｯ�芦譛ｬ螢ｰ譏守噪豕募ｾ狗ｻ捺棡逕ｱ譛ｬ莠ｺ謇ｿ諡��
  }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\c_@@_orig_decl_sign_clist}
% 迢ｬ蛻帶ｧ螢ｰ譏守ｭｾ蜷埼｡ｹ逶ｮ縲�
%    \begin{macrocode}
\clist_const:Nn \c_@@_orig_decl_sign_clist
  {
    蟄ｦ菴崎ｮｺ譁�ｽ懆�ｭｾ蜷搾ｼ喀hspace{2em}\mbox{},
    譌･譛滂ｼ喀hspace{2em}蟷ｴ\hspace{1.5em}譛�\hspace{1.5em}譌･
  }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\c_@@_auth_decl_title_tl, \c_@@_auth_decl_text_tl}
% 蟄ｦ菴崎ｮｺ譁�沿譚�ｽｿ逕ｨ謗域揀荵ｦ縲�
%    \begin{macrocode}
\tl_const:Nn \c_@@_auth_decl_title_tl { 蟄ｦ菴崎ｮｺ譁�沿譚�ｽｿ逕ｨ謗域揀荵ｦ }
\tl_const:Nn \c_@@_auth_decl_text_tl
  {
    譛ｬ蟄ｦ菴崎ｮｺ譁�ｽ懆�ｮ悟�莠�ｧ｣蟄ｦ譬｡譛牙�菫晉蕗縲∽ｽｿ逕ｨ蟄ｦ菴崎ｮｺ譁�噪隗�ｮ夲ｼ悟叉�壼ｭｦ譬｡譛画揀
    菫晉蕗蟷ｶ蜷大嵜螳ｶ譛牙�驛ｨ髣ｨ謌匁惻譫�∽ｺ､隶ｺ譁�噪螟榊魂莉ｶ蜥檎鳩蟄千沿�悟�隶ｸ隶ｺ譁�｢ｫ譟･髦�柱蛟滄�縲�
    譛ｬ莠ｺ謗域揀蜊惹ｸｭ遘第橿螟ｧ蟄ｦ蜿ｯ莉･蟆�悽蟄ｦ菴崎ｮｺ譁�噪蜈ｨ驛ｨ謌夜Κ蛻��螳ｹ郛門�譛牙�謨ｰ謐ｮ蠎楢ｿ幄｡梧｣
    邏｢�悟庄莉･驥�畑蠖ｱ蜊ｰ縲∫ｼｩ蜊ｰ謌匁沖謠冗ｭ牙､榊宛謇区ｮｵ菫晏ｭ伜柱豎�ｼ匁悽蟄ｦ菴崎ｮｺ譁��
  }
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\c_@@_auth_decl_secr_clist, \c_@@_auth_decl_sign_clist}
% 蟄ｦ菴崎ｮｺ譁�沿譚�ｽｿ逕ｨ謗域揀荵ｦ蝪ｫ蜀咎｡ｹ逶ｮ�壻ｿ晏ｯ�ｸ守ｭｾ蜷阪�
%    \begin{macrocode}
\clist_const:Nn \c_@@_auth_decl_secr_clist
  {
    譛ｬ隶ｺ譁�ｱ樔ｺ�,
    菫拿hspace{1em}蟇�味�悟惠\underline{\hspace{3em}}蟷ｴ隗｣蟇�錘騾ら畑譛ｬ謗域揀荵ｦ縲�,
    荳堺ｿ晏ｯ�味縲�,
    �郁ｯｷ蝨ｨ莉･荳頑婿譯��謇凪懌�窶晢ｼ�
  }
\clist_const:Nn \c_@@_auth_decl_sign_clist
  {
    蟄ｦ菴崎ｮｺ譁�ｽ懆�ｭｾ蜷搾ｼ喀hfill{} 謖�ｯｼ謨吝ｸ育ｭｾ蜷搾ｼ喀hspace*{5em} \mbox{},
    譌･譛滂ｼ喀hspace*{2em}蟷ｴ\hspace*{1.5em}譛�\hspace*{1.5em}譌･ \hfill{}
    譌･譛滂ｼ喀hspace*{2em}蟷ｴ\hspace*{1.5em}譛�\hspace*{1.5em}譌･\hspace*{1em} \mbox{}
  }
%    \end{macrocode}
% \end{variable}
%
% \subsection{鞫倩ｦ�｡ｵ蟶ｸ驥殉
% \begin{variable}{
%   \c_@@_name_abstract_zh_tl,
%   \c_@@_name_abstract_en_tl,
%   \c_@@_name_keywords_zh_tl,
%   \c_@@_name_keywords_en_tl,
%   \c_@@_sep_keywords_zh_tl,
%   \c_@@_sep_keywords_en_tl,
% }
%    \begin{macrocode}
\clist_map_inline:nn
  {
    { abstract } { Abstract } { 鞫禄hspace{1em}隕� },
    { keywords } { Key~ words: } { 蜈ｳ髞ｮ隸搾ｼ� },
  }
  { \@@_define_name:nnn #1 }
\tl_const:Nn \c_@@_sep_keywords_zh_tl { �� }
\tl_const:Nn \c_@@_sep_keywords_en_tl { , }
%    \end{macrocode}
% \end{variable}
%
% \subsection{豁｣譁�ｸｸ驥殉
% \begin{variable}{\c_@@_header_tl}
% 鬘ｵ逵峨�
%    \begin{macrocode}
%&lt;def-m&gt;\tl_const:Nn \c_@@_header_tl { 蜊惹ｸｭ遘第橿螟ｧ蟄ｦ遑募｣ｫ蟄ｦ菴崎ｮｺ譁� }
%&lt;def-d&gt;\tl_const:Nn \c_@@_header_tl { 蜊惹ｸｭ遘第橿螟ｧ蟄ｦ蜊壼｣ｫ蟄ｦ菴崎ｮｺ譁� }
%    \end{macrocode}
% \end{variable}
%
%    \begin{macrocode}
%&lt;/def-m|def-d&gt;
%    \end{macrocode}

% \section{譁�鍵譬ｷ蠑殉
%
% \changes{v2.0.0}{2025-02-26}{螳樒鴫蝓ｺ莠蚕pkg{biblatex}逧�枚迪ｮ譬ｷ蠑殉
%
% \subsection{譬�ｳｨ譬ｷ蠑殉
%
%    \begin{macrocode}
%&lt;*cbx&gt;
%    \end{macrocode}
%
% 譌�鬘ｻ菫ｮ謾ｹ譬�ｳｨ譬ｷ蠑上�
%    \begin{macrocode}
\RequireCitationStyle{gb7714-2015}
%    \end{macrocode}
%
%    \begin{macrocode}
%&lt;/cbx&gt;
%    \end{macrocode}
%
% \subsection{闡怜ｽ墓�ｷ蠑殉
%
%    \begin{macrocode}
%&lt;*bbx&gt;
%    \end{macrocode}
%
% 蝓ｺ莠� \pkg{biblatex-gb7714-2015} 逧�送蠖墓�ｷ蠑上�
%    \begin{macrocode}
\RequireBibliographyStyle{gb7714-2015}
%    \end{macrocode}
%
% 隶ｾ鄂ｮ \pkg{biblatex-gb7714-2015} 騾夂畑闡怜ｽ墓�ｷ蠑城蛾｡ｹ縲�
%    \begin{macrocode}
\ExecuteBibliographyOptions
  {
    isbn = false,
    url = false,
    doi = false,
    gbnamefmt = givenahead,
    gbtype = false,
    gbpunctin = false,
    maxbibnames = 6,
    minbibnames = 6,
  }
%    \end{macrocode}
%
% 蛻�髯､闡怜ｽ暮｡ｹ譛ｫ蟆ｾ逧���せ隨ｦ蜿ｷ縲�
%    \begin{macrocode}
\renewcommand{\finentrypunct}{}
%    \end{macrocode}
%
% \subsubsection{荳楢送}
%
% 隶ｾ鄂ｮ荳楢送迚域悽譬ｷ蠑擾ｼ悟ｹｶ菴ｿ逕ｨ \pkg{zhnumber} 蟆�ｸｭ譁�ｸ楢送逧�仭諡我ｼｯ謨ｰ蟄礼沿譛ｬ蜿ｷ閾ｪ蜉ｨ霓ｬ謐｢荳ｺ荳ｭ譁�焚蟄励�
%    \begin{macrocode}
\newcommand\HUST@bib@zhedition[1]{��#1�厭
\newcommand\HUST@bib@enedition[1]{(#1)}
\DeclareFieldFormat{edition}{\bibtitlefont%貅先擂閾ｪbiblatex.DEF
    \testCJKfirst{userd}%
    \iftoggle{ifCJKforgbt}%
      {\ifinteger{#1}
        {%
          \ifnumgreater{#1}{1}{\printtext{
            %#1\str@edition
            \HUST@bib@zhedition{隨ｬ\zhnumber{#1}迚�}
          }}{}
        }%
        %{#1\isdot}}%
        {\HUST@bib@zhedition{#1}}
        \addspace
      }%
      {\ifinteger{#1}%
        {\ifnumgreater{#1}{1}{
           %\mkbibordedition{#1}~\bibstring{edition}
           \HUST@bib@enedition{\mkbibordedition{#1}~\bibstring{edition}}
          }{}
        }%
        %{#1\isdot}}%
        {\HUST@bib@enedition{#1}\isdot}
      }
}
\DeclareBibliographyDriver{book}{%貅先擂閾ｪstandard.bbx譁�ｻｶ
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%霑吩ｸ谿ｵ逕ｨ莠主悉髯､菴懆�ｸ榊ｭ伜惠譌ｶ螟壼�逧���せ
%    \end{macrocode}
% 蛻�髯､迚域悽蜑咲噪譬�せ隨ｦ蜿ｷ縲�
%    \begin{macrocode}
  \if false
  \usebibmacro{maintitle+title}%
  \iftoggle{bbx:gbstrict}{}{%
    \newunit
    \printlist{language}%
    \newunit\newblock%
    \usebibmacro{byauthor}%
    \newunit\newblock
  }%
  \usebibmacro{byeditor+others}%
  \newunit
  \fi
  \printfield[titlecase]{title}%
  \printfield{edition}%
  \newunit\newblock%%
  \iftoggle{bbx:gbstrict}{}{%
  \iffieldundef{maintitle}%
  {%\printfield{volume}%
  \printfield{part}}%
  {}%
  \newunit%
  \printfield{volumes}%
  \newunit\newblock%
  \usebibmacro{series+number}}%
  \newunit\newblock%
  %\printfield{note}%
  %\newunit\newblock%
  \usebibmacro{publisher+location+date}%
  %\newunit\newblock %霑咎㈹譬�せ蜴ｻ謗�
  \usebibmacro{chapter+pages}%
    \iffieldundef{url}{}{%蠖捺ｲ｡譛臥ｽ大捩譌ｶ荵滉ｸ崎ｾ灘�
    \usebibmacro{modifydate}}%蟶ｦ諡ｬ蜿ｷ逧�ｿｮ謾ｹ謌匁峩譁ｰ譌･譛滂ｼ�
  \usebibmacro{doi+eprint+url}%莉惹ｸ矩擇遘ｻ蜉ｨ蛻ｰ荳企擇譚･�悟屏荳ｺgbt2015逧еrl髴逶ｴ謗･謾ｾ蝨ｨ鬘ｵ遐∝錘髱｢縲�
%    \end{macrocode}
% 蛻�髯､荳楢送逧�｡ｵ遐√�
%    \begin{macrocode}
  \if false
  \newunit\newblock%
  \printfield{pagetotal}%
  \fi
  \newunit\newblock%
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  %\usebibmacro{doi+eprint+url}%
  %\newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{annotation}\usebibmacro{finentry}
}
%    \end{macrocode}
%
% \subsubsection{譫仙�譁�鍵}
%
% 隶ｾ鄂ｮ蛹�峡莨夊ｮｮ隶ｺ譁�惠蜀�噪譫仙�譁�鍵闡怜ｽ墓�ｷ蠑上�
% 菫ｮ謾ｹ Driver: inbook $\rightarrow$ macro: |inbook:parent|
% $\rightarrow$ |publisher+location+date|縲�
% 蟆�ｼ夊ｮｮ隶ｺ譁�梵蜃ｺ譁�鍵荳ｭ逧�ｼ夊ｮｮ蝨ｰ蝮�亥性莨夊ｮｮ譌･譛滂ｼ牙錘髱｢逧��蜿ｷ謾ｹ荳ｺ騾怜捷縲�
%    \begin{macrocode}
\newbibmacro*{HUSTinbook_publisher+location+date}{\bibpubfont%
  \iftoggle{bbx:gbpub}%
    {\testCJKfirst{userd}%
      \ifboolexpr{ test {\iflistundef{location}} and test {\iflistundef{publisher}} }%
        {\iffieldequalstr{entrysubtype}{standard}{}
          {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress}\space :\space\str@nopublisher\gbrightbracket}
              {\printtext{\gbleftbracket S.l.\space :\space s.n.\adddot\gbrightbracket}}}
        }%
        {
          \iflistundef{location}{%\adddot
            \iffieldequalstr{entrysubtype}{standard}{}%%莉使bt7714-2015譬�㊥隨ｬ19鬘ｵ逵句芦�梧��㊥蟄伜惠蜃ｺ迚磯｡ｹ譌ｶ霎灘��梧ｲ｡譛画慮螳悟�逵∫払縲�
            {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@noaddress\gbrightbracket}\addcolon\addspace}%
                {\printtext{\gbleftbracket S.l.\adddot\gbrightbracket}\publocpunct}}
          }%  \bibstring{noaddress}
          {\printlist{location}\publocpunct}%%\addcolon\addspace%
          \iflistundef{publisher}{%
            \iffieldequalstr{entrysubtype}{standard}{}%
            {\iftoggle{ifCJKforgbt}{\printtext{\gbleftbracket\str@nopublisher\gbrightbracket}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}%
            {\printtext{\mkbibbrackets{s.n.}}\setunit{\adddot\addspace}\setunit*{\addcomma\addspace}}}}%
            {\printlist{publisher}}
        }%
      \pubdatadelim%\addcomma\addspace%
      \usebibmacro{date}%%\newunit %蜴ｻ謗芽ｿ吩ｸｪ譬�せ
    }%
    {\printlist{location}%
      \iflistundef{publisher}
        {\locnopubdelim}
%    \end{macrocode}
% 蟋狗ｻ井ｽｿ逕ｨ騾怜捷縲�
%    \begin{macrocode}
        %{\setunit*{\publocpunct}}%
        {\locnopubdelim}
      \printlist{publisher}%
      \pubdatadelim%
      \usebibmacro{date}%%\newunit
    }%
}
\renewbibmacro*{inbook:parent}{%
  \usebibmacro{bybookauthor}%
    \ifnameundef{bookauthor}{%
    \ifnameundef{editor}{}{\newunit}%
    }{\newunit}%譖ｿ謐｢荳倶ｸ蜿･
    %\newunit\newblock
  \iffieldundef{series}{}
    {\usebibmacro{series+number}\setunit{\addcolon\addspace}}%荳ｺ螟�炊荳莠帛ｭ伜惠series逧�ュ蜀ｵ閠悟｢槫刈
    \usebibmacro{maintitle+booktitle}%
  \iffieldundef{volume}{}{\setunit{\addcolon\addspace}\printfield{volume}}%
  \iffieldundef{number}{}{\setunit{\addcolon\addspace}\printfield{number}}%蠅槫刈蜊ｷ蜥悟�菫｡諱ｯ
    \newunit\newblock%
  %  \usebibmacro{byeditor+others}%
  %  \newunit\newblock
    \printfield{edition}%
    \newunit
    \iftoggle{bbx:gbstrict}{}{%
  %  \iffieldundef{maintitle}
  %    {\printfield{volume}%
  %     \printfield{part}}
  %    {}%
  %  \newunit
  %  \printfield{volumes}%
  %  \newunit\newblock
  %  \usebibmacro{series+number}
    }%
    \newunit\newblock
    %\printfield{note}%
    %\newunit\newblock
%    \end{macrocode}
% 逕ｱ莠� |publisher+location+date| 蝨ｨ荳榊宵霑咎㈹菴ｿ逕ｨ��
% 蝗�豁､蟆��遘ｻ讀榊芦螳� |HUSTinbook_publisher+location+date| 荳ｭ縲�
%    \begin{macrocode}
    %\usebibmacro{publisher+location+date}
    \usebibmacro{HUSTinbook_publisher+location+date}%
}
%    \end{macrocode}
%
% \subsubsection{譛溷�}
%
% 證よ慮豐｡蜿醍鴫髴隕∽ｿｮ謾ｹ逧��
%
% \subsubsection{荳灘茜}
%
% 隶ｾ鄂ｮ荳灘茜闡怜ｽ墓�ｷ蠑上�
%    \begin{macrocode}
\DeclareFieldFormat[book]{title}{#1}
\renewbibmacro*{patenttitle}{%蜴溯ｾ灘�譚･閾ｪbiblatex.def譁�ｻｶ
  \ifboolexpr{%
    test{\iffieldundef{title}}%
    and%
    test{\iffieldundef{subtitle}}%
  }%
  {}%
  { \printtext[title]{\bibtitlefont%
      \printfield[titlecase]{title}%
      \newunit
      \ifboolexpr{test {\iffieldundef{subtitle}}}%霑咎㈹蠅槫刈莠�ｯｹ蟄先��｢倡噪蛻､譁ｭ�瑚ｧ｣蜀ｳ荳榊愛譁ｭ螟壻ｸ荳ｪ轤ｹ逧�琉鬚�
        {}%
        {\setunit{\subtitlepunct}\printfield[titlecase]{subtitle}}%
      \iffieldundef{titleaddon}{}%蛻､譁ｭ荳荳逆itleaddon�悟凄蛻咏峩謗･蜉�蜿ｯ閭ｽ螟壻ｸ荳ｪ遨ｺ譬ｼ
        {\setunit{\subtitlepunct}\printfield{titleaddon}}%
%    \end{macrocode}
% 菫ｮ謾ｹ譬�｢伜錘髱｢譬�せ�帛ｰ�慍轤ｹ�御ｸ灘茜蜿ｷ遘ｻ讀榊芦譬�｢倅ｸｭ�帛ｹｶ蠑ｺ蛻ｶ譏ｾ遉ｺ GB/T 7714-2015 荳ｭ逧�枚迪ｮ邀ｻ蝙具ｼ�|[P]|�峨�
%    \begin{macrocode}
      \if false
      \setunit{\subtitlepunct}\printfield{number}%蜀吩ｸ灘茜蜿ｷ
      \iftoggle{bbx:gbtype}{\printfield[gbtypeflag]{usera}}{}%
      %\iffieldundef{booktitle}{\newunit}{}%蠖鍍itle譏ｯ譫仙�譌ｶ�御ｸ崎ｦ∵��せ
      %\newunit
      \fi
      \iflistundef{location}
        {}
        %{\setunit*{\addspace}%
        {\setunit*{\subtitlepunct}
        \printtext{%[parens]
          \printlist[][-\value{listtotal}]{location}}}%
      \setunit{\addcomma\space}\printfield{number}%蜀吩ｸ灘茜蜿ｷ
      \setunit{\addspace}\printfield[gbtypeflag]{usera}
    }%
  }%
  \setunit{\subtitlepunct}%
}
\DeclareBibliographyDriver{patent}{%貅先擂閾ｪstandard.BBX
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \ifnameundef{author}{}{\setunit{\labelnamepunct}\newblock}%霑吩ｸ谿ｵ逕ｨ莠主悉髯､菴懆�ｸ榊ｭ伜惠譌ｶ螟壼�逧���せ
  %\usebibmacro{title}%
  \usebibmacro{patenttitle}%扈吝�荳灘茜荳鍋畑逧���｢倩ｾ灘�
  \iftoggle{bbx:gbstrict}{}{%
    \newunit%
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}
  }%
  \newunit\newblock
%    \end{macrocode}
% 莉･荳矩Κ蛻�ｼ梧椛謌也ｧｻ髯､�梧椛謌也ｧｻ閾ｳ譬�｢伜摎 |patenttitle| 荳ｭ縲�
%    \begin{macrocode}
  \if false
  \printfield{type}%
  \setunit*{\addspace}%
  %\printfield{number}%蟾ｲ謾ｾ蛻ｰpatenttitle荳ｭ螟�炊
  \iflistundef{location}
    {}
    {\setunit*{\addspace}%
    \printtext{%[parens]
      \printlist[][-\value{listtotal}]{location}}}%
  \newunit\newblock
  \usebibmacro{byholder}%
  \newunit\newblock
  \fi
  \printfield{note}%
  \newunit\newblock
%    \end{macrocode}
% 譌･譛溷宵譏ｾ遉ｺ蛻ｰ蟷ｴ縲�
%    \begin{macrocode}
  %\usebibmacro{newsdate}%
  \usebibmacro{date}%
  %\newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
    \usebibmacro{related}}
    {}%
  \usebibmacro{annotation}\usebibmacro{finentry}
}
%    \end{macrocode}
%
% \subsubsection{蟄ｦ菴崎ｮｺ譁�}
%
% 隕�尠蜴� |manual| 逧�悪蜷阪�
%    \begin{macrocode}
\DeclareBibliographyDriver{thesis}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \ifnameundef{namea}{}{\setunit{\labelnamepunct}\newblock}%霑吩ｸ谿ｵ逕ｨ莠主悉髯､菴懆�ｸ榊ｭ伜惠譌ｶ螟壼�逧���せ
%    \end{macrocode}
% 蠅槫刈蟄ｦ菴崎ｮｺ譁�ｱｻ蝙狗噪譏ｾ遉ｺ縲�
%    \begin{macrocode}
  %\usebibmacro{title}%
  \printfield[titlecase]{title}%
  \printfield[gbtypeflag]{type}
  \iftoggle{bbx:gbstrict}{}{%
  \newunit%
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%蠅槫刈逧�ｯ題�ｿ｡諱ｯ
  \newunit\newblock
  \iftoggle{bbx:gbfieldtype}{%
    \printfield{type}%
    \setunit*{\addspace}}{}%
  \printfield{number}%
  \newunit\newblock
  \printfield{version}%
  \newunit
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{institution+location+date}%
  %\newunit\newblock
  \usebibmacro{chapter+pages}%
  \iffieldundef{url}{}{%蠖捺ｲ｡譛臥ｽ大捩譌ｶ荵滉ｸ崎ｾ灘�菫ｮ謾ｹ謌匁峩譁ｰ譌･譛�
    \usebibmacro{modifydate}}%菫ｮ謾ｹ謌匁峩譁ｰ譌･譛滉ｸｺ蟶ｦ諡ｬ蜿ｷ逧�慮髣ｴ
  \usebibmacro{doi+eprint+url}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isrn}}
    {}%
  \newunit\newblock
%  \usebibmacro{doi+eprint+url}%
%  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{annotation}\usebibmacro{finentry}
}
%    \end{macrocode}
%
%    \begin{macrocode}
%&lt;/bbx&gt;
%    \end{macrocode}
%
% \section{譁�｡｣譬ｷ蠑殉
%
% ^^A 譛ｬ蟆剰鰍蛻晉沿螳樒鴫荳ｻ隕∵擂閾ｪ \pkg{fduthesis} 譁�｡｣邀ｻ縲�
%
%    \begin{macrocode}
%&lt;*doc-sty&gt;
%&lt;@@=hustdoc&gt;
\RequirePackage
  {
    ulem,
    xcolor-material,
    zref-base,
    listings,
  }
%    \end{macrocode}
%
% \subsection{蜀�Κ蜃ｽ謨ｰ}
%
% \begin{macro}{\@@_patch_cmd:Nnn, \@@_preto_cmd:Nn, \@@_appto_cmd:Nn}
% 陦･荳∝ｷ･蜈ｷ縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_patch_cmd:Nnn #1#2#3
  {
    \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3}
      { } { \ctex_patch_failure:N #1 }
  }
\cs_new_protected:Npn \@@_preto_cmd:Nn #1#2
  {
    \ctex_preto_cmd:NnnTF #1 { } {#2}
      { } { \ctex_patch_failure:N #1 }
  }
\cs_new_protected:Npn \@@_appto_cmd:Nn #1#2
  {
    \ctex_appto_cmd:NnnTF #1 { } {#2}
      { } { \ctex_patch_failure:N #1 }
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{\cls{l3doc} 陦･荳±
%
%    \begin{macrocode}
%&lt;@@=codedoc&gt;
%    \end{macrocode}
%
% \begin{macro}{\@@_typeset_functions:}
% 蜃丞ｰ大ｱ募ｼ譬�ｮｰ�育畑譚･陦ｨ譏惹ｸｭ闍ｱ譁�ｨ｡譚ｿ荳ｭ逧�ｸ榊酔逕ｨ豕包ｼ牙燕逧�ｩｺ譬ｼ縲�
%    \begin{macrocode}
\__hustdoc_patch_cmd:Nnn \@@_typeset_expandability:
  { &amp; } { &amp; \skip_horizontal:n { -0.5em } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_typeset_functions:, \@@_macro_init:,
%   \@@_macro_dump:}
% 蟾ｦ萓ｧ霎ｹ豕ｨ逧��謨ｰ蛻苓｡ｨ驥�畑蜊募崎｡瑚ｷ昴�
%    \begin{macrocode}
\__hustdoc_preto_cmd:Nn \@@_typeset_functions:
  { \MacroFont }
\__hustdoc_patch_cmd:Nnn \@@_macro_init:
  { \hbox:n } { \MacroFont \hbox:n }
\__hustdoc_patch_cmd:Nnn \@@_macro_dump:
  { \hbox_unpack_drop:N } { \MacroFont \hbox_unpack_drop:N }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_typeset_one:nN}
% 蝨ｨ \env{macro} 邇ｯ蠅�噪萓ｧ霎ｹ譬丈ｸｭ�圭cls{l3doc} 譬ｹ謐ｮ蜻ｽ莉､逧�柄遏ｭ�悟�蛻ｫ逕ｨ
% 譎ｮ騾壼ｭ嶺ｽ灘柱邏ｧ郛ｩ蟄嶺ｽ楢ｾ灘�縲ら┯閠悟ｾ磯柄逧�多莉､霑俶弍莨夊ｶ��鬘ｵ霎ｹ縲りｿ咎㈹逕ｨ郛ｩ謾ｾ
% 逶貞ｭ千噪謇区ｮｵ菴ｿ蠕鈴柄蜻ｽ莉､荵溷庄豁｣蟶ｸ譏ｾ遉ｺ縲�
%    \begin{macrocode}
\cs_set_protected:Npn \@@_macro_typeset_one:nN #1#2
  {
    \vbox_set:Nn \l_@@_macro_box
      {
        \MacroFont
        \vbox_unpack_drop:N \l_@@_macro_box
        \hbox_set:Nn \l_tmpa_box
          { \@@_print_macroname:nN {#1} #2 }
%    \end{macrocode}
% \tn{marginparwidth} 蜥� \tn{marginparsep} 蛻�悪譏ｯ霎ｹ豕ｨ逧�ｮｽ蠎ｦ蜿雁�蛻ｰ迚亥ｿ�噪霍晉ｦｻ��
% \tn{labelsep} 蛻呎弍郛門捷逶貞ｭ仙承遶ｯ荳取擅逶ｮ鬥冶｡梧枚譛ｬ荵矩龍逧�ｷ晉ｦｻ縲�
%    \begin{macrocode}
        \dim_set:Nn \l_tmpa_dim
          { \marginparwidth - \labelsep - \marginparsep }
        \dim_compare:nNnT { \box_wd:N \l_tmpa_box } &gt; \l_tmpa_dim
          {
            \box_resize_to_wd_and_ht:Nnn \l_tmpa_box
              { \l_tmpa_dim } { \box_ht:N \l_tmpa_box }
          }
        \hbox_overlap_left:n
          {
            \box_use:N \l_tmpa_box
            \skip_horizontal:n { \marginparsep - \labelsep }
          }
      }
    \int_incr:N \l_@@_macro_int
  }
%    \end{macrocode}
% \end{macro}
%
% \subsection{譁�｡｣螻ょ多莉､}
%&lt;@@=hustdoc&gt;
%
% \begin{macro}[no-user-doc]{\key}
% 逕ｨ莠主惠譁�｡｣荳ｭ霎灘�閾ｪ螳壻ｹ臥ｴ｢蠑慕噪蜻ｽ莉､�御ｸｻ隕∫畑莠朱醗蛟ｼ蟇ｹ逧�醗逧�ｴ｢蠑輔ゆｻ�ｽ鍋ｴ｢蠑暮｡ｹ逧�宛蛻�ｱｻ荳ｺ |option| 譌ｶ�悟叉逕ｨ莠取枚譯｣邀ｻ騾蛾｡ｹ譌ｶ�碁嚼阯冗宛蛻�ｱｻ縲�
%  \begin{arguments}
%    \item 蝨ｨ邏｢蠑穂ｸｭ譏ｾ遉ｺ鬘ｹ逧�宛蛻�ｱｻ�碁ｻ倩ｮ､荳ｺ \opt{option}縲�
%    \item 蜻ｽ莉､譛ｬ菴薙�
%  \end{arguments}
%    \begin{macrocode}
\DeclareDocumentCommand \key { O{option} m }
  {
    \tl_if_eq:nnTF { #1 } { option }
      { \cmd[module=#1/]{#2} }
      { \cmd[module=#1/]{#1/#2} }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[no-user-doc]{\opt}
% 霎灘�髞ｮ蛟ｼ蟇ｹ逧�ｼ縲�
%    \begin{macrocode}
\DeclareDocumentCommand \opt { s m }
  { \IfBooleanTF {#1} { \texttt{\bfseries \upshape #2} } { \texttt{\upshape #2} } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[no-user-doc]{\expstar, \rexpstar}
%    \begin{macrocode}
\newcommand\expstar{$\star$}
\newcommand\rexpstar{\ding{73}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\TeX, \LaTeX, \LaTeXe,
%   \pdfTeX, \pdfLaTeX, \XeTeX, \XeLaTeX, \LuaTeX, \LuaLaTeX,
%   \AmSLaTeX, \TeXLive, \MiKTeX, \BibTeX, \biber, \TikZ
% }
% \TeX{} 逶ｸ蜈ｳ譬�ｿ励�
%    \begin{macrocode}
\def\TeX{\hologo{TeX}}
\def\LaTeX{\hologo{LaTeX}}
\def\LaTeXe{\hologo{LaTeXe}}
\def\pdfTeX{\hologo{pdfTeX}}
\def\pdfLaTeX{\hologo{pdfLaTeX}}
\def\XeTeX{\hologo{XeTeX}}
\def\XeLaTeX{\hologo{XeLaTeX}}
\def\LuaTeX{\hologo{LuaTeX}}
\def\LuaLaTeX{\hologo{LuaLaTeX}}
\def\AmSLaTeX{\hologo{AmSLaTeX}}
\def\TeXLive{\TeX\ Live}
\def\MiKTeX{\hologo{MiKTeX}}
\def\BibTeX{\hologo{BibTeX}}
\def\biber{\hologo{biber}}
%    \end{macrocode}
% 隸･螳壻ｹ画擂閾ｪ \file{pgfmanual-en-macros.tex}縲�
%    \begin{macrocode}
\def\TikZ{Ti\emph{k}Z}
%    \end{macrocode}
% \end{macro}
%
% \subsection{譁�｡｣譬ｷ蠑殉
%
% \begin{environment}{bashecode, latexcode}
%    \begin{macrocode}
\lstdefinestyle{style@base}
  {
    basewidth = 0.5 em,
    gobble = 3,
    lineskip = 3 pt,
    frame = l,
    framerule = 1 pt,
    framesep = 0 pt,
    xleftmargin = 2 em,
    xrightmargin = 3 em,
    escapeinside = {(*}{*)},
    breaklines = true,
    basicstyle = \small\ttfamily,
    keywordstyle = \bfseries\color{purple},
    commentstyle = \itshape\color{white!50!gray},
    stringstyle = \color{red},
    backgroundcolor = \color{white!95!gray}
  }
\lstdefinestyle{style@bash}
  {
    style = style@base,
    rulecolor = \color{pink},
    language = bash,
    alsoletter = {-},
    emphstyle = \color{green}
  }
\lstdefinestyle{style@latex}
  {
    style = style@base,
    rulecolor = \color{blue},
    language = [LaTeX]TeX,
    alsoletter = {*, -, .},
    texcsstyle = *\color{purple},
    emphstyle = [1]\color{orange},
    emphstyle = [2]\color{green},
    emphstyle = [3]\bfseries\color{yellow}
  }
\lstnewenvironment{bashecode}[1][]{%
  \lstset{style=style@bash, #1}}{}
\lstnewenvironment{latexcode}[1][]{%
  \lstset{style=style@latex, #1}}{}
%    \end{macrocode}
% \end{environment}
%
% \subsection{\env{macrocode}邇ｯ蠅マ
%
% \subsubsection{莉｣遐∬｡悟､�炊}
%
% \begin{macro}[int]{\xmacro@code,\sxmacro@code}
% 驥肴眠螳樒鴫 \env{macrocode} 荳� \env{macrocode*} 邇ｯ蠅�噪譬ｸ蠢�粥閭ｽ�悟ｰ�ｯｹ莉｣遐�占｡�
% 螟�炊縲ょ錘閠�ｼ壼ｰ�ｩｺ譬ｼ譏ｾ遉ｺ荳ｺ窶彌verb*| |窶昴�
%    \begin{macrocode}
\cs_set_protected_nopar:Npn \xmacro@code
  { \@@_marco_code:w }
\cs_set_protected_nopar:Npn \sxmacro@code
  {
    \fontspec_print_visible_spaces:
    \xmacro@code
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_marco_code:w}
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_marco_code:w
  {
%    \end{macrocode}
% 譬ｹ謐ｮ \tn{codeline@index} 譏ｯ蜷ｦ荳ｺ |true| 騾画叫譏ｯ蜷ｦ譏ｾ遉ｺ陦悟捷縲�
%    \begin{macrocode}
    \ifcodeline@index
      \@@_marco_code_every_par:n { \@@_code_line_no: }
    \else:
      \@@_marco_code_every_par:n { }
    \fi:
%    \end{macrocode}
% 隶ｾ鄂ｮ莉｣遐∵ｮｵ扈捺據譬�ｮｰ荳ｺ窶彌verb*|%    \end{macrocode}^^M|窶昴�
%    \begin{macrocode}
    \@@_make_finish_tag:x { \@currenvir }
%    \end{macrocode}
% 蠑蟋� \env{macrocode}縲�
%    \begin{macrocode}
    \@@_macro_code_start:w
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_marco_code_every_par:n}
% 蝨ｨ豈乗ｮｵ荵句燕謠貞�蜀�ｮｹ縲りｿ咎㈹豈乗ｮｵ蜊ｳ逶ｸ蠖謎ｺ取ｯ剰｡後�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_marco_code_every_par:n #1
  {
    \everypar
      {
        \everypar {#1}
        \if@inlabel
          \global \@inlabelfalse \@noparlistfalse
          \llap { \box \@labels \hskip \leftskip }
        \fi
        #1
      }
  }
%    \end{macrocode}
% \end{macro}
%
% 隶ｾ鄂ｮ \tn{endlinechar} 荳ｺ $-1$�瑚｡ｨ遉ｺ陦梧忰荳肴薯蜈･莉ｻ菴募ｭ礼ｬｦ�亥ｮ樣刔荳顔嶌蠖謎ｺ主惠陦悟ｰｾ
% 謠貞�豕ｨ驥顔ｬｦ |%|�峨�
%    \begin{macrocode}
\group_begin:
  \int_set:Nn \tex_endlinechar:D { -1 }
%    \end{macrocode}
%
% \begin{variable}{\c_@@_active_space_tl}
% 豢ｻ蜉ｨ蟄礼ｬｦ邀ｻ逧�ｩｺ譬ｼ��ASCII 遐∽ｸｺ 32�峨�
%    \begin{macrocode}
  \use:n
    {
      \char_set_catcode_active:n { 32 }
      \tl_const:Nn \c_@@_active_space_tl
    }
    { }
\group_end:
%    \end{macrocode}
% \end{variable}
%
% ASCII 遐� 13 譏ｯ蝗櫁ｽｦ隨ｦ |^^M|縲ょｰ��隶ｾ鄂ｮ荳ｺ豢ｻ蜉ｨ蟄礼ｬｦ縲�
%    \begin{macrocode}
\group_begin:
  \char_set_catcode_active:n { 13 }
%    \end{macrocode}
%
% \begin{macro}{\@@_make_finish_tag:n,\@@_make_finish_tag:x}
% \env{macrocode} 扈灘ｰｾ譬�ｮｰ縲ょｱ募ｼ蜷主序謌絶彌verb*|%    \end{#1}^^M|窶昴�
%    \begin{macrocode}
  \cs_new_protected:Npx \@@_make_finish_tag:n #1
    {
      \tl_set:Nn \exp_not:N \l_@@_macro_code_finish_tl
        {
          \c_percent_str
          \prg_replicate:nn { 4 }
            { \exp_not:o { \c_@@_active_space_tl } }
          \exp_not:o { \active@escape@char } end
          \c_left_brace_str #1 \c_right_brace_str
          \exp_not:N ^^M
        }
    }
  \cs_generate_variant:Nn \@@_make_finish_tag:n { x }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_code_start:w}
% 蠑蟋倶ｻ｣遐∫識蠅�よｭ､蜻ｽ莉､荳ｻ隕∵弍荳ｺ莠�亟豁｢ |\begin{macrocode}| 蜷主�邇ｰ螟壻ｽ咏噪遨ｺ陦後�
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_macro_code_start:w #1
    {
      \str_if_eq:nnTF {#1} { ^^M }
        { \@@_macro_code_read_line:w }
        { \@@_macro_code_read_line:w #1 }
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_code_read_line:w}
% 騾占｡瑚ｯｻ蜿紋ｻ｣遐�ｼ悟ｹｶ霑槫酔陦悟ｰｾ蝗櫁ｽｦ隨ｦ荳蟷ｶ蟄伜� \cs{l_@@_macro_code_line_tl}縲ょｦよ棡隸･陦�
% 荳守ｻ捺據譬�ｮｰ窶彌verb*|%    \end{macrocode}^^M|窶晉嶌蜷鯉ｼ悟�扈捺據豁､ \env{macrocode}��
% 蜷ｦ蛻咏ｻｧ扈ｭ螟�炊隸･陦御ｻ｣遐√�
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_macro_code_read_line:w #1 ^^M
    {
      \tl_set:Nn \l_@@_macro_code_line_tl { #1 ^^M }
      \tl_if_eq:NNTF
        \l_@@_macro_code_line_tl \l_@@_macro_code_finish_tl
        { \exp_args:Nx \end { \@currenvir } }
        {
          \@@_macro_code_process_line:
          \@@_macro_code_read_line:w
        }
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_swap_cr:,\@@_swap_cr_aux:w}
% 謚� \cs{l_@@_macro_code_line_tl} 荳ｭ逧�屓霓ｦ隨ｦ |^^M| 謖ｪ蛻ｰ螟夜擇縲�
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_swap_cr:
    {
      \exp_after:wN
        \@@_swap_cr_aux:w \l_@@_macro_code_line_tl
    }
  \cs_new_protected:Npn \@@_swap_cr_aux:w #1 ^^M
    {
      \group_insert_after:N ^^M
      \tl_set:Nn \l_@@_macro_code_line_tl {#1}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\c_@@_active_cr_tl}
% 豢ｻ蜉ｨ蟄礼ｬｦ邀ｻ逧�屓霓ｦ隨ｦ縲�
%    \begin{macrocode}
  \tl_const:Nn \c_@@_active_cr_tl { ^^M }
\group_end:
%    \end{macrocode}
% \end{variable}
%
% \begin{variable}{\l_@@_macro_code_line_tl,
%   \l_@@_macro_code_finish_tl,
%   \g_@@_macro_code_verbatim_stop_tl}
% 蛻�悪逕ｨ譚･蟄伜お莉｣遐∬｡後―env{macrocode} 扈捺據譬�ｮｰ莉･蜿頑割蠖募●豁｢譬�ｮｰ縲�
%    \begin{macrocode}
\tl_new:N \l_@@_macro_code_line_tl
\tl_new:N \l_@@_macro_code_finish_tl
\tl_new:N \g_@@_macro_code_verbatim_stop_tl
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_process_normal_line:}
% 譎ｮ騾壻ｻ｣遐∬｡梧�ｹ謐ｮ蠑螟ｴ蟄礼ｬｦ蛻�悪螟�炊縲�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_process_normal_line:
  {
    \str_case_e:nnF
      { \str_head:N \l_@@_macro_code_line_tl }
      {
%    \end{macrocode}
% 莉･ |%| 蠑螟ｴ逧�｡悟�逕ｱ \cs{tl_tail:N} 蜴ｻ謗� |%|�御ｹ句錘蜀肴｣譟･ |&lt;|縲�
%    \begin{macrocode}
        { \c_percent_str }
        {
          \@@_check_angle:x
            { \tl_tail:N \l_@@_macro_code_line_tl }
        }
%    \end{macrocode}
% 莉･ |#| 蠑螟ｴ逧�｡梧潔豕ｨ驥顔噪譬ｼ蠑剰ｾ灘�縲�
%    \begin{macrocode}
        { \c_hash_str }
        { \@@_output_comment_line: }
      }
%    \end{macrocode}
% 蜈ｶ菴呎ｭ｣蟶ｸ霎灘�縲�
%    \begin{macrocode}
      { \@@_output_line: }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_process_verbatim_line:}
% 螟�炊謚�ｽ穂ｻ｣遐∬｡鯉ｼ井ｸ肴｣譟･ |%| 荳� |&lt;|�峨�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_process_verbatim_line:
  {
%    \end{macrocode}
% 蟆�ｯ･陦御ｸ取割蠖募●豁｢譬�ｮｰ霑幄｡梧ｯ碑ｾ��
%    \begin{macrocode}
    \tl_if_eq:NNTF \l_@@_macro_code_line_tl
        \g_@@_macro_code_verbatim_stop_tl
%    \end{macrocode}
% 闍･逶ｸ蜷鯉ｼ悟�扈捺據謚�ｽ慕識蠅�ｼ梧ｸ�ｩｺ謚�ｽ募●豁｢譬�ｮｰ�悟ｹｶ霎灘�隸･譬�ｮｰ��
%    \begin{macrocode}
      {
        \tl_gclear:N \g_@@_macro_code_verbatim_stop_tl
        \cs_gset_eq:NN \@@_macro_code_process_line:
          \@@_process_normal_line:
        \@@_output_module:nn
          { \color { verb@guard } }
          {
            \@@_swap_cr:
            \@@_module_pop:n { \l_@@_macro_code_line_tl }
          }
      }
%    \end{macrocode}
% 蜷ｦ蛻咏峩謗･霎灘�謚�ｽ穂ｻ｣遐√�
%    \begin{macrocode}
      { \tl_use:N \l_@@_macro_code_line_tl }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_macro_code_process_line:}
% 螟�炊莉｣遐∬｡後りｯ･蜻ｽ莉､逧�ｽ懃畑螯ゆｸ具ｼ�
% \begin{itemize}
%   \item 豁｣蟶ｸ諠��荳具ｼ檎ｭ牙酔莠� \cs{@@_process_normal_line:}��
%   \item 蝨ｨ \cs{DontCheckModules} 荵句錘�檎ｭ我ｻｷ莠� \cs{@@_output_line:}��
%     蜊ｳ荳肴｣譟･讓｡蝮玲��ｮｰ�檎峩謗･霎灘���
%   \item 蝨ｨ謚�ｽ慕識蠅�ｸｭ�檎ｭ我ｻｷ莠� \cs{@@_process_verbatim_line:}��
%     豁､譌ｶ蟆�ｸ榊�迚ｹ谿雁､�炊莉･ |%| 蠑螟ｴ逧�ｻ｣遐∬｡後�
% \end{itemize}
%    \begin{macrocode}
\cs_new_eq:NN \@@_macro_code_process_line:
  \@@_process_normal_line:
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{讓｡蝮玲��ｮｰ螟�炊}
%
% \begin{macro}[int]{\CheckModules, \DontCheckModules}
% 騾画叫譏ｯ蜷ｦ譽譟･讓｡蝮玲��ｮｰ縲りｿ吩ｸ､荳ｪ蜻ｽ莉､蝨ｨ \pkg{doc} 螳丞桁荳ｭ蟾ｲ譛牙ｮ壻ｹ会ｼ梧ｭ､螟�㍾譁ｰ螢ｰ譏弱�
%    \begin{macrocode}
\DeclareDocumentCommand \CheckModules { }
  {
    \cs_set_eq:NN \@@_macro_code_process_line:
      \@@_process_normal_line:
  }
\DeclareDocumentCommand \DontCheckModules { }
  {
    \cs_set_eq:NN \@@_macro_code_process_line:
      \@@_output_line:
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_check_angle:n,\@@_check_angle:x}
% 譽譟･隨ｬ荳荳ｪ蟄礼ｬｦ譏ｯ蜷ｦ譏ｯ |&lt;|縲り凶譏ｯ�悟�譽譟･讓｡蝮暦ｼ帛凄蛻咏ｫ句綾霎灘�謾ｹ陦後�
% 隸･蜃ｽ謨ｰ逧�盾謨ｰ荳榊ｸｦ |%|縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_check_angle:n #1
  {
    \str_if_eq:eeTF { \str_head:n {#1} } { &lt; }
      { \@@_check_module:x { \tl_tail:n {#1} } }
      { \@@_output_comment_line: }
  }
\cs_generate_variant:Nn \@@_check_angle:n { x }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_check_module:n,\@@_check_module:x}
% 譽譟･邏ｧ霍� |&lt;| 荵句錘逧�ｭ礼ｬｦ縲ょ�譛牙屁遘肴ュ蜀ｵ��
% \begin{itemize}
%   \item |*|�壽ｨ｡蝮怜ｼ蟋具ｼ�|%&lt;*|\meta{module}|&gt;|�会ｼ�
%   \item |/|�壽ｨ｡蝮礼ｻ捺據��|%&lt;/|\meta{module}|&gt;|�会ｼ�
%   \item |@|�壼錐蟄礼ｩｺ髣ｴ��|%&lt;@@=|\meta{namespace}|&gt;|�会ｼ�
%   \item |&lt;|�壽割蠖慕識蠅�ｼ蟋具ｼ�|%&lt;&lt;|\meta{end-tag}�峨�
% \end{itemize}
% 闍･荳肴弍霑吝�遘肴ュ蜀ｵ�悟�荳ｺ蜊慕峡荳陦檎噪迢ｬ遶区ｨ｡蝮暦ｼ�|%&lt;|\meta{module}|&gt;|�峨�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_check_module:n #1
  {
    \str_case_e:nnF { \str_head:n {#1} }
      {
        { * } { \@@_module_star:w }
        { / } { \@@_module_slash:w }
        { @ } { \@@_module_at:w }
        { &lt; } { \@@_module_verb:w }
      }
      { \@@_module_pm:w }
%    \end{macrocode}
% 蜿よ焚 |#1| 蟆�｢ｫ荳企擇蜃�荳ｪ |:w| 蝙句�謨ｰ蜷�脂縲�
%    \begin{macrocode}
    #1 \q_stop
  }
\cs_generate_variant:Nn \@@_check_module:n { x }
%    \end{macrocode}
% \end{macro}
%
% 隶ｾ鄂ｮ |&gt;| 荳ｺ豢ｻ蜉ｨ蟄礼ｬｦ縲�
%    \begin{macrocode}
\group_begin:
  \char_set_catcode_active:N \&gt;
%    \end{macrocode}
%
% \begin{macro}{\@@_module_star:w}
% 讓｡蝮怜ｼ蟋区��ｮｰ縲�
% \begin{arguments}
%   \item |*|\meta{module}
%   \item 荵句錘逧�ｻ｣遐�
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_star:w #1 &gt; #2 \q_stop
    {
%    \end{macrocode}
% 荳ｴ譌ｶ蜿倬㍼ \cs{l_@@_tmpa_tl} 菫晏ｭ� |&lt;*|\meta{module}|&gt;| 荵句錘逧�Κ蛻�ｼ悟叉逵溷ｮ樔ｻ｣遐√�
%    \begin{macrocode}
      \tl_set:Nn \l_@@_tmpa_tl {#2}
%    \end{macrocode}
% 蛻､譁ｭ隸･陦梧弍蜷ｦ荳ｺ遨ｺ�亥宵蜷ｫ荳荳ｪ蝗櫁ｽｦ隨ｦ |^^M|�峨�
%    \begin{macrocode}
      \tl_if_eq:NNTF \l_@@_tmpa_tl \c_@@_active_cr_tl
%    \end{macrocode}
% 闍･譏ｯ�悟�蟆� |&lt;|\meta{module}|&gt;| 謾ｾ蝨ｨ陦悟捷逧�承萓ｧ��
%    \begin{macrocode}
        {
          \@@_output_module:nn
            { \@@_star_color: }
            {
              \@@_module_push:n
                { \@@_module_angle:n {#1} }
            }
        }
%    \end{macrocode}
% 蜷ｦ蛻呎叛蝨ｨ蟾ｦ萓ｧ�悟ｹｶ霎灘�逶ｸ蠎比ｻ｣遐√�
%    \begin{macrocode}
        {
          \@@_output_module_left:nn
            { \@@_star_color: }
            {
              \@@_module_push:n
                { \@@_module_angle:n {#1} }
            }
        }
      \@@_output_line:n {#2}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_slash:w}
% 讓｡蝮礼ｻ捺據譬�ｮｰ縲らｻ捺桷荳� \cs{@@_module_star:w} 逶ｸ蜷後�
% \begin{arguments}
%   \item |/|\meta{module}
%   \item 荵句錘逧�ｻ｣遐�
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_slash:w #1 &gt; #2 \q_stop
    {
      \tl_set:Nn \l_@@_tmpa_tl {#2}
      \tl_if_eq:NNTF \l_@@_tmpa_tl \c_@@_active_cr_tl
        {
          \@@_output_module:nn
            { \@@_slash_color: }
            {
              \@@_module_pop:n
                { \@@_module_angle:n {#1} }
            }
        }
        {
          \@@_output_module_left:nn
            { \@@_slash_color: }
            {
              \@@_module_pop:n
                { \@@_module_angle:n {#1} }
            }
        }
      \@@_output_line:n {#2}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_at:w}
% 蜷榊ｭ礼ｩｺ髣ｴ縲�
% \begin{arguments}
%   \item 蜷榊ｭ礼ｩｺ髣ｴ逧�錐遘ｰ�井ｸ榊性 |@@=|��
%   \item 荵句錘逧�ｻ｣遐�
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_at:w @ @ = #1 &gt; #2 \q_stop
    {
      \@@_output_module:nn
        { \color { at@guard } }
        { \@@_module_angle:n { @ @ = #1 } }
%    \end{macrocode}
% 隶ｾ鄂ｮ蜷榊ｭ礼ｩｺ髣ｴ荳ｺ |#1|縲�\cls{l3doc} 荳ｭ蟆�錐蟄礼ｩｺ髣ｴ遘ｰ荳ｺ窶懈ｨ｡蝮冷晢ｼ�module�会ｼ�
% 豕ｨ諢丈ｸ崎ｦ∵ｷｷ豺��
%    \begin{macrocode}
      \tl_gset:Nn \g__codedoc_module_name_tl {#1}
      \@@_output_line:n {#2}
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_verb:w}
% 謚�ｽ募ｼ蟋九�|#1|: |&lt;|\meta{end-tag}�悟宵譛我ｸ荳ｪ |&lt;|縲�\meta{end-tag} 逧�怙蜷惹ｼ�
% 蟶ｦ譛我ｸ荳ｪ蝗櫁ｽｦ隨ｦ |^^M|縲�
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_verb:w #1 \q_stop
    {
%    \end{macrocode}
% 驥榊ｮ壻ｹ� \cs{@@_macro_code_process_line:}�檎畑莉･霎灘�謚�ｽ戊｡後�
%    \begin{macrocode}
      \cs_gset_eq:NN \@@_macro_code_process_line:
        \@@_process_verbatim_line:
%    \end{macrocode}
% 隶ｾ鄂ｮ謚�ｽ募●豁｢譬�ｮｰ縲ら畑 \cs{tl_tail:n} 蜴ｻ謗牙ｼ螟ｴ逧� |&lt;|縲�
%    \begin{macrocode}
      \tl_gset:Nx \g_@@_macro_code_verbatim_stop_tl
        { \c_percent_str \tl_tail:n {#1} }
%    \end{macrocode}
% 霎灘� |%&lt;&lt;|\meta{end-tag}縲�
%    \begin{macrocode}
      \@@_output_module:nn
        { \color { verb@guard } }
        {
          \@@_swap_cr:
          \@@_module_push:n { \l_@@_macro_code_line_tl }
        }
    }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_pm:w}
% 螟�炊蜊慕峡荳陦檎噪讓｡蝮励�|&lt;|\meta{module}|&gt;| 謾ｾ蝨ｨ陦悟捷逧�ｷｦ萓ｧ縲�
% \begin{arguments}
%   \item \meta{module}
%   \item 荵句錘逧�ｻ｣遐�
% \end{arguments}
%    \begin{macrocode}
  \cs_new_protected:Npn \@@_module_pm:w #1 &gt; #2 \q_stop
    {
      \@@_output_module_left:nn
        { \@@_pm_color: }
        { \@@_module_angle:n {#1} }
      \@@_output_line:n {#2}
    }
\group_end:
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_output_line:n,\@@_output_line:}
% 霎灘�莉｣遐∬｡後ょ盾謨ｰ蟆�｢ｫ蟄伜� \cs{l_@@_macro_code_line_tl}��
% 蜀咲罰荳榊ｸｦ蜿よ焚逧�沿譛ｬ隹�畑縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_output_line:n #1
  {
    \tl_set:Nn \l_@@_macro_code_line_tl {#1}
%    \end{macrocode}
% 闍･荳ｺ遨ｺ陦鯉ｼ亥宵蜷ｫ荳荳ｪ |^^M|�会ｼ悟�逶ｴ謗･霎灘��域困陦鯉ｼ峨�
%    \begin{macrocode}
    \tl_if_eq:NNTF
      \l_@@_macro_code_line_tl \c_@@_active_cr_tl
      { \tl_use:N \l_@@_macro_code_line_tl }
      {
%    \end{macrocode}
% 譽譟･蠑螟ｴ譏ｯ蜷ｦ荳ｺ |%|�梧紺豁､蛻�悪螟�炊縲�
%    \begin{macrocode}
        \str_if_eq:eeTF
          { \str_head:N \l_@@_macro_code_line_tl } { \c_percent_str }
          { \@@_output_comment_line: } { \@@_output_line: }
      }
  }
\cs_new_protected_nopar:Npn \@@_output_line:
  {
    \tex_noindent:D
%    \end{macrocode}
% 豁､螟�ｰ�滑 |@@| 譖ｿ謐｢荳ｺ逶ｸ蠎皮噪蜷榊ｭ礼ｩｺ髣ｴ縲�
%    \begin{macrocode}
    \@@_replace_at_at:N \l_@@_macro_code_line_tl
    \tl_use:N \l_@@_macro_code_line_tl
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_output_comment_line:}
% 霎灘�豕ｨ驥贋ｻ｣遐∬｡後ら畑轣ｰ濶ｲ縲∵万菴捺仞遉ｺ縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_output_comment_line:
  {
    \tex_noindent:D
    \group_begin:
      \__hustdoc_swap_cr:
      \color { code@gray } \slshape \@@_output_line:
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_replace_at_at:N,
%   \@@_replace_at_at_aux:Nn,\@@_replace_at_at_aux:No}
% 謚� |@@| 譖ｿ謐｢荳ｺ逶ｸ蠎皮噪蜷榊ｭ礼ｩｺ髣ｴ縲ょ�蜷咲ｧｰ蟄俶叛蝨ｨ蜈ｨ螻蜿倬㍼
% \cs{g__codedoc_module_name_tl} 荳ｭ縲ょｮ�ｸｺ遨ｺ譌ｶ��|%&lt;@@=&gt;|�会ｼ御ｸ榊★譖ｿ謐｢縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_replace_at_at:N #1
  {
    \tl_if_empty:NF \g__codedoc_module_name_tl
      { \@@_replace_at_at_aux:No #1 \g__codedoc_module_name_tl }
  }
\cs_new_protected:Npn \@@_replace_at_at_aux:Nn #1#2
  {
%    \end{macrocode}
% 莉･荳倶ｻ｣遐∝�蛻ｫ蟇ｹ蠎比ｸ､遘榊錐蟄礼ｩｺ髣ｴ逧�崛謐｢��
% \begin{itemize}
%   \item 蜀�Κ蜿倬㍼�嘶\|\meta{type}|_@@_|\meta{name} $\to$
%     |\|\meta{type}|__|\meta{namespace}|_|\meta{name}��
%   \item 蜀�Κ蜃ｽ謨ｰ�嘶\@@_|\meta{name}窶� $\to$
%     |\__|\meta{namespace}|_|\meta{name}窶晢ｼ峨�
% \end{itemize}
%    \begin{macrocode}
    \tl_replace_all:Nnn #1 { _ @ @ } { _ _ #2 }
    \tl_replace_all:Nnn #1 { @ @ } { _ _ #2 }
  }
\cs_generate_variant:Nn \@@_replace_at_at_aux:Nn { No }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_push:n,
%   \@@_module_push_aux:nn,\@@_module_push_aux:on}
% 蟆�ｨ｡蝮怜錐蜴句�譬井ｸｭ縲よｭ､螟�噪譬井ｸｻ隕∫畑譚･螟�炊讓｡蝮怜錐�亥桁諡ｬ謚�ｽ墓��ｮｰ�我ｹ矩龍逧�ｶ�得謗･縲�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_module_push:n
  { \@@_module_push_aux:on { \int_use:N \c@HD@hypercount } }
\cs_new_protected:Npn \@@_module_push_aux:nn #1
  {
    \seq_gpush:Nn \g_@@_module_dest_seq {#1}
    \hypersetup { hidelinks }
    \exp_args:Nx \hdclindex
      { \zref@extractdefault { HD.#1 } { guard@end } { 1 } } { }
  }
\cs_generate_variant:Nn \@@_module_push_aux:nn { on }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_pop:n,
%   \@@_module_pop_aux:nn,\@@_module_pop_aux:on}
% 蟆�ｨ｡蝮怜錐驥頑叛蜃ｺ譬医�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_module_pop:n
  {
    \seq_gpop:NNTF \g_@@_module_dest_seq \l_@@_tmpa_tl
      { \@@_module_pop_aux:on { \l_@@_tmpa_tl } }
      { \BOOM \use:n }
  }
\cs_new_protected:Npn \@@_module_pop_aux:nn #1
  {
    \zref@labelbylist { HD.#1 } { hustdoc }
    \hypersetup { hidelinks }
    \hdclindex {#1} { }
  }
\cs_generate_variant:Nn \@@_module_pop_aux:nn { on }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\g_@@_module_dest_seq}
% 蟄俶叛讓｡蝮怜錐逧�ｺ丞��域�茨ｼ峨�
%    \begin{macrocode}
\seq_new:N \g_@@_module_dest_seq
%    \end{macrocode}
% \end{variable}
%
% 螟�炊陦悟捷雜�得謗･縲ゆｽｿ逕ｨ \pkg{zref} 螳丞桁縲�
%    \begin{macrocode}
\zref@newlist { hustdoc }
\zref@newprop { guard@end } [ 1 ]
  { \int_eval:n { \c@HD@hypercount - 1 } }
\zref@addprop { hustdoc } { guard@end }
%    \end{macrocode}
%
% \subsubsection{譬ｼ蠑丞､�炊}
%
% \begin{macro}[int]{\MacroFont}
% 莉｣遐�Κ蛻�噪蟄嶺ｽ薙�
%    \begin{macrocode}
\cs_set_protected:Npn \MacroFont
  {
    \linespread { 1.05 }
    \small \ttfamily \mdseries \upshape
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_output_module:nn,\@@_output_module_left:nn}
% 霎灘�讓｡蝮怜錐�亥�陦悟�蜥瑚｡悟捷蟾ｦ萓ｧ荳､遘搾ｼ峨�
% \begin{arguments}
%   \item 鬚懆牡遲画�ｷ蠑�
%   \item 讓｡蝮怜錐
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_output_module:nn #1#2
  {
    \tex_noindent:D
    \group_begin:
      #1
      \footnotesize \normalfont \sffamily #2
    \group_end:
  }
\cs_new_protected:Npn \@@_output_module_left:nn #1#2
  {
    \tex_noindent:D
    \hbox_overlap_left:n
      {
        \@@_output_module:nn {#1} {#2}
        \skip_horizontal:n { \leftskip + \smallskipamount }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_star_color:,\@@_slash_color:,\@@_pm_color:}
% 騾画叫讓｡蝮玲��ｮｰ逧�｢懆牡縲よｨ｡蝮玲��ｮｰ逧�｢懆牡莨壽�ｹ謐ｮ蠏悟･怜ｱよｬ｡閠梧隼蜿倥�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_star_color:
  {
    \seq_gpop:NNTF \g_@@_star_color_seq \current@color
      { \set@color }
      { \@@_select_color: }
    \seq_gpush:No \g_@@_slash_color_seq { \current@color }
  }
\cs_new_protected_nopar:Npn \@@_slash_color:
  {
    \seq_gpop:NNTF \g_@@_slash_color_seq \current@color
      {
        \set@color
        \seq_gpush:No \g_@@_star_color_seq { \current@color }
      }
% TODO: 髴隕∵冠髞呻ｼ嘖tar 荳� slash 豐｡譛牙源驟�
      { \BOOM }
  }
\cs_new_protected_nopar:Npn \@@_pm_color:
  {
    \seq_get:NNTF \g_@@_star_color_seq \current@color
      { \set@color }
      {
        \@@_select_color:
        \seq_gpush:No \g_@@_star_color_seq { \current@color }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\g_@@_star_color_seq,\g_@@_slash_color_seq}
% 蟄俶叛讓｡蝮玲��ｮｰ鬚懆牡逧�ｺ丞�縲�
%    \begin{macrocode}
\seq_new:N \g_@@_star_color_seq
\seq_new:N \g_@@_slash_color_seq
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_select_color:}
% \begin{macro}[int]{guard@series}
% 隶ｾ鄂ｮ讓｡蝮玲��ｮｰ逧�牡邉ｻ縲�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_select_color:
  { \color { guard@series!!+ } }
\definecolorseries { guard@series }
  { cmyk } { last } { blue } { purple }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% 隶ｾ鄂ｮ濶ｲ邉ｻ逧�｢樣㍼螟ｧ蟆上ょ庄騾牙盾謨ｰ |3| 諢丞袖逹蝓ｺ濶ｲ��blue�我ｸ取忰濶ｲ��purple�我ｹ矩龍蟆�｢ｫ
% 遲牙�荳ｺ荳我ｻｽ縲りｯ･謨ｰ蟄玲ｯ泌ｵ悟･玲怙螟ｧ豺ｱ蠎ｦ蟆� 1縲�
%    \begin{macrocode}
\resetcolorseries [ 3 ] { guard@series }
%    \end{macrocode}
%
% \begin{macro}[int]{verb@guard,at@guard,code@gray}
% 隶ｾ鄂ｮ鬚懆牡縲�
%    \begin{macrocode}
\definecolor { verb@guard } { named } { MaterialLime600 }
\definecolor { at@guard } { named } { MaterialPink }
\definecolor { code@gray } { named } { MaterialGrey }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_module_angle:n}
% 霎灘�窶�$\langle\cdots\rangle$窶昴�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_module_angle:n #1
  { &lt; #1 &gt; }
%   { \textlangle #1 \textrangle }
%   { \ensuremath \langle #1 \ensuremath \rangle }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_code_line_no:}
% 陦悟捷縲りｮｾ鄂ｮ荳ｺ髦ｿ諡我ｼｯ謨ｰ蟄励�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_code_line_no:
  {
    \int_gincr:N \c@CodelineNo
    \hbox_overlap_left:n
      {
        \hbox_to_wd:nn
          { \MacroIndent }
          {
            \HD@target
            \tex_hss:D \@@_code_line_no_style:
            \theCodelineNo \enspace
          }
        \tex_kern:D \@totalleftmargin
      }
  }
\tl_set:Nn \theCodelineNo { \arabic { CodelineNo } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_code_line_no_style:}
% 陦悟捷譬ｼ蠑上�
%    \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_code_line_no_style:
  { \color { code@gray } \normalfont \sffamily \tiny }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\HD@SetMacroIndent}
% 隶ｾ鄂ｮ莉｣遐∫ｼｩ霑幢ｼ郁｡悟捷荳譬冗噪螳ｽ蠎ｦ�峨りｯ･蜻ｽ莉､莨壼�霑� |.aux| 霎�勧譁�ｻｶ��
% 莉･萓ｿ蝨ｨ莠梧ｬ｡郛冶ｯ第慮遑ｮ螳壽怙螟ｧ陦悟捷螳ｽ蠎ｦ縲�
%    \begin{macrocode}
\cs_set_protected:Npn \HD@SetMacroIndent #1
  {
    \group_begin:
      \settowidth \MacroIndent
        {
          \@@_code_line_no_style:
          \prg_replicate:nn { \tl_count:n {#1} } { 0 }
          \enspace
        }
      \dim_gset_eq:NN \MacroIndent \MacroIndent
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%

% \subsection{菫ｮ隶｢隶ｰ蠖扶
%
% \begin{macro}{\@@_ltx_changes:nnn}
% 菫晏ｭ� \pkg{doc} 荳ｭ \tn{changes@} 逧�ｮ壻ｹ峨�
%    \begin{macrocode}
\cs_new_eq:NN \@@_ltx_changes:nnn \changes@
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\changes@}
% 驥榊ｮ壻ｹ� \tn{changes@}�悟惠迚域悽蜿ｷ荳陦梧仞遉ｺ菫ｮ謾ｹ譌･譛溘�
%    \begin{macrocode}
\cs_set_protected:Npn \changes@ #1#2
  {
    \@@_save_version_date:nn {#1} {#2}
    \@@_ltx_changes:nnn {#1} {#2}
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{variable}{\g_@@_version_date_prop}
% 蟄俶叛迚域悽蜿ｷ荳主ｯｹ蠎皮噪菫ｮ謾ｹ譌･譛溘ょ�荳ｭ髞ｮ荳ｺ迚域悽蜿ｷ�悟ｼ荳ｺ |{蠑蟋区律譛滂ｼ檎ｻ捺據譌･譛毳|縲�
% 蠑蟋区律譛滉ｸ守ｻ捺據譌･譛溷庄莉･逶ｸ蜷後�
%    \begin{macrocode}
\prop_new:N \g_@@_version_date_prop
%    \end{macrocode}
% \end{variable}
%
% \begin{macro}{\@@_save_version_date:nn}
% |nn| 迚域悽譛扈亥ｰ�｢ｫ \tn{changes@} 隹�畑縲�
% \begin{arguments}
%   \item 迚域悽蜿ｷ
%   \item 譌･譛�
% \end{arguments}
% 螳�ｻｬ蛻�悪蟇ｹ蠎� \tn{change} 逧�燕荳､荳ｪ蜿よ焚�育ｬｬ荳我ｸｪ譏ｯ隸ｴ譏取枚蟄暦ｼ峨�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_save_version_date:nn #1#2
  {
    \prop_get:NnNTF \g_@@_version_date_prop
      {#1} \l_@@_tmpa_tl
      {
%    \end{macrocode}
% \cs{l_@@_tmpa_tl} 逶ｸ蠖謎ｺ惹ｸ､荳ｪ蜿よ焚�亥ｼ蟋区律譛溘∫ｻ捺據譌･譛滂ｼ会ｼ悟屏豁､髴隕∵署蜑榊ｱ募ｼ縲�
%    \begin{macrocode}
        \exp_after:wN
          \@@_save_version_date_aux:nnnn \l_@@_tmpa_tl
        {#2} {#1}
      }
      { \@@_save_version_date_aux:nnn {#1} {#2} {#2} }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_save_version_date_aux:nnnn}
% \begin{arguments}
%   \item 蜴溷ｼ蟋区律譛�
%   \item 蜴溽ｻ捺據譌･譛滂ｼ域仞辟ｶ蠎疲怏 |#1| &lt; |#2|��
%   \item 譁ｰ隸ｻ蜈･逧�律譛�
%   \item 迚域悽蜿ｷ
% \end{arguments}
% 螯よ棡 |#3| &lt; |#1|�悟�隸ｻ蜈･譌･譛� |#3|縲－#2|��
% 螯よ棡 |#3| &gt; |#2|�悟�隸ｻ蜈･譌･譛� |#1|縲－#3|縲�
%    \begin{macrocode}
\cs_new_protected:Npn \@@_save_version_date_aux:nnnn #1#2#3#4
  {
    \@@_if_date_later:nnTF {#1} {#3}
      { \@@_save_version_date_aux:nnn {#4} {#3} {#2} }
      {
        \@@_if_date_later:nnT {#3} {#2}
          { \@@_save_version_date_aux:nnn {#4} {#1} {#3} }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_save_version_date_aux:nnn}
% 蟆�沿譛ｬ蜿ｷ蜥梧律譛溷ｭ伜� \cs{g_@@_version_date_prop}縲�
% \begin{arguments}
%   \item 迚域悽蜿ｷ
%   \item 蠑蟋区律譛�
%   \item 扈捺據譌･譛�
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_save_version_date_aux:nnn #1#2#3
  { \prop_gput:Nnn \g_@@_version_date_prop {#1} { {#2} {#3} } }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[TF]{\@@_if_date_later:nn}
% \begin{macro}{\@@_parse_date:w}
% 豈碑ｾ�ｸ､荳ｪ譌･譛溘ょｦよ棡 |#1| 蝨ｨ |#2| 荵句錘�悟�荳ｺ |true|�帛渚荵倶ｸｺ |false|縲�
% 譌･譛溽噪譬ｼ蠑丈ｸｺ |YYYY-MM-DD|縲よｯ碑ｾ�婿豕墓弍逶ｴ謗･蟆�律譛溷喧謌� 8 菴肴焚蟄暦ｼ�
% 謇莉･譛医∵律蜑咲噪 0 荳榊庄莉･逵∫払縲�
%    \begin{macrocode}
\prg_new_conditional:Npnn \@@_if_date_later:nn #1#2 { TF, T }
  {
    \if_int_compare:w
        \@@_parse_date:w #1 / / / 0 \q_stop &gt;
        \@@_parse_date:w #2 / / / 0 \q_stop \exp_stop_f:
      \prg_return_true:
    \else:
      \prg_return_false:
    \fi:
  }
\cs_new:Npn \@@_parse_date:w #1-#2-#3/ #4 \q_stop
  { #1#2#3 }
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}[int]{\CTEX@versionitem}
% 迚域悽譚｡逶ｮ譬�ｭｾ縲ょｦよ棡迚域悽蜿ｷ荳榊惠 \cs{g_@@_version_date_prop} 驥碁擇��
% 蛻吝茜逕ｨ譛ｪ螳壻ｹ臥噪 \cs{BOOM} 謚･髞吶�
%    \begin{macrocode}
\cs_new_protected:Npn \CTEX@versionitem #1 \efill
  {
    \@idxitem
    \prop_get:NnNTF \g_@@_version_date_prop
      {#1} \l_@@_tmpa_tl
      {
        \exp_after:wN
          \@@_print_version_date:nnn \l_@@_tmpa_tl
        {#1}
      }
      { \BOOM }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@@_print_version_date:nnn}
% 霎灘�迚域悽蜿ｷ蜥梧律譛溘ょｦよ棡蠑蟋区律譛溷柱扈捺據譌･譛溽嶌蜷鯉ｼ悟�蜿ｪ霎灘�荳鬘ｹ縲�
% \begin{arguments}
%   \item 蠑蟋区律譛�
%   \item 扈捺據譌･譛�
%   \item 迚域悽蜿ｷ
% \end{arguments}
%    \begin{macrocode}
\cs_new_protected:Npn \@@_print_version_date:nnn #1#2#3
  {
    \noindent
    \Hy@raisedlink { \belowpdfbookmark {#3} { HD.#3 } }
    \textbf {#3} \hfill
    \hbox:n
      {
        \footnotesize
        \str_if_eq:nnTF {#1} {#2}
          { ( #1 ) } { ( #1 \c_space_tl \c_tilde_str \c_space_tl #2 ) }
      }
    \par \nopagebreak
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\HDorg@theglossary}
% 隸･蜻ｽ莉､逕ｱ \pkg{hypdoc} 螳丞桁螳壻ｹ会ｼ檎畑莠主ｭ俶叛譬�㊥譁�｡｣邀ｻ \cls{book} 荳ｭ螳壻ｹ臥噪
% \tn{theindex} 蜻ｽ莉､縲よｭ､螟�噪陦･荳∝ｰ�惠迚域悽蜿ｷ荳陦梧怙蜷主刈荳贋ｿｮ謾ｹ譌･譛溘�
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \HDorg@theglossary
  { \let \item \@idxitem }
  { \let \item \CTEX@versionitem }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}[int]{\@wrglossary}
% 隸･蜻ｽ莉､逕ｱ \LaTeXe{} 蜀��ｸ螳壻ｹ会ｼ悟処逕ｱ \pkg{hypdoc} 螳丞桁菴應ｺ�ｿｮ謾ｹ縲�
% 豁､螟�噪陦･荳∽ｽｿ蠕嶺ｿｮ隶｢隶ｰ蠖墓擅逶ｮ逧�｡ｵ遐∬�螟滓欠蜷大ｯｹ蠎碑｡後�
%    \begin{macrocode}
\ctex_patch_cmd:Nnn \@wrglossary
  { hdpindex }
  {
    \ifnum \c@HD@hypercount = \z@
      hdpindex
    \else
      hdclindex { \the \c@HD@hypercount }
    \fi
  }
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%&lt;/doc-sty&gt;
%    \end{macrocode}
%
% \end{implementation}
</pre></body></html>