<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \iffalse meta-comment
%
% Copyright (C) 2005-2025 by Tsinghua University TUNA Association &lt;tuna@tsinghua.edu.cn&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.
% 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.
%
% \fi
%
% \iffalse
%&lt;*driver&gt;
\ProvidesFile{thuthesis.dtx}[2025/03/28 7.6.0 Tsinghua University Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}

\EnableCrossrefs
\CodelineIndex

\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%&lt;/driver&gt;
% \fi
%
% \DoNotIndex{\newenvironment,\@bsphack,\@empty,\@esphack,\sfcode}
% \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter}
% \DoNotIndex{\noindent,\normalfont,\par,\parskip,\phantomsection}
% \DoNotIndex{\providecommand,\ProvidesPackage,\refstepcounter}
% \DoNotIndex{\RequirePackage,\setcounter,\setlength,\string,\strut}
% \DoNotIndex{\textbackslash,\texttt,\ttfamily,\usepackage}
% \DoNotIndex{\begin,\end,\begingroup,\endgroup,\par,\\}
% \DoNotIndex{\if,\ifx,\ifdim,\ifnum,\ifcase,\else,\or,\fi}
% \DoNotIndex{\let,\def,\xdef,\edef,\newcommand,\renewcommand}
% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect}
% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize}
% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny}
% \DoNotIndex{\normalfont,\bfseries,\slshape,\sffamily,\interlinepenalty}
% \DoNotIndex{\textbf,\textit,\textsf,\textsc}
% \DoNotIndex{\hfil,\par,\hskip,\vskip,\vspace,\quad}
% \DoNotIndex{\centering,\raggedright,\ref}
% \DoNotIndex{\c@secnumdepth,\@startsection,\@setfontsize}
% \DoNotIndex{\ ,\@plus,\@minus,\p@,\z@,\@m,\@M,\@ne,\m@ne}
% \DoNotIndex{\@@par,\DeclareOperation,\RequirePackage,\LoadClass}
% \DoNotIndex{\AtBeginDocument,\AtEndDocument}
%
% \GetFileInfo{\jobname.dtx}
%
% \def\indexname{ç´¢å¼•}
% \IndexPrologue{\section{\indexname}}
%
% \title{\bfseries\color{violet}\thuthesisï¼šæ¸…åŽå¤§å­¦å­¦ä½è®ºæ–‡æ¨¡æ¿}
% \author{{\fangsong æ¸…åŽå¤§å­¦ TUNA åä¼š}\\[5pt]\texttt{tuna@tsinghua.edu.cn}}
% \date{v\fileversion\ (\filedate)}
% \maketitle\thispagestyle{empty}
%
%
% \begin{abstract}\noindent
%   æ­¤å®åŒ…æ—¨åœ¨å»ºç«‹ä¸€ä¸ªç®€å•æ˜“ç”¨çš„æ¸…åŽå¤§å­¦å­¦ä½è®ºæ–‡æ¨¡æ¿ï¼ŒåŒ…æ‹¬æœ¬ç§‘ç»¼åˆè®ºæ–‡è®­ç»ƒã€ç¡•å£«
%   è®ºæ–‡ã€åšå£«è®ºæ–‡ä»¥åŠåšå£«åŽå‡ºç«™æŠ¥å‘Šã€‚
% \end{abstract}
%
% \vskip2cm
% \def\abstractname{å…è´£å£°æ˜Ž}
% \begin{abstract}
% \noindent
% \begin{enumerate}
% \item æœ¬æ¨¡æ¿çš„å‘å¸ƒéµå®ˆ \href{https://www.latex-project.org/lppl/lppl-1-3c.txt}{\LaTeX{} Project Public License (1.3.c)}ï¼Œä½¿ç”¨å‰è¯·è®¤çœŸé˜…è¯»åè®®å†…
%   å®¹ã€‚
% \item æœ¬æ¨¡æ¿ä¸ºä½œè€…æ&nbsp;¹æ®
%   æ¸…åŽå¤§å­¦ç&nbsp;”ç©¶ç”Ÿé™¢é¢å‘çš„ã€Š
%    \href{https://info2021.tsinghua.edu.cn/f/info/xxfb_fg/xnzx/template/detail?xxid=fa880bdf60102a29fbe3c31f36b76c7e}{%
%   ç&nbsp;”ç©¶ç”Ÿå­¦ä½è®ºæ–‡å†™ä½œæŒ‡å—}ã€‹ï¼ˆæ›´æ–°åˆ° 2025 å¹´ 3 æœˆç‰ˆæœ¬ï¼Œé™æ&nbsp;¡å†…ç½‘ç»œè®¿é—®ï¼‰ã€
%   è‹±æ–‡ç‰ˆ \emph{Guide to Thesis Writing for Graduate Students}ã€
%   æ¸…åŽå¤§å­¦æ•™åŠ¡å¤„é¢å‘çš„ã€Š
%   \href{https://info2021.tsinghua.edu.cn/f/info/xxfb_fg/xnzx/template/detail?xxid=b2d1a49d7e48c8e9b0f7e82f033dbb2b}{%
%   æ¸…åŽå¤§å­¦ç»¼åˆè®ºæ–‡è®­ç»ƒå†™ä½œè§„èŒƒï¼ˆè¯•è¡Œï¼‰}ã€‹ã€
%   å¤–æ–‡ç³»çš„ã€Šè‹±è¯­ä¸“ä¸šæœ¬ç§‘ç”Ÿç»¼åˆè®ºæ–‡è®­ç»ƒã€‹å’Œ
%   æ¸…åŽå¤§å­¦ã€Š
%   \href{http://postdoctor.tsinghua.edu.cn/info/czxz/1283}{%
%   ç¼–å†™â€œæ¸…åŽå¤§å­¦åšå£«åŽç&nbsp;”ç©¶æŠ¥å‘Šâ€å‚è€ƒæ„è§}ã€‹
%   ç¼–å†™è€Œæˆï¼Œæ—¨åœ¨ä¾›æ¸…åŽå¤§å­¦æ¯•ä¸šç”Ÿæ’°å†™å­¦ä½è®ºæ–‡ä½¿ç”¨ã€‚
% \item ä»»ä½•ä¸ªäººæˆ–ç»„ç»‡ä»¥æœ¬æ¨¡æ¿ä¸ºåŸºç¡€è¿›è¡Œä¿®æ”¹ã€æ‰©å±•è€Œç”Ÿæˆçš„æ–°çš„ä¸“ç”¨æ¨¡æ¿ï¼Œè¯·ä¸¥æ&nbsp;¼éµ
%   å®ˆ \LaTeX{} Project Public License åè®®ã€‚ç”±äºŽè¿çŠ¯åè®®è€Œå¼•èµ·çš„ä»»ä½•çº&nbsp;çº·äº‰ç«¯å‡ä¸Ž
%   æœ¬æ¨¡æ¿ä½œè€…æ—&nbsp;å…³ã€‚
% \end{enumerate}
% \end{abstract}
%
%
% \clearpage
% \pagestyle{fancy}
% \begin{multicols}{2}[
%   \setlength{\columnseprule}{.4pt}
%   \setlength{\columnsep}{18pt}]
%   \tableofcontents
% \end{multicols}
% \clearpage
%
% \section{æ¨¡æ¿ä»‹ç»}
% \thuthesis{}ï¼ˆ\textbf{T}sing\textbf{h}ua \textbf{U}niversity \LaTeX{}
% \textbf{Thesis} Templateï¼‰æ˜¯ä¸ºäº†å¸®åŠ©æ¸…åŽå¤§å­¦æ¯•ä¸šç”Ÿæ’°å†™æ¯•ä¸šè®ºæ–‡è€Œç¼–å†™
% çš„ \LaTeX{} è®ºæ–‡æ¨¡æ¿ã€‚
%
% æœ¬æ–‡æ¡£å°†å°½é‡å®Œæ•´åœ°ä»‹ç»æ¨¡æ¿çš„ä½¿ç”¨æ–¹æ³•ï¼Œå¦‚æœ‰ä¸æ¸…æ¥šä¹‹å¤„ï¼Œæˆ–è€…æƒ³æå‡ºæ”¹è¿›å»ºè®®ï¼Œ
% å¯ä»¥åœ¨ \href{https://github.com/tuna/thuthesis/issues/}{GitHub Issues}
% å‚ä¸Žè®¨è®ºæˆ–æé—®ã€‚
% æœ‰å…´è¶£è€…éƒ½å¯ä»¥å‚ä¸Žå®Œå–„æ­¤æ‰‹å†Œï¼Œä¹Ÿéžå¸¸æ¬¢è¿Žå¯¹ä»£ç&nbsp;çš„è´¡çŒ®ã€‚
%
% \note[æ³¨æ„ï¼š]{æ¨¡æ¿çš„ä½œç”¨åœ¨äºŽå‡å°‘è®ºæ–‡å†™ä½œè¿‡ç¨‹ä¸­æ&nbsp;¼å¼è°ƒæ•´çš„æ—¶é—´ã€‚å‰ææ˜¯éµå®ˆæ¨¡æ¿çš„
% ç”¨æ³•ï¼Œå¦åˆ™å³ä¾¿ç”¨äº† \thuthesis{} ä¹Ÿéš¾ä»¥ä¿è¯è¾“å‡ºçš„è®ºæ–‡ç¬¦åˆå­¦æ&nbsp;¡è§„èŒƒã€‚}
%
% ç”¨æˆ·å¦‚æžœé‡åˆ° bugï¼Œæˆ–è€…å‘çŽ°ä¸Žå­¦æ&nbsp;¡ã€Šå†™ä½œæŒ‡å—ã€‹ çš„è¦æ±‚ä¸ä¸€è‡´ï¼Œå¯ä»¥å°è¯•ä»¥ä¸‹åŠžæ³•ï¼š
% \begin{enumerate}
%   \item å°†æ¨¡æ¿å‡çº§åˆ°æœ€æ–°ï¼Œè§ç¬¬~\ref{sec:upgrade} èŠ‚ï¼›
%   \item é˜…è¯» \href{https://github.com/tuna/thuthesis/wiki/FAQ}{FAQ}ï¼›
%   \item åœ¨ GitHub Issues ä¸­æŒ‰ç…§è¯´æ˜Ž
%     \href{https://github.com/tuna/thuthesis/issues/new?template=bug_report.md}{æŠ¥å‘Š bug}ã€‚
% \end{enumerate}
%
% \section{è´¡çŒ®è€…}
% \label{sec:contributors}
%
% \thuthesis{} çš„å¼€å‘è¿‡ç¨‹ä¸­ï¼Œä¸»è¦çš„ç»´æŠ¤è€…åŒ…æ‹¬ï¼š
%
% \begin{itemize}
%  \item è–›ç‘žå°¼ï¼ˆ\githubuser{xueruini}ï¼‰ï¼šæœ€æ—©çš„å¼€å‘è€…ï¼Œ2005 å¹´åˆ›å»º \thuthesis{} å¹¶é•¿æœŸè¿›è¡Œç»´æŠ¤å·¥ä½œã€‚
%  \item èµµæ¶›ï¼ˆ\githubuser{alick}ï¼‰ï¼š2011-2015 å¹´æ´»è·ƒï¼Œè¾ƒæ—©æœŸé˜¶æ®µçš„å¼€å‘è€…ã€‚
%  \item æŽæ³½å¹³ï¼ˆ\githubuser{zepinglee}ï¼‰ï¼š2016 å¹´è‡³ä»Šæ´»è·ƒï¼Œä¸ºç›®å‰ä¸»è¦ç»´æŠ¤è€…ã€‚
%  \item é™ˆæ™Ÿç¥ºï¼ˆ\githubuser{Harry-Chen}ï¼‰ï¼š2020 å¹´è‡³ä»Šæ´»è·ƒï¼Œä¸»è¦è´Ÿè´£éžå¼€å‘æ€§äº‹å®œã€‚
% \end{itemize}
%
% åŒæ—¶ï¼Œä¹Ÿè¦æ„Ÿè°¢æ‰€æœ‰åœ¨ GitHub ä¸Šæå‡ºé—®é¢˜ä¸Žè´¡çŒ®ä»£ç&nbsp;çš„åŒå­¦ã€è€å¸ˆä»¬ã€‚
% \thuthesis{} çš„æŒç»­å‘å±•ï¼Œç¦»ä¸å¼€ä½&nbsp;ä»¬çš„å¸®åŠ©ä¸Žæ”¯æŒã€‚
%
% \section{å®‰è£…}
% \label{sec:installation}
%
% \thuthesis{} å·²ç»åŒ…å«åœ¨ä¸»è¦çš„ \TeX{} å‘è¡Œç‰ˆä¸­ï¼Œä½†æ˜¯é€šå¸¸ç‰ˆæœ¬è¾ƒæ—§ï¼Œè€Œä¸”ä¸æ–¹ä¾¿æ›´æ–°ã€‚
% å»ºè®®ä»Žä¸‹åˆ—é€”å¾„ä¸‹è½½æœ€æ–°ç‰ˆï¼š
% \begin{description}
%  \item[GitHub] \url{https://github.com/tuna/thuthesis}ï¼Œä»Ž Release ä¸­ä¸‹è½½ zip æ–‡ä»¶ã€‚
%  \item[TUNA é•œåƒç«™] \url{https://mirrors.tuna.tsinghua.edu.cn/github-release/tuna/thuthesis/}ï¼Œä¹Ÿå¯åœ¨é¦–é¡µé€‰æ‹©â€œèŽ·å–ä¸‹è½½é“¾æŽ¥â€”â€”åº”ç”¨è½¯ä»¶â€”â€”\thuthesis{}è®ºæ–‡æ¨¡æ¿â€ã€‚
% \end{description}
%
%
% æ¨¡æ¿æ”¯æŒåœ¨ TeX Liveã€MacTeX å’Œ MiKTeX å¹³å°ä¸‹è¿›è¡Œç¼–è¯‘ï¼Œä½†è¦æ±‚ 2017 å¹´æˆ–æ›´æ–°çš„å‘è¡Œç‰ˆã€‚
% å½“ç„¶ï¼Œå°½å¯èƒ½ä½¿ç”¨æœ€æ–°çš„ç‰ˆæœ¬å¯ä»¥é¿å… bugã€‚
%
% \subsection{æ¨¡æ¿çš„ç»„æˆ}
% ä¸‹è¡¨åˆ—å‡ºäº† \thuthesis{} çš„ä¸»è¦æ–‡ä»¶åŠå…¶åŠŸèƒ½ä»‹ç»ï¼š
%
% \begin{longtable}{l|p{8cm}}
% \toprule
% {\heiti æ–‡ä»¶ï¼ˆå¤¹ï¼‰} &amp; {\heiti åŠŸèƒ½æè¿°}\\\midrule
% \endfirsthead
% \midrule
% {\heiti æ–‡ä»¶ï¼ˆå¤¹ï¼‰} &amp; {\heiti åŠŸèƒ½æè¿°}\\\midrule
% \endhead
% \endfoot
% \endlastfoot
% thuthesis.ins &amp; \textsc{DocStrip} é©±åŠ¨æ–‡ä»¶ï¼ˆå¼€å‘ç”¨ï¼‰ \\
% thuthesis.dtx &amp; \textsc{DocStrip} æºæ–‡ä»¶ï¼ˆå¼€å‘ç”¨ï¼‰\\\midrule
% thuthesis.cls &amp; æ¨¡æ¿ç±»æ–‡ä»¶\\
% thuthesis-*.bst &amp; \hologo{BibTeX} å‚è€ƒæ–‡çŒ®è¡¨æ&nbsp;·å¼æ–‡ä»¶\\
% thuthesis-*.bbx &amp; BibLaTeX å‚è€ƒæ–‡çŒ®è¡¨æ&nbsp;·å¼æ–‡ä»¶\\
% thuthesis-*.cbx &amp; BibLaTeX å‚è€ƒæ–‡çŒ®å¼•ç”¨æ&nbsp;·å¼æ–‡ä»¶\\
% tsinghua-name-bachelor.pdf &amp; æ&nbsp;¡å logoï¼Œæœ¬ç§‘ç”Ÿå°é¢ä½¿ç”¨ \\\midrule
% thuthesis-example.tex &amp; ç¤ºä¾‹æ–‡æ¡£ä¸»æ–‡ä»¶\\
% ref/ &amp; ç¤ºä¾‹æ–‡æ¡£å‚è€ƒæ–‡çŒ®ç›®å½•\\
% data/ &amp; ç¤ºä¾‹æ–‡æ¡£ç«&nbsp;èŠ‚å…·ä½“å†…å®¹\\
% figures/ &amp; ç¤ºä¾‹æ–‡æ¡£å›¾ç‰‡è·¯å¾„\\
% thusetup.tex &amp; ç¤ºä¾‹æ–‡æ¡£åŸºæœ¬é…ç½®\\\midrule
% Makefile &amp; Makefile\\
% latexmkrc &amp; latexmk é…ç½®æ–‡ä»¶ \\
% README.md &amp; Readme\\
% \textbf{thuthesis.pdf} &amp; ç”¨æˆ·æ‰‹å†Œï¼ˆæœ¬æ–‡æ¡£ï¼‰\\\bottomrule
% \end{longtable}
%
% å‡&nbsp;ç‚¹è¯´æ˜Žï¼š
% \begin{itemize}
% \item \file{thuthesis.cls} å¯ç”± \file{thuthesis.ins}
%   å’Œ \file{thuthesis.dtx} ç”Ÿæˆï¼Œä½†ä¸ºäº†é™ä½Žæ–°æ‰‹ç”¨æˆ·çš„ä½¿ç”¨éš¾åº¦ï¼Œæ•…
%   å°† \file{thuthesis.cls} æ–‡ä»¶ä¸€èµ·å‘å¸ƒã€‚
% \item ä½¿ç”¨å‰é˜…è¯»æ–‡æ¡£ï¼š\file{thuthesis.pdf}ã€‚
% \end{itemize}
%
% \subsection{ç”Ÿæˆæ¨¡æ¿}
% \label{sec:generate-cls}
% æ¨¡æ¿çš„æºæ–‡ä»¶ï¼ˆ\file{thuthesis.dtx}ï¼‰ä¸­åŒ…å«äº†å¤§é‡çš„æ³¨é‡Šï¼Œéœ€è¦å°†æ³¨é‡ŠåŽ»æŽ‰ç”Ÿæˆè½»é‡
% çº§çš„ \file{.cls} æ–‡ä»¶ä¾› \cs{documentclass} è°ƒç”¨ã€‚
%
% \begin{shell}
%   $ xetex thuthesis.ins
% \end{shell}
%
% \note[æ³¨æ„ï¼š]{å¦‚æžœæ²¡æœ‰ç”Ÿæˆçš„æ¨¡æ¿ \file{thuthesis.cls} æ–‡ä»¶
%   ï¼ˆè·Ÿ \file{thuthesis-example.tex} åŒä¸€ç›®å½•ä¸‹ï¼‰ï¼Œ
%   \LaTeX{} åœ¨ç¼–è¯‘æ—¶å¯èƒ½æ‰¾åˆ°å‘è¡Œç‰ˆä¸­è¾ƒæ—§ç‰ˆæœ¬çš„ \file{.cls}ï¼Œä»Žè€Œé€&nbsp;æˆå†²çªã€‚}
%
% \subsection{ç¼–è¯‘è®ºæ–‡}
% \label{sec:generate-thesis}
% æœ¬èŠ‚ä»‹ç»å‡&nbsp;ç§å¸¸è§çš„ç”Ÿæˆè®ºæ–‡çš„æ–¹æ³•ã€‚ç”¨æˆ·å¯æ&nbsp;¹æ®è‡ªå·±çš„æƒ…å†µé€‰æ‹©ã€‚
%
% åœ¨æ’°å†™è®ºæ–‡æ—¶ï¼Œæˆ‘ä»¬\textbf{ä¸æŽ¨è}ä½¿ç”¨åŽŸæœ‰çš„ \file{thuthesis-example.tex} è¿™ä¸€åç§°ã€‚
% å»ºè®®å°†å…¶å¤åˆ¶ä¸€ä»½ï¼Œæ”¹ä¸ºå…¶ä»–çš„åå­—ï¼ˆå¦‚ \file{thesis.tex} æˆ–è€… \file{main.tex}ï¼‰ã€‚
% éœ€è¦æ³¨æ„ï¼Œå¦‚æžœä½¿ç”¨äº†æ¥è‡ª \file{data} ç›®å½•ä¸­çš„ \file{tex} æ–‡ä»¶ï¼Œ
% åˆ™é‡å‘½åä¸»æ–‡ä»¶åŽï¼Œå…¶é¡¶ç«¯çš„ \texttt{!TeX root} é€‰é¡¹ä¹Ÿéœ€è¦ç›¸åº”ä¿®æ”¹ã€‚
%
% \subsubsection{GNU make}
% \label{sec:make}
% å¦‚æžœç”¨æˆ·å¯ä»¥ä½¿ç”¨ GNU make å·¥å…·ï¼Œè¿™æ˜¯æœ€æ–¹ä¾¿çš„åŠžæ³•ã€‚
% æ‰€ä»¥ \thuthesis{} æä¾›äº† \file{Makefile}ï¼š
% \begin{shell}
%   $ make thesis    # ç”Ÿæˆè®ºæ–‡ç¤ºä¾‹ thuthesis-example.pdf
%   $ make spine     # ç”Ÿæˆä¹¦è„Š spine.pdf
%   $ make doc       # ç”Ÿæˆè¯´æ˜Žæ–‡æ¡£ thuthesis.pdf
%   $ make clean     # æ¸…ç†ç¼–è¯‘ç”Ÿæˆçš„è¾…åŠ©æ–‡ä»¶
% \end{shell}
%
% éœ€è¦æ³¨æ„ï¼Œå¦‚æžœæ›´æ”¹äº†ä¸»æ–‡ä»¶çš„åç§°ï¼Œåˆ™éœ€è¦ä¿®æ”¹ \file{Makefile} é¡¶ç«¯çš„ \texttt{THESIS} å˜é‡å®šä¹‰ã€‚
%
% \subsubsection{latexmk}
% \label{sec:latexmk}
% \texttt{latexmk} å‘½ä»¤æ”¯æŒå…¨è‡ªåŠ¨ç”Ÿæˆ \LaTeX{} ç¼–å†™çš„æ–‡æ¡£ï¼Œå¹¶ä¸”æ”¯æŒä½¿ç”¨ä¸åŒçš„å·¥å…·
% é“¾æ¥è¿›è¡Œç”Ÿæˆï¼Œå®ƒä¼šè‡ªåŠ¨è¿è¡Œå¤šæ¬¡å·¥å…·ç›´åˆ°äº¤å‰å¼•ç”¨éƒ½è¢«è§£å†³ã€‚
% \begin{shell}
%   $ latexmk thuthesis-example.tex  # ç”Ÿæˆç¤ºä¾‹è®ºæ–‡ thuthesis-example.pdf
%   $ latexmk spine.tex              # ç”Ÿæˆä¹¦è„Š spine.pdf
%   $ latexmk thuthesis.dtx          # ç”Ÿæˆè¯´æ˜Žæ–‡æ¡£ thuthesis.pdf
%   $ latexmk -c                     # æ¸…ç†ç¼–è¯‘ç”Ÿæˆçš„è¾…åŠ©æ–‡ä»¶
% \end{shell}
% \texttt{latexmk} çš„ç¼–è¯‘è¿‡ç¨‹æ˜¯é€šè¿‡ \file{latexmkrc} æ–‡ä»¶æ¥é…ç½®çš„ï¼Œå¦‚æžœè¦è¿›ä¸€æ­¥äº†è§£ï¼Œ
% å¯ä»¥å‚è€ƒ \pkg{latexmk} æ–‡æ¡£ã€‚
%
% \subsubsection{\XeLaTeX}
% \label{sec:xelatex}
% å¦‚æžœç”¨æˆ·æ—&nbsp;æ³•ä½¿ç”¨ä»¥ä¸Šä¸¤ç§è¾ƒä¸ºæ–¹ä¾¿çš„ç¼–è¯‘æ–¹æ³•ï¼Œå°±åªèƒ½æŒ‰ç…§ä»¥ä¸‹å¤æ‚çš„åŠžæ³•æ‰‹åŠ¨ç¼–è¯‘ã€‚
%
% é¦–å…ˆï¼Œæ›´æ–°æ¨¡æ¿ï¼š
% \begin{shell}
%   $ xetex thuthesis.ins                       # ç”Ÿæˆ thuthesis.cls
% \end{shell}
%
% ç„¶åŽï¼Œç”Ÿæˆè®ºæ–‡ä»¥åŠä¹¦è„Šï¼š
% \begin{shell}
%   $ xelatex thuthesis-example.tex
%   $ bibtex thuthesis-example.aux              # ç”Ÿæˆ bbl æ–‡ä»¶
%   $ bibtex thuthesis-example-appendix-a.aux   # é™„å½• A çš„çš„å‚è€ƒæ–‡çŒ®
%   $ bibtex thuthesis-example-appendix-b.aux   # é™„å½• B çš„çš„å‚è€ƒæ–‡çŒ®â€¦â€¦
%   $ bibtex thuthesis-example-index-1.aux      # æœ¬ç§‘ç”Ÿçš„ä¹¦é¢ç¿»è¯‘å¯¹åº”çš„åŽŸæ–‡ç´¢å¼•
%   $ xelatex thuthesis-example.tex             # è§£å†³å¼•ç”¨
%   $ xelatex thuthesis-example.tex             # ç”Ÿæˆè®ºæ–‡ PDF
%
%   $ xelatex spine.tex                         # ç”Ÿæˆä¹¦è„Š PDF
% \end{shell}
%
% ä¸‹é¢çš„å‘½ä»¤ç”¨æ¥ç”Ÿæˆç”¨æˆ·æ‰‹å†Œï¼š
% \begin{shell}
%   $ xelatex -shell-escape thuthesis.dtx
%   $ makeindex -s gind.ist -o thuthesis.ind thuthesis.idx
%   $ xelatex -shell-escape thuthesis.dtx
%   $ xelatex -shell-escape thuthesis.dtx  # ç”Ÿæˆè¯´æ˜Žæ–‡æ¡£ thuthesis.pdf
% \end{shell}
%
% \subsection{å‡çº§}
% \label{sec:upgrade}
% å¦‚æžœéœ€è¦å‡çº§ \thuthesis{}ï¼Œåº”å½“ä»Ž GitHub ä¸‹è½½æœ€æ–°çš„ç‰ˆæœ¬ï¼Œ
% å°† \file{thuthesis.dtx}ï¼Œ\file{thuthesis.ins}ï¼Œ\file{tsinghua-name-bachelor.pdf} å’Œ
% \file{thuthesis-*.bst} æ‹·è´è‡³å·¥ä½œç›®å½•è¦†ç›–ç›¸åº”çš„æ–‡ä»¶ï¼Œç„¶åŽæŒ‰ç…§
% ç¬¬~\ref{sec:generate-cls} èŠ‚çš„å†…å®¹ç”Ÿæˆæ–°çš„æ¨¡æ¿å’Œä½¿ç”¨è¯´æ˜Žã€‚
%
% æœ‰æ—¶æ¨¡æ¿å¯èƒ½è¿›è¡Œäº†é‡è¦çš„ä¿®æ”¹ï¼Œä¸å…¼å®¹å·²å†™å¥½çš„æ­£æ–‡å†…å®¹ï¼Œç”¨æˆ·åº”æŒ‰ç…§ç¤ºä¾‹
% æ–‡æ¡£é‡æ–°è°ƒæ•´ã€‚
%
% \section{ä½¿ç”¨è¯´æ˜Ž}
% \label{sec:usage}
% æœ¬æ‰‹å†Œå‡å®šç”¨æˆ·å·²ç»èƒ½å¤„ç†ä¸€èˆ¬çš„ \LaTeX{} æ–‡æ¡£ï¼Œå¹¶å¯¹ \hologo{BibTeX} æœ‰ä¸€å®šäº†è§£ã€‚å¦‚æžœ
% ä»ŽæœªæŽ¥è§¦è¿‡ \TeX{} å’Œ \LaTeXï¼Œå»ºè®®å…ˆå­¦ä¹&nbsp;ç›¸å…³çš„åŸºç¡€çŸ¥è¯†ã€‚
%
% \subsection{ç¤ºä¾‹æ–‡ä»¶}
% \label{sec:userguide}
%
% æ¨¡æ¿æ&nbsp;¸å¿ƒæ–‡ä»¶æœ‰ï¼š\file{thuthesis.cls}ï¼Œ\file{tsinghua-name-bachelor.pdf},
% \file{thuthesis-*.bst}ï¼ˆ\hologo{BibTeX}ï¼‰ï¼Œ
% \file{thuthesis-*.bbx} å’Œ \file{thuthesis-*.cbx}ï¼ˆBibLaTeXï¼‰ï¼Œ
% ä½†å¦‚æžœæ²¡æœ‰ç¤ºä¾‹æ–‡æ¡£ä¼šè¾ƒéš¾ä¸‹æ‰‹ï¼Œæ‰€ä»¥æŽ¨èä»Žæ¨¡æ¿è‡ªå¸¦çš„ç¤ºä¾‹æ–‡æ¡£å…¥æ‰‹ã€‚å…¶ä¸­åŒ…æ‹¬äº†è®ºæ–‡
% å†™ä½œç”¨åˆ°çš„æ‰€æœ‰å‘½ä»¤åŠå…¶ä½¿ç”¨æ–¹æ³•ï¼Œåªéœ€ç”¨è‡ªå·±çš„å†…å®¹è¿›è¡Œç›¸åº”æ›¿æ¢å°±å¯ä»¥ã€‚å¯¹äºŽä¸æ¸…
% æ¥šçš„å‘½ä»¤å¯ä»¥æŸ¥é˜…æœ¬æ‰‹å†Œã€‚ä¸‹é¢çš„ä¾‹å­æè¿°äº†æ¨¡æ¿ä¸­ç«&nbsp;èŠ‚çš„ç»„ç»‡å½¢å¼ï¼Œæ¥è‡ªäºŽç¤ºä¾‹æ–‡æ¡£ï¼Œ
% å…·ä½“å†…å®¹å¯ä»¥å‚è€ƒæ¨¡æ¿é™„å¸¦çš„ \file{thuthesis-example.tex} å’Œ \file{data/}ã€‚
%
% \subsection{è®ºæ–‡é€‰é¡¹}
% \label{sec:option}
%
% \subsubsection{å­¦ä½}
% \DescribeOption{degree}
% é€‰æ‹©å­¦ä½ï¼Œå¯é€‰ï¼š
% \option{bachelor}ï¼Œ\option{master}ï¼Œ\option{doctor}ï¼ˆé»˜è®¤ï¼‰ï¼Œ\option{postdoc}ã€‚
% æœ¬èŠ‚ä¸­çš„ \emph{key-value} é€‰é¡¹åªèƒ½åœ¨æ–‡æ¡£ç±»çš„é€‰é¡¹ä¸­è¿›è¡Œè®¾ç½®ï¼Œ
% ä¸èƒ½ç”¨äºŽ \cs{thusetup} å‘½ä»¤ã€‚
% \begin{latex}
%   % åšå£«è®ºæ–‡
%   \documentclass[degree=doctor]{thuthesis}
% \end{latex}
%
% \subsubsection{å­¦ä½ç±»åž‹}
% \label{sec:degree-type}
% \DescribeOption{degree-type}
% å®šä¹‰ç&nbsp;”ç©¶ç”Ÿå­¦ä½çš„ç±»åž‹ï¼Œå¯é€‰ï¼š\option{academic}ï¼ˆé»˜è®¤ï¼‰ã€\option{professional}ï¼Œ
% æœ¬ç§‘ç”Ÿä¸å—å½±å“ã€‚
% \begin{latex}
%   \documentclass[degree=master, degree-type=professional]{thuthesis}
% \end{latex}
%
% \subsubsection{å­—ä½“é…ç½®}
% \label{sec:font-config}
% \DescribeOption{fontset}
% æ¨¡æ¿é»˜è®¤ä¼šè‡ªåŠ¨æ&nbsp;¹æ®æ“ä½œç³»ç»Ÿé…ç½®åˆé€‚çš„å­—ä½“ï¼Œ
% ç”¨æˆ·ä¹Ÿå¯ä»¥é€šè¿‡ \option{fontset} æ—¶æŒ‡å®šä½¿ç”¨é¢„è®¾çš„å­—åº“ï¼Œå¦‚ï¼š
% \begin{latex}
%   \documentclass[fontset=windows]{thuthesis}
% \end{latex}
% å…è®¸çš„é€‰é¡¹æœ‰ \option{windows}ã€\option{mac}ã€\option{ubuntu} å’Œ \option{fandol}ï¼Œ
% å…·ä½“ä½¿ç”¨çš„å­—ä½“è§è¡¨~\ref{tab:fontset}ã€‚
% ç”¨æˆ·ä¹Ÿå¯ä»¥è®¾ç½®ä¸º \option{none} å¹¶è‡ªè¡Œé…ç½®å­—ä½“ã€‚
%
% \begin{table}[htb]
%   \centering
%   \caption{\thuthesis{} é¢„è®¾çš„å­—ä½“}
%   \label{tab:fontset}
%   \begin{tabular}{cccc}
%     \toprule
%     \option{windows} &amp; \option{mac}    &amp; \option{ubuntu} &amp; \option{fandol} \\
%     \midrule
%     Times New Roman  &amp; Times New Roman &amp; TeX Gyre Termes &amp; TeX Gyre Termes \\
%     Arial            &amp; Arial           &amp; TeX Gyre Heros  &amp; TeX Gyre Heros  \\
%     Courier          &amp; Menlo           &amp; TeX Gyre Cursor &amp; TeX Gyre Cursor \\
%     ä¸­æ˜“å®‹ä½“         &amp; åŽæ–‡å®‹ä½“        &amp; æ€æºå®‹ä½“        &amp; Fandol å®‹ä½“     \\
%     ä¸­æ˜“é»‘ä½“         &amp; åŽæ–‡é»‘ä½“        &amp; æ€æºé»‘ä½“        &amp; Fandol é»‘ä½“     \\
%     ä¸­æ˜“ä»¿å®‹         &amp; åŽæ–‡ä»¿å®‹        &amp; Fandol ä»¿å®‹     &amp; Fandol ä»¿å®‹     \\
%     ä¸­æ˜“æ¥·ä½“         &amp; åŽæ–‡æ¥·ä½“        &amp; Fandol æ¥·ä½“     &amp; Fandol æ¥·ä½“     \\
%     \bottomrule
%   \end{tabular}
% \end{table}
%
% éœ€è¦æ³¨æ„ï¼Œå»ºè®®ç”¨æˆ·åœ¨æäº¤ç»ˆç‰ˆå‰ä½¿ç”¨ Windows å¹³å°çš„å­—ä½“è¿›è¡Œç¼–è¯‘ã€‚
% è¿™æ&nbsp;·ä¸­æ–‡å­—ä½“åŒ Word æ¨¡æ¿ä¸€è‡´ã€‚
%
% å…³äºŽå­—ä½“çš„é…ç½®ï¼Œ
% è¯¦è§ \pkg{fontspec}ã€\pkg{xeCJK}ã€\pkg{ctex} ç­‰å®åŒ…çš„ä½¿ç”¨è¯´æ˜Žå’Œä»£ç&nbsp;ã€‚
%
% \DescribeOption{font}
% é…ç½®å…¨æ–‡ä½¿ç”¨çš„è¥¿æ–‡å­—ä½“ã€‚æ‰€æœ‰å¯é€‰é¡¹ç›®ä¸º \option{auto}ï¼ˆé»˜è®¤ï¼‰ã€\option{times}ã€\option{termes}ã€
% \option{stix}ã€\option{xits}ã€\option{libertinus}ã€\option{newcm}ã€\option{lm}ã€
% \option{newtx}ã€\option{none}ã€‚
% é€šå¸¸æ¥è¯´ï¼Œç”¨æˆ·\textbf{ä¸éœ€è¦}è°ƒæ•´æ­¤é€‰é¡¹ã€‚
%
% \DescribeOption{cjk-font}
% é…ç½®å…¨æ–‡ä½¿ç”¨çš„ä¸­æ–‡å­—ä½“ã€‚æ‰€æœ‰å¯é€‰é¡¹ä¸º \option{auto}ï¼ˆé»˜è®¤ï¼‰ã€\option{windows}ã€\option{windows-local}ã€
% \option{mac}ã€\option{mac-word}ã€\option{noto}ã€\option{fandol} å’Œ \option{none}ã€‚
% é€šå¸¸æ¥è¯´ï¼Œç”¨æˆ·\textbf{ä¸éœ€è¦}è°ƒæ•´æ­¤é€‰é¡¹ï¼Œæ¨¡æ¿ä¼šè‡ªåŠ¨é€šè¿‡ \option{fontset} é€‰é¡¹é€‰æ‹©åˆé€‚çš„å­—ä½“ã€‚
%
% \DescribeOption{windows-font-dir}
% é…ç½®æœç´¢ Windows å­—ä½“çš„è·¯å¾„ï¼Œä»…é€‚ç”¨äºŽ Overleaf ç­‰ä¸æ–¹ä¾¿å…¨å±€å®‰è£…å­—ä½“çš„çŽ¯å¢ƒã€‚å¦‚æžœæ­¤ç›®å½•ä¸‹èƒ½æ‰¾åˆ°ä¸­æ˜“å®‹ä½“ï¼Œ
% åˆ™å°†è‡ªåŠ¨ä½¿ç”¨è¿™äº›å­—ä½“ç¼–è¯‘ã€‚å¦‚æœ‰å¯èƒ½ï¼Œå§‹ç»ˆå»ºè®®å…¨å±€å®‰è£…ç›¸åº”å­—ä½“ï¼Œæ¨¡æ¿èƒ½å¤Ÿè‡ªåŠ¨æ£€æµ‹ã€‚
%
% \subsection{è®ºæ–‡è®¾ç½®}
% è®ºæ–‡çš„è®¾ç½®å¯ä»¥é€šè¿‡ç»Ÿä¸€å‘½ä»¤ \cs{thusetup} è®¾ç½® \emph{key=value} å½¢å¼å®Œæˆã€‚
%
% \DescribeMacro{\thusetup}
% \cs{thusetup} ç”¨æ³•ä¸Žå¸¸è§ \emph{key=value} å‘½ä»¤ç›¸åŒï¼Œå¦‚ä¸‹ï¼š
% \begin{latex}
%   \thusetup{
%     key1 = value1,
%     key2 = {a value, with comma},
%   }
%   % å¯ä»¥å¤šæ¬¡è°ƒç”¨
%   \thusetup{
%     key3 = value3,
%     key1 = value11,  % è¦†ç›– value1
%   }
% \end{latex}
%
% \note[æ³¨æ„ï¼š]{\cs{thusetup} ä½¿ç”¨ \pkg{kvsetkeys} æœºåˆ¶ï¼Œæ‰€ä»¥é…ç½®é¡¹ä¹‹é—´ä¸èƒ½æœ‰ç©ºè¡Œï¼Œå¦åˆ™
% ä¼šæŠ¥é”™ã€‚}
%
% \subsubsection{è¾“å‡ºæ&nbsp;¼å¼}
% \DescribeOption{output}
% é€‰æ‹©è¾“å‡ºçš„æ&nbsp;¼å¼æ˜¯æ‰“å°ç‰ˆè¿˜æ˜¯ç”µå­ç‰ˆï¼ˆç”¨äºŽæäº¤ï¼‰ï¼Œå¯é€‰ï¼š\option{print}ï¼ˆé»˜è®¤ï¼‰ã€\option{electronic}ã€‚
% æ‰“å°ç‰ˆ \option{print} è‡ªåŠ¨åœ¨å•é¢æ‰“å°çš„éƒ¨åˆ†æ’å…¥ç©ºç™½é¡µï¼ˆæ¯”å¦‚å°é¢ï¼‰ï¼Œå¹¶ä¸”ä¿è¯æ­£æ–‡ç¬¬ 1 é¡µåœ¨å³ä¾§ã€‚
% ç”µå­ç‰ˆ \option{electronic} é€‰é¡¹ä¼šåŽ»æŽ‰ç©ºç™½é¡µï¼Œè¿™æ˜¯å›&nbsp;ä¸ºä¸€äº›é™¢ç³»è¦æ±‚æäº¤çš„ç”µå­ç‰ˆä¸å«ç©ºç™½é¡µã€‚
%
% \begin{latex}
%   \thusetup{
%     output = electronic,
%   }
% \end{latex}
%
% å¦å¤–æœ¬ç§‘ç”Ÿè¦æ±‚æœ‰ 0.2cm ç•™ç»™è£…è®¢çº¿çš„å®½åº¦ï¼Œè¿™åªæœ‰åœ¨æ‰“å°ç‰ˆä¸­æ‰ä¼šç”Ÿæ•ˆã€‚
%
%
% \subsubsection{ä¹¦å†™è¯­è¨€}
% \DescribeOption{language}
% åœ¨å¯¼è¨€åŒºè®¾ç½® \option{language} ä¼šä¿®æ”¹è®ºæ–‡çš„ä¸»è¦è¯­è¨€ï¼Œå¦‚ç«&nbsp;èŠ‚æ&nbsp;‡é¢˜ç­‰ã€‚
% åœ¨æ­£æ–‡ä¸­è®¾ç½® \option{language} åªä¿®æ”¹æŽ¥ä¸‹æ¥éƒ¨åˆ†çš„ä¹¦å†™è¯­è¨€ï¼Œ
% å¦‚æ&nbsp;‡ç‚¹æ&nbsp;¼å¼ã€å›¾è¡¨åç§°ï¼Œä½†ä¸å½±å“ç«&nbsp;èŠ‚æ&nbsp;‡é¢˜ç­‰ã€‚
%
% \begin{latex}
%   \thusetup{
%     language = english,
%   }
% \end{latex}
%
% è®ºæ–‡çš„ä¸€äº›éƒ¨åˆ†ï¼ˆå¦‚è‹±æ–‡æ‘˜è¦ã€æœ¬ç§‘ç”Ÿçš„å¤–æ–‡è°ƒç&nbsp;”æŠ¥å‘Šï¼‰è¦æ±‚ä½¿ç”¨ç‰¹å®šçš„è¯­è¨€ï¼Œ
% æ¨¡æ¿å·²ç»è¿›è¡Œé…ç½®ï¼Œå¹¶åœ¨è¿™äº›éƒ¨åˆ†ç»“æŸåŽè‡ªåŠ¨æ¢å¤ä¸ºä¸»è¦è¯­è¨€ã€‚
%
% æ³¨æ„ï¼Œæœ¬ç§‘ç”Ÿã€Šå†™ä½œè§„èŒƒã€‹è¦æ±‚â€œæœ¬ç§‘ç”Ÿï¼ˆå«å›½å¤–æ¥åŽç•™å­¦æœ¬ç§‘ç”Ÿï¼‰éžå¤–è¯­ä¸“ä¸šè®ºæ–‡ç»Ÿä¸€è¦æ±‚
% ç”¨ä¸­æ–‡ä¹¦å†™ã€‚â€ç&nbsp;”ç©¶ç”Ÿã€Šå†™ä½œæŒ‡å—ã€‹è¦æ±‚â€œå¤–å›½äººæ¥åŽç•™å­¦ç”Ÿå¯ä»¥ç”¨è‹±æ–‡æ’°å†™å­¦ä½è®ºæ–‡ï¼Œä½†
% é¡»é‡‡ç”¨ä¸­æ–‡å°é¢â€ï¼Œâ€œé™¤ç•™å­¦ç”Ÿå¤–ï¼Œå­¦ä½è®ºæ–‡ä¸€å¾‹é¡»ç”¨æ±‰è¯­ä¹¦å†™â€ï¼Œç”¨æˆ·é¡»æå‰ä¸Žå¯¼å¸ˆå’Œé™¢ç³»
% çš„å®¡æŸ¥æ•™å¸ˆåå•†ä½¿ç”¨ä½•ç§è¯­è¨€ä¹¦å†™è®ºæ–‡ã€‚
%
% \subsubsection{å¼€é¢˜æŠ¥å‘Š}
% \DescribeOption{thesis-type}
% æ¨¡æ¿è¿˜æ”¯æŒæœ¬ç§‘ç”Ÿã€ç&nbsp;”ç©¶ç”Ÿè®ºæ–‡å¼€é¢˜æŠ¥å‘Šçš„æ&nbsp;¼å¼ï¼Œå¯ä»¥é€šè¿‡è®¾ç½® \option{thesis-type=proposal} å¾—åˆ°ã€‚
%
% å¼€é¢˜æŠ¥å‘Šä¸Žå­¦ä½è®ºæ–‡æœ‰ä¸¤ç‚¹ä¸åŒï¼š
% \begin{enumerate}
%   \item å°é¢çš„ä¿¡æ¯å’Œæ&nbsp;¼å¼æœ‰åŒºåˆ«ï¼Œå°¤å…¶æ˜¯å¢žåŠ&nbsp;äº†ä¸€è¡Œâ€œå­¦å·â€ä¿¡æ¯ï¼Œéœ€è¦é€šè¿‡ \option{student-id} å¡«å†™ï¼›
%   \item å¼€é¢˜æŠ¥å‘Šä¸å«è‹±æ–‡æ&nbsp;‡é¢˜é¡µã€‚
% \end{enumerate}
% \begin{latex}
%   \thusetup{
%     thesis-type = proposal,
%     student-id  = {2000310000},
%   }
% \end{latex}
%
% \subsection{å°é¢ä¿¡æ¯}
% \label{sec:titlepage}
% å°é¢ä¿¡æ¯å¯ä»¥é€šè¿‡ç»Ÿä¸€è®¾ç½®å‘½ä»¤ \cs{thusetup} è®¾ç½® \emph{key=value} å½¢å¼å®Œæˆï¼›
% å¸¦ * å·çš„é”®é€šå¸¸æ˜¯å¯¹åº”çš„è‹±æ–‡ã€‚
%
% \subsubsection{è®ºæ–‡æ&nbsp;‡é¢˜}
% ä¸­è‹±æ–‡æ&nbsp;‡é¢˜ã€‚å¯ä»¥åœ¨æ&nbsp;‡é¢˜å†…éƒ¨ä½¿ç”¨æ¢è¡Œ|\\|ã€‚
% \begin{latex}
%   \thusetup{
%     title  = {è®ºæ–‡ä¸­æ–‡é¢˜ç›®},
%     title* = {Thesis English Title},
%   }
% \end{latex}
%
% \subsubsection{ç”³è¯·å­¦ä½åç§°}
% \label{sec:degree-category}
% å­¦ä½åç§°çš„è®¾ç½®æ¯”è¾ƒå¤æ‚ï¼Œè§è¡¨~\ref{tab:degree-category}ã€‚
%
% \begin{table}[h]
%   \caption{å­¦ä½åç§°çš„è¦æ±‚}
%   \label{tab:degree-category}
%   \begin{tabular}{p{2cm}p{6cm}p{6cm}}
%     \toprule
%     å­¦ä½ç±»åž‹ &amp; degree-category &amp; degree-category* \\
%     \midrule
%     å­¦æœ¯åž‹åšå£« &amp; éœ€æ³¨æ˜Žæ‰€å±žçš„å­¦ç§‘é—¨ç±»ï¼Œä¾‹å¦‚ï¼š
%         å“²å­¦ã€ç»æµŽå­¦ã€æ³•å­¦ã€æ•™è‚²å­¦ã€æ–‡å­¦ã€åŽ†å²å­¦ã€ç†å­¦ã€å·¥å­¦ã€å†œå­¦ã€åŒ»å­¦ã€
%         å†›äº‹å­¦ã€ç®¡ç†å­¦ã€è‰ºæœ¯å­¦
%       &amp; Doctor of Philosophy \\
%     \midrule
%     å­¦æœ¯åž‹ç¡•å£« &amp; åŒä¸Š
%       &amp; å“²å­¦ã€æ–‡å­¦ã€åŽ†å²å­¦ã€æ³•å­¦ã€æ•™è‚²å­¦ã€è‰ºæœ¯å­¦é—¨ç±»
%         å¡«å†™â€œMaster of Artsâ€œï¼Œå…¶å®ƒå¡«å†™â€œMaster of Scienceâ€ \\
%     \midrule
%     ä¸“ä¸šåž‹ç&nbsp;”ç©¶ç”Ÿå­¦ä½ &amp; ä¸“ä¸šå­¦ä½çš„åç§°ï¼Œä¾‹å¦‚ï¼šæ•™è‚²åšå£«ã€å·¥ç¨‹ç¡•å£«
%       &amp; ä¸“ä¸šå­¦ä½çš„åç§°ï¼Œä¾‹å¦‚ï¼šDoctor of Education, Master of Engineering \\
%     \midrule
%     æœ¬ç§‘ç”Ÿ &amp; - &amp; - \\
%     \bottomrule
%   \end{tabular}
% \end{table}
%
% \begin{latex}
%   \thusetup{
%     degree-category  = {å·¥å­¦ç¡•å£«},
%     degree-category* = {Master of Science},
%   }
% \end{latex}
%
% \subsubsection{é™¢ç³»åç§°}
% é™¢ç³»åç§°ã€‚
% \begin{latex}
%   \thusetup{
%     department = {è®¡ç®—æœºç§‘å­¦ä¸ŽæŠ€æœ¯ç³»},
%   }
% \end{latex}
%
% \subsubsection{å­¦ç§‘åç§°}
%
% \begin{itemize}
%   \item ç&nbsp;”ç©¶ç”Ÿå­¦æœ¯åž‹å­¦ä½ï¼šèŽ·å¾—ä¸€çº§å­¦ç§‘æŽˆæƒçš„å­¦ç§‘å¡«å†™ä¸€çº§å­¦ç§‘åç§°ï¼Œå…¶ä»–å¡«å†™äºŒçº§å­¦ç§‘åç§°ï¼›
%   \item æœ¬ç§‘ç”Ÿï¼šä¸“ä¸šåç§°ï¼Œç¬¬äºŒå­¦ä½è®ºæ–‡éœ€æ&nbsp;‡æ³¨â€œï¼ˆç¬¬äºŒå­¦ä½ï¼‰â€ã€‚
% \end{itemize}
%
% \begin{latex}
%   \thusetup{
%     discipline  = {å­¦ç§‘åç§°},
%     discipline* = {Discipline in English},
%   }
% \end{latex}
%
% \subsubsection{ä¸“ä¸šé¢†åŸŸ}
%
% ä»…ç”¨äºŽç&nbsp;”ç©¶ç”Ÿä¸“ä¸šåž‹å­¦ä½ã€‚
%
% \begin{itemize}
%   \item è®¾ç½®ä¸“ä¸šé¢†åŸŸçš„ä¸“ä¸šå­¦ä½ç±»åˆ«ï¼Œå¡«å†™ç›¸åº”ä¸“ä¸šé¢†åŸŸåç§°ï¼›
%   \item 2019 çº§åŠä¹‹å‰å·¥ç¨‹ç¡•å£«å­¦ä½è®ºæ–‡ï¼Œåœ¨ \option{engineering-field} å¡«å†™ç›¸åº”å·¥ç¨‹é¢†åŸŸåç§°ï¼›
%   \item å…¶ä»–ä¸“ä¸šå­¦ä½ç±»åˆ«çš„å­¦ä½è®ºæ–‡æ—&nbsp;éœ€æ­¤ä¿¡æ¯ã€‚
% \end{itemize}
%
% \begin{latex}
%   \thusetup{
%     professional-field  = {è®¡ç®—æœºæŠ€æœ¯},
%     professional-field* = {Computer Technology},
%   }
% \end{latex}
%
%
% \subsubsection{ä½œè€…å§“å}
% ä½œè€…å§“åã€‚
% \begin{latex}
%   \thusetup{
%     author  = {ä¸­æ–‡å§“å},
%     author* = {Name in Pinyin},
%   }
% \end{latex}
%
% \subsubsection{å­¦å·}
% å­¦å·ï¼Œä»…ç”¨äºŽæœ¬ã€ç&nbsp;”è®ºæ–‡å¼€é¢˜æŠ¥å‘Šã€‚
% \begin{latex}
%   \thusetup{
%     student-id  = {20000310000},
%   }
% \end{latex}
%
% \subsubsection{å¯¼å¸ˆ}
% \myentry{å¯¼å¸ˆ}
% å¯¼å¸ˆçš„å§“åä¸ŽèŒç§°ä¹‹é—´ä»¥â€œ,â€ï¼ˆè¥¿æ–‡é€—å·ï¼ŒU+002Cï¼‰éš”å¼€ï¼Œä¸‹åŒã€‚
% \begin{latex}
%   \thusetup{
%     supervisor  = {å¯¼å¸ˆå§“å, æ•™æŽˆ},
%     supervisor* = {Professor Supervisor Name},
%   }
% \end{latex}
%
% \myentry{å‰¯å¯¼å¸ˆ}
% æœ¬ç§‘ç”Ÿçš„è¾…å¯¼æ•™å¸ˆï¼Œç¡•å£«çš„å‰¯æŒ‡å¯¼æ•™å¸ˆã€‚
% \begin{latex}
%   \thusetup{
%     associate-supervisor  = {å‰¯å¯¼å¸ˆå§“å, å‰¯æ•™æŽˆ},
%     associate-supervisor* = {Professor Assoc-Supervisor Name},
%   }
% \end{latex}
%
% \myentry{è”åˆæŒ‡å¯¼æ•™å¸ˆ}
% \begin{latex}
%   \thusetup{
%     co-supervisor  = {è”åˆæŒ‡å¯¼æ•™å¸ˆå§“å, æ•™æŽˆ},
%     co-supervisor* = {Professor Join-Supervisor Name},
%   }
% \end{latex}
%
% \subsubsection{æˆæ–‡æ—¥æœŸ}
% é»˜è®¤ä¸ºå½“å‰æ—¥æœŸï¼Œä¹Ÿå¯ä»¥è‡ªå·±æŒ‡å®šï¼Œè¦æ±‚ä½¿ç”¨ ISO æ&nbsp;¼å¼ã€‚
% \begin{latex}
%   \thusetup{
%     date = {2011-07-01},
%   }
% \end{latex}
%
% \subsubsection{å¯†çº§}
% \label{sec:setup-secret}
% å®šä¹‰ç§˜å¯†çº§åˆ«å’Œå¹´é™ã€‚å¦‚æžœå®šä¹‰äº† \option{secret-level}ï¼Œ
% åˆ™ä¼šåœ¨å°é¢ä¸Šæ˜¾ç¤ºå¯¹åº”å¯†çº§ï¼Œå¹¶ä¸”ä»Žå£°æ˜Žé¡µä¸­å°†ç§»é™¤â€œä¸åŒ…å«æ¶‰åŠå›½å®¶ç§˜å¯†çš„å†…å®¹â€å­—æ&nbsp;·ï¼ˆ2025å¹´3æœˆå†™ä½œæŒ‡å—æ›´æ–°æœ‰æ­¤è¦æ±‚ï¼‰ã€‚
% \begin{latex}
%   \thusetup{
%     secret-year  = 10,
%     secret-level = {ç§˜å¯†},
%   }
% \end{latex}
%
% \subsubsection{åšå£«åŽä¸“ç”¨å‚æ•°}
% \begin{latex}
%   \thusetup{
%     clc                = {åˆ†ç±»å·},
%     udc                = {udc},
%     id                 = {id},
%     discipline-level-1 = {æµåŠ¨ç«™ï¼ˆä¸€çº§å­¦ç§‘ï¼‰åç§°},
%     discipline-level-2 = {ä¸“ä¸šï¼ˆäºŒçº§å­¦ç§‘ï¼‰åç§°},
%     start-date         = {2011-07-01}, % ç&nbsp;”ç©¶å·¥ä½œèµ·å§‹æ—¶é—´
%   }
% \end{latex}
%
% \myentry{ç”Ÿæˆå°é¢}
% \DescribeMacro{\maketitle}
% ç”Ÿæˆå°é¢ï¼Œä¸å«æŽˆæƒè¯´æ˜Žï¼Œæ‘˜è¦ç­‰ã€‚
% \begin{latex}
%   % ç›´æŽ¥ç”Ÿæˆå°é¢
%   \maketitle
% \end{latex}
%
% \subsection{å‰è¨€éƒ¨åˆ†}
%
% \subsubsection{æŒ‡å¯¼å°ç»„ã€å…¬å¼€è¯„é˜…äººå’Œç­”è¾©å§”å‘˜ä¼šåå•}
% \myentry{ç­”è¾©å§”å‘˜ä¼šåå•}
% \DescribeEnv{committee}
% å­¦ä½è®ºæ–‡æŒ‡å¯¼å°ç»„ã€å…¬å¼€è¯„é˜…äººå’Œç­”è¾©å§”å‘˜ä¼šåå•å¯ä»¥ç”± \env{committee} çŽ¯å¢ƒç”Ÿæˆï¼Œ
% å…¶ä¸­çš„å¯é€‰å‚æ•°å¯ä»¥ä½¿ç”¨ \option{name} æ&nbsp;¹æ®æ˜¯æœ‰æ—&nbsp;æŒ‡å¯¼å°ç»„è®¾ç½®åˆé€‚çš„æ&nbsp;‡é¢˜ï¼Œæ¯”å¦‚
% \begin{latex}
%   \begin{committee}[name={å­¦ä½è®ºæ–‡å…¬å¼€è¯„é˜…äººå’Œç­”è¾©å§”å‘˜ä¼šåå•}]
%     ...
%   \end{committee}
% \end{latex}
%
% ç­”è¾©å§”å‘˜ä¼šåå•ä¸­çš„è¡¨æ&nbsp;¼ä½¿ç”¨ LaTeX ç”Ÿæˆå¯èƒ½ç•¥éº»çƒ¦ï¼Œä¹Ÿå¯ä»¥å¯¼å…¥ Word ç‰ˆè½¬æˆçš„ PDF æ–‡ä»¶ï¼Œ
% \begin{latex}
%   \begin{committee}[file=figures/committee.pdf]
%   \end{committee}
% \end{latex}
%
% \subsubsection{æŽˆæƒè¯´æ˜Ž}
% \myentry{æŽˆæƒè¯´æ˜Ž}
% \DescribeMacro{\copyrightpage}
% å¯é€‰å‚æ•°ä¸ºæ‰«æå¾—åˆ°çš„ PDF æ–‡ä»¶åï¼Œä¾‹å¦‚ï¼š
% \begin{latex}
%   % å°†ç­¾å­—æ‰«æåŽæŽˆæƒæ–‡ä»¶ scan-copyright.pdf æ›¿æ¢åŽŸå§‹é¡µé¢
%   \copyrightpage[file=scan-copyright.pdf]
% \end{latex}
%
% \subsubsection{æ‘˜è¦}
% \myentry{æ‘˜è¦æ­£æ–‡}
% \DescribeEnv{abstract}
% \DescribeEnv{abstract*}
%
% æ‘˜è¦ç›´æŽ¥åœ¨æ­£æ–‡ä¸­ä½¿ç”¨ \env{abstract}ã€\env{abstract*} çŽ¯å¢ƒç”Ÿæˆã€‚
%
% \begin{latex}
%   \begin{abstract}
%     æ‘˜è¦è¯·å†™åœ¨è¿™é‡Œ...
%   \end{abstract}
%
%   \begin{abstract*}
%     Here comes the abstract in English...
%   \end{abstract*}
% \end{latex}
%
% \myentry{å…³é”®è¯}
% å…³é”®è¯éœ€è¦ä½¿ç”¨ \cs{thusetup} è¿›è¡Œè®¾ç½®ã€‚å…³é”®è¯ä¹‹é—´ä»¥\emph{è¥¿æ–‡é€—å·}éš”å¼€ï¼Œæ¨¡æ¿ä¼š
% è‡ªåŠ¨è°ƒæ•´ä¸ºè¦æ±‚çš„æ&nbsp;¼å¼ã€‚å…³é”®è¯çš„è®¾ç½®åªè¦åœ¨æ‘˜è¦çŽ¯å¢ƒç»“æŸå‰å³å¯ã€‚
% \begin{latex}
%   \thusetup{
%     keywords  = {å…³é”®è¯ 1, å…³é”®è¯ 2},
%     keywords* = {keyword 1, keyword 2},
%   }
% \end{latex}
%
% \subsubsection{ç›®å½•å’Œç´¢å¼•è¡¨}
% ç›®å½•ã€æ’å›¾ã€è¡¨æ&nbsp;¼ã€å…¬å¼å’Œç®—æ³•ç­‰ç´¢å¼•å‘½ä»¤åˆ†åˆ«å¦‚ä¸‹ï¼Œå°†å…¶æ’å…¥åˆ°æœŸæœ›çš„ä½ç½®å³å¯ï¼ˆå¸¦*çš„å‘½ä»¤è¡¨
% ç¤ºå¯¹åº”çš„ç´¢å¼•è¡¨ä¸ä¼šå‡ºçŽ°åœ¨ç›®å½•ä¸­ï¼‰ï¼š
%
% \DescribeMacro{\tableofcontents}
% \DescribeMacro{\listoffigures}
% \DescribeMacro{\listoftables}
% \DescribeMacro{\listoffiguresandtables}
% \DescribeMacro{\listofalgorithms}
% \begin{longtable}{ll}
% \toprule
%   {\heiti ç”¨é€”} &amp; {\heiti å‘½ä»¤} \\\midrule
% ç›®å½•     &amp; \cs{tableofcontents} \\
% æ’å›¾æ¸…å• &amp; \cs{listoffigures}   \\
% é™„è¡¨æ¸…å• &amp; \cs{listoftables}    \\
% æ’å›¾å’Œé™„è¡¨æ¸…å• &amp; \cs{listoffiguresandtables} \\
% ç®—æ³•æ¸…å• &amp; \cs{listofalgorithms} \\
% \bottomrule
% \end{longtable}
%
% \LaTeX{} é»˜è®¤æ”¯æŒæ’å›¾å’Œè¡¨æ&nbsp;¼ç´¢å¼•ï¼Œæ˜¯é€šè¿‡ \cs{caption} å‘½ä»¤å®Œæˆçš„ï¼Œå›&nbsp;æ­¤å®ƒä»¬å¿…é¡»å‡º
% çŽ°åœ¨æµ®åŠ¨çŽ¯å¢ƒä¸­ï¼Œå¦åˆ™ä¸è¢«è®¡æ•°ã€‚
%
% å¦‚æžœä¸æƒ³è®©æŸä¸ªè¡¨æ&nbsp;¼æˆ–è€…å›¾ç‰‡å‡ºçŽ°åœ¨ç´¢å¼•é‡Œé¢ï¼Œé‚£ä¹ˆè¯·ä½¿ç”¨å‘½ä»¤ \cs{caption*}ï¼Œè¿™
% ä¸ªå‘½ä»¤ä¸ä¼šç»™è¡¨æ&nbsp;¼ç¼–å·ï¼Œä¹Ÿå°±æ˜¯å‡ºæ¥çš„åªæœ‰æ&nbsp;‡é¢˜æ–‡å­—è€Œæ²¡æœ‰â€œè¡¨~xxâ€ï¼Œâ€œå›¾~xxâ€ï¼Œå¦åˆ™
% ç´¢å¼•é‡Œé¢åºå·ä¸è¿žç»­å°±æ˜¾å¾—ä¸ä¼¦ä¸ç±»ï¼Œè¿™ä¹Ÿæ˜¯ \LaTeX{} é‡Œæ˜Ÿå·å‘½ä»¤é»˜è®¤çš„è§„åˆ™ã€‚
%
% å¦‚æžœçš„ç¡®æƒ³è®©å…¶ç¼–å·ï¼Œä½†åˆä¸æƒ³å‡ºçŽ°åœ¨ç´¢å¼•ä¸­çš„è¯ï¼Œç›®å‰æ¨¡æ¿æš‚ä¸æ”¯æŒã€‚
%
% \subsubsection{ç¬¦å·å¯¹ç…§è¡¨}
% \DescribeEnv{denotation}
% ä¸»è¦ç¬¦å·è¡¨çŽ¯å¢ƒï¼Œè·Ÿ \env{description} ç±»ä¼¼ï¼Œä½¿ç”¨æ–¹æ³•å‚è§ç¤ºä¾‹æ–‡ä»¶ã€‚å¸¦ä¸€ä¸ªå¯é€‰å‚æ•°ï¼Œ
% ç”¨æ¥æŒ‡å®šç¬¦å·åˆ—çš„å®½åº¦ï¼ˆé»˜è®¤ä¸º 2.5cmï¼‰ã€‚
% \begin{latex}
%   \begin{denotation}
%     \item[E] èƒ½é‡
%     \item[m] è´¨é‡
%     \item[c] å…‰é€Ÿ
%   \end{denotation}
% \end{latex}
%
% å¦‚æžœé»˜è®¤ç¬¦å·åˆ—çš„å®½åº¦ä¸æ»¡æ„ï¼Œå¯ä»¥é€šè¿‡å‚æ•°æ¥è°ƒæ•´ï¼š
% \begin{latex}
%   \begin{denotation}[1.5cm] % è®¾ç½®ä¸º 1.5cm
%     \item[E] èƒ½é‡
%     \item[m] è´¨é‡
%     \item[c] å…‰é€Ÿ
%   \end{denotation}
% \end{latex}
%
% ç¬¦å·å¯¹ç…§è¡¨çš„å¦å¤–ä¸€ç§æ–¹æ³•æ˜¯è°ƒç”¨ \pkg{nomencl} å®åŒ…ï¼Œéœ€è¦åœ¨å¯¼è¨€åŒºè®¾ç½®ï¼š
%
% \begin{latex}
%   \usepackage{nomencl}
%   \makenomenclature
% \end{latex}
%
% ç„¶åŽåœ¨æ­£æ–‡ä¸­ä»»æ„ä½ç½®ä½¿ç”¨ \cs{nomenclature} å£°æ˜Žéœ€è¦æ·»åŠ&nbsp;åˆ°ä¸»è¦ç¬¦å·è¡¨çš„ç¬¦å·ï¼š
%
% \begin{latex}
%   \nomenclature{$m$}{The mass of one angel}
% \end{latex}
%
% æœ€åŽä½¿ç”¨ \cs{printnomenclature} å‘½ä»¤ç”Ÿæˆç¬¦å·è¡¨ã€‚æ›´è¯¦ç»†çš„ä½¿ç”¨æ–¹æ³•å‚
% è§ \pkg{nomencl} å®åŒ…çš„æ–‡æ¡£ã€‚
%
% \subsection{æ­£æ–‡éƒ¨åˆ†}
% \subsubsection{å›¾è¡¨ç¼–å·}
% \DescribeOption{figure-number-separator}
% \DescribeOption{table-number-separator}
% \DescribeOption{equation-number-separator}
% ç&nbsp;”ç©¶ç”Ÿè¦æ±‚å›¾è¡¨å’Œå…¬å¼çš„ç¼–å·ä½¿ç”¨â€œ.â€æˆ–â€œ-â€è¿žæŽ¥ï¼Œæ¨¡æ¿é»˜è®¤ä½¿ç”¨å¥ç‚¹â€œ.â€ã€‚
% ç”¨æˆ·ä¹Ÿå¯ä»¥é€šè¿‡ \option{figure-number-separator}ã€\option{table-number-separator}
% ç­‰é€‰é¡¹åˆ†åˆ«è®¾ç½®ï¼š
% \begin{latex}
%   \thusetup{
%     figure-number-separator = {-},
%     table-number-separator = {-},
%     equation-number-separator = {-},
%   }
% \end{latex}
% \DescribeOption{number-separator}
% ä¹Ÿå¯ä»¥ä½¿ç”¨ \option{number-separator} åŒæ—¶è®¾ç½®å›¾ã€è¡¨ã€å…¬å¼ä¸‰é¡¹çš„ç¼–å·è¿žæŽ¥ç¬¦ï¼Œ
% æ¯”å¦‚ |\thusetup{number-separator = -}|ã€‚
%
% æœ¬ç§‘ç”Ÿè¦æ±‚â€œé™„å½•ä¸­å›¾ã€è¡¨ã€å…¬å¼çš„ç¼–å·ï¼Œåº”ä¸Žæ­£æ–‡ä¸­çš„ç¼–å·åŒºåˆ†å¼€â€ï¼Œ
% åº”ç†è§£ä¸ºå°†ç«&nbsp;å·æ”¹å˜ä¸ºé™„å½•å¯¹åº”çš„å¤§å†™å­—æ¯ç¼–å·ï¼Œè¿žæŽ¥ç¬¦ä¸å®œæ”¹å˜ã€‚
%
% \subsubsection{æ•°å­¦ç¬¦å·}
% \label{sec:math}
% ä¸­æ–‡è®ºæ–‡çš„æ•°å­¦ç¬¦å·é»˜è®¤éµå¾ª GB/T 3102.11â€”1993ã€Šç‰©ç†ç§‘å­¦å’ŒæŠ€æœ¯ä¸­ä½¿ç”¨çš„æ•°å­¦ç¬¦å·ã€‹
% \footnote{åŽŸ GB 3102.11â€”1993ï¼Œè‡ª 2017 å¹´ 3 æœˆ 23 æ—¥èµ·ï¼Œè¯¥æ&nbsp;‡å‡†è½¬ä¸ºæŽ¨èæ€§æ&nbsp;‡å‡†ã€‚}ã€‚
% è¯¥æ&nbsp;‡å‡†å‚ç…§é‡‡çº³ ISO 31-11:1992 \footnote{ç›®å‰å·²æ›´æ–°ä¸º ISO 80000-2:2019ã€‚}ï¼Œ
% ä½†æ˜¯ä¸Ž \TeX{} é»˜è®¤çš„ç¾Žå›½æ•°å­¦å­¦ä¼šï¼ˆAMSï¼‰çš„ä¹&nbsp;æƒ¯æœ‰è®¸å¤šå·®å¼‚ã€‚
% è¿™å°†åœ¨ä¸‹æ–‡è¯¦ç»†è®ºè¿°ã€‚
%
% \DescribeOption{math-style}
% ç”¨æˆ·å¯ä»¥é€šè¿‡è®¾ç½® \option{math-style} é€‰æ‹©æ•°å­¦ç¬¦å·æ&nbsp;·å¼ï¼ˆå¯é€‰ï¼š
% \option{GB}ï¼ˆä¸­æ–‡é»˜è®¤ï¼‰ï¼Œ\option{TeX}ï¼ˆè‹±æ–‡é»˜è®¤ï¼‰å’Œ \option{ISO}ï¼‰ï¼Œæ¯”å¦‚ï¼š
% \begin{latex}
%   \thusetup{
%     math-style = TeX,
%   }
% \end{latex}
%
% ç”¨æˆ·ä¹Ÿå¯ä»¥é€é¡¹ä¿®æ”¹æ•°å­¦æ&nbsp;·å¼ï¼ŒåŒ…æ‹¬ï¼š
% \newcommand\dif{\mathop{}\!\mathrm{d}}
% \begin{enumerate}
%   \item \DescribeOption{uppercase-greek}
%     å¤§å†™å¸Œè…Šå­—æ¯çš„æ­£/æ–œä½“ï¼Œå¯é€‰ï¼š\option{italic}ã€\option{upright}ã€‚
%     æœ‰é™å¢žé‡ç¬¦å· $\increment x$ å›ºå®šä½¿ç”¨æ­£ä½“ï¼ŒæŽ¨èä½¿ç”¨ \cs{increment} è¡¨ç¤ºã€‚
%   \item \DescribeOption{less-than-or-equal}
%     å°äºŽç­‰äºŽå·å’Œå¤§äºŽç­‰äºŽå·çš„å­—å½¢ï¼Œå¯é€‰ï¼š\option{slanted}ã€\option{horizontal}ã€‚
%     è¿™å°†æŽ§åˆ¶ \cs{le}ã€\cs{ge}ã€\cs{leq} å’Œ \cs{geq} çš„ç¬¦å·
%     æ˜¯â€œ$\leqslant$ã€$\geqslant$â€è¿˜æ˜¯â€œ$\leq$ã€$\geq$â€ã€‚
%   \item \DescribeOption{integral}
%     ç§¯åˆ†å·çš„æ­£/æ–œä½“ï¼Œå¯é€‰ï¼š\option{upright}ã€\option{slanted}ã€‚
%     è¯¥é€‰é¡¹éœ€è¦å­—ä½“çš„æ”¯æŒï¼Œç›®å‰ä»…é™ \option{xits}ã€\option{stix}ã€
%     \option{libertinus} å’Œ \option{newcm}ã€‚å‚è€ƒä¸‹æ–‡å…³äºŽæ•°å­¦å­—ä½“çš„é€‰æ‹©ã€‚
%   \item \DescribeOption{integral-limits}
%     ç§¯åˆ†å·ä¸Šä¸‹é™çš„ä½ç½®ï¼Œå¯é€‰ï¼š\option{true}ï¼ˆåœ¨ä¸Šä¸‹ï¼‰ã€\option{false}ï¼ˆåœ¨å³ä¾§ï¼‰ã€‚
%     è¿™ä¸ªè®¾ç½®åªå½±å“è¡Œé—´å…¬å¼ï¼Œè¡Œå†…å…¬å¼ç»Ÿä¸€å±…å³ä¾§ï¼Œä¸å—å½±å“ã€‚
%   \item \DescribeOption{partial}
%     åå¾®åˆ†ç¬¦å·çš„æ­£/æ–œä½“ï¼Œå¯é€‰ï¼š\option{upright}ã€\option{italic}ã€‚
%   \item \DescribeOption{math-ellipsis}
%     çœç•¥å· \cs{dots} çš„æ&nbsp;·å¼ï¼Œå¯é€‰ï¼š\option{centered}ï¼ˆæŒ‰ç…§ä¸­æ–‡çš„ä¹&nbsp;æƒ¯å›ºå®šå±…ä¸­ï¼‰ã€
%     \option{lower} å’Œ \option{AMS}ï¼ˆå–å†³äºŽå‰åŽç¬¦å·çš„ä½ç½®ï¼‰ã€‚
%     å…¶ä»–çš„çœç•¥å·å‘½ä»¤å¦‚ \cs{ldots}ã€\cs{cdots} åˆ™ä¸å—å½±å“ã€‚
%   \item \DescribeOption{real-part}
%     å®žéƒ¨ \cs{Re} å’Œè™šéƒ¨ \cs{Im} çš„å­—ä½“ï¼Œå¯é€‰ï¼š\option{roman} å’Œ \option{fraktur}ã€‚
% \end{enumerate}
%
% å¦‚æžœæ•°å­¦ç¬¦å·é€‰æ‹©å›½æ&nbsp;‡æ&nbsp;·å¼ |math-style = GB|ï¼Œç›¸å½“äºŽè®¾ç½®äº†
% \begin{latex}
%   \thusetup{
%     uppercase-greek    = italic,
%     less-than-or-equal = slanted,
%     integral           = upright,
%     integral-limits    = false,
%     partial            = upright,
%     math-ellipsis      = centered,
%     real-part          = roman,
%   }
% \end{latex}
%
% å¦å¤–ï¼Œå›½æ&nbsp;‡çš„æ•°å­¦æ&nbsp;·å¼ä¸Ž AMS è¿˜æœ‰ä¸€äº›å·®å¼‚æ—&nbsp;æ³•ç»Ÿä¸€è®¾ç½®ï¼Œéœ€è¦ç”¨æˆ·åœ¨å†™ä½œæ—¶è¿›è¡Œå¤„ç†ã€‚
% \begin{enumerate}
%   \item æ•°å­¦å¸¸æ•°å’Œç‰¹æ®Šå‡½æ•°åç”¨æ­£ä½“ï¼Œå¦‚ $\uppi = 3.14\dots$ï¼›$\symup{i}^2 = -1$ï¼›
%     $\symup{e} = \lim_{n \to \infty} \left( 1 + \frac{1}{n} \right)^n$ã€‚
%   \item å¾®åˆ†å·ä½¿ç”¨æ­£ä½“ï¼Œæ¯”å¦‚ $\dif y / \dif x$ã€‚
%   \item å‘é‡ã€çŸ©é˜µå’Œå¼&nbsp;é‡ç”¨ç²—æ–œä½“ï¼ˆ\cs{symbf}ï¼‰ï¼Œå¦‚ $\symbf{x}$ã€$\symbf{\Sigma}$ã€$\symbfsf{T}$ã€‚
% \end{enumerate}
%
% éœ€è¦æ³¨æ„ï¼Œä¸Šè¿°å…³äºŽæ•°å­¦ç¬¦å·é£Žæ&nbsp;¼çš„è®¾ç½®åœ¨è®¾ç½®æ•°å­¦å­—ä½“ï¼ˆ\option{math-font}ï¼‰æ—¶æ‰ä¼šç”Ÿæ•ˆã€‚
%
% \DescribeOption{math-font}
% æ¨¡æ¿ä½¿ç”¨é»˜è®¤ä½¿ç”¨ XITS Math ä½œä¸ºæ•°å­¦å­—ä½“ã€‚
% ç”¨æˆ·ä¹Ÿå¯ä»¥ä½¿ç”¨ \option{math-font} é€‰é¡¹åˆ‡æ¢å…¶ä»–æ•°å­¦å­—ä½“ï¼Œå¯é€‰ï¼š
% \option{stix}ï¼ˆSTIX Two Mathï¼‰ã€
% \option{libertinus}ï¼ˆLibertinus Mathï¼‰ã€
% \option{newcm}ï¼ˆNew Computer Modern Mathï¼‰ã€
% \option{lm}ï¼ˆLatin Modern Mathï¼‰ã€‚
%
% å…¶ä¸­ \option{lm} å’Œ \option{newcm} çš„å­—å½¢æ¯”è¾ƒæ­é… TeX åŽŸç”Ÿçš„ Computer Modern å­—ä½“ï¼Œ
% ä½†ä¸Žã€ŠæŒ‡å—ã€‹è¦æ±‚çš„è¥¿æ–‡å­—ä½“ Times New Roman å¹¶ä¸æ­é…ã€‚
% å¯èƒ½ä¼šé€&nbsp;æˆæ­£æ–‡å’Œå…¬å¼ä¸­çš„æ•°å­—å­—ä½“ä¸ä¸€è‡´ï¼Œéœ€è¦è°¨æ…Žä½¿ç”¨ã€‚
%
% ä»¥ä¸Šå­—ä½“éƒ½æ˜¯ OpenType æ&nbsp;¼å¼çš„å­—ä½“ï¼Œéœ€è¦é…åˆ
% \href{http://mirrors.ctan.org/macros/unicodetex/latex/unicode-math/unicode-math.pdf}{\pkg{unicode-math}}
% å®åŒ…ä½¿ç”¨ã€‚
% å…¨éƒ¨æ•°å­¦ç¬¦å·çš„å‘½ä»¤å‚è€ƒ
% \href{http://mirrors.ctan.org/macros/unicodetex/latex/unicode-math/unimath-symbols.pdf}{\pkg{unimath-symbols}}ã€‚
% æ³¨æ„ï¼Œ\pkg{unicode-math} å®åŒ…ä¸Ž \pkg{amsfonts}ã€\pkg{amssymb}ã€\pkg{bm}ã€
% \pkg{mathrsfs}ã€\pkg{upgreek} ç­‰å®åŒ…\emph{ä¸}å…¼å®¹ã€‚
% æ¨¡æ¿ä½œäº†å¤„ç†ï¼Œç”¨æˆ·å¯ä»¥ç›´æŽ¥ä½¿ç”¨è¿™äº›å®åŒ…çš„å‘½ä»¤ï¼Œå¦‚ \cs{bm}ã€\cs{mathscr}ã€
% \cs{uppi}ã€‚
%
% å¦å¤–ï¼Œæ¨¡æ¿è¿˜ä¸º |math-font| æä¾›äº†ä¼&nbsp;ç»Ÿçš„ Type 1 å­—ä½“ \option{newtx}ã€‚
% è¯¥é€‰é¡¹ä¼šè°ƒç”¨ \pkg{newtxmath} å®åŒ…ã€‚
% ä½†æ˜¯ï¼Œå¦‚æžœè¥¿æ–‡å­—ä½“å·²ç»ä½¿ç”¨äº† OpenType çš„ Times New Romanï¼Œ
% æ··ç”¨ Type 1 å­—ä½“å¯èƒ½ä¼šå¯¼è‡´é—®é¢˜ï¼Œå°¤å…¶æ˜¯ä½¿ç”¨ \pkg{siunitx} å®åŒ…æ—¶ã€‚
% è¯¥é€‰é¡¹è¿˜å¤„äºŽæµ‹è¯•é˜¶æ®µï¼Œéœ€è¦è°¨æ…Žä½¿ç”¨ã€‚
%
% \DescribeOption{eqn-paren-style}
% æŽ§åˆ¶ä¸­æ–‡è®ºæ–‡ä¸­ï¼Œæ•°å­¦å…¬å¼ç¼–å·ä¸¤è¾¹çš„æ‹¬å·æ&nbsp;·å¼ã€‚å¯é€‰é¡¹åŒ…æ‹¬ï¼š\option{full}ï¼ˆå…¨è§’ï¼Œé»˜è®¤ï¼‰ / \option{half}ï¼ˆåŠè§’ï¼‰ã€‚
% åœ¨è¯­è¨€ä¸ºè‹±è¯­ï¼ˆ|language = english|ï¼‰æ—¶ï¼Œæ­¤é€‰é¡¹æ—&nbsp;æ•ˆï¼Œä»…ä½¿ç”¨åŠè§’æ‹¬å·ã€‚
%
% \subsubsection{å®šç†çŽ¯å¢ƒ}
% \label{sec:theorem}
% \thuthesis{} å®šä¹‰äº†å¸¸ç”¨çš„æ•°å­¦çŽ¯å¢ƒï¼š
%
% \begin{center}
% \begin{tabular}{*{7}{l}}\toprule
%   axiom &amp; theorem &amp; definition &amp; proposition &amp; lemma &amp; conjecture &amp;\\
%   å…¬ç† &amp; å®šç† &amp; å®šä¹‰ &amp; å‘½é¢˜ &amp; å¼•ç† &amp; çŒœæƒ³ &amp;\\\midrule
%   proof &amp; corollary &amp; example &amp; exercise &amp; assumption &amp; remark &amp; problem \\
%   è¯æ˜Ž &amp; æŽ¨è®º &amp; ä¾‹å­&amp; ç»ƒä¹&nbsp; &amp; å‡è®¾ &amp; æ³¨é‡Š &amp; é—®é¢˜\\\bottomrule
% \end{tabular}
% \end{center}
%
% æ¯”å¦‚ï¼š
% \begin{latex}
%   \begin{definition}
%     é“åƒä¹˜ä¹‹å›½ï¼Œæ•¬äº‹è€Œä¿¡ï¼ŒèŠ‚ç”¨è€Œçˆ±äººï¼Œä½¿æ°‘ä»¥æ—¶ã€‚
%   \end{definition}
% \end{latex}
% äº§ç”Ÿï¼ˆè‡ªåŠ¨ç¼–å·ï¼‰ï¼š
% \medskip
%
% \noindent\framebox[\linewidth][l]{{\heiti å®šä¹‰~1.1~~~} % {é“åƒä¹˜ä¹‹å›½ï¼Œæ•¬äº‹è€Œä¿¡ï¼ŒèŠ‚ç”¨è€Œçˆ±äººï¼Œä½¿æ°‘ä»¥æ—¶ã€‚}}
%
% \smallskip
% åˆ—ä¸¾å‡ºæ¥çš„æ•°å­¦çŽ¯å¢ƒæ¯•ç«Ÿæ˜¯æœ‰é™çš„ï¼Œå¦‚æžœæƒ³ç”¨\emph{èƒ¡è¯´}è¿™æ&nbsp;·çš„æ•°å­¦çŽ¯å¢ƒï¼Œé‚£ä¹ˆå¯ä»¥å®šä¹‰ï¼š
% \begin{latex}
%   \newtheorem{nonsense}{èƒ¡è¯´}[chapter]
% \end{latex}
%
% ç„¶åŽè¿™æ&nbsp;·ä½¿ç”¨ï¼š
% \begin{latex}
%   \begin{nonsense}
%     å¥‘ä¸¹æ­¦å£«è¦æ¥ä¸­åŽŸå¤ºæ­¦æž—ç§˜ç¬ˆã€‚â€”â€” æ…•å®¹åš
%   \end{nonsense}
% \end{latex}
%
% äº§ç”Ÿï¼ˆè‡ªåŠ¨ç¼–å·ï¼‰ï¼š
%
% \medskip
% \noindent\framebox[\linewidth][l]{{\heiti èƒ¡è¯´~1.1~~~} % {å¥‘ä¸¹æ­¦å£«è¦æ¥ä¸­åŽŸå¤ºæ­¦æž—ç§˜ç¬ˆã€‚â€”â€” æ…•å®¹åš}}
%
% \subsubsection{åˆ—è¡¨çŽ¯å¢ƒ}
% \DescribeEnv{itemize}
% \DescribeEnv{enumerate}
% \DescribeEnv{description}
% ä¸ºäº†é€‚åˆä¸­æ–‡ä¹&nbsp;æƒ¯ï¼Œæ¨¡æ¿å°†è¿™ä¸‰ä¸ªå¸¸ç”¨çš„åˆ—è¡¨çŽ¯å¢ƒç”¨ \pkg{enumitem} è¿›è¡Œäº†çºµå‘é—´è·åŽ‹
% ç¼©ã€‚ä¸€æ–¹é¢æ¸…é™¤äº†å¤šä½™ç©ºé—´ï¼Œå¦ä¸€æ–¹é¢ç”¨æˆ·å¯ä»¥è‡ªå·±æŒ‡å®šåˆ—è¡¨çŽ¯å¢ƒçš„æ&nbsp;·å¼ï¼ˆå¦‚æ&nbsp;‡ç­¾ç¬¦å·ï¼Œ
% ç¼©è¿›ç­‰ï¼‰ã€‚ç»†èŠ‚è¯·å‚çœ‹ \pkg{enumitem} æ–‡æ¡£ï¼Œæ­¤å¤„ä¸å†èµ˜è¿°ã€‚
%
% \subsubsection{å¼•ç”¨æ–¹å¼}
% \label{sec:citestyle}
% æ¨¡æ¿æ”¯æŒä¸¤ç§å¼•ç”¨æ–¹å¼ï¼Œåˆ†åˆ«ä¸ºç†å·¥ç§‘å¸¸ç”¨çš„â€œé¡ºåºç¼–ç&nbsp;åˆ¶â€å’Œæ–‡ç§‘å¸¸ç”¨
% çš„â€œè‘—è€…-å‡ºç‰ˆå¹´åˆ¶â€ã€‚
% ä½¿ç”¨è€…åœ¨è®¾ç½®å‚è€ƒæ–‡çŒ®è¡¨çš„æ&nbsp;¼å¼
% ï¼ˆ\cs{bibliographystyle}ï¼Œè§ç¬¬~\ref{sec:bibliography} èŠ‚ï¼‰æ—¶ï¼Œ
% æ­£æ–‡ä¸­å¼•ç”¨æ–‡çŒ®çš„æ&nbsp;‡æ³¨ä¼šè‡ªåŠ¨è°ƒæ•´ä¸ºå¯¹åº”çš„æ&nbsp;¼å¼ã€‚
%
% å¦‚æžœéœ€è¦æ&nbsp;‡å‡ºå¼•æ–‡çš„é¡µç&nbsp;ï¼Œå¯ä»¥å†™åœ¨ \cs{cite} çš„å¯é€‰å‚æ•°ä¸­ï¼Œå¦‚
% |\cite[42]{knuth84}|ã€‚
%
% \paragraph{é¡ºåºç¼–ç&nbsp;åˆ¶}
% \DescribeMacro{\inlinecite}
% é¡ºåºç¼–ç&nbsp;åˆ¶çš„å‚è€ƒæ–‡çŒ®å¼•ç”¨åˆ†ä¸ºä¸¤ç§æ¨¡å¼ï¼š
% \begin{enumerate}
%   \item ä¸Šæ&nbsp;‡æ¨¡å¼ï¼Œæ¯”å¦‚â€œåŒæ&nbsp;·çš„å·¥ä½œæœ‰å¾ˆå¤š\textsuperscript{[1-2]}â€¦â€¦â€ï¼›
%   \item æ­£æ–‡æ¨¡å¼ï¼Œæ¯”å¦‚â€œæ–‡ [3] ä¸­è¯¦ç»†è¯´æ˜Žäº†â€¦â€¦â€ã€‚
% \end{enumerate}
%
% \DescribeOption{cite-style}
% ç”¨æˆ·å¯ä»¥å°†å¼•ç”¨æ&nbsp;‡æ³¨çš„æ&nbsp;¼å¼è®¾ä¸ºæ­£æ–‡æ¨¡å¼ï¼š
% \begin{latex}
%   \thusetup{
%     cite-style = inline,
%   }
% \end{latex}
% ä¹Ÿå¯ä»¥ä½¿ç”¨ \cs{inlinecite}\marg{key} ä¸´æ—¶ä½¿ç”¨æ­£æ–‡æ¨¡å¼çš„å¼•ç”¨æ&nbsp;‡æ³¨ã€‚
%
% \paragraph{è‘—è€…-å‡ºç‰ˆå¹´åˆ¶}
% è‘—è€…-å‡ºç‰ˆå¹´åˆ¶çš„å‚è€ƒæ–‡çŒ®å¼•ç”¨æœ‰ä¸¤ç§æ¨¡å¼ï¼š
% \begin{enumerate}
%   \item \cs{citep}ï¼šè‘—è€…ä¸Žå¹´ä»½å‡åœ¨æ‹¬å·ä¸­ï¼Œæ¯”å¦‚â€œ(Zhang, 2008)â€ï¼Œ
%     åŒé»˜è®¤çš„ \cs{cite} å‘½ä»¤ï¼›
%   \item \cs{citet}ï¼šè‘—è€…å§“åä½œä¸ºæ­£æ–‡çš„ä¸€éƒ¨åˆ†ï¼Œæ¯”å¦‚â€œZhang (2008)â€ï¼›
% \end{enumerate}
%
% å¦å¤–ï¼Œ\pkg{natbib} è¿˜æä¾›äº†å…¶ä»–æ–¹ä¾¿å¼•ç”¨çš„å‘½ä»¤ï¼Œ
% æ¯”å¦‚ \cs{citeauthor}ã€\cs{citeyear} ç­‰ï¼Œ
% æ›´å¤šç»†èŠ‚å‚è€ƒ \pkg{natbib} çš„æ–‡æ¡£ã€‚
%
% \subsection{å…¶ä»–éƒ¨åˆ†}
%
% \subsubsection{å‚è€ƒæ–‡çŒ®}
% \label{sec:bibliography}
%
% å‚è€ƒæ–‡çŒ®é€šå¸¸å¯ä»¥ä½¿ç”¨ \hologo{BibTeX} æˆ– biblatex ç”Ÿæˆã€‚
% \hologo{BibTeX} æ˜¯ LaTeX å¤„ç†å‚è€ƒæ–‡çŒ®çš„ä¼&nbsp;ç»Ÿçš„æ–¹å¼ï¼Œ
% éœ€è¦åœ¨ä½¿ç”¨ \cs{bibliographystyle}\marg{style} é€‰æ‹©æ&nbsp;·å¼
% å¹¶ç”¨ \cs{bibliography} è®¾ç½® \file{.bib} çš„è·¯å¾„ã€‚
% ç„¶åŽä½¿ç”¨ \texttt{bibtex} å¯¹ \file{.aux} æ–‡ä»¶è¿›è¡Œç¼–è¯‘å¾—åˆ° \file{.bbl} æ–‡ä»¶ã€‚
% å…¶ä¸­çš„å‚è€ƒæ–‡çŒ®è¡¨å†…å®¹ä¼šåœ¨åŽç»­ç¼–è¯‘æ—¶æ›¿æ¢åˆ° \cs{bibliography} çš„ä½ç½®ã€‚
% Biblatex æ˜¯è¾ƒæ–°çš„æ–¹å¼ï¼Œéœ€è¦åœ¨è½½å…¥å®åŒ…æ—¶é€šè¿‡ \option{style} é€‰æ‹©æ&nbsp;·å¼ï¼Œ
% åœ¨å¯¼è¨€åŒºä½¿ç”¨ \cs{addbibresource} å£°æ˜Žæ•°æ®åº“çš„è·¯å¾„ï¼Œ
% å¹¶åœ¨è¾“å‡ºå‚è€ƒæ–‡çŒ®è¡¨çš„ä½ç½®ä½¿ç”¨ \cs{printbibliography} å‘½ä»¤,
% è€Œä¸”ç¼–è¯‘å‚è€ƒæ–‡çŒ®çš„å‘½ä»¤éœ€è¦æ¢ä¸º biberã€‚
% è¿™ä¸¤ç§æ–¹å¼å„æœ‰ä¼˜ç¼ºç‚¹ï¼Œæ¯”å¦‚ BibTeX æ—&nbsp;æ³•å¯¹ä¸­æ–‡æŒ‰ç…§æ‹¼éŸ³æŽ’åºï¼Œä¸€äº›æ&nbsp;·å¼æ›´æ–°ä¸å¤ŸåŠæ—¶ï¼›
% Biblatex è¿è¡Œè¾ƒç¼“æ…¢ï¼Œæ—&nbsp;æ³•å¯¹å¤šä¸ªå‚è€ƒæ–‡çŒ®è¡¨ä½¿ç”¨ä¸åŒæ&nbsp;·å¼ã€‚
% ç”¨æˆ·éœ€è¦æ&nbsp;¹æ®å®žé™…é€‰æ‹©åˆé€‚çš„æ–¹å¼ã€‚
%
% ç&nbsp;”ç©¶ç”Ÿè¦æ±‚çš„å‚è€ƒæ–‡çŒ®æ&nbsp;¼å¼åŸºäºŽã€Šä¿¡æ¯ä¸Žæ–‡çŒ® å‚è€ƒæ–‡çŒ®è‘—å½•è§„åˆ™ã€‹ï¼ˆGB/T 7714â€”2015ï¼‰
% è¿›è¡Œäº†å°‘é‡æ”¹ç¼–ï¼ˆå¦‚è‹±æ–‡å§“åä¸ä½¿ç”¨å…¨å¤§å†™ï¼‰ï¼Œ
% å¯ä»¥é€‰æ‹©â€œé¡ºåºç¼–ç&nbsp;åˆ¶â€å’Œâ€œè‘—è€…-å‡ºç‰ˆå¹´åˆ¶â€ã€‚
% å¦‚æžœä½¿ç”¨ BibTeX çš„æ–¹å¼ï¼Œéœ€è¦åœ¨å¯¼è¨€åŒºè½½å…¥ \pkg{natbib} å®åŒ…å¹¶é€‰æ‹©æ&nbsp;·å¼ï¼Œå¦‚ï¼š
% \begin{latex}
%   % é¡ºåºç¼–ç&nbsp;åˆ¶
%   \usepackage[sort]{natbib}
%   \bibliographystyle{thuthesis-numeric}
% \end{latex}
% æˆ–
% \begin{latex}
%   % è‘—è€…-å‡ºç‰ˆå¹´åˆ¶
%   \usepackage{natbib}
%   \bibliographystyle{thuthesis-author-year}
% \end{latex}
% å…¶ä¸­çš„ \option{sort} é€‰é¡¹ä¼šå°†åŒä¸€å¤„å¼•ç”¨çš„å¤šä¸ªæ–‡çŒ®ç¼–å·ä¸¥æ&nbsp;¼æŒ‰ç…§é¡ºåºæŽ’åºï¼Œ
% è¿™å¹¶éžã€Šå†™ä½œæŒ‡å—ã€‹è¦æ±‚ï¼Œä½†æ˜¯æŽ¨èä½¿ç”¨ã€‚
% è¿™é‡Œè°ƒç”¨çš„æ&nbsp;·å¼ç”± \href{http://ctan.org/pkg/gbt7714}{\pkg{gbt7714}} çš„ \file{.bst} è¿›è¡Œäº†å°‘é‡ä¿®æ”¹ã€‚
%
% å‚è€ƒæ–‡çŒ®è¡¨é‡‡ç”¨â€œè‘—è€…-å‡ºç‰ˆå¹´â€åˆ¶ç»„ç»‡æ—¶ï¼Œå„ç¯‡æ–‡çŒ®é¦–å…ˆæŒ‰æ–‡ç§é›†ä¸­ï¼Œç„¶åŽæŒ‰è‘—è€…å­—
% é¡ºå’Œå‡ºç‰ˆå¹´æŽ’åˆ—ï¼›ä¸­æ–‡æ–‡çŒ®å¯ä»¥æŒ‰è‘—è€…æ±‰è¯­æ‹¼éŸ³å­—é¡ºæŽ’åˆ—ï¼Œä¹Ÿå¯ä»¥æŒ‰è‘—è€…çš„ç¬”ç”»ç¬”é¡ºæŽ’åˆ—ã€‚
% ä½†ç”±äºŽ \hologo{BibTeX} åŠŸèƒ½çš„å±€é™æ€§ï¼Œæ—&nbsp;æ³•è‡ªåŠ¨èŽ·å–è‘—è€…å§“åçš„æ‹¼éŸ³æˆ–ç¬”ç”»ç¬”é¡ºè¿›è¡Œæ­£ç¡®æŽ’åºã€‚
% ä¸€ç§è§£å†³æ–¹æ³•æ˜¯åœ¨ \file{.bib} æ•°æ®åº“çš„ä¸­æ–‡æ–‡çŒ®çš„ |key| åŸŸæ‰‹åŠ¨å½•å…¥è‘—è€…å§“åçš„æ‹¼éŸ³ï¼Œ
% è¿™æ¯”è¾ƒé€‚åˆä¸­æ–‡æ–‡çŒ®æ•°é‡è¾ƒå°‘çš„æƒ…å†µï¼Œå¦‚ï¼š
% \begin{latex}
%   @book{capital,
%     author = {é©¬å…‹æ€ and æ©æ&nbsp;¼æ–¯},
%     key    = {ma3 ke4 si1 &amp; en1 ge2 si1},
%     ...
%   }
% \end{latex}
% å¦ä¸€ç§æ–¹å¼æ˜¯ä½¿ç”¨ biblatexï¼Œåº”åœ¨å¯¼è¨€åŒºè®¾ç½®
% \begin{latex}
%   \usepackage[style=thuthesis-author-year]{biblatex}
%   \addbibresource{ref/refs.bib}
% \end{latex}
% è¿™é‡Œçš„æ&nbsp;·å¼ç”± \href{https://ctan.org/pkg/biblatex-gb7714-2015}{biblatex-gb7714-2015} è¿›è¡Œäº†å°‘é‡æ”¹ç¼–ï¼Œ
% ä¸€äº›é¢å¤–ç”¨æ³•å¯ä»¥å‚è€ƒè¯¥å®åŒ…çš„æ–‡æ¡£ã€‚
% æ³¨æ„ \pkg{biblatex} è·Ÿ \pkg{natbib} ä¸å…¼å®¹ï¼Œ
% è€Œä¸” \cs{addbibresource} å¿…é¡»åœ¨å¯¼è¨€åŒºè®¾ç½®ã€‚
% è¾“å‡ºå‚è€ƒæ–‡çŒ®è¡¨åº”ä½¿ç”¨ \cs{printbibliography} å‘½ä»¤ã€‚
%
% æœ¬ç§‘ç”Ÿè¦æ±‚çš„ä¸­æ–‡å‚è€ƒæ–‡çŒ®æ&nbsp;¼å¼ä¸¥æ&nbsp;¼éµä»Ž GB/T 7714â€”2015ï¼Œ
% é™„å½•ä¸­è°ƒç&nbsp;”æŠ¥å‘Šçš„è‹±æ–‡å‚è€ƒæ–‡çŒ®å¯ä»¥è‡ªè¡Œé€‰æ‹©åˆé€‚çš„é£Žæ&nbsp;¼ã€‚
% ä½†æ˜¯ biblatex ä¸æ”¯æŒåŒä¸€æ–‡æ¡£ä¸­ä½¿ç”¨ä¸åŒçš„æ&nbsp;¼å¼ï¼Œ
% æ‰€ä»¥åªèƒ½ä½¿ç”¨ \hologo{BibTeX}ï¼š
% \begin{latex}
%   % æœ¬ç§‘ç”Ÿå‚è€ƒæ–‡çŒ®çš„è‘—å½•æ&nbsp;¼å¼
%   \usepackage[sort]{natbib}
%   \bibliographystyle{thuthesis-bachelor}
% \end{latex}
% è°ƒç&nbsp;”æŠ¥å‘Šçš„å‚è€ƒæ–‡çŒ®éœ€è¦é€‰æ‹©ä¸Ž \pkg{natbib} å…¼å®¹çš„æ&nbsp;·å¼ã€‚
%
% æœ¬ç§‘ç”Ÿå¤–æ–‡ç³»è¦æ±‚ä½¿ç”¨ APA æˆ– MLAã€‚
% APA çš„ BibTeX æ&nbsp;·å¼ç”± \pkg{apacite} å®åŒ…æä¾›ï¼Œéœ€è¦åœ¨å¯¼è¨€åŒºè°ƒç”¨ï¼š
% \begin{latex}
%   \usepackage[natbibapa]{apacite}
%   \bibliographystyle{apacite}
% \end{latex}
% å…¶ä¸­ \option{natbibapa} ä¼šè°ƒç”¨ \pkg{natbib} æ¥å¤„ç†å¼•ç”¨ï¼Œ
% è¿™ä¹Ÿæ˜¯å®åŒ…æŽ¨èçš„ç”¨æ³•ã€‚
% æ³¨æ„ç›®å‰çš„ \pkg{apacite} åªæ”¯æŒåˆ° APA ç¬¬ 6 ç‰ˆã€‚
% æ›´æŽ¨èä½¿ç”¨å·²ç»æ›´æ–°åˆ° APA ç¬¬ 7 ç‰ˆçš„ \pkg{biblatex-apa}ï¼š
% \begin{latex}
%   \usepackage[style=apa]{biblatex}
%   \addbibresource{refs-apa.bib}
% \end{latex}
% æ³¨æ„ï¼Œå¦‚æžœå‚è€ƒæ–‡çŒ®ä¸­å¼•ç”¨äº†ä¸­æ–‡æ–‡çŒ®çš„è¯ï¼Œè¿™ä¸¤ç§æ–¹æ³•éƒ½ä¸èƒ½æ­£ç¡®è°ƒæ•´æ&nbsp;¼å¼ï¼Œ
% éœ€è¦æ‰‹åŠ¨è¿›è¡Œä¿®æ”¹ \file{.bbl} æ–‡ä»¶çš„å†…å®¹ï¼Œ
% è¿™æ—¶ BibTeX æ¯” biblatex æ›´ç®€å•äº›ã€‚
%
% BibTeX æ²¡æœ‰ç”¨äºŽ MLA çš„æ&nbsp;·å¼ï¼Œæ‰€ä»¥å¯¹äºŽ MLA åªèƒ½ä½¿ç”¨ biblatex:
% \begin{latex}
%   \usepackage[style=mla-new]{biblatex}
%   \addbibresource{refs-apa.bib}
% \end{latex}
% æ³¨æ„è¿™é‡Œ \option{mla-new} å¯¹åº”äºŽ MLA ç¬¬ 8 ç‰ˆçš„æ&nbsp;¼å¼ï¼Œ
% \option{mla} æ˜¯ç¬¬ 7 ç‰ˆçš„ã€‚
%
% \subsubsection{è‡´è°¢}
%
% \DescribeEnv{acknowledgements}
% æŠŠè‡´è°¢åšæˆä¸€ä¸ªçŽ¯å¢ƒæ›´å¥½ä¸€äº›ï¼Œç›´æŽ¥å¾€é‡Œé¢å†™æ„Ÿè°¢çš„è¯å°±å¯ä»¥å•¦ã€‚
%
% \begin{latex}
%   \begin{acknowledgements}
%     â€¦
%     è¿˜è¦ç‰¹åˆ«æ„Ÿè°¢ \thuthesis{} èŠ‚çœäº†è®ºæ–‡æŽ’ç‰ˆæ—¶é—´ï¼
%   \end{acknowledgements}
% \end{latex}
%
% \subsubsection{å£°æ˜Ž}
% \DescribeMacro{\statement}
% ç›´æŽ¥ä½¿ç”¨ \cs{statement} å‘½ä»¤å¯ä»¥ç¼–è¯‘ç”Ÿæˆå£°æ˜Žé¡µã€‚
% åœ¨æ‰“å°ã€ç­¾å­—ã€æ‰«æåŽå¦‚æžœè¦æ’å…¥æ‰«æé¡µï¼Œå°†å¯é€‰å‚æ•° \option{file} æŒ‡å®šä¸º PDF æ–‡ä»¶åï¼Œä¾‹å¦‚ï¼š
% \begin{latex}
%   \statement[file=scan-statement.pdf]
% \end{latex}
%
% ç”±äºŽæ­£æ–‡ç¯‡å¹…å¯èƒ½æœ‰å˜åŒ–ï¼Œä»¥åŠç”µå­ç‰ˆå’Œæ‰“å°ç‰ˆå’Œæœ‰ç©ºç™½é¡µçš„å·®åˆ«ï¼Œå£°æ˜Žçš„é¡µç&nbsp;å¯èƒ½ä¸åŒã€‚
% æ‰€ä»¥ä¸ºäº†é¿å…é‡å¤æ‰“å°æ‰«æï¼Œç¼–è¯‘ç”Ÿæˆå£°æ˜Žé¡µæ—¶é»˜è®¤\textsf{ä¸å«}é¡µçœ‰é¡µè„šï¼Œ
% æ’å…¥æ‰«æé¡µæ—¶é»˜è®¤åŠ&nbsp;ä¸Šé¡µçœ‰é¡µè„šã€‚
%
% ç”¨æˆ·ä¹Ÿå¯ä»¥é€šè¿‡ \option{page-style} å‚æ•°æ‰‹åŠ¨æŽ§åˆ¶å£°æ˜Žé¡µæ˜¯å¦å«é¡µçœ‰é¡µè„šã€‚
% ä¾‹å¦‚ç¼–è¯‘ç”Ÿæˆå£°æ˜Žé¡µæ—¶è¦æ±‚åŒ…å«é¡µçœ‰é¡µè„šï¼š
% \begin{latex}
%   \statement[page-style=plain]
% \end{latex}
% æ’å…¥æ‰«æé¡µæ—¶ä¸åŠ&nbsp;é¡µçœ‰é¡µè„šï¼š
% \begin{latex}
%   \statement[file=scan-statement.pdf, page-style=plain]
% \end{latex}
%
% \subsubsection{é™„å½•}
%
% é™„å½•ç”± \cs{appendix} å‘½ä»¤å¼€å¯ï¼Œç„¶åŽåƒæ­£æ–‡ä¸€æ&nbsp;·ä¹¦å†™ã€‚
% \begin{latex}
%   \appendix
%   \chapter{...}
%   ...
% \end{latex}
%
% \DescribeOption{toc-depth}
% ä¸€äº›é™¢ç³»è¦æ±‚ç›®å½•ä¸­åªå‡ºçŽ°é™„å½•çš„ç«&nbsp;æ&nbsp;‡é¢˜ï¼Œä¸å‡ºçŽ°é™„å½•ä¸­çš„ä¸€çº§ã€äºŒçº§èŠ‚æ&nbsp;‡é¢˜ã€‚æ¨¡æ¿é»˜è®¤
% å¦‚æ­¤è®¾ç½®ï¼Œç”¨æˆ·ä¹Ÿå¯ä»¥åœ¨ \cs{appendix} å‘½ä»¤åŽæ‰‹åŠ¨æŽ§åˆ¶åŠ&nbsp;å…¥ç›®å½•çš„æ&nbsp;‡é¢˜å±‚çº§ï¼Œå…¶
% ä¸­ |0| è¡¨ç¤ºç«&nbsp;æ&nbsp;‡é¢˜ï¼Œ|1| è¡¨ç¤ºä¸€çº§èŠ‚æ&nbsp;‡é¢˜ï¼Œä»¥æ­¤ç±»æŽ¨ã€‚
%
% \begin{latex}
%   \appendix
%   \thusetup{toc-depth=0}  % ç›®å½•åªå‡ºçŽ°ç«&nbsp;æ&nbsp;‡é¢˜
% \end{latex}
%
% \DescribeEnv{survey}
% \DescribeEnv{translation}
% æœ¬ç§‘ç”Ÿã€Šå†™ä½œè§„èŒƒã€‹è¦æ±‚é™„å½• A ä¸ºå¤–æ–‡èµ„æ–™çš„è°ƒç&nbsp;”é˜…è¯»æŠ¥å‘Šæˆ–ä¹¦é¢ç¿»è¯‘ï¼ŒäºŒè€…æ‹©ä¸€ã€‚
% è°ƒç&nbsp;”æŠ¥å‘Šï¼ˆæˆ–ä¹¦é¢ç¿»è¯‘ï¼‰çš„é¢˜ç›®å’Œå‚è€ƒæ–‡çŒ®æ˜¯ç‹¬ç«‹äºŽè®ºæ–‡çš„ï¼Œç›¸å½“ä¸€ç¯‡ç‹¬ç«‹çš„å°æ–‡ç«&nbsp;ï¼Œ
% æ‰€ä»¥æ¨¡æ¿ç›¸åº”å®šä¹‰äº† \env{survey} å’Œ \env{translation}ã€‚åœ¨è¿™ä¸¤ä¸ªçŽ¯å¢ƒå†…éƒ¨å¯ä»¥
% åƒè®ºæ–‡æ­£æ–‡ä¸€æ&nbsp;·ä½¿ç”¨æ&nbsp;‡é¢˜å’Œå‚è€ƒæ–‡çŒ®çš„å‘½ä»¤ï¼Œä½†ä¸ä¼šå½±å“å¤–éƒ¨ã€‚
% ä½†æ˜¯éœ€è¦ä½¿ç”¨ \hologo{BibTeX} å¯¹ \file{*-survey.aux} æˆ–è€…
% \file{*-translation.aux} è¿›è¡Œç¼–è¯‘ï¼Œæ‰èƒ½ç”Ÿæˆå‚è€ƒæ–‡çŒ®ï¼ˆè§ \ref{sec:xelatex} èŠ‚ï¼‰ã€‚
% å¦‚æžœä½¿ç”¨ \texttt{latexmk}ï¼Œåˆ™æ—&nbsp;éœ€é¢å¤–å¤„ç†ã€‚
%
% åŒæ—¶ï¼Œé˜…è¯»æŠ¥å‘Šé»˜è®¤åˆ‡æ¢ä¹¦å†™è¯­è¨€ä¸ºè‹±è¯­ï¼Œä¹¦é¢ç¿»è¯‘é»˜è®¤åˆ‡æ¢ä¸ºä¸­æ–‡ã€‚
% å¦‚æœ‰éœ€è¦ï¼Œå¯ä»¥é€šè¿‡ \cs{thusetup} çš„ \option{language} å‚æ•°å†æ¬¡æ›´æ”¹ã€‚
%
% \begin{latex}
%   \begin{survey}
%     \title{...}
%     \maketitle
%     \tableofcontents
%     ... \cite{...} % æŠ¥å‘Šå†…å®¹åŠå…¶å¼•ç”¨
%     \bibliographystyle{...}
%     \bibliography{...} % æŠ¥å‘Šçš„å‚è€ƒæ–‡çŒ®
%   \end{survey}
% \end{latex}
%
% â€œä¹¦é¢ç¿»è¯‘å¯¹åº”çš„åŽŸæ–‡ç´¢å¼•â€åŒºåˆ«äºŽè¯‘æ–‡çš„å‚è€ƒæ–‡çŒ®ï¼Œéœ€è¦ä½¿ç”¨ \env{translation-index}
% çŽ¯å¢ƒï¼Œå¦å¤–éœ€è¦ä½¿ç”¨ \hologo{BibTeX} ç¼–è¯‘ \file{*-index.aux}ï¼Œ\texttt{latexmk} åŒæ&nbsp;·ä¼šè‡ªåŠ¨å¤„ç†ã€‚
%
% \begin{latex}
%   \begin{translation}
%     ... \cite{...} % ä¹¦é¢ç¿»è¯‘å†…å®¹åŠå…¶å¼•ç”¨
%     \bibliographystyle{...}
%     \bibliography{...}  % ä¹¦é¢ç¿»è¯‘çš„å‚è€ƒæ–‡çŒ®
%     \begin{translation-index}
%       \nocite{...}
%       \bibliographystyle{...}
%       \bibliography{...}  % ä¹¦é¢ç¿»è¯‘å¯¹åº”çš„åŽŸæ–‡ç´¢å¼•
%     \end{translation-index}
%   \end{translation}
% \end{latex}
%
% \subsubsection{ä¸ªäººç®€åŽ†ã€åœ¨å­¦æœŸé—´å®Œæˆçš„ç›¸å…³å­¦æœ¯æˆæžœ}
% \DescribeEnv{resume}
% ç&nbsp;”ç©¶ç”Ÿçš„æ&nbsp;‡é¢˜ä¸ºâ€œä¸ªäººç®€åŽ†ã€åœ¨å­¦æœŸé—´å®Œæˆçš„ç›¸å…³å­¦æœ¯æˆæžœâ€ï¼Œ
% æœ¬ç§‘ç”Ÿçš„æ&nbsp;‡é¢˜ä¸ºâ€œåœ¨å­¦æœŸé—´å‚åŠ&nbsp;è¯¾é¢˜çš„ç&nbsp;”ç©¶æˆæžœâ€æˆ–â€œPUBLICATIONSâ€ã€‚
%
% \DescribeEnv{achievements}
% æœ¬ç«&nbsp;çš„å…¶ä»–æ&nbsp;‡é¢˜åŒæ&nbsp;·ä½¿ç”¨ \cs{section*}ï¼Œ\cs{subsection*} ç­‰å‘½ä»¤ç”Ÿæˆï¼Œ
% ç&nbsp;”ç©¶æˆæžœç”¨ \env{achievements} çŽ¯å¢ƒç½—åˆ—ã€‚
%
% \begin{latex}
%   \begin{resume}
%     \section*{ä¸ªäººç®€åŽ†}
%     â€¦â€¦
%
%     \section*{åœ¨å­¦æœŸé—´å®Œæˆçš„ç›¸å…³å­¦æœ¯æˆæžœ}
%
%     \subsection*{å­¦æœ¯è®ºæ–‡}
%     \begin{achievements}
%       \item â€¦â€¦
%       \item â€¦â€¦
%     \end{achievements}
%
%     \subsection*{ä¸“åˆ©}
%     \begin{achievements}
%       \item â€¦â€¦
%       \item â€¦â€¦
%     \end{achievements}
%   \end{resume}
% \end{latex}
%
% \subsubsection{ç»¼åˆè®ºæ–‡è®­ç»ƒè®°å½•è¡¨}
% \DescribeMacro{\record}
% æœ¬ç§‘ç”Ÿéœ€è¦åœ¨æœ€åŽé™„ä¸Šç»¼åˆè®ºæ–‡è®­ç»ƒè®°å½•è¡¨ï¼Œå¯ä»¥ç”¨å¦‚ä¸‹å‘½ä»¤ï¼š
%
% \begin{latex}
%   \record{file=scan-record.pdf}
% \end{latex}
%
%
% \subsection{ä¹¦è„Š}
% \DescribeMacro{\spine}
% \DescribeOption{spine-font}
% \DescribeOption{spine-title}
% \DescribeOption{spine-author}
% ç”Ÿæˆè£…è®¢çš„ä¹¦è„Šï¼Œä¸ºç«–æŽ’æ&nbsp;¼å¼ã€‚å†…å®¹é»˜è®¤ä½¿ç”¨è®ºæ–‡çš„æ&nbsp;‡é¢˜å’Œä½œè€…ã€‚
% å¯ä»¥è®¾ç½® \option{spine-title} å’Œ \option{spine-author} æ¥ä¿®æ”¹ã€‚
%
% åšå£«è®ºæ–‡çš„ä¹¦è„Šå­—ä½“é»˜è®¤ä¸ºä¸‰å·å­—ï¼Œç¡•å£«çš„ä¸ºå°ä¸‰å·ã€‚
% æœ¬ç§‘ç”Ÿè¦æ±‚å­—ä½“å¤§å°æ&nbsp;¹æ®è®ºæ–‡çš„è–„åŽšè€Œå®šï¼Œå¯ä»¥ä½¿ç”¨ \option{spine-font} è®¾ç½®å­—å·ã€‚
% \begin{latex}
%   \thusetup{
%     spine-font   = {\zihao{3}},
%     spine-title  = {ä¹¦è„Šçš„æ&nbsp;‡é¢˜},
%     spine-author = {ä¹¦è„Šçš„ä½œè€…å§“å},
%   }
% \end{latex}
%
% ç”±äºŽ Fandol å­—ä½“åœ¨ \XeTeX ä¸­çš„ç«–æŽ’å­˜åœ¨ä¸€äº›é—®é¢˜ï¼Œå¦‚æžœä¹¦è„Šä½¿ç”¨çš„å­—ä½“æ˜¯ Fandol ä»¿å®‹
%ï¼ˆ\option{fontset} ä¸º \texttt{fandol} æˆ–è€… \texttt{ubuntu} æ—¶ï¼‰ï¼Œåˆ™å®ƒ\textbf{å¿…é¡»ä½œä¸ºç‹¬ç«‹æ–‡ä»¶ç”Ÿæˆ}ï¼Œ
% å¦åˆ™å¯èƒ½å¯¼è‡´åŽç»­å†…å®¹æ–‡å­—æ–¹å‘é”™ä¹±çš„é—®é¢˜ã€‚
%
% \DescribeOption{include-spine}
% ä¸€äº›é™¢ç³»è¦æ±‚æŠŠä¹¦è„Šæ’è¿›è®ºæ–‡é‡Œï¼Œéœ€è¦åœ¨ \cs{maketitle} å‰è®¾ç½®ã€‚
% \begin{latex}
%   \thusetup{
%     include-spine = true,
%   }
% \end{latex}
% æ‰“å¼€æ­¤é€‰é¡¹åŽï¼Œä¹¦è„Šä¼šå‡ºçŽ°åœ¨ä¸­æ–‡å°é¢åŽé¢çš„ç¬¬ä¸€ä¸ªç©ºç™½é¡µã€‚å¦‚æžœæœ‰è‹±æ–‡å°é¢ï¼Œåˆ™åœ¨è‹±æ–‡å°é¢ä¹‹å‰ã€‚
% å¦‚æžœéœ€è¦ä¹¦è„Šå‡ºçŽ°åœ¨å…¶ä»–ä½ç½®ï¼Œè¯·æ‰‹å·¥ä½¿ç”¨ \cs{spine} ç”Ÿæˆï¼Œä¸è¦ä½¿ç”¨æ­¤é€‰é¡¹ã€‚
%
% \section{è‡´è°¢}
% \label{sec:thanks}
% æ„Ÿè°¢è¿™äº›å¹´æ¥ä¸€ç›´é™ªä¼´ \thuthesis{} æˆé•¿çš„æ–°è€åŒå­¦ï¼
%
% æ¬¢è¿Žå„ä½åˆ° \href{http://github.com/tuna/thuthesis/}{\thuthesis{} GitHub ä¸»é¡µ}è´¡çŒ®ï¼
%
%
% ^^A redefine some commands in markdown package to remove annoying section numbering
% \renewcommand{\markdownRendererHeadingTwo}[1]{\subsection*{#1}}
% \renewcommand{\markdownRendererHeadingThree}[1]{\subsubsection*{#1}}
% ^^A render changelog from markdown
% \markdownInput{CHANGELOG.md}
%
%
% \StopEventually{\PrintIndex}
% \clearpage
%
% \section{å®žçŽ°ç»†èŠ‚}
%
% \subsection{åŸºæœ¬ä¿¡æ¯}
%    \begin{macrocode}
%&lt;cls&gt;\NeedsTeXFormat{LaTeX2e}[2017/04/15]
%&lt;cls&gt;\ProvidesClass{thuthesis}
%&lt;cls&gt;[2025/03/28 7.6.0 Tsinghua University Thesis Template]
%    \end{macrocode}
%
% æŠ¥é”™
%    \begin{macrocode}
\newcommand\thu@error[1]{%
  \ClassError{thuthesis}{#1}{}%
}
\newcommand\thu@warning[1]{%
  \ClassWarning{thuthesis}{#1}%
}
\newcommand\thu@debug[1]{%
  \typeout{Package thuthesis Info: #1}%
}
\newcommand\thu@patch@error[1]{%
  \thu@error{Failed to patch command \protect#1}%
}
\newcommand\thu@deprecate[2]{%
  \def\thu@@tmp{#2}%
  \thu@warning{%
    The #1 is deprecated%
    \ifx\thu@@tmp\@empty\else
      . Use #2 instead%
    \fi
  }%
}
%    \end{macrocode}
%
% æ£€æŸ¥ \LaTeXe{} kernel ç‰ˆæœ¬
%    \begin{macrocode}
\@ifl@t@r\fmtversion{2017/04/15}{}{
  \thu@error{%
    TeX Live 2017 or later version is required to compile this document%
  }
}
%    \end{macrocode}
%
% æ£€æŸ¥ç¼–è¯‘å¼•æ“Žï¼Œè¦æ±‚ä½¿ç”¨ \XeLaTeXã€‚
%    \begin{macrocode}
\RequirePackage{iftex}
\ifXeTeX\else
  \ifLuaTeX\else
    \thu@error{XeLaTeX or LuaLaTeX is required to compile this document}
  \fi
\fi
%    \end{macrocode}
%
% è½½å…¥ç”¨äºŽæµ‹è¯•çš„é…ç½®ã€‚
%    \begin{macrocode}
\InputIfFileExists{thuthesis-pdf-test-config.tex}{}{
  \InputIfFileExists{thuthesis-log-test-config.tex}{}{}
}
%    \end{macrocode}
%
% \subsection{å®šä¹‰é€‰é¡¹}
% \label{sec:defoption}
% å®šä¹‰è®ºæ–‡ç±»åž‹ä»¥åŠæ˜¯å¦æ¶‰å¯†
%    \begin{macrocode}
%&lt;*cls&gt;
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
\def\version{7.6.0}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
  family=thu,
  prefix=thu@,
  setkeys=\kvsetkeys}
%    \end{macrocode}
%
% \begin{macro}{\thusetup}
% æä¾›ä¸€ä¸ª \cs{thusetup} å‘½ä»¤æ”¯æŒ \emph{key-value} çš„æ–¹å¼æ¥è®¾ç½®ã€‚
%    \begin{macrocode}
\let\thu@setup@hook\@empty
\newcommand\thusetup[1]{%
  \let\thu@setup@hook\@empty
  \kvsetkeys{thu}{#1}%
  \thu@setup@hook
}
%    \end{macrocode}
% \end{macro}
%
% åŒæ—¶ç”¨ \emph{key-value} çš„æ–¹å¼æ¥å®šä¹‰è¿™äº›æŽ¥å£ï¼š
% \begin{latex}
%   \thu@define@key{
%     &lt;key&gt; = {
%       name = &lt;name&gt;,
%       choices = {
%         &lt;choice1&gt;,
%         &lt;choice2&gt;,
%       },
%       default = &lt;default&gt;,
%     },
%   }
% \end{latex}
%
% å…¶ä¸­ |choices| è®¾ç½®å…è®¸ä½¿ç”¨çš„å€¼ï¼Œé»˜è®¤ä¸ºç¬¬ä¸€ä¸ªï¼ˆæˆ–è€… \meta{default}ï¼‰ï¼›
% \meta{code} æ˜¯ç›¸åº”çš„å†…å®¹è¢«è®¾ç½®æ—¶æ‰§è¡Œçš„ä»£ç&nbsp;ã€‚
%
%    \begin{macrocode}
\newcommand\thu@define@key[1]{%
  \kvsetkeys{thu@key}{#1}%
}
\kv@set@family@handler{thu@key}{%
%    \end{macrocode}
%
% \cs{thusetup} ä¼šå°† \meta{value} å­˜åˆ° \cs{thu@\meta{key}}ï¼Œ
% ä½†æ˜¯å®çš„åå­—åŒ…å« â€œ-â€ è¿™æ&nbsp;·çš„ç‰¹æ®Šå­—ç¬¦æ—¶ä¸æ–¹ä¾¿ç›´æŽ¥è°ƒç”¨ï¼Œæ¯”å¦‚ |key = math-style|ï¼Œ
% è¿™æ—¶å¯ä»¥ç”¨ |name| è®¾ç½® \meta{key} çš„åˆ«ç§°ï¼Œæ¯”å¦‚ |key = math@style|ï¼Œ
% è¿™æ&nbsp;·å°±å¯ä»¥é€šè¿‡ \cs{thu@math@style} æ¥å¼•ç”¨ã€‚
% |default| æ˜¯å®šä¹‰è¯¥ \meta{key} æ—¶é»˜è®¤çš„å€¼ï¼Œç¼ºçœä¸ºç©ºã€‚
%
%    \begin{macrocode}
  \@namedef{thu@#1@@name}{#1}%
  \def\thu@@default{}%
  \def\thu@@choices{}%
  \kv@define@key{thu@value}{name}{%
    \@namedef{thu@#1@@name}{##1}%
  }%
%    \end{macrocode}
%
% ç”±äºŽåœ¨å®šä¹‰æŽ¥å£æ—¶ï¼Œ\cs{thu@\meta{key}@@code} ä¸ä¸€å®šæœ‰å®šä¹‰ï¼Œ
% è€Œä¸”åœ¨æ–‡æ¡£ç±»/å®åŒ…ä¸­è¿˜æœ‰å¯èƒ½å¯¹è¯¥ |key| çš„ |code| è¿›è¡Œæ·»åŠ&nbsp;ã€‚
% æ‰€ä»¥ \cs{thu@\meta{key}@@code} ä¼šæ£€æŸ¥å¦‚æžœåœ¨å®šä¹‰æ–‡æ¡£ç±»/å®åŒ…æ—¶åˆ™æŽ¨è¿Ÿæ‰§è¡Œï¼Œå¦åˆ™ç«‹å³æ‰§è¡Œã€‚
%
%    \begin{macrocode}
  \@namedef{thu@#1@@check}{}%
  \@namedef{thu@#1@@code}{}%
%    \end{macrocode}
%
% ä¿å­˜ä¸‹ |choices = {}| å®šä¹‰çš„å†…å®¹ï¼Œåœ¨å®šä¹‰ \cs{thu@\meta{name}} åŽå†æ‰§è¡Œã€‚
%
%    \begin{macrocode}
  \kv@define@key{thu@value}{choices}{%
    \def\thu@@choices{##1}%
    \@namedef{thu@#1@@reset}{}%
%    \end{macrocode}
%
% \cs{thu@\meta{key}@check} æ£€æŸ¥ |value| æ˜¯å¦æœ‰æ•ˆï¼Œ
% å¹¶è®¾ç½® \cs{ifthu@\meta{name}@\meta{value}}ã€‚
%
%    \begin{macrocode}
    \@namedef{thu@#1@@check}{%
      \@ifundefined{%
        ifthu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}%
      }{%
        \thu@error{Invalid value "#1 = \@nameuse{thu@\@nameuse{thu@#1@@name}}"}%
      }%
      \@nameuse{thu@#1@@reset}%
      \@nameuse{thu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}true}%
    }%
  }%
  \kv@define@key{thu@value}{default}{%
    \def\thu@@default{##1}%
  }%
  \kvsetkeys{thu@value}{#2}%
  \@namedef{thu@\@nameuse{thu@#1@@name}}{}%
%    \end{macrocode}
%
% ç¬¬ä¸€ä¸ª \meta{choice} è®¾ä¸º \meta{default}ï¼Œ
% å¹¶ä¸”å¯¹æ¯ä¸ª \meta{choice} å®šä¹‰ \cs{ifthu@\meta{name}@\meta{choice}}ã€‚
%
%    \begin{macrocode}
  \kv@set@family@handler{thu@choice}{%
    \ifx\thu@@default\@empty
      \def\thu@@default{##1}%
    \fi
    \expandafter\newif\csname ifthu@\@nameuse{thu@#1@@name}@##1\endcsname
    \expandafter\g@addto@macro\csname thu@#1@@reset\endcsname{%
      \@nameuse{thu@\@nameuse{thu@#1@@name}@##1false}%
    }%
  }%
  \kvsetkeys@expandafter{thu@choice}{\thu@@choices}%
%    \end{macrocode}
%
% å°† \meta{default} èµ‹å€¼åˆ° \cs{thu@\meta{name}}ï¼Œå¦‚æžœéžç©ºåˆ™æ‰§è¡Œç›¸åº”çš„ä»£ç&nbsp;ã€‚
%
%    \begin{macrocode}
  \expandafter\let\csname thu@\@nameuse{thu@#1@@name}\endcsname\thu@@default
  \expandafter\ifx\csname thu@\@nameuse{thu@#1@@name}\endcsname\@empty\else
    \@nameuse{thu@#1@@check}%
  \fi
%    \end{macrocode}
%
% å®šä¹‰ \cs{thusetup} æŽ¥å£ã€‚
%
%    \begin{macrocode}
  \kv@define@key{thu}{#1}{%
    \@namedef{thu@\@nameuse{thu@#1@@name}}{##1}%
    \@nameuse{thu@#1@@check}%
    \@nameuse{thu@#1@@code}%
  }%
}
%    \end{macrocode}
%
% å®šä¹‰æŽ¥å£å‘ |key| æ·»åŠ&nbsp; |code|ï¼š
%
%    \begin{macrocode}
\newcommand\thu@option@hook[2]{%
  \expandafter\g@addto@macro\csname thu@#1@@code\endcsname{#2}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\thu@define@key{
  thesis-type = {
    name = thesis@type,
    choices = {
      thesis,
      proposal,
    },
    default = thesis,
  },
  degree = {
    choices = {
      bachelor,
      master,
      doctor,
      postdoc,
    },
    default = doctor,
  },
  degree-type = {
    choices = {
      academic,
      professional,
    },
    name = degree@type,
  },
%    \end{macrocode}
%
% è®ºæ–‡çš„ä¸»è¦è¯­è¨€ã€‚
%    \begin{macrocode}
  main-language = {
    name = main@language,
    choices = {
      chinese,
      english,
    },
  },
%    \end{macrocode}
%
% ç”¨äºŽè®¾ç½®å±€éƒ¨è¯­è¨€ã€‚
%    \begin{macrocode}
  language = {
    choices = {
      chinese,
      english,
    },
  },
%    \end{macrocode}
%
% å­—ä½“
%    \begin{macrocode}
  system = {
    choices = {
      auto,
      mac,
      unix,
      windows,
    },
    default = auto,
  },
  fontset = {
    choices = {
      auto,
      windows,
      mac,
      ubuntu,
      fandol,
      none,
    },
    default = auto,
  },
  font = {
    choices = {
      auto,
      times,
      termes,
      stix,
      xits,
      libertinus,
      newcm,
      lm,
      newtx,
      none,
    },
    default = auto,
  },
  cjk-font = {
    name = cjk@font,
    choices = {
      auto,
      windows,
      windows-local,
      mac,
      mac-word,
      noto,
      fandol,
      none,
    },
    default = auto,
  },
  windows-font-dir = {
    name = windows@font@dir,
    default = {.},
  },
  math-font = {
    name = math@font,
    choices = {
      auto,
      stix,
      xits,
      libertinus,
      newcm,
      lm,
      newtx,
      none,
    },
    default = auto,
  },
  math-style = {
    name = math@style,
    choices = {
      GB,
      ISO,
      TeX,
    },
  },
  uppercase-greek = {
    name = uppercase@greek,
    choices = {
      italic,
      upright,
    },
  },
  less-than-or-equal = {
    name = leq,
    choices = {
      slanted,
      horizontal,
    },
  },
  integral = {
    choices = {
      upright,
      slanted,
    },
  },
  integral-limits = {
    name = integral@limits,
    choices = {
      true,
      false,
    },
  },
  partial = {
    choices = {
      upright,
      italic,
    },
  },
  math-ellipsis = {
    name = math@ellipsis,
    choices = {
      centered,
      lower,
      AMS,
    },
  },
  real-part = {
    name = real@part,
    choices = {
      roman,
      fraktur,
    },
  },
%    \end{macrocode}
%
% é€‰æ‹©æ‰“å°ç‰ˆè¿˜æ˜¯ç”¨äºŽä¸Šä¼&nbsp;çš„ç”µå­ç‰ˆã€‚
%    \begin{macrocode}
  output = {
    choices = {
      print,
      electronic,
    },
    default = print,
  },
%    \end{macrocode}
%
% æ•°å­¦å…¬å¼ç¼–å·çš„æ‹¬å·ä½¿ç”¨å…¨è§’è¿˜æ˜¯åŠè§’ã€‚
%    \begin{macrocode}
  eqn-paren-style = {
    name = eqn@paren@style,
    choices = {
      full,
      half,
    }
  },
}
\newif\ifthu@degree@graduate
\newcommand\thu@set@graduate{%
  \thu@degree@graduatefalse
  \ifthu@degree@doctor
    \thu@degree@graduatetrue
  \fi
  \ifthu@degree@master
    \thu@degree@graduatetrue
  \fi
}
\thu@set@graduate
\thu@option@hook{degree}{%
  \thu@set@graduate
}
%    \end{macrocode}
%
% è®¾ç½®é»˜è®¤ \option{openany}ã€‚
%    \begin{macrocode}
\DeclareBoolOption[false]{openright}
\DeclareComplementaryOption{openany}{openright}
%    \end{macrocode}
%
% \option{raggedbottom} é€‰é¡¹ï¼ˆé»˜è®¤æ‰“å¼€ï¼‰
%    \begin{macrocode}
\DeclareBoolOption[true]{raggedbottom}
%    \end{macrocode}
%
% å°†é€‰é¡¹ä¼&nbsp;é€’ç»™ \pkg{ctexbook}ã€‚
%    \begin{macrocode}
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
%    \end{macrocode}
%
% è§£æžç”¨æˆ·ä¼&nbsp;é€’è¿‡æ¥çš„é€‰é¡¹ï¼Œå¹¶åŠ&nbsp;è½½ \pkg{ctexbook}ã€‚
%    \begin{macrocode}
\ProcessKeyvalOptions*
%    \end{macrocode}
%
% è®¾ç½®é»˜è®¤ \option{openany}ã€‚
%    \begin{macrocode}
\ifthu@openright
  \PassOptionsToClass{openright}{book}
\else
  \PassOptionsToClass{openany}{book}
\fi
%    \end{macrocode}
%
% \pkg{unicode-math} å’Œ \pkg{newtx} éƒ½ä¸éœ€è¦ \pkg{fontspec} è®¾ç½®æ•°å­¦å­—ä½“ã€‚
%    \begin{macrocode}
\PassOptionsToPackage{no-math}{fontspec}
%    \end{macrocode}
%
% ä½¿ç”¨ \pkg{ctexbook} ç±»ï¼Œä¼˜äºŽè°ƒç”¨ \pkg{ctex} å®åŒ…ã€‚
%    \begin{macrocode}
\LoadClass[a4paper,UTF8,zihao=-4,scheme=plain,fontset=none]{ctexbook}[2017/04/01]
%    \end{macrocode}
%
%
% \subsection{è£…è½½å®åŒ…}
% \label{sec:loadpackage}
%
% å¼•ç”¨çš„å®åŒ…å’Œç›¸åº”çš„å®šä¹‰ã€‚
%    \begin{macrocode}
\RequirePackage{etoolbox}
\RequirePackage{filehook}
\RequirePackage{xparse}
%    \end{macrocode}
%
%    \begin{macrocode}
\RequirePackage{geometry}%
%    \end{macrocode}
%
% åˆ©ç”¨ \pkg{fancyhdr} è®¾ç½®é¡µçœ‰é¡µè„šã€‚
%    \begin{macrocode}
\RequirePackage{fancyhdr}
%    \end{macrocode}
%
%    \begin{macrocode}
\RequirePackage{titletoc}
%    \end{macrocode}
%
% åˆ©ç”¨ \pkg{notoccite} é¿å…ç›®å½•ä¸­å¼•ç”¨ç¼–å·æ··ä¹±ã€‚
%    \begin{macrocode}
\RequirePackage{notoccite}
%    \end{macrocode}
%
% \AmSTeX\ å®åŒ…ï¼Œç”¨æ¥æŽ’å‡ºæ›´åŠ&nbsp;æ¼‚äº®çš„å…¬å¼ã€‚
%    \begin{macrocode}
\RequirePackage{amsmath}
%    \end{macrocode}
%
% å›¾å½¢æ”¯æŒå®åŒ…ã€‚
%    \begin{macrocode}
\RequirePackage{graphicx}
%    \end{macrocode}
%
% å¹¶æŽ’å›¾å½¢ã€‚\pkg{subfigure}ã€\pkg{subfig} å·²ç»ä¸å†æŽ¨èï¼Œç”¨æ–°çš„ \pkg{subcaption}ã€‚
% æµ®åŠ¨å›¾å½¢å’Œè¡¨æ&nbsp;¼æ&nbsp;‡é¢˜æ&nbsp;·å¼ã€‚\pkg{caption2} å·²ç»ä¸æŽ¨èä½¿ç”¨ï¼Œé‡‡ç”¨æ–°çš„ \pkg{caption}ã€‚
%    \begin{macrocode}
\RequirePackage[labelformat=simple]{subcaption}
%    \end{macrocode}
%
% \pkg{pdfpages} å®åŒ…ä¾¿äºŽæˆ‘ä»¬æ’å…¥æ‰«æåŽçš„æŽˆæƒè¯´æ˜Žå’Œå£°æ˜Žé¡µ PDF æ–‡æ¡£ã€‚
%
% ç”±äºŽ \pkg{pdfpages} è·Ÿ \pkg{TikZ} çš„ \pkg{external} åº“å†²çªï¼Œ
% éœ€è¦åœ¨å¯¼è¨€åŒºçš„ç»“å°¾è¿›è¡Œå¤„ç†ï¼Œè§
% \href{https://github.com/tuna/thuthesis/issues/693}{\#693}ã€‚
%    \begin{macrocode}
\RequirePackage{pdfpages}
\includepdfset{fitpaper=true}
\AtEndPreamble{
  \ifx\tikzifexternalizing\@undefined\else
    \tikzifexternalizing{
      \renewcommand*\includepdf[2][]{}
    }{}
  \fi
}
%    \end{macrocode}
%
% æ›´å¥½çš„åˆ—è¡¨çŽ¯å¢ƒã€‚
%    \begin{macrocode}
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{environ}
%    \end{macrocode}
%
% ç¦æ­¢ \LaTeX{} è‡ªåŠ¨è°ƒæ•´å¤šä½™çš„é¡µé¢åº•éƒ¨ç©ºç™½ï¼Œå¹¶ä¿æŒè„šæ³¨ä»ç„¶åœ¨åº•éƒ¨ã€‚
% è„šæ³¨æŒ‰é¡µç¼–å·ã€‚
%    \begin{macrocode}
\ifthu@raggedbottom
  \RequirePackage[bottom,perpage,hang]{footmisc}
  \raggedbottom
\else
  \RequirePackage[perpage,hang]{footmisc}
\fi
%    \end{macrocode}
%
% åˆ©ç”¨ \pkg{xeCJKfntef} å®žçŽ°æ±‰å­—çš„ä¸‹åˆ’çº¿å’Œç›’å­å†…ä¸¤æ®µå¯¹é½ï¼Œå¹¶å¯ä»¥é¿å…
% \cs{makebox}\oarg{width}\oarg{s} å¯èƒ½äº§ç”Ÿçš„ underful boxesã€‚
%    \begin{macrocode}
\ifXeTeX
  \RequirePackage{xeCJKfntef}
\else
  \RequirePackage{ulem}
\fi
%    \end{macrocode}
%
% è¡¨æ&nbsp;¼æŽ§åˆ¶
%    \begin{macrocode}
\RequirePackage{array}
%    \end{macrocode}
%
% ä½¿ç”¨ä¸‰çº¿è¡¨ï¼š\cs{toprule}ï¼Œ\cs{midrule}ï¼Œ\cs{bottomrule}ã€‚
%    \begin{macrocode}
\RequirePackage{booktabs}
%    \end{macrocode}
%
%    \begin{macrocode}
\RequirePackage{url}
%    \end{macrocode}
%
% å¦‚æžœç”¨æˆ·åœ¨å¯¼è¨€åŒºæœªè°ƒç”¨ \pkg{biblatex}ï¼Œåˆ™è‡ªåŠ¨è°ƒç”¨ \pkg{natbib}ã€‚
%    \begin{macrocode}
\AtEndPreamble{
  \@ifpackageloaded{biblatex}{}{
    \@ifpackageloaded{apacite}{}{
      \RequirePackage{natbib}
    }
  }
}
\AtEndOfPackageFile*{natbib}{
  \@ifpackageloaded{apacite}{}{
    \RequirePackage{bibunits}
  }
}
%    \end{macrocode}
%
% å¯¹å†²çªçš„å®åŒ…æŠ¥é”™ã€‚
%    \begin{macrocode}
\newcommand\thu@package@conflict[2]{%
  \AtEndOfPackageFile*{#1}{%
    \AtBeginOfPackageFile*{#2}{%
      \thu@error{The "#2" package is incompatible with "#1"}%
    }%
  }%
}
\thu@package@conflict{biblatex}{bibunits}
\thu@package@conflict{biblatex}{chapterbib}
\thu@package@conflict{biblatex}{cite}
\thu@package@conflict{biblatex}{multibib}
\thu@package@conflict{biblatex}{natbib}

\thu@package@conflict{bibunits}{biblatex}
\thu@package@conflict{bibunits}{chapterbib}
\thu@package@conflict{bibunits}{multibib}

\thu@package@conflict{unicode-math}{amscd}
\thu@package@conflict{unicode-math}{amsfonts}
\thu@package@conflict{unicode-math}{amssymb}
\thu@package@conflict{unicode-math}{bbm}
\thu@package@conflict{unicode-math}{bm}
\thu@package@conflict{unicode-math}{eucal}
\thu@package@conflict{unicode-math}{eufrak}
\thu@package@conflict{unicode-math}{mathrsfs}
\thu@package@conflict{unicode-math}{newtxmath}
\thu@package@conflict{unicode-math}{upgreek}

\thu@package@conflict{natbib}{biblatex}
\thu@package@conflict{natbib}{cite}

\thu@package@conflict{newtxmath}{amsfonts}
\thu@package@conflict{newtxmath}{amssymb}
\thu@package@conflict{newtxmath}{unicode-math}
\thu@package@conflict{newtxmath}{upgreek}
%    \end{macrocode}
%
% \pkg{amsthm} éœ€è¦åœ¨ \pkg{newtx} å‰è½½å…¥ï¼Œå‚è€ƒ \pkg{newtx} çš„æ–‡æ¡£ã€‚
%    \begin{macrocode}
\AtBeginOfPackageFile*{amsthm}{
  \@ifpackageloaded{newtxmath}{
    \thu@error{The "amsthm" package should be loaded before setting "newtxmath"}
  }{}
}%
%    \end{macrocode}
%
% \subsection{é¡µé¢è®¾ç½®}
% \label{sec:layout}
%
% ç&nbsp;”ç©¶ç”Ÿã€Šå†™ä½œæŒ‡å—ã€‹ï¼š
% é¡µè¾¹è·ï¼šä¸Šä¸‹å·¦å³å‡ä¸º 3.0 åŽ˜ç±³ï¼Œè£…è®¢çº¿ 0 åŽ˜ç±³ï¼›
% é¡µçœ‰è·è¾¹ç•Œï¼š2.2 åŽ˜ç±³ï¼Œé¡µè„šè·è¾¹ç•Œï¼š2.2 åŽ˜ç±³ã€‚
%
% æœ¬ç§‘ç”Ÿã€Šå†™ä½œè§„èŒƒã€‹ï¼š
% é¡µè¾¹è·ï¼š3 åŽ˜ç±³ï¼Œè£…è®¢çº¿ï¼š0 åŽ˜ç±³ã€‚
% æœ¬ç§‘ç”Ÿ Word æ¨¡æ¿ï¼š
% æ—&nbsp;é¡µçœ‰ï¼Œé¡µè„šè·è¾¹ç•Œï¼š1.5 åŽ˜ç±³ã€‚
%
% \pkg{fancyhdr} çš„é¡µçœ‰æ˜¯æ²¿åº•éƒ¨å¯¹é½çš„ï¼Œæ‰€ä»¥åªéœ€è®¾ç½® \cs{headsep}ï¼Œ
% \cs{headheight} å¯ä»¥é€‚å½“å¢žåŠ&nbsp;é«˜åº¦å…è®¸å¤šè¡Œé¡µçœ‰ã€‚
% ç&nbsp;”ç©¶ç”Ÿï¼š\cs{headsep} = $\SI{3}{cm} - \SI{2.2}{cm} - \SI{10.5}{bp} \times 1.3
% \approx \SI{0.3}{cm}$ã€‚
%
%    \begin{macrocode}
\geometry{
  paper          = a4paper,  % 210 * 297mm
  marginparwidth = 2cm,
  marginparsep   = 0.5cm,
}
\newcommand\thu@set@geometry{%
  \ifthu@degree@bachelor
    \geometry{
      margin     = 3cm,
      footskip   = 1.5cm,
    }%
  \else
    \geometry{
      margin     = 3cm,
      headheight = 2.7cm,
      headsep    = 0.3cm,
      footskip   = 0.8cm,
    }%
  \fi
}
\thu@set@geometry
\thu@option@hook{degree}{\thu@set@geometry}
\thu@option@hook{output}{\thu@set@geometry}
%    \end{macrocode}
%
%
% \subsection{è¯­è¨€è®¾ç½®}
%
% å®šä¹‰ \cs{thu@main@language}ï¼Œå½“åœ¨å¯¼è¨€åŒºä¿®æ”¹ \option{language} æ—¶ï¼Œ
% ä¿å­˜ä¸ºè®ºæ–‡çš„ä¸»è¦è¯­è¨€ï¼›
% \cs{thu@reset@main@language} åˆ™ç”¨äºŽæ­£æ–‡ä¸­æ¢å¤ä¸ºä¸»è¦è¯­è¨€ã€‚
%    \begin{macrocode}
\thusetup{main-language=\thu@language}%
\let\thu@main@language\thu@language
\thu@option@hook{language}{%
  \ifx\@begindocumenthook\@undefined\else
    \thusetup{main-language=\thu@language}%
    \let\thu@main@language\thu@language
  \fi
}
\newcommand\thu@reset@main@language{%
  \thusetup{language = \thu@main@language}%
  \let\thu@language\thu@main@language
}
%    \end{macrocode}
%
% æ&nbsp;¹æ®è¯­è¨€è®¾ç½®å„ç«&nbsp;èŠ‚çš„åç§°ï¼Œåªæœ‰åœ¨å¯¼è¨€åŒºè®¾ç½® \option{degree} å’Œ
% \option{language} æ—¶ä¼šä¿®æ”¹ï¼Œè€Œåœ¨æ­£æ–‡å±€éƒ¨åˆ‡æ¢è¯­è¨€æ—¶åˆ™ä¸å˜ã€‚
%    \begin{macrocode}
\newcommand\thu@set@chapter@names{%
  \ifthu@degree@bachelor
    \def\thu@statement@name{å£°æ˜Ž}%
  \else
    \def\thu@statement@name{å£°\hspace{1em}æ˜Ž}%
  \fi
  \ifthu@main@language@chinese
    \def\listfigurename{æ’å›¾æ¸…å•}%
    \def\listtablename{é™„è¡¨æ¸…å•}%
    \def\thu@list@figure@table@name{æ’å›¾å’Œé™„è¡¨æ¸…å•}%
    \def\thu@list@algorithm@name{ç®—æ³•æ¸…å•}%
    \def\thu@denotation@name{ç¬¦å·å’Œç¼©ç•¥è¯­è¯´æ˜Ž}%
    \def\thu@comments@name{æŒ‡å¯¼æ•™å¸ˆè¯„è¯­}%
    \def\bibname{å‚è€ƒæ–‡çŒ®}%
    \def\appendixname{é™„å½•}%
    \def\indexname{ç´¢å¼•}%
    \def\thu@resolution@name{ç­”è¾©å§”å‘˜ä¼šå†³è®®ä¹¦}%
    \ifthu@degree@bachelor
      \def\contentsname{ç›®å½•}%
      \def\thu@acknowledgements@name{è‡´è°¢}%
      \def\listequationname{å…¬å¼ç´¢å¼•}%
      \def\thu@resume@name{åœ¨å­¦æœŸé—´å‚åŠ&nbsp;è¯¾é¢˜çš„ç&nbsp;”ç©¶æˆæžœ}%
    \else
      \def\listequationname{å…¬å¼æ¸…å•}%
      \def\thu@acknowledgements@name{è‡´\quad è°¢}%
      \ifthu@degree@graduate
        \def\contentsname{ç›®\quad å½•}%
        \def\thu@resume@name{ä¸ªäººç®€åŽ†ã€åœ¨å­¦æœŸé—´å®Œæˆçš„ç›¸å…³å­¦æœ¯æˆæžœ}%
      \else  % degree = postdoc
        \def\contentsname{ç›®\qquad æ¬¡}%
        \def\thu@denotation@name{ç¬¦å·è¡¨}%
        \def\thu@resume@name{ä¸ªäººç®€åŽ†ã€å‘è¡¨çš„å­¦æœ¯è®ºæ–‡ä¸Žç§‘ç&nbsp;”æˆæžœ}%
      \fi
    \fi
  \else
    \ifthu@main@language@english
      \def\thu@comments@name{Comments from Thesis Supervisor}%
      \def\thu@resolution@name{Resolution of Thesis Defense Committee}%
      \def\indexname{Index}%
      \ifthu@degree@bachelor
        \def\contentsname{CONTENTS}%
        \def\listfigurename{FIGURES}%
        \def\listtablename{TABLES}%
        \def\thu@list@figure@table@name{FIGURES AND TABLES}%
        \def\thu@list@algorithm@name{ALGORITHMS}%
        \def\listequationname{EQUATIONS}%
        \def\thu@denotation@name{ABBREVIATIONS}%
        \def\bibname{REFERENCES}%
        \def\appendixname{APPENDIX}%
        \def\thu@acknowledgements@name{ACKNOWLEDGEMENTS}%
        \def\thu@resume@name{PUBLICATIONS}%
      \else
        \def\contentsname{Table of Contents}%
        \def\listfigurename{List of Figures}%
        \def\listtablename{List of Tables}%
        \def\thu@list@figure@table@name{List of Figures and Tables}%
        \def\thu@list@algorithm@name{List of Algorithms}%
        \def\listequationname{List of Equations}%
        \def\thu@denotation@name{List of Symbols and Acronyms}%
        \def\bibname{References}%
        \def\appendixname{Appendix}%
        \def\thu@acknowledgements@name{Acknowledgements}%
        \def\thu@resume@name{Resume}%
      \fi
    \fi
  \fi
}
\thu@set@chapter@names
\thu@option@hook{degree}{\thu@set@chapter@names}
\thu@option@hook{main-language}{\thu@set@chapter@names}
%    \end{macrocode}
%
% è¿™éƒ¨åˆ†åç§°åœ¨æ­£æ–‡ä¸­å±€éƒ¨åœ°ä¿®æ”¹è¯­è¨€æ—¶ä¼šå‘ç”Ÿå˜åŒ–ï¼Œæ¯”å¦‚è‹±æ–‡æ‘˜è¦ã€
% æœ¬ç§‘ç”Ÿé™„å½•çš„é˜…è¯»æŠ¥å‘Šã€‚
%    \begin{macrocode}
\newcommand\thu@set@names{%
  \ifthu@language@chinese
    \ctexset{
      figurename = å›¾,
      tablename  = è¡¨,
    }%
    \def\thu@algorithm@name{ç®—æ³•}%
    \def\thu@equation@name{å…¬å¼}%
    \def\thu@assumption@name{å‡è®¾}%
    \def\thu@definition@name{å®šä¹‰}%
    \def\thu@proposition@name{å‘½é¢˜}%
    \def\thu@lemma@name{å¼•ç†}%
    \def\thu@theorem@name{å®šç†}%
    \def\thu@axiom@name{å…¬ç†}%
    \def\thu@corollary@name{æŽ¨è®º}%
    \def\thu@exercise@name{ç»ƒä¹&nbsp;}%
    \def\thu@example@name{ä¾‹}%
    \def\thu@remark@name{æ³¨é‡Š}%
    \def\thu@problem@name{é—®é¢˜}%
    \def\thu@conjecture@name{çŒœæƒ³}%
    \def\thu@proof@name{è¯æ˜Ž}%
    \def\thu@theorem@separator{ï¼š}%
  \else
    \ifthu@language@english
      \ctexset{
        figurename = {Figure},
        tablename  = {Table},
      }%
      \def\thu@algorithm@name{Algorithm}%
      \def\thu@equation@name{Equation}%
      \def\thu@assumption@name{Assumption}%
      \def\thu@definition@name{Definition}%
      \def\thu@proposition@name{Proposition}%
      \def\thu@lemma@name{Lemma}%
      \def\thu@theorem@name{Theorem}%
      \def\thu@axiom@name{Axiom}%
      \def\thu@corollary@name{Corollary}%
      \def\thu@exercise@name{Exercise}%
      \def\thu@example@name{Example}%
      \def\thu@remark@name{Remark}%
      \def\thu@problem@name{Problem}%
      \def\thu@conjecture@name{Conjecture}%
      \def\thu@proof@name{Proof}%
      \def\thu@theorem@separator{: }%
    \fi
  \fi
}
\thu@set@names
\thu@option@hook{language}{\thu@set@names}
%    \end{macrocode}
%
% å¸¦åœˆæ•°å­—å’Œæ˜Ÿå·ä½¿ç”¨ä¸­æ–‡å­—ä½“ã€‚
%    \begin{macrocode}
\ifLuaTeX
  % ctex å°†å¸¦åœˆæ•°å­— U+2460â€“U+24FF å½’å…¥å­—ç¬¦èŒƒå›´ 3ï¼ˆALcharï¼‰ï¼Œè¿™é‡Œæ”¹å›žèŒƒå›´ 6ï¼ˆJAcharï¼‰
  \ltjdefcharrange{3}{%
    "2000-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF}
  \ltjdefcharrange{6}{%
    "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF,
    "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF,
    "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF}
\else
  \ifXeTeX
    \xeCJKDeclareCharClass{CJK}{"2460 -&gt; "2473}
    \xeCJKDeclareCharClass{CJK}{"2605}
  \fi
\fi
%    \end{macrocode}
%
% \newcommand\unicodechar[1]{U+#1ï¼ˆ\symbol{"#1}ï¼‰}
% ç”±äºŽ Unicode çš„ä¸€äº›æ&nbsp;‡ç‚¹ç¬¦å·æ˜¯ä¸­è¥¿æ–‡æ··ç”¨çš„ï¼š
% \unicodechar{00B7}ã€
% \unicodechar{2013}ã€
% \unicodechar{2014}ã€
% \unicodechar{2018}ã€
% \unicodechar{2019}ã€
% \unicodechar{201C}ã€
% \unicodechar{201D}ã€
% \unicodechar{2025}ã€
% \unicodechar{2026}ã€
% \unicodechar{2E3A}ï¼Œ
% æ‰€ä»¥è¦æ&nbsp;¹æ®è¯­è¨€è®¾ç½®æ­£ç¡®çš„å­—ä½“ã€‚
% \footnote{\url{https://github.com/CTeX-org/ctex-kit/issues/389}}
% æ­¤å¤–åˆ‡æ¢è¯­è¨€æ—¶ï¼Œæœ‰ä¸€éƒ¨åˆ†åç§°æ˜¯éœ€è¦è¢«é‡æ–°å®šä¹‰çš„ã€‚
%    \begin{macrocode}
\newcommand\thu@set@punctuations{%
  \ifthu@language@chinese
    \ifLuaTeX
      \ltjsetparameter{jacharrange={+9}}
    \else
      \ifXeTeX
        \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}%
        \xeCJKDeclareCharClass{FullRight}{
          "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
        }%
      \fi
    \fi
  \else
    \ifthu@language@english
      \ifLuaTeX
        \ltjsetparameter{jacharrange={-9}}
      \else
        \ifXeTeX
          \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
          \xeCJKDeclareCharClass{HalfRight}{
            "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
          }%
        \fi
      \fi
    \fi
  \fi
}
\thu@set@punctuations
\thu@option@hook{language}{\thu@set@punctuations}
%    \end{macrocode}
%
% \subsection{å­—ä½“}
% \label{sec:font}
%
% \subsubsection{å­—å·}
%
% \begin{macro}{\normalsize}
% æ­£æ–‡å°å››å·ï¼ˆ12bpï¼‰å­—ï¼Œè¡Œè·ä¸ºå›ºå®šå€¼ 20 bpã€‚
% å…¶ä»–å­—å·çš„è¡Œè·æŒ‰ç…§ç›¸åŒçš„æ¯”ä¾‹è®¾ç½®ã€‚
%
% æ³¨æ„é‡å®šä¹‰ \cs{normalsize} åº”åœ¨ \pkg{unicode-math} çš„ \cs{setmathfont} å‰ã€‚
%
% è¡¨è¾¾å¼è¡Œçš„è¡Œè·ä¸ºå•å€è¡Œè·ï¼Œæ®µå‰ç©º 6 ç£…ï¼Œæ®µåŽç©º 6 ç£…ã€‚
%
% \cs{small} ç­‰å…¶ä»–å‘½ä»¤é€šå¸¸ç”¨äºŽè¡¨æ&nbsp;¼ç­‰çŽ¯å¢ƒä¸­ï¼Œè¿™éƒ¨åˆ†è¦æ±‚å•å€è¡Œè·ï¼Œä¸Žæ­£æ–‡çš„å­—å·-è¡Œè·æ¯”ä¾‹ä¸åŒï¼Œ
% æ‰€ä»¥ä¿ç•™é»˜è®¤çš„ 1.2 å€å­—å·çš„è¡Œè·ï¼Œä½œä¸ºå•å€è¡Œè·åœ¨è‹±æ–‡ï¼ˆ1.15 å€å­—å·ï¼‰å’Œä¸­æ–‡ï¼ˆ1.3å€å­—å·ï¼‰
% ä¸¤ç§æƒ…å†µçš„æŠ˜è¡·ã€‚
%    \begin{macrocode}
\renewcommand\normalsize{%
  \@setfontsize\normalsize{12bp}{20bp}%
  \abovedisplayskip 6bp%
  \abovedisplayshortskip 6bp%
  \belowdisplayshortskip 6bp%
  \belowdisplayskip \abovedisplayskip
}
\normalsize
\ifx\MakeRobust\@undefined \else
    \MakeRobust\normalsize
\fi
%    \end{macrocode}
% \end{macro}
%
% WORD ä¸­çš„å­—å·å¯¹åº”è¯¥å…³ç³»å¦‚ä¸‹ï¼ˆ1bp = 72.27/72 ptï¼‰:
% \begin{center}
% \begin{longtable}{llll}
% \toprule
% åˆå· &amp; 42bp &amp; 14.82mm &amp; 42.1575pt \\
% å°åˆ &amp; 36bp &amp; 12.70mm &amp; 36.135 pt \\
% ä¸€å· &amp; 26bp &amp; 9.17mm &amp; 26.0975pt \\
% å°ä¸€ &amp; 24bp &amp; 8.47mm &amp; 24.09pt \\
% äºŒå· &amp; 22bp &amp; 7.76mm &amp; 22.0825pt \\
% å°äºŒ &amp; 18bp &amp; 6.35mm &amp; 18.0675pt \\
% ä¸‰å· &amp; 16bp &amp; 5.64mm &amp; 16.06pt \\
% å°ä¸‰ &amp; 15bp &amp; 5.29mm &amp; 15.05625pt \\
% å››å· &amp; 14bp &amp; 4.94mm &amp; 14.0525pt \\
% å°å›› &amp; 12bp &amp; 4.23mm &amp; 12.045pt \\
% äº”å· &amp; 10.5bp &amp; 3.70mm &amp; 10.59375pt \\
% å°äº” &amp; 9bp &amp; 3.18mm &amp; 9.03375pt \\
% å…­å· &amp; 7.5bp &amp; 2.56mm &amp; \\
% å°å…­ &amp; 6.5bp &amp; 2.29mm &amp; \\
% ä¸ƒå· &amp; 5.5bp &amp; 1.94mm &amp; \\
% å…«å· &amp; 5bp &amp; 1.76mm &amp; \\\bottomrule
% \end{longtable}
% \end{center}
%
% \begin{macro}{\thu@def@fontsize}
% æ&nbsp;¹æ®ä¹&nbsp;æƒ¯å®šä¹‰å­—å·ã€‚ç”¨æ³•ï¼š
%
% \cs{thu@def@fontsize}\marg{å­—å·åç§°}\marg{ç£…æ•°}
%
% é¿å…äº†å­—å·é€‰æ‹©å’Œè¡Œè·çš„ç´§è€¦åˆã€‚æ‰€æœ‰å­—å·å®šä¹‰æ—¶ä¸ºå•å€è¡Œè·ï¼Œå¹¶æä¾›é€‰é¡¹æŒ‡å®šè¡Œè·å€æ•°ã€‚
%    \begin{macrocode}
\def\thu@def@fontsize#1#2{%
  \expandafter\newcommand\csname #1\endcsname[1][1.3]{%
    \fontsize{#2}{##1\dimexpr #2}\selectfont}}
%    \end{macrocode}
% \end{macro}
%
% ä¸€ç»„å­—å·å®šä¹‰ã€‚
%    \begin{macrocode}
\thu@def@fontsize{chuhao}{42bp}
\thu@def@fontsize{xiaochu}{36bp}
\thu@def@fontsize{yihao}{26bp}
\thu@def@fontsize{xiaoyi}{24bp}
\thu@def@fontsize{erhao}{22bp}
\thu@def@fontsize{xiaoer}{18bp}
\thu@def@fontsize{sanhao}{16bp}
\thu@def@fontsize{xiaosan}{15bp}
\thu@def@fontsize{sihao}{14bp}
\thu@def@fontsize{xiaosi}{12bp}
\thu@def@fontsize{wuhao}{10.5bp}
\thu@def@fontsize{xiaowu}{9bp}
\thu@def@fontsize{liuhao}{7.5bp}
\thu@def@fontsize{xiaoliu}{6.5bp}
\thu@def@fontsize{qihao}{5.5bp}
\thu@def@fontsize{bahao}{5bp}
%    \end{macrocode}
%
% æ£€æµ‹ç³»ç»Ÿã€‚
%    \begin{macrocode}
\ifthu@system@auto
  \IfFileExists{/System/Library/Fonts/Menlo.ttc}{
    \thusetup{system = mac}
  }{
    \IfFileExists{/dev/null}{
      \IfFileExists{null:}{
        \thusetup{system = windows}
      }{
        \thusetup{system = unix}
      }
    }{
      \thusetup{system = windows}
    }
  }
  \thu@debug{Detected system: \thu@system}
\fi
%    \end{macrocode}
%
% ä½¿ç”¨ \pkg{fontspec} é…ç½®å­—ä½“ã€‚
%    \begin{macrocode}
\newcommand\thu@mac@word@font@dir{%
  /Applications/Microsoft Word.app/Contents/Resources/DFonts%
}
\ifthu@fontset@auto
  \ifthu@system@windows
    \thusetup{fontset = windows}
  \else
    \IfFontExistsTF{SimSun}{
      \thusetup{fontset = windows}
    }{
      \IfFileExists{\thu@windows@font@dir/Simsun.ttc}{
        \thusetup{fontset = windows, cjk-font = windows-local}
      }{
        \IfFileExists{\thu@mac@word@font@dir/Simsun.ttc}{
          \thusetup{fontset = windows, cjk-font = mac-word}
        }{
          \ifthu@system@mac
            \thusetup{fontset = mac}
          \else
            \IfFontExistsTF{Noto Serif CJK SC}{
              \thusetup{fontset = ubuntu}
            }{
              \thusetup{fontset = fandol}
            }
          \fi
        }
      }
    }
  \fi
  \thu@debug{Detected fontset: \thu@fontset}
\fi
%    \end{macrocode}
%
% \subsubsection{è¥¿æ–‡å­—ä½“}
%
% ã€ŠæŒ‡å—ã€‹è¦æ±‚è¥¿æ–‡å­—ä½“ä½¿ç”¨ Times New Roman å’Œ Arialï¼Œ
% ä½†æ˜¯åœ¨ Linux ä¸‹æ²¡æœ‰è¿™ä¸¤ä¸ªå­—ä½“ï¼Œæ‰€ä»¥ä½¿ç”¨å®ƒä»¬çš„å…‹éš†ç‰ˆ TeX Gyre Termes å’Œ
% TeX Gyre Herosã€‚
%    \begin{macrocode}
\newcommand\thu@set@font{%
  \@nameuse{thu@set@font@\thu@font}%
}
\thu@option@hook{font}{\thu@set@font}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand\thu@set@font@auto{%
  \ifthu@font@auto
    \ifthu@fontset@windows
      \thusetup{font=times}%
    \else
      \ifthu@fontset@mac
        \thusetup{font=times}%
      \else
        \thusetup{font=termes}%
      \fi
    \fi
  \fi
}
\thu@option@hook{math-font}{\g@addto@macro\thu@setup@hook{\thu@set@font@auto}}
\AtBeginOfPackageFile*{siunitx}{\thu@set@font@auto}
\AtEndPreamble{\thu@set@font@auto}
%    \end{macrocode}
%
% Times New Roman + Arial
%    \begin{macrocode}
\newcommand\thu@set@font@times{%
  \setmainfont{Times New Roman}%
  \setsansfont{Arial}%
  \ifthu@fontset@mac
    \setmonofont{Menlo}[Scale = MatchLowercase]%
  \else
    \setmonofont{Courier New}[Scale = MatchLowercase]%
  \fi
}
%    \end{macrocode}
%
% TeX Gyre Termes
%    \begin{macrocode}
\newcommand\thu@set@font@termes{%
  \setmainfont{texgyretermes}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-italic,
    BoldItalicFont = *-bolditalic,
  ]%
  \thu@set@texgyre@sans@mono
}
\newcommand\thu@set@texgyre@sans@mono{%
  \setsansfont{texgyreheros}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-italic,
    BoldItalicFont = *-bolditalic,
  ]%
  \setmonofont{texgyrecursor}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-italic,
    BoldItalicFont = *-bolditalic,
    Scale          = MatchLowercase,
    Ligatures      = CommonOff,
  ]%
}
%    \end{macrocode}
%
% STIX Two å­—ä½“ã€‚
% STIX æ–‡ä»¶ååœ¨ v2.10 2020-12-19 ä»Ž
% \file{STIX2Text-Regular.otf}ã€\file{STIX2Math.otf} åˆ†åˆ«æ”¹ä¸º
% \file{STIXTwoText-Regular.otf}ã€\file{STIXTwoMath-Regular.otf}ã€‚
%    \begin{macrocode}
\let\thu@font@family@stix\@empty
\newcommand\thu@set@stix@names{%
  \ifx\thu@font@family@stix\@empty
    \IfFontExistsTF{STIXTwoText-Regular.otf}{%
      \gdef\thu@font@family@stix{STIXTwoText}%
      \gdef\thu@font@name@stix@math{STIXTwoMath-Regular}%
    }{%
      \gdef\thu@font@family@stix{STIX2Text}%
      \gdef\thu@font@name@stix@math{STIX2Math}%
    }%
  \fi
}
\newcommand\thu@set@font@stix{%
  \thu@set@stix@names
  \setmainfont{\thu@font@family@stix}[
    Extension      = .otf,
    UprightFont    = *-Regular,
    BoldFont       = *-Bold,
    ItalicFont     = *-Italic,
    BoldItalicFont = *-BoldItalic,
  ]%
  \thu@set@texgyre@sans@mono
}
%    \end{macrocode}
%
% XITS å­—ä½“ã€‚
% XITS çš„æ–‡ä»¶ååœ¨ v1.109 2018-09-30
% ä»Ž \file{xits-regular.otf}ã€\file{xits-math.otf} åˆ†åˆ«æ”¹ä¸º
% \file{XITS-Regular.otf}ã€\file{XITSMath-Regular.otf}ã€‚
%    \begin{macrocode}
\let\thu@font@family@xits\@empty
\newcommand\thu@set@xits@names{%
  \ifx\thu@font@family@xits\@empty
    \IfFontExistsTF{XITSMath-Regular.otf}{%
      \gdef\thu@font@family@xits{XITS}%
      \gdef\thu@font@style@xits@rm{Regular}%
      \gdef\thu@font@style@xits@bf{Bold}%
      \gdef\thu@font@style@xits@it{Italic}%
      \gdef\thu@font@style@xits@bfit{BoldItalic}%
      \gdef\thu@font@name@xits@math{XITSMath-Regular}%
    }{%
      \gdef\thu@font@family@xits{xits}%
      \gdef\thu@font@style@xits@rm{regular}%
      \gdef\thu@font@style@xits@bf{bold}%
      \gdef\thu@font@style@xits@it{italic}%
      \gdef\thu@font@style@xits@bfit{bolditalic}%
      \gdef\thu@font@name@xits@math{xits-math}%
    }%
  \fi
}
\newcommand\thu@set@font@xits{%
  \thu@set@xits@names
  \setmainfont{\thu@font@family@xits}[
    Extension      = .otf,
    UprightFont    = *-\thu@font@style@xits@rm,
    BoldFont       = *-\thu@font@style@xits@bf,
    ItalicFont     = *-\thu@font@style@xits@it,
    BoldItalicFont = *-\thu@font@style@xits@bfit,
  ]%
  \thu@set@texgyre@sans@mono
}
%    \end{macrocode}
%
% Libertinus å­—ä½“ã€‚
% Libertinus çš„æ–‡ä»¶ååœ¨ v6.7 2019-04-03 ä»Žå°å†™æ”¹ä¸ºé©¼å³°å¼ï¼Œ
% åœ¨å¤§å°å†™æ•æ„Ÿçš„å¹³å°ä¸Šéœ€è¦è¿›è¡Œåˆ¤æ–­ã€‚
%    \begin{macrocode}
\let\thu@font@family@libertinus\@empty
\newcommand\thu@set@libertinus@names{%
  \ifx\thu@font@family@libertinus\@empty
    \IfFontExistsTF{LibertinusSerif-Regular.otf}{%
      \gdef\thu@font@family@libertinus@serif{LibertinusSerif}%
      \gdef\thu@font@family@libertinus@sans{LibertinusSans}%
      \gdef\thu@font@name@libertinus@math{LibertinusMath-Regular}%
      \gdef\thu@font@style@libertinus@rm{Regular}%
      \gdef\thu@font@style@libertinus@bf{Bold}%
      \gdef\thu@font@style@libertinus@it{Italic}%
      \gdef\thu@font@style@libertinus@bfit{BoldItalic}%
    }{%
      \gdef\thu@font@family@libertinus@serif{libertinusserif}%
      \gdef\thu@font@family@libertinus@sans{libertinussans}%
      \gdef\thu@font@name@libertinus@math{libertinusmath-regular}%
      \gdef\thu@font@style@libertinus@rm{regular}%
      \gdef\thu@font@style@libertinus@bf{bold}%
      \gdef\thu@font@style@libertinus@it{italic}%
      \gdef\thu@font@style@libertinus@bfit{bolditalic}%
    }%
  \fi
}
\newcommand\thu@set@font@libertinus{%
  \thu@set@libertinus@names
  \setmainfont{\thu@font@family@libertinus@serif}[
    Extension      = .otf,
    UprightFont    = *-\thu@font@style@libertinus@rm,
    BoldFont       = *-\thu@font@style@libertinus@bf,
    ItalicFont     = *-\thu@font@style@libertinus@it,
    BoldItalicFont = *-\thu@font@style@libertinus@bfit,
  ]%
  \setsansfont{\thu@font@family@libertinus@sans}[
    Extension      = .otf,
    UprightFont    = *-\thu@font@style@libertinus@rm,
    BoldFont       = *-\thu@font@style@libertinus@bf,
    ItalicFont     = *-\thu@font@style@libertinus@it,
  ]%
  \setmonofont{lmmonolt10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-oblique,
    BoldItalicFont = *-boldoblique,
  ]%
}
%    \end{macrocode}
%
% New Computer Modern
%    \begin{macrocode}
\newcommand\thu@set@font@newcm{%
  \setmainfont{NewCM10}[
    Extension      = .otf,
    UprightFont    = *-Book,
    BoldFont       = *-Bold,
    ItalicFont     = *-BookItalic,
    BoldItalicFont = *-BoldItalic,
  ]%
  \setsansfont{NewCMSans10}[
    Extension         = .otf,
    UprightFont       = *-Book,
    BoldFont          = *-Bold,
    ItalicFont        = *-BookOblique,
    BoldItalicFont    = *-BoldOblique,
  ]%
  \setmonofont{NewCMMono10}[
    Extension           = .otf,
    UprightFont         = *-Book,
    ItalicFont          = *-BookItalic,
    BoldFont            = *-Bold,
    BoldItalicFont      = *-BoldOblique,
  ]%
}
%    \end{macrocode}
%
% Latin Modern
%    \begin{macrocode}
\newcommand\thu@set@font@lm{%
  \setmainfont{lmroman10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-italic,
    BoldItalicFont = *-bolditalic,
  ]%
  \setsansfont{lmsans10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-oblique,
    BoldItalicFont = *-boldoblique,
  ]%
  \setmonofont{lmmonolt10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-oblique,
    BoldItalicFont = *-boldoblique,
  ]%
}
%    \end{macrocode}
%
% NewTX
%    \begin{macrocode}
\newcommand\thu@set@font@newtx{%
  \RequirePackage{newtxtext}%
}
%    \end{macrocode}
%
% \subsubsection{ä¸­æ–‡å­—ä½“}
%
%    \begin{macrocode}
\ifthu@cjk@font@auto
  \ifthu@fontset@mac
    \thusetup{cjk-font = mac}
  \else
    \ifthu@fontset@windows
      \IfFontExistsTF{SimSun}{
        \thusetup{cjk-font = windows}
      }{
        \IfFileExists{\thu@windows@font@dir/Simsun.ttc}{
          \thusetup{cjk-font = windows-local}
        }{
          \IfFileExists{\thu@mac@word@font@dir/Simsun.ttc}{
            \thusetup{cjk-font = mac-word}
          }{
            \thu@error{Cannot find "SimSun" font}
          }
        }
      }
    \else
      \ifthu@fontset@ubuntu
        \thusetup{cjk-font = noto}
      \else
        \thusetup{cjk-font = fandol}
      \fi
    \fi
  \fi
  \thu@debug{Detected CJK font: \thu@cjk@font}
\fi
%    \end{macrocode}
%
% Windows çš„ä¸­æ˜“å­—ä½“ã€‚
%    \begin{macrocode}
\newcommand\thu@set@cjk@font@windows{%
  \setCJKmainfont{SimSun}[
    AutoFakeBold = 3,
    ItalicFont   = KaiTi,
  ]%
  \setCJKsansfont{SimHei}[AutoFakeBold = 3]%
  \setCJKmonofont{FangSong}%
  \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold = 3]%
  \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold = 3]%
  \setCJKfamilyfont{zhkai}{KaiTi}%
  \setCJKfamilyfont{zhfs}{FangSong}%
}
%    \end{macrocode}
%
% ä½¿ç”¨æœ¬åœ°çš„ Windows å­—ä½“æ–‡ä»¶ã€‚
%
% Windows çš„ä¸­æ˜“æ¥·ä½“å’Œä»¿å®‹å­—ä½“æ–‡ä»¶ååˆ†åˆ«ä¸º \file{Simkai.ttf} å’Œ
% \file{Simfang.ttf}ï¼ˆè§
% \url{https://learn.microsoft.com/en-us/typography/fonts/windows_11_font_list}ï¼‰ï¼Œ
% è€Œ macOS ç‰ˆ Word å¯¹åº”çš„å­—ä½“åä¸º \file{Kaiti.ttf} å’Œ \file{Fangsong.ttf}ã€‚
% æ‰€ä»¥éœ€è¦è¿›è¡Œåˆ¤æ–­ã€‚
%    \begin{macrocode}
\@namedef{thu@set@cjk@font@windows-local}{%
  \IfFileExists{\thu@windows@font@dir/Kaiti.ttf}{
    \setCJKmainfont{SimSun}[%
      Path         = \thu@windows@font@dir/,
      Extension    = .ttc,
      AutoFakeBold = 3,
      ItalicFont   = Kaiti,
      ItalicFeatures = {Extension = .ttf},
    ]%
    \setCJKmonofont{Fangsong}[
      Path         = \thu@windows@font@dir/,
      Extension    = .ttf,
    ]%
    \setCJKfamilyfont{zhkai}{Kaiti}[
      Path         = \thu@windows@font@dir/,
      Extension    = .ttf,
    ]%
    \setCJKfamilyfont{zhfs}{Fangsong}[
      Path         = \thu@windows@font@dir/,
      Extension    = .ttf,
    ]%
  }{
    \setCJKmainfont{SimSun}[%
      Path         = \thu@windows@font@dir/,
      Extension    = .ttc,
      AutoFakeBold = 3,
      ItalicFont   = Simkai,
      ItalicFeatures = {Extension = .ttf},
    ]%
    \setCJKmonofont{Simfang}[
      Path         = \thu@windows@font@dir/,
      Extension    = .ttf,
    ]%
    \setCJKfamilyfont{zhkai}{Simkai}[
      Path         = \thu@windows@font@dir/,
      Extension    = .ttf,
    ]%
    \setCJKfamilyfont{zhfs}{Simfang}[
      Path         = \thu@windows@font@dir/,
      Extension    = .ttf,
    ]%
  }
  \setCJKsansfont{SimHei}[%
    Path         = \thu@windows@font@dir/,
    Extension    = .ttf,
    AutoFakeBold = 3,
  ]%
  \setCJKfamilyfont{zhsong}{SimSun}[%
    Path         = \thu@windows@font@dir/,
    Extension    = .ttc,
    AutoFakeBold = 3,
  ]%
  \setCJKfamilyfont{zhhei}{SimHei}[%
    Path         = \thu@windows@font@dir/,
    Extension    = .ttf,
    AutoFakeBold = 3,
  ]%
}
%    \end{macrocode}
%
% macOS çš„ Microsoft Word å­—ä½“ã€‚
%    \begin{macrocode}
\@namedef{thu@set@cjk@font@mac-word}{%
  \let\thu@windows@font@dir\thu@mac@word@font@dir
  \@nameuse{thu@set@cjk@font@windows-local}%
}
%    \end{macrocode}
%
% macOS çš„åŽæ–‡å­—ä½“ã€‚
%    \begin{macrocode}
\newcommand\thu@set@cjk@font@mac{%
  \defaultCJKfontfeatures{}%
  \setCJKmainfont{Songti SC}[
    UprightFont    = * Light,
    BoldFont       = * Bold,
    ItalicFont     = Kaiti SC Regular,
    BoldItalicFont = Kaiti SC Bold,
  ]%
  \setCJKsansfont{Heiti SC}[
    UprightFont    = * Light,
    BoldFont       = * Medium,
  ]%
  \setCJKmonofont{STFangsong}
  \setCJKfamilyfont{zhsong}{Songti SC}[
    UprightFont    = * Light,
    BoldFont       = * Bold,
  ]%
  \setCJKfamilyfont{zhhei}{Heiti SC}[
    UprightFont    = * Light,
    BoldFont       = * Medium,
  ]%
  \setCJKfamilyfont{zhfs}{STFangsong}%
  \setCJKfamilyfont{zhkai}{Kaiti SC}[
    UprightFont    = * Regular,
    BoldFont       = * Bold,
  ]%
  \setCJKfamilyfont{zhli}{Baoli SC}%
  \setCJKfamilyfont{zhyuan}{Yuanyi SC}[
    UprightFont    = * Light,
    BoldFont       = * Bold,
  ]%
}
%    \end{macrocode}
%
% æ€æºå­—ä½“ã€‚
% æ³¨æ„ Noto CJK çš„ regular å­—é‡åå­—ä¸å¸¦â€œRegularâ€ã€‚
%    \begin{macrocode}
\newcommand\thu@set@cjk@font@noto{%
  \defaultCJKfontfeatures{}%
  \setCJKmainfont{Noto Serif CJK SC}[
    UprightFont    = * Light,
    BoldFont       = * Bold,
    ItalicFont     = FandolKai-Regular,
    ItalicFeatures = {Extension = .otf},
    Script         = CJK,
  ]%
  \setCJKsansfont{Noto Sans CJK SC}[
    BoldFont       = * Medium,
    Script         = CJK,
  ]%
  \setCJKmonofont{Noto Sans Mono CJK SC}[
    Script         = CJK,
  ]%
  \setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[
    UprightFont    = * Light,
    UprightFont    = * Bold,
    Script         = CJK,
  ]%
  \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[
    BoldFont       = * Medium,
    Script         = CJK,
  ]%
  \setCJKfamilyfont{zhfs}{FandolFang}[
    Extension      = .otf,
    UprightFont    = *-Regular,
  ]%
  \setCJKfamilyfont{zhkai}{FandolKai}[
    Extension      = .otf,
    UprightFont    = *-Regular,
  ]%
}
%    \end{macrocode}
%
% Fandol å­—ä½“ã€‚
%    \begin{macrocode}
\newcommand\thu@set@cjk@font@fandol{%
  \defaultCJKfontfeatures{}%
  \setCJKmainfont{FandolSong}[
    Extension   = .otf,
    UprightFont = *-Regular,
    BoldFont    = *-Bold,
    ItalicFont  = FandolKai-Regular,
    ItalicFeatures = {Extension = .otf},
  ]%
  \setCJKsansfont{FandolHei}[
    Extension   = .otf,
    UprightFont = *-Regular,
    BoldFont    = *-Bold,
  ]%
  \setCJKmonofont{FandolFang}[
    Extension   = .otf,
    UprightFont = *-Regular,
  ]%
  \setCJKfamilyfont{zhsong}{FandolSong}[
    Extension   = .otf,
    UprightFont = *-Regular,
    BoldFont    = *-Bold,
  ]%
  \setCJKfamilyfont{zhhei}{FandolHei}[
    Extension   = .otf,
    UprightFont = *-Regular,
    BoldFont    = *-Bold,
  ]%
  \setCJKfamilyfont{zhfs}{FandolFang}[
    Extension   = .otf,
    UprightFont = *-Regular,
  ]%
  \setCJKfamilyfont{zhkai}{FandolKai}[
    Extension   = .otf,
    UprightFont = *-Regular,
  ]%
}
\ifthu@cjk@font@none\else
  \providecommand\songti{\CJKfamily{zhsong}}
  \providecommand\heiti{\CJKfamily{zhhei}}
  \providecommand\fangsong{\CJKfamily{zhfs}}
  \providecommand\kaishu{\CJKfamily{zhkai}}
\fi
\newcommand\thu@set@cjk@font{%
  \@nameuse{thu@set@cjk@font@\thu@cjk@font}%
}
\thu@set@cjk@font
\thu@option@hook{cjk-font}{\thu@set@cjk@font}
%    \end{macrocode}
%
% \subsubsection{æ•°å­¦å­—ä½“}
%
% ä½¿ç”¨ \pkg{unicode-math} é…ç½®æ•°å­¦ç¬¦å·æ&nbsp;¼å¼ã€‚
%    \begin{macrocode}
\newcommand\thu@set@math@style{%
  \ifthu@math@style@TeX
    \thusetup{
      uppercase-greek    = upright,
      less-than-or-equal = horizontal,
      integral           = slanted,
      integral-limits    = false,
      partial            = italic,
      math-ellipsis      = AMS,
      real-part          = fraktur,
    }%
  \else
    \thusetup{
      uppercase-greek = italic,
      integral        = upright,
      partial         = upright,
      real-part       = roman,
    }%
    \ifthu@math@style@ISO
      \thusetup{
        less-than-or-equal = horizontal,
        integral-limits    = true,
        math-ellipsis      = lower,
      }%
    \else
      \ifthu@math@style@GB
        \thusetup{
          less-than-or-equal = slanted,
          integral-limits    = false,
          math-ellipsis      = centered,
        }%
      \fi
    \fi
  \fi
}
\ifthu@main@language@chinese
  \thusetup{math-style=GB}%
\else
  \thusetup{math-style=TeX}%
\fi
\thu@set@math@style
\thu@option@hook{math-style}{\thu@set@math@style}
\thu@option@hook{main-language}{%
  \ifthu@main@language@chinese
    \thusetup{math-style=GB}%
  \else
    \thusetup{math-style=TeX}%
  \fi
}
%    \end{macrocode}
%
% é’ˆå¯¹ \pkg{unicode-math} é€é¡¹é…ç½®æ•°å­¦ç¬¦å·ã€‚
%    \begin{macrocode}
\newcommand\thu@set@unimath@leq{%
  \ifthu@leq@horizontal
    \ifx\@begindocumenthook\@undefined
      \let\le\thu@save@leq
      \let\ge\thu@save@geq
      \let\leq\thu@save@leq
      \let\geq\thu@save@geq
    \else
      \AtBeginDocument{%
        \let\le\thu@save@leq
        \let\ge\thu@save@geq
        \let\leq\thu@save@leq
        \let\geq\thu@save@geq
      }%
    \fi
  \else
    \ifthu@leq@slanted
      \ifx\@begindocumenthook\@undefined
        \let\le\leqslant
        \let\ge\geqslant
        \let\leq\leqslant
        \let\geq\geqslant
      \else
        \AtBeginDocument{%
          \let\le\leqslant
          \let\ge\geqslant
          \let\leq\leqslant
          \let\geq\geqslant
        }%
      \fi
    \fi
  \fi
}
\newcommand\thu@set@unimath@integral@limits{%
  \ifthu@integral@limits@true
    \removenolimits{%
      \int\iint\iiint\iiiint\oint\oiint\oiiint
      \intclockwise\varointclockwise\ointctrclockwise\sumint
      \intbar\intBar\fint\cirfnint\awint\rppolint
      \scpolint\npolint\pointint\sqint\intlarhk\intx
      \intcap\intcup\upint\lowint
    }%
  \else
    \addnolimits{%
      \int\iint\iiint\iiiint\oint\oiint\oiiint
      \intclockwise\varointclockwise\ointctrclockwise\sumint
      \intbar\intBar\fint\cirfnint\awint\rppolint
      \scpolint\npolint\pointint\sqint\intlarhk\intx
      \intcap\intcup\upint\lowint
    }%
  \fi
}
\newcommand\thu@set@unimath@ellipsis{%
  \ifthu@math@ellipsis@centered
    \DeclareRobustCommand\mathellipsis{\mathinner{\unicodecdots}}%
  \else
    \DeclareRobustCommand\mathellipsis{\mathinner{\unicodeellipsis}}%
  \fi
}
\newcommand\thu@set@unimath@real@part{%
  \ifthu@real@part@roman
    \AtBeginDocument{%
      \def\Re{\operatorname{Re}}%
      \def\Im{\operatorname{Im}}%
    }%
  \else
    \AtBeginDocument{%
      \let\Re\thu@save@Re
      \let\Im\thu@save@Im
    }%
  \fi
}
\newcommand\thu@set@unimath@style{%
  \ifthu@uppercase@greek@upright
    \unimathsetup{math-style = TeX}%
  \else
    \ifthu@uppercase@greek@italic
      \unimathsetup{math-style = ISO}%
    \fi
  \fi
  \ifthu@math@style@TeX
    \unimathsetup{bold-style = TeX}%
  \else
    \unimathsetup{bold-style = ISO}%
  \fi
  \thu@set@unimath@leq
  \thu@set@unimath@integral@limits
  \ifthu@partial@upright
    \unimathsetup{partial = upright}%
  \else
    \ifthu@partial@italic
      \unimathsetup{partial = italic}%
    \fi
  \fi
  \thu@set@unimath@ellipsis
  \thu@set@unimath@real@part
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand\thu@qed{\rule{1ex}{1ex}}
\newcommand\thu@load@unimath{%
  \@ifpackageloaded{unicode-math}{}{%
    \RequirePackage{unicode-math}%
    \AtBeginDocument{%
      \let\thu@save@leq\leq
      \let\thu@save@geq\geq
      \let\thu@save@Re\Re
      \let\thu@save@Im\Im
    }%
%    \end{macrocode}
%
% å…¼å®¹æ—§çš„ç²—ä½“å‘½ä»¤ï¼š\pkg{bm} çš„ \cs{bm} å’Œ \pkg{amsmath} çš„ \cs{boldsymbol}ã€‚
%    \begin{macrocode}
    \DeclareRobustCommand\bm[1]{{\symbfit{##1}}}%
    \DeclareRobustCommand\boldsymbol[1]{{\symbfit{##1}}}%
%    \end{macrocode}
%
% å…¼å®¹ \pkg{amsfonts} å’Œ \pkg{amssymb} ä¸­çš„ä¸€äº›å‘½ä»¤ã€‚
%    \begin{macrocode}
    \newcommand\square{\mdlgwhtsquare}%
    \newcommand\blacksquare{\mdlgblksquare}%
    \AtBeginDocument{%
      \renewcommand\checkmark{\ensuremath{\symbol{"2713}}}%
    }%
%    \end{macrocode}
%
% å…¼å®¹ \pkg{amsthm} çš„ \cs{qedsymbol}ã€‚
%    \begin{macrocode}
    \renewcommand\thu@qed{\ensuremath{\QED}}%
  }%
}
%    \end{macrocode}
%
% STIX Two Math
%    \begin{macrocode}
\newcommand\thu@set@math@font@stix{%
  \thu@set@stix@names
  \setmathfont{\thu@font@name@stix@math}[
    Extension    = .otf,
    Scale        = MatchLowercase,
    StylisticSet = \thu@xits@integral@stylistic@set,
  ]%
  \setmathfont{\thu@font@name@stix@math}[
    Extension    = .otf,
    Scale        = MatchLowercase,
    StylisticSet = 1,
    range        = {scr,bfscr},
  ]%
}
%    \end{macrocode}
%
% XITS Math
%    \begin{macrocode}
\newcommand\thu@xits@integral@stylistic@set{%
  \ifthu@integral@upright
    8%
  \fi
}
\newcommand\thu@set@math@font@xits{%
  \thu@set@xits@names
  \setmathfont{\thu@font@name@xits@math}[
    Extension    = .otf,
    StylisticSet = \thu@xits@integral@stylistic@set,
  ]%
  \setmathfont{\thu@font@name@xits@math}[
    Extension    = .otf,
    StylisticSet = 1,
    range        = {cal,bfcal},
  ]%
}
%    \end{macrocode}
%
% Libertinus Math
%    \begin{macrocode}
\newcommand\thu@libertinus@integral@stylistic@set{%
  \ifthu@integral@slanted
    8%
  \fi
}
\newcommand\thu@set@math@font@libertinus{%
  \thu@set@libertinus@names
  \setmathfont{\thu@font@name@libertinus@math}[
    Extension    = .otf,
    StylisticSet = \thu@libertinus@integral@stylistic@set,
  ]%
}
%    \end{macrocode}
%
% New Computer Modern Math
%    \begin{macrocode}
\newcommand\thu@newcm@integral@stylistic@set{%
  \ifthu@integral@upright
    2%
  \fi
}
\newcommand\thu@set@math@font@newcm{%
  \setmathfont{NewCMMath-Book}[
    Extension    = .otf,
    StylisticSet = \thu@newcm@integral@stylistic@set,
  ]%
  \setmathfont{NewCMMath-Book}[
    Extension    = .otf,
    StylisticSet = 1,
    range        = {scr,bfscr},
  ]%
  \setmathrm{NewCM10}[
    Extension      = .otf,
    UprightFont    = *-Book,
    BoldFont       = *-Bold,
    ItalicFont     = *-BookItalic,
    BoldItalicFont = *-BoldItalic,
  ]%
  \setmathsf{NewCMSans10}[
    Extension         = .otf,
    UprightFont       = *-Book,
    BoldFont          = *-Bold,
    ItalicFont        = *-BookOblique,
    BoldItalicFont    = *-BoldOblique,
  ]%
  \setmathtt{NewCMMono10}[
    Extension           = .otf,
    UprightFont         = *-Book,
    ItalicFont          = *-BookItalic,
    BoldFont            = *-Bold,
    BoldItalicFont      = *-BoldOblique,
  ]%
}
%    \end{macrocode}
%
% Latin Modern Math
%    \begin{macrocode}
\newcommand\thu@set@math@font@lm{%
  \setmathfont{latinmodern-math}[Extension=.otf]%
  \setmathrm{lmroman10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-italic,
    BoldItalicFont = *-bolditalic,
  ]%
  \setmathsf{lmsans10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-oblique,
    BoldItalicFont = *-boldoblique,
  ]%
  \setmathtt{lmmonolt10}[
    Extension      = .otf,
    UprightFont    = *-regular,
    BoldFont       = *-bold,
    ItalicFont     = *-oblique,
    BoldItalicFont = *-boldoblique,
  ]%
}
%    \end{macrocode}
%
% NewTX Math
%    \begin{macrocode}
\newcommand\thu@set@math@font@newtx{%
  \ifthu@font@newtx\else
    \let\thu@save@encodingdefault\encodingdefault
    \let\thu@save@rmdefault\rmdefault
    \let\thu@save@sfdefault\sfdefault
    \let\thu@save@ttdefault\ttdefault
    \RequirePackage[T1]{fontenc}%
    \renewcommand{\rmdefault}{ntxtlf}%
    \renewcommand{\sfdefault}{qhv}%
    \renewcommand{\ttdefault}{ntxtt}%
  \fi
  \ifthu@uppercase@greek@italic
    \PassOptionsToPackage{slantedGreek}{newtxmath}%
  \fi
  \ifthu@integral@upright
    \PassOptionsToPackage{upint}{newtxmath}%
  \fi
  \RequirePackage{newtxmath}
  \let\thu@save@leq\leq
  \let\thu@save@geq\geq
  \ifthu@leq@slanted
    \let\le\leqslant
    \let\ge\geqslant
    \let\leq\leqslant
    \let\geq\geqslant
  \fi
  \ifthu@integral@limits@true
    \let\ilimits@\displaylimits
  \fi
  \let\thu@save@partial\partial
  \ifthu@partial@upright
    \let\partial\uppartial
  \fi
  \ifthu@math@ellipsis@centered
    \DeclareRobustCommand\mathellipsis{\mathinner{\cdotp\cdotp\cdotp}}%
  \else
    \DeclareRobustCommand\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}%
  \fi
  \let\thu@save@Re\Re
  \let\thu@save@Im\Im
  \ifthu@real@part@roman
    \def\Re{\operatorname{Re}}%
    \def\Im{\operatorname{Im}}%
  \fi
  \RequirePackage{bm}%
  \ifthu@font@newtx\else
    \let\encodingdefault\thu@save@encodingdefault
    \let\rmdefault\thu@save@rmdefault
    \let\sfdefault\thu@save@sfdefault
    \let\ttdefault\thu@save@ttdefault
  \fi
  \DeclareRobustCommand\symup[1]{{\mathrm{##1}}}%
  \DeclareRobustCommand\symbf[1]{{\bm{##1}}}%
  \DeclareRobustCommand\symbfsf[1]{{\bm{\mathsf{##1}}}}%
  \let\increment\upDelta%
  \renewcommand\thu@qed{\openbox}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand\thu@set@math@font{%
  \ifthu@math@font@none\else
    \ifthu@math@font@newtx
      \thu@set@math@font@newtx
    \else
      \thu@load@unimath
      \thu@set@unimath@style
      \@nameuse{thu@set@math@font@\thu@math@font}%
    \fi
  \fi
}
\thu@option@hook{math-font}{\g@addto@macro\thu@setup@hook{\thu@set@math@font}}
\newcommand\thu@set@math@font@auto{%
  \ifthu@math@font@auto
    \thusetup{math-font=xits}%
  \fi
}
\AtBeginOfPackageFile*{siunitx}{\thu@set@math@font@auto}
\AtEndPreamble{\thu@set@math@font@auto}
%    \end{macrocode}
%
%
% \subsection{ä¸»æ–‡æ¡£æ&nbsp;¼å¼}
% \label{sec:mainbody}
%
% \subsubsection{Three matters}
% \begin{macro}{\cleardoublepage}
% å¯¹äºŽ \textsl{openright} é€‰é¡¹ï¼Œå¿…é¡»ä¿è¯ç«&nbsp;é¦–é¡µå³å¼€ï¼Œä¸”å¦‚æžœå‰ç«&nbsp;æœ«é¡µæ—&nbsp;å†…å®¹é¡»
% æ¸…ç©ºå…¶é¡µçœ‰é¡µè„šã€‚
%    \begin{macrocode}
\def\cleardoublepage{%
  \clearpage
  \if@twoside
    \ifthu@output@print
      \ifodd\c@page
      \else
        \thispagestyle{empty}%
        \hbox{}%
        \newpage
        \if@twocolumn
          \hbox{}\newpage
        \fi
      \fi
    \fi
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\frontmatter}
% \begin{macro}{\mainmatter}
% \begin{macro}{\backmatter}
% æˆ‘ä»¬çš„å•é¢å’ŒåŒé¢æ¨¡å¼ä¸Žå¸¸è§„çš„ä¸å¤ªä¸€æ&nbsp;·ã€‚
%    \begin{macrocode}
\renewcommand\frontmatter{%
  \cleardoublepage
  \@mainmatterfalse
  \pagenumbering{Roman}%
}
\renewcommand\mainmatter{%
  \cleardoublepage
  \@mainmattertrue
  \pagenumbering{arabic}%
}
\renewcommand\backmatter{%
  \clearpage
  \@mainmatterfalse
  \thusetup{toc-depth = 0}%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{é¡µçœ‰é¡µè„š}
% \label{sec:headerfooter}
%
% \pkg{fancyhdr} å®šä¹‰é¡µçœ‰é¡µè„šå¾ˆæ–¹ä¾¿ï¼Œä½†æ˜¯æœ‰ä¸€ä¸ªéžå¸¸éšè”½çš„å‘ã€‚
% ç¬¬ä¸€æ¬¡è°ƒç”¨ \pkg{fancyhdr} å®šä¹‰çš„æ&nbsp;·å¼æ—¶ä¼šä¿®æ”¹ \cs{chaptermark}ï¼Œ
% è¿™ä¼šå¯¼è‡´é¡µçœ‰ä¿¡æ¯é”™è¯¯ï¼ˆå¤šä½™ç«&nbsp;å·å¹¶ä¸”è‹±æ–‡å¤§å†™ï¼‰ã€‚
% è¿™æ˜¯å›&nbsp;ä¸ºåœ¨ \cs{ps@fancy} ä¸­å¯¹ \cs{chaptermark} è¿›è¡Œé‡å®šä¹‰ï¼Œ
% æ‰€ä»¥æˆ‘ä»¬å…ˆè°ƒç”¨ \cs{ps@fancy}ï¼Œå†ä¿®æ”¹ \cs{chaptermark}ã€‚
%    \begin{macrocode}
\pagestyle{fancy}
%    \end{macrocode}
%
% å®šä¹‰é¡µçœ‰å’Œé¡µè„šã€‚
% ç&nbsp;”ç©¶ç”Ÿè¦æ±‚ï¼š
% é¡µçœ‰å®‹ä½“äº”å·å­—ï¼Œå®‹ä½“äº”å·å­—å±…ä¸­ä¹¦å†™ï¼›
% é¡µç&nbsp;äº”å· Times New Roman ä½“ã€‚
%
% æœ¬ç§‘ç”Ÿè¦æ±‚ï¼š
% é¡µçœ‰ï¼šæ—&nbsp;ï¼›
% é¡µç&nbsp;ï¼šä½äºŽé¡µé¢åº•ç«¯ï¼Œå±…ä¸­ä¹¦å†™ã€‚
%
% æœ¬ç§‘å¤–æ–‡ä¸“ä¸šè¦æ±‚é¡µç&nbsp;å­—å· 12ptã€‚
%    \begin{macrocode}
\fancypagestyle{plain}{%
  \fancyhf{}%
  \renewcommand\footrulewidth{0pt}%
  \ifthu@degree@bachelor
    \renewcommand\headrulewidth{0pt}%
    \fancyfoot[C]{
      \ifthu@main@language@chinese
        \fontsize{10.5bp}{12.075bp}\selectfont
      \else
        \normalsize
      \fi
      \thepage
    }%
    \let\@mkboth\@gobbletwo
    \let\chaptermark\@gobble
  \else
    \renewcommand\headrulewidth{0.75bp}%
    \fancyhead[C]{%
      \wuhao
      \ifthu@main@language@chinese
        \leftmark
      \else
        \MakeUppercase{\leftmark}%
      \fi
      }%
    \fancyfoot[C]{\wuhao\thepage}%
    \let\@mkboth\markboth
    \def\chaptermark##1{%
      \markboth{%
        \CTEXifname{%
          \CTEXthechapter
          \ifthu@main@language@chinese
            \quad
          \else
            \space
          \fi
        }{}##1%
      }{}%
    }%
  \fi
  \let\sectionmark\@gobble
}
\pagestyle{plain}
%    \end{macrocode}
%
% \cs{chapter} ä¼šè°ƒç”¨ç‰¹æ®Šçš„ page styleã€‚
%    \begin{macrocode}
\def\ps@chapter{}
\ctexset{chapter/pagestyle = chapter}
%    \end{macrocode}
%
%
% \subsubsection{æ®µè½}
% \label{sec:paragraph}
%
% å…¨æ–‡é¦–è¡Œç¼©è¿› 2 å­—ç¬¦ï¼Œæ&nbsp;‡ç‚¹ç¬¦å·ç”¨å…¨è§’
%    \begin{macrocode}
\ctexset{%
  punct=quanjiao,
}
\newcommand\thu@set@indent{%
  \ifthu@main@language@chinese
    \ctexset{autoindent=2}%
  \else
    \ifthu@degree@bachelor
      \ctexset{autoindent=0.8cm}%
    \else
      \ctexset{autoindent=0.74cm}%
    \fi
  \fi
}
\thu@set@indent
\thu@option@hook{degree}{\thu@set@indent}
\thu@option@hook{main-language}{\thu@set@indent}
%    \end{macrocode}
%
% è®¾ç½® url æ&nbsp;·å¼ï¼Œä¸Žä¸Šä¸‹æ–‡ä¸€è‡´
%    \begin{macrocode}
\urlstyle{same}
%    \end{macrocode}
%
% ä½¿ç”¨ \pkg{xurl} çš„æ–¹æ³•ï¼Œå¢žåŠ&nbsp; URL å¯æ–­è¡Œçš„ä½ç½®ã€‚
%    \begin{macrocode}
\g@addto@macro\UrlBreaks{%
  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
  \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M
  \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z
  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m
  \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
}
\Urlmuskip=0mu plus 0.1mu
%    \end{macrocode}
%
% å–æ¶ˆåˆ—è¡¨çš„é—´è·ï¼Œä»¥ç¬¦åˆä¸­æ–‡ä¹&nbsp;æƒ¯ã€‚
%    \begin{macrocode}
\partopsep=\z@skip
\def\@listi{\leftmargin\leftmargini
            \parsep \z@skip
            \topsep \z@skip
            \itemsep\z@skip}
\let\@listI\@listi
\@listi
\def\@listii {\leftmargin\leftmarginii
              \labelwidth\leftmarginii
              \advance\labelwidth-\labelsep
              \topsep    \z@skip
              \parsep    \z@skip
              \itemsep   \z@skip}
\def\@listiii{\leftmargin\leftmarginiii
              \labelwidth\leftmarginiii
              \advance\labelwidth-\labelsep
              \topsep    \z@skip
              \parsep    \z@skip
              \partopsep \z@skip
              \itemsep   \z@skip}
%    \end{macrocode}
%
% ä½¿ç”¨ \pkg{enumitem} å‘½ä»¤è°ƒæ•´é»˜è®¤åˆ—è¡¨çŽ¯å¢ƒé—´çš„è·ç¦»ï¼Œ
%    \begin{macrocode}
\setlist{nosep}
%    \end{macrocode}
%
%
% \subsubsection{è„šæ³¨}
% \label{sec:footnote}
%
% ä¸¥æ&nbsp;¼ç¦æ­¢è„šæ³¨è·¨é¡µï¼Œå‚è€ƒ \href{https://github.com/tuna/thuthesis/issues/778}{\#778}
% å’Œ \url{https://texfaq.org/FAQ-splitfoot}ã€‚
%    \begin{macrocode}
\interfootnotelinepenalty=10000
%    \end{macrocode}
%
% è„šæ³¨å†…å®¹é‡‡ç”¨å°äº”å·å­—ï¼Œä¸­æ–‡ç”¨å®‹ä½“ï¼Œè‹±æ–‡å’Œæ•°å­—ç”¨ Times New Roman ä½“æŒ‰ä¸¤ç«¯å¯¹é½æ&nbsp;¼å¼ä¹¦å†™ï¼Œ
% å•å€è¡Œè·ï¼Œæ®µå‰æ®µåŽå‡ç©º 0 ç£…ã€‚
% è„šæ³¨çš„åºå·æŒ‰é¡µç¼–æŽ’ï¼Œä¸åŒé¡µçš„è„šæ³¨åºå·ä¸éœ€è¦è¿žç»­ã€‚
%
% è„šæ³¨å¤„åºå·â€œ1ï¼Œâ€¦â€¦ï¼Œ10â€çš„å­—ä½“æ˜¯â€œæ­£æ–‡â€ï¼Œä¸æ˜¯â€œä¸Šæ&nbsp;‡â€ï¼Œåºå·ä¸Žè„šæ³¨å†…å®¹æ–‡å­—ä¹‹é—´ç©ºåŠä¸ªæ±‰å­—ç¬¦ï¼Œ
% è„šæ³¨çš„æ®µè½æ&nbsp;¼å¼ä¸ºï¼šå•å€è¡Œè·ï¼Œæ®µå‰ç©º 0 ç£…ï¼Œæ®µåŽç©º 0 ç£…ï¼Œæ‚¬æŒ‚ç¼©è¿› 1.5 å­—ç¬¦ï¼›
% å­—å·ä¸ºå°äº”å·å­—ï¼Œæ±‰å­—ç”¨å®‹ä½“ï¼Œå¤–æ–‡ç”¨ Times New Roman ä½“ã€‚
%
% è„šæ³¨åºå·ä½¿ç”¨å¸¦åœˆæ•°å­—ã€‚
% \begin{macro}{\thu@circled}
% ç”Ÿæˆå¸¦åœˆçš„è„šæ³¨æ•°å­—ï¼Œæœ€å¤šå¤„ç†åˆ° 10ã€‚
%    \begin{macrocode}
\newcommand\thu@circled[1]{%
  \ifnum#1 &gt;10\relax
    \thu@warning{%
      Too many footnotes in this page.
      Keep footnote less than 10%
    }%
  \fi
  {\symbol{\the\numexpr#1+"245F\relax}}%
}
\renewcommand{\thefootnote}{\thu@circled{\c@footnote}}
\renewcommand{\thempfootnote}{\thu@circled{\c@mpfootnote}}
%    \end{macrocode}
% \end{macro}
%
% å®šä¹‰è„šæ³¨åˆ†å‰²çº¿ï¼Œå­—å·ï¼ˆå®‹ä½“å°äº”ï¼‰ï¼Œä»¥åŠæ‚¬æŒ‚ç¼©è¿›ï¼ˆ1.5å­—ç¬¦ï¼‰ã€‚
%    \begin{macrocode}
\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
\footnotemargin=13.5bp
%    \end{macrocode}
%
% ä¿®æ”¹ \pkg{footmisc} å®šä¹‰çš„è„šæ³¨æ&nbsp;¼å¼ã€‚
%    \begin{macrocode}
\long\def\@makefntext#1{%
  \begingroup
    % åºå·å–æ¶ˆä¸Šæ&nbsp;‡
    \def\@makefnmark{\hbox{\normalfont\@thefnmark}}%
    \xiaowu
    \ifFN@hangfoot
      \bgroup
      \setbox\@tempboxa\hbox{%
        \ifdim\footnotemargin&gt;\z@
          \hb@xt@\footnotemargin{\@makefnmark\hss}%
        \else
          \@makefnmark
        \fi
      }%
      \leftmargin\wd\@tempboxa
      \rightmargin\z@
      \linewidth \columnwidth
      \advance \linewidth -\leftmargin
      \parshape \@ne \leftmargin \linewidth
      % \footnotesize
      \xiaowu
      \@setpar{{\@@par}}%
      \leavevmode
      \llap{\box\@tempboxa}%
      \parskip\hangfootparskip\relax
      \parindent\hangfootparindent\relax
    \else
      \parindent1em%
      \noindent
      \ifdim\footnotemargin&gt;\z@
        \hb@xt@ \footnotemargin{\hss\@makefnmark}%
      \else
        \ifdim\footnotemargin=\z@
          \llap{\@makefnmark}%
        \else
          \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}%
        \fi
      \fi
    \fi
    \footnotelayout#1%
    \ifFN@hangfoot
      \par\egroup
    \fi
  \endgroup
}
%    \end{macrocode}
%
%
% \subsubsection{æ•°å­¦ç›¸å…³}
% \label{sec:equation}
% å…è®¸å¤ªé•¿çš„å…¬å¼æ–­è¡Œã€åˆ†é¡µç­‰ã€‚
%    \begin{macrocode}
\allowdisplaybreaks[4]
%    \end{macrocode}
%
% å…¬å¼è·å‰åŽæ–‡çš„è·ç¦»ç”± 4 ä¸ªå‚æ•°æŽ§åˆ¶ï¼Œå‚è§ \cs{normalsize} çš„å®šä¹‰ã€‚
%
% ä¸­æ–‡æ¨¡æ¿çš„å…¬å¼ç¼–å·ä½¿ç”¨ä¸­æ–‡æ‹¬å·ã€‚éœ€è¦ä¿®æ”¹ \pkg{amsmath} çš„ \cs{tagform@}ã€‚
% è¿™é‡Œä¸­æ–‡çš„ \cs{unskip} æ˜¯ä¸ºäº†â€œ|å¼~\eqref|â€è¿™æ&nbsp;·çš„å†™æ³•ä¸äº§ç”Ÿé¢å¤–çš„ç©ºæ&nbsp;¼ã€‚
%    \begin{macrocode}
\newcommand\thu@eqn@left@paren{ï¼ˆ}
\newcommand\thu@eqn@right@paren{ï¼‰}
\newcommand\thu@set@eqn@paren@style{%
  \ifthu@eqn@paren@style@full
    \renewcommand\thu@eqn@left@paren{ï¼ˆ}%
    \renewcommand\thu@eqn@right@paren{ï¼‰}%
  \else
    \renewcommand\thu@eqn@left@paren{(}%
    \renewcommand\thu@eqn@right@paren{)}%
  \fi
}
\thu@set@eqn@paren@style
\thu@option@hook{eqn-paren-style}{\thu@set@eqn@paren@style}
\newcommand\thu@put@parentheses[1]{%
  \ifthu@language@chinese
    \unskip
    \thu@eqn@left@paren#1\thu@eqn@right@paren
  \else
    (#1)%
  \fi
}
% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
\def\tagform@#1{\maketag@@@{\thu@put@parentheses{\ignorespaces#1\unskip\@@italiccorr}}}
%    \end{macrocode}
%
% é‡å®šä¹‰ \cs{eqref}ï¼ŒåŽ»æŽ‰åŽŸæ¥çš„çš„ \cs{tagform@} ä¸­ \cs{maketag@@@} çš„ \cs{hbox} å’Œ
% \cs{m@th}ï¼Œé˜²æ­¢ä¸­æ–‡å·¦æ‹¬å·ä¸Žå‰é¢æ–‡å­—çš„è·ç¦»è¿‡çª„ã€‚
%    \begin{macrocode}
% \newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
\renewcommand{\eqref}[1]{%
  \textup{%
    \normalfont\thu@put@parentheses{%
      \ignorespaces\ref{#1}\unskip\@@italiccorr
    }%
  }%
}
%    \end{macrocode}
%
% \subsubsection{æµ®åŠ¨å¯¹è±¡ï¼šæ’å›¾å’Œè¡¨æ&nbsp;¼}
% \label{sec:float}
%
% å›¾è¡¨æµ®åŠ¨ä½“çš„é»˜è®¤ä½ç½®è®¾ä¸º |h|ã€‚
%    \begin{macrocode}
\def\fps@figure{htbp}
\def\fps@table{htbp}
%    \end{macrocode}
%
% è®¾ç½®æµ®åŠ¨å¯¹è±¡å’Œæ–‡å­—ä¹‹é—´çš„è·ç¦»
%    \begin{macrocode}
\setlength{\floatsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength{\textfloatsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength{\intextsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength{\@fptop}{0bp \@plus1.0fil}
\setlength{\@fpsep}{12bp \@plus2.0fil}
\setlength{\@fpbot}{0bp \@plus1.0fil}
%    \end{macrocode}
%
% ç”±äºŽ LaTeX2e kernel çš„é—®é¢˜ï¼Œå›¾è¡¨ç­‰æµ®åŠ¨ä½“ä¸Žæ–‡å­—å‰åŽçš„è·ç¦»ä¸ä¸€è‡´ï¼Œéœ€è¦è¿›è¡Œ patchã€‚
% å‚è€ƒ \href{https://github.com/tuna/thuthesis/issues/614}{tuna/thuthesis/issues\#614}ã€
% \url{https://www.zhihu.com/question/46618031} å’Œ
% \url{https://tex.stackexchange.com/a/40363/82731}ã€‚
%    \begin{macrocode}
\patchcmd{\@addtocurcol}%
  {\vskip \intextsep}%
  {\edef\save@first@penalty{\the\lastpenalty}\unpenalty
   \ifnum \lastpenalty = \@M  % hopefully the OR penalty
     \unpenalty
   \else
     \penalty \save@first@penalty \relax % put it back
   \fi
   \ifnum\outputpenalty &lt;-\@Mii
     \addvspace\intextsep
     \vskip\parskip
   \else
     \addvspace\intextsep
   \fi}%
  {}{\thu@patch@error{\@addtocurcol}}
\patchcmd{\@addtocurcol}%
  {\vskip\intextsep \ifnum\outputpenalty &lt;-\@Mii \vskip -\parskip\fi}%
  {\ifnum\outputpenalty &lt;-\@Mii
     \aftergroup\vskip\aftergroup\intextsep
     \aftergroup\nointerlineskip
   \else
     \vskip\intextsep
   \fi}%
  {}{\thu@patch@error{\@addtocurcol}}
\patchcmd{\@getpen}{\@M}{\@Mi}
  {}{\thu@patch@error{\@getpen}}
%    \end{macrocode}
%
% å°†æµ®åŠ¨å‚æ•°è®¾ä¸ºè¾ƒå®½æ¾çš„å€¼ã€‚
%    \begin{macrocode}
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.65}
\renewcommand{\floatpagefraction}{0.60}
%    \end{macrocode}
%
% å…è®¸ç”¨æˆ·è®¾ç½®å›¾è¡¨ç¼–å·çš„è¿žæŽ¥ç¬¦ã€‚
%    \begin{macrocode}
\thu@define@key{
  figure-number-separator = {
    name    = figure@number@separator,
    default = {.},
  },
  table-number-separator = {
    name    = table@number@separator,
    default = {.},
  },
  equation-number-separator = {
    name    = equation@number@separator,
    default = {.},
  },
  number-separator = {
    name    = number@separator,
    default = {.},
  },
}
\renewcommand\thefigure{%
  \ifnum\c@chapter&gt;\z@
    \thechapter
    \thu@figure@number@separator
  \fi
  \@arabic\c@figure
}
\renewcommand\thetable{%
  \ifnum\c@chapter&gt;\z@
    \thechapter
    \thu@table@number@separator
  \fi
  \@arabic\c@table
}
\renewcommand\theequation{%
  \ifnum\c@chapter&gt;\z@
    \thechapter
    \thu@equation@number@separator
  \fi
  \@arabic\c@equation
}
\newcommand\thu@set@number@separator{%
  \let\thu@figure@number@separator\thu@number@separator
  \let\thu@table@number@separator\thu@number@separator
  \let\thu@equation@number@separator\thu@number@separator
}
\thu@option@hook{number-separator}{\thu@set@number@separator}
%    \end{macrocode}
%
% å®šåˆ¶æµ®åŠ¨å›¾å½¢å’Œè¡¨æ&nbsp;¼æ&nbsp;‡é¢˜æ&nbsp;·å¼ï¼š
% \begin{itemize}
%   \item å›¾è¡¨æ&nbsp;‡é¢˜å­—ä½“ä¸º 11pt
%   \item åŽ»æŽ‰å›¾è¡¨å·åŽé¢çš„å†’å·ï¼Œå›¾åºä¸Žå›¾åæ–‡å­—ä¹‹é—´ç©ºä¸€ä¸ªæ±‰å­—ç¬¦å®½åº¦
%   \item å›¾ï¼šcaption åœ¨ä¸‹ï¼Œæ®µå‰ç©º 6 ç£…ï¼Œæ®µåŽç©º 12 ç£…
%   \item è¡¨ï¼šcaption åœ¨ä¸Šï¼Œæ®µå‰ç©º 12 ç£…ï¼Œæ®µåŽç©º 6 ç£…
% \end{itemize}
%    \begin{macrocode}
\DeclareCaptionFont{thu}{%
  \ifthu@degree@bachelor
    \fontsize{11bp}{15bp}\selectfont
  \else
    \ifthu@language@chinese
      \fontsize{11bp}{14.3bp}\selectfont
    \else
      \fontsize{11bp}{12.65bp}\selectfont
    \fi
  \fi
}
\captionsetup{
  font           = thu,
  labelsep       = quad,
  skip           = 6bp,
  figureposition = bottom,
  tableposition  = top,
}
\captionsetup[sub]{font=thu}
\renewcommand{\thesubfigure}{(\alph{subfigure})}
\renewcommand{\thesubtable}{(\alph{subtable})}
% \renewcommand{\p@subfigure}{:}
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿè¦æ±‚è¡¨å•å…ƒæ&nbsp;¼ä¸­çš„æ–‡å­—é‡‡ç”¨ 11pt å®‹ä½“å­—ï¼Œå•å€è¡Œè·ã€‚æ®µå‰ç©º 3 ç£…ï¼Œæ®µåŽç©º 3 ç£…ã€‚
% å¯¹äºŽä¸­æ–‡ï¼Œ\cs{arraystretch} éœ€è¦è°ƒæ•´ä¸º $1 + 6 / (11 \times 1.3) \approx 1.42$ã€‚
% å¯¹äºŽè‹±æ–‡ï¼Œ\cs{arraystretch} éœ€è¦è°ƒæ•´ä¸º $1 + 6 / (11 \times 1.15) \approx 1.47$ã€‚
%
% æ³¨æ„ä¸èƒ½ç®€å•åœ°æŠŠè¡Œè·è®¾ä¸º $\SI{11}{pt} \times 1.3 + \SI{6}{pt} = \SI{20.3}{pt}$ï¼Œ
% è¿™ä¼šå¯¼è‡´å«æœ‰å¤šè¡Œæ–‡å­—çš„å•å…ƒæ&nbsp;¼ä¸­è¡Œè·æœ‰è¯¯ã€‚
%
% å…¶ä»–æµ®åŠ¨ä½“ä¸­ï¼ˆæ¯”å¦‚ \env{algorithm}ï¼‰çš„å­—å·é»˜è®¤åŒè¡¨æ&nbsp;¼ä¸€è‡´ã€‚
%    \begin{macrocode}
\newcommand\thu@set@table@font{
  \ifthu@language@chinese
    \def\thu@table@font{%
      \fontsize{11bp}{14.3bp}\selectfont
      \renewcommand\arraystretch{1.42}%
    }%
  \else
    \def\thu@table@font{%
      \fontsize{11bp}{12.65bp}\selectfont
      \renewcommand\arraystretch{1.47}%
    }%
  \fi
}
\thu@set@table@font
\thu@option@hook{language}{\thu@set@table@font}
\patchcmd\@floatboxreset{%
  \normalsize
}{%
  \thu@table@font
}{}{\thu@patch@error{\@floatboxreset}}
%    \end{macrocode}
%
% å¯¹ \pkg{longtable} è·¨é¡µè¡¨æ&nbsp;¼è¿›è¡Œç›¸åŒçš„è®¾ç½®ã€‚
%
% åœ¨ Word æ¨¡æ¿ä¸­æŒ‰ç…§æ­£ç¡®çš„è®¾ç½®ï¼ˆéœ€è¦åŽ»æŽ‰æ–‡æ¡£ç½‘æ&nbsp;¼ï¼‰ï¼Œ
% ä¸­æ–‡æ¨¡æ¿æ¯é¡µèƒ½è£…ä¸‹ 1 è¡Œæ&nbsp;‡é¢˜ã€1 è¡Œè¡¨å¤´ã€30 è¡Œè¡¨èº«ï¼Œ
% è‹±æ–‡æ¨¡æ¿æ¯é¡µèƒ½è£…ä¸‹ 1 è¡Œæ&nbsp;‡é¢˜ã€1 è¡Œè¡¨å¤´ã€33 è¡Œè¡¨èº«ã€‚
%    \begin{macrocode}
\AtEndOfPackageFile*{longtable}{
  \AtBeginEnvironment{longtable}{%
    \thu@table@font
  }
}
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿå’Œæœ¬ç§‘ç”Ÿéƒ½æŽ¨èä½¿ç”¨ä¸‰çº¿è¡¨ï¼Œå¹¶ä¸”è¦æ±‚è¡¨çš„ä¸Šã€ä¸‹è¾¹çº¿ä¸ºå•ç›´çº¿ï¼Œçº¿ç²—ä¸º 1.5 ç£…ï¼›
% ç¬¬ä¸‰æ¡çº¿ä¸ºå•ç›´çº¿ï¼Œçº¿ç²—ä¸º 1 ç£…ã€‚
% è¿™é‡Œè®¾ç½® \pkg{booktabs} çº¿ç²—çš„é»˜è®¤å€¼ã€‚
%    \begin{macrocode}
\heavyrulewidth=1.5bp
\lightrulewidth=1bp
%    \end{macrocode}
%
%    \begin{macrocode}
\AtEndOfPackageFile*{threeparttable}{
  \g@addto@macro\TPT@defaults{\wuhao}
}
%    \end{macrocode}
%
% \subsubsection{ç«&nbsp;èŠ‚æ&nbsp;‡é¢˜}
% \label{sec:theor}
%    \begin{macrocode}
\newcommand{\thu@abstract@name}{æ‘˜\quad è¦}
\newcommand{\thu@abstract@name@en}{Abstract}
%    \end{macrocode}
%
% å„çº§æ&nbsp;‡é¢˜æ&nbsp;¼å¼è®¾ç½®ã€‚
%    \begin{macrocode}
\ctexset{%
  chapter = {
    nameformat   = {},
    numberformat = {},
    titleformat  = {},
    fixskip      = true,
    afterindent  = true,
    lofskip      = 0pt,
    lotskip      = 0pt,
  },
  section = {
    afterindent  = true,
  },
  subsection = {
    afterindent  = true,
  },
  subsubsection = {
    afterindent  = true,
  },
  paragraph/afterindent = true,
  subparagraph/afterindent = true,
}
%    \end{macrocode}
%
% æœ¬ç§‘ç”Ÿè¦æ±‚ï¼š
% \begin{center}
%   \begin{tabular}{lclll}
%     \toprule
%     æ&nbsp;‡é¢˜        &amp; ä¸­æ–‡       &amp; è‹±æ–‡       &amp; æ®µå‰/åŽé—´è· &amp; è¡Œè· \\
%     \midrule
%     ç«&nbsp;æ&nbsp;‡é¢˜      &amp; é»‘ä½“ä¸‰å·   &amp; Arial 16pt &amp; 24/18 pt    &amp; å•å€ \\
%     ä¸€çº§èŠ‚æ&nbsp;‡é¢˜  &amp; é»‘ä½“å››å·   &amp; Arial 14pt &amp; 24/6 pt    &amp; 20pt \\
%     äºŒçº§èŠ‚æ&nbsp;‡é¢˜  &amp; é»‘ä½“ 13pt &amp; Arial 13pt &amp; 12/6 pt    &amp; 20pt \\
%     ä¸‰çº§èŠ‚æ&nbsp;‡é¢˜  &amp; é»‘ä½“å°å››å· &amp; Arial 12pt &amp; 12/6 pt     &amp; 20pt \\
%     \bottomrule
%   \end{tabular}
% \end{center}
%
% è¿™é‡Œä¸‰çº§èŠ‚æ&nbsp;‡é¢˜çš„â€œä¸­æ–‡é»‘ä½“å°å››å·â€å’Œâ€œè‹±æ–‡ Arial 13ptâ€ä¸ä¸€è‡´ï¼Œå– 13ptã€‚
%    \begin{macrocode}
\newcommand\thu@set@section@format{%
  \ifthu@degree@bachelor
    \ctexset{%
      chapter = {
        format     = \centering\sffamily\fontsize{16bp}{20.8bp}\selectfont,
        titleformat = \thu@stretch{3em},
        aftername  = \quad,
        beforeskip = 27bp,
        afterskip  = 27bp,
      },
      section = {
        format     = \sffamily\fontsize{14bp}{20bp}\selectfont,
        aftername  = \quad,
        beforeskip = 24bp,
        afterskip  = 6bp,
      },
      subsection = {
        format     = \sffamily\fontsize{13bp}{20bp}\selectfont,
        aftername  = \quad,
        beforeskip = 12bp,
        afterskip  = 6bp,
      },
      subsubsection = {
        format     = \sffamily\fontsize{12bp}{20bp}\selectfont,
        aftername  = \quad,
        beforeskip = 12bp,
        afterskip  = 6bp,
      },
    }%
    \ifthu@main@language@chinese
      \ctexset{
        chapter = {
          name   = {ç¬¬,ç«&nbsp;},
          number = \thechapter,
        },
      }%
    \else
      \ctexset{
        chapter = {
          name   = \chaptername\space,
          number = \thu@english@number{chapter},
        },
      }%
    \fi
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿè¦æ±‚ï¼š
% \begin{itemize}
%   \item å„ç«&nbsp;æ&nbsp;‡é¢˜ï¼Œä¾‹å¦‚ï¼šâ€œ\textsf{ç¬¬ 1 ç«&nbsp; å¼•è¨€}â€ã€‚
%
%     ç«&nbsp;åºå·ä¸Žç«&nbsp;åä¹‹é—´ç©ºä¸€ä¸ªæ±‰å­—ç¬¦ã€‚
%     é‡‡ç”¨é»‘ä½“ä¸‰å·å­—ï¼Œå±…ä¸­ä¹¦å†™ï¼Œå•å€è¡Œè·ï¼Œ
%     æ®µå‰ç©º 24 ç£…ï¼Œæ®µåŽç©º 18 ç£…ã€‚
%
%   \item ä¸€çº§èŠ‚æ&nbsp;‡é¢˜ï¼Œä¾‹å¦‚ï¼šâ€œ\textsf{2.1 å®žéªŒè£…ç½®ä¸Žå®žéªŒæ–¹æ³•}â€ã€‚
%
%     èŠ‚æ&nbsp;‡é¢˜åºå·ä¸Žæ&nbsp;‡é¢˜åä¹‹é—´ç©ºä¸€ä¸ªæ±‰å­—ç¬¦ï¼ˆä¸‹åŒï¼‰ã€‚
%     é‡‡ç”¨é»‘ä½“å››å·ï¼ˆ14ptï¼‰å­—å±…å·¦ä¹¦å†™ï¼Œè¡Œè·ä¸ºå›ºå®šå€¼ 20 ç£…ï¼Œ
%     æ®µå‰ç©º 24 ç£…ï¼Œæ®µåŽç©º 6 ç£…ã€‚
%
%   \item äºŒçº§èŠ‚æ&nbsp;‡é¢˜ï¼Œä¾‹å¦‚ï¼šâ€œ\textsf{2.1.1 å®žéªŒè£…ç½®}â€ã€‚
%
%     é‡‡ç”¨é»‘ä½“ 13pt å­—å±…å·¦ä¹¦å†™ï¼Œè¡Œè·ä¸ºå›ºå®šå€¼ 20 ç£…ï¼Œ
%     æ®µå‰ç©º 12 ç£…ï¼Œæ®µåŽç©º 6 ç£…ã€‚
%
%   \item ä¸‰çº§èŠ‚æ&nbsp;‡é¢˜ï¼Œä¾‹å¦‚ï¼šâ€œ\textsf{2.1.2.1 å½’çº³æ³•}â€ã€‚
%
%     é‡‡ç”¨é»‘ä½“å°å››å·ï¼ˆ12ptï¼‰å­—å±…å·¦ä¹¦å†™ï¼Œè¡Œè·ä¸ºå›ºå®šå€¼ 20 ç£…ï¼Œ
%     æ®µå‰ç©º 12 ç£…ï¼Œæ®µåŽç©º 6 ç£…ã€‚
% \end{itemize}
%
% ç”±äºŽ Word çš„è¡Œè·ç®—æ³•ä¸åŒï¼Œè¿™é‡Œè¿›è¡Œäº†ä¸€äº›è°ƒæ•´ä½¿å¾—è§†è§‰ä¸Šæ›´æŽ¥è¿‘ã€‚
%    \begin{macrocode}
  \else
    \ctexset{%
      chapter = {
        titleformat = {},
        beforeskip = 27bp,
        afterskip  = 27bp,
        number     = \thechapter,
      },
      section = {
        beforeskip = 24bp,
        afterskip  = 6bp,
      },
      subsection = {
        beforeskip = 12bp,
        afterskip  = 6bp,
      },
      subsubsection = {
        beforeskip = 12bp,
        afterskip  = 6bp,
      },
    }%
    \ifthu@main@language@chinese
      \ctexset{%
        chapter = {
          format      = \centering\sffamily\sanhao,
          nameformat  = {},
          titleformat = {},
          name        = {ç¬¬,ç«&nbsp;},
          aftername   = \quad,
        },
        section = {
          format     = \sffamily\fontsize{14bp}{20bp}\selectfont,
          aftername  = \quad,
        },
        subsection = {
          format     = \sffamily\fontsize{13bp}{20bp}\selectfont,
          aftername  = \quad,
        },
        subsubsection = {
          format     = \sffamily\fontsize{12bp}{20bp}\selectfont,
          aftername  = \quad,
        },
      }%
    \else
      \ctexset{%
        chapter = {
          format      = \centering\sffamily\bfseries\fontsize{16bp}{20bp}\selectfont,
          nameformat  = \MakeUppercase,
          titleformat = \MakeUppercase,
          name        = \chaptername\space,
          aftername   = \space,
        },
        section = {
          format     = \sffamily\bfseries\fontsize{14bp}{20bp}\selectfont,
          aftername  = \space,
        },
        subsection = {
          format     = \sffamily\bfseries\fontsize{13bp}{20bp}\selectfont,
          aftername  = \space,
        },
        subsubsection = {
          format     = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont,
          aftername  = \space,
        },
      }%
    \fi
  \fi
}
\thu@set@section@format
\thu@option@hook{degree}{\thu@set@section@format}
\thu@option@hook{main-language}{\thu@set@section@format}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand\thu@english@number[1]{%
  \expandafter\ifcase\csname c@#1\endcsname
    Zero\or
    One\or
    Two\or
    Three\or
    Four\or
    Five\or
    Six\or
    Seven\or
    Eight\or
    Nine\or
    Ten\or
    Eleven\or
    Twelve\or
    Thirteen\or
    Fourteen\or
    Fifteen\or
    Sixteen\or
    Seventeen\or
    Eighteen\or
    Nineteen\or
    Twenty\or
    \thu@error{You are genius}%
  \fi
}
%    \end{macrocode}
%
% \begin{macro}{\thu@chapter*}
% é»˜è®¤çš„ \cs{chapter*} å¾ˆéš¾åŒæ—¶æ»¡è¶³ç&nbsp;”ç©¶ç”Ÿé™¢å’Œæœ¬ç§‘ç”Ÿçš„è®ºæ–‡è¦æ±‚ã€‚æœ¬ç§‘è®ºæ–‡è¦æ±‚æ‰€æœ‰çš„
% ç«&nbsp;éƒ½å‡ºçŽ°åœ¨ç›®å½•é‡Œï¼Œæ¯”å¦‚æ‘˜è¦ã€Abstractã€ä¸»è¦ç¬¦å·è¡¨ç­‰ï¼Œæ‰€ä»¥å¯ä»¥ç®€å•çš„æ‰©å±•é»˜
% è®¤\cs{chapter*} å®žçŽ°è¿™ä¸ªç›®çš„ã€‚ä½†æ˜¯ç&nbsp;”ç©¶ç”Ÿåˆä¸è¦è¿™äº›å‡ºçŽ°åœ¨ç›®å½•ä¸­ï¼Œè€Œä¸”è‡´è°¢å’Œå£°æ˜Ž
% éƒ¨åˆ†çš„ç«&nbsp;åã€é¡µçœ‰å’Œç›®å½•éƒ½ä¸åŒï¼Œæ‰€ä»¥å®šä¹‰ä¸€ä¸ªçµæ´»çš„ \cs{thu@chapter*} ä¸“é—¨å¤„ç†è¿™äº›
% è¦æ±‚ã€‚
%
% \cs{thu@chapter*}\oarg{tocline}\marg{title}\oarg{header}: tocline æ˜¯å‡ºçŽ°åœ¨ç›®å½•
% ä¸­çš„æ¡ç›®ï¼Œå¦‚æžœä¸ºç©ºåˆ™æ­¤ chapter ä¸å‡ºçŽ°åœ¨ç›®å½•ä¸­ï¼Œå¦‚æžœçœç•¥è¡¨ç¤ºç›®å½•å‡ºçŽ° titleï¼›
% title æ˜¯ç«&nbsp;æ&nbsp;‡é¢˜ï¼›header æ˜¯é¡µçœ‰å‡ºçŽ°çš„æ&nbsp;‡é¢˜ï¼Œå¦‚æžœå¿½ç•¥åˆ™å– titleã€‚é€šè¿‡è¿™ä¸ªå®æˆ‘æ‰çœŸ
% æ­£ä½“ä¼šåˆ° \TeX{} macro çš„åŠ›é‡ï¼
%    \begin{macrocode}
\newcommand\thu@pdfbookmark[2]{}
\newcommand\thu@phantomsection{}
\NewDocumentCommand\thu@chapter{s o m o}{%
  \IfBooleanF{#1}{%
    \thu@error{You have to use the star form: \string\thu@chapter*}%
  }%
  \if@openright\cleardoublepage\else\clearpage\fi%
  \IfValueTF{#2}{%
    \ifthenelse{\equal{#2}{}}{%
      \thu@pdfbookmark{0}{#3}%
    }{%
      \thu@phantomsection
      \addcontentsline{toc}{chapter}{#2}%
    }%
  }{%
    \thu@phantomsection
    \addcontentsline{toc}{chapter}{#3}%
  }%
  \chapter*{#3}%
  \IfValueTF{#4}{%
    \ifthenelse{\equal{#4}{}}{%
      \@mkboth{}{}%
    }{%
      \@mkboth{#4}{#4}%
    }%
  }{%
    \@mkboth{#3}{#3}%
  }%
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{ç›®å½•}
% \label{sec:toc}
% æœ€å¤š 4 å±‚ï¼Œå³: x.x.x.xï¼Œå¯¹åº”çš„å‘½ä»¤å’Œå±‚åºå·åˆ†åˆ«æ˜¯ï¼š
% \cs{chapter}(0), \cs{section}(1), \cs{subsection}(2), \cs{subsubsection}(3)ã€‚
%    \begin{macrocode}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{2}
%    \end{macrocode}
%
% \begin{macro}{\tableofcontents}
% ç›®å½•ç”Ÿæˆå‘½ä»¤ã€‚
%    \begin{macrocode}
\renewcommand\tableofcontents{%
  \ifthu@degree@graduate
    \thu@chapter*{\contentsname}%
  \else
    \ifthu@degree@bachelor
      \ctexset{chapter/titleformat = \thu@stretch{2.5em}}%
      \thu@chapter*[]{\contentsname}%
      \ctexset{chapter/titleformat = \thu@stretch{3em}}%
    \else
      \thu@chapter*[]{\contentsname}%
    \fi
  \fi
  \@starttoc{toc}%
}
\thu@define@key{
  toc-chapter-style = {
    name = toc@chapter@style,
    choices = {
      arial,
      times,
    },
    default = arial,
  },
}
\thu@option@hook{toc-chapter-style}{\thu@deprecate{"toc-chapter-style" option}{}}
\newcommand\thu@contents@label@delimiter{%
  \ifthu@degree@bachelor
    \ifthu@main@language@chinese
      \space
    \else
      \quad
    \fi
  \else
    \quad
  \fi
}
\newcommand\thu@leaders{\nobreak\titlerule*[4bp]{.}\nobreak}
\newcommand\thu@set@toc@format{%
  \contentsmargin{\z@}%
%    \end{macrocode}
%
% æœ¬ç§‘ç”Ÿï¼š
% ç›®å½•ä»Žç¬¬ 1 ç«&nbsp;å¼€å§‹ï¼Œæ¯ç«&nbsp;æ&nbsp;‡é¢˜ç”¨é»‘ä½“å°å››å·å­—ï¼Œè¡Œé—´è·ä¸º 20ptï¼Œ
% è¡Œå‰ç©º 6ptï¼Œè¡ŒåŽç©º 0ptã€‚
% å…¶å®ƒçº§èŠ‚æ&nbsp;‡é¢˜ç”¨å®‹ä½“å°å››å­—ï¼Œè¡Œé—´è·ä¸º 20ptã€‚
%
% æ³¨æ„ç¤ºä¾‹ä¸­ç«&nbsp;æ&nbsp;‡é¢˜çš„å­—æ¯å’Œæ•°å­—æ˜¯è¡¬çº¿ä½“ï¼Œæ‰€ä»¥è¿™é‡Œç”¨ \cs{heiti}ã€‚
% ç¤ºä¾‹ä¸­çš„ä¸€çº§å’ŒäºŒçº§èŠ‚æ&nbsp;‡é¢˜åˆ†åˆ«ç¼©è¿› 1 å’Œ 1.5 ä¸ªæ±‰å­—ç¬¦ã€‚
%    \begin{macrocode}
  \ifthu@degree@bachelor
    \ifthu@main@language@chinese
      \titlecontents{chapter}
        [0pt]{\sffamily}
        {\contentspush{\thecontentslabel\space}\thu@stretch{3em}}{\thu@stretch{3em}}
        {\rmfamily\thu@leaders\thecontentspage}%
      \titlecontents{section}
        [1em]{}
        {\contentspush{\thecontentslabel\space}}{}
        {\thu@leaders\thecontentspage}%
      \titlecontents{subsection}
        [2em]{}
        {\contentspush{\thecontentslabel\space}}{}
        {\thu@leaders\thecontentspage}%
    \else
%    \end{macrocode}
%
% æœ¬ç§‘ç”Ÿè‹±æ–‡ä¸“ä¸šè¦æ±‚â€œå·¦ä¾§æŒ‰çº§ä¾æ¬¡ç¼©è¿› 0.5cmâ€ã€‚
%    \begin{macrocode}
      \ifthu@main@language@english
        \titlecontents{chapter}
          [\z@]{\addvspace{6bp}\sffamily}
          {\contentspush{\thecontentslabel\quad}}{}
          {\rmfamily\thu@leaders\thecontentspage}%
        \titlecontents{section}
          [0.5cm]{}
          {\contentspush{\thecontentslabel\quad}}{}
          {\thu@leaders\thecontentspage}%
        \titlecontents{subsection}
          [1cm]{}
          {\contentspush{\thecontentslabel\quad}}{}
          {\thu@leaders\thecontentspage}%
      \fi
    \fi
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿï¼š
% \begin{enumerate}
%   \item ç›®å½•ä¸­çš„ç«&nbsp;æ&nbsp;‡é¢˜è¡Œé‡‡ç”¨é»‘ä½“å°å››å·å­—ï¼Œå›ºå®šè¡Œè· 20 ç£…ï¼Œæ®µå‰æ®µåŽ 0 ç£…ï¼›
%     å…¶ä»–å†…å®¹é‡‡ç”¨å®‹ä½“å°å››å·å­—ï¼Œè¡Œè·ä¸ºå›ºå®šå€¼ 20 ç£…ï¼Œ
%     æ®µå‰ã€æ®µåŽå‡ä¸º 0 ç£…ã€‚
%   \item ç›®å½•ä¸­çš„ç«&nbsp;æ&nbsp;‡é¢˜è¡Œå±…å·¦ä¹¦å†™ï¼Œä¸€çº§èŠ‚æ&nbsp;‡é¢˜è¡Œç¼©è¿› 1 ä¸ªæ±‰å­—ç¬¦ï¼Œ
%     äºŒçº§èŠ‚æ&nbsp;‡é¢˜è¡Œç¼©è¿› 2 ä¸ªæ±‰å­—ç¬¦ã€‚
% \end{enumerate}
%
% æ³¨æ„ç¤ºä¾‹ä¸­ç«&nbsp;æ&nbsp;‡é¢˜çš„å­—æ¯å’Œæ•°å­—æ˜¯æ—&nbsp;è¡¬çº¿ä½“ï¼Œæ‰€ä»¥ç”¨è¿™é‡Œç”¨ \cs{sffamily}ï¼Œ
% ä½†æ˜¯é¡µç&nbsp;ä»ç„¶ç”¨ \cs{rmfamily}ã€‚
%    \begin{macrocode}
  \else
    \ifthu@main@language@chinese
      \titlecontents{chapter}
        [\z@]{\sffamily}
        {\contentspush{\thecontentslabel\quad}}{}
        {\rmfamily\thu@leaders\thecontentspage}%
      \titlecontents{section}
        [1em]{}
        {\contentspush{\thecontentslabel\quad}}{}
        {\thu@leaders\thecontentspage}%
      \titlecontents{subsection}
        [2em]{}
        {\contentspush{\thecontentslabel\quad}}{}
        {\thu@leaders\thecontentspage}%
    \else
      \titlecontents{chapter}
        [\z@]{\heiti}
        {\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase}
        {\rmfamily\thu@leaders\thecontentspage}%
      \titlecontents{section}
        [1em]{}
        {\contentspush{\thecontentslabel\space}}{}
        {\thu@leaders\thecontentspage}%
      \titlecontents{subsection}
        [2em]{}
        {\contentspush{\thecontentslabel\space}}{}
        {\thu@leaders\thecontentspage}%
    \fi
  \fi
}
\thu@set@toc@format
\thu@option@hook{degree}{\thu@set@toc@format}
\thu@option@hook{main-language}{\thu@set@toc@format}
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{å°é¢å’Œå°åº•}
% \label{sec:cover}
% å®šä¹‰å¯†çº§å‚æ•°ã€‚
%    \begin{macrocode}
\thu@define@key{
  secret-level = {
    name = secret@level,
  },
  secret-year = {
    name = secret@year,
  },
%    \end{macrocode}
%
% è®ºæ–‡ä¸­è‹±æ–‡é¢˜ç›®ã€‚
%    \begin{macrocode}
  title = {
    default = {æ&nbsp;‡é¢˜},
  },
  title* = {
    default = {Title},
    name    = title@en,
  },
%    \end{macrocode}
%
% ä½œè€…ã€å¯¼å¸ˆã€å‰¯å¯¼å¸ˆã€è”åˆæŒ‡å¯¼è€å¸ˆã€‚
%    \begin{macrocode}
  author = {
    default = {å§“å},
  },
  author* = {
    default = {Name of author},
    name    = author@en,
  },
  student-id = {
    name = student@id,
  },
  supervisor = {
    default = {å¯¼å¸ˆå§“å},
  },
  supervisor* = {
    default = {Name of supervisor},
    name    = supervisor@en,
  },
  associate-supervisor = {
    name = associate@supervisor,
  },
  associate-supervisor* = {
    name = associate@supervisor@en,
  },
  co-supervisor = {
    name = co@supervisor,
  },
  co-supervisor* = {
    name = co@supervisor@en,
  },
  % Reserved for compatibility
  joint-supervisor = {
    name = co@supervisor,
  },
  joint-supervisor* = {
    name = co@supervisor@en,
  },
%    \end{macrocode}
%
% å­¦ä½ä¸­è‹±æ–‡ã€‚
%    \begin{macrocode}
  degree-category = {
    default = {å·¥å­¦åšå£«},
    name    = degree@category,
  },
  degree-category* = {
    default = {Doctor of Philosophy},
    name    = degree@category@en,
  },
}
%    \end{macrocode}
%
% é™¢ç³»ä¸­è‹±æ–‡åç§°ã€‚
%    \begin{macrocode}
\thu@define@key{
  department = {
    default = {è®¡ç®—æœºç§‘å­¦ä¸ŽæŠ€æœ¯ç³»},
  },
%    \end{macrocode}
%
% å­¦ç§‘ä¸­è‹±æ–‡åç§°ã€‚
%    \begin{macrocode}
  discipline = {
    % default = {è®¡ç®—æœºç§‘å­¦ä¸ŽæŠ€æœ¯},
  },
  discipline* = {
    % default = {Computer Science and Technology},
    name    = discipline@en,
  },
}
\thu@option@hook{discipline}{%
  \ifthu@degree@type@professional
    \thu@warning{`discipline' for professional degree is deprecated. Use `professional-field' instead.}
    \let\thu@professional@field\thu@discipline
    \let\thu@discipline\@empty
  \fi
}
\thu@option@hook{discipline*}{%
  \ifthu@degree@type@professional
    \thu@warning{`discipline*' for professional degree is deprecated. Use `professional-field*' instead.}
    \let\thu@professional@field@en\thu@discipline@en
    \let\thu@discipline@en\@empty
  \fi
}
%    \end{macrocode}
%
% ä¸“ä¸šé¢†åŸŸã€‚
%    \begin{macrocode}
\thu@define@key{
  professional-field = {
    name    = professional@field,
  },
  professional-field* = {
    name    = professional@field@en,
  },
%    \end{macrocode}
%
% å·¥ç¨‹é¢†åŸŸã€‚
%    \begin{macrocode}
  engineering-field = {
    name    = engineering@field,
  },
  engineering-field* = {
    name    = engineering@field@en,
  },
%    \end{macrocode}
%
% è®ºæ–‡æˆæ–‡æ—¥æœŸã€‚
%    \begin{macrocode}
  date = {
    default = {\the\year-\two@digits{\month}-\two@digits{\day}},
  },
%    \end{macrocode}
%
% åšå£«åŽä¸“ç”¨å°é¢å‚æ•°ã€‚
%    \begin{macrocode}
  clc,
  udc,
  id,
  discipline-level-1 = {
    default = {ä¸€çº§å­¦ç§‘åç§°},
    name    = discipline@level@i,
  },
  discipline-level-2 = {
    default = {äºŒçº§å­¦ç§‘åç§°},
    name    = discipline@level@ii,
  },
  start-date = {
    name    = start@date,
    default = {\the\year-\two@digits{\month}-\two@digits{\day}},
  },
  end-date = {
    name    = end@date,
    default = {\the\year-\two@digits{\month}-\two@digits{\day}},
  },
%    \end{macrocode}
%
% ä¸­æ–‡å°é¢åŽæ˜¯å¦ç”Ÿæˆä¹¦è„Šé¡µã€‚
%    \begin{macrocode}
  include-spine = {
    name = include@spine,
    choices = {
      false,
      true,
    },
    default = false,
  },
}
%    \end{macrocode}
%
% è¾“å‡ºæ—¥æœŸçš„ç»™å®šæ&nbsp;¼å¼ï¼š\cs{thu@format@date}\marg{format}\marg{date}ï¼Œ
% å…¶ä¸­æ&nbsp;¼å¼ \meta{format} æŽ¥å—ä¸‰ä¸ªå‚æ•°åˆ†åˆ«å¯¹åº”å¹´ã€æœˆã€æ—¥ï¼Œ
% \meta{date} æ˜¯ ISO æ&nbsp;¼å¼çš„æ—¥æœŸï¼ˆyyyy-mm-ddï¼‰ã€‚
%    \begin{macrocode}
\newcommand\thu@format@date[2]{%
  \edef\thu@@date{#2}%
  \def\thu@@process@date##1-##2-##3\@nil{%
    #1{##1}{##2}{##3}%
  }%
  \expandafter\thu@@process@date\thu@@date\@nil
}
\newcommand\thu@date@zh@digit[3]{#1 å¹´ \number#2 æœˆ \number#3 æ—¥}
\newcommand\thu@date@zh@digit@short[3]{#1 å¹´ \number#2 æœˆ}
\newcommand\thu@date@zh@short[3]{\zhdigits{#1}å¹´\zhnumber{#2}æœˆ}
\newcommand\thu@date@month[1]{%
  \ifcase\number#1\or
    January\or February\or March\or April\or May\or June\or
    July\or August\or September\or October\or November\or December%
  \fi
}
\newcommand\thu@date@en@short[3]{\thu@date@month{#2}, #1}
%    \end{macrocode}
%
% ä¸‹åˆ’çº¿å‘½ä»¤ã€‚
% \pkg{ulem} çš„ä¸‹åˆ’çº¿ \cs{uline} å¯ä»¥æŽ§åˆ¶ç²—ç»†å’Œæ·±åº¦ã€‚
%    \begin{macrocode}
\newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt}
\newcommand\thu@uline[2][6em]{\uline{\hb@xt@ #1{\hss#2\hss}}}
%    \end{macrocode}
%
% å°†å†…å®¹æ‹‰ä¼¸æˆ–åŽ‹ç¼©åˆ°å›ºå®šå®½åº¦ã€‚
%    \begin{macrocode}
\newcommand\thu@fixed@box[2]{%
  \begingroup
    \ifLuaTeX
      \ltjsetparameter{kanjiskip = {0pt plus 2filll minus 1filll}}%
    \else
      \renewcommand\CJKglue{\hspace{0pt plus 2filll minus 1filll}}%
    \fi
    \makebox[#1][l]{#2}%
  \endgroup
}
%    \end{macrocode}
%
% å¦‚æžœå†…å®¹å°äºŽç»™å®šå®½åº¦ï¼Œåˆ™æ‹‰ä¼¸è‡³è¯¥å®½åº¦ï¼Œå¦åˆ™å–è‡ªç„¶å®½åº¦ã€‚
%    \begin{macrocode}
\newbox\thu@stretch@box
\newcommand\thu@stretch[2]{%
  \sbox\thu@stretch@box{#2}%
  \ifdim \wd\thu@stretch@box &lt; #1\relax
    \begingroup
      \ifLuaTeX
        \ltjsetparameter{kanjiskip = {0pt plus 2filll}}%
      \else
        \renewcommand\CJKglue{\hspace{0pt plus 2filll}}%
      \fi
      \makebox[#1][l]{#2}%
    \endgroup
  \else
    \box\thu@stretch@box
  \fi
}
%    \end{macrocode}
%
% å¦‚æžœå†…å®¹å°äºŽç»™å®šå®½åº¦ï¼Œåˆ™åœ¨å³ä¾§å¡«å……ç©ºç™½è‡³è¯¥å®½åº¦ï¼Œå¦åˆ™å–è‡ªç„¶å®½åº¦ã€‚
%    \begin{macrocode}
\newbox\thu@pad@box
\newcommand\thu@pad[2]{%
  \sbox\thu@pad@box{#2}%
  \ifdim \wd\thu@pad@box &lt; #1\relax
    \makebox[#1][l]{\box\thu@pad@box}%
  \else
    \box\thu@pad@box
  \fi
}
%    \end{macrocode}
%
% å¯¼å¸ˆçš„å§“åå’ŒèŒç§°ä½¿ç”¨â€œ,â€åˆ†å¼€ï¼Œæ‰€ä»¥è¿™é‡Œç”¨ \pkg{kvsetkeys} çš„ \cs{comma@parse} æ¥å¤„ç†ã€‚
%    \begin{macrocode}
\newcounter{thu@csl@count}
\newcommand\thu@name@title@process[1]{%
  \ifcase\c@thu@csl@count  % == 0
    \gdef\thu@@name{#1}%
  \or  % == 1
    \gdef\thu@@title{#1}%
  \fi
  \stepcounter{thu@csl@count}%
}
\newcommand\thu@name@title@format[2]{%
  \thu@pad{3cm}{\thu@stretch{4em}{#1}}%
  \thu@stretch{3em}{#2}%
}
\newcommand\thu@name@title[1]{%
  \setcounter{thu@csl@count}{0}%
  \gdef\thu@@name{}%
  \gdef\thu@@title{}%
  \expandafter\comma@parse\expandafter{#1}{\thu@name@title@process}%
  \thu@name@title@format{\thu@@name}{\thu@@title}%
}
%    \end{macrocode}
%
% \myentry{å°é¢}
% \begin{macro}{\maketitle}
% ç”Ÿæˆå°é¢ï¼ˆé¢˜åé¡µï¼‰æ€»å‘½ä»¤ã€‚
%    \begin{macrocode}
\renewcommand\maketitle{%
  \cleardoublepage
  \pagenumbering{Alph}%
  \thu@pdfbookmark{-1}{\thu@title}%
  \thu@titlepage
  \ifthu@include@spine@true
    \spine
  \fi
  \ifthu@degree@graduate
    \ifthu@thesis@type@thesis
      \cleardoublepage
      \thu@titlepage@en
    \fi
  \fi
  \clearpage
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\thu@titlepage}
% ä¸­æ–‡å°é¢ï¼ˆé¢˜åé¡µï¼‰
%
%    \begin{macrocode}
\newcommand\thu@titlepage{%
  \thusetup{language = chinese}%
  \ifthu@degree@graduate
    % ç&nbsp;”ç©¶ç”Ÿ
    \thu@titlepage@thesis
  \else
    \ifthu@degree@bachelor
      % æœ¬ç§‘ç”Ÿ
      \thu@titlepage@bachelor
    \else
      \ifthu@degree@postdoc
        % åšåŽ
        \thu@cover@postdoc
        \cleardoublepage
        \thu@titlepage@postdoc
      \fi
    \fi
  \fi
  \thu@reset@main@language
}
%    \end{macrocode}
% \end{macro}
%
% \myentry{ç&nbsp;”ç©¶ç”Ÿä¸­æ–‡å°é¢}
% ã€Šå†™ä½œæŒ‡å—ã€‹è§„å®šä¸­æ–‡å°é¢é¡µè¾¹è·ï¼š
% ä¸Šâ€”6. 0 åŽ˜ç±³ï¼Œä¸‹â€”5.5 åŽ˜ç±³ï¼Œå·¦â€”4.0 åŽ˜ç±³ï¼Œå³â€”4.0 åŽ˜ç±³ï¼Œè£…è®¢çº¿ 0 åŽ˜ç±³ã€‚
% ç„¶è€Œä½œä¸ºäº‹å®žæ&nbsp;‡å‡†çš„ Word æ¨¡æ¿çš„é¡µè¾¹è·æ˜¯ä¸Šä¸‹ 6.0 åŽ˜ç±³ï¼Œå·¦å³ 4.0 åŽ˜ç±³ã€‚
% è¿™é‡Œç¼©å°ä¸Šè¾¹è·ä»¥æ–¹ä¾¿æŽ’ç‰ˆä¿å¯†ä¿¡æ¯ã€‚
%    \begin{macrocode}
\newcommand\thu@titlepage@thesis{%
  \newgeometry{
    top     = 2cm,
    bottom  = 6cm,
    hmargin = 3.5cm,
  }%
  \thispagestyle{empty}%
  \null\vskip 8.1pt%
  \begingroup
    \centering
    \parbox[t][2cm][t]{\textwidth}{%
      \hskip -21.5pt%
      \thu@titlepage@secret
    }\par
    \vskip 40.5pt%
    \begingroup
      \sffamily\fontsize{26bp}{46.8bp}\selectfont
      \thu@title\par
    \endgroup
    \ifthu@main@language@english
      \vskip 5.4pt%
      \begingroup
        \sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
        \thu@title@en\par
      \endgroup
      \vskip -9.2pt%
    \fi
    \vskip 24.1pt%
    \thu@title@page@degree@category\par
    \vfill
    \ifthu@degree@type@academic
      \parbox[t][7.25cm][t]{\textwidth}{%
        \fangsong\fontsize{16bp}{31.2bp}\selectfont
        \thu@titlepage@info
      }\par
    \else
      \parbox[t][5.25cm][b]{\textwidth}{%
        \fangsong\fontsize{16bp}{31.2bp}\selectfont
        \thu@titlepage@info
      }\par
      \vskip 62pt%
    \fi
    \parbox[t][1.03cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
  \endgroup
  \clearpage
  \restoregeometry
}
%    \end{macrocode}
%
% é€‰é¢˜æŠ¥å‘Šå°é¢éœ€è¦æä¾›å­¦å·
%    \begin{macrocode}
\newcommand\thu@set@student@id{%
  \ifthu@thesis@type@proposal\else
    \ifx\thu@student@id\@empty\else
      \thu@warning{`student-id' in "\protect\thusetup" would be ignored when `thesis-type' is not proposal.}%
    \fi
  \fi
}
\thu@set@student@id
\thu@option@hook{thesis-type}{\thu@set@student@id}
\thu@option@hook{student-id}{\thu@set@student@id}
%    \end{macrocode}
%
% æ¶‰å¯†ä¿¡æ¯
%    \begin{macrocode}
\newcommand\thu@titlepage@secret{%
  \sffamily\sanhao
  \ifx\thu@secret@level\@empty
    \phantom{ç§˜å¯†}%
  \else
    \thu@secret@level\symbol{"2605}\makebox[3em][c]{\thu@secret@year}å¹´%
  \fi\par
}
%    \end{macrocode}
%
% ç”³è¯·å­¦ä½çš„å­¦ç§‘é—¨ç±»æˆ–ä¸“ä¸šå­¦ä½ç±»åˆ«: ä¸‰å·ï¼ˆ16bpï¼‰å®‹ä½“å­—ï¼Œå­—è·å»¶ä¼¸ 0.5bpï¼Œ
% æ‰€ä»¥ \cs{CJKglue} åº”è¯¥è®¾ä¸º 1 bpã€‚
%    \begin{macrocode}
\newcommand\thu@title@page@degree@category{%
  \begingroup
    \fontsize{16bp}{22bp}\selectfont
    \ifLuaTeX
      \fontspec{\CJK@family}%
      \ltjsetparameter{kanjiskip = {1bp}}%
    \else
      \CJKfamily+{}%
      \renewcommand\CJKglue{\hspace{1bp}}%
    \fi
    \ifthu@thesis@type@thesis
      (ç”³è¯·æ¸…åŽå¤§å­¦\thu@degree@category
      \ifthu@degree@type@professional
        ä¸“ä¸š%
      \fi
      å­¦ä½è®ºæ–‡)%
    \else
      \ifthu@thesis@type@proposal
        (æ¸…åŽå¤§å­¦%
        \ifthu@degree@doctor
          åšå£«%
        \else
          \ifthu@degree@master
            ç¡•å£«%
          \fi
        \fi
        å­¦ä½è®ºæ–‡é€‰é¢˜æŠ¥å‘Š)%
      \fi
    \fi
    \par
  \endgroup
}
%    \end{macrocode}
%
% ä½œè€…åŠæŒ‡å¯¼æ•™å¸ˆä¿¡æ¯
%    \begin{macrocode}
\newcommand\thu@titlepage@info{%
  \thu@titlepage@info@tabular{2.3cm}{2.85cm}{2.75cm}{0.77cm}{%
    \thu@info@item{åŸ¹å…»å•ä½}{}{\thu@department}%
    \ifthu@degree@type@academic
      \thu@info@item{å­¦ç§‘}{}{\thu@discipline}%
      \thu@info@item{ç&nbsp;”ç©¶ç”Ÿ}{\thu@name@title}{\thu@author}%
    \else
      \thu@info@item{ä¸“ä¸šé¢†åŸŸ}{}{\thu@professional@field}%
      \thu@info@item{å·¥ç¨‹é¢†åŸŸ}{}{\thu@engineering@field}%
      \thu@info@item{ç”³è¯·äºº}{\thu@name@title}{\thu@author}%
    \fi
    \ifthu@thesis@type@proposal
      \ifx\thu@student@id\@empty
        \thu@warning{Missing option `student-id' in "\protect\thusetup", ID will not appear on cover.}%
      \else
        \thu@info@item{å­¦å·}{}{\thu@student@id}%
      \fi
    \fi
    \thu@info@item{æŒ‡å¯¼æ•™å¸ˆ}{\thu@name@title}{\thu@supervisor}%
    \thu@info@item{å‰¯æŒ‡å¯¼æ•™å¸ˆ}{\thu@name@title}{\thu@associate@supervisor}%
    \thu@info@item{è”åˆæŒ‡å¯¼æ•™å¸ˆ}{\thu@name@title}{\thu@co@supervisor}%
  }\par
}
%    \end{macrocode}
%
% æ&nbsp;‡é¢˜é¡µä½œè€…ä¿¡æ¯è¡¨
% \texttt{\#1}: è¡¨æ&nbsp;¼å·¦ä¾§è‡³ç‰ˆå¿ƒçš„è·ç¦»ï¼›\\
% \texttt{\#2}: â€œåŸ¹å…»å•ä½â€çš„è¾¹æ¡†å®½åº¦ï¼›\\
% \texttt{\#3}: â€œåŸ¹å…»å•ä½â€çš„æ–‡å­—å®½åº¦ï¼›\\
% \texttt{\#4}: å†’å·çš„è¾¹æ¡†ï¼›\\
% \texttt{\#5}: è¡¨æ&nbsp;¼å†…å®¹ã€‚
%    \begin{macrocode}
\newcommand\thu@titlepage@info@tabular[5]{%
  \def\thu@info@item##1##2##3{%
    \ifx##3\@empty\else
      \thu@pad{#2}{\thu@fixed@box{#3}{##1}}%
      \thu@pad{#4}{ï¼š}%
      ##2{##3}\\
    \fi
  }%
  \hspace{#1}%
  \begin{tabular}{l}%
    \renewcommand\arraystretch{1}%
    #5%
  \end{tabular}%
}
%    \end{macrocode}
%
% è®ºæ–‡æˆæ–‡æ‰“å°çš„æ—¥æœŸï¼Œç”¨ä¸‰å·å®‹ä½“æ±‰å­—ï¼Œå­—è·å»¶ä¼¸ 0.5bpï¼Œ
% æ‰€ä»¥ \cs{CJKglue} åº”è¯¥è®¾ä¸º 1 bpã€‚
%    \begin{macrocode}
\newcommand\thu@titlepage@date{%
  \begingroup
    \sanhao
    \ifLuaTeX
      \ltjsetparameter{kanjiskip = {1bp}}%
    \else
      \renewcommand\CJKglue{\hspace{1bp}}%
    \fi
    \thu@format@date{\thu@date@zh@short}{\thu@date}\par
  \endgroup
}
%    \end{macrocode}
%
% \myentry{ç&nbsp;”ç©¶ç”Ÿè‹±æ–‡å°é¢}
% \begin{macro}{\thu@titlepage@en}
%    \begin{macrocode}
\newcommand{\thu@titlepage@en}{%
  \newgeometry{
    top     = 5.5cm,
    bottom  = 5cm,
    hmargin = 3.4cm,
  }%
  \thispagestyle{empty}%
  \thusetup{language = english}%
  \ifthu@degree@type@academic
    \thu@titlepage@en@graduate@academic
  \else
    \thu@titlepage@en@graduate@professional
  \fi
  \thu@reset@main@language
  \clearpage
  \restoregeometry
}
\newcommand\thu@titlepage@en@graduate@academic{%
  \begingroup
    \centering
    \null\vskip -0.31cm%
    \parbox[t][143bp][t]{\textwidth}{%
      \centering\thu@titlepage@en@title
    }\par
    \sanhao[1.725]%
    \thu@titlepage@en@degree
    \vskip 3bp%
    in\par
    \vskip 3.5bp%
    {\bfseries\sffamily\thu@discipline@en\par}
    \vfill
    {\sffamily by\par}
    \vskip 0.24cm%
    {\sffamily\bfseries\thu@author@en\par}%
    \vskip 0.18cm%
    \parbox[t][3.0cm][t]{\textwidth}{%
      \centering
      \xiaosan[2.1]%
      \thu@titlepage@en@supervisor
    }\par
    \thu@titlepage@en@date
    \vskip 0.7cm%
  \endgroup
}
\newcommand\thu@titlepage@en@graduate@professional{%
  \begingroup
    \centering
    \null\vskip -0.31cm%
    \parbox[t][143bp][t]{\textwidth}{%
      \centering\thu@titlepage@en@title
    }\par
    \sanhao[1.725]%
    \thu@titlepage@en@degree
    \vfill
    {\sffamily by\par}
    \vskip 0.24cm%
    {\sffamily\bfseries\thu@author@en\par}%
    \ifx\thu@professional@field@en\empty
      \vskip 1.95cm%
    \else
      \vskip -0.1cm%
      {\sffamily\bfseries(\thu@professional@field@en)\par}%
      \vskip 1.1cm%
    \fi
    \parbox[t][3.37cm][t]{\textwidth}{%
      \centering
      \xiaosan[1.82]%
      \thu@titlepage@en@supervisor
    }\par
    \thu@titlepage@en@date
    \vskip 0.3cm%
  \endgroup
}
\newcommand\thu@titlepage@en@title{%
  \begingroup
    % å¯¹é½åˆ°ç½‘æ&nbsp;¼ï¼Œæ¯è¡Œ 15.6bp
    \sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
    \thu@title@en\par
  \endgroup
}
\newcommand\thu@thesis@name@en{%
  \ifthu@degree@master
    Thesis%
  \else
    Dissertation%
  \fi
}
\newcommand\thu@titlepage@en@degree{%
  \thu@thesis@name@en{} submitted to\par
  {\bfseries Tsinghua University\par}%
  in partial fulfillment of the requirement\par
  for the
  \ifthu@degree@type@professional
    professional
  \fi
  degree of\par
  {\sffamily\bfseries\thu@degree@category@en\par}%
}
\newcommand\thu@titlepage@en@supervisor{%
  \begin{tabular}{r@{\makebox[20.5bp][l]{\hspace{2bp}:}}l}%
    \renewcommand\arraystretch{1}%
    \thu@thesis@name@en{} Supervisor &amp; \thu@supervisor@en \\
    \ifx\thu@associate@supervisor@en\@empty\else
      Associate Supervisor           &amp; \thu@associate@supervisor@en \\
    \fi
    \ifx\thu@co@supervisor@en\@empty\else
      Co-supervisor                  &amp; \thu@co@supervisor@en \\
    \fi
  \end{tabular}%
}
\newcommand\thu@titlepage@en@date{%
  \begingroup
    \sffamily\bfseries\sanhao
    \thu@format@date{\thu@date@en@short}{\thu@date}\par
  \endgroup
}
%    \end{macrocode}
% \end{macro}
%
% \myentry{æœ¬ç§‘ç”Ÿå°é¢}
% æœ¬ç§‘ç”Ÿå°é¢è¦æ±‚ï¼š
% \begin{itemize}
%   \item é¢˜ç›®ï¼š1 å·é»‘ä½“å­—ï¼Œ1.2 å€è¡Œè·ã€‚
%   \item ç³»åˆ«ã€ä¸“ä¸šã€å§“ååŠæŒ‡å¯¼æ•™å¸ˆä¿¡æ¯éƒ¨åˆ†ä½¿ç”¨ä¸‰å·ä»¿å®‹\_GB2312 å­—ã€‚
%   \item è®ºæ–‡æˆæ–‡æ‰“å°çš„æ—¥æœŸç”¨é˜¿æ‹‰ä¼¯æ•°å­—ï¼Œé‡‡ç”¨å°å››å·å®‹ä½“ã€‚
%   \item æ¶‰å¯†çš„è®ºæ–‡åœ¨å°é¢å³ä¸Šè§’å¤„æ³¨æ˜Žè®ºæ–‡å¯†çº§ï¼Œé‡‡ç”¨å°å››å·å®‹ä½“ã€‚
% \end{itemize}
%
% å¤–æ–‡ç³»è‹±è¯­ä¸“ä¸šè¦æ±‚é¢˜ç›®å…ˆå†™ä¸­æ–‡æ&nbsp;‡é¢˜ï¼Œå†å†™è‹±æ–‡æ&nbsp;‡é¢˜ï¼Œå­—å· 26ptï¼Œ32 ç£…è¡Œè·ã€‚
%    \begin{macrocode}
\newcommand\thu@titlepage@bachelor{%
  \newgeometry{
    top    = 3.8cm,
    bottom = 3.2cm,
    left   = 3.2cm,  % è£…è®¢çº¿é&nbsp;å·¦ 0.2 cm
    right  = 3cm,
  }%
  \thispagestyle{empty}%
  \begingroup
    \centering
    \parbox[t][0cm][t]{\textwidth}{%
      \hfill
      \xiaosi
      \ifx\thu@secret@level\@empty\else
        \thu@secret@level\space\thu@secret@year å¹´\par
      \fi
    }\par
  \endgroup
  \vspace{19bp}%
  \begingroup
    \centering
    \hspace*{-5bp}%
    \includegraphics[width=50.4bp]{thu-fig-logo.pdf}%
    \hspace{10bp}%
    \raisebox{7bp}{\includegraphics[width=117bp]{thu-text-logo.pdf}}%
    \par
    \vspace{17bp}%
    \begingroup
      \sffamily\bfseries\xiaochu\ziju{0.3}%
      ç»¼åˆè®ºæ–‡è®­ç»ƒ%
      \ifthu@thesis@type@proposal
        \\å¼€é¢˜æŠ¥å‘Š
      \fi
      \par
    \endgroup
    \vspace{48bp}%
    \parbox[t][136bp]{\linewidth}{%
      \centering
      \heiti\fontsize{26bp}{32.5bp}\selectfont
      \thu@title\par
      \ifthu@main@language@english
        \thusetup{language=english}%
        \thu@title@en\par
        \thusetup{language=chinese}%
      \fi
    }\par
  \endgroup
  \begingroup
    \fangsong
    \fontsize{16bp}{30.96bp}\selectfont
    \noindent
    \def\thu@name@title@format##1##2{%
      \thu@stretch{4em}{##1}%
      \hspace{1.5em}%
      \thu@stretch{2.5em}{##2}%
    }%
    \thu@titlepage@info@tabular{81bp}{2.5cm}{4em}{0.82cm}{%
      \thu@info@item{ç³»åˆ«}{}{\thu@department}%
      \thu@info@item{ä¸“ä¸š}{}{\thu@discipline}%
      \thu@info@item{å§“å}{\thu@name@title}{\thu@author}%
      \thu@info@item{æŒ‡å¯¼æ•™å¸ˆ}{\thu@name@title}{\thu@supervisor}%
      \thu@info@item{å‰¯æŒ‡å¯¼æ•™å¸ˆ}{\thu@name@title}{\thu@associate@supervisor}%
      \thu@info@item{è”åˆæŒ‡å¯¼æ•™å¸ˆ}{\thu@name@title}{\thu@co@supervisor}%
    }\par
  \endgroup
  \vfill
  \begingroup
    \centering
    \fontsize{16bp}{24bp}\selectfont
    \ziju{0.03}%
    \thu@format@date{\thu@date@zh@short}{\thu@date}\par
  \endgroup
  \vspace*{60bp}%
  \clearpage
  \restoregeometry
}
%    \end{macrocode}
%
% \myentry{åšå£«åŽå°é¢}
%    \begin{macrocode}
\newcommand\thu@cover@postdoc{%
  \thispagestyle{empty}%
  \begin{center}%
    \renewcommand\ULthickness{0.7pt}%
    \vspace*{0.35cm}%
    {\sihao[2.6]%
      \thu@stretch{3.1em}{åˆ†ç±»å·}\thu@underline[3.7cm]{\thu@clc}\hfill
      å¯†çº§\thu@underline[3.7cm]{\thu@secret@level}\par
      \thu@stretch{3.1em}{U D C}\thu@underline[3.7cm]{\thu@udc}\hfill
      ç¼–å·\thu@underline[3.7cm]{\thu@id}\par
    }%
    \vskip 3.15cm%
    {\sffamily\bfseries\xiaoer[2.6]%
      {\ziju{1.5}æ¸…åŽå¤§å­¦\par}%
      {\ziju{0.5}åšå£«åŽç&nbsp;”ç©¶å·¥ä½œæŠ¥å‘Š\par}%
    }%
    \vskip 0.2cm%
    \parbox[t][4.0cm][c]{\textwidth}{%
      \centering\sihao[3.46]%
      \renewcommand\ULdepth{1em}%
      \expandafter\uline\expandafter{\thu@title}\par
    }\par
    \vskip 0.4cm%
    {\xiaosi\thu@author\par}%
    \vskip 1.4cm%
    {\xiaosi[1.58]%
      \renewcommand\ULdepth{0.9em}%
      å·¥ä½œå®Œæˆæ—¥æœŸ\quad
      \thu@uline[5.9cm]{%
        \thu@format@date{\thu@date@zh@digit@short}{\thu@start@date}â€”%
        \thu@format@date{\thu@date@zh@digit@short}{\thu@end@date}
      }\par
      \vskip 0.55cm%
      æŠ¥å‘Šæäº¤æ—¥æœŸ\quad
      \thu@uline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par
    }%
    \vskip 0.45cm%
    {\xiaosi[2]{\ziju{1}æ¸…åŽå¤§å­¦}\quad ï¼ˆåŒ—äº¬ï¼‰\par}%
    \vskip 0.25cm%
    {\xiaosi[2]\thu@format@date{\thu@date@zh@digit@short}{\thu@date}\par}%
  \end{center}%
}
%    \end{macrocode}
%
% \myentry{åšå£«åŽé¢˜åé¡µ}
%    \begin{macrocode}
\newcommand\thu@titlepage@postdoc{%
  \thispagestyle{empty}%
  \begin{center}%
    \vspace*{1.5cm}%
    \parbox[t][3cm][c]{\textwidth}{%
      \centering\sanhao[1.95]\thu@title\par
    }\par
    \vskip 0.15cm%
    \parbox[t][3cm][c]{\textwidth}{%
      \centering\sihao[1.36]\thu@title@en\par
    }\par
    \vskip 0.4cm%
    {\xiaosi[2.6]%
      \begin{tabular}{l@{\quad}l}%
        \renewcommand\arraystretch{1}%
        \thu@stretch{11em}{åšå£«åŽå§“å}                  &amp; \thu@author           \\
        \thu@stretch{11em}{æµåŠ¨ç«™ï¼ˆä¸€çº§å­¦ç§‘ï¼‰åç§°}      &amp; \thu@discipline@level@i  \\
        \thu@stretch{11em}{ä¸“\quad{}ä¸šï¼ˆäºŒçº§å­¦ç§‘ï¼‰åç§°} &amp; \thu@discipline@level@ii \\
      \end{tabular}\par
    }%
    \vskip 2.7cm%
    {\xiaosi[2.6]%
      ç&nbsp;”ç©¶å·¥ä½œèµ·å§‹æ—¶é—´\quad\thu@format@date{\thu@date@zh@digit}{\thu@start@date}\par
      \vskip 0.1cm%
      ç&nbsp;”ç©¶å·¥ä½œæœŸæ»¡æ—¶é—´\quad\thu@format@date{\thu@date@zh@digit}{\thu@end@date}\par
    }%
    \vskip 2.1cm%
    {\xiaosi[2.6]æ¸…åŽå¤§å­¦äººäº‹å¤„ï¼ˆåŒ—äº¬ï¼‰\par}%
    \vskip 0.6cm%
    {\wuhao\thu@format@date{\thu@date@zh@digit@short}{\thu@date}\par}%
  \end{center}%
}
%    \end{macrocode}
%
% \subsubsection{ç­”è¾©å§”å‘˜ä¼šåå•}
% \begin{environment}{committee}
% å­¦ä½è®ºæ–‡æŒ‡å¯¼å°ç»„ã€å…¬å¼€è¯„é˜…äººå’Œç­”è¾©å§”å‘˜ä¼šåå•ã€‚
%    \begin{macrocode}
\def\thu@committee@name{å­¦ä½è®ºæ–‡æŒ‡å¯¼å°ç»„ã€å…¬å¼€è¯„é˜…äººå’Œç­”è¾©å§”å‘˜ä¼šåå•}
\NewEnviron{committee}[1][]{%
  \ifthu@degree@graduate
    \cleardoublepage
    \let\thu@committee@file\@empty
    \kv@define@key{thu@committee}{name}{\let\thu@committee@name\kv@value}%
    \kv@define@key{thu@committee}{file}{\let\thu@committee@file\kv@value}%
    \kv@set@family@handler{thu@committee}{%
      \ifx\kv@value\relax
        \let\thu@committee@file\kv@key
      \else
        \kv@handled@false
      \fi
    }%
    \kvsetkeys{thu@committee}{#1}%
    \ifx\thu@committee@file\@empty
      \begingroup
        \ctexset{
          chapter = {
            format    = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
            afterskip = 49bp,
          },
          section = {
            beforeskip  =  26bp,
            afterskip   =  9.5bp,
            format      += \centering,
            numbering   =  false,
            afterindent =  false,
          },
        }%
        \thu@chapter*[]{\thu@committee@name}%
        \thispagestyle{empty}%
        \thusetup{language=chinese}%
        \BODY\clearpage
        \thu@reset@main@language
      \endgroup
    \else
      \thu@pdfbookmark{0}{\thu@committee@name}%
      \includepdf{\thu@committee@file}%
    \fi
  \fi
}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{æŽˆæƒè¯´æ˜Ž}
% \begin{macro}{\copyrightpage}
% æŽˆæƒè¯´æ˜Ž
%    \begin{macrocode}
\newcommand\copyrightpage[1][]{%
  \ifthu@degree@postdoc\relax\else
    \cleardoublepage
    \def\thu@@tmp{#1}
    \ifx\thu@@tmp\@empty
      \thusetup{language=chinese}%
      \ifthu@degree@bachelor
        \thu@copyright@page@bachelor
      \else
        \thu@copyright@page@graduate
      \fi
      \clearpage
      \thu@reset@main@language
    \else
      \thispagestyle{empty}%
      \thu@pdfbookmark{0}{å…³äºŽå­¦ä½è®ºæ–‡ä½¿ç”¨æŽˆæƒçš„è¯´æ˜Ž}%
      \thu@phantomsection
      \kv@define@key{thu@copyright}{file}{\includepdf{\kv@value}}%
      \kv@set@family@handler{thu@copyright}{%
        \ifx\kv@value\relax
          \includepdf{\kv@key}%
        \else
          \kv@handled@false
        \fi
      }%
      \kvsetkeys{thu@copyright}{#1}%
    \fi
  \fi
}
%    \end{macrocode}
%
% æ”¯æŒæ‰«ææ–‡ä»¶æ›¿æ¢ã€‚
%    \begin{macrocode}
\newcommand{\thu@authorization@frontdate}{%
  æ—¥\ifthu@degree@bachelor\hspace{1em}\else\hspace{2em}\fi æœŸï¼š}
\newcommand\thu@copyright@page@graduate{%
  \begingroup
    \ctexset{
      chapter = {
        format     = {\centering\sffamily\erhao},
        beforeskip = 40bp,
        afterskip  = 36bp,
      },
    }%
    \thu@chapter*[]{å…³äºŽå­¦ä½è®ºæ–‡ä½¿ç”¨æŽˆæƒçš„è¯´æ˜Ž}%
  \endgroup
  \thispagestyle{empty}%
  \vskip 13bp%
  \begingroup
    \fontsize{14bp}{26bp}\selectfont
    æœ¬äººå®Œå…¨äº†è§£æ¸…åŽå¤§å­¦æœ‰å…³ä¿ç•™ã€ä½¿ç”¨å­¦ä½è®ºæ–‡çš„è§„å®šï¼Œå³ï¼š\par
    æ¸…åŽå¤§å­¦æ‹¥æœ‰åœ¨è‘—ä½œæƒæ³•è§„å®šèŒƒå›´å†…å­¦ä½è®ºæ–‡çš„ä½¿ç”¨æƒï¼Œå…¶ä¸­åŒ…æ‹¬ï¼š%
    ï¼ˆ1ï¼‰\nobreak å·²èŽ·å­¦ä½çš„ç&nbsp;”ç©¶ç”Ÿå¿…é¡»æŒ‰å­¦æ&nbsp;¡è§„å®šæäº¤å­¦ä½è®ºæ–‡ï¼Œ%
    å­¦æ&nbsp;¡å¯ä»¥é‡‡ç”¨å½±å°ã€ç¼©å°æˆ–å…¶ä»–å¤åˆ¶æ‰‹æ®µä¿å­˜ç&nbsp;”ç©¶ç”Ÿä¸Šäº¤çš„å­¦ä½è®ºæ–‡ï¼›\allowbreak
    ï¼ˆ2ï¼‰\nobreak ä¸ºæ•™å­¦å’Œç§‘ç&nbsp;”ç›®çš„ï¼Œå­¦æ&nbsp;¡å¯ä»¥å°†å…¬å¼€çš„å­¦ä½è®ºæ–‡ä½œä¸ºèµ„æ–™åœ¨å›¾ä¹¦é¦†ã€èµ„æ–™å®¤ç­‰åœºæ‰€ä¾›æ&nbsp;¡å†…å¸ˆç”Ÿé˜…è¯»ï¼Œ%
    æˆ–åœ¨æ&nbsp;¡å›­ç½‘ä¸Šä¾›æ&nbsp;¡å†…å¸ˆç”Ÿæµè§ˆéƒ¨åˆ†å†…å®¹ï¼›\allowbreak
    \ifthu@degree@doctor
      ï¼ˆ3ï¼‰\nobreak æ&nbsp;¹æ®ã€Šä¸­åŽäººæ°‘å…±å’Œå›½å­¦ä½æ³•ã€‹åŠä¸Šçº§æ•™è‚²ä¸»ç®¡éƒ¨é—¨å…·ä½“è¦æ±‚ï¼Œå‘å›½å®¶å›¾ä¹¦é¦†æŠ¥é€ç›¸åº”çš„å­¦ä½è®ºæ–‡ã€‚%
    \else
      ï¼ˆ3ï¼‰\nobreak æŒ‰ç…§ä¸Šçº§æ•™è‚²ä¸»ç®¡éƒ¨é—¨ç£å¯¼ã€æŠ½æŸ¥ç­‰è¦æ±‚ï¼ŒæŠ¥é€ç›¸åº”çš„å­¦ä½è®ºæ–‡ã€‚%
    \fi
    \par
    æœ¬äººä¿è¯éµå®ˆä¸Šè¿°è§„å®šã€‚\par
  \endgroup
  \vskip 33bp%
  \begingroup
    \fontsize{12bp}{23.4bp}\selectfont
    \parindent\z@
    \leftskip 43bp%
    ä½œè€…ç­¾åï¼š\hspace{4bp}\thu@underline[7em]{}\hspace{47bp}%
    å¯¼å¸ˆç­¾åï¼š\hspace{4bp}\thu@underline[7em]{}\par
    \vskip 6bp%
    æ—¥\hspace{2em}æœŸï¼š\hspace{4bp}\thu@underline[7em]{}\hspace{47bp}%
    æ—¥\hspace{2em}æœŸï¼š\hspace{4bp}\thu@underline[7em]{}\par
  \endgroup
}
\newcommand\thu@copyright@page@bachelor{%
  \begingroup
    \ctexset{
      chapter = {
        format     = {\centering\sffamily\erhao},
        beforeskip = 40bp,
        afterskip  = 37bp,
      },
    }%
    \thu@chapter*[]{å…³äºŽè®ºæ–‡ä½¿ç”¨æŽˆæƒçš„è¯´æ˜Ž}%
  \endgroup
  \thispagestyle{empty}%
  \vspace*{13bp}%
  \begingroup
    \fontsize{14bp}{26bp}\selectfont
    æœ¬äººå®Œå…¨äº†è§£æ¸…åŽå¤§å­¦æœ‰å…³ä¿ç•™ã€ä½¿ç”¨ç»¼åˆè®ºæ–‡è®­ç»ƒè®ºæ–‡çš„è§„å®šï¼Œå³ï¼š%
    å­¦æ&nbsp;¡æœ‰æƒä¿ç•™è®ºæ–‡çš„å¤å°ä»¶ï¼Œå…è®¸è®ºæ–‡è¢«æŸ¥é˜…å’Œå€Ÿé˜…ï¼›%
    å­¦æ&nbsp;¡å¯ä»¥å…¬å¸ƒè®ºæ–‡çš„å…¨éƒ¨æˆ–éƒ¨åˆ†å†…å®¹ï¼Œå¯ä»¥é‡‡ç”¨å½±å°ã€ç¼©å°æˆ–å…¶ä»–å¤åˆ¶æ‰‹æ®µä¿å­˜è®ºæ–‡ã€‚\par
  \endgroup
  \vspace{71bp}%
  \begingroup
    \setlength{\parindent}{0pt}%
    \fontsize{12bp}{18bp}\selectfont
    \hspace*{42bp}ä½œè€…ç­¾åï¼š\hspace{118bp}å¯¼å¸ˆç­¾åï¼š\par
    \vspace{11bp}%
    \hspace*{42bp}æ—¥\hspace{2em}æœŸï¼š\hspace{118bp}æ—¥\hspace{2em}æœŸï¼š\par
  \endgroup
}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{æ‘˜è¦}
% \label{sec:abstractformat}
%
% \begin{macro}{\thu@clist@use}
% ä¸åŒè®ºæ–‡æ&nbsp;¼å¼å…³é”®è¯ä¹‹é—´çš„åˆ†å‰²ä¸å¤ªç›¸åŒï¼Œæˆ‘ä»¬ç”¨ \option{keywords} å’Œ
% \option{keywords*} æ¥æ”¶é›†å…³é”®è¯åˆ—è¡¨ï¼Œç„¶åŽç”¨æœ¬å‘½ä»¤æ¥ç”Ÿæˆç¬¦åˆè¦æ±‚çš„æ&nbsp;¼å¼ï¼Œ
% ç±»ä¼¼äºŽ \LaTeX3 çš„ \cs{clist\_use:Nn}ã€‚
%    \begin{macrocode}
\thu@define@key{
  keywords,
  keywords* = {
    name = keywords@en,
  },
}
\newcommand\thu@clist@use[2]{%
  \def\thu@@tmp{}%
  \def\thu@clist@processor##1{%
    \ifx\thu@@tmp\@empty
      \def\thu@@tmp{#2}%
    \else
      #2%
    \fi
    ##1%
  }%
  \expandafter\comma@parse\expandafter{#1}{\thu@clist@processor}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{abstract}
% ä¸­æ–‡æ‘˜è¦éƒ¨åˆ†çš„æ&nbsp;‡é¢˜ä¸ºâ€œ\textbf{æ‘˜è¦}â€ï¼Œç”¨é»‘ä½“ä¸‰å·å­—ã€‚
% æ‘˜è¦å†…å®¹ç”¨å°å››å·å­—ä¹¦å†™ï¼Œä¸¤ç«¯å¯¹é½ï¼Œæ±‰å­—ç”¨å®‹ä½“ï¼Œå¤–æ–‡å­—ç”¨ Times New Roman ä½“ï¼Œ
% æ&nbsp;‡ç‚¹ç¬¦å·ä¸€å¾‹ç”¨ä¸­æ–‡è¾“å…¥çŠ¶æ€ä¸‹çš„æ&nbsp;‡ç‚¹ç¬¦å·ã€‚
%    \begin{macrocode}
\newenvironment{abstract}{%
  \thusetup{language = chinese}%
  \ifthu@degree@graduate
    \begingroup
      \ifthu@main@language@english
        \ctexset{%
          chapter/format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
        }%
      \fi
      \thu@chapter*{\thu@abstract@name}%
    \endgroup
  \else
    \thu@chapter*[]{\thu@abstract@name}%
  \fi
}{%
  \par
  \null\par
  \ifthu@degree@postdoc
    \textbf{å…³é”®è¯ï¼š}%
  \else
    \noindent
    \textsf{å…³é”®è¯ï¼š}%
  \fi
  \thu@clist@use{\thu@keywords}{ï¼›}\par
  \gdef\thu@keywords{}%
  \thu@reset@main@language % switch back to main language
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{abstract*}
% è‹±æ–‡æ‘˜è¦éƒ¨åˆ†çš„æ&nbsp;‡é¢˜ä¸º \textbf{Abstract}ï¼Œç”¨ Arial ä½“ä¸‰å·å­—ã€‚
% æ‘˜è¦å†…å®¹ç”¨å°å››å· Times New Romanã€‚
%    \begin{macrocode}
\newenvironment{abstract*}{%
  \thusetup{language = english}%
  \ifthu@degree@bachelor
    \begingroup
      \ctexset{chapter/afterskip = 30bp}%
      \thu@chapter*[]{\thu@abstract@name@en}%
    \endgroup
  \else
    \ifthu@degree@graduate
      \thu@chapter*{\thu@abstract@name@en}%
    \else
      \thu@chapter*[]{\thu@abstract@name@en}%
    \fi
  \fi
}{%
  \par
  \null\par
  \ifthu@degree@postdoc\else
    \noindent
  \fi
  \textbf{Keywords:} \thu@clist@use{\thu@keywords@en}{; }\par
  \thu@reset@main@language % switch back to main language
}
%    \end{macrocode}
% \end{environment}
%
% \subsubsection{ç¬¦å·å’Œç¼©ç•¥è¯­è¯´æ˜Ž}
% \label{sec:denotationfmt}
% \begin{environment}{denotation}
% ç¬¦å·å’Œç¼©ç•¥è¯­è¯´æ˜Žã€‚
%    \begin{macrocode}
\newenvironment{denotation}[1][2.5cm]{%
  \ifthu@degree@bachelor
    \ifthu@main@language@chinese
      \thu@chapter*[]{\thu@denotation@name}%
    \else
      \thu@chapter*{\thu@denotation@name}%
    \fi
  \else
    \ifthu@degree@graduate
      \thu@chapter*{\thu@denotation@name}%
    \else
      \thu@chapter*[]{\thu@denotation@name}%
    \fi
  \fi
  \begin{thu@denotation}[labelwidth=#1]%
}{%
  \end{thu@denotation}%
}
\newlist{thu@denotation}{description}{1}
\setlist[thu@denotation]{%
  nosep,
  font=\normalfont,
  align=left,
  leftmargin=!, % sum of the following 3 lengths
  labelindent=0pt,
  labelwidth=2.5cm,
  labelsep*=0.5cm,
  itemindent=0pt,
}
%    \end{macrocode}
% \end{environment}
%
%
% \subsubsection{è‡´è°¢ä»¥åŠå£°æ˜Ž}
% \label{sec:ackanddeclare}
%
% \begin{environment}{acknowledgements}
% å®šä¹‰è‡´è°¢çŽ¯å¢ƒ
%    \begin{macrocode}
\newcommand{\thu@statement@text@bachelor}{%
  æœ¬äººéƒ‘é‡å£°æ˜Žï¼šæ‰€å‘ˆäº¤çš„ç»¼åˆè®ºæ–‡è®­ç»ƒè®ºæ–‡ï¼Œæ˜¯æœ¬äººåœ¨å¯¼å¸ˆæŒ‡å¯¼ä¸‹ï¼Œç‹¬ç«‹è¿›è¡Œç&nbsp;”ç©¶å·¥ä½œæ‰€å–å¾—çš„æˆæžœã€‚%
  å°½æˆ‘æ‰€çŸ¥ï¼Œé™¤æ–‡ä¸­å·²ç»æ³¨æ˜Žå¼•ç”¨çš„å†…å®¹å¤–ï¼Œæœ¬è®ºæ–‡çš„ç&nbsp;”ç©¶æˆæžœä¸åŒ…å«ä»»ä½•ä»–äººäº«æœ‰è‘—ä½œæƒçš„å†…å®¹ã€‚%
  å¯¹æœ¬è®ºæ–‡æ‰€æ¶‰åŠçš„ç&nbsp;”ç©¶å·¥ä½œåšå‡ºè´¡çŒ®çš„å…¶ä»–ä¸ªäººå’Œé›†ä½“ï¼Œå‡å·²åœ¨æ–‡ä¸­ä»¥æ˜Žç¡®æ–¹å¼æ&nbsp;‡æ˜Žã€‚%
}
\newcommand{\thu@statement@text@graduate}{%
  æœ¬äººéƒ‘é‡å£°æ˜Žï¼šæ‰€å‘ˆäº¤çš„å­¦ä½è®ºæ–‡ï¼Œæ˜¯æœ¬äººåœ¨å¯¼å¸ˆæŒ‡å¯¼ä¸‹ï¼Œç‹¬ç«‹è¿›è¡Œç&nbsp;”ç©¶å·¥ä½œæ‰€å–å¾—çš„æˆæžœ%
  \ifx\thu@secret@level\@empty
    ï¼Œä¸åŒ…å«æ¶‰åŠå›½å®¶ç§˜å¯†çš„å†…å®¹%
  \fi%
  ã€‚å°½æˆ‘æ‰€çŸ¥ï¼Œé™¤æ–‡ä¸­å·²ç»æ³¨æ˜Žå¼•ç”¨çš„å†…å®¹å¤–ï¼Œæœ¬å­¦ä½è®ºæ–‡çš„ç&nbsp;”ç©¶æˆæžœä¸åŒ…å«ä»»ä½•ä»–äººäº«æœ‰è‘—ä½œæƒçš„å†…å®¹ã€‚%
  å¯¹æœ¬è®ºæ–‡æ‰€æ¶‰åŠçš„ç&nbsp;”ç©¶å·¥ä½œåšå‡ºè´¡çŒ®çš„å…¶ä»–ä¸ªäººå’Œé›†ä½“ï¼Œå‡å·²åœ¨æ–‡ä¸­ä»¥æ˜Žç¡®æ–¹å¼æ&nbsp;‡æ˜Žã€‚%
}
\newcommand{\thu@signature}{ç­¾\hspace{1em}åï¼š}
\newcommand{\thu@backdate}{æ—¥\hspace{1em}æœŸï¼š}
%    \end{macrocode}
%
% å®šä¹‰è‡´è°¢ä¸Žå£°æ˜ŽçŽ¯å¢ƒã€‚
%    \begin{macrocode}
\newenvironment{acknowledgements}{%
  \@mainmatterfalse
  \thu@end@appendix@ref@section
  \thu@chapter*{\thu@acknowledgements@name}%
}{%
}
%    \end{macrocode}
% \end{environment}
%
% \begin{macro}{statement}
% å£°æ˜Žé¡µé¢æ&nbsp;·å¼å’Œæ’å…¥å£°æ˜Žé¡µï¼ˆæ”¯æŒæ‰«ææ–‡ä»¶æ›¿æ¢ï¼‰ã€‚
%    \begin{macrocode}
\thu@define@key{
  statement-page-style = {
    name = statement@page@style,
    choices = {
      auto,
      empty,
      plain,
    },
    default = auto,
  }
}
\newcommand\statement[1][]{%
  \@mainmatterfalse
  \thu@end@appendix@ref@section
  \let\thu@statement@file\@empty
  \kv@define@key{thu@statement}{page-style}{\thusetup{statement-page-style=##1}}%
  \kv@define@key{thu@statement}{file}{\let\thu@statement@file\kv@value}%
  \kv@set@family@handler{thu@statement}{%
    \ifx\kv@value\relax
      \let\thu@statement@file\kv@key
    \else
      \kv@handled@false
    \fi
  }%
  \kvsetkeys{thu@statement}{#1}%
  \ifthu@statement@page@style@auto
    \ifx\thu@statement@file\@empty
      \thusetup{statement-page-style = empty}%
    \else
      \thusetup{statement-page-style = plain}%
    \fi
  \fi
  \ifx\thu@statement@file\@empty
    \thusetup{language=chinese}%
    \begingroup
      \ifthu@degree@graduate
        \ifthu@main@language@english
          \ctexset{%
            chapter/format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
          }%
        \fi
      \fi
      \thu@chapter*{\thu@statement@name}%
    \endgroup
    \thispagestyle{\thu@statement@page@style}%
    \ifthu@degree@graduate
      \vspace{12bp}%
      \fontsize{12bp}{21bp}\selectfont
      \thu@statement@text@graduate\par
      \vspace{79bp}%
      \begingroup
        \noindent\hspace{5.4cm}\fontsize{13bp}{18bp}\selectfont
        \thu@signature\thu@underline[2.8cm]{}\hspace{-6bp}%
        \thu@backdate\thu@underline[2.3cm]{}\par
      \endgroup
    \else
      \ifthu@degree@bachelor
        \begingroup
          \renewcommand\CJKglue{\hspace{.1bp}}%
          \thu@statement@text@bachelor\par
        \endgroup
        \vspace{40bp}%
        \hfill ç­¾\hspace{.5em}åï¼š\thu@underline[2.75cm]{}\hspace{.5em}%
        æ—¥\hspace{.5em}æœŸï¼š\thu@underline[2.75cm]{}\par
      \fi
    \fi
    \thu@reset@main@language
  \else
    \includepdf[pagecommand={%
      \markboth{\thu@statement@name}{}%
      \thu@phantomsection
      \addcontentsline{toc}{chapter}{\thu@statement@name}%
      \thispagestyle{\thu@statement@page@style}%
    }]{\thu@statement@file}%
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% å…¼å®¹æ—§ç‰ˆæœ¬ä¿ç•™ \env{acknowledgement}ã€‚
%    \begin{macrocode}
\let\acknowledgement\acknowledgements
\let\endacknowledgement\endacknowledgements
%    \end{macrocode}
%
% \subsubsection{æ’å›¾å’Œé™„è¡¨æ¸…å•}
% \label{sec:threelists}
% å®šä¹‰å›¾è¡¨ä»¥åŠå…¬å¼ç›®å½•æ&nbsp;·å¼ã€‚
%    \begin{macrocode}
\def\thu@listof#1{% #1: float type
  \setcounter{tocdepth}{2}%  restore tocdepth in case being modified
  \@ifstar{\thu@deprecate{starred form of \protect\listof... command}{}}{}%
  \ifthu@degree@bachelor
    \ifthu@main@language@chinese
      \thu@chapter*[]{\csname list#1name\endcsname}%
    \else
      \thu@chapter*{\csname list#1name\endcsname}%
    \fi
  \else
    \ifthu@degree@graduate
      \thu@chapter*{\csname list#1name\endcsname}%
    \else
      \thu@chapter*[]{\csname list#1name\endcsname}%
    \fi
  \fi
  \@starttoc{\csname ext@#1\endcsname}%
}
%    \end{macrocode}
%
% \begin{macro}{\listoffigures}
% æ’å›¾æ¸…å•ã€‚
%    \begin{macrocode}
\renewcommand\listoffigures{%
  \thu@listof{figure}%
}
\titlecontents{figure}
  [\z@]{}
  {\contentspush{\figurename~\thecontentslabel\thu@contents@label@delimiter}}{}
  {\thu@leaders\thecontentspage}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\listoftables}
% é™„è¡¨æ¸…å•ã€‚
%    \begin{macrocode}
\renewcommand\listoftables{%
  \thu@listof{table}%
}
\titlecontents{table}
  [\z@]{}
  {\contentspush{\tablename~\thecontentslabel\thu@contents@label@delimiter}}{}
  {\thu@leaders\thecontentspage}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\listoffiguresandtables}
% å°†æ’å›¾å’Œé™„è¡¨åˆåœ¨ä¸€èµ·åˆ—å‡ºâ€œæ’å›¾å’Œé™„è¡¨æ¸…å•â€ã€‚
%    \begin{macrocode}
\newcommand\listoffiguresandtables{%
  \ifthu@degree@bachelor
    \ifthu@main@language@chinese
      \thu@chapter*[]{\thu@list@figure@table@name}%
    \else
      \thu@chapter*{\thu@list@figure@table@name}%
    \fi
  \else
    \ifthu@degree@graduate
      \thu@chapter*{\thu@list@figure@table@name}%
    \else
      \thu@chapter*[]{\thu@list@figure@table@name}%
    \fi
  \fi
  \@starttoc{lof}%
  \par
  \null\par
  \@starttoc{lot}%
}
%    \end{macrocode}
% \end{macro}
%
% å…¬å¼çš„ caption å·²è¿‡æ—¶ã€‚
%    \begin{macrocode}
\def\ext@equation{loe}
\def\equcaption#1{%
  \thu@deprecate{"\protect\equcaption" command}{}%
  \addcontentsline{\ext@equation}{equation}%
                  {\protect\numberline{#1}}}
%    \end{macrocode}
%
% å…¬å¼ç´¢å¼• \cs{listofequations} å·²è¿‡æ—¶ã€‚
%    \begin{macrocode}
\newcommand\listofequations{%
  \thu@deprecate{"\protect\listofequations" command}{}%
  \thu@listof{equation}%
}
\titlecontents{equation}
  [0pt]{\addvspace{6bp}}
  {\contentspush{\thu@equation@name~\thecontentslabel\thu@contents@label@delimiter}}{}
  {\thu@leaders\thecontentspage}
\contentsuse{equation}{loe}
%    \end{macrocode}
%
%
% \subsection{å‚è€ƒæ–‡çŒ®}
% \label{sec:ref}
%
% å‚è€ƒæ–‡çŒ®çš„æ&nbsp;¼å¼æ&nbsp;¹æ®ç”¨æˆ·é€‰æ‹©çš„ \BibTeX{}/BibLaTeX åˆ†åˆ«è¿›è¡Œé…ç½®ï¼Œ
% æ‰€ä»¥ä½¿ç”¨ \pkg{filehook} çš„æ–¹å¼ã€‚
%
% è®¾ç½® \option{cite-style} çš„æŽ¥å£ï¼Œåªå¯¹ \BibTeX{} çš„ç¼–è¯‘æ–¹å¼æœ‰æ•ˆã€‚
%    \begin{macrocode}
\thu@define@key{
  cite-style = {
    name = cite@style,
    choices = {
      super,
      inline,
      author-year,
    }
  }
}
%    \end{macrocode}
%
% \subsubsection{BibTeX + \pkg{natbib} å®åŒ…}
%
%    \begin{macrocode}
\def\bibliographystyle#1{%
  \gdef\bu@bibstyle{#1}%
  \ifx\@begindocumenthook\@undefined\else
    \expandafter\AtBeginDocument
  \fi
    {\if@filesw
       \immediate\write\@auxout{\string\bibstyle{#1}}%
       \immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}%
     \fi}%
}
\def\bibliography#1{%
  \if@filesw
    \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}%
    \immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}%
  \fi
  \gdef\bu@bibdata{#1}%
  \@input@{\jobname.bbl}}
%    \end{macrocode}
%
% \BibTeX{} å’Œ \pkg{natbib} å®åŒ…çš„é…ç½®ã€‚
%    \begin{macrocode}
\PassOptionsToPackage{compress}{natbib}
\AtEndOfPackageFile*{natbib}{
%    \end{macrocode}
% \begin{macro}{\inlinecite}
% ä¾èµ–äºŽ \pkg{natbib} å®åŒ…ï¼Œä¿®æ”¹å…¶ä¸­çš„å‘½ä»¤ã€‚ æ—§å‘½ä»¤ \cs{onlinecite} ä¾ç„¶å¯ç”¨ã€‚
%    \begin{macrocode}
  \DeclareRobustCommand\inlinecite{\@inlinecite}
  \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup}
  \let\onlinecite\inlinecite
%    \end{macrocode}
% \end{macro}
%
% å‡&nbsp;ç§ç§å¼•ç”¨æ&nbsp;·å¼ï¼Œä¸Ž \file{bst} æ–‡ä»¶åä¿æŒä¸€è‡´ï¼Œ
% è¿™æ&nbsp;·åœ¨ä½¿ç”¨ \cs{bibliographystyle} é€‰æ‹©å‚è€ƒæ–‡çŒ®è¡¨çš„æ&nbsp;·å¼æ—¶ä¹Ÿä¼šè®¾ç½®å¯¹åº”çš„å¼•ç”¨æ&nbsp;·å¼ã€‚
%    \begin{macrocode}
  \newcommand\bibstyle@super{%
    \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
  \newcommand\bibstyle@inline{%
    \bibpunct{[}{]}{,}{n}{,}{,}}
  \@namedef{bibstyle@author-year}{%
    \bibpunct{(}{)}{;}{a}{,}{,}}
%    \end{macrocode}
%
%    \begin{macrocode}
  \thu@option@hook{cite-style}{\@nameuse{bibstyle@\thu@cite@style}}
%    \end{macrocode}
%
% å‡&nbsp;ç§ç§å¼•ç”¨æ&nbsp;·å¼ï¼Œä¸Ž \file{bst} æ–‡ä»¶åä¿æŒä¸€è‡´ï¼Œ
% è¿™æ&nbsp;·åœ¨ä½¿ç”¨ \cs{bibliographystyle} é€‰æ‹©å‚è€ƒæ–‡çŒ®è¡¨çš„æ&nbsp;·å¼æ—¶ä¹Ÿä¼šè®¾ç½®å¯¹åº”çš„å¼•ç”¨æ&nbsp;·å¼ã€‚
%    \begin{macrocode}
  \@namedef{bibstyle@thuthesis-numeric}{\citestyle{super}}
  \@namedef{bibstyle@thuthesis-author-year}{\citestyle{author-year}}
  \@namedef{bibstyle@cell}{\citestyle{author-year}}
  \@namedef{bibstyle@thuthesis-bachelor}{\citestyle{super}}
%    \end{macrocode}
%
% ä¿®æ”¹å¼•ç”¨çš„æ&nbsp;·å¼ã€‚
% è¿™é‡Œåœ¨ filehook ä¸­æ—&nbsp;æ³•ä½¿ç”¨ \cs{patchcmd}ï¼Œæ‰€ä»¥åªèƒ½æ‰‹åŠ¨é‡å®šä¹‰ã€‚
%
% å°† \cs{citep} super å¼å¼•ç”¨çš„é¡µç&nbsp;æ”¹ä¸ºä¸Šæ&nbsp;‡ã€‚
%    \begin{macrocode}
  \renewcommand\NAT@citesuper[3]{%
    \ifNAT@swa
      \if*#2*\else
        #2\NAT@spacechar
      \fi
      % \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
      %  \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
      \unskip\kern\p@
      \textsuperscript{%
        \NAT@@open#1\NAT@@close
        \if*#3*\else#3\fi
      }%
      \kern\p@
    \else
      #1%
    \fi
    \endgroup
  }
%    \end{macrocode}
%
% å°† \cs{citep} numbers å¼å¼•ç”¨çš„é¡µç&nbsp;æ”¹ä¸ºä¸Šæ&nbsp;‡å¹¶ç½®äºŽæ‹¬å·å¤–ã€‚
%    \begin{macrocode}
  \renewcommand\NAT@citenum[3]{%
    \ifNAT@swa
      \NAT@@open
      \if*#2*\else
        #2\NAT@spacechar
      \fi
      % #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close
      #1\NAT@@close
      \if*#3*\else
        \textsuperscript{#3}%
      \fi
    \else
      #1%
    \fi
    \endgroup
  }
%    \end{macrocode}
%
% ä¿®æ”¹ \cs{citet} å¼•ç”¨çš„æ&nbsp;·å¼ã€‚
%    \begin{macrocode}
  \def\NAT@citexnum[#1][#2]#3{%
    \NAT@reset@parser
    \NAT@sort@cites{#3}%
    \NAT@reset@citea
    \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
      \@for\@citeb:=\NAT@cite@list\do
      {\@safe@activestrue
      \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
      \@safe@activesfalse
      \@ifundefined{b@\@citeb\@extra@b@citeb}{%
        {\reset@font\bfseries?}
          \NAT@citeundefined\PackageWarning{natbib}%
        {Citation `\@citeb' on page \thepage \space undefined}}%
      {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
        \NAT@parse{\@citeb}%
        \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
          \let\NAT@name=\NAT@all@names
          \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
        \fi
        \ifNAT@full\let\NAT@nm\NAT@all@names\else
          \let\NAT@nm\NAT@name\fi
        \ifNAT@swa
        \@ifnum{\NAT@ctype&gt;\@ne}{%
          \@citea
          \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
        }{%
          \@ifnum{\NAT@cmprs&gt;\z@}{%
          \NAT@ifcat@num\NAT@num
            {\let\NAT@nm=\NAT@num}%
            {\def\NAT@nm{-2}}%
          \NAT@ifcat@num\NAT@last@num
            {\@tempcnta=\NAT@last@num\relax}%
            {\@tempcnta\m@ne}%
          \@ifnum{\NAT@nm=\@tempcnta}{%
            \@ifnum{\NAT@merge&gt;\@ne}{}{\NAT@last@yr@mbox}%
          }{%
            \advance\@tempcnta by\@ne
            \@ifnum{\NAT@nm=\@tempcnta}{%
%    \end{macrocode}
%
% åœ¨é¡ºåºç¼–ç&nbsp;åˆ¶ä¸‹ï¼Œ\pkg{natbib} åªæœ‰åœ¨ä¸‰ä¸ªä»¥ä¸Šè¿žç»­æ–‡çŒ®å¼•ç”¨æ‰ä¼šä½¿ç”¨è¿žæŽ¥å·ï¼Œ
% è¿™é‡Œä¿®æ”¹ä¸ºå…è®¸ä¸¤ä¸ªå¼•ç”¨ä½¿ç”¨è¿žæŽ¥å·ã€‚
%    \begin{macrocode}
              % \ifx\NAT@last@yr\relax
              %   \def@NAT@last@yr{\@citea}%
              % \else
              %   \def@NAT@last@yr{--\NAT@penalty}%
              % \fi
              \def@NAT@last@yr{-\NAT@penalty}%
            }{%
              \NAT@last@yr@mbox
            }%
          }%
          }{%
          \@tempswatrue
          \@ifnum{\NAT@merge&gt;\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
          \if@tempswa\NAT@citea@mbox\fi
          }%
        }%
        \NAT@def@citea
        \else
          \ifcase\NAT@ctype
            \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
              \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
            \fi
            \if*#1*\else#1\NAT@spacechar\fi
            \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
            \NAT@def@citea@box
          \or
            \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
          \or
            \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
          \or
            \NAT@hyper@citea@space\NAT@alias
          \fi
        \fi
      }%
      }%
        \@ifnum{\NAT@cmprs&gt;\z@}{\NAT@last@yr}{}%
        \ifNAT@swa\else
%    \end{macrocode}
%
% å°†é¡µç&nbsp;æ”¾åœ¨æ‹¬å·å¤–è¾¹ï¼Œå¹¶ä¸”ç½®äºŽä¸Šæ&nbsp;‡ã€‚
%    \begin{macrocode}
          % \@ifnum{\NAT@ctype=\z@}{%
          %   \if*#2*\else\NAT@cmt#2\fi
          % }{}%
          \NAT@mbox{\NAT@@close}%
          \@ifnum{\NAT@ctype=\z@}{%
            \if*#2*\else
              \textsuperscript{#2}%
            \fi
          }{}%
          \NAT@super@kern
        \fi
    }{#1}{#2}%
  }%
%    \end{macrocode}
%
% ä¿®æ”¹ \cs{citep} author-year å¼çš„é¡µç&nbsp;ï¼š
%    \begin{macrocode}
  \renewcommand\NAT@cite%
      [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
          % #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
          #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup}
%    \end{macrocode}
%
% ä¿®æ”¹ \cs{citet} author-year å¼çš„é¡µç&nbsp;ï¼š
%    \begin{macrocode}
  \def\NAT@citex%
    [#1][#2]#3{%
    \NAT@reset@parser
    \NAT@sort@cites{#3}%
    \NAT@reset@citea
    \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
      \@for\@citeb:=\NAT@cite@list\do
      {\@safe@activestrue
      \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
      \@safe@activesfalse
      \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
        {\reset@font\bfseries ?}\NAT@citeundefined
                  \PackageWarning{natbib}%
        {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
      {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
        \NAT@parse{\@citeb}%
        \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
          \let\NAT@name=\NAT@all@names
          \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
        \fi
      \ifNAT@full\let\NAT@nm\NAT@all@names\else
        \let\NAT@nm\NAT@name\fi
      \ifNAT@swa\ifcase\NAT@ctype
        \if\relax\NAT@date\relax
          \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
        \else
          \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
              \ifx\NAT@last@yr\NAT@year
                \def\NAT@temp{{?}}%
                \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
                {Multiple citation on page \thepage: same authors and
                year\MessageBreak without distinguishing extra
                letter,\MessageBreak appears as question mark}\fi
                \NAT@hyper@{\NAT@exlab}%
              \else\unskip\NAT@spacechar
                \NAT@hyper@{\NAT@date}%
              \fi
          \else
            \@citea\NAT@hyper@{%
              \NAT@nmfmt{\NAT@nm}%
              \hyper@natlinkbreak{%
                \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
              }%
              \NAT@date
            }%
          \fi
        \fi
      \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
      \or\@citea\NAT@hyper@{\NAT@date}%
      \or\@citea\NAT@hyper@{\NAT@alias}%
      \fi \NAT@def@citea
      \else
        \ifcase\NAT@ctype
          \if\relax\NAT@date\relax
            \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
          \else
          \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
              \ifx\NAT@last@yr\NAT@year
                \def\NAT@temp{{?}}%
                \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
                {Multiple citation on page \thepage: same authors and
                year\MessageBreak without distinguishing extra
                letter,\MessageBreak appears as question mark}\fi
                \NAT@hyper@{\NAT@exlab}%
              \else
                \unskip\NAT@spacechar
                \NAT@hyper@{\NAT@date}%
              \fi
          \else
            \@citea\NAT@hyper@{%
              \NAT@nmfmt{\NAT@nm}%
              \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
                {\@citeb\@extra@b@citeb}%
              \NAT@date
            }%
          \fi
          \fi
        \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
        \or\@citea\NAT@hyper@{\NAT@date}%
        \or\@citea\NAT@hyper@{\NAT@alias}%
        \fi
        \if\relax\NAT@date\relax
          \NAT@def@citea
        \else
          \NAT@def@citea@close
        \fi
      \fi
      }}\ifNAT@swa\else
%    \end{macrocode}
%
% å°†é¡µç&nbsp;æ”¾åœ¨æ‹¬å·å¤–è¾¹ï¼Œå¹¶ä¸”ç½®äºŽä¸Šæ&nbsp;‡ã€‚
%    \begin{macrocode}
        % \if*#2*\else\NAT@cmt#2\fi
        \if\relax\NAT@date\relax\else\NAT@@close\fi
        \if*#2*\else\textsuperscript{#2}\fi
      \fi}{#1}{#2}}
%    \end{macrocode}
%
% å‚è€ƒæ–‡çŒ®è¡¨çš„æ­£æ–‡éƒ¨åˆ†ç”¨äº”å·å­—ã€‚
% è¡Œè·é‡‡ç”¨å›ºå®šå€¼ 16 ç£…ï¼Œæ®µå‰ç©º 3 ç£…ï¼Œæ®µåŽç©º 0 ç£…ã€‚
%
% æœ¬ç§‘ç”Ÿè¦æ±‚ç”¨äº”å·å­—ï¼Œè¡Œè·é‡‡ç”¨å›ºå®šå€¼ 16 ç£…ï¼Œæ®µå‰ç©º 3 ç£…ï¼Œæ®µåŽç©º 0 ç£…ã€‚
% é‡‡ç”¨æ‚¬æŒ‚æ&nbsp;¼å¼ï¼Œæ‚¬æŒ‚ç¼©è¿› 2 ä¸ªæ±‰å­—ç¬¦æˆ– 1 åŽ˜ç±³ã€‚
%
% è‹±æ–‡ä¸“ä¸šè¦æ±‚å­—å· 10.5ptï¼Œè¡Œè·ç”¨å›ºå®šå€¼ 17ptï¼Œæ®µå‰åŽ 3ptï¼Œæ‚¬æŒ‚ç¼©è¿› 0.5inchï¼ˆ1.27 åŽ˜ç±³ï¼‰ã€‚
%
% å¤ç”¨ \pkg{natbib} çš„ \texttt{thebibliography} çŽ¯å¢ƒï¼Œè°ƒæ•´è·ç¦»ã€‚
%    \begin{macrocode}
  \renewcommand\bibsection{\thu@chapter*{\bibname}}
  \newcommand\thu@set@bibliography@format{%
    \renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}%
    \setlength{\bibsep}{3bp \@plus 3bp \@minus 3bp}%
    \ifthu@degree@bachelor
      \ifthu@main@language@chinese
        \setlength{\bibhang}{1cm}%
      \else
        \renewcommand\bibfont{\fontsize{10.5bp}{17bp}\selectfont}%
        \setlength{\bibsep}{6bp \@plus 3bp \@minus 3bp}%
        \setlength{\bibhang}{0.5in}%
      \fi
    \else
      \setlength{\bibhang}{1cm}%
    \fi
  }
  \thu@set@bibliography@format
  \thu@option@hook{degree}{\thu@set@bibliography@format}
  \thu@option@hook{main-language}{\thu@set@bibliography@format}
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿè¦æ±‚æ¯ä¸€æ¡æ–‡çŒ®çš„å†…å®¹è¦å°½é‡å†™åœ¨åŒä¸€é¡µå†…ã€‚
% é‡æœ‰è¢«è¿«åˆ†é¡µçš„æƒ…å†µï¼Œå¯é€šè¿‡â€œç•™ç™½â€æˆ–å¾®è°ƒæœ¬é¡µè¡Œè·çš„æ–¹å¼å°½é‡å°†åŒä¸€æ¡æ–‡çŒ®å†…å®¹æ”¾åœ¨ä¸€é¡µã€‚
% æ‰€ä»¥ä¸Šè¿° \cs{bibsep} çš„è®¾ç½®å…è®¸ 3pt çš„ä¼¸ç¼©ï¼Œ
% åŒæ—¶å¢žåŠ&nbsp;åŒä¸€æ¡æ–‡çŒ®å†…åˆ†é¡µçš„æƒ©ç½šï¼Œ
% è¿™é‡Œå‚è€ƒ \href{https://github.com/plk/biblatex/blob/e5d6e69e61613cc33ab1fcc2083a8277eb9cfce5/tex/latex/biblatex/biblatex.def}{BibLaTeX çš„è®¾ç½®}ã€‚
%    \begin{macrocode}
  \patchcmd\thebibliography{%
    \clubpenalty4000%
  }{%
    \interlinepenalty=5000\relax
    \clubpenalty=10000\relax
  }{}{\thu@patch@error{\thebibliography}}
  \patchcmd\thebibliography{%
    \widowpenalty4000%
  }{%
    \widowpenalty=10000\relax
  }{}{\thu@patch@error{\thebibliography}}
%    \end{macrocode}
%
% å‚è€ƒæ–‡çŒ®è¡¨çš„ç¼–å·å±…å·¦ï¼Œå®½åº¦ 1 cmã€‚
%    \begin{macrocode}
  \def\@biblabel#1{[#1]\hfill}
  \renewcommand\NAT@bibsetnum[1]{%
    % \settowidth\labelwidth{\@biblabel{#1}}%
    % \setlength{\leftmargin}{\labelwidth}%
    % \addtolength{\leftmargin}{\labelsep}%
    \setlength{\leftmargin}{1cm}%
    \setlength{\itemindent}{\z@}%
    \setlength{\labelsep}{0.1cm}%
    \setlength{\labelwidth}{0.9cm}%
    \setlength{\itemsep}{\bibsep}
    \setlength{\parsep}{\z@}%
    \ifNAT@openbib
      \addtolength{\leftmargin}{\bibindent}%
      \setlength{\itemindent}{-\bibindent}%
      \setlength{\listparindent}{\itemindent}%
      \setlength{\parsep}{0pt}%
    \fi
  }
}
%    \end{macrocode}
%
% \subsubsection{\pkg{biblatex} å®åŒ…}
%
%    \begin{macrocode}
\AtEndOfPackageFile*{biblatex}{
  \AtBeginDocument{
    \ifthenelse{\equal{\blx@bbxfile}{apa}}{\def\bibname{REFERENCES}}{}
    \ifthenelse{\equal{\blx@bbxfile}{apa6}}{\def\bibname{REFERENCES}}{}
    \ifthenelse{\equal{\blx@bbxfile}{mla}}{\def\bibname{WORKS CITED}}{}
    \ifthenelse{\equal{\blx@bbxfile}{mla-new}}{\def\bibname{WORKS CITED}}{}
  }
  \DeclareRobustCommand\inlinecite{\parencite}
  \defbibheading{bibliography}[\bibname]{\thu@chapter*{\bibname}}
  \newcommand\thu@set@bibliography@format{%
    \renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}%
    \setlength{\bibitemsep}{3bp \@plus 3bp \@minus 3bp}%
    \ifthu@degree@bachelor
      \ifthu@main@language@chinese
        \setlength{\bibhang}{1cm}%
      \else
        \renewcommand\bibfont{\fontsize{10.5bp}{17bp}\selectfont}%
        \setlength{\bibitemsep}{6bp \@plus 3bp \@minus 3bp}%
        \setlength{\bibhang}{0.5in}%
      \fi
    \else
      \setlength{\biblabelsep}{0.1cm}%
      \setlength{\bibhang}{1cm}%
    \fi
  }
  \thu@set@bibliography@format
  \thu@option@hook{degree}{\thu@set@bibliography@format}
  \thu@option@hook{main-language}{\thu@set@bibliography@format}
}
%    \end{macrocode}
%
% \subsubsection{\pkg{apacite} å®åŒ…}
%
% \pkg{apacite} åœ¨ \cs{begindocument} å¤„è½½å…¥çš„ \file{english.apc}
% ä¼šè¦†ç›–æŽ‰ \cs{bibname} çš„å®šä¹‰ï¼Œæ‰€ä»¥éœ€è¦é‡æ–° \cs{thu@set@chapter@names}ã€‚
%    \begin{macrocode}
\AtEndOfPackageFile*{apacite}{
  \AtBeginDocument{
    \thu@set@chapter@names
  }
  \renewcommand\bibliographytypesize{\fontsize{10.5bp}{16bp}\selectfont}
  \setlength{\bibitemsep}{3bp \@plus 3bp \@minus 3bp}%
  \ifthu@degree@bachelor
    \ifthu@main@language@english
      \renewcommand\bibliographytypesize{\fontsize{10.5bp}{17bp}\selectfont}%
      \setlength{\bibitemsep}{6bp \@plus 3bp \@minus 3bp}%
    \fi
  \fi
  \ifthu@main@language@chinese
    \setlength{\bibleftmargin}{1cm}
    \setlength{\bibindent}{-\bibleftmargin}
  \else
    \setlength{\bibleftmargin}{0.5in}
    \setlength{\bibindent}{-\bibleftmargin}
  \fi
  \def\st@rtbibchapter{%
    \if@numberedbib%
      \chapter{\bibname}%   e.g.,   6. References
    \else%
      \thu@chapter*{\bibname}%   e.g.,   References
    \fi%
  }%
}
%    \end{macrocode}
%
% \subsection{é™„å½•}
% \label{sec:appendix}
%
%    \begin{macrocode}
\g@addto@macro\appendix{%
  \@mainmattertrue
}
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿå’Œæœ¬ç§‘ç”Ÿçš„å†™ä½œæŒ‡å—å‡æœªè§„å®šé™„å½•çš„èŠ‚æ&nbsp;‡é¢˜æ˜¯å¦åŠ&nbsp;å…¥ç›®å½•ï¼Œ
% ä½†æ˜¯ä»Žç¤ºä¾‹æ¥çœ‹ï¼Œç›®å½•ä¸­åªå‡ºçŽ°é™„å½•çš„ chapter æ&nbsp;‡é¢˜ï¼Œ
% ä¸å‡ºçŽ°é™„å½•ä¸­çš„ section åŠ subsection çš„æ&nbsp;‡é¢˜ã€‚
% éƒ¨åˆ†é™¢ç³»ï¼ˆä¾‹å¦‚è‡ªåŠ¨åŒ–ç³»ï¼‰çš„æ&nbsp;¼å¼å®¡æŸ¥çš„è€å¸ˆç”šè‡³ä¸€è‡´å£å¤´å¦‚æ­¤è¦æ±‚ã€‚
% ï¼ˆ\href{https://github.com/tuna/thuthesis/pull/425}{\#425}ï¼‰
%    \begin{macrocode}
\thu@define@key{
  toc-depth = {
    name = toc@depth,
  },
}
%    \end{macrocode}
%
% è¿™é‡Œä¸è¦ä½¿ç”¨ \cs{addcontentsline}ï¼Œ
% é¿å…å†™å…¥ \pkg{titletoc} çš„ \file{.ptc} æ–‡ä»¶ä¸­ï¼Œ
% é€&nbsp;æˆ \env{survey} çš„å­ç›®å½•ä¸­ |tocdepth| ä¸º 0ã€‚
%    \begin{macrocode}
\thu@option@hook{toc-depth}{%
  \ifx\@begindocumenthook\@undefined
    \protected@write\@auxout{}{%
      \string\ttl@writefile{toc}{%
        \protect\setcounter{tocdepth}{\thu@toc@depth}%
      }%
    }%
  \else
    \setcounter{tocdepth}{\thu@toc@depth}%
  \fi
}
\g@addto@macro\appendix{%
  \thusetup{
    toc-depth = 0,
  }%
}
%    \end{macrocode}
%
% é™„å½•ä¸­çš„å›¾ã€è¡¨ä¸åˆ—å…¥æ’å›¾æ¸…å•/é™„è¡¨æ¸…å•ã€‚
%    \begin{macrocode}
\thu@define@key{
  appendix-figure-in-lof = {
    name = appendix@figure@in@lof,
    choices = {
      true,
      false,
    },
    default = false,
  },
}
\thu@option@hook{appendix-figure-in-lof}{%
  \ifthu@appendix@figure@in@lof@true
    \addtocontents{lof}{\string\let\string\contentsline\string\ttl@contentsline}%
    \addtocontents{lot}{\string\let\string\contentsline\string\ttl@contentsline}%
    \addtocontents{loe}{\string\let\string\contentsline\string\ttl@contentsline}%
  \else
    \addtocontents{lof}{\string\let\string\contentsline\string\ttl@gobblecontents}%
    \addtocontents{lot}{\string\let\string\contentsline\string\ttl@gobblecontents}%
    \addtocontents{loe}{\string\let\string\contentsline\string\ttl@gobblecontents}%
  \fi
}
\g@addto@macro\appendix{%
  \thusetup{
    appendix-figure-in-lof = false,
  }%
}
%    \end{macrocode}
%
% é™„å½•ä¸­çš„å‚è€ƒæ–‡çŒ®ç­‰å¦è¡Œç¼–åºå·ã€‚
%    \begin{macrocode}
\newcommand\thu@end@appendix@ref@section{}
%    \end{macrocode}
%
%    \begin{macrocode}
%    \end{macrocode}
%
% \pkg{bibunits} åœ¨è½½å…¥æ—¶ä¼šä¿å­˜ \cs{bibliography} å’Œ \cs{bibliographystyle}ï¼Œ
% æ‰€ä»¥åœ¨è½½å…¥å®åŒ…å‰ä¿®æ”¹å®šä¹‰ã€‚
%    \begin{macrocode}
\AtBeginOfPackageFile*{bibunits}{
  \def\bibliography#1{%
    \if@filesw
      \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}%
%    \end{macrocode}
%
% æ­£æ–‡çš„ \cs{bibliography} åŒæ—¶è®¾ç½®é™„å½•å‚è€ƒæ–‡çŒ®çš„é»˜è®¤ \file{.bib} æ•°æ®åº“ã€‚
%    \begin{macrocode}
      \immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}%
    \fi
    \@input@{\jobname.bbl}%
    \gdef\bu@bibdata{#1}%
  }
  \def\bibliographystyle#1{%
    \ifx\@begindocumenthook\@undefined\else
      \expandafter\AtBeginDocument
    \fi
      {\if@filesw
        \immediate\write\@auxout{\string\bibstyle{#1}}%
%    \end{macrocode}
%
% æ­£æ–‡çš„ \cs{bibliographystyle} åŒæ—¶è®¾ç½®é™„å½•å‚è€ƒæ–‡çŒ®çš„é»˜è®¤ \file{.bst} æ&nbsp;·å¼ã€‚
%    \begin{macrocode}
        \immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}%
      \fi}%
      \gdef\bu@bibstyle{#1}%
  }
}
\AtEndOfPackageFile*{bibunits}{
  \def\@startbibunit{%
    \global\let\@startbibunitorrelax\relax
    \global\let\@finishbibunit\@finishstartedbibunit
    \global\advance\@bibunitauxcnt 1
    \if@filesw
      {\endlinechar-1
%    \end{macrocode}
%
% ä½¿é™„å½• aux æ–‡ä»¶çš„ \cs{gdef}\cs{@localbibstyle} èƒ½å¤Ÿç”Ÿæ•ˆã€‚
%    \begin{macrocode}
      \makeatletter
      \@input{\@bibunitname.aux}}%
      \immediate\openout\@bibunitaux\@bibunitname.aux
      \immediate\write\@bibunitaux{\string\bibstyle{\@localbibstyle}}%
    \fi
  }
  \def\bu@bibliography#1{%
    \putbib[#1]%
  }
  \def\bu@bibliographystyle#1{%
    \if@filesw
      \immediate\write\@bibunitaux{\string\gdef\string\@localbibstyle{#1}}%
    \fi
    \gdef\@localbibstyle{#1}%
  }
  \providecommand\printbibliography{\putbib\relax}%
  \g@addto@macro\appendix{%
    \renewcommand\@bibunitname{\jobname-appendix-\@alph\c@chapter}%
    \bibliographyunit[\chapter]%
    \renewcommand\bibsection{%
      \ctexset{section/numbering = false}%
      \section{\bibname}%
      \ctexset{section/numbering = true}%
    }%
%    \end{macrocode}
%
% ç&nbsp;”ç©¶ç”Ÿé™„å½•çš„å¼•ç”¨ç¼–å·åŠ&nbsp;å‰ç¼€ï¼Œå¦‚é™„å½• A çš„å¼•ç”¨ [1] ä¸º [A.1]ã€‚
%    \begin{macrocode}
    \ifthu@degree@graduate
      \renewcommand\citenumfont{\@Alph\c@chapter.}%
      \renewcommand\@extra@binfo{@-\@alph\c@chapter}%
      \renewcommand\@extra@b@citeb{@-\@alph\c@chapter}%
      \renewcommand\bibnumfmt[1]{[\@Alph\c@chapter.#1]\hfill}%
    \fi
  }
  \renewcommand\thu@end@appendix@ref@section{%
    \bibliographyunit\relax
  }
  \AtEndDocument{\thu@end@appendix@ref@section}
  \renewcommand\thu@set@survey@bibheading{%
    \renewcommand\bibsection{%
      \begingroup
        \ctexset{
          section = {
            numbering = false,
            format = \centering\normalsize,
            beforeskip = 20pt,
            afterskip = 4pt,
          },
        }%
        \section{\bibname}%
      \endgroup
    }
  }%
%    \end{macrocode}
%
% å¦‚æžœæ­£æ–‡å’Œé™„å½•å¼•ç”¨äº†åŒä¸€æ–‡çŒ®ï¼Œ\pkg{bibunits} ä¼šç»™å‡ºæ—&nbsp;æ„ä¹‰çš„è­¦å‘Šï¼Œè¿™é‡Œæ¶ˆé™¤è­¦å‘Šã€‚
%    \begin{macrocode}
  % \let\@xtestdef\@gobbletwo  % This doesn't work
  \def\bibunits@rerun@warning{\relax}
}
\PassOptionsToPackage{defernumbers = true}{biblatex}
\AtEndOfPackageFile*{biblatex}{
  \DeclareRefcontext{appendix}{}
  \g@addto@macro\appendix{%
    \pretocmd\chapter{%
      \newrefsection
      \ifthu@degree@bachelor\else
        \@tempcnta=\c@chapter
        \advance\@tempcnta\@ne
        \newrefcontext[labelprefix = {\@Alph\@tempcnta.}]{appendix}%
      \fi
    }{}{\thu@patch@error{\chapter}}%
    \defbibheading{bibliography}[\bibname]{%
      \ctexset{section/numbering = false}%
      \section{#1}%
      \ctexset{section/numbering = true}%
    }%
  }
  \renewcommand\thu@set@survey@bibheading{%
    \defbibheading{bibliography}[\bibname]{%
      \vspace{20bp}%
      \begingroup
        \ctexset{
          section = {
            numbering = false,
            format = \centering\normalsize,
            beforeskip = 0pt,
            afterskip = 0pt,
          },
        }%
        \section{\bibname}%
      \endgroup
    }%
  }%
  \def\bibliographystyle#1{%
    \thu@warning{'bibliographystyle' invalid for 'biblatex'.}%
  }
}
%    \end{macrocode}
%
% æœ¬ç§‘ç”Ÿã€Šå†™ä½œè§„èŒƒã€‹æœ‰ç‹¬ç‰¹çš„è¦æ±‚ï¼šé™„å½• A ä¸ºå¤–æ–‡èµ„æ–™çš„è°ƒç&nbsp;”é˜…è¯»æŠ¥å‘Šæˆ–ä¹¦é¢ç¿»è¯‘ï¼Œ
% å¹¶ä¸”è¦åˆ†åˆ«é™„ä¸Šç‹¬ç«‹çš„å‚è€ƒæ–‡çŒ®å’Œå¤–æ–‡èµ„æ–™çš„åŽŸæ–‡ç´¢å¼•ã€‚
% æ‰€ä»¥è¿™é‡Œå®šä¹‰ \env{survey} å’Œ \env{translation} ä¸“é—¨å¤„ç†è¿™ä¸¤ç§æƒ…å†µï¼Œ
% å…¶ä¸­å‚è€ƒæ–‡çŒ®ä½¿ç”¨äº† \pkg{bibunits} å®åŒ…çš„åŠŸèƒ½ã€‚
%
% æ³¨æ„ \pkg{titletoc} åœ¨ 2019/07/14 v2.11.1702 ä¿®æ”¹äº† \cs{printcontents} æŽ¥å£ï¼Œ
% è€Œä¸” \cs{@ifpackagelater} åªèƒ½ç”¨åœ¨å¯¼è¨€åŒºä¸­ï¼Œæ‰€ä»¥éœ€è¦å®šä¹‰è¾…åŠ©å®ã€‚
%    \begin{macrocode}
\@ifpackagelater{titletoc}{2019/07/14}{
  \newcommand\thu@print@contents[5]{%
    \printcontents[#1]{#2}{#3}[#4]{}%
  }
}{
  \newcommand\thu@print@contents[5]{%
    \printcontents[#1]{#2}{#3}{\setcounter{tocdepth}{#4}#5}%
  }
}
%    \end{macrocode}
%
% \begin{environment}{survey}
% å¤–æ–‡èµ„æ–™çš„è°ƒç&nbsp;”é˜…è¯»æŠ¥å‘Šã€‚
%    \begin{macrocode}
\newenvironment{survey}{%
  \chapter{å¤–æ–‡èµ„æ–™çš„è°ƒç&nbsp;”é˜…è¯»æŠ¥å‘Š}%
  \thusetup{language = english}%
  \let\title\thu@appendix@title
  \let\maketitle\thu@appendix@maketitle
  \thu@set@partial@toc@format
  \renewcommand\tableofcontents{%
    \section*{Contents}%
    \thu@pdfbookmark{1}{Contents}%
    \thu@print@contents{survey}{l}{1}{2}{}%
    \vskip 20bp%
  }%
  \let\appendix\thu@appendix@appendix
  \thu@set@survey@bibheading
  \renewcommand\bibname{å‚è€ƒæ–‡çŒ®}%
  \startcontents[survey]%
}{%
  \stopcontents[survey]%
  \thu@reset@main@language % restore language
}
\newcommand\thu@set@appendix@bib@heading{}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{translation}
% å¤–æ–‡èµ„æ–™çš„ä¹¦é¢ç¿»è¯‘ã€‚
%    \begin{macrocode}
\newenvironment{translation}{%
  \chapter{å¤–æ–‡èµ„æ–™çš„ä¹¦é¢ç¿»è¯‘}%
  \thusetup{language = chinese}%
  \let\title\thu@appendix@title
  \let\maketitle\thu@appendix@maketitle
  \renewenvironment{abstract}{%
    \ctexset{
      section = {
        format    += \centering,
        numbering  = false,
      },
    }%
    \section{æ‘˜è¦}%
  }{%
    \par
    \ifx\thu@keywords\@empty\else
      \textbf{å…³é”®è¯ï¼š}\thu@clist@use{\thu@keywords}{ï¼›}\par
    \fi
  }%
  \thu@set@partial@toc@format
  \renewcommand\tableofcontents{%
    \section*{ç›®å½•}%
    \thu@pdfbookmark{1}{ç›®å½•}%
    \thu@print@contents{translation}{l}{1}{2}{}%
    \vskip 20bp%
  }%
  \let\appendix\thu@appendix@appendix
  \thu@set@survey@bibheading
  \startcontents[translation]%
}{%
  \stopcontents[translation]%
  \thu@reset@main@language % restore language
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{translation-index}
% ä¹¦é¢ç¿»è¯‘å¯¹åº”çš„åŽŸæ–‡ç´¢å¼•ï¼ŒåŒºåˆ«äºŽè¯‘æ–‡çš„å‚è€ƒæ–‡çŒ®ã€‚
%    \begin{macrocode}
\newenvironment{translation-index}{}{}
\AtEndOfPackageFile*{bibunits}{
  \newcounter{thu@translation@index}%
  \renewenvironment{translation-index}{%
    \global\advance\c@thu@translation@index\@ne
    \begin{bibunit}%
      \renewcommand\@bibunitname{\jobname-index-\arabic{thu@translation@index}}%
      \renewcommand\bibname{ä¹¦é¢ç¿»è¯‘å¯¹åº”çš„åŽŸæ–‡ç´¢å¼•}%
      \thu@set@survey@bibheading
  }{%
    \end{bibunit}%
  }
}
\AtEndOfPackageFile*{biblatex}{
  \renewenvironment{translation-index}{%
    \endrefsection
    \begin{refsection}%
      \renewcommand\bibname{ä¹¦é¢ç¿»è¯‘å¯¹åº”çš„åŽŸæ–‡ç´¢å¼•}%
      \thu@set@survey@bibheading
  }{%
    \end{refsection}%
  }
}
%    \end{macrocode}
% \end{environment}
%
% è°ƒç&nbsp;”é˜…è¯»æŠ¥å‘Šéœ€è¦ç‹¬ç«‹çš„æ&nbsp;‡é¢˜ï¼Œè¿™é‡Œä»¿ç…§äº†æ&nbsp;‡å‡†æ–‡æ¡£ç±»çš„ç”¨æ³• \cs{title}, \cs{maketitle}ã€‚
%    \begin{macrocode}
\DeclareRobustCommand\thu@appendix@title[1]{\gdef\thu@appendix@@title{#1}}
\newcommand\thu@appendix@maketitle{%
  \par
  \begin{center}%
    \xiaosi[1.667]\thu@appendix@@title
  \end{center}%
  \par
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand\thu@set@partial@toc@format{%
  \titlecontents{section}
    [\z@]{}
    {\contentspush{\thecontentslabel\quad}}{}
    {\thu@leaders\thecontentspage}%
  \titlecontents{subsection}
    [1em]{}
    {\contentspush{\thecontentslabel\quad}}{}
    {\thu@leaders\thecontentspage}%
  \titlecontents{subsubsection}
    [2em]{}
    {\contentspush{\thecontentslabel\quad}}{}
    {\thu@leaders\thecontentspage}%
}
%    \end{macrocode}
%
% ä¹¦é¢ç¿»è¯‘çš„é™„å½•ã€‚
%    \begin{macrocode}
\newcommand\thu@appendix@appendix{%
  \def\theHsection{\Hy@AlphNoErr{section}}%
  \setcounter{section}{0}%
  \setcounter{subsection}{0}%
  \renewcommand\thesection{\thechapter.\@Alph\c@section}%
}%
%    \end{macrocode}
%
% è°ƒç&nbsp;”é˜…è¯»æŠ¥å‘Šçš„å‚è€ƒæ–‡çŒ®ï¼ˆæˆ–ä¹¦é¢ç¿»è¯‘å¯¹åº”çš„å¤–æ–‡èµ„æ–™çš„åŽŸæ–‡ç´¢å¼•ï¼‰æ&nbsp;‡é¢˜ç”¨å®‹ä½“å°å››å·å­—ï¼Œæ®µå‰ 20ptï¼Œæ®µåŽ 6ptï¼Œè¡Œè· 20ptã€‚
%    \begin{macrocode}
\newcommand\thu@set@survey@bibheading{}
%    \end{macrocode}
%
%
% \subsection{ä¸ªäººç®€åŽ†}
%
% \begin{environment}{resume}
% ä¸ªäººç®€åŽ†å‘è¡¨æ–‡ç«&nbsp;ç­‰ã€‚
%    \begin{macrocode}
\newenvironment{resume}{%
  \@mainmatterfalse
  \thu@end@appendix@ref@section
  \thu@chapter*{\thu@resume@name}%
  \ctexset{section/numbering = false}%
  \ifthu@degree@bachelor
    \ctexset{section/aftertitle = {ï¼š\@@par}}%
  \else
    \ctexset{section/format += \centering}%
  \fi
  \ifthu@language@chinese
    \ctexset{
      subsection = {
        format     = \sffamily\fontsize{14bp}{20bp}\selectfont,
        numbering  = false,
        aftertitle = {ï¼š\@@par},
      },
    }%
    \setlist[achievements]{
      topsep     = 6bp,
      itemsep    = 6bp,
      leftmargin = 1cm,
      labelwidth = 1cm,
      labelsep   = 0pt,
      first      = {
        \ifthu@degree@graduate
          \fontsize{12bp}{16bp}\selectfont
        \fi
      },
      align      = left,
      label      = [\arabic*],
      resume     = achievements,
    }%
  \else
    \ctexset{
      subsection = {
        beforeskip = 0pt,
        afterskip  = 0pt,
        format     = \bfseries\normalsize,
        indent     = \parindent,
        numbering  = false,
      },
    }%
    \ifthu@degree@bachelor
      % å†…å®¹éƒ¨åˆ†ç”¨Arialå­—ä½“ï¼Œå­—å·15ptï¼Œè¡Œè·é‡‡ç”¨å›ºå®šå€¼20ptï¼Œ æ®µå‰åŽ 0ptã€‚
      \sffamily\fontsize{15bp}{20bp}\selectfont
    \fi
    \setlist[achievements]{
      topsep     = 0bp,
      itemsep    = 0bp,
      leftmargin = 1.75cm,
      labelsep   = 0.5cm,
      align      = right,
      label      = [\arabic*],
      resume     = achievements,
    }%
  \fi
}{}
%    \end{macrocode}
% \end{environment}
%
% æ—§çš„ \cs{resumeitem} å’Œ \cs{researchitem} å·²ç»è¿‡æ—¶ã€‚
%    \begin{macrocode}
\newcommand\resumeitem[1]{%
  \thu@error{The "\protect\resumeitem" is obsolete. Please update to the new format}%
}
\newcommand\researchitem[1]{%
  \thu@error{The "\protect\researchitem" is obsolete. Please update to the new format}%
}
%    \end{macrocode}
%
% \begin{environment}{achievements}
% å­¦æœ¯æˆæžœç”± \env{achievements} çŽ¯å¢ƒç½—åˆ—ã€‚
%    \begin{macrocode}
\newlist{achievements}{enumerate}{1}
\setlist[achievements]{
  topsep     = 6bp,
  partopsep  = 0bp,
  itemsep    = 6bp,
  parsep     = 0bp,
  leftmargin = 10mm,
  itemindent = 0pt,
  align      = left,
  label      = [\arabic*],
  resume     = achievements,
}
%    \end{macrocode}
% \end{environment}
%
%    \begin{macrocode}
\newenvironment{publications}{%
  \thu@deprecate{"publications" environment}{"achievements"}%
  \begin{achievements}%
}{%
  \end{achievements}%
}
\newcommand\publicationskip{%
  \thu@error{The "\protect\publicationskip" is obsolete. Do not use it}%
}
%    \end{macrocode}
%
% \subsection{æŒ‡å¯¼æ•™å¸ˆ/å°ç»„å­¦æœ¯è¯„è¯­}
% \begin{environment}{comments}
%    \begin{macrocode}
\NewEnviron{comments}[1][]{%
  \thu@end@appendix@ref@section
  \ifthu@degree@graduate
    \@mainmatterfalse
    \kv@define@key{thu@comments}{name}{\let\thu@comments@name\kv@value}%
    \kv@set@family@handler{thu@comments}{%
      \ifx\kv@value\relax
        \let\thu@comments@name\kv@key
      \else
        \kv@handled@false
      \fi
    }%
    \kvsetkeys{thu@comments}{#1}%
    \chapter{\thu@comments@name}%
    \BODY\clearpage
  \fi
}
%    \end{macrocode}
% \end{environment}
%
% \subsection{ç­”è¾©å§”å‘˜ä¼šå†³è®®ä¹¦}
% \begin{environment}{resolution}
%    \begin{macrocode}
\NewEnviron{resolution}{%
  \thu@end@appendix@ref@section
  \ifthu@degree@graduate
    \@mainmatterfalse
    \chapter{\thu@resolution@name}%
    \BODY\clearpage
  \fi
}
%    \end{macrocode}
% \end{environment}
%
% \subsection{ç»¼åˆè®ºæ–‡è®­ç»ƒè®°å½•è¡¨}
%
% \begin{macro}{\record}
% ï¼ˆæœ¬ç§‘ç”Ÿä¸“ç”¨ï¼‰æ’å…¥ç»¼åˆè®ºæ–‡è®­ç»ƒè®°å½•è¡¨çš„ PDF ç‰ˆæœ¬ï¼Œå¹¶åŠ&nbsp;å…¥ä¹¦ç­¾ã€‚
%
%    \begin{macrocode}
\newcommand{\record}[1]{%
  \ifthu@degree@bachelor
    \let\thu@record@file\@empty
    \kv@define@key{thu@record}{file}{\let\thu@record@file\kv@value}%
    \kv@set@family@handler{thu@record}{%
      \ifx\kv@value\relax
        \let\thu@record@file\kv@key
      \else
        \kv@handled@false
      \fi
    }%
    \kvsetkeys{thu@record}{#1}%
    \ifx\thu@record@file\@empty
      \thu@error{File path of \protect\record\space is required}
    \fi
    \clearpage
    \thu@pdfbookmark{0}{ç»¼åˆè®ºæ–‡è®­ç»ƒè®°å½•è¡¨}%
    \includepdf[pages=-]{\thu@record@file}%
  \fi
}
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{å…¶ä»–å®åŒ…çš„è®¾ç½®}
%
% è¿™äº›å®åŒ…å¹¶éžæ&nbsp;¼å¼è¦æ±‚ï¼Œä½†æ˜¯ä¸ºäº†æ–¹ä¾¿åŒå­¦ä»¬ä½¿ç”¨ï¼Œåœ¨è¿™é‡Œè¿›è¡Œç®€å•è®¾ç½®ã€‚
%
% \subsubsection{\pkg{hyperref} å®åŒ…}
%
% ä½¿ç”¨ \cs{PassOptionsToPackage} çš„æ–¹å¼è¿›è¡Œé…ç½®ï¼Œå…è®¸ç”¨æˆ·åœ¨ \cs{usepackage}
% è¦†ç›–é…ç½®ï¼ˆ\href{https://github.com/tuna/thuthesis/issues/863}{tuna/thuthesis\#863}ï¼‰ã€‚
%
%    \begin{macrocode}
\PassOptionsToPackage{
  linktoc            = all,
  bookmarksdepth     = 2,
  bookmarksnumbered  = true,
  bookmarksopen      = true,
  bookmarksopenlevel = 1,
  bookmarksdepth     = 3,
  unicode            = true,
  psdextra           = true,
  breaklinks         = true,
  plainpages         = false,
  pdfdisplaydoctitle = true,
  hidelinks,
}{hyperref}
\AtEndOfPackageFile*{hyperref}{
  \newcounter{thu@bookmark}
  \renewcommand\thu@pdfbookmark[2]{%
    \phantomsection
    \stepcounter{thu@bookmark}%
    \pdfbookmark[#1]{#2}{thuchapter.\thethu@bookmark}%
  }
  \renewcommand\thu@phantomsection{%
    \phantomsection
  }
  \pdfstringdefDisableCommands{%
    \let\\\relax
    \let\quad\relax
    \let\qquad\relax
    \let\hspace\@gobble
  }%
%    \end{macrocode}
%
% \pkg{hyperref} ä¸Ž \pkg{unicode-math} å­˜åœ¨ä¸€äº›å…¼å®¹æ€§é—®é¢˜ï¼Œè§
% \href{https://github.com/ustctug/ustcthesis/issues/223}{%
%   ustctug/ustcthesis\#223}ï¼Œ
% \href{https://github.com/ho-tex/hyperref/pull/90}{ho-tex/hyperref\#90} å’Œ
% \href{https://github.com/ustctug/ustcthesis/issues/235}{%
%   ustctug/ustcthesis/\#235}ã€‚
%    \begin{macrocode}
  \@ifpackagelater{hyperref}{2019/04/27}{}{%
    \g@addto@macro\psdmapshortnames{\let\mu\textmu}
  }%
  \ifthu@main@language@chinese
    \hypersetup{
      pdflang = zh-CN,
    }%
  \else
    \hypersetup{
      pdflang = en-US,
    }%
  \fi
  \AtBeginDocument{%
    \ifthu@main@language@chinese
      \hypersetup{
        pdftitle    = \thu@title,
        pdfauthor   = \thu@author,
        pdfsubject  = \thu@degree@category,
        pdfkeywords = \thu@keywords,
      }%
    \else
      \hypersetup{
        pdftitle    = \thu@title@en,
        pdfauthor   = \thu@author@en,
        pdfsubject  = \thu@degree@category@en,
        pdfkeywords = \thu@keywords@en,
      }%
    \fi
    \hypersetup{
      pdfcreator={\thuthesis-v\version}}
  }%
}
%    \end{macrocode}
%
% \subsubsection{\pkg{mathtools} å®åŒ…}
%
% \pkg{mathtools} ä¼šä¿®æ”¹ \pkg{unicode-math} çš„ \cs{underbrace} å’Œ \cs{overbrace}ï¼Œ
% éœ€è¦è¿˜åŽŸä¸º \cs{LaTeXunderbrace} å’Œ \cs{LaTeXoverbrace}ï¼Œ
% å‚è€ƒ \url{https://tex.stackexchange.com/q/521394/82731}ã€‚
%    \begin{macrocode}
\AtEndOfPackageFile*{mathtools}{
  \@ifpackageloaded{unicode-math}{
    \let\underbrace\LaTeXunderbrace
    \let\overbrace\LaTeXoverbrace
  }{}
}
%    \end{macrocode}
%
% \subsubsection{\pkg{nomencl} å®åŒ…}
%
%    \begin{macrocode}
\AtEndOfPackageFile*{nomencl}{
  \let\nomname\thu@denotation@name
  \def\thenomenclature{\begin{denotation}[\nom@tempdim]}
  \def\endthenomenclature{\end{denotation}}
}
%    \end{macrocode}
%
% \subsubsection{\pkg{siunitx} å®åŒ…}
%
%    \begin{macrocode}
\AtEndOfPackageFile*{siunitx}{%
  \newcommand\thu@set@siunitx@language{%
    \ifthu@language@chinese
      \sisetup{
        list-final-separator = {\TextOrMath{\space}{\ }\text{å’Œ}\TextOrMath{\space}{\ }},
        list-pair-separator  = {\TextOrMath{\space}{\ }\text{å’Œ}\TextOrMath{\space}{\ }},
        range-phrase         = {\text{ï½ž}},
      }%
    \else
      \ifthu@language@english
        \sisetup{
          list-final-separator = {\TextOrMath{\space}{\ }\text{and}\TextOrMath{\space}{\ }},
          list-pair-separator  = {\TextOrMath{\space}{\ }\text{and}\TextOrMath{\space}{\ }},
          range-phrase         = {\TextOrMath{\space}{\ }\text{to}\TextOrMath{\space}{\ }},
        }%
      \fi
    \fi
  }
  \thu@set@siunitx@language
  \thu@option@hook{language}{\thu@set@siunitx@language}
}
%    \end{macrocode}
%
% \subsubsection{\pkg{amsthm} å®åŒ…}
%
% å®šç†æ&nbsp;‡é¢˜ä½¿ç”¨é»‘ä½“ï¼Œæ­£æ–‡ä½¿ç”¨å®‹ä½“ï¼Œå†’å·éš”å¼€ã€‚
%    \begin{macrocode}
\AtEndOfPackageFile*{amsthm}{%
  \newtheoremstyle{thu}
    {\z@}{\z@}
    {\normalfont}{\z@}
    {\normalfont\sffamily}{\thu@theorem@separator}
    {0.5em}{}
  \theoremstyle{thu}
  \newtheorem{assumption}{\thu@assumption@name}[chapter]%
  \newtheorem{definition}{\thu@definition@name}[chapter]%
  \newtheorem{proposition}{\thu@proposition@name}[chapter]%
  \newtheorem{lemma}{\thu@lemma@name}[chapter]%
  \newtheorem{theorem}{\thu@theorem@name}[chapter]%
  \newtheorem{axiom}{\thu@axiom@name}[chapter]%
  \newtheorem{corollary}{\thu@corollary@name}[chapter]%
  \newtheorem{exercise}{\thu@exercise@name}[chapter]%
  \newtheorem{example}{\thu@example@name}[chapter]%
  \newtheorem{remark}{\thu@remark@name}[chapter]%
  \newtheorem{problem}{\thu@problem@name}[chapter]%
  \newtheorem{conjecture}{\thu@conjecture@name}[chapter]%
  \renewenvironment{proof}[1][\thu@proof@name]{\par
    \pushQED{\qed}%
    % \normalfont \topsep6\p@\@plus6\p@\relax
    \normalfont \topsep\z@\relax
    \trivlist
    \item[\hskip\labelsep
      %     \itshape
      % #1\@addpunct{.}]\ignorespaces
      \sffamily
      #1]\ignorespaces
  }{%
    \popQED\endtrivlist\@endpefalse
  }
  \renewcommand\qedsymbol{\thu@qed}
}
%    \end{macrocode}
%
% \subsubsection{\pkg{ntheorem} å®åŒ…}
%
% å®šç†æ&nbsp;‡é¢˜ä½¿ç”¨é»‘ä½“ï¼Œæ­£æ–‡ä½¿ç”¨å®‹ä½“ï¼Œå†’å·éš”å¼€ã€‚
%    \begin{macrocode}
\AtEndOfPackageFile*{ntheorem}{%
  \theorembodyfont{\normalfont}%
  \theoremheaderfont{\normalfont\sffamily}%
  \theoremsymbol{\thu@qed}%
  \newtheorem*{proof}{\thu@proof@name}%
  \theoremstyle{plain}%
  \theoremsymbol{}%
  \theoremseparator{\thu@theorem@separator}%
  \newtheorem{assumption}{\thu@assumption@name}[chapter]%
  \newtheorem{definition}{\thu@definition@name}[chapter]%
  \newtheorem{proposition}{\thu@proposition@name}[chapter]%
  \newtheorem{lemma}{\thu@lemma@name}[chapter]%
  \newtheorem{theorem}{\thu@theorem@name}[chapter]%
  \newtheorem{axiom}{\thu@axiom@name}[chapter]%
  \newtheorem{corollary}{\thu@corollary@name}[chapter]%
  \newtheorem{exercise}{\thu@exercise@name}[chapter]%
  \newtheorem{example}{\thu@example@name}[chapter]%
  \newtheorem{remark}{\thu@remark@name}[chapter]%
  \newtheorem{problem}{\thu@problem@name}[chapter]%
  \newtheorem{conjecture}{\thu@conjecture@name}[chapter]%
}
%    \end{macrocode}
%
% \subsubsection{\pkg{algorithm} å®åŒ…}
%
% ä½¿ \env{algorithm} å’Œ \env{listing} çŽ¯å¢ƒçš„åç§°éšè¯­è¨€è®¾ç½®è€Œæ”¹å˜ï¼Œ
% å¹¶ä½¿å…¶åœ¨é™„å½•ä¸­çš„ç¼–å·è§„åˆ™ä¸Žå›¾ã€è¡¨ç­‰ä¸€è‡´ã€‚
%
% \begin{macro}{\listofalgorithm}
% \begin{macro}{\listofalgorithm*}
%    \begin{macrocode}
\PassOptionsToPackage{chapter}{algorithm}
\AtEndOfPackageFile*{algorithm}{
  \floatname{algorithm}{\thu@algorithm@name}
  \renewcommand\listofalgorithms{%
    \thu@listof{algorithm}%
  }
  \renewcommand\listalgorithmname{\thu@list@algorithm@name}
  \def\ext@algorithm{loa}
  \contentsuse{algorithm}{loa}
  \titlecontents{algorithm}
    [\z@]{}
    {\contentspush{\fname@algorithm~\thecontentslabel\thu@contents@label@delimiter}}{}
    {\thu@leaders\thecontentspage}
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{\pkg{algorithm2e} å®åŒ…}
%
%    \begin{macrocode}
\PassOptionsToPackage{algochapter}{algorithm2e}
\AtEndOfPackageFile*{algorithm2e}{
  \renewcommand\algorithmcfname{\thu@algorithm@name}
  \SetAlgoCaptionLayout{thu@caption@font}
  \SetAlCapSty{relax}
  \SetAlgoCaptionSeparator{\hspace*{1em}}
  \SetAlFnt{\fontsize{11bp}{14.3bp}\selectfont}
  \renewcommand\listofalgorithms{%
    \thu@listof{algorithmcf}%
  }
  \renewcommand\listalgorithmcfname{\thu@list@algorithm@name}
  \def\ext@algorithmcf{loa}
  \contentsuse{algocf}{loa}
  \titlecontents{algocf}
    [\z@]{}
    {\contentspush{\algorithmcfname~\thecontentslabel\thu@contents@label@delimiter}}{}
    {\thu@leaders\thecontentspage}
}
%    \end{macrocode}
%
% \subsubsection{\pkg{minted} å®åŒ…}
%
%    \begin{macrocode}
\AtEndOfPackageFile*{minted}{
  \newcommand\thu@set@listing@language{%
    \ifthu@language@chinese
      \floatname{listing}{ä»£ç&nbsp;}%
    \else
      \floatname{listing}{Listing}%
    \fi
  }
  \thu@set@listing@language
  \thu@option@hook{language}{\thu@set@listing@language}
}
%    \end{macrocode}
%
% \subsection{ä¹¦è„Š}
% \label{sec:spine}
% \begin{macro}{\spine}
% å•ç‹¬ä½¿ç”¨ä¹¦è„Šå‘½ä»¤ä¼šåœ¨æ–°çš„ä¸€é¡µäº§ç”Ÿç«–æŽ’ä¹¦è„Šï¼Œ
% å‚è€ƒ \url{https://tex.stackexchange.com/a/38585}ã€‚
%
% æœ¬ç§‘ç”Ÿï¼š
%   ä¹¦è„Šçš„ä¹¦å†™è¦æ±‚ï¼šç”¨ä»¿å®‹\_GB2312 å­—ä¹¦å†™ï¼Œå­—ä½“å¤§å°æ&nbsp;¹æ®è®ºæ–‡çš„è–„åŽšè€Œå®šã€‚
%   ä¹¦è„Šä¸Šæ–¹å†™è®ºæ–‡é¢˜ç›®ï¼Œä¸‹æ–¹å†™æœ¬ç§‘ç”Ÿå§“åï¼Œè·ä¸Šä¸‹é¡µè¾¹å‡ä¸º 3cmã€‚
%
% ç&nbsp;”ç©¶ç”Ÿï¼š
%   åšå£«è®ºæ–‡çš„ä¹¦è„Šä½¿ç”¨ä¸‰å·å­—ï¼Œç¡•å£«çš„ä¸ºå°ä¸‰å·ã€‚
%   ç¤ºä¾‹ä¸­ä¸Šä¸‹é¡µè¾¹è·ä¸º 5.5 cmï¼Œå·¦å³è¾¹è·ä¸º 1 cmã€‚
%    \begin{macrocode}
\thu@define@key{
  spine-font = {
    name = spine@font,
  },
  spine-title = {
    name = spine@title,
  },
  spine-author = {
    name = spine@author,
  },
}
\renewcommand\thu@spine@font{%
  \ifthu@degree@doctor
    \fontsize{16bp}{20.8bp}\selectfont
  \else
    \fontsize{15bp}{19.5bp}\selectfont
  \fi
}
\newcommand*\CJKmovesymbol[1]{\raise.3em\hbox{#1}}
\newcommand*\CJKmove{%
  \punctstyle{plain}%
  \let\CJKsymbol\CJKmovesymbol
  \let\CJKpunctsymbol\CJKsymbol
}
\NewDocumentCommand{\spine}{
    O{
      \ifx\thu@spine@title\@empty
        \thu@title
      \else
        \thu@spine@title
      \fi
    }
    O{
      \ifx\thu@spine@author\@empty
        \thu@author
      \else
        \thu@spine@author
      \fi
    }}{%
  \clearpage
  \ifthu@degree@bachelor
    \newgeometry{
      vmargin = 3cm,
      hmargin = 1cm,
    }%
  \else
    \newgeometry{
      vmargin = 5.5cm,
      hmargin = 1cm,
    }%
  \fi
  \thispagestyle{empty}%
  \ifthu@main@language@chinese
    \thu@pdfbookmark{0}{ä¹¦è„Š}%
  \else
    \thu@pdfbookmark{0}{Spine}%
  \fi
  \begingroup
    \noindent\hfill
    \rotatebox[origin=lt]{-90}{%
      \makebox[\textheight]{%
        \fangsong
        \addCJKfontfeatures*{RawFeature={vertical}}%
        \thu@spine@font
        \CJKmove
        #1\hfill
        \thu@stretch{4.5em}{#2}%
      }%
    }%
  \endgroup
  \clearpage
  \restoregeometry
}
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{å…¶å®ƒ}
% \label{sec:other}
%
% å€Ÿç”¨ \cls{ltxdoc} å’Œ \cls{l3doc} é‡Œé¢çš„å‡&nbsp;ä¸ªå‘½ä»¤æ–¹ä¾¿å†™æ–‡æ¡£ã€‚
%    \begin{macrocode}
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\DeclareRobustCommand\file{\nolinkurl}
\DeclareRobustCommand\env{\textsf}
\DeclareRobustCommand\pkg{\textsf}
\DeclareRobustCommand\cls{\textsf}
%    \end{macrocode}
%
%    \begin{macrocode}
\sloppy
%&lt;/cls&gt;
%    \end{macrocode}
%
%
% \iffalse
%    \begin{macrocode}
%&lt;*dtx-style&gt;
\ProvidesPackage{dtx-style}
\RequirePackage{hypdoc}
\RequirePackage{ifthen}
\RequirePackage{fontspec}[2017/01/20]
\RequirePackage{amsmath}
\RequirePackage{unicode-math}
\RequirePackage{siunitx}
\RequirePackage[UTF8,scheme=chinese]{ctex}
\RequirePackage[
  top=2.5cm, bottom=2.5cm,
  left=4cm, right=2cm,
  headsep=3mm]{geometry}
\RequirePackage{hologo}
\RequirePackage{array,longtable,booktabs}
\RequirePackage{listings}
\RequirePackage{fancyhdr}
\RequirePackage{xcolor}
\RequirePackage{enumitem}
\RequirePackage{etoolbox}
\RequirePackage{metalogo}
\RequirePackage[tightLists=false]{markdown}

\markdownSetup{
  renderers = {
    link = {\href{#2}{#1}},
  }
}

\hypersetup{
  pdflang     = zh-CN,
  pdftitle    = {ThuThesisï¼šæ¸…åŽå¤§å­¦å­¦ä½è®ºæ–‡æ¨¡æ¿},
  pdfauthor   = {æ¸…åŽå¤§å­¦ TUNA åä¼š},
  pdfsubject  = {æ¸…åŽå¤§å­¦å­¦ä½è®ºæ–‡æ¨¡æ¿ä½¿ç”¨è¯´æ˜Ž},
  pdfkeywords = {è®ºæ–‡æ¨¡æ¿; æ¸…åŽå¤§å­¦; ä½¿ç”¨è¯´æ˜Ž},
  pdfdisplaydoctitle = true
}%

\setmainfont[
  Extension      = .otf,
  UprightFont    = *-regular,
  BoldFont       = *-bold,
  ItalicFont     = *-italic,
  BoldItalicFont = *-bolditalic,
]{texgyrepagella}
\setsansfont[
  Extension      = .otf,
  UprightFont    = *-regular,
  BoldFont       = *-bold,
  ItalicFont     = *-italic,
  BoldItalicFont = *-bolditalic,
]{texgyreheros}
\setmonofont[
  Extension      = .otf,
  UprightFont    = *-regular,
  BoldFont       = *-bold,
  ItalicFont     = *-italic,
  BoldItalicFont = *-bolditalic,
  Scale          = MatchLowercase,
  Ligatures      = CommonOff,
]{texgyrecursor}

\unimathsetup{
  math-style=ISO,
  bold-style=ISO,
}
\DeclareRobustCommand\mathellipsis{\mathinner{\unicodecdots}}
\IfFontExistsTF{XITSMath-Regular.otf}{
  \setmathfont[
    Extension    = .otf,
    BoldFont     = XITSMath-Bold,
    StylisticSet = 8,
  ]{XITSMath-Regular}
  \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
}{
  \setmathfont[
    Extension    = .otf,
    BoldFont     = *bold,
    StylisticSet = 8,
  ]{xits-math}
  \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
}

\colorlet{thu@macro}{blue!60!black}
\colorlet{thu@env}{blue!70!black}
\colorlet{thu@option}{purple}
\patchcmd{\PrintMacroName}{\MacroFont}{\MacroFont\bfseries\color{thu@macro}}{}{}
\patchcmd{\PrintDescribeMacro}{\MacroFont}{\MacroFont\bfseries\color{thu@macro}}{}{}
\patchcmd{\PrintDescribeEnv}{\MacroFont}{\MacroFont\bfseries\color{thu@env}}{}{}
\patchcmd{\PrintEnvName}{\MacroFont}{\MacroFont\bfseries\color{thu@env}}{}{}

\def\DescribeOption{%
  \leavevmode\@bsphack\begingroup\MakePrivateLetters%
  \Describe@Option}
\def\Describe@Option#1{\endgroup
  \marginpar{\raggedleft\PrintDescribeOption{#1}}%
  \thu@special@index{option}{#1}\@esphack\ignorespaces}
\def\PrintDescribeOption#1{\strut \MacroFont\bfseries\sffamily\color{thu@option} #1\ }
\def\thu@special@index#1#2{\@bsphack
  \begingroup
    \HD@target
    \let\HDorg@encapchar\encapchar
    \edef\encapchar usage{%
      \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}%
    }%
    \index{#2\actualchar{\string\ttfamily\space#2}
           (#1)\encapchar usage}%
    \index{#1:\levelchar#2\actualchar
           {\string\ttfamily\space#2}\encapchar usage}%
  \endgroup
  \@esphack}

\lstdefinestyle{lstStyleBase}{%
   basicstyle=\small\ttfamily,
   aboveskip=\medskipamount,
   belowskip=\medskipamount,
   lineskip=0pt,
   boxpos=c,
   showlines=false,
   extendedchars=true,
   upquote=true,
   tabsize=2,
   showtabs=false,
   showspaces=false,
   showstringspaces=false,
   numbers=none,
   linewidth=\linewidth,
   xleftmargin=4pt,
   xrightmargin=0pt,
   resetmargins=false,
   breaklines=true,
   breakatwhitespace=false,
   breakindent=0pt,
   breakautoindent=true,
   columns=flexible,
   keepspaces=true,
   gobble=4,
   framesep=3pt,
   rulesep=1pt,
   framerule=1pt,
   backgroundcolor=\color{gray!5},
   stringstyle=\color{green!40!black!100},
   keywordstyle=\bfseries\color{blue!50!black},
   commentstyle=\slshape\color{black!60}}

\lstdefinestyle{lstStyleShell}{%
   style=lstStyleBase,
   frame=l,
   rulecolor=\color{purple},
   language=bash}

\lstdefinestyle{lstStyleLaTeX}{%
   style=lstStyleBase,
   frame=l,
   rulecolor=\color{violet},
   language=[LaTeX]TeX}

\lstnewenvironment{latex}{\lstset{style=lstStyleLaTeX}}{}
\lstnewenvironment{shell}{\lstset{style=lstStyleShell}}{}

\setlist{nosep}

\DeclareDocumentCommand{\option}{m}{\textsf{#1}}
\DeclareDocumentCommand{\env}{m}{\texttt{#1}}
\DeclareDocumentCommand{\pkg}{s m}{%
  \textsf{#2}\IfBooleanF#1{\thu@special@index{package}{#2}}}
\DeclareDocumentCommand{\cls}{s m}{%
  \textsf{#2}\IfBooleanF#1{\thu@special@index{package}{#2}}}
\DeclareDocumentCommand{\file}{s m}{%
  \nolinkurl{#2}\IfBooleanF#1{\thu@special@index{file}{#2}}}
\newcommand{\myentry}[1]{%
  \marginpar{\raggedleft\color{purple}\bfseries\strut #1}}
\newcommand{\note}[2][Note]{{%
  \color{magenta}{\bfseries #1}\emph{#2}}}

\g@addto@macro\UrlBreaks{%
  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
  \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M
  \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z
  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m
  \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
}
\Urlmuskip=0mu plus 0.1mu

\DeclareDocumentCommand{\githubuser}{m}{\href{https://github.com/#1}{@#1}}

\def\thuthesis{\textsc{Thu}\-\textsc{Thesis}}
%&lt;/dtx-style&gt;
%    \end{macrocode}
% \fi
%
% \Finale
%
\endinput
% \iffalse
%  Local Variables:
%  mode: doctex
%  TeX-master: t
%  End:
% \fi
</pre></body></html>