summaryrefslogtreecommitdiff
path: root/macros/xetex/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/xetex/latex')
-rw-r--r--macros/xetex/latex/buctthesis/README.md79
-rw-r--r--macros/xetex/latex/buctthesis/buctthesis.dtx2649
-rw-r--r--macros/xetex/latex/buctthesis/buctthesis.ins73
-rw-r--r--macros/xetex/latex/buctthesis/buctthesis.pdfbin0 -> 462539 bytes
-rw-r--r--macros/xetex/latex/hfutthesis/README.md70
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-bib/hfut.bib169
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/abstract.tex35
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/acknowledgements.tex18
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/citations.tex44
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/complementary.tex8
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/expertspage.tex45
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/floats.tex99
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/intro.tex39
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/math.tex189
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/notation.tex27
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-chapters/publications.tex28
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-figures/hfut-badge.pdfbin0 -> 202975 bytes
-rw-r--r--macros/xetex/latex/hfutthesis/hfut-figures/hfut-name.pdf368
-rw-r--r--macros/xetex/latex/hfutthesis/hfutsetup.tex121
-rw-r--r--macros/xetex/latex/hfutthesis/hfutthesis-doc.pdfbin0 -> 309251 bytes
-rw-r--r--macros/xetex/latex/hfutthesis/hfutthesis-doc.tex732
-rw-r--r--macros/xetex/latex/hfutthesis/hfutthesis-example.pdfbin0 -> 432196 bytes
-rw-r--r--macros/xetex/latex/hfutthesis/hfutthesis-example.tex58
-rw-r--r--macros/xetex/latex/hfutthesis/hfutthesis.cls3735
-rw-r--r--macros/xetex/latex/hithesis/Makefile108
-rw-r--r--macros/xetex/latex/hithesis/README.md222
-rw-r--r--macros/xetex/latex/hithesis/back/acknowledgements.tex9
-rw-r--r--macros/xetex/latex/hithesis/back/appA.tex69
-rw-r--r--macros/xetex/latex/hithesis/back/appendix01.tex247
-rw-r--r--macros/xetex/latex/hithesis/back/ceindex.tex4
-rw-r--r--macros/xetex/latex/hithesis/back/conclusion.tex8
-rw-r--r--macros/xetex/latex/hithesis/back/publications.tex27
-rw-r--r--macros/xetex/latex/hithesis/back/resume.tex17
-rw-r--r--macros/xetex/latex/hithesis/body/introduction.tex593
-rw-r--r--macros/xetex/latex/hithesis/ctex-fontset-siyuan.def86
-rw-r--r--macros/xetex/latex/hithesis/figures/bthesistitle.eps335
-rw-r--r--macros/xetex/latex/hithesis/figures/golfer.eps1398
-rw-r--r--macros/xetex/latex/hithesis/figures/hitlogo.eps382
-rw-r--r--macros/xetex/latex/hithesis/front/cover.tex90
-rw-r--r--macros/xetex/latex/hithesis/front/denotation.tex13
-rw-r--r--macros/xetex/latex/hithesis/hithesis.bst1935
-rw-r--r--macros/xetex/latex/hithesis/hithesis.dtx5344
-rw-r--r--macros/xetex/latex/hithesis/hithesis.ins130
-rw-r--r--macros/xetex/latex/hithesis/hithesis.pdfbin0 -> 610073 bytes
-rw-r--r--macros/xetex/latex/hithesis/hithesis.sty328
-rw-r--r--macros/xetex/latex/hithesis/latexmkrc40
-rw-r--r--macros/xetex/latex/hithesis/main.pdfbin0 -> 337720 bytes
-rw-r--r--macros/xetex/latex/hithesis/main.tex138
-rw-r--r--macros/xetex/latex/hithesis/reference.bib75
49 files changed, 20184 insertions, 0 deletions
diff --git a/macros/xetex/latex/buctthesis/README.md b/macros/xetex/latex/buctthesis/README.md
new file mode 100644
index 0000000000..b019dd7dba
--- /dev/null
+++ b/macros/xetex/latex/buctthesis/README.md
@@ -0,0 +1,79 @@
+# BUCTthesis
+
+[![BUCTthesis](https://img.shields.io/badge/BUCTthesis-LaTeX-blue)](https://github.com/Miracle0565/BUCTthesis)
+[![GitHub license](https://img.shields.io/github/license/Miracle0565/BUCTthesis)](https://github.com/Miracle0565/BUCTthesis/blob/master/LICENSE)
+
+## BUCTthesis in a nutshell
+BUCTthesis is a LaTeX writting template package for Beijing University of Chemical Technology,
+supporting bachelor, master and doctor theses.
+
+You can [download](https://github.com/Miracle0565/BUCTthesis/releases) this package from GitHub Releases,
+and the latest released version is strongly recommended. As this package is mainly provided for
+Chinese users, the following of this file and the manual documents are written in Chinese only.
+
+This file 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:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions
+of LaTeX version 1999/12/01 or later.
+
+
+## BUCTthesis 是什么?
+
+BUCTthesis (**B**eijing **U**niversity of **C**hemical **T**echnology LaTeX **Thesis** template)是北京化工大学学位论文的 LaTeX 模板,包括本科毕业设计(论文)与硕士、博士研究生学位论文。
+
+## 快速使用
+
+1. 安装 TeX 发行版,推荐使用 TeX Live。
+2. [在这里下载](https://github.com/Miracle0565/BUCTthesis/releases) 模板最新发行版的压缩文件。
+3. 解压缩后,可在 `demo` 文件夹中找到本科、硕博两种论文类型所对应的示例文件夹;**将所选论文类型文件夹中的所有内容移动至模板的根目录**。(例如,对本科而言,需将 `demo/bachelor` 中的所有内容复制或移动到根目录, `demo` 文件夹中的剩余内容可删除。)
+4. 阅读本模板的说明文档 `buctthesis.pdf`,该文档简要地说明了模板的使用方法。
+5. 相比于重建文件,直接在示例文件上修改会更加方便:
+ - `main.tex` 用于定义作者与论文信息,并组织论文结构;
+ - `mycfg.sty` 用于自定义命令等;
+ - `thesisbib.bib` 文件中插入参考文献条目;
+ - `chapter` 文件夹用于存放各部分内容,并在 `main.tex` 调用;
+ - `figure` 和 `code` 文件夹下分别保存插图和源代码,以方便写作时调用;
+6. 对 `main.tex` 文件执行 `latexmk` 或 `xelatex -> bibtex -> xelatex -> xelatex` 的全编译。
+7. 在 `cover` 文件夹中可生成硕博论文的封面,使用方法请阅读说明文档 `buctthesis.pdf`。(本科可直接删除该文件夹)
+
+## 注意事项
+
+- 北京化工大学教务处与研究生院仅提供了写作规范(见下)而**未对本模板做任何测试或授权**。模板作者自当尽力,但限于软件等各种因素,由本模板生成的文档可能仍与要求有所出入。所以使用本模板类造成(包括但不限于)论文审核不通过等问题作者不负责,请使用时慎酌。
+- 模板在 TeX Live 2020 及更新版本、[Overleaf](https://www.overleaf.com/) 上可顺利编译,可能不兼容于低版本。**不支持** CTeX 套装。
+- 学校会统一印制论文封面,而其中包括标题和作者的内容需要用笔填写。为保证论文的完整性,本模板仿制了研究生论文的封面,且与实物相比有少许差别。
+
+## 写作规范
+
+- 本科:[《北京化工大学本科毕业环节工作规定》](https://jiaowuchu.buct.edu.cn/2019/0222/c515a22047/page.htm)、[《本科生毕业设计(论文)撰写规范》](https://jiaowuchu.buct.edu.cn/2018/1009/c515a22046/page.htm)
+- 硕博:[《北京化工大学研究生学位论文撰写规范(修订)》](https://xxgk.buct.edu.cn/2017/1107/c2835a39437/page.htm)
+- 参考文献(非校方链接):[GB/T 7714—2015 信息与文献 参考文献著录规则](http://www.cessp.org.cn/uploads/1/file/public/201607/20160708142456_8mqgu0dpgk.pdf)
+
+## 《规范》勘误
+
+### 本科
+
+学校教务处提供了两份文件,而二者之间有出入之处,以及有少许笔误之处和歧义之处。模板作如下统一:
+
+- 二者间以后者( Word 文档)为准,如图、表编号中的分隔符使用 `-`( U+002D );
+- 标题 `诚信申明` 改为 `诚信声明`;
+- 章节编号 `均以罗马数字表示顺序` 改为 `均以阿拉伯数字表示顺序`;
+- 对章节 `标题加黑` ,“加黑”一词理解为“使用(伪)粗体”而非“标题为黑体”。
+
+### 硕博
+
+- 英文摘要中的 `KEY WORDS:`,模板将字母后的全角冒号 `:`( U+FF1A )改为半角冒号 `:`( U+003A );
+- 正文、参考文献条目的 `行间距20磅` 改为 `行距20磅`。
+
+## 提问
+
+关于模板的任何问题或新功能需求,欢迎提交 [GitHub Issues](https://github.com/Miracle0565/BUCTthesis/issues)。
+
+## 开源许可
+
+本项目的代码部分基于 [LaTeX Project Public License](http://www.latex-project.org/lppl.txt)(版本 1.3c 或更高)开源于 [GitHub](https://github.com/Miracle0565/BUCTthesis) 。同时为了方便国内用户,在 [Gitee](https://gitee.com/Miracle0565/BUCTthesis) 建有代码的镜像。
diff --git a/macros/xetex/latex/buctthesis/buctthesis.dtx b/macros/xetex/latex/buctthesis/buctthesis.dtx
new file mode 100644
index 0000000000..42a8290981
--- /dev/null
+++ b/macros/xetex/latex/buctthesis/buctthesis.dtx
@@ -0,0 +1,2649 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019-2022 by Miracle0565
+%
+% https://github.com/Miracle0565/BUCTthesis
+% -------------------------------------------------------
+%
+% This file 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:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions
+% of LaTeX version 1999/12/01 or later.
+%
+% \fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \iffalse
+%<*driver>
+\ProvidesFile{buctthesis.dtx}[2022/07/29 v1.4.1 BUCT Thesis Template]
+\documentclass{ltxdoc}
+\usepackage{manual}
+\begin{document}
+\DocInput{\jobname.dtx}
+\PrintIndex
+\PrintChanges
+\end{document}
+%</driver>
+% \fi
+%
+% \DoNotIndex{\newcommand,\newenvironment,\renewcommand,\renewenvironment}
+% \DoNotIndex{\providecommand,\NewDocumentCommand}
+% \DoNotIndex{\begin,\end,\begingroup,\endgroup}
+% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize}
+% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny,\zihao}
+% \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter}
+% \DoNotIndex{\noindent,\normalfont,\par,\parskip,\phantomsection}
+% \DoNotIndex{\providecommand,\ProvidesPackage,\refstepcounter}
+% \DoNotIndex{\setcounter,\setlength,\string,\strut}
+% \DoNotIndex{\textbackslash,\texttt,\ttfamily,\usepackage}
+% \DoNotIndex{\par,\\}
+% \DoNotIndex{\if,\ifx,\ifdim,\ifnum,\ifcase,\else,\or,\fi}
+% \DoNotIndex{\let,\def,\xdef,\edef,\newcommand,\renewcommand}
+% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect}
+% \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{buctthesis.dtx}
+%
+% \title{\textsf{BUCTthesis}:北京化工大学学位论文模板}
+% \author{Miracle0565\\ \texttt{https://github.com/Miracle0565}}
+% \date{\fileversion (\filedate)}
+%
+% \newgeometry{hcentering}
+% \maketitle
+% \tableofcontents\restoregeometry\clearpage
+%
+% \section{欢迎!}
+% BUCTthesis是北京化工大学本科与硕士、博士研究生毕业论文的 \LaTeX\ 写作模板,版本号~\fileversion。
+% 本文是模板的使用指南,旨在帮助北化毕业生掌握此模板的使用方法,从而写出符合北化
+% \href{https://jiaowuchu.buct.edu.cn/2018/1009/c515a22046/page.htm}{《本科生毕业设计(论文)撰写规范》}(以下称《本科规范》)
+% 和 \href{https://xxgk.buct.edu.cn/2017/1107/c2835a39437/page.htm}{《北京化工大学研究生学位论文撰写规范(修订)》}(以下称《研究生规范》)
+% 要求的毕业论文。
+%
+% \subsection{模板内容}
+% 本模板为中文论文模板,暂不支持英语专业的论文写作。以下是完整论文的书序,其中划线部分为模板未完成的部分。
+% \begin{description}
+% \item[本科] \without{开题报告} \footnote{格式未指定。}、\without{中期进展情况检查表} \footnote{由学校提供 Word,可转换为 PDF 文件插入。}、\without{论文封面} \footnote{学校统一印制,论文题目等信息需手写,可使用扫描件插入。}、诚信声明、任务书、摘要、目录、前言、正文、结论、参考文献、符号说明、致谢和附录;
+% \item[研究生] 论文封面、版权页(独创性声明和授权书)、\without{学位论文数据集} \footnotemark[2]、中英文摘要、中英文目录、符号和缩略词说明、正文、参考文献、附录、致谢、作者攻读学位期间发表的学术论文及科研成果目录、作者和导师简介和\without{答辩委员会决议} \footnote{使用扫描件插入。}。
+% \end{description}
+%
+% \subsection{免责声明}
+% 请您注意,至本文档编译时,北京化工大学教务处仅提供《本科规范》和《研究生规范》而未对本模板做任何测试或授权。
+% 模板作者自当尽力,但限于软件等各种因素,由本模板生成的文档可能仍与要求有所出入,
+% 故不保证审查老师对格式不提意见。在开始使用之前,您需要同意:
+% 任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。
+%
+% \subsection{开源说明}
+% 本模板开源于 \href{https://github.com/Miracle0565/BUCTthesis}{GitHub},代码部分遵循
+% \href{https://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License 1.3c} 及以上协议。
+% 模板文件夹中有关学校校徽和校名的插图,其版权归北京化工大学所有。
+%
+% 由于模板建设尚在起步阶段,欢迎任何有兴趣的同学加入模板的开发工作。
+%
+% \subsection{关于本文}
+% 本文档将对使用这份模板作一简单介绍。在第~\ref{sec:start}~节将概述使用模板前的准备,以及介绍编译方法;
+% 在第~\ref{sec:usage}~节将介绍本模板中新定义及实用的命令与环境;
+% 最后在第~\ref{sec:implementation}~节将简述模板文档类代码,面向对 BUCTthesis 开发感兴趣的用户。
+%
+% 本文档中的宏包、命令等内容以不同字体或形式展现,以作区分:
+% 无衬线字体表示宏包、文档类等存在于计算机上的文件,
+% 如 \file{buctthesis.cls} 文件、\pkg{amsmath}宏包、\cls{ctexbook} 文档类;
+% 等宽字体表示命令与环境,如 \cs{buctsetup} 命令、\env{abstract} 环境。
+% 对于命令中的参数将置于尖括号(尖括号无需输入)中,如 \cs{include}\marg{file};
+% 对于命令行指令,将置于\ {\color{violet!65}\rule[.25ex]{1em}{1ex}} 颜色框内,且需要逐行输入;
+% 而对于 \LaTeX\ 代码,将置于\ {\color{cyan}\rule[.25ex]{1em}{1ex}} 颜色框内,
+% 需要保存为特定文件后进行编译。
+%
+% \section{开始使用}\label{sec:start}
+% \subsection{准备工作}
+% 开始之前,您需要选择一个合适的 \TeX\ 发行版,以及需要一些必要的 \TeX\ 技能。
+% \begin{enumerate}
+% \item \TeX\ 发行版:
+% \begin{description}
+% \item[本地编译] 建议完整安装 \TeX\ Live 2020 或更新版本。模板\emph{不支持} \CTeX\ 套装。安装 \TeX 发行版的详细步骤可参考\href{https://github.com/OsbertWang/install-latex-guide-zh-cn}{《一份简短的关于 \LaTeX 安装的介绍》}。此外,该文档简要地介绍了几款常见的文本编辑器,可根据喜好自行选择。
+% \item[在线编译] 推荐 \href{https://www.overleaf.com/}{Overleaf},它提供了 Ubuntu 系统下的 \TeX\ Live,目前为 2021 版。免费版本足以应对模板的正常编译,至于完整的文档历史和协作编辑等功能则需付费订阅。
+% \end{description}
+% \item \TeX\ 技能:本文档不是一份 \LaTeX\ 零基础教程,使用本模板需要对 \LaTeX\ 和参考文献管理工具 \BibTeX 有一定的熟练度。若您是新手,我们建议您先阅读一些入门文档,如\href{http://mirror.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf}{《一份不太简短的 \LaTeXe 介绍》}。
+% \end{enumerate}
+%
+% \subsection{模板组成}
+% 在表 \ref{tab:mainfile} 中罗列了本模板所包含的主要文件。
+% \begin{table}[ht]
+% \centering
+% \caption{模板的组成}\label{tab:mainfile}
+% \begin{tabular}{ll}
+% \toprule
+% 文件(夹)名 & 简述\\
+% \midrule
+% \file{buctthesis.ins} & \textsc{DocStrip} 驱动文件\\
+% \file{buctthesis.dtx} & \textsc{DocStrip} 源文件\\\cmidrule(lr){1-2}
+% \file{chapter/} & 论文各部分的源文件路径\\
+% \file{code/} & 源代码的路径\\
+% \file{cover/} & 论文封面的路径\\
+% \file{figure/} & 插图的路径\\\cmidrule(lr){1-2}
+% \file{main.tex} & 主文件\\
+% \file{main.pdf} & 示例文档\\
+% \file{buctthesis.cls} & 模板的文档类文件\\
+% \file{thesisbib.bib} & \BibTeX{}参考文献数据库\\
+% \file{mycfg.sty} & 自定义配置文件\\
+% \file{README.md} & 项目自述文件\\
+% \file{\bfseries buctthesis.pdf} & 写作指南,即本文\\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \begin{enumerate}
+% \item 主文件 \file{main.tex}:定义论文相关信息,并对分散于 \file{chapter/} 文件夹下的各部分内容进行“整合”。这里的“各部分内容”包括诚信声明或版权页、摘要、正文等。
+% \item 文档类文件 \file{buctthesis.cls}:格式控制。可由 \file{buctthesis.ins} 和 \file{buctthesis.dtx} 生成:
+% \begin{shell}
+% xelatex buctthesis.ins
+% \end{shell}
+% \item \file{buctthesis.pdf}:写作指南,即本文。可由 \file{buctthesis.dtx} 生成:
+% \begin{shell}
+% xelatex buctthesis.ins
+% xelatex buctthesis.dtx
+% makeindex -s gind.ist -o buctthesis.ind buctthesis.idx
+% xelatex buctthesis.dtx
+% xelatex buctthesis.dtx
+% \end{shell}
+% \end{enumerate}
+%
+% \subsection{编译论文}
+% 模板基于 \cls{ctexbook} 文档类构建,但\emph{仅} 支持 \XeTeX\ 引擎。
+% 目前参考文献生成基于 \BibTeX,因此完整的编译流程如下:
+% (输入以下命令时可略去文件扩展名)
+% \begin{shell}
+% xelatex main.tex
+% bibtex main.tex
+% xelatex main.tex
+% xelatex main.tex
+% \end{shell}
+%
+% 或者使用更方便的 latexmk 工具:不加参数则默认对 \file{main.tex} 进行编译。
+% 相比上一种,使用 latexmk 更加自动化,能持续编译直到解决所有的交叉引用:
+% \begin{shell}
+% latexmk
+% \end{shell}
+%
+% 示例文件会随模板一同发布。建议在写作开始前对示例文件执行一次全编译,以检查编程环境是否合适。
+%
+% \subsection{提问}
+% 对于模板的任何问题或新功能需求请提交至 \href{https://github.com/Miracle0565/BUCTthesis/issues}{GitHub Issues}。
+% 以下步骤可能对排除与精简问题有所帮助:
+% \begin{enumerate}
+% \item 将 \file{buctthesis.cls} 和 \file{main.tex} 文件复制到一空白文件夹;
+% \item 简化 \file{main.tex} 中能复现问题的代码至如下所示:
+% \begin{latex}
+% \documentclass[ type = bachelor ]{buctthesis} % 请注意指定文档类型
+% \begin{document}
+% sOmetHInG GoEs wRoNg.
+% \end{document}
+% \end{latex}
+% \item 如果有必要的话可以将 \file{.log} 文件通过 \href{https://pastebin.com/}{Pastebin} 一并提交。
+% \end{enumerate}
+%
+% \section{使用说明}\label{sec:usage}
+% 本节将简单介绍模板中的命令和环境。除了以下介绍,推荐对照示例文件及源代码看一看。
+%
+% \subsection{论文选项}\label{subsec:options}
+% \subsubsection{文档类选项}
+% 主文件 \file{main.tex} 以
+% \begin{latex}
+% \documentclass[
+% type = doctor, % bachelor | master | doctor
+% fontset = windows, % fandol | windows | ...
+% submit,
+% openany, % openany | openright(default)
+% ]{buctthesis}
+% \end{latex}
+% 命令载入文档类,从而控制全文格式。
+%
+% 以下逐一简述各个选项:
+%
+% \DescribeOpt{type = }
+% \emph{必须指定一种类型}:本科 \opt{bachelor},硕士 \opt{master},以及博士 \opt{doctor}。
+% 如:
+% \begin{latex}
+% % 博士论文
+% \documentclass[type = doctor,]{buctthesis}
+% % 或:
+% % 本科论文
+% \documentclass[type = bachelor,]{buctthesis}
+% \end{latex}
+%
+% \DescribeOpt{fontset = }
+% 该选项会传递至 \pkg{ctex} 宏集,从而指定全文的字体。模板的设置如表~\ref{tab:fontset}~所示。
+%
+% 其中选项 \opt{fandol} 或使用 \opt{\meta{others}} 选项 \footnote{参见\pkg{ctex}宏集第 4.3 小节。}是为了一些不方便安装字体的系统或平台(如 Overleaf)所采取的\emph{临时解决方案}。
+% 这些字体与中易系列字体有少许差别,且偶尔有缺字现象。
+% 因此,强烈建议在最后提交论文前,在合适的环境下使用 \opt{fontset = windows} 进行编译。
+%
+% \begin{table}[ht]
+% \centering
+% \caption{模板的字体配置}\label{tab:fontset}
+% \begin{tabular}{llll}
+% \toprule
+% \opt{fontset =} & \opt{windows} & \opt{fandol} & \opt{\meta{others}}\\
+% \midrule
+% 中文 & 中易字库 (宋、黑开启伪粗体) & Fandol 字库 & / \\
+% 西文 & Times New Roman & Times New Roman & Times New Roman \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \DescribeOpt{submit}
+% 是否为提交版本。如果启用则会将文章超链接和代码块的文字颜色全部设置为黑色,适合论文最终提交与付梓。
+% 需要提醒的是,它不能转换插图的颜色。
+%
+% \DescribeOpt{openright}
+% \DescribeOpt{openany}
+% 对于书籍而言,一般章标题都只出现在右边的页面(奇数页),之前不足的页面用空白补足。
+% 这也是打开模板 \opt{openright} 选项的结果:将会在适当处插入一完全空白页。
+% 而 \opt{openany} 则允许在任意页开启新的一章。
+%
+% 其它选项:多余的选项将传递给 \pkg{ctexbook} 文档类,如 \opt{draft} 将关闭插图和部分宏包的渲染,从而加快编译速度。
+%
+% \subsubsection{论文信息}\label{subsec:buctsetup}
+% \DescribeMacro{\buctsetup}
+% \DescribeOpt{ctitle}
+% \DescribeOpt{etitle}
+% \DescribeOpt{cauthor}
+% \DescribeOpt{class}
+% \DescribeOpt{studentid}
+% \DescribeOpt{school}
+% \DescribeOpt{major}
+% \DescribeOpt{supervisor}
+% \DescribeOpt{msupervisor}
+% \begin{syntax}{buctsetup}
+% \marg{键值列表}
+% \end{syntax}
+%
+% 接下来需要定义论文相关信息,使用 \cs{buctsetup} 命令以 \meta{key}$=$\meta{value}
+% 的形式进行定义,包括论文的中英文标题、作者个人信息等。
+% \begin{latex}
+% \buctsetup{
+% % 论文的中文标题
+% ctitle = {基于 \LaTeX\ 的北京化工大学毕业论文写作模板},
+% % 论文的英文标题,一般需要大写
+% etitle = {BUCTthesis: A \LaTeX\ WRITING TEMPLATE FOR BUCT},
+% % 作者的中文姓名
+% cauthor = {张三},
+% % 班级(仅本科)
+% class = {某某1024},
+% % 学号(仅本科)
+% studentid = {2018020999},
+% % 学院(仅本科)
+% school = {材料科学与工程学院},
+% % 专业名称(仅本科)
+% major = {高分子材料与工程},
+% % 导师的姓名与职称(仅本科)
+% supervisor = {李四教授},
+% % 专业负责人姓名(仅本科)
+% msupervisor = {王五},
+% % 中文、英文关键词,各关键词间以西文逗号“,”分隔
+% ckeywords = {论文,\LaTeX{},模板},
+% ekeywords = {thesis,\LaTeX{},template},
+% }
+% \end{latex}
+%
+% \emph{无论是文档类选项还是 \cs{buctsetup} 命令,各选项之间不要留有空行,并以西文逗号“,”分隔。}
+%
+% 此外,\cs{buctsetup}\marg{键值列表} 与下列命令等价:
+% \begin{latex}
+% % 于导言区
+% \ctitle{基于 \LaTeX\ 的北京化工大学毕业论文写作模板}
+% \etitle{BUCTthesis: A \LaTeX\ WRITING TEMPLATE FOR BUCT}
+% % ...(下同)
+% \end{latex}
+%
+% \subsection{前置部分}\label{subsec:frontmatter}
+%
+% 在“目录”之前的几个部分,包括“诚信声明”\footnote{根据《现代汉语词典》对“申明”与“声明”二词的释义,%
+% 《本科规范》中的“诚信申明”应作“诚信声明”;模板以后者作为标题。}(仅本科)、
+% 版权页(仅硕博)、“任务书”(仅本科)、“摘要”和“Abstract”,
+% 分别对应于 \file{chapter/frontmatter.tex} 中的不同命令或环境。
+%
+% \subsubsection{诚信声明与版权页}
+% \DescribeMacro{\makedeclare}
+% \begin{syntax}{makedeclare}
+% \oarg{文件路径}
+% \end{syntax}
+%
+% 直接使用而不带任何参数的 \cs{makedeclare} 会根据所选 \opt{type} 生成对应内容。
+%
+% 此外,考虑到有时需要插入扫描页,所以该命令可跟一个可选参数,如:
+% \begin{latex}
+% \makedeclare[figure/declare.png]
+% \end{latex}
+% 即可插入位于 \file{figure/declare.png} 的图片来代替。
+%
+% \subsubsection{摘要和关键词}\label{subsubsec:abstract}
+% \DescribeEnv{cabstract}
+% \DescribeEnv{eabstract}
+% 中、英文摘要分别使用 \env{cabstract} 和 \env{eabstract} 环境。
+% \begin{latex}
+% \begin{cabstract}
+% 中文摘要。
+% \end{cabstract}
+% \begin{eabstract}
+% Abstract in English.
+% \end{eabstract}
+% \end{latex}
+%
+% 关键词会根据在 \cs{buctsetup} 中的定义自动生成,参见~\ref{subsec:buctsetup}。
+%
+% \subsubsection{任务书}\label{subsubsec:taskbook}
+% \DescribeEnv{taskbook}
+% \DescribeMacro{\taskinfo}
+% \DescribeMacro{\taskinfo*}
+% \DescribeEnv{bibenumerate}
+% 该环境仅适用于本科论文中。
+%
+% “本科生毕业设计(论文)任务书”部分使用 \env{taskbook} 环境。
+% 主文件中所定义的部分信息会作用于“任务书”的开头部分;
+% 该部分以 \cs{taskinfo} 或 \cs{taskinfo*} 命令来插入,
+% 二者的区别在于后者比前者少了一次换行,是《本科规范》中示例的实现,但不适合文字较多时使用。
+%
+% 除此之外,可以选择使用 \env{bibenumerate} 环境来排版有序文献列表,
+% 序号已经设置为带方括号的数字。
+%
+% \emph{以上各部分在源文件中含有部分代码,稍作改动即可。}
+%
+% \subsubsection{目录}\label{subsubsec:content}
+% \DescribeMacro{\tableofcontents}
+% \DescribeMacro{\tableofcontentsEN}
+% \DescribeMacro{\listofdesignfigures}
+% 三个命令分别生成中文目录、英文目录(仅硕博)、设计图纸目录(仅本科部分专业)。
+% \begin{latex}
+% \tableofcontents
+% \tableofcontentsEN
+% \listofdesignfigures
+% \end{latex}
+%
+% 三者是互相独立的。
+% 英文目录通过 \cs{echapter} 等命令指定某一标题的英文标题,参见~\ref{subsubsec:bitoc}。
+% 设计图纸目录通过 \env{dfigure} 环境指定插图为“设计图纸”并计数编号,参见~\ref{subsubsec:dfigure}。
+%
+% \subsubsection{符号说明表}\label{subsubsec:deno}
+% \DescribeEnv{denotation}
+% 符号说明表的源文件位于 \file{chapter/denotation.tex},
+% 使用 \env{denotation} 环境。
+% 《本科规范》和《研究生规范》中都未详细规定符号说明表的格式,
+% 模板设计了一个无框线、可跨页的长表格,直接在环境里填入内容即可。
+% 环境接受一个可选参数 \meta{width} ,代表“说明”一列的宽度,用于在必要时调整。
+% \begin{latex}
+% \begin{denotation}[12cm] % 设置第二列的列宽为 12 cm,默认 10 cm
+% 符号1 & 说明1 \\
+% 符号2 & 说明2 \\
+% \end{denotation}
+% \end{latex}
+%
+% \emph{注意:“符号说明表”在本科论文中置于“参考文献”之后,与研究生论文有所差异。}
+%
+% \subsubsection{前言}\label{subsubsec:foreword}
+% 该环境仅适用于本科论文中。
+%
+% 该部分的源代码位于 \file{chapter/foreword.tex},
+% 使用 \env{foreword} 环境,在相应位置输入文本即可。注意不能在此环境中使用
+% \cs{section}等与“章”计数器有关的命令,结论、翻译、致谢部分同理。
+%
+% \subsection{正文部分}\label{subsec:mainmatter}
+%
+% \subsubsection{纲举目张}
+% \DescribeMacro{\include}
+% \DescribeMacro{\input}
+% \begin{syntax}{include}
+% \marg{文件}
+% \end{syntax}
+% \qquad
+% \begin{syntax}{input}
+% \marg{文件}
+% \end{syntax}
+%
+% 正文部分各个章节的源文件存放于 \file{chapter/} 文件夹,
+% 只要在 \file{main.tex} 正文部分以上述命令插入各章节即可成文。
+% 插入 \meta{文件} 可以不带扩展名,默认为 \file{.tex}。
+%
+% 使用 \cs{include} 命令会在读入文件前另起一页,而 \cs{input}
+% 纯粹插入文件里的内容。
+% 当随着写作章节增多,每次编译时间也会越来越长。
+% 此时可以选择性地注释部分章节,从而快速编译查错。
+%
+% \subsubsection{双语目录}\label{subsubsec:bitoc}
+% \DescribeMacro{\echapter}
+% \DescribeMacro{\esection}
+% \DescribeMacro{\esubsection}
+% \DescribeMacro{\esubsubsection}
+% \begin{syntax}{echapter}
+% \marg{英文目录标题}
+% \end{syntax}
+%
+% 这些命令仅适用于硕博论文中,支持章、节、小节和小小节标题,且语法相同。
+%
+% 硕博论文要求中英双语目录,且英语目录要与中文对应。
+% 我们只需在正文章节标题命令后加上对应标签即可。
+% 如:
+% \begin{latex}
+% \chapter{绪论}\echapter{Intorduciton}
+% \section{基本概念}\esection{Basic Conceptions}
+% \section{本章小结}\esection{Chapter Summary}
+% \chapter{实验}\echapter{The Experiments}
+% \end{latex}
+%
+% 可能写两遍 chapter 或 section 显得过于繁琐,我们也有更简单的 \cs{bichapter} 与 \cs{bisection} 等命令。以 \cs{bichapter} 为例,语法格式为:
+%
+% \DescribeMacro{\bichapter}
+% \DescribeMacro{\bisection}
+% \DescribeMacro{\bisubsection}
+% \DescribeMacro{\bisubsubsection}
+% \begin{syntax}{bichapter}
+% \oarg{中文目录标题}\marg{中文正文标题}\marg{英文目录标题}
+% \end{syntax}
+%
+% 可见与 \cs{chapter} 相比,它多了一个参数用于接受 \meta{英文目录的标题}。
+% 于是,上面这个例子可以这样简化:
+% \begin{latex}
+% \bichapter{绪论}{Intorduciton}
+% \bisection{基本概念}{Basic Conceptions}
+% \bisection{本章小结}{Chapter Summary}
+% \bichapter{实验}{The Experiments}
+% \end{latex}
+%
+% 但这也有少许弊端:一些编辑器会检测代码中诸如 \cs{section} 等章节结构命令,
+% 以此在编辑窗口中显示论文的结构树;但是,如果使用了 \cs{bisection} 等命令之后,
+% 就可能无法正常显示了。
+%
+% \DescribeMacro{\tableofcontentsEN}
+% 然后,使用 \cs{tableofcontentsEN} 生成英文目录项。
+% 类似中文目录,英文目录需要经过两次编译才能正确生成。
+%
+% \subsubsection{双语图表注}\label{subsubsec:bicaption}
+% \DescribeMacro{\bicaption}
+% \begin{syntax}{bicaption}
+% \marg{中文长图表注}\marg{英文长图表注}
+% \end{syntax}
+%
+% 该命令仅适用于硕博论文中。
+%
+% 具体的用法很简单:使用 \cs{bicaption} 代替 \cs{caption} 命令即可,如:
+% \begin{latex}
+% \begin{figure}
+% \centering \includegraphics[]{file}
+% \bicaption{中文标题}{English Title}
+% \end{figure}
+% \end{latex}
+%
+% \subsubsection{设计图纸}\label{subsubsec:dfigure}
+% 这些命令和环境仅适用于本科论文中。
+%
+% 关于一般的插图请看示例文件,这里介绍关于“设计图纸”及编目的方法。
+%
+% 由于《本科规范》未对所谓“设计图纸”详细说明,因此模板设计了两种编目方式:
+% 一是加入主目录,另一种是单独生成目录。
+%
+% \DescribeEnv{dfigure}
+% 设计图纸的计数器是独立于一般插图的,故需要使用 \env{dfigure} 环境来代替 \env{figure}。
+
+% \DescribeMacro{\dcaption}
+% 先来看编入主目录的方式,在正文内插入插图的代码处,
+% 除了使用 \cs{dcaption} 代替 \cs{caption}外都一样。
+% \begin{latex}
+% \begin{dfigure}[htbp]
+% \centering\includegraphics[]{file}
+% \dcaption{设计图纸示例}
+% \end{dfigure}
+% \end{latex}
+%
+% \DescribeMacro{\listofdesignfigures}
+% 而独立目录也很简单,一个 \cs{listofdesignfigures} 即可。参见~\ref{subsubsec:content}。
+% \subsubsection{结论}
+% \DescribeEnv{conclusion}
+% 该环境仅适用于本科论文中。
+%
+% 结论部分的源文件位于 \file{chapter/conclusion.tex}。该环境与前言相似,没有章的编号。
+% 但如果希望把“结论”编入章节,如“第五章\hspace{\ccwd}结论”,
+% 那么就不必使用 \env{conclusion} 环境,像其他章节一样使用 \cs{chapter} 就可以了。
+% \begin{latex}
+% \begin{conclusion}
+% 本文的结论有什么?
+% \end{conclusion}
+% \end{latex}
+%
+% \subsubsection{参考文献}\label{subsubsec:bib}
+% \DescribeMacro{\cite}
+% \DescribeMacro{\inlinecite}
+% \DescribeMacro{\nocite}
+% \begin{syntax}{cite}
+% \marg{CiteKey}
+% \end{syntax}
+% \qquad
+% \begin{syntax}{inlinecite}
+% \marg{CiteKey}
+% \end{syntax}
+%
+% 模板使用 \cs{cite} 实现上标、方括号按“顺序编码制”引用参考文献;
+% \cs{inlinecite} 可实现行间引用,适合某些特殊情况使用;
+% 而 \cs{nocite}\marg{CiteKey} 则指明不引用但需要列出的参考文献。
+% 在同一处引用多个文献时,应将各篇文献的引用标签一同写在参数里,
+% 并以西文逗号“,”分隔每个 \meta{CiteKey}。
+%
+% 主文件中以
+% \begin{latex}
+% \bibliographystyle{gbt7714-numerical}
+% \bibliography{thesisbib.bib}
+% \end{latex}
+% 来增加符合格式要求的参考文献章节。为罗列各条参考文献,
+% 需要在 \file{thesisbib.bib} 文件中增删需引用的文献数据。
+% 在文章中相应位置引用文献后,需执行一次全编译以确保正确显示。
+%
+% \emph{注意:至少需要引用一篇文献,否则执行完全编译可能会引起编译错误。}
+%
+%
+% \subsection{后置部分}\label{subsec:backmatter}
+% \subsubsection{翻译}
+% \DescribeEnv{translation}
+% 该环境仅适用于本科论文中。
+%
+% 文献翻译的源文件位于 \file{chapter/translation.tex},
+% 使用 \env{translation} 环境,原文和翻译都要有。
+% \begin{latex}
+% \begin{translations}
+% English.
+%
+% 汉语。
+% \end{translations}
+% \end{latex}
+%
+% \subsubsection{附录}\label{subsubsec:app}
+% \DescribeMacro{\appendix}
+% \cs{appendix} 命令作为附录部分的开始。
+% 与正文类似,只需往 \file{chapter/app1.tex} 等加入内容即可。
+% \begin{latex}
+% \appendix
+% \chapter{...}
+% ...
+% \end{latex}
+%
+% \subsubsection{致谢}
+% \DescribeEnv{acknowledgement}
+% 致谢部分的源文件位于 \file{chapter/acknowledgement.tex},
+% 使用 \env{acknowledgement} 环境,
+% 往里面写入感谢的话就可以啦。
+% \begin{latex}
+% \begin{acknowledgement}
+% 谢谢你!
+% \end{acknowledgement}
+% \end{latex}
+%
+% \emph{注意:“致谢”在本科论文中置于“附录”之前,与研究生论文有所差异。}
+%
+% \subsubsection{成果与简介}
+% \DescribeEnv{achievements}
+% \DescribeEnv{resume}
+% 这些环境仅适用于研究生论文中。
+%
+% 该部分包括“作者攻读学位期间发表的学术论文及科研成果目录”与“作者和导师简介”,
+% 源文件位于 \file{chapter/resume.tex}。示例文档中已有现成例子,推荐直接修改。
+%
+% \DescribeEnv{bibenumerate}
+% 其中可以使用 \env{bibenumerate} 环境来生成带有方括号的列表,适合罗列文献。
+%
+% \begin{latex}
+% \begin{achievements}
+% \section*{发表及已接受的论文:}
+% \section*{成果及专利:}
+% \end{achievements}
+% \begin{resume}
+% \section*{作者简介:}
+% \section*{导师简介:}
+% \end{resume}
+% \end{latex}
+%
+% \subsection{封面}\label{subsec:cover}
+% \DescribeMacro{\makecover}
+% BUCTthesis 对学校印刷的纸质封面进行了仿制,本小节将简单介绍相关代码与编译方法。
+%
+% 由于字体的原因,BUCTthesis 将封面模板另置于 \file{cover} 文件夹,可根据需要使用。
+% 在该文件夹中的三个文件都与封面有关,编译时请确保它们位于同一路径之下。
+%
+% \emph{注意:这里的“仿制”仅是实现封面的效果,学校印制的封面需要手写内容,故不能在纸本上替代学校统一印制的封面;
+% 若无特殊说明,可以在提交电子版时使用此封面。但,仍请以教务处最新通告为准。}
+% \begin{enumerate}
+% \item \file{buctcover.tex}:源文档。在 \cs{documentclass} 后定义封面所属学位,在 \cs{coversetup} 中定义论文相关信息。除导言区外无需修改。
+% \begin{latex}
+% \documentclass[
+% type = bachelor % type = [ bechelor | master | doctor ]
+% ]{buctcover}
+% \coversetup{
+% %班级,位于右上角,仅本科
+% class = {计科1024},
+% % 学号,位于右上角
+% studentid = {2021010234},
+% % 标题。总字数不要超过 36 个汉字长度。
+% % 本科:可以一行或分两行写,如果无第二行将 titleB 留空或注释掉;
+% % 硕博:封面的标题有两行,每一行控制在 18 个汉字长度以内。
+% titleA = {甲乙丙丁戊己庚辛壬癸一二三},
+% titleB = {四五六七八九十甲乙丙丁戊己},
+% % 作者
+% author = {张三},
+% % 专业
+% major = {计算机科学与技术},
+% % 导师
+% supervisor = {某某某教授},
+% % 日期,不填为当日。请注意:务必使用形如“YYYY-MM-DD”的格式
+% date = {2021-12-23},
+% }
+% \end{latex}
+%
+% 至于编译,只需一遍 xelatex 即可,扩展名可省略。
+% \begin{shell}
+% xelatex buctcover.tex
+% \end{shell}
+% 如果编译两遍,还会生成封面的 PDF 书签。
+% 此时可以用其他 PDF 工具将封面整合到论文中,同时还能保留封面书签以便于跳转。
+%
+% \item \file{buctcover.cls}:格式控制文件。类似 \file{buctthesis.cls},亦可由 \file{buctthesis.ins} 和 \file{buctthesis.dtx} 生成:
+% \begin{shell}
+% xelatex buctthesis.ins
+% \end{shell}
+% 请注意执行以上命令时会同时生成 \file{buctcover.cls} 和 \file{buctthesis.cls},只有前者是用于控制封面的。
+% \end{enumerate}
+%
+% 除此之外,封面使用的方正系列字体未预装于一些操作系统上,
+% 可访问\href{https://www.foundertype.com}{方正字库官网}下载和安装,具体步骤从略。
+%
+% 封面所使用的中文字体清单:
+% \begin{enumerate}
+% \item SimSun,中易宋体
+% \item SimHei,中易黑体
+% \item KaiTi,中易楷体
+% \item STXingkai,华文行楷
+% \item FZXiaoBiaoSong-B05S,方正小标宋简体
+% \item FZDaBiaoSong-B06S,方正大标宋简体(仅硕博封面需要)
+% \end{enumerate}
+%
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \clearpage
+% \section{实现细节}\label{sec:implementation}
+% \subsection{文档类信息与选项}
+% \begin{macrocode}
+%<class|cover>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<*class>
+\ProvidesClass{buctthesis}[2022/07/29 v1.4.1 BUCT Thesis Template]
+% \end{macrocode}
+%
+% 装载 \pkg{ifxetex} 宏包,并通过 \cs{RequireXeTeX} 命令检查编译命令。
+% 若未使用 \XeTeX\ 或 \XeLaTeX\ 将强制中止编译并发出警告。
+% \begin{macrocode}
+\RequirePackage{ifxetex}
+\RequireXeTeX
+% \end{macrocode}
+%
+% 定义选项和族。
+% \begin{macrocode}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+ family = buct,
+ prefix = buct@,
+ setkeys = \kvsetkeys,
+}
+% \end{macrocode}
+%
+% 定义载入文档类时的选项:
+%
+% 模板类型:本科、硕士、博士;
+% \begin{macrocode}
+\newif\ifbuct@bachelor\buct@bachelorfalse
+\newif\ifbuct@master\buct@masterfalse
+\newif\ifbuct@doctor\buct@doctorfalse
+\define@key{buct}{type}{\expandafter\csname buct@#1true\endcsname}
+% \end{macrocode}
+%
+% 是否为最终提交版本,默认否;
+% \begin{macrocode}
+\DeclareBoolOption[false]{submit}
+% \end{macrocode}
+%
+% 每章从任意页或奇数页开始,默认 openright,即每章只从奇数页开始;
+% \begin{macrocode}
+\DeclareBoolOption[false]{openany}
+\DeclareComplementaryOption{openright}{openany}
+% \end{macrocode}
+%
+% 是否开启模板调试器,默认否。
+% \begin{macrocode}
+\DeclareBoolOption[false]{debugger}
+% \end{macrocode}
+%
+% 将文档类多余的选项传递给 \pkg{ctexbook} 文档类,并加载相应选项的文档类。
+% \begin{macrocode}
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+%
+% 由于 \cls{ctexbook} 将会调用 \pkg{xeCJK} 宏包来配置字体,这里使用 \opt{quiet}
+% 选项关闭因自定义字体(后述)而产生的警告。
+% 最后根据用户选项,加载相应选项的 \cls{ctexbook} 文档类。
+% \begin{macrocode}
+\PassOptionsToPackage{quiet}{xeCJK}
+\ifbuct@openany\LoadClass[zihao=-4,UTF8,oneside]{ctexbook}
+\else\LoadClass[zihao=-4,UTF8,openright]{ctexbook}\fi
+% \end{macrocode}
+%
+% 必须指定本、硕、博中的一种类型。
+% \begin{macrocode}
+\ifbuct@bachelor\relax\else
+ \ifbuct@master\relax\else
+ \ifbuct@doctor\relax\else
+ \ClassError{buctthesis}{%
+ Specified thesis type is obligatory: \MessageBreak%
+ type = [ bachelor | master | doctor ]%
+ }{}
+\fi\fi\fi
+% \end{macrocode}
+%
+% \begin{macro}{\buct@def@key}
+% 定义用于定义论文相关信息的内部命令。例如:
+% \begin{latex}
+% \buct@def@key{ctitle}
+% \end{latex}
+% 相当于:
+% \begin{latex}
+% \newcommand{\ctitle}[1]{\newcommand{\buct@ctitle}{#1}}
+% \define@key{buct}{ctitle}{\ctitle{#1}}
+% \end{latex}
+%
+% \begin{macrocode}
+\newcommand{\buct@def@key}[1]{
+ \@namedef{#1}##1{\@namedef{buct@#1}{##1}}
+ \define@key{buct}{#1}{\@nameuse{#1}{##1}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buctsetup}
+% 定义 \cs{buctsetup} 命令作为接口,方便在主文件中设置。
+% \begin{macrocode}
+\newcommand{\buctsetup}[1]{\kvsetkeys{buct}{#1}}
+\buct@def@key{ctitle}
+\buct@def@key{etitle}
+\buct@def@key{cauthor}
+\buct@def@key{class}
+\buct@def@key{studentid}
+\buct@def@key{school}
+\buct@def@key{major}
+\buct@def@key{supervisor}
+\buct@def@key{msupervisor}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buct@def@sep@key}
+% 对于 \opt{ckeywords} 等键接受的是以西文逗号“,”分隔的值,上面的定义就不合适了。
+% 所以要对值做分隔。相比 \cs{buct@def@key} 这里多一个参数,即为在论文中的分隔符。
+% 此处的宏展开可参考\href{https://www.zhihu.com/question/26916597}{这篇讨论}。
+% \begin{macrocode}
+\newcommand{\buct@def@sep@key}[2]{%
+ \@namedef{#1}##1{%
+ \@namedef{buct@#1}{}%
+ \@for\reserved@a:=##1\do{
+ \expandafter\ifx\csname buct@#1\endcsname\@empty\else
+ \expandafter\g@addto@macro\csname buct@#1\endcsname{#2}\fi
+ \expandafter\expandafter\expandafter\g@addto@macro%
+ \expandafter\csname buct@#1\expandafter\endcsname%
+ \expandafter{\reserved@a}
+ }
+ }
+ \define@key{buct}{#1}{\@nameuse{#1}{##1}}%
+}
+\buct@def@sep@key{ckeywords}{\buct@ckeywords@sep}
+\buct@def@sep@key{ekeywords}{\buct@ekeywords@sep}
+% \end{macrocode}
+% \end{macro}
+% \subsection{载入宏包}
+%
+% 用于调整纸张与页面,这两个宏包提供了方便的命令来设置页面边距和页眉页脚。
+% \begin{macrocode}
+\RequirePackage{geometry,fancyhdr}
+% \end{macrocode}
+%
+% 自定义目录格式。
+% \begin{macrocode}
+\RequirePackage{titletoc}
+% \end{macrocode}
+%
+% \AmS{}系列宏包,包括:
+% \begin{enumerate}
+% \item \pkg{amsmath},提供了各种数学方面的增强型命令,以改进包含数学公式的文档结构;
+% \item \pkg{amsthm},提供了定理类环境样式规范;
+% \item \pkg{amssymb},提供各种数学符号。
+% \end{enumerate}
+% 除此之外,载入 \pkg{unicode-math} 宏包以配置数学字体。
+% \begin{macrocode}
+\RequirePackage{amsmath,amsthm,amssymb,unicode-math}
+% \end{macrocode}
+%
+% 这两个宏包最重要的用途是排版本科的第五级标题。前者用于提供带圈序号,而后者提供了方便的格式控制。
+% \begin{macrocode}
+\RequirePackage{pifont,enumitem}
+% \end{macrocode}
+%
+% 一个适合排版含数值和单位的物理量的宏包,它也能提供在表格中按小数点竖直对齐的方法。
+% \begin{macrocode}
+\RequirePackage{siunitx}
+% \end{macrocode}
+%
+% 关于化学式排版的宏包有很多,但这里载入 \pkg{mhchem}。
+% 它容易上手,偏向于无机和分析化学(方程)式的排版。
+% 至于有机化学的结构式等,使用图片插入可能是一个更好的选择;若时间充裕可学习如 \pkg{chemfig} 等宏包。
+% \begin{macrocode}
+\RequirePackage[version = 4]{mhchem}
+% \end{macrocode}
+%
+% 浮动体系列宏包,控制表格、插图等浮动体及标签格式。
+% \begin{macrocode}
+\RequirePackage{float}
+\RequirePackage{longtable,threeparttable,tabularx,multirow,booktabs}
+\RequirePackage{graphicx}
+\RequirePackage[labelformat = simple]{subcaption}
+\RequirePackage[format=hang]{caption}
+\RequirePackage{bicaption}
+% \end{macrocode}
+%
+% 一个用于绘图的宏包,模板里用于绘制脚注外的圆圈。
+% \begin{macrocode}
+\RequirePackage{tikz}
+% \end{macrocode}
+%
+% 代码块环境。
+% \begin{macrocode}
+\RequirePackage{listings}
+% \end{macrocode}
+%
+% 该宏包提供了符合要求的“参考文献”章节中文献的编排格式。
+% 这里的选项会传递至 \pkg{natbib},从而在正文中能实现数字、上标、方括号的引用模式。
+% \begin{macrocode}
+\RequirePackage[sort&compress]{gbt7714}
+% \end{macrocode}
+%
+% 为了方便查看,模板将以彩色标明超链接和代码块中的关键字。
+% \begin{macrocode}
+\RequirePackage{xcolor}
+% \end{macrocode}
+%
+% 用于插入PDF文件的宏包。可以插入封面、声明页(因为二者需要签字)等扫描或不方便排版的PDF文件。
+% \begin{macrocode}
+\RequirePackage{pdfpages}
+% \end{macrocode}
+%
+% \pkg{footmisc} 宏包的选项将脚注的位置固定在页面底端,且跨页重置计数。
+% \begin{macrocode}
+\RequirePackage[bottom,perpage]{footmisc}
+% \end{macrocode}
+%
+% 命令补丁,用于便捷地修改一些复杂命令,而无需重新定义之。
+% \begin{macrocode}
+\RequirePackage{xpatch}
+% \end{macrocode}
+%
+% 在页面画上标尺、边框线,和标注行号。仅当开启调试时。
+% \begin{macrocode}
+\ifbuct@debugger
+ \RequirePackage[color=blue,type=upperleft,showframe,hshift=2.7cm,vshift=3.5cm]{fgruler}
+ \RequirePackage[pagewise]{lineno}
+\fi
+% \end{macrocode}
+%
+% 实现交叉引用与超链接。
+% \begin{macrocode}
+\RequirePackage{hyperref}
+% \end{macrocode}
+%
+% \subsection{字体配置}
+% \begin{macro}{\buct@fontsetval}
+% 首先来设置中文的字体。在 \pkg{ctex} 宏集中的 \cs{g\_\_ctex\_fontset\_tl} 存储着选项 \opt{fontset} 的值。
+% 模板尽可能避免使用 \LaTeX 3 语法,所以先用一个 \cs{buct@fontsetval} 来保存它。
+% \begin{macrocode}
+\newcommand\buct@fontsetval{\csname g__ctex_fontset_tl\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% 根据\cs{buct@fontsetval} 的值,分别设置不同的字体。
+%
+% 在 Windows 系统下,需要对中易宋体、中易黑体开启“伪粗”和“伪斜”,并设置相关系数。
+% \begin{macrocode}
+\ifthenelse{\equal{\buct@fontsetval}{windows}}{
+ \xeCJKsetup{EmboldenFactor=2.2,SlantFactor=0.2}
+ \setCJKmainfont{SimSun}[AutoFakeBold,AutoFakeSlant]
+ \setCJKsansfont{SimHei}[AutoFakeBold]
+}
+% \end{macrocode}
+% 而在非 Windows 系统下,则由 \pkg{ctex} 宏集自动检测环境并保留其默认设置,
+% 同时警告所使用的字体与《规范》(即默认设置)存在不同。
+% \begin{macrocode}
+{
+ \ClassWarning{buctthesis}{%
+ The fonts differ to the default.\MessageBreak%
+ Use fontset = windows to correct.%
+ }
+}
+% \end{macrocode}
+%
+% \begin{macro}{\bfsong}
+% 因设置中易宋体开启“伪粗体”,使用 \cs{bfseries} 将产生加粗的效果,
+% 这与一般的 \LaTeX\ 常识是相悖的。
+% 因此模板提供了更明确的命令 \cs{bfsong}。
+% \begin{macrocode}
+\newcommand{\bfsong}{\bfseries}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bfhei}
+%
+% 对于黑体同理。
+% 此外要注意:模板将 \opt{fontset = windows} 预设的无衬线字体(微软雅黑)改为了中易黑体。
+% \begin{macrocode}
+\newcommand{\bfhei}{\sffamily\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% 对于西文正文,全部统一设置为Times New Roman,以尽可能避免格式审查问题。
+% \begin{macrocode}
+\setmainfont{Times New Roman}
+\setsansfont{Times New Roman}
+\setmonofont{Times New Roman}
+% \end{macrocode}
+%
+% 设置数学公式中的字体。
+% \begin{macrocode}
+\IfFontExistsTF{LibertinusMath-Regular.otf}{%
+ \setmathfont{latinmodern-math.otf}
+ \setmathfont[%
+ range = {%
+ up/{latin,Latin,num},
+ it/{latin,Latin,greek},
+ bfit/{latin,Latin},
+ }
+ ]{LibertinusMath-Regular.otf}
+}{}
+% \end{macrocode}
+%
+% 指定 Unicode 中带圈数字 \symbol{"2460}--\symbol{"2469} 使用中文字体。
+% \begin{macrocode}
+\xeCJKDeclareCharClass{CJK}{"2460->"2469}
+% \end{macrocode}
+%
+% 完成配置后,定义文中各元素的字体样式。
+%
+% 页眉与页脚。
+% \begin{macrocode}
+\newcommand{\buct@headfont}{\zihao{-5}\songti}
+\newcommand{\buct@footfont}{\zihao{-5}\songti}
+% \end{macrocode}
+%
+% 诚信声明(本科)或论文原创性声明和授权声明(硕博)。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newcommand{\buct@dcl@titlefont}{\zihao{3}\songti}
+ \newcommand{\buct@dcl@ideclarefont}{\zihao{4}\songti}
+\else
+ \newcommand{\buct@dcl@titlefont}{\zihao{4}\bfseries}
+ \newcommand{\buct@dcl@textfont}{\zihao{4}\mdseries}
+ \newcommand{\buct@auth@titlefont}{\zihao{4}\bfseries}
+ \newcommand{\buct@auth@textfont}{\zihao{4}\mdseries}
+\fi
+% \end{macrocode}
+%
+% 中英文摘要。
+% 这里的 \cs{CJKfamily+} 命令来自于 \pkg{xeCJK} 宏包,用于切换字体族:
+% 当参数为空时,则使用当前的 CJK 字体族,且对所有字符类生效。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newcommand{\buct@abs@titfont}{\zihao{3}\bfsong}
+ \newcommand{\buct@abs@infofont}{\zihao{5}\mdseries}
+ \newcommand{\buct@abs@absfont}{\zihao{4}\songti}
+ \newcommand{\buct@keywordsfont}{\zihao{4}\heiti\CJKfamily+{}}
+ \newcommand{\buct@abs@titfonten}{\zihao{3}\bfseries}
+ \newcommand{\buct@abs@absfonten}{\zihao{4}\songti}
+ \newcommand{\buct@keywordsfonten}{\zihao{4}\heiti\CJKfamily+{}}
+\else
+ \newcommand{\buct@abs@titfont}{\zihao{3}\heiti}
+ \newcommand{\buct@abs@absfont}{\zihao{-3}\heiti}
+ \newcommand{\buct@abs@textfont}{\zihao{4}\songti}
+ \newcommand{\buct@keywords@titfont}{\zihao{4}\heiti}
+ \newcommand{\buct@keywords@font}{\zihao{4}\songti}
+ \newcommand{\buct@abs@titfonten}{\zihao{3}\bfseries}
+ \newcommand{\buct@abs@absfonten}{\zihao{-3}\bfseries}
+ \newcommand{\buct@keywords@titfonten}{\zihao{4}\bfseries}
+ \newcommand{\buct@keywords@fonten}{\zihao{4}\mdseries}
+\fi
+% \end{macrocode}
+%
+% 中英文目录、设计图纸目录标题和目录中的各级标题。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newcommand{\buct@toc@tocfont}{\zihao{4}\mdseries\heiti}
+\else
+ \newcommand{\buct@toc@tocfont}{\zihao{3}\heiti}
+\fi
+\newcommand{\buct@toc@chapfont}{\zihao{4}\heiti}
+\newcommand{\buct@toc@secfont}{\zihao{4}\songti}
+\newcommand{\buct@toc@ssecfont}{\zihao{4}\songti}
+\newcommand{\buct@toc@sssecfont}{\zihao{-4}\songti}
+\newcommand{\buct@toc@dsgfigfont}{\buct@toc@ssecfont}
+\newcommand{\buct@toce@chapfont}{\zihao{4}\bfseries}
+% \end{macrocode}
+%
+% 正文的各级标题。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newcommand{\buct@chapfont}{\zihao{-3}\bfsong\centering}
+ \newcommand{\buct@secfont}{\zihao{-3}\bfsong\centering}
+ \newcommand{\buct@ssecfont}{\zihao{-4}\bfsong\raggedright}
+ \newcommand{\buct@sssecfont}{\zihao{-4}\songti}
+\else
+ \newcommand{\buct@chapfont}{\zihao{3}\heiti\centering}
+ \newcommand{\buct@secfont}{\zihao{4}\heiti\raggedright}
+ \newcommand{\buct@ssecfont}{\zihao{-4}\heiti\raggedright}
+ \newcommand{\buct@sssecfont}{\buct@ssecfont}
+\fi
+% \end{macrocode}
+%
+% 浮动体(包括插图和表格)内容、编号和标题。
+% \begin{macrocode}
+\newcommand{\buct@floatfont}{\zihao{5}}
+\newcommand{\buct@float@captionfont}{\zihao{5}\mdseries}
+\newcommand{\buct@float@labelfont}{\zihao{5}\mdseries}
+% \end{macrocode}
+%
+% 代码块。根据是否开启 \opt{submit} 选项,设置关键字、注释的颜色。
+% 如果未开启,关键字将会使用深蓝色,注释会使用深灰色。
+% \begin{macrocode}
+\newcommand{\buct@codefont}{\ttfamily\songti\zihao{5}}
+\newcommand{\buct@codecomfont}{%
+ \ttfamily\slshape
+ \ifbuct@submit\relax\else\color{gray!80!black}\fi}
+\newcommand{\buct@codekeyfont}{%
+ \ttfamily\bfseries
+ \ifbuct@submit\relax\else\color{blue!80!black}\fi}
+% \end{macrocode}
+%
+%
+% \subsection{常量设置}
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newcommand\buct@headtext{北京化工大学毕业设计(论文)}
+ \newcommand\buct@foottext{\thepage}
+ \newcommand\buct@dcl@title{诚信声明}
+ \newcommand\buct@dcl@ideclare{本人声明:}
+ \newcommand\buct@dcl@text{
+ 所呈交的学位论文是本人在导师的指导下独立进行研究工作所取得的成果。
+ 据我所知,除文中已经注明引用的内容外,本论文不包含任何其他个人或集体
+ 已经发表或撰写过的研究成果,也不包含为获得北京化工大学或其它教育机构
+ 的学位或证书而使用过的材料。对论文所涉及的研究工作做出贡献的其他个人
+ 和集体,均已在文中以明确方式标明或致谢。本人完全意识到本声明的法律
+ 结果由本人承担。
+ }
+ \newcommand\buct@dcl@sign{本人签名:\hspace{14em}年\hspace{2.5em}月\hspace{2.5em}日}
+ \newcommand\buct@task@title{本科生毕业设计(论文)任务书}
+ \newcommand\buct@task@pdf{任务书}
+ \newcommand\buct@task@ctitle{设计(论文)题目:}
+ \newcommand\buct@task@school{学院:}
+ \newcommand\buct@task@major{专业:}
+ \newcommand\buct@task@class{班级:}
+ \newcommand\buct@task@student{学生:}
+ \newcommand\buct@task@supervisor{指导教师(含职称):}
+ \newcommand\buct@task@msupervisor{专业负责人:}
+ \newcommand\buct@task@itema{1.设计(论文)的主要任务及目标}
+ \newcommand\buct@task@itemb{2.设计(论文)的基本要求和内容}
+ \newcommand\buct@task@itemc{3.主要参考文献}
+ \newcommand\buct@task@itemd{4.进度安排}
+ \newcommand\buct@cabstract@title{摘要}
+ \newcommand\buct@eabstract@title{ABSTRACT}
+ \newcommand\buct@ckeywords@title{关键词:}
+ \newcommand\buct@ekeywords@title{Keywords:~}
+ \newcommand\buct@ckeywords@sep{\quad}
+ \newcommand\buct@ekeywords@sep{; }
+ \newcommand\buct@supervisor@title{指导教师:}
+ \newcommand\buct@content@title{目\hspace{\ccwd}录}
+ \newcommand\buct@dfigurename{设计图纸}
+ \newcommand\buct@dfigure@content@title{设计图纸目录}
+ \newcommand\buct@foreword@title{前言}
+ \newcommand\buct@concl@title{结论}
+ \newcommand\buct@trans@title{翻译}
+ \newcommand\buct@ack@title{致谢}
+ \newcommand\buct@deno@title{符号说明}
+ \renewcommand\lstlistingname{代码}
+\else
+ \newcommand\buct@headtext{\leftmark}
+ \newcommand\buct@foottext{\thepage}
+ \newcommand\buct@dcl@title{北京化工大学学位论文原创性声明}
+ \newcommand\buct@dcl@text{
+ 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立
+ 进行研究工作所取得的成果。除文中已经注明引用的内容外,本论
+ 文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文
+ 的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
+ 本人完全意识到本声明的法律结果由本人承担。
+ }
+ \newcommand\buct@auth@title{关于论文使用授权的说明}
+ \newcommand\buct@auth@text{
+ 学位论文作者完全了解北京化工大学有关保留和使用学位论文的规定,
+ 即:研究生在校攻读学位期间论文工作的知识产权单位属北京化工大学。
+ 学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许
+ 学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,
+ 可以允许采用影印、缩印或其它复制手段保存、汇编学位论文。
+
+ $\Box$ 论文暂不公开(或保密)注释:本学位论文属于暂不公开
+ (或保密)范围,在\rule{1.5em}{.4pt}年解密后适用本授权书。
+
+ $\Box$ 非暂不公开(或保密)论文注释:本学位论文不属于暂不公开
+ (或保密)范围,适用本授权书。
+ }
+ \newcommand\buct@dcl@pdf{版权页}
+ \newcommand\buct@sign@author{作者签名:\rule{7em}{.4pt}\qquad{日期:}\rule{7em}{.4pt}}
+ \newcommand\buct@sign@supervisor{导师签名:\rule{7em}{.4pt}\qquad{日期:}\rule{7em}{.4pt}}
+ \newcommand\buct@cabstract@title{摘\hspace{\ccwd}要}
+ \newcommand\buct@eabstract@title{ABSTRACT}
+ \newcommand\buct@ckeywords@title{关键词:}
+ \newcommand\buct@ekeywords@title{KEY WORDS:~}
+ \newcommand\buct@ckeywords@sep{,}
+ \newcommand\buct@ekeywords@sep{,~}
+ \newcommand\buct@content@title{目\hspace{\ccwd}录}
+ \newcommand\buct@econtent@chapter{Chapter~}
+ \newcommand\econtentsname{Contents}
+ \newcommand\buct@deno@title{符号和缩略词说明}
+ \newcommand\buct@ack@title{致谢}
+ \newcommand\buct@eack@title{Acknowledgement}
+ \newcommand\buct@achi@title{研究成果及发表的学术论文}
+ \newcommand\buct@eachi@title{Research Results and Published Academic Papaers}
+ \newcommand\buct@resu@title{作者及导师简介}
+ \newcommand\buct@eresu@title{About the Author}
+ \newcommand\equationname{式}
+ \newcommand\buct@bitable@name{Table}
+ \newcommand\buct@bifigure@name{Figure}
+ \newcommand\buct@ebib@title{Bibliography}
+ \renewcommand\lstlistingname{代码}
+\fi
+% \end{macrocode}
+%
+% \subsection{页面设置}
+% \subsubsection{纸张与边距}
+% 使用 \pkg{geometry} 宏包设置各边距为:(单双页打印、本硕博相同)
+% 上 \SI{3.5}{cm}、下 \SI{2.6}{cm}、左右 \SI{2.7}{cm},页眉 \SI{2.4}{cm}、页脚 \SI{2}{cm}。
+% \begin{macrocode}
+\geometry{%
+ a4paper,nomarginpar,
+ top = 3.5cm, bottom = 2.6cm, left = 2.7cm, right = 2.7cm,
+ headheight = 1.1cm, footskip = 0.6cm,
+}
+% \end{macrocode}
+%
+% \subsubsection{页眉和页脚}
+% 使用 \pkg{fancyhdr} 宏包设置页眉页脚的文字和线宽。
+% \begin{macrocode}
+\fancypagestyle{plain}{%
+ \fancyhf{}
+ \fancyhead[C]{\buct@headfont\buct@headtext}
+ \fancyfoot[C]{\buct@footfont\buct@foottext}
+ \renewcommand\headrulewidth{0.6pt}
+ \renewcommand\footrulewidth{0pt}
+}
+\pagestyle{plain}
+% \end{macrocode}
+%
+% \begin{macro}{\frontmatter}
+% 修改命令 \cs{frontmatter} ,仅将页码从小写罗马字母改为大写,用于“第一章”之前的部分。
+% \begin{macrocode}
+\xpatchcmd{\frontmatter}
+ {\pagenumbering{roman}}
+ {\pagenumbering{Roman}}
+ {}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cleardoublepage}
+% 修改命令 \cs{cleardoublepage},使之能在插入一张完全空白页的同时
+% 保持页码的连续,适合章页右开的情况。
+% \begin{macrocode}
+\xpatchcmd{\cleardoublepage}
+ {\newpage}
+ {\thispagestyle{empty}\newpage}
+ {}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{前置部分}
+% \begin{macro}{\buct@pdfmark}
+% 为了方便查看,模板将前置部分编入PDF书签,实现跳转。
+% 这里定义了一个命令用于简化代码。
+% \begin{macrocode}
+\newcommand{\buct@pdfmark}[2]{%
+ \hypertarget{#2}{}
+ \pdfbookmark{#1}{#2}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{声明页}
+% \begin{macro}{\buct@makedeclare}
+% 本科为“诚信声明”,硕博为“原创性声明”与“使用授权说明”。这里定义不使用扫描页的命令。
+% \begin{macrocode}
+\newcommand{\buct@makedeclare}{
+ \ifbuct@bachelor
+ \centerline{\buct@dcl@titlefont\buct@dcl@title}\par\vspace{1em}
+ \leftline{\buct@dcl@ideclarefont\buct@dcl@ideclare}%
+ \buct@dcl@text
+ \par\vspace{2em}\hfill{\buct@dcl@sign}
+ \else{
+ \thispagestyle{empty}
+ \linespread{1.5534}
+ \setlength{\parskip}{15pt}
+ \centerline{\buct@dcl@titlefont\buct@dcl@title}
+ \par\indent\buct@dcl@textfont\buct@dcl@text
+ \par\indent\buct@sign@author\\[30pt]
+ \centerline{\buct@auth@titlefont\buct@auth@title}
+ \par\indent\buct@auth@textfont\buct@auth@text
+ \par\indent\buct@sign@author
+ \par\indent\buct@sign@supervisor
+ }\fi
+ \clearpage\normalsize
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makedeclare}
+% 定义一个带可选参数的命令 \cs{makedeclare},可选参数为扫面页的相对路径;
+% 若不加参数则使用 \cs{buct@makedeclare} 来插入文本。
+% 这里的 \opt{pages=-} 表示插入所有页面。
+% \begin{macrocode}
+\NewDocumentCommand{\makedeclare}{ o }{%
+ \buct@pdfmark{\ifbuct@bachelor\buct@dcl@title\else\buct@dcl@pdf\fi}{declare}
+ \IfNoValueTF{#1}{\buct@makedeclare}{%
+ \includepdf[pages=-]{#1}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{任务书}
+% \begin{environment}{taskbook}
+% 环境 \env{taskbook} 用于插入任务书部分,该部分排在诚信声明之后。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newenvironment{taskbook}{%
+ \cleardoublepage%
+ \buct@pdfmark{\buct@task@pdf}{taskbook}%
+ \section*{\buct@task@title}%
+ }{\clearpage}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\buct@ul}
+% “任务书”开头部分的下划线。
+% \begin{macrocode}
+ \NewDocumentCommand{\buct@ul}{ o m }{\underline{\makebox[#1][c]{#2}}}
+% \end{macrocode}
+% \end{macro}
+%
+% 排版“任务书”时,提供如下的命令和环境:
+% \begin{macro}{\taskinfo*}
+% 命令 \cs{taskinfo} 或 \cs{taskinfo*}:
+% 后者是学校样例的实现,但是由于换行、空位少造成书写不便,且不甚美观;
+% 而前者比后者多了一次换行且设置了文本和横线的对齐,适合文字较多时使用。
+% \begin{macrocode}
+ \NewDocumentCommand\taskinfo{ s }{%
+ \noindent%
+ \begin{minipage}{\textwidth}%
+ \punctstyle{plain}\linespread{1.94}%
+ \buct@task@ctitle\buct@ul[27em]{\buct@ctitle}\\[3pt]
+ \IfBooleanTF{#1}{% less lines break
+ \buct@task@school\buct@ul[10em]{\buct@school}\quad
+ \buct@task@major\buct@ul[10em]{\buct@major}\quad
+ \buct@task@class\buct@ul[5em]{\buct@class}\\[3pt]
+ \buct@task@student\buct@ul[5em]{\buct@cauthor}\quad
+ \buct@task@supervisor\buct@ul[6em]{\buct@supervisor}\quad
+ \buct@task@msupervisor\buct@ul[4em]{\buct@msupervisor}%
+ }{% more lines break
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\taskinfo}
+% 多了一次换行,相比之下会更加整齐一些。
+% \begin{macrocode}
+ \buct@task@school\buct@ul[15em]{\buct@school}\qquad
+ \buct@task@major\buct@ul[13em]{\buct@major}\\[3pt]
+ \buct@task@class\buct@ul[15em]{\buct@class}\qquad
+ \buct@task@student\buct@ul[13em]{\buct@cauthor}\\[3pt]
+ \buct@task@supervisor\buct@ul[8em]{\buct@supervisor}\qquad
+ \buct@task@msupervisor\buct@ul[10em]{\buct@msupervisor}%
+ }
+ \end{minipage}\vspace{1.5em}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% 命令 \cs{taskitem} :用于排版任务书中“设计(论文)的主要任务及目标”等四项标题。
+% 该命令只能使用四次,超过则会报错且给予修正提示。
+% \begin{macrocode}
+ \newcounter{taskitemcnt}
+ \newcommand{\buct@taskitem}{%
+ \stepcounter{taskitemcnt}%
+ \ifcase\value{taskitemcnt}\relax\or%
+ {\buct@task@itema}\or%
+ {\buct@task@itemb}\or%
+ {\buct@task@itemc}\or%
+ {\buct@task@itemd}\else%
+ \ClassError{buctthesis}{Too many \protect\taskitem\space used}%
+ {Keep \protect\taskitem\space no more than 4 times.}\fi
+ }
+% \end{macrocode}
+% \begin{macro}{\taskitem}
+% 这里相比学校的样例,段前增加了一点空白。
+% \begin{macrocode}
+ \newcommand{\taskitem}{\vspace{6pt}\noindent\buct@taskitem\par}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{environment}{bibenumerate}
+% 定义 \env{bibenumerate} 环境:可以生成带有方括号、阿拉伯数字的列表。
+% 该命令可用于本科的“任务书”中罗列主要参考文献,
+% 亦可用于硕博“研究成果及发表的学术论文”中罗列发表的论文与专利。
+% \begin{macrocode}
+\newenvironment{bibenumerate}{%
+ \begin{enumerate}[label={[\arabic*]},leftmargin=3em]
+}{\end{enumerate}}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{摘要}
+% \begin{environment}{cabstract}
+% 中文摘要,使用 \env{cabstract} 环境。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newenvironment{cabstract}{%
+ \cleardoublepage
+ \buct@pdfmark{\buct@cabstract@title}{cabstract}
+ \begin{center}
+ \buct@abs@titfont\buct@ctitle
+ \vskip22pt
+ \buct@abs@infofont\buct@cauthor\quad%
+ \buct@class\quad\buct@studentid\quad%
+ \buct@supervisor@title\buct@supervisor%
+ \vskip22pt
+ \buct@abs@absfont\buct@cabstract@title
+ \end{center}\par\vspace{18pt}
+ }{\vskip1em\noindent\buct@keywordsfont\buct@ckeywords@title\buct@ckeywords}
+\else
+ \newenvironment{cabstract}{%
+ \cleardoublepage
+ \buct@pdfmark{\buct@cabstract@title}{cabstract}\markboth{\buct@cabstract@title}{}
+ \begin{center}
+ \buct@abs@titfont\buct@ctitle
+ \vskip24pt
+ \buct@abs@absfont\buct@cabstract@title
+ \end{center}\par\vspace{12pt}
+ \buct@abs@textfont
+ }{\vskip24pt%
+ \noindent\buct@keywords@titfont\buct@ckeywords@title\buct@keywords@font\buct@ckeywords}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{eabstract}
+% 英文摘要,使用 \env{eabstract} 环境。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newenvironment{eabstract}{%
+ \cleardoublepage%
+ \buct@pdfmark{\buct@eabstract@title}{abstracten}
+ \begin{center}
+ \buct@abs@titfonten\buct@etitle\vskip22pt
+ \buct@abs@absfonten\buct@eabstract@title
+ \end{center}
+ \par\vspace{22pt}
+ }{\vskip1em\noindent\buct@keywordsfonten \buct@ekeywords@title\buct@ekeywords}
+\else
+ \newenvironment{eabstract}{%
+ \cleardoublepage%
+ \buct@pdfmark{\buct@eabstract@title}{eabstract}\markboth{\buct@eabstract@title}{}
+ \begin{center}
+ \setlength{\leftskip}{3em plus 1em minus .5em}
+ \setlength{\rightskip}{3em plus 1em minus .5em}
+ \buct@abs@titfonten\buct@etitle\vskip76pt
+ \buct@abs@absfonten\buct@eabstract@title
+ \end{center}\par\vspace{40pt}
+ \buct@abs@textfont
+ }{\vskip48pt%
+ \noindent\buct@keywords@titfonten\buct@ekeywords@title\buct@keywords@fonten\buct@ekeywords}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{目录}
+% 正文中三级小节(subsubsubsection)不予编号;
+% 本科:编目层次至小节(subsection),硕博:编目层次至小小节(subsubsection)。
+% \begin{macrocode}
+\setcounter{secnumdepth}{3}
+\ifbuct@bachelor
+ \setcounter{tocdepth}{2}
+\else
+ \setcounter{tocdepth}{3}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\tableofcontents}
+% 重定义中文目录标题样式。该部分编入书签,同时在目录中不出现“目录”项。
+% \begin{macrocode}
+\renewcommand\tableofcontents{%
+ \cleardoublepage
+ \pdfbookmark{\contentsname}{toc}%
+ \chapter*{\buct@toc@tocfont\buct@content@title}%
+ \ifbuct@bachelor\relax\else\markboth{\buct@content@title}\fi
+ \@starttoc{toc}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\tableofcontentsEN}
+% 定义英文目录,条目格式与中文目录相同。
+% \begin{macrocode}
+\ifbuct@bachelor\relax\else
+ \newcommand\tableofcontentsEN{%
+ \cleardoublepage
+ \pdfbookmark{\econtentsname}{toce}%
+ \chapter*{%
+ \em\econtentsname%
+ \ifbuct@bachelor\relax\else\markboth{\econtentsname}\fi%
+ }%
+ \@starttoc{toce}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\buct@addengcontents}
+% 加入英文目录项。本命令依次接受 3 个参数:目录层级、标题文本、所使用的字体和(或)前缀字符。
+% \begin{macrocode}
+ \newcommand\buct@addengcontents[3]{%
+ \addcontentsline{toce}{#1}{\protect\numberline{#3\@nameuse{the#1}}#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\echapter}
+% \begin{macro}{\esection}
+% \begin{macro}{\esubsection}
+% \begin{macro}{\esubsubsection}
+% 定义将不同层次标题加入英文目录中的命令。
+% \begin{macrocode}
+ \newcommand\echapter[1]{\buct@addengcontents{chapter}{#1}{\buct@toce@chapfont{}\buct@econtent@chapter}}
+ \newcommand\esection[1]{\buct@addengcontents{section}{#1}{}}
+ \newcommand\esubsection[1]{\buct@addengcontents{subsection}{#1}{}}
+ \newcommand\esubsubsection[1]{\buct@addengcontents{subsubsection}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bichapter}
+% \begin{macro}{\bisection}
+% \begin{macro}{\bisubsection}
+% \begin{macro}{\bisubsubsection}
+% 类似 \cs{bicaption} 可接受两个参数来生成双语图标注一样,定义 \cs{bichapter} 命令从而更加方便一些。
+% \emph{以下定义的命令在使用时不可带星号。}
+% \begin{macrocode}
+ \NewDocumentCommand{\bichapter}{ o m m }{\chapter[#1]{#2}\echapter{#3}}
+ \NewDocumentCommand{\bisection}{ o m m }{\section[#1]{#2}\esection{#3}}
+ \NewDocumentCommand{\bisubsection}{ o m m }{\subsection[#1]{#2}\esubsection{#3}}
+ \NewDocumentCommand{\bisubsubsection}{ o m m }{\subsubsection[#1]{#2}\esubsubsection{#3}}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% 使用 \pkg{titletoc} 宏包的 \cs{titlecontents} 命令来设置目录项格式。
+% 对于硕博论文而言,以下设置会同时影响中文和英文目录。
+% \cs{titlecontents} 的语法为:
+%
+% \begin{syntax}{titlecontents}
+% \marg{标题层级}\oarg{左侧间距}
+%
+% \marg{上间距}
+% \marg{标题格式}\marg{引导线与页码}\oarg{下间距}
+% \end{syntax}
+%
+% \begin{macrocode}
+\ifbuct@bachelor
+ \titlecontents{chapter}[0em]
+ {\buct@toc@chapfont\vspace{3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[.4em]{$\cdot$}\bfseries\contentspage}
+ \titlecontents{section}[2em]
+ {\buct@toc@secfont\vspace{-3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[.5em]{$\cdot$}\contentspage}
+ \titlecontents{subsection}[5em]
+ {\buct@toc@ssecfont\vspace{-3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[1em]{$\cdot$}\contentspage}
+\else
+ \titlecontents{chapter}[0em]
+ {\buct@toc@chapfont\vspace{3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[.25em]{$\cdot$}\bfseries\contentspage}
+ \titlecontents{section}[2.25em]
+ {\buct@toc@secfont\vspace{-3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[.5em]{$\cdot$}\contentspage}
+ \titlecontents{subsection}[5em]
+ {\buct@toc@ssecfont\vspace{-3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[1em]{$\cdot$}\contentspage}
+ \titlecontents{subsubsection}[8.5em]
+ {\buct@toc@sssecfont\vspace{-3pt}}
+ {\thecontentslabel\quad}{}
+ {\titlerule*[1em]{$\cdot$}\contentspage}
+\fi
+% \end{macrocode}
+%
+% 通过重定义 \pkg{natbib} 宏包的 \cs{bibsection},实现参考文献的编目。
+% \begin{macrocode}
+\renewcommand{\bibsection}{
+ \chapter*{\bibname}
+ \addcontentsline{toc}{chapter}{\bibname}
+ \ifbuct@bachelor\relax\else
+ \addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@ebib@title}
+ \markboth{\bibname}
+ \fi
+}
+% \end{macrocode}
+%
+% 对于本科的设计图纸的两种编目方式:一是加入主目录,另一种是单独生成目录。
+%
+% \begin{macro}{\dcaption}
+% 定义命令 \cs{dcaption},在 \cs{caption} 的基础上将设计图纸加入主目录。
+% 模板设置“设计图纸”的目录级别和小节相同,但却没有小节的编号。
+% 为保证在目录中的文字对齐,所以增加其缩进。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newcommand{\dcaption}[1]{%
+ \caption{#1}\addcontentsline{toc}{subsection}{%
+ \hspace{2.5em}\buct@dfigurename~\thefigure\hspace{1em}{#1}%
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buct@listof}
+% 另外新定义“设计图纸目录”。如果需要单独编目,可使用 \cs{listofdesignfigures} 命令生成。
+% 这里按照 \pkg{float}宏包的 \cs{listof} 命令来定义我们的 \cs{buct@listof} 命令。
+% \begin{macrocode}
+ \newcommand{\buct@listof}[2]{%
+ \xpatchcmd{\@dottedtocline}{\hbox{.}}{\hbox{$\cdot$}}{}{}
+ \renewcommand{\@dotsep}{1.7}%
+ \@ifundefined{ext@#1}{\float@error{#1}}{%
+ \@namedef{l@#1}{\@dottedtocline{1}{0em}{2em}}
+ \float@listhead{\buct@toc@tocfont{}#2}%
+ \begingroup\setlength{\parskip}{\z@}%
+ \buct@toc@dsgfigfont\@starttoc{\@nameuse{ext@#1}}%
+ \endgroup%
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\listofdesignfigures}
+% “设计图纸目录”跟主目录相似。
+% \begin{macrocode}
+ \newcommand{\listofdesignfigures}{%
+ \cleardoublepage%
+ \buct@pdfmark{\buct@dfigure@content@title}{dfigure}%
+ \buct@listof{dfigure}{\buct@dfigure@content@title}
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{前言}
+% \begin{environment}{foreword}
+% 仅本科。定义环境 \env{foreword} 插入前言部分。
+% \begin{macrocode}
+\newenvironment{foreword}{%
+ \cleardoublepage
+ \buct@pdfmark{\buct@foreword@title}{foreword}
+ \chapter*{\buct@foreword@title}
+}{}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{主文档部分}
+% \subsubsection{行距设置}
+% 计算公式:
+% \[
+% 1.2 \times \meta{LineSpread} \times \meta{FontSize} = \meta{BaselineSkip}
+% \]
+% 其中,正文的 \meta{FontSize} 为小四号,而 \meta{BaselineSkip} 取
+% 本科行距 22 磅、硕博 20 磅,故可求得 \meta{LineSpread}。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \linespread{1.5221}
+\else
+ \linespread{1.3837}
+\fi
+% \end{macrocode}
+%
+% \subsubsection{标题格式}
+% \begin{macrocode}
+\ifbuct@bachelor
+ \ctexset{%
+ chapter = {%
+ name = {第,章},
+ number = \arabic{chapter},
+ format = \buct@chapfont,
+ beforeskip = 12 pt,
+ afterskip = 32 pt,
+ fixskip = true,
+ aftername = \qquad,
+ },
+ section = {%
+ name = {第,节},
+ format = \buct@secfont,
+ aftername = \quad,
+ beforeskip = 29 pt,
+ afterskip = 32 pt,
+ fixskip = true,
+ },
+ subsection = {%
+ format = \buct@ssecfont,
+ aftername = \quad,
+ beforeskip = 3 pt,
+ afterskip = 3 pt,
+ },
+ subsubsection = {%
+ name = {(,)},
+ format = \buct@sssecfont,
+ number = \arabic{subsubsection},
+ beforeskip = 3 pt,
+ afterskip = 3 pt,
+ aftername = \hspace{0.5em},
+ indent = 0.5em,
+ },
+ }
+\else
+ \ctexset{%
+ chapter = {%
+ name = {第,章},
+ number = \chinese{chapter},
+ format = \buct@chapfont,
+ beforeskip = 12 pt,
+ afterskip = 46 pt,
+ fixskip = true,
+ aftername = \qquad,
+ },
+ section = {%
+ format = \buct@secfont,
+ aftername = \quad,
+ beforeskip = 26 pt,
+ afterskip = 28 pt,
+ fixskip = true,
+ },
+ subsection = {%
+ format = \buct@ssecfont,
+ beforeskip = 3 pt,
+ afterskip = 3 pt,
+ },
+ subsubsection = {%
+ format = \buct@sssecfont,
+ beforeskip = 3 pt,
+ afterskip = 3 pt,
+ },
+ }
+\fi
+% \end{macrocode}
+%
+% \subsubsection{列表环境}
+% \begin{environment}{enumerate}
+% \begin{environment}{itemize}
+% \begin{environment}{description}
+% 使用 \pkg{enumitem} 宏包分别设置编号列表、无编号列表、描述列表环境的间距。
+% 这里将三种列表默认增加的垂直间距全部清除,即各行间距与正文行间距相同,以符合中文习惯。
+%
+% 如果一级列表环境作为标题(对应《本科规范》中的五级标题,即带圈序号),
+% 则不设置加粗、不增加段间距。由于列表间的垂直间距减小了,所以
+% 相应地稍微调小列表序号和文字之间的距离,使得文字更紧凑。
+%
+% 另外,一级编号列表环境的序号改为 \pkg{pifont} 宏包提供的带圈数字,
+% 二级及之后的列表、无编号列表保持默认设置。
+% \begin{macrocode}
+\setlist{%
+ leftmargin = 2em,
+ nosep,
+}
+\setlist[enumerate,1]{%
+ label = \lower 0.1em\hbox{\large{\ding{\numexpr191+\value{enumi}}}},
+ labelsep = 2pt,
+}
+\setlist[enumerate,2]{%
+ labelsep = 6pt,
+}
+\setlist[description]{%
+ labelsep = 1em,
+}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% \subsubsection{数学类}
+% 使用 \pkg{unicode-math} 宏包配置数学标准字形、粗体字形,并设置偏微分算子为直立体。
+% \begin{macrocode}
+\unimathsetup{
+ math-style = ISO,
+ bold-style = ISO,
+ partial = upright,
+}
+% \end{macrocode}
+%
+% 修改 \cs{mathbb},使得字母显示正确。
+% \begin{macrocode}
+\let\mathbb\relax
+\DeclareMathAlphabet{\mathbb}{U}{msb}{m}{n}%
+% \end{macrocode}
+%
+% 使用 \pkg{amsthm} 宏包来进行定理类环境的格式控制,并预设如下定理类环境。编号跨章重置计数。
+% \begin{macrocode}
+\newtheoremstyle{buctthm}% name
+{3pt}% Space above
+{3pt}% Space below
+{}% Body font
+{}% Indent amount
+{\bfseries}% Theorem head font
+{:}% Punctuation after theorem head
+{.5em}% Space after theorem head
+{}% Theorem head spec
+\theoremstyle{buctthm}
+\newtheorem{axiom}{公理}[chapter]
+\newtheorem{theorem}{定理}[chapter]
+\newtheorem{corollary}{推论}[chapter]
+\newtheorem{remark}{注解}[chapter]
+\newtheorem{assumption}{假设}[chapter]
+\newtheorem{definition}{定义}[chapter]
+\newtheorem{property}{性质}[chapter]
+\newtheorem{proposition}{命题}[chapter]
+\newtheorem{lemma}{引理}[chapter]
+% \end{macrocode}
+%
+% \begin{environment}{proof}
+% 按照 \pkg{amsthm} 宏包说明重定义 \env{proof}:
+% \begin{macrocode}
+\renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \normalfont\topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item\relax
+ {#1\@addpunct{.}}\hspace\labelsep\ignorespaces
+}{\popQED\endtrivlist\@endpefalse}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{部分宏包汉化设置}
+% 对 \pkg{siunitx} 宏包汉化处理,并将连接符改为“$\sim$”,符合中文习惯。
+% \begin{macrocode}
+\sisetup{%
+ list-final-separator = { 和 },
+ list-pair-separator = { 和 },
+ range-phrase = {\,$\sim$\,},
+}
+% \end{macrocode}
+%
+% \subsubsection{浮动体}
+% \begin{environment}{dfigure}
+% 本科:
+% 使用 \pkg{float} 宏包新定义浮动体环境 \env{dfigure},用于排版设计图纸。
+% 设计图纸与普通插图的区别在于:
+% \begin{itemize}
+% \item 标签不同,如:“设计图纸 1-1” 与 “图 1-1”;
+% \item 编号相互独立;
+% \item 仅设计图纸编入目录,且此目录独立于主目录。
+% \end{itemize}
+%
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newfloat{dfigure}{htbp}{lodf}[chapter]
+ \floatname{dfigure}{\buct@dfigurename}
+% \end{macrocode}
+% \end{environment}
+%
+% 硕博:
+% 使用 \pkg{bicaption} 宏包设置双语标题,其中第二语言为英语。
+%
+% \begin{macrocode}
+\else
+ \DeclareCaptionOption{english}[]{
+ \renewcommand\figurename{\buct@bifigure@name}
+ \renewcommand\tablename{\buct@bitable@name}
+ }
+ \captionsetup[bi-second]{english}
+\fi
+% \end{macrocode}
+%
+% 《研究生规范》中规定表格单元格里的字号为五号,而未规定行距,这里保留前设的伸缩因子。
+% 其中 \cs{AtBeginEnvironment} 是 \pkg{etoolbox} 宏包中的命令,可给环境打补丁。
+%
+% \begin{macrocode}
+\ifbuct@bachelor\relax\else
+ \AtBeginEnvironment{tabular}{\buct@floatfont}
+ \AtBeginEnvironment{tabularx}{\buct@floatfont}
+\fi
+% \end{macrocode}
+%
+% 对于 \pkg{longtable} 宏包的设置则稍有不同:
+% 在“符号说明表”中我们嵌套了 \env{longtable} 环境,但其中的字号仍应为小四号。
+% 因此这里需要保留原先的定义。
+% \begin{macrocode}
+\ifbuct@bachelor\relax\else
+ \let\oldlongtable\longtable
+ \let\endoldlongtable\endlongtable
+ \def\longtable{\zihao{5}\oldlongtable}
+ \AtEndEnvironment{longtable}{\normalsize}
+\fi
+% \end{macrocode}
+%
+% 设置插图的文件路径。
+% \begin{macrocode}
+\graphicspath{{figure/}}
+% \end{macrocode}
+%
+% 使用 \pkg{caption} 宏包重定义图、表等浮动体的标签样式。
+%
+% \begin{macrocode}
+\renewcommand{\captionfont}{\buct@float@captionfont}
+\renewcommand{\captionlabelfont}{\buct@float@labelfont}
+\DeclareCaptionLabelSeparator{capspace}{\quad}
+\captionsetup{labelsep=capspace}
+\captionsetup[table]{%
+ position = top,
+ aboveskip = 0.5em,
+ belowskip = 0.5em,
+}
+\captionsetup[figure]{%
+ position = bottom,
+ aboveskip = 0.5em,
+ belowskip = -0.5em,
+}
+\captionsetup[dfigure]{%
+ position = bottom,
+ aboveskip = 1em,
+ belowskip = 1em,
+}
+% \end{macrocode}
+%
+% 更改图、表、公式和代码的编号格式。其中重定义 \cs{thelstlisting} 须在 \cs{AtBeginDocument} 中。
+% \begin{macrocode}
+\AtBeginDocument{%
+ \renewcommand{\thesubtable}{(\alph{subtable})}
+ \renewcommand{\thetable}{\thechapter-\arabic{table}}
+ \renewcommand{\thesubfigure}{(\alph{subfigure})}
+ \renewcommand{\thefigure}{\thechapter-\arabic{figure}}
+ \ifbuct@bachelor
+ \renewcommand{\thedfigure}{\thechapter-\arabic{dfigure}}
+ \renewcommand{\theequation}{\thechapter-\arabic{equation}}
+ \else
+ \renewcommand{\eqref}[1]{\equationname~\textup{(\ref{#1})}}
+ \renewcommand{\theequation}{\thechapter-\arabic{equation}}
+ \fi
+ \renewcommand{\thelstlisting}{\thechapter-\arabic{lstlisting}}
+}
+% \end{macrocode}
+%
+% \subsubsection{文献引用}
+% \begin{macro}{\inlinecite}
+% 这里定义的 \cs{inlinecite} 适用于行间引用,依赖于 \pkg{natbib} 宏包里的命令。
+% \begin{macrocode}
+\DeclareRobustCommand\inlinecite{\@inlinecite}
+\def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{数学公式}
+% 硕博公式需要加入点线连接公式与编号。这里通过重定义 \file{source2e}
+% 中的 \env{equation} 环境,故仅在 \env{equation} 环境中生效。
+% \begin{macrocode}
+\ifbuct@bachelor\relax\else
+ \xpatchcmd{\dotfill}{.44em}{.3em}{}{}
+ \renewenvironment{equation}{
+ \@beginparpenalty\predisplaypenalty
+ \@endparpenalty\postdisplaypenalty
+ \refstepcounter{equation}%
+ \trivlist \item[]\leavevmode
+ \hb@xt@\linewidth\bgroup $\m@th% $
+ \displaystyle\hfill}
+ {$\;\dotfill % $
+ \displaywidth\linewidth\hbox{\@eqnnum}%
+ \egroup
+ \endtrivlist}
+\fi
+% \end{macrocode}
+%
+% \subsubsection{代码块}
+% \begin{macrocode}
+\lstset{%
+ aboveskip = 0.5em,
+ belowskip = 0.5em,
+ tabsize = 4,
+ basicstyle = \buct@codefont,
+ frame = single,
+ basewidth = {.5em,.4em},
+ xleftmargin = 1.5em,
+ xrightmargin = 1.5em,
+ commentstyle = \buct@codecomfont,
+ keywordstyle = \buct@codekeyfont,
+ backgroundcolor = \color{lightgray!10},
+ showtabs = false,
+ showspaces = false,
+ showstringspaces = false,
+ captionpos = t,
+ breaklines = true,
+ numbers = left,
+ numberstyle = \tiny,
+ numbersep = 6 pt,
+ stepnumber = 1,
+ extendedchars = false,
+ escapechar = {@*},
+}
+% \end{macrocode}
+%
+% \subsection{后置部分}
+% 与前言不同的是,这几部分模板默认编入目录。
+%
+% \begin{environment}{conclusion}
+% 结论,仅本科。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \newenvironment{conclusion}{%
+ \chapter*{\buct@concl@title}
+ \addcontentsline{toc}{chapter}{\buct@concl@title}
+ }{}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{translation}
+% 翻译,仅本科。
+% \begin{macrocode}
+ \newenvironment{translation}{%
+ \chapter*{\buct@trans@title}
+ \addcontentsline{toc}{chapter}{\buct@trans@title}
+ }{}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\appendix}
+% 英文目录中,修改“附录”的英文前缀字符,仅硕博。
+% \begin{macrocode}
+\else
+ \g@addto@macro\appendix{\def\buct@econtent@chapter{Appendix~}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{achievements}
+% 研究成果及发表的学术论文,仅硕博。
+% \begin{macrocode}
+ \newenvironment{achievements}{%
+ \cleardoublepage
+ \chapter*{\buct@achi@title}
+ \markboth{\buct@achi@title}{}
+ \addcontentsline{toc}{chapter}{\buct@achi@title}
+ \addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@eachi@title}
+ }{}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{resume}
+% 作者及导师简介,仅硕博。
+% \begin{macrocode}
+ \newenvironment{resume}{%
+ \cleardoublepage
+ \chapter*{\buct@resu@title}
+ \markboth{\buct@resu@title}{}
+ \addcontentsline{toc}{chapter}{\buct@resu@title}
+ \addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@eresu@title}
+ }{}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{acknowledgement}
+% 致谢。
+% \begin{macrocode}
+\newenvironment{acknowledgement}{%
+ \chapter*{\buct@ack@title}
+ \ifbuct@bachelor\relax\else
+ \markboth{\buct@ack@title}{}
+ \addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@eack@title}
+ \fi
+ \addcontentsline{toc}{chapter}{\buct@ack@title}
+}{}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{符号说明表}
+% \begin{environment}{denotation}
+% 关于章节编目同前。这里使用一个可跨页的无线长表格。
+% 为了防止符号较长,这里定义的环境需要一个可选参数用于在必要时控制第二列列宽。
+% \begin{macrocode}
+\NewDocumentEnvironment{denotation}{ O{10cm} +b }{%
+ \cleardoublepage
+ \chapter*{\buct@deno@title}%
+ \ifbuct@bachelor
+ \addcontentsline{toc}{chapter}{\buct@deno@title}
+ \else
+ \buct@pdfmark{\buct@deno@title}{denotation}
+ \markboth{\buct@deno@title}{}
+ \fi
+ \vspace{-1em}%
+ \begin{oldlongtable}[c]{l@{\extracolsep{3em}}p{#1}}
+ #2
+}{\end{oldlongtable}}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{参考文献}
+% 一方面,主文件中调用了符合要求的参考文献格式控制文件,使参考文献章节的格式规范化;
+% 另一方面,调用 \pkg{gbt7714}(和 \pkg{natbib} )宏包时已经填入相关选项,
+% 在文章中引用文献的格式也符合了要求。这里将本科模板罗列的各条参考文献之间距离稍微调小一些,而将硕博模板字号设为 5 号,行距 20 磅。
+% \begin{macrocode}
+\ifbuct@bachelor
+ \setlength{\bibsep}{3pt}
+\else
+ \setlength{\bibsep}{0pt}
+ \renewcommand\bibfont{\linespread{1.5814}\zihao{5}}
+\fi
+% \end{macrocode}
+%
+% \subsection{其他设置}
+% \subsubsection{强调}
+% \begin{macro}{\emph}
+% 中西文统一使用粗体。
+% \begin{macrocode}
+\renewcommand{\emph}[1]{\textbf{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\em}
+% \begin{macrocode}
+\renewcommand{\em}{\bfsong}
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{脚注}
+% \begin{macro}{\footnote}
+% 使用带圈圈的脚注。尽管 \LaTeX\ 自带了 \cs{textcircled} 命令,但是效果并不如意。
+% 为了和一级列表环境的序号区分,这里使用 \pkg{tikz} 宏包来绘制一个围着阿拉伯数字脚注的圈。
+% 为了突出标号以便更加明确、清楚地显示,对编号设置了悬挂缩进。
+% \begin{macrocode}
+\newcommand{\buct@ftntcircled}[1]{%
+ \lower 0.15em\hbox{%
+ \tikz\draw (0pt, 0pt) circle (0.4 em) node {#1};%
+ }%
+}
+\renewcommand\thefootnote{\protect\buct@ftntcircled{\tiny\arabic{footnote}}}
+\renewcommand{\@makefntext}[1]{%
+ \setlength{\leftskip}{1.5\ccwd}%
+ \noindent\llap{\lower 1pt \hbox{\@thefnmark}\,}#1%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{超链接}
+% 实现PDF书签和交叉引用的跳转。
+% \begin{macrocode}
+\urlstyle{same}
+\hypersetup{%
+ colorlinks = true,
+ bookmarksnumbered = true,
+ pdfhighlight = /N,
+ breaklinks = true,
+ citecolor = cyan,
+}
+% \end{macrocode}
+%
+% 根据模板文档类是否打开 \opt{submit} 选项,设置是否关闭超链接颜色。
+% \begin{macrocode}
+\ifbuct@submit
+ \hypersetup{hidelinks}
+\fi
+% \end{macrocode}
+%
+% 根据模板文档类是否打开 \opt{debugger} 选项,设置是否标注行号。
+% \begin{macrocode}
+\ifbuct@debugger
+ \AtBeginDocument{\linenumbers}
+\fi
+%</class>
+% \end{macrocode}
+%
+%
+% \subsection{封面}
+% 由于学校会统一印制封面,这里仅提供本科和硕博的一个参考实现。
+% 并且由于学校所给的参考封面每年都有细微的变动,由本模板所生成的封面上文字间距不能保证与参考一致。
+% 还请留心。
+% \begin{macrocode}
+%<*cover>
+\ProvidesClass{buctcover}[2022/06/21 Cover Maker for BUCTthesis]
+% \end{macrocode}
+% 和论文本体一样,目前只支持 \XeLaTeX\ 引擎编译封面,其余设置基本一致。
+% \begin{macrocode}
+\RequirePackage{ifxetex}
+\RequireXeTeX
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+ family = buct,
+ prefix = buct@,
+ setkeys = \kvsetkeys,
+}
+\newif\ifbuct@bachelor\buct@bachelorfalse
+\newif\ifbuct@master\buct@masterfalse
+\newif\ifbuct@doctor\buct@doctorfalse
+\define@key{buct}{type}{\expandafter\csname buct@#1true\endcsname}
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
+\ProcessKeyvalOptions*
+\PassOptionsToPackage{quiet}{xeCJK}
+\LoadClass[zihao=-4]{ctexbook}
+% \end{macrocode}
+%
+% 封面的 \opt{type} 对于三种学位类型都能支持,但是必须选择其中的一项。
+% \begin{macrocode}
+\ifbuct@bachelor\relax\else
+ \ifbuct@master\relax\else
+ \ifbuct@doctor\relax\else
+ \ClassError{buctthesis}{%
+ Specified thesis type is obligatory: \MessageBreak%
+ type = [ bachelor | master | doctor ]%
+ }{}
+\fi\fi\fi
+% \end{macrocode}
+%
+% 定义用于定义论文相关信息的内部命令。
+% 与 \cls{buctthesis} 不同的是:这里仅能通过 \cs{coversetup} 定义论文信息。
+% 其中 \opt{titleA} 和 \opt{titleB} 分别用于封面标题的第一行与第二行。
+% 由于可能存在只用一行就能写完标题的情况,所以这里不设置后者的默认文本。
+% \begin{macrocode}
+\newcommand{\coversetup}[1]{\kvsetkeys{buct}{#1}}
+\DeclareStringOption[班级未定义]{class}
+\DeclareStringOption[学号未定义]{studentid}
+\DeclareStringOption[题目首行未定义]{titleA}
+\DeclareStringOption{titleB}
+\DeclareStringOption[专业未定义]{major}
+\DeclareStringOption[作者未定义]{author}
+\DeclareStringOption[导师未定义]{supervisor}
+\DeclareStringOption[\the\year-\two@digits{\month}-\two@digits{\day}]{date}
+% \end{macrocode}
+%
+% 页边距设置。经过测量,各边距值比正文部分都要小;本科暂与硕博设置一致。
+% \begin{macrocode}
+\RequirePackage[a4paper,nomarginpar,
+ top = 2.1cm, bottom = 2.2cm, left = 2cm, right = 2cm,
+ headheight = 0cm, footskip = 0cm
+]{geometry}
+% \end{macrocode}
+%
+% 载入 \pkg{xeCJKfntef} 宏包。在 \pkg{ctex} 宏集 2.5 版本之后需要手动载入。
+% \begin{macrocode}
+\RequirePackage{xeCJKfntef}
+% \end{macrocode}
+%
+% 以下宏包分别用于排版表格、插图,计算标题文本长度,划本科封面线条,
+% 判断语句和添加封面的 PDF 书签。
+% \pkg{textpos} 配合 \pkg{tikz},这样就能在页面的任何地方作画了。
+% \begin{macrocode}
+\RequirePackage{array,graphicx,calc,tikz,xifthen,hyperref}
+\RequirePackage[absolute,overlay]{textpos}
+% \end{macrocode}
+%
+% 清空页眉页脚。
+% \begin{macrocode}
+\pagestyle{empty}
+% \end{macrocode}
+%
+% 字体配置。
+%
+% 开启伪粗体,并且应比正文更粗一些。
+% \begin{macrocode}
+\xeCJKsetup{EmboldenFactor=2.3}
+% \end{macrocode}
+%
+% 各种字体的声明与设置。分别是:中易宋体、中易黑体、华文行楷、中易楷体、方正小标宋和方正大标宋。
+% 后二者需前往方正字库网站下载。
+% \begin{macrocode}
+\setCJKmainfont{SimSun}[AutoFakeBold]
+\setCJKsansfont{SimHei}[AutoFakeBold]
+\newCJKfontfamily[xingkai]\xingkai{STXingkai}
+\newCJKfontfamily[zhkai] \zhkai {KaiTi} [AutoFakeBold]
+\newCJKfontfamily[xbsong] \xbsong {FZXiaoBiaoSong-B05S}
+\newCJKfontfamily[dbsong] \dbsong {FZDaBiaoSong-B06S}
+% \end{macrocode}
+% 设置西文字体。事实上该字体这只会作用于本科封面的数字日期,除此之外的数字(如学号)使用中文字体。
+% \begin{macrocode}
+\setmainfont{Times New Roman}
+% \end{macrocode}
+%
+% 标尺,用于调试。手动取消注释来开启。
+% \begin{macrocode}
+% \usepackage[unit=cm,type=upperleft,hshift=0cm,vshift=0cm]{fgruler}
+% \end{macrocode}
+%
+% \begin{macro}{\buct@title@ul}
+% 定义下划线命令,这里利用了 \pkg{calc} 宏包的 \cs{widthof} 命令,
+% 取 \cs{buct@titleA} (即首行标题)的长度,用以固定下划线的长度。
+% 文本末尾加一个 \cs{enspace} 会让横线右端稍长于最后一个文字,显得更美观一些。
+% \begin{macrocode}
+\newcommand\buct@title@ul[1]{%
+ \CJKunderline{\makebox[\widthof{\buct@titleA\enspace}][l]{#1}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buct@major@ul}
+% 但是对于本科封面而言,“专业”“学生”“指导教师”与“题目”之间有一大段空白,
+% 可以看做相互独立的表格。因此,这里我们让横线的宽度取所填入专业文本的宽度。
+% 使用 \cs{quad} 会让横线右端长于最后一个文字更多一点,更贴合封面的参考样例。
+% \begin{macrocode}
+\newcommand\buct@major@ul[1]{%
+ \CJKunderline{\makebox[\widthof{\buct@major\quad}][c]{#1}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buct@format@date}
+% 日期格式处理,将输入的 \cs{buct@date} 拆分。
+% \begin{macrocode}
+\newcommand\buct@format@date[1]{%
+ \edef\buct@@date{\buct@date}%
+ \def\buct@@process@date##1-##2-##3\@nil{%
+ #1{##1}{##2}{##3}%
+ }%
+ \expandafter\buct@@process@date\buct@@date\@nil
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \cs{@zhdate} 命令接受三个数字。
+% 本科的日期要求比较简单,直接输出对应的数字即可。
+% 但是样例所给的数字前后有一些空白,我们用 \cs{makebox} 来定格它。
+% \begin{macrocode}
+\newcommand\@zhdate[3]{%
+ \bfseries\zhkai
+ \ifbuct@bachelor
+ \zihao{4}
+ #1年\makebox[1.5em]{#2}月\makebox[1.5em]{#3}日
+% \end{macrocode}
+%
+% 如果是硕博,则将“年”转换为中文数字串,“月”和“日”转换为中文数字;其中“年”中的 0 映射为“〇”而非“零”。
+% \begin{macrocode}
+ \else
+ \Large\ziju{.1}%
+ 日\hspace{1.5\ccwd}期:\zhdigits{#1}年\zhnumber{#2}月\zhnumber{#3}日%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macro}{\buct@makecover}
+% 接下来是重头戏:定义 \cs{buct@makecover} 命令来生成封面。
+% \begin{macrocode}
+\newcommand{\buct@makecover}{%
+% \end{macrocode}
+%
+% 封面右上角的“单位代码”和“学号”,先分别设置格式。
+% \begin{macrocode}
+ \begin{table}[h]
+ \raggedleft
+ \ifbuct@bachelor
+ \songti\zihao{5}
+ \else
+ \renewcommand{\arraystretch}{1.3}\large
+ \fi
+% \end{macrocode}
+%
+% 用一个无线表格来排版文字。需要注意二者都要以中文字体来书写数字。
+% 注意本科封面的表格右端并不是严格顶头,所以这里空开两个字符的宽度。
+% \begin{macrocode}
+ \begin{tabular}{l@{}l}
+ \ifbuct@bachelor%
+ 班\hspace{2\ccwd}级&:\CJKfamily+{zhsong}\buct@class\hspace*{2\ccwd}\\
+ 学\hspace{2\ccwd}号&:\CJKfamily+{zhsong}\buct@studentid\hspace*{2\ccwd}\\
+ \else%
+ \xbsong 单位代码 & :\CJKfamily+{zhsong}\mbox{10010}\\
+ \xbsong 学\hspace{2\ccwd}号 & :\CJKfamily+{zhsong}\mbox{\buct@studentid}\\
+ \fi
+ \end{tabular}
+ \end{table}
+ \ifbuct@bachelor\vspace{3bp}\else\vspace{26bp}\fi
+% \end{macrocode}
+%
+% 校徽与校名。前者是插图,后者是文字。
+% 需要注意,本科和硕博封面的“北京化工大学”几个字的字距是有差别的。
+% 由于并未设置居中,所以本科还需要手动空一点距离让文本近似居于页面中央。
+% \begin{macrocode}
+ \begin{minipage}[c][][c]{2.35cm}
+ \includegraphics[width = 2.35cm]{BUCT-badge.pdf}
+ \end{minipage}
+ \qquad
+ \begin{minipage}[c][2.35cm][c]{9cm}
+ \xingkai
+ \ifbuct@bachelor
+ \ziju{0.1}\hspace*{0.8\ccwd}\zihao{-0}
+ \else
+ \ziju{-0.02}\zihao{0}
+ \fi
+ {北京化工大学}
+ \end{minipage}
+ \ifbuct@bachelor\vspace{12bp}\else\vspace{18bp}\fi
+% \end{macrocode}
+%
+% 标题。本科的标题中的“(论文)”使用了半角括号,字体使用 Times New Roman Bold。
+% 按照排版规范,但模板使用全角和对应的中文字体。
+% 对于这项更改,我们使用 \pkg{xeCJK} 里的命令来吃掉一点括号的空白。
+%
+% 注:\cs{punctstyle\{banjiao\}} 和 \cs{xeCJKsetup\{PunctStyle = banjiao\}} 和 \cs{ctexset\{punct = banjiao\}}是一样的。
+% \begin{macrocode}
+ \begin{center}
+ \ifbuct@bachelor
+ \ziju{0.15}\xbsong\zihao{-0}\CJKfamily+{}{%
+ \punctstyle{banjiao}毕业设计(论文)% (论文)
+ }
+ \else%
+ %\ziju{-0.05}
+ \dbsong\fontsize{38bp}{60bp}\selectfont
+ \ifbuct@master{硕}\else{博}\fi{}士研究生学位论文
+ \fi
+ \end{center}
+% \end{macrocode}
+%
+% 对于论文标题之下的部分,我们将本科和硕博分开设置。
+%
+% 本科封面有两条横贯页面的横线,位于纸张顶部向下 \SI{10}{\centi\metre} 左右,
+% 我们用 \pkg{textpos} 的 \env{textblock} 环境定位,用 \pkg{tikz} 将它们画出来。
+% 两条线的间距取 \SI{0.2}{\centi\metre}。
+% \begin{macrocode}
+ \ifbuct@bachelor
+ \setlength{\TPHorizModule}{1cm}
+ \setlength{\TPVertModule}{1cm}
+ \begin{textblock}{0}(0,10)
+ \noindent%
+ \tikz[line width=1.2pt] \draw (0,0) -- (21,0) (0,0.2) -- (21,0.2);
+ \end{textblock}
+ \vspace{72bp}
+% \end{macrocode}
+%
+% 接下来书写题目。先使用 \pkg{xeCJK} 的功能来禁用下划线的断点,并调整其粗细。
+% \begin{macrocode}
+ \begin{center}
+ \xeCJKsetup{
+ underline = {
+ skip = false,
+ thickness = 1.4pt,
+ }
+ }
+% \end{macrocode}
+%
+% 然后是“题目”及其内容。
+% 题目需要手动断行,且长度控制在 \SI{36}{em} 以内。
+% 因表格本身的横线与文字间距较大,这里采用下划线的方式来划线。
+% 注意这里我们要判断题目是否有第二行(即 \cs{buct@titleB} 是否有值)
+% 来输出一行还是两行题目。
+% \begin{macrocode}
+ \renewcommand{\arraystretch}{2}
+ \begin{tabular}{%
+ >{\zihao{-2}\xbsong}l
+ >{\zihao{3}\bfseries}l
+ }
+ 题\hspace{\ccwd}目 & \buct@title@ul{\buct@titleA}\\
+ \ifthenelse{\equal{\buct@titleB}{}}{\relax}{
+ & \buct@title@ul{\buct@titleB}\\
+ }
+ \end{tabular}
+ \vskip144bp\zihao{3}
+% \end{macrocode}
+%
+% 使用一个表格来排版论文的信息,如前定义 \cs{buct@major@ul} 所述,这里横线的宽度取“专业”内容的宽度。
+% \begin{macrocode}
+ \begin{tabular}{
+ >{\begin{CJKfilltwosides}[b]{4\ccwd}\xbsong}r%
+ <{\end{CJKfilltwosides}}%
+ @{}>{\enspace\zihao{4}\bfseries}l%
+ <{\vspace{.2em}}%
+ }
+ 专业 & \buct@major@ul{\buct@major}\\
+ 学生 & \buct@major@ul{\buct@author}\\
+ 指导教师 & \buct@major@ul{\buct@supervisor}\\
+ \end{tabular}
+ \end{center}
+% \end{macrocode}
+%
+% 在页面底部书写日期。
+% \begin{macrocode}
+ \vfill{%
+ \begin{center}%
+ \buct@format@date{\@zhdate}%
+ \end{center}%
+ }
+% \end{macrocode}
+%
+% 硕博论文的处理方式与本科相似。
+% \begin{macrocode}
+ \else
+ \vspace{76bp}
+ \begin{center}
+ \fontsize{20}{36}\selectfont
+ \xeCJKsetup{
+ underline = {
+ skip = false,
+ thickness = 1.2pt,
+ }
+ }
+ \begin{tabular}{
+ >{\begin{CJKfilltwosides}[b]{4\ccwd}\sffamily\bfseries}r%
+ <{\end{CJKfilltwosides}}%
+ @{}>{\enspace\zihao{3}\bfseries}l%
+ <{\vspace{.2em}}%
+ }
+ 题目 & \buct@title@ul{\buct@titleA}\\
+ \ifthenelse{\equal{\buct@titleB}{}}{\relax}{
+ & \buct@title@ul{\buct@titleB}\\
+ }
+ 专业 & \buct@title@ul{\zihao{4}\buct@major}\\
+ 研究生 & \buct@title@ul{\zihao{4}\buct@author}\\
+ 指导教师 & \buct@title@ul{\zihao{4}\buct@supervisor}\\
+ \end{tabular}
+ \end{center}
+ \vfill{%
+ \begin{center}%
+ \buct@format@date{\@zhdate}%
+ \end{center}%
+ }
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makecover}
+% 文档命令 \cs{makecover} 类似 \cs{makedeclare},
+% 接受一个可选参数用于插入扫描页,否则调用 \cs{buct@makecover} 生成封面。
+% \begin{macrocode}
+\NewDocumentCommand{\makecover}{ o }{%
+ \hypertarget{cover}{}
+ \pdfbookmark{封面}{cover}
+ \IfNoValueTF{#1}{\buct@makecover}{%
+ \includepdf[pages=-]{#1}
+ }
+}
+%</cover>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \iffalse
+% \begin{macrocode}
+%<*manual>
+\ProvidesPackage{manual}[2021/09/25 document style for BUCTthesis]
+\RequirePackage{hypdoc}
+\PassOptionsToPackage{AutoFakeSlant}{xeCJK}
+\RequirePackage[UTF8, heading, fontset = none, linespread = 1.2,]{ctex}
+\RequirePackage[toc]{multitoc}
+\RequirePackage{
+ listings,
+ float,
+ tabularx,
+ booktabs,
+ siunitx,
+ unicode-math,
+ xcolor,
+ caption,
+ enumitem,
+ metalogo,
+}
+\RequirePackage[bottom,perpage]{footmisc}
+\RequirePackage[
+ a4paper,
+ hmargin={40mm,20mm},vmargin={25mm,15mm},footskip=7mm,
+]{geometry}
+
+\ctexset{
+ fontset,
+ abstractname = 简介,
+ indexname = 代码索引,
+ section = {
+ format = \Large\bfseries\raggedright,
+ name = {第,节},
+ },
+}
+\xeCJKDeclareCharClass{CJK}{"2460->"2469}
+\setcounter{secnumdepth}{4}
+\setcounter{tocdepth}{3}
+\setmainfont{TeX Gyre Pagella}
+\setmonofont[
+ HyphenChar = None ,
+ UprightFont=* Light, BoldFont=* Bold,
+ SlantedFont=* Light Oblique]{CMU Typewriter Text}
+\captionsetup{strut=off, labelsep=quad, labelfont+=bf}
+\lstdefinestyle{base}{
+ aboveskip = 0 pt,
+ belowskip = 0 pt,
+ tabsize = 2,
+ basicstyle = \ttfamily\small,
+ columns = flexible,
+ frame = single,
+ framerule = 1 pt,
+ xleftmargin = 1 em,
+ aboveskip = 6 pt,
+ belowskip = 6 pt,
+ commentstyle = \slshape\color{gray},
+ keywordstyle = \color{blue},
+ backgroundcolor = \color{lightgray!10},
+ showtabs = false,
+ showspaces = false,
+ showstringspaces = true,
+ captionpos = t,
+ breaklines = true,
+ numbers = none,
+ extendedchars = false,
+ escapechar = {@*},
+ gobble = 4,
+}
+\lstdefinestyle{latex}{%
+ style=base,
+ rulecolor=\color{cyan},
+ language=[LaTeX]TeX,
+}
+\lstdefinestyle{shell}{%
+ style=base,
+ rulecolor=\color{violet!65},
+ language=bash,
+}
+\lstnewenvironment{latex}{\lstset{style=latex}}{}
+\lstnewenvironment{shell}{\lstset{style=shell}}{}
+\let\oldCodelineNo\theCodelineNo
+\def\theCodelineNo{\textcolor{gray}{\oldCodelineNo}}
+\setlist{
+ leftmargin = 0em,
+ nosep
+}
+\setlist[description]{%
+ itemindent = 2.5em,
+}
+\setlist[enumerate]{%
+ itemindent = 2em,
+}
+\newcommand\without\CJKsout
+\newcommand\Arg[1]{ \texttt{\char`\{} \meta{#1} \texttt{\char`\}} }
+\providecommand\marg[1]{ \Arg{#1} }
+\providecommand\oarg[1]{ \texttt[ \meta{#1} \texttt] }
+\providecommand\parg[1]{ \texttt( \meta{#1} \texttt) }
+\DeclareRobustCommand{\opt}{\texttt}
+\DeclareRobustCommand{\env}{\texttt}
+\DeclareRobustCommand{\pkg}{\textsf}
+\DeclareRobustCommand{\cls}{\textsf}
+\DeclareRobustCommand{\file}{\textsf}
+\def\DescribeOpt{\leavevmode\@bsphack%
+ \begingroup\MakePrivateLetters\Describe@Opt}
+\def\Describe@Opt#1{\endgroup%
+ \marginpar{\raggedleft\PrintDescribeOpt{#1}}%
+ \SpecialOptIndex{#1}\@esphack\ignorespaces}
+\def\PrintDescribeOpt#1{\strut \MacroFont #1\ }
+\def\SpecialOptIndex#1{\@bsphack%
+ \begingroup%
+ \HD@target%
+ \let\HDorg@encapchar\encapchar%
+ \edef\encapchar usage{%
+ \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}%
+ }%
+ \@bsphack
+ \index{#1\actualchar{\protect\ttfamily#1}
+ (option)\encapchar usage}%
+ \index{options:\levelchar#1\actualchar%
+ {\protect\ttfamily#1}\encapchar usage}\@esphack%
+ \endgroup\@esphack}
+\NewDocumentEnvironment{syntax}{ m }{%
+ \linespread{1}\xeCJKsetup{PunctStyle=plain}\xeCJKsetup{CJKecglue}%
+ \cs{#1}\ignorespaces%
+}{\vspace{0.5em}}
+\def\glossaryname{版本历史}
+\GlossaryPrologue{\section{\glossaryname}}
+\IndexPrologue{%
+ \clearpage\section{\indexname}
+ \textit{意大利体的数字表示描述对应索引项的页码;
+ 带下划线的数字表示定义对应索引项的代码行号;
+ 罗马字体的数字表示使用对应索引项的代码行号。}
+}
+\def\IndexLayout{%
+ \newgeometry{hmargin=15mm,vmargin={25mm,15mm},footskip=7mm}%
+ \setlength\IndexMin{.5\textheight}%
+ \ctexset{section/numbering=false}%
+}
+\hypersetup{
+ pdftitle = {BUCTthesis:北京化工大学学位论文模板},
+ pdfauthor = {Miracle0565},
+}
+\CodelineIndex
+\EnableCrossrefs
+\RecordChanges
+\endinput
+%</manual>
+% \end{macrocode}
+% \fi
+%
+%
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/xetex/latex/buctthesis/buctthesis.ins b/macros/xetex/latex/buctthesis/buctthesis.ins
new file mode 100644
index 0000000000..4396724f77
--- /dev/null
+++ b/macros/xetex/latex/buctthesis/buctthesis.ins
@@ -0,0 +1,73 @@
+%%
+%% Copyright (C) 2019-2022 by Miracle0565
+%%
+%% https://github.com/Miracle0565/BUCTthesis
+%%
+%% This file 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:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions
+%% of LaTeX version 1999/12/01 or later.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\input docstrip.tex
+
+\askforoverwritefalse
+\keepsilent
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2019-\the\year by Miracle0565
+
+ https://github.com/Miracle0565/BUCTthesis
+
+This file 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:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions
+of LaTeX version 1999/12/01 or later.
+
+\endpreamble
+
+\generate{
+ \usedir{tex/latex/buctthesis}
+ \file{buctthesis.cls}{\from{\jobname.dtx}{class} }
+ \file{manual.sty} {\from{\jobname.dtx}{manual}}
+}
+
+\generate{
+ \usedir{tex/latex/buctthesis/cover}
+ \file{buctcover.cls}{\from{\jobname.dtx}{cover}}
+}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* buctthesis.cls *}
+\Msg{* munual.sty *}
+\Msg{* buctcover.cls *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file buctthesis.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/xetex/latex/buctthesis/buctthesis.pdf b/macros/xetex/latex/buctthesis/buctthesis.pdf
new file mode 100644
index 0000000000..6d2e2d8416
--- /dev/null
+++ b/macros/xetex/latex/buctthesis/buctthesis.pdf
Binary files differ
diff --git a/macros/xetex/latex/hfutthesis/README.md b/macros/xetex/latex/hfutthesis/README.md
new file mode 100644
index 0000000000..54d0f6e61f
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/README.md
@@ -0,0 +1,70 @@
+The `hfutthesis` Class
+=====================
+
+*LaTeX thesis template for Hefei University of Technology, v1.0.4*
+
+Overview
+--------
+
+[![GitHub release](https://img.shields.io/github/release/HFUTTUG/HFUT_Thesis/all.svg)](https://github.com/HFUTTUG/HFUT_Thesis/releases/latest)
+[![Overleaf](https://img.shields.io/badge/overleaf-hfutthesis-brightgreen.svg)](https://www.overleaf.com/latex/templates/hfut-thesis/ythwdqdkpvkp)
+[![GitHub commits](https://img.shields.io/github/commits-since/HFUTTUG/HFUT_Thesis/latest.svg)](https://github.com/HFUTTUG/HFUT_Thesis/commits/master)
+![visitors](https://visitor-badge.glitch.me/badge?page_id=HFUTTUG.Thesis)
+
+
+This project is based on the thesis LaTeX template [HFUT_Thesis](https://github.com/HFUTTUG/HFUT_Thesis) of Hefei University of Technology compiled on the basis of [ustctug/ustcthesis](https://github.com/ustctug/ustcthesis), in accordance with the latest version of "[Hefei University of Technology Graduate Dissertation Writing Specifications](http://xwgl.hfut.edu.cn/2021/0419/c1975a253949/page.htm)" and "[Hefei University of Technology Undergraduate Graduation Project (Thesis) Work Implementation Rules](https://github.com/HFUTTUG/HFUT_Thesis/files/8790494/2022.1.pdf)" It is compatible with the latest version of TeX Live, MacTeX, MiKTeX distribution, and supports cross-platform use.
+
+The documentation can be found in
+[hfutthesis-doc.pdf](http://mirrors.ctan.org/macros/latex/contrib/hfutthesis/hfutthesis-doc.pdf).
+
+GitHub re­pos­i­tory: <https://github.com/HFUTTUG/HFUT_Thesis>.
+
+Notice:
+----
+
+1. The instruction document `hfutthesis-doc.pdf` is included in the release version, and users can also compile it by themselves; **should read carefully before using the template**.
+
+2. This template requires TeX Live, MacTeX, MiKTeX to be at least the 2017 release, and to be upgraded to the latest as much as possible. For installation and upgrade methods, see [Beginner's Guide](https://github.com/HFUTTUG/HFUT_Thesis/wiki/新手指南).
+
+3. **NOT SUPPORTED** [CTeX package](https://github.com/HFUTTUG/HFUT_Thesis/wiki/常见问题#1-模板支持用-ctex-套装编译吗).
+
+Usage
+-----
+- Compile the template usage documentation `hfutthesis-doc.pdf`:
+ ```
+ latexmk -xelatex hfutthesis-doc.tex
+ ```
+- Compile the paper `hfutthesis-example.pdf`:
+ ```
+ latexmk -xelatex hfutthesis-example.tex
+ ```
+- To clean up temporary files during the compilation of the paper, you can:
+ ```
+ latexmk -c
+ ```
+
+Contributing
+------------
+
+[Issues](https://github.com/HFUTTUG/HFUT_Thesis/issues) and
+[pull requests](https://github.com/HFUTTUG/HFUT_Thesis/pulls)
+are always welcome.
+
+License
+-------
+
+This work may be distributed and/or modified under the conditions of
+the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+either version 1.3c of this license or (at your option) any later
+version.
+
+
+Last but not least
+--------
+
+- Thanks to [ustctug/ustcthesis](https://github.com/ustctug/ustcthesis).
+- Students who are interested in joining [@HFUTTUG](https://github.com/HFUTTUG) can send [Email](mailto:hfuttug@163.com).
+
+-----
+
+Copyright (C) 2017&ndash;2020 by HFUTTUG <hfuttug@163.com>. \ No newline at end of file
diff --git a/macros/xetex/latex/hfutthesis/hfut-bib/hfut.bib b/macros/xetex/latex/hfutthesis/hfut-bib/hfut.bib
new file mode 100644
index 0000000000..df37f70ad7
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-bib/hfut.bib
@@ -0,0 +1,169 @@
+% hfut.bib
+% Encoding: UTF8
+
+@article{knuth84,
+ author = {Donald E. Knuth},
+ title = {Literate Programming},
+ journal = {The Computer Journal},
+ year = {1984},
+ number = {2},
+ volume = {27},
+ pages = {97--111},
+}
+
+@book{knuth86a,
+ author = {Donald E. Knuth},
+ title = {The {\TeX}book},
+ volume = {A},
+ publisher = {Addison-Wesley},
+ address = {Reading, MA, USA},
+ year = {1986},
+ series = {Computers and Typesetting},
+}
+
+
+@book{tlc2,
+ author = {Frank Mittelbach and Michel Goossens and Johannes
+ Braams and David Carlisle},
+ title = {The {\LaTeX} Companion},
+ publisher = {Addison-Wesley},
+ address = {Reading, MA, USA},
+ edition = {2},
+ year = {2004},
+}
+
+
+
+@article{马建勋1997筒仓在地震作用下的计算理论,
+ title = {筒仓在地震作用下的计算理论},
+ author = {马建勋 and 梅占馨},
+ journal = {土木工程学报},
+ volume = {30},
+ number = {1},
+ pages = {25--30},
+ year = {1997}
+}
+
+@article{abdel2006numerical,
+ title = {A numerical investigation into the behavior of ground-supported concrete silos filled with saturated solids},
+ author = {Abdel-Fattah, Mohamed T and Moore, Ian D and Abdel-Fattah, Tarek T},
+ journal = {International Journal of Solids and Structures},
+ volume = {43},
+ number = {13},
+ pages = {3723--3738},
+ year = {2006},
+ publisher = {Elsevier}
+}
+
+
+@article{nagai1999properties,
+ title = {Properties of myofibrillar protein from Japanese stingfish ({\itshape{}Sebastes inermis}) dorsal muscle},
+ author = {Nagai, Takeshi and Kurata, Masato and Nakamura, Takashi and Ito, Tatsumi and Fujiki, Kazuhiro and Nakao, Miki and Yano, Tomoki},
+ journal = {Food Research International},
+ volume = {32},
+ number = {6},
+ pages = {401--405},
+ year = {1999},
+ publisher = {Elsevier}
+}
+
+@book{姚伯英1990构筑物抗震,
+ title = {构筑物抗震},
+ author = {姚伯英 and 侯忠良},
+ year = {1990},
+ publisher = {测绘出版社},
+ address = {北京}
+}
+
+@book{skolnik1990radar,
+ title = {Radar Handbook},
+ author = {Skolnik, Merrill I},
+ year = {1990},
+ publisher = {McGraw-Hill},
+ address = {New York}
+}
+
+@inproceedings{汤明2006液态聚碳硅烷改性对固态聚碳硅烷纺丝和交联性能的影响,
+ title = {液态聚碳硅烷改性对固态聚碳硅烷纺丝和交联性能的影响},
+ author = {汤明 and 余兆菊 and 兰琳 and 陈立富 and 张颖 and 张立同},
+ address = {北京},
+ publisher = {中国宇航出版社},
+ pages = {106--109},
+ editor = {郭玉明},
+ booktitle = {第十四届全国复合材料学术会议论文集},
+ year = {2006}
+}
+
+@article{harris1985experimental,
+ title = {Experimental determination of effective weight of stored material for use in seismic design of silos},
+ author = {Harris, Ernest C and von Nad, John Duris},
+ journal = {ACI Journal Proceedings},
+ volume = {82},
+ number = {6},
+ pages = {828--833},
+ year = {1985}
+}
+
+@phdthesis{金宏1998导航系统的精度及容错性能的研究,
+ title = {导航系统的精度及容错性能的研究},
+ author = {金宏},
+ address = {北京},
+ school = {北京航空航天大学自动控制系},
+ year = {1998}
+}
+
+@patent{姜锡洲1989一种温热外敷药制备方案,
+ title = {一种温热外敷药制备方案},
+ author = {姜锡洲},
+ address = {中国},
+ number = {881056073},
+ date = {1989-07-06},
+}
+
+@standard{构筑物抗震设计规范,
+ title = {构筑物抗震设计规范},
+ number = {GB 50191—93},
+}
+
+@standard{汉语拼音正词法基本规则,
+ title = {汉语拼音正词法基本规则},
+ number = {GB/T 16159—1996}
+}
+
+@newspaper{谢希德1998创造学习的新思路,
+ title = {创造学习的新思路},
+ author = {谢希德},
+ journal = {人民日报},
+ number = {10},
+ date = {1998-12-25}
+}
+
+@techreport{nho2000automatic,
+ title = {Automatic landing system design using fuzzy logic},
+ author = {Nho, Kyungmoon},
+ address = {Hefei},
+ institution = {AIAA},
+ year = {1998}
+}
+
+@online{pacs1989public,
+ author = {{Pacs}},
+ title = {The public-access computer systems forum},
+ publisher = {University of Houston Libraries},
+ year = {1989},
+ urldate = {1995.05.17}
+}
+
+@online{hopkinson1998dc,
+ title = {Dublin Core},
+ author = {Hopkinson, Alan and Metadata},
+ url = {http://www.ifls.org/IV/ifla64/138-161e.htm},
+ urldate = {1999-12-08},
+}
+
+@inproceedings{zhangwenjun2019yundonglei,
+ title={运动类App使用现状及发展前景研究——以合肥市高校为例},
+ author={张文钧 and 殷振豪 and 张丁洋},
+ booktitle={2019年第六届全国大学生统计建模大赛优秀论文集},
+ year={2019}
+}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/abstract.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/abstract.tex
new file mode 100644
index 0000000000..ed312e8509
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/abstract.tex
@@ -0,0 +1,35 @@
+% !TeX root = ../main.tex
+
+\hfutsetup{
+ keywords = {
+ 合肥工业大学, 学位论文, \LaTeX{} 模板, 学士, 硕士, 博士
+ },
+ keywords* = {
+ Hefei University of Technology (HFUT), Thesis,
+ \LaTeX{} Template, Bachelor, Master, PhD
+ },
+}
+
+\begin{abstract}
+ 摘要分中文和英文两种,中文在前,英文在后,博士论文中文摘要一般 800~1500 个汉字,硕士论文中文摘要一般 500~1000 个汉字。
+ 英文摘要的篇幅参照中文摘要。
+
+ 关键词另起一行并隔行排列于摘要下方,左顶格,中文关键词间空一字或用分号“,”隔开,英文关键词之间用逗号“,”或分号“;”隔开。
+
+ 中文摘要是论文内容的总结概括,应简要说明论文的研究目的、基本研究内容、研究方法或过程、结果和结论,突出论文的创新之处。
+ 摘要应具有独立性和自明性,即不用阅读全文,就能获得论文必要的信息。
+ 摘要中不宜使用公式、图表,不引用文献。
+
+ 中文关键词是为了文献标引工作从论文中选取出来用以表示全文主题内容信息的单词和术语,一般 3~8 个词,要求能够准确概括论文的核心内容。
+\end{abstract}
+
+\begin{abstract*}
+ \noindent %西文首段不缩进
+ This is a sample document of HFUT thesis \LaTeX{} template for bachelor,
+ master and doctor. The template is created by \href{https://github.com/LaureatePoet}{LaureatePoet} and \href{https://github.com/HowardZorn}{Fw[a]rd}. The
+ template meets the equirements of HFUT thesis writing standards.
+
+ This document will show the usage of basic commands provided by \LaTeX{} and
+ some features provided by the template. For more information, please refer to
+ the template document hfutthesis-doc.pdf.
+\end{abstract*}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/acknowledgements.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/acknowledgements.tex
new file mode 100644
index 0000000000..ce8e21bc85
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/acknowledgements.tex
@@ -0,0 +1,18 @@
+% !TeX root = ../main.tex
+
+\begin{acknowledgements}
+
+在研究学习期间,我有幸得到了两位老师的教导,
+他们是:合肥工业大学XXX研究员和美国犹他大学的XXX老师。
+两位深厚的学术功底,严谨的工作态度和敏锐的科学洞察力使我受益良多。
+衷心感谢他们多年来给予我的悉心教导和热情帮助。
+
+工大的贺XX同学和唐X同学参与了开发与部分试验工作,在此深表谢意。
+~\\
+\begin{flushright}
+作者:XXX
+
+XXXX年XX月XX日
+\end{flushright}
+
+\end{acknowledgements}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/citations.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/citations.tex
new file mode 100644
index 0000000000..7fb1a3e67e
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/citations.tex
@@ -0,0 +1,44 @@
+% !TeX root = ../main.tex
+
+\chapter{引用文献的标注}
+
+模板使用 \pkg{natbib} 宏包来设置参考文献引用的格式,默认采用角标数字标注法,
+更多引用方法可以参考该宏包的使用说明。
+
+\section{顺序编码制}
+
+\subsection{角标数字标注法}
+
+\hfutsetup{
+ cite-style = super,
+}
+\noindent
+\begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+ \verb|\cite{knuth86a}| & \cite{knuth86a} \\
+ \verb|\citet{knuth86a}| & \citet{knuth86a} \\
+ \verb|\cite[42]{knuth86a}| & \cite[42]{knuth86a} \\
+ \verb|\cite{knuth86a,tlc2}| & \cite{knuth86a,tlc2} \\
+ \verb|\cite{knuth86a,knuth84}| & \cite{knuth86a,knuth84} \\
+\end{tabular}
+
+
+\subsection{数字标注法}
+
+\hfutsetup{
+ cite-style = inline,
+}
+\noindent
+\begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+ \verb|\cite{knuth86a}| & \cite{knuth86a} \\
+ \verb|\citet{knuth86a}| & \citet{knuth86a} \\
+ \verb|\cite[42]{knuth86a}| & \cite[42]{knuth86a} \\
+ \verb|\cite{knuth86a,tlc2}| & \cite{knuth86a,tlc2} \\
+ \verb|\cite{knuth86a,knuth84}| & \cite{knuth86a,knuth84} \\
+\end{tabular}
+
+\hfutsetup{
+ cite-style = super,
+}
+
+% 注意,参考文献列表中的每条文献在正文中都要被引用。这里只是为了示例。
+\nocite{*}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/complementary.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/complementary.tex
new file mode 100644
index 0000000000..d5c0ee4975
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/complementary.tex
@@ -0,0 +1,8 @@
+% !TeX root = ../main.tex
+
+\chapter{补充材料}
+
+
+\section{补充章节}
+
+补充内容。
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/expertspage.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/expertspage.tex
new file mode 100644
index 0000000000..d855aee551
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/expertspage.tex
@@ -0,0 +1,45 @@
+% !TeX root = ../main.tex
+% 博士学位论文 专家清单页
+\begin{titlepage}%
+ \pdfbookmark{专家清单页}%
+ \null
+ \centering
+ {\sffamily\fontsize{16bp}{32bp}\selectfont
+ \textbf{同行评议专家名单}\par}
+ \vskip 1.0cm
+ \renewcommand\arraystretch{1.5}
+ {\fontsize{16pt}{\baselineskip}\selectfont
+ \begin{tabular}{@{}p{4\ccwd}p{1\ccwd}p{9\ccwd}<{\centering}p{1\ccwd}p{6\ccwd}<{\centering}@{}}%
+ 专家姓名 & & 所在单位名称 & & 教授、博导\\
+ 专家姓名 & & 所在单位名称 & & 教授、博导\\
+ 专家姓名 & & 所在单位名称 & & 教授、博导\\
+ 专家姓名 & & 所在单位名称 & & 教授、博导\\
+ 专家姓名 & & 所在单位名称 & & 教授、博导
+ \end{tabular}\par%
+ }
+ \vskip 2.4cm%
+ {\sffamily\fontsize{16bp}{32bp}\selectfont
+ \textbf{同行评议专家名单}\par}%
+ \vskip 1.0cm%
+ {\fontsize{16bp}{\baselineskip}\selectfont
+ \begin{tabular}{@{}p{4\ccwd}p{11\ccwd}p{6\ccwd}<{\centering}@{}}%
+ 匿名 & & 教授、博导\\
+ 匿名 & & 教授、博导\\
+ 匿名 & & 教授、博导
+ \end{tabular}\par%
+ }
+ \vskip 2.4cm%
+ {\sffamily\fontsize{16bp}{32bp}\selectfont
+ \textbf{答辩委员会名单}\par}%
+ \vskip 1.0cm%
+ {\fontsize{16bp}{\baselineskip}\selectfont
+ \begin{tabular}{@{}p{3\ccwd}p{3\ccwd}<{\centering}p{9\ccwd}p{6\ccwd}<{\centering}@{}}%
+ 主席: & 姓名 & 所在单位名称 & 教授、博导\\
+ 委员: & 姓名 & 所在单位名称 & 教授、博导\\
+ & 姓名 & 所在单位名称 & 教授、博导\\
+ & 姓名 & 所在单位名称 & 教授、博导\\
+ & 姓名 & 所在单位名称 & 教授、博导
+ \end{tabular}\par%
+ }
+ \renewcommand\arraystretch{1}
+ \end{titlepage}% \ No newline at end of file
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/floats.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/floats.tex
new file mode 100644
index 0000000000..0d5dbe08a3
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/floats.tex
@@ -0,0 +1,99 @@
+% !TeX root = ../main.tex
+
+\chapter{浮动体}
+
+\section{三线表}
+
+三线表是《撰写手册》推荐使用的格式,如表~\ref{tab:exampletable}。
+\begin{table}[h]
+ \centering
+ % \bicaption{表号和表题在表的正上方}{The table number and title are directly above the table} % 硕博学位论文 图表中英文标题
+ \caption{表号和表题在表的正上方} % 默认:学士学位论文 图表中文标题
+ \label{tab:exampletable}
+ \begin{tabular}{cl}
+ \toprule
+ 类型 & 描述 \\
+ \midrule
+ 挂线表 & 挂线表也称系统表、组织表,用于表现系统结构 \\
+ 无线表 & 无线表一般用于设备配置单、技术参数列表等 \\
+ 卡线表 & 卡线表有完全表,不完全表和三线表三种 \\
+ \bottomrule
+ \end{tabular}
+ \note{注:表注分两种,第一种是对全表的注释,用不加阿拉伯数字排在表的下边,
+ 前面加“注:”;第二种是和表内的某处文字或数字相呼应的注,
+ 在表里面用带圈的阿拉伯数字在右上角标出,然后在表下面用同样的圈码注出来}
+\end{table}
+
+编制表格应简单明了,表达一致,明晰易懂,表文呼应、内容一致。
+排版时表格字号略小,或变换字体,尽量不分页,尽量不跨节。
+表格太大需要转页时,需要在续表上方注明“续表”,表头页应重复排出。\par
+对于硕博是中英文表标题,示例如下:
+\begin{table}[h]
+ \centering
+ \bicaption{中文标题}{English Title} % 硕博学位论文 图表中英文标题
+ % \caption{表号和表题在表的正上方} % 默认:学士学位论文 图表中文标题
+ \label{tab:exampletable-zh-en}
+ \begin{tabular}{cl}
+ \toprule
+ 类型 & 描述 \\
+ \midrule
+ 挂线表 & 挂线表也称系统表、组织表,用于表现系统结构 \\
+ 无线表 & 无线表一般用于设备配置单、技术参数列表等 \\
+ 卡线表 & 卡线表有完全表,不完全表和三线表三种 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+
+\section{插图}
+
+有的同学可能听说“\LaTeX{} 只能使用 eps 格式的图片”,甚至把 jpg 格式转为 eps。
+事实上,这种做法已经过时。
+而且每次编译时都要要调用外部工具解析 eps,导致降低编译速度。
+所以我们推荐矢量图直接使用 pdf 格式,位图使用 jpeg 或 png 格式。
+\begin{figure}[!ht]
+ \centering
+ \includegraphics[width=0.3\textwidth]{hfut-badge.pdf}
+ % \bicaption{图号、图题置于图的下方}{The figure number and title are placed at the bottom of the figure} % 硕博学位论文 图表中英文标题
+ \caption{图号、图题置于图的下方} % 默认:学士学位论文 图表中文标题
+ \label{fig:badge}
+ \note{注:图注的内容不宜放到图题中。}
+\end{figure}
+
+关于图片的并排,推荐使用较新的 \pkg{subcaption} 宏包,
+不建议使用 \pkg{subfigure} 或 \pkg{subfig} 等宏包。\par
+
+对于硕博是中英文图标题,示例如图~\ref{fig:example-zh-en}:
+\begin{figure}[!ht]
+ \centering
+ \includegraphics[height=1.5cm]{hfut-name.pdf}
+ \bicaption{合肥工业大学}{Hefei University of Technology} % 硕博学位论文 图表中英文标题
+ % \caption{图号、图题置于图的下方} % 默认:学士学位论文 图表中文标题
+ \label{fig:example-zh-en}
+\end{figure}
+\section{算法环境}
+
+模板中使用 \pkg{algorithm2e} 宏包实现算法环境。关于该宏包的具体用法,
+请阅读宏包的官方文档。
+
+\begin{algorithm}[!ht]
+ \SetAlgoLined
+ \KwData{this text}
+ \KwResult{how to write algorithm with \LaTeX2e }
+
+ initialization\;
+ \While{not at end of this document}{
+ read current\;
+ \eIf{understand}{
+ go to next section\;
+ current section becomes this one\;
+ }{
+ go back to the beginning of current section\;
+ }
+ }
+ \caption{算法示例1}
+ \label{algo:algorithm1}
+\end{algorithm}
+
+注意,我们可以在论文中插入算法,但是插入大段的代码是愚蠢的。
+然而这并不妨碍有的同学选择这么做,对于这些同学,建议用 \pkg{listings} 宏包。
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/intro.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/intro.tex
new file mode 100644
index 0000000000..73ba78c192
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/intro.tex
@@ -0,0 +1,39 @@
+% !TeX root = ../main.tex
+
+\chapter{简介}
+
+\section{一级节标题}
+
+\subsection{二级节标题}
+
+\subsubsection{三级节标题}
+
+\paragraph{四级节标题}
+
+\subparagraph{五级节标题}
+
+本模板 \pkg{hfutthesis} 是合肥工业大学本科生和研究生学位论文的 \LaTeX{}
+模板, 按照《\href{http://xwgl.hfut.edu.cn/2021/0419/c1975a253949/page.htm}
+{合肥工业大学研究生学位论文写作规范}》(以下简称《写作规范》)和
+《\href{http://xcjwb.hfut.edu.cn/53/cc/c1144a21452/page.htm}
+{合肥工业大学本科毕业设计(论文)工作实施细则}》的要求编写。
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
+incididunt ut labore et dolore magna aliqua.
+Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
+aliquip ex ea commodo consequat.
+Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
+fugiat nulla pariatur.
+Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
+deserunt mollit anim id est laborum.
+
+
+
+\section{脚注}
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
+incididunt ut labore et dolore magna aliqua.
+\footnote{Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat.
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
+ eu fugiat nulla pariatur.}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/math.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/math.tex
new file mode 100644
index 0000000000..a421a34715
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/math.tex
@@ -0,0 +1,189 @@
+% !TeX root = ../main.tex
+
+\chapter{数学}
+
+\section{数学符号和公式}
+《写作规范》没有对数学符号和公式做具体要求,这里我们让数学符号遵循 GB/T 3102.11—1993《物理科学和技术中使用的数学符号》
+\footnote{原 GB 3102.11—1993,自 2017 年 3 月 23 日起,该标准转为推荐性标准。}。
+该标准参照采纳 ISO 31-11:1992 \footnote{目前已更新为 ISO 80000-2:2019。},
+但是与 \TeX{} 默认的美国数学学会(AMS)的符号习惯有所区别。
+具体地来说主要有以下差异:
+\begin{enumerate}
+ \item 大写希腊字母默认为斜体,如
+ \begin{equation*}
+ \Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi \Omega.
+ \end{equation*}
+ 注意有限增量符号 $\increment$ 固定使用正体,模板提供了 \cs{increment} 命令。
+ \item 小于等于号和大于等于号使用倾斜的字形 $\le$、$\ge$。
+ \item 积分号使用正体,比如 $\int$、$\oint$。
+ \item 行间公式积分号的上下限位于积分号的上下两端,比如
+ \begin{equation*}
+ \int_a^b f(x) \dif x.
+ \end{equation*}
+ 行内公式为了版面的美观,统一居右侧,如 $\int_a^b f(x) \dif x$ 。
+ \item
+ 偏微分符号 $\partial$ 使用正体。
+ \item
+ 省略号 \cs{dots} 按照中文的习惯固定居中,比如
+ \begin{equation*}
+ 1, 2, \dots, n \quad 1 + 2 + \dots + n.
+ \end{equation*}
+ \item
+ 实部 $\Re$ 和虚部 $\Im$ 的字体使用罗马体。
+\end{enumerate}
+
+以上数学符号样式的差异可以在模板中统一设置。
+但是还有一些需要用户在写作时进行处理:
+\begin{enumerate}
+ \item 数学常数和特殊函数名用正体,如
+ \begin{equation*}
+ \uppi = 3.14\dots; \quad
+ \symup{i}^2 = -1; \quad
+ \symup{e} = \lim_{n \to \infty} \left( 1 + \frac{1}{n} \right)^n.
+ \end{equation*}
+ \item 微分号使用正体,比如 $\dif y / \dif x$。
+ \item 向量、矩阵和张量用粗斜体(\cs{symbf}),如 $\symbf{x}$、$\symbf{\Sigma}$、$\symbfsf{T}$。
+ \item 自然对数用 $\ln x$ 不用 $\log x$。
+\end{enumerate}
+
+模板中使用 \pkg{unicode-math} 宏包配置数学字体。
+该宏包与传统的 \pkg{amsfonts}、\pkg{amssymb}、\pkg{bm}、
+\pkg{mathrsfs}、\pkg{upgreek} 等宏包\emph{不}兼容。
+本模板作了处理,用户可以直接使用 \cs{bm}, \cs{mathscr},
+\cs{upGamma} 等命令。
+关于数学符号更多的用法,参见 \pkg{unicode-math} 宏包的使用说明和符号列表
+\pkg{unimath-symbols}。
+
+
+
+\section{量和单位}
+
+宏包 \pkg{siunitx} 提供了更好的数字和单位支持:
+\begin{itemize}
+ \item \num{12345.67890}
+ \item \num{.3e45}
+ \item \si{kg.m.s^{-1}}
+ \item \si{\micro\meter} $\si{\micro\meter}$
+ \item \si{\ohm} $\si{\ohm}$
+ \item \numlist{10;20}
+ \item \numlist{10;20;30}
+ \item \SIlist{0.13;0.67;0.80}{\milli\metre}
+ \item \numrange{10}{20}
+ \item \SIrange{10}{20}{\degreeCelsius}
+\end{itemize}
+
+
+
+\section{定理和证明}
+
+示例文件中使用 \pkg{amsthm} 宏包配置了定理、引理和证明等环境。
+用户也可以使用 \pkg{ntheorem} 宏包。\par
+
+公式引用示例:见式~\ref{eq:example}
+\begin{definition}
+ If the integral of function $f$ is measurable and non-negative, we define
+ its (extended) \textbf{Lebesgue integral} by
+ \begin{equation}
+ \int f = \sup_g \int g,
+ \end{equation}
+ where the supremum is taken over all measurable functions $g$ such that
+ $0 \le g \le f$, and where $g$ is bounded and supported on a set of
+ finite measure.
+\end{definition}
+
+\begin{assumption}
+The communication graph is strongly connected.
+\end{assumption}
+
+\begin{example}
+ Simple examples of functions on $\mathbb{R}^d$ that are integrable
+ (or non-integrable) are given by
+ \begin{equation}
+ f_a(x) =
+ \begin{cases}
+ |x|^{-a} & \text{if } |x| \le 1, \\
+ 0 & \text{if } x > 1.
+ \end{cases}
+ \end{equation}
+ \begin{equation}
+ \label{eq:example}
+ F_a(x) = \frac{1}{1 + |x|^a}, \qquad \text{all } x \in \mathbb{R}^d.
+ \end{equation}
+ Then $f_a$ is integrable exactly when $a < d$, while $F_a$ is integrable
+ exactly when $a > d$.
+\end{example}
+
+\begin{lemma}[Fatou]
+ Suppose $\{f_n\}$ is a sequence of measurable functions with $f_n \geq 0$.
+ If $\lim_{n \to \infty} f_n(x) = f(x)$ for a.e. $x$, then
+ \begin{equation}
+ \int f \le \liminf_{n \to \infty} \int f_n.
+ \end{equation}
+\end{lemma}
+
+\begin{remark}
+ We do not exclude the cases $\int f = \infty$,
+ or $\liminf_{n \to \infty} f_n = \infty$.
+\end{remark}
+
+\begin{corollary}
+ Suppose $f$ is a non-negative measurable function, and $\{f_n\}$ a sequence
+ of non-negative measurable functions with
+ $f_n(x) \le f(x)$ and $f_n(x) \to f(x)$ for almost every $x$. Then
+ \begin{equation}
+ \lim_{n \to \infty} \int f_n = \int f.
+ \end{equation}
+\end{corollary}
+
+\begin{proposition}
+ Suppose $f$ is integrable on $\mathbb{R}^d$. Then for every $\epsilon > 0$:
+ \begin{enumerate}
+ \renewcommand{\theenumi}{\roman{enumi}}
+ \item There exists a set of finite measure $B$ (a ball, for example) such
+ that
+ \begin{equation}
+ \int_{B^c} |f| < \epsilon.
+ \end{equation}
+ \item There is a $\delta > 0$ such that
+ \begin{equation}
+ \int_E |f| < \epsilon \qquad \text{whenever } m(E) < \delta.
+ \end{equation}
+ \end{enumerate}
+\end{proposition}
+
+\begin{theorem}
+ Suppose $\{f_n\}$ is a sequence of measurable functions such that
+ $f_n(x) \to f(x)$ a.e. $x$, as $n$ tends to infinity.
+ If $|f_n(x)| \le g(x)$, where $g$ is integrable, then
+ \begin{equation}
+ \int |f_n - f| \to 0 \qquad \text{as } n \to \infty,
+ \end{equation}
+ and consequently
+ \begin{equation}
+ \int f_n \to \int f \qquad \text{as } n \to \infty.
+ \end{equation}
+\end{theorem}
+
+\begin{proof}
+ Trivial.
+\end{proof}
+
+\newtheorem*{axiomofchoice}{Axiom of choice}
+\begin{axiomofchoice}
+ Suppose $E$ is a set and ${E_\alpha}$ is a collection of
+ non-empty subsets of $E$. Then there is a function $\alpha
+ \mapsto x_\alpha$ (a ``choice function'') such that
+ \begin{equation}
+ x_\alpha \in E_\alpha,\qquad \text{for all }\alpha.
+ \end{equation}
+\end{axiomofchoice}
+
+\newtheorem{observation}{Observation}
+\begin{observation}
+ Suppose a partially ordered set $P$ has the property
+ that every chain has an upper bound in $P$. Then the
+ set $P$ contains at least one maximal element.
+\end{observation}
+\begin{proof}[A concise proof]
+ Obvious.
+\end{proof}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/notation.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/notation.tex
new file mode 100644
index 0000000000..e0e4a36b0d
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/notation.tex
@@ -0,0 +1,27 @@
+% !TeX root = ../main.tex
+
+\begin{notation}
+
+ \begin{notationlist}{2em}
+ \item[$\displaystyle a$] The number of angels per unit area
+ \item[$\displaystyle N$] The number of angels per needle point
+ \item[$\displaystyle A$] The area of the needle point
+ \item[$\displaystyle \sigma$] The total mass of angels per unit area
+ \item[$\displaystyle m$] The mass of one angel
+ \item[$\displaystyle \sum_{i=1}^n a_i$] The sum of $a_i$
+ \end{notationlist}
+
+\end{notation}
+
+
+
+% 也可以使用 nomencl 宏包
+
+% \printnomenclature
+
+% \nomenclature{$\displaystyle a$}{The number of angels per unit are}
+% \nomenclature{$\displaystyle N$}{The number of angels per needle point}
+% \nomenclature{$\displaystyle A$}{The area of the needle point}
+% \nomenclature{$\displaystyle \sigma$}{The total mass of angels per unit area}
+% \nomenclature{$\displaystyle m$}{The mass of one angel}
+% \nomenclature{$\displaystyle \sum_{i=1}^n a_i$}{The sum of $a_i$}
diff --git a/macros/xetex/latex/hfutthesis/hfut-chapters/publications.tex b/macros/xetex/latex/hfutthesis/hfut-chapters/publications.tex
new file mode 100644
index 0000000000..e545f8b83c
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-chapters/publications.tex
@@ -0,0 +1,28 @@
+% !TeX root = ../main.tex
+
+\begin{publications}
+
+\section{参加的学术交流与科研项目}
+
+\begin{enumerate}
+\item A A A A A A A A A
+\item A A A A A A A A A
+\item A A A A A A A A A
+\end{enumerate}
+
+\section{发表的学术论文(含专利和软件著作权)}
+
+\begin{enumerate}
+\item A A A A A A A A A
+\item A A A A A A A A A
+\item A A A A A A A A A
+\end{enumerate}
+
+\section{获得的学术奖励}
+\begin{enumerate}
+\item A A A A A A A A A
+\item A A A A A A A A A
+\item A A A A A A A A A
+\end{enumerate}
+
+\end{publications}
diff --git a/macros/xetex/latex/hfutthesis/hfut-figures/hfut-badge.pdf b/macros/xetex/latex/hfutthesis/hfut-figures/hfut-badge.pdf
new file mode 100644
index 0000000000..159afe25b8
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-figures/hfut-badge.pdf
Binary files differ
diff --git a/macros/xetex/latex/hfutthesis/hfut-figures/hfut-name.pdf b/macros/xetex/latex/hfutthesis/hfut-figures/hfut-name.pdf
new file mode 100644
index 0000000000..a60b3526ce
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfut-figures/hfut-name.pdf
@@ -0,0 +1,368 @@
+%PDF-1.6 %
+1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 11923/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164519, 2020/08/25-17:54:00 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"
+ xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
+ xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
+ xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <xmp:CreatorTool>Adobe Illustrator 25.0 (Windows)</xmp:CreatorTool>
+ <xmp:CreateDate>2021-04-24T14:53:48+09:00</xmp:CreateDate>
+ <xmp:ModifyDate>2021-04-24T14:53:48+08:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2021-04-24T14:53:48+08:00</xmp:MetadataDate>
+ <xmp:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType="Resource">
+ <xmpGImg:width>256</xmpGImg:width>
+ <xmpGImg:height>40</xmpGImg:height>
+ <xmpGImg:format>JPEG</xmpGImg:format>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAKAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXj/wCe355t5DFv&#xA;pGixw3PmG5UTSesC0VvBWgLqpUl3oeIrsNz2qpAZL+S/5gah568kRa3qMMMN+txNbXCW6usVYyCp&#xA;UO0jfYda/F1xQWd4q7FXYq7FUHLrOkQ30enzX1vHfy/3Vo8qLM/+rGTyP0DFUZirsVdirsVdirsV&#xA;dirsVdirsVeefnH+b9j+XOl2kn1T9IapqDutpac/TUJGBzldgr7KWUUpvXFLEvKf/OTuj3/kzW9b&#xA;123istS0p0S302GUlrozKfREfMV+2rB6V4jc4rSl+SX/ADkE/me91W0843thps/OJtJBZbdXEhcP&#xA;CDI3xMpC8d6muKkPdcUOxVTubm2tbeS4uZUgt4lLyzSMERVG5ZmagAHvircE8FxBHPbyLNBKoeKW&#xA;NgyMrCoZWGxBHfFV+KuxVD6hqFlp1jcX99MtvZ2kbTXE7mipGg5Mx+QGKvN9B/5yI8h6zpvmDULd&#xA;LuKDy9CbmX1Y1Bni5cEMVGIq7kKFfj1HvRTTDm/5y98tyaNqEiaPdW+ropGnQMySxSMQQrSOOBQK&#xA;d2FD7YrTEf8AnFPzXqbeftV064aW6Gs273dzKzsaTRPyMrLuCX9QiuKl9X4oU7m4gtreW5uJFigh&#xA;RpJZWNFVEFWYnwAGKvzx84eZb7zN5n1LXb1y89/O0u/7KdI0HsiAKPliyfTH/OKPmzy4fJ8nlv63&#xA;HFrqXc1wbKRuLyxuqUeMHZqBaELuKVOKC96xQ7FXYq8G/wCcpPzE1bRtP0/yro8jwXWsAzXdxExW&#xA;UQo4VI0K7j1HrU+Ap3OKQ8j0T8rPNtj+cflrQvNExt7++eK/F2JfXYxwBpePqV+2Pq5T2PiKYpfV&#xA;Pnf81PI3ksIuvaksV1IOUdlEDLcMp/a9NKlV92oMWKXeTPzy/LnzdqEWmaXqDx6pPy9GxuYniduC&#xA;ljxahjJoDsHritM9xV2KpZ5h8z+X/LmnnUddv4dPsweIlmbjybrxRftO3soJxV4z5m/5y58o2ZaL&#xA;y/plzq0g2E8xFpAfcVEkh+lBimkg8sf85Uebtc82aTpC6FZCDUbyC1ZUaUyhZpFQkOW47VruuK0+&#xA;mMUOxVbLIscTyNUqiliAKmgFdhir4Z/N/wDN6/8AzFvLBrjTYtOh0v11t0RmeRhOUr6jHiPhEQ6D&#xA;xxZMX1GLyrH5Z0lrGa4m8xTPcPq6v8MEKK/GCOMcfjLKOZbltWlMVZZ5A1D8i7XTIm846dq95rCS&#xA;M8v1cx/VGQN8CACSKTcfar9+KvtnR9UttW0my1S1Di2v7eK6gEg4uI5kEi8l7GjbjFii8VfOf/OW&#xA;3nqW3s9P8nWU3H63/pmqqjb+mhpBGwHZmBff+UYpCI/5xi/NDy7F5Yh8n6tqQt9YS8kTS7ebkFkh&#xA;m4sqRyEcOXqs4CVr4YqX0Jih2Ksb/MnSbvV/y/8AMWm2atJd3Wn3CW8aVLPJ6ZKIAP5iKYq+H/JP&#xA;lHzp5mu9Q0vyzHI8wtmfUYBMLdXgSRfgk5sit+84kKe4r2xZLNVuvJL+UdLtbGwu7bzZbyyDVrt3&#xA;DW08TFinFeZKsnwigQd6k4q+hv8AnGLzj+XVn5Wh0l5bTTfNM1xJFcGX4JrsE84mEjbEcW4BAeo6&#xA;b7qC+gcUPmL/AJyA/OiXXbo+QfJ0huYZ5Ft9Ru7erG5lZuItYSPtJy2Yj7R2G1eSkJ5oH5MflJ5F&#xA;8nQX35kPE+pajGq3DXUjhYpHXk0NskJ5Fk7uKnuCBitvCvOPlm00fU7jXvJWoyaj5Ygu/TstWgEs&#xA;cttMAsixSlljZXXl8Eg2amxqCApey/lp/wA5V2UWlrp/npJmvYAFi1W2jDiVfGZAVKuNt1B5eA7q&#xA;Keq6N+ev5T6u6x23mO2ikagCXYktdz2rOsa/ccUUztHR0V0YMjAMrKagg7ggjFXyT/zl3cxv+YOl&#xA;woT6kOlxl9zQF7iYjbx2/VikKvkHVvO+u/m3Y3F3r1lrut2mhXX6GvLco0IZreQQpLRIirh5Kyc0&#xA;5eOKsS8t6l5o8savrfnDWLW11y7tLp9L8z6RqRE0/wC+YH1X5BwF9WLgHFaEUpQ4peq/84v/AJeF&#xA;ru/8/wCoWItFuWki0K2KkKkchrJLHy/Z4n00bw5YoL6J5LyK1HIAEjvQ9P1YobxV5v8Anh+VN5+Y&#xA;mhWVrY30dlfafM00PrhjDIHXiysUqV6Ch4nFIfGWveW7/R/Md55fdo7y/s5mtnNmTMjyLsRGaBjQ&#xA;7dK1xS+pv+cd/wAmbTQNFg8y+YdOK+Z7lme2iukIks4fsqPTb7ErULE05AGm2+KC9vxQwf8AMT81&#xA;LHydcWmnRaVe63rd+pe006xjLEqDx5O9DTcU2BPtiqSPqX56ea9OuYLXRNP8nWt1CY1n1C4e7vOM&#xA;oKlo1gCCN1G/7xdsUvMPzK/KnyF+XnkrTJvMF1qOuXnqtBbWln9V0+CSRhyeR2FvNIOKKBV3cnbt&#xA;0VSjSh+TurJpWg+RfKjav5w1das2r3Fx9WsnVS8nqlWjWURqjN8CAEe/w4q9v/Lr8kfK3l3y/b22&#xA;t6Tpeqa0jyvNfG1SQfvJC6qvrBm+BSFGK29JVVVQqgBQKADYADFD5r/5yV/Mv8x/LvmuHR9J1CTS&#xA;9GuLNJYpLdVWSVyzLIfWoZFKkUorDse+KQ+cb2+vb+7lvL64kuruduc1xO7SSOx/aZ2JZj88UvqP&#xA;8jf+cftFsE0bztqWojU7uSKO9sLWAUt4nkUMjM5JaR0r4KA3jTFBL6AxQsuLiC3hee4kSGCMFpJZ&#xA;GCoqjqWY0AGKsB83/nt+XHluAganHq2oNtBp+mstzI7GlAWQmNOv7TD2ritPmjzD5O/M3RpdV/M6&#xA;CyuPLME+oSy2tuGdLuKO9Z3+yi/BGitwYvx+WLJ6T/zjz+XvkTXPy3vNYm0ODWNfSe5tpFvz+6Ms&#xA;aLJDHGSGWNSsiVfjyqT4AYoLGJ/+cZvzF1bzCbxLHTvLdhcShvq8Fy8y2yqBUpUyOxNKj4uv8o6K&#xA;2yz8+PzkfVZF/L3yNK95qN9KttqF3atsSx4/VImH2izf3jA0A+HuaKhln5M/kBpXktI9Y1r09R8z&#xA;MAySUrFaVBBWGp+Jt95CPlTuraQfnhpn5a+edZ02ObznZaXeaNcSWeqRSzrRISpeT04z9qUSBE60&#xA;613WmKhl35Lab+VcflK98v8AlPUI9etVkLaw06HlI8w4gyRSKo4FY+K0FNu5ripYP5+/5xNtL/U2&#xA;vvJ9/FpkExrNpt0HaJG7mGRebBT/ACMDTsabBW0i03/nDzXnlH6T8w2sENfi+rQyTMRt05mEYrb6&#xA;EtYNH8ieRliaSRtK8vWJLSyHnK0VtGWJ7VY8dgPkMUPlbyZGn5y/nY135kPCxkR7lrFWK1t7YBYr&#xA;ZGBqOoLkbn4jsTXFkzTQbXyf5J/5yhOk6bYm3sry1Ftbo3Pjb3VxEsvKLnUlX48OpA5mnTFDFPLH&#xA;l/yhqX/OQ3mPT/OswFkl9qEtql1J6aTzrc8oUleq/C0ZLUqK0A9sVfVDea/J9nAgbWNPt4EARAbm&#xA;BEAA2UfEAKAdMUPGvMH5reUdG/PnSL7SdQi1DT9YsI9O1y4tJlnt1Zpj9Wk5IzJyjNOdOiE98UvS&#xA;PzQ/NfQPy80+0udUguLqa/d47S3tlUkmMAuXdyqqByHvvsOtFDyGf/nJ3zh5pebRvJHlNzqU8bCK&#xA;b1GuZI1PwmX00jjVePLqzUB64ppBflN+VP52+Ub+41ay0bSI9QvYhGlzrEzSNApPJ+K2zswL7A9/&#xA;xxVOPOnkr/nKi/5XEev28gNONlot01lxp4NIlsT/ALKQ4qyD8jdF/PbS9Wuo/PU0smiNAfSF7dRX&#xA;k4nDLxKPG8z048uXJsVL2jFDsVYV+c1p5bn/AC015/MEcb2dvavJBI6kmO6pwt2jIHJX9VlUU8aH&#xA;YnFQ+Zv+cbPIuua558tdetXNtpmgyCa7uakF2ZWCwJTqXFeXYLXxFVkX2dixdirz382fzW8n+S9L&#xA;kW/MN/rbxt9Q0miyOWYEK0o/3XFUbsevauKvPfyj/wCcftM1Ly7f615609Gv/MFZbWyQei1nE5Zg&#xA;6BKBHctULSiqAPEBTbGNN8x+dPyC81nQNYD6r5NvWaW0K94y28tvU0SVa/vIyaE/MNir6V8s+avL&#xA;/mfSotU0O9jvbOUA8kPxIT+xIh+JGH8rCuKED+YPkax87eWpdAvry5s7WaSOSR7VlVm9M8gjh1YM&#xA;td6eIBxVJvIP5I+QfJMi3OnWbXeqKSV1O+KyzrUUpHRUSP5qoPicVtCfnN+ZnlPy95V13SLjU0j1&#xA;+706eKzsYiWnElxG0cTEKDwoW5fERtil8tflX+cXmT8vbuQWSpeaRdOr3umzVCsRQc43G8cnHau4&#xA;8QaDFL7D/Lb8w9J8++WxrmmxS26JM9tcW81OUcyKrFaqSGHF1IPvixQnln8nPy/8teY5vMOkacYd&#xA;SlDhXeWSRYvVr6npK5PHlWny2GKs1xV8Qeb/AC3feQ/zTvotW0OPX4Lh7m4063nEnpXEc/IxygRE&#xA;MTGT8S+IPscWT0b/AJxB0HVIdR8w6tPFLBaCGG1TmGVXkZjIaA7Eoqj5cvfFBfTOKHYqw/8AOG3+&#xA;sflb5ojoWP6OncBetUXmPxXFXmP/ADi5+WOtaDDeeadZtkt21W2ij0tG3mEDMZHdh+wJKIQOuKS9&#xA;h1LyT5a1LzNpnma8s1k1nSUdLK5qRQSAj4gNm41PGv2SSRihjXnX8iPy884avJrGqWs0WozIqTT2&#xA;spiLlRRXZaMpYDatOmK2w3Uv+cRPIcwrYapqNm3Gg5tDMta9SPTQ/wDDYptMvJX/ADi/5E8vXsWo&#xA;ajNPrl5A6yQCekUCOh5K3pIfi37OxHtitvS/MvlHyz5ns1s9f02DUbdCWjWZashIoSjijIT/AJJx&#xA;Qh/K3kLyd5UWVfL2kwaeZ/76SMFpHA3AaRyzlR4Vpiqf4q7FXYq7FXYq+efM8P5jeTfO3mPzT5n0&#xA;6bzf5DvhLCNPWcSwQW8kqyQs9m4dKQpHwJKcd68sUsA/LyPz35k/LnzLpXkQTWV9ba1bajJBZ3Rt&#xA;WNrdQTxNAjlowyqYkJUsKgd9sVfT/wCWmieYND8i6PpXmC6+uavawlbqcsZPtOzJHzP2vTRlSvti&#xA;hk2KvH/Lv/OMfkbSPNA12e5utTWGT1rWxuyjRq4NVMjBeUvHtX6a4pt7BihJvNvk/wAvebdGl0jX&#xA;bRbq0k+Je0kbjo8bjdGHiPkdsVeTab/zil5d07UTc2fmTVraOuy27xwy8QwIUyqvt/Lim3uEaCON&#xA;UBJCAKCxqTQU3OKF2KvGPzf8x+dvL3mq3lsPJNj5n0S+gCeuLOS4uhMpIeKSROdBTjxqm/bocUvO&#xA;fJv5Fa15685XXmDzHoB8o+WXf1BpMStbyOwAURRxOA8amnJ3Kgfyjf4VbfS/lfyn5d8raZ+i9Ask&#xA;sLH1GlMKFmrIwALFnLMTRQNzih//2Q==</xmpGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xmp:Thumbnails>
+ <xmpTPg:NPages>1</xmpTPg:NPages>
+ <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
+ <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+ <xmpTPg:MaxPageSize rdf:parseType="Resource">
+ <stDim:w>334.109985</stDim:w>
+ <stDim:h>52.799999</stDim:h>
+ <stDim:unit>Pixels</stDim:unit>
+ </xmpTPg:MaxPageSize>
+ <xmpTPg:PlateNames>
+ <rdf:Seq>
+ <rdf:li>Cyan</rdf:li>
+ <rdf:li>Magenta</rdf:li>
+ <rdf:li>Yellow</rdf:li>
+ <rdf:li>Black</rdf:li>
+ </rdf:Seq>
+ </xmpTPg:PlateNames>
+ <xmpTPg:SwatchGroups>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <xmpG:groupName>默认色板组</xmpG:groupName>
+ <xmpG:groupType>0</xmpG:groupType>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpTPg:SwatchGroups>
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">合肥工业大学_font_zh-ch</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+ <xmpMM:DocumentID>uuid:d7aa133e-03fa-4d75-9f6c-97d56d418d17</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:6332f959-5dfd-4c40-a69d-42ec7d041112</xmpMM:InstanceID>
+ <illustrator:CreatorSubTool>Adobe Illustrator</illustrator:CreatorSubTool>
+ <pdf:Producer>Adobe PDF library 15.00</pdf:Producer>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 3 0 obj <</Count 1/Kids[7 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[0.00297546 0.0115967 334.03 52.8]/BleedBox[0.0 0.0 334.11 52.8]/Contents 8 0 R/CropBox[0.0 0.0 334.11 52.8]/LastModified(D:20210424145348+09'00')/MediaBox[0.0 0.0 334.11 52.8]/Parent 3 0 R/PieceInfo<</Illustrator 9 0 R>>/Resources<</ExtGState<</GS0 10 0 R>>/Properties<</MC0 5 0 R>>>>/Thumb 11 0 R/TrimBox[0.0 0.0 334.11 52.8]/Type/Page>> endobj 8 0 obj <</Filter/FlateDecode/Length 6178>>stream
+HdWˮ$;Wjlӏ-
+b] {""QǗ}-ǯx(kf8~GفߺǗ?y??>~9QfG>hhG;™v-\6mYx̫}̫Ձ_+_wQ۵7ӎׄ𶮋`]]+ik+t<ˮ5j,ұu_k=xK.ۇ+sI!^gL<>lpNk.o8*[k`q.0֩>
+1;LcljS)%1V GǺr(
++D[+kZ
+ MSF (6+l\? ΖKG xkl R\4#b^AYv:.4D t&$$ f@UDͩLjDaE蠴"kId[W.8"!t)KA!y#F7`ب&sr8w10
+;2K2Q<!tEf;顝6$I􈺭0:ԉnF&XQ coOG jn`02vR=IP-1/*S¶bG2**Sg93N?XTטzY.!7dwoK
+؂F,RT2hB
+bT5h
+v?iwvϾ-xHO(3$;KΒ%ZlulM$VM9 *iܽf\h8 f|irl_!A ){-aFhdzRgnvť
+v77)5F5JU|[jUog"S^#PS{.!廮H*`7;7 u 5*'id
+]a_#DRz3T1E<%.#eehf_ÿ0nmУsϺVnJWi4ӳ|ѝW}&Rq5ք*\/Wt c|[jߦ]%`% ĪAZ*چIjFNQt|
+OVZu9|)|irG/((_@]q>p Dvotj^)ZY]tĭujv#(Az9VKؖG @xCM!ZV˒T,Åcxnx\MAeAbMDY$#K_xM|?@tz+F+PBq QgdTRTz3y1 Ѥ0§H`SI66 &nU;
+RAK3lŖJլ*a̫>pO#a.1+-N oy)3 Tp<'%J YG室 1'&^1IBءCeQ{y>܁#GܔH"'v['Q8 6T&P0=*'S٫_Za1>q,R|@HGڜbQ K XY n)l,Z7_hXe.{ǂH.D݇mhІ~S<vxܔiW#Uњ b̬ڂL}!WͻY}:p^1utf |"ja\ C )"y-PiIA9s $a抅*&jrGq}/D<Lʸ&Shbť8^ &dM% ЖXZ=VKF=eg7+ʻe -=x)(A2D">y_zy8/-F~;RuM3FULڪg;Ud)皃{ވn8NUrv.N=z+)Hߢ曑rM(o2;+ustZՊ烨.;z=P{/^ڔ
+%Bm
+^z!Po5G
+V9pRيا>X+)Ŧ&7ˆRtHC5L?5,bj
+-&|ډImNJĝ J4N/
+]*J\C
+oRIBx; F~)prO)JQuBГfM`HV=FjǵfdW Brq{. rZ$1F<'x!;Jw:xuU9~ii` 3T'*ѝyfaGa^'hh5
+XOcuz EGh3Ma闡DS2:,vaӊʡsqWȰ@obpg2Ǜ#1+A0^?RR
+i )e9A~Cߐ5BDRV$q[qHXxM-؞r(u@ \$yǢ
+k
+&rk&<gm\X):*0%J78` _yKM;bW56<Zu_4Hȑ)1<)AS+|+ɿQ*̒^3&+hnd\H~I#5J3kJKH۴aac9=y"݄mylʗԨ$/"qnʢ;u wUKY,I#Fr8Gm4Mڴ9?.D,W:2FCǫGku]:ww)v\!›tBRۂSt@GZf
+ȗI`-ϲa]d%6qjnB;UԑZ% bnL8ђ;7tTΨi:qBҡ`H a*e-(038&i^fkå;1$>w0W3&"~}Z }=UtcG@0)TЧpO] n4PHhǑҲ]\yTUTSRȾ.VmH*{70E{{ִ _j/fc\6Isoi.9Pm{XalpBv%F%%2ȫd{ԕC2>lu,
+kǵlQ))FDJ*Y}Dk1@+ ] ]jdn7bxۓw|{
+endstream endobj 11 0 obj <</BitsPerComponent 8/ColorSpace 12 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 6/Length 106/Width 41>>stream
+8;V/CgD.LH#X^D,J(]=;XA]NMmBL]mED_Of7K"3HGig,RTXjB]'si\o]ZA%X7=6oN
+A,3`WNCRgJIC5?hgHqIaBK9[u4\Is0)#t3=?gI~>
+endstream endobj 12 0 obj [/Indexed/DeviceRGB 255 13 0 R] endobj 13 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
+endstream endobj 5 0 obj <</Intent 14 0 R/Name(V\\B
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 24.0
+%%AI8_CreatorVersion: 25.0.0
+%%For: (sxxy-admin) ()
+%%Title: (合肥工业大学_font_zh-ch.svg)
+%%CreationDate: 4/24/2021 2:53 PM
+%%Canvassize: 16383
+%%BoundingBox: 0 0 335 53
+%%HiResBoundingBox: 0.002986131954458 0.01160009063824 334.030234068983 52.8185404892602
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%AI5_FileFormat 14.0
+%AI12_BuildNumber: 60
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([套版色])
+%AI3_Cropmarks: 0 0 334.109985351563 52.7999992370606
+%AI3_TemplateBox: 167.5 26.2999992370605 167.5 26.2999992370605
+%AI3_TileBox: -217.904998779297 -235.200006484985 552.014984130859 288.000005722046
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 14400 14400
+%AI5_RulerUnits: 6
+%AI24_LargeCanvasScale: 1
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: -637 507.799999237061 1 1616 948 26 0 0 46 87 0 0 0 1 1 0 1 1 0 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:-792 -514.200000762939
+%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%%EndComments
+
+endstream endobj 18 0 obj <</Length 38330>>stream
+%AI24_ZStandard_Data(/
+7TQW  ʊTP/Uu6$QW8"L"T]&I+ӲGZLjA6X&CjJ
+ -a<*d}fS qF\q%S*JT )O|8*D$cP$Hqd5>א*q ~<Q҄ja6JUyQ♈h[r8W-
+ELd*ԁeIW"D/ZVf*HJZӅDŽҁF  
+ vBC\˄}f~`8\jDx ϭƨST; PS.T>%(* IǑTZUeBa'3O4gsr^JćAbPBesV!Zyh K 4dd)*i1dzL(ާ5xN5PȔ }BQ\7%JF%IRV~QEiH$w!1Z1q 'rk!ɲeBn7);̸4|V*R$=+J Pm
+ k)
+
+lbکU$2$ǒVYH-LD
+ebv:G  h0
+2, ,,}݄Е7&'
+WYݪ<鼃|By>\SJ3ucR=znzzg)^>Tt>}B<l7pJ|'1GfBt7[7a탲Un׵%A+hxڑDVMukG%eVŕJQ䘊 64S)ʹbᙆ%-PvDJUE z/vkM-:27M!Z $XҎco`T"5%MfncX`8r YNkvXK;>ӎliځqvdZ;jkGƴ64]8GgӼkQv<kʹ~t2&:Y
+wk[(z&JtBZuJuw5^m'z[m;N79뽭vjK'ݝX5-=W;^$pXFPD@@t>BUt2F+˰W<aH^*<c$d5Zn mx
+k>,
+I :Z-~@<(DI1qdЖ%eBկ'][czik,vw;}c$
+Zv;<Qȍ&đ2T]w
+/a0"A)bti$LHih,y]i2tc%B9NjjP@ΫFBT ^2(Es[‰_v+UNCb>"%2,NC6&FByl*,hK7U6Ofm#40CQPiYF˄R6<ܬc&Fƈ#^ ꅑ[}B5} $!w+
+碡",Tkl[zji Hqe< B6=TLPARt1aU3OxrT>'ES!Qd|Hk2iANQ%Mc̝>FNL% f}d$-:|.:͊ 1 %5>aK>9u
+
+?TIG<4p8 T "f f.D
+K!O͓kV+D"V(<Tk./@ʅpfA< lC`"9f$ăRth*B4)
+B(F
+%{+uaZh|Lӗ>4+/DV$^XT0-qJܼ"ZUQugBZ&FqH\:԰2PuN
+Ar#C*H˒wB18's ]M<B 5.|j\~</H9"AX(46Jdab},N!}2d QCL|H᫅jDƥR.aH8z 2nn%x[5/׈&0ԇMLQ 5f3\ "B]H8P
+c8%3s Åi>"瑐aHP@], ť$$<I@ GBp$p$p$tB\ҡ FT,Z< [jAa{CxMAP!>P+=$QAJHJF:Tqh*.ֻX"?\#Z)3(F8:JZ` qЅ aS ?. 5I=%9zW^q S5}htѨ ђGR28lr6O˜J<620ԅdˆ6aI
+cK$a- %!<) CS
+?TGPJ>8 Np6cD'}e!..
+-I$!C'!Cbc2٭P[ /0zX&jPdV(<j
+\&bBY"
+? {!=R2t1e@# xe)ؗkDS䧴L(BʈQ΃BRܧ4UP/p(5 5&x ZQ$b倡N(9MeNC$^fā#ZBK<(Y&_)?
+E>K)FT6?
+WhBans
+8V"FU˄
+%epMY&
+[σ"J:4vJJ fEDT惡LEҍRB^"F4^#Qc
+߂>._( x#6~ᗇ:jŇols͆G<†8H&͐* `8Gơr)++fI/GfaDZrGIBj!6 3*+'E P9h֐6iBYi,&KvЊ$HEqT$TJbrGRzRx@"#Z@\dJi8(X8$j"H0"cʀ%"󎄄&-J!a
+љ̒қM=pye(8LpTs"U*մ^Jk*l#1 偢t)ũ2*$
+lP^CB@@vPL( ҨCidZ&+` b bWڃEt:>jeBɕZqpp%3"&tLC-JN!ST>ڰsޜhxH<\W8X&\R
+0FA‰4+K
+CS.DBŁea!Z"<)H\< N#ᒅIc e%0D
+׹0J#`6/a=6(ڋ-0 (9iRcD\fҰNj7=rRoh+oJ2@p<KcH`&۔\c*D7-q9_]u:N(.g׭޸?N(n Qj7;?g;5}yzbӿj}=[wwknƗӻ_۳۳z޿qv$E] %M('eBi(G;Ϳ:OWzP\(2:PnNT
+ HoKՍ`(є:Lϩ |l8FtDYp</
+9dPX#=W>']b}<Gb
+# @Vtv"$$pJ1?FӆdqU|Ƒ̝~tz3zM~} G@) r@Rs&@eBIMq,
+5 )ov4XB1l>d$X96k#"K<8@ Ccq?^}5pPr}W!t@@˄b1< D$xC yyp='{dB)/q!gf3u?cF3z3
+$3x$.h11}8(0SQ(KE-dP,JKpXj[} hó.q?Pץn
+R`䆏fs()?,У?ʘ\/hEH3G`PRZ2
+p]$w*HE?s><`.wt&`SfdD,^5Ż4>=,BLқBChnH
+'
+#F<}>wQD2|!8!0}dd>s
+j~qMg~qtJSoRqH3 4emrM8q[e@R~qT6#ԁ0Bt Ml,]hT{A/Dtx<,r!U2@`vcD
+*k$D:>s|_p80 rsN&1sLHzPLV8`繟kQ
+g5kũȪSTQ:QN?08MTyWQaNeTh8QNe4c{CBS
+ ǐ6 B(HJ\@< cë4JkAJ02RvZ&h4*0!"1Pi 2X&*{q* NE@4T( \ Eӣڑ r"ـ`)  OC߫Dm:
+AhPBdH⓲L(6QNLiP<F )U?* E1І$JV#
+\KC;+҃Z&Z8P%˄Qbh yg!H%6E&C2&O2T< XW= .-J DC=)Cœ% Tjs`J*Aq,+紒}t"iJ:>HWT= 10<DeBAm@19|Br a,.SJ M\V0Ԁ$@pJ!J~!rDN1Qq(D}H%X\TZ&btC
+
+ 6 .pv4dZiX& 
+ODAa4*R%YkH6"˄"AL'd<񊁀&XT= ˬDQ1P /')Tr0Fsρ4+~`7iHGChQ0x|%RZ"Pʌ4X@-,G516*HY,D* !"˄N"T(_PAz6[a(U|ƼJŭShT8B:QNEb<Mfë@^ּJ(U$0_B+J֤GhBnT%q՛#CQWL(2 E(C:]eBY8?uR)F#<>Wx)!4!,.>"vUƈD$ Fx_x/89|<4AR~!>
+aj`C=HyPu0#j|<Iݏ#|ʏIelĵ6 )ψ:L jԱM:WDiP7*-"KD$<GC,*tH+9HBi "AC )XV~1VIeB!i`( Y/~<\ o}h6di(޸#$A 76bdkxb4_xD; *QkQ?4>B9jq?d&C%
+Uޑ2H84tDRb,&dF !Z&: +H$,|zAO?bxЉhx2C-
+~(ǫԿxI=C)<Đ)! ˄\6mJF!8TXnM!9޼Wz{kiZzKwŮiul__}fxt[w{_TۿصT_}j5~{?Nmϸw:x^\^km뮾Uw:׭O(}jI;v㪩ؾogLgwݳڛ^m=_\NvPHkmN_w>=mw/ޟg>ws~K_JS{ޯV[lߋ/>Xo}Lm}NtR͸oMkqoO?{?y:}ŕ~k]gޯݽ>[;;۷zO(ZO(6jW]v]kmvU;8g{uVw E5U߻V:o:wvwwGov^MIw5}jkiwgw E7vJ7w´j[7
+ߝnn߱~];sQ=pYgδu9K-'q Eu~GZ?|?ϴ4~M7ŹJ};yگ]޺u{=wxkuu]=޿z{_g>_3S]|XϸҟPH}v-6ߞYk}]ixZJ5lk4~׼ζRlU}[RZyi=ݓR<iݵ'Su{wou߹9;דw7~]vLNO(*Iw5Jo+׿_7;hͻӻVmbuR=,Żǯj鴻JZ?+S{BU=gUa?_5S}RoڽWje;NozIiGN;7:sҎz)uO(<PJߧګމ5Vg]gwJK_SxbדR[+ƗV}igbbS<VيִfM/}Jj}^q7]uZ[MNUv/Lcg;mwֿ֮j'Y֚RVmkwm֫'[w+J!iP [ںrv:4޴tjlӛXתWwxB!=q^8Zmֺ1Ύm]žsi}iv5׭>;ͺںkǶ޽׵[M~{W[)Wn[=:~fV]]_5k~ݵթ߭__n׺]+v;?Y~uRjĔ EUg]
+)O}W]vZ<-huKMޚ7狧Sm-|Ѫsζ[+;j~U>oŶR;_{?kbvf鷚~[o
+naߚ^L5v^]Wcl-x[;wO($_cY- t)҉fZ7{ lut^
+u_]>o͵{٧]tLkǗ^-NZ7RtS
+I<ks[Z;V?ݴvvZtB!4[tzwk5v[3V/ž͔V.~Wsv>Gv5gZ/S߬i֌gJZgm
+~[/UlZ]k{~z}3vl+OݶO-ݩ3ky_Mivw'4[^wۼ+obwy>vkn;4S:3wKsYv9ӫiƻa߾ŕvXۚ}\iZSϘs[;׽SJ;8)m4ltW]N(6;ߟkuZ)ӟ^kBpO;sgN{mYOJ;ڧT;8Zn;-۝Nj;:vߵާ5h:1vbӻZ+_[)NwiJsx]o;w|/Y{yl}[?su_}o{{ثxuMwmN(=;j{oM7y~Gճ{_=NڭI;ͷwun^'لcyt꽵gL{W;sG7;q{_?qs=5RjoTx۟^mwq3⭫{6oAfDRfFf
+%1m?A4Kr|S!f R+jjU
+!80QQțSSaĤ UyG,
+Qg@>m dwCu[ ƙ* ?vQ s#g1$`q7W};D3f̋螦WN3kq_܊F8$PidRZ4ǩU*ezxQYTܩ -9S"l=u^qCrqtatdؘW|M!T%"&^V__1ox Vh +SCYns:}2NU6tvz?.?fQ_=:jYR0@bf~i9{tn8ti\D|vFAY?ք{vSoLsÔ\Zոw5Z`:Oeb"\;1\!DP/pt6[bM`] F3al➁`mE?(Sr9yA*v='tA?5rj@ۜșaFtl0[WS1ȁUS7bA]?P3==փ=
+#V!VrkGjf
+S9
+r^9bJ)4A>(h˚L*LW@bJ(@HI)OɠJXu𼄑ې}P%`
+\Ml]FMMJ/Ǽ@
+s
+}kQmêo@,rhy}R5;|fbX086 b(IG
+$a8O`{
+`<"YIm JJ-OY*h|9P"`@;P}_&!>em
+/:(^uhA.`F9-
+T(086A4lǽ }C25u%(Z׉|[
+(enQ=
+h2эG皪㖠M> F}xg6hҫ
+TP`vӓ
+qЊZAV+Ws'IQ3MUg[ 3& >FϧϾO4g@V1H jM~{BKŅ9X+c^F+/ r~ |Xϟt8%@
+fk(1lV/.4%`BVk]Lqk*}9OΎ|B&v7nT܍D^kAPBi+2Eq( `λiqh9_DOjM K}V'$ձ72+-*QFU2)
+Hh^VCaD19H 2
+j
+f(*ևGJG?TT+St`Z)¥Of{v^O@2Q$cO!VW
+}Y00
+yVՋ>Z&I
+^(]\?E&u_kS
+F
+HKVry]Q-EsJz-KUEAb>o|O!yFZLD(߸h?̑V^?^ *Վ-WgX`
+RtLˣ#st6#5 y~ɐ% /n}m3=(_q§IWќGyQ0>S.z7BAD/uMВL$U*_Xp<eqNrdb+"jVcT N%rLd RhDG:Jv>q[t/4}MKL}͓9M >DP]T
+I_/UM䯰l$ʂ +P@f-70i)\
+AP7W8(C85rxwI8@+ >F)W4Y#k.C?\k,}Ѕs8Cuz(fp.N@U.r/ړ)-NVk _2K>/[ީg/ev?*Oe$8ܩz*=G k@|)þD ؖ#/'T%0YF>uDDٻڀ^8JD=:xG=s[PL,F;TKu_ 5Rڠ%5YºGמѥNH}RCfnDUhؽ n`"}=)Aγ9amN?n]<#?npw^f.=>^۔P:<T=TBQ9U>i&Y&Lo!j5P3=ȊV'oxļϏؕ5&Ϩ$L7t0C–tVgь:v .JV&c^3%ɿ|3zF) ;' ^?exSȐ;kHLe@gp!3(`J۫-y$c ^ٰBSx0Zҹc<~KzEޭxQAQr4E/Y}`>}?HE>b<>uC-"8HGnL$^)Ђ J!nO%K#g`A1CTAN\-PB'ߠ9D*ㆠ$/(1_p%'$*q
+[ 0!+"%sK
+=="c&ϳ:Wi*CߢT-
+6{;,qXvxSZA800L2DZx{&6=[ZXYꖣhΥߍX@- E lٯk>̌UB~6% ƙ_ 1bp*?+zxN )Dn>%f kOJk1' R~>͏w6=PbAӻN TæRMs4Du<aqGU} 27׫zv޳T-)φ+* z'A
+>@л1M?qJ2[CN1+[6}f--Y/
+ 3}C~)>ax <Xn&r^~ؓԞW,9@iDlϵ $ɱ.n`<YO_ ˂F؄"Xs,~嫯[#ֳ*/+0 _aBe.q!\䋶uI/D#S_Zj0x̛@SݨZ͵(24^0Z馉|h(,x5h`c%Ӿ_'+ ~y@ ;Q^eGB|d]r
+B,K|g`kg*@]&ME:{in;cY-g.q4ƚ޻>Ԗ
+x4|3f];A`v᢭JhG]QFj^
+C
+r
+F1ۑHf;(sh@olJ:GCXx:BڕM/]1iܜy!NWĂU.TU&0J
+6 ZU%fCL]9
+*[<{N űS,B6_n50#+M,1).Ș&e1c,FuhR ScRNJ'?'ML] !M*4!mIM`p]`;p8V:&E$pMU49M[TG_%&-=ngD]I%xNRO9cKO4PT
+)<G{P>eɼàXgS)}8pLe$N2+&gź$MH6HP؉a
+n4ZNwwG&+"X
+kiCJ lLy)׽\27IK_*ΓF%i'BS ')r!Et޼t͝xYGLR!BW861xm|2:G󭏸4}7^R/s1Cf%wpQ'Oҿ[juJ;$
+N|m%,CEAP0d4p <8h?B}H ݠC| 6\7f= 3bu+v;=!
+
+JB#` H hdT
+с"Yߺ{7v$
+%4;]FļB9_&DŽ=!6%]+(gB'3vV ZECP_̀ OHv5SDtH +jo H]q7Df4=
+7
+K"(ߍ{.wlm*π(@%5OԁZBy
+*JHiV#nG!gAʸqc3wXg&dޚqNPXذ5%pgZgU/%*tJA1Q9]>8b ``kt
+358Q9=i`5e`Wg0l+Ek.;]?\+`cG#:/V#_8bg(.uM<=j0͹^jڮ ɬw2m-'Qp+!ؑI#w0!4޲,A/{$ _u6Y뭟0/}8S"=Y$ 8ƙLe0_yl
+H7 r 0E, H`@$JWL̈e)4&~FzQ7!W]d9$6
+$lN@[uKaAn/*F* 4Mj)B3A]=e2`iLdeǞ΁gʔk~NP]9Tw[a|lJ1},N>XQn6)5!lj3T 0L/1;
+O| X>_0dYWnpcJ6BYwF 2 Jw dc񂿜MJ%׉_]>WSsߋV:FF
+IŔP Hb/r|v1
+A%$Ϧ|~ŠK_28YBx,}!^iM/iJXuؐ<%*n|7R%(}EKs;KߒE_͉)1@C313bp4hʝ.qӐnۙ/и~pD$q堏' Fwqޓᶦ57ɨ_3 ɧ(&,A嘙'3 ct2D3h"檦M>&|E'A[4C"5fb ZAxdv^c E6!.b;O!NɊp9
+A'P3Q9y o !+ Rm*0zMO$|E>/-}p.rpw)r]Q_xN7$+z}XcXƷBԷS뻅#h@/҃eO],SL $vgojLSdz8I|]L+!+=nC/e)$wɊ: lqg0*\-EI|@; 6R9aC
+Vdϼl39s:5Ԅfq f"c!qDScO'`7_[]\ʡ4(;]K|ӸL>^>6.3.HfD*Y`xJa'k#D5K_&P.`eO ʢ(刂4.qm[>.3{ya.u+~G\!KޜDgmh;BʩMJr9qy{ WWKPgkЇ_'3;$QC=xj[9z0>PJg4xv&--x%8Mt(ɃgFd$bNMXXQZe9uЎLЌ<0!CVT,$qYHpO sovs/͈ߵmUY\.2T|wa"Ӑ f8:1ZEu#
+fuUe6(R?ҋCb sN?Hh-bQyD1.qR⃜7`!% fS3;EeÌIYr11YOvꥧ==bklr5OW,3r-W;؅ Cx9<Bh:f/<
+v8-Wlz2nzː 7&5|@5m7\5:h#+Q o3 AZ;DW񓨐~oC`=#
+/Mne0𗧊W<!,Og Y:hw@i٩okbx#.-5l\ 72 BF1)Rѣ@};2o YJ
+ H+ .OzJf LXwqy&Mь;\f
+}D #&pFNZMQ,]W,|P&hsS~~QcwU daiImaR'yA,،KuWkLYx@:QbLi2WQ||H7g3
+S+{}{Ԧؖ{~K4KLԢ-kOM
+PYTl1kSrƺUV/OkKB%9AtҰ'$<1m@Z˃I8e.+'q LJh#;"}~!uҖ 'Nev_AcF¨ޑrG {mz\F]sYMpGFC!=7X):3{O $pD*d|i"6qYry{P9C}{{ǵU]wpi`;GaOvS9|)H0S &ѝ? x &`펍iI./'in|Gu:5|-E֝/i,~FMɘ1>~-
+W!PzV1R G6Zt V8ޗQ2)a4O$~pA b-uݘW6-g'lA
+/v'ȻVK+{쐦{eNH49006(
+"&
+~Owռc*<?K>yBJu33|y^cE9D h;R |Qvn},+7Rj4DG?$Hs#p);^~MYc3ɀ!`jAcVTJѸ+r4x V
+a#,M#}9KD.[q95!>Y;mø,98&=';Y>mqD7TE,9Zrͬ3N,i
+6/NLQ/N}h;r;3gޅPZo._"e4#hh)Q}GQ4!cd>CD?63вw{D .oBGFKgԐF
+u;H2-.pxVCj.xB  q a"A~pQ* .}Xj=_ 3 1N9Uo{SSᅇtdNo(q  !
+.=D@k3̏˧|?)Idpـ$qiheVD1ߟI7ĕ@
+Z
+gҦQI1&g2
+o. 7%7%k<;8oҘ#'5]c;1
+F=^!`y͔ju(]0 k"s}.znL1ǎuJreGJ)ynS%H,4O[
+=T:%*wU.c4ʋ`)߉yhp9, W zUف@Dꪝ:)LmoS^Z ,5"uT\_vd? 8 Z-by.J}BfW
+A
+jԡׯkȋ="+nU,\
+ 9pƈ+FD势fH"հ1Vѕ59R 3'ĩCQD.;GaƖd- д4cFjDzާ
+4`eձ3=z:ϖ_L7=; !cec²)N:j\PMA _^H0u0F؍b%ZZI:`Kc
+uV4wS7ardrmN5o')A<eI٩5ӭ@kj*[5,¯L[RQ
+߉tNtYOUKQL\hYC
+I`Vc=սy G:e4j9cv !lKU#d `H4pn=m#>;[&pb-yEՁNJPD8n兀:#>M]`2+k=P:KXwl|pRWPMl %I9GĆ Iun̸(h2RY,0Y$JvfLȠGu!y @ka+ʽ&sziw6
+D$ ŨW%~*x*ZjFWvQjf3|DWbQjM4nį7IaǐnR@'XjU
+ƃXp5R2To@<xz$F)G/:qz'3kǮa-A-A{?_A;*Mz䬕*8dkPuv<opjQ&Rد$3f/,19"B{FЗ"yOL%(
+ǜGU}p5Z
+%'q8f\?R8V@mn
+Ƣ}YU<( 9
+\71S[Œ( [|gS=0Ϛ [k/YUPep"ןve)<o`O!As%a3 wՖ4~b>N"RJ9^CW YG^l+mpZ d#fNn2f/
+A0W=?LkF
+eTjq<xut=2\ YT5'俀_K yRةzjf϶IޞP̕<M-(
+J}NXƷʸӘ͋^wsj64%<eŅWڌ[UǤǖMZq$|KBl߇aFd-dX>mDŽl!ADla;K۪v'ET쉈kyJM(Po4%eU"Ƶ31.1ZxDTZ)iaxƞPhJ3nuu oX]%^["lEEMmQDBtR)m8 ~.{^m8@8ߵRK=vtdfugT"/Jj
+_خ
+s\' 6BԸkO74Jct3{ac^<bYJeQRZϙSYɔc3YT4Vad1b[ Vq Z) b}\z>]E}837'u,7pHW :4[r"mܞHx>tQ}F"kCW*9Y2]bD!lLTd'UUнqR,4ތMd]Ryf>GgKWYXHuCty[ietA\&<JxH"ݐ;a$bľ #UTB,)7!O !J<EӬh!RVA.#GMɐ=;#^U}O˗"UJyJ) E>OΞ[d|7dќ|/=/Gp ]CӼ1ۡ_~{9{.>IbTN,5QK7vG2Į"bb
+MNUЌt챕U0TfG5 6[fqIJGKD<F$ YSO3l'ɰpHk,Ge=V>VYM:jhfLpHR//nc|E7%Y<%OoƳlƆ'=ˆ?SFBu" r/e:CdTe}c& РAÂ(`* &P` &@b8`8DX
+)#w3E
+80L)g
+"
+iⰞ{R(k8TCLfb~ h-CgNjhGkΈN]A"D=s0dyLyVߦ9gE0X$WB/AhB9avoxV$v1>"帿Wg`]wÂ]PG`}&o3#)nms
+VыΑGf+D
+ܡ c @dAC'HK&pg"_N?/زU"Fo 2@9qMz%1#au`=D'[¬!~6WfF/Ob-U>sOow<,Se5c$:WI&a%$|VxkLD& 0o
+W/g?u_)˿$S<[XKˡ lM.͒0\+gn ?k<ͰnUJ(mlS&0="S6 rW@_9ؙ{OK5ׂ9z;Z5= ׈+'edřWθ#ה(r_uiI(}5ct(K R&z>= R0#o4
+89c\ .~pVKV'T,3む CM6gPZwt{QO2U{RhzlI'cxqM5LdzBԸ&ls{gq,r:5&pd_meXXBL‰t0vU&WF,͗oQ _&fLTRٳ+W(LEkã]X<n8Y!j:{zUx[a&{4L͸(ͥ=-Wݫ$*.xuzYJ1Vl=Lk8"9HuEys!<&V^:؇*h`咥/F!ylŲQ[]f $)4z=ƫE2h'5.nԎUhp٥/$dz-ш볮;3v8l4z+s 7@V
+>io-MΌp<جM6ln1mљDױs/TAyd#X\C  >; HDԭtc?P>Fk^6VapRhvxMCs"n{G U}ʆ~ԣLp᜝{
+Cc21lIz*> ;xԜM_>^
+=#Ƌ g3`m<e=I_"]z&,(>f*nO2*7hLt. ֱJf|Raxx,Q!Cf5&y:T^)J9}αN~OG'V< #N_.őhR1_E'ԨBЙ1CZ0;n:r^m?}rcQ<nι+m)o H#Xb
+JkNɐ~9EZ6{QZ8Aq1B$qXGf!vebo~E#y5 uc`j:9D"M&7̑f$wl;ZˎFf&(BtzX-kr^E,ҙ2/ϸ^!DNtsD2Z$flWYe(]^PIqcS]CAIP/ݩPiN
+m xבմuv͇Շu%Aug~Txs^  *j]q5a1LeoŘCyu|w͛<!:6x⭸x񇴥5*߿DdulVcŰ^7 KFe7@5i$0wFo.~M0jK |i$ZJĞ } rdipDO0[Rèvm r4%:E11#"zMtUQ~r v"JRm#B+_trF mө9ҿχ>xG$[1+P:TQ1kۻ; bIL`pKIu]@J6$#qQrY=?.\0Mg<: Yu4KG>c/pB*$}O=r30h(~l1*? )?ЍTgȄI󗃌r*ZHI0j'g
+endstream endobj 6 0 obj [5 0 R] endobj 19 0 obj <</CreationDate(D:20210424145348+09'00')/Creator(Adobe Illustrator 25.0 \(Windows\))/ModDate(D:20210424145348+08'00')/Producer(Adobe PDF library 15.00)/Title(T]NY'[f
+0 20
+0000000000 65535 f
+0000000016 00000 n
+0000000144 00000 n
+0000012145 00000 n
+0000000000 00000 f
+0000019617 00000 n
+0000059836 00000 n
+0000012196 00000 n
+0000012560 00000 n
+0000019920 00000 n
+0000019807 00000 n
+0000018808 00000 n
+0000019055 00000 n
+0000019103 00000 n
+0000019691 00000 n
+0000019722 00000 n
+0000019993 00000 n
+0000020137 00000 n
+0000021453 00000 n
+0000059859 00000 n
+trailer
+<</Size 20/Root 1 0 R/Info 19 0 R/ID[<8DE347D5383803439F4A8EC32C073A64><BA00001CA5493A4A90090E6EF2917FE9>]>>
+startxref
+60073
+%%EOF
diff --git a/macros/xetex/latex/hfutthesis/hfutsetup.tex b/macros/xetex/latex/hfutthesis/hfutsetup.tex
new file mode 100644
index 0000000000..5d22f22bee
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfutsetup.tex
@@ -0,0 +1,121 @@
+% !TeX root = ./main.tex
+
+\hfutsetup{
+ title = {合肥工业大学学位论文模板示例文档 \hfutthesisversion},
+ title* = {An example of thesis template for \\ Hefei University of Technology \hfutthesisversion},
+ stuID = {学号},
+ author = {XXX},
+ author* = {Yin Zhenhao},
+ speciality = {数学与应用数学},
+ supervisor = {XXX~教授},
+ % date = {2021-05}, % 完成日期默认为当前日期 格式:yyyy-mm
+ % secret-level = {秘密}, % 绝密|机密|秘密|内部交流,注释本行则公开
+ % secret-year = {10年}, % 保密年限,必须与secret-level搭配使用
+ %
+ % 数学字体
+ % math-style = GB, % 可选:GB, TeX, ISO
+ math-font = xits, % 可选:stix, xits, libertinus, newcm, cm, lm, newtx
+ %
+ %
+ %
+ % Parameters for Non-bachelor's option
+ %
+ clc = {分类号}, % 分类号
+ %
+ %
+ %
+ % Parameters for master's(docotoral) option 和 答辩委员签名页 参数
+ %
+ % advisor = {XXX~教授}, % 用于“专业硕士-中文内封页” 校外导师的填写,默认空
+ research = {研究方向}, % 研究方向,默认为 “研究方向”
+ signchairman = {专家工作单位,职称,姓名}, % 答辩委员签名页 主席: 默认为空
+ signmember = {XXX,XXX,XXX \\ XXX,XXX,XXX}, % 答辩委员签名页 委员: 默认为空
+ signsupervisor = {合肥工业大学,XXX,XXX}, % 答辩委员签名页 导师: 默认为空
+ %
+ %
+ %
+ % Parameters ONLY for bachelor's option
+ %
+ ugtype = {论文}, % 封面第一栏“类型”的选项:设计或者论文,默认“论文”
+ hfuteryear = {2017级}, % 入学年份
+ department = {数学学院}, % 学院名称
+ %
+ %
+ %
+ % Parameters ONLY for doctoral option 和 提名页 参数
+ %
+ % applydegree = {}, % 申请学位:理学博士|工学博士, etc. 默认“理学博士”
+ % school = {}, % 默认培养单位:合肥工业大学,难道你想填其他的?
+ defensedate = {2021年6月}, % 答辩时间:格式 “2021年6月”,默认为空
+ % phdchairman = {}, % 提名页 答辩委员会主席: 默认为空
+ % phdmember = {}, % 提名页 评阅人: 默认为空
+ % 关于Ph.D的专家清单页,请仔细阅读hftuthesis-doc,详见`chapters/expertspage.tex`
+}
+
+
+% 加载宏包
+
+% 定理类环境宏包
+\usepackage{amsthm}
+
+% 插图
+\usepackage{graphicx}
+
+% 三线表
+\usepackage{booktabs}
+
+% 跨页表格
+\usepackage{longtable}
+
+% 算法
+\usepackage[ruled,linesnumbered]{algorithm2e}
+
+% SI 量和单位
+\usepackage{siunitx}
+
+% 参考文献使用 BibTeX + natbib 宏包
+% 顺序编码制
+% HFUT学位论文样例 参考文献的著录格式
+\usepackage[sort]{natbib}
+\bibliographystyle{hfutthesis-numerical}
+
+% gbt7714-2015 参考文献的著录格式
+% \usepackage[sort]{natbib}
+% \bibliographystyle{gbt7714-numerical}
+
+% 备用方案(优化过的 gbt7714-2015)参考文献的著录格式
+% \usepackage[sort]{natbib}
+% \bibliographystyle{hfutthesis-graduate}
+
+% 参考文献使用 BibLaTeX 宏包
+% \usepackage[style=hfutthesis-numeric]{biblatex}
+% \usepackage[bibstyle=hfutthesis-numeric,citestyle=hfutthesis-inline]{biblatex}
+% \usepackage[style=hfutthesis-authoryear]{biblatex}
+% \usepackage[style=hfutthesis-bachelor]{biblatex}
+% 声明 BibLaTeX 的数据库
+% \addbibresource{bib/hfut.bib}
+
+% 配置图片的默认目录
+\graphicspath{{figures/}}
+
+% 数学命令
+\makeatletter
+\newcommand\dif{% % 微分符号
+ \mathop{}\!%
+ \ifhfut@math@style@TeX
+ d%
+ \else
+ \mathrm{d}%
+ \fi
+}
+\makeatother
+\newcommand\eu{{\symup{e}}}
+\newcommand\iu{{\symup{i}}}
+
+% 用于写文档的命令
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\DeclareRobustCommand\pkg{\textsf}
+\DeclareRobustCommand\file{\nolinkurl}
+
+% hyperref 宏包在最后调用
+\usepackage{hyperref}
diff --git a/macros/xetex/latex/hfutthesis/hfutthesis-doc.pdf b/macros/xetex/latex/hfutthesis/hfutthesis-doc.pdf
new file mode 100644
index 0000000000..25c1e70ddd
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfutthesis-doc.pdf
Binary files differ
diff --git a/macros/xetex/latex/hfutthesis/hfutthesis-doc.tex b/macros/xetex/latex/hfutthesis/hfutthesis-doc.tex
new file mode 100644
index 0000000000..ac4c1c6256
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfutthesis-doc.tex
@@ -0,0 +1,732 @@
+% !TeX encoding = UTF-8
+% !TeX program = xelatex
+% !TeX spellcheck = en_US
+
+%
+% Copyright (C) 2015-2021 by USTC TeX Users Group <https://github.com/ustctug>
+%
+% hfutthesis developed by HFUT TeX Users Group <https://github.com/HFUTTUG> on the
+% base of ustcthesis <https://github.com/usthtug/ustcthesis>.
+
+% This file 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.
+%.
+
+\documentclass[a4paper]{ltxdoc}
+
+\usepackage[UTF8]{ctex}
+\usepackage{unicode-math}
+\usepackage{caption}
+\usepackage{booktabs}
+\usepackage{xcolor}
+\usepackage{listings}
+\usepackage[perpage]{footmisc}
+\usepackage{hypdoc}
+\usepackage{bicaption}
+\makeatletter
+
+% 设置字体
+\IfFileExists{/System/Library/Fonts/Times.ttc}{
+ \setmainfont{Times}
+ \setsansfont[Scale=MatchLowercase]{Helvetica}
+ \setmonofont[Scale=MatchLowercase]{Menlo}
+ \xeCJKsetwidth{‘’“”}{1em}
+}{}
+\unimathsetup{
+ math-style=ISO,
+ bold-style=ISO,
+}
+\IfFontExistsTF{xits-math.otf}{
+ \setmathfont[
+ Extension = .otf,
+ BoldFont = *bold,
+ StylisticSet = 8,
+ ]{xits-math}
+ \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
+}{
+ \setmathfont[
+ Extension = .otf,
+ BoldFont = XITSMath-Bold,
+ StylisticSet = 8,
+ ]{XITSMath-Regular}
+ \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
+}
+
+% 定义一些命令用于写文档
+\newcommand\TeXLive{\TeX{} Live}
+\newcommand\unicodechar[1]{U+#1(\symbol{"#1})}
+\DeclareRobustCommand\file{\nolinkurl}
+\DeclareRobustCommand\env{\texttt}
+\DeclareRobustCommand\pkg{\textsf}
+\DeclareRobustCommand\cls{\textsf}
+\DeclareRobustCommand\opt{\texttt}
+
+% 在 doc 的基础上增加 option 的描述
+\def\DescribeOption{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+ \Describe@Option}
+\def\Describe@Option#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+ \SpecialEnvIndex{#1}\@esphack\ignorespaces}
+\@ifundefined{PrintDescribeOption}
+ {\def\PrintDescribeOption#1{\strut \MacroFont #1\ }}{}
+
+% 调整列表的格式
+\setlength\partopsep{\z@}
+\def\@listi{\leftmargin\leftmargini
+ \parsep \z@
+ \topsep \z@
+ \itemsep \z@}
+\let\@listI\@listi
+\@listi
+
+% listings 的样式
+\lstdefinestyle{lstshell}{
+ basicstyle = \small\ttfamily,
+ backgroundcolor = \color{lightgray},
+ language = bash,
+}
+\newcommand\shellcmd[1]{\colorbox{lightgray}{\lstinline[style=lstshell]|#1|}}
+\lstnewenvironment{shell}{\lstset{style=lstshell, gobble=2}}{}
+\lstnewenvironment{latex}{%
+ \lstset{
+ basicstyle = \small\ttfamily,
+ frame = single,
+ gobble = 2,
+ language = [LaTeX]TeX,
+ }%
+}{}
+
+\hypersetup{
+ allcolors = blue,
+ bookmarksnumbered = true,
+ bookmarksopen = true,
+}
+\makeatother
+
+
+\begin{document}
+
+
+
+\title{\cls{hfutthesis} 使用说明}
+\author{
+ \href{https://github.com/HFUTTUG}{HFUTTUG}
+ }
+\date{v1.0.4\qquad 2022-04-09}
+\maketitle
+
+
+
+\section{简介}
+
+本模板 \cls{hfutthesis} 是合肥工业大学本科生和研究生学位论文的 \LaTeX{}
+模板, 按照最新版的《\href{http://xwgl.hfut.edu.cn/2021/0419/c1975a253949/page.htm}
+{合肥工业大学研究生学位论文写作规范}》和
+《\href{http://xcjwb.hfut.edu.cn/53/cc/c1144a21452/page.htm}
+{合肥工业大学本科毕业设计(论文)工作实施细则}》(以下统称《规范》)的要求编写,兼容最新版的 TeX Live、MacTeX 、MiKTeX 发行版,支持跨平台使用。
+
+本项目在 \href{https://github.com/ustctug/ustcthesis}
+{ustctug/ustcthesis} 基础上编写,\href{https://github.com/LaureatePoet}{LaureatePoet}和\href{https://github.com/HowardZorn}{Fw[a]rd} 基于合肥工业大学本科生和研究生学位论文的相关要求,开发了本模板的 v1.0.0 版本。
+
+下载地址:
+\begin{itemize}
+ \item GitHub Releases:\url{https://github.com/HFUTTUG/HFUT_Thesis/releases}
+ \item Overleaf 模板:\url{https://www.overleaf.com/latex/templates/hfut-thesis/ythwdqdkpvkp}
+\end{itemize}
+
+用户在使用 \pkg{hfutthesis} 模板前,应先阅读学校关于毕业论文的相关规定。
+如果在使用的过程中遇到问题,可以阅读
+\href{https://github.com/HFUTTUG/HFUT_Thesis/wiki}{常见问题},
+或者在 \href{https://github.com/HFUTTUG/HFUT_Thesis/issues}{GitHub Issues}
+中反馈。
+
+\section{编译方法}
+
+
+\subsection{文件组成}
+本模板的主要文件如表~\ref{tab:files}:
+\begin{table}[htb]
+ \centering\small
+ \caption{模板的文件组成}
+ \label{tab:files}
+ \begin{tabular}{lll}
+ \toprule
+ 类别 & 文件 & 说明 \\
+ \midrule
+ 模板文件 & \file{hfutthesis.cls} & 模板文件 \\
+ & \file{hfutthesis-*.bst} & \BibTeX{} 参考文献表格式 \\
+ & \file{hfutthesis-*.bbx} & BibLaTeX 参考文献表格式 \\
+ & \file{hfutthesis-*.cbx} & BibLaTeX 参考文献表格式 \\
+ & \file{figures/*.pdf} & 校名和校徽图片 \\
+ \midrule
+ 使用说明 & \file{hfutthesis-doc.tex} & 模板使用说明的源代码 \\
+ & \file{hfutthesis-doc.pdf} & (你正在阅读的)模板使用说明 \\
+ \midrule
+ 示例文档 & \file{main.tex} & 主文档 \\
+ & \file{hfutsetup.tex} & 配置文件 \\
+ & \file{chapters/*.tex} & 示例文档的各个章节 \\
+ & \file{figures/} & 放置图片的目录 \\
+ & \file{bib/hfut.bib} & \BibTeX{} 示例数据库 \\
+ \midrule
+ 其他 & \file{README.md} & 基本说明 \\
+ & \file{HFUT_Thesis.json} & 更新日志 \\
+ & \file{latexmkrc} & latexmk 的配置文件 \\
+ & \file{Makefile} & GNU make 的配置文件 \\
+ & \file{.vscode/} & VS Code 的配置文件 \\
+ & \file{build.lua} & l3build 的配置文件 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+示例文档包括了常用的 \LaTeX{} 命令,建议新手从此入手,用自己的内容进行替换。
+
+
+\subsection{依赖宏包}
+
+本模板要求使用 TeX Live、MacTeX 或 MiKTeX 不低于 2017 年的发行版,
+推荐升级到最新的版本。
+
+模板直接依赖的宏包有:
+\pkg{amsthm},
+\pkg{graphicx},
+\pkg{booktabs},
+\pkg{longtable},
+\pkg{algorithm2e},
+\pkg{siunitx},
+\pkg{natbib},
+\pkg{hyperref}。
+
+另外,模板还对其他宏包提供了支持,包括:
+\pkg{amsmath},
+\pkg{biblatex},
+\pkg{nomencl}等。
+这些宏包并非必需,用户可以根据需要选择使用。
+模板在检测到这些宏包被调用后会自动进行配置。
+
+注意,本模板\emph{不}兼容的宏包有:
+\pkg{amsfonts},
+\pkg{amssymb},
+\pkg{bm},
+\pkg{cite},
+\pkg{mathrsfs},
+\pkg{newtx},
+\pkg{upgreek}。
+
+
+\subsection{开始编译}
+
+\begin{enumerate}
+
+\item GNU make \\
+Linux/Mac用户,可以直接使用 GNU make 工具,这是最简单的方法。
+编译论文 \file{main.pdf}:
+\begin{shell}
+ make
+\end{shell}
+编译说明文档 \file{hfutthesis-doc.pdf}:
+\begin{shell}
+ make doc
+\end{shell}
+另外还可以用 \shellcmd{make clean} 清理辅助文件。
+
+\item |latexmk| \\
+Windows 用户可能无法使用GNU make,使用 |latexmk| 也是一个比较简单的方法,
+配置文件由 \file{latexmkrc} 给出,其参数设置为 |-xelatex|,用户编译论文
+只需使用命令:
+\begin{shell}
+ latexmk -xelatex main.tex
+\end{shell}
+编译说明文档:
+\begin{shell}
+ latexmk -xelatex hfuthesis-doc.tex
+\end{shell}
+清理辅助文件可以用 \shellcmd{latexmk -c}。图形界面用户应参考编辑器的使用说明。
+
+\item 手动编译 \\
+手动编译是最繁琐的方法,用户可能需要运行多遍,以确保论文的交叉引用等信息全部正确。
+
+编译论文 \file{main.pdf}:
+\begin{shell}
+ xelatex main.tex
+ bibtex main.aux
+ xelatex main.tex
+ xelatex main.tex
+\end{shell}
+编译说明文档 \file{hfutthesis-doc.pdf}:
+\begin{shell}
+ xelatex hfutthesis-doc.tex
+ xelatex hfutthesis-doc.tex
+\end{shell}
+\end{enumerate}
+
+
+
+\section{模板设置}
+
+
+\subsection{文档类参数}
+\DescribeOption{degree}
+选择学位,支持 \opt{bachelor}(默认),\opt{master},\opt{doctor}。
+\begin{latex}
+ \documentclass[degree=bachelor]{hfutthesis}
+\end{latex}
+
+\DescribeOption{degree-type}
+学位类型。可选:学术型 \opt{academic}(默认),专业型 \opt{professional}。
+\begin{latex}
+ \documentclass[degree-type=professional]{hfutthesis}
+\end{latex}
+
+\DescribeOption{language}
+论文全文的主要语言。可选:\opt{chinese}(默认),\opt{english}。
+\begin{latex}
+ \documentclass[language=english]{hfutthesis}
+\end{latex}
+
+\DescribeOption{output}
+输出 PDF 的类型:
+\begin{itemize}
+ \item \opt{print}(默认):用于双面打印纸质论文
+ \item \opt{electronic}:单面,并保留超链接颜色
+\end{itemize}
+\begin{latex}
+ \documentclass[output=electronic]{hfutthesis}
+\end{latex}
+
+\DescribeOption{section-style}
+章节标题的样式。可选:\opt{chinese}(默认),\opt{english}。
+\begin{itemize}
+ \item \opt{chinese}:汉字序号
+ \item \opt{arabic}:数字序号
+\end{itemize}
+\begin{latex}
+ \documentclass[section-style=arabic]{hfutthesis}
+\end{latex}
+
+
+\subsection{字体设置}
+模板默认会自动根据操作系统配置合适的字体,
+\DescribeOption{fontset}
+用户也可以通过 \opt{fontset} 时指定使用预设的字库,如:
+\begin{latex}
+ \documentclass[fontset=windows]{hfutthesis}
+\end{latex}
+允许的选项有 \opt{auto}(默认)、\opt{windows}、\opt{mac}、\opt{ubuntu}、\opt{fandol}和\opt{none}。
+具体使用的字体见表~\ref{tab:fontset}。
+用户也可以设置为 \opt{none} 并自行配置字体。
+
+\begin{table}[htb]
+ \centering
+ \caption{模板预设的字体}
+ \label{tab:fontset}
+ \begin{tabular}{cccc}
+ \toprule
+ \opt{windows} & \opt{mac} & \opt{ubuntu} & \opt{fandol} \\
+ \midrule
+ Times New Roman & Times New Roman & TeX Gyre Termes & TeX Gyre Termes \\
+ SimSun & SimSun & TeX Gyre Heros & TeX Gyre Heros \\
+ Courier & Menlo & TeX Gyre Cursor & TeX Gyre Cursor \\
+ 中易宋体 & 华文宋体 & 思源宋体 & Fandol 宋体 \\
+ 中易黑体 & 华文黑体 & 思源黑体 & Fandol 黑体 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+然而自动配置的字体只能保证编译通过,但是还存在一些问题:
+\begin{enumerate}
+ \item 在其他平台上配置的 TeX Gyre 系列字体,虽然在风格上比较接近 Times 和 Arial,
+ 但是毕竟跟《规范》的字体不完全一致;
+ \item Fandol 字库的字形较少,常常出现缺字的情况;
+ \item 华文字库和 Fandol 字库虽然不违反《规范》的要求,
+ 但是其字形跟中易字库有所差别,可能被审查老师认为格式不符合要求。
+\end{enumerate}
+
+所以建议在提交最终版前使用 Windows 平台的字体进行编译。
+
+\subsection{更多设置}
+\DescribeOption{\textbackslash hfut@define@key}
+本模板对接口进行了初始化定义,如有更个性的需求,可在\file{hfutthesis.cls}中查看接口及缺省值并进行修改,如:
+\begin{latex}
+ \hfut@define@key{
+ degree = {
+ choices = {
+ doctor,
+ master,
+ bachelor,
+ },
+ default = bachelor,
+ },
+ ...
+ }
+\end{latex}
+修改\opt{default}的值为\opt{doctor}、\opt{master}和\opt{bachelor},即可修改学位默认类型。
+
+\begin{latex}
+ \hfut@define@key{
+ ugtype = {
+ default = {论文},
+ },
+ ...
+ }
+\end{latex}
+修改\opt{default}的值为“其他名称”,ugtype的默认值即修改为“其他名称”。
+
+
+\section{论文内容}
+\subsection{内容顺序}
+根据《规范》,研究生论文和本科生论文在内容的要求上有所差异,用户需要根据\file{main.tex}中的注释提示进行调整。
+
+研究生论文的内容按照以下顺序排列:
+
+\begin{description}
+ \item[maketitle] 封面,原创性声明及授权使用说明
+ \item[frontmatter] 致谢,摘要,目录,图、表清单,(符号说明)
+ \item[mainmatter] 正文章节,参考文献
+ \item[appendix] 附录
+ \item[backmatter] 已发表论文列表
+\end{description}
+
+本科生论文的内容按照以下顺序排列:
+
+\begin{description}
+ \item[maketitle] 封面,原创性声明和授权使用声明
+ \item[frontmatter] 摘要,目录,图、表清单,(符号说明)
+ \item[mainmatter] 正文章节,参考文献
+ \item[backmatter] (已发表论文列表),致谢
+ \item[appendix] 附录
+\end{description}
+
+注:
+\begin{itemize}
+ \item 示例文档 \file{main.tex} 中的致谢、目录等章节的顺序,是按照本科生论文的格式组织内容的,因此研究生需要手动调整顺序。
+ \item 在某些部分中,本科生、硕士生和博士生的内容要求有细微的差异,需根据\file{main.tex}中的注释进行修改。例如,博士学位论文在原创性声明前有专家清单页,需去除注释。
+\end{itemize}
+
+
+
+\subsection{封面}
+
+“封面”的名字让人有些混淆,它既可以指由印刷厂统一制作的硬皮封面(cover),也可
+以指书打开后的第一页(title page)。在这里指的是后者,所以本模板从 title page
+开始。
+
+\DescribeMacro{\maketitle}
+\DescribeMacro{\copyrightpage}
+封面和声明页分别由 \cs{maketitle} 和 \cs{copyrightpage} 命令生成,
+其中的各项信息在\file{hfutsetup.tex}中的\cs{hfutsetup} 中修改,如:
+\begin{latex}
+ \hfutsetup{
+ title = {论文中文题目},
+ title* = {Thesis English Title},
+ }
+\end{latex}
+模板提供的选项见表~\ref{tab:covercmds}(部分),
+\begin{table}[htb]
+ \centering\small
+ \caption{录入封面信息的命令}
+ \label{tab:covercmds}
+ \begin{tabular}{lll}
+ \toprule
+ 命令 & 命令(英文) & 说明 \\
+ \midrule
+ \opt{title} & \opt{title*} & 论文标题 \\
+ \opt{stuID} & - & 学号 \\
+ \opt{author} & \opt{author*} & 作者姓名 \\
+ \opt{speciality} & \opt{speciality*} & 学科专业 \\
+ \opt{supervisor} & \opt{supervisor*} & 导师姓名 \\
+ \opt{secret-level} & \opt{secret-level*} & 密级 \\
+ \opt{secret-year} & - & 保密年限 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+有几点说明:
+\begin{itemize}
+ \item \cs{hfutsetup} 使用 \pkg{kvsetkeys} 机制,配置项之间不能有空行,否则会报错。
+ \item 其中带 |*| 后缀的选项用于设置英文封面。
+ \item 导师姓名 \opt{supervisor} 允许多个姓名,使用“,”(西文逗号 U+002C)隔开。
+ \item 完成时间 \opt{date}默认为当前日期,如需更改请取消注释并使用 ISO 格式。
+\end{itemize}
+
+
+\subsection{摘要和章节}
+对于特殊的章节,\cls{hfutthesis} 还提供了相应的环境:
+\begin{itemize}
+ \item 中文摘要:\env{abstract}
+ \item 英文摘要:\env{abstract*}
+ \item 符号说明:\env{notation}
+ \item 致谢: \env{acknowledgements}
+ \item 发表成果:\env{publications}
+\end{itemize}
+
+摘要的关键词应使用 \cs{hfutsetup} 的接口进行设置,
+只要在摘要结束前即可,比如:
+\begin{latex}
+ \begin{abstract}
+ 这里是摘要。
+ \hfutsetup{keywords = {论文;摘要;关键词}}
+ \end{abstract}
+\end{latex}
+
+目录和图、表清单可以使用命令自动生成:
+\begin{itemize}
+ \item 目录: \cs{tableofcontents}
+ \item 图清单:\cs{listoffigures}
+ \item 表清单:\cs{listoftables}
+\end{itemize}
+
+
+\subsection{浮动体}
+
+学士学位论文要求图表中文标题,请使用\cs{caption}\marg{中文标题};硕博学位论文要求图表中英文标题,请使用\cs{bicaption}\marg{\{中文标题\}\{English title\}}。例如
+
+\begin{table}[h]
+ \centering
+ \caption{中文标题} % 默认:学士学位论文 图表中文标题
+ \label{tab:exampletable-zh}
+ \begin{tabular}{cl}
+ \toprule
+ 类型 & 描述 \\
+ \midrule
+ 挂线表 & 挂线表也称系统表、组织表,用于表现系统结构 \\
+ 无线表 & 无线表一般用于设备配置单、技术参数列表等 \\
+ 卡线表 & 卡线表有完全表,不完全表和三线表三种 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+\begin{table}[h]
+ \centering
+ \bicaption{中文标题}{English Title} % 硕博学位论文 图表中英文标题
+ \label{tab:exampletable-zh-en}
+ \begin{tabular}{cl}
+ \toprule
+ 类型 & 描述 \\
+ \midrule
+ 挂线表 & 挂线表也称系统表、组织表,用于表现系统结构 \\
+ 无线表 & 无线表一般用于设备配置单、技术参数列表等 \\
+ 卡线表 & 卡线表有完全表,不完全表和三线表三种 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+\DescribeMacro{\note}
+本模板还提供了 \cs{note}\marg{notes} 命令,用于在图表中添加注释。
+
+关于图片的并排,推荐使用较新的 \pkg{subcaption} 宏包,不建议使用
+\pkg{subfigure} 或 \pkg{subfig}。
+
+更多的表格样式参见 \pkg{booktabs}(三线表)、\pkg{longtable}(跨页表格)。
+
+算法可以使用 \pkg{algorithms} 宏包或者较新的 \pkg{algorithm2e}。
+
+\subsection{数学}
+
+《规范》要求数字和字母统一采用 Times New Roman体,与\TeX{} 默认的美国数学学会(AMS)的使用习惯可能有所出入。
+
+\DescribeOption{math-font}
+模板使用默认使用 XITS Math 作为数学字体。
+用户也可以使用 \opt{math-font} 选项切换其他数学字体,可选:
+\opt{stix}(STIX Two Math)、
+\opt{libertinus}(Libertinus Math)、
+\opt{newcm}(New Computer Modern Math)、
+\opt{cm}(Computer Modern Math)、
+\opt{lm}(Latin Modern Math)。
+
+其中 \opt{lm} 和 \opt{newcm} 的字形比较搭配 TeX 原生的 Computer Modern 字体,
+但与《规范》要求的西文字体 Times New Roman 并不搭配。
+可能会造成正文和公式中的数字字体不一致,需要谨慎使用。
+
+\DescribeOption{math-style}
+用户可以通过设置 \opt{math-style} 选择数学符号样式(可选:
+\opt{GB}(中文默认),\opt{TeX}(英文默认)和 \opt{ISO}),比如:
+\begin{latex}
+ \hfutsetup{
+ math-style = ISO,
+ }
+\end{latex}
+
+用户也可以逐项修改数学样式。
+\newcommand\dif{\mathop{}\!\mathrm{d}}
+\begin{enumerate}
+ \item \DescribeOption{uppercase-greek}
+ 大写希腊字母的正/斜体,可选:\opt{italic}、\opt{upright}。
+ 有限增量符号 $\increment x$ 固定使用正体,推荐使用 \cs{increment} 表示。
+ \item \DescribeOption{less-than-or-equal}
+ 小于等于号和大于等于号的字形,可选:\opt{slanted}、\opt{horizontal}。
+ 这将控制 \cs{le}、\cs{ge}、\cs{leq} 和 \cs{geq} 的符号
+ 是“$\leqslant$、$\geqslant$”还是“$\leq$、$\geq$”。
+ \item \DescribeOption{integral}
+ 积分号的正/斜体,可选:\opt{upright}、\opt{slanted}。
+ 该选项需要字体的支持,目前仅限 \opt{xits}、\opt{stix}、
+ \opt{libertinus} 和 \opt{newcm}。参考下文关于数学字体的选择。
+ \item \DescribeOption{integral-limits}
+ 积分号上下限的位置,可选:\opt{true}(在上下)、\opt{false}(在右侧)。
+ 这个设置只影响行间公式,行内公式统一居右侧,不受影响。
+ \item \DescribeOption{partial}
+ 偏微分符号的正/斜体,可选:\opt{upright}、\opt{slanted}。
+ \item \DescribeOption{math-ellipsis}
+ 省略号 \cs{dots} 的样式,可选:\opt{centered}(按照中文的习惯固定居中)、
+ \opt{lower} 和 \opt{AMS}(取决于前后符号的位置)。
+ 其他的省略号命令如 \cs{lots}、\cs{cdots} 则不受影响。
+ \item \DescribeOption{real-part}
+ 实部 \cs{Re} 和虚部 \cs{Im} 的字体,可选:\opt{roman} 和 \opt{fraktur}。
+\end{enumerate}
+
+如果数学符号选择国标样式 |math-style = GB|,相当于设置了
+\begin{latex}
+ \hfutsetup{
+ uppercase-greek = italic,
+ less-than-or-equal = slanted,
+ integral = upright,
+ integral-limits = true,
+ partial = upright,
+ math-ellipsis = centered,
+ real-part = roman,
+ }
+\end{latex}
+
+另外,国标的数学样式与 AMS 还有些差异,但无法在模板中统一设置。用户需要在写作时进行处理。
+\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 向量、矩阵和张量用粗斜体(\cs{symbf}),如 $\symbf{x}$、$\symbf{\Sigma}$、$\symbfsf{T}$。
+ \item 自然对数用 $\ln x$ 不用 $\log x$。
+\end{enumerate}
+
+需要注意,上述关于数学符号风格的设置在设置数学字体(\opt{math-font})时才会生效。
+
+以上字体都是 OpenType 格式的字体,需要配合
+\href{http://mirrors.ctan.org/macros/latex/contrib/unicode-math/unicode-math.pdf}{\pkg{unicode-math}}
+宏包使用。
+全部数学符号的命令参考
+\href{http://mirrors.ctan.org/macros/latex/contrib/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` 提供了传统的 Type 1 字体 \opt{newtx}。
+该选项会调用 \pkg{newtxmath} 宏包。
+但是,如果西文字体已经使用了 OpenType 的 Times New Roman,
+混用 Type 1 字体可能会导致问题,尤其是使用 \pkg{siunitx} 宏包时。
+该选项还处于测试阶段,需要谨慎使用。
+
+\subsection{参考文献}
+
+参考文献支持使用 \BibTeX{} 或 BibLaTeX 生成。默认使用\BibTeX{}生成,用户可以根据需求在\file{hfutsetup.tex}中选择合适的方式。
+
+
+\subsubsection{\BibTeX}
+
+\BibTeX{} 是 \LaTeX{} 处理参考文献的传统的方式。
+在本模板中需要载入 \pkg{natbib} 宏包,
+然后按照“顺序编码制”格式选择参考文献格式风格:
+\begin{latex}
+ % HFUT学位论文样例 参考文献的著录格式
+ \usepackage[sort]{natbib}
+ \bibliographystyle{hfutthesis-numerical}
+\end{latex}
+
+\begin{latex}
+ % gbt7714-2015 参考文献的著录格式
+ \usepackage[sort]{natbib}
+ \bibliographystyle{gbt7714-numerical}
+\end{latex}
+
+\begin{latex}
+ % 备用方案
+ \usepackage[sort]{natbib}
+ \bibliographystyle{hfutthesis-graduate}
+\end{latex}
+
+并且在生成参考文献表的位置使用 \cs{bibliography} 设置 \file{.bib} 数据库的路径。
+然后使用 \file{bibtex} 编译生成 \file{.bbl} 文件。
+这里使用参考文献样式(\file{.bst} 文件)是在
+\href{https://ctan.org/pkg/gbt7714}{\pkg{gbt7714}}
+的基础上进行了少量修改。
+
+顺序编码制的文内引用标注分为两种样式:
+\begin{enumerate}
+ \item 上标样式(\opt{super}), 如“张教授\textsuperscript{[2-3]}认为……
+ 形成了多种物理模型\textsuperscript{[7,9,11-13]}”。
+ \item 与正文平排(\opt{inline}),文献序号作为叙述文字的一部分,
+ 如“张教授\textsuperscript{[4]}认为……根据文献[4]\textsuperscript{101-105}”。
+\end{enumerate}
+\textbf{模板默认为上标样式},也可以根据需要修改:
+
+\DescribeOption{cite-style}
+参考文献的样式。可选:\opt{super}(默认),\opt{inline}。
+\begin{itemize}
+ \item \opt{super}:上标样式
+ \item \opt{inline}:与正文平排
+\end{itemize}
+\begin{latex}
+ \documentclass[cite-style=inline]{hfutthesis}
+\end{latex}
+或者
+\begin{latex}
+ \hfutsetup{
+ cite-style = inline,
+ }
+\end{latex}
+
+\paragraph{与 \pkg{chapterbib} 的兼容性}
+如果在每一章添加独立的参考文献,可以使用 \pkg{chapterbib} 宏包。
+需要注意以下几点:
+\begin{enumerate}
+ \item \pkg{chapterbib} 宏包与 \pkg{natbib} 的载入顺序不重要。
+ \item 根据 \pkg{natbib} 的文档,\opt{sectionbib} 参数(将参考文献的标题改为节标题)
+ 需要传给 \pkg{natbib} 而不是 \pkg{chapterbib}。
+ 模板作了设置,如载入 \pkg{chapterbib},\pkg{natbib} 就会有 \opt{sectionbib} 的效果。
+ \item 每章的内容需要写在单独的 \file{tex} 文件,并且在主文档中使用 \cs{include},
+ 不带 \file{.tex} 后缀。
+ \item 每章都要使用 \cs{bibliographystyle} 和 \cs{bibliography} 命令。
+\end{enumerate}
+
+用户可在\file{hfutthesis-numeric.bst}中的load.config函数中来自定义更详细的样式,表\ref{canshu}列出了一些常用的参数值,\# 1表示被启用,\# 0则不启用。
+\textbf{默认值遵循《\href{http://xwgl.hfut.edu.cn/2021/0419/c1975a253949/page.htm}{合肥工业大学研究生学位论文写作规范}》,与国标的配置有部分出入。}
+有关国标的配置可参考\href{https://ctan.org/pkg/gbt7714}{\pkg{gbt7714}}。
+
+\begin{table}
+ \caption{参考文献表样式的配置参数}\label{canshu}
+ \begin{tabular}{lcl}
+ \hline 参数值 & 默认值 & 功能 \\
+ \hline uppercase.name & \#0 & 将著者姓名转为大写 \\
+ sentence.case.title & \#1 & 将西文的题名转为 sentence case \\
+ link.title &\#0 & 在题名上添加 url 的超链接 \\
+ show.mark & \#0 & 显示文献类型标识 \\
+ italic.jounal & \#1 & 西文期刊名使用斜体 \\
+ show.missing.address.publisher & \#0 & 出版项缺失时显示“出版者不详” \\
+ show.url & \#1 & 显示 url \\
+ show.doi & \#1 & 显示 doi \\
+ show.note & \#0 & 显示 note 域的信息 \\
+ \hline
+ \end{tabular}
+\end{table}
+
+\subsubsection{BibLaTeX}
+
+BibLaTeX 是较新的参考文献处理方案。
+需要在载入宏包时通过选择样式(\opt{style}),
+并且在导言区使用 \cs{addbibresource} 设置数据库的路径,
+最后在参考文献表的位置使用 \cs{printbibliography} 输出。
+
+对于顺序编码制,文献引用标注默认为上标样式。
+如果要切换为与正文平排,一种方法是使用 \cs{parencite},
+另一种是载入 \pkg{biblatex} 时统一设置。
+\begin{latex}
+ \usepackage[bibstyle=hfutthesis-numeric,
+ citestyle=hfutthesis-inline]{biblatex}
+\end{latex}
+
+使用 BibLaTeX 必须用 \file{biber} 编译生成参考文献表。
+这里的样式是在 \href{https://ctan.org/pkg/biblatex-gb7714-2015}{biblatex-gb7714-2015}
+的基础上进行了少量修改。
+一些额外用法可以参考该宏包的文档。
+
+\end{document}
diff --git a/macros/xetex/latex/hfutthesis/hfutthesis-example.pdf b/macros/xetex/latex/hfutthesis/hfutthesis-example.pdf
new file mode 100644
index 0000000000..d94ef2d968
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfutthesis-example.pdf
Binary files differ
diff --git a/macros/xetex/latex/hfutthesis/hfutthesis-example.tex b/macros/xetex/latex/hfutthesis/hfutthesis-example.tex
new file mode 100644
index 0000000000..9a36981939
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfutthesis-example.tex
@@ -0,0 +1,58 @@
+% !TeX encoding = UTF-8
+% !TeX program = xelatex
+% !TeX spellcheck = en_US
+
+\documentclass[degree=bachelor]{hfutthesis}
+% degree = doctor | master | bachelor
+% degree-type = academic | professional
+% language = chinese | english
+% fontset = windows | mac | ubuntu | fandol
+
+% 加载宏包、全部的配置
+\input{hfutsetup.tex}
+
+
+\begin{document}
+
+% 研究生论文:
+% 封面,原创性声明和授权使用声明
+% frontmatter: 致谢,摘要,目录,图、表清单,[符号说明]
+% mainmatter: 正文章节,参考文献
+% appendix: 附录
+% backmatter: 已发表论文列表
+%
+% 本科生论文:
+% 封面,原创性声明和授权使用声明
+% frontmatter: 摘要,目录,图、表清单,[符号说明]
+% mainmatter: 正文章节,参考文献
+% backmatter: [已发表论文列表],致谢
+% appendix: 附录
+
+
+\maketitle
+% \input{hfut-chapters/expertspage.tex} % 专家清单页,如果是 博士学位论文,请将注释去掉。
+\signaturepage
+\copyrightpage
+
+\frontmatter
+% \input{hfut-chapters/acknowledgements.tex} % 致谢页,硕博 请将该行注释去掉。
+\input{hfut-chapters/abstract.tex}
+\tableofcontents
+\listoffigures
+\listoftables
+\input{hfut-chapters/notation.tex} % [符号说明]
+
+\mainmatter
+\input{hfut-chapters/intro.tex}
+\input{hfut-chapters/floats.tex}
+\input{hfut-chapters/math.tex}
+\input{hfut-chapters/citations.tex}
+
+\backmatter
+\bibliography{hfut-bib/hfut} % 参考文献使用 BibTeX 编译
+% \printbibliography % 参考文献使用 BibLaTeX 编译
+\input{hfut-chapters/publications.tex} % 已发表论文列表
+\input{hfut-chapters/acknowledgements.tex} % 致谢页,本科生 请将该行注释去掉。
+\appendix % 附录
+\input{hfut-chapters/complementary.tex}
+\end{document} \ No newline at end of file
diff --git a/macros/xetex/latex/hfutthesis/hfutthesis.cls b/macros/xetex/latex/hfutthesis/hfutthesis.cls
new file mode 100644
index 0000000000..62da841bc3
--- /dev/null
+++ b/macros/xetex/latex/hfutthesis/hfutthesis.cls
@@ -0,0 +1,3735 @@
+%
+% Copyright (C) 2015-2021 by USTC TeX Users Group <https://github.com/ustctug>
+%
+% hfutthesis developed by HFUT TeX Users Group <https://github.com/HFUTTUG> on the
+% base of ustcthesis <https://github.com/usthtug/ustcthesis>.
+%
+% This file 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.
+%
+
+\NeedsTeXFormat{LaTeX2e}[2017/04/15]
+\newcommand\hfutthesisversion{v1.0.4}
+\ProvidesClass{hfutthesis}[2022/04/09 {\hfutthesisversion} hfut thesis template]
+
+% 报错和警告
+\newcommand\hfut@error[1]{%
+ \ClassError{hfutthesis}{#1}{}%
+}
+\newcommand\hfut@warning[1]{%
+ \ClassWarning{hfutthesis}{#1}%
+}
+
+% 检查 \LaTeXe{} kernel 版本
+\@ifl@t@r\fmtversion{2017/04/15}{}{
+ \hfut@error{%
+ TeX Live 2017 or later version is required to compile this document%
+ }
+}
+
+% 检查编译引擎,要求使用 XeLaTeX。
+\RequirePackage{iftex}
+\ifXeTeX\else
+ \hfut@error{XeLaTeX is required to compile this document}
+\fi
+
+
+% \subsection{处理选项}
+
+\RequirePackage{kvdefinekeys}
+\RequirePackage{kvsetkeys}
+\RequirePackage{kvoptions}
+
+% 提供一个 \cs{hfutsetup} 命令支持 \emph{key-value} 的方式来设置。
+\let\hfut@setup@hook\@empty
+\newcommand\hfutsetup[1]{%
+ \let\hfut@setup@hook\@empty
+ \kvsetkeys{hfut}{#1}%
+ \hfut@setup@hook
+}
+
+% 同时用 \emph{key-value} 的方式来定义这些接口:
+% \begin{latex}
+% \hfut@define@key{
+% <key> = {
+% name = <name>,
+% choices = {
+% <choice1>,
+% <choice2>,
+% },
+% default = <default>,
+% code = <code>,
+% },
+% }
+% \end{latex}
+
+% 其中 |choices| 设置允许使用的值,默认为第一个(或者 \meta{default});
+% \meta{code} 是相应的内容被设置时执行的代码。
+
+\newcommand\hfut@define@key[1]{%
+ \kvsetkeys{hfut@key}{#1}%
+}
+\kv@set@family@handler{hfut@key}{%
+%
+% \cs{hfutsetup} 会将 \meta{value} 存到 \cs{hfut@\meta{key}},
+% 但是宏的名字包含 “-” 这样的特殊字符时不方便直接调用,比如 |key = math-style|,
+% 这时可以用 |name| 设置 \meta{key} 的别称,比如 |key = math@style|,
+% 这样就可以通过 \cs{hfut@math@style} 来引用。
+% |default| 是定义该 \meta{key} 时默认的值,缺省为空。
+%
+ \@namedef{hfut@#1@@name}{#1}%
+ \def\hfut@@default{}%
+ \def\hfut@@choices{}%
+ \kv@define@key{hfut@value}{name}{%
+ \@namedef{hfut@#1@@name}{##1}%
+ }%
+ %
+ % 由于在定义接口时,\cs{hfut@\meta{key}@@code} 不一定有定义,
+ % 而且在文档类/宏包中还有可能对该 |key| 的 |code| 进行添加。
+ % 所以 \cs{hfut@\meta{key}@@code} 会检查如果在定义文档类/宏包时则推迟执行,否则立即执行。
+ %
+ \@namedef{hfut@#1@@check}{}%
+ \@namedef{hfut@#1@@code}{}%
+ %
+ % 保存下 |choices = {}| 定义的内容,在定义 \cs{hfut@\meta{name}} 后再执行。
+ %
+ \kv@define@key{hfut@value}{choices}{%
+ \def\hfut@@choices{##1}%
+ \@namedef{hfut@#1@@reset}{}%
+ %
+ % \cs{hfut@\meta{key}@check} 检查 |value| 是否有效,
+ % 并设置 \cs{ifhfut@\meta{name}@\meta{value}}。
+ %
+ \@namedef{hfut@#1@@check}{%
+ \@ifundefined{%
+ ifhfut@\@nameuse{hfut@#1@@name}@\@nameuse{hfut@\@nameuse{hfut@#1@@name}}%
+ }{%
+ \hfut@error{Invalid value "#1 = \@nameuse{hfut@\@nameuse{hfut@#1@@name}}"}%
+ }%
+ \@nameuse{hfut@#1@@reset}%
+ \@nameuse{hfut@\@nameuse{hfut@#1@@name}@\@nameuse{hfut@\@nameuse{hfut@#1@@name}}true}%
+ }%
+ }%
+ \kv@define@key{hfut@value}{default}{%
+ \def\hfut@@default{##1}%
+ }%
+ \kvsetkeys{hfut@value}{#2}%
+ \@namedef{hfut@\@nameuse{hfut@#1@@name}}{}%
+ %
+ % 第一个 \meta{choice} 设为 \meta{default},
+ % 并且对每个 \meta{choice} 定义 \cs{ifhfut@\meta{name}@\meta{choice}}。
+ %
+ \kv@set@family@handler{hfut@choice}{%
+ \ifx\hfut@@default\@empty
+ \def\hfut@@default{##1}%
+ \fi
+ \expandafter\newif\csname ifhfut@\@nameuse{hfut@#1@@name}@##1\endcsname
+ \expandafter\g@addto@macro\csname hfut@#1@@reset\endcsname{%
+ \@nameuse{hfut@\@nameuse{hfut@#1@@name}@##1false}%
+ }%
+ }%
+ \kvsetkeys@expandafter{hfut@choice}{\hfut@@choices}%
+ %
+ % 将 \meta{default} 赋值到 \cs{hfut@\meta{name}},如果非空则执行相应的代码。
+ %
+ \expandafter\let\csname hfut@\@nameuse{hfut@#1@@name}\endcsname\hfut@@default
+ \expandafter\ifx\csname hfut@\@nameuse{hfut@#1@@name}\endcsname\@empty\else
+ \@nameuse{hfut@#1@@check}%
+ \fi
+ %
+ % 定义 \cs{hfutsetup} 接口。
+ %
+ \kv@define@key{hfut}{#1}{%
+ \@namedef{hfut@\@nameuse{hfut@#1@@name}}{##1}%
+ \@nameuse{hfut@#1@@check}%
+ \@nameuse{hfut@#1@@code}%
+ }%
+}
+
+% 定义接口向 |key| 添加 |code|:
+
+\newcommand\hfut@option@hook[2]{%
+ \expandafter\g@addto@macro\csname hfut@#1@@code\endcsname{#2}%
+}
+
+\hfut@define@key{
+ degree = {
+ choices = {
+ doctor,
+ master,
+ bachelor,
+ },
+ default = bachelor,
+ },
+ degree-type = {
+ name = degree@type,
+ choices = {
+ academic,
+ professional,
+ },
+ default = academic,
+ },
+ main-language = {
+ name = main@language,
+ choices = {
+ chinese,
+ english,
+ },
+ default = chinese,
+ },
+ language = {
+ choices = {
+ chinese,
+ english,
+ },
+ default = chinese,
+ },
+ 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,
+ mac,
+ noto,
+ fandol,
+ none,
+ },
+ default = auto,
+ },
+ math-font = {
+ name = math@font,
+ choices = {
+ auto,
+ stix,
+ xits,
+ libertinus,
+ newcm,
+ cm,
+ 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,
+ },
+ },
+ cite-style = {
+ name = cite@style,
+ choices = {
+ super,
+ inline,
+ authoryear,
+ },
+ default = super,
+ },
+ output = {
+ choices = {
+ print,
+ electronic,
+ },
+ default = print,
+ },
+ section-style = {
+ name = section@style,
+ choices = {
+ chinese,
+ arabic,
+ },
+ default = chinese,
+ },
+ badge-color = {
+ name = badge@color,
+ choices = {
+ red,
+ black,
+ },
+ default = red,
+ },
+}
+
+\newif\ifhfut@degree@graduate
+\newcommand\hfut@set@graduate{%
+ \ifhfut@degree@bachelor
+ \hfut@degree@graduatefalse
+ \else
+ \hfut@degree@graduatetrue
+ \fi
+}
+\hfut@set@graduate
+\hfut@option@hook{degree}{%
+ \hfut@set@graduate
+}
+
+% 使用 \pkg{kvoptions} 提供的 key-value 接口,
+\SetupKeyvalOptions{
+ family = hfut,
+ prefix = hfut@,
+ setkeys = \kvsetkeys,
+}
+
+% 设置默认 \option{openany}。
+\DeclareBoolOption[false]{openright}
+\DeclareComplementaryOption{openany}{openright}
+
+% 兼容旧版本的文档类选项。
+% Reserved for compatibility until 2020-07-01.
+\DeclareVoidOption{doctor}{\hfutsetup{degree=doctor}}
+\DeclareVoidOption{master}{\hfutsetup{degree=master}}
+\DeclareVoidOption{bachelor}{\hfutsetup{degree=bachelor}}
+\DeclareVoidOption{chinese}{\hfutsetup{language=chinese}}
+\DeclareVoidOption{english}{\hfutsetup{language=english}}
+\DeclareVoidOption{academic}{\hfutsetup{degree-type=academic}}
+\DeclareVoidOption{professional}{\hfutsetup{degree-type=professional}}
+\DeclareVoidOption{print}{\hfutsetup{output=print}}
+\DeclareVoidOption{pdf}{\hfutsetup{output=electronic}}
+\newif\ifhfut@legacy@cite@style
+\DeclareVoidOption{super}{\hfutsetup{cite-style=super}\hfut@legacy@cite@styletrue}
+\DeclareVoidOption{numbers}{\hfutsetup{cite-style=inline}\hfut@legacy@cite@styletrue}
+\DeclareVoidOption{authoryear}{\hfutsetup{cite-style=authoryear}\hfut@legacy@cite@styletrue}
+\DeclareVoidOption{arabic}{\hfutsetup{section-style=arabic}}
+\DeclareVoidOption{colorlogo}{\hfutsetup{badge-color=red}}
+\DeclareVoidOption{bwlogo}{\hfutsetup{badge-color=black}}
+
+% 载入 \cls{ctexbook}。
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
+\ProcessKeyvalOptions*
+
+
+% \subsection{加载文档类和宏包}
+
+\ifhfut@openright
+ \PassOptionsToClass{openright}{book}
+\else
+ \PassOptionsToClass{openany}{book}
+\fi
+
+\ifhfut@output@electronic
+ \PassOptionsToClass{oneside}{book}
+\fi
+\PassOptionsToPackage{no-math}{fontspec}
+
+% 载入 \cls{ctexbook} 文档类,注意要求为 2.4.9 或更高的版本。
+\LoadClass[UTF8,a4paper,scheme=plain,zihao=-4,fontset=none]{ctexbook}[2017/04/01]
+
+% 建议在模板开始处载入全部宏包,不要轻易改变加载顺序。
+% \pkg{hyperref} 一般在最后加载。
+\RequirePackage{etoolbox}
+\RequirePackage{amsmath}
+\RequirePackage{fontspec}[2017/03/31]
+\RequirePackage[driver=xetex]{geometry}
+\RequirePackage{graphicx}
+\RequirePackage{fancyhdr}
+\RequirePackage{color}
+\RequirePackage{titletoc}
+\RequirePackage{caption}
+\RequirePackage[perpage]{footmisc}
+\RequirePackage{url}
+\RequirePackage{calc}
+\RequirePackage[normalem]{ulem} % 提供排版可断行下划线的命令\uline
+\RequirePackage{multirow} % 纵向合并单元格
+\RequirePackage{enumitem} % enumberate
+\RequirePackage[list=off]{bicaption} % 图表中英文标题
+
+% 如果用户在导言区未调用 \pkg{biblatex},则自动调用 \pkg{natbib}。
+\AtEndPreamble{
+ \@ifpackageloaded{biblatex}{}{
+ \RequirePackage{natbib}
+ }
+}
+
+% 对冲突的宏包报错。
+\RequirePackage{filehook}
+\newcommand\hfut@package@conflict[2]{
+ \AtEndOfPackageFile*{#1}{%
+ \AtBeginOfPackageFile*{#2}{%
+ \hfut@error{The "#2" package is incompatible with "#1"}%
+ }%
+ }%
+}
+
+\hfut@package@conflict{biblatex}{bibunits}
+\hfut@package@conflict{biblatex}{chapterbib}
+\hfut@package@conflict{biblatex}{cite}
+\hfut@package@conflict{biblatex}{multibib}
+\hfut@package@conflict{biblatex}{natbib}
+
+\hfut@package@conflict{bibunits}{biblatex}
+\hfut@package@conflict{bibunits}{chapterbib}
+\hfut@package@conflict{bibunits}{multibib}
+
+\hfut@package@conflict{unicode-math}{amscd}
+\hfut@package@conflict{unicode-math}{amsfonts}
+\hfut@package@conflict{unicode-math}{amssymb}
+\hfut@package@conflict{unicode-math}{bbm}
+\hfut@package@conflict{unicode-math}{bm}
+\hfut@package@conflict{unicode-math}{eucal}
+\hfut@package@conflict{unicode-math}{eufrak}
+\hfut@package@conflict{unicode-math}{mathrsfs}
+\hfut@package@conflict{unicode-math}{newtxmath}
+\hfut@package@conflict{unicode-math}{upgreek}
+
+\hfut@package@conflict{natbib}{biblatex}
+\hfut@package@conflict{natbib}{cite}
+
+\hfut@package@conflict{newtxmath}{amsfonts}
+\hfut@package@conflict{newtxmath}{amssymb}
+\hfut@package@conflict{newtxmath}{unicode-math}
+\hfut@package@conflict{newtxmath}{upgreek}
+
+
+% \pkg{mathtools} 需要在 \pkg{unicode-math} 前载入,
+% 参考 \url{https://tex.stackexchange.com/q/521394/82731}。
+\AtBeginOfPackageFile*{mathtools}{
+ \@ifpackageloaded{unicode-math}{
+ \hfut@error{The "mathtools" package should be loaded before setting "math-font"}
+ }{}
+}%
+
+% \pkg{amsthm} 需要在 \pkg{newtx} 前载入,参考 \pkg{newtx} 的文档。
+\AtBeginOfPackageFile*{amsthm}{
+ \@ifpackageloaded{newtxmath}{
+ \hfut@error{The "amsthm" package should be loaded before setting "newtxmath"}
+ }{}
+}%
+
+
+
+% \subsection{处理语言}
+
+% 定义 \cs{hfut@main@language},当在导言区修改 \option{language} 时,
+% 保存为论文的主要语言;
+% \cs{hfut@reset@main@language} 则用于正文中恢复为主要语言。
+% \begin{macrocode}
+\hfutsetup{main-language=\hfut@language}%
+\let\hfut@main@language\hfut@language
+
+\hfut@option@hook{language}{%
+ \ifx\@begindocumenthook\@undefined\else
+ \hfutsetup{main-language=\hfut@language}%
+ \let\hfut@main@language\hfut@language
+ \fi
+}
+\newcommand\hfut@reset@main@language{%
+ \hfutsetup{language = \hfut@main@language}%
+ \let\hfut@language\hfut@main@language
+}
+
+% 带圈数字和星号使用中文字体。
+\xeCJKDeclareCharClass{CJK}{"2460 -> "2473}
+\xeCJKDeclareCharClass{CJK}{"2605}
+
+% 由于 Unicode 的一些标点符号是中西文混用的:
+% U+00B7、U+2013、U+2014、U+2018、U+2019、
+% U+201C、U+201D、U+2025、U+2026、U+2E3A,
+% 所以要根据语言设置正确的字体。
+% https://github.com/CTeX-org/ctex-kit/issues/389
+\newcommand\hfut@set@punctuations{%
+ \ifhfut@language@chinese
+ \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}%
+ \xeCJKDeclareCharClass{FullRight}{
+ "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
+ }%
+ \else
+ \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
+ \xeCJKDeclareCharClass{HalfRight}{
+ "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
+ }%
+ \fi
+}
+\hfut@set@punctuations
+\hfut@option@hook{language}{\hfut@set@punctuations}
+
+% 根据语言设置各章节的名称,只有在导言区设置 \option{language} 时会修改,
+% 而在正文局部切换语言时则不变。
+
+% 由于《撰写手册》中的“speciality”一词使用的是英式拼法,
+% 所以“acknowledgements”也保持一致。
+\newcommand\hfut@set@chapter@names{%
+ \ifhfut@main@language@chinese
+ \def\contentsname{目\hspace{\ccwd}录}%
+ \def\listfigurename{插图清单}%
+ \def\listtablename{表格清单}%
+ \ctexset{
+ chapter/name = {第,章},
+ }%
+ \def\bibname{参考文献}%
+ \def\appendixname{附录}%
+ \ifhfut@degree@bachelor
+ \def\hfut@acknowledgements@name{致谢}%
+ \else
+ \def\hfut@acknowledgements@name{致\hspace{\ccwd}谢}%
+ \fi
+ \ifhfut@degree@bachelor
+ \def\hfut@publication@name{攻读学士学位期间的学术活动及成果情况}%
+ \else
+ \ifhfut@degree@master
+ \def\hfut@publication@name{攻读硕士学位期间的学术活动及成果情况}%
+ \else
+ \def\hfut@publication@name{攻读博士学位期间的学术活动及成果情况}%
+ \fi
+ \fi
+ \newcommand\hfut@notation@name{符号说明}%
+ \else
+ \def\contentsname{Contents}%
+ \def\listfigurename{List of Figures}%
+ \def\listtablename{List of Tables}%
+ \ctexset{
+ chapter/name = {\chaptername\space},
+ }%
+ \def\bibname{Bibliography}%
+ \def\appendixname{Appendix}%
+ \def\hfut@acknowledgements@name{Acknowledgements}%
+ \def\hfut@publication@name{Publications}%
+ \def\hfut@notation@name{Notation}%
+ \fi
+}
+\hfut@set@chapter@names
+\hfut@option@hook{main-language}{\hfut@set@chapter@names}
+
+% 这部分名称在正文中局部地修改语言时会发生变化。
+\newcommand\hfut@set@names{%
+ \ifhfut@language@chinese
+ \def\figurename{图}%
+ \def\tablename{表}%
+ \else
+ \def\figurename{Fig}%
+ \def\tablename{Tab}%
+ \fi
+}
+\hfut@set@names
+\hfut@option@hook{language}{\hfut@set@names}
+
+
+% \subsection{字体}
+
+% 字号
+
+% 正文字号12bp,研究生行距20bp,本科生行距22bp;
+% 其他命令的行距按照相同的的比例设置,如表~\ref{tab:fontsize}。
+% \begin{table}[htb]
+% \centering
+% \caption{标准字体命令与字号、行距的对应}
+% \label{tab:fontsize}
+% \begin{tabular}{lllll}
+% \toprule
+% 字体命令 & 字号 & bp & 研究生行距 & 本科生行距 \\
+% \midrule
+% \cs{tiny} & 小六 & 6.5 & 10.83 & 11.92 \\
+% \cs{scriptsize} & 六号 & 7.5 & 12.5 & 13.75 \\
+% \cs{footnotesize} & 小五 & 9 & 15 & 16.5 \\
+% \cs{small} & 五号 & 10.5 & 17.5 & 19.25 \\
+% \cs{normalsize} & 小四 & 12 & 20 & 22 \\
+% \cs{large} & 小三 & 15 & 25 & 27.5 \\
+% \cs{Large} & 小二 & 18 & 30 & 33 \\
+% \cs{LARGE} & 二号 & 22 & 36.67 & 40.33 \\
+% \cs{huge} & 小一 & 24 & 40 & 44 \\
+% \cs{Huge} & 一号 & 26 & 43.33 & 47.67 \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% 注意重定义 \normalsize 应在 \pkg{unicode-math} 的 \cs{setmathfont} 前。
+\newcommand\hfut@set@font@size{%
+ \ifhfut@degree@graduate
+ \renewcommand\normalsize{%
+ \@setfontsize\normalsize{12bp}{20bp}%
+ \abovedisplayskip 12bp \@plus3bp \@minus7bp%
+ \abovedisplayshortskip \z@ \@plus3bp%
+ \belowdisplayshortskip 6.5bp \@plus3.5bp \@minus3bp%
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}%
+ %
+ % 注意第~\ref{sec:list} 节去掉了列表的间距,所以不再修改 \cs{@listi}。
+ \else
+ \renewcommand\normalsize{%
+ \@setfontsize\normalsize{12bp}{22bp}%
+ \abovedisplayskip 12bp \@plus3bp \@minus7bp%
+ \abovedisplayshortskip \z@ \@plus3bp%
+ \belowdisplayshortskip 6.5bp \@plus3.5bp \@minus3bp%
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}%
+ \fi
+ \normalsize
+ \ifx\MakeRobust\@undefined \else
+ \MakeRobust\normalsize
+ \fi
+}
+\hfut@set@font@size
+\hfut@option@hook{degree}{\hfut@set@font@size}
+
+% 设置行距的倍数为 1。
+\linespread{1}\selectfont
+
+
+% 检测系统
+\ifhfut@system@auto
+ \IfFileExists{/System/Library/Fonts/Menlo.ttc}{
+ \hfutsetup{system = mac}
+ }{
+ \IfFileExists{/dev/null}{
+ \IfFileExists{null:}{
+ \hfutsetup{system = windows}
+ }{
+ \hfutsetup{system = unix}
+ }
+ }{
+ \hfutsetup{system = windows}
+ }
+ }
+\fi
+
+% 处理 \opt{fontset}
+\ifhfut@fontset@auto
+ \ifhfut@system@windows
+ \hfutsetup{fontset = windows}
+ \else
+ \ifhfut@system@mac
+ \hfutsetup{fontset = mac}
+ \else
+ \IfFontExistsTF{Noto Serif CJK SC}{
+ \hfutsetup{fontset = ubuntu}
+ }{
+ \hfutsetup{fontset = fandol}
+ }
+ \fi
+ \fi
+\fi
+
+% 《撰写手册》要求西文字体使用 Times New Roman 和 Arial,
+% 但是在 Linux 下没有这两个字体,所以使用它们的克隆版 TeX Gyre Termes 和
+% TeX Gyre Heros。
+\ifhfut@font@auto
+ \ifhfut@fontset@windows
+ \hfutsetup{font=times}
+ \else
+ \ifhfut@fontset@mac
+ \hfutsetup{font=times}
+ \else
+ \hfutsetup{font=termes}
+ \fi
+ \fi
+\fi
+
+% Times New Roman + Arial
+\newcommand\hfut@set@font@times{%
+ \setmainfont{Times New Roman}%
+ \setsansfont{Arial}%
+ \ifhfut@system@mac
+ \setmonofont{Menlo}[Scale = MatchLowercase]%
+ \else
+ \setmonofont{Courier New}[Scale = MatchLowercase]%
+ \fi
+}
+
+% TeX Gyre Termes
+\newcommand\hfut@set@font@termes{%
+ \setmainfont{texgyretermes}[
+ Extension = .otf,
+ UprightFont = *-regular,
+ BoldFont = *-bold,
+ ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic,
+ ]%
+ \hfut@set@texgyre@sans@mono
+}
+
+\newcommand\hfut@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,
+ ]%
+}
+
+% STIX Two 字体。
+% STIX 文件名在 v2.10 2020-12-19 从
+% \file{STIX2Text-Regular.otf}、\file{STIX2Math.otf} 分别改为
+% \file{STIXTwoText-Regular.otf}、\file{STIXTwoMath-Regular.otf}。
+\let\hfut@font@family@stix\@empty
+\newcommand\hfut@set@stix@names{%
+ \ifx\hfut@font@family@stix\@empty
+ \IfFontExistsTF{STIXTwoText-Regular.otf}{%
+ \gdef\hfut@font@family@stix{STIXTwoText}%
+ \gdef\hfut@font@name@stix@math{STIXTwoMath-Regular}%
+ }{%
+ \gdef\hfut@font@family@stix{STIX2Text}%
+ \gdef\hfut@font@name@stix@math{STIX2Math}%
+ }%
+ \fi
+}
+
+\newcommand\hfut@set@font@stix{%
+ \hfut@set@stix@names
+ \setmainfont{\hfut@font@family@stix}[
+ Extension = .otf,
+ UprightFont = *-Regular,
+ BoldFont = *-Bold,
+ ItalicFont = *-Italic,
+ BoldItalicFont = *-BoldItalic,
+ ]%
+ \hfut@set@texgyre@sans@mono
+}
+
+% XITS 字体。
+% XITS 的文件名在 v1.109 2018-09-30
+% 从 \file{xits-regular.otf}、\file{xits-math.otf} 分别改为
+% \file{XITS-Regular.otf}、\file{XITSMath-Regular.otf}。
+\let\hfut@font@family@xits\@empty
+\newcommand\hfut@set@xits@names{%
+ \ifx\hfut@font@family@xits\@empty
+ \IfFontExistsTF{XITSMath-Regular.otf}{%
+ \gdef\hfut@font@family@xits{XITS}%
+ \gdef\hfut@font@style@xits@rm{Regular}%
+ \gdef\hfut@font@style@xits@bf{Bold}%
+ \gdef\hfut@font@style@xits@it{Italic}%
+ \gdef\hfut@font@style@xits@bfit{BoldItalic}%
+ \gdef\hfut@font@name@xits@math{XITSMath-Regular}%
+ }{%
+ \gdef\hfut@font@family@xits{xits}%
+ \gdef\hfut@font@style@xits@rm{regular}%
+ \gdef\hfut@font@style@xits@bf{bold}%
+ \gdef\hfut@font@style@xits@it{italic}%
+ \gdef\hfut@font@style@xits@bfit{bolditalic}%
+ \gdef\hfut@font@name@xits@math{xits-math}%
+ }%
+ \fi
+}
+
+\newcommand\hfut@set@font@xits{%
+ \hfut@set@xits@names
+ \setmainfont{\hfut@font@family@xits}[
+ Extension = .otf,
+ UprightFont = *-\hfut@font@style@xits@rm,
+ BoldFont = *-\hfut@font@style@xits@bf,
+ ItalicFont = *-\hfut@font@style@xits@it,
+ BoldItalicFont = *-\hfut@font@style@xits@bfit,
+ ]%
+ \hfut@set@texgyre@sans@mono
+}
+
+% Libertinus 的文件名在 v6.7 2019-04-03 从小写改为驼峰式,
+% 在大小写敏感的平台上需要进行判断。
+\let\hfut@font@family@libertinus\@empty
+\newcommand\hfut@set@libertinus@names{%
+ \ifx\hfut@font@family@libertinus\@empty
+ \IfFontExistsTF{LibertinusSerif-Regular.otf}{%
+ \gdef\hfut@font@family@libertinus@serif{LibertinusSerif}%
+ \gdef\hfut@font@family@libertinus@sans{LibertinusSans}%
+ \gdef\hfut@font@name@libertinus@math{LibertinusMath-Regular}%
+ \gdef\hfut@font@style@libertinus@rm{Regular}%
+ \gdef\hfut@font@style@libertinus@bf{Bold}%
+ \gdef\hfut@font@style@libertinus@it{Italic}%
+ \gdef\hfut@font@style@libertinus@bfit{BoldItalic}%
+ }{%
+ \gdef\hfut@font@family@libertinus@serif{libertinusserif}%
+ \gdef\hfut@font@family@libertinus@sans{libertinussans}%
+ \gdef\hfut@font@name@libertinus@math{libertinusmath-regular}%
+ \gdef\hfut@font@style@libertinus@rm{regular}%
+ \gdef\hfut@font@style@libertinus@bf{bold}%
+ \gdef\hfut@font@style@libertinus@it{italic}%
+ \gdef\hfut@font@style@libertinus@bfit{bolditalic}%
+ }%
+ \fi
+}
+
+\newcommand\hfut@set@font@libertinus{%
+ \hfut@set@libertinus@names
+ \setmainfont{\hfut@font@family@libertinus@serif}[
+ Extension = .otf,
+ UprightFont = *-\hfut@font@style@libertinus@rm,
+ BoldFont = *-\hfut@font@style@libertinus@bf,
+ ItalicFont = *-\hfut@font@style@libertinus@it,
+ BoldItalicFont = *-\hfut@font@style@libertinus@bfit,
+ ]%
+ \setsansfont{\hfut@font@family@libertinus@sans}[
+ Extension = .otf,
+ UprightFont = *-\hfut@font@style@libertinus@rm,
+ BoldFont = *-\hfut@font@style@libertinus@bf,
+ ItalicFont = *-\hfut@font@style@libertinus@it,
+ ]%
+ \setmonofont{lmmonolt10}[
+ Extension = .otf,
+ UprightFont = *-regular,
+ BoldFont = *-bold,
+ ItalicFont = *-oblique,
+ BoldItalicFont = *-boldoblique,
+ ]%
+}
+
+% New Computer Modern
+\newcommand\hfut@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,
+ ]%
+}
+
+% Latin Modern
+\newcommand\hfut@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,
+ ]%
+}
+
+\newcommand\hfut@set@font@newtx{%
+ \RequirePackage{newtxtext}%
+}
+
+\newcommand\hfut@set@font{%
+ \@nameuse{hfut@set@font@\hfut@font}%
+}
+\hfut@set@font
+\hfut@option@hook{font}{\hfut@set@font}
+
+% 中文字体
+\ifhfut@cjk@font@auto
+ \ifhfut@fontset@mac
+ \hfutsetup{cjk-font = mac}
+ \else
+ \ifhfut@fontset@windows
+ \hfutsetup{cjk-font = windows}
+ \else
+ \ifhfut@fontset@ubuntu
+ \hfutsetup{cjk-font = noto}
+ \else
+ \hfutsetup{cjk-font = fandol}
+ \fi
+ \fi
+ \fi
+\fi
+
+% Windows 的中易字体。
+\newcommand\hfut@set@cjk@font@windows{%
+ \xeCJKsetup{EmboldenFactor=2}
+ \setCJKmainfont{SimSun}[
+ AutoFakeBold = true,
+ ItalicFont = KaiTi,
+ ]%
+ \setCJKsansfont{SimHei}[AutoFakeBold]%
+ \setCJKmonofont{FangSong}%
+ \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold]%
+ \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold]%
+ \setCJKfamilyfont{zhkai}{KaiTi}%
+ \setCJKfamilyfont{zhfs}{FangSong}%
+}
+
+% macOS 的华文字体。
+\newcommand\hfut@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,
+ ]%
+}
+
+% 思源字体。
+% 注意 Noto CJK 的 regular 字重名字不带“Regular”。
+\newcommand\hfut@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,
+ ]%
+}
+
+% Fandol 字体。
+\newcommand\hfut@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,
+ ]%
+}
+
+\ifhfut@cjk@font@none\else
+ \providecommand\songti{\CJKfamily{zhsong}}
+ \providecommand\heiti{\CJKfamily{zhhei}}
+ \providecommand\fangsong{\CJKfamily{zhfs}}
+ \providecommand\kaishu{\CJKfamily{zhkai}}
+\fi
+
+\newcommand\hfut@set@cjk@font{%
+ \@nameuse{hfut@set@cjk@font@\hfut@cjk@font}%
+}
+\hfut@set@cjk@font
+\hfut@option@hook{cjk-font}{\hfut@set@cjk@font}
+
+% 数学字体
+
+% 设置数学符号风格。
+\newcommand\hfut@set@math@style{%
+ \ifhfut@math@style@TeX
+ \hfutsetup{
+ uppercase-greek = upright,
+ less-than-or-equal = horizontal,
+ integral = slanted,
+ integral-limits = false,
+ partial = italic,
+ math-ellipsis = AMS,
+ real-part = fraktur,
+ }%
+ \else
+ \hfutsetup{
+ uppercase-greek = italic,
+ integral = upright,
+ integral-limits = true,
+ partial = upright,
+ real-part = roman,
+ }%
+ \ifhfut@math@style@ISO
+ \hfutsetup{
+ less-than-or-equal = horizontal,
+ math-ellipsis = lower,
+ }%
+ \else
+ \ifhfut@math@style@GB
+ \hfutsetup{
+ less-than-or-equal = slanted,
+ math-ellipsis = centered,
+ }%
+ \fi
+ \fi
+ \fi
+}
+
+\ifhfut@main@language@chinese
+ \hfutsetup{math-style = GB}%
+\else
+ \hfutsetup{math-style = TeX}%
+\fi
+
+\hfut@set@math@style
+\hfut@option@hook{math-style}{\hfut@set@math@style}
+\hfut@option@hook{main-language}{%
+ \ifhfut@main@language@chinese
+ \hfutsetup{math-style = GB}%
+ \else
+ \hfutsetup{math-style = TeX}%
+ \fi
+}
+
+% 针对 \pkg{unicode-math} 逐项配置数学符号。
+
+\newcommand\hfut@set@unimath@leq{%
+ \ifhfut@leq@horizontal
+ \ifx\@begindocumenthook\@undefined
+ \let\le\hfut@save@leq
+ \let\ge\hfut@save@geq
+ \let\leq\hfut@save@leq
+ \let\geq\hfut@save@geq
+ \else
+ \AtBeginDocument{%
+ \let\le\hfut@save@leq
+ \let\ge\hfut@save@geq
+ \let\leq\hfut@save@leq
+ \let\geq\hfut@save@geq
+ }%
+ \fi
+ \else
+ \ifhfut@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\hfut@set@unimath@integral@limits{%
+ \ifhfut@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\hfut@set@unimath@ellipsis{%
+ \ifhfut@math@ellipsis@centered
+ \DeclareRobustCommand\mathellipsis{\mathinner{\unicodecdots}}%
+ \else
+ \DeclareRobustCommand\mathellipsis{\mathinner{\unicodeellipsis}}%
+ \fi
+}
+\newcommand\hfut@set@unimath@real@part{%
+ \ifhfut@real@part@roman
+ \AtBeginDocument{%
+ \def\Re{\operatorname{Re}}%
+ \def\Im{\operatorname{Im}}%
+ }%
+ \else
+ \AtBeginDocument{%
+ \let\Re\hfut@save@Re
+ \let\Im\hfut@save@Im
+ }%
+ \fi
+}
+
+\newcommand\hfut@set@unimath@style{%
+ \ifhfut@uppercase@greek@upright
+ \unimathsetup{math-style = TeX}%
+ \else
+ \ifhfut@uppercase@greek@italic
+ \unimathsetup{math-style = ISO}%
+ \fi
+ \fi
+ \ifhfut@math@style@TeX
+ \unimathsetup{bold-style = TeX}%
+ \else
+ \unimathsetup{bold-style = ISO}%
+ \fi
+ \hfut@set@unimath@leq
+ \hfut@set@unimath@integral@limits
+ \ifhfut@partial@upright
+ \unimathsetup{partial = upright}%
+ \else
+ \ifhfut@partial@italic
+ \unimathsetup{partial = italic}%
+ \fi
+ \fi
+ \hfut@set@unimath@ellipsis
+ \hfut@set@unimath@real@part
+}
+
+\newcommand\hfut@qed{\rule{1ex}{1ex}}
+\newcommand\hfut@load@unimath{%
+ \@ifpackageloaded{unicode-math}{}{%
+ \RequirePackage{unicode-math}%
+ \AtBeginDocument{%
+ \let\hfut@save@leq\leq
+ \let\hfut@save@geq\geq
+ \let\hfut@save@Re\Re
+ \let\hfut@save@Im\Im
+ }%
+ %
+ % 兼容旧的粗体命令:\pkg{bm} 的 \cs{bm} 和 \pkg{amsmath} 的 \cs{boldsymbol}。
+ \DeclareRobustCommand\bm[1]{{\symbfit{##1}}}%
+ \DeclareRobustCommand\boldsymbol[1]{{\symbfit{##1}}}%
+ %
+ % 兼容 \pkg{amsfonts} 和 \pkg{amssymb} 中的一些命令。
+ \newcommand\square{\mdlgwhtsquare}%
+ \newcommand\blacksquare{\mdlgblksquare}%
+ \AtBeginDocument{%
+ \renewcommand\checkmark{\ensuremath{✓}}%
+ }%
+ %
+ % 兼容 \pkg{amsthm} 的 \cs{qedsymbol}。
+ \renewcommand\hfut@qed{\ensuremath{\QED}}%
+ }%
+}
+
+% STIX Two Math
+\newcommand\hfut@set@math@font@stix{%
+ \hfut@load@unimath
+ \hfut@set@unimath@style
+ \hfut@set@stix@names
+ \setmathfont{\hfut@font@name@stix@math}[
+ Extension = .otf,
+ StylisticSet = \hfut@xits@integral@stylistic@set,
+ ]%
+ \setmathfont{\hfut@font@name@stix@math}[
+ Extension = .otf,
+ StylisticSet = 1,
+ range = {scr,bfscr},
+ ]%
+}
+
+% XITS Math
+\newcommand\hfut@xits@integral@stylistic@set{%
+ \ifhfut@integral@upright
+ 8%
+ \fi
+}
+\newcommand\hfut@set@math@font@xits{%
+ \hfut@load@unimath
+ \hfut@set@unimath@style
+ \hfut@set@xits@names
+ \setmathfont{\hfut@font@name@xits@math}[
+ Extension = .otf,
+ StylisticSet = \hfut@xits@integral@stylistic@set,
+ ]%
+ \setmathfont{\hfut@font@name@xits@math}[
+ Extension = .otf,
+ StylisticSet = 1,
+ range = {cal,bfcal},
+ ]%
+}
+
+% Libertinus Math
+\newcommand\hfut@libertinus@integral@stylistic@set{%
+ \ifhfut@integral@slanted
+ 8%
+ \fi
+}
+\newcommand\hfut@set@math@font@libertinus{%
+ \hfut@load@unimath
+ \hfut@set@unimath@style
+ \hfut@set@libertinus@names
+ \hfut@set@xits@names
+ \setmathfont{\hfut@font@name@libertinus@math}[
+ Extension = .otf,
+ StylisticSet = \hfut@libertinus@integral@stylistic@set,
+ ]%
+ \setmathfont{\hfut@font@name@xits@math}[
+ Extension = .otf,
+ range = {\checkmark},
+ ]%
+}
+
+% New Computer Modern Math
+\newcommand\hfut@newcm@integral@stylistic@set{%
+ \ifhfut@integral@upright
+ 2%
+ \fi
+}
+\newcommand\hfut@set@math@font@newcm{%
+ \hfut@load@unimath
+ \hfut@set@unimath@style
+ \setmathfont{NewCMMath-Book}[
+ Extension = .otf,
+ StylisticSet = \hfut@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,
+ ]%
+}
+
+% Latin Modern Math
+\newcommand\hfut@set@math@font@lm{%
+ \hfut@load@unimath
+ \hfut@set@unimath@style
+ \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,
+ ]%
+}
+
+% NewTX Math
+% 注意 NewTX Math 是 Type 1 字体,如果正文西文使用了 OpenType 字体时需要小心处理。
+\newcommand\hfut@set@math@font@newtx{%
+ \ifhfut@font@newtx\else
+ \let\hfut@save@encodingdefault\encodingdefault
+ \let\hfut@save@rmdefault\rmdefault
+ \let\hfut@save@sfdefault\sfdefault
+ \let\hfut@save@ttdefault\ttdefault
+ \RequirePackage[T1]{fontenc}%
+ \renewcommand{\rmdefault}{ntxtlf}%
+ \renewcommand{\sfdefault}{qhv}%
+ \renewcommand{\ttdefault}{ntxtt}%
+ \fi
+ \ifhfut@uppercase@greek@italic
+ \PassOptionsToPackage{slantedGreek}{newtxmath}%
+ \fi
+ \ifhfut@integral@upright
+ \PassOptionsToPackage{upint}{newtxmath}%
+ \fi
+ \RequirePackage{newtxmath}
+ \let\hfut@save@leq\leq
+ \let\hfut@save@geq\geq
+ \ifhfut@leq@slanted
+ \let\le\leqslant
+ \let\ge\geqslant
+ \let\leq\leqslant
+ \let\geq\geqslant
+ \fi
+ \ifhfut@integral@limits@true
+ \let\ilimits@\displaylimits
+ \fi
+ \let\hfut@save@partial\partial
+ \ifhfut@partial@upright
+ \let\partial\uppartial
+ \fi
+ \ifhfut@math@ellipsis@centered
+ \DeclareRobustCommand\mathellipsis{\mathinner{\cdotp\cdotp\cdotp}}%
+ \else
+ \DeclareRobustCommand\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}%
+ \fi
+ \let\hfut@save@Re\Re
+ \let\hfut@save@Im\Im
+ \ifhfut@real@part@roman
+ \def\Re{\operatorname{Re}}%
+ \def\Im{\operatorname{Im}}%
+ \fi
+ \RequirePackage{bm}%
+ \ifhfut@font@newtx\else
+ \let\encodingdefault\hfut@save@encodingdefault
+ \let\rmdefault\hfut@save@rmdefault
+ \let\sfdefault\hfut@save@sfdefault
+ \let\ttdefault\hfut@save@ttdefault
+ \fi
+ \DeclareRobustCommand\symup[1]{{\mathrm{##1}}}%
+ \DeclareRobustCommand\symbf[1]{{\bm{##1}}}%
+ \DeclareRobustCommand\symbfsf[1]{{\bm{##1}}}%
+ \let\increment\upDelta%
+ \renewcommand\hfut@qed{\openbox}%
+}
+
+% Computer Modern
+% 使用 LaTeX 默认的 cm 字体
+\newcommand\hfut@set@math@font@cm{%
+ \RequirePackage{amssymb}
+ \let\hfut@save@leq\leq
+ \let\hfut@save@geq\geq
+ \ifhfut@leq@slanted
+ \let\le\leqslant
+ \let\ge\geqslant
+ \let\leq\leqslant
+ \let\geq\geqslant
+ \fi
+ \ifhfut@integral@limits@true
+ \let\ilimits@\displaylimits
+ \fi
+ \ifhfut@math@ellipsis@centered
+ \DeclareRobustCommand\mathellipsis{\mathinner{\cdotp\cdotp\cdotp}}%
+ \else
+ \DeclareRobustCommand\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}%
+ \fi
+ \let\hfut@save@Re\Re
+ \let\hfut@save@Im\Im
+ \ifhfut@real@part@roman
+ \def\Re{\operatorname{Re}}%
+ \def\Im{\operatorname{Im}}%
+ \fi
+ \RequirePackage{bm}%
+ \DeclareRobustCommand\symup[1]{{\mathrm{##1}}}%
+ \DeclareRobustCommand\symbf[1]{{\bm{##1}}}%
+ \DeclareRobustCommand\symbfsf[1]{{\bm{##1}}}%
+ \let\increment\Delta
+ \renewcommand\hfut@qed{\openbox}%
+ \let\uppi\pi
+}
+
+% 不设置数学字体,仅提供兼容支持。
+\newcommand\hfut@set@math@font@none{%
+ \RequirePackage{amssymb}
+ \RequirePackage{bm}%
+ \DeclareRobustCommand\symup[1]{{\mathrm{##1}}}%
+ \DeclareRobustCommand\symbf[1]{{\bm{##1}}}%
+ \DeclareRobustCommand\symbfsf[1]{{\bm{##1}}}%
+ \let\increment\Delta
+ \renewcommand\hfut@qed{\openbox}%
+ \let\uppi\pi
+}
+
+\newcommand\hfut@set@math@font{%
+ \@nameuse{hfut@set@math@font@\hfut@math@font}%
+}
+\hfut@option@hook{math-font}{\g@addto@macro\hfut@setup@hook{\hfut@set@math@font}}
+\newcommand\hfut@set@math@font@auto{%
+ \ifhfut@math@font@auto
+ \hfutsetup{math-font=xits}%
+ \fi
+}
+\AtBeginOfPackageFile*{siunitx}{\hfut@set@math@font@auto}
+\AtEndPreamble{%
+ \hfut@set@math@font@auto
+ \ifx\square\@undefined
+ \RequirePackage{amssymb}%
+ \fi
+}
+
+
+
+% \subsection{纸张和页面}
+% 使用 \pkg{geometry} 宏包设置纸张和页面。
+
+% 纸张:A4;
+
+% 页面设置:上、下 2.54 cm,左、右 3 cm,页眉 1.5 cm,页脚 1.5 cm。
+
+% 注意这里指的是页眉顶部到纸张顶部的距离为 1.5 cm,
+% 所以应该是 2.54cm - 0.75cm - 0.29cm = 1.5cm
+% 页脚 同理 2.54cm - 1.04cm = 1.5cm
+
+\geometry{
+ paper = a4paper,
+ vmargin = 2.54cm,
+ hmargin = 3cm,
+ headheight = 0.75cm,
+ headsep = 0.29cm,
+ footskip = 1.04cm,
+}
+
+% 使用 \pkg{fancy} 需要先调用 |\pagestyle{fancy}| 再修改 \cs{chaptermark} 和
+% \cs{sectionmark}。
+\pagestyle{fancy}
+\let\sectionmark\@gobble
+\renewcommand\headrulewidth{0.4\p@}
+% 重定义默认的 |myheadings| page style,会显示页眉和页脚。
+\fancypagestyle{myheadings}{%
+ \fancyhf{}%
+ %
+ % 页眉与该部分的章标题相同,宋体 10.5 磅(五号)居中、1.5倍行距。
+ % 页码:宋体 10.5 磅、页面下脚居中。
+ % 页眉上下页边距1.5 cm
+ \def\hfut@hf@font{\fontsize{10.5bp}{20.475bp}\selectfont}
+ \renewcommand\headrulewidth{0.4\p@}
+ \ifhfut@degree@graduate
+
+ \fancyhead[OC]{\hfut@hf@font\leftmark}%
+ \ifhfut@degree@doctor
+ \fancyhead[EC]{\hfut@hf@font 合肥工业大学博士研究生学位论文}%
+ \else
+ \fancyhead[EC]{\hfut@hf@font 合肥工业大学\hfut@degreetype@name 研究生学位论文}%
+ \fi
+ \fancyfoot[C]{\hfut@hf@font\thepage}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markboth{\CTEXifname{\CTEXthechapter\quad}{}\hfut@spacetitle{##1}}{}%
+ }%
+ \let\sectionmark\@gobble
+ \else
+ %
+ % 本科生要求在正文每面上部加页眉,
+ % 用五号字(10.5 bp)标注“合肥工业大学毕业设计(论文)”,居中;
+ % 从正文页开始在每面底部居中用小五宋体(10.5 bp)连续编页码。
+ \fancyhead[C]{\hfut@hf@font 合肥工业大学毕业设计(论文)}%
+ \fancyfoot[C]{\hfut@hf@font\thepage}%
+ \let\@mkboth\@gobbletwo
+ \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+ \fi
+}
+\pagestyle{myheadings}
+
+% |headings| 只有页眉,没有页脚,用于研究生的符号说明和本科生的 front matter。
+\fancypagestyle{headings}{
+ \fancyfoot{}
+}
+
+% 重定义|plain|字体大小
+\fancypagestyle{plain}{%
+ \fancyhf{}
+ \fancyhead{}
+ \renewcommand\headrulewidth{0pt}
+ \def\hfut@hf@font{\fontsize{10.5bp}{20.475bp}\selectfont}
+ \fancyfoot[C]{\hfut@hf@font\thepage}%
+}
+
+% 设置特殊的 page style 不改变任何内容,用于每章首页。
+\def\ps@chapter{}
+\ctexset{chapter/pagestyle=chapter}
+
+% 空白页不加页眉和页码。
+\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
+ \hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
+ %
+ % 研究生要求从“中文摘要”开始页码用大写罗马数字,
+ % 而本科生的 frontmatter不编页码,从正文开始页码用阿拉伯数字。
+\renewcommand\frontmatter{%
+ \cleardoublepage
+ \@mainmatterfalse
+ \pagestyle{plain}%
+ \pagenumbering{Roman}%
+}
+
+% 研究生要求“第 1 章”要另页起,但是本科生要求另面起。
+\renewcommand\mainmatter{%
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \pagenumbering{arabic}%
+ \else
+ \clearpage
+ \pagenumbering{arabic}%
+ \fi
+ \pagestyle{myheadings}%
+ \@mainmattertrue
+}
+
+% 研究生要求"参考文献"起 无页眉,但是本科生仍然有页眉。
+\renewcommand\backmatter{%
+ \ifhfut@degree@graduate
+ \clearpage
+ \pagestyle{plain}%
+ \else
+ \clearpage
+ \fi
+ \hfut@appendixfalse
+}
+
+\g@addto@macro\appendix{
+ \renewcommand\thechapter{\@arabic\c@chapter}
+ \@mainmattertrue
+ \hfut@appendixtrue
+}%
+% \subsection{附录}
+% fakeTODO 处理附录编号问题
+% 研究生附录按照附录1、附录2编号;[数学学院本科生附录不编号,请将以下`\renewcommand\appendix` 取消注释]
+% \renewcommand\appendix{%
+% \ifhfut@degree@bachelor
+% \ctexset{
+% chapter/numbering=false,
+% chapter/format = \centering\rmfamily\bfseries\fontsize{18bp}{18bp}\selectfont,
+% chapter/beforeskip = 9bp,
+% chapter/afterskip = 27bp,
+% }
+% \setcounter{chapter}{1}
+% \else
+% \ctexset{appendix/number=\arabic{chapter}}
+% \fi
+% }
+\ctexset{appendix/number=\arabic{chapter}}
+
+% \subsection{封面}
+
+% 定义用户接口:
+\hfut@define@key{
+ ugtype = {
+ default = {论文},
+ },
+ title = {
+ default = {论文题目},
+ },
+ title* = {
+ default = {Title},
+ name = title@en,
+ },
+ author = {
+ default = {作者姓名},
+ },
+ stuID = {
+ default = {学号},
+ },
+ clc = {
+ default = {分类号},
+ },
+ author* = {
+ default = {Author Name},
+ name = author@en,
+ },
+ speciality = {
+ default = {专业},
+ },
+ hfuteryear = {
+ default = {2017级},
+ },
+ research = {
+ default = {研究方向},
+ },
+ supervisor = {
+ default = {导师姓名},
+ },
+ department = {
+ default = {学院名称},
+ },
+ advisor = {
+ default = {},
+ },
+ advisor* = {
+ default = {},
+ name = advisor@en,
+ },
+ applydegree = {
+ default = {理学博士},
+ },
+ school = {
+ default = {合肥工业大学},
+ },
+ phdchairman = {
+ default = {},
+ name = phd@chairman,
+ },
+ phdmember = {
+ default = {},
+ name = phd@member,
+ },
+ date = {
+ default = {\the\year-\two@digits{\month}},
+ },
+ defensedate = {
+ default = {},
+ },
+ professional-type = {
+ name = professional@type,
+ },
+ professional-type* = {
+ name = professional@type@en,
+ },
+ secret-level = {
+ default = {},
+ name = secret@level,
+ },
+ secret-level* = {
+ name = secret@level@en,
+ },
+ secret-year = {
+ name = secret@year,
+ },
+ signchairman = {
+ default = {},
+ name = sign@chairman,
+ },
+ signmember = {
+ default = {},
+ name = sign@member,
+ },
+ signsupervisor = {
+ default = {},
+ name = sign@supervisor,
+ },
+ keywords,
+ keywords* = {
+ name = keywords@en,
+ },
+}
+
+% 导师一栏可能有多个姓名,所以用 \opt{supervisor} 进行收集,
+% 然后使用本命令来输出要求的格式,
+% 类似于 \LaTeX3 的 \cs{clist\_use:Nn}。
+\newcommand\hfut@clist@count[1]{%
+ \csname clist_count:N\endcsname{#1}%
+}
+\newcommand\hfut@clist@use[2]{%
+ \csname clist_use:Nn\endcsname{#1}{#2}%
+}
+\newcommand\hfut@supervisor@names{%
+ \hfut@clist@use{\hfut@supervisor}{\quad}
+}
+\newcommand\hfut@advisor@names{%
+ \hfut@clist@use{\hfut@advisor}{\quad}
+}
+
+% 输出日期的给定格式:\cs{hfut@format@date}\marg{format}\marg{date},
+% 其中格式 \meta{format} 接受三个参数分别对应年、月、日,
+% \meta{date} 是 (yyyy-m)。
+\newcommand\hfut@format@date[2]{%
+ \edef\hfut@@date{#2}%
+ \def\hfut@@process@date##1-##2\@nil{%
+ #1{##1}{##2}%
+ }%
+ \expandafter\hfut@@process@date\hfut@@date\@nil
+}
+\newcommand\hfut@date@format@zh[2]{#1 年 \number#2 月}
+\newcommand\hfut@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\hfut@date@format@en[2]{\hfut@date@month{#2}, #1}
+\newcommand\hfut@date@zh{\hfut@format@date{\hfut@date@format@zh}{\hfut@date}}
+\newcommand\hfut@date@en{\hfut@format@date{\hfut@date@format@en}{\hfut@date}}
+
+% 版本 v3.2 开始使用 \cs{hfutsetup} 设置接口,
+% 兼容旧版本的命令式设置。
+% Reserved for compatibility until 2020-07-01.
+\def\hfut@define@term#1#2{%
+ \expandafter\gdef\csname #1\endcsname##1{%
+ \hfutsetup{#2 = {##1}}%
+ }%
+}
+\hfut@define@term{title}{title}
+\hfut@define@term{entitle}{title*}
+\hfut@define@term{author}{author}
+\hfut@define@term{enauthor}{author*}
+\hfut@define@term{major}{speciality}
+\hfut@define@term{supervisor}{supervisor}
+\gdef\cosupervisor#1{%
+ \g@addto@macro\hfut@supervisor{, #1}%
+}
+\gdef\date#1{\renewcommand\hfut@date@zh{#1}}
+\gdef\endate#1{\renewcommand\hfut@date@en{#1}}
+\hfut@define@term{professionaltype}{professional-type}
+\hfut@define@term{enprofessionaltype}{professional-type*}
+\hfut@define@term{secretlevel}{secret-level}
+\hfut@define@term{ensecretlevel}{secret-level*}
+\hfut@define@term{secretyear}{secret-year}
+\gdef\keywords#1{\renewcommand\hfut@keywords@text{#1}}
+\gdef\enkeywords#1{\renewcommand\hfut@keywords@en@text{#1}}
+
+% 定义一些常量。
+\ifhfut@degree@doctor
+ \newcommand\hfut@thesis@name{博士学位论文}
+ \newcommand\hfut@degreetype@name{博士}
+ \newcommand\hfut@thesis@name@en{A Dissertation Submitted to \par
+ Hefei University of Technology \par
+ in accordmance with the requirement \par
+ for the Degree of Doctor of Philosophy}
+ \newcommand\hfut@thesis@name@encover{DOCTORAL DISSERTATION}
+\else
+ \ifhfut@degree@master
+ \newcommand\hfut@thesis@name{硕士学位论文}
+ \newcommand\hfut@thesis@name@en{A Dissertation Submitted for the Degree of Master}
+ \newcommand\hfut@thesis@name@encover{MASTER'S DISSERTATION}
+ \else
+ \newcommand\hfut@thesis@name{本科毕业设计(论文)}
+ \newcommand\hfut@thesis@name@en{A Dissertation Submitted for the Degree of Bachelor}
+ \newcommand\hfut@thesis@name@encover{UNDERGRADUATE THESIS}
+ \fi
+\fi
+
+\ifhfut@degree@master
+ \ifhfut@degree@type@academic
+ \newcommand\hfut@degreetype@name{学历硕士}
+ \else
+ \newcommand\hfut@degreetype@name{专业硕士}
+ \fi
+\fi
+
+\ifhfut@degree@type@academic
+ \ifhfut@degree@doctor
+ \newcommand\hfut@speciality@name{学科专业}
+ \else
+ \newcommand\hfut@speciality@name{专业名称}
+ \fi
+\else
+ \ifhfut@cjk@font@mac
+ \providecommand\lishu{\CJKfamily{zhli}}
+ \else
+ \ifhfut@cjk@font@windows
+ \setCJKfamilyfont{zhli}{LiSu}
+ \providecommand\lishu{\CJKfamily{zhli}}
+ \else
+ \hfut@warning{LiShu font is required}
+ \providecommand\lishu{\sffamily}
+ \fi
+ \fi
+ \newcommand\hfut@speciality@name{专业名称}
+\fi
+
+% 定义校徽颜色
+\definecolor{hfutred}{cmyk}{0.3,1,0.95,0.05}
+
+% 添加 PDF 书签,在 \pkg{hyperref} 载入后才有效。
+\newcommand\hfut@pdfbookmark{\@gobble}
+
+% 重定义 \env{titlepage} 环境,不修改页码。
+\renewenvironment{titlepage}{%
+ \cleardoublepage
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+}{%
+ \if@restonecol\twocolumn \else \newpage \fi
+}
+
+% TODO: 做一些定义用以实现:不定长, 自动换行且有定长下划线的“论文标题”
+% from:
+% https://github.com/CTeX-org/forum/issues/208
+% https://syvshc.github.io/2021-08-04-thesis-title/
+% https://zhuanlan.zhihu.com/p/51494365
+
+% inner temp length
+\newlength\@tempTitleHt
+\newlength\@tempTitleMaxWd
+
+% length used as parameters, "Wd" is a shorthand for "Width"
+\newlength\titleSingleLineMaxWd
+\newlength\titleMultiLineMaxWd
+\newlength\titleLRExtraWd
+\newlength\titleSepWd
+
+\setlength\titleSingleLineMaxWd{8.5cm}
+\setlength\titleMultiLineMaxWd{7cm}
+\setlength\titleLRExtraWd{0em}
+\setlength\titleSepWd{.5em}
+
+% main macro, using a simple table
+% \newcommand{\multilingualTitles}[2]{%
+% \par
+% {\noindent\centering
+% \begin{tabular}{r @{\hspace{\titleSepWd}} p{\titleSingleLineMaxWd}}
+% 中文标题 & \titleBox{#1} \\
+% & \\[-10pt]
+% Title in English & \titleBox{#2}
+% \end{tabular}\par}%
+% }
+
+% draw a fixed-width underline
+\newcommand{\titleUnderline}{%
+ \rule[-.3em]{\titleSingleLineMaxWd + 2\titleLRExtraWd}{.5pt}}
+
+% title content typesetter
+\newcommand\titleBox[1]{%
+ \setlength\@tempTitleMaxWd\titleSingleLineMaxWd
+ % Measure the total height of #1 subject to \titleSingleLineMaxWd.
+ % Here \@titleBox is necessary when #1 contains "\\".
+ \settototalheight\@tempTitleHt{\@titleBox{#1}}%
+ \ifdim\@tempTitleHt=0pt%
+ % case 1: #1 causes empty output
+ \titleUnderline
+ \else
+ % Change to LR mode, for inserting a zero-width box right after.
+ \leavevmode
+ % note: Use \normalbaseineskip instead of \baselineskip,
+ % since the latter is set to 0pt inside tabular env.
+ \ifdim\@tempTitleHt>\normalbaselineskip
+ % case 2: #1 is fit for multilines, or contains `\\`, hence
+ % \titleMultiLineMaxWd is used instead, and the total
+ % height of #1 subject to new max width is re-measured.
+ \setlength\@tempTitleMaxWd\titleMultiLineMaxWd
+ \settototalheight\@tempTitleHt{\@titleBox{#1}}%
+ % \rlap{\smash{...}} typesets content of its argument normally
+ % but sets it into a zero sized box. Here \@titleBox set
+ % (possiblly) multi-line text into a single box, since \smash
+ % only takes in argument spreading one line.
+ %
+ % Every line of title content needs an underline, hense we do
+ % a loop to typeset one underline for every line the title
+ % content actually spreads.
+ \rlap{\smash{\@titleBox{%
+ \@whiledim\@tempTitleHt>0pt%
+ \leavevmode
+ %
+ \do{%
+ \rlap{\titleUnderline}\\%
+ \addtolength\@tempTitleHt{-\normalbaselineskip}%
+ }%
+ }}}%
+ % Insert h-offset to manually center the title content.
+ \hspace{\dimexpr\titleLRExtraWd + .5\titleSingleLineMaxWd - .5\titleMultiLineMaxWd\relax}%
+ \@titleBox{\centering #1}%
+ \else
+ % case 3: #1 is fit for one line
+ \rlap{\titleUnderline}%
+ \hspace{\titleLRExtraWd}%
+ \@titleBox{\centering #1}%
+ \fi
+ \fi
+}
+
+% common operations on every title content
+\newcommand{\@titleBox}[1]{%
+ \parbox[t]{\@tempTitleMaxWd}{#1}}
+
+\newlength{\lwtm}
+\setlength{\lwtm}{\widthof{论文题目 :}}
+
+% 中文封面:
+% 抬头黑体 12 磅;
+% 论文类型:研究生黑体 48 磅,本科生黑体42磅;
+% 论文类型英文 Times New Roman 22 磅;
+% 封面信息 宋体 16 磅
+% 论文题目黑体 26 磅加粗居中,单倍行距;
+% 作者姓名宋体 16 磅,单倍行距;
+% 注意这里的“单倍行距”的地方开启了“对齐到网格”,所以实际行距有所偏差,
+% 所以只能使用直尺测量。
+\newcommand\hfut@speciality@sse{软件工程}
+% 生成空的下划线
+\newcommand\hfut@underline[2][3.4cm]{\underline{\hb@xt@ #1{\hss#2\hss}}}
+\newcommand\hfut@makecover{%
+ \hfutsetup{language=chinese}%
+ \begin{titlepage}%
+ \hfut@pdfbookmark{封面}%
+ \centering
+ \ifhfut@degree@bachelor
+ \ifx\hfut@secret@level\@empty
+ {\sffamily\bfseries\fontsize{12bp}{19.5bp}\selectfont
+ 学\hspace{2\ccwd}号:\hfut@underline{\hfut@stuID} \hfill
+ 密\hspace{1em}级:\hfut@underline{公开} \par}
+ \else
+ {\sffamily\bfseries\fontsize{12bp}{19.5bp}\selectfont
+ 学\hspace{2\ccwd}号:\hfut@underline{\hfut@stuID} \hfill
+ 密\hspace{1em}级:\hfut@underline{\hfut@secret@level\bigstar\hfut@secret@year} \par}
+ \fi
+ \vskip 1.15cm%
+ \else
+ \ifx\hfut@secret@level\@empty
+ {\sffamily\bfseries\fontsize{12bp}{19.5bp}\selectfont
+ 单位代码:\hfut@underline{10359} \hfill
+ 密\hspace{1em}级:\hfut@underline{公开} \par
+ 学\hspace{2\ccwd}号:\hfut@underline{\hfut@stuID} \hfill
+ 分类号:\hfut@underline{\hfut@clc} \par}
+ \else
+ {\sffamily\bfseries\fontsize{12bp}{19.5bp}\selectfont
+ 单位代码:\hfut@underline{10359} \hfill
+ 密\hspace{1em}级:\hfut@underline{\hfut@secret@level\bigstar\hfut@secret@year} \par
+ 学\hspace{2\ccwd}号:\hfut@underline{\hfut@stuID} \hfill
+ 分类号:\hfut@underline{\hfut@clc} \par}
+ \fi
+ \vskip 1.8cm%
+ \fi
+
+ \includegraphics[height=1.4cm]{hfut-figures/hfut-name.pdf}\par
+ \vskip 0.3cm
+ {\bfseries\fontsize{22bp}{22bp}\selectfont Hefei University of Technology\par}
+ \ifhfut@degree@bachelor
+ \vskip 1.1cm%
+ {\sffamily\bfseries\fontsize{42bp}{42bp}\selectfont
+ \hfut@thesis@name\par}%
+ \vskip 0.6cm
+ \else
+ \vskip 1.0cm%
+ {\sffamily\bfseries\fontsize{48bp}{48bp}\selectfont
+ \hfut@thesis@name\par}%
+ \vskip 0.5cm
+ \fi
+ {\bfseries\fontsize{22bp}{22bp}\selectfont
+ \hfut@thesis@name@encover \par}%
+ \ifhfut@degree@master
+ \vskip 3.5cm
+ \else
+ \vskip 0.9cm%
+ \includegraphics[height=3.6cm]{hfut-figures/hfut-badge.pdf}%
+ \fi
+ \ifhfut@degree@bachelor
+ \vskip 1.5cm
+ \else
+ \vskip 2.3cm
+ \fi
+ \renewcommand\arraystretch{1.5}
+ \ifhfut@degree@bachelor
+ {\fontsize{16bp}{20bp}\selectfont
+ \begin{tabular}{>{\fontsize{16bp}{20bp}\rmfamily\bfseries\selectfont}l>{\rmfamily\fontsize{16bp}{20bp}\selectfont}c}%
+ 类\hspace{2\ccwd}型:& \hfut@ugtype \\
+ \cline{2-2}
+ 题\hspace{2\ccwd}目:& \hfut@title \\
+ \cline{2-2}
+ \hfut@speciality@name:& \hfut@speciality\\
+ \cline{2-2}
+ 入学年份:& \hfut@hfuteryear \\
+ \cline{2-2}
+ 学生姓名:& \hfut@author \\
+ \cline{2-2}
+ 指导教师:& \hfut@supervisor@names \\
+ \cline{2-2}
+ 学院名称:& \hfut@department \\
+ \cline{2-2}
+ 完成时间:& \hfut@date@zh \\
+ \cline{2-2}
+ \end{tabular}\par}%
+ \else
+ \begin{tabular}{>{\rmfamily\bfseries\fontsize{16bp}{20bp}\selectfont}lp{8.5cm}}%
+ 论文题目:& \multirow[t]{2}{8.5cm}{
+ \centering\linespread{1.5}\fontsize{16bp}{20bp}\selectfont
+ \hfut@title} \\
+ \cline{2-2}
+ & \\
+ \cline{2-2}
+ \end{tabular}
+ \renewcommand\arraystretch{1.5}
+ \begin{tabular}{>{\bfseries\fontsize{16bp}{20bp}\selectfont}l>{\centering\arraybackslash\fontsize{16bp}{20bp}\selectfont}p{8.5cm}}
+ \ifhfut@degree@master
+ 学位类别:& \hfut@degreetype@name\\
+ \cline{2-2}
+ \fi
+ \hfut@speciality@name:& \hfut@speciality\\
+ \cline{2-2}
+ 作者姓名:& \hfut@author \\
+ \cline{2-2}
+ 导师姓名:& \hfut@supervisor@names \\
+ \cline{2-2}
+ 完成时间:& \hfut@date@zh \\
+ \cline{2-2}
+ \end{tabular}\par%
+ \fi
+ \renewcommand\arraystretch{1}
+ \end{titlepage}%
+ \hfut@reset@main@language
+}
+
+\newcommand{\underlineFixlen}[2][4.85cm]{\underline{\makebox[#1][c]{#2}}}
+
+% 博士学位论文 题名页
+\newcommand\hfut@makephdtitle{%
+ \hfutsetup{language=chinese}%
+ \begin{titlepage}%
+ \hfut@pdfbookmark{题名页}%
+ \centering
+ \ifx\hfut@secret@level\@empty
+ {\sffamily\bfseries\fontsize{12bp}{20bp}\selectfont
+ 单位代码:\hfut@underline{10359} \hfill
+ 密\hspace{1em}级:\hfut@underline{公开} \par
+ 学\hspace{2\ccwd}号:\hfut@underline{\hfut@stuID} \hfill
+ 分类号:\hfut@underline{\hfut@clc} \par}
+ \else
+ {\sffamily\bfseries\fontsize{12bp}{20bp}\selectfont
+ 单位代码:\hfut@underline{10359} \hfill
+ 密\hspace{1em}级:\hfut@underline{\hfut@secret@level\bigstar\hfut@secret@year} \par
+ 学\hspace{2\ccwd}号:\hfut@underline{\hfut@stuID} \hfill
+ 分类号:\hfut@underline{\hfut@clc} \par}
+ \fi
+
+ \vskip 2.1cm
+ {\sffamily\bfseries\fontsize{22bp}{27.5bp}\selectfont
+ 博\hspace{0.5\ccwd}士\hspace{0.5\ccwd}学\hspace{0.5\ccwd}位\hspace{0.5\ccwd}论\hspace{0.5\ccwd}文\par}%
+ \vskip 1.3cm
+ \renewcommand\arraystretch{1.5}
+ \begin{tabular}{@{}p{11.4cm}@{}}%
+ \multirow[t]{2}{11.4cm}{
+ \centering\linespread{1.5}\bfseries\fontsize{16bp}{24bp}\selectfont
+ \hfut@title} \\
+ \cline{1-1}
+ \\
+ \cline{1-1}
+ \end{tabular}
+ \vskip 1.5cm%
+ {\linespread{1.25}
+ \bfseries\fontsize{16bp}{16bp}\selectfont
+ \uline{\hfut@title@en}\par}%
+ \vskip 3.5cm%
+ {\linespread{1.5}\fontsize{15bp}{15bp}\selectfont
+ \textbf{作者姓名:}\underlineFixlen{\hfut@author} \hfill \textbf{导师姓名:}\underlineFixlen{\hfut@supervisor@names} \par
+ \textbf{申请学位:}\underlineFixlen{\hfut@applydegree} \hfill \textbf{培养单位:}\underlineFixlen{\hfut@school} \par
+ \textbf{学科专业:}\underlineFixlen{\hfut@speciality} \hfill \textbf{研究方向:}\underlineFixlen{\hfut@research} \par
+ \textbf{提交日期:}\underlineFixlen{\hfut@date@zh} \hfill \textbf{答辩日期:}\underlineFixlen{\hfut@defensedate} \par
+ }
+ \vskip 1.3cm
+ \renewcommand\arraystretch{1.5}
+ \begin{tabular}{@{}>{\fontsize{15bp}{22.5bp}\selectfont}p{15.9cm}@{}}%
+ \textbf{答辩委员会主席:} \hfut@phd@chairman \\
+ \cline{1-1}
+ \textbf{评\hspace{2\ccwd}阅\hspace{2\ccwd}人:} \hfut@phd@member \\
+ \cline{1-1}
+ \end{tabular}
+ \renewcommand\arraystretch{1}
+ \vfill
+
+ {\fontsize{15bp}{15bp}\selectfont\hfut@date@zh}
+
+ \end{titlepage}%
+}
+
+
+\newcommand\hfut@makezhtitle{%
+ \hfutsetup{language=chinese}%
+ \begin{titlepage}%
+ \hfut@pdfbookmark{中文内封页}%
+ \centering
+ {\sffamily\fontsize{22bp}{40bp}\selectfont
+ 合\hspace{1.5\ccwd}肥\hspace{1.5\ccwd}工\hspace{1.5\ccwd}业\hspace{1.5\ccwd}大\hspace{1.5\ccwd}学\par}%
+ \vskip 1.8cm%
+ \ifhfut@degree@master
+ {\sffamily\bfseries\fontsize{22bp}{30bp}\selectfont
+ \hfut@degreetype@name 学位论文\par}% 空格不可忽略
+ \else
+ {\sffamily\bfseries\fontsize{22bp}{30bp}\selectfont
+ \hfut@thesis@name\par}%
+ \fi
+ \vskip 1.8cm%
+ {\bfseries\fontsize{22bp}{30bp}\selectfont
+ \hfut@title\par}%
+ \ifhfut@degree@bachelor
+ \vskip 6.5cm
+ \else
+ \vskip 8cm%
+ \fi
+ \begin{tabular}{>{\fontsize{16bp}{16bp}\rmfamily\bfseries\selectfont}l>{\centering\arraybackslash\fontsize{16bp}{16bp}\rmfamily\selectfont}p{8.4cm}}%
+ \ifhfut@degree@bachelor
+ 学生姓名:& \hfut@author \\
+ \cline{2-2}\\
+ 学生学号:& \hfut@stuID \\
+ \cline{2-2}\\
+ 指导教师:& \hfut@supervisor@names \\
+ \cline{2-2}\\
+ \hfut@speciality@name:& \hfut@speciality\\
+ \cline{2-2}\\
+ 学院名称:& \hfut@department \\
+ \cline{2-2}
+ \else
+ \ifhfut@degree@doctor
+ 作者姓名:& \hfut@author\\
+ \cline{2-2}\\
+ 申请学位:& \hfut@applydegree \\
+ \cline{2-2}\\
+ 研究方向:& \hfut@research \\
+ \cline{2-2}\\
+ \hfut@speciality@name:& \hfut@speciality\\
+ \cline{2-2}\\
+ 指导教师:& \hfut@supervisor@names \\
+ \cline{2-2}
+ \else
+ \ifx\hfut@advisor\@empty
+ 作者姓名:& \hfut@author \\
+ \cline{2-2}\\
+ 指导教师:& \hfut@supervisor@names \\
+ \cline{2-2}\\
+ 学科专业:& \hfut@speciality \\
+ \cline{2-2}\\
+ 研究方向:& \hfut@research \\
+ \cline{2-2}
+ \else
+ 作者姓名:& \hfut@author \\
+ \cline{2-2}\\
+ 指导教师:& \hfut@supervisor@names \\
+ \cline{2-2}\\
+ & \hfut@advisor@names \\
+ \cline{2-2}\\
+ 专业名称:& \hfut@speciality \\
+ \cline{2-2}\\
+ 研究方向:& \hfut@research \\
+ \cline{2-2}
+ \fi
+ \fi
+ \fi
+ \end{tabular}\par%
+ \vfill
+ {\fontsize{15bp}{15bp}\selectfont\hfut@date@zh}
+ \end{titlepage}%
+ \hfut@reset@main@language
+}
+
+% 英文内封页
+\newcommand\hfut@makeentitle{%
+ \hfutsetup{language=english}%
+ \begin{titlepage}%
+ \hfut@pdfbookmark{English inner cover}%
+ \centering
+ \vspace*{0.5cm}%
+ {\fontsize{16bp}{30bp}\selectfont
+ \hfut@thesis@name@en\par}%
+ \vskip 2.0cm%
+ {\bfseries\fontsize{18bp}{30bp}\selectfont
+ \hfut@title@en\par}%
+ \vskip 1.2cm%
+ {\fontsize{16bp}{30bp}\selectfont
+ By\par
+ \hfut@author@en\par}%
+ \ifhfut@degree@doctor
+ \vskip 7.0cm
+ \else
+ \vskip 10.0cm
+ \fi
+ {\fontsize{16bp}{31bp}\selectfont
+ Hefei University of Technology\par
+ Hefei, Anhui, P.R.China\par
+ \hfut@date@en\par}%
+ \end{titlepage}%
+ \hfut@reset@main@language
+}
+
+% 重新定义 \cs{maketitle},调用 \cs{hfut@makezhtitle}, \cs{hfut@makeentitle}
+% 分别生成封面,中、英文标题页。
+\renewcommand\maketitle{%
+ \newgeometry{margin=2.54cm}%
+ \pagenumbering{Alph}%
+ \pagestyle{empty}%
+ \hfut@makecover
+ \ifhfut@degree@doctor
+ \hfut@makephdtitle
+ \fi
+ \hfut@makezhtitle
+ \hfut@makeentitle
+ \restoregeometry
+ \pagestyle{plain}%
+}
+
+\newcommand\signaturepage{%
+ \begin{titlepage}%
+ \hfut@pdfbookmark{答辩委员签名页}%
+ \null
+ {\centering\sffamily\bfseries\fontsize{22bp}{33bp}\selectfont
+ 合\hspace{0.5\ccwd}肥\hspace{0.5\ccwd}工\hspace{0.5\ccwd}业\hspace{0.5\ccwd}大\hspace{0.5\ccwd}学\par}
+ \vskip 0.8cm
+ {\fontsize{16bp}{30bp}\selectfont
+ 本论文经答辩委员会全体委员审查,确认符合合肥工业大学\hfut@degreetype@name 学位论文质量要求。\par}
+ \vskip 2.5cm
+ {\centering\fontsize{16bp}{24bp}\selectfont
+ \textbf{答辩委员会签名(工作单位、职称、姓名)}\par}
+ \vskip 1.0cm
+ {\fontsize{16bp}{16bp}\selectfont
+ 主席:\hfut@sign@chairman \par}
+ \vskip 1.0cm
+ {\fontsize{16bp}{16bp}\selectfont
+ 委员:\parbox[t]{10.5cm}{\linespread{2.0}\selectfont\hfut@sign@member} \par}
+ \vfill
+ {\fontsize{16bp}{16bp}\selectfont
+ 导师:\hfut@sign@supervisor }
+ \end{titlepage}%
+}
+
+\ifhfut@degree@bachelor
+ \let\signaturepage\relax
+\fi
+% Reserved for compatibility until 2020-07-01.
+\let\makestatement\signaturepage
+
+
+% \subsection{原创性声明}
+
+% 定义原创性声明
+\newcommand\hfut@originality@master{%
+ 本人郑重声明:所呈交的学位论文是本人在导师指导下进行独立研究
+ 工作所取得的成果。据我所知,除了文中特别加以标注和致谢的内容
+ 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为
+ 获得\underline{\hspace{0.5\ccwd}合肥工业大学\hspace{0.5\ccwd}}或
+ 其他教育机构的学位或证书而使用过的材料。对本文成果做出贡献的
+ 个人和集体,本人已在论文中作了明确的说明,并表示谢意。\par%
+ 学位论文中表达的观点纯属作者本人观点,与合肥工业大学无关。}
+\newcommand\hfut@authorization@master{%
+ 本学位论文作者完全了解\underline{\hspace{0.5\ccwd}合肥工业大学\hspace{0.5\ccwd}}有关保留、使用学位论文%
+ 的规定,即:除保密期内的涉密学位论文外,学校有权保存并向国家%
+ 有关部门或机构送交论文的复印件和电子光盘,允许论文被查阅或借%
+ 阅。本人授权\underline{\hspace{0.5\ccwd}合肥工业大学\hspace{0.5\ccwd}}可以将本学位论文的全部或部分内容%
+ 编入有关数据库,允许采用影印、缩印或扫描等复制手段保存、汇编%
+ 学位论文。\par%
+ (保密的学位论文在解密后适用本授权书)}
+
+\newcommand\hfut@originality@bachelor{%
+ 本人郑重声明:所呈交的毕业设计(论文)是本人在指导教师指导下
+ 进行独立研究工作所取得的成果。据我所知,除了文中特别加以标注
+ 和致谢的内容外,设计(论文)中不包含其他人已经发表或撰写过的
+ 研究成果,也不包含为获得\underline{\hspace{0.5\ccwd}合肥工业大学\hspace{0.5\ccwd}}或
+ 其他教育机构的学位或证书而使用过的材料。对本文成果做出贡献的
+ 个人和集体,本人已在设计(论文)中作了明确的说明,并表示谢意。\par%
+ 毕业设计(论文)中表达的观点纯属作者本人观点,与合肥工业大学无关。}
+\newcommand\hfut@authorization@bachelor{%
+ 本学位论文作者完全了解\underline{\hspace{0.5\ccwd}合肥工业大学\hspace{0.5\ccwd}}有关保留、使用毕业设计(论文)的规定,即:除保密期内的涉密设计(论文)外,学校有权
+ 保存并向国家有关部门或机构送交设计(论文)的复印件和电子光盘,
+ 允许设计(论文)被查阅或借阅。本人授权\underline{\hspace{0.5\ccwd}合肥工业大学\hspace{0.5\ccwd}}可以将本毕业设计(论文)的全部或部分内容编入有关数据库,允许采用影
+ 印、缩印或扫描等复制手段保存、汇编毕业设计(论文)。\par%
+ (保密的毕业设计(论文)在解密后适用本授权书)}
+ %
+
+
+\newcommand\copyrightpage{%
+ \begin{titlepage}%
+ \hfut@pdfbookmark{原创性和授权使用声明}%
+ \null
+ \renewcommand\arraystretch{1.5}
+ \ifhfut@degree@bachelor
+ {\centering\sffamily\fontsize{18bp}{18bp}\selectfont
+ \textbf{毕业设计(论文)独创性声明}\par}%
+ \vskip 1.0cm%
+ \hfut@originality@bachelor\par
+ \vskip 0.9cm%
+ 毕业设计(论文)作者签名:\hfill%
+ 签字日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日\par
+ \vskip 2.33cm%
+ {\centering\sffamily\fontsize{18bp}{18bp}\selectfont
+ \textbf{毕业设计(论文)版权使用授权书}\par}%
+ \vskip 1.0cm%
+ \hfut@authorization@bachelor\par
+ \vskip 1.0cm%
+ \begin{tabular}{@{}p{6.5cm}p{6.5cm}@{}}%
+ 学位论文作者签名:& 指导教师签名:\\
+ 签名日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日 & 签名日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日
+ \end{tabular}\par
+ \else
+ {\centering\sffamily\fontsize{18bp}{18bp}\selectfont
+ \textbf{学位论文独创性声明}\par}%
+ \vskip 1.25cm%
+ \hfut@originality@master\par
+ \vskip 1.1cm%
+ 学位论文作者签名:\hfill%
+ 签字日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日\par
+ \vskip 2.8cm%
+ {\centering\sffamily\fontsize{18bp}{18bp}\selectfont
+ \textbf{学位论文版权使用授权书}\par}%
+ \vskip 1.25cm%
+ \hfut@authorization@master\par
+ \vskip 1.2cm%
+ \begin{tabular}{@{}p{6.5cm}p{6.5cm}@{}}%
+ 学位论文作者签名:& 指导教师签名:\\
+ 签名日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日 & 签名日期:\hspace{3\ccwd}年\hspace{2\ccwd}月\hspace{2\ccwd}日\\
+ \end{tabular}\par
+ \vskip 0.6cm
+ \renewcommand\arraystretch{1.1}
+ \begin{tabular}{@{}p{6.5cm}p{6.5cm}@{}}%
+ 论文作者毕业去向 & \\
+ 工作单位:& \\
+ 联系电话:& E-mail:\\
+ 通讯地址:& 邮政编码:
+ \end{tabular}\par
+ \renewcommand\arraystretch{1}
+ \fi
+ \end{titlepage}%
+}
+
+% Reserved for compatibility until 2020-07-01.
+\let\makestatement\copyrightpage
+
+
+% \subsection{章节标题}
+
+% 标题最多允许使用五级。
+\setcounter{secnumdepth}{5}
+
+% 研究生规定章题为两字时中间空两字,三字时空一字,四字时空半字,四字以上不空。
+% 这里用 \LaTeX3 的 \cs{str\_count:N} 判断字数。
+% 注意,\pkg{stringstrings} 宏包会导致范数命令 \verb+\|+ 被修改。
+\newcount\hfut@titlelength
+\DeclareRobustCommand\hfut@spacetitle[1]{%
+ \hfut@titlelength=\csname str_count:N\endcsname{#1}%
+ \begingroup
+ \ifhfut@degree@graduate
+ \ifcase\hfut@titlelength
+ \or\or
+ \ziju{2}%
+ \or
+ \ziju{1}%
+ \or
+ \ziju{0.5}%
+ \fi
+ \else
+ \if@mainmatter\else
+ \ifcase\hfut@titlelength
+ \or\or
+ \ziju{1}%
+ \or\or
+ \ziju{0.5}%
+ \fi
+ \fi
+ \fi
+ #1%
+ \endgroup
+}
+
+% 五级节标题和脚注需要使用带圈的数字,这里使用 \cs{hfut@circlefont} :
+\newcommand\hfut@textcircled[1]{%
+ \ifnum\value{#1}<21\relax
+ {\symbol{\numexpr\value{#1} + "245F\relax}}%
+ \else
+ \hfut@error{Cannot display more than 20 footnotes}%
+ \fi
+}
+
+% 用 \pkg{ctex} 的接口设置全部章节标题格式。
+
+% 各章标题:黑体 16 磅加粗居中,行距为单倍行距,段前 1 行,段后 1 行,
+% 章序号与章名间空一字。
+
+% 由于 Word 模板中使用“单倍行距”,还“对齐到网格”,这在 TeX 中不容易实现。
+% 所以目前按照默认的行距。
+
+% 注意 \pkg{ctex} v2.4.3 以下版本的bug会导致章节标题前后的距离的实际值偏大。
+% 另外 \pkg{ctex} v2.2 前的beforeskip的符号有特殊意义。
+
+\ctexset{
+ chapter = {
+ format = {
+ \centering
+ \if@mainmatter
+ \fontsize{16bp}{16bp}\sffamily\bfseries\selectfont
+ \else
+ \fontsize{18bp}{16bp}\rmfamily\bfseries\selectfont
+ \fi
+ },
+ nameformat = {},
+ name = {第,章},
+ titleformat = {},
+ number = \chinese{chapter},
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = {
+ \if@mainmatter
+ 16bp
+ \else
+ 9bp
+ \fi
+ },
+ %tocline = {
+ % \if@mainmatter
+ % %\if \@chapapp \appendixname
+ % \ifhfut@appendix
+ % {附录~\arabic{chapter}~~#2}
+ % \else
+ % {第\chinese{chapter}章~#2}
+ % \fi
+ % \else
+ % \CTEXnumberline{#1}#2
+ % \fi
+ %},
+ afterskip = {
+ \if@mainmatter
+ 16bp
+ \else
+ 24bp
+ \fi
+ },
+ fixskip = true,
+ },
+}
+
+% 一级节标题:黑体,小四号,左对齐
+% 序号与题名间空一字。
+\ctexset{
+ section = {
+ format = \sffamily\fontsize{12bp}{15.6bp}\selectfont,
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = 7.8bp,
+ afterskip = 7.8bp,
+ },
+ %
+ % 二级节标题:宋体,加黑,小四号,左对齐
+ % 序号与题名间空一字。
+ subsection = {
+ format = \rmfamily\bfseries\fontsize{12bp}{15.6bp}\selectfont,
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = 7.8bp,
+ afterskip = 7.8bp,
+ },
+ %
+ % 三级及以下节标题的格式没有具体规定,按照数学学院推荐的方案:
+ % 使用宋体 12 磅,左缩进两字,行距 20 磅,段前段后 0 磅,序号(n)与题名间空半字宽。
+ subsubsection = {
+ format = \rmfamily\fontsize{12bp}{15.6bp}\selectfont,
+ number = (\arabic{subsubsection}),
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = \z@,
+ afterskip = \z@,
+ indent = 2\ccwd,
+ },
+ %
+ % 采用西文式段标题,runin=true
+ paragraph = {
+ format = \rmfamily\bfseries\fontsize{12bp}{20bp}\selectfont,
+ number = {},
+ name = {},
+ aftername = {},
+ beforeskip = \z@,
+ afterskip = \ccwd,
+ indent = 2\ccwd,
+ runin = true,
+ },
+ %
+ % 采用西文式子段标题,runin=true
+ subparagraph = {
+ format = \rmfamily\fontsize{12bp}{20bp}\selectfont,
+ number = {},
+ name = {},
+ aftername = {},
+ beforeskip = \z@,
+ afterskip = \ccwd,
+ indent = 2\ccwd,
+ runin = true,
+ },
+}
+
+\ifhfut@degree@bachelor
+ \ifhfut@main@language@english
+ \hfutsetup{section-style = arabic}
+ \fi
+\fi
+\hfut@option@hook{main-language}{%
+ \ifhfut@degree@bachelor
+ \ifhfut@main@language@english
+ \hfutsetup{section-style = arabic}%
+ \fi
+ \fi
+}
+
+% 在研究生格式的基础上再设置本科生的章节标题格式。
+\ifhfut@degree@bachelor
+ \setcounter{secnumdepth}{4}
+ \ctexset{
+ %
+ % 论文的致谢、目录、摘要和参考文献等标题用小二号(18 bp)黑体字,居中,
+ % 这通过 \cs{if@mainmatter} 区分。
+ % 正文中的标题分章、节、段三级;章、节标题居中,段标题居左,
+ % 分别用三号(16 bp)黑体、小四(12 bp)黑体、小四(12 bp)黑体。
+ chapter = {
+ name = {},
+ format = {
+ \centering
+ \if@mainmatter
+ \fontsize{16bp}{22bp}\sffamily\bfseries\selectfont
+ \else
+ \fontsize{18bp}{22bp}\rmfamily\bfseries\selectfont
+ \fi
+ },
+ nameformat = \rmfamily\bfseries,
+ number = \thechapter,
+ aftername = \hspace{\ccwd},
+ beforeskip = {
+ \if@mainmatter
+ 22bp
+ \else
+ 11bp
+ \fi
+ },
+ afterskip = {
+ \if@mainmatter
+ 22bp
+ \else
+ 33bp
+ \fi
+ },
+ fixskip = true,
+ },
+ section = {
+ format = \sffamily\fontsize{12bp}{22bp}\selectfont,
+ beforeskip = 11bp,
+ afterskip = 11bp,
+ nameformat = \rmfamily\bfseries,
+ },
+ subsection = {
+ format = \rmfamily\bfseries\fontsize{12bp}{22bp}\selectfont,
+ beforeskip = 11bp,
+ afterskip = 11bp,
+ nameformat = \rmfamily\bfseries\selectfont,
+ indent = \z@,
+ },
+ subsubsection = {
+ format = \rmfamily\fontsize{12bp}{22bp}\selectfont,
+ number = (\arabic{subsubsection}),
+ aftername = \hspace{0.5\ccwd},
+ beforeskip = \z@,
+ afterskip = \z@,
+ indent = 2\ccwd,
+ },
+ paragraph = {
+ format = \rmfamily\bfseries\fontsize{12bp}{22bp}\selectfont,
+ number = {},
+ name = {},
+ aftername = {},
+ beforeskip = \z@,
+ afterskip = \ccwd,
+ indent = 2\ccwd,
+ runin = true,
+ },
+ subparagraph = {
+ format = \rmfamily\fontsize{12bp}{22bp}\selectfont,
+ number = {},
+ name = {},
+ aftername = {},
+ beforeskip = \z@,
+ afterskip = \ccwd,
+ indent = 2\ccwd,
+ runin = true,
+ },
+ }
+ %
+ % 本科生的阿拉伯数字式标题的格式与研究生几乎一致,只有中文数字式需要修改。
+ \ifhfut@section@style@arabic\else
+ \ctexset{
+ chapter = {
+ name = {},
+ %number = \chinese{chapter}
+ },
+ section = {
+ %name = {第,节},
+ %number = \chinese{section},
+ },
+ subsection = {
+ %number = \chinese{subsection},
+ %aftername = {、},
+ },
+ }
+ \fi
+\fi
+
+% 默认的 \cs{chapter*} 生成的章标题没有编号、不更改页眉,
+% 也不添加进目录或 PDF 书签。
+% 然而像摘要、目录、符号说明这样的章节,它们不需要编号、不加入目录,
+% 但是需要修改页眉,并且加入 PDF 标签。
+% 所以我们新定义 \cs{hfut@chapter} 用于处理这些章节。%
+\NewDocumentCommand\hfut@chapter{o m}{%
+ \if@openright\cleardoublepage\else\clearpage\fi
+ \IfValueTF{#1}{%
+ \hfut@pdfbookmark{#1}%
+ \chaptermark{#1}%
+ }{%
+ \hfut@pdfbookmark{#2}%
+ \chaptermark{#2}%
+ }%
+ \chapter*{#2}}
+ %
+ %
+ % \subsection{摘要}
+ %
+ % 中文摘要环境。
+ % 判断 \cs{hfut@tocloaded} 是为了防止本科生未调整摘要位置时的目录页码缺失。
+\newcommand\hfut@keywords@text{%
+ \hfut@clist@use{\hfut@keywords}{;}%
+}
+\newcommand\hfut@keywords@en@text{%
+ \hfut@clist@use{\hfut@keywords@en}{; }%
+}
+\newenvironment{abstract}{%
+ \hfutsetup{language=chinese}%
+ \ifhfut@degree@graduate
+ \pagestyle{plain}
+ \ctexset{chapter/format=\centering\Large\selectfont\bfseries}%
+ \hfut@chapter[摘要]{摘\hspace{\ccwd}要}%
+ \else
+ \pagestyle{plain}
+ \hfut@chapter[摘要]{摘\hspace{\ccwd}要}%
+ % \ifhfut@tocloaded\else
+ % 本科生需要手动将摘要置于目录后。\par
+ % \fi
+ \fi
+}{
+ \pagestyle{plain}
+ \par\null\par\noindent
+ \textbf{关键词:}\hfut@keywords@text\par
+ \hfut@reset@main@language
+}
+
+% 英文摘要环境
+\newenvironment{abstract*}{%
+ \hfutsetup{language=english}%
+ \ctexset{chapter/format=\centering\Large\selectfont\bfseries}%
+ \setlength{\parindent}{1em}
+ \ifhfut@degree@graduate
+ \hfut@chapter[Abstract]{ABSTRACT}%
+ \pagestyle{plain}
+ \else
+ \begingroup
+ \pagestyle{plain}%
+ \hfut@chapter[Abstract]{ABSTRACT}%
+ \endgroup
+ \fi
+}{
+ %\pagestyle{plain}
+ \par\null\par\noindent
+ \textbf{KEYWORDS:} \hfut@keywords@en@text\par
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \fi
+ \hfut@reset@main@language
+}
+
+% Reserved for compatibility until 2020-07-01.
+\newenvironment{enabstract}{%
+ \begin{abstract*}%
+}{%
+ \end{abstract*}%
+}
+
+
+% \subsection{目录}
+
+% 判断是否已经加载目录,用于提醒本科生更改摘要和致谢的顺序。
+\newif\ifhfut@tocloaded
+
+% 判断是否在附录中
+\newif\ifhfut@appendix
+
+% 研究生规定目录另面起;
+% 本科生规定从正文起标页码。
+\renewcommand\tableofcontents{%
+ \ifhfut@degree@bachelor
+ \cleardoublepage
+ %\pagenumbering{arabic}%
+ \pagestyle{plain}%
+ \hfut@tocloadedtrue
+ \else
+ \pagestyle{plain}%
+ \fi
+ \hfut@chapter{\contentsname}%
+ \@starttoc{toc}%
+}
+
+% 下面用 \pkg{titletoc} 宏包设置目录内容的格式。
+% 先定义目录线:
+\newcommand\hfut@leaders{\titlerule*[9bp]{\textperiodcentered}}
+
+% 各章目录要求宋体 12 磅,单倍行距,段前 6 磅,段后 0 磅,两端对齐,
+% 页码右对齐,章序号与章名间空一字。
+% 但是 Word 模板中实际是行距 20 磅。
+\ifhfut@degree@graduate
+ \titlecontents{chapter}
+ [\z@]{\bfseries\normalsize}
+ {\contentspush{\thecontentslabel\hspace{0.5\ccwd}}}{}
+ {\normalsize\hfut@leaders\contentspage}
+ %
+ % 一级节标题目录要求宋体 12 磅,单倍行距,左缩进一字,段前 6 磅,段后 0 磅,
+ % 两端对齐,页码右对齐,序号与题名间空一字。
+ % Word 模板中实际是行距 20 磅,段前 0 磅。
+ \titlecontents{section}
+ [2\ccwd]{\normalsize}
+ {\contentspush{\thecontentslabel\hspace{0.5\ccwd}}}{}
+ {\normalsize\hfut@leaders\contentspage}
+ %
+ % 二级节标题目录要求宋体 12 磅,单倍行距,左缩进两字,段前 6 磅,段后 0 磅,
+ % 两端对齐,页码右对齐,序号与题名间空一字。
+ % Word 模板中实际是行距 20 磅,段前 0 磅。
+ \titlecontents{subsection}
+ [4\ccwd]{\normalsize}
+ {\contentspush{\thecontentslabel\hspace{0.5\ccwd}}}{}
+ {\normalsize\hfut@leaders\contentspage}
+ %
+ % 本科生的目录使用小四宋体(同正文字体),其他同研究生的格式相近。
+\else
+ \titlecontents{chapter}
+ [\z@]{\bfseries\normalsize}
+ {\contentspush{\thecontentslabel\unskip\hspace{0.5\ccwd}}}{}
+ {\hfut@leaders\contentspage}
+ \titlecontents{section}
+ [2\ccwd]{\normalsize}
+ {\contentspush{\thecontentslabel\hspace{0.5\ccwd}}}{}
+ {\hfut@leaders\contentspage}
+ \titlecontents{subsection}
+ [4\ccwd]{\normalsize}
+ {\contentspush{\thecontentslabel\hspace{0.5\ccwd}}}{}
+ %\ifhfut@section@style@arabic\hspace{\ccwd}\else 、\fi}}{}
+ {\hfut@leaders\contentspage}
+\fi
+
+% 本科生要求目录中正文每章前多空一行,而目录、附录等章则不需要空行,
+% 所以不能简单判断 \cs{if@mainmatter},需要重新定义 \cs{mainmatter} 等命令。
+% \newif\ifhfut@addtocspace
+% \ifhfut@degree@bachelor
+% \hfut@addtocspacetrue
+% \g@addto@macro\frontmatter{\hfut@addtocspacefalse}%
+% \g@addto@macro\mainmatter{\hfut@addtocspacetrue}%
+% \g@addto@macro\backmatter{\hfut@addtocspacefalse}%
+% \g@addto@macro\appendix{\hfut@addtocspacefalse}%
+% \fi
+
+% 处理本科生在目录中添加空行。
+% \renewcommand\chapter{%
+% \if@openright\cleardoublepage\else\clearpage\fi
+% \thispagestyle{\CTEX@chapter@pagestyle}%
+% \global\@topnum\z@
+% \@afterindenttrue
+% \ifhfut@degree@bachelor
+% \ifhfut@addtocspace
+% \addtocontents{toc}{\protect\addvspace{12bp}}%
+% \fi
+% \fi
+% \secdef\@chapter\@schapter
+% }
+
+% 研究生要求图、表的清单须另页起。
+\newlength{\hfut@lof@label@width}
+\newcommand\hfut@set@lof@format{%
+ \settowidth{\hfut@lof@label@width}{\figurename~9.99}%
+ \addtolength{\hfut@lof@label@width}{0.5\ccwd}%
+ \titlecontents{figure}%
+ [\hfut@lof@label@width]{\normalsize}%
+ {\contentslabel[\figurename~\thecontentslabel]{\hfut@lof@label@width}}{}%
+ {\hfut@leaders\contentspage}%
+ \titlecontents{table}%
+ [\hfut@lof@label@width]{\normalsize}%
+ {\contentslabel[\tablename~\thecontentslabel]{\hfut@lof@label@width}}{}%
+ {\hfut@leaders\contentspage}%
+}
+\hfut@set@lof@format
+\hfut@option@hook{main-language}{\hfut@set@lof@format}
+\renewcommand\listoffigures{%
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \fi
+ \hfut@chapter{\listfigurename}%
+ \@starttoc{lof}%
+}
+\renewcommand\listoftables{%
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \fi
+ \hfut@chapter{\listtablename}%
+ \@starttoc{lot}%
+}
+
+
+% \subsection{符号说明}
+
+% 研究生规定符号说明另页起,标题字体字号等同论文正文,
+\newenvironment{notation}{%
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \pagestyle{plain}%
+ \fi
+ \hfut@chapter{\hfut@notation@name}%
+}{%
+ \ifhfut@degree@graduate
+ \clearpage
+ \pagestyle{plain}%
+ \fi
+}%
+\newcommand*\notationlabel[1]{#1\hfil}%
+\newenvironment{notationlist}[1]{%
+ \list{}{%
+ \itemsep 3bp%
+ \labelwidth #1\relax%
+ \labelsep 1em%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \advance\leftmargin 3em%
+ \rightmargin 3em%
+ \let\makelabel\notationlabel
+ }%
+}{%
+ \endlist
+}
+
+
+% \subsection{正文}
+
+% \cs{sloppy} 可以减少“overfull boxes”。
+\sloppy
+
+% 禁止扩大段间距。(\href{https://github.com/ustctug/ustcthesis/issues/209}{
+% ustctug/ustcthesis\#209})
+\raggedbottom
+
+% 段间距 0 磅。
+\setlength{\parskip}{\z@}
+
+% 首段缩进。
+\ctexset{autoindent=2}
+
+% 首段缩进。
+\let\@afterindentfalse\@afterindenttrue
+\@afterindenttrue
+
+% URL 的字体设为保持原样。
+\urlstyle{same}
+
+% 使用 \pkg{xurl} 宏包的方法,增加 URL 可断行的位置。
+\def\UrlBreaks{%
+ \do\/%
+ \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%
+ \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:%
+ \do\*\do\-\do\~\do\'\do\"\do\-}
+\Urlmuskip=0mu plus 0.1mu
+
+% 脚注用带圈的数字:
+\renewcommand\thefootnote{\hfut@textcircled{footnote}}
+
+% LaTeX 默认脚注按章计数,即每章的开始才重置脚注计数器;我们修改为按页计数。
+% 简单的|\@addtoreset{footnote}{page}|并不可靠,
+% \footnote{\url{https://texfaq.org/FAQ-footnpp.html}}
+% 所以我们使用 \pkg{footmisc} 宏包。
+
+% 脚注线长为版心宽度的四分之一:
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \hrule\@width.25\textwidth
+ \kern2.6\p@}
+ %
+ % 注文缩进两字:
+\renewcommand\@makefntext[1]{%
+ \parindent 2\ccwd\relax
+ \noindent
+ \hb@xt@2\ccwd{\hss\@makefnmark}#1}
+
+
+% \subsection{列表}
+% \label{sec:list}
+
+% 调整列表中各项之间过大的间距。
+\setlength\partopsep{\z@}
+\newcommand\hfut@nolistsep{%
+ \parsep 0\p@ \@plus.2\p@
+ \topsep 0\p@ \@plus.2\p@
+ \itemsep0\p@ \@plus.2\p@
+}
+\def\@listi{\leftmargin\leftmargini
+ \hfut@nolistsep}
+\let\@listI\@listi
+\@listi
+\def\@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \hfut@nolistsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \hfut@nolistsep}
+
+
+% \subsection{浮动体}
+
+% \LaTeX{} 对放置浮动体的要求比较强,这里按照 UK TeX FAQ 的建议
+% \footnote{\url{https://texfaq.org/FAQ-floats}} 对其适当放宽。
+\renewcommand\topfraction{.85}
+\renewcommand\bottomfraction{.7}
+\renewcommand\textfraction{.15}
+\renewcommand\floatpagefraction{.66}
+\renewcommand\dbltopfraction{.66}
+\renewcommand\dblfloatpagefraction{.66}
+\setcounter{topnumber}{9}
+\setcounter{bottomnumber}{9}
+\setcounter{totalnumber}{20}
+\setcounter{dbltopnumber}{9}
+
+% 修改默认的浮动体描述符为 |htb|。
+\def\fps@figure{h}
+\def\fps@table{h}
+
+% 用 \pkg{caption} 宏包设置图、表的格式:
+
+% 图号、图题置于图的下方,宋体 10.5 磅居中,单倍行距,段前 6 磅,段后 12 磅,
+% 图号与图题文字之间空一字,图号、图题加粗。
+% 图注位于图的下方,左缩进两字,续行悬挂缩进左对齐,两端对齐。
+
+% 表号、表题置于表的上方,黑体 10.5 磅居中,单倍行距,段前 6 磅,段后 6 磅,
+% 表号与表题文字之间空一字,表号、表题加粗。
+% 表注左缩进两字,续行悬挂缩进左对齐,两端对齐。
+\setlength{\floatsep}{6bp}
+\setlength{\textfloatsep}{6bp}
+\setlength{\intextsep}{12bp}
+
+% 由于 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 <-\@Mii
+ \addvspace\intextsep
+ \vskip\parskip
+ \else
+ \addvspace\intextsep
+ \fi}%
+ {}{\hfut@patch@error{\@addtocurcol}}
+\patchcmd{\@addtocurcol}%
+ {\vskip\intextsep \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi}%
+ {\ifnum\outputpenalty <-\@Mii
+ \aftergroup\vskip\aftergroup\intextsep
+ \aftergroup\nointerlineskip
+ \else
+ \vskip\intextsep
+ \fi}%
+ {}{\hfut@patch@error{\@addtocurcol}}
+\patchcmd{\@getpen}{\@M}{\@Mi}
+ {}{\hfut@patch@error{\@getpen}}
+
+\DeclareCaptionFont{hfut}{%
+ \ifhfut@language@chinese
+ \fontsize{10.5bp}{13.65bp}\selectfont
+ \else
+ \fontsize{10.5bp}{12.075bp}\selectfont
+ \fi
+}
+
+\captionsetup{
+ font = hfut,
+ labelsep = quad,
+ skip = 6bp,
+ figureposition = bottom,
+ tableposition = top,
+}
+% graduate的图表标题不需要加粗
+% \ifhfut@degree@graduate
+% \captionsetup{font+=bf}
+% \captionsetup[table]{font+=sf}
+% \fi
+
+% 硕博需要中英文双标题
+\captionsetup[figure][bi-second]{name=Fig} %设置图的英文编号前缀
+\captionsetup[table][bi-second]{name=Tab} %设置表的英文编号前缀
+
+% 新定义了 \cs{note} 来生成图表的附注。
+% 如果用 \cs{caption} 生成图表的附注会导致图表的序号有误;
+% 如果用 \cs{bicaption} 会导致表注无法置于表后,而且对齐方式不对。
+\newcommand\note[1]{%
+ \begingroup
+ \captionsetup{
+ font = hfut,
+ margin = 2\ccwd,
+ position = bottom,
+ }%
+ \caption*{#1}%
+ \endgroup
+}
+
+% 表格默认字号略小
+\patchcmd\@floatboxreset{%
+ \normalsize
+}{%
+ \small
+}{}{\hfut@patch@error{\@floatboxreset}}
+
+% 对 \pkg{longtable} 跨页表格进行相同的设置。
+%
+% 在 Word 模板中按照正确的设置(需要去掉文档网格),
+% 中文模板每页能装下 1 行标题、1 行表头、30 行表身,
+% 英文模板每页能装下 1 行标题、1 行表头、33 行表身。
+% \begin{macrocode}
+\AtEndOfPackageFile*{longtable}{
+ \AtBeginEnvironment{longtable}{%
+ \small
+ }
+}
+
+
+% \subsection{参考文献}
+
+\PassOptionsToPackage{compress}{natbib}
+
+\AtEndOfPackageFile*{natbib}{
+ % 定义几种引用文献的标注样式。
+ \newcommand\bibstyle@super{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
+ \newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}}
+ \newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}}
+ \@namedef{bibstyle@author-year}{\bibstyle@authoryear}
+ %
+ % 几种种引用样式,与 \file{bst} 文件名保持一致,
+ % 这样在使用 \cs{bibliographystyle} 选择参考文献表的样式时也会设置对应的引用样式。
+ \@namedef{bibstyle@hfutthesis-numerical}{\bibstyle@super}
+ \@namedef{bibstyle@hfutthesis-authoryear}{\bibstyle@authoryear}
+ \@namedef{bibstyle@hfutthesis-graduate}{\bibstyle@super}
+ %
+ % 如果载入 `natbib` 前设置了 `cite-style`,这里先进行配置。
+ % https://github.com/ustctug/ustcthesis/issues/327
+ \ifx\hfut@cite@style\@empty\else
+ \citestyle{\hfut@cite@style}%
+ \fi
+ %
+ % 定义接口 cite-style 切换引用样式。
+ \hfut@option@hook{cite-style}{%
+ \ifx\@begindocumenthook\@undefined
+ \citestyle{\hfut@cite@style}%
+ \fi
+ }
+ %
+ % 如果文献序号作为叙述文字的一部分,需要临时将文献序号与正文平排
+ \DeclareRobustCommand\inlinecite{\@inlinecite}
+ \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup}
+ %
+ % 修改引用的样式。
+ % 这里在 filehook 中无法使用 \cs{patchcmd},所以只能手动重定义。
+ %
+ % 将 super 式 \cs{citep} 引用的页码置于括号外。
+ \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}%
+ \else #1\fi\endgroup}
+ %
+ % 将 numbers 式 \cs{citep} 引用的页码置于括号外并改为上标。
+ \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\else#1\fi\endgroup}
+ #1\NAT@@close\textsuperscript{\if*#3*\else#3\fi}\else#1\fi\endgroup}
+ %
+ % 在 filehook 中无法使用 \cs{patchcmd},所以只能手动重定义。
+ \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>\@ne}{%
+ \@citea
+ \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
+ }{%
+ \@ifnum{\NAT@cmprs>\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>\@ne}{}{\NAT@last@yr@mbox}%
+ }{%
+ \advance\@tempcnta by\@ne
+ \@ifnum{\NAT@nm=\@tempcnta}{%
+ % 在顺序编码制下,\pkg{natbib} 只有在三个以上连续文献引用才会使用连接号,
+ % 这里修改为允许两个引用使用连接号。
+ % 参考 https://tex.stackexchange.com/a/86991/82731 。
+ %
+ % \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>\@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>\z@}{\NAT@last@yr}{}%
+ \ifNAT@swa\else
+ % 将 numerical 式 \cs{citet} 引用的页码置于括号外并改为上标。
+ %
+ % \@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
+ }{}%
+ \fi
+ }{#1}{#2}%
+ }%
+ %
+ % 将 author-year 式 \cs{citep} 引用的页码置于括号外并改为上标:
+ \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}
+ %
+ % 调整 author-year 式 \cs{citet} 引用的页码。
+ \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
+ % 将 author-year 式 \cs{citet} 引用的页码置于括号外并改为上标。
+ %
+ % \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}}
+ %
+ % 为了将参考文献加入目录和 pdf 书签,重新定义 \pkg{natbib} 的 \cmd{bibsection}
+ % 另外如果调用了 \pkg{chapterbib} 或者使用了 \opt{sectionbib} 参数,
+ % 需要使用节标题 \cs{section}。
+ \newcommand\hfut@bib@chapter{%
+ \@mainmatterfalse
+ \ifhfut@degree@bachelor
+ \ctexset{
+ chapter/format = {
+ \centering\fontsize{16bp}{22bp}\sffamily\bfseries\selectfont
+ },
+ chapter/beforeskip = 11bp,
+ chapter/afterskip = 11bp,
+ }
+ \fi
+ \chapter{\bibname}%
+ }%
+ \newcommand\hfut@bib@section{%
+ \begingroup
+ \ctexset{section/numbering=false}%
+ \section{\bibname}%
+ \endgroup
+ }%
+ \@ifpackagewith{chapterbib}{sectionbib}{%
+ \hfut@error{The "sectionbib" option cannot be used with chaperbib if natbib loaded}%
+ }{}%
+ \@ifpackageloaded{chapterbib}{%
+ \let\bibsection\hfut@bib@section
+ }{%
+ \@ifxundefined\NAT@sectionbib{%
+ \let\bibsection\hfut@bib@chapter
+ }{%
+ \let\bibsection\hfut@bib@section
+ }%
+ }%
+ %
+ % 参考文献列表格式:宋体 10.5 磅,行距 20 磅,续行缩进2.5字符,左对齐。
+ \renewcommand\bibfont{%
+ \fontsize{10.5bp}{20bp}\selectfont
+ }
+ \setlength{\bibsep}{0\p@ \@plus.2\p@}
+ \renewcommand\@biblabel[1]{[#1]\hfill}
+ \setlength{\bibhang}{2.5\ccwd}
+}
+
+
+% biblatex 宏包的配置
+
+\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]{%
+ \@mainmatterfalse
+ \chapter{\bibname}%
+ }
+ \renewcommand\bibfont{%
+ \fontsize{10.5bp}{20bp}\selectfont
+ }
+ \setlength{\bibitemsep}{0\p@ \@plus.2\p@}
+ \setlength{\bibhang}{2.5\ccwd}
+}
+
+% \subsection{附录}
+
+% 定义了一个满足要求的致谢环境:
+\newenvironment{acknowledgements}{%
+ \@mainmatterfalse
+ \ifhfut@degree@graduate
+ \hfut@chapter[致谢]{\hfut@acknowledgements@name}%
+ \else
+ \chapter{致谢}%
+ \fi
+}{}
+
+
+% 兼容旧版本中“acknowledgments”的拼法。
+% Reserved for compatibility until 2020-07-01.
+\newenvironment{acknowledgments}{%
+ \begin{acknowledgements}%
+}{%
+ \end{acknowledgements}%
+}
+
+% TODO 发表成果环境格式:
+\newenvironment{publications}{%
+ \@mainmatterfalse
+ \ctexset{
+ chapter/format = \centering\sffamily\bfseries\fontsize{18bp}{18bp}\selectfont,
+ chapter/beforeskip = 9bp,
+ chapter/afterskip = 27bp,
+ section/name = {,)},
+ section/nameformat = {},
+ section/aftername = {},
+ section/format = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont\bfseries,
+ section/beforeskip = 10bp,
+ section/afterskip = 10bp,
+ }
+ \chapter{\hfut@publication@name}%
+ \renewcommand\thesection{\arabic{section}}
+ \setenumerate[1]{itemsep = 0pt, parsep = 0pt, label = (\arabic*)}
+ \setcounter{tocdepth}{0}
+ \setcounter{section}{0}
+}{}
+
+
+% \subsection{其他宏包的设置}
+
+% 这些宏包并非格式要求,但是为了方便同学们使用,在这里进行简单设置。
+
+
+% \subsubsection{\pkg{hyperref} 宏包}
+
+\AtEndOfPackageFile*{hyperref}{
+ \hypersetup{
+ bookmarksnumbered = true,
+ bookmarksopen = true,
+ bookmarksopenlevel = 1,
+ linktoc = all,
+ unicode = true,
+ psdextra = true,
+ }
+ %
+ % 如果为 \opt{pdf} 样式,设置 hyperlink 颜色
+ \ifhfut@output@electronic
+ \hypersetup{
+ colorlinks = true,
+ allcolors = red,
+ }
+ \else
+ \hypersetup{hidelinks}
+ \fi
+ %
+ % 填写 PDF 元信息。
+ \AtBeginDocument{%
+ \ifhfut@main@language@chinese
+ \hypersetup{
+ pdftitle = \hfut@title,
+ pdfauthor = \hfut@author,
+ }%
+ \else
+ \hypersetup{
+ pdftitle = \hfut@title@en,
+ pdfauthor = \hfut@author@en,
+ }%
+ \fi
+ }
+ %
+ % 添加 PDF 书签
+ %
+ \newcounter{hfut@bookmarknumber}
+ \renewcommand\hfut@pdfbookmark[1]{%
+ \phantomsection
+ \stepcounter{hfut@bookmarknumber}%
+ \pdfbookmark[0]{#1}{hfutchapter.\thehfut@bookmarknumber}%
+ }
+ %
+ % 在 PDF 字符串中去掉换行,以减少 \pkg{hyperref} 的警告信息。
+ \pdfstringdefDisableCommands{
+ \let\\\@empty
+ \let\hspace\@gobble
+ }
+ %
+ % \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}。
+ \@ifpackagelater{hyperref}{2019/04/27}{}{%
+ \g@addto@macro\psdmapshortnames{\let\mu\textmu}%
+ }
+ %
+ % 设置中文的 \cs{autoref}。
+ % \footnote{\url{https://tex.stackexchange.com/a/66150/82731}}
+ \ifhfut@language@chinese
+ \def\equationautorefname~#1\null{公式~(#1)\null}
+ \def\footnoteautorefname{脚注}
+ \def\itemautorefname~#1\null{第~#1~项\null}
+ \def\figureautorefname{图}
+ \def\tableautorefname{表}
+ \def\partautorefname~#1\null{第~#1~部分\null}
+ \def\appendixautorefname{附录}
+ \def\chapterautorefname~#1\null{第~#1~章\null}
+ \def\sectionautorefname~#1\null{第~#1~节\null}
+ \def\subsectionautorefname~#1\null{第~#1~小节\null}
+ \def\subsubsectionautorefname~#1\null{第~#1~小小节\null}
+ \def\paragraphautorefname~#1\null{第~#1~段\null}
+ \def\subparagraphautorefname~#1\null{第~#1~小段\null}
+ \def\theoremautorefname{定理}
+ \def\HyRef@autopageref#1{\hyperref[{#1}]{第~\pageref*{#1} 页}}
+ \fi
+}
+
+
+% \subsubsection{\pkg{amsthm} 宏包}
+
+\AtEndOfPackageFile*{amsthm}{
+ \newtheoremstyle{hfutplain}
+ {}{}
+ {}{2\ccwd}
+ {\bfseries}{}
+ {\ccwd}{}
+ \theoremstyle{hfutplain}
+ % 定义新的定理
+ \ifhfut@language@chinese
+ \newcommand\hfut@assertion@name{断言}
+ \newcommand\hfut@assumption@name{假设}
+ \newcommand\hfut@axiom@name{公理}
+ \newcommand\hfut@corollary@name{推论}
+ \newcommand\hfut@definition@name{定义}
+ \newcommand\hfut@example@name{例}
+ \newcommand\hfut@lemma@name{引理}
+ \newcommand\hfut@proof@name{证明}
+ \newcommand\hfut@proposition@name{命题}
+ \newcommand\hfut@remark@name{注}
+ \newcommand\hfut@theorem@name{定理}
+ \else
+ \newcommand\hfut@assertion@name{Assertion}
+ \newcommand\hfut@assumption@name{Assumption}
+ \newcommand\hfut@axiom@name{Axiom}
+ \newcommand\hfut@corollary@name{Corollary}
+ \newcommand\hfut@definition@name{Definition}
+ \newcommand\hfut@example@name{Example}
+ \newcommand\hfut@lemma@name{Lemma}
+ \newcommand\hfut@proof@name{Proof}
+ \newcommand\hfut@proposition@name{Proposition}
+ \newcommand\hfut@remark@name{Remark}
+ \newcommand\hfut@theorem@name{Theorem}
+ \fi
+ \newtheorem{theorem} {\hfut@theorem@name} [chapter]
+ \newtheorem{assertion} [theorem]{\hfut@assertion@name}
+ \newtheorem{axiom} [theorem]{\hfut@axiom@name}
+ \newtheorem{corollary} [theorem]{\hfut@corollary@name}
+ \newtheorem{lemma} [theorem]{\hfut@lemma@name}
+ \newtheorem{proposition}[theorem]{\hfut@proposition@name}
+ \newtheorem{assumption} {\hfut@assumption@name} [chapter]
+ \newtheorem{definition} {\hfut@definition@name} [chapter]
+ \newtheorem{example} {\hfut@example@name} [chapter]
+ \newtheorem*{remark} {\hfut@remark@name}
+ % \pkg{amsthm} 单独定义了 proof 环境,这里重新定义以满足格式要求。
+ % 原本模仿 \pkg{amsthm} 写成 |\item[\hskip\labelsep\hskip2\ccwd #1\hskip\ccwd]|,
+ % 但是却会多出一些间隙。
+ \renewenvironment{proof}[1][\hfut@proof@name]{\par
+ \pushQED{\qed}%
+ \normalfont \topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item\relax\hskip2\ccwd
+ \textbf{#1}
+ \hskip\ccwd\ignorespaces
+ }{%
+ \popQED\endtrivlist\@endpefalse
+ }
+ \renewcommand\qedsymbol{\hfut@qed}
+}
+
+
+% \subsubsection{\pkg{algorithm2e} 宏包}
+
+% 按章节编号。
+\PassOptionsToPackage{algochapter}{algorithm2e}
+
+\AtEndOfPackageFile*{algorithm2e}{
+ \ifhfut@language@chinese
+ \SetAlgorithmName{算法}{算法}{算法清单}
+ \else
+ \SetAlgorithmName{Algorithm}{Algorithm}{List of Algorithms}
+ \fi
+ %
+ % 设置算法环境的格式。
+ \SetAlCapSkip{6bp}
+ \SetAlCapFnt{\small}
+ \SetAlCapNameFnt{\small}
+ \ifhfut@degree@graduate
+ \SetAlCapNameSty{textbf}
+ \fi
+ \SetAlgoCaptionSeparator{\unskip\hspace*{\ccwd}}
+ %
+ % 设置算法清单的格式
+ \renewcommand\listofalgocfs{%
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \fi
+ \hfut@chapter{\listalgorithmcfname}%
+ \@starttoc{loa}%
+ }
+ \titlecontents{algocf}
+ [2.3em]{\normalsize}
+ {\contentslabel{2.3em}}{}
+ {\hfut@leaders\contentspage}
+ \contentsuse{algocf}{loa}
+}
+
+
+% \subsubsection{\pkg{nomencl} 宏包}
+
+\AtEndOfPackageFile*{nomencl}{
+ \let\nomname\hfut@notation@name
+ \def\thenomenclature{%
+ \ifhfut@degree@graduate
+ \cleardoublepage
+ \pagestyle{headings}%
+ \fi
+ \hfut@chapter{\hfut@notation@name}%
+ \nompreamble
+ \list{}{%
+ \labelwidth\nom@tempdim
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \itemsep\nomitemsep
+ \let\makelabel\nomlabel}}
+ \def\endthenomenclature{%
+ \endlist
+ \nompostamble
+ \ifhfut@degree@graduate
+ \clearpage
+ \pagestyle{plain}%
+ \fi
+ }
+}
+
+
+% \subsubsection{\pkg{siunitx} 宏包}
+
+\AtEndOfPackageFile*{siunitx}{
+ \sisetup{
+ group-minimum-digits = 4,
+ separate-uncertainty = true,
+ inter-unit-product = \ensuremath{{}\cdot{}},
+ }
+ \newcommand\hfut@set@siunitx@language{%
+ \ifhfut@language@chinese
+ \sisetup{
+ list-final-separator = { 和 },
+ list-pair-separator = { 和 },
+ range-phrase = {~},
+ }%
+ \else
+ \sisetup{
+ list-final-separator = {, and },
+ list-pair-separator = { and },
+ range-phrase = { to },
+ }%
+ \fi
+ }
+ \hfut@set@siunitx@language
+ \hfut@option@hook{language}{\hfut@set@siunitx@language}
+}
+
+% \subsubsection{\pkg{chapterbib} 宏包}
+
+\AtEndOfPackageFile*{chapterbib}{
+ \@ifpackageloaded{natbib}{%
+ \@ifpackagewith{chapterbib}{sectionbib}{%
+ \hfut@error{The "sectionbib" option cannot be used with chaperbib if natbib loaded}%
+ }{}%
+ \renewcommand\bibsection{%
+ \begingroup
+ \ctexset{section/numbering=false}%
+ \section{\bibname}%
+ \endgroup
+ }
+ }{}
+}
diff --git a/macros/xetex/latex/hithesis/Makefile b/macros/xetex/latex/hithesis/Makefile
new file mode 100644
index 0000000000..337d8d0561
--- /dev/null
+++ b/macros/xetex/latex/hithesis/Makefile
@@ -0,0 +1,108 @@
+# Makefile for ThuThesis
+
+# Compiling method: latexmk/xelatex/pdflatex
+METHOD = xelatex
+# Set opts for latexmk if you use it
+LATEXMKOPTS = -xelatex
+# Basename of thesis
+THESISMAIN = main
+
+PACKAGE=hithesis
+SOURCES=$(PACKAGE).ins $(PACKAGE).dtx
+THESISCONTENTS=$(THESISMAIN).tex front/*.tex body/*.tex back/*.tex $(FIGURES) *.bst
+# NOTE: update this to reflect your local file types.
+FIGURES=$(wildcard figures/*.eps figures/*.pdf)
+BIBFILE=*.bib
+CLSFILES=dtx-style.sty $(PACKAGE).cls $(PACKAGE).ist h$(PACKAGE).cfg
+
+# make deletion work on Windows
+ifdef SystemRoot
+ RM = del /Q
+ OPEN = start
+else
+ RM = rm -f
+ OPEN = open
+endif
+
+.PHONY: all clean distclean dist thesis viewthesis doc viewdoc cls check FORCE_MAKE
+
+all: doc thesis
+
+cls: $(CLSFILES)
+
+$(CLSFILES): $(SOURCES)
+ latex $(PACKAGE).ins
+
+viewdoc: doc
+ $(OPEN) $(PACKAGE).pdf
+
+doc: $(PACKAGE).pdf
+
+viewthesis: thesis
+ $(OPEN) $(THESISMAIN).pdf
+
+thesis: $(THESISMAIN).pdf
+
+ifeq ($(METHOD),latexmk)
+
+$(PACKAGE).pdf: $(CLSFILES) FORCE_MAKE
+ $(METHOD) $(LATEXMKOPTS) $(PACKAGE).dtx
+
+$(THESISMAIN).pdf: $(CLSFILES) FORCE_MAKE
+ $(METHOD) $(LATEXMKOPTS) $(THESISMAIN)
+
+else ifeq ($(METHOD),xelatex)
+
+$(PACKAGE).pdf: $(CLSFILES)
+ $(METHOD) $(PACKAGE).dtx
+ makeindex -s gind.ist -o $(PACKAGE).ind $(PACKAGE).idx
+ makeindex -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo
+ $(METHOD) $(PACKAGE).dtx
+ $(METHOD) $(PACKAGE).dtx
+
+$(THESISMAIN).idx: $(THESISMAIN).bbl
+ $(METHOD) $(THESISMAIN)
+ $(METHOD) $(THESISMAIN)
+
+
+$(THESISMAIN)_china.idx : $(CLSFILES) $(THESISMAIN).bbl $(THESISMAIN).idx
+ splitindex $(THESISMAIN) -- -s $(PACKAGE).ist # 自动生成索引
+
+$(THESISMAIN)_english.ind $(THESISMAIN)_china.ind $(THESISMAIN)_english.idx : $(THESISMAIN)_china.idx
+
+$(THESISMAIN).pdf: $(CLSFILES) $(THESISCONTENTS) $(THESISMAIN)_china.ind $(THESISMAIN)_china.idx $(THESISMAIN)_english.ind $(THESISMAIN)_english.idx $(THESISMAIN).bbl
+ $(METHOD) $(THESISMAIN)
+ splitindex $(THESISMAIN) -- -s $(PACKAGE).ist # 自动生成索引
+ $(METHOD) $(THESISMAIN)
+
+$(THESISMAIN).bbl: $(BIBFILE)
+ $(METHOD) $(THESISMAIN)
+ -bibtex $(THESISMAIN)
+ $(RM) $(THESISMAIN).pdf
+
+else
+$(error Unknown METHOD: $(METHOD))
+
+endif
+
+clean:
+ latexmk -c $(PACKAGE).dtx
+ latexmk -c $(THESISMAIN)
+ -@$(RM) *~ *.idx *.ind *.ilg *.thm *.toe *.bbl
+
+cleanall: clean
+ -@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf
+
+distclean: cleanall
+ -@$(RM) $(CLSFILES)
+ -@$(RM) -r dist
+
+check: FORCE_MAKE
+ ag 'Harbin Institute of Technology Template|\\def\\version|"version":' hithesis.dtx package.json
+
+dist: all
+ @if [ -z "$(version)" ]; then \
+ echo "Usage: make dist version=[x.y.z | ctan]"; \
+ else \
+ npm run build -- --version=$(version); \
+ fi
diff --git a/macros/xetex/latex/hithesis/README.md b/macros/xetex/latex/hithesis/README.md
new file mode 100644
index 0000000000..32241b8f4d
--- /dev/null
+++ b/macros/xetex/latex/hithesis/README.md
@@ -0,0 +1,222 @@
+# hithesis
+# 哈尔滨工业大学LaTeX论文模板
+
+<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">hithesis</span> 由 <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/dustincys/hithesis" property="cc:attributionName" rel="cc:attributionURL">https://github.com/dustincys/hithesis</a> 采用 <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">知识共享 署名-非商业性使用 4.0 国际 许可协议</a>进行许可。<br />基于<a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/dustincys/hithesis" rel="dct:source">https://github.com/dustincys/hithesis</a>上的作品创作。
+
+## What's hithesis?
+
+hithesis is a LaTeX thesis template package for Harbin Institute of Technolog
+supporting bachelor, master, doctor dissertations. Since the users of this
+package are supposed to be Chinese or those understand Chinese, the following of
+this file and all other documents are written in Chinese only.
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
+of this license or (at your option) any later version.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
+
+## hithesis是什么?
+
+hithesis
+旨在建立一个简单易用的哈尔滨工业大学学位论文LaTeX模板,包括本科论文、硕士论文、博士论文
+。现 在支持本科、硕士、博士论文,对其它格式的支持会陆续加入。
+hithesis 已收录在[CTAN](https://ctan.org/pkg/hithesis
+"CTAN**)中,用户安装TeXLive将自带我工模板(版本日期>2017.08.28)。
+
+## 我工规范有歧义之处
+
+各位刀客一定要先看清楚我工规范两大歧义之处:[版芯歧义](http://yanshuo.name/cn/2017/06/hithesisregulation/)和[本科生行距歧义](http://yanshuo.name/cn/2017/06/hithesissiyuan/)。
+
+另外注意几处小歧义:
+- 在[规范](http://hitgs.hit.edu.cn/aa/fd/c3425a109309/page.htm)中规定和[研究生word排版范例](http://hitgs.hit.edu.cn/ab/1f/c3425a109343/page.htm)的中文目录中出现的“ABSTRACT”和“Abstract”的写法歧义(规格严格功夫大家!!!)。
+- 本科生论文官方模板的页眉页码格式混乱,有的有页码横线有的没有,有的有页眉有的没有。
+
+## 模板特点
+
+### 呆萌的操作,傲娇的效果
+
+- 极限程度实现了[《哈尔滨工业大学研究生学位论文撰写规范》](http://hitgs.hit.edu.cn/aa/fd/c3425a109309/page.htm)、[《哈尔滨工业大学本科生毕业论文撰写规范》](http://jwc.hit.edu.cn/2566/list.htm)
+- 这是[PlutoThesis](https://github.com/dustincys/PlutoThesis "PlutoThesis**)的终极进化,PlutoThesis废弃不再维护。
+ - 更傻更简单的选项,例如论文主文件,只需要在文档类的括号中填写本硕博选项,字体选项(设置弹性间距或者刚性间距),文科生选项(目录可以设成四级目录),非全日制类型等,轻松设定目标格式。
+ - 自适应格式,例如图题和标题,标题字号在字数超过两行时自动由五号变小五号,实现自适应(硕博规范规定,字数多时用五号)
+ - 自动化中英文索引(博士规范要求,有需要时候添加)
+ - 图书馆提交论文级的电子版
+ - ……
+
+### 矫正PlutoThesis的不足
+
+ - 纠正PlutoThesis页面向下溢出
+ - 纠正PlutoThesis不符合规范要求的各层次题序及标题不得置于页面的最后两行,改为不得置于最后一行(孤行),从此解决了饱受诟病的空白大的问题。
+ - 纠正PlutoThesis行间距与标题段前段后距离统统设置为1.6倍行距的问题
+ - 更强大的版芯设置,满足所有需求
+ - 补充了PlutoThesis没有的符号表、索引两项
+ - 字体设置符合CTeX的自动识别系统功能
+ - 纠正PlutoThesis中图片中一些距离设置
+ - 添加了符合规范要求的“图注在图题之上的设置”
+ - 纠正PlutoThesis的双语图、表题中英语的非两端对齐问题
+ - 添加了PlutoThesis中没有的图题最后一行居中且两端对齐格式
+ - 添加了所有的图形排版格式
+ - 纠正了附录中标题错误
+ - 纠正了博士论文右翻页问题
+ - 添加扫描替换功能,替换之后、页码目录书签自动设置
+ - 添加思源宋体设置,再也不用害怕奇怪字打不出来了
+ - 添加文科生、非全日制同等学力封面格式
+ - 添加PlutoThesis没有的说明文档
+ - ……
+
+### 为了我工的规格严格、功夫到家
+
+ - 行间距、段前后距离设置精确到小数后四位, 例如 1bp = 1.00374pt,1mm = 2.84526pt, 按照我工之要求, 行距在3mm~4mm之间,换算之后为20.50398~23.33863bp,严格符合规范要求,哪怕是显微镜级别
+ - 规范明确规定,数字间空格要求为汉字宽度的四分之一(形式类似与 12 2345 和 0.123 456 这样多于3位以上的整数或小数)。默认情况下在LaTeX中任何人工输入的空格均不正确(“\:”为4/18汉字宽度,“\;”为5/18汉字宽度,所以PlutoThesis中的数字间宽度错误)。hithesis模板中定义了精准的数字间宽度。
+ - 重写了一堆重要函数,例如章节标题由原来的`BiChapter{}{}`方式进化为`chapter{}[**`,极大简化,后面方括号中为可选括号,硕本可以不用,用了自动忽略
+ - 严格符合(满足)两个规范要求,由于规范中有矛盾之处,例如本科生的标题段前距离有两处不一样的规定,刚性行距尽量满足行数(要求约33行)要求。
+ - 规范中给出了行距区间,为了规格严格,设置了弹性行距
+ - ……
+
+## 关于模板的命名和其他说明
+
+### 模板的命名
+
+本模板对PlutoThesis中的核心代码进行了彻底深入的修改。
+PlutoThesis中没有采用cls,这种文档类的模式,代码与正文内容耦合程度大难以维护,本科模板和硕博模板难以融合。
+由于冥王星已经不是太阳系C9之一,所以不继续使用PlutoThesis命名。
+
+hithesis, 既含我工hit,也是说用的“嗨!”,读作“嗨thesis”。
+
+### 关于模板的下载地址
+
+模板有三个下载地址:
+
+1. github: https://github.com/dustincys/hithesis
+2. gitee: https://gitee.com/dustincys/hithesis
+3. CTAN: https://ctan.org/pkg/hithesis
+
+github和gitee的版本是同步且是最新的模板。
+CTAN的版本一般会比较落后,但在每年年底会同步为最新版本。
+
+### 关于hithesis的线上讨论区
+
+~~由于维护者(就是本书呆)已经是高龄不毕业刀客,课题繁忙,常常无法及时回答疑问。~~
+为了解决使用中遇到的问题,请各位刀客和大侠加入QQ群hithesis讨论区:259959600。
+
+hithesis 高级群:476262502 (高级群为作者散布高级排版、制图、Linux管理、编码等
+知识和技术之所在,其要旨引用自《西游记》第八回,如来自言“叵耐不识我法门之要旨,
+怠慢了瑜伽之正宗”,以及“曹溪路险、鹫岭云深,故人不音杳!”。散布知识之后,作者将
+直播回答高级群中众生问题。(**由于工作关系直播暂停,开播时间待定**))。
+
+21 Oct 2019 添加:由于工作繁忙,改为西瓜小视频形式传播正能量(**包括Linux实用技术、
+排版、制图等等平时积累的经验和知识**)。
+
+西瓜视频ID:**石见石页**
+
+网址:https://www.ixigua.com/home/105143356290/
+
+hithesis群里有很多热心的LaTeX隐士高人如@poofee等,很乐于解答。
+
+### 关于查重
+
+注意:我工的论文查重可以使用pdf查重!!!!!!!
+
+另外一点注意:查重的pdf一定要确保能够正常复制汉字。有些系统自动识别的汉字字体,
+会出现无法正常复制的情况(可能是系统的字体映射出现了误差)。一般需要在主文件的
+选项中明确声明使用哪一种fontset。
+
+### 模板版本要求
+
+LaTeX 中的ctex package版本要求:
+
+ ctex >= v2.4.3 (2016年9月份发布)
+
+注意,如果下载最新版本(>= 2018)的texlive或Miktex或Mactex,如果使用自带的模板,可能会出现一些错误,因为自带的版本老。
+查看自带版本的命令是
+
+ texdoc hithesis
+
+### 模板的编译方法
+
+1. 生成论文格式文件(第一步要生成 *.cls,*.cfg,*.ist,然后再生成论文)
+
+ - 如果是Linux/Mac执行 (此处作者没测试过Mac,如遇到问题到谈论区可以问一下热心刀客大侠们,比如陈登泰教授、郭大侠等)
+
+ latex hithesis.ins
+
+ - 如果是Windows执行(作者没测试过,如遇问题同上)
+
+ lualatex hithesis.ins
+
+ - 如果喜欢玩 make
+
+    make cls
+
+2. 生成论文的方式
+
+ - 手动狙击(源文件更改后每次编译逐行命令输入一轮)
+
+ xelatex -shell-escape main.tex
+ bibtex main
+ xelatex -shell-escape main.tex
+ xelatex -shell-escape main.tex
+ splitindex main -- -s hithesis.ist # 自动生成索引
+ xelatex -shell-escape main.tex
+
+ - 半自动精确射击(源文件更改后每次编译敲一次)
+
+ make thesis
+
+ - 全自动火力覆盖(只需要输入一次命令,源文件更改后自动识别更改自动编译)
+
+ latexmk
+
+3. 生成文档(没什么用,因为有文档也基本没人看)
+
+ - 手动狙击(逐行命令输入一轮)
+
+ xelatex hithesis.dtx
+ makeindex -s gind.ist -o hithesis.ind hithesis.idx
+ makeindex -s gglo.ist -o hithesis.gls hithesis.glo
+ xelatex hithesis.dtx
+ xelatex hithesis.dtx
+
+ - 半自动精确射击(编译敲一次)
+
+ make doc
+
+### 打印版、电子版
+
+注意,一般情况下,博士论文的打印版要求双面打印,本硕单面。
+博士论文在双面打印成册时,规范中没有明确规定是否要右翻页(右翻页是每一章的起始位
+置位于书的右侧页面),所以会出现DIY(或身不由己DIY)哪一处右翻页。
+`openright`选项设置为真时,会将所有章(即所有部分,包括前文和后文)起始设置成右翻页。
+如果想DIY(或身不由己DIY)在什么地方右翻页,将这个选项设置为false,然后在目标位
+置添加`\cleardoublepage`命令即可。
+
+最后向图书管提交的电子版不是右翻页且要求没有任何空白页,这时只需要设置选项`library=true`
+即可,这时候会强制`openright=false`。然后什么都不用做,就会出现如同`Sirius`同学
+的这种“书签还没整明白,论文居然已经通过了”的情况。
+
+### 幻灯片
+
+有些强迫症刀客喜欢用Beamer,推荐[progressbar主题](https://github.com/dustincys/progressbar),
+能够使用[pympress](https://github.com/Cimbali/pympress)播放双屏提示。
+
+### 其他说明
+
+由于维护者(就是本书呆)已经是高龄不毕业博士,课题繁忙,实在无空余时间再写详细文档以及 无偿解决一些用户要求(例如前面文档中[已经解决的算法格式各实验室要求不一致](https://github.com/dustincys/PlutoThesis#%E6%B2%A1%E6%9C%89%E6%98%8E%E7%A1%AE%E8%A6%81%E6%B1%82%E7%9A%84%E6%A0%BC%E5%BC%8F)问题)。
+
+各位刀客和大侠如用的嗨,要解囊相助,请微信扫码~~
+
+![wechat](http://wx2.sinaimg.cn/large/61dccbaaly1fqwvz6sd4ej20yi1au797.jpg "谢谢")
+
+![zfb](http://wx3.sinaimg.cn/large/61dccbaaly1fizali9tafj20k00ucgos.jpg "谢谢")
+
+其实没关系,为了我工的“规格严格,功夫到家”!
+
+- 本模板以PlutoThesis为核心基础,参考了CTAN中清华大学薛瑞尼所开发的thuthesis以及其分支重庆大学等毕业论文模板的代码开发而来
+- ~~学校教务处和研究生院只提供了规范,并没有提供官方的任何模板(包括word),所以~~ 学校教务处和研究生院提供了规范和[研究生word模板](http://hitgs.hit.edu.cn/ab/1f/c3425a109343/page.htm)以及[本科生word模板](http://jwc.hit.edu.cn/2566/list.htm)(厉害了word哥……),此模板仅为规范的参考实现,不保证格式审查老师不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关
+
+<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">hithesis</span> 由 <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/dustincys/hithesis" property="cc:attributionName" rel="cc:attributionURL">https://github.com/dustincys/hithesis</a> 采用 <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">知识共享 署名-非商业性使用 4.0 国际 许可协议</a>进行许可。<br />基于<a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/dustincys/hithesis" rel="dct:source">https://github.com/dustincys/hithesis</a>上的作品创作。
diff --git a/macros/xetex/latex/hithesis/back/acknowledgements.tex b/macros/xetex/latex/hithesis/back/acknowledgements.tex
new file mode 100644
index 0000000000..bcf5b65913
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/acknowledgements.tex
@@ -0,0 +1,9 @@
+% !Mode:: "TeX:UTF-8"
+\begin{acknowledgements}
+衷心感谢导师~XXX~教授对本人的精心指导。他的言传身教将使我终生受益。
+
+……
+
+感谢哈工大\LaTeX\ 论文模板\hithesis\ !
+
+\end{acknowledgements}
diff --git a/macros/xetex/latex/hithesis/back/appA.tex b/macros/xetex/latex/hithesis/back/appA.tex
new file mode 100644
index 0000000000..29721d3ccc
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/appA.tex
@@ -0,0 +1,69 @@
+% -*-coding: utf-8 -*-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{带章节的附录}[Full Appendix]%
+完整的附录内容,包含章节,公式,图表等
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{附录节的内容}[Section in Appendix]
+这是附录的节的内容
+
+附录中图的示例:
+\begin{figure}[htbp]
+\centering
+\includegraphics[width = 0.4\textwidth]{golfer}
+%\bicaption[golfer5]{}{\xiaosi[0]打高尔夫球的人}{Fig.$\!$}{The person playing golf}\vspace{-1em}
+\caption{\xiaosi[0]打高尔夫球的人}
+\end{figure}
+
+附录中公式的示例:
+\begin{align}
+a & = b \times c \\
+E & = m c^2
+\label{eq}
+\end{align}
+
+\chapter{这个星球上最好的免费Linux软件列表}[List of the Best Linux Software in our Planet]
+\section{系统}
+
+\href{http://fvwm.org/}{FVWM 自从上世纪诞生以来,此星球最强大的窗口管理器。}
+推荐基于FVWM的桌面设计hifvwm:\href{https://github.com/dustincys/hifvwm}{https://github.com/dustincys/hifvwm}。
+
+\subsection{hifvwm的优点}
+
+\begin{enumerate}
+ \item 即使打开上百个窗口也不会“蒙圈”。计算机性能越来越强大,窗口任务的管理必须要升级到打怪兽级别。
+ \item 自动同步Bing搜索主页的壁纸。每次电脑开机,午夜零点自动更新,用户
+ 也可以手动更新,从此审美再也不疲劳。
+ \item 切换窗口自动聚焦到最上面的窗口。使用键盘快捷键切换窗口时候,减少
+ 操作过程,自动聚焦到目标窗口。这一特性是虚拟窗口必须的人性化设
+ 计。
+ \item 类似window右下角的功能的最小化窗口来显示桌面的功能此处类似
+ win7/win10,实现在一个桌面之内操作多个任务。
+ \item 任务栏结合标题栏。采用任务栏和标题栏结合,节省空间。
+ \item 同类窗口切换。可以在同类窗口之内类似alt-tab的方式切换。
+ \item ……
+\end{enumerate}
+
+\section{其他}
+
+\href{https://github.com/goldendict/goldendict}{goldendict 星球最强大的桌面字典。}
+
+\href{https://github.com/yarrick/iodine}{iodine,“HIT-WLAN + 锐捷”时代的福音。}
+
+\href{http://www.aircrack-ng.org/}{aircrack,Wifi“安全性评估”工具。}
+
+\href{https://www.ledger-cli.org/}{ledger,前“金融区块链”时代最好的复式记账系统。}
+
+\href{https://orgmode.org/}{orgmode,最强大的笔记系统,从来没有之一。}
+
+\href{https://www.jianguoyun.com/}{坚果云,国内一款支持WebDav的云盘系统,国内真正的云盘没有之一。}
+
+\href{http://www.mutt.org/}{mutt, ``All mail clients suck. This one just sucks less.''}
+
+\section{vim}
+实现中英文每一句一行,以及实现每一句折叠断行的简单正则式,tex源码更加乖乖。
+\begin{lstlisting}
+vnoremap <leader>fae J:s/[.!?]\zs\s\+/\="\r".matchstr(getline('.'), '^\s*')/g<CR>
+vnoremap <leader>fac J:s/[。!?]/\=submatch(0)."\n".matchstr(getline('.'), '^\s*')/g<CR>
+vnoremap <leader>fle :!fmt -80 -s<CR>
+\end{lstlisting}
diff --git a/macros/xetex/latex/hithesis/back/appendix01.tex b/macros/xetex/latex/hithesis/back/appendix01.tex
new file mode 100644
index 0000000000..26d53f3012
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/appendix01.tex
@@ -0,0 +1,247 @@
+\chapter{外文资料原文}
+\label{cha:engorg}
+
+\title{The title of the English paper}
+
+\textbf{Abstract:} As one of the most widely used techniques in operations
+research, \emph{ mathematical programming} is defined as a means of maximizing a
+quantity known as \emph{bjective function}, subject to a set of constraints
+represented by equations and inequalities. Some known subtopics of mathematical
+programming are linear programming, nonlinear programming, multiobjective
+programming, goal programming, dynamic programming, and multilevel
+programming$^{[1]}$.
+
+It is impossible to cover in a single chapter every concept of mathematical
+programming. This chapter introduces only the basic concepts and techniques of
+mathematical programming such that readers gain an understanding of them
+throughout the book$^{[2,3]}$.
+
+
+\section{Single-Objective Programming}
+The general form of single-objective programming (SOP) is written
+as follows,
+\begin{equation}\tag*{(123)} % 如果附录中的公式不想让它出现在公式索引中,那就请
+ % 用 \tag*{xxxx}
+\left\{\begin{array}{l}
+\max \,\,f(x)\\[0.1 cm]
+\mbox{subject to:} \\ [0.1 cm]
+\qquad g_j(x)\le 0,\quad j=1,2,\cdots,p
+\end{array}\right.
+\end{equation}
+which maximizes a real-valued function $f$ of
+$x=(x_1,x_2,\cdots,x_n)$ subject to a set of constraints.
+
+\newtheorem{mpdef}{Definition}[chapter]
+\begin{mpdef}
+In SOP, we call $x$ a decision vector, and
+$x_1,x_2,\cdots,x_n$ decision variables. The function
+$f$ is called the objective function. The set
+\begin{equation}\tag*{(456)} % 这里同理,其它不再一一指定。
+S=\left\{x\in\Re^n\bigm|g_j(x)\le 0,\,j=1,2,\cdots,p\right\}
+\end{equation}
+is called the feasible set. An element $x$ in $S$ is called a
+feasible solution.
+\end{mpdef}
+
+\newtheorem{mpdefop}[mpdef]{Definition}
+\begin{mpdefop}
+A feasible solution $x^*$ is called the optimal
+solution of SOP if and only if
+\begin{equation}
+f(x^*)\ge f(x)
+\end{equation}
+for any feasible solution $x$.
+\end{mpdefop}
+
+One of the outstanding contributions to mathematical programming was known as
+the Kuhn-Tucker conditions\ref{eq:ktc}. In order to introduce them, let us give
+some definitions. An inequality constraint $g_j(x)\le 0$ is said to be active at
+a point $x^*$ if $g_j(x^*)=0$. A point $x^*$ satisfying $g_j(x^*)\le 0$ is said
+to be regular if the gradient vectors $\nabla g_j(x)$ of all active constraints
+are linearly independent.
+
+Let $x^*$ be a regular point of the constraints of SOP and assume that all the
+functions $f(x)$ and $g_j(x),j=1,2,\cdots,p$ are differentiable. If $x^*$ is a
+local optimal solution, then there exist Lagrange multipliers
+$\lambda_j,j=1,2,\cdots,p$ such that the following Kuhn-Tucker conditions hold,
+\begin{equation}
+\label{eq:ktc}
+\left\{\begin{array}{l}
+ \nabla f(x^*)-\sum\limits_{j=1}^p\lambda_j\nabla g_j(x^*)=0\\[0.3cm]
+ \lambda_jg_j(x^*)=0,\quad j=1,2,\cdots,p\\[0.2cm]
+ \lambda_j\ge 0,\quad j=1,2,\cdots,p.
+\end{array}\right.
+\end{equation}
+If all the functions $f(x)$ and $g_j(x),j=1,2,\cdots,p$ are convex and
+differentiable, and the point $x^*$ satisfies the Kuhn-Tucker conditions
+(\ref{eq:ktc}), then it has been proved that the point $x^*$ is a global optimal
+solution of SOP.
+
+\subsection{Linear Programming}
+\label{sec:lp}
+
+If the functions $f(x),g_j(x),j=1,2,\cdots,p$ are all linear, then SOP is called
+a {\em linear programming}.
+
+The feasible set of linear is always convex. A point $x$ is called an extreme
+point of convex set $S$ if $x\in S$ and $x$ cannot be expressed as a convex
+combination of two points in $S$. It has been shown that the optimal solution to
+linear programming corresponds to an extreme point of its feasible set provided
+that the feasible set $S$ is bounded. This fact is the basis of the {\em simplex
+ algorithm} which was developed by Dantzig as a very efficient method for
+solving linear programming.
+\begin{table}[ht]
+\centering
+ \centering
+ \caption*{Table~1\hskip1em This is an example for manually numbered table, which
+ would not appear in the list of tables}
+ \label{tab:badtabular2}
+ \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
+ \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
+ \multicolumn{3}{c|}{\# of clients} & Server \\\hline
+ GT-ITM & Waxman Transit-Stub & 600 &
+ \multirow{2}{2em}{2\%}&
+ \multirow{2}{2em}{10\%}&
+ \multirow{2}{2em}{50\%}&
+ \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
+ \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
+ & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+Roughly speaking, the simplex algorithm examines only the extreme points of the
+feasible set, rather than all feasible points. At first, the simplex algorithm
+selects an extreme point as the initial point. The successive extreme point is
+selected so as to improve the objective function value. The procedure is
+repeated until no improvement in objective function value can be made. The last
+extreme point is the optimal solution.
+
+\subsection{Nonlinear Programming}
+
+If at least one of the functions $f(x),g_j(x),j=1,2,\cdots,p$ is nonlinear, then
+SOP is called a {\em nonlinear programming}.
+
+A large number of classical optimization methods have been developed to treat
+special-structural nonlinear programming based on the mathematical theory
+concerned with analyzing the structure of problems.
+
+Now we consider a nonlinear programming which is confronted solely with
+maximizing a real-valued function with domain $\Re^n$. Whether derivatives are
+available or not, the usual strategy is first to select a point in $\Re^n$ which
+is thought to be the most likely place where the maximum exists. If there is no
+information available on which to base such a selection, a point is chosen at
+random. From this first point an attempt is made to construct a sequence of
+points, each of which yields an improved objective function value over its
+predecessor. The next point to be added to the sequence is chosen by analyzing
+the behavior of the function at the previous points. This construction continues
+until some termination criterion is met. Methods based upon this strategy are
+called {\em ascent methods}, which can be classified as {\em direct methods},
+{\em gradient methods}, and {\em Hessian methods} according to the information
+about the behavior of objective function $f$. Direct methods require only that
+the function can be evaluated at each point. Gradient methods require the
+evaluation of first derivatives of $f$. Hessian methods require the evaluation
+of second derivatives. In fact, there is no superior method for all
+problems. The efficiency of a method is very much dependent upon the objective
+function.
+
+\subsection{Integer Programming}
+
+{\em Integer programming} is a special mathematical programming in which all of
+the variables are assumed to be only integer values. When there are not only
+integer variables but also conventional continuous variables, we call it {\em
+ mixed integer programming}. If all the variables are assumed either 0 or 1,
+then the problem is termed a {\em zero-one programming}. Although integer
+programming can be solved by an {\em exhaustive enumeration} theoretically, it
+is impractical to solve realistically sized integer programming problems. The
+most successful algorithm so far found to solve integer programming is called
+the {\em branch-and-bound enumeration} developed by Balas (1965) and Dakin
+(1965). The other technique to integer programming is the {\em cutting plane
+ method} developed by Gomory (1959).
+
+\hfill\textit{Uncertain Programming\/}\quad(\textsl{BaoDing Liu, 2006.2})
+
+\section*{References}
+\noindent{\itshape NOTE: These references are only for demonstration. They are
+ not real citations in the original text.}
+
+\begin{translationbib}
+\item Donald E. Knuth. The \TeX book. Addison-Wesley, 1984. ISBN: 0-201-13448-9
+\item Paul W. Abrahams, Karl Berry and Kathryn A. Hargreaves. \TeX\ for the
+ Impatient. Addison-Wesley, 1990. ISBN: 0-201-51375-7
+\item David Salomon. The advanced \TeX book. New York : Springer, 1995. ISBN:0-387-94556-3
+\end{translationbib}
+
+\chapter{外文资料的调研阅读报告或书面翻译}
+
+\title{英文资料的中文标题}
+
+{\heiti 摘要:} 本章为外文资料翻译内容。如果有摘要可以直接写上来,这部分好像没有
+明确的规定。
+
+\section{单目标规划}
+北冥有鱼,其名为鲲。鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几
+千里也。怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。
+\begin{equation}\tag*{(123)}
+ p(y|\mathbf{x}) = \frac{p(\mathbf{x},y)}{p(\mathbf{x})}=
+\frac{p(\mathbf{x}|y)p(y)}{p(\mathbf{x})}
+\end{equation}
+
+吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为
+恶无近刑,缘督以为经,可以保身,可以全生,可以养亲,可以尽年。
+
+\subsection{线性规划}
+庖丁为文惠君解牛,手之所触,肩之所倚,足之所履,膝之所倚,砉然响然,奏刀騞然,莫
+不中音,合于桑林之舞,乃中经首之会。
+\begin{table}[ht]
+\centering
+ \centering
+ \caption*{表~1\hskip1em 这是手动编号但不出现在索引中的一个表格例子}
+ \label{tab:badtabular3}
+ \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
+ \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
+ \multicolumn{3}{c|}{\# of clients} & Server \\\hline
+ GT-ITM & Waxman Transit-Stub & 600 &
+ \multirow{2}{2em}{2\%}&
+ \multirow{2}{2em}{10\%}&
+ \multirow{2}{2em}{50\%}&
+ \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
+ \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
+ & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+文惠君曰:“嘻,善哉!技盖至此乎?”庖丁释刀对曰:“臣之所好者道也,进乎技矣。始臣之
+解牛之时,所见无非全牛者;三年之后,未尝见全牛也;方今之时,臣以神遇而不以目视,
+官知止而神欲行。依乎天理,批大郤,导大窾,因其固然。技经肯綮之未尝,而况大坬乎!
+良庖岁更刀,割也;族庖月更刀,折也;今臣之刀十九年矣,所解数千牛矣,而刀刃若新发
+于硎。彼节者有间而刀刃者无厚,以无厚入有间,恢恢乎其于游刃必有余地矣。是以十九年
+而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒,视为止,行为迟,动刀甚微,
+謋然已解,如土委地。提刀而立,为之而四顾,为之踌躇满志,善刀而藏之。”
+
+文惠君曰:“善哉!吾闻庖丁之言,得养生焉。”
+
+
+\subsection{非线性规划}
+孔子与柳下季为友,柳下季之弟名曰盗跖。盗跖从卒九千人,横行天下,侵暴诸侯。穴室枢
+户,驱人牛马,取人妇女。贪得忘亲,不顾父母兄弟,不祭先祖。所过之邑,大国守城,小
+国入保,万民苦之。孔子谓柳下季曰:“夫为人父者,必能诏其子;为人兄者,必能教其弟。
+若父不能诏其子,兄不能教其弟,则无贵父子兄弟之亲矣。今先生,世之才士也,弟为盗
+跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
+
+柳下季曰:“先生言为人父者必能诏其子,为人兄者必能教其弟,若子不听父之诏,弟不受
+兄之教,虽今先生之辩,将奈之何哉?且跖之为人也,心如涌泉,意如飘风,强足以距敌,
+辩足以饰非。顺其心则喜,逆其心则怒,易辱人以言。先生必无往。”
+
+孔子不听,颜回为驭,子贡为右,往见盗跖。
+
+\subsection{整数规划}
+盗跖乃方休卒徒大山之阳,脍人肝而餔之。孔子下车而前,见谒者曰:“鲁人孔丘,闻将军
+高义,敬再拜谒者。”谒者入通。盗跖闻之大怒,目如明星,发上指冠,曰:“此夫鲁国之
+巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
+说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
+作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”
+
+
+\chapter{其它附录}
+前面两个附录主要是给本科生做例子。其它附录的内容可以放到这里,当然如果你愿意,可
+以把这部分也放到独立的文件中,然后将其到主文件中。
diff --git a/macros/xetex/latex/hithesis/back/ceindex.tex b/macros/xetex/latex/hithesis/back/ceindex.tex
new file mode 100644
index 0000000000..e5f8954b57
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/ceindex.tex
@@ -0,0 +1,4 @@
+\begin{ceindex}
+ %如果想要手动加索引,注释掉以下这一样,用wordlist环境
+\printsubindex*
+\end{ceindex}
diff --git a/macros/xetex/latex/hithesis/back/conclusion.tex b/macros/xetex/latex/hithesis/back/conclusion.tex
new file mode 100644
index 0000000000..58755f09eb
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/conclusion.tex
@@ -0,0 +1,8 @@
+% !Mode:: "TeX:UTF-8"
+\begin{conclusions}
+
+学位论文的结论作为论文正文的最后一章单独排写,但不加章标题序号。
+
+结论应是作者在学位论文研究过程中所取得的创新性成果的概要总结,不能与摘要混为一谈。博士学位论文结论应包括论文的主要结果、创新点、展望三部分,在结论中应概括论文的核心观点,明确、客观地指出本研究内容的创新性成果(含新见解、新观点、方法创新、技术创新、理论创新),并指出今后进一步在本研究方向进行研究工作的展望与设想。对所取得的创新性成果应注意从定性和定量两方面给出科学、准确的评价,分(1)、(2)、(3)…条列出,宜用“提出了”、“建立了”等词叙述。
+
+\end{conclusions}
diff --git a/macros/xetex/latex/hithesis/back/publications.tex b/macros/xetex/latex/hithesis/back/publications.tex
new file mode 100644
index 0000000000..05141cc889
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/publications.tex
@@ -0,0 +1,27 @@
+% !Mode:: "TeX:UTF-8"
+
+\begin{publication}
+\noindent\textbf{(一)发表的学术论文}
+\begin{publist}
+\item XXX,XXX. Static Oxidation Model of Al-Mg/C Dissipation Thermal Protection Materials[J]. Rare Metal Materials and Engineering, 2010, 39(Suppl. 1): 520-524.(SCI~收录,IDS号为~669JS,IF=0.16)
+\item XXX,XXX. 精密超声振动切削单晶铜的计算机仿真研究[J]. 系统仿真学报,2007,19(4):738-741,753.(EI~收录号:20071310514841)
+\item XXX,XXX. 局部多孔质气体静压轴向轴承静态特性的数值求解[J]. 摩擦学学报,2007(1):68-72.(EI~收录号:20071510544816)
+\item XXX,XXX. 硬脆光学晶体材料超精密切削理论研究综述[J]. 机械工程学报,2003,39(8):15-22.(EI~收录号:2004088028875)
+\item XXX,XXX. 基于遗传算法的超精密切削加工表面粗糙度预测模型的参数辨识以及切削参数优化[J]. 机械工程学报,2005,41(11):158-162.(EI~收录号:2006039650087)
+\item XXX,XXX. Discrete Sliding Mode Cintrok with Fuzzy Adaptive Reaching Law on 6-PEES Parallel Robot[C]. Intelligent System Design and Applications, Jinan, 2006: 649-652.(EI~收录号:20073210746529)
+\end{publist}
+
+\noindent\textbf{(二)申请及已获得的专利(无专利时此项不必列出)}
+\begin{publist}
+\item XXX,XXX. 一种温热外敷药制备方案:中国,88105607.3[P]. 1989-07-26.
+\end{publist}
+
+\noindent\textbf{(三)参与的科研项目及获奖情况}
+\begin{publist}
+\item XXX,XXX. XX~气体静压轴承技术研究, XX~省自然科学基金项目.课题编号:XXXX.
+\item XXX,XXX. XX~静载下预应力混凝土房屋结构设计统一理论. 黑江省科学技术二等奖, 2007.
+\end{publist}
+%\vfill
+%\hangafter=1\hangindent=2em\noindent
+%\setlength{\parindent}{2em}
+\end{publication}
diff --git a/macros/xetex/latex/hithesis/back/resume.tex b/macros/xetex/latex/hithesis/back/resume.tex
new file mode 100644
index 0000000000..35f0202af8
--- /dev/null
+++ b/macros/xetex/latex/hithesis/back/resume.tex
@@ -0,0 +1,17 @@
+% !Mode:: "TeX:UTF-8"
+
+\begin{resume}
+XXXX~年~XX~月~XX~日出生于~XXXX。
+
+XXXX~年~XX~月考入~XX~大学~XX~院(系)XX~专业,XXXX~年~XX~月本科毕业并获得~XX~学学士学位。
+
+XXXX~年~XX~月------XXXX~年~XX~月在~XX~大学~XX~院(系)XX~学科学习并获得~XX~学硕士学位。
+
+XXXX~年~XX~月------XXXX~年~XX~月在~XX~大学~XX~院(系)XX~学科学习并获得~XX~学博士学位。
+
+获奖情况:如获三好学生、优秀团干部、X~奖学金等(不含科研学术获奖)。
+
+工作经历:
+
+\textbf{( 除全日制硕士生以外,其余学生均应增列此项。个人简历一般应包含教育经历和工作经历。)}
+\end{resume}
diff --git a/macros/xetex/latex/hithesis/body/introduction.tex b/macros/xetex/latex/hithesis/body/introduction.tex
new file mode 100644
index 0000000000..9fe6b4ed1e
--- /dev/null
+++ b/macros/xetex/latex/hithesis/body/introduction.tex
@@ -0,0 +1,593 @@
+% !Mode:: "TeX:UTF-8"
+
+\chapter{示例文档}[Example]
+
+这是 \hithesis\ 的示例文档,基本上覆盖了模板中所有格式的设置。建议大家在使用模
+板之前,除了阅读《\hithesis\:哈尔滨工业大学学位论文模板》\footnote{即
+hithesis.pdf文件},本示例文档也最好能看一看。此示例文档尽量使用到所有的排版格式
+,然而对于一些不在我工规范中规定的文档,理论上是由用户自由发挥,这里不给出样例
+。需要另行载入的宏包和自定义命令在文件`hithesis.sty'中有示例,这里不列举。
+
+\section{关于数字}[Number]
+
+按《关于出版物上数字用法的试行规定》(1987年1月1日国家语言文字工作委员会等7个单位公布),除习惯用中文数字表示的以外,一般数字均用阿拉伯数字。
+(1)公历的世纪、年代、年、月、日和时刻一律用阿拉伯数字,如20世纪,80年代,4时3刻等。年号要用四位数,如1989年,不能用89年。
+(2)记数与计算(含正负整数、分数、小数、百分比、约数等)一律用阿拉伯数字,如3/4,4.5%,10个月,500多种等。
+(3)一个数值的书写形式要照顾到上下文。不是出现在一组表示科学计量和具有统计意义数字中的一位数可以用汉字,如一个人,六条意见。星期几一律用汉字,如星期六。邻近两个数字并列连用,表示概数,应该用汉字数字,数字间不用顿号隔开,如三五天,七八十种,四十五六岁,一千七八百元等。
+(4)数字作为词素构成定型的词、词组、惯用语、缩略语等应当使用汉字。如二倍体,三叶虫,第三世界,“七五”规划,相差十万八千里等。
+(5)5位以上的数字,尾数零多的,可改写为以万、亿为单位的数。一般情况下不得以十、百、千、十万、百万、千万、十亿、百亿、千亿作为单位。如~\num{345000000}~公里可改写为3.45亿公里或~\num{34500}~万公里,但不能写为3亿~\num{4500}~万公里或3亿4千5百万公里。
+(6)数字的书写不必每格一个数码,一般每两数码占一格,数字间分节不用分位号“,”,凡4位或4位以上的数都从个位起每3位数空半个数码(1/4汉字)。“\num{3000000}”,不要写成“3,000,000”,小数点后的数从小数点起向右按每三位一组分节。一个用阿拉伯数字书写的多位数不能从数字中间转行。
+(7)数量的增加或减少要注意下列用词的概念:1)增加为(或增加到)过去的二倍,即过去为一,现在为二;2)增加(或增加了)二倍,即过去为一,现在为三;3)超额80%,即定额为100,现在为180;4)降低到80%,即过去为100,现在为80;5)降低(或降低了)80%,即原来为100,现在为20;6)为原数的1/4,即原数为4,现在为1,或原数为1,现在为0.25。
+应特别注意在表达数字减小时,不宜用倍数,而应采用分数。如减少为原来的1/2,1/3等。
+
+
+\section{索引示例}[Index]
+
+为便于检索文中内容,可编制索引置于论文之后(根据需要决定是否设置)。索引以论文中
+的专业词语为检索线索,指出其相关内容的所在页码。索引用中、英两种文字书写,中文在
+前。\sindex[china]{qi!乔峰}\sindex[english]{Xu Zhu}\sindex[english]{Qiao Feng}
+中文按各词汉语拼音第一个字母排序,英文按该词第一个英文字母排序。
+
+\section{术语排版举例}[Glossaries and index]
+
+术语的定义和使用可以结合索引,灵活使用。
+例如,\gtssbp 是一种应用于狄利克雷过程抽样的算法。
+下次出现将是另一种格式:\gtssbp 。
+还可以切换单复数例如:\gscnas ,下次出现为:\gscnas 。
+此处体现了\LaTeX\ 格式内容分离的优势。
+
+\section{引用}[Cite]
+
+\sindex[china]{du!段誉}引文标注遵照GB/T7714-2005,采用顺序编码制。正文中引用文献的标示应置于所引内容最后一个字的右上角,所引文献编号用阿拉伯数字置于方括号“[ ]”中,用小4号字体的上角标。要求:
+
+(1)引用单篇文献时,如“二次铣削\cite{cnproceed}”。
+
+(2)同一处引用多篇文献时,各篇文献的序号在方括号内全部列出,各序号间用“,”,如
+遇连续序号,可标注讫序号。如,…形成了多种数学模型\cite{cnarticle,cnproceed}…
+注意此处添加\cs{inlinecite}中文空格\inlinecite{cnarticle,cnproceed},可以在cfg文件中修改空格类型。
+
+(3)多次引用同一文献时,在文献序号的“[ ]”后标注引文页码。如,…间质细胞CAMP含量
+测定\cite[100-197]{cnarticle}…。…含量测定方法规定
+\cite[92]{cnarticle}…。
+
+(4)当提及的参考文献为文中直接说明时,则用小4号字与正文排齐,如“由文献\inlinecite{hithesis2017}可知”
+
+\section{定理和定义等}[Theorem]
+\begin{theorem}[\cite{cnproceed}]
+宇宙大爆炸是一种爆炸。
+\end{theorem}
+\begin{definition}[(霍金)]
+宇宙大爆炸是一种爆炸。
+\end{definition}
+\begin{assumption}
+宇宙大爆炸是一种爆炸。
+\end{assumption}
+\begin{lemma}
+宇宙大爆炸是一种爆炸。
+\end{lemma}
+\begin{corollary}
+宇宙大爆炸是一种爆炸。
+\end{corollary}
+\begin{exercise}
+宇宙大爆炸是一种爆炸。
+\end{exercise}
+\begin{problem}[(Albert Einstein)]
+宇宙大爆炸是一种爆炸。
+\end{problem}
+\begin{remark}
+宇宙大爆炸是一种爆炸。
+\end{remark}
+\begin{axiom}[(爱因斯坦)]
+宇宙大爆炸是一种爆炸。
+\end{axiom}
+\begin{conjecture}
+宇宙大爆炸是一种爆炸。
+\end{conjecture}
+\section{图片}[Pictures]
+图应有自明性。插图应与文字紧密配合,文图相符,内容正确。选图要力求精练,插图、照
+片应完整清晰。机械工程图:采用第一角投影法,严格按照GB4457~GB131-83《机械制图》
+标准规定。数据流程图、程序流程图、系统流程图等按GB1526-89标准规定。电气图:图形
+符号、文字符号等应符合附录3所列有关标准的规定。流程图:必须采用结构化程序并正确
+运用流程框图。对无规定符号的图形应采用该行业的常用画法。坐标图的坐标线均用细实线
+,粗细不得超过图中曲线;有数字标注的坐标图,必须注明坐标单位。照片图要求主题和主
+要显示部分的轮廓鲜明,便于制版。如用放大或缩小的复制品,必须清晰,反差适中。照片
+上应有表示目的物尺寸的标度。引用文献中的图时,除在正文文字中标注参考文献序号以外
+,还必须在中、英文表题的右上角标注参考文献序号。
+
+\subsection{博士毕业论文双语题注}[Doctoral picture example]
+\begin{figure}[htpb]
+\centering
+\includegraphics[width = 0.4\textwidth]{golfer}
+\bicaption[golfer1]{}{打高尔夫球球的人(博士论文双语题注)}{Fig.$\!$}{The person playing golf (Doctoral thesis)}
+\end{figure}
+
+每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个半
+角字符排写。图序按章编排,如第1章第一个插图的图号为“图1-1”。图题置于图下,硕士论
+文只用中文,博士论文用中、英两种文字,居中书写,中文在上,要求中文用宋体5号字,
+英文用Times New Roman 5号字。有图注或其它说明时应置于图题之上。引用图应注明出处
+,在图题右上角加引用文献号。图中若有分图时,分图题置于分图之下或图题之下,可以只
+用中文书写,分图号用a)、b)等表示。图中各部分说明应采用中文(引用的外文图除外)或
+数字符号,各项文字说明置于图题之上(有分图时,置于分图题之上)。图中文字用宋体、
+Times New Roman字体,字号尽量采用5号字(当字数较多时可用小5号字,以清晰表达为原
+则,但在一个插图内字号要统一)。同一图内使用文字应统一。图表中物理量、符号用斜体
+。
+\subsection{本硕论文题注}[Other picture example]
+\begin{figure}[h]
+\centering
+\includegraphics[width = 0.4\textwidth]{golfer}
+\caption{打高尔夫球的人,硕士论文要求只用汉语}
+\end{figure}
+
+\subsection{并排图和子图}[Abreast-picture and Sub-picture example]
+\subsubsection{并排图}[Abreast-picture example]
+
+使用并排图时,需要注意对齐方式。默认情况是中部对齐。这里给出中部对齐、顶部对齐
+、图片底部对齐三种常见方式。其中,底部对齐方式有一个很巧妙的方式,将长度比较小
+的图放在左面即可。
+
+\begin{figure}[htbp]
+\centering
+\begin{minipage}{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer2]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+\end{minipage}
+\centering
+\begin{minipage}{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer3]{}{打高尔夫球的人。注意,这里默认居中}{Fig.$\!$}{The person playing golf. Please note that, it is vertically center aligned by default.}
+\end{minipage}
+\end{figure}
+
+\begin{figure}[htbp]
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer5]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+\end{minipage}
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer8]{}{打高尔夫球的人。注意,此图是顶部对齐}{Fig.$\!$}{The person playing golf. Please note that, it is vertically top aligned.}
+\end{minipage}
+\end{figure}
+
+\begin{figure}[htbp]
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth,height=\textwidth]{golfer}
+\bicaption[golfer9]{}{打高尔夫球的人。注意,此图对齐方式是图片底部对齐}{Fig.$\!$}{The person playing golf. Please note that, it is vertically bottom aligned for figure.}
+\end{minipage}
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer6]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+\end{minipage}
+\end{figure}
+
+\subsubsection{子图}[Sub-picture example]
+注意:子图题注也可以只用中文。规范规定“分图题置于分图之下或图题之下”,但没有给出具体的格式要求。
+没有要求的另外一个说法就是“无论什么格式都不对”。
+所以只有在一个图中有标注“a),b)”,无法使用\cs{subfigure}的情况下,使用最后一个图例中的格式设置方法,否则不要使用。
+为了应对“无论什么格式都不对”,这个子图图题使用“minipage”和“description”环境,宽度,对齐方式可以按照个人喜好自由设置,是否使用双语子图图题也可以自由设置。
+
+\begin{figure}[!h]
+\setlength{\subfigcapskip}{-1bp}
+\centering
+\begin{minipage}{\textwidth}
+\centering
+\subfigure{\label{golfer41}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf]{\subfigure[打高尔夫球的人~1]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\hspace{2em}
+\subfigure{\label{golfer42}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf]{\subfigure[打高尔夫球的人~2]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\end{minipage}
+\centering
+\begin{minipage}{\textwidth}
+\centering
+\subfigure{\label{golfer43}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf]{\subfigure[打高尔夫球的人~3]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\hspace{2em}
+\subfigure{\label{golfer44}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf. Here, 'hang indent' and 'center last line' are not stipulated in the regulation.]{\subfigure[打高尔夫球的人~4。注意,规范中没有明确规定要悬挂缩进、最后一行居中。]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\end{minipage}
+\vspace{0.2em}
+\bicaption[golfer4]{}{打高尔夫球的人}{Fig.$\!$}{The person playing gol}
+\end{figure}
+
+\begin{figure}[t]
+ \centering
+ \begin{minipage}{.7\linewidth}
+ \setlength{\subfigcapskip}{-1bp}
+ \centering
+ \begin{minipage}{\textwidth}
+ \centering
+ \subfigure{\label{golfer45}}\addtocounter{subfigure}{-2}
+ \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~1]{\includegraphics[width=0.4\textwidth]{golfer}}}
+ \hspace{4em}
+ \subfigure{\label{golfer46}}\addtocounter{subfigure}{-2}
+ \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~2]{\includegraphics[width=0.4\textwidth]{golfer}}}
+ \end{minipage}
+ \vskip 0.2em
+ \wuhao 注意:这里是中文图注添加位置(我工要求,图注在图题之上)。
+ \vspace{0.2em}
+\bicaption[golfer47]{}{打高尔夫球的人。注意,此处我工有另外一处要求,子图图题可以位于主图题之下。但由于没有明确说明位于下方具体是什么格式,所以这里不给出举例。}{Fig.$\!$}{The person playing golf. Please note that, although it is appropriate to put subfigures' captions under this caption as stipulated in regulation, but its format is not clearly stated.}
+ \end{minipage}
+\end{figure}
+
+\begin{figure}[t]
+\centering
+\begin{tikzpicture}
+ \node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.3\textwidth]{golfer}};
+ \begin{scope}[x={(image.south east)},y={(image.north west)}]
+ \node at (0.3,0.5) {a)};
+ \node at (0.8,0.2) {b)};
+ \end{scope}
+\end{tikzpicture}
+\bicaption[golfer0]{}{打高尔夫球球的人(博士论文双语题注)}{Fig.$\!$}{The person playing golf (Doctoral thesis)}
+\vskip -0.4em
+ \hspace{2em}
+\begin{minipage}[t]{0.3\textwidth}
+\wuhao \setlist[description]{font=\normalfont}
+ \begin{description}
+ \item[a)]子图图题
+ \end{description}
+ \end{minipage}
+ \hspace{2em}
+ \begin{minipage}[t]{0.3\textwidth}
+\wuhao \setlist[description]{font=\normalfont}
+ \begin{description}
+ \item[b)]子图图题
+ \item[b)]Subfigure caption
+ \end{description}
+\end{minipage}
+\end{figure}
+
+
+\begin{figure}[!h]
+ \centering
+ \begin{sideways}
+ \begin{minipage}{\textheight}
+ \centering
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+\bicaption[golfer7]{}{打高尔夫球的人(非规范要求)}{Fig.$\!$}{The person playing golf (Not stated in the regulation)}
+ \end{minipage}
+ \end{sideways}
+\end{figure}
+
+\clearpage
+
+如果不想让图片浮动到下一章节,那么在此处使用\cs{clearpage}命令。
+
+\section{如何做出符合规范的漂亮的图}
+关于作图工具在后文\ref{drawtool}中给出一些作图工具的介绍,此处不多言。
+此处以R语言和Tikz为例说明如何做出符合规范的图。
+
+\subsection{Tikz作图举例}
+使用Tikz作图核心思想是把格式、主题、样式与内容分离,定义在全局中。
+注意字体设置可以有两种选择,如何字少,用五号字,字多用小五。
+使用Tikz作图不会出现字体问题,字体会自动与正文一致。
+
+\begin{figure}[thb!]
+ \centering
+ \begin{tikzpicture}[xscale=0.8,yscale=0.3,rotate=90]
+ \small
+ \draw (-22,6.5) node[refcell]{参考基因组};
+ \draw[refline] (-23, 5) -- (27, 5);
+ \draw (-22,3.75) node[tscell]{肿瘤样本};
+ \draw (-20,3.75) node[tncell]{正常细胞};
+ \draw[tnline] (-21, 2.5) -- (27, 2.5);
+ \draw (-20,1.25) node[ttcell]{肿瘤细胞};
+ \rcell{2}{6};
+ \draw[fakeevolve] (4.5, 5.25) -- (4.5, 4.8);
+ \ncell{2}{4};
+ \draw[evolve] (4.5, 3) .. controls (4.5,2.8) and (-3.5,2.9) .. (-3.5, 2);
+ \draw[evolve] (4.5, 3) .. controls (4.5,2.8) and (11.5,2.9) .. (11.5, 2);
+ \tcellone{-6}{1.5};
+ \draw (-9, 2) node[ttcell]{1};
+ \draw[evolve] (-3.5, 0) .. controls (-3.5,-0.2) and (-12,-0.1) .. (-12, -1.5);
+ \draw[evolve] (-3.5, 0) .. controls (-3.5,-0.2) and (1.5,-0.1) .. (1.5, -1.5);
+ \tcellthree{7}{1.5};
+ \draw (4, 2) node[ttcell]{2};
+ \draw[evolve] (11, 0.5) .. controls (11,0.3) and (19,0.4) .. (19, -1.5);
+ \tcellfive{-16}{-2};
+ \draw (-19, -1.5) node[ttcell]{3};
+ \tcelltwo{-1}{-2};
+ \draw (-4, -1.5) node[ttcell]{4};
+ \tcellfour{12}{-2};
+ \draw (9, -1.5) node[ttcell]{5};
+ \end{tikzpicture}
+ \begin{minipage}{.9\linewidth}
+ \vskip 0.2em
+ \wuhao 图中,带有箭头的淡蓝色箭头表示肿瘤子种群的进化方向。一般地,从肿瘤组织中取用于进行二代测序的样本中含有一定程度的正常细胞污染,因此肿瘤的样本中含有正常细胞和肿瘤细胞。每一个子种群的基因组的模拟过程是把生殖细胞变异和体细胞变异加入到参考基因组中。
+ \vspace{0.6em}
+ \end{minipage}
+\bicaption[tumor]{}{肿瘤组织中各个子种群的进化示意图}{Fig.$\!$}{The diagram of tumor subpopulation evolution process}
+\end{figure}
+
+\subsection{R作图}
+R是一种极具有代表性的典型的作图工具,应用广泛。
+与Tikz图~\ref{tumor}~不同,R作图分两种情况:(1)可以转换为Tikz码;(2)不可转换为Tikz码。
+第一种情况图形简单,图形中不含有很多数据点,使用R语言中的Tikz包即可。
+第二种情况是图形复杂,含有海量数据点,这时候不要转成Tikz矢量图,这会使得论文体积巨大。
+推荐使用pdf或png非矢量图形。
+使用非矢量图形时要注意选择好字号(五号或小五),和字体(宋体、新罗马)然后选择生成图形大小,注意此时在正文中使用\cs{includegraphics}命令导入时,不要像导入矢量图那样控制图形大小,使用图形的原本的
+宽度和高度,这样就确保了非矢量图形中的文字与正文一致了。
+
+为了控制\hithesis\ 的大小,此处不给出具体举例,
+
+\section{表格}
+
+表应有自明性。表格不加左、右边线。表的编排建议采用国际通行的三线表。表中文字用宋
+体~5~号字。每个表格均应有表题(由表序和表名组成)。表序一般按章编排,如第~1~章第
+一个插表的序号为“表~1-1”等。表序与表名之间空一格,表名中不允许使用标点符号,表名
+后不加标点。表题置于表上,硕士学位论文只用中文,博士学位论文用中、英文两种文字居
+中排写,中文在上,要求中文用宋体~5~号字,英文用新罗马字体~5~号字。表头设计应简单
+明了,尽量不用斜线。表头中可采用化学符号或物理量符号。
+
+
+\subsection{普通表格的绘制方法}[Methods of drawing normal tables]
+
+表格应具有三线表格式,因此需要调用~booktabs~宏包,其标准格式如表~\ref{table1}~所示。
+\begin{table}[htbp]
+\bicaption[table1]{}{符合研究生院绘图规范的表格}{Table$\!$}{Table in agreement of the standard from graduate school}
+\vspace{0.5em}\centering\wuhao
+\begin{tabular}{ccccc}
+\toprule[1.5pt]
+$D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\
+\midrule[1pt]
+ 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\
+10 & 421.0 & 0.001035 & 3.59 & 0.04089\\
+20 & 640.2 & 0.001565 & 7.18 & 0.04089\\
+\bottomrule[1.5pt]
+\end{tabular}
+\end{table}
+全表如用同一单位,则将单位符号移至表头右上角,加圆括号。表中数据应准确无误,书写
+清楚。数字空缺的格内加横线“-”(占~2~个数字宽度)。表内文字或数字上、下或左、右
+相同时,采用通栏处理方式,不允许用“〃”、“同上”之类的写法。表内文字说明,起行空一
+格、转行顶格、句末不加标点。如某个表需要转页接排,在随后的各页上应重复表的编号。
+编号后加“(续表)”,表题可省略。续表应重复表头。
+
+\subsection{长表格的绘制方法}[Methods of drawing long tables]
+
+长表格是当表格在当前页排不下而需要转页接排的情况下所采用的一种表格环境。若长表格
+仍按照普通表格的绘制方法来获得,其所使用的\verb|table|浮动环境无法实现表格的换页
+接排功能,表格下方过长部分会排在表格第1页的页脚以下。为了能够实现长表格的转页接
+排功能,需要调用~longtable~宏包,由于长表格是跨页的文本内容,因此只需要单独的
+\verb|longtable|环境,所绘制的长表格的格式如表~\ref{table2}~所示。
+
+注意,长表格双语标题的格式。
+
+\vspace{-1.5bp}
+\ltfontsize{\wuhao[1.667]}
+\wuhao[1.667]\begin{longtable}{ccc}%
+\longbionenumcaption{}{{\wuhao 中国省级行政单位一览
+}\label{table3}}{Table$\!$}{}{{\wuhao Overview of the provincial administrative
+unit of China}}{-0.5em}{3.15bp}\\
+%\caption{\wuhao 中国省级行政单位一览}\\
+\toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+\endfirsthead
+\multicolumn{3}{r}{表~\thetable(续表)}\vspace{0.5em}\\
+\toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+\endhead
+\bottomrule[1.5pt]
+\endfoot
+北京市 & 京 & 北京\\
+天津市 & 津 & 天津\\
+河北省 & 冀 & 石家庄市\\
+山西省 & 晋 & 太原市\\
+内蒙古自治区 & 蒙 & 呼和浩特市\\
+辽宁省 & 辽 & 沈阳市\\
+吉林省 & 吉 & 长春市\\
+黑龙江省 & 黑 & 哈尔滨市\\
+上海市 & 沪/申 & 上海\\
+江苏省 & 苏 & 南京市\\
+浙江省 & 浙 & 杭州市\\
+安徽省 & 皖 & 合肥市\\
+福建省 & 闽 & 福州市\\
+江西省 & 赣 & 南昌市\\
+山东省 & 鲁 & 济南市\\
+河南省 & 豫 & 郑州市\\
+湖北省 & 鄂 & 武汉市\\
+湖南省 & 湘 & 长沙市\\
+广东省 & 粤 & 广州市\\
+广西壮族自治区 & 桂 & 南宁市\\
+海南省 & 琼 & 海口市\\
+重庆市 & 渝 & 重庆\\
+四川省 & 川/蜀 & 成都市\\
+贵州省 & 黔/贵 & 贵阳市\\
+云南省 & 云/滇 & 昆明市\\
+西藏自治区 & 藏 & 拉萨市\\
+陕西省 & 陕/秦 & 西安市\\
+甘肃省 & 甘/陇 & 兰州市\\
+青海省 & 青 & 西宁市\\
+宁夏回族自治区 & 宁 & 银川市\\
+新疆维吾尔自治区 & 新 & 乌鲁木齐市\\
+香港特别行政区 & 港 & 香港\\
+澳门特别行政区 & 澳 & 澳门\\
+台湾省 & 台 & 台北市\\
+\end{longtable}\normalsize
+\vspace{-1em}
+
+此长表格~\ref{table2}~第~2~页的标题“编号(续表)”和表头是通过代码自动添加上去的,无需人工添加,若表格在页面中的竖直位置发生了变化,长表格在第~2~页
+及之后各页的标题和表头位置能够始终处于各页的最顶部,也无需人工调整,\LaTeX~系统的这一优点是~word~等软件所无法比拟的。
+
+\subsection{列宽可调表格的绘制方法}[Methods of drawing tables with adjustable-width columns]
+论文中能用到列宽可调表格的情况共有两种,一种是当插入的表格某一单元格内容过长以至
+于一行放不下的情况,另一种是当对公式中首次出现的物理量符号进行注释的情况,这两种
+情况都需要调用~tabularx~宏包。下面将分别对这两种情况下可调表格的绘制方法进行阐述
+。
+\subsubsection{表格内某单元格内容过长的情况}[The condition when the contents in
+some cells of tables are too long]
+首先给出这种情况下的一个例子如表~\ref{table3}~所示。
+\begin{table}[htbp]
+ \centering
+\bicaption[table4]{}{最小的三个正整数的英文表示法}{Table$\!$}{The English construction of the smallest three positive integral numbers}\vspace{0.5em}\wuhao
+\begin{tabularx}{0.7\textwidth}{llX}
+\toprule[1.5pt]
+Value & Name & Alternate names, and names for sets of the given size\\\midrule[1pt]
+1 & One & ace, single, singleton, unary, unit, unity\\
+2 & Two & binary, brace, couple, couplet, distich, deuce, double, doubleton, duad, duality, duet, duo, dyad, pair, snake eyes, span, twain, twosome, yoke\\
+3 & Three & deuce-ace, leash, set, tercet, ternary, ternion, terzetto, threesome, tierce, trey, triad, trine, trinity, trio, triplet, troika, hat-trick\\\bottomrule[1.5pt]
+\end{tabularx}
+\end{table}
+tabularx环境共有两个必选参数:第1个参数用来确定表格的总宽度,第2个参数用来确定每
+列格式,其中标为X的项表示该列的宽度可调,其宽度值由表格总宽度确定。标为X的列一般
+选为单元格内容过长而无法置于一行的列,这样使得该列内容能够根据表格总宽度自动分行
+。若列格式中存在不止一个X项,则这些标为X的列的列宽相同,因此,一般不将内容较短的
+列设为X。标为X的列均为左对齐,因此其余列一般选为l(左对齐),这样可使得表格美观
+,但也可以选为c或r。
+
+\subsubsection{对物理量符号进行注释的情况}[The condition when physical symbols
+need to be annotated]
+
+为使得对公式中物理量符号注释的转行与破折号“———”后第一个字对齐,此处最好采用表格
+环境。此表格无任何线条,左对齐,且在破折号处对齐,一共有“式中”二字、物理量符号和
+注释三列,表格的总宽度可选为文本宽度,因此应该采用\verb|tabularx|环境。由
+\verb|tabularx|环境生成的对公式中物理量符号进行注释的公式如式(\ref{eq:1})所示。
+\begin{equation}\label{eq:1}
+\ddot{\boldsymbol{\rho}}-\frac{\mu}{R_{t}^{3}}\left(3\mathbf{R_{t}}\frac{\mathbf{R_{t}\rho}}{R_{t}^{2}}-\boldsymbol{\rho}\right)=\mathbf{a}
+\end{equation}
+\begin{tabularx}{\textwidth}{@{}l@{\quad}r@{———}X@{}}
+式中& $\boldsymbol{\rho}$ &追踪飞行器与目标飞行器之间的相对位置矢量;\\
+& $\boldsymbol{\ddot{\rho}}$&追踪飞行器与目标飞行器之间的相对加速度;\\
+& $\mathbf{a}$ &推力所产生的加速度;\\
+& $\mathbf{R_t}$ & 目标飞行器在惯性坐标系中的位置矢量;\\
+& $\omega_{t}$ & 目标飞行器的轨道角速度;\\
+& $\mathbf{g}$ & 重力加速度,$=\frac{\mu}{R_{t}^{3}}\left(
+3\mathbf{R_{t}}\frac{\mathbf{R_{t}\rho}}{R_{t}^{2}}-\boldsymbol{\rho}\right)=\omega_{t}^{2}\frac{R_{t}}{p}\left(
+3\mathbf{R_{t}}\frac{\mathbf{R_{t}\rho}}{R_{t}^{2}}-\boldsymbol{\rho}\right)$,这里~$p$~是目标飞行器的轨道半通径。
+\end{tabularx}\vspace{3.15bp}
+由此方法生成的注释内容应紧邻待注释公式并置于其下方,因此不能将代码放入
+\verb|table|浮动环境中。但此方法不能实现自动转页接排,可能会在当前页剩余空间不够
+时,全部移动到下一页而导致当前页出现很大空白。因此在需要转页处理时,还请您手动将
+需要转页的代码放入一个新的\verb|tabularx|环境中,将原来的一个\verb|tabularx|环境
+拆分为两个\verb|tabularx|环境。
+
+\subsubsection{排版横版表格的举例}[An example of landscape table]
+
+\begin{table}[p]
+\centering
+\begin{sideways}
+\begin{minipage}{\textheight}
+\bicaption[table2]{}{不在规范中规定的横版表格}{Table$\!$}{A table style which is not stated in the regulation}
+\vspace{0.5em}\centering\wuhao
+\begin{tabular}{ccccc}
+\toprule[1.5pt]
+$D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\
+\midrule[1pt]
+ 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\
+10 & 421.0 & 0.001035 & 3.59 & 0.04089\\
+20 & 640.2 & 0.001565 & 7.18 & 0.04089\\
+\bottomrule[1.5pt]
+\end{tabular}
+\end{minipage}
+\end{sideways}
+\end{table}
+
+
+\section{公式}
+与正常\LaTeX\ 使用方法一致,此处略。关于公式中符号样式的定义在`hithesis.sty'有示
+例。
+
+\section{其他杂项}[Miscellaneous]
+
+\subsection{右翻页}[Open right]
+
+对于双面打印的论文,强制使每章的标题页出现右手边为右翻页。
+规范中没有明确规定是否是右翻页打印。
+模板给出了右翻页选项。
+为了应对用户的个人喜好,在希望设置成右翻页的位置之前添加\cs{cleardoublepage}命令即可。
+
+\subsection{算法}[Algorithms]
+我工算法有以下几大特点。
+
+(1)算法不在规范中要求。
+
+(2)算法常常被使用(至少计算机学院)。
+
+(3)格式乱,甚至出现了每个实验室的格式要求都不一样。
+
+此处不给出示例,因为没法给,在
+\href{https://github.com/dustincys/PlutoThesis}{https://github.com/dustincys/PlutoThesis}
+的readme文件中有不同实验室算法要求说明。
+
+\subsection{脚注}[Footnotes]
+不在再规范\footnote{规范是指\PGR\ 和\UGR}中要求,模板默认使用清华大学的格式。
+
+\subsection{源码}[Source code]
+也不在再规范中要求。如果有需要最好使用minted包,但在编译的时候需要添加“
+-shell-escape”选项且安装pygmentize软件,这些不在模板中默认载入,如果需要自行载入
+。
+\subsection{思源宋体}[Siyuan font]
+如果要使用思源字体,需要思源字体的定义文件,此文件请到模板的开发版网址github:
+\href{https://gihitb.com/dustincys/hithesis}{https://gihitb.com/dustincys/hithesis}
+或者oschia:
+\href{https://git.oschina.net/dustincys/hithesis}{https://git.oschina.net/dustincys/hithesis}
+处下载。
+
+\subsection{专业绘图工具}[Processional drawing tool]
+\label{drawtool}
+推荐使用tikz包,使用tikz源码绘图的好处是,图片中的字体与正文中的字体一致。具体如
+何使用tikz绘图不属于模板范畴。
+tikz适合用来画不需要大量实验数据支撑示意图。但R语言等专业绘图工具具有画出各种、
+专业、复杂的数据图。R语言中有tikz包,能自动生成tikz码,这样tikz几乎无所不能。
+对于排版有极致追求的小伙伴,可以参考
+\href{http://www.texample.net/tikz/resources/}{http://www.texample.net/tikz/resources/}
+中所列工具,几乎所有作图软件所作的图形都可转成tikz,然后可以自由的在tikz中修改
+图中内容,定义字体等等。实现前文窝工规范中要求的图中字体的一致性的终极目标。
+
+
+\subsection{术语词汇管理}[Manage glossaries]
+推荐使用glossaries包管理术语、缩略语,可以自动生成首次全写,非首次缩写。
+
+\subsection{\TeX\ 源码编辑器}[\TeX editor]
+推荐:(1)付费软件Winedt;(2)免费软件kile;(3)vim或emaces或sublime等神级编
+译器(需要配置)。
+
+\subsection{\LaTeX\ 排版重要原则}[\LaTeX\ typesetting rules]
+格式和内容分离是\LaTeX\ 最大优势,所有多次出现的内容、样式等等都可以定义为简单命
+令、环境。这样的好处是方便修改、管理。例如,如果想要把所有的表示向量的符号由粗体
+\cs{mathbf}变换到花体\cs{mathcal},只需修改该格式的命令的定义部分,不需要像MS
+word那样处处修改。总而言之,使用自定义命令和环境才是正确的使用\LaTeX\ 的方式。
+
+\section{关于捐助}
+各位刀客和大侠如用的嗨,要解囊相助,请微信或支付宝参照图
+~\ref{wct5}~到图~\ref{zfb}~中提示操作(二维码被矢量化后之后去
+除了头像等冗余无用的部分~)。
+
+\begin{figure}[!h]
+\setlength{\subfigcapskip}{-1bp}
+\centering
+\subfigure{\label{wct5}}\addtocounter{subfigure}{-1}
+\subfigure[如果用的嗨,微信扫码捐助5元]{\includegraphics[width=0.4\textwidth]{wct5}}
+\hspace{2em}
+\subfigure{\label{wct10}}\addtocounter{subfigure}{-1}
+\subfigure[如果用的非常嗨,微信扫码捐助10元]{\includegraphics[width=0.4\textwidth]{wct10}}
+\subfigure{\label{wct1}}\addtocounter{subfigure}{-1}
+\subfigure[那个,看在熬夜写代码的份上,微信扫码捐助1元吧]{\includegraphics[width=0.4\textwidth]{wct1}}
+\hspace{2em}
+\subfigure{\label{zfb}}\addtocounter{subfigure}{-1}
+\subfigure[或者支付宝不限额度]{\includegraphics[width=0.4\textwidth]{zfb}}
+\vspace{0.2em}
+\bicaption[Donation]{}{捐助,注意此处是子图只用汉语图题的形式,我工规定可以不用
+英语图题}{Fig.$\!$}{Donation, please note that it is OK to use Chinese caption
+only}
+\end{figure}
+
+
+% Local Variables:
+% TeX-master: "../main"
+% TeX-engine: xetex
+% End:
diff --git a/macros/xetex/latex/hithesis/ctex-fontset-siyuan.def b/macros/xetex/latex/hithesis/ctex-fontset-siyuan.def
new file mode 100644
index 0000000000..f429ef8dbd
--- /dev/null
+++ b/macros/xetex/latex/hithesis/ctex-fontset-siyuan.def
@@ -0,0 +1,86 @@
+\ProvidesExplFile{ctex-fontset-siyuan.def}
+ {\ExplFileDate}{2.4.9}{\ExplFileDescription}
+\tl_new:N \l__ctex_msyh_suffix_tl
+\tl_set:Nn \l__ctex_msyh_suffix_tl { .ttc }
+\file_if_exist:nF { C:/Windows/Fonts/msyh.ttc }
+ {
+ \file_if_exist:nF { msyh.ttc }
+ { \tl_set:Nn \l__ctex_msyh_suffix_tl { .ttf } }
+ }
+\sys_if_engine_pdftex:TF
+ {
+ \ctex_zhmap_case:nnn
+ {
+ \ctex_punct_set:n { windows }
+ \setCJKmainfont
+ [ BoldFont = simhei.ttf , ItalicFont = simkai.ttf ] { simsun.ttc }
+ \setCJKsansfont [ BoldFont = msyhbd\l__ctex_msyh_suffix_tl ] { msyh\l__ctex_msyh_suffix_tl }
+ \setCJKfamilyfont { zhyahei }
+ [ BoldFont = msyhbd\l__ctex_msyh_suffix_tl ] { msyh\l__ctex_msyh_suffix_tl }
+ \ctex_punct_map_family:nn { \CJKsfdefault } { zhyahei }
+ \ctex_punct_map_bfseries:nn { \CJKsfdefault , zhyahei } { zhyaheib }
+ \setCJKmonofont { simfang.ttf }
+ \setCJKfamilyfont { zhkai } { simkai.ttf }
+ \setCJKfamilyfont { zhfs } { simfang.ttf }
+ \setCJKfamilyfont { zhsong } { simsun.ttc }
+ \setCJKfamilyfont { zhhei } { simhei.ttf }
+ \setCJKfamilyfont { zhli } { simli.ttf }
+ \setCJKfamilyfont { zhyou } { simyou.ttf }
+ \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong }
+ \ctex_punct_map_family:nn { \CJKttdefault } { zhfs }
+ \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai }
+ \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei }
+ }
+ {
+ \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhwindowsfonts }
+ \ctex_punct_set:n { windows }
+ \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong }
+ \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei }
+ \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai }
+ }
+ {
+ \tl_set:Nn \CJKrmdefault { rm }
+ \tl_set:Nn \CJKsfdefault { sf }
+ \tl_set:Nn \CJKttdefault { tt }
+ }
+ }
+ {
+ \sys_if_engine_uptex:TF
+ {
+ \ctex_set_upfonts:nnnnnn
+ {simsun.ttc} {simhei.ttf} {simkai.ttf}
+ {msyh\l__ctex_msyh_suffix_tl} {msyhbd\l__ctex_msyh_suffix_tl}
+ {simfang.ttf}
+ \ctex_set_upfamily:nnn { zhsong } { upzhserif } {}
+ \ctex_set_upfamily:nnn { zhhei } { upzhserifb } {}
+ \ctex_set_upfamily:nnn { zhfs } { upzhmono} {}
+ \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+ \ctex_set_upfamily:nnn { zhyahei } { upzhsans } { upzhsansb }
+ \ctex_set_upfamily:nnn { zhli } { upschrm } {}
+ \ctex_set_upmap:nnn { upstsl } { simli.ttf } {}
+ \ctex_set_upfamily:nnn { zhyou } { upschgt } {}
+ \ctex_set_upmap:nnn { upstht } { simyou.ttf } {}
+ }
+ {
+ \setCJKmainfont
+ [ BoldFont = SimHei , ItalicFont = KaiTi ] { SourceHanSerifCN-Regular }
+ \setCJKsansfont
+ [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
+ \setCJKmonofont { FangSong }
+ \setCJKfamilyfont { zhkai } { KaiTi }
+ \setCJKfamilyfont { zhfs } { FangSong }
+ \setCJKfamilyfont { zhsong } { SourceHanSerifCN-Regular }
+ \setCJKfamilyfont { zhhei } { SimHei }
+ \setCJKfamilyfont { zhli } { LiSu }
+ \setCJKfamilyfont { zhyou } { YouYuan }
+ \setCJKfamilyfont { zhyahei }
+ [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
+ }
+ }
+\NewDocumentCommand \songti { } { \CJKfamily { zhsong } }
+\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } }
+\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } }
+\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } }
+\NewDocumentCommand \lishu { } { \CJKfamily { zhli } }
+\NewDocumentCommand \youyuan { } { \CJKfamily { zhyou } }
+\NewDocumentCommand \yahei { } { \CJKfamily { zhyahei } }
diff --git a/macros/xetex/latex/hithesis/figures/bthesistitle.eps b/macros/xetex/latex/hithesis/figures/bthesistitle.eps
new file mode 100644
index 0000000000..631dc56ddd
--- /dev/null
+++ b/macros/xetex/latex/hithesis/figures/bthesistitle.eps
@@ -0,0 +1,335 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 23:43:48 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 -1 422 55
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 422 55
+%%EndPageSetup
+q 0 -1 422 56 rectclip q
+0 g
+20.781 0.454 m 20.582 0.704 20.312 4.915 20.18 9.95 c 20.047 14.927 19.844
+ 19.544 19.723 20.208 c 19.512 21.403 19.488 21.415 17.988 21.192 c 17.156
+ 21.067 14.938 20.813 13.062 20.634 c 8.965 20.235 7.098 19.766 4.219 18.399
+ c 0.973 16.864 0.621 16.958 0.168 19.442 c -0.25 21.751 0.102 22.798 1.293
+ 22.798 c 1.676 22.798 2.816 23.032 3.828 23.317 c 5.516 23.79 6.543 24.063
+ 12.273 25.559 c 13.32 25.833 15.043 26.298 16.105 26.599 c 17.168 26.895
+ 18.309 27.141 18.641 27.141 c 19.082 27.141 19.242 27.466 19.242 28.388
+ c 19.242 29.161 19.551 29.989 20.055 30.567 c 20.871 31.505 l 22.859 30.806
+ l 23.953 30.423 25.258 29.72 25.754 29.243 c 26.66 28.376 l 32.27 28.821
+ l 35.352 29.067 38.203 29.302 38.602 29.349 c 40.082 29.509 40.516 29.274
+ 41.535 27.774 c 42.109 26.927 42.68 26.153 42.801 26.056 c 43.188 25.739
+ 43.527 22.552 43.281 21.571 c 43.098 20.833 42.824 20.626 42.02 20.626
+c 41.457 20.626 40.902 20.778 40.789 20.962 c 40.676 21.145 39.551 21.638
+ 38.293 22.056 c 36.312 22.716 35.297 22.806 30.789 22.72 c 25.574 22.618
+ l 25.324 20.626 l 25.188 19.532 25.043 14.727 25 9.95 c 24.961 5.177 24.859
+ 0.981 24.773 0.634 c 24.652 0.138 24.238 0.001 22.879 0.001 c 21.918 0.001
+ 20.977 0.204 20.781 0.454 c h
+202.465 0.454 m 202.309 0.7 202.234 4.911 202.301 9.809 c 202.375 15.247
+ 202.246 20.274 201.977 22.72 c 201.535 26.731 l 200.133 26.966 l 198.18
+ 27.298 196.074 26.872 194.555 25.845 c 193.848 25.364 193.043 24.97 192.766
+ 24.97 c 192.152 24.97 189.68 29.513 189.68 30.641 c 189.68 31.294 189.945
+ 31.493 191.039 31.681 c 191.785 31.806 192.965 32.059 193.66 32.239 c 194.359
+ 32.419 195.309 32.563 195.777 32.567 c 196.242 32.567 197.746 32.907 199.117
+ 33.325 c 201.609 34.083 l 201.707 41.919 l 201.805 49.759 l 203.684 49.864
+ l 204.992 49.942 206.055 49.751 207.18 49.239 c 209.047 48.388 209.301
+47.942 208.66 46.665 c 208.371 46.095 208.152 43.868 208.074 40.786 c 207.957
+ 35.825 l 209.273 35.825 l 209.996 35.825 211.422 36.095 212.445 36.427
+c 214.23 37.001 214.328 36.997 214.855 36.337 c 215.16 35.954 215.578 35.196
+ 215.789 34.649 c 215.996 34.102 216.293 33.653 216.449 33.653 c 216.832
+ 33.653 217.645 30.641 217.484 29.806 c 217.367 29.192 216.957 29.13 213.016
+ 29.114 c 210.633 29.102 208.41 28.97 208.082 28.817 c 207.363 28.481 206.992
+ 22.196 206.918 9.044 c 206.879 2.056 206.781 0.641 206.328 0.352 c 205.535
+ -0.144 202.801 -0.077 202.465 0.454 c h
+407.906 2.102 m 406.441 2.333 402.094 5.352 402.332 5.974 c 402.445 6.27
+ 402.707 6.513 402.914 6.513 c 403.426 6.513 410.059 13.184 410.059 13.7
+ c 410.059 13.927 410.184 14.114 410.332 14.114 c 410.895 14.122 413.797
+ 19.571 414.762 22.434 c 417.156 29.536 417.203 38.747 414.895 47.946 c
+414.594 49.141 414.215 50.649 414.047 51.294 c 413.758 52.427 413.781 52.462
+ 414.707 52.259 c 417.59 51.634 417.832 51.333 419.203 46.681 c 422.32 36.099
+ 422.586 26.45 420.016 17.052 c 419.426 14.895 416.766 9.188 415.988 8.407
+ c 415.711 8.134 415.488 7.778 415.488 7.618 c 415.488 7.462 414.449 6.247
+ 413.18 4.919 c 410.883 2.516 409.605 1.833 407.906 2.102 c h
+262.418 2.829 m 260.957 3.532 260.273 4.263 260.258 5.145 c 260.25 5.485
+ 260.02 6.302 259.746 6.954 c 257.246 12.884 256.172 26.763 257.664 33.872
+ c 258.633 38.485 259.824 41.72 261.766 45.02 c 263.887 48.626 268.145 52.833
+ 269.668 52.833 c 270.238 52.833 274.098 50.97 274.633 50.438 c 274.883
+50.188 275.41 49.884 275.809 49.755 c 276.207 49.63 276.531 49.407 276.531
+ 49.255 c 276.531 49.001 274.07 46.681 273.797 46.681 c 273.5 46.681 270.016
+ 42.997 270.016 42.684 c 270.016 42.493 269.887 42.341 269.73 42.341 c 269.445
+ 42.341 266.758 38.907 266.758 38.54 c 266.758 38.434 266.391 37.735 265.934
+ 36.993 c 264.969 35.411 263.863 32.599 262.914 29.313 c 262.355 27.368
+262.238 25.77 262.254 20.083 c 262.273 13.337 262.504 11.423 263.945 5.97
+ c 264.887 2.403 264.906 2.169 264.277 2.196 c 263.953 2.204 263.113 2.493
+ 262.418 2.829 c h
+386.898 2.415 m 378.605 3.438 377.863 3.704 377.195 5.88 c 375.809 10.376
+ 373.941 12.786 371.555 13.149 c 370.211 13.352 370.016 13.251 367.859 11.231
+ c 365.59 9.106 365.094 8.774 361.84 7.181 c 360.895 6.716 360.121 6.227
+ 360.121 6.095 c 360.121 5.661 357.707 4.341 356.914 4.341 c 354.457 4.341
+ 348.902 8.356 348.902 10.134 c 348.902 10.813 349.148 10.856 353.184 10.856
+ c 356.52 10.856 358 11.024 359.879 11.614 c 361.207 12.032 362.293 12.52
+ 362.293 12.7 c 362.293 12.88 362.457 13.028 362.66 13.028 c 363.078 13.028
+ 366.273 16.266 366.273 16.684 c 366.273 17.184 364.309 18.345 362.422 18.966
+ c 360.445 19.61 360.137 20.067 360.129 22.356 c 360.121 23.665 360.91 25.829
+ 361.527 26.212 c 361.746 26.345 362.91 25.876 364.117 25.169 c 365.324
+24.462 366.445 23.884 366.609 23.884 c 366.773 23.884 367.113 23.638 367.359
+ 23.341 c 367.605 23.044 368.086 22.798 368.426 22.798 c 369.125 22.798
+369.891 25.466 369.891 27.891 c 369.891 29.438 369.422 29.681 367.969 28.872
+ c 367.48 28.602 365.57 28.431 362.988 28.419 c 359.531 28.411 358.57 28.282
+ 357.477 27.696 c 356.164 26.985 356.152 26.985 355.625 27.696 c 355.055
+ 28.458 354.332 31.302 354.332 32.774 c 354.332 33.849 355.266 34.282 358.246
+ 34.587 c 362.355 35.009 368.797 36.509 370.098 37.349 c 370.312 37.485
+372.266 38.192 374.441 38.919 c 376.617 39.645 378.758 40.47 379.199 40.747
+ c 380.543 41.595 381.707 41.372 382.68 40.079 c 384.594 37.528 385.734
+33.751 384.637 33.587 c 384.391 33.548 383.02 33.509 381.59 33.493 c 378.305
+ 33.466 377.375 32.841 375.738 29.532 c 374.648 27.325 373.168 21.665 373.152
+ 19.653 c 373.148 18.552 378.91 12.809 380.75 12.087 c 381.047 11.97 381.781
+ 11.649 382.379 11.38 c 382.973 11.106 384.902 10.372 386.668 9.747 c 390.215
+ 8.489 392.648 7.013 393.762 5.446 c 394.797 3.997 394.684 3.372 393.324
+ 2.946 c 392.031 2.548 388.324 2.239 386.898 2.415 c h
+152.227 4.099 m 149.426 4.513 149.035 4.825 148.445 7.145 c 148.23 7.993
+ 147.895 8.684 147.699 8.684 c 147.504 8.684 147.344 8.931 147.344 9.227
+ c 147.344 9.528 147.098 9.77 146.801 9.77 c 146.5 9.77 146.258 9.931 146.258
+ 10.126 c 146.258 10.52 143.5 11.942 142.73 11.942 c 142.457 11.942 141.797
+ 11.481 141.262 10.923 c 138.781 8.333 136.094 6.876 133.781 6.876 c 132.195
+ 6.876 129.453 7.86 128.688 8.708 c 128.082 9.376 128.082 9.442 128.707
+10.134 c 129.066 10.532 129.656 10.856 130.016 10.856 c 131.078 10.856 135.316
+ 12.778 137.27 14.145 c 138.605 15.083 l 136.484 17.313 l 135.305 18.552
+ 134.051 19.54 133.66 19.54 c 132.48 19.54 131.969 20.563 132 22.849 c 132.035
+ 25.462 132.816 26.563 134.383 26.22 c 134.996 26.087 135.402 26.149 135.402
+ 26.376 c 135.402 26.993 142.492 29.04 144.098 28.888 c 145.492 28.755 145.5
+ 28.759 144.836 29.485 c 143.207 31.274 143 32.27 143 38.341 c 143 44.794
+ 142.957 44.888 140.816 43.102 c 139.562 42.056 l 139.582 38.852 l 139.59
+ 37.087 139.672 34.782 139.762 33.724 c 139.922 31.813 139.918 31.798 138.098
+ 30.087 c 135.477 27.626 131.059 26.356 131.059 28.067 c 131.059 28.333
+131.547 29.274 132.145 30.161 c 132.742 31.044 133.23 31.907 133.23 32.079
+ c 133.234 32.247 133.496 32.876 133.816 33.474 c 134.238 34.263 134.445
+ 35.942 134.574 39.626 c 134.691 42.876 134.926 44.962 135.227 45.442 c
+135.656 46.13 139.707 47.766 140.977 47.766 c 141.246 47.766 141.938 48.009
+ 142.508 48.309 c 143.953 49.059 146.387 48.985 148.055 48.134 c 149.832
+ 47.227 150.133 46.317 149.238 44.587 c 148.355 42.888 147.648 39.95 147.613
+ 37.852 c 147.582 35.696 148.406 34.516 150.328 33.966 c 152.465 33.356
+152.77 33.04 152.77 31.454 c 152.77 30.411 152.527 29.841 151.801 29.165
+ c 150.82 28.255 148.48 27.618 147.629 28.028 c 147.371 28.153 147.473 28.044
+ 147.855 27.786 c 149.988 26.349 150.328 25.423 149.152 24.247 c 148.754
+ 23.849 148.43 23.282 148.43 22.993 c 148.43 22.477 148.07 21.552 146.543
+ 18.102 c 145.828 16.485 l 146.91 15.571 l 147.504 15.067 148.383 14.329
+ 148.863 13.931 c 150.176 12.845 153.766 11.083 156.207 10.329 c 162.23
+8.47 164.34 7.106 163.805 5.415 c 163.562 4.653 163.234 4.54 159.645 3.985
+ c 156.93 3.567 155.723 3.587 152.227 4.099 c h
+142.797 24.309 m 142.523 25.177 141.594 25.141 139.391 24.181 c 137.582
+ 23.391 l 141.676 19.454 l 142.344 21.552 l 142.707 22.708 142.914 23.95
+ 142.797 24.309 c h
+315.25 4.927 m 312.305 6.091 309.629 8.333 309.27 9.942 c 308.648 12.696
+ 308.348 16.372 308.375 20.774 c 308.395 23.579 308.402 26.149 308.395 26.485
+ c 308.383 26.927 307.93 26.657 306.797 25.544 c 304.602 23.38 302.277 21.86
+ 300.727 21.575 c 299.773 21.399 299.355 21.11 299.219 20.528 c 299.113
+20.083 298.762 19.005 298.438 18.13 c 297.465 15.505 297.832 15.165 299.734
+ 16.923 c 301.922 18.938 302.586 18.934 302.586 16.919 c 302.586 14.095
+300.703 10.075 298.281 7.72 c 297.199 6.669 296.75 6.661 295.832 7.692 c
+ 294.453 9.227 293.852 12.157 294.121 15.993 c 294.41 20.114 294.184 21.352
+ 293.145 21.352 c 292.25 21.352 291.098 20.782 290.043 19.825 c 288.664
+18.571 287.23 19.645 286.145 22.735 c 285.496 24.583 286.012 25.618 287.711
+ 25.884 c 290.102 26.255 293.352 27.255 293.762 27.743 c 293.98 28.009 294.273
+ 28.227 294.41 28.227 c 294.547 28.227 295.02 28.606 295.457 29.067 c 295.895
+ 29.532 296.527 30.009 296.859 30.134 c 297.781 30.47 300.223 28.536 300.621
+ 27.149 c 300.957 25.985 l 302.855 28.532 l 303.902 29.934 304.758 31.239
+ 304.758 31.434 c 304.758 31.63 305 32.29 305.301 32.903 c 305.598 33.516
+ 306.086 34.52 306.387 35.13 c 306.684 35.743 306.93 36.528 306.93 36.868
+ c 306.93 37.212 307.07 37.645 307.242 37.833 c 307.414 38.024 307.973 39.403
+ 308.48 40.903 c 308.988 42.399 309.562 44.028 309.758 44.52 c 309.953 45.013
+ 310.395 46.474 310.734 47.766 c 311.078 49.063 311.625 50.813 311.949 51.657
+ c 312.52 53.153 312.582 53.192 314.184 53.196 c 315.09 53.196 316.027 53.001
+ 316.266 52.763 c 316.848 52.177 316.793 50.329 316.156 49.216 c 315.512
+ 48.091 315.449 44.372 316.066 43.724 c 316.312 43.458 316.762 42.774 317.059
+ 42.196 c 317.359 41.618 318.426 40.282 319.438 39.224 c 320.445 38.165
+321.992 36.438 322.871 35.388 c 325.047 32.786 327.559 30.399 328.117 30.399
+ c 328.371 30.399 328.633 30.27 328.699 30.11 c 328.766 29.954 329.719 29.364
+ 330.812 28.798 c 333.949 27.177 336.176 25.614 336.363 24.899 c 336.914
+ 22.786 335.586 22.224 330.949 22.61 c 325.246 23.087 323.25 23.989 323.223
+ 26.099 c 323.211 27.255 321.867 30.399 321.387 30.399 c 321.195 30.399
+321.043 30.641 321.043 30.942 c 321.043 31.239 320.879 31.485 320.68 31.485
+ c 320.48 31.485 320.02 31.77 319.656 32.118 c 319.293 32.466 318.602 33.083
+ 318.117 33.493 c 317.637 33.903 316.508 35.059 315.613 36.067 c 314.719
+ 37.075 313.648 38.075 313.234 38.29 c 312.551 38.645 312.383 38.477 311.355
+ 36.438 c 309.703 33.149 309.098 31.524 309.098 30.349 c 309.098 29.337
+309.145 29.309 310.508 29.528 c 311.625 29.708 312.062 29.606 312.633 29.036
+ c 313.273 28.395 313.312 28.106 312.992 26.263 c 312.797 25.13 312.723
+24.118 312.828 24.016 c 312.93 23.911 313.723 24.247 314.586 24.755 c 315.449
+ 25.266 316.488 25.833 316.895 26.013 c 317.301 26.192 317.852 26.602 318.113
+ 26.923 c 318.875 27.841 319.586 27.606 320.156 26.247 c 321.023 24.165
+320.57 21.712 319.312 21.712 c 319.102 21.712 318.875 21.591 318.809 21.442
+ c 318.648 21.079 315.371 18.458 315.082 18.458 c 314.953 18.458 314.355
+ 17.997 313.754 17.431 c 312.664 16.415 312.66 16.395 313.051 14.278 c 313.27
+ 13.102 313.68 11.915 313.961 11.63 c 314.789 10.802 317.961 10.665 319.562
+ 11.388 c 321.227 12.138 321.766 13.536 321.766 17.122 c 321.766 18.431
+321.93 19.602 322.129 19.724 c 322.82 20.153 323.934 19.493 324.164 18.524
+ c 324.293 17.989 324.52 17.388 324.672 17.188 c 325.281 16.384 326.793
+9.849 326.809 7.962 c 326.824 6.044 326.402 5.669 323.867 5.376 c 319.918
+ 4.919 315.816 4.704 315.25 4.927 c h
+121.473 6.602 m 120.414 9.708 120.145 12.118 120.258 17.368 c 120.383 22.977
+ l 118.77 22.856 l 117.723 22.774 116.785 22.423 116.117 21.86 c 115.547
+ 21.38 114.852 20.989 114.574 20.989 c 113.812 20.989 112.613 23.634 112.512
+ 25.524 c 112.426 27.153 112.453 27.2 113.789 27.669 c 114.539 27.931 115.84
+ 28.251 116.684 28.376 c 119.211 28.759 122.801 30.251 124.078 31.454 c
+125.223 32.532 126.121 32.388 127.402 30.927 c 128.809 29.325 128.879 27.759
+ 127.621 26.056 c 127.125 25.38 126.715 24.556 126.715 24.22 c 126.715 23.888
+ 126.496 22.981 126.227 22.212 c 125.562 20.298 125.199 17.368 125.625 17.368
+ c 125.812 17.368 126.469 17.86 127.078 18.454 c 128.398 19.743 129.973
+19.934 129.973 18.806 c 129.973 18.403 129.73 17.485 129.43 16.77 c 129.133
+ 16.056 128.887 15.208 128.887 14.884 c 128.883 14.559 128.641 13.829 128.344
+ 13.259 c 128.043 12.688 127.801 12.063 127.801 11.872 c 127.801 11.454
+124.668 7.247 123.875 6.602 c 123.57 6.356 122.941 6.153 122.473 6.153 c
+ 122.008 6.153 121.559 6.356 121.473 6.602 c h
+181.875 7.872 m 180.062 12.13 179.805 13.708 180.109 18.638 c 180.562 25.884
+ 180.512 26.438 179.473 25.903 c 178.559 25.434 177.449 24.755 176.965 24.364
+ c 175.574 23.251 174.926 23.434 173.891 25.224 c 173.34 26.177 172.785
+27.04 172.66 27.141 c 172.535 27.239 172.246 27.856 172.023 28.513 c 171.676
+ 29.528 171.715 29.798 172.289 30.372 c 172.656 30.743 173.668 31.153 174.535
+ 31.282 c 176.316 31.552 179.082 32.575 183.066 34.442 c 183.906 34.833
+184.887 35.063 185.242 34.95 c 185.996 34.712 188.086 31.653 188.43 30.282
+ c 188.625 29.513 188.434 29.122 187.406 28.149 c 186.711 27.497 185.949
+ 26.583 185.719 26.126 c 185.199 25.11 184.73 16.278 185.195 16.298 c 185.91
+ 16.325 187.492 18.048 189.113 20.559 c 190.293 22.388 191.008 23.165 191.426
+ 23.079 c 192.348 22.888 192.082 19.411 190.965 16.966 c 190.09 15.056 188.59
+ 12.298 188.234 11.942 c 187.844 11.552 186.426 9.427 186.426 9.231 c 186.426
+ 9.118 185.91 8.462 185.281 7.77 c 183.727 6.063 182.633 6.095 181.875 7.872
+ c h
+57.926 8.548 m 57.348 9.239 56.527 11.497 56.52 12.403 c 56.512 13.173
+57.469 13.575 60.133 13.915 c 62.109 14.169 63.715 14.563 68.691 16.024
+c 72.648 17.184 72.555 17.036 72.473 22.192 c 72.441 24.384 72.375 24.599
+ 71.895 24.118 c 71.594 23.817 71.352 23.489 71.352 23.384 c 71.352 23.024
+ 67.984 19.54 67.637 19.54 c 66.953 19.54 63.852 22.997 63.441 24.216 c
+63.102 25.216 63.125 25.606 63.551 26.259 c 64.004 26.95 64.391 27.063 66.266
+ 27.044 c 67.816 27.028 68.645 27.196 69.113 27.626 c 69.48 27.954 69.945
+ 28.227 70.145 28.227 c 70.348 28.227 70.789 28.528 71.125 28.899 c 71.664
+ 29.493 71.707 30.165 71.488 34.52 c 71.184 40.575 71.41 41.255 73.719 41.255
+ c 75.59 41.255 78.469 40.032 78.758 39.114 c 78.875 38.739 78.723 37.802
+ 78.41 37.028 c 77.949 35.876 77.867 34.169 77.945 27.493 c 78.043 19.36
+ l 78.926 19.458 l 79.414 19.513 79.855 19.602 79.91 19.657 c 80.43 20.177
+ 81.168 25.462 81.637 32.024 c 82.121 38.794 82.473 41.677 83.508 47.29
+c 83.766 48.669 84.703 49.302 86.113 49.036 c 88.926 48.509 89.969 47.001
+ 88.707 45.29 c 88.18 44.583 87.824 43.364 87.617 41.571 c 87.449 40.102
+ 87.145 37.763 86.938 36.368 c 86.73 34.974 86.566 32.778 86.566 31.481
+c 86.57 29.13 l 87.5 30.216 l 89.414 32.446 89.805 32.942 89.805 33.114
+c 89.805 33.212 90.051 33.579 90.352 33.927 c 90.652 34.274 91.355 35.114
+ 91.918 35.79 c 93.238 37.384 94.32 37.161 96.156 34.923 c 97.621 33.134
+ 97.68 31.735 96.301 31.298 c 95.895 31.165 93.906 29.446 91.887 27.47 c
+ 89.871 25.493 87.613 23.595 86.875 23.247 c 85.812 22.751 85.5 22.38 85.395
+ 21.481 c 85.316 20.856 85.316 20.165 85.391 19.942 c 85.551 19.462 93.125
+ 19.423 95.594 19.891 c 96.492 20.063 97.84 20.321 98.59 20.462 c 99.645
+ 20.665 100.113 20.579 100.66 20.087 c 102.062 18.817 103.727 14.122 103.496
+ 12.095 c 103.383 11.095 103.289 11.04 101.746 11.079 c 100.852 11.102 98.902
+ 11.548 97.418 12.075 c 94.828 12.989 94.406 13.028 87.285 13.016 c 82.078
+ 13.005 79.203 12.845 77.684 12.477 c 76.488 12.188 74.68 11.95 73.668 11.946
+ c 70.68 11.938 63.766 10.274 60.375 8.747 c 58.289 7.809 58.52 7.829 57.926
+ 8.548 c h
+11.016 28.677 m 10.027 30.2 10.016 30.266 10.125 35.462 c 10.184 38.349
+ 10.039 42.02 9.805 43.622 c 9.43 46.177 9.449 46.677 9.977 47.692 c 10.434
+ 48.583 10.805 48.845 11.559 48.825 c 13.102 48.782 15.043 47.958 15.441
+ 47.177 c 15.754 46.567 15.988 46.513 17.168 46.794 c 18.238 47.048 18.73
+ 46.985 19.465 46.505 c 20.871 45.583 20.414 44.153 17.934 41.712 c 16.324
+ 40.126 15.863 39.415 15.711 38.278 c 15.52 36.849 l 16.566 37.825 l 18.434
+ 39.563 20.707 40.962 21.301 40.735 c 21.746 40.563 21.824 40.177 21.656
+ 38.95 c 21.469 37.587 20.539 35.29 19.953 34.739 c 19.844 34.641 19.398
+ 34.091 18.957 33.516 c 16.648 30.509 13.129 27.149 12.281 27.141 c 12.133
+ 27.141 11.562 27.833 11.016 28.677 c h
+25.684 31.841 m 24.75 32.653 23.625 34.032 23.191 34.907 c 22.434 36.415
+ 22.41 36.766 22.676 41.681 c 22.832 44.532 22.977 48.329 23 50.118 c 23.023
+ 51.911 23.172 53.579 23.332 53.829 c 23.781 54.52 25.348 54.368 26.758
+53.497 c 28.023 52.712 l 27.809 49.903 l 27.59 47.091 l 28.754 47.481 l
+29.395 47.692 30.172 48.091 30.488 48.36 c 31.309 49.067 32.543 48.966 32.98
+ 48.153 c 33.574 47.04 33.41 44.423 32.695 43.606 c 31.887 42.681 29.879
+ 41.255 29.387 41.255 c 29.18 41.255 29.012 41.11 29.012 40.934 c 29.012
+ 40.759 28.523 40.415 27.926 40.169 c 26.965 39.77 26.84 39.544 26.844 38.224
+ c 26.852 36.138 27.227 35.72 29.117 35.681 c 31.188 35.634 31.945 36.306
+ 32.762 38.895 c 33.109 39.993 33.586 40.888 33.824 40.88 c 35.031 40.849
+ 36.609 38.337 36.609 36.45 c 36.609 35.759 36.859 34.489 37.164 33.63 c
+ 37.688 32.141 37.676 32.028 36.973 31.321 c 36.32 30.665 35.703 30.567
+31.809 30.474 c 27.383 30.368 l h
+296.914 34.356 m 294.777 35.325 294.484 36.071 294.785 39.774 c 295.031
+ 42.79 295.594 44.161 296.578 44.141 c 296.945 44.134 298.684 41.708 300.68
+ 38.423 c 301.555 36.985 301.719 35.466 301.125 34.352 c 300.637 33.446
+298.918 33.446 296.914 34.356 c h
+124.816 38.591 m 122.375 39.829 l 122.375 42.13 l 122.375 45.54 123.875
+ 48.489 125.613 48.489 c 126.07 48.489 126.535 48.13 126.781 47.587 c 127.008
+ 47.087 127.332 46.681 127.496 46.681 c 127.664 46.681 127.801 46.438 127.801
+ 46.138 c 127.801 45.841 127.934 45.595 128.098 45.595 c 128.418 45.595
+129.484 43.595 130.191 41.673 c 130.938 39.638 129.73 37.259 127.984 37.321
+ c 127.586 37.337 126.16 37.907 124.816 38.591 c h
+185.168 39.817 m 183 40.587 182.699 41.337 183.145 44.864 c 183.723 49.47
+ 185.5 51.028 186.973 48.22 c 187.363 47.474 187.773 46.782 187.879 46.681
+ c 189.934 44.794 191.742 41.169 191.312 39.813 c 191.113 39.184 190.789
+ 39.091 189.023 39.13 c 187.895 39.157 186.16 39.466 185.168 39.817 c h
+368.988 42.251 m 365.379 44.106 364.602 48.188 367.129 52.016 c 367.988
+ 53.321 369.418 53.618 369.754 52.563 c 370.152 51.298 371.145 49.028 371.375
+ 48.852 c 371.504 48.755 371.977 47.817 372.426 46.77 c 374.074 42.923 372.277
+ 40.559 368.988 42.251 c h
+368.988 42.251 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
diff --git a/macros/xetex/latex/hithesis/figures/golfer.eps b/macros/xetex/latex/hithesis/figures/golfer.eps
new file mode 100644
index 0000000000..4d09242de9
--- /dev/null
+++ b/macros/xetex/latex/hithesis/figures/golfer.eps
@@ -0,0 +1,1398 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator:Adobe Illustrator(TM) 1.0b2-
+%%Title:golfer art+
+%%CreationDate:1/6/87 9:32 AM
+%%DocumentFonts:Helvetica-Bold
+%%BoundingBox: 13 37 571 720
+%%TemplateBox:0 -48 576 672
+%%EndComments
+100 dict begin
+/q{bind def}bind def
+/Q{load def}q
+/x{exch def}q
+/X/def Q
+/g{/_g x/p{_g setgray}X}q
+/G{/_G x/P{_G setgray}X}q
+/k{/_b x/_g x/_r x/p{_r _g _b setrgbcolor}X}q
+/K{/_B x/_G x/_R x/P{_R _G _B setrgbcolor}X}q
+/d/setdash Q
+/i/setflat Q
+/j/setlinejoin Q
+/J/setlinecap Q
+/M/setmiterlimit Q
+/w/setlinewidth Q
+/_C{.25 sub round .25 add}q
+/_c{transform _C exch _C exch itransform}q
+/c{_c curveto}q
+/C/c Q
+/v{currentpoint 6 2 roll _c curveto}q
+/V/v Q
+/y{_c 2 copy curveto}q
+/Y/y Q
+/l{_c lineto}q
+/L/l Q
+/m{_c moveto}q
+/_e[]X
+/_E{_e length 0 ne{gsave 1 g 0 G 1 i 0 J 0 j .5 w 10 M[]0 d
+/Helvetica-Bold 24 0 0 1 z
+[0.966 0.259 -0.259 0.966
+_e 0 get _e 2 get add 2 div _e 1 get _e 3 get add 2 div]a
+(ERROR: can't fill a path)t T grestore}if}q
+/n/newpath Q
+/N/newpath Q
+/F{p{fill}stopped{/_e[pathbbox]X n _E}if}q
+/f{closepath F}q
+/S{P stroke}q
+/s{closepath S}q
+/B{gsave F grestore S}q
+/b{closepath B}q
+/u{}q
+/U{}q
+/_s/ashow Q
+/_S{(?)exch{2 copy 0 exch put pop dup true charpath currentpoint _m setmatrix
+stroke _M setmatrix moveto 3 copy pop rmoveto}forall pop pop pop n}q
+/_A{_a moveto _t exch 0 exch}q
+/_L{0 _l neg translate _M currentmatrix pop}q
+/_w{dup stringwidth exch 3 -1 roll length 1 sub _t mul add exch}q
+/_z[{0 0}bind{dup _w exch neg 2 div exch neg 2 div}bind
+{dup _w exch neg exch neg}bind]X
+/z{_z exch get/_a x/_t x/_l x exch findfont exch scalefont setfont}q
+/_d{matrix currentmatrix X}q
+/_D{/_m _d gsave concat/_M _d}q
+/e{_D p/t{_A _s _L}X}q
+/r{_D P/t{_A _S _L}X}q
+/a{_D/t{dup p _A _s P _A _S _L}X}q
+/o{_D/t{pop _L}X}q
+/T{grestore}q
+/Z{findfont begin currentdict dup length dict begin
+{1 index/FID ne{X}{pop pop}ifelse}forall/FontName exch X dup length 0 ne
+{/Encoding Encoding 256 array copy X 0 exch{dup type/nametype eq
+{Encoding 2 index 2 index put pop 1 add}{exch pop}ifelse}forall}if pop
+currentdict dup end end/FontName get exch definefont pop}q
+n
+%%EndProlog
+u
+0.9 g
+0 G
+1 i
+0 J
+0 j
+1 w
+10 M
+[]0 d
+%%Note:
+15.815 40.248 m
+567.815 40.002 L
+567.748 716.565 L
+15.998 716.81 L
+15.815 40.248 L
+b
+U
+1 g
+285.313 40 m
+567.688 40.125 L
+567.812 78.375 L
+285.312 78.25 L
+285.313 40 L
+b
+0 g
+175.5 163 m
+180.007 163 173.738 169.081 171.75 168.75 c
+174.75 169.25 176.25 169.5 174.5 171.25 C
+178 171.25 176.349 173.783 175 176.75 c
+173.75 179.5 170.75 182.25 168.25 182 C
+165.5 181.25 167.622 182.838 165.25 186 c
+164.5 187 164.75 187.5 161.75 186.75 c
+158.75 186 163.25 190 156.75 190 c
+150.25 190 148.5 189 145.5 186 c
+142.5 183 139.75 183.75 139.5 182.5 c
+139.25 181.25 139.5 176.75 138.75 175.5 c
+138 174.25 136.75 174.25 136.25 178 c
+135.75 181.75 140.25 182.25 134 187 C
+135.75 190.75 134.5 191.75 131 193.5 C
+131 200 129.202 203.364 119.5 208.5 c
+115.25 210.75 107 212.75 104.75 208.75 c
+102.5 204.75 103 206.5 96.5 205.75 c
+90 205 87.25 202.5 86.5 197.75 c
+85.75 193 82.75 195 79 194.75 c
+75.25 194.5 77 192.75 77.25 191.75 c
+77.5 190.75 75.25 192.5 71.5 192 c
+67.75 191.5 64.25 185.5 69.5 180.75 c
+74.75 176 66.5 180.75 64.25 182.25 c
+62 183.75 60.5 181.75 61 180.25 c
+61.5 178.75 58.75 180.75 57.5 180.75 c
+56.25 180.75 51.008 180.188 52 172.25 c
+52.25 170.25 51.5 170.5 49.75 169.25 c
+48 168 45.75 164.25 48.5 158.75 c
+51.25 153.25 49 150 48 145.5 c
+47 141 48 138.25 51.25 137.25 c
+54.5 136.25 54 133.791 54 130.75 C
+57 130.5 59 129.25 58.75 124.5 C
+62.25 124.5 61.75 126.75 62.5 130 c
+63.25 133.25 65.75 129 66.25 127 c
+66.75 125 67.5 125 72 125 C
+74.75 116.25 74.75 120.5 75.25 117.25 C
+80 117.5 79.5 116.75 83.25 113.75 c
+87 110.75 88.25 115.5 92 118.5 c
+95.75 121.5 94.25 122.75 96.25 118.75 c
+98.25 114.75 98.5 119 101.5 119.25 c
+104.5 119.5 101 115.75 105.25 114.5 c
+109.5 113.25 105 113.75 103.5 111.25 c
+102 108.75 95 103.5 101.75 101.5 c
+108.5 99.5 103.5 99.75 94.75 99.5 c
+86 99.25 73.75 87.5 97.25 73.25 C
+117.25 53.25 117.25 53.5 v
+117.25 53.75 175.25 163 175.5 163 c
+f
+1 J
+0.2 w
+389.709 210.076 m
+511.826 210.076 l
+S
+394.709 212.461 m
+516.826 212.461 l
+S
+415.459 215.112 m
+537.576 215.112 l
+S
+399.709 217.762 m
+521.826 217.762 l
+S
+402.459 222.799 m
+524.576 222.799 l
+S
+402.709 225.45 m
+524.826 225.45 l
+S
+392.959 227.851 m
+515.076 227.851 l
+S
+400.691 232.856 m
+522.809 232.856 l
+S
+388.191 235.241 m
+510.309 235.241 l
+S
+393.941 237.892 m
+516.059 237.892 l
+S
+393.441 240.292 m
+515.559 240.292 l
+S
+396.191 242.928 m
+518.309 242.928 l
+S
+386.441 245.579 m
+508.559 245.579 l
+S
+393.191 248.23 m
+515.309 248.23 l
+S
+414.191 250.631 m
+536.309 250.631 l
+S
+397.95 252.973 m
+520.067 252.973 l
+S
+398.7 255.358 m
+520.817 255.358 l
+S
+400.7 258.009 m
+522.817 258.009 l
+S
+384.45 260.659 m
+506.567 260.659 l
+S
+380.7 265.696 m
+502.817 265.696 l
+S
+379.95 268.347 m
+502.067 268.347 l
+S
+386.7 270.748 m
+508.817 270.748 l
+S
+394.433 275.752 m
+516.55 275.752 l
+S
+381.933 278.138 m
+504.05 278.138 l
+S
+379.433 280.789 m
+501.55 280.789 l
+S
+383.183 283.189 m
+505.3 283.189 l
+S
+370.433 285.825 m
+492.55 285.825 l
+S
+382.433 288.476 m
+504.55 288.476 l
+S
+356.183 291.127 m
+478.3 291.127 l
+S
+372.433 293.277 m
+494.55 293.277 l
+S
+361.866 296.006 m
+483.984 296.006 l
+S
+365.616 298.406 m
+487.734 298.406 l
+S
+366.866 301.042 m
+488.984 301.042 l
+S
+346.866 303.693 m
+468.984 303.693 l
+S
+338.616 306.344 m
+460.734 306.344 l
+S
+330.866 308.494 m
+452.984 308.494 l
+S
+301.575 344.342 m
+423.692 344.342 l
+S
+314.075 346.728 m
+436.192 346.728 l
+S
+318.325 349.378 m
+440.442 349.378 l
+S
+312.075 352.029 m
+434.192 352.029 l
+S
+327.325 357.065 m
+449.442 357.065 l
+S
+327.575 359.716 m
+449.692 359.716 l
+S
+317.825 362.117 m
+439.942 362.117 l
+S
+335.558 367.122 m
+457.675 367.122 l
+S
+313.058 369.507 m
+435.175 369.507 l
+S
+318.808 372.158 m
+440.925 372.158 l
+S
+317.579 404.674 m
+439.696 404.674 l
+S
+322.312 409.179 m
+444.429 409.179 l
+S
+323.812 412.065 m
+445.929 412.065 l
+S
+329.562 414.715 m
+451.679 414.715 l
+S
+329.062 417.116 m
+451.179 417.116 l
+S
+331.812 419.752 m
+453.929 419.752 l
+S
+322.062 422.402 m
+444.179 422.402 l
+S
+328.812 425.053 m
+450.929 425.053 l
+S
+349.812 427.454 m
+471.929 427.454 l
+S
+333.571 429.796 m
+455.688 429.796 l
+S
+334.321 432.182 m
+456.438 432.182 l
+S
+336.321 434.832 m
+458.438 434.832 l
+S
+320.071 437.483 m
+442.188 437.483 l
+S
+316.321 442.519 m
+438.438 442.519 l
+S
+315.571 445.17 m
+437.688 445.17 l
+S
+322.321 447.571 m
+444.438 447.571 l
+S
+330.054 452.576 m
+452.171 452.576 l
+S
+317.554 454.961 m
+439.671 454.961 l
+S
+315.054 457.612 m
+437.171 457.612 l
+S
+318.804 460.012 m
+440.921 460.012 l
+S
+306.054 462.648 m
+428.171 462.648 l
+S
+300.054 465.299 m
+422.171 465.299 l
+S
+291.804 467.95 m
+413.921 467.95 l
+S
+308.054 470.101 m
+430.171 470.101 l
+S
+260.834 543.511 m
+382.951 543.511 l
+S
+246.066 548.016 m
+368.184 548.016 l
+S
+256.066 550.901 m
+378.184 550.901 l
+S
+253.566 553.552 m
+375.684 553.552 l
+S
+230.316 555.952 m
+352.434 555.952 l
+S
+244.566 558.588 m
+366.684 558.588 l
+S
+238.566 561.239 m
+360.684 561.239 l
+S
+230.316 563.89 m
+352.434 563.89 l
+S
+216.566 565.541 m
+338.684 565.541 l
+S
+104.443 572.01 m
+226.575 572.209 l
+S
+98.682 567.48 m
+220.814 567.68 l
+S
+91.688 565.11 m
+213.82 565.31 l
+S
+97.192 561.955 m
+219.324 562.155 l
+S
+73.943 559.517 m
+196.075 559.717 l
+S
+88.199 556.904 m
+210.331 557.103 l
+S
+82.203 554.243 m
+204.335 554.443 l
+S
+73.956 551.578 m
+196.088 551.778 l
+S
+73.707 549.405 m
+195.839 549.605 l
+S
+85.302 539.953 m
+207.434 540.152 l
+S
+79.541 535.423 m
+201.673 535.623 l
+S
+72.547 533.053 m
+194.679 533.253 l
+S
+78.051 529.898 m
+200.183 530.098 l
+S
+54.802 527.46 m
+176.934 527.66 l
+S
+69.058 524.847 m
+191.19 525.046 l
+S
+63.061 522.186 m
+185.194 522.385 l
+S
+54.815 519.521 m
+176.947 519.721 l
+S
+54.566 517.348 m
+176.698 517.547 l
+S
+u
+189.475 196.879 m
+311.592 196.879 l
+S
+176.975 199.265 m
+299.092 199.265 l
+S
+174.475 201.916 m
+296.592 201.916 l
+S
+178.225 204.316 m
+300.342 204.316 l
+S
+165.475 206.952 m
+287.592 206.952 l
+S
+177.475 209.603 m
+299.592 209.603 l
+S
+155.725 212.254 m
+277.842 212.254 l
+S
+167.475 214.404 m
+289.592 214.404 l
+S
+156.908 217.133 m
+279.026 217.133 l
+S
+144.658 219.533 m
+266.776 219.533 l
+S
+161.908 222.169 m
+284.026 222.169 l
+S
+153.908 224.82 m
+276.026 224.82 l
+S
+163.658 226.971 m
+285.776 226.971 l
+S
+152.408 229.121 m
+274.526 229.121 l
+S
+145.925 233.316 m
+268.042 233.316 l
+S
+157.675 235.466 m
+279.792 235.466 l
+S
+147.108 238.195 m
+269.226 238.195 l
+S
+134.858 240.595 m
+256.976 240.595 l
+S
+137.608 243.231 m
+259.726 243.231 l
+S
+144.108 245.882 m
+266.226 245.882 l
+S
+153.858 248.033 m
+275.976 248.033 l
+S
+155.108 231.183 m
+277.226 231.183 l
+S
+103.425 247.816 m
+225.542 247.816 l
+S
+100.175 249.966 m
+222.292 249.966 l
+S
+89.608 252.695 m
+211.726 252.695 l
+S
+77.358 255.095 m
+199.476 255.095 l
+S
+U
+u
+1 g
+0 J
+1 w
+120.001 389.999 m
+170.811 344.713 248.714 349.191 294.001 400.001 c
+339.287 450.811 334.809 528.714 283.999 574.001 c
+233.189 619.287 155.286 614.809 109.999 563.999 c
+64.713 513.189 69.191 435.286 120.001 389.999 c
+f
+202 482 m
+F
+U
+u
+258 302 m
+306.6 267.759 373.759 279.4 408 328 c
+442.241 376.6 430.6 443.759 382 478 c
+333.4 512.241 266.241 500.6 232 452 c
+197.759 403.4 209.4 336.241 258 302 c
+f
+320 390 m
+F
+U
+u
+196 376 m
+252.332 345.072 323.072 365.668 354 422 c
+384.928 478.332 364.332 549.072 308 580 c
+251.668 610.928 180.928 590.332 150 534 c
+119.072 477.668 139.668 406.928 196 376 c
+f
+252 478 m
+F
+U
+u
+106 257 m
+170.064 231.595 242.595 262.936 268 327 c
+293.405 391.064 262.064 463.595 198 489 c
+133.936 514.405 61.405 483.064 36 419 c
+10.595 354.936 41.936 282.405 106 257 c
+f
+152 373 m
+F
+U
+u
+366.001 122 m
+415.706 97.7 475.7 118.296 500 168.001 c
+524.3 217.706 503.704 277.7 453.999 302 c
+404.294 326.3 344.3 305.704 320 255.999 c
+295.7 206.294 316.296 146.3 366.001 122 c
+f
+410 212 m
+F
+U
+u
+227.999 198 m
+267.763 185.85 309.849 208.236 322 247.999 c
+334.15 287.763 311.764 329.849 272.001 342 c
+232.237 354.15 190.151 331.764 178 292.001 c
+165.85 252.237 188.236 210.151 227.999 198 c
+f
+250 270 m
+F
+U
+0 g
+15.75 71.25 m
+24.25 82.75 24.75 84.75 27.75 82.25 c
+30.75 79.75 31.75 81.25 32.75 82.75 c
+33.75 84.25 30.75 86.75 35.75 88.75 c
+40.75 90.75 41.25 91.75 43.25 89.75 c
+45.25 87.75 39.25 89.25 50.25 88.75 c
+61.25 88.25 70.25 81.75 74.25 75.25 c
+78.25 68.75 77.75 67.25 75.25 63.25 c
+72.75 59.25 68.25 56.75 72.25 57.25 c
+76.25 57.75 75.75 60.75 77.75 56.75 c
+79.75 52.75 80.25 51.25 79.25 49.25 c
+78.25 47.25 74.25 46.75 81.25 46.25 c
+88.25 45.75 91.75 37.557 91.75 40.25 c
+15.752 40.248 l
+15.75 71.25 l
+f
+340.75 55.5 m
+F
+u
+u
+3 w
+280.774 44.223 m
+567.893 44.223 l
+S
+280.774 48.728 m
+567.893 48.728 l
+S
+280.774 53.734 m
+567.893 53.734 l
+S
+U
+u
+280.774 58.739 m
+567.893 58.739 l
+S
+280.774 63.245 m
+567.893 63.245 l
+S
+280.774 68.251 m
+567.893 68.251 l
+S
+U
+u
+280.774 73.257 m
+567.893 73.257 l
+S
+280.774 78.263 m
+567.893 78.263 l
+S
+U
+U
+0.8 g
+0.2 w
+243 252 m
+323 235 l
+346 273 l
+368 248 l
+376 247 376 248 V
+377 174 380.5 121 330.5 40 C
+90.5 40 91.5 40 V
+138.5 129 163 162 214 200 C
+236 229 234.527 240.11 238 254 c
+240 262 243 252 y
+b
+0.5 g
+359.5 485 m
+389.267 485 402.5 486.25 415.75 489 c
+429 491.75 435 493.25 439 493.5 c
+443 493.75 490.398 537.797 502.5 562 c
+507 571 514.5 577 517.5 579.5 c
+520.5 582 501.5 591 y
+428 512 428 512.5 v
+428 513 356.5 510 356 509.5 c
+355.5 509 351 488 y
+359 485 359.5 485 v
+b
+0.7 g
+370 496.5 m
+368 480.5 365.5 472.5 364.5 471.5 C
+329.5 476.5 l
+323.5 489.5 l
+370 496.5 l
+b
+0.5 g
+352.75 494 m
+380 493.25 399.626 496.75 407.5 499 c
+418 502 424.586 497.135 432.75 505.5 c
+453 526.25 473.5 544.5 496.5 586.5 C
+473.5 590 473.5 590.5 V
+456 571.5 443 563.5 434 558 c
+425 552.5 416 544 408.5 534.5 C
+399 533 379.5 537.5 364 537.5 c
+348.5 537.5 352.75 494 y
+b
+1 g
+500 583 m
+500.5 577.098 517 573.5 520.5 572 c
+524 570.5 526.353 568.989 526.5 579 c
+526.675 590.992 541 586 539 624 C
+538.5 624 506 628 y
+499.958 583.498 500 583 v
+b
+0 g
+1 J
+3 w
+562 629 m
+343 645 217 644 77 601 C
+52 576 L
+59.5 562 80.132 560.877 87 589 c
+89.513 599.292 87 597 101 601 c
+108.323 603.092 265 654 561 617 C
+562 629 l
+f
+1 G
+0 J
+0.7 w
+305 634 m
+391.5 636.5 415 635 473 632 c
+S
+0.5 w
+213 626.5 m
+153.5 619 125.925 611.699 90.75 602.5 c
+78.654 599.337 82.567 597.884 82.5 592 c
+82.395 582.717 73.75 571 59 572.5 c
+S
+1 g
+0 G
+1 w
+73 595.25 m
+79.25 592.5 76.25 574.75 57.25 580 C
+73 595.25 l
+f
+0.5 g
+0.2 w
+312 574.25 m
+311.25 570.5 310.687 571.687 306.187 569.187 C
+307.687 564.187 311.106 565.66 304.5 561.5 c
+302.594 560.299 305.598 556.561 305.75 555.5 c
+306.038 553.485 304.629 548.098 297 548.5 c
+292.25 548.75 255.5 536 y
+229.5 608.5 l
+224 650 224.5 650 v
+248.101 650 273.345 678.918 298 655.5 c
+324.857 629.99 316.981 613.501 316.75 612.875 c
+313.346 603.644 313.238 604.937 314.75 597.375 c
+316.88 586.725 317.016 588.834 318.625 584.75 C
+320.25 581.875 318.625 580.375 y
+316.689 578.236 313.081 579.809 310.375 579 c
+307.013 577.994 312 574.25 y
+B
+0 g
+0.5 w
+288.5 456 m
+S
+0.2 w
+211 511 m
+194.5 518.5 187 520.5 170.5 500 C
+154.5 498.5 149.5 501 131.5 479.5 C
+151 477.5 140 475 161 460 c
+182 445 190.5 436.5 212 461 C
+224.5 458 229 454.5 238.5 447 C
+238 446.5 237 500.5 y
+211 511 l
+f
+1 g
+207.5 526.5 m
+206 514.5 204 506 236 490.5 C
+242.5 509.5 l
+207.5 526.5 l
+b
+0 g
+1 w
+294.464 627.589 m
+288.571 618.522 284.821 617.313 280 615.5 c
+275.179 613.686 271.429 605.224 277.857 587.089 C
+274.107 586.485 275.179 585.88 275.714 582.858 C
+271.429 599.179 270.357 606.433 259.643 609.455 c
+248.929 612.477 245.714 589.507 247.321 566.537 C
+228.572 554.448 L
+224.639 578.851 235.956 576.38 212.5 600.992 c
+194.17 620.226 195.893 654.791 225.357 658.418 C
+223.214 667.485 233.929 678.97 259.107 677.761 c
+284.286 676.552 281.071 667.485 Y
+302.5 667.485 334.964 665.942 301.429 614.895 C
+306.25 639.679 303.571 643.306 296.607 646.933 C
+299.286 634.239 294.464 627.589 y
+f
+0.7 g
+0.2 w
+207.5 524.5 m
+214.75 519.25 241.5 509 y
+239 504.5 l
+232 503 214.5 508.75 206.75 519 C
+207 522.5 207.5 524.5 y
+b
+1 g
+298 546.5 m
+272.625 574.625 248.5 596 195.5 568.5 C
+196.26 524.417 214.492 504.333 239.5 510.5 C
+298 546.5 l
+b
+0.8 g
+351.5 542 m
+367 540 L
+358.5 509.5 357 489.5 357 482 C
+323.5 482.5 295.5 485.5 284.5 477.5 c
+298.5 468.5 l
+299 457 l
+270.5 451 l
+238.5 483.5 l
+241 513.5 l
+250.5 538 252.5 547.5 282.5 550 C
+306.251 550 334.454 541.702 343.687 542.187 C
+342.576 538.175 346.737 538.055 351.5 542 c
+b
+0 g
+1 w
+333.25 484.75 m
+343.25 458.25 371.5 466 349 418.5 C
+359 348.5 378 357 363 336 C
+358.5 333 359 333 v
+359.5 333 353 328 359 327.5 c
+365 327 371 316.5 373.5 253.5 C
+381 245.5 l
+371 221 371 220.5 V
+360.5 247 358 253 351 261.5 C
+340 238 331.5 220.5 328.5 211.5 C
+301 229.5 265 250 232.5 244.5 C
+247.5 287 246 299.5 275 320.5 C
+270 331.5 268.689 334.634 265.75 336.25 c
+255.75 341.75 261.891 340.771 251 375 c
+247.5 386 249.5 384 255.5 399 C
+252.5 397 253.5 401 253.5 402.5 c
+253.5 404 252.057 400.023 251 402.5 c
+235 440 219.5 489.5 249.5 534 C
+238.5 503.5 242.102 477.13 260 463 c
+269.5 455.5 278.75 453.25 291 457.25 C
+297.5 461 299.549 465.787 282 476.75 C
+292.5 487.5 333.25 484.75 y
+f
+457.25 576.25 m
+454.936 574.233 453.51 595.217 479.25 583 C
+495.651 573.321 495.931 560.263 482.5 560.5 C
+486.25 566 491.682 565.465 478.5 575 c
+463.444 585.891 460.318 578.924 457.25 576.25 c
+f
+1 g
+460.75 581.5 m
+463.387 583.699 467.528 583.937 470.5 583.375 c
+473.752 582.76 473.75 581.75 Y
+461.735 583.841 458.891 579.95 460.75 581.5 c
+f
+0 g
+310.393 647.785 m
+329.089 651.66 328.75 623.692 320.178 607.976 C
+319.107 621.274 316.428 636.386 310.536 635.782 c
+304.643 635.177 310.393 647.785 y
+f
+284.286 663.858 m
+286.964 677.157 280.536 689.246 281.071 689.246 C
+289.107 677.761 288.036 665.672 y
+284.286 663.858 l
+f
+0.2 w
+274.643 683.201 m
+278.929 678.97 280 668.694 279.464 665.672 c
+S
+276.25 686.224 m
+284.393 677.036 283.75 662.045 y
+S
+1 w
+297.679 661.44 m
+312.602 661.44 312.143 677.157 310.536 680.784 C
+308.929 672.321 305.179 666.276 292.857 664.463 C
+297.679 661.44 l
+f
+0.2 w
+295 661.44 m
+298.75 666.276 302.5 675.343 294.464 683.201 c
+S
+300.357 681.992 m
+304.265 669.255 303.814 670.807 292.321 656.604 c
+S
+311.821 649.078 m
+321.464 649.078 330.571 646.66 329.5 627.921 c
+S
+307.536 650.892 m
+316.268 651.33 319.057 653.025 326.821 646.056 c
+330.446 642.802 331.1 637.618 331.107 637.593 c
+S
+304.643 665.067 m
+305.629 663.874 321.031 667.072 321.304 651.569 c
+S
+0.5 w
+311.071 639.679 m
+317.893 638.968 312.696 617.332 v
+S
+1 w
+313.375 612.875 m
+315.455 614.262 313.5 617.375 297.125 615.375 C
+310.375 616.625 311.875 611.875 313.375 612.875 c
+f
+1 g
+308.5 604.875 m
+309.833 600.875 309.125 601.25 307.375 599 C
+302.25 600.625 303.25 599.875 299 602.5 C
+304.25 604.75 308.375 605.25 308.5 604.875 c
+f
+0 g
+307.5 604.437 m
+305.463 602.811 305.481 601.49 307.375 598.937 C
+309.261 601.307 309.489 602.172 308.562 605.062 C
+308.562 604.937 308.191 604.989 307.5 604.437 c
+f
+0.2 w
+305.625 583.75 m
+304.687 582.562 306.5 579.375 308.875 579.75 c
+S
+1 w
+311.125 574.5 m
+310.25 573.898 310 573.437 304.937 569.312 C
+306.229 564.611 308.063 564.014 308.312 564.562 C
+309.775 566.476 307.663 569.565 306.687 569.75 C
+311.812 571.75 311.625 572.5 312 574.25 C
+311.687 574.75 311.176 574.535 311.125 574.5 c
+f
+298.625 603 m
+302 600.437 304.294 599.524 307.812 598.937 c
+308.187 598.875 308.562 598.5 308.687 597.875 c
+S
+297.5 602.25 m
+299.939 602.851 307.687 603.062 311.75 607.812 C
+307.812 606 297.011 602.129 297.5 602.25 c
+f
+213.5 576.125 m
+218.674 549.92 230.862 532.355 245.5 526.5 C
+243.75 514.5 209.75 494.25 195.5 568.5 C
+203.75 572.25 213.347 576.901 213.5 576.125 c
+f
+0.2 w
+343.375 541.75 m
+333.375 534.75 318.25 525.5 312 521.25 c
+S
+351.562 541.937 m
+337.936 530.579 327.2 525.581 313.25 517.75 c
+S
+0.3 w
+312.75 495 m
+291.75 483.5 276.25 476 274.25 466 c
+S
+0.5 w
+229 580.75 m
+235.5 571 241.25 554.75 245.75 528 c
+S
+1 w
+235 581 m
+246 555.75 246.75 537.75 245.75 526 C
+252.125 560.5 243.75 567.75 239.75 581.5 C
+240 581.5 237 581.75 235 581 C
+f
+0.7 g
+0.2 w
+248.625 580.5 m
+253.169 564.605 256.75 553.75 250.25 535.75 C
+257.5 552.75 259.125 558.937 252.875 579.687 C
+251.029 580.149 248.517 580.879 248.625 580.5 c
+b
+0 g
+1 w
+258.25 577.75 m
+262.047 567.879 262.5 552.5 259.25 544.25 C
+267.75 548.25 275 549.75 278.25 549.75 C
+281.75 555.25 282.75 556.75 279.5 565.25 C
+270.06 573.13 257.909 578.635 258.25 577.75 c
+f
+207.5 524.5 m
+F
+207.25 514.75 m
+207.185 514.86 228.75 497.5 238 500.75 C
+236 494.5 l
+225 498 213.924 503.454 207.25 514.75 c
+f
+1 g
+0.2 w
+191 516 m
+175.472 497.418 168.5 492 171.5 453 C
+185 443.5 189 443.5 200 450.5 C
+186.5 469.5 182 491 198.5 515.5 C
+194.5 516 191.339 516.406 191 516 c
+b
+201 515 m
+194 499 187 484 203.5 453 C
+206.5 455 211.5 460.5 212 461 C
+203.5 480.5 193.5 501.5 206 510.5 C
+205 499.5 210.5 490.5 232.5 473.5 C
+232.5 483 231.5 482.5 233 492 C
+221 498 210 505 208 512.5 C
+201 515 l
+b
+0 g
+1 G
+0.5 w
+268 442.5 m
+253.5 402.5 l
+S
+269.5 435.5 m
+258.5 407 258.5 407.5 v
+S
+0.5 G
+0.4 w
+293.5 480.5 m
+297.5 463.5 298.5 460.5 289 445.5 c
+S
+1 G
+1 J
+0.3 w
+349.125 418.125 m
+338.393 403.978 348.387 416.158 341.625 408.875 c
+S
+u
+1 g
+0 G
+0 J
+0.2 w
+336.038 340.015 m
+338.267 329.694 L
+342.937 338.843 L
+340.707 349.164 L
+336.038 340.015 L
+b
+339.487 339.429 m
+B
+U
+u
+328.791 340.569 m
+331.562 330.38 L
+335.743 339.762 L
+332.972 349.952 L
+328.791 340.569 L
+b
+332.267 340.166 m
+B
+U
+u
+321.758 340.67 m
+325.133 330.664 L
+328.746 340.28 L
+325.37 350.286 L
+321.758 340.67 L
+b
+325.252 340.475 m
+B
+U
+u
+314.504 340.97 m
+317.88 330.964 L
+321.492 340.58 L
+318.117 350.586 L
+314.504 340.97 L
+b
+317.998 340.775 m
+B
+U
+u
+u
+307.24 340.468 m
+311.982 331.033 L
+314.214 341.059 L
+309.473 350.494 L
+307.24 340.468 L
+b
+310.727 340.764 m
+B
+U
+u
+300.016 339.751 m
+304.757 330.316 L
+306.99 340.342 L
+302.249 349.777 L
+300.016 339.751 L
+b
+303.503 340.047 m
+B
+U
+U
+u
+u
+292.985 339.2 m
+298.349 330.104 L
+299.903 340.258 L
+294.54 349.353 L
+292.985 339.2 L
+b
+296.444 339.729 m
+B
+U
+u
+285.826 338 m
+291.189 328.904 L
+292.744 339.057 L
+287.38 348.153 L
+285.826 338 L
+b
+289.285 338.529 m
+B
+U
+U
+u
+278.742 336.229 m
+285.413 328.042 L
+285.423 338.314 L
+278.753 346.501 L
+278.742 336.229 L
+b
+282.083 337.272 m
+B
+U
+u
+272.228 332.392 m
+279.743 324.974 L
+278.644 335.186 L
+271.13 342.604 L
+272.228 332.392 L
+b
+275.437 333.789 m
+B
+U
+0 g
+1 G
+1 w
+266.25 335.5 m
+276.25 351.5 284.659 350 343 350 c
+364 350 363 336 y
+S
+271 321 m
+294 332 309 335 362 324 c
+S
+u
+1 g
+0 G
+0.2 w
+350.823 325.912 m
+364.33 322.302 L
+361.658 347.078 L
+348.151 350.689 L
+350.823 325.912 L
+b
+356.24 336.495 m
+B
+U
+0 g
+1 w
+274 347.5 m
+281.5 351.5 280.229 357.581 311 338 c
+316.5 334.5 322.5 338 351 357.5 C
+282 360 l
+274 347.5 l
+f
+1 G
+0.5 w
+269.25 355.75 m
+277.75 353.25 284.25 352.5 288.75 349.75 c
+S
+353.25 358.25 m
+347.25 354 345.5 353.5 339.75 349.5 c
+S
+0.3 w
+355.25 272.75 m
+359.75 281.5 361.25 285 363.25 290.75 c
+S
+0.5 G
+0.5 w
+354 219 m
+339 195 327 176 317 166 c
+S
+323 197 m
+310 150 308 135 235 48 c
+S
+1 w
+241 241.5 m
+232 227.5 215.231 198.443 215 198 c
+192.581 155 178 110 164 71 c
+S
+0 G
+0.2 w
+265.394 600.822 m
+263.576 606.114 262.122 612.994 253.035 607.173 C
+250.126 603.468 249.763 601.704 249.763 596.589 c
+249.763 591.473 254.307 592.179 257.76 587.24 c
+261.213 582.301 266.484 579.302 267.029 588.475 c
+S
+0.3 g
+260.668 605.409 m
+262.486 601.352 261.94 599.941 257.578 597.824 c
+253.216 595.707 257.76 591.473 260.305 592.355 c
+262.849 593.237 263.394 592.532 264.303 591.65 c
+265.212 590.768 266.666 591.826 264.667 594.119 c
+262.667 596.413 259.759 593.943 261.032 597.471 c
+262.304 600.999 260.668 605.409 y
+b
+0 g
+257.578 606.644 m
+254.125 605.056 251.58 604.174 251.58 598.177 c
+251.58 592.179 258.487 590.415 259.214 588.651 c
+S
+u
+1 g
+257.397 584.594 m
+258.601 581.671 262.019 580.25 265.03 581.419 c
+268.041 582.588 269.506 585.905 268.302 588.827 c
+267.097 591.75 263.679 593.172 260.668 592.003 c
+257.657 590.833 256.192 587.516 257.397 584.594 c
+b
+262.849 586.711 m
+B
+U
+u
+0.2 g
+1 w
+258.487 586.358 m
+263.213 582.477 L
+267.211 587.063 L
+262.486 590.944 L
+258.487 586.358 L
+f
+262.849 586.711 m
+F
+U
+0 g
+309.25 579.875 m
+310.75 580.5 313.25 583.125 314.625 581 c
+F
+1 g
+307.964 565.926 m
+307.88 566.015 306.794 566.513 307.22 566.682 c
+307.647 566.851 307.68 566.599 307.935 566.639 C
+307.924 566.13 307.971 566.31 307.964 565.926 c
+f
+510 104 m
+509.564 104.895 511.5 89 495.5 74.5 C
+495.5 68 l
+506 79 518.582 86.358 510 104 c
+f
+0 g
+0.2 w
+403.75 534.25 m
+413.25 533.75 415.75 534.25 417.75 534.75 c
+S
+1 G
+0.3 w
+538.5 629 m
+542 625 547.5 620 y
+S
+548.75 629.25 m
+552.25 625.25 557.75 620.25 y
+S
+0 G
+0.2 w
+518.5 587.5 m
+522.5 586 526 587.5 527 587.5 c
+S
+514 617.5 m
+518 614 518.5 611.5 520 607.5 c
+S
+528.25 613.75 m
+533.25 615.25 532.5 615.5 538.25 614.25 c
+S
+1 g
+538 637.5 m
+537.25 618 533 617.5 531.25 617.5 c
+529.5 617.5 528.235 615.255 528.5 622.5 c
+529.25 643 528.775 643.326 534.25 642.75 c
+539 642.25 539 642.25 540.5 630.75 C
+538 631 l
+538 629 538 631.25 v
+538 633.5 538 637.5 Y
+b
+0.7 g
+507.5 650.75 m
+510 648.5 510.25 645.75 511.75 643.25 c
+513.25 640.75 508.5 638.25 508.5 638 c
+508.5 637.75 507.5 650.75 y
+b
+1 g
+529.25 639.25 m
+528.5 643 527 642.75 524 642.75 c
+521 642.75 519.75 644 519.5 632.25 C
+519.75 638 519.75 641 v
+519.75 644 518.75 644.25 515.25 644.25 c
+511.75 644.25 511.75 646 509.25 641.25 c
+506.75 636.5 505.75 633.25 506 633.25 c
+506.25 633.25 509.75 628.25 Y
+511.5 620.25 512.75 619.75 515.5 619.5 c
+518.25 619.25 520.25 618.25 519.5 623.5 C
+521 618.25 521 617.75 524.75 617 c
+528.5 616.25 528.5 618.25 528.5 622.5 c
+528.5 626.75 529.25 639.25 y
+b
+507.75 636.75 m
+512.687 638.231 515.604 641 515.25 641 C
+517.839 637.469 517.494 629.281 508.75 625.5 C
+508.75 625.25 502 635 502.25 634.75 c
+502.5 634.5 507.75 636.75 y
+b
+493.5 571.5 m
+495.171 563.425 503.634 565.498 503.5 576.25 c
+503.25 596.25 515.75 586.25 509 636.75 c
+508.301 641.977 510 650.75 506.5 651.5 c
+501.514 652.568 500.436 652.26 499.25 644.75 c
+498.5 640 496.5 646.25 496 648.5 c
+495.5 650.75 493.75 651 490.75 650.25 c
+487.75 649.5 488.253 648.665 487.5 645.5 c
+486.194 640.013 486.75 641.75 484.5 645.5 c
+482.39 649.016 481.306 648.011 477.5 647.25 c
+475 646.75 474.784 644.479 475.25 640.75 c
+475.5 638.75 474 642.25 472.5 644.5 c
+471 646.75 469.25 645.5 466.5 645.5 c
+463.75 645.5 463.25 641.003 463.5 635.5 c
+463.511 635.25 463 626.25 y
+449.75 627.25 l
+459.25 618.5 465.606 612.863 468.25 597 c
+468.75 594 468 592.25 470 592.75 C
+459.719 593.497 459.195 585.398 461 586 c
+466.25 587.75 471.75 589.25 476.75 587 c
+481.75 584.75 486.25 584.25 489.5 586.25 C
+490.25 582.75 492 578.75 493.5 571.5 c
+b
+0 g
+486.25 592.5 m
+489 595.25 492.117 593.078 492.25 592.75 c
+494.972 586.028 477 591.75 467.25 593 c
+S
+0.4 w
+470 592.75 m
+474.25 595.75 475 596 481.5 595.75 c
+S
+1 J
+2.5 w
+477.75 630 m
+478.5 620.75 l
+S
+479.25 617.5 m
+480 610.5 l
+S
+480.25 607.75 m
+481 600.25 481 600.5 v
+S
+487.5 631.75 m
+487.75 623.5 l
+S
+487.75 620.75 m
+487.75 612.5 l
+S
+488 609.25 m
+488.25 609.25 487.75 602.5 y
+S
+498 630.75 m
+497.25 623.75 l
+S
+496.75 620.75 m
+495.5 612.5 l
+S
+495.25 609.5 m
+493.75 602 l
+S
+0 J
+0.2 w
+465.5 637.25 m
+464.5 629.75 461.25 628.75 464.75 617 c
+S
+0.5 w
+502 589.25 m
+503.25 585 503.5 583.25 503.5 577 c
+S
+1 g
+1 w
+521.949 86.694 m
+521.637 87.353 523.021 75.657 511.583 64.988 C
+511.583 60.205 l
+519.089 68.299 528.083 73.713 521.949 86.694 c
+f
+553.457 99.673 m
+553.091 100.449 554.713 86.67 541.309 74.1 C
+541.309 68.465 l
+550.105 78.001 560.646 84.379 553.457 99.673 c
+f
+482.74 95.04 m
+482.429 95.699 483.812 84.003 472.375 73.334 C
+472.375 68.551 l
+479.881 76.645 488.875 82.059 482.74 95.04 c
+f
+450.924 87.63 m
+450.69 88.028 451.731 80.968 443.129 74.528 C
+443.129 71.641 l
+448.774 76.527 455.538 79.795 450.924 87.63 c
+f
+0 g
+308 61.5 m
+N
+3 w
+16.002 40.373 m
+568.002 40.127 L
+567.748 716.565 L
+S
+u
+15.815 40.248 m
+567.815 40.002 L
+567.748 716.565 L
+15.998 716.81 L
+15.815 40.248 L
+s
+U
+%%Trailer
+_E end
+showpage
diff --git a/macros/xetex/latex/hithesis/figures/hitlogo.eps b/macros/xetex/latex/hithesis/figures/hitlogo.eps
new file mode 100644
index 0000000000..251af0e1ba
--- /dev/null
+++ b/macros/xetex/latex/hithesis/figures/hitlogo.eps
@@ -0,0 +1,382 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:27:21 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 98 590 565 677
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 98 590 565 677
+%%EndPageSetup
+q 98 590 467 87 rectclip q
+0 g
+532.574 596.495 m 527.34 601.503 l 532.105 601.257 l 536.867 601.015 l
+537.176 605.284 l 537.57 610.765 535.727 611.605 529.727 608.679 c 525.621
+ 606.675 525.082 606.632 522.34 608.054 c 519.105 609.734 518.207 613.554
+ 521.047 613.554 c 526.309 613.554 535.574 615.941 536.098 617.433 c 536.414
+ 618.331 537.324 619.831 538.117 620.761 c 539.957 622.917 538.949 624.589
+ 535.809 624.589 c 534.309 624.589 533.371 625.167 533.371 626.093 c 533.371
+ 627.132 534.414 627.597 536.746 627.597 c 538.602 627.597 540.684 628.273
+ 541.367 629.101 c 542.051 629.929 543.152 630.605 543.816 630.605 c 545.504
+ 630.605 554.359 636.612 554.359 637.753 c 554.359 640.003 551.082 639.741
+ 548.531 637.292 c 546.605 635.437 545.172 634.859 543.562 635.28 c 542.25
+ 635.624 540.578 635.269 539.586 634.433 c 538.641 633.64 535.949 632.155
+ 533.602 631.136 c 529.934 629.542 528.992 629.468 526.855 630.616 c 525.492
+ 631.351 524.375 632.526 524.375 633.237 c 524.375 634.55 530.199 636.609
+ 533.93 636.62 c 535.062 636.624 536.859 637.276 537.926 638.069 c 539.75
+ 639.425 539.766 639.616 538.18 641.234 c 536.59 642.855 536.336 642.855
+ 533.902 641.253 c 529.945 638.651 527.355 641.421 531.121 644.23 c 532.781
+ 645.468 532.785 645.62 531.133 647.3 c 529.477 648.987 529.316 648.98 527.637
+ 647.112 c 526.668 646.034 524.629 643.234 523.109 640.89 c 520.074 636.202
+ 519.285 635.859 516.941 638.214 c 515.5 639.659 515.535 640.05 517.367
+642.632 c 519.605 645.784 519.863 648.249 518.371 652.194 c 517.082 655.597
+ 517.922 657.003 520.438 655.651 c 522.004 654.812 522.375 653.526 522.375
+ 648.929 c 522.375 644.753 522.672 643.542 523.488 644.362 c 525.016 645.898
+ 524.98 659.335 523.438 664.03 c 522.742 666.136 522.426 668.109 522.73
+668.413 c 523.68 669.37 528.34 667.757 530.293 665.796 c 532.059 664.023
+ 532.078 663.616 530.602 658.296 c 529.742 655.202 529.355 652.359 529.738
+ 651.976 c 530.117 651.593 531.637 652.491 533.113 653.972 c 535.215 656.081
+ 535.535 656.925 534.582 657.878 c 532.492 659.98 533.246 660.816 536.652
+ 660.175 c 539.746 659.593 540.133 659.859 543.301 664.769 c 545.152 667.632
+ 546.953 671.386 547.305 673.109 c 548.117 677.101 550.496 677.569 552.109
+ 674.058 c 554.223 669.452 553.566 667.433 548.82 663.929 c 544.594 660.808
+ 543.32 658.456 545.219 657.28 c 545.688 656.991 547.113 657.866 548.391
+ 659.23 c 549.664 660.589 551.164 661.706 551.719 661.706 c 552.273 661.706
+ 553.707 662.624 554.898 663.749 c 556.094 664.878 558.707 666.066 560.711
+ 666.39 c 563.699 666.878 564.352 666.679 564.352 665.28 c 564.352 662.866
+ 562.582 659.78 558.711 655.433 c 556.867 653.362 555.355 651.331 555.355
+ 650.917 c 555.355 650.507 554.223 648.847 552.836 647.23 c 549.637 643.499
+ 550.965 641.87 555.352 644.148 c 559.18 646.136 563.352 645.437 563.352
+ 642.804 c 563.352 640.519 555.363 633.476 551.09 631.995 c 548.676 631.159
+ 547.922 630.343 548.094 628.757 c 548.223 627.589 547.203 624.968 545.824
+ 622.929 c 542.656 618.245 543.805 616.956 549.211 619.128 c 553.934 621.023
+ 556.355 620.526 556.355 617.655 c 556.355 615.093 554.867 614.226 549.359
+ 613.577 c 544.863 613.05 l 545.203 605.913 l 545.523 599.101 545.395 598.612
+ 542.348 595.132 c 540.594 593.124 538.855 591.484 538.48 591.484 c 538.109
+ 591.484 535.449 593.737 532.57 596.495 c h
+545.535 641.296 m 547.727 643.284 547.891 644.651 545.934 644.651 c 544.055
+ 644.651 541.191 641.734 541.914 640.558 c 542.719 639.253 543.449 639.401
+ 545.535 641.296 c h
+544.215 645.972 m 545.816 647.913 546.102 653.878 544.613 654.405 c 543.871
+ 654.671 543.363 653.995 543.363 652.73 c 543.363 651.562 542.691 650.347
+ 541.867 650.03 c 539.598 649.155 540.055 644.651 542.41 644.651 c 542.801
+ 644.651 543.613 645.245 544.215 645.972 c h
+551.395 649.917 m 553.59 653.487 554.887 657.499 554.098 658.288 c 553.82
+ 658.566 552.422 658.499 550.988 658.136 c 548.836 657.593 548.398 656.929
+ 548.488 654.327 c 548.551 652.593 548.27 650.155 547.863 648.913 c 546.742
+ 645.472 549.066 646.132 551.395 649.917 c h
+538.367 650.702 m 538.367 653.507 535.695 654.288 533.355 652.163 c 530.906
+ 649.937 531.66 648.663 535.43 648.663 c 537.715 648.663 538.367 649.116
+ 538.367 650.702 c h
+282.875 600.261 m 277.797 605.624 277.324 605.894 276.215 604.112 c 272.863
+ 598.734 269.059 596.937 267.828 600.155 c 267.441 601.167 267.922 602.335
+ 269.066 603.175 c 270.871 604.503 270.859 604.601 268.73 606.097 c 266.473
+ 607.683 265.711 612.261 267.395 614.105 c 268.73 615.566 269.637 620.386
+ 268.684 620.976 c 268.219 621.265 266.312 619.921 264.449 617.987 c 262.059
+ 615.511 260.328 614.562 258.594 614.765 c 255.715 615.109 254.789 612.874
+ 254.629 605.21 c 254.535 600.519 253.203 596.495 251.746 596.503 c 251.355
+ 596.503 249.742 598.905 248.168 601.839 c 245.32 607.136 245.312 607.202
+ 247.07 610.609 c 248.27 612.944 249.082 617.749 249.594 625.585 c 250.008
+ 631.933 250.805 638.308 251.363 639.753 c 252.125 641.714 251.977 643.499
+ 250.781 646.843 c 249.219 651.198 249.508 654.683 251.426 654.683 c 253.09
+ 654.683 258.27 649.773 258.812 647.679 c 259.164 646.339 258.359 644.612
+ 256.426 642.53 c 252.633 638.456 251.941 635.39 253.887 631.269 c 255.355
+ 628.167 255.328 627.573 253.5 622.737 c 252.418 619.882 251.531 616.87
+251.531 616.05 c 251.531 613.741 253.32 614.284 254.043 616.812 c 255.953
+ 623.487 259.816 632.554 260.559 632.093 c 261.027 631.804 260.547 629.655
+ 259.492 627.323 c 257.395 622.687 256.992 619.573 258.484 619.573 c 259.879
+ 619.573 271.633 631.741 272.492 634.069 c 274.375 639.183 269.77 642.163
+ 265.789 638.409 c 263.043 635.819 264.242 633.862 267.5 635.612 c 270.496
+ 637.218 271.133 636.206 269.094 633.085 c 266.918 629.749 263.18 630.019
+ 262.684 633.542 c 262.496 634.882 261.68 636.991 260.871 638.23 c 259.566
+ 640.226 259.578 640.835 260.961 643.523 c 261.824 645.191 262.527 647.554
+ 262.527 648.769 c 262.527 650.909 262.59 650.921 264.5 649.191 c 265.586
+ 648.202 266.754 646.511 267.094 645.429 c 267.617 643.773 268.297 643.566
+ 271.367 644.109 c 273.375 644.468 276.207 645.612 277.656 646.659 c 280.102
+ 648.421 281.516 648.39 281.516 646.566 c 281.516 646.151 280.379 644.452
+ 278.992 642.796 c 277.355 640.847 276.852 639.546 277.555 639.112 c 279.039
+ 638.191 282.02 641.073 284.074 645.425 c 285.672 648.804 285.859 648.909
+ 287.145 647.148 c 289.727 643.601 288.723 641.331 282.492 636.651 c 279.207
+ 634.179 276.52 631.585 276.52 630.882 c 276.52 629.14 277.234 629.265 281.129
+ 631.679 c 282.973 632.823 284.887 633.503 285.391 633.191 c 285.91 632.87
+ 286.07 627.23 285.766 620.124 c 285.227 607.624 l 287.703 606.491 l 289.066
+ 605.866 290.965 604.019 291.93 602.386 c 293.543 599.64 293.555 599.23
+292.07 596.952 c 291.188 595.601 289.984 594.491 289.402 594.491 c 288.816
+ 594.491 285.883 597.089 282.875 600.261 c h
+273.02 608.37 m 273.02 610.183 271.062 609.855 270.676 607.972 c 270.461
+ 606.929 270.836 606.468 271.676 606.749 c 272.414 606.999 273.02 607.726
+ 273.02 608.37 c h
+282.852 607.202 m 283.219 607.569 282.781 608.691 281.883 609.687 c 280.688
+ 611.011 280.215 613.609 280.133 619.3 c 280.035 625.71 279.75 627.023 278.516
+ 626.687 c 277.691 626.46 276.098 626.202 274.969 626.116 c 271.961 625.882
+ 270.523 624.722 270.523 622.523 c 270.523 620.179 271.371 620.081 274.23
+ 622.089 c 276.879 623.952 277.211 623.409 277.312 617.042 c 277.441 609.073
+ 280.066 604.405 282.852 607.202 c h
+273.762 615.073 m 273.055 618.792 271.52 619.167 271.52 615.62 c 271.52
+ 613.698 272.031 612.55 272.883 612.55 c 273.797 612.55 274.086 613.378
+273.762 615.073 c h
+394.883 598.015 m 393.098 602.304 391.578 602.413 388.113 598.507 c 386.641
+ 596.851 384.613 595.495 383.605 595.495 c 381.195 595.495 378.461 598.601
+ 378.461 601.335 c 378.461 603.222 378.98 603.487 382.387 603.351 c 386.152
+ 603.206 391.453 605.589 391.453 607.433 c 391.453 607.905 390.789 608.847
+ 389.973 609.523 c 387.883 611.269 389.734 614.339 393.125 614.741 c 395.992
+ 615.081 397.672 617.566 395.035 617.566 c 393.027 617.566 392.965 619.448
+ 394.945 620.21 c 395.766 620.526 396.172 621.222 395.844 621.753 c 395.516
+ 622.284 394.617 622.476 393.852 622.179 c 392.133 621.519 389.453 622.46
+ 389.453 623.726 c 389.453 624.237 391.027 625.589 392.953 626.726 c 396.656
+ 628.921 397.723 631.148 394.59 630.151 c 393.52 629.808 392.199 630.202
+ 391.473 631.085 c 389.547 633.413 388.578 633.023 382.863 627.597 c 379.957
+ 624.839 376.715 622.581 375.656 622.581 c 372.305 622.581 368.316 626.507
+ 368.66 629.468 c 368.938 631.862 369.391 632.124 373.461 632.249 c 376.531
+ 632.343 380.18 633.566 384.957 636.101 c 394.23 641.026 394.789 641.616
+ 393.477 645.089 c 392.566 647.491 392.199 647.694 390.832 646.558 c 389.961
+ 645.831 388.855 644.202 388.375 642.937 c 387.219 639.886 383.684 639.886
+ 382.922 642.937 c 382.605 644.198 382.816 646.472 383.391 647.991 c 384.277
+ 650.327 384.734 650.589 386.379 649.706 c 387.66 649.019 389.188 648.991
+ 390.844 649.624 c 393.203 650.526 393.383 651.093 393.66 658.405 c 393.945
+ 666.054 394.008 666.226 396.637 666.53 c 400.406 666.968 403.234 662.734
+ 401.59 659.109 c 399.938 655.476 400.156 654.683 402.805 654.683 c 404.324
+ 654.683 406.367 656.109 408.551 658.691 c 410.863 661.421 412.75 662.698
+ 414.488 662.702 c 420.211 662.714 421.387 656.741 416.188 654.066 c 414.402
+ 653.148 412.633 651.917 412.258 651.331 c 410.691 648.894 412.91 648.859
+ 419.168 651.222 c 424.895 653.386 426.004 653.534 427.223 652.312 c 429.281
+ 650.245 427.848 646.894 424.637 646.273 c 423.152 645.987 418.617 645.484
+ 414.562 645.155 c 407.32 644.566 399.117 641.452 395.652 637.976 c 393.398
+ 635.714 395.266 634.98 398.512 636.851 c 401.117 638.351 402.941 637.671
+ 400.453 636.128 c 399.906 635.788 398.992 634.632 398.418 633.562 c 397.598
+ 632.019 397.703 631.609 398.922 631.609 c 399.77 631.609 401.816 633.816
+ 403.473 636.515 c 406.613 641.64 410.02 643.499 412.223 641.288 c 414.098
+ 639.405 412.746 636.929 409.156 635.671 c 405.512 634.398 401.445 630.839
+ 401.445 628.929 c 401.445 626.905 403.148 627.335 404.863 629.792 c 406.754
+ 632.499 408.355 631.3 406.609 628.491 c 405.914 627.378 405.605 625.655
+ 405.922 624.659 c 406.312 623.417 405.664 622.3 403.863 621.116 c 402.004
+ 619.894 401.543 619.073 402.297 618.316 c 403.051 617.562 403.785 617.605
+ 404.812 618.46 c 406.566 619.921 407.676 618.554 406.395 616.515 c 404.566
+ 613.62 405.332 612.726 409.191 613.241 c 412.043 613.624 413.598 613.222
+ 415.688 611.569 c 420.625 607.663 418.66 600.019 412.891 600.679 c 410.457
+ 600.956 409.883 601.534 409.605 603.991 c 409.246 607.144 405.945 612.55
+ 404.375 612.55 c 403.863 612.55 403.445 609.46 403.445 605.683 c 403.445
+ 598.589 402.5 596.714 398.145 595.159 c 396.754 594.663 396.004 595.319
+ 394.883 598.015 c h
+396.797 603.276 m 397.668 604.691 396.223 609.542 394.93 609.542 c 393.551
+ 609.542 391.23 604.077 392.199 603.105 c 393.039 602.261 396.246 602.382
+ 396.797 603.276 c h
+402.742 646.757 m 403.496 647.964 403.191 648.917 401.512 650.605 c 398.883
+ 653.245 398.91 653.265 398.02 648.335 c 397.379 644.776 397.492 644.519
+ 399.535 644.823 c 400.75 645.003 402.191 645.874 402.742 646.757 c h
+409.371 653.312 m 410.508 654.769 411.441 656.347 411.441 656.823 c 411.441
+ 658.632 408.605 657.593 407.059 655.218 c 403.922 650.417 405.852 648.823
+ 409.371 653.312 c h
+214.914 599.761 m 213.449 602.105 211.418 605.245 210.402 606.741 c 208.055
+ 610.202 208.074 610.874 210.492 609.577 c 213.383 608.023 216.555 608.3
+ 216.555 610.105 c 216.555 611.011 215.816 611.581 214.805 611.456 c 213.844
+ 611.335 212.344 611.554 211.477 611.937 c 210.609 612.319 208.68 612.167
+ 207.191 611.597 c 204.832 610.698 204.625 610.292 205.59 608.48 c 206.457
+ 606.855 206.352 605.859 205.105 603.956 c 202.848 600.495 200.562 600.796
+ 200.562 604.558 c 200.562 606.335 199.938 607.835 199.062 608.175 c 196.402
+ 609.198 192.527 607.558 191.555 604.999 c 190.48 602.155 188.414 601.812
+ 186.141 604.093 c 184.316 605.925 184.156 609.409 185.629 615.058 c 187.48
+ 622.14 187.406 622.038 189.418 620.21 c 191.863 617.987 192.836 618.148
+ 192.047 620.64 c 191.539 622.241 191.781 622.64 193.125 622.394 c 195.914
+ 621.886 195.902 624.284 193.109 624.987 c 189.305 625.948 190.039 628.273
+ 194.816 630.398 c 200.5 632.925 201.59 634.495 201.848 640.484 c 202.078
+ 645.937 200.887 648.109 198.23 647.085 c 196.191 646.3 196.109 644.968
+197.973 643.093 c 200.273 640.784 198.648 637.792 193.09 634.089 c 187.453
+ 630.335 186.836 630.151 184.598 631.573 c 183.406 632.331 183.977 633.308
+ 187.598 636.706 c 191.922 640.769 191.949 642.991 187.645 640.679 c 184.664
+ 639.077 180.711 640.468 179.043 643.71 c 177.273 647.14 178.188 647.987
+ 184.07 648.378 c 187.996 648.64 202.82 655.359 209.664 659.976 c 223.113
+ 669.05 230.449 670.456 230.531 663.98 c 230.551 662.155 220.797 657.48
+218.496 658.21 c 216.395 658.882 205.637 652.972 205.586 651.12 c 205.555
+ 649.89 207.598 647.659 208.758 647.659 c 209.195 647.659 209.559 648.737
+ 209.559 650.05 c 209.559 651.683 210.27 652.636 211.805 653.046 c 218.297
+ 654.792 222.848 652.425 221.922 647.776 c 221.543 645.874 221.988 644.562
+ 223.469 643.218 c 225.973 640.944 226.035 639.921 223.934 635.691 c 222.16
+ 632.12 221.879 627.03 222.48 609.202 c 222.801 599.722 222.598 597.144
+221.469 596.425 c 218.898 594.792 217.609 595.448 214.914 599.761 c h
+193.641 610.819 m 193.516 612.019 192.148 611.788 191.719 610.495 c 191.496
+ 609.831 191.855 609.472 192.516 609.691 c 193.176 609.913 193.684 610.421
+ 193.641 610.819 c h
+207.059 616.562 m 206.574 617.347 206 617.405 205.332 616.737 c 204.785
+ 616.187 204.66 615.206 205.059 614.558 c 205.543 613.773 206.117 613.714
+ 206.785 614.382 c 207.332 614.933 207.457 615.913 207.059 616.562 c h
+197.02 615.491 m 198.043 617.148 195.918 617.546 193.965 616.062 c 192.129
+ 614.667 192.141 614.62 194.258 614.589 c 195.461 614.569 196.707 614.976
+ 197.02 615.491 c h
+216.555 618.511 m 216.555 620.132 216.102 621.737 215.555 622.081 c 214.957
+ 622.448 214.555 621.253 214.555 619.128 c 214.555 617.167 215.004 615.558
+ 215.555 615.558 c 216.102 615.558 216.555 616.886 216.555 618.511 c h
+200.637 620.851 m 200.512 622.05 199.141 621.819 198.715 620.526 c 198.492
+ 619.862 198.852 619.503 199.512 619.722 c 200.172 619.944 200.68 620.452
+ 200.637 620.851 c h
+211.555 621.577 m 211.555 623.913 211.547 623.913 207.906 622.523 c 205.68
+ 621.675 205.418 621.276 206.594 620.534 c 209.141 618.917 211.555 619.425
+ 211.555 621.577 c h
+201.562 625.53 m 201.562 626.05 201.113 626.753 200.562 627.097 c 200.012
+ 627.437 199.562 627.011 199.562 626.151 c 199.562 625.292 200.012 624.589
+ 200.562 624.589 c 201.113 624.589 201.562 625.011 201.562 625.53 c h
+207.559 626.593 m 207.559 627.148 207.109 627.597 206.559 627.597 c 206.008
+ 627.597 205.559 627.148 205.559 626.593 c 205.559 626.042 206.008 625.593
+ 206.559 625.593 c 207.109 625.593 207.559 626.042 207.559 626.593 c h
+216.555 628.683 m 216.555 631.128 214.219 630.784 213.73 628.265 c 213.539
+ 627.276 214.051 626.593 214.98 626.593 c 215.906 626.593 216.555 627.452
+ 216.555 628.683 c h
+211.555 631.609 m 211.555 632.163 210.656 632.612 209.559 632.612 c 208.457
+ 632.612 207.559 632.163 207.559 631.609 c 207.559 631.058 208.457 630.609
+ 209.559 630.609 c 210.656 630.609 211.555 631.058 211.555 631.609 c h
+217.051 635.12 m 217.051 637.28 215.621 637.956 213.668 636.714 c 212.484
+ 635.964 212.484 635.605 213.668 634.265 c 215.406 632.296 217.051 632.71
+ 217.051 635.12 c h
+212.828 640.71 m 217.453 644.538 217.516 645.655 213.113 645.655 c 209.266
+ 645.655 209.074 645.472 208.098 640.89 c 207.23 636.835 208.102 636.804
+ 212.828 640.71 c h
+128.227 600.8 m 127.195 601.558 126.262 603.929 125.957 606.566 c 125.109
+ 613.921 125.109 613.921 118.793 609.253 c 109.316 602.253 98.121 600.542
+ 98.121 606.093 c 98.121 607.441 99.188 608.167 102.031 608.761 c 112.367
+ 610.917 125.305 623.241 132.859 638.132 c 138.129 648.515 140.203 653.585
+ 141.551 659.37 c 142.934 665.308 144.477 666.409 147.484 663.597 c 148.641
+ 662.515 149.59 661.53 149.59 661.409 c 149.59 661.288 150.004 659.753 150.504
+ 657.991 c 151.281 655.28 151.051 654.37 148.98 651.98 c 144.109 646.359
+ 144.684 643.757 152.543 635.788 c 155.344 632.948 157.535 631.605 159.375
+ 631.593 c 165.98 631.558 166.078 627.913 159.559 624.573 c 152.633 621.026
+ 150.691 621.933 147.234 630.316 c 145.594 634.292 143.684 637.765 142.988
+ 638.034 c 141.922 638.444 136.598 631.062 136.598 629.175 c 136.598 628.136
+ 140.172 628.577 141.355 629.761 c 142.23 630.64 142.883 630.612 144.051
+ 629.64 c 146.699 627.433 145.762 625.593 140.93 623.511 c 137.234 621.925
+ 136.094 621.773 135.461 622.796 c 134.402 624.495 132.02 623.007 129.785
+ 619.257 c 128.18 616.558 128.195 616.362 130.098 614.952 c 131.898 613.616
+ 132.176 613.671 132.996 615.523 c 133.5 616.655 134.855 617.566 136.039
+ 617.566 c 137.215 617.566 139.926 618.464 142.07 619.558 c 145.691 621.413
+ 146.094 621.437 147.777 619.905 c 150.16 617.741 150.082 614.421 147.594
+ 612.28 c 145.211 610.234 145.055 608.96 147.094 608.175 c 148.988 607.444
+ 149.023 604.816 147.164 602.948 c 145.359 601.136 135.992 600.995 135.223
+ 602.769 c 134.848 603.628 134.156 603.316 133.016 601.765 c 131.094 599.151
+ 130.609 599.05 128.227 600.8 c h
+137.023 608.066 m 138.883 610.909 138.379 612.55 135.648 612.55 c 133.48
+ 612.55 132.523 610.558 133.285 607.632 c 134.008 604.862 135.012 604.976
+ 137.023 608.066 c h
+439.98 602.456 m 437.832 604.839 438.777 606.734 441.746 605.984 c 444.188
+ 605.37 450.902 607.831 453.773 610.394 c 455.973 612.359 459.414 618.847
+ 459.414 621.038 c 459.414 621.886 458.898 622.581 458.266 622.581 c 456.938
+ 622.581 446.797 615.98 445.906 614.53 c 444.969 613.007 440.812 613.382
+ 439.375 615.116 c 438.465 616.218 438.355 617.452 439.004 619.276 c 440.008
+ 622.105 440.91 622.71 446.922 624.589 c 452.84 626.441 458.934 629.319
+460.223 630.878 c 461.512 632.437 463.242 651.933 462.715 658.964 c 462.426
+ 662.823 462.715 663.804 464.395 664.706 c 466.066 665.605 466.859 665.355
+ 468.914 663.296 c 471.898 660.3 472.152 655.714 469.926 645.151 c 467.488
+ 633.605 467.926 632.933 475.637 636.347 c 478.484 637.609 479.691 638.831
+ 480.098 640.862 c 480.762 644.21 480.73 644.206 484.438 641.452 c 489.152
+ 637.956 488.227 633.753 482.398 632.187 c 474.547 630.077 466.41 626.163
+ 466.41 624.495 c 466.41 623.519 467.297 622.433 468.379 622.089 c 469.465
+ 621.745 471.961 619.573 473.934 617.261 c 478.641 611.741 480.852 610.62
+ 487.148 610.581 c 490.035 610.558 492.395 610.148 492.395 609.663 c 492.395
+ 609.183 490.648 606.925 488.512 604.648 c 481.785 597.48 478.121 599.12
+ 471.395 612.335 c 469.086 616.866 466.902 620.573 466.539 620.573 c 466.176
+ 620.573 465.102 618.378 464.152 615.691 c 462.457 610.905 455.445 602.851
+ 451.664 601.347 c 447.969 599.878 441.773 600.464 439.98 602.456 c h
+312.055 609.765 m 310.184 612.444 310.016 616.487 311.75 616.987 c 312.434
+ 617.187 315.617 617.929 318.82 618.64 c 324.414 619.878 324.938 620.28
+332.062 628.757 c 340.41 638.687 342.074 643.023 335.305 637.206 c 330.438
+ 633.023 327.645 632.718 323.895 635.952 c 321.719 637.831 321.324 638.819
+ 321.867 640.999 c 322.516 643.589 322.758 643.683 327.266 643.081 c 331.402
+ 642.534 332.836 642.901 338.875 646.062 c 347.543 650.601 349.062 650.609
+ 351.191 646.128 c 352.871 642.589 l 345.676 635.319 l 338.238 627.804 336.664
+ 624.886 340.73 626.159 c 341.969 626.546 343.867 627.48 344.953 628.234
+ c 347.512 630.015 348.977 629.964 350.902 628.03 c 353.52 625.401 351.297
+ 622.948 345.621 622.194 c 342.91 621.831 340.176 620.913 339.547 620.151
+ c 338.918 619.39 337.34 618.499 336.039 618.171 c 334.742 617.843 331.656
+ 615.316 329.184 612.554 c 324.812 607.675 324.527 607.534 319.148 607.534
+ c 314.559 607.534 313.344 607.917 312.055 609.765 c h
+505.375 617.816 m 504.285 619.609 503.395 621.851 503.391 622.8 c 503.391
+ 624.331 511.609 634.667 513.422 635.413 c 514.961 636.046 515.297 632.331
+ 513.883 630.304 c 511.719 627.202 512.027 626.288 514.98 627.03 c 516.406
+ 627.39 517.395 627.327 517.176 626.89 c 516.953 626.452 516.004 624.398
+ 515.062 622.323 c 512.961 617.694 510.367 614.558 508.648 614.558 c 507.938
+ 614.558 506.465 616.023 505.375 617.816 c h
+103.352 622.866 m 102.25 624.558 101.918 627.546 102.094 634.269 c 102.43
+ 647.069 103.199 647.917 109 641.921 c 111.391 639.452 112.613 637.245 112.613
+ 635.401 c 112.613 631.862 113.738 631.855 115.438 635.378 c 117.777 640.23
+ 117.848 640.636 116.371 640.636 c 114.98 640.636 110.859 644.405 111.703
+ 644.905 c 115.488 647.163 122.918 650.667 123.918 650.667 c 125.789 650.667
+ 130.602 645.37 130.602 643.312 c 130.602 642.359 129.012 640.179 127.07
+ 638.468 c 123.73 635.523 123.629 635.253 125.211 633.499 c 126.543 632.019
+ 126.637 631.351 125.664 630.175 c 123.93 628.077 117.938 626.292 115.059
+ 627.019 c 113.609 627.382 112.613 627.198 112.613 626.566 c 112.613 624.995
+ 107.938 620.573 106.277 620.573 c 105.492 620.573 104.176 621.605 103.352
+ 622.866 c h
+269.172 648.128 m 267.156 649.659 267.727 651.675 270.18 651.675 c 272.613
+ 651.675 278.656 654.737 283.016 658.183 c 288.625 662.62 289.121 662.843
+ 291.84 662.159 c 294.371 661.523 296.98 657.269 295.91 655.526 c 295.129
+ 654.257 286.891 650.671 284.758 650.671 c 283.484 650.671 283.617 651.151
+ 285.414 653.073 c 288.715 656.597 286.133 657.456 282.641 653.995 c 278.672
+ 650.066 273.848 646.651 272.312 646.691 c 271.602 646.706 270.188 647.355
+ 269.172 648.128 c h
+276.227 660.691 m 276.555 661.956 276.156 662.909 275.133 663.304 c 272.043
+ 664.495 273.32 667.347 277.512 668.609 c 285.633 671.05 288.781 665.093
+ 281.559 660.952 c 276.715 658.175 275.555 658.116 276.227 660.691 c h
+276.227 660.691 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
diff --git a/macros/xetex/latex/hithesis/front/cover.tex b/macros/xetex/latex/hithesis/front/cover.tex
new file mode 100644
index 0000000000..9a1d61a870
--- /dev/null
+++ b/macros/xetex/latex/hithesis/front/cover.tex
@@ -0,0 +1,90 @@
+% !Mode:: "TeX:UTF-8"
+
+\hitsetup{
+ %******************************
+ % 注意:
+ % 1. 配置里面不要出现空行
+ % 2. 不需要的配置信息可以删除
+ %******************************
+ %
+ %=====
+ % 秘级
+ %=====
+ statesecrets={公开},
+ natclassifiedindex={TM301.2},
+ intclassifiedindex={62-5},
+ %
+ %=========
+ % 中文信息
+ %=========
+ ctitleone={局部多孔质气体静压},%本科生封面使用
+ ctitletwo={轴承关键技术的研究},%本科生封面使用
+ ctitlecover={局部多孔质气体静压轴承关键技术的研究},%放在封面中使用,自由断行
+ ctitle={局部多孔质气体静压轴承关键技术的研究},%放在原创性声明中使用
+ csubtitle={一条副标题}, %一般情况没有,可以注释掉
+ cxueke={工学},
+ csubject={机械制造及其自动化},
+ caffil={机电工程学院},
+ cauthor={于冬梅},
+ csupervisor={某某某教授},
+ cassosupervisor={某某某教授}, % 副指导老师
+ ccosupervisor={某某某教授}, % 联合指导老师
+ % 日期自动使用当前时间,若需指定按如下方式修改:
+ %cdate={超新星纪元},
+ cstudentid={9527},
+ cstudenttype={同等学力人员}, %非全日制教育申请学位者
+ %(同等学力人员)、(工程硕士)、(工商管理硕士)、
+ %(高级管理人员工商管理硕士)、(公共管理硕士)、(中职教师)、(高校教师)等
+ %
+ %
+ %=========
+ % 英文信息
+ %=========
+ etitle={Research on key technologies of partial porous externally pressurized gas bearing},
+ esubtitle={This is the sub title},
+ exueke={Engineering},
+ esubject={Computer Science and Technology},
+ eaffil={\emultiline[t]{School of Mechatronics Engineering \\ Mechatronics Engineering}},
+ eauthor={Yu Dongmei},
+ esupervisor={Professor XXX},
+ eassosupervisor={XXX},
+ % 日期自动生成,若需指定按如下方式修改:
+ edate={December, 2017},
+ estudenttype={Master of Art},
+ %
+ % 关键词用“英文逗号”分割
+ ckeywords={\TeX, \LaTeX, CJK, 嗨!, thesis},
+ ekeywords={\TeX, \LaTeX, CJK, template, thesis},
+}
+
+\begin{cabstract}
+
+摘要的字数(以汉字计),硕士学位论文一般为500 $\sim$ 1000字,博士学位论文为1000 $\sim$ 2000字,
+均以能将规定内容阐述清楚为原则,文字要精练,段落衔接要流畅。摘要页不需写出论文题目。
+英文摘要与中文摘要的内容应完全一致,在语法、用词上应准确无误,语言简练通顺。
+留学生的英文版博士学位论文中应有不少于3000字的“详细中文摘要”。
+
+ 关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。关键词不超过 5
+ 个,每个关键词中间用分号分隔。(模板作者注:关键词分隔符不用考虑,模板会自动处
+ 理。英文关键词同理。)
+\end{cabstract}
+
+\begin{eabstract}
+ An abstract of a dissertation is a summary and extraction of research work
+ and contributions. Included in an abstract should be description of research
+ topic and research objective, brief introduction to methodology and research
+ process, and summarization of conclusion and contributions of the
+ research. An abstract should be characterized by independence and clarity and
+ carry identical information with the dissertation. It should be such that the
+ general idea and major contributions of the dissertation are conveyed without
+ reading the dissertation.
+
+ An abstract should be concise and to the point. It is a misunderstanding to
+ make an abstract an outline of the dissertation and words ``the first
+ chapter'', ``the second chapter'' and the like should be avoided in the
+ abstract.
+
+ Key words are terms used in a dissertation for indexing, reflecting core
+ information of the dissertation. An abstract may contain a maximum of 5 key
+ words, with semi-colons used in between to separate one another.
+\end{eabstract}
diff --git a/macros/xetex/latex/hithesis/front/denotation.tex b/macros/xetex/latex/hithesis/front/denotation.tex
new file mode 100644
index 0000000000..dae7a832c3
--- /dev/null
+++ b/macros/xetex/latex/hithesis/front/denotation.tex
@@ -0,0 +1,13 @@
+\begin{denotation}
+\begin{table}[h]%此处最好是h
+\caption{国际单位制中具有专门名称的导出单位}
+\vspace{0.5em}\centering\wuhao
+\begin{tabular}{ccccc}
+\toprule[1.5pt]
+量的名称&单位名称&单位符号&其它表示实例\\
+\midrule[1pt]
+频率&赫[兹]&Hz&s-1\\
+\bottomrule[1.5pt]
+\end{tabular}
+\end{table}
+\end{denotation}
diff --git a/macros/xetex/latex/hithesis/hithesis.bst b/macros/xetex/latex/hithesis/hithesis.bst
new file mode 100644
index 0000000000..98d64a7ac6
--- /dev/null
+++ b/macros/xetex/latex/hithesis/hithesis.bst
@@ -0,0 +1,1935 @@
+%=============================================================================
+% FileName: hithesis.bst
+% Author: Chu Yanshuo
+% Email: chu@yanshuo.name
+% HomePage: http://yanshuo.name
+% Version: 0.0.1
+% LastChange: 2017-08-27 15:39:30
+% History: 胡海星
+%=============================================================================
+ %
+ENTRY % class Entry {
+{ % public:
+ author % String author;
+ editor % String editor;
+ translator % String translator;
+ title % String title;
+ edition % String edition;
+ address % String address;
+ publisher % String publisher;
+ pages % String pages;
+ year % String year;
+ date % String date;
+ modifydate % String modifydate;
+ citedate % String citedate;
+ url % String url;
+ doi % String doi;
+ language % String language;
+ booktitle % String booktitle;
+ journal % String journal;
+ chapter % String chapter;
+ series % String series;
+ volume % String volume;
+ number % String number;
+ version % String version;
+ month % String month;
+ school % String school;
+ institution % String institution;
+ organization % String organization;
+ type % String type;
+ howpublished % String howpublished;
+ eid % String eid;
+ key % String key;
+ country % String country;
+ patentid % String patentid;
+ media % String media;
+} { % // declare integer variables
+ required % int required; // withther the bibfield is required
+} { % // declare String variables
+ label % String label; // label for the entry
+ mark % String mark; // mark for the entry
+ % // there is ahidden entry variable sort.key$
+ % String sort_key;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+INTEGERS { % // declare global int variables
+ entry.count % static int entry_count; // number of entries
+ longest.label.width % static int longest_label_width; // width of the longest label
+ i % static int i;
+ j % static int j;
+ k % static int k;
+} %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+STRINGS { % // declare global String variables
+ longest.label % static String longest_label; // the longest label
+ s % static String s;
+ t % static String t;
+} %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% define global static constants
+FUNCTION {true} {#1}
+FUNCTION {false} {#0}
+FUNCTION {debug.enabled} {true}
+FUNCTION {cap.volume.en} {"Vol~"}
+FUNCTION {cap.volume.zh} {"卷"}
+FUNCTION {cap.edition.en} {"~ed"}
+FUNCTION {cap.edition.zh} {"版"}
+FUNCTION {cap.anonymous.en} {"Anon"}
+FUNCTION {cap.anonymous.zh} {"佚名"}
+FUNCTION {cap.no.address.en} {"[S.l.]"}
+FUNCTION {cap.no.address.zh} {"[出版地不详]"}
+FUNCTION {cap.no.publisher.en} {"[s.n.]"}
+FUNCTION {cap.no.publisher.zh} {"[出版者不详]"}
+FUNCTION {cap.et.al.en} {", et~al"}
+FUNCTION {cap.et.al.zh} {", 等"}
+FUNCTION {cap.translate.en} {"~trans"}
+FUNCTION {cap.translate.zh} {"译"}
+FUNCTION {cap.doi.url} {"http://dx.doi.org/"}
+FUNCTION {cap.st.en} {"st"}
+FUNCTION {cap.nd.en} {"nd"}
+FUNCTION {cap.rd.en} {"rd"}
+FUNCTION {cap.th.en} {"th"}
+
+FUNCTION {cap.space} {" "}
+FUNCTION {cap.period} {"\@. "}
+FUNCTION {cap.comma} {"\@, "}
+FUNCTION {cap.colon} {"\thinspace{}\textnormal{: }"}
+FUNCTION {cap.double.slash} {" //\thinspace{}"}
+FUNCTION {cap.dash} {"\textnormal{-}"}
+
+% Predefined latex command used to format the style of bibitems
+FUNCTION {env.bibbegin} { "\begin{thebibliography}" }
+FUNCTION {env.bibend} { "\end{thebibliography}" }
+FUNCTION {cmd.bibauthor} { "\providecommand{\bibauthor}[1]{#1}" }
+FUNCTION {cmd.bibeditor} { "\providecommand{\bibeditor}[1]{#1}" }
+FUNCTION {cmd.bibtranslator} { "\providecommand{\bibtranslator}[1]{#1}" }
+FUNCTION {cmd.bibtitle} { "\providecommand{\bibtitle}[1]{#1}" }
+FUNCTION {cmd.bibbooktitle} { "\providecommand{\bibbooktitle}[1]{#1}" }
+FUNCTION {cmd.bibjournal} { "\providecommand{\bibjournal}[1]{#1}" }
+FUNCTION {cmd.bibmark} { "\providecommand{\bibmark}[1]{\mbox{#1}}" }
+FUNCTION {cmd.bibcountry} { "\providecommand{\bibcountry}[1]{#1}" }
+FUNCTION {cmd.bibpatentid} { "\providecommand{\bibpatentid}[1]{#1}" }
+FUNCTION {cmd.bibedition} { "\providecommand{\bibedition}[1]{#1}" }
+FUNCTION {cmd.biborganization} { "\providecommand{\biborganization}[1]{#1}" }
+FUNCTION {cmd.bibaddress} { "\providecommand{\bibaddress}[1]{#1}" }
+FUNCTION {cmd.bibpublisher} { "\providecommand{\bibpublisher}[1]{#1}" }
+FUNCTION {cmd.bibinstitution} { "\providecommand{\bibinstitution}[1]{#1}" }
+FUNCTION {cmd.bibschool} { "\providecommand{\bibschool}[1]{#1}" }
+FUNCTION {cmd.bibvolume} { "\providecommand{\bibvolume}[1]{#1}" }
+FUNCTION {cmd.bibnumber} { "\providecommand{\bibnumber}[1]{#1}" }
+FUNCTION {cmd.bibversion} { "\providecommand{\bibversion}[1]{#1}" }
+FUNCTION {cmd.bibpages} { "\providecommand{\bibpages}[1]{#1}" }
+FUNCTION {cmd.bibmodifydate} { "\providecommand{\bibmodifydate}[1]{#1}" }
+FUNCTION {cmd.bibcitedate} { "\providecommand{\bibcitedate}[1]{#1}" }
+FUNCTION {cmd.bibyear} { "\providecommand{\bibyear}[1]{#1}" }
+FUNCTION {cmd.bibdate} { "\providecommand{\bibdate}[1]{#1}" }
+FUNCTION {cmd.biburl} { "\providecommand{\biburl}[1]{\newline\url{#1}}" }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {log.str} { % void Entry::log_str(String value, String message)
+ debug.enabled { % if (debug_enabled == 1) {
+ "DEBUG: " swap$ * " - '" * % message = "DEBUG: " + message + " - '";
+ swap$ * % message = message + value;
+ "'" * % message = message + "'";
+ top$ % log(message);
+ } { % } else {
+ pop$ pop$ % return;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {log.int} { % int Entry::log_int(int value, String message)
+ debug.enabled { % if (debug_enabled == 1) {
+ "DEBUG: " swap$ * " - " * % message = "DEBUG: " + message + " - ";
+ swap$ int.to.str$ * % message = message + int_to_str(value);
+ top$ % log(message);
+ } { % } else {
+ pop$ pop$ % return;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {not} { % int Entry::not(int x) {
+ { % if (x == 1) {
+ false % return false;
+ } { % } else {
+ true % return true;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {and} { % int Entry::and(int x, int y) {
+ { % if (y == 1) {
+ skip$ % return x;
+ } { % } else {
+ pop$ false % return false;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {or} { % int Entry::or(int x, int y) {
+ { % if (y == 1) {
+ pop$ true % return true;
+ } { % } else {
+ skip$ % return x;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // calculate the length in characters of a string
+ % // We need this function since text.length$ is NOT
+ % // the length in characters.
+INTEGERS {length.i} % static int length_i;
+FUNCTION {length} { % int Entry::length(String str) {
+ duplicate$ empty$ { % if (empty(str)) {
+ pop$ #0 % return 0;
+ } { % } else {
+ #1 'length.i := % length_i = 1;
+ false % int stop = false;
+ {not} { % while (! stop) {
+ duplicate$ length.i #1 substring$ % String tmp = substring(str, length_i, 1);
+ "" = { % if (tmp == "") {
+ true % stop = true;
+ } { % } else {
+ length.i #1 + 'length.i := % length_i = length_i + 1;
+ false % stop = false;
+ } if$ % }
+ } while$ % }
+ pop$ length.i #1 - % return length_i - 1;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.digit} { % int Entry::is_digit(String ch) {
+ chr.to.int$ % int ascii = chr_to_int(ch);
+ duplicate$ "0" chr.to.int$ < { % if (ascii < chr_to_int("0")) {
+ pop$ false % return false;
+ } { % } else {
+ "9" chr.to.int$ > { % if (ascii > chr_to_int("9")) {
+ false % return false;
+ } { % } else {
+ true % return true;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // test if str is a number
+FUNCTION {is.number} { % int Entry::is_number(String str) {
+ duplicate$ empty$ not swap$ % int result = (! empty(str));
+ { duplicate$ empty$ not} { % while (! empty(str)) {
+ duplicate$ #1 #1 substring$ is.digit { % if (is_digit(substring(str, 1, 1))) {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } { % } else {
+ pop$ pop$ false % result = false;
+ "" % str = "";
+ } if$ % }
+ } while$ % }
+ pop$ % return result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the number prefix of str
+FUNCTION {extract.number} { % String Entry::extract_number(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ length swap$ % int n = length(str);
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ is.digit { % if (is_digit(substring(suffix, 1, 1))) {
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } { % } else {
+ true % stop = true;
+ } if$ % }
+ } while$ % }
+ length - % int n = n - length(suffix);
+ #1 swap$ substring$ % return substring(str, 1, n);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.last.chr} { % String Entry::get_last_chr(String str) {
+ duplicate$ length % int n = length(str);
+ duplicate$ #0 = { % if (n == 0) {
+ pop$ % return str;
+ } { % } else {
+ #1 substring$ % return substring(str, n, 1);
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.ordinal.suffix.en} { % String Entry::get_ordinal_suffix_en(String ch) {
+ duplicate$ "1" = { % if (num == "1") {
+ pop$ cap.st.en % return cap_st_en;
+ } { % } else {
+ duplicate$ "2" = { % if (num == "2") {
+ pop$ cap.nd.en % return cap_nd_en;
+ } { % } else {
+ duplicate$ "3" = { % if (num == "3") {
+ pop$ cap.rd.en % return cap_rd_en;
+ } { % } else {
+ pop$ cap.th.en % return cap_th_en;
+ } if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {num.to.ordinal.en} { % String Entry::num_to_ordinal_en(String num) {
+ duplicate$ empty$ { % if (empty(num)) {
+ skip$ % return num;
+ } { % } else {
+ duplicate$ get.last.chr % String ch = get_last_chr(num);
+ get.ordinal.suffix.en % String str = get_ordinal_suffix_en(ch);
+ * % reutrn num + str;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+STRINGS {remove.dots.result} % static String remove_dots_result;
+ %
+FUNCTION {remove.dots} { % String Entry::remove_dots(String str) {
+ "" 'remove.dots.result := % remove_dots_result = "";
+ { duplicate$ empty$ not } { % while (! empty(str)) {
+ duplicate$ #1 #2 substring$ % String tmp = substring(str, 1, 2);
+ "\." = { % if (tmp == "\.") {
+ #3 global.max$ substring$ % str = substring(str, 3, global_max);
+ } { % } else {
+ duplicate$ #1 #1 substring$ % tmp = substring(str, 1, 1);
+ duplicate$ "." = { % if (tmp == ".") {
+ pop$ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } { % } else {
+ remove.dots.result swap$ * % tmp = remove_dots_result + tmp;
+ 'remove.dots.result := % remove_dots_result = tmp;
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } if$ % }
+ } if$ % }
+ } while$ % }
+ pop$ remove.dots.result % return remove_dots_result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.brace} { % String Entry::add_brace(String str) {
+ "{" swap$ * "}" * % return "{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.bracket} { % String Entry::bracket(String str) {
+ "(" swap$ * ")" * % return "(" + str + ")";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.squarebracket} { % String Entry::add_squarebracket(String str) {
+ "[" swap$ * "]" * % return "[" + str + "]";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.textit} { % String Entry::add_textit(String str) {
+ "\textit{" swap$ * "}" * % return "\textit{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.textbf} { % String Entry::add_textbf(String str) {
+ "\textbf{" swap$ * "}" * % return "\textbf{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // test if str contains a dash '-'
+FUNCTION {contain.dash} { % int Entry::contain_dash(String str) {
+ false swap$ % int result = false;
+ { duplicate$ empty$ not} { % while (! empty(str)) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(str, 1, 1) == "-") {
+ pop$ pop$ true % result = true;
+ "" % str = "";
+ } { % } else {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } if$ % }
+ } while$ % }
+ pop$ % return result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring before the first '-'
+ % // returns the string itself if no '-'
+FUNCTION {extract.before.first.dash} { % String Entry::extract_before_first_dash(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ length swap$ % int n = length(str);
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(suffix, 1, 1) == "-") {
+ true % stop = true;
+ } { % } else {4r
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } if$ % }
+ } while$ % }
+ length - % int n = n - length(suffix);
+ #1 swap$ substring$ % return substring(str, 1, n);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring after the first '-'
+ % // returns the string itself if no '-'
+FUNCTION {extract.after.first.dash} { % String Entry::extract_after_first_dash(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(suffix, 1, 1) == "-") {
+ true % stop = true;
+ } { % } else {4r
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } if$ % }
+ } while$ % }
+ duplicate$ empty$ { % if (empty(suffix)) {
+ pop$ % return str;
+ } { % } else {
+ swap$ pop$ #2 global.max$ substring$ % return substring(suffix, 2, global_max);
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring after the last '-'
+ % // returns the empty string if no '-'
+FUNCTION {extract.after.last.dash} { % String Entry::extract_after_last_dash(String str) {
+ duplicate$ contain.dash not { % if (! contain_dash(str)) {
+ pop$ "" % return "";
+ } { % } else {
+ {duplicate$ contain.dash} { % while (contain_dash(str)) {
+ extract.after.first.dash % str = extract_after_first_dash(str);
+ } while$ % }
+ % return str;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim.start} { % String Entry::trim_start(String str) {
+ {duplicate$ #1 #1 substring$ " " =} { % while (substring(str, 1, 1) == " ") {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } while$ % }
+ % return str;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim.end} { % String Entry::trim_end(String str) {
+ {duplicate$ get.last.chr " " =} { % while (get_last_chr(str) == " ") {
+ duplicate$ length #1 - % int n = length(str) - 1;
+ #1 swap$ substring$ % str = substring(str, 1, n);
+ } while$ % }
+ % return str;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim} { % String Entry::trim(String str) {
+ trim.start % str = trim_start(str);
+ trim.end % return trim_end(str);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {start.bibitem} { % void Entry::start_bibitem() {
+ newline$ % writeln();
+ "\bibitem{" cite$ * "}" * write$ % write("\bibitem{" + this.cite + "}");
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {end.bibitem} { % void Entry::end_bibitem() {
+ cap.period write$ % write(cap_period);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.in.chinese} { % int Entry::is_in_chinese() {
+ language empty$ { % if (empty(this.language)) {
+ false % return false;
+ } { % } else {
+ language "zh" = { % if (this.language == "zh") {
+ true % return true;
+ } { % } else {
+ false % return false;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.online} { % int Entry::is_online() {
+ url empty$ not { % if (! empty(this.url)) {
+ true % return true;
+ } { % } else {
+ doi empty$ not { % if (! empty(this.doi)) {
+ true % return true;
+ } { % } else {
+ false % return false;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {set.mark} { % void Entry::set_mark(String mark) {
+ 'mark := % this.mark = mark;
+ is.online { % if (is_online()) {
+ mark "/OL" * 'mark := % this.mark = this.mark + "/OL";
+ } { % } else {
+ media empty$ not { % if (! empty(this.media)) {
+ mark "/" * media * 'mark := % this.mark = this.mark + "/" + this.media;
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.volume} { % String Entry::cap_volume() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.volume.zh % return cap_volume_zh;
+ } { % } else {
+ cap.volume.en % return cap_volume_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.edition} { % String Entry::cap_edition() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.edition.zh % return cap_edition_zh;
+ } { % } else {
+ cap.edition.en % return cap_edition_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.anonymous} { % String Entry::cap_anonymous() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.anonymous.zh % return cap_anonymous_zh;
+ } { % } else {
+ cap.anonymous.en % return cap_anonymous_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.no.address} { % String Entry::cap_no_address() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.no.address.zh % return cap_no_address_zh;
+ } { % } else {
+ cap.no.address.en % return cap_no_address_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.no.publisher} { % String Entry::cap_no_publisher() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.no.publisher.zh % return cap_no_publisher_zh;
+ } { % } else {
+ cap.no.publisher.en % return cap_no_publisher_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.et.al} { % String Entry::cap_et_al() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.et.al.zh % return cap_et_al_zh;
+ } { % } else {
+ cap.et.al.en % return cap_et_al_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.translate} { % String Entry::cap_translate() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.translate.zh % return cap_translate_zh;
+ } { % } else {
+ cap.translate.en % return cap_translate_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.bibinfo} { % String Entry::format_bibinfo(String info, String type) {
+ swap$ add.brace swap$ % info = add_brace(info);
+ "\bib" swap$ * swap$ * % return "\bib" + type + info;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INTEGERS { nameindex namecount } % static int nameindex, namecount;
+STRINGS { namelist nameformat } % static String namelist, nameformat;
+STRINGS { firstname lastname jrname vonname} % static String firstname, lastname, jrname, vonname;
+ %
+FUNCTION {format.names} { % String Entry::format_names(String names) {
+ 'namelist := % namelist = names;
+ namelist num.names$ 'namecount := % namecount = num_names(namelist);
+ "" % String result = "";
+ #0 'nameindex := % nameindex = 0;
+ {nameindex namecount < nameindex #3 < and} { % while ((nameindex < namecount) && (nameindex < 3)) {
+ nameindex #1 + 'nameindex := % nameindex = nameindex + 1;
+ nameindex #1 > { % if (nameindex > 1) {
+ cap.comma * % result = result + cap_comma;
+ } 'skip$ if$ % }
+ namelist nameindex "{vv}" format.name$ % String tmp = format_name(namelist, nameindex, "{vv}");
+ 'vonname := % vonname = tmp;
+ namelist nameindex "{jj}" format.name$ % tmp = format_name(namelist, nameindex, "{jj}");
+ remove.dots 'jrname := % jrname = remove_dots(tmp);
+ namelist nameindex "{f}" format.name$ % tmp = format_name(namelist, nameindex, "{f}");
+ remove.dots % tmp = remove_dots(tmp);
+ 'firstname := % firstname = change_case(tmp, "u");
+ namelist nameindex "{ll}" format.name$ % tmp = format_name(namelist, nameindex, "{ll}");
+ 'lastname := % lastname = change_case(tmp, "u");
+ jrname empty$ not { % if (! empty(jrname)) {
+ jrname * " " * % result = result + jrname + " "
+ } 'skip$ if$ % }
+ vonname empty$ not { % if (! empty(vonname)) {
+ vonname * " " * % result = result + vonname + " "
+ } 'skip$ if$ % }
+ lastname empty$ not { % if (! empty(lastname)) {
+ lastname * " " * % result = result + lastname + " "
+ } 'skip$ if$ % }
+ firstname empty$ not { % if (! empty(firstname)) {
+ firstname * " " * % result = result + firstname + " "
+ } 'skip$ if$ % }
+ trim.end % result = trim_end(result);
+ } while$ % }
+ nameindex namecount < { % if (nameindex < namecount) {
+ cap.et.al * % result = result + cap_et_al();
+ } 'skip$ if$ % }
+} % }
+ %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // format English names
+FUNCTION {format.names.en} { % String Entry::format_names_en(String names) {
+ format.names % format_names(names);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // format Chinese names
+FUNCTION {format.names.zh} { % String Entry::format_names_zh(String names) {
+ format.names % format_names(names);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.author} { % String Emtry::format_author(String authors) {
+ is.in.chinese { % if (is_in_chinese) {
+ format.names.zh % authors = format_names_zh(authors);
+ } { % } else {
+ format.names.en % authors = format_names_en(authors);
+ } if$ % }
+ "author" format.bibinfo % return format_bibinfo(authors, "author");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.editor} { % String Emtry::format_author(String editors) {
+ is.in.chinese { % if (is_in_chinese) {
+ format.names.zh % editors = format_names_zh(editors);
+ } { % } else {
+ format.names.en % editors = format_names_en(editors);
+ } if$ % }
+ "editor" format.bibinfo % return format_bibinfo(editors, "editor");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.translator} { % String Emtry::format_translator(String translators) {
+ is.in.chinese { % if (is_in_chinese) {
+ duplicate$ % String names = translators;
+ format.names.zh % translators = format_names_zh(translators);
+ swap$ num.names$ #3 > { % if (num_names(names) > 3) {
+ cap.translate.zh * % translators = translators + cap_translate_zh;
+ } { % } else {
+ cap.comma * cap.translate.zh * % translators = translators + cap_comma + cap_translate_zh;
+ } if$ % }
+ } { % } else {
+ duplicate$ % String names = translators;
+ format.names.en % translators = format_names_en(translators);
+ swap$ num.names$ #3 > { % if (num_names(names) > 3) {
+ cap.translate.en * % translators = translators + cap_translate_en;
+ } { % } else {
+ cap.comma * cap.translate.en * % translators = translators + cap_comma + cap_translate_en;
+ } if$ % }
+ } if$ % }
+ "translator" format.bibinfo % return format_bibinfo(translator, "translator");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.title} { % String Emtry::format_title(String title) {
+ "title" format.bibinfo % return format_bibinfo(title, "title");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.booktitle} { % String Emtry::format_booktitle(String booktitle) {
+ "booktitle" format.bibinfo % return format_bibinfo(booktitle, "booktitle");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.mark} { % String Emtry::format_mark(String mark) {
+ "[" swap$ * "]" * % mark = "[" + mark + "]";
+ "mark" format.bibinfo % return format_bibinfo(mark, "mark");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.country} { % String Emtry::format_country(String country) {
+ "country" format.bibinfo % return format_bibinfo(country, "country");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.patentid} { % String Emtry::format_patentid(String patentid) {
+ "patentid" format.bibinfo % return format_bibinfo(patentid, "patentid");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.edition} { % String Emtry::format_edition(String edition) {
+ duplicate$ is.number { % if (is_number(edition)) {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.edition.zh * % edition = edition + cap_edition_zh;
+ } { % } else {
+ num.to.ordinal.en cap.edition.en * % edition = num_to_ordinal_en(edition) + cap_edition_en;
+ } if$ % }
+ } 'skip$ if$ % }
+ % // use a \mbox{} to prevent line break within edition
+ "\mbox{" swap$ * "}" * % edition = "\mbox{" + edition + "}";
+ "edition" format.bibinfo % return format_bibinfo(edition, "edition");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.organization} { % String Emtry::format_organization(String organization) {
+ "organization" format.bibinfo % return format_bibinfo(organization, "organization");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.address} { % String Emtry::format_address(String address) {
+ "address" format.bibinfo % return format_bibinfo(address, "address");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.publisher} { % String Emtry::format_publisher(String publisher) {
+ "publisher" format.bibinfo % return format_bibinfo(publisher, "publisher");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.institution} { % String Emtry::format_institution(String institution) {
+ "institution" format.bibinfo % return format_bibinfo(institution, "institution");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.school} { % String Emtry::format_school(String school) {
+ "school" format.bibinfo % return format_bibinfo(school, "school");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.year} { % String Emtry::format_year(String year) {
+ "year" format.bibinfo % return format_bibinfo(year, "year");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.date} { % String Emtry::format_date(String date) {
+ "date" format.bibinfo % return format_bibinfo(date, "date");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.journal} { % String Emtry::format_journal(String journal) {
+ "journal" format.bibinfo % return format_bibinfo(journal, "journal");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.volume} { % String Emtry::format_volume(String volume) {
+ "volume" format.bibinfo % return format_bibinfo(volume, "volume");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.number} { % String Emtry::format_number(String number) {
+ add.bracket % number = add_bracket(number);
+ "number" format.bibinfo % return format_bibinfo(number, "number");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.report.number} { % String Emtry::format_report_number(String number) {
+ "number" format.bibinfo % return format_bibinfo(number, "number");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.version} { % String Emtry::format_version(String version) {
+ "version" format.bibinfo % return format_bibinfo(version, "version");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.pages} { % String Emtry::format_pages(String pages) {
+ "pages" format.bibinfo % return format_bibinfo(pages, "pages");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.modifydate} { % String Emtry::format_modifydate(String modifydate) {
+ add.bracket % modifydate = add_bracket(modifydate);
+ "modifydate" format.bibinfo % return format_bibinfo(modifydate, "modifydate");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.citedate} { % String Emtry::format_citedate(String citedate) {
+ add.squarebracket % citedate = add_squarebracket(citedate);
+ "citedate" format.bibinfo % return format_bibinfo(citedate, "citedate");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % // NOTE: do not use the format_bibinfo() for URL,
+ % // since if the URL contains special symbols such
+ % // as '%', the \biburl{} will be broken.
+FUNCTION {format.url} { % String Emtry::format_url(String url) {
+ "\url{" swap$ * "}" * % return "\url{" + url + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.full.title} { % String Entry::get_full_title() {
+ series empty$ { % if (empty(this.series)) {
+ volume empty$ { % if (empty(this.volume)) {
+ title % return this.title;
+ } { % } else {
+ title cap.colon * cap.volume * volume * % return this.title + cap_colon + cap_volume() + this.volume;
+ } if$ % }
+ } { % } else {
+ volume empty$ { % if (empty(this.volume)) {
+ series cap.colon * title * % return this.series + cap_colon + this.title;
+ } { % } else {
+ series cap.comma * cap.volume * volume * % String str = this.series + cap_comma + cal_volume() + this.volume;
+ cap.colon * title * % return str + cap_colon + this.title;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.full.booktitle} { % String Entry::get_full_booktitle() {
+ series empty$ { % if (empty(this.series)) {
+ volume empty$ { % if (empty(this.volume)) {
+ booktitle % return this.booktitle;
+ } { % } else {
+ booktitle cap.colon * cap.volume * volume * % return this.booktitle + cap_colon + cap_volume() + this.volume;
+ } if$ % }
+ } { % } else {
+ volume empty$ { % if (empty(this.volume)) {
+ series cap.colon * booktitle * % return this.series + cap_colon + this.booktitle;
+ } { % } else {
+ series cap.comma * cap.volume * volume * % String str = this.series + cap_comma + cal_volume() + this.volume;
+ cap.colon * booktitle * % return str + cap_colon + this.booktitle;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.pages} { % String Entry::get_pages() {
+ pages contain.dash { % if (contain_dash(this.pages)) {
+ pages extract.before.first.dash % String p1 = extract_before_first_dash(this.pages);
+ pages extract.after.last.dash % String p2 = extract_after_last_dash(this.pages);
+ cap.dash swap$ * * % return p1 + cap_dash + p2;
+ } { % } else {
+ pages % return this.pages;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.author.or.editor} { % void Entry::output_author_or_editor(int required) {
+ 'required := % this.required = required;
+ author empty$ not { % if (! empty(this.author)) {
+ author format.author write$ % write(format_author(this.author));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ editor empty$ not { % if (! empty(this.editor)) {
+ editor format.editor write$ % write(format_editor(this.editor));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require author/editor: " cite$ * warning$% warning("Require author/editor: " + this.cite);
+ cap.anonymous format.author write$ % write(format_author(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.author} { % void Entry::output_author(int required) {
+ 'required := % this.required = required;
+ author empty$ not { % if (! empty(this.author)) {
+ author format.author write$ % write(format_author(this.author));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require author: " cite$ * warning$ % warning("Require author: " + this.cite);
+ cap.anonymous format.author write$ % write(format_author(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.editor} { % void Entry::output_editor(int required) {
+ 'required := % this.required = required;
+ editor empty$ not { % if (! empty(this.editor)) {
+ editor format.editor write$ % write(format_editor(this.editor));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require editor: " cite$ * warning$ % warning("Require editor: " + this.cite);
+ cap.anonymous format.editor write$ % write(format_editor(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.title} { % void Entry::output_title(int required) {
+ 'required := % this.required = required;
+ title empty$ not { % if (! empty(this.title)) {
+ title format.title write$ % write(format_title(this.title));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require title: " cite$ * warning$ % warning("Require title: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.series.volume.title} { % void Entry::output_series_volume_title(int required) {
+ 'required := % this.required = required;
+ title empty$ not { % if (! empty(this.title)) {
+ get.full.title format.booktitle write$ % write(format_booktitle(get_full_title()));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require title: " cite$ * warning$ % warning("Require title: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.series.volume.booktitle} { % void Entry::output_series_volume_booktitle(int required) {
+ 'required := % this.required = required;
+ booktitle empty$ not { % if (! empty(this.booktitle)) {
+ get.full.booktitle format.booktitle write$ % write(format_booktitle(get_full_booktitle());
+ } { % } else {
+ required { % if (required == 1) {
+ "Require booktitle: " cite$ * warning$ % warning("Require booktitle: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.journal} { % void Entry::output_journal(int required) {
+ 'required := % this.required = required;
+ journal empty$ not { % if (! empty(this.journal)) {
+ cap.period write$ % write(cap_period);
+ journal format.journal write$ % write(format_journal(this.journal));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require journal: " cite$ * warning$ % warning("Require journal: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.mark} { % void Entry::output_mark(int required) {
+ 'required := % this.required = required;
+ mark empty$ not { % if (! empty(this.mark)) {
+ mark format.mark write$ % write(format_mark(this.mark));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require mark: " cite$ * warning$ % warning("Require mark: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.translator} { % void Entry::output_translator(int required) {
+ 'required := % this.required = required;
+ translator empty$ not { % if (! empty(this.translator)) {
+ cap.period write$ % write(cap_period);
+ translator format.translator write$ % write(format_translator(this.translator));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require translator: " cite$ * warning$ % warning("Require translator: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.edition} { % void Entry::output_edition(int required) {
+ 'required := % this.required = required;
+ edition empty$ not { % if (! empty(this.edition)) {
+ cap.period write$ % write(cap_period);
+ edition format.edition write$ % write(format_edition(this.edition));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require edition: " cite$ * warning$ % warning("Require edition: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.address} { % void Entry::output_address(int required) {
+ 'required := % this.required = required;
+ address empty$ not { % if (! empty(this.address)) {
+ cap.period write$ % write(cap_period);
+ address format.address write$ % write(format_address(this.address));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require address: " cite$ * warning$ % warning("Require address: " + this.cite);
+ cap.period write$ % write(cap_period);
+ cap.no.address format.address write$ % write(format_address(cap_no_address()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.publisher} { % void Entry::output_publisher(int required) {
+ 'required := % this.required = required;
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ cap.colon write$ % write(cap_colon);
+ publisher format.publisher write$ % write(format_publisher(this.publisher));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require publisher: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.publisher write$ % write(format_publisher(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.publisher.no.address} { % void Entry::output_publisher_no_address(int required) {
+ 'required := % this.required = required;
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ cap.period write$ % write(cap_period);
+ publisher format.publisher write$ % write(format_publisher(this.publisher));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require publisher: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.period write$ % write(cap_period);
+ cap.no.publisher format.publisher write$ % write(format_publisher(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.school} { % void Entry::output_school(int required) {
+ 'required := % this.required = required;
+ school empty$ not { % if (! empty(this.school)) {
+ cap.colon write$ % write(cap_colon);
+ school format.school write$ % write(format_school(this.school));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require school: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.school write$ % write(format_school(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.institution} { % void Entry::output_institution(int required) {
+ 'required := % this.required = required;
+ institution empty$ not { % if (! empty(this.institution)) {
+ cap.colon write$ % write(cap_colon);
+ institution format.institution write$ % write(format_publisher(this.institution));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require institution: " cite$ * warning$ % warning("Require institution: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.institution write$ % write(format_institution(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.year} { % void Entry::output_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year format.year write$ % write(format_year(this.year));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.pages} { % void Entry::output_pages(int required) {
+ 'required := % this.required = required;
+ pages empty$ not { % if (! empty(this.pages)) {
+ cap.colon write$ % write(cap_colon);
+ get.pages format.pages write$ % write(format_pages(get_pages()));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require pages: " cite$ * warning$ % warning("Require pages: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.modifydate} { % void Entry::output_modifydate(int required) {
+ 'required := % this.required = required;
+ modifydate empty$ not { % if (! empty(this.modifydate)) {
+ cap.space write$ % write(cap_space);
+ modifydate format.modifydate write$ % write(format_modifydate(this.modifydate));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require modifydate: " cite$ * warning$ % warning("Require modifydate: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.citedate} { % void Entry::output_citedate(int required) {
+ 'required := % this.required = required;
+ citedate empty$ not { % if (! empty(this.citedate)) {
+ cap.space write$ % write(cap_space);
+ citedate format.citedate write$ % write(format_citedate(this.citedate));
+ } { % } else {
+ required is.online or { % if ((required == 1) || (is_online())) {
+ "Require citedate: " cite$ * warning$ % warning("Require citedate: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.date} { % void Entry::output_date(int required) {
+ 'required := % this.required = required;
+ date empty$ not { % if (! empty(this.date)) {
+ date format.date write$ % write(format_date(this.date));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require date: " cite$ * warning$ % warning("Require date: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.volume} { % void Entry::output_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume format.volume write$ % write(format_volume(this.volume));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.number} { % void Entry::output_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number format.number write$ % write(format_number(this.number));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.report.number} { % void Entry::output_report_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ cap.colon write$ % write(cap_colon);
+ number format.report.number write$ % write(format_report_number(this.number));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.country} { % void Entry::output_country(int required) {
+ 'required := % this.required = required;
+ country empty$ not { % if (! empty(this.country)) {
+ cap.colon write$ % write(cap_colon);
+ country format.country write$ % write(format_country(this.country));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require country: " cite$ * warning$ % warning("Require country: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.patentid} { % void Entry::output_patentid(int required) {
+ 'required := % this.required = required;
+ patentid empty$ not { % if (! empty(this.patentid)) {
+ cap.comma write$ % write(cap_comma);
+ patentid format.patentid write$ % write(format_patentid(this.patentid));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require patentid: " cite$ * warning$ % warning("Require patentid: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.year} { % void Entry::output_start_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year extract.before.first.dash % String str = extract_before_first_dash(this.year);
+ format.year write$ % write(format_year(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.volume} { % void Entry::output_start_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume extract.before.first.dash % String str = extract_before_first_dash(this.volume);
+ format.volume write$ % write(format_volume(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.number} { % void Entry::output_start_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number extract.before.first.dash % String str = extract_before_first_dash(this.number);
+ format.number write$ % write(format_number(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.year} { % void Entry::output_end_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year extract.after.last.dash % String str = extract_after_last_dash(this.year);
+ format.year write$ % write(format_year(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.volume} { % void Entry::output_end_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume extract.after.last.dash % String str = extract_after_last_dash(this.volume);
+ format.volume write$ % write(format_volume(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.number} { % void Entry::output_end_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number extract.after.last.dash % String str = extract_after_last_dash(this.number);
+ format.number write$ % write(format_number(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.url.or.doi} { % void Entry::output_url_or_doi(int required) {
+ 'required := % this.required = required;
+ url empty$ not { % if (! empty(this.url)) {
+ cap.period write$ % write(cap_period);
+ url format.url write$ % write(format_url(this.url));
+ } { % } else {
+ doi empty$ not { % if (! empty(this.doi)) {
+ cap.period write$ % write(cap_period);
+ cap.doi.url doi * format.url write$ % write(format_url(cap_doi_url + this.doi));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require URL or DOI: " cite$ * warning$ % warning("Require URL or DOI: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.url} { % void Entry::output_url(int required) {
+ 'required := % this.required = required;
+ url empty$ not { % if (! empty(this.url)) {
+ cap.period write$ % write(cap_period);
+ url format.url write$ % write(format_url(this.url));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require URL: " cite$ * warning$ % warning("Require URL: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.version} { % void Entry::output_version(int required) {
+ 'required := % this.required = required;
+ version empty$ not { % if (! empty(this.version)) {
+ cap.period write$ % write(cap_period);
+ version format.version write$ % write(format_version(this.version));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require version: " cite$ * warning$ % warning("Require version: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {book.impl} { % void Entry::book_impl() {
+ start.bibitem % start_bibitem();
+ true output.author.or.editor % output_author_or_editor(true);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {book} { % void Entry::book() {
+ "M" set.mark % set_mark("M");
+ book.impl % book_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {collection} { % void Entry::collection() {
+ "G" set.mark % set_mark("G");
+ book.impl % book_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {proceedings} { % void Entry::proceedings() {
+ "C" set.mark % set_mark("C");
+ start.bibitem % start_bibitem();
+ true output.editor % output_editor(true);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {conference} { % void Entry::conference() {
+ proceedings % proceedings();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {thesis.impl} { % void Entry::thesis_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ true output.address % output_address(true);
+ true output.school % output_school(true);
+ cap.comma write$ % write(cap_comma);
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {phdthesis} { % void Entry::phdthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {masterthesis} { % void Entry::masterthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {bachelorthesis} { % void Entry::bachelorthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {techreport} { % void Entry::techreport() {
+ "R" set.mark % set_mark("R");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ false output.report.number % output_report_number(false);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ false output.version % output_version(false);
+ institution empty$ not { % if (! empty(this.institution)) {
+ true output.address % output_address(true);
+ true output.institution % output_institution(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {standard} { % void Entry::standard() {
+ "S" set.mark % set_mark("S");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {reference} { % void Entry::reference() {
+ "K" set.mark % set_mark("K");
+ start.bibitem % start_bibitem();
+ false output.author.or.editor % output_author_or_editor(false);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {manual} { % void Entry::manual() {
+ reference % reference();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {periodical.impl} { % void Entry::periodical_impl() {
+ start.bibitem % start_bibitem();
+ false output.editor % output_editor(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.start.year % output_start_year(true);
+ false output.start.volume % output_start_volume(false);
+ false output.start.number % output_start_number(false);
+ cap.dash write$ % write(cap_dash);
+ year contain.dash { % if (contain_dash(this.year)) {
+ true output.end.year % output_end_year(true);
+ false output.end.volume % output_end_volume(false);
+ false output.end.number % output_end_number(false);
+ } 'skip$ if$ % }
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.start.year % output_start_year(true);
+ cap.dash write$ % write(cap_dash);
+ year contain.dash { % if (contain_dash(this.year)) {
+ true output.end.year % output_end_year(true);
+ } 'skip$ if$ % }
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {periodical} { % void Entry::periodical() {
+ "J" set.mark % set_mark("J");
+ periodical.impl % periodical_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {newspaper} { % void Entry::newspaper() {
+ "N" set.mark % set_mark("N");
+ periodical.impl % periodical_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {patent} { % void Entry::patent() {
+ "P" set.mark % set_mark("P");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.country % output_country(true);
+ true output.patentid % output_patentid(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.date % output_date(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {online} { % void Entry::online() {
+ "EB" set.mark % set_mark("EB");
+ start.bibitem % start_bibitem();
+ false output.author % output_author(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ address empty$ not { % if (! empty(this.address)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ true output.publisher.no.address % output_publisher_no_address(true);
+ cap.comma write$ % write(cap_comma);
+ } if$ % }
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.modifydate % output_modifydate(false);
+ true output.citedate % output_citedate(true);
+ true output.url % output_url(true);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {webpage} { % void Entry::online() {
+ online % online();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {program.impl} { % void Entry::program_impl() {
+ start.bibitem % start_bibitem();
+ false output.author % output_author(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {program} { % void Entry::program() {
+ "CP" set.mark % set_mark("CP");
+ program.impl % program_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {database} { % void Entry::database() {
+ "DB" set.mark % set_mark("DB");
+ program.impl % program_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {unpublished} { % void Entry::unpublished() {
+ "H" set.mark % set_mark("H");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.year % output_year(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {manuscript} { % void Entry::manuscript() {
+ unpublished % unpublished();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inbook.impl} { % void Entry::inbook_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ cap.double.slash write$ % write(cap_double_slash);
+ false output.editor % output_editor(false);
+ true output.series.volume.booktitle % output_series_volume_booktitle(true);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inbook} { % void Entry::inbook() {
+ "M" set.mark % set_mark("M");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {incollection} { % void Entry::incollection() {
+ "G" set.mark % set_mark("G");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inproceedings} { % void Entry::inproceedings() {
+ "C" set.mark % set_mark("C");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {article} { % void Entry::article() {
+ "J" set.mark % set_mark("J");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ true output.journal % output_journal(true);
+ cap.comma write$ % write(cap_comma);
+ true output.year % output_year(true);
+ false output.volume % output_volume(false);
+ false output.number % output_number(false);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {news} { % void Entry::news() {
+ "N" set.mark % set_mark("N");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ true output.journal % output_journal(true);
+ cap.comma write$ % write(cap_comma);
+ true output.date % output_date(true);
+ false output.number % output_number(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {default.type} { % void Entry::default_type() {
+ "Unsupported entry type for " cite$ * warning$ % warning("Unsupported entry type for " + this.cite);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {longest.label.pass} { % void longest_label_pass(Entry entry) {
+ entry.count #1 + 'entry.count := % entry_count = entry_count + 1;
+ entry.count int.to.str$ 'label := % this.label = int_to_str(entry_count);
+ label width$ longest.label.width > { % if (width(this.label) > longest_label_width) {
+ label 'longest.label := % longest_label = this.label;
+ label width$ 'longest.label.width := % longest_label_width = width(this.label);
+ } 'skip$ if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {write.style.commands} { % void write_style_commands() {
+ cmd.bibauthor write$ % write(cmd_bibauthor);
+ newline$ % writeln();
+ cmd.bibeditor write$ % write(cmd_bibeditor);
+ newline$ % writeln();
+ cmd.bibtranslator write$ % write(cmd_bibtranslator);
+ newline$ % writeln();
+ cmd.bibtitle write$ % write(cmd_bibtitle);
+ newline$ % writeln();
+ cmd.bibbooktitle write$ % write(cmd_bibbooktitle);
+ newline$ % writeln();
+ cmd.bibjournal write$ % write(cmd_bibjournal);
+ newline$ % writeln();
+ cmd.bibmark write$ % write(cmd_bibmark);
+ newline$ % writeln();
+ cmd.bibcountry write$ % write(cmd_bibcountry);
+ newline$ % writeln();
+ cmd.bibpatentid write$ % write(cmd_bibpatentid);
+ newline$ % writeln();
+ cmd.bibedition write$ % write(cmd_bibedition);
+ newline$ % writeln();
+ cmd.biborganization write$ % write(cmd_biborganization);
+ newline$ % writeln();
+ cmd.bibaddress write$ % write(cmd_bibaddress);
+ newline$ % writeln();
+ cmd.bibpublisher write$ % write(cmd_bibpublisher);
+ newline$ % writeln();
+ cmd.bibinstitution write$ % write(cmd_bibinstitution);
+ newline$ % writeln();
+ cmd.bibschool write$ % write(cmd_bibschool);
+ newline$ % writeln();
+ cmd.bibvolume write$ % write(cmd_bibvolume);
+ newline$ % writeln();
+ cmd.bibnumber write$ % write(cmd_bibnumber);
+ newline$ % writeln();
+ cmd.bibversion write$ % write(cmd_bibversion);
+ newline$ % writeln();
+ cmd.bibpages write$ % write(cmd_bibpages);
+ newline$ % writeln();
+ cmd.bibmodifydate write$ % write(cmd_bibmodifydate);
+ newline$ % writeln();
+ cmd.bibcitedate write$ % write(cmd_bibcitedate);
+ newline$ % writeln();
+ cmd.bibyear write$ % write(cmd_bibyear);
+ newline$ % writeln();
+ cmd.bibdate write$ % write(cmd_bibdate);
+ newline$ % writeln();
+ cmd.biburl write$ % write(cmd_biburl);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {begin.bib} { % void begin_bib() {
+ preamble$ empty$ not { % if (! empty(premble)) {
+ preamble$ write$ % write(premeable);
+ newline$ % writeln();
+ } 'skip$ if$ % }
+ env.bibbegin write$ % write(env_bibbegin);
+ "{" longest.label * "}" * write$ % write("{" + longest.label + "}");
+ newline$ % writeln();
+ write.style.commands % write_style_commands();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {end.bib} { % void end_bib() {
+ newline$ % writeln();
+ env.bibend write$ % write(env_bibend);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {initialize} { % void initialize() {
+ #0 'entry.count := % entry_count = 0;
+ #0 'longest.label.width := % longest_label_width = 0;
+ "" 'longest.label := % longest_label = "";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % void main() {
+READ % List<Entry> entryList = read("<file>.bib");
+EXECUTE {initialize} % initialize();
+ITERATE {longest.label.pass} % for (Entry entry : entryList) {
+ % longest_label_pass(entry);
+ % }
+EXECUTE {begin.bib} % begin_bib();
+ITERATE {call.type$} % for (Entry entry : entryList) {
+ % switch (typeof(entry)) {
+ % case "book":
+ % entry.book();
+ % break;
+ % case "article":
+ % entry.article();
+ % break;
+ % .
+ % .
+ % .
+ % case "incollection":
+ % entry.incollection();
+ % break;
+ % case "misc":
+ % entry.misc();
+ % break;
+ % default:
+ % entry.default_type();
+ % }
+ % }
+EXECUTE {end.bib} % end_bib();
+ % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% End of file `GBT7714-2005.bst'
diff --git a/macros/xetex/latex/hithesis/hithesis.dtx b/macros/xetex/latex/hithesis/hithesis.dtx
new file mode 100644
index 0000000000..25454eb6f5
--- /dev/null
+++ b/macros/xetex/latex/hithesis/hithesis.dtx
@@ -0,0 +1,5344 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2017- by Yanshuo Chu <yanshuoc@gmail.com>
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3a
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3a or later is part of all distributions of LaTeX
+% version 2004/10/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{hithesis.dtx}[2019/06/27 2.0.11 Harbin Institute of Technology Thesis Template]
+\documentclass{ltxdoc}
+\usepackage{dtx-style}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \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{索引}
+% \def\glossaryname{修改记录}
+% \IndexPrologue{\section{\indexname}}
+% \GlossaryPrologue{\section{\glossaryname}}
+%
+% \title{\bfseries\color{violet}\hithesis:哈尔滨工业大学学位论文模板}
+% \author{{\fangsong 初砚硕}\\[5pt]\texttt{yanshuoc@gmail.com}}
+% \date{v\fileversion\ (\filedate)}
+% \maketitle\thispagestyle{empty}
+%
+% \begin{abstract}\noindent
+% 该宏包为哈尔滨工业大学本、硕、博毕业论文模板。以后会陆续加入开题、中期、博士后
+% 出站报告等模板。
+% \end{abstract}
+%
+% \vskip2cm
+% \def\abstractname{免责声明}
+% \begin{abstract}
+% \noindent
+% \begin{enumerate}
+% \item 本模板的发布遵守 \LaTeX\ Project Public License,使用前请认真阅读协议内
+% 容。
+% \item 本模板为作者根据\hit 教务处颁发的\UGR ,\hit 研究生院颁发的\PGR 编写而成
+% ,为方便\hit 学生撰写毕业论文使用。
+% \item \hit 教务处和研究生院只提供毕业论文写作指南,不提供官方模板(包括MS word
+% ),也不会授权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格
+% 式审查老师不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无
+% 关。
+% \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵
+% 守 \LaTeX\ Project Public License 协议。由于违犯协议而引起的任何纠纷争端均与
+% 本模板作者无关。
+% \end{enumerate}
+% \end{abstract}
+%
+%
+% \clearpage
+% \pagestyle{fancy}
+% \begin{multicols}{2}[
+% \setlength{\columnseprule}{.4pt}
+% \setlength{\columnsep}{18pt}]
+% \tableofcontents
+% \end{multicols}
+% \clearpage
+%
+% \section{模板介绍}
+% \hithesis\ (\textbf{H}arbin\textbf{I}nstitute of \textbf{T}echnology \LaTeX\
+% \textbf{Thesis} Template) 是为了帮助\hit 毕业生撰写毕业论文而编写
+% 的 \LaTeX\ 论文模板。
+%
+% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处可以参考示例文档或者根据
+% 第~\ref{sec:howtoask} 节说明提问,有兴趣者都可以参与完善此手册,也非常欢迎对代
+% 码的贡献。
+%
+% \note[注意:]{模板的作用在于减少论文写作过程中格式调整的时间。前提是遵守模板的
+% 用法,否则即便用了 \hithesis\ 也难以保证输出的论文符合学校规范。}
+%
+%
+% \section{安装}
+% \label{sec:installation}
+% 未来
+% \hithesis\ 将已经包含在主要的 \TeX\ 发行版中,一般不需要安装,可以利用发行版自
+% 带更新工具自动更新。阅读文档可以使用以下命令:
+% \begin{shell}
+% $ texdoc hithesis
+% \end{shell}
+%
+% 如果要使用开发版,需自己下载,\hithesis\ 相关链接:
+% \begin{itemize}
+% \item github:\href{https://github.com/dustincys/hithesis}
+% {https://github.com/dustincys/hithesis}
+% \item oschina:\href{https://git.oschina.net/dustincys/hithesis}
+% {https://git.oschina.net/dustincys/hithesis}\\ 或码云另外一个域名
+% \href{https://gitee.com/dustincys/hithesis}{https://gitee.com/dustincys/hithesis}
+% \end{itemize}
+%
+% \note[注意:]{如果登录不了github的同学可以登录oschina下载。}
+%
+% \subsection{模板的组成}
+% 下表列出了 \hithesis\ 的主要文件及其功能介绍:
+%
+% \begin{longtable}{l|p{8cm}}
+% \toprule
+% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule
+% \endfirsthead
+% \midrule
+% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule
+% \endhead
+% \endfoot
+% \endlastfoot
+% hithesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\
+% hithesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule
+% hithesis.cls & 模板类文件\\
+% hithesis.cfg & 模板配置文件\\
+% hithesis.bst & 参考文献样式文件\\\midrule
+% hithesis.ist & 索引样式文件\\\midrule
+% reference.bib & 文档参考文献\\
+% main.tex & 示例文档主文件\\
+% front/ & 正文之前内容\\
+% body/ & 正文内容\\
+% body/ & 正文之后内容\\
+% figures/ & 示例文档图片路径\\
+% hithesis.sty & 为示例文档加载其它宏包\\\midrule
+% Makefile & Makefile\\
+% latexmkrc & latexmk 配置文件 \\
+% README.md & Readme\\
+% \textbf{hithesis.pdf} & 用户手册(本文档)\\\bottomrule
+% \end{longtable}
+%
+% 几点说明:
+% \begin{itemize}
+% \item \file{hithesis.cls} 和 \file{hithesis.cfg} 可由 \file{hithesis.ins}
+% 和 \file{hithesis.dtx} 生成。
+% \item 使用前阅读文档:\file{hithesis.pdf}。
+% \item 默认的生成的论文中含有丰富的格式示例,使用前请仔细阅读\file{main.pdf}。
+% \end{itemize}
+%
+% \subsection{生成模板}
+% \label{sec:generate-cls}
+% \note[提示:]{若使用 \TeX 发行版自带的 \hithesis\ 或 Gihitb/OSChina
+% 上发布的版本,可忽略此节,直接阅读第~\ref{sec:generate-thesis}节。若下载
+% CTAN 包或者 Gihitb/OSChina 开发代码,请阅读本节了解生成模板文件的步骤。}
+%
+% 模板解压缩后生成文件夹 \file{hithesis-vX.Y.Z}\footnote{\texttt{vX.Y.Z} 为版本号。},
+% 其中包括:模板源文件(\file{hithesis.ins} 和 \file{hithesis.dtx}),参考文献
+% 样式 \file{hithesis.bst},示例文档
+% (\file{main.tex},\file{shuji.tex},\file{hithesis.sty}\footnote{可能用到的包
+% 以及一些命令定义都放在这里,以免 \file{hithesis.cls} 过分臃
+% 肿。},\file{data/} 和 \file{figures/} 和 \file{ref/})。在使用之前需要先生成模
+% 板文件和配置文件(具体命令细节请参考 \file{README.md} 和 \file{Makefile}):
+%
+% \begin{shell}
+% $ cd hithesis-vX.Y.Z
+% # 生成 hithesis.cls 和 hithesis.cfg
+% $ latex hithesis.ins
+%
+% # 下面的命令用来生成用户手册,可以不执行
+% $ xelatex hithesis.dtx
+% $ makeindex -s gind.ist -o hithesis.ind hithesis.idx
+% $ makeindex -s gglo.ist -o hithesis.gls hithesis.glo
+% $ xelatex hithesis.dtx
+% $ xelatex hithesis.dtx % 生成说明文档 hithesis.pdf
+% \end{shell}
+%
+% \subsection{生成论文}
+% \label{sec:generate-thesis}
+% 本节介绍几种常见的生成论文的方法。用户可根据自己的情况选择。
+%
+% \subsubsection{\XeLaTeX}
+% \label{sec:xelatex}
+% 很多用户对 \LaTeX\ 命令执行的次数不太清楚。一个基本的原则是多次运行 \LaTeX\ 命
+% 令直至不再出现警告。下面给出生成示例文档的详细过程(\texttt{\#} 开头的行为注
+% 释),首先来看推荐的 \texttt{xelatex} 方式:
+% \begin{shell}
+% # 1. 发现里面的引用关系,文件后缀 .tex 可以省略
+% $ xelatex main
+%
+% # 2. 编译参考文件源文件,生成 bbl 文件
+% $ bibtex main
+%
+% # 3. 下面解决引用
+% $ xelatex main
+% $ xelatex main # 如果不需要生成索引此时生成完整的 pdf 文件
+% $ splitindex main -- -s hithesis.ist # 自动生成索引
+% $ xelatex main.tex
+% \end{shell}
+%
+% \subsubsection{latexmk}
+% \label{sec:latexmk}
+% \texttt{latexmk} 命令支持全自动生成 \LaTeX\ 编写的文档,并且支持使用不同的工具
+% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。下面给出了一个用
+% \texttt{latexmk} 调用 \texttt{xelatex} 生成最终文档的示例:
+% \begin{shell}
+% # 一句话就够了!
+% $ latexmk -xelatex main
+% \end{shell}
+%
+% \subsubsection{make}
+% \label{sec:make}
+% \note[提示:]{若要使用 \texttt{make} 编译,需自行下载模板。因为 \TeX\ 发行版中
+% 的 \file{Makefile} 不在当前目录。}
+%
+% 上面的方法虽然不复杂,但是每次都输入还是非常罗嗦,所以 \hithesis\ 提供了一
+% 个 \file{Makefile}:
+%
+% \begin{shell}
+% $ make clean
+% $ make cls # 生成 hithesis.cls 和 hithesis.cfg
+% $ make doc # 生成说明文档 hithesis.pdf
+% $ make thesis # 生成示例文档 main.pdf
+% \end{shell}
+%
+% \hithesis\ 的 \file{Makefile} 默认用 \texttt{latexmk} 调用\texttt{xelatex} 编
+% 译,此外还支持直接用 \texttt{xelatex} 编译。如有需要可修
+% 改 \file{Makefile} 开头的参数或通过命令行传递参数(请参看 \file{README.md}),
+% 进一步还可以修改 \file{latexmkrc} 进行定制。
+%
+% \subsection{升级}
+% \label{sec:updgrade}
+% \hithesis\ 升级非常简单,可以通过 \TeX 发行版的包管理工具自动更新发行版,也可
+% 以下载最新的开发版,
+% 将 \file{hithesis.ins},\file{hithesis.dtx} 拷贝至工作目
+% 录覆盖相应的文件,然后运行:
+% \begin{shell}
+% $ latex hithesis.ins
+% \end{shell}
+%
+% 生成新的类文件和配置文件即可。也可以直接拷
+% 贝 \file{hithesis.cls},\file{hithesis.cfg} 和
+% \file{hithesis.ist},免去上面命令的执行。
+%
+%
+% \section{使用说明}
+% \label{sec:usage}
+% 本手册假定用户已经能处理一般的 \LaTeX\ 文档,并对 \BibTeX\ 有一定了解。如果
+% 从来没有接触过 \TeX\ 和 \LaTeX,建议先学习相关的基础知识。
+%
+% \subsection{关于提问}
+% \label{sec:howtoask}
+% 按照优先级推荐提问的位置如下:
+%
+% \begin{itemize}
+% \item \href{http://gihitb.com/dustincys/hithesis/issues}{Gihitb Issues}
+% \item \href{https://git.oschina.net/dustincys/hithesis/issues}{OSChina Issues}
+% \item hithesis QQ 讨论群:259959600
+% \end{itemize}
+%
+% \subsection{示例文件}
+% \label{sec:userguide}
+% 模板核心文件有三
+% 个:\file{hithesis.cls},\file{hithesis.cfg} 和\file{hithesis.bst},但是如果
+% 没有示例文档用户会发现很难下手。所以推荐新用户从模板自带的示例文档入手,里面包
+% 括了论文写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。
+% 对于不清楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示
+% 例文档,具体内容可以参考模板附带的 \file{main.tex}。
+%
+% \lstinputlisting[style=lstStyleLaTeX]{main.tex}
+%
+% \subsection{论文选项}
+% \label{sec:option}
+%
+% 论文选项,就是在\file{main.tex}文件的开头,非注释的第一行的方括号中填写的选项,示例见上节。
+% 各个选项的含义说明已经在上节中说明,所以这里就不重复了。
+%
+% \subsection{中文字体}
+% \label{sec:chinese-fonts}
+% 正确配置中文字体是使用模板的第一步。模板调用 \CTeX\ 宏包,只提供基于
+% \pkg{xeCJK} 包,使用 \XeLaTeX\ 编译的方式。
+% 关于如何使用字体命令、字号等等,属于模板格式范畴,在实现细节中讨论。
+% 关于中文字体安装、配置的所有问题不在本模板讨论 范围。
+%
+% \subsection{前文}
+% \label{sec:titlepage}
+% 前文内容是正文之前,含封面、摘要、目录、符号表。
+% 封面信息提供两种配置方法:一是通过统一设置命 令 \cs{hitsetup}
+% 通过\emph{key=value} 形式完成;二是每个信息利用命令独立设置, 其中命令的名字跟
+% \emph{key} 相同。两种方式可以交叉使用,并按顺序执行(即后来的设置会覆
+% 盖前面的)。以 \texttt{c} 开头的命令跟中文相关,\texttt{e}
+% 开头则为对应的英文。
+%
+% \DescribeMacro{\hitsetup}
+% \cs{hitsetup} 用法与常见 \emph{key=value} 命令相同,如下:
+% \begin{latex}
+% \hitsetup{
+% key1 = value1,
+% key2 = {a value, with comma},
+% }
+% % 可以多次调用
+% \hitsetup{
+% key3 = value3,
+% key1 = value11, % 覆盖 value1
+% }
+% \end{latex}
+%
+% \note[注意:]{\cs{hitsetup} 使用 \pkg{kvoptions} 机制,所以配置项之间不能有空行,否则
+% 会报错。}
+%
+% 大多数命令的使用方法都是: \cs{command}\marg{arg},例外者将具体指出。这些命令都
+% 在示例文档的 \file{front/cover.tex} 中。
+%
+% \subsubsection{密级}
+% \label{sec:setup-secret}
+% \DescribeMacro{statesecrets}
+% \DescribeMacro{natclassifiedindex}
+% \DescribeMacro{intclassifiedindex}
+% 定义秘密级别和国内国际索引号。
+% \begin{latex}
+% \hitsetup{
+% statesecrets={公开},
+% natclassifiedindex={TM301.2},
+% intclassifiedindex={62-5},
+% }
+% \end{latex}
+%
+% \subsubsection{论文标题}
+% \myentry{论文标题}
+% \DescribeMacro{ctitle}
+% \DescribeMacro{etitle}
+% \DescribeMacro{ctitleone}
+% \DescribeMacro{ctitletwo}
+% \DescribeMacro{csubtitle}
+% \DescribeMacro{esubtitle}
+% 中英文标题。
+% 如果有副标题,需要在封面选项中设置subtitle=true,否则不显示副标题。
+% \begin{latex}
+% \hitsetup{
+% ctitlecover={封面中文题目可断行},
+% ctitle={论文中文题目},
+% etitle={Thesis English Title},
+% csubtitle={论文中文副题目(如果有)},
+% esubtitle={Thesis English Sub-Title (if necessary)},
+% ctitleone={本科生论文中文题目上部分},
+% ctitletwo={本科生论文中文题目下部分},
+% }
+% \end{latex}
+%
+% \subsubsection{作者姓名}
+% \myentry{作者姓名}
+% \DescribeMacro{cauthor}
+% \DescribeMacro{eauthor}
+% 作者姓名。
+% \begin{latex}
+% \hitsetup{
+% cauthor={中文姓名},
+% eauthor={Name in Pinyin}
+% }
+% \end{latex}
+%
+% \subsubsection{申请学位名称}
+% \label{sec:degree}
+% \myentry{学科名称}
+% \DescribeMacro{cxueke}
+% \DescribeMacro{exueke}
+% 按照入学的培养计划中学科自行填写,具体学科名称不是本文档范畴。
+%
+% \begin{latex}
+% \hitsetup{
+% cxueke={工学},
+% exueke={Engineering},
+% }
+% \end{latex}
+%
+% \subsubsection{院系名称}
+% \myentry{院系名称}
+% \DescribeMacro{caffil}
+% \DescribeMacro{eaffil}
+% 院系名称,同上,按照入学的培养计划中学科自行填写,具体院系名称不是本文档范畴。
+% \begin{latex}
+% \hitsetup{
+% caffil={机电工程学院},
+% eaffil={\emultiline[t]{School of Mechatronics Engineering \\ Mechatronics Engineering}},
+% }
+% \end{latex}
+% \note[注意:]{个别学院英文名过长,使用以上方法自行换行。}
+%
+% \subsubsection{专业名称}
+% \myentry{专业名称}
+% \DescribeMacro{csubject}
+% \DescribeMacro{esubject}
+% 专业名称,同上,按照入学的培养计划中学科自行填写,具体名称不是本文档范畴。
+% \begin{latex}
+% \hitsetup{
+% csubject={机械制造及其自动化},
+% esubject={Computer Science and Technology},
+% }
+% \end{latex}
+%
+% \subsubsection{导师}
+% \myentry{导师}
+% \DescribeMacro{csupervisor}
+% \DescribeMacro{esupervisor}
+% 直接导师。
+% \begin{latex}
+% \hitsetup{
+% csupervisor={导师~教授},
+% esupervisor={Supervisor}
+% }
+% \end{latex}
+%
+% \myentry{副导师}
+% \DescribeMacro{cassosupervisor}
+% \DescribeMacro{eassosupervisor}
+% 副指导教师。
+% \begin{latex}
+% \hitsetup{
+% cassosupervisor={副导师~副教授},
+% eassosupervisor={2nd Boss}
+% }
+% \end{latex}
+%
+% \myentry{联合导师}
+% \DescribeMacro{ccosupervisor}
+% \DescribeMacro{ecosupervisor}
+% 硕士生联合指导教师,博士生联合导师。
+% \begin{latex}
+% \hitsetup{
+% ccosupervisor={联合导师~教授},
+% ecosupervisor={3rd Boss}
+% }
+% \end{latex}
+%
+% \subsubsection{成文日期}
+% \myentry{日期}
+% \DescribeMacro{cdate}
+% \DescribeMacro{edate}
+% 默认为当前时间,也可以自己指定。
+% \begin{latex}
+% \hitsetup{
+% cdate={中文日期},
+% edate={English Date},
+% }
+% \end{latex}
+%
+% \subsubsection{学生类型}
+% \myentry{学生类型}
+% \DescribeMacro{cstudenttype}
+% \DescribeMacro{estudenttype}
+% 非全日制教育申请学位者
+%(同等学力人员)、(工程硕士)、(工商管理硕士)、
+%(高级管理人员工商管理硕士)、(公共管理硕士)、(中职教师)、(高校教师)等,
+% 具体要求按照入学的培养计划中学科自行填写,具体名称不是本文档范畴。
+% \begin{latex}
+% \hitsetup{
+% cstudenttype={同等学力人员},
+% estudenttype={Master of Art},
+% }
+% \end{latex}
+%
+% \subsubsection{学号}
+% \myentry{学号}
+% \DescribeMacro{cstudentid}
+% 学号,具体要求按照入学的培养计划中学科自行填写。
+% \begin{latex}
+% \hitsetup{
+% cstudentid={9527},
+% }
+% \end{latex}
+%
+% \subsubsection{摘要}
+% \myentry{摘要正文}
+% \DescribeEnv{cabstract}
+% \DescribeEnv{eabstract}
+% \note[说明:]{摘要正文只能用环境命令的形式,不支持 \cs{hitsetup}。}
+%
+% \begin{latex}
+% \begin{cabstract}
+% 摘要请写在这里...
+% \end{cabstract}
+%
+% \begin{eabstract}
+% Here comes the abstract in English...
+% \end{eabstract}
+% \end{latex}
+%
+% \myentry{关键词}
+% \DescribeMacro{ckeywords}
+% \DescribeMacro{ekeywords}
+% 关键词用英文逗号分割写入相应的命令中,模板会解析各关键词并生成符合不同论文格式
+% 要求的关键词格式。
+% \begin{latex}
+% \hitsetup{
+% ckeywords={关键词 1, 关键词 2},
+% ekeywords={keyword 1, keyword 2}
+% }
+% \end{latex}
+%
+% \subsubsection{符号对照表}
+% \DescribeEnv{denotation}
+% 主要符号表环境,单独在文件\file{front/denotation.tex}中。
+% 跟据\PGR\
+% 示例中要求,我工符号表是table环境,示例文件如下,由于我工要求博士论文图表标题是双语,所以任何对单个标题的全局格式调整都会影响到双语标题,所以这里使用\cs{vspace},具体见实现细节中的描述。
+% \begin{latex}
+% \begin{denotation}
+% \begin{table}[h]%此处最好是h
+% \caption{国际单位制中具有专门名称的导出单位}
+% \vspace{0.5em}\centering\wuhao
+% \begin{tabular}{ccccc}
+% \toprule[1.5pt]
+% 量的名称&单位名称&单位符号&其它表示实例\\
+% \midrule[1pt]
+% 频率&赫[兹]&Hz&s-1\\
+% \bottomrule[1.5pt]
+% \end{tabular}
+% \end{table}
+% \end{denotation}
+% \end{latex}
+%
+% \subsubsection{目录}
+% 目录不需要用户干预,自动生成,具体命令已经写在\file{main.tex}中。
+%
+% \subsection{正文}
+%
+% \subsubsection{图和表}
+% \hit\ 博士毕业论文要求使用中英双语图题、表题,这增加了维护难度。
+% 因为现有唯一的方法是在已有的图题或表题的基础上再添加一行英语图题或表题。
+% 两个题之间的距离具体多少不在\PGR\ 中要求。目前的方法是用户手动调节该距离。
+% 关于图题\PGR\ 和\UGR\ 只规定了居中,并没有规定居中对其。然而评审老师很多喜欢居
+% 中且居中对齐。模板默认选项是居中且居中对齐,如果不喜欢居中对齐,那么需要在
+% \file{main.tex}的文档类选项中设置选项capcenterlast=false。详细方法见前文的介绍
+% 。
+% \begin{hitrgu}
+% 每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个
+% 半角字符排写。图序按章编排,如第1章第一个插图的图号为“图1-1”。图题置于图下,硕
+% 士论文只用中文,博士论文用中、英两种文字,居中书写,中文在上,要求中文用宋体5
+% 号字,英文用Times New Roman 5号字。有图注或其它说明时应置于图题之上。引用图应
+% 注明出处,在图题右上角加引用文献号。图中若有分图时,分图题置于分图之下或图题之
+% 下,可以只用中文书写,分图号用a)、b)等表示。图中各部分说明应采用中文(引用的外
+% 文图除外)或数字符号,各项文字说明置于图题之上(有分图时,置于分图题之上)。图
+% 中文字用宋体、Times New Roman字体,字号尽量采用5号字(当字数较多时可用小5号字
+% ,以清晰表达为原则,但在一个插图内字号要统一)。同一图内使用文字应统一。图表中
+% 物理量、符号用斜体。
+% \end{hitrgu}
+% 单双语图题的方法如下,注释中说明。
+% \begin{latex}
+% \begin{figure}[htpb]
+% \centering
+% \includegraphics[width = 0.4\textwidth]{golfer}
+% \bicaption[golfer1]{}{注意图中文字尽量用五号字
+% }{Fig.$\!$}{The person playing golf}
+% \end{figure}
+% \end{latex}
+% 单张单图题的格式如下,
+% \begin{latex}
+% \begin{figure}[h]
+% \centering
+% \includegraphics[width = 0.4\textwidth]{golfer}
+% \caption{注意图中文字字号尽量用五号字}
+% \end{figure}
+% \end{latex}
+% 并排图例。
+% \begin{latex}
+% \begin{figure}[htbp]
+% \centering
+% \begin{minipage}{0.4\textwidth}
+% \centering
+% \includegraphics[width=\textwidth]{golfer}
+% \bicaption[golfer2]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+% \end{minipage}
+% \begin{minipage}{0.4\textwidth}
+% \centering
+% \includegraphics[width=\textwidth]{golfer}
+% \bicaption[golfer3]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+% \end{minipage}
+% \end{figure}
+% \end{latex}
+% 子图图例。
+% \begin{latex}
+% \begin{figure}[htbp]
+% \centering
+% \subfigure{\label{golfer41}}\addtocounter{subfigure}{-2}
+% \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~1]{\includegraphics[width=0.4\textwidth]{golfer}}}
+% \subfigure{\label{golfer42}}\addtocounter{subfigure}{-2}
+% \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~2]{\includegraphics[width=0.4\textwidth]{golfer}}}
+% \bicaption[golfer4]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+% \end{figure}
+% \end{latex}
+% 表格示例,表格中的字体是可以自行调整的。
+% \begin{latex}
+% \begin{table}[htbp]
+% \bicaption[table1]{}{符合研究生院绘图规范的表格}{Table$\!$}{Table in agreement of the standard from graduate school}
+% \vspace{0.5em}\centering\wuhao
+% \begin{tabular}{ccccc}
+% \toprule[1.5pt]
+% $D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\
+% \midrule[1pt]
+% 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\
+% 10 & 421.0 & 0.001035 & 3.59 & 0.04089\\
+% 20 & 640.2 & 0.001565 & 7.18 & 0.04089\\
+% \bottomrule[1.5pt]
+% \end{tabular}
+% \end{table}
+% \end{latex}
+% 因为长表格不是浮动体,不会自动调整位置、也不会自动调整字体大小,一切都要手动设
+% 置。特别繁琐。
+% \begin{latex}
+% \ltfontsize{\dawu[1.667]} %设置表格内字体行间距
+% \dawu[1.667]\begin{longtable}{ccc} % 注意此处设置的是表格线距离
+% \longbionenumcaption{}{{\wuhao 中国省级行政单位一览 %此处要添加字体设置
+% }\label{table2}}{Table$\!$}{}{{\wuhao Overview of the provincial administrative
+% unit of China}}{-0.5em}{3.15bp}\\ %注意后两个参数分别是中英标题间距、标题和表格的间距。
+% %\caption{\wuhao 中国省级行政单位一览}\\[1em] %注意此处是标题和表格间距,这行
+% %是单语标题
+% \toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+% \endfirsthead
+% \multicolumn{3}{r}{表~\thetable(续表)}\vspace{0.5em}\\
+% \toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+% \endhead
+% \bottomrule[1.5pt]
+% \endfoot
+% 北京市 & 京 & 北京\\
+% 天津市 & 津 & 天津\\
+% 河北省 & 冀 & 石家庄市\\
+% 山西省 & 晋 & 太原市\\
+% 内蒙古自治区 & 蒙 & 呼和浩特市\\
+% 辽宁省 & 辽 & 沈阳市\\
+% 吉林省 & 吉 & 长春市\\
+% 黑龙江省 & 黑 & 哈尔滨市\\
+% 上海市 & 沪/申 & 上海\\
+% 江苏省 & 苏 & 南京市\\
+% 浙江省 & 浙 & 杭州市\\
+% 安徽省 & 皖 & 合肥市\\
+% 福建省 & 闽 & 福州市\\
+% 江西省 & 赣 & 南昌市\\
+% 山东省 & 鲁 & 济南市\\
+% 河南省 & 豫 & 郑州市\\
+% 湖北省 & 鄂 & 武汉市\\
+% 湖南省 & 湘 & 长沙市\\
+% 广东省 & 粤 & 广州市\\
+% 广西壮族自治区 & 桂 & 南宁市\\
+% 海南省 & 琼 & 海口市\\
+% 重庆市 & 渝 & 重庆\\
+% 四川省 & 川/蜀 & 成都市\\
+% 贵州省 & 黔/贵 & 贵阳市\\
+% 云南省 & 云/滇 & 昆明市\\
+% 西藏自治区 & 藏 & 拉萨市\\
+% 陕西省 & 陕/秦 & 西安市\\
+% 甘肃省 & 甘/陇 & 兰州市\\
+% 青海省 & 青 & 西宁市\\
+% 宁夏回族自治区 & 宁 & 银川市\\
+% 新疆维吾尔自治区 & 新 & 乌鲁木齐市\\
+% 香港特别行政区 & 港 & 香港\\
+% 澳门特别行政区 & 澳 & 澳门\\
+% 台湾省 & 台 & 台北市\\
+% \end{longtable}\normalsize %注意这里要恢复正常字体
+% \end{latex}
+% \subsubsection{公式}
+% 公式不做介绍,与正常用法一致。
+% \subsubsection{数学环境}
+% \label{sec:math}
+% \hithesis\ 定义了常用的数学环境:
+%
+% \begin{center}
+% \begin{tabular}{*{7}{l}}\toprule
+% axiom & theorem & definition & proposition & lemma & conjecture &\\
+% 公理 & 定理 & 定义 & 命题 & 引理 & 猜想 &\\\midrule
+% proof & corollary & example & exercise & assumption & remark & problem \\
+% 证明 & 推论 & 例子& 练习 & 假设 & 注释 & 问题\\\bottomrule
+% \end{tabular}
+% \end{center}
+%
+% 比如:
+% \begin{latex}
+% \begin{definition}
+% 道千乘之国,敬事而信,节用而爱人,使民以时。
+% \end{definition}
+% \end{latex}
+% 产生(自动编号):
+% \medskip
+%
+% \noindent\framebox[\linewidth][l]{{\heiti 定义~1.1~~~} % {道千乘之国,敬事而信,节用而爱人,使民以时。}}
+%
+% \smallskip
+% 列举出来的数学环境毕竟是有限的,如果想用\emph{胡说}这样的数学环境,那么可以定义:
+% \begin{latex}
+% \newtheorem{nonsense}{胡说}[chapter]
+% \end{latex}
+%
+% 然后这样使用:
+% \begin{latex}
+% \begin{nonsense}
+% 契丹武士要来中原夺武林秘笈。—— 慕容博
+% \end{nonsense}
+% \end{latex}
+% 产生(自动编号):
+%
+% \medskip
+% \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}}
+% \subsubsection{算法}
+% 我工算法不在规范中要求且一千个评审老师有一千个算法格式喜好。详见
+% \href{https://github.com/PlutoThesis/PlutoThesis#%E6%B2%A1%E6%9C%89%E6%98%8E%E7%A1%AE%E8%A6%81%E6%B1%82%E7%9A%84%E6%A0%BC%E5%BC%8F}{PlutoThesis}
+% 中的各个实验室算法喜好举例。在此多说无益。
+% \subsubsection{引用参考文献}
+% \DescribeMacro{\inlinecite}
+% 学校要求的参考文献引用有两种模式:(1)上标模式。比如``同样的工作有很
+% 多$^{[1,2]}$\ldots''。(2)正文模式。比如``文[3] 中详细说明了\ldots''。其中上标
+% 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规
+% 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。
+%
+% 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry:
+% \texttt{language},将其设置为 \texttt{zh} 用来指示此参考文献为中文,以
+% 便 \file{hithesis.bst} 处理。如:
+% \begin{latex}
+% @INPROCEEDINGS{cnproceed,
+% author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
+% title = {武林高手从入门到精通},
+% booktitle = {第~$N$~次华山论剑},
+% year = 2006,
+% address = {西安, 中国},
+% month = sep,
+% language = "zh",
+% }
+%
+% @ARTICLE{cnarticle,
+% AUTHOR = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
+% TITLE = "论刘姥姥食量大如牛之现实意义",
+% JOURNAL = "红楼梦杂谈",
+% PAGES = "260--266",
+% VOLUME = "224",
+% YEAR = "1800",
+% LANGUAGE = "zh",
+% }
+% \end{latex}
+%
+% 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行,
+% 以避免可能的编译错误。
+%
+% \subsubsection{列表环境}
+% \DescribeEnv{itemize}
+% \DescribeEnv{enumerate}
+% \DescribeEnv{description}
+% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
+% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
+% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
+% \subsection{后文}
+%
+% \subsubsection{结论}
+% \DescribeEnv{conclusion}
+% 结论之后为后文内容。
+% \begin{latex}
+% \begin{conclusions}
+%
+% 学位论文的结论作为论文正文的最后一章单独排写,但不加章标题序号。
+%
+% 结论应是作者在学位论文研究过程中所取得的创新性成果的概要总结,不能与摘要混为一
+% 谈。博士学位论文结论应包括论文的主要结果、创新点、展望三部分,在结论中应概括论
+% 文的核心观点,明确、客观地指出本研究内容的创新性成果(含新见解、新观点、方法创
+% 新、技术创新、理论创新),并指出今后进一步在本研究方向进行研究工作的展望与设想
+% 。对所取得的创新性成果应注意从定性和定量两方面给出科学、准确的评价,分(1)、
+% (2)、(3)…条列出,宜用“提出了”、“建立了”等词叙述。
+%
+% \end{conclusions}
+% \end{latex}
+%
+% \subsubsection{参考文献}
+% 在后文中的参考文献是自动生成的,不需要用户干预,具体命令在\file{main.tex}中有
+% 示例。
+%
+% \subsubsection{附录}
+% \DescribeEnv{appendix}
+% 所有的附录都插到这里来。因为附录会更改默认的 chapter 属性,而后面的{\heiti 个人简
+% 历}又需要恢复,所以实现为环境可以保证全局的属性不受影响。
+% \begin{latex}
+% \begin{appendix}
+% \input{back/appA.tex}
+% \end{appendix}
+% \end{latex}
+%
+% \subsubsection{所发表文章}
+% \DescribeEnv{publication}
+% 虽然在\PGR\UGR\ 中都没有明确规定此处的格式,但按照旧模板PlutoThesis,此处格式
+% 非常复杂。此处仍然使用旧模板中的设置方法。
+% \begin{latex}
+% \begin{publication}
+% \noindent\textbf{(一)发表的学术论文}
+% \begin{publist}
+% \item XXX,XXX. Static Oxidation Model of Al-Mg/C Dissipation Thermal Protection Materials[J]. Rare Metal Materials and Engineering, 2010, 39(Suppl. 1): 520-524.(SCI~收录,IDS号为~669JS,IF=0.16)
+% \item XXX,XXX. 精密超声振动切削单晶铜的计算机仿真研究[J]. 系统仿真学报,2007,19(4):738-741,753.(EI~收录号:20071310514841)
+% \item XXX,XXX. 局部多孔质气体静压轴向轴承静态特性的数值求解[J]. 摩擦学学报,2007(1):68-72.(EI~收录号:20071510544816)
+% \item XXX,XXX. 硬脆光学晶体材料超精密切削理论研究综述[J]. 机械工程学报,2003,39(8):15-22.(EI~收录号:2004088028875)
+% \item XXX,XXX. 基于遗传算法的超精密切削加工表面粗糙度预测模型的参数辨识以及切削参数优化[J]. 机械工程学报,2005,41(11):158-162.(EI~收录号:2006039650087)
+% \item XXX,XXX. Discrete Sliding Mode Cintrok with Fuzzy Adaptive Reaching Law on 6-PEES Parallel Robot[C]. Intelligent System Design and Applications, Jinan, 2006: 649-652.(EI~收录号:20073210746529)
+% \end{publist}
+%
+% \noindent\textbf{(二)申请及已获得的专利(无专利时此项不必列出)}
+% \begin{publist}
+% \item XXX,XXX. 一种温热外敷药制备方案:中国,88105607.3[P]. 1989-07-26.
+% \end{publist}
+%
+% \noindent\textbf{(三)参与的科研项目及获奖情况}
+% \begin{publist}
+% \item XXX,XXX. XX~气体静压轴承技术研究, XX~省自然科学基金项目.课题编号:XXXX.
+% \item XXX,XXX. XX~静载下预应力混凝土房屋结构设计统一理论. 黑江省科学技术二等奖, 2007.
+% \end{publist}
+% %\vfill
+% %\hangafter=1\hangindent=2em\noindent
+% %\setlength{\parindent}{2em}
+% \end{publication}
+% \end{latex}
+%
+% \subsubsection{索引}
+% \DescribeEnv{ceindex}
+% 我工要求中英文双语索引。后文中的自动索引实际上不需要用户干预。
+%\begin{latex}
+% \begin{ceindex}
+% %如果想要手动加索引,注释掉以下这一样,用wordlist环境
+% \printsubindex*
+% \end{ceindex}
+%\end{latex}
+% 手工添加索引的方法不推荐,模板中将去除该功能。
+% \subsubsection{授权}
+% \DescribeMacro{\authorization}
+% 授权页中的签名和日期是需要手写,不需要人工干预。具体示例在\file{main.tex}中。
+%\begin{latex}
+% \authorization %授权
+% %\authorization[saomiao.pdf] %添加扫描页的命令,与上互斥
+%\end{latex}
+%
+% \subsubsection{致谢声明}
+% \DescribeEnv{acknowledgement}
+% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦!
+%
+% \begin{latex}
+% \begin{acknowledgement}
+% …
+% 感谢\hit\LaTeX\ 论文模板\hithesis\ !
+% \end{acknowledgement}
+% \end{latex}
+%
+%
+% \subsubsection{简历}
+% \DescribeEnv{resume}
+% 个人简历。
+% 实际上,致谢和个人简历是自由发挥的地区,字体,文体,格式,内容,完全自己决定。
+% \begin{latex}
+% \begin{resume}
+% XXXX~年~XX~月~XX~日出生于~XXXX。
+%
+% XXXX~年~XX~月考入~XX~大学~XX~院(系)XX~专业,XXXX~年~XX~月本科毕业并获得~XX~学学士学位。
+%
+% XXXX~年~XX~月------XXXX~年~XX~月在~XX~大学~XX~院(系)XX~学科学习并获得~XX~学硕士学位。
+%
+% XXXX~年~XX~月------XXXX~年~XX~月在~XX~大学~XX~院(系)XX~学科学习并获得~XX~学博士学位。
+%
+% 获奖情况:如获三好学生、优秀团干部、X~奖学金等(不含科研学术获奖)。
+%
+% 工作经历:
+% \end{resume}
+% \end{latex}
+%
+% \subsection{其它}
+% 模板的配置文件 \file{hithesis.cfg} 中定义了很多固定词汇,一般无须修改。如果有特殊需求,
+% 推荐在导言区使用 \cs{renewcommand}。
+%
+%
+% \subsection{捐助}
+% \changes{v1.0.1}{2017/08/27}{添加了捐助、矢量化本科论文模板的图片logo}
+% 各位刀客和大侠如用的嗨,要解囊相助,请微信或支付宝参照图
+% ~\ref{wct5}-\ref{zfb}~中提示操作(二维码被矢量化后之后去
+% 除了头像等冗余无用的部分~)。
+% \begin{figure}[h]
+% \centering\includegraphics[width=0.5\textwidth]{wct5.eps}
+% \caption{如果用的嗨,微信扫码捐助5元~~}
+% \label{wct5}
+% \end{figure}
+% \begin{figure}[h]
+% \centering\includegraphics[width=0.5\textwidth]{wct10.eps}
+% \caption{如果用的非常嗨,微信扫码捐助10元~~}
+% \label{wct10}
+% \end{figure}
+% \begin{figure}[h]
+% \centering\includegraphics[width=0.5\textwidth]{wct1.eps}
+% \caption{那个,看在熬夜写代码的份上,微信扫码捐助1元吧~~}
+% \label{wct1}
+% \end{figure}
+% \begin{figure}[h]
+% \centering\includegraphics[width=0.5\textwidth]{zfb.eps}
+% \caption{支付宝不限额度}
+% \label{zfb}
+% \end{figure}
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+% \clearpage
+%
+% \section{实现细节}
+%
+% \subsection{基本信息}
+% \begin{macrocode}
+%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<cls>\ProvidesClass{hithesis}
+%<cfg>\ProvidesFile{hithesis.cfg}
+%<cls|cfg>[2019/06/27 2.0.11 Harbin Institute of Technology Thesis Template]
+% \end{macrocode}
+%
+% \subsection{定义选项}
+% \label{sec:defoption}
+% \begin{macrocode}
+%<*cls>
+\RequirePackage{ifthen}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+ family=hit,
+ prefix=hit@,
+ setkeys=\kvsetkeys}
+\newif\ifhit@bachelor
+\newif\ifhit@master
+\newif\ifhit@doctor
+\define@key{hit}{type}{%
+ \hit@bachelorfalse
+ \hit@masterfalse
+ \hit@doctorfalse
+ \expandafter\csname hit@#1true\endcsname}
+% \end{macrocode}
+% 设置版芯,由于窝工版芯歧义。
+% \changes{v2.0.0}{2018/6/14}{此处添加geometry选项}
+% \begin{macrocode}
+\newif\ifhit@geometrynewone
+\newif\ifhit@geometrynewtwo
+\define@key{hit}{newgeometry}{%
+ \hit@geometrynewonefalse
+ \hit@geometrynewtwofalse
+ \expandafter\csname hit@geometrynew#1true\endcsname}
+% \end{macrocode}
+% 目录中英文是否用 Arial 字体(默认关闭)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{arialtoc}
+% \end{macrocode}
+% 章节标题中的英文是否用 Arial 字体(默认打开)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{arialtitle}
+% \end{macrocode}
+% \changes{v1.0.3}{2017/08/29}{默认开启raggedbottom}
+% \option{raggedbottom} 选项(默认开启)。如果不开启这个选项,会出现一页中尽量上
+% 下对齐,段的间距大。如果开启,尽量使段间距保持一致,页面底部出现空白。
+% \begin{macrocode}
+\DeclareBoolOption[true]{raggedbottom}
+% \end{macrocode}
+% 在脚注标记中使用 \pkg{pifont} 的带圈数字(默认关闭)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{pifootnote}
+% \end{macrocode}
+% 字体间距设置(默认关闭)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{glue}
+% \end{macrocode}
+% 文科生四级目录设置(默认关闭)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{tocfour}
+% \end{macrocode}
+% 目录中“目录”位置是否空行(默认开启)。
+% \begin{macrocode}
+\DeclareBoolOption[true]{tocblank}
+% \end{macrocode}
+% 章标题是否悬挂居中(默认开启)
+% \begin{macrocode}
+\DeclareBoolOption[true]{chapterhang}
+% \end{macrocode}
+% 是否是全日制学生(默认是)。
+% \begin{macrocode}
+\DeclareBoolOption[true]{fulltime}
+% \end{macrocode}
+% 是否有子标题(默认是)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{subtitle}
+% \end{macrocode}
+% 是否开启debug模式(默认否)。如果开启,载入显示行号等的包,只为开发调试用。
+% \begin{macrocode}
+\DeclareBoolOption[false]{debug}
+% \end{macrocode}
+% \changes{v2.0.0}{2018/6/14}{此处删除newgeometry选项}
+% 是否使用右开页(默认否)。
+% \begin{macrocode}
+\DeclareBoolOption[false]{openright}
+% \end{macrocode}
+% \changes{v2.0.10}{2019/6/25}{此处添加是否为提交图书馆电子版}
+% 是否为提交图书馆电子版。
+% \begin{macrocode}
+\DeclareBoolOption[false]{library}
+% \end{macrocode}
+% 图题和标题最后一行是否居中对其(默认是,非规范要求)。
+% \changes{v1.0.6}{2017/10/25}{此处更改了选项的名称}
+% \begin{macrocode}
+\DeclareBoolOption[false]{capcenterlast}
+% \end{macrocode}
+% 子图图题和标题最后一行是否居中对其(默认是,非规范要求)。
+% \changes{v1.0.6}{2017/10/25}{此处添加子图最后一行图题是否居中选项}
+% \begin{macrocode}
+\DeclareBoolOption[false]{subcapcenterlast}
+% \end{macrocode}
+% 中文目录中Abstract是否均为大写
+% \changes{v1.0.13}{2018/4/5}{此处添加中文目录中Abstract是否均为大写选项}
+% \begin{macrocode}
+\DeclareBoolOption[false]{absupper}
+% \end{macrocode}
+% 此处添加控制本科论文的页码横线选项
+% \changes{v1.0.15}{2018/06/05}{添加控制本科论文的页码横线选项}
+% \begin{macrocode}
+\DeclareBoolOption[false]{bsmainpagenumberline}
+\DeclareBoolOption[false]{bsfrontpagenumberline}
+\DeclareBoolOption[true]{bsheadrule}
+% \end{macrocode}
+% 数学字体是否使用新罗马
+% \changes{v2.0.5}{2018/12/05}{添加数学字体开关}
+% \begin{macrocode}
+\DeclareBoolOption[true]{newtxmath}
+% \end{macrocode}
+% 此处应广大刀客要求添加一参考文献分割开关
+% \changes{v2.0.3}{2018/10/08}{添加参考文献分割开关}
+% \begin{macrocode}
+\DeclareBoolOption[false]{splitbibitem}
+% \end{macrocode}
+% 声明字体选项。
+% \begin{macrocode}
+\DeclareStringOption{fontset}
+% \end{macrocode}
+% 将其余选项默认传递给 \pkg{ctexbook}。
+% \begin{macrocode}
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
+% \end{macrocode}
+% 解析用户传递过来的选项,并加载 \pkg{ctexbook}。
+% \begin{macrocode}
+\ProcessKeyvalOptions*
+% \end{macrocode}
+% 使用 \XeTeX\ 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动调用。传递
+% 给 \pkg{fontspec} 宏包 \option{no-math} 选项,避免部分数学符号字体自动调整
+% 为 CMR。其他引擎下没有这个问题,这一行会被无视。
+% \begin{macrocode}
+\PassOptionsToPackage{no-math}{fontspec}
+% \end{macrocode}
+% 载入单双面打印设置,本、硕单面,博士双面。
+% \begin{macrocode}
+\ifhit@bachelor
+\PassOptionsToClass{oneside}{book}
+\fi
+\ifhit@master
+\PassOptionsToClass{oneside}{book}
+\fi
+\ifhit@doctor
+\PassOptionsToClass{twoside}{book}
+\fi
+% \end{macrocode}
+% \changes{v1.0.2}{2017/08/27}{添加了思源字体说明}
+% 设置字体。由于宋体没有粗体,且我工模板的标题要求使用粗宋体,于是面临CTeX的经典
+% 的伪粗体bug:“首次出现伪粗体字体之后的正常字体无法复制”。但如果使用自带宋体的
+% 思源字体,那么不必使用伪粗体。模板只给出了新windows字体的思源字体设置,且思源
+% 字体版本为Adobe版。
+% \begin{macrocode}
+\ifthenelse%
+{\equal{\hit@fontset}{}}%
+{%
+ \PassOptionsToPackage{AutoFakeBold=2}{xeCJK}
+}%
+{%
+ \ifthenelse%
+ {\equal{\hit@fontset}{siyuan}}%
+ {\relax}%
+ {%
+ \PassOptionsToPackage{AutoFakeBold=2}{xeCJK}
+ }%
+ \PassOptionsToClass{fontset=\hit@fontset}{ctexbook}
+}%
+% \end{macrocode}
+% 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。
+% \begin{macrocode}
+\LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook}
+% \end{macrocode}
+% 用户至少要提供一个选项,指定论文类型。
+% \begin{macrocode}
+\ifhit@bachelor\relax\else
+ \ifhit@master\relax\else
+ \ifhit@doctor\relax\else
+ \ClassError{hithesis}%
+ {Please specify thesis type in option: \MessageBreak
+ type=[bachelor | master | doctor]}{}
+ \fi
+ \fi
+\fi
+% \end{macrocode}
+%
+% \subsection{装载宏包}
+% \label{sec:loadpackage}
+%
+% 引用的宏包和相应的定义。
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+\RequirePackage{ifxetex}
+\ifxetex
+\else
+ \ClassError{hithesis}%
+ {Please use: \MessageBreak
+ xelatex}{}
+\fi
+\RequirePackage{xparse}
+% \end{macrocode}
+%
+% \AmSTeX\ 宏包,用来排出更加漂亮的公式。
+% \begin{macrocode}
+\RequirePackage{amsmath}
+% \end{macrocode}
+% \pkg{newtx} 设置 Times New Roman,Helvetica。
+% \begin{macrocode}
+\RequirePackage[defaultsups]{newtxtext}
+% \end{macrocode}
+% 添加数学字体开关
+% \begin{macrocode}
+\ifhit@newtxmath
+\RequirePackage{newtxmath}
+\fi
+% \end{macrocode}
+% \pkg{newtx} 的 Mono 字体虽然很好看,但在论文中不常见。学校虽未要求 Mono 字体,
+% 还是选择常见的 Courier 字体。由于比较新的实现 \TeX\ Gyre Cursor 会修
+% 改\cs{bfdefault},导致中文加粗出问题,所以选用标准 \pkg{courier}。
+% \begin{macrocode}
+\RequirePackage{courier}
+% \end{macrocode}
+% 图形支持宏包。
+% \begin{macrocode}
+\RequirePackage{graphicx}
+% \end{macrocode}
+% \pkg{pdfpages} 宏包便于我们插入扫描后的授权页和声明页 PDF 文档。
+% \begin{macrocode}
+\RequirePackage{pdfpages}
+\includepdfset{fitpaper=true}
+% \end{macrocode}
+% 更好的列表环境。
+% \begin{macrocode}
+\RequirePackage{enumitem} %使用enumitem宏包,改变列表项的格式
+\RequirePackage{environ}
+% \end{macrocode}
+% 禁止 \LaTeX 自动调整多余的页面底部空白,并保持脚注仍然在底部。
+% 脚注按页编号。
+% \begin{macrocode}
+\ifhit@raggedbottom
+ \RequirePackage[bottom,perpage,hang]{footmisc}
+ \raggedbottom
+\else
+ \RequirePackage[perpage,hang]{footmisc}
+\fi
+% \end{macrocode}
+% 脚注格式。
+% \begin{macrocode}
+\ifhit@pifootnote
+ \RequirePackage{pifont}
+\fi
+% \end{macrocode}
+% 利用 \pkg{CJKfntef} 实现汉字的下划线和盒子内两段对齐,并可以避免
+% \cs{makebox}\oarg{width}\oarg{s} 可能产生的 underful boxes。
+% \begin{macrocode}
+\RequirePackage{CJKfntef}
+% \end{macrocode}
+% 定理类环境宏包,其中 \pkg{amsmath} 选项用来兼容 \AmSTeX\ 的宏包
+% \begin{macrocode}
+\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
+% \end{macrocode}
+% 表格控制
+% \begin{macrocode}
+\RequirePackage{longtable}
+% \end{macrocode}
+% 使用三线表:\cs{toprule},\cs{midrule},\cs{bottomrule}。
+% \begin{macrocode}
+\RequirePackage{booktabs}
+% \end{macrocode}
+% 参考文献引用宏包。
+% \begin{macrocode}
+\RequirePackage[sort&compress]{natbib}
+% \end{macrocode}
+% 生成有书签的 pdf 及其开关,请结合 gbk2uni 避免书签乱码。
+% \begin{macrocode}
+\RequirePackage{hyperref}
+\hypersetup{%
+ CJKbookmarks=true,
+ linktoc=all,
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+ breaklinks=true,
+ colorlinks=false,
+ plainpages=false,
+ pdfborder=0 0 0}
+% \end{macrocode}
+% 设置 url 样式,与上下文一致
+% \begin{macrocode}
+\urlstyle{same}
+% \end{macrocode}
+%
+% \subsection{页面设置}
+% \label{sec:layout}
+% 本来这部分应该是最容易设置的,但根据我工\PGR\ 的3.8,3.4,3.2节的版芯矛盾,此处
+% 设置两种版芯。
+% \begin{macrocode}
+\ifhit@debug\RequirePackage[showframe]{geometry}\else\RequirePackage{geometry}\fi
+\geometry{%根据PlutoThesis 原版定义而来
+ a4paper, % 210 * 297mm
+ hcentering,
+ ignoreall,
+ nomarginpar,
+}
+% \end{macrocode}
+% 添加版芯设置选项
+% \changes{v2.0.0}{2018/6/14}{添加版芯设置选项}
+% \begin{macrocode}
+\ifhit@geometrynewtwo%
+ \geometry{
+ centering,
+ text={150true mm,236true mm},
+ left=30true mm,
+ head=5true mm,
+ headsep=2true mm,
+ footskip=0true mm,
+ foot=5.2true mm
+ }
+\else%
+ \ifhit@geometrynewone%
+ \geometry{
+ centering,
+ text={150true mm,240true mm},
+ left=30true mm,
+ head=5true mm,
+ headsep=0true mm,
+ footskip=0true mm,
+ foot=0true mm
+ }
+ \else%
+ \geometry{%根据PlutoThesis 原版定义而来
+ text={150true mm,224true mm},
+ top=35.5true mm,
+ left=30true mm,
+ head=5true mm,
+ headsep=2.5true mm,
+ foot=8.5true mm
+ }
+ \fi%
+\fi%
+% \end{macrocode}
+% 载入显示行号的包。
+% \changes{v1.0.9}{2018/01/07}{添加debug包}
+% \begin{macrocode}
+\ifhit@debug%
+\RequirePackage{layout}
+\RequirePackage{layouts}
+\RequirePackage{lineno}
+\fi
+% \end{macrocode}
+% 利用 \pkg{fancyhdr} 设置页眉页脚。
+% \begin{macrocode}
+\RequirePackage{fancyhdr}
+% \end{macrocode}
+% 其他包,表格、数学符号包
+% \changes{v1.0.6}{2017/10/25}{此处添加子图最后一行图题是否居中选项}
+% \begin{macrocode}
+\RequirePackage{tabularx}
+\RequirePackage{varwidth}
+% \end{macrocode}
+% 此处changepage环境用来控制索引页面的左右边距,规范中给出的示例的边距要大于正文。
+% \changes{v1.0.10}{2018/02/19}{修改了索引的间距,使其更符合规范中的示例}
+% \begin{macrocode}
+\RequirePackage{changepage}
+\RequirePackage{multicol}
+\RequirePackage{amssymb}
+\RequirePackage[below]{placeins}%允许上一个section的浮动图形出现在下一个section的开始部分,还提供\FloatBarrier命令,使所有未处理的浮动图形立即被处理
+\RequirePackage{flafter} % 使得所有浮动体不能被放置在其浮动环境之前,以免浮动体在引述它的文本之前出现.
+\RequirePackage{multirow} %使用Multirow宏包,使得表格可以合并多个row格
+\ifhit@subcapcenterlast
+\PassOptionsToPackage{centerlast}{subfigure}
+\fi
+\RequirePackage{subfigure}%支持子图 %centerlast 设置最后一行是否居中
+\RequirePackage[subfigure]{ccaption} %支持双语标题
+% \end{macrocode}
+% 中英文索引包。
+% \begin{macrocode}
+\RequirePackage[makeindex]{splitidx}
+\newindex[]{china}
+\newindex[]{english}
+%</cls>
+% \end{macrocode}
+% 我工要求的索引格式。
+% \changes{v1.0.10}{2018/02/19}{修改了索引的间距,使其更符合规范中的示例}
+% \begin{macrocode}
+%<*ist>
+headings_flag 1
+heading_prefix "\{\\vskip -\\baselineskip\\centering\\normalsize\\textbf\{"
+heading_suffix "\}\\par\}\\nopagebreak\\wuhao\n"
+delim_0 "\\hspace*{\\fill}"
+delim_1 "\\hspace*{\\fill}"
+%</ist>
+% \end{macrocode}
+% 排版logo。
+% \begin{macrocode}
+%<cls>\RequirePackage{xltxtra}
+% \end{macrocode}
+%
+% \subsection{主文档格式}
+% \label{sec:mainbody}
+%
+% \subsubsection{Three matters}
+% \begin{macro}{\cleardoublepage}
+% 对于 \textsl{openright} 选项,必须保证章首页右开,且如果前章末页无内容须
+% 清空其页眉页脚。
+% 如果\textsl{library}为真,则强制设置\textsl{openright}为真。
+% \changes{v2.0.10}{2019/6/25}{添加\textsl{openright}和\textsl{library}逻辑}
+% \begin{macrocode}
+%<*cls>
+\ifhit@library\hit@openrightfalse\else\relax\fi
+\let\hit@cleardoublepage\cleardoublepage
+\newcommand{\hit@clearemptydoublepage}{%
+ \clearpage{\pagestyle{hit@empty}\hit@cleardoublepage}
+}
+\let\cleardoublepage\hit@clearemptydoublepage
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\frontmatter}
+% 我们的单面和双面模式与常规的不太一样。
+% \begin{macrocode}
+\renewcommand\frontmatter{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \@mainmatterfalse
+ \pagenumbering{Roman}
+ \pagestyle{hit@empty}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mainmatter}
+% 根据打印店(伪官方)的猛虎式操作,\cs{mainmatter}命令的逻辑是,双面打印时第一章必须在奇数页
+% (不看文档别怪我)。
+% \changes{v2.0.11}{2018/06/27}{设置第一章必须在奇数页}
+% \begin{macrocode}
+\renewcommand\mainmatter{%
+ \ifhit@tocblank%
+ \addtocontents{toc}{\vspace{\baselineskip}} %规范中并没有这一要求,此处不应该加
+ \addtocontents{toe}{\vspace{\baselineskip}}
+ \fi%
+ \ifhit@doctor%
+ \ifhit@library\clearpage\else\cleardoublepage\fi
+ \else%
+ \clearpage
+ \fi%
+ \@mainmattertrue
+ \pagenumbering{arabic}
+ \pagestyle{hit@headings}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\backmatter}
+% \begin{macrocode}
+\renewcommand\backmatter{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \@mainmattertrue}
+%</cls>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{字体}
+% \label{sec:font}
+% \begin{macro}{\normalsize}
+% 根据我工规定,正文小四号 (12bp) 字,行距为固定值3--4mm。
+% \begin{macrocode}
+%<*cls>
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize{12bp}{\ifhit@glue 20.50398bp \@plus 2.83465bp \@minus 0bp\else 20.50398bp\fi}%
+ \abovedisplayskip=8pt
+ \abovedisplayshortskip=8pt
+ \belowdisplayskip=\abovedisplayskip
+ \belowdisplayshortskip=\abovedisplayshortskip}
+% \end{macrocode}
+% \end{macro}
+%
+% WORD 中的字号对应该关系如下(1bp = 72.27/72 pt):
+% \begin{center}
+% \begin{tabular}{llll}
+% \toprule
+% 初号 & 42bp & 14.82mm & 42.1575pt \\
+% 小初 & 36bp & 12.70mm & 36.135 pt \\
+% 一号 & 26bp & 9.17mm & 26.0975pt \\
+% 小一 & 24bp & 8.47mm & 24.09pt \\
+% 二号 & 22bp & 7.76mm & 22.0825pt \\
+% 小二 & 18bp & 6.35mm & 18.0675pt \\
+% 三号 & 16bp & 5.64mm & 16.06pt \\
+% 小三 & 15bp & 5.29mm & 15.05625pt \\
+% 四号 & 14bp & 4.94mm & 14.0525pt \\
+% 小四 & 12bp & 4.23mm & 12.045pt \\
+% 五号 & 10.5bp & 3.70mm & 10.59375pt \\
+% 小五 & 9bp & 3.18mm & 9.03375pt \\
+% 六号 & 7.5bp & 2.56mm & \\
+% 小六 & 6.5bp & 2.29mm & \\
+% 七号 & 5.5bp & 1.94mm & \\
+% 八号 & 5bp & 1.76mm & \\\bottomrule
+% \end{tabular}
+% \end{center}
+%
+% \begin{macro}{\hit@def@fontsize}
+% 根据习惯定义字号。用法:\cs{hit@def@fontsize}\marg{字号名称}\marg{磅数}避免了
+% 字号选择和行距的紧耦合。所有字号定义时为单倍行距,并提供选项指定行距倍数。
+% \begin{macrocode}
+\def\hit@def@fontsize#1#2{%
+ \expandafter\newcommand\csname #1\endcsname[1][1.3]{%
+ \fontsize{#2}{##1\dimexpr #2}\selectfont}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dachu}
+% \begin{macro}{\chuhao}
+% \begin{macro}{\xiaochu}
+% \begin{macro}{\yihao}
+% \begin{macro}{\xiaoyi}
+% \begin{macro}{\erhao}
+% \begin{macro}{\xiaoer}
+% \begin{macro}{\sanhao}
+% \begin{macro}{\xiaosan}
+% \begin{macro}{\sihao}
+% \begin{macro}{\banxiaosi}
+% \begin{macro}{\xiaosi}
+% \begin{macro}{\dawu}
+% \begin{macro}{\wuhao}
+% \begin{macro}{\xiaowu}
+% \begin{macro}{\liuhao}
+% \begin{macro}{\xiaoliu}
+% \begin{macro}{\qihao}
+% \begin{macro}{\bahao}
+% 一组字号定义。
+% \begin{macrocode}
+\hit@def@fontsize{dachu}{58bp}
+\hit@def@fontsize{chuhao}{42bp}
+\hit@def@fontsize{xiaochu}{36bp}
+\hit@def@fontsize{yihao}{26bp}
+\hit@def@fontsize{xiaoyi}{24bp}
+\hit@def@fontsize{erhao}{22bp}
+\hit@def@fontsize{xiaoer}{18bp}
+\hit@def@fontsize{sanhao}{16bp}
+\hit@def@fontsize{xiaosan}{15bp}
+\hit@def@fontsize{sihao}{14bp}
+\hit@def@fontsize{banxiaosi}{13bp}
+\hit@def@fontsize{xiaosi}{12bp}
+\hit@def@fontsize{dawu}{11bp}
+\hit@def@fontsize{wuhao}{10.5bp}
+\hit@def@fontsize{xiaowu}{9bp}
+\hit@def@fontsize{liuhao}{7.5bp}
+\hit@def@fontsize{xiaoliu}{6.5bp}
+\hit@def@fontsize{qihao}{5.5bp}
+\hit@def@fontsize{bahao}{5bp}
+%</cls>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsubsection{页眉页脚}
+% \label{sec:headerfooter}
+% \begin{macro}{\hit@empty}
+% \begin{macro}{\hit@plain}
+% \begin{macro}{\hit@headings}
+% 定义三种页眉页脚格式:
+% \begin{itemize}
+% \item \texttt{hit@empty}:页眉页脚都没有
+% \item \texttt{hit@plain}:只显示页脚的页码。\cs{chapter} 自动调用
+% \cs{thispagestyle\{hit@plain\}}。
+% \item \texttt{hit@headings}:页眉页脚同时显示
+% \end{itemize}
+% \begin{macrocode}
+%<*cls>
+\let\hit@headrule\headrule
+\fancypagestyle{hit@empty}{%
+ \fancyhf{}
+ \let\headrule\hit@headrule%
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}
+}
+% \end{macrocode}
+% 此处根据本科生模板的多种版本,提供选项自定义页码、页眉样式。
+% \changes{v1.0.15}{2018/06/05}{添加控制本科论文的页码横线选项}
+% \changes{v1.0.15}{2018/06/05}{删除冗余的页面格式}
+% \begin{macrocode}
+\fancypagestyle{hit@headings}{%
+ \fancyhf{}
+ \ifhit@doctor
+ \fancyhead[CO]{\songti\xiaowu[0]\leftmark}
+ \fancyhead[CE]{\songti\xiaowu[0]\hit@cschoolname\hit@cdegree\hit@cthesisname}%
+ \else
+ \ifhit@master
+ \fancyhead[C]{\songti\xiaowu[0]\hit@cschoolname\hit@cdegree\hit@cthesisname}
+ \fi
+ \fi
+ \ifhit@bachelor
+ \fancyhead[C]{\songti\xiaowu[0]\hit@cschoolname\hit@bachelor@cxuewei\hit@bachelor@cthesisname}%
+ \fancyfoot[C]{\xiaowu\if@mainmatter\ifhit@bsmainpagenumberline-~\thepage~-\else\thepage\fi\else\ifhit@bsfrontpagenumberline-~\thepage~-\else\thepage\fi\fi}
+ \ifhit@bsheadrule
+ \renewcommand{\headrule}{
+ \vskip 1.190132pt
+ \hrule\@height2.276208pt\@width\headwidth
+ \vskip 0.75pt
+ \hrule\@height.75pt\@width\headwidth
+ }
+ \else
+ \renewcommand{\headrulewidth}{0pt}
+ \fi
+ \else
+ \fancyfoot[C]{\xiaowu-~\thepage~-}
+ \renewcommand{\headrule}{
+ \vskip 1.190132pt
+ \hrule\@height2.276208pt\@width\headwidth
+ \vskip 0.75pt
+ \hrule\@height.75pt\@width\headwidth
+ }
+ \fi
+ % 此处可能和word模板不一致
+ % 页眉中小五汉字,0行距时,占用9bt,页眉高度为14pt, 所以以下数字之和要保持等于14pt-9bt=4.96634pt
+ % 根据PlutoThesis模板中rule宽度定义为2.25, 0.75, 保持粗线和细线之间的间距为细线宽度。
+ % 如果页眉是多行的情况,rule向下溢出
+ \renewcommand{\footrulewidth}{0pt}
+}
+\AtBeginDocument{%此处解决页眉经典bug
+ \pagestyle{hit@empty}
+ \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\enspace#1}{}}}
+%</cls>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{段落}
+% \label{sec:paragraph}
+%
+% 全文首行缩进 2 字符,标点符号用全角
+% \begin{macrocode}
+%<*cls>
+\ctexset{%
+ punct=quanjiao,
+ space=auto,
+ autoindent=true}
+% \end{macrocode}
+% 利用 \pkg{enumitem} 命令调整默认列表环境间的距离,以符合中文习惯。
+% \begin{macrocode}
+\setlist{nosep}
+%</cls>
+% \end{macrocode}
+% \subsubsection{脚注}
+% \label{sec:footnote}
+% 脚注符合中文习惯,数字带圈。
+% \begin{macrocode}
+%<*cls>
+\def\hit@textcircled#1{%
+ \ifnum\value{#1} >9
+ \ClassError{hithesis}%
+ {Too many footnotes in this page.}{Keep footnote less than 10.}
+ \fi
+ \ifhit@pifootnote%
+ \ding{\the\numexpr\value{#1}+171\relax}%
+ \else%
+ \textcircled{\xiaoliu\arabic{#1}}%
+ \fi}
+\renewcommand{\thefootnote}{\hit@textcircled{footnote}}
+\renewcommand{\thempfootnote}{\hit@textcircled{mpfootnote}}
+% \end{macrocode}
+% 定义脚注分割线,字号(宋体小五),以及悬挂缩进(1.5字符)。
+% \begin{macrocode}
+\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
+\let\hit@footnotesize\footnotesize
+\renewcommand\footnotesize{\hit@footnotesize\xiaowu[1.5]}
+\footnotemargin1.5em\relax
+% \end{macrocode}
+% \cs{@makefnmark} 默认是上标样式,而在脚注部分要求为正文大小。利用\cs{patchcmd}
+% 动态调整 \cs{@makefnmark} 的定义。
+% \begin{macrocode}
+\let\hit@makefnmark\@makefnmark
+\def\hit@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
+\pretocmd{\@makefntext}{\let\@makefnmark\hit@@makefnmark}{}{}
+\apptocmd{\@makefntext}{\let\@makefnmark\hit@makefnmark}{}{}
+%</cls>
+% \end{macrocode}
+% \subsubsection{数学相关}
+% \label{sec:equation}
+% 允许太长的公式断行、分页等。
+% \begin{macrocode}
+%<*cls>
+\allowdisplaybreaks[4]
+\predisplaypenalty=0 %公式之前可以换页,公式出现在页面顶部
+\postdisplaypenalty=0
+\renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi\@arabic\c@equation}
+% \end{macrocode}
+% \changes{v2.0.3}{2018/10/08}{设置公式前后随意断页}
+% 公式距前后文的距离由 4 个参数控制,参见 \cs{normalsize} 的定义。
+% 同时为了让 \pkg{amsmath} 的 \cs{tag*} 命令得到正确的格式,我们必须修改这些代
+% 码。\cs{make@df@tag} 是定义 \cs{tag*} 和 \cs{tag} 内部命令的。
+% \cs{make@df@tag@@} 处理 \cs{tag*},我们就改它!
+% \begin{latex}
+% \def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@}
+% \def\make@df@tag@@#1{%
+% \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
+% \end{latex}
+% \begin{macrocode}
+\def\make@df@tag{\@ifstar\hit@make@df@tag@@\make@df@tag@@@}
+\def\hit@make@df@tag@@#1{\gdef\df@tag{\hit@maketag{#1}\def\@currentlabel{#1}}}
+\iffalse
+\ifhit@bachelor
+ \def\hit@maketag#1{\maketag@@@{%
+ (\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)}}
+ \def\tagform@#1{\maketag@@@{%
+ (\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)\equcaption{#1}}}
+\fi
+\fi
+\def\hit@maketag#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)}}
+\def\tagform@#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)\equcaption{#1}}}
+% \end{macrocode}
+% 修改 \cs{tagform} 会影响 \cs{eqref}。
+% \begin{macrocode}
+\renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
+%</cls>
+% \end{macrocode}
+% 定理标题使用黑体,正文使用宋体,冒号隔开。
+% \begin{macrocode}
+%<*cfg>
+\theorembodyfont{\normalfont}
+\theoremheaderfont{\normalfont\heiti}
+\theoremsymbol{\ensuremath{\square}}
+\newtheorem*{proof}{证明}
+\theoremstyle{plain}
+\theoremsymbol{}
+% \end{macrocode}
+% 此处去除了冒号,(如果需要在加上这个冒号?),反正规范中没有。
+% \changes{v2.0.2}{2018/06/28}{取出了定理冒号}
+% \begin{macrocode}
+\theoremseparator{}
+\newtheorem{assumption}{假设}[chapter]
+\newtheorem{definition}{定义}[chapter]
+\newtheorem{proposition}{命题}[chapter]
+\newtheorem{lemma}{引理}[chapter]
+\newtheorem{theorem}{定理}[chapter]
+\newtheorem{axiom}{公理}[chapter]
+\newtheorem{corollary}{推论}[chapter]
+\newtheorem{exercise}{练习}[chapter]
+\newtheorem{example}{例}[chapter]
+\newtheorem{remark}{注释}[chapter]
+\newtheorem{problem}{问题}[chapter]
+\newtheorem{conjecture}{猜想}[chapter]
+%</cfg>
+% \end{macrocode}
+% \subsubsection{浮动对象以及表格}
+% \label{sec:float}
+% 设置浮动对象和文字之间的距离,由于规范中没有明确规定,根据经验,设置成正文汉字
+% 高度。
+% \changes{v1.0.9}{2018/01/07}{修正float垂直间距bug}
+% \changes{v2.0.9}{2019/06/24}{修正float垂直间距bug}
+% \begin{macrocode}
+%<*cls>
+\setlength{\intextsep}{\ifhit@glue 8.50398bp \@plus 2.83465bp \@minus 0bp\else 8.50398bp\fi}
+\setlength{\textfloatsep}{\ifhit@glue 8.50398bp \@plus 2.83465bp \@minus 0bp\else 8.50398bp\fi}
+\setlength{\floatsep}{\ifhit@glue 12bp \@plus 2.83465bp \@minus 0bp\else 12bp\fi}
+% \end{macrocode}
+% 此处设置float在p选项时间隔,此处不设置\cs{@fptop}和\cs{@fpbot}以确保居中。
+% \changes{v1.0.12}{2018/04/03}{修正float为p状态时默认不居中bug}
+% \changes{v2.0.4}{2018/12/04}{删除\cs{@fpsep}设置,似乎没有什么用}
+% \changes{v2.0.4}{2018/12/04}{更新\cs{intextsep}\cs{textfloatsep}\cs{floatsep}间距为正文行间距}
+% 下面这组命令使浮动对象的缺省值稍微宽松一点,从而防止幅度对象占据过多的文本页面,
+% 也可以防止在很大空白的浮动页上放置很小的图形。
+% \changes{v1.0.8}{2017/11/5}{修改附录中图、表、公式数字编码}
+% \begin{macrocode}
+\g@addto@macro\appendix{\renewcommand*{\thefigure}{\thechapter-\arabic{figure}}}
+\g@addto@macro\appendix{\renewcommand*{\thetable}{\thechapter-\arabic{table}}}
+\g@addto@macro\appendix{\renewcommand*{\theequation}{\thechapter-\arabic{equation}}}
+\renewcommand{\textfraction}{0.15}
+\renewcommand{\topfraction}{0.85}
+\renewcommand{\bottomfraction}{0.65}
+\renewcommand{\floatpagefraction}{0.60}
+% \end{macrocode}
+% 由于我工的双标题,导致标题之下多出一空白字符的距离,去除。
+% \changes{v2.0.4}{2018/12/04}{更新图段后空白距离}
+% \changes{v2.0.4}{2018/12/04}{删除表段后空白距离}
+% \changes{v2.0.5}{2018/12/05}{删除图段后空白距离}
+% \begin{macro}{\@makecaption}
+% 根据我工规范,本科和硕博的图题序号之后的空格不一样。
+% \begin{hitrgu}[\PGR][2.13.1]
+% 每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个
+% 半角字符排写。
+% \end{hitrgu}
+% \begin{hitrgu}[\UGR][2.13.1]
+% 每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个
+% 字符排写。
+% \end{hitrgu}
+% 我工规范中没有明确规定是否标题是否居中对齐,这里给出一个居中选项自行调整。
+% 注意,我工只规定:“居中书写”。此处不额外添加悬挂处理。
+% \changes{v1.0.6}{2017/10/25}{此处更改了选项的名称}
+% \changes{v1.0.7}{2017/11/4}{优化了最后一行居中算法,使其两边对齐、单词内部断行}
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \wuhao\sbox\@tempboxa{#1\ifhit@bachelor\hskip\ccwd\else\enskip\fi#2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \ifhit@capcenterlast%
+ \vskip 6.3bp%
+ {\setbox0=\vbox{#1\ifhit@bachelor\hskip\ccwd\else\enskip\fi#2}
+ \setbox1=\vbox{%
+ \unvbox0
+ \setbox2=\lastbox
+ \hbox to \textwidth{\hfill\unhcopy2 \unskip\unskip\hfill}
+ }
+ \unvbox1}
+ \else%
+ #1\ifhit@bachelor\hskip\ccwd\else\enskip\fi#2%
+ \fi%
+ \par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+\vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\longbionenumcaption}
+% 长表格的双语标题是一个坑. 因为第一不能用浮动格式,只能用longtable包中的tabular
+% ,这样表题只能使用表格中前两行来写。这样出现了一个问题是,中英表题的间距,标题
+% 和表第一行间距,表格内部间距等多个变量的协调问题。这个问题只要使用tabular的形
+% 式,就是无解的。唯一的方法就是把这些参数都给用户列出来。以下,第2,5参数为中英
+% 双语标题内容,1,4为标题参数。6为中英标题间距,7为表题和表格间距。
+% \begin{macrocode}
+\renewcommand*{\longbionenumcaption}[7]{%
+\@if@contemptyarg{#1}{\caption{#2}}{\caption[#1]{#2}}%
+\global\let\@cont@oldtablename\tablename
+\gdef\tablename{#3}
+\global\let\LT@c@ption\@cont@LT@nonumintoc
+\\[#6]
+\@if@contemptyarg{#4}{\caption{#5}}{\caption[#4]{#5}}%
+\global\let\tablename\@cont@oldtablename
+\global\let\LT@c@ption\@cont@oldLT@c@ption
+\vspace{#7}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ltfontsize}
+% 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号,
+% 行距设置为1.3倍行距。此处还需要提供一个设置长表格内部字体的命令。
+% \begin{macrocode}
+\let\hit@LT@array\LT@array
+\def\LT@array{\wuhao\hit@LT@array} % set default font size
+\newcommand{\ltfontsize}[1]{\def\LT@array{#1\hit@LT@array}}
+% \end{macrocode}
+% \end{macro}
+% 图表名称及格式。
+% \changes{v1.0.8}{2017/11/5}{删除冗余公式符号定义}
+% \begin{macrocode}
+\renewcommand{\thesubtable}{(\alph{subtable})}
+\renewcommand{\thefigure}{\arabic{chapter}-\arabic{figure}}%使图编号为 7-1 的格式 %\protect{~}
+\renewcommand{\thesubfigure}{\alph{subfigure})}%使子图编号为 a)的格式
+\renewcommand{\p@subfigure}{\thefigure~} %使子图引用为 7-1 a) 的格式,母图编号和子图编号之间用~加一个空格
+\renewcommand{\thetable}{\arabic{chapter}-\arabic{table}}%使表编号为 7-1 的格式
+% \end{macrocode}
+% 调整罗列环境、浮动格式、间距。
+% \begin{macrocode}
+\setitemize{leftmargin=0em,itemsep=0em,partopsep=0em,parsep=0em,topsep=0em,itemindent=3em}
+\setenumerate{leftmargin=0em,itemsep=0em,partopsep=0em,parsep=0em,topsep=0em,itemindent=3.5em}
+\newcommand{\citeup}[1]{\textsuperscript{\cite{#1}}}
+% \end{macrocode}
+% 此处删除hang caption的设置
+% \changes{v1.0.6}{2017/10/25}{删除caption hang 的默认设置,因为不在规范要求中}
+% \begin{macrocode}
+\captionnamefont{\wuhao}
+\captiontitlefont{\wuhao}
+\renewcommand{\subcapsize}{\wuhao}
+\setlength{\abovecaptionskip}{0pt}%为了双标题之间的间距,不能设置
+\setlength{\belowcaptionskip}{0pt}
+% 自定义项目列表标签及格式 \begin{publist} 列表项 \end{publist}
+\newcounter{pubctr} %自定义新计数器
+\newenvironment{publist}{%%%%%定义新环境
+\begin{list}{[\arabic{pubctr}]} %%标签格式
+ {
+ \usecounter{pubctr}
+ \setlength{\leftmargin}{1.7em} % 左边界 \leftmargin =\itemindent + \labelwidth + \labelsep
+ \setlength{\itemindent}{0em} % 标号缩进量
+ \setlength{\labelsep}{0.5em} % 标号和列表项之间的距离,默认0.5em
+ \setlength{\rightmargin}{0em} % 右边界
+ \setlength{\topsep}{0ex} % 列表到上下文的垂直距离
+ \setlength{\parsep}{0ex} % 段落间距
+ \setlength{\itemsep}{0ex} % 标签间距
+ \setlength{\listparindent}{0pt} % 段落缩进量
+ }}
+{\end{list}}
+% \end{macrocode}
+% 设置定理定义格式
+% \changes{v2.0.1}{2018/6/28}{去除定理注释括号}
+% \begin{macrocode}
+\renewtheoremstyle{plain}
+{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}
+{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ ##3\theorem@separator]}
+\theorembodyfont{\songti\rmfamily}
+\theoremheaderfont{\heiti\rmfamily}
+\theoremsymbol{$\square$}
+\setlength{\theorempreskipamount}{0pt}
+\setlength{\theorempostskipamount}{-2pt}
+\setlength{\parindent}{2em}
+\arraycolsep=1.6pt
+%</cls>
+% \end{macrocode}
+%
+% \subsubsection{章节标题}
+% \label{sec:theor}
+% \begin{macrocode}
+%<*cfg>
+\ctexset{%
+ chapter/name={第,章},
+ appendixname=附录,
+ contentsname={目\hspace{\ccwd}录},
+ listfigurename=插图索引,
+ listtablename=表格索引,
+ figurename=图,
+ tablename=表,
+ bibname=参考文献,
+ indexname=索引,
+}
+\newcommand\listfigureename{Index of figure}
+\newcommand\listtableename{Index of table}
+\newcommand\listequationename{Index of equation}
+\newcommand\listequationname{公式索引}
+\newcommand\equationname{公式}
+\newcommand{\cabstractcname}{摘\hspace{\ccwd}要}
+\newcommand{\cabstractename}{Abstract (In Chinese)}
+% \end{macrocode}
+% 此处删除冗余选项
+% \changes{v1.0.13}{2018/4/5}{此处删除冗余的Abstract标题}
+% \begin{macrocode}
+\newcommand{\eabstractcname}{Abstract}
+\newcommand{\eabstractename}{Abstract (In English)}
+\newcommand{\hit@ckeywords@title}{关键词:}
+\def\hit@ckeywords@separator{;}
+\def\hit@ekeywords@separator{,}
+\let\CJK@todaysave=\today
+\def\CJK@todaysmall@short{\the\year 年 \the\month 月}
+\def\CJK@todaysmall{\the\year 年 \the\month 月 \the\day 日}
+\def\CJK@todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
+\def\CJK@todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
+\def\CJK@today{\CJK@todaysmall}
+\renewcommand\today{\CJK@today}
+\newcommand\CJKtoday[1][1]{%
+ \ifcase#1\def\CJK@today{\CJK@todaysave}
+ \or\def\CJK@today{\CJK@todaysmall}
+ \or\def\CJK@today{\CJK@todaybig}
+ \fi}
+% \end{macrocode}
+% 按照word示范要求,此处使用阿拉伯数字
+% \changes{v1.0.14}{2018/05/06}{修正自动生成日期bug}
+% \begin{macrocode}
+\cdate{\ifhit@bachelor\CJK@todaysmall\else\CJK@todaysmall@short\fi}
+\edate{\ifcase \month \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\unskip,\ \ \the\year}
+%</cfg>
+% \end{macrocode}
+% 按照我工要求,页面中标题之下不少于一行。
+% \begin{macrocode}
+%<*cls>
+\def\hit@title@font{%
+ \ifhit@arialtitle\sffamily\else\heiti\fi}
+
+\newcommand\hit@chapter@titleformat[1]{%开启悬挂缩进选项
+ \ifthenelse%
+ {\equal{#1}{\eabstractcname}}%
+ {\bfseries #1}%
+ %实现章标题的居中加悬挂缩进,注意,此处一定是\CTEX@chaptername\CTEX@chapter@aftername, 否则是英文标题长度
+ {\ifhit@chapterhang\settowidth{\hangindent}{\CTEX@chaptername\CTEX@chapter@aftername}\hangafter=1\fi#1}%
+ %{\begin{varwidth}[t]{\hit@chapter@indentboxwidth}#1\end{varwidth}}
+}
+
+\renewcommand\@afterheading{%
+ \@nobreaktrue
+ \everypar{%
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty 1
+ \if@afterindent \else
+ {\setbox\z@\lastbox}%
+ \fi
+ \else
+ \clubpenalty 1
+ \everypar{}%
+ \fi}}
+% \end{macrocode}
+% 设置一到四级标题、目录、书签格式。
+% \begin{macrocode}
+\ctexset{%
+ chapter={
+ afterindent=true,
+ pagestyle={hit@headings},
+ beforeskip={28.34658bp},%一个空行 1.57481 × 18
+ afterskip={24.74658bp},%0.8应该不计算间距 0.8 × 18 + 0.57481×18
+ aftername=\enspace,
+ format={\centering\hit@title@font\xiaoer[1.57481]},%\center 会影响之后全局
+ nameformat=\relax,
+ numberformat=\relax,
+ titleformat=\hit@chapter@titleformat,
+ fixskip=true, % 添加这一行去除默认间距
+ %hang=true,
+ },
+ section={
+ afterindent=true,
+ beforeskip={\ifhit@glue 13.5bp \@plus 1.677267bp \@minus 1.157391bp \else 13.5bp \fi},%上下空0.5行
+ afterskip={\ifhit@glue 13.5bp \@plus 1.677267bp \@minus 1.157391bp \else 13.5bp \fi},
+ format={\hit@title@font\ifhit@glue\fontsize{15bp}{21bp \@plus 1.677267bp \@minus 1.157391bp}\else\fontsize{15bp}{21bp}\fi\selectfont},
+ aftername=\enspace,
+ fixskip=true,
+ break={},
+ },
+ subsection={
+ afterindent=true,
+ beforeskip={\ifhit@glue 11bp \@plus 1.842609bp \@minus 0.9920497bp \else 11bp \fi},
+ afterskip={\ifhit@glue 11bp \@plus 2.33863bp \@minus 0.49602bp \else 11bp \fi},
+ format={\hit@title@font\ifhit@glue\fontsize{14bp}{18bp \@plus 1.842609bp \@minus 0.9920497bp}\else\fontsize{14bp}{18bp}\fi\selectfont},
+ aftername=\enspace,
+ fixskip=true,
+ break={},
+ },
+ subsubsection={
+ afterindent=true,
+ beforeskip={\ifhit@glue 8.50398bp \@plus 2.83465bp \@minus 0bp \else 9bp \fi},
+ afterskip={\ifhit@glue 8.50398bp \@plus 2.83465bp \@minus 0bp \else 9bp \fi},
+ format={\hit@title@font\normalsize},
+ aftername=\enspace,
+ fixskip=true,
+ break={},
+ },
+ paragraph/afterindent=true,
+ subparagraph/afterindent=true
+}
+% \end{macrocode}
+% 设置附表、附录格式。
+% \changes{v1.0.13}{2018/4/5}{此处添加中文目录中Abstract是否均为大写选项}
+% \begin{macrocode}
+\NewDocumentCommand{\hit@appendix@chapter}{s m o}{%
+ \IfBooleanT{#1}%
+ {
+ \phantomsection
+ \markboth{#2}{#2}
+ \ifthenelse%
+ {\equal{#2}{\eabstractcname}}%
+ {\addcontentsline{toc}{chapter}{\texorpdfstring{\ifhit@arialtitle\sffamily\heiti\else\heiti\fi \ifhit@absupper\MakeUppercase{#2}\else#2\fi}{#2}}}
+ {\addcontentsline{toc}{chapter}{\texorpdfstring{\ifhit@arialtitle\sffamily\heiti\else\heiti\fi #2}{#2}}}
+ \IfValueT{#3}{\addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries #3}{#3}}}
+ \hit@chapter*{#2}
+ }
+}
+% 该附录命令适用于发表文章,简历等
+\newcommand{\BiAppChapter}[2] % 该附录命令适用于有章节的完整附录
+{\phantomsection
+ \chapter{#1}
+% \end{macrocode}
+% 此处添加保护选项
+% \changes{v1.0.13}{2018/4/5}{添加\cs{texorpdfstring}命令去除书签中带有格式时的警告}
+% \begin{macrocode}
+ \addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries \xiaosi Appendix \thechapter~~#2}{Appendix \thechapter~~#2}}
+}
+% \end{macrocode}
+% 设置章节命令。s: 星号,表示在目录中出不出现序号。m: 必须要有的选项,中文章
+% 节名称也即目录中名称,页眉中名称,书签中的名称。o: 可选内容,没有就默认是正
+% 文章节,如果有,则是英文目录中显示的内容。
+% \begin{macro}{\chapter}
+% \begin{macro}{\section}
+% \begin{macro}{\subsection}
+% \begin{macro}{\subsubsection}
+% \begin{macrocode}
+\let\hit@chapter\chapter
+\RenewDocumentCommand{\chapter}{s o m o}{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi\phantomsection%
+ \IfBooleanTF{#1}%
+ {% if \chapter*
+ \hit@chapter*{#3}%
+ \IfValueT{#4}{%
+% \end{macrocode}
+% 此处添加保护选项
+% \changes{v1.0.13}{2018/4/5}{添加\cs{texorpdfstring}命令去除书签中带有格式时的警告}
+% \begin{macrocode}
+ \addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries #4}{#4}}
+ }
+ }%
+ {% if \chapter
+ \IfNoValueTF{#2}%
+ {\hit@chapter{#3}}%
+ {\hit@chapter[#2]{#3}}%
+ \IfValueT{#4}{%
+% \end{macrocode}
+% 此处需删除章节的空白
+% \changes{v1.0.5}{2017/09/20}{添加\cs{ignorespaces}选项,矫正英文目录多出一个空白而无法对其的bug}
+% 此处添加保护选项
+% \changes{v1.0.13}{2018/4/5}{添加\cs{texorpdfstring}命令去除书签中带有格式时的警告}
+% \begin{macrocode}
+ \addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries\relax Chapter \thechapter\hspace{0.5em}\ignorespaces #4}{Chapter \thechapter\hspace{0.5em}\ignorespaces #4}}
+ }
+ }
+}
+
+\let\hit@section\section
+\RenewDocumentCommand\section{s o m o}{
+ \IfBooleanTF{#1}%
+ {% if \section*
+ \hit@section*{#3}%
+ \IfValueT{#4}{%
+ \addcontentsline{toe}{section}{#4}
+ }
+ }%
+ {% if \section
+ \IfNoValueTF{#2}%
+ {\hit@section{#3}}%
+ {\hit@section[#2]{#3}}%
+ \IfValueT{#4}{%
+% \end{macrocode}
+% 此处需删除章节的空白
+% \changes{v1.0.5}{2017/09/18}{添加\cs{ignorespaces}选项,矫正英文目录多出一个空白而无法对其的bug}
+% \begin{macrocode}
+ \addcontentsline{toe}{section}{\protect\numberline{\csname thesection\endcsname}\ignorespaces #4}
+ }
+ }
+}
+
+\let\hit@subsection\subsection
+\RenewDocumentCommand\subsection{s o m o}{
+ \IfBooleanTF{#1}%
+ {% if \subsection*
+ \hit@subsection*{#3}%
+ \IfValueT{#4}{%
+ \addcontentsline{toe}{subsection}{#4}
+ }
+ }%
+ {% if \subsection
+ \IfNoValueTF{#2}%
+ {\hit@subsection{#3}}%
+ {\hit@subsection[#2]{#3}}%
+ \IfValueT{#4}{%
+% \end{macrocode}
+% 此处需删除章节的空白
+% \changes{v1.0.5}{2017/09/18}{添加\cs{ignorespaces}选项,矫正英文目录多出一个空白而无法对其的bug}
+% \begin{macrocode}
+ \addcontentsline{toe}{subsection}{\protect\numberline{\csname thesubsection\endcsname}\ignorespaces #4}
+ }
+ }
+}
+
+\let\hit@subsubsection\subsubsection
+\RenewDocumentCommand\subsubsection{s o m o}{
+ \IfBooleanTF{#1}%
+ {% if \subsubsection*
+ \hit@subsubsection*{#3}%
+ \IfValueT{#4}{%
+ \addcontentsline{toe}{subsubsection}{#4}
+ }
+ }%
+ {% if \subsubsection
+ \IfNoValueTF{#2}%
+ {\hit@subsubsection{#3}}%
+ {\hit@subsubsection[#2]{#3}}%
+ \IfValueT{#4}{%
+% \end{macrocode}
+% 此处需删除章节的空白
+% \changes{v1.0.5}{2017/09/18}{添加\cs{ignorespaces}选项,矫正英文目录多出一个空白而无法对其的bug}
+% \begin{macrocode}
+ \addcontentsline{toe}{subsubsection}{\protect\numberline{\csname thesubsubsection\endcsname}\ignorespaces #4}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{定义封面}
+% \label{sec:cov}
+% 封面信息。
+% \changes{v1.0.11}{2018/03/07}{更改的中文标题,根据反馈,在封面中标题需要自由
+% 换行且不能影响到原创性声明。此处额外设置了一个变量ctitlecover。}
+% \begin{macrocode}
+\def\hit@def@term#1{%
+ \define@key{hit}{#1}{\csname #1\endcsname{##1}}
+ \expandafter\gdef\csname #1\endcsname##1{%
+ \expandafter\gdef\csname hit@#1\endcsname{##1}}
+ \csname #1\endcsname{}}
+
+\hit@def@term{statesecrets} %密级
+\hit@def@term{natclassifiedindex} %国内图书分类号
+\hit@def@term{intclassifiedindex} %国际图书分类号
+
+\hit@def@term{ctitlecover} %中文标题封面
+\hit@def@term{ctitle} %中文标题
+\hit@def@term{csubtitle} %中文副标题
+\hit@def@term{cxueke} %中文学科
+\hit@def@term{cauthor} %中文作者
+\hit@def@term{csupervisor} %中文导师
+\hit@def@term{cassosupervisor} %中文副导师
+\hit@def@term{ccosupervisor}%中文联合导师
+\hit@def@term{caffil}%中文院系
+\hit@def@term{csubject}%中文专业
+\hit@def@term{cdate}
+
+\hit@def@term{cstudentid}%
+\hit@def@term{cstudenttype}%
+\hit@def@term{ctitleone}%
+\hit@def@term{ctitletwo}%
+
+
+\hit@def@term{etitle} %英文标题
+\hit@def@term{esubtitle} %英文标题
+\hit@def@term{exueke} %英文学科
+\hit@def@term{eauthor} %英文作者
+\hit@def@term{esupervisor} %英文导师
+\hit@def@term{eassosupervisor} %英文副导师
+\hit@def@term{ecosupervisor} %英文联合导师
+\hit@def@term{eaffil}
+\hit@def@term{esubject}
+\hit@def@term{edate}
+\hit@def@term{estudenttype}
+\newcommand{\hit@@cabstract}[1]{\long\gdef\hit@cabstract{#1}}
+\newenvironment{cabstract}{\Collect@Body\hit@@cabstract}{}
+\newcommand{\hit@@eabstract}[1]{\long\gdef\hit@eabstract{#1}}
+\newenvironment{eabstract}{\Collect@Body\hit@@eabstract}{}
+\def\hit@parse@keywords#1{
+ \define@key{hit}{#1}{\csname #1\endcsname{##1}}
+ \expandafter\gdef\csname hit@#1\endcsname{}
+ \expandafter\gdef\csname #1\endcsname##1{
+ \@for\reserved@a:=##1\do{
+ \expandafter\ifx\csname hit@#1\endcsname\@empty\else
+ \expandafter\g@addto@macro\csname hit@#1\endcsname{%
+ \ignorespaces\csname hit@#1@separator\endcsname}
+ \fi
+ \expandafter\expandafter\expandafter\g@addto@macro%
+ \expandafter\csname hit@#1\expandafter\endcsname\expandafter{\reserved@a}}}}
+\hit@parse@keywords{ckeywords}
+\hit@parse@keywords{ekeywords}
+\def\hitsetup{\kvsetkeys{hit}}
+%</cls>
+% \end{macrocode}
+% 定义封面中用到的词汇。
+% \begin{macrocode}
+%<*cfg>
+\ifhit@doctor
+\gdef\hit@cxueweishort{博}
+\gdef\hit@exuewei{Doctor}
+\gdef\hit@exueweier{Doctoral}
+\gdef\hit@cxuewei{\hit@cxueweishort 士}
+\gdef\hit@cdegree{\hit@cxueke\hit@cxuewei}
+\gdef\hit@edegree{\hit@exuewei \ of \hit@exueke}
+\def\hit@cauthortitle{\hit@cxueweishort 士研究生}
+\fi
+\ifhit@master
+\gdef\hit@cxueweishort{硕}
+\gdef\hit@exuewei{Master}
+\gdef\hit@exueweier{Master's}
+\gdef\hit@cxuewei{\hit@cxueweishort 士}
+\gdef\hit@cdegree{\hit@cxueke\hit@cxuewei}
+\gdef\hit@edegree{\hit@exuewei \ of \hit@exueke}
+\def\hit@cauthortitle{\hit@cxueweishort 士研究生}
+\fi
+\ifhit@bachelor
+\gdef\hit@cxuewei{学士}
+\fi
+\def\hit@bachelor@cxuewei{本科}
+\def\hit@bachelor@cthesisname{毕业设计(论文)}
+\def\hit@bachelor@caffiltitle{院(系)}
+\def\hit@bachelor@cstudentidtitle{学号}
+\def\hit@bachelor@cmajortitle{专业}
+\def\hit@bachelor@csupervisortitle{指导教师}
+\def\hit@bachelor@cthesistitle{题目}
+\def\hit@bachelor@cstudenttitle{学生}
+\def\hit@cthesisname{学位论文}
+\def\hit@cschoolname{哈尔滨工业大学}
+\def\hit@cschoolnametitle{授予学位单位}
+\def\hit@cdatetitle{答辩日期}
+\def\hit@caffiltitle{所在单位}
+\def\hit@csubjecttitle{学科}
+\def\hit@cdegreetitle{申请学位}
+\def\hit@csupervisortitle{导师}
+\def\hit@cassosupervisortitle{副导师}
+\def\hit@ccosupervisortitle{联合导师}
+\def\hit@title@csep{:}
+\def\hit@eauthortitle{Candidate}
+\def\hit@esupervisortitle{Supervisor}
+\def\hit@eassosupervisortitle{Associate Supervisor}
+\def\hit@ecosupervisortitle{Co Supervisor}
+\def\hit@edegreetitle{Academic Degree Applied for}
+\def\hit@esubjecttitle{Specialty}
+\def\hit@eaffiltitle{Affiliation}
+\def\hit@edatetitle{Date of Defence}
+\def\hit@eschoolnametitle{Degree-Conferring-Institution}
+\def\hit@eschoolname{Harbin Institute of Technology}
+\def\hit@title@esep{:}
+\def\hit@natclassifiedindextitle{国内图书分类号}
+\def\hit@internatclassifiedindextitle{国际图书分类号}
+\def\hit@secretlevel{密级}
+\def\hit@schoolidtitle{学校代码}
+\def\hit@schoolid{10213}
+\def\hit@conclusion@ctitle{结\hspace{\ccwd}论}
+\def\hit@conclusion@etitle{Conclusions}
+\def\hit@bibname@etitle{References}
+\def\hit@acknowledgement@ctitle{致\hspace{\ccwd}谢}
+\def\hit@acknowledgement@etitle{Acknowledgements}
+\def\hit@resume@ctitle{个人简历}
+\def\hit@resume@etitle{Resume}
+\def\hit@authorization@ctitle{哈尔滨工业大学学位论文原创性声明和使用权限}
+\def\hit@authorization@etitle{Statement of copyright and Letter of authorization}
+\newcommand{\hit@authorsig}{作者签名:}
+\newcommand{\hit@teachersig}{导师签名:}
+\newcommand{\hit@frontdate}{日期:}
+\newcommand{\hit@denotation@ctitle}{物理量名称及符号表}
+\newcommand{\hit@denotation@etitle}{List of physical quantity and symbol}
+\newcommand{\hit@authorizationtitle}{学位论文使用权限}
+\newcommand{\hit@authorizationtext}{%
+学位论文是研究生在哈尔滨工业大学攻读学位期间完成的成果,知识产权归属哈尔滨工业大学。学位论文的使用权限如下:
+
+(1)学校可以采用影印、缩印或其他复制手段保存研究生上交的学位论文,并向国家图书馆报送学位论文;(2)学校可以将学位论文部分或全部内容编入有关数据库进行检索和提供相应阅览服务;(3)研究生毕业后发表与此学位论文研究成果相关的学术论文和其他成果时,应征得导师同意,且第一署名单位为哈尔滨工业大学。
+
+保密论文在保密期内遵守有关保密规定,解密后适用于此使用权限规定。
+
+本人知悉学位论文的使用权限,并将遵守有关规定。}
+\newcommand{\hit@declarename@bachelor}{哈尔滨工业大学本科毕业设计(论文)原创性声明}
+\newcommand{\hit@authorizationtext@bachelor}{%
+本人郑重声明:在哈尔滨工业大学攻读学士学位期间,所提交的毕业设计(论文)《\hit@ctitle》,是本人在导师指导下独立进行研究工作所取得的成果。对本文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明,其它未注明部分不包含他人已发表或撰写过的研究成果,不存在购买、由他人代写、剽窃和伪造数据等作假行为。
+
+本人愿为此声明承担法律责任。}
+\newcommand{\hit@declarename}{学位论文原创性声明}
+\newcommand{\hit@declaretext}{%
+本人郑重声明:此处所提交的学位论文《\hit@ctitle》,是本人在导师指导下,在哈尔滨工业大学攻读学位期间独立进行研究工作所取得的成果,且学位论文中除已标注引用文献的部分外不包含他人完成或已发表的研究成果。对本学位论文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明。}
+\newcommand{\hit@datefill}{\hspace{2.5em}年\hspace{1.5em}月\hspace{1.5em}日}
+\newcommand{\hit@publication@ctitle}{攻读\hit@cxuewei 学位期间发表的论文及其他成果}
+\newcommand{\hit@publication@etitle}{Papers published in the period of Ph.D. education}
+\def\hit@index@etitle{Index}
+\def\hit@hi{嗨!thesis}
+\def\hit@cbraceleft{(}
+\def\hit@cbraceright{)}
+\def\hit@ebraceleft{(}
+\def\hit@ebraceright{)}
+%</cfg>
+% \end{macrocode}
+% 中英文封面。
+% \begin{macrocode}
+%<*cls>
+\newlength{\hit@title@width}
+\newcommand{\hit@put@title}[2][\hit@title@width]{%
+ \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
+
+\def\hit@first@titlepage{%
+ \ifhit@bachelor\hit@first@titlepage@bachelor\else\hit@first@titlepage@other\fi}
+\def\hit@second@titlepage{%
+ \ifhit@bachelor\hit@second@titlepage@bachelor\else\hit@second@titlepage@other\fi}
+
+\newcommand{\hit@first@titlepage@bachelor}{
+\ifthenelse%
+{\equal{\hit@fontset}{siyuan}}%
+{\xiaosi[1]\vspace*{0.65em}}%
+{\xiaosi[1]\textcolor[rgb]{1,1,1}{\songti{\hit@hi}}}%
+ \vspace*{1.2cm}
+ \begin{center}
+ \parbox[t][3.4cm][t]{\textwidth}{
+ \begin{center}\erhao[0]\heiti\hit@ctitlecover\end{center} }
+ \parbox[t][9cm][t]{\textwidth}{
+ \begin{center}\xiaoer[0]\songti\textbf{\hit@cauthor}\end{center}
+ }
+ \begin{center}
+ \setlength{\hit@title@width}{4em}
+ \heiti\xiaosi
+ \begin{tabular}{rc}
+ {\hit@put@title{\hit@bachelor@caffiltitle}\hit@title@csep} & \hit@caffil\\[14pt]
+ {\hit@put@title{\hit@bachelor@cstudentidtitle}\hit@title@csep} & \hit@cstudentid
+ \end{tabular}
+ \begin{tabular}{rc}
+ {\hit@put@title{\hit@bachelor@cmajortitle}\hit@title@csep} & \hit@csubject\\[14pt]
+ {\hit@put@title{\hit@bachelor@csupervisortitle}\hit@title@csep} & \hit@csupervisor
+ \end{tabular}
+ \end{center}
+ \vspace{2.6cm}
+ {\xiaosi[0]\songti\textbf{\hit@cdate}}
+ \end{center}
+}
+% \end{macrocode}
+% 此处本科生使用了\hit\ 的logo且本科生论文标题使用了华文新魏字体,为了方便使用,
+% 此处使用了矢量化图片作为输入。
+% \changes{v1.0.11}{2018/03/07}{更改的中文标题,根据反馈,在封面中标题需要自由
+% 换行且不能影响到原创性声明。此处额外设置了一个变量ctitlecover。}
+% \begin{macrocode}
+\newcommand{\hit@second@titlepage@bachelor}{
+ \vspace*{0.8cm}
+ \centering\includegraphics[width=6.2cm]{hitlogo}
+ \vspace{1.3cm}
+ \begin{center}
+ \centering\includegraphics[width=10.5cm]{bthesistitle}
+ \vfill
+ \parbox[t][14.2cm][b]{\textwidth}
+ {\heiti\xiaosan
+ \begin{center} \renewcommand{\arraystretch}{2.5} \heiti
+ \setlength{\hit@title@width}{5.5em}
+ \begin{tabular}{l@{\ \ }c}
+
+ {\xiaoer \hit@put@title{\hit@bachelor@cthesistitle}} & \underline{\makebox[6.1cm]{\xiaoer \hit@ctitleone}}\\
+ & \underline{\makebox[6.1cm]{\xiaoer \hit@ctitletwo}}\\
+ & \\
+ {\hit@put@title{\hit@bachelor@cmajortitle}} & \underline{\makebox[6.1cm]{\hit@csubject}}\\
+ {\hit@put@title{\hit@bachelor@cstudentidtitle}} & \underline{\makebox[6.1cm]{\hit@cstudentid}}\\
+ {\hit@put@title{\hit@bachelor@cstudenttitle}} & \underline{\makebox[6.1cm]{\hit@cauthor}}\\
+ {\hit@put@title{\hit@bachelor@csupervisortitle}} & \underline{\makebox[6.1cm]{\hit@csupervisor}}\\
+ {\hit@put@title{\hit@cdatetitle}} & \underline{\makebox[6.1cm]{\hit@cdate}}
+ \end{tabular} \renewcommand{\arraystretch}{1}
+ \end{center}
+ }
+ \end{center}
+}
+
+\newlength{\hit@etitlelength}%
+\newcommand{\hit@first@titlepage@other}{
+ % 封面一
+\ifthenelse%
+{\equal{\hit@fontset}{siyuan}}%
+{\xiaosi[1]\vspace*{0.65em}}%
+{\xiaosi[1]\textcolor[rgb]{1,1,1}{\songti{\hit@hi}}}%
+ \vspace*{1.2cm}
+\begin{center}
+ \begin{center}\xiaoyi[1]\songti\textbf{\hit@cxuewei\hit@cthesisname}\end{center}
+ \ifhit@fulltime\vspace{1.4cm}\else%
+ \begin{center}\xiaoyi[1]\songti\textbf{\hit@cbraceleft\hit@cstudenttype\hit@cbraceright}\end{center}
+ \fi%
+ \parbox[t][7.8cm][t]{\textwidth}{%
+ \begin{center}\erhao\heiti\hit@ctitlecover\end{center}
+\ifhit@subtitle\begin{center}\hspace{-4em}\xiaoer\heiti\pozhehao\hit@csubtitle\end{center}\fi
+ \begin{center}%
+ \settowidth{\hit@etitlelength}{\erhao\hit@etitle\ifhit@subtitle\hit@title@esep\hit@esubtitle\fi}%
+ \ifdim\hit@etitlelength>450mm\xiaoer\else\erhao\fi%
+ \textbf{\MakeUppercase{\hit@etitle}%
+\ifhit@subtitle\hit@title@esep\MakeUppercase{\hit@esubtitle}\fi}\end{center}}
+
+ \parbox[t][7.4cm][t]{\textwidth}{
+ \begin{center}\xiaoer\songti\textbf{\hit@cauthor}\end{center}}
+ \parbox[t][1.4cm][t]{\textwidth}{
+ \begin{center}\kaishu\xiaoer\textbf{\hit@cschoolname}\end{center}}
+ {\songti\xiaoer\textbf{\hit@cdate}}
+\end{center}
+}
+
+%内封
+\newcommand{\hit@second@titlepage@other}{
+ \begin{center}
+ {\songti \xiaosi
+ \begin{tabular}{@{}r@{:}l@{}}
+ \hit@natclassifiedindextitle & \hit@natclassifiedindex\\
+ \hit@internatclassifiedindextitle & \hit@intclassifiedindex
+ \end{tabular}}\hfill
+ {\songti \xiaosi
+ \begin{tabular}{@{}r@{:}l@{}}
+ \hit@schoolidtitle & \hit@schoolid\\
+ \hit@secretlevel & \hit@statesecrets
+ \end{tabular}}
+ \parbox[t][3.2cm][t]{\textwidth}{\begin{center} \end{center} }
+ \parbox[t][2.4cm][t]{\textwidth}{\xiaoer[1]
+ \begin{center}\songti\bfseries\hit@cdegree\hit@cthesisname\end{center}
+ \ifhit@fulltime\relax\else\begin{center}\songti\textbf{\hit@cbraceleft\hit@cstudenttype\hit@cbraceright}\end{center}\fi}
+ \parbox[t][5cm][t]{\textwidth}{\erhao
+ \begin{center}\heiti\hit@ctitlecover\end{center}
+\ifhit@subtitle\begin{center}\hspace{-4em}\xiaoer\heiti\pozhehao\hit@csubtitle\end{center}\fi}
+ \parbox[t][9.8cm][b]{\textwidth}
+ {\sihao
+ \setlength{\hit@title@width}{6em}
+ \begin{center} \renewcommand{\arraystretch}{1.62} \songti
+ \begin{tabular}{l@{\hit@title@csep}l}
+ {\heiti \hit@put@title{\hit@cauthortitle}} & \hit@cauthor\\
+ {\heiti \hit@put@title{\hit@csupervisortitle}} & \hit@csupervisor\\
+ \ifx\hit@cassosupervisor\@empty\else%
+ {\heiti \hit@put@title{\hit@cassosupervisortitle}}& \hit@cassosupervisor\\
+ \fi
+ \ifx\hit@ccosupervisor\@empty\else%
+ {\heiti \hit@put@title{\hit@ccosupervisortitle}} & \hit@ccosupervisor\\
+ \fi
+ {\heiti \hit@put@title{\hit@cdegreetitle}} & \hit@cdegree\\
+ {\heiti \hit@put@title{\hit@csubjecttitle}} & \hit@csubject\\
+ {\heiti \hit@put@title{\hit@caffiltitle}} & \hit@caffil\\
+ {\heiti \hit@put@title{\hit@cdatetitle}} & \hit@cdate\\
+ {\heiti \hit@put@title{\hit@cschoolnametitle}} & \hit@cschoolname
+ \end{tabular} \renewcommand{\arraystretch}{1}
+ \end{center} }
+ \end{center}
+}
+% 英文封面
+\newcommand{\emultiline}[2][c]{\renewcommand{\arraystretch}{1}\begin{tabular}[#1]{@{}l@{}}#2\end{tabular} \renewcommand{\arraystretch}{1.3}}
+\newcommand{\hit@engcover}{
+ {
+ \xiaosi[1.667]\noindent Classified Index: \hit@natclassifiedindex \\[8pt]
+ U.D.C: \hit@intclassifiedindex }
+ \vspace*{1em}
+ \begin{center}
+ \parbox[t][1.6cm][t]{\textwidth}{\begin{center} \end{center} }
+ \parbox[t][3.5cm][t]{\textwidth}{\xiaoer[1]
+ \begin{center}Dissertation for the {\hit@exueweier} Degree in \hit@exueke\end{center}
+ \ifhit@fulltime\relax\else\begin{center}\hit@ebraceleft\hit@estudenttype\hit@ebraceright\end{center}\fi} %与中文保持一致,删除in {\hit@exueke}
+ \parbox[t][7cm][t]{\textwidth}{%
+ \begin{center}%
+ \settowidth{\hit@etitlelength}{\erhao\hit@etitle\ifhit@subtitle\hit@title@esep\hit@esubtitle\fi}%
+ \ifdim\hit@etitlelength>450mm\xiaoer\else\erhao\fi%
+ \textbf{\MakeUppercase{\hit@etitle}%
+\ifhit@subtitle\hit@title@esep\MakeUppercase{\hit@esubtitle}\fi}\end{center}}
+ %★★★★若信息内容不太长,不会引起信息内容分行时,使用tabular环境,否则使用下面的tabularx环境。
+ {\sihao\renewcommand{\arraystretch}{1.3}
+ \begin{tabular}{@{}l@{~}l@{}}
+ \textbf{\hit@eauthortitle\hit@title@esep} & \hit@eauthor\\
+ \textbf{\hit@esupervisortitle\hit@title@esep} & \hit@esupervisor\\
+ \ifx\hit@eassosupervisor\@empty\else%
+ \textbf{\hit@eassosupervisortitle\hit@title@esep} & \hit@eassosupervisor\\
+ \fi
+ \ifx\hit@ecosupervisor\@empty\else%
+ \textbf{\hit@ecosupervisortitle\hit@title@esep} & \hit@ecosupervisor\\
+ \fi
+ \textbf{\hit@edegreetitle\hit@title@esep} & \hit@edegree\\
+ \textbf{\hit@esubjecttitle\hit@title@esep} &\hit@esubject\\
+ \textbf{\hit@eaffiltitle\hit@title@esep} &\hit@eaffil\\
+ \textbf{\hit@edatetitle\hit@title@esep} & \hit@edate\\
+ \textbf{\hit@eschoolnametitle\hit@title@esep} & \hit@eschoolname
+ \end{tabular}\renewcommand{\arraystretch}{1}}
+ \end{center}
+}
+
+\def\makecover{
+ \phantomsection
+ \pdfbookmark[0]{\hit@ctitle}{ctitle}
+ \xiaosi[1]%
+% \end{macrocode}
+% \changes{v2.0.10}{2019/6/25}{此处添加提交图书馆电子版的逻辑}
+% \begin{macrocode}
+ \begin{titlepage}
+ \hit@first@titlepage
+ \ifhit@library\clearpage\else\cleardoublepage\fi
+ \hit@second@titlepage
+ \ifhit@library\clearpage\else\cleardoublepage\fi
+ \ifhit@bachelor
+ \relax
+ \else
+ \phantomsection
+ \pdfbookmark[0]{\hit@etitle}{etitle}
+ \hit@engcover
+ \ifhit@library\clearpage\else\cleardoublepage\fi
+ \fi
+ \end{titlepage}
+ \normalsize
+ \hit@makeabstract}
+% \end{macrocode}
+% 生成参考文献和关键字。
+% \begin{macrocode}
+\newbox\hit@kw
+\newcommand\hit@put@keywords[2]{%
+ \begingroup
+ \setbox\hit@kw=\hbox{#1}
+ \noindent\hangindent\wd\hit@kw\hangafter1%
+ \box\hit@kw#2\par
+ \endgroup}
+
+\newcommand{\hit@makeabstract}{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\cabstractcname}[\cabstractename]
+ \pagestyle{hit@headings}
+ \pagenumbering{Roman}
+ \hit@cabstract
+ \vskip12bp
+ \hit@put@keywords{\heiti\hit@ckeywords@title}{\hit@ckeywords}
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\eabstractcname}[\eabstractename]
+ \hit@eabstract
+ \vskip12bp
+ \hit@put@keywords{\textbf{Keywords:\enskip}}{\hit@ekeywords}}
+% \end{macrocode}
+% 定义符号表。
+% \begin{macrocode}
+\newenvironment{denotation}[1][2.5cm]{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@denotation@ctitle}[\hit@denotation@etitle]
+\setcounter{table}{0}
+\renewcommand{\thetable}{\arabic{table}}%使表编号为 1 的格式
+ }{\renewcommand{\thetable}{\arabic{chapter}-\arabic{table}}%使表编号为 7-1 的格式
+\setcounter{table}{0}}%
+% \end{macrocode}
+% 定义索引、目录格式
+% \begin{macrocode}
+\def\hit@starttoc#1{% #1: float type, prepend type name in \listof*** entry.
+ \let\oldnumberline\numberline
+ \def\numberline##1{\oldnumberline{\csname #1name\endcsname\hskip.4em ##1}}
+ \@starttoc{\csname ext@#1\endcsname}
+ \let\numberline\oldnumberline}
+\def\hit@listof#1#2{% #1: float type
+\chapter*{\csname list#1name\endcsname}[#2]\hit@starttoc{#1}}
+
+\renewcommand\listoffigures{\hit@listof{figure}{\listfigureename}}
+\renewcommand*\l@figure{\addvspace{6bp}\@dottedtocline{1}{0em}{4em}}
+\renewcommand\listoftables{\hit@listof{table}{\listtableename}}
+\let\l@table\l@figure
+\def\ext@equation{loe}
+\def\equcaption#1{%
+ \addcontentsline{\ext@equation}{equation}%
+ {\protect\numberline{#1}}}
+\newcommand\listofequations{\hit@listof{equation}{\listequationename}}
+\let\l@equation\l@figure
+% \end{macrocode}
+% \subsubsection{目录}
+% \label{sec:toc}
+% 本科文科生要求目录有四级。
+% \begin{macrocode}
+\setcounter{secnumdepth}{3}
+\setcounter{tocdepth}{2}
+\ifhit@bachelor\ifhit@tocfour\setcounter{tocdepth}{3}\fi\fi
+% \end{macrocode}
+% 工大论文目录中的潜规则:目录中的目录位置是空白。
+% \begin{macrocode}
+\renewcommand\tableofcontents{%
+\ifhit@openright\cleardoublepage\else\clearpage\fi
+\phantomsection
+\markboth{\contentsname}{ccontent}
+\hit@chapter*{\contentsname}
+\pdfbookmark[0]{\contentsname}{ccontent}
+\normalsize\@starttoc{toc}}
+% \end{macrocode}
+% 按照我工要求的目录格式。
+% \begin{macrocode}
+\ifhit@arialtoc
+ \def\hit@toc@font{\sffamily}
+\fi
+\def\@pnumwidth{4em}%规定中的提前悬挂
+\def\@tocrmarg{\@pnumwidth}
+\def\@dotsep{1}
+% \end{macrocode}
+% 此处临时更改一下对齐方式。\CTeX\ 似乎无法应对双语目录。
+% todo:
+% \changes{v1.0.4}{2017/09/17}{将leftskip设置参数至于外侧,以便后续添加可以适应标题长度的\cs{contentsline}方法}
+% \begin{macrocode}
+\setlength\@tempdima{4em}%
+\patchcmd{\@dottedtocline}{#4}{\csname hit@toc@font\endcsname #4}{}{}
+\patchcmd{\@dottedtocline}{\hb@xt@\@pnumwidth}{\hbox}{}{}
+\renewcommand*\l@chapter[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ %\vskip 4bp \@plus\p@
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ % numberline is called here, and it uses \@tempdima
+% \end{macrocode}
+% 修改本科生论文目录格式
+% \changes{v2.0.8}{2017/06/15}{修改本科生论文目录格式(感谢QQ:嬴政 同学)}
+% \begin{macrocode}
+ {\ifhit@bachelor\rmfamily\else\csname hit@toc@font\endcsname\fi\heiti #1}
+ \leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
+ \nobreak{\normalfont\normalcolor #2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
+% \end{macrocode}
+% 按工大标准, 缩小目录中各级标题之间的缩进,使它们相隔一个字符距离,也就是12pt。
+% \begin{macrocode}
+\renewcommand*\l@section{\@dottedtocline{1}{1em}{1.8em}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{2em}{2.5em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{3\ccwd}{3.1em}}
+% \end{macrocode}
+% 英文目录格式。
+% \begin{macrocode}
+\def\@dotsep{0.75} % 定义英文目录的点间距
+\setlength\leftmargini {0pt}
+\setlength\leftmarginii {0pt}
+\setlength\leftmarginiii {0pt}
+\setlength\leftmarginiv {0pt}
+\setlength\leftmarginv {0pt}
+\setlength\leftmarginvi {0pt}
+
+\def\engcontentsname{\bfseries Contents}
+\newcommand\tableofengcontents{
+% \end{macrocode}
+% 此处添加英文目录的章标题格式,默认细点
+% \changes{v1.0.5}{2017/09/18}{矫正英文目录缩进与中文目录一致的bug}
+% \begin{macrocode}
+ \def\l@chapter{\@dottedtocline{0}{0em}{5em}}%控制英文目录: 细点\@dottedtocline 粗点\@dottedtoclinebold
+ \@restonecolfalse
+ \chapter*{\engcontentsname %chapter*上移一行,避免在toc中出现。
+ \pdfbookmark[0]{Contents}{econtent}
+ \@mkboth{%
+ \engcontentsname}{\engcontentsname}}
+% \end{macrocode}
+% 此处临时更改一下对齐方式。\CTeX\ 似乎无法应对双语目录。
+% \changes{v1.0.4}{2017/09/17}{修正英文目录中换行时无法对齐的bug}
+% 删除增加\cs{hangindent}的方法,其原因是\cs{numberline}多出一个空格
+% \changes{v1.0.5}{2017/09/18}{彻底修正英文目录中换行时无法对齐的bug}
+% \begin{macrocode}
+ \@starttoc{toe}%
+ \if@restonecol\twocolumn\fi}
+\def\@dotsep{0.75} % 定义英文目录的点间距
+% \end{macrocode}
+% 目录中附录的章号格式。
+% \begin{macrocode}
+\ctexset{%
+ appendix/number=\ifhit@bachelor\arabic{chapter}\else\Alph{chapter}\fi,
+}
+% \end{macrocode}
+% 设置附录、结论、参考文献等格式。
+% \begin{macrocode}
+\let\hit@appendix\appendix
+\renewenvironment{appendix}{%
+ \let\title\hit@appendix@title
+ \hit@appendix
+ \ifhit@bachelor\renewcommand{\thechapter}{\arabic{chapter}}\fi
+ }{%
+ \let\title\@gobble}
+\let\title\@gobble
+\newcommand{\hit@appendix@title}[1]{%
+ \begin{center}
+ \bfseries\xiaosi #1
+ \end{center}}
+\newlist{translationbib}{enumerate}{1}
+\setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp,
+ leftmargin=10mm,labelsep=!,before=\vspace{0.5\baselineskip}\wuhao[1.3]}
+
+
+\newenvironment{conclusions}{%
+\ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@conclusion@ctitle}[\hit@conclusion@etitle]}{}
+\newenvironment{acknowledgements}{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@acknowledgement@ctitle}[\hit@acknowledgement@etitle]}{}
+\newenvironment{resume}{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@resume@ctitle}[\hit@resume@etitle]}{}
+\newenvironment{publication}{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@publication@ctitle}[\hit@publication@etitle]}{}
+% \end{macrocode}
+% 此处中英文索引的格式设置尽量符合\PGR\ 中给出的示例的格式。此处间距常数是人工调节的。
+% \changes{v1.0.10}{2018/02/19}{修改了索引的间距,使其更符合规范中的示例}
+% \begin{macrocode}
+\newenvironment{ceindex}{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\indexname}[\hit@index@etitle]
+ \setlength{\columnsep}{4em}
+ \begin{adjustwidth}{2em}{2em}
+ \begin{multicols*}{2}}{\end{multicols*}
+ \end{adjustwidth}
+ }
+
+\newlist{idxwordlist}{description}{3}
+\setlist[idxwordlist, 1]{%
+ itemsep=\baselineskip,
+ labelindent=8em,
+ font=\normalsize\bfseries,
+}
+\setlist[idxwordlist, 2]{%
+ nosep,
+ labelindent=2em,
+ font=\wuhao\rm,
+}
+\setlist[idxwordlist, 3]{%
+ nosep,
+ labelindent=4em,
+ font=\wuhao\rm,
+}
+
+\def\hit@authorization@other{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@authorization@ctitle}[\hit@authorization@etitle]
+ \xiaosi[1.6]\vspace{\baselineskip}
+\begin{center}\xiaosan\heiti\hit@declarename\end{center}
+\par\hit@declaretext
+\vspace{\baselineskip}
+\par\hspace{6em}\hit@authorsig\hfill\hit@frontdate\hit@datefill
+\vspace{2\baselineskip}
+\begin{center}\xiaosan\heiti\hit@authorizationtitle\end{center}
+\par\hit@authorizationtext
+\vspace{2\baselineskip}
+\par\hspace{6em}\hit@authorsig\hfill\hit@frontdate\hit@datefill
+\vspace{2\baselineskip}
+\par\hspace{6em}\hit@teachersig\hfill\hit@frontdate\hit@datefill}
+\def\hit@authorization@bachelor{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi
+ \hit@appendix@chapter*{\hit@declarename@bachelor}
+ \hit@authorizationtext@bachelor
+\vspace{2\baselineskip}
+\par\hspace{6em}\hit@authorsig\hfill\hit@frontdate\hit@datefill
+}
+
+\NewDocumentCommand{\authorization}{o}{%
+ \IfNoValueTF{#1}{%
+ \ifhit@bachelor\hit@authorization@bachelor\else\hit@authorization@other\fi
+ }{%
+ \includepdf[fitpaper=true,pagecommand={%
+ \thispagestyle{hit@empty}%
+ \phantomsection\addcontentsline{toc}{chapter}{\ifhit@bachelor\hit@declarename@bachelor\else\hit@authorization@ctitle\fi}%
+ \ifhit@doctor%
+% \end{macrocode}
+% \changes{v1.0.13}{2018/4/5}{添加\cs{texorpdfstring}命令去除书签中带有格式时的警告}
+% \begin{macrocode}
+ \addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries \hit@authorization@etitle}{\hit@authorization@etitle}}%
+ \fi%
+ }]{#1}%
+ }%
+}
+
+\newcommand\bibstyle@numerical{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
+\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}}
+% \end{macrocode}
+% \changes{v2.0.6}{2018/12/5}{在\cs{inlinecite}内添加空格}
+% \begin{macrocode}
+\newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{\hit@inline@sep}}
+\citestyle{numerical}
+\DeclareRobustCommand\inlinecite{\@inlinecite}
+\def\@inlinecite#1{\begingroup\citestyle{inline}\let\@cite\NAT@citenum\citep{#1}\endgroup}
+\let\onlinecite\inlinecite
+\renewenvironment{thebibliography}[1]{%
+ \ifhit@openright\cleardoublepage\else\clearpage\fi\phantomsection%
+ \hit@appendix@chapter*{\bibname}[\hit@bibname@etitle]
+ \normalsize
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\renewcommand{\makelabel}[1]{##1\hfill}
+ \settowidth{\labelwidth}{\@biblabel{#1}}
+ \setlength{\labelsep}{0.5em}
+ \setlength{\itemindent}{0pt}
+ \setlength{\leftmargin}{\labelsep+\labelwidth}
+ \addtolength{\itemsep}{-0.8em}
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy\frenchspacing
+% \end{macrocode}
+% \changes{v2.0.7}{2019/03/02}{添加flushbottom到thebibliography环境中}
+% \begin{macrocode}
+ \flushbottom
+% \end{macrocode}
+% \changes{v2.0.3}{2018/10/08}{添加参考文献分割开关}
+% \begin{macrocode}
+ \ifhit@splitbibitem
+ \clubpenalty0
+ \@clubpenalty \clubpenalty
+ \widowpenalty0%
+ \interlinepenalty-50%
+ \else
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \interlinepenalty4000%
+ \fi
+\sfcode`\.\@m}
+{\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+\endlist\frenchspacing}
+\patchcmd\NAT@citexnum{%
+ \@ifnum{\NAT@ctype=\z@}{%
+ \if*#2*\else\NAT@cmt#2\fi
+ }{}%
+ \NAT@mbox{\NAT@@close}%
+}{%
+ \NAT@mbox{\NAT@@close}%
+ \@ifnum{\NAT@ctype=\z@}{%
+ \if*#2*\else\textsuperscript{#2}\fi
+ }{}%
+}{}{}
+\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#3\fi}%
+ \else #1\fi\endgroup}
+\patchcmd{\NAT@citex}{%
+ \if*#2*\else\NAT@cmt#2\fi
+ \if\relax\NAT@date\relax\else\NAT@@close\fi
+}{%
+ \if\relax\NAT@date\relax\else\NAT@@close\fi
+ \if*#2*\else\textsuperscript{#2}\fi
+}{}{}
+\renewcommand\NAT@cite%
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+ #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup}
+%</cls>
+% \end{macrocode}
+% \subsection{其它}
+% \label{sec:other}
+% 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。
+% \begin{macrocode}
+%<*cls>
+\AtEndOfClass{\input{hithesis.cfg}}
+\AtEndOfClass{\sloppy}
+%</cls>
+% \end{macrocode}
+% \iffalse
+% \begin{macrocode}
+%<*dtx-style>
+\ProvidesPackage{dtx-style}
+\RequirePackage{hypdoc}
+\RequirePackage[UTF8,scheme=chinese,fontset=windowsnew]{ctex}
+\RequirePackage{newpxtext}
+\RequirePackage{newpxmath}
+\RequirePackage[
+ top=2.5cm, bottom=2.5cm,
+ left=4cm, right=2cm,
+ headsep=3mm]{geometry}
+\RequirePackage{array,longtable,booktabs}
+\RequirePackage{listings}
+\RequirePackage{fancyhdr}
+\RequirePackage{xcolor}
+\RequirePackage{enumitem}
+\RequirePackage{etoolbox}
+\RequirePackage{metalogo}
+\RequirePackage{hyperref}
+
+\colorlet{hit@macro}{blue!60!black}
+\colorlet{hit@env}{blue!70!black}
+\colorlet{hit@option}{purple}
+\patchcmd{\PrintMacroName}{\MacroFont}{\MacroFont\bfseries\color{hit@macro}}{}{}
+\patchcmd{\PrintDescribeMacro}{\MacroFont}{\MacroFont\bfseries\color{hit@macro}}{}{}
+\patchcmd{\PrintDescribeEnv}{\MacroFont}{\MacroFont\bfseries\color{hit@env}}{}{}
+\patchcmd{\PrintEnvName}{\MacroFont}{\MacroFont\bfseries\color{hit@env}}{}{}
+
+\def\DescribeOption{%
+ \leavevmode\@bsphack\begingroup\MakePrivateLetters%
+ \Describe@Option}
+\def\Describe@Option#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+ \hit@special@index{option}{#1}\@esphack\ignorespaces}
+\def\PrintDescribeOption#1{\strut \MacroFont\bfseries\sffamily\color{hit@option} #1\ }
+\def\hit@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=2,
+ 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}{%
+ \texttt{#2}\IfBooleanF#1{\hit@special@index{package}{#2}}}
+\DeclareDocumentCommand{\file}{s m}{%
+ \texttt{#2}\IfBooleanF#1{\hit@special@index{file}{#2}}}
+\newcommand{\myentry}[1]{%
+ \marginpar{\raggedleft\color{purple}\bfseries\strut #1}}
+\newcommand{\note}[2][Note]{{%
+ \color{magenta}{\bfseries #1}\emph{#2}}}
+%</dtx-style>
+% \end{macrocode}
+% \begin{macrocode}
+%<cfg|dtx-style>\newcommand{\pozhehao}{——}
+%<cfg|dtx-style>\def\hithesis{\textsc{hi}\-\textsc{Thesis}}
+%<cfg|dtx-style>\def\hit{哈尔滨工业大学}
+%<cfg|dtx-style>\def\PGR{\href{http://hitgs.hit.edu.cn/aa/fd/c3425a109309/page.htm}
+%<cfg|dtx-style>{《\hit 研究生学位论文撰写规范》}}
+%<cfg|dtx-style>\def\UGR{\href{http://jwc.hit.edu.cn/2566/list.htm}
+%<cfg|dtx-style>{《\hit 本科生毕业论文撰写规范》}}
+%<cfg>\def\hit@inline@sep{,}
+% \end{macrocode}
+% \changes{v2.0.6}{2018/12/5}{在\cs{inlinecite}内添加空格}
+% \begin{macrocode}
+%<*dtx-style>
+ \NewDocumentEnvironment{hitrgu}{o o}
+ { \IfNoValueTF{#1}{\PGR,\UGR}{#1}\IfNoValueF{#2}{#2中}%
+\color{red}规定:“}{”}
+%</dtx-style>
+% \end{macrocode}
+% \begin{macrocode}
+%<*hitlogo>
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:27:21 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 98 590 565 677
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 98 590 565 677
+%%EndPageSetup
+q 98 590 467 87 rectclip q
+0 g
+532.574 596.495 m 527.34 601.503 l 532.105 601.257 l 536.867 601.015 l
+537.176 605.284 l 537.57 610.765 535.727 611.605 529.727 608.679 c 525.621
+ 606.675 525.082 606.632 522.34 608.054 c 519.105 609.734 518.207 613.554
+ 521.047 613.554 c 526.309 613.554 535.574 615.941 536.098 617.433 c 536.414
+ 618.331 537.324 619.831 538.117 620.761 c 539.957 622.917 538.949 624.589
+ 535.809 624.589 c 534.309 624.589 533.371 625.167 533.371 626.093 c 533.371
+ 627.132 534.414 627.597 536.746 627.597 c 538.602 627.597 540.684 628.273
+ 541.367 629.101 c 542.051 629.929 543.152 630.605 543.816 630.605 c 545.504
+ 630.605 554.359 636.612 554.359 637.753 c 554.359 640.003 551.082 639.741
+ 548.531 637.292 c 546.605 635.437 545.172 634.859 543.562 635.28 c 542.25
+ 635.624 540.578 635.269 539.586 634.433 c 538.641 633.64 535.949 632.155
+ 533.602 631.136 c 529.934 629.542 528.992 629.468 526.855 630.616 c 525.492
+ 631.351 524.375 632.526 524.375 633.237 c 524.375 634.55 530.199 636.609
+ 533.93 636.62 c 535.062 636.624 536.859 637.276 537.926 638.069 c 539.75
+ 639.425 539.766 639.616 538.18 641.234 c 536.59 642.855 536.336 642.855
+ 533.902 641.253 c 529.945 638.651 527.355 641.421 531.121 644.23 c 532.781
+ 645.468 532.785 645.62 531.133 647.3 c 529.477 648.987 529.316 648.98 527.637
+ 647.112 c 526.668 646.034 524.629 643.234 523.109 640.89 c 520.074 636.202
+ 519.285 635.859 516.941 638.214 c 515.5 639.659 515.535 640.05 517.367
+642.632 c 519.605 645.784 519.863 648.249 518.371 652.194 c 517.082 655.597
+ 517.922 657.003 520.438 655.651 c 522.004 654.812 522.375 653.526 522.375
+ 648.929 c 522.375 644.753 522.672 643.542 523.488 644.362 c 525.016 645.898
+ 524.98 659.335 523.438 664.03 c 522.742 666.136 522.426 668.109 522.73
+668.413 c 523.68 669.37 528.34 667.757 530.293 665.796 c 532.059 664.023
+ 532.078 663.616 530.602 658.296 c 529.742 655.202 529.355 652.359 529.738
+ 651.976 c 530.117 651.593 531.637 652.491 533.113 653.972 c 535.215 656.081
+ 535.535 656.925 534.582 657.878 c 532.492 659.98 533.246 660.816 536.652
+ 660.175 c 539.746 659.593 540.133 659.859 543.301 664.769 c 545.152 667.632
+ 546.953 671.386 547.305 673.109 c 548.117 677.101 550.496 677.569 552.109
+ 674.058 c 554.223 669.452 553.566 667.433 548.82 663.929 c 544.594 660.808
+ 543.32 658.456 545.219 657.28 c 545.688 656.991 547.113 657.866 548.391
+ 659.23 c 549.664 660.589 551.164 661.706 551.719 661.706 c 552.273 661.706
+ 553.707 662.624 554.898 663.749 c 556.094 664.878 558.707 666.066 560.711
+ 666.39 c 563.699 666.878 564.352 666.679 564.352 665.28 c 564.352 662.866
+ 562.582 659.78 558.711 655.433 c 556.867 653.362 555.355 651.331 555.355
+ 650.917 c 555.355 650.507 554.223 648.847 552.836 647.23 c 549.637 643.499
+ 550.965 641.87 555.352 644.148 c 559.18 646.136 563.352 645.437 563.352
+ 642.804 c 563.352 640.519 555.363 633.476 551.09 631.995 c 548.676 631.159
+ 547.922 630.343 548.094 628.757 c 548.223 627.589 547.203 624.968 545.824
+ 622.929 c 542.656 618.245 543.805 616.956 549.211 619.128 c 553.934 621.023
+ 556.355 620.526 556.355 617.655 c 556.355 615.093 554.867 614.226 549.359
+ 613.577 c 544.863 613.05 l 545.203 605.913 l 545.523 599.101 545.395 598.612
+ 542.348 595.132 c 540.594 593.124 538.855 591.484 538.48 591.484 c 538.109
+ 591.484 535.449 593.737 532.57 596.495 c h
+545.535 641.296 m 547.727 643.284 547.891 644.651 545.934 644.651 c 544.055
+ 644.651 541.191 641.734 541.914 640.558 c 542.719 639.253 543.449 639.401
+ 545.535 641.296 c h
+544.215 645.972 m 545.816 647.913 546.102 653.878 544.613 654.405 c 543.871
+ 654.671 543.363 653.995 543.363 652.73 c 543.363 651.562 542.691 650.347
+ 541.867 650.03 c 539.598 649.155 540.055 644.651 542.41 644.651 c 542.801
+ 644.651 543.613 645.245 544.215 645.972 c h
+551.395 649.917 m 553.59 653.487 554.887 657.499 554.098 658.288 c 553.82
+ 658.566 552.422 658.499 550.988 658.136 c 548.836 657.593 548.398 656.929
+ 548.488 654.327 c 548.551 652.593 548.27 650.155 547.863 648.913 c 546.742
+ 645.472 549.066 646.132 551.395 649.917 c h
+538.367 650.702 m 538.367 653.507 535.695 654.288 533.355 652.163 c 530.906
+ 649.937 531.66 648.663 535.43 648.663 c 537.715 648.663 538.367 649.116
+ 538.367 650.702 c h
+282.875 600.261 m 277.797 605.624 277.324 605.894 276.215 604.112 c 272.863
+ 598.734 269.059 596.937 267.828 600.155 c 267.441 601.167 267.922 602.335
+ 269.066 603.175 c 270.871 604.503 270.859 604.601 268.73 606.097 c 266.473
+ 607.683 265.711 612.261 267.395 614.105 c 268.73 615.566 269.637 620.386
+ 268.684 620.976 c 268.219 621.265 266.312 619.921 264.449 617.987 c 262.059
+ 615.511 260.328 614.562 258.594 614.765 c 255.715 615.109 254.789 612.874
+ 254.629 605.21 c 254.535 600.519 253.203 596.495 251.746 596.503 c 251.355
+ 596.503 249.742 598.905 248.168 601.839 c 245.32 607.136 245.312 607.202
+ 247.07 610.609 c 248.27 612.944 249.082 617.749 249.594 625.585 c 250.008
+ 631.933 250.805 638.308 251.363 639.753 c 252.125 641.714 251.977 643.499
+ 250.781 646.843 c 249.219 651.198 249.508 654.683 251.426 654.683 c 253.09
+ 654.683 258.27 649.773 258.812 647.679 c 259.164 646.339 258.359 644.612
+ 256.426 642.53 c 252.633 638.456 251.941 635.39 253.887 631.269 c 255.355
+ 628.167 255.328 627.573 253.5 622.737 c 252.418 619.882 251.531 616.87
+251.531 616.05 c 251.531 613.741 253.32 614.284 254.043 616.812 c 255.953
+ 623.487 259.816 632.554 260.559 632.093 c 261.027 631.804 260.547 629.655
+ 259.492 627.323 c 257.395 622.687 256.992 619.573 258.484 619.573 c 259.879
+ 619.573 271.633 631.741 272.492 634.069 c 274.375 639.183 269.77 642.163
+ 265.789 638.409 c 263.043 635.819 264.242 633.862 267.5 635.612 c 270.496
+ 637.218 271.133 636.206 269.094 633.085 c 266.918 629.749 263.18 630.019
+ 262.684 633.542 c 262.496 634.882 261.68 636.991 260.871 638.23 c 259.566
+ 640.226 259.578 640.835 260.961 643.523 c 261.824 645.191 262.527 647.554
+ 262.527 648.769 c 262.527 650.909 262.59 650.921 264.5 649.191 c 265.586
+ 648.202 266.754 646.511 267.094 645.429 c 267.617 643.773 268.297 643.566
+ 271.367 644.109 c 273.375 644.468 276.207 645.612 277.656 646.659 c 280.102
+ 648.421 281.516 648.39 281.516 646.566 c 281.516 646.151 280.379 644.452
+ 278.992 642.796 c 277.355 640.847 276.852 639.546 277.555 639.112 c 279.039
+ 638.191 282.02 641.073 284.074 645.425 c 285.672 648.804 285.859 648.909
+ 287.145 647.148 c 289.727 643.601 288.723 641.331 282.492 636.651 c 279.207
+ 634.179 276.52 631.585 276.52 630.882 c 276.52 629.14 277.234 629.265 281.129
+ 631.679 c 282.973 632.823 284.887 633.503 285.391 633.191 c 285.91 632.87
+ 286.07 627.23 285.766 620.124 c 285.227 607.624 l 287.703 606.491 l 289.066
+ 605.866 290.965 604.019 291.93 602.386 c 293.543 599.64 293.555 599.23
+292.07 596.952 c 291.188 595.601 289.984 594.491 289.402 594.491 c 288.816
+ 594.491 285.883 597.089 282.875 600.261 c h
+273.02 608.37 m 273.02 610.183 271.062 609.855 270.676 607.972 c 270.461
+ 606.929 270.836 606.468 271.676 606.749 c 272.414 606.999 273.02 607.726
+ 273.02 608.37 c h
+282.852 607.202 m 283.219 607.569 282.781 608.691 281.883 609.687 c 280.688
+ 611.011 280.215 613.609 280.133 619.3 c 280.035 625.71 279.75 627.023 278.516
+ 626.687 c 277.691 626.46 276.098 626.202 274.969 626.116 c 271.961 625.882
+ 270.523 624.722 270.523 622.523 c 270.523 620.179 271.371 620.081 274.23
+ 622.089 c 276.879 623.952 277.211 623.409 277.312 617.042 c 277.441 609.073
+ 280.066 604.405 282.852 607.202 c h
+273.762 615.073 m 273.055 618.792 271.52 619.167 271.52 615.62 c 271.52
+ 613.698 272.031 612.55 272.883 612.55 c 273.797 612.55 274.086 613.378
+273.762 615.073 c h
+394.883 598.015 m 393.098 602.304 391.578 602.413 388.113 598.507 c 386.641
+ 596.851 384.613 595.495 383.605 595.495 c 381.195 595.495 378.461 598.601
+ 378.461 601.335 c 378.461 603.222 378.98 603.487 382.387 603.351 c 386.152
+ 603.206 391.453 605.589 391.453 607.433 c 391.453 607.905 390.789 608.847
+ 389.973 609.523 c 387.883 611.269 389.734 614.339 393.125 614.741 c 395.992
+ 615.081 397.672 617.566 395.035 617.566 c 393.027 617.566 392.965 619.448
+ 394.945 620.21 c 395.766 620.526 396.172 621.222 395.844 621.753 c 395.516
+ 622.284 394.617 622.476 393.852 622.179 c 392.133 621.519 389.453 622.46
+ 389.453 623.726 c 389.453 624.237 391.027 625.589 392.953 626.726 c 396.656
+ 628.921 397.723 631.148 394.59 630.151 c 393.52 629.808 392.199 630.202
+ 391.473 631.085 c 389.547 633.413 388.578 633.023 382.863 627.597 c 379.957
+ 624.839 376.715 622.581 375.656 622.581 c 372.305 622.581 368.316 626.507
+ 368.66 629.468 c 368.938 631.862 369.391 632.124 373.461 632.249 c 376.531
+ 632.343 380.18 633.566 384.957 636.101 c 394.23 641.026 394.789 641.616
+ 393.477 645.089 c 392.566 647.491 392.199 647.694 390.832 646.558 c 389.961
+ 645.831 388.855 644.202 388.375 642.937 c 387.219 639.886 383.684 639.886
+ 382.922 642.937 c 382.605 644.198 382.816 646.472 383.391 647.991 c 384.277
+ 650.327 384.734 650.589 386.379 649.706 c 387.66 649.019 389.188 648.991
+ 390.844 649.624 c 393.203 650.526 393.383 651.093 393.66 658.405 c 393.945
+ 666.054 394.008 666.226 396.637 666.53 c 400.406 666.968 403.234 662.734
+ 401.59 659.109 c 399.938 655.476 400.156 654.683 402.805 654.683 c 404.324
+ 654.683 406.367 656.109 408.551 658.691 c 410.863 661.421 412.75 662.698
+ 414.488 662.702 c 420.211 662.714 421.387 656.741 416.188 654.066 c 414.402
+ 653.148 412.633 651.917 412.258 651.331 c 410.691 648.894 412.91 648.859
+ 419.168 651.222 c 424.895 653.386 426.004 653.534 427.223 652.312 c 429.281
+ 650.245 427.848 646.894 424.637 646.273 c 423.152 645.987 418.617 645.484
+ 414.562 645.155 c 407.32 644.566 399.117 641.452 395.652 637.976 c 393.398
+ 635.714 395.266 634.98 398.512 636.851 c 401.117 638.351 402.941 637.671
+ 400.453 636.128 c 399.906 635.788 398.992 634.632 398.418 633.562 c 397.598
+ 632.019 397.703 631.609 398.922 631.609 c 399.77 631.609 401.816 633.816
+ 403.473 636.515 c 406.613 641.64 410.02 643.499 412.223 641.288 c 414.098
+ 639.405 412.746 636.929 409.156 635.671 c 405.512 634.398 401.445 630.839
+ 401.445 628.929 c 401.445 626.905 403.148 627.335 404.863 629.792 c 406.754
+ 632.499 408.355 631.3 406.609 628.491 c 405.914 627.378 405.605 625.655
+ 405.922 624.659 c 406.312 623.417 405.664 622.3 403.863 621.116 c 402.004
+ 619.894 401.543 619.073 402.297 618.316 c 403.051 617.562 403.785 617.605
+ 404.812 618.46 c 406.566 619.921 407.676 618.554 406.395 616.515 c 404.566
+ 613.62 405.332 612.726 409.191 613.241 c 412.043 613.624 413.598 613.222
+ 415.688 611.569 c 420.625 607.663 418.66 600.019 412.891 600.679 c 410.457
+ 600.956 409.883 601.534 409.605 603.991 c 409.246 607.144 405.945 612.55
+ 404.375 612.55 c 403.863 612.55 403.445 609.46 403.445 605.683 c 403.445
+ 598.589 402.5 596.714 398.145 595.159 c 396.754 594.663 396.004 595.319
+ 394.883 598.015 c h
+396.797 603.276 m 397.668 604.691 396.223 609.542 394.93 609.542 c 393.551
+ 609.542 391.23 604.077 392.199 603.105 c 393.039 602.261 396.246 602.382
+ 396.797 603.276 c h
+402.742 646.757 m 403.496 647.964 403.191 648.917 401.512 650.605 c 398.883
+ 653.245 398.91 653.265 398.02 648.335 c 397.379 644.776 397.492 644.519
+ 399.535 644.823 c 400.75 645.003 402.191 645.874 402.742 646.757 c h
+409.371 653.312 m 410.508 654.769 411.441 656.347 411.441 656.823 c 411.441
+ 658.632 408.605 657.593 407.059 655.218 c 403.922 650.417 405.852 648.823
+ 409.371 653.312 c h
+214.914 599.761 m 213.449 602.105 211.418 605.245 210.402 606.741 c 208.055
+ 610.202 208.074 610.874 210.492 609.577 c 213.383 608.023 216.555 608.3
+ 216.555 610.105 c 216.555 611.011 215.816 611.581 214.805 611.456 c 213.844
+ 611.335 212.344 611.554 211.477 611.937 c 210.609 612.319 208.68 612.167
+ 207.191 611.597 c 204.832 610.698 204.625 610.292 205.59 608.48 c 206.457
+ 606.855 206.352 605.859 205.105 603.956 c 202.848 600.495 200.562 600.796
+ 200.562 604.558 c 200.562 606.335 199.938 607.835 199.062 608.175 c 196.402
+ 609.198 192.527 607.558 191.555 604.999 c 190.48 602.155 188.414 601.812
+ 186.141 604.093 c 184.316 605.925 184.156 609.409 185.629 615.058 c 187.48
+ 622.14 187.406 622.038 189.418 620.21 c 191.863 617.987 192.836 618.148
+ 192.047 620.64 c 191.539 622.241 191.781 622.64 193.125 622.394 c 195.914
+ 621.886 195.902 624.284 193.109 624.987 c 189.305 625.948 190.039 628.273
+ 194.816 630.398 c 200.5 632.925 201.59 634.495 201.848 640.484 c 202.078
+ 645.937 200.887 648.109 198.23 647.085 c 196.191 646.3 196.109 644.968
+197.973 643.093 c 200.273 640.784 198.648 637.792 193.09 634.089 c 187.453
+ 630.335 186.836 630.151 184.598 631.573 c 183.406 632.331 183.977 633.308
+ 187.598 636.706 c 191.922 640.769 191.949 642.991 187.645 640.679 c 184.664
+ 639.077 180.711 640.468 179.043 643.71 c 177.273 647.14 178.188 647.987
+ 184.07 648.378 c 187.996 648.64 202.82 655.359 209.664 659.976 c 223.113
+ 669.05 230.449 670.456 230.531 663.98 c 230.551 662.155 220.797 657.48
+218.496 658.21 c 216.395 658.882 205.637 652.972 205.586 651.12 c 205.555
+ 649.89 207.598 647.659 208.758 647.659 c 209.195 647.659 209.559 648.737
+ 209.559 650.05 c 209.559 651.683 210.27 652.636 211.805 653.046 c 218.297
+ 654.792 222.848 652.425 221.922 647.776 c 221.543 645.874 221.988 644.562
+ 223.469 643.218 c 225.973 640.944 226.035 639.921 223.934 635.691 c 222.16
+ 632.12 221.879 627.03 222.48 609.202 c 222.801 599.722 222.598 597.144
+221.469 596.425 c 218.898 594.792 217.609 595.448 214.914 599.761 c h
+193.641 610.819 m 193.516 612.019 192.148 611.788 191.719 610.495 c 191.496
+ 609.831 191.855 609.472 192.516 609.691 c 193.176 609.913 193.684 610.421
+ 193.641 610.819 c h
+207.059 616.562 m 206.574 617.347 206 617.405 205.332 616.737 c 204.785
+ 616.187 204.66 615.206 205.059 614.558 c 205.543 613.773 206.117 613.714
+ 206.785 614.382 c 207.332 614.933 207.457 615.913 207.059 616.562 c h
+197.02 615.491 m 198.043 617.148 195.918 617.546 193.965 616.062 c 192.129
+ 614.667 192.141 614.62 194.258 614.589 c 195.461 614.569 196.707 614.976
+ 197.02 615.491 c h
+216.555 618.511 m 216.555 620.132 216.102 621.737 215.555 622.081 c 214.957
+ 622.448 214.555 621.253 214.555 619.128 c 214.555 617.167 215.004 615.558
+ 215.555 615.558 c 216.102 615.558 216.555 616.886 216.555 618.511 c h
+200.637 620.851 m 200.512 622.05 199.141 621.819 198.715 620.526 c 198.492
+ 619.862 198.852 619.503 199.512 619.722 c 200.172 619.944 200.68 620.452
+ 200.637 620.851 c h
+211.555 621.577 m 211.555 623.913 211.547 623.913 207.906 622.523 c 205.68
+ 621.675 205.418 621.276 206.594 620.534 c 209.141 618.917 211.555 619.425
+ 211.555 621.577 c h
+201.562 625.53 m 201.562 626.05 201.113 626.753 200.562 627.097 c 200.012
+ 627.437 199.562 627.011 199.562 626.151 c 199.562 625.292 200.012 624.589
+ 200.562 624.589 c 201.113 624.589 201.562 625.011 201.562 625.53 c h
+207.559 626.593 m 207.559 627.148 207.109 627.597 206.559 627.597 c 206.008
+ 627.597 205.559 627.148 205.559 626.593 c 205.559 626.042 206.008 625.593
+ 206.559 625.593 c 207.109 625.593 207.559 626.042 207.559 626.593 c h
+216.555 628.683 m 216.555 631.128 214.219 630.784 213.73 628.265 c 213.539
+ 627.276 214.051 626.593 214.98 626.593 c 215.906 626.593 216.555 627.452
+ 216.555 628.683 c h
+211.555 631.609 m 211.555 632.163 210.656 632.612 209.559 632.612 c 208.457
+ 632.612 207.559 632.163 207.559 631.609 c 207.559 631.058 208.457 630.609
+ 209.559 630.609 c 210.656 630.609 211.555 631.058 211.555 631.609 c h
+217.051 635.12 m 217.051 637.28 215.621 637.956 213.668 636.714 c 212.484
+ 635.964 212.484 635.605 213.668 634.265 c 215.406 632.296 217.051 632.71
+ 217.051 635.12 c h
+212.828 640.71 m 217.453 644.538 217.516 645.655 213.113 645.655 c 209.266
+ 645.655 209.074 645.472 208.098 640.89 c 207.23 636.835 208.102 636.804
+ 212.828 640.71 c h
+128.227 600.8 m 127.195 601.558 126.262 603.929 125.957 606.566 c 125.109
+ 613.921 125.109 613.921 118.793 609.253 c 109.316 602.253 98.121 600.542
+ 98.121 606.093 c 98.121 607.441 99.188 608.167 102.031 608.761 c 112.367
+ 610.917 125.305 623.241 132.859 638.132 c 138.129 648.515 140.203 653.585
+ 141.551 659.37 c 142.934 665.308 144.477 666.409 147.484 663.597 c 148.641
+ 662.515 149.59 661.53 149.59 661.409 c 149.59 661.288 150.004 659.753 150.504
+ 657.991 c 151.281 655.28 151.051 654.37 148.98 651.98 c 144.109 646.359
+ 144.684 643.757 152.543 635.788 c 155.344 632.948 157.535 631.605 159.375
+ 631.593 c 165.98 631.558 166.078 627.913 159.559 624.573 c 152.633 621.026
+ 150.691 621.933 147.234 630.316 c 145.594 634.292 143.684 637.765 142.988
+ 638.034 c 141.922 638.444 136.598 631.062 136.598 629.175 c 136.598 628.136
+ 140.172 628.577 141.355 629.761 c 142.23 630.64 142.883 630.612 144.051
+ 629.64 c 146.699 627.433 145.762 625.593 140.93 623.511 c 137.234 621.925
+ 136.094 621.773 135.461 622.796 c 134.402 624.495 132.02 623.007 129.785
+ 619.257 c 128.18 616.558 128.195 616.362 130.098 614.952 c 131.898 613.616
+ 132.176 613.671 132.996 615.523 c 133.5 616.655 134.855 617.566 136.039
+ 617.566 c 137.215 617.566 139.926 618.464 142.07 619.558 c 145.691 621.413
+ 146.094 621.437 147.777 619.905 c 150.16 617.741 150.082 614.421 147.594
+ 612.28 c 145.211 610.234 145.055 608.96 147.094 608.175 c 148.988 607.444
+ 149.023 604.816 147.164 602.948 c 145.359 601.136 135.992 600.995 135.223
+ 602.769 c 134.848 603.628 134.156 603.316 133.016 601.765 c 131.094 599.151
+ 130.609 599.05 128.227 600.8 c h
+137.023 608.066 m 138.883 610.909 138.379 612.55 135.648 612.55 c 133.48
+ 612.55 132.523 610.558 133.285 607.632 c 134.008 604.862 135.012 604.976
+ 137.023 608.066 c h
+439.98 602.456 m 437.832 604.839 438.777 606.734 441.746 605.984 c 444.188
+ 605.37 450.902 607.831 453.773 610.394 c 455.973 612.359 459.414 618.847
+ 459.414 621.038 c 459.414 621.886 458.898 622.581 458.266 622.581 c 456.938
+ 622.581 446.797 615.98 445.906 614.53 c 444.969 613.007 440.812 613.382
+ 439.375 615.116 c 438.465 616.218 438.355 617.452 439.004 619.276 c 440.008
+ 622.105 440.91 622.71 446.922 624.589 c 452.84 626.441 458.934 629.319
+460.223 630.878 c 461.512 632.437 463.242 651.933 462.715 658.964 c 462.426
+ 662.823 462.715 663.804 464.395 664.706 c 466.066 665.605 466.859 665.355
+ 468.914 663.296 c 471.898 660.3 472.152 655.714 469.926 645.151 c 467.488
+ 633.605 467.926 632.933 475.637 636.347 c 478.484 637.609 479.691 638.831
+ 480.098 640.862 c 480.762 644.21 480.73 644.206 484.438 641.452 c 489.152
+ 637.956 488.227 633.753 482.398 632.187 c 474.547 630.077 466.41 626.163
+ 466.41 624.495 c 466.41 623.519 467.297 622.433 468.379 622.089 c 469.465
+ 621.745 471.961 619.573 473.934 617.261 c 478.641 611.741 480.852 610.62
+ 487.148 610.581 c 490.035 610.558 492.395 610.148 492.395 609.663 c 492.395
+ 609.183 490.648 606.925 488.512 604.648 c 481.785 597.48 478.121 599.12
+ 471.395 612.335 c 469.086 616.866 466.902 620.573 466.539 620.573 c 466.176
+ 620.573 465.102 618.378 464.152 615.691 c 462.457 610.905 455.445 602.851
+ 451.664 601.347 c 447.969 599.878 441.773 600.464 439.98 602.456 c h
+312.055 609.765 m 310.184 612.444 310.016 616.487 311.75 616.987 c 312.434
+ 617.187 315.617 617.929 318.82 618.64 c 324.414 619.878 324.938 620.28
+332.062 628.757 c 340.41 638.687 342.074 643.023 335.305 637.206 c 330.438
+ 633.023 327.645 632.718 323.895 635.952 c 321.719 637.831 321.324 638.819
+ 321.867 640.999 c 322.516 643.589 322.758 643.683 327.266 643.081 c 331.402
+ 642.534 332.836 642.901 338.875 646.062 c 347.543 650.601 349.062 650.609
+ 351.191 646.128 c 352.871 642.589 l 345.676 635.319 l 338.238 627.804 336.664
+ 624.886 340.73 626.159 c 341.969 626.546 343.867 627.48 344.953 628.234
+ c 347.512 630.015 348.977 629.964 350.902 628.03 c 353.52 625.401 351.297
+ 622.948 345.621 622.194 c 342.91 621.831 340.176 620.913 339.547 620.151
+ c 338.918 619.39 337.34 618.499 336.039 618.171 c 334.742 617.843 331.656
+ 615.316 329.184 612.554 c 324.812 607.675 324.527 607.534 319.148 607.534
+ c 314.559 607.534 313.344 607.917 312.055 609.765 c h
+505.375 617.816 m 504.285 619.609 503.395 621.851 503.391 622.8 c 503.391
+ 624.331 511.609 634.667 513.422 635.413 c 514.961 636.046 515.297 632.331
+ 513.883 630.304 c 511.719 627.202 512.027 626.288 514.98 627.03 c 516.406
+ 627.39 517.395 627.327 517.176 626.89 c 516.953 626.452 516.004 624.398
+ 515.062 622.323 c 512.961 617.694 510.367 614.558 508.648 614.558 c 507.938
+ 614.558 506.465 616.023 505.375 617.816 c h
+103.352 622.866 m 102.25 624.558 101.918 627.546 102.094 634.269 c 102.43
+ 647.069 103.199 647.917 109 641.921 c 111.391 639.452 112.613 637.245 112.613
+ 635.401 c 112.613 631.862 113.738 631.855 115.438 635.378 c 117.777 640.23
+ 117.848 640.636 116.371 640.636 c 114.98 640.636 110.859 644.405 111.703
+ 644.905 c 115.488 647.163 122.918 650.667 123.918 650.667 c 125.789 650.667
+ 130.602 645.37 130.602 643.312 c 130.602 642.359 129.012 640.179 127.07
+ 638.468 c 123.73 635.523 123.629 635.253 125.211 633.499 c 126.543 632.019
+ 126.637 631.351 125.664 630.175 c 123.93 628.077 117.938 626.292 115.059
+ 627.019 c 113.609 627.382 112.613 627.198 112.613 626.566 c 112.613 624.995
+ 107.938 620.573 106.277 620.573 c 105.492 620.573 104.176 621.605 103.352
+ 622.866 c h
+269.172 648.128 m 267.156 649.659 267.727 651.675 270.18 651.675 c 272.613
+ 651.675 278.656 654.737 283.016 658.183 c 288.625 662.62 289.121 662.843
+ 291.84 662.159 c 294.371 661.523 296.98 657.269 295.91 655.526 c 295.129
+ 654.257 286.891 650.671 284.758 650.671 c 283.484 650.671 283.617 651.151
+ 285.414 653.073 c 288.715 656.597 286.133 657.456 282.641 653.995 c 278.672
+ 650.066 273.848 646.651 272.312 646.691 c 271.602 646.706 270.188 647.355
+ 269.172 648.128 c h
+276.227 660.691 m 276.555 661.956 276.156 662.909 275.133 663.304 c 272.043
+ 664.495 273.32 667.347 277.512 668.609 c 285.633 671.05 288.781 665.093
+ 281.559 660.952 c 276.715 658.175 275.555 658.116 276.227 660.691 c h
+276.227 660.691 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
+%</hitlogo>
+% \end{macrocode}
+% \begin{macrocode}
+%<*wct1>
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:02:17 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 134 161 448 476
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 134 161 448 476
+%%EndPageSetup
+q 134 161 314 315 rectclip q
+0 g
+134.121 191.71 m 134.121 221.335 l 193.371 221.335 l 193.371 162.085 l
+134.121 162.085 l h
+185.121 191.71 m 185.121 213.085 l 142.371 213.085 l 142.371 170.335 l
+185.121 170.335 l h
+151.371 191.71 m 151.371 204.085 l 176.121 204.085 l 176.121 179.335 l
+151.371 179.335 l h
+210.621 166.21 m 210.621 170.335 l 227.121 170.335 l 227.121 162.085 l
+210.621 162.085 l h
+236.121 166.21 m 236.121 170.335 l 244.371 170.335 l 244.371 179.335 l
+235.371 179.335 l 235.371 171.085 l 227.871 171.085 l 227.871 195.835 l
+244.371 195.835 l 244.371 221.335 l 227.871 221.335 l 227.871 229.585 l
+252.621 229.585 l 252.621 221.335 l 269.047 221.335 l 269.27 217.023 l 269.496
+ 212.71 l 273.809 212.484 l 278.121 212.261 l 278.121 221.335 l 269.871
+221.335 l 269.871 229.585 l 287.121 229.585 l 287.121 246.835 l 295.371
+246.835 l 295.371 255.085 l 303.621 255.085 l 303.621 246.835 l 311.871
+246.835 l 311.871 238.585 l 294.621 238.585 l 294.621 229.585 l 329.121
+229.585 l 329.121 237.835 l 337.371 237.835 l 337.371 221.335 l 320.121
+221.335 l 320.121 204.835 l 312.621 204.835 l 312.621 221.335 l 303.621
+221.335 l 303.621 213.085 l 294.621 213.085 l 294.621 195.835 l 287.121
+195.835 l 287.121 204.835 l 261.621 204.835 l 261.621 213.085 l 252.621
+213.085 l 252.621 204.085 l 260.871 204.085 l 260.871 195.835 l 269.121
+195.835 l 269.121 187.585 l 253.371 187.585 l 253.371 195.835 l 244.371
+195.835 l 244.371 186.835 l 252.621 186.835 l 252.621 170.335 l 269.871
+170.335 l 269.871 178.585 l 278.121 178.585 l 278.121 162.085 l 236.121
+162.085 l h
+287.121 170.335 m 287.121 178.585 l 295.371 178.585 l 295.371 186.835 l
+ 320.121 186.835 l 320.121 179.335 l 303.621 179.335 l 303.621 171.159 l
+ 299.309 170.937 l 294.996 170.71 l 294.77 166.398 l 294.547 162.085 l 287.121
+ 162.085 l h
+303.621 166.21 m 303.621 170.335 l 311.871 170.335 l 311.871 162.085 l
+303.621 162.085 l h
+329.121 166.585 m 329.121 171.085 l 320.871 171.085 l 320.871 178.585 l
+ 329.121 178.585 l 329.121 187.585 l 320.871 187.585 l 320.871 204.085 l
+ 329.121 204.085 l 329.121 195.835 l 337.371 195.835 l 337.371 186.835 l
+ 345.621 186.835 l 345.621 179.335 l 337.371 179.335 l 337.371 170.335 l
+ 353.871 170.335 l 353.871 162.085 l 329.121 162.085 l h
+362.871 166.21 m 362.871 170.335 l 371.121 170.335 l 371.121 162.085 l
+362.871 162.085 l h
+388.371 170.335 m 388.371 178.585 l 405.621 178.585 l 405.621 186.835 l
+ 413.871 186.835 l 413.871 162.085 l 388.371 162.085 l h
+422.871 166.21 m 422.871 170.335 l 430.371 170.335 l 430.371 162.085 l
+422.871 162.085 l h
+439.371 166.21 m 439.371 170.335 l 447.621 170.335 l 447.621 162.085 l
+439.371 162.085 l h
+371.871 174.835 m 371.871 178.585 l 379.371 178.585 l 379.371 171.085 l
+ 371.871 171.085 l h
+278.121 183.085 m 278.121 186.835 l 286.371 186.835 l 286.371 179.335 l
+ 278.121 179.335 l h
+380.121 183.085 m 380.121 186.835 l 388.371 186.835 l 388.371 179.335 l
+ 380.121 179.335 l h
+422.871 187.585 m 422.871 195.835 l 431.121 195.835 l 431.121 204.085 l
+ 447.621 204.085 l 447.621 179.335 l 422.871 179.335 l h
+202.371 195.835 m 202.371 204.085 l 209.871 204.085 l 209.871 195.835 l
+ 218.871 195.835 l 218.871 187.585 l 202.371 187.585 l h
+362.871 195.835 m 362.871 204.085 l 371.906 204.085 l 371.699 217.023 l
+ 371.496 229.96 l 358.934 230.167 l 346.371 230.37 l 346.371 237.835 l 380.121
+ 237.835 l 380.121 246.835 l 388.371 246.835 l 388.371 255.085 l 396.621
+ 255.085 l 396.621 246.835 l 388.371 246.835 l 388.371 237.835 l 405.621
+ 237.835 l 405.621 263.335 l 413.871 263.335 l 413.871 255.085 l 422.121
+ 255.085 l 422.121 238.585 l 413.871 238.585 l 413.871 229.585 l 438.621
+ 229.585 l 438.621 221.335 l 413.871 221.335 l 413.871 212.335 l 422.121
+ 212.335 l 422.121 204.835 l 413.871 204.835 l 413.871 195.835 l 404.871
+ 195.835 l 404.871 187.585 l 397.371 187.585 l 397.371 195.835 l 371.121
+ 195.835 l 371.121 187.585 l 362.871 187.585 l h
+405.621 217.23 m 405.621 230.37 l 392.684 230.167 l 379.746 229.96 l 379.539
+ 217.023 l 379.336 204.085 l 405.621 204.085 l h
+388.371 217.21 m 388.371 221.335 l 396.621 221.335 l 396.621 213.085 l
+388.371 213.085 l h
+303.621 199.96 m 303.621 204.085 l 311.871 204.085 l 311.871 195.835 l
+303.621 195.835 l h
+218.871 208.585 m 218.871 212.335 l 227.121 212.335 l 227.121 204.835 l
+ 218.871 204.835 l h
+354.621 208.585 m 354.621 212.335 l 362.871 212.335 l 362.871 204.835 l
+ 354.621 204.835 l h
+202.207 221.523 m 201.996 229.96 l 189.434 230.167 l 176.871 230.37 l 176.871
+ 238.585 l 167.871 238.585 l 167.871 255.835 l 159.621 255.835 l 159.621
+ 271.585 l 167.871 271.585 l 167.871 280.585 l 176.871 280.585 l 176.871
+ 288.835 l 201.621 288.835 l 201.621 272.335 l 193.371 272.335 l 193.371
+ 280.585 l 184.297 280.585 l 184.52 276.273 l 184.746 271.96 l 189.059 271.737
+ l 193.371 271.511 l 193.371 264.159 l 189.059 263.937 l 184.746 263.71
+l 184.293 255.835 l 176.121 255.835 l 176.121 246.835 l 184.297 246.835
+l 184.52 242.523 l 184.746 238.21 l 189.059 237.987 l 193.371 237.761 l
+193.371 246.835 l 185.121 246.835 l 185.121 255.085 l 193.371 255.085 l
+193.371 263.335 l 218.871 263.335 l 218.871 255.909 l 214.559 255.687 l
+210.246 255.46 l 210.02 251.148 l 209.797 246.835 l 201.621 246.835 l 201.621
+ 237.835 l 209.871 237.835 l 209.871 221.335 l 218.871 221.335 l 218.871
+ 213.085 l 202.418 213.085 l h
+338.121 217.21 m 338.121 221.335 l 353.871 221.335 l 353.871 213.085 l
+338.121 213.085 l h
+439.371 217.21 m 439.371 221.335 l 447.621 221.335 l 447.621 213.085 l
+439.371 213.085 l h
+134.121 259.585 m 134.121 288.835 l 158.871 288.835 l 158.871 280.585 l
+ 150.621 280.585 l 150.621 272.335 l 142.371 272.335 l 142.371 263.335 l
+ 150.621 263.335 l 150.621 255.085 l 158.871 255.085 l 158.871 238.585 l
+ 151.371 238.585 l 151.371 246.835 l 142.371 246.835 l 142.371 230.335 l
+ 134.121 230.335 l h
+159.621 234.085 m 159.621 237.835 l 167.871 237.835 l 167.871 230.335 l
+ 159.621 230.335 l h
+218.871 234.085 m 218.871 237.835 l 227.121 237.835 l 227.121 230.335 l
+ 218.871 230.335 l h
+439.371 234.085 m 439.371 237.835 l 447.621 237.835 l 447.621 230.335 l
+ 439.371 230.335 l h
+236.121 242.71 m 236.121 246.835 l 244.371 246.835 l 244.371 255.085 l
+252.621 255.085 l 252.621 238.585 l 236.121 238.585 l h
+338.121 255.085 m 338.121 271.585 l 345.621 271.585 l 345.621 263.335 l
+ 353.871 263.335 l 353.871 255.913 l 345.996 255.46 l 345.781 247.023 l
+345.57 238.585 l 338.121 238.585 l h
+227.871 255.085 m 227.871 263.335 l 244.371 263.335 l 244.371 255.909 l
+ 240.059 255.687 l 235.746 255.46 l 235.293 246.835 l 227.871 246.835 l
+h
+261.469 251.148 m 261.246 255.46 l 253.418 255.913 l 252.996 271.96 l 244.559
+ 272.171 l 236.121 272.386 l 236.121 280.585 l 227.871 280.585 l 227.871
+ 288.835 l 236.121 288.835 l 236.121 306.085 l 227.871 306.085 l 227.871
+ 314.335 l 244.371 314.335 l 244.371 306.085 l 256.371 306.085 l 256.371
+ 297.835 l 244.371 297.835 l 244.371 288.835 l 252.621 288.835 l 252.621
+ 280.585 l 260.793 280.585 l 261.246 271.96 l 269.121 271.507 l 269.121
+255.085 l 278.121 255.085 l 278.121 246.835 l 261.695 246.835 l h
+320.871 250.96 m 320.871 255.085 l 329.121 255.085 l 329.121 246.835 l
+320.871 246.835 l h
+371.871 250.96 m 371.871 255.085 l 379.371 255.085 l 379.371 246.835 l
+371.871 246.835 l h
+431.121 255.085 m 431.121 263.335 l 438.621 263.335 l 438.621 246.835 l
+ 431.121 246.835 l h
+287.121 259.585 m 287.121 263.335 l 294.621 263.335 l 294.621 255.835 l
+ 287.121 255.835 l h
+303.621 259.585 m 303.621 263.335 l 311.871 263.335 l 311.871 255.835 l
+ 303.621 255.835 l h
+362.871 264.085 m 362.871 272.335 l 354.621 272.335 l 354.621 280.585 l
+ 388.371 280.585 l 388.371 288.835 l 404.871 288.835 l 404.871 272.335 l
+ 396.621 272.335 l 396.621 264.085 l 388.371 264.085 l 388.371 272.335 l
+ 379.371 272.335 l 379.371 264.085 l 371.121 264.085 l 371.121 255.835 l
+ 362.871 255.835 l h
+380.121 259.585 m 380.121 263.335 l 388.371 263.335 l 388.371 255.835 l
+ 380.121 255.835 l h
+312.621 268.21 m 312.621 272.335 l 278.121 272.335 l 278.121 280.585 l
+273.996 280.585 l 270.094 280.585 269.871 280.687 269.871 282.46 c 269.871
+ 284.234 270.094 284.335 273.996 284.335 c 277.895 284.335 278.121 284.234
+ 278.121 282.46 c 278.121 280.585 l 320.871 280.585 l 320.871 282.296 l
+320.871 283.507 321.527 284.253 323.121 284.855 c 324.609 285.417 325.371
+ 286.222 325.371 287.241 c 325.371 288.644 325.895 288.792 331.559 288.991
+ c 337.746 289.21 l 338.199 297.085 l 345.621 297.085 l 345.621 288.835
+l 353.871 288.835 l 353.871 280.585 l 329.121 280.585 l 329.121 264.085
+l 312.621 264.085 l h
+413.871 280.585 m 413.871 297.085 l 438.543 297.085 l 438.996 289.21 l
+443.309 288.987 l 447.621 288.761 l 447.621 264.085 l 439.371 264.085 l
+439.371 272.335 l 431.121 272.335 l 431.121 289.585 l 422.074 289.585 l
+422.496 271.96 l 430.371 271.507 l 430.371 264.085 l 413.871 264.085 l h
+210.621 276.46 m 210.621 280.585 l 218.871 280.585 l 218.871 272.335 l
+210.621 272.335 l h
+159.621 293.335 m 159.621 297.085 l 176.121 297.085 l 176.121 289.585 l
+ 159.621 289.585 l h
+218.871 293.71 m 218.871 297.835 l 210.621 297.835 l 210.621 306.085 l
+227.121 306.085 l 227.121 289.585 l 218.871 289.585 l h
+354.621 293.335 m 354.621 297.085 l 362.871 297.085 l 362.871 322.585 l
+ 371.121 322.585 l 371.121 314.335 l 388.371 314.335 l 388.371 306.085 l
+ 404.871 306.085 l 404.871 297.835 l 388.371 297.835 l 388.371 289.585 l
+ 380.121 289.585 l 380.121 306.085 l 371.121 306.085 l 371.121 289.585 l
+ 354.621 289.585 l h
+134.121 301.96 m 134.121 306.085 l 158.871 306.085 l 158.871 297.835 l
+134.121 297.835 l h
+176.871 301.96 m 176.871 306.085 l 193.371 306.085 l 193.371 297.835 l
+176.871 297.835 l h
+329.121 301.96 m 329.121 306.085 l 337.371 306.085 l 337.371 297.835 l
+329.121 297.835 l h
+346.371 301.96 m 346.371 306.085 l 353.871 306.085 l 353.871 297.835 l
+346.371 297.835 l h
+202.371 314.335 m 202.371 322.585 l 209.871 322.585 l 209.871 306.085 l
+ 202.371 306.085 l h
+338.121 318.835 m 338.121 331.585 l 345.621 331.585 l 345.621 322.585 l
+ 353.871 322.585 l 353.871 315.085 l 345.621 315.085 l 345.621 306.085 l
+ 338.121 306.085 l h
+405.621 310.21 m 405.621 314.335 l 413.871 314.335 l 413.871 339.835 l
+431.121 339.835 l 431.121 348.085 l 438.543 348.085 l 438.996 340.21 l 443.309
+ 339.987 l 447.621 339.761 l 447.621 315.085 l 439.371 315.085 l 439.371
+ 323.335 l 422.121 323.335 l 422.121 306.085 l 405.621 306.085 l h
+151.371 319.171 m 151.371 323.335 l 143.121 323.335 l 143.121 339.835 l
+ 158.871 339.835 l 158.871 328.21 l 158.871 321.816 158.953 316.331 159.059
+ 316.023 c 159.16 315.714 157.473 315.359 155.309 315.234 c 151.371 315.007
+ l h
+167.871 318.835 m 167.871 322.585 l 176.121 322.585 l 176.121 315.085 l
+ 167.871 315.085 l h
+185.121 318.835 m 185.121 322.585 l 193.371 322.585 l 193.371 315.085 l
+ 185.121 315.085 l h
+244.371 319.21 m 244.371 323.335 l 236.121 323.335 l 236.121 331.585 l
+244.371 331.585 l 244.371 339.835 l 252.621 339.835 l 252.621 335.71 l 252.621
+ 331.812 252.723 331.585 254.496 331.585 c 256.27 331.585 256.371 331.359
+ 256.371 327.46 c 256.371 323.562 256.266 323.335 254.496 323.335 c 252.723
+ 323.335 252.621 323.109 252.621 319.21 c 252.621 315.085 l 244.371 315.085
+ l h
+325.371 318.835 m 325.371 322.335 325.496 322.585 327.246 322.585 c 328.996
+ 322.585 329.121 322.335 329.121 318.835 c 329.121 315.335 328.996 315.085
+ 327.246 315.085 c 325.496 315.085 325.371 315.335 325.371 318.835 c h
+388.371 318.835 m 388.371 322.585 l 397.371 322.585 l 397.371 331.585 l
+ 404.871 331.585 l 404.871 315.085 l 388.371 315.085 l h
+193.371 327.46 m 193.371 331.585 l 185.121 331.585 l 185.121 339.835 l
+193.371 339.835 l 193.371 331.585 l 201.621 331.585 l 201.621 323.335 l
+193.371 323.335 l h
+210.621 331.585 m 210.621 339.835 l 218.871 339.835 l 218.871 331.585 l
+ 227.121 331.585 l 227.121 323.335 l 210.621 323.335 l h
+329.121 335.71 m 329.121 339.835 l 337.371 339.835 l 337.371 331.585 l
+329.121 331.585 l h
+362.871 335.71 m 362.871 339.835 l 379.371 339.835 l 379.371 331.585 l
+362.871 331.585 l h
+388.371 340.21 m 388.371 348.835 l 371.871 348.835 l 371.871 356.335 l
+388.371 356.335 l 388.371 365.335 l 380.121 365.335 l 380.121 373.585 l
+397.371 373.585 l 397.371 381.835 l 404.871 381.835 l 404.871 365.335 l
+413.871 365.335 l 413.871 357.085 l 396.621 357.085 l 396.621 348.085 l
+413.871 348.085 l 413.871 340.585 l 396.621 340.585 l 396.621 331.585 l
+388.371 331.585 l h
+134.121 344.335 m 134.121 348.085 l 142.371 348.085 l 142.371 340.585 l
+ 134.121 340.585 l h
+159.621 344.335 m 159.621 348.085 l 167.871 348.085 l 167.871 340.585 l
+ 159.621 340.585 l h
+176.871 348.46 m 176.871 356.335 l 209.871 356.335 l 209.871 348.835 l
+201.621 348.835 l 201.621 340.585 l 193.371 340.585 l 193.371 348.909 l
+189.059 348.687 l 184.746 348.46 l 184.293 340.585 l 176.871 340.585 l h
+218.871 352.96 m 218.871 365.335 l 202.371 365.335 l 202.371 382.585 l
+185.121 382.585 l 185.121 390.835 l 202.371 390.835 l 202.371 399.085 l
+210.621 399.085 l 210.621 407.335 l 218.871 407.335 l 218.871 381.835 l
+235.371 381.835 l 235.371 374.335 l 227.121 374.335 l 227.121 365.335 l
+244.371 365.335 l 244.371 373.585 l 252.621 373.585 l 252.621 365.335 l
+244.371 365.335 l 244.371 356.261 l 248.684 356.487 l 252.996 356.71 l 253.219
+ 361.023 l 253.445 365.335 l 260.797 365.335 l 261.02 361.023 l 261.246
+356.71 l 278.121 356.288 l 278.121 373.585 l 286.371 373.585 l 286.371 365.335
+ l 294.621 365.335 l 294.621 357.085 l 290.496 357.085 l 286.594 357.085
+ 286.371 356.984 286.371 355.21 c 286.371 353.335 l 272.547 353.335 l 260.984
+ 353.335 258.535 353.144 257.547 352.155 c 256.902 351.507 256.371 350.495
+ 256.371 349.905 c 256.371 349.069 255.07 348.835 250.371 348.835 c 244.371
+ 348.835 l 244.371 340.585 l 236.121 340.585 l 236.121 348.835 l 227.121
+ 348.835 l 227.121 340.585 l 218.871 340.585 l h
+338.121 344.335 m 338.121 348.085 l 345.621 348.085 l 345.621 340.585 l
+ 338.121 340.585 l h
+354.621 348.835 m 354.621 357.085 l 329.121 357.085 l 329.121 373.585 l
+ 337.371 373.585 l 337.371 365.335 l 362.871 365.335 l 362.871 381.835 l
+ 371.121 381.835 l 371.121 357.085 l 362.871 357.085 l 362.871 340.585 l
+ 354.621 340.585 l h
+413.871 352.585 m 413.871 356.335 l 422.121 356.335 l 422.121 348.835 l
+ 413.871 348.835 l h
+439.371 352.96 m 439.371 357.085 l 431.121 357.085 l 431.121 365.335 l
+439.371 365.335 l 439.371 374.335 l 430.371 374.335 l 430.371 365.335 l
+422.945 365.335 l 422.719 369.648 l 422.496 373.96 l 418.184 374.187 l 413.871
+ 374.409 l 413.871 381.835 l 431.121 381.835 l 431.121 390.835 l 413.871
+ 390.835 l 413.871 382.585 l 405.621 382.585 l 405.621 390.835 l 396.621
+ 390.835 l 396.621 382.585 l 388.371 382.585 l 388.371 390.835 l 379.371
+ 390.835 l 379.371 382.585 l 371.871 382.585 l 371.871 399.835 l 362.871
+ 399.835 l 362.871 416.335 l 354.621 416.335 l 354.621 424.585 l 362.871
+ 424.585 l 362.871 416.335 l 371.121 416.335 l 371.121 407.335 l 379.371
+ 407.335 l 379.371 399.085 l 413.871 399.085 l 413.871 407.335 l 430.371
+ 407.335 l 430.371 399.085 l 438.57 399.085 l 438.781 390.648 l 438.996
+382.21 l 443.309 381.987 l 447.621 381.761 l 447.621 348.835 l 439.371 348.835
+ l h
+295.371 354.835 m 295.371 356.276 295.871 356.335 307.746 356.335 c 319.621
+ 356.335 320.121 356.276 320.121 354.835 c 320.121 353.398 319.621 353.335
+ 307.746 353.335 c 295.871 353.335 295.371 353.398 295.371 354.835 c h
+143.121 361.21 m 143.121 365.335 l 150.621 365.335 l 150.621 357.085 l
+143.121 357.085 l h
+134.121 369.46 m 134.121 373.585 l 142.371 373.585 l 142.371 365.335 l
+134.121 365.335 l h
+168.371 365.835 m 168.094 366.109 167.871 368.136 167.871 370.335 c 167.871
+ 374.335 l 159.621 374.335 l 159.621 381.835 l 167.871 381.835 l 167.871
+ 399.835 l 159.621 399.835 l 159.621 407.335 l 176.121 407.335 l 176.121
+ 373.585 l 193.371 373.585 l 193.371 365.335 l 181.121 365.335 l 174.383
+ 365.335 168.645 365.562 168.371 365.835 c h
+295.371 386.71 m 295.371 408.085 l 286.371 408.085 l 286.371 390.835 l
+278.121 390.835 l 278.121 382.585 l 269.871 382.585 l 269.871 390.835 l
+278.121 390.835 l 278.121 416.335 l 269.871 416.335 l 269.871 424.585 l
+278.121 424.585 l 278.121 416.335 l 287.195 416.335 l 286.969 420.648 l
+286.746 424.96 l 282.434 425.187 l 278.121 425.409 l 278.121 432.835 l 287.121
+ 432.835 l 287.121 441.835 l 278.121 441.835 l 278.121 433.585 l 269.871
+ 433.585 l 269.871 441.835 l 261.621 441.835 l 261.621 458.335 l 269.871
+ 458.335 l 269.871 466.585 l 278.121 466.585 l 278.121 475.585 l 286.371
+ 475.585 l 286.371 459.085 l 278.121 459.085 l 278.121 450.085 l 287.121
+ 450.085 l 287.121 458.335 l 294.621 458.335 l 294.621 450.085 l 303.621
+ 450.085 l 303.621 458.335 l 320.871 458.335 l 320.871 475.585 l 329.121
+ 475.585 l 329.121 450.909 l 324.809 450.687 l 320.496 450.46 l 320.27 446.148
+ l 320.047 441.835 l 338.121 441.835 l 338.121 450.085 l 345.621 450.085
+ l 345.621 432.835 l 353.871 432.835 l 353.871 425.413 l 345.996 424.96
+l 345.77 420.648 l 345.547 416.335 l 338.195 416.335 l 337.969 420.648 l
+ 337.746 424.96 l 333.434 425.187 l 329.121 425.409 l 329.121 433.585 l
+320.121 433.585 l 320.121 425.335 l 312.621 425.335 l 312.621 433.585 l
+294.621 433.585 l 294.621 416.335 l 303.621 416.335 l 303.621 424.585 l
+311.871 424.585 l 311.871 416.335 l 320.121 416.335 l 320.121 408.085 l
+311.871 408.085 l 311.871 382.585 l 303.621 382.585 l 303.621 365.335 l
+295.371 365.335 l h
+143.121 378.085 m 143.121 381.835 l 150.621 381.835 l 150.621 374.335 l
+ 143.121 374.335 l h
+253.371 386.71 m 253.371 399.085 l 269.121 399.085 l 269.121 390.835 l
+260.871 390.835 l 260.871 374.335 l 253.371 374.335 l h
+312.621 378.085 m 312.621 381.835 l 320.121 381.835 l 320.121 374.335 l
+ 312.621 374.335 l h
+151.371 386.71 m 151.371 390.835 l 158.871 390.835 l 158.871 382.585 l
+151.371 382.585 l h
+320.871 386.71 m 320.871 390.835 l 337.371 390.835 l 337.371 382.585 l
+320.871 382.585 l h
+346.371 386.71 m 346.371 390.835 l 353.871 390.835 l 353.871 382.585 l
+346.371 382.585 l h
+134.121 394.96 m 134.121 399.085 l 150.621 399.085 l 150.621 390.835 l
+134.121 390.835 l h
+227.871 394.96 m 227.871 399.085 l 244.371 399.085 l 244.371 390.835 l
+227.871 390.835 l h
+354.621 394.96 m 354.621 399.085 l 362.871 399.085 l 362.871 390.835 l
+354.621 390.835 l h
+185.121 403.585 m 185.121 407.335 l 201.621 407.335 l 201.621 399.835 l
+ 185.121 399.835 l h
+329.121 408.085 m 329.121 416.335 l 320.871 416.335 l 320.871 424.585 l
+ 329.121 424.585 l 329.121 416.335 l 337.371 416.335 l 337.371 407.335 l
+ 346.371 407.335 l 346.371 416.335 l 353.871 416.335 l 353.871 399.835 l
+ 329.121 399.835 l h
+227.871 412.21 m 227.871 416.335 l 236.121 416.335 l 236.121 432.835 l
+244.371 432.835 l 244.371 416.335 l 253.371 416.335 l 253.371 432.835 l
+260.871 432.835 l 260.871 408.085 l 227.871 408.085 l h
+134.121 445.96 m 134.121 475.585 l 193.371 475.585 l 193.371 416.335 l
+134.121 416.335 l h
+185.121 445.96 m 185.121 467.335 l 142.371 467.335 l 142.371 424.585 l
+185.121 424.585 l h
+151.371 445.96 m 151.371 458.335 l 176.121 458.335 l 176.121 433.585 l
+151.371 433.585 l h
+202.371 420.46 m 202.371 424.585 l 209.871 424.585 l 209.871 416.335 l
+202.371 416.335 l h
+218.871 424.585 m 218.871 432.835 l 227.121 432.835 l 227.121 416.335 l
+ 218.871 416.335 l h
+371.719 420.648 m 371.496 424.96 l 367.184 425.187 l 362.871 425.409 l
+362.871 432.835 l 371.871 432.835 l 371.871 441.835 l 379.371 441.835 l
+379.371 416.335 l 371.945 416.335 l h
+388.371 445.96 m 388.371 475.585 l 447.621 475.585 l 447.621 416.335 l
+388.371 416.335 l h
+439.371 445.96 m 439.371 467.335 l 396.621 467.335 l 396.621 424.585 l
+439.371 424.585 l h
+405.621 445.96 m 405.621 458.335 l 430.371 458.335 l 430.371 433.585 l
+405.621 433.585 l h
+210.621 437.71 m 210.621 441.835 l 218.871 441.835 l 218.871 450.085 l
+227.871 450.085 l 227.871 467.335 l 218.871 467.335 l 218.871 475.585 l
+235.371 475.585 l 235.371 458.335 l 244.371 458.335 l 244.371 441.835 l
+218.871 441.835 l 218.871 433.585 l 210.621 433.585 l h
+202.371 450.085 m 202.371 458.335 l 209.871 458.335 l 209.871 441.835 l
+ 202.371 441.835 l h
+346.371 454.96 m 346.371 459.085 l 338.121 459.085 l 338.121 466.507 l
+345.996 466.96 l 346.219 471.273 l 346.445 475.585 l 353.871 475.585 l 353.871
+ 450.835 l 346.371 450.835 l h
+362.871 454.585 m 362.871 458.335 l 371.121 458.335 l 371.121 450.835 l
+ 362.871 450.835 l h
+210.621 462.835 m 210.621 466.585 l 218.871 466.585 l 218.871 459.085 l
+ 210.621 459.085 l h
+295.371 462.835 m 295.371 466.585 l 303.621 466.585 l 303.621 459.085 l
+ 295.371 459.085 l h
+244.371 471.46 m 244.371 475.585 l 252.621 475.585 l 252.621 467.335 l
+244.371 467.335 l h
+303.621 471.46 m 303.621 475.585 l 311.871 475.585 l 311.871 467.335 l
+303.621 467.335 l h
+303.621 471.46 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
+%</wct1>
+% \end{macrocode}
+% \begin{macrocode}
+%<*wct5>
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:02:17 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 134 161 448 476
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 134 161 448 476
+%%EndPageSetup
+q 134 161 314 315 rectclip q
+0 g
+134.121 191.71 m 134.121 221.335 l 193.371 221.335 l 193.371 162.085 l
+134.121 162.085 l h
+185.121 191.71 m 185.121 213.085 l 142.371 213.085 l 142.371 170.335 l
+185.121 170.335 l h
+151.371 191.71 m 151.371 204.085 l 176.121 204.085 l 176.121 179.335 l
+151.371 179.335 l h
+210.621 166.21 m 210.621 170.335 l 227.121 170.335 l 227.121 162.085 l
+210.621 162.085 l h
+236.121 166.21 m 236.121 170.335 l 244.371 170.335 l 244.371 179.335 l
+235.371 179.335 l 235.371 171.085 l 227.871 171.085 l 227.871 195.835 l
+244.371 195.835 l 244.371 221.335 l 227.871 221.335 l 227.871 229.585 l
+252.621 229.585 l 252.621 221.335 l 269.047 221.335 l 269.27 217.023 l 269.496
+ 212.71 l 273.809 212.484 l 278.121 212.261 l 278.121 221.335 l 269.871
+221.335 l 269.871 229.585 l 287.121 229.585 l 287.121 246.835 l 295.371
+246.835 l 295.371 255.085 l 303.621 255.085 l 303.621 246.835 l 311.871
+246.835 l 311.871 238.585 l 294.621 238.585 l 294.621 229.585 l 329.121
+229.585 l 329.121 237.835 l 337.371 237.835 l 337.371 221.335 l 320.121
+221.335 l 320.121 204.835 l 312.621 204.835 l 312.621 221.335 l 303.621
+221.335 l 303.621 213.085 l 294.621 213.085 l 294.621 195.835 l 287.121
+195.835 l 287.121 204.835 l 261.621 204.835 l 261.621 213.085 l 252.621
+213.085 l 252.621 204.085 l 260.871 204.085 l 260.871 195.835 l 269.121
+195.835 l 269.121 187.585 l 253.371 187.585 l 253.371 195.835 l 244.371
+195.835 l 244.371 186.835 l 252.621 186.835 l 252.621 170.335 l 269.871
+170.335 l 269.871 178.585 l 278.121 178.585 l 278.121 162.085 l 236.121
+162.085 l h
+287.121 170.335 m 287.121 178.585 l 295.371 178.585 l 295.371 186.835 l
+ 320.121 186.835 l 320.121 179.335 l 303.621 179.335 l 303.621 171.159 l
+ 299.309 170.937 l 294.996 170.71 l 294.77 166.398 l 294.547 162.085 l 287.121
+ 162.085 l h
+303.621 166.21 m 303.621 170.335 l 311.871 170.335 l 311.871 162.085 l
+303.621 162.085 l h
+329.121 166.585 m 329.121 171.085 l 320.871 171.085 l 320.871 178.585 l
+ 329.121 178.585 l 329.121 187.585 l 320.871 187.585 l 320.871 204.085 l
+ 329.121 204.085 l 329.121 195.835 l 337.371 195.835 l 337.371 186.835 l
+ 345.621 186.835 l 345.621 179.335 l 337.371 179.335 l 337.371 170.335 l
+ 353.871 170.335 l 353.871 162.085 l 329.121 162.085 l h
+362.871 166.21 m 362.871 170.335 l 371.121 170.335 l 371.121 162.085 l
+362.871 162.085 l h
+388.371 170.335 m 388.371 178.585 l 405.621 178.585 l 405.621 186.835 l
+ 413.871 186.835 l 413.871 162.085 l 388.371 162.085 l h
+422.871 166.21 m 422.871 170.335 l 430.371 170.335 l 430.371 162.085 l
+422.871 162.085 l h
+439.371 166.21 m 439.371 170.335 l 447.621 170.335 l 447.621 162.085 l
+439.371 162.085 l h
+371.871 174.835 m 371.871 178.585 l 379.371 178.585 l 379.371 171.085 l
+ 371.871 171.085 l h
+278.121 183.085 m 278.121 186.835 l 286.371 186.835 l 286.371 179.335 l
+ 278.121 179.335 l h
+380.121 183.085 m 380.121 186.835 l 388.371 186.835 l 388.371 179.335 l
+ 380.121 179.335 l h
+422.871 187.585 m 422.871 195.835 l 431.121 195.835 l 431.121 204.085 l
+ 447.621 204.085 l 447.621 179.335 l 422.871 179.335 l h
+202.371 195.835 m 202.371 204.085 l 209.871 204.085 l 209.871 195.835 l
+ 218.871 195.835 l 218.871 187.585 l 202.371 187.585 l h
+362.871 195.835 m 362.871 204.085 l 371.906 204.085 l 371.699 217.023 l
+ 371.496 229.96 l 358.934 230.167 l 346.371 230.37 l 346.371 237.835 l 380.121
+ 237.835 l 380.121 246.835 l 388.371 246.835 l 388.371 255.085 l 396.621
+ 255.085 l 396.621 246.835 l 388.371 246.835 l 388.371 237.835 l 405.621
+ 237.835 l 405.621 263.335 l 413.871 263.335 l 413.871 255.085 l 422.121
+ 255.085 l 422.121 238.585 l 413.871 238.585 l 413.871 229.585 l 438.621
+ 229.585 l 438.621 221.335 l 413.871 221.335 l 413.871 212.335 l 422.121
+ 212.335 l 422.121 204.835 l 413.871 204.835 l 413.871 195.835 l 404.871
+ 195.835 l 404.871 187.585 l 397.371 187.585 l 397.371 195.835 l 371.121
+ 195.835 l 371.121 187.585 l 362.871 187.585 l h
+405.621 217.23 m 405.621 230.37 l 392.684 230.167 l 379.746 229.96 l 379.539
+ 217.023 l 379.336 204.085 l 405.621 204.085 l h
+388.371 217.21 m 388.371 221.335 l 396.621 221.335 l 396.621 213.085 l
+388.371 213.085 l h
+303.621 199.96 m 303.621 204.085 l 311.871 204.085 l 311.871 195.835 l
+303.621 195.835 l h
+218.871 208.585 m 218.871 212.335 l 227.121 212.335 l 227.121 204.835 l
+ 218.871 204.835 l h
+354.621 208.585 m 354.621 212.335 l 362.871 212.335 l 362.871 204.835 l
+ 354.621 204.835 l h
+202.207 221.523 m 201.996 229.96 l 189.434 230.167 l 176.871 230.37 l 176.871
+ 238.585 l 167.871 238.585 l 167.871 255.835 l 159.621 255.835 l 159.621
+ 271.585 l 167.871 271.585 l 167.871 280.585 l 176.871 280.585 l 176.871
+ 288.835 l 201.621 288.835 l 201.621 272.335 l 193.371 272.335 l 193.371
+ 280.585 l 184.297 280.585 l 184.52 276.273 l 184.746 271.96 l 189.059 271.737
+ l 193.371 271.511 l 193.371 264.159 l 189.059 263.937 l 184.746 263.71
+l 184.293 255.835 l 176.121 255.835 l 176.121 246.835 l 184.297 246.835
+l 184.52 242.523 l 184.746 238.21 l 189.059 237.987 l 193.371 237.761 l
+193.371 246.835 l 185.121 246.835 l 185.121 255.085 l 193.371 255.085 l
+193.371 263.335 l 218.871 263.335 l 218.871 255.909 l 214.559 255.687 l
+210.246 255.46 l 210.02 251.148 l 209.797 246.835 l 201.621 246.835 l 201.621
+ 237.835 l 209.871 237.835 l 209.871 221.335 l 218.871 221.335 l 218.871
+ 213.085 l 202.418 213.085 l h
+338.121 217.21 m 338.121 221.335 l 353.871 221.335 l 353.871 213.085 l
+338.121 213.085 l h
+439.371 217.21 m 439.371 221.335 l 447.621 221.335 l 447.621 213.085 l
+439.371 213.085 l h
+134.121 259.585 m 134.121 288.835 l 158.871 288.835 l 158.871 280.585 l
+ 150.621 280.585 l 150.621 272.335 l 142.371 272.335 l 142.371 263.335 l
+ 150.621 263.335 l 150.621 255.085 l 158.871 255.085 l 158.871 238.585 l
+ 151.371 238.585 l 151.371 246.835 l 142.371 246.835 l 142.371 230.335 l
+ 134.121 230.335 l h
+159.621 234.085 m 159.621 237.835 l 167.871 237.835 l 167.871 230.335 l
+ 159.621 230.335 l h
+218.871 234.085 m 218.871 237.835 l 227.121 237.835 l 227.121 230.335 l
+ 218.871 230.335 l h
+439.371 234.085 m 439.371 237.835 l 447.621 237.835 l 447.621 230.335 l
+ 439.371 230.335 l h
+236.121 242.71 m 236.121 246.835 l 244.371 246.835 l 244.371 255.085 l
+252.621 255.085 l 252.621 238.585 l 236.121 238.585 l h
+338.121 255.085 m 338.121 271.585 l 345.621 271.585 l 345.621 263.335 l
+ 353.871 263.335 l 353.871 255.913 l 345.996 255.46 l 345.781 247.023 l
+345.57 238.585 l 338.121 238.585 l h
+227.871 255.085 m 227.871 263.335 l 244.371 263.335 l 244.371 255.909 l
+ 240.059 255.687 l 235.746 255.46 l 235.293 246.835 l 227.871 246.835 l
+h
+261.469 251.148 m 261.246 255.46 l 253.418 255.913 l 252.996 271.96 l 244.559
+ 272.171 l 236.121 272.386 l 236.121 280.585 l 227.871 280.585 l 227.871
+ 288.835 l 236.121 288.835 l 236.121 306.085 l 227.871 306.085 l 227.871
+ 314.335 l 244.371 314.335 l 244.371 306.085 l 256.371 306.085 l 256.371
+ 297.835 l 244.371 297.835 l 244.371 288.835 l 252.621 288.835 l 252.621
+ 280.585 l 260.793 280.585 l 261.246 271.96 l 269.121 271.507 l 269.121
+255.085 l 278.121 255.085 l 278.121 246.835 l 261.695 246.835 l h
+320.871 250.96 m 320.871 255.085 l 329.121 255.085 l 329.121 246.835 l
+320.871 246.835 l h
+371.871 250.96 m 371.871 255.085 l 379.371 255.085 l 379.371 246.835 l
+371.871 246.835 l h
+431.121 255.085 m 431.121 263.335 l 438.621 263.335 l 438.621 246.835 l
+ 431.121 246.835 l h
+287.121 259.585 m 287.121 263.335 l 294.621 263.335 l 294.621 255.835 l
+ 287.121 255.835 l h
+303.621 259.585 m 303.621 263.335 l 311.871 263.335 l 311.871 255.835 l
+ 303.621 255.835 l h
+362.871 264.085 m 362.871 272.335 l 354.621 272.335 l 354.621 280.585 l
+ 388.371 280.585 l 388.371 288.835 l 404.871 288.835 l 404.871 272.335 l
+ 396.621 272.335 l 396.621 264.085 l 388.371 264.085 l 388.371 272.335 l
+ 379.371 272.335 l 379.371 264.085 l 371.121 264.085 l 371.121 255.835 l
+ 362.871 255.835 l h
+380.121 259.585 m 380.121 263.335 l 388.371 263.335 l 388.371 255.835 l
+ 380.121 255.835 l h
+312.621 268.21 m 312.621 272.335 l 278.121 272.335 l 278.121 280.585 l
+273.996 280.585 l 270.094 280.585 269.871 280.687 269.871 282.46 c 269.871
+ 284.234 270.094 284.335 273.996 284.335 c 277.895 284.335 278.121 284.234
+ 278.121 282.46 c 278.121 280.585 l 320.871 280.585 l 320.871 282.296 l
+320.871 283.507 321.527 284.253 323.121 284.855 c 324.609 285.417 325.371
+ 286.222 325.371 287.241 c 325.371 288.644 325.895 288.792 331.559 288.991
+ c 337.746 289.21 l 338.199 297.085 l 345.621 297.085 l 345.621 288.835
+l 353.871 288.835 l 353.871 280.585 l 329.121 280.585 l 329.121 264.085
+l 312.621 264.085 l h
+413.871 280.585 m 413.871 297.085 l 438.543 297.085 l 438.996 289.21 l
+443.309 288.987 l 447.621 288.761 l 447.621 264.085 l 439.371 264.085 l
+439.371 272.335 l 431.121 272.335 l 431.121 289.585 l 422.074 289.585 l
+422.496 271.96 l 430.371 271.507 l 430.371 264.085 l 413.871 264.085 l h
+210.621 276.46 m 210.621 280.585 l 218.871 280.585 l 218.871 272.335 l
+210.621 272.335 l h
+159.621 293.335 m 159.621 297.085 l 176.121 297.085 l 176.121 289.585 l
+ 159.621 289.585 l h
+218.871 293.71 m 218.871 297.835 l 210.621 297.835 l 210.621 306.085 l
+227.121 306.085 l 227.121 289.585 l 218.871 289.585 l h
+354.621 293.335 m 354.621 297.085 l 362.871 297.085 l 362.871 322.585 l
+ 371.121 322.585 l 371.121 314.335 l 388.371 314.335 l 388.371 306.085 l
+ 404.871 306.085 l 404.871 297.835 l 388.371 297.835 l 388.371 289.585 l
+ 380.121 289.585 l 380.121 306.085 l 371.121 306.085 l 371.121 289.585 l
+ 354.621 289.585 l h
+134.121 301.96 m 134.121 306.085 l 158.871 306.085 l 158.871 297.835 l
+134.121 297.835 l h
+176.871 301.96 m 176.871 306.085 l 193.371 306.085 l 193.371 297.835 l
+176.871 297.835 l h
+329.121 301.96 m 329.121 306.085 l 337.371 306.085 l 337.371 297.835 l
+329.121 297.835 l h
+346.371 301.96 m 346.371 306.085 l 353.871 306.085 l 353.871 297.835 l
+346.371 297.835 l h
+202.371 314.335 m 202.371 322.585 l 209.871 322.585 l 209.871 306.085 l
+ 202.371 306.085 l h
+338.121 318.835 m 338.121 331.585 l 345.621 331.585 l 345.621 322.585 l
+ 353.871 322.585 l 353.871 315.085 l 345.621 315.085 l 345.621 306.085 l
+ 338.121 306.085 l h
+405.621 310.21 m 405.621 314.335 l 413.871 314.335 l 413.871 339.835 l
+431.121 339.835 l 431.121 348.085 l 438.543 348.085 l 438.996 340.21 l 443.309
+ 339.987 l 447.621 339.761 l 447.621 315.085 l 439.371 315.085 l 439.371
+ 323.335 l 422.121 323.335 l 422.121 306.085 l 405.621 306.085 l h
+151.371 319.171 m 151.371 323.335 l 143.121 323.335 l 143.121 339.835 l
+ 158.871 339.835 l 158.871 328.21 l 158.871 321.816 158.953 316.331 159.059
+ 316.023 c 159.16 315.714 157.473 315.359 155.309 315.234 c 151.371 315.007
+ l h
+167.871 318.835 m 167.871 322.585 l 176.121 322.585 l 176.121 315.085 l
+ 167.871 315.085 l h
+185.121 318.835 m 185.121 322.585 l 193.371 322.585 l 193.371 315.085 l
+ 185.121 315.085 l h
+244.371 319.21 m 244.371 323.335 l 236.121 323.335 l 236.121 331.585 l
+244.371 331.585 l 244.371 339.835 l 252.621 339.835 l 252.621 335.71 l 252.621
+ 331.812 252.723 331.585 254.496 331.585 c 256.27 331.585 256.371 331.359
+ 256.371 327.46 c 256.371 323.562 256.266 323.335 254.496 323.335 c 252.723
+ 323.335 252.621 323.109 252.621 319.21 c 252.621 315.085 l 244.371 315.085
+ l h
+325.371 318.835 m 325.371 322.335 325.496 322.585 327.246 322.585 c 328.996
+ 322.585 329.121 322.335 329.121 318.835 c 329.121 315.335 328.996 315.085
+ 327.246 315.085 c 325.496 315.085 325.371 315.335 325.371 318.835 c h
+388.371 318.835 m 388.371 322.585 l 397.371 322.585 l 397.371 331.585 l
+ 404.871 331.585 l 404.871 315.085 l 388.371 315.085 l h
+193.371 327.46 m 193.371 331.585 l 185.121 331.585 l 185.121 339.835 l
+193.371 339.835 l 193.371 331.585 l 201.621 331.585 l 201.621 323.335 l
+193.371 323.335 l h
+210.621 331.585 m 210.621 339.835 l 218.871 339.835 l 218.871 331.585 l
+ 227.121 331.585 l 227.121 323.335 l 210.621 323.335 l h
+329.121 335.71 m 329.121 339.835 l 337.371 339.835 l 337.371 331.585 l
+329.121 331.585 l h
+362.871 335.71 m 362.871 339.835 l 379.371 339.835 l 379.371 331.585 l
+362.871 331.585 l h
+388.371 340.21 m 388.371 348.835 l 371.871 348.835 l 371.871 356.335 l
+388.371 356.335 l 388.371 365.335 l 380.121 365.335 l 380.121 373.585 l
+397.371 373.585 l 397.371 381.835 l 404.871 381.835 l 404.871 365.335 l
+413.871 365.335 l 413.871 357.085 l 396.621 357.085 l 396.621 348.085 l
+413.871 348.085 l 413.871 340.585 l 396.621 340.585 l 396.621 331.585 l
+388.371 331.585 l h
+134.121 344.335 m 134.121 348.085 l 142.371 348.085 l 142.371 340.585 l
+ 134.121 340.585 l h
+159.621 344.335 m 159.621 348.085 l 167.871 348.085 l 167.871 340.585 l
+ 159.621 340.585 l h
+176.871 348.46 m 176.871 356.335 l 209.871 356.335 l 209.871 348.835 l
+201.621 348.835 l 201.621 340.585 l 193.371 340.585 l 193.371 348.909 l
+189.059 348.687 l 184.746 348.46 l 184.293 340.585 l 176.871 340.585 l h
+218.871 352.96 m 218.871 365.335 l 202.371 365.335 l 202.371 382.585 l
+185.121 382.585 l 185.121 390.835 l 202.371 390.835 l 202.371 399.085 l
+210.621 399.085 l 210.621 407.335 l 218.871 407.335 l 218.871 381.835 l
+235.371 381.835 l 235.371 374.335 l 227.121 374.335 l 227.121 365.335 l
+244.371 365.335 l 244.371 373.585 l 252.621 373.585 l 252.621 365.335 l
+244.371 365.335 l 244.371 356.261 l 248.684 356.487 l 252.996 356.71 l 253.219
+ 361.023 l 253.445 365.335 l 260.797 365.335 l 261.02 361.023 l 261.246
+356.71 l 278.121 356.288 l 278.121 373.585 l 286.371 373.585 l 286.371 365.335
+ l 294.621 365.335 l 294.621 357.085 l 290.496 357.085 l 286.594 357.085
+ 286.371 356.984 286.371 355.21 c 286.371 353.335 l 272.547 353.335 l 260.984
+ 353.335 258.535 353.144 257.547 352.155 c 256.902 351.507 256.371 350.495
+ 256.371 349.905 c 256.371 349.069 255.07 348.835 250.371 348.835 c 244.371
+ 348.835 l 244.371 340.585 l 236.121 340.585 l 236.121 348.835 l 227.121
+ 348.835 l 227.121 340.585 l 218.871 340.585 l h
+338.121 344.335 m 338.121 348.085 l 345.621 348.085 l 345.621 340.585 l
+ 338.121 340.585 l h
+354.621 348.835 m 354.621 357.085 l 329.121 357.085 l 329.121 373.585 l
+ 337.371 373.585 l 337.371 365.335 l 362.871 365.335 l 362.871 381.835 l
+ 371.121 381.835 l 371.121 357.085 l 362.871 357.085 l 362.871 340.585 l
+ 354.621 340.585 l h
+413.871 352.585 m 413.871 356.335 l 422.121 356.335 l 422.121 348.835 l
+ 413.871 348.835 l h
+439.371 352.96 m 439.371 357.085 l 431.121 357.085 l 431.121 365.335 l
+439.371 365.335 l 439.371 374.335 l 430.371 374.335 l 430.371 365.335 l
+422.945 365.335 l 422.719 369.648 l 422.496 373.96 l 418.184 374.187 l 413.871
+ 374.409 l 413.871 381.835 l 431.121 381.835 l 431.121 390.835 l 413.871
+ 390.835 l 413.871 382.585 l 405.621 382.585 l 405.621 390.835 l 396.621
+ 390.835 l 396.621 382.585 l 388.371 382.585 l 388.371 390.835 l 379.371
+ 390.835 l 379.371 382.585 l 371.871 382.585 l 371.871 399.835 l 362.871
+ 399.835 l 362.871 416.335 l 354.621 416.335 l 354.621 424.585 l 362.871
+ 424.585 l 362.871 416.335 l 371.121 416.335 l 371.121 407.335 l 379.371
+ 407.335 l 379.371 399.085 l 413.871 399.085 l 413.871 407.335 l 430.371
+ 407.335 l 430.371 399.085 l 438.57 399.085 l 438.781 390.648 l 438.996
+382.21 l 443.309 381.987 l 447.621 381.761 l 447.621 348.835 l 439.371 348.835
+ l h
+295.371 354.835 m 295.371 356.276 295.871 356.335 307.746 356.335 c 319.621
+ 356.335 320.121 356.276 320.121 354.835 c 320.121 353.398 319.621 353.335
+ 307.746 353.335 c 295.871 353.335 295.371 353.398 295.371 354.835 c h
+143.121 361.21 m 143.121 365.335 l 150.621 365.335 l 150.621 357.085 l
+143.121 357.085 l h
+134.121 369.46 m 134.121 373.585 l 142.371 373.585 l 142.371 365.335 l
+134.121 365.335 l h
+168.371 365.835 m 168.094 366.109 167.871 368.136 167.871 370.335 c 167.871
+ 374.335 l 159.621 374.335 l 159.621 381.835 l 167.871 381.835 l 167.871
+ 399.835 l 159.621 399.835 l 159.621 407.335 l 176.121 407.335 l 176.121
+ 373.585 l 193.371 373.585 l 193.371 365.335 l 181.121 365.335 l 174.383
+ 365.335 168.645 365.562 168.371 365.835 c h
+295.371 386.71 m 295.371 408.085 l 286.371 408.085 l 286.371 390.835 l
+278.121 390.835 l 278.121 382.585 l 269.871 382.585 l 269.871 390.835 l
+278.121 390.835 l 278.121 416.335 l 269.871 416.335 l 269.871 424.585 l
+278.121 424.585 l 278.121 416.335 l 287.195 416.335 l 286.969 420.648 l
+286.746 424.96 l 282.434 425.187 l 278.121 425.409 l 278.121 432.835 l 287.121
+ 432.835 l 287.121 441.835 l 278.121 441.835 l 278.121 433.585 l 269.871
+ 433.585 l 269.871 441.835 l 261.621 441.835 l 261.621 458.335 l 269.871
+ 458.335 l 269.871 466.585 l 278.121 466.585 l 278.121 475.585 l 286.371
+ 475.585 l 286.371 459.085 l 278.121 459.085 l 278.121 450.085 l 287.121
+ 450.085 l 287.121 458.335 l 294.621 458.335 l 294.621 450.085 l 303.621
+ 450.085 l 303.621 458.335 l 320.871 458.335 l 320.871 475.585 l 329.121
+ 475.585 l 329.121 450.909 l 324.809 450.687 l 320.496 450.46 l 320.27 446.148
+ l 320.047 441.835 l 338.121 441.835 l 338.121 450.085 l 345.621 450.085
+ l 345.621 432.835 l 353.871 432.835 l 353.871 425.413 l 345.996 424.96
+l 345.77 420.648 l 345.547 416.335 l 338.195 416.335 l 337.969 420.648 l
+ 337.746 424.96 l 333.434 425.187 l 329.121 425.409 l 329.121 433.585 l
+320.121 433.585 l 320.121 425.335 l 312.621 425.335 l 312.621 433.585 l
+294.621 433.585 l 294.621 416.335 l 303.621 416.335 l 303.621 424.585 l
+311.871 424.585 l 311.871 416.335 l 320.121 416.335 l 320.121 408.085 l
+311.871 408.085 l 311.871 382.585 l 303.621 382.585 l 303.621 365.335 l
+295.371 365.335 l h
+143.121 378.085 m 143.121 381.835 l 150.621 381.835 l 150.621 374.335 l
+ 143.121 374.335 l h
+253.371 386.71 m 253.371 399.085 l 269.121 399.085 l 269.121 390.835 l
+260.871 390.835 l 260.871 374.335 l 253.371 374.335 l h
+312.621 378.085 m 312.621 381.835 l 320.121 381.835 l 320.121 374.335 l
+ 312.621 374.335 l h
+151.371 386.71 m 151.371 390.835 l 158.871 390.835 l 158.871 382.585 l
+151.371 382.585 l h
+320.871 386.71 m 320.871 390.835 l 337.371 390.835 l 337.371 382.585 l
+320.871 382.585 l h
+346.371 386.71 m 346.371 390.835 l 353.871 390.835 l 353.871 382.585 l
+346.371 382.585 l h
+134.121 394.96 m 134.121 399.085 l 150.621 399.085 l 150.621 390.835 l
+134.121 390.835 l h
+227.871 394.96 m 227.871 399.085 l 244.371 399.085 l 244.371 390.835 l
+227.871 390.835 l h
+354.621 394.96 m 354.621 399.085 l 362.871 399.085 l 362.871 390.835 l
+354.621 390.835 l h
+185.121 403.585 m 185.121 407.335 l 201.621 407.335 l 201.621 399.835 l
+ 185.121 399.835 l h
+329.121 408.085 m 329.121 416.335 l 320.871 416.335 l 320.871 424.585 l
+ 329.121 424.585 l 329.121 416.335 l 337.371 416.335 l 337.371 407.335 l
+ 346.371 407.335 l 346.371 416.335 l 353.871 416.335 l 353.871 399.835 l
+ 329.121 399.835 l h
+227.871 412.21 m 227.871 416.335 l 236.121 416.335 l 236.121 432.835 l
+244.371 432.835 l 244.371 416.335 l 253.371 416.335 l 253.371 432.835 l
+260.871 432.835 l 260.871 408.085 l 227.871 408.085 l h
+134.121 445.96 m 134.121 475.585 l 193.371 475.585 l 193.371 416.335 l
+134.121 416.335 l h
+185.121 445.96 m 185.121 467.335 l 142.371 467.335 l 142.371 424.585 l
+185.121 424.585 l h
+151.371 445.96 m 151.371 458.335 l 176.121 458.335 l 176.121 433.585 l
+151.371 433.585 l h
+202.371 420.46 m 202.371 424.585 l 209.871 424.585 l 209.871 416.335 l
+202.371 416.335 l h
+218.871 424.585 m 218.871 432.835 l 227.121 432.835 l 227.121 416.335 l
+ 218.871 416.335 l h
+371.719 420.648 m 371.496 424.96 l 367.184 425.187 l 362.871 425.409 l
+362.871 432.835 l 371.871 432.835 l 371.871 441.835 l 379.371 441.835 l
+379.371 416.335 l 371.945 416.335 l h
+388.371 445.96 m 388.371 475.585 l 447.621 475.585 l 447.621 416.335 l
+388.371 416.335 l h
+439.371 445.96 m 439.371 467.335 l 396.621 467.335 l 396.621 424.585 l
+439.371 424.585 l h
+405.621 445.96 m 405.621 458.335 l 430.371 458.335 l 430.371 433.585 l
+405.621 433.585 l h
+210.621 437.71 m 210.621 441.835 l 218.871 441.835 l 218.871 450.085 l
+227.871 450.085 l 227.871 467.335 l 218.871 467.335 l 218.871 475.585 l
+235.371 475.585 l 235.371 458.335 l 244.371 458.335 l 244.371 441.835 l
+218.871 441.835 l 218.871 433.585 l 210.621 433.585 l h
+202.371 450.085 m 202.371 458.335 l 209.871 458.335 l 209.871 441.835 l
+ 202.371 441.835 l h
+346.371 454.96 m 346.371 459.085 l 338.121 459.085 l 338.121 466.507 l
+345.996 466.96 l 346.219 471.273 l 346.445 475.585 l 353.871 475.585 l 353.871
+ 450.835 l 346.371 450.835 l h
+362.871 454.585 m 362.871 458.335 l 371.121 458.335 l 371.121 450.835 l
+ 362.871 450.835 l h
+210.621 462.835 m 210.621 466.585 l 218.871 466.585 l 218.871 459.085 l
+ 210.621 459.085 l h
+295.371 462.835 m 295.371 466.585 l 303.621 466.585 l 303.621 459.085 l
+ 295.371 459.085 l h
+244.371 471.46 m 244.371 475.585 l 252.621 475.585 l 252.621 467.335 l
+244.371 467.335 l h
+303.621 471.46 m 303.621 475.585 l 311.871 475.585 l 311.871 467.335 l
+303.621 467.335 l h
+303.621 471.46 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
+%</wct5>
+% \end{macrocode}
+% \begin{macrocode}
+%<*wct10>
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:04:42 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 153 208 467 523
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 153 208 467 523
+%%EndPageSetup
+q 153 208 314 315 rectclip q
+0 g
+153.113 238.859 m 153.113 268.484 l 212.363 268.484 l 212.363 209.234 l
+ 153.113 209.234 l h
+204.113 238.859 m 204.113 260.234 l 161.363 260.234 l 161.363 217.484 l
+ 204.113 217.484 l h
+170.363 238.859 m 170.363 251.234 l 195.113 251.234 l 195.113 226.484 l
+ 170.363 226.484 l h
+229.613 217.484 m 229.613 225.734 l 246.113 225.734 l 246.113 218.234 l
+ 237.863 218.234 l 237.863 209.234 l 229.613 209.234 l h
+246.863 213.359 m 246.863 217.484 l 255.113 217.484 l 255.113 234.734 l
+ 237.863 234.734 l 237.863 242.984 l 228.863 242.984 l 228.863 226.484 l
+ 221.363 226.484 l 221.363 251.234 l 237.863 251.234 l 237.863 242.984 l
+ 263.363 242.984 l 263.363 225.734 l 279.863 225.734 l 279.863 218.312 l
+ 271.988 217.859 l 271.766 213.546 l 271.539 209.234 l 246.863 209.234 l
+ h
+297.113 217.484 m 297.113 225.734 l 314.363 225.734 l 314.363 233.984 l
+ 322.613 233.984 l 322.613 242.984 l 313.613 242.984 l 313.613 234.734 l
+ 306.113 234.734 l 306.113 251.234 l 314.363 251.234 l 314.363 259.484 l
+ 322.613 259.484 l 322.613 268.484 l 306.113 268.484 l 306.113 276.734 l
+ 322.613 276.734 l 322.613 285.734 l 297.113 285.734 l 297.113 310.484 l
+ 305.363 310.484 l 305.363 293.984 l 314.363 293.984 l 314.363 310.484 l
+ 339.113 310.484 l 339.113 302.984 l 330.863 302.984 l 330.863 294.03 l
+347.738 293.609 l 348.191 285.734 l 330.863 285.734 l 330.863 276.734 l
+339.113 276.734 l 339.113 251.234 l 348.113 251.234 l 348.113 242.984 l
+356.363 242.984 l 356.363 233.984 l 364.613 233.984 l 364.613 226.484 l
+356.363 226.484 l 356.363 222.171 l 356.367 217.859 l 352.238 218.116 l
+348.113 218.37 l 348.113 226.484 l 339.113 226.484 l 339.113 217.484 l 348.113
+ 217.484 l 348.113 209.234 l 297.113 209.234 l h
+331.465 247.296 m 331.238 251.609 l 326.926 251.831 l 322.613 252.058 l
+ 322.613 242.984 l 331.688 242.984 l h
+365.363 217.484 m 365.363 225.734 l 372.863 225.734 l 372.863 217.484 l
+ 381.863 217.484 l 381.863 209.234 l 365.363 209.234 l h
+390.863 217.484 m 390.863 225.734 l 415.613 225.734 l 415.613 218.28 l
+398.738 217.859 l 398.516 213.546 l 398.289 209.234 l 390.863 209.234 l
+h
+416.363 213.359 m 416.363 217.484 l 423.863 217.484 l 423.863 209.234 l
+ 416.363 209.234 l h
+432.863 213.359 m 432.863 217.484 l 441.113 217.484 l 441.113 209.234 l
+ 432.863 209.234 l h
+450.113 217.484 m 450.113 225.734 l 457.535 225.734 l 457.988 217.859 l
+ 462.301 217.632 l 466.613 217.409 l 466.613 209.234 l 450.113 209.234 l
+ h
+280.613 230.234 m 280.613 233.984 l 288.863 233.984 l 288.863 242.984 l
+ 297.113 242.984 l 297.113 226.484 l 280.613 226.484 l h
+373.613 234.734 m 373.613 242.984 l 381.863 242.984 l 381.863 226.484 l
+ 373.613 226.484 l h
+416.363 230.234 m 416.363 233.984 l 423.863 233.984 l 423.863 226.484 l
+ 416.363 226.484 l h
+432.863 230.234 m 432.863 233.984 l 449.363 233.984 l 449.363 226.484 l
+ 432.863 226.484 l h
+458.363 230.609 m 458.363 234.734 l 450.113 234.734 l 450.113 242.984 l
+ 441.863 242.984 l 441.863 251.234 l 466.613 251.234 l 466.613 226.484 l
+ 458.363 226.484 l h
+272.363 242.984 m 272.363 251.234 l 280.613 251.234 l 280.613 260.234 l
+ 263.363 260.234 l 263.363 268.484 l 255.113 268.484 l 255.113 276.734 l
+ 263.363 276.734 l 263.363 268.484 l 288.113 268.484 l 288.113 242.984 l
+ 279.863 242.984 l 279.863 234.734 l 272.363 234.734 l h
+424.613 238.859 m 424.613 242.984 l 390.863 242.984 l 390.863 251.984 l
+ 373.613 251.984 l 373.613 268.484 l 390.938 268.484 l 390.715 272.796 l
+ 390.488 277.109 l 386.176 277.331 l 381.863 277.558 l 381.863 284.984 l
+ 390.863 284.984 l 390.863 293.984 l 381.863 293.984 l 381.863 285.734 l
+ 373.613 285.734 l 373.613 293.984 l 381.863 293.984 l 381.863 302.234 l
+ 390.863 302.234 l 390.863 310.484 l 398.363 310.484 l 398.363 293.984 l
+ 407.363 293.984 l 407.363 302.234 l 441.113 302.234 l 441.113 293.984 l
+ 458.363 293.984 l 458.363 302.984 l 450.113 302.984 l 450.113 318.655 l
+ 457.988 319.109 l 458.215 323.421 l 458.438 327.734 l 466.613 327.734 l
+ 466.613 277.484 l 432.863 277.484 l 432.863 234.734 l 424.613 234.734 l
+ h
+424.613 264.374 m 424.613 277.519 l 411.676 277.312 l 398.738 277.109 l
+ 398.535 264.171 l 398.328 251.234 l 424.613 251.234 l h
+407.363 264.359 m 407.363 268.484 l 415.613 268.484 l 415.613 260.234 l
+ 407.363 260.234 l h
+416.363 289.484 m 416.363 293.984 l 407.363 293.984 l 407.363 284.984 l
+ 416.363 284.984 l h
+432.863 289.484 m 432.863 293.984 l 423.863 293.984 l 423.863 284.984 l
+ 432.863 284.984 l h
+357.113 247.109 m 357.113 251.234 l 372.863 251.234 l 372.863 242.984 l
+ 357.113 242.984 l h
+237.863 272.984 m 237.863 293.984 l 229.613 293.984 l 229.613 302.234 l
+ 237.863 302.234 l 237.863 293.984 l 246.113 293.984 l 246.113 284.984 l
+ 254.363 284.984 l 254.363 277.484 l 246.113 277.484 l 246.113 268.484 l
+ 254.363 268.484 l 254.363 260.234 l 246.113 260.234 l 246.113 251.984 l
+ 237.863 251.984 l h
+297.113 264.359 m 297.113 268.484 l 288.863 268.484 l 288.863 277.484 l
+ 272.441 277.484 l 271.988 285.359 l 263.551 285.569 l 255.113 285.784 l
+ 255.113 293.984 l 288.039 293.984 l 288.266 289.671 l 288.488 285.359 l
+ 292.801 285.132 l 297.113 284.909 l 297.113 268.484 l 305.363 268.484 l
+ 305.363 260.234 l 297.113 260.234 l h
+348.113 268.484 m 348.113 276.734 l 356.363 276.734 l 356.363 268.484 l
+ 364.613 268.484 l 364.613 260.234 l 348.113 260.234 l h
+441.863 264.359 m 441.863 268.484 l 466.613 268.484 l 466.613 260.234 l
+ 441.863 260.234 l h
+221.363 272.609 m 221.363 276.734 l 228.863 276.734 l 228.863 268.484 l
+ 221.363 268.484 l h
+153.113 298.109 m 153.113 318.734 l 161.363 318.734 l 161.363 310.484 l
+ 170.363 310.484 l 170.363 318.734 l 177.812 318.734 l 178.027 310.671 l
+ 178.238 302.609 l 182.551 302.382 l 186.863 302.159 l 186.863 285.808 l
+ 182.551 285.585 l 178.238 285.359 l 177.785 277.484 l 170.363 277.484 l
+ 170.363 302.984 l 161.363 302.984 l 161.363 277.484 l 153.113 277.484 l
+ h
+186.863 281.234 m 186.863 284.984 l 195.91 284.984 l 195.488 302.609 l
+191.176 302.835 l 186.863 303.058 l 186.863 310.484 l 203.363 310.484 l
+203.363 302.234 l 212.363 302.234 l 212.363 310.484 l 220.613 310.484 l
+220.613 293.984 l 228.863 293.984 l 228.863 285.734 l 212.363 285.734 l
+212.363 293.984 l 203.289 293.984 l 203.516 289.671 l 203.738 285.359 l
+208.051 285.132 l 212.363 284.909 l 212.363 277.484 l 186.863 277.484 l
+h
+356.941 294.171 m 356.738 310.859 l 352.426 311.085 l 348.113 311.308 l
+ 348.113 327.734 l 356.289 327.734 l 356.516 323.421 l 356.738 319.109 l
+ 364.613 318.655 l 364.613 302.234 l 372.863 302.234 l 372.863 293.984 l
+ 364.613 293.984 l 364.613 284.984 l 372.863 284.984 l 372.863 277.484 l
+ 357.145 277.484 l h
+246.863 310.859 m 246.863 318.734 l 254.363 318.734 l 254.363 302.984 l
+ 246.863 302.984 l h
+263.363 306.734 m 263.363 310.484 l 271.613 310.484 l 271.613 302.984 l
+ 263.363 302.984 l h
+373.613 310.859 m 373.613 318.734 l 390.113 318.734 l 390.113 311.234 l
+ 381.863 311.234 l 381.863 302.984 l 373.613 302.984 l h
+204.113 314.984 m 204.113 318.734 l 212.363 318.734 l 212.363 311.234 l
+ 204.113 311.234 l h
+229.613 314.984 m 229.613 318.734 l 237.863 318.734 l 237.863 311.234 l
+ 229.613 311.234 l h
+280.613 319.484 m 280.613 327.734 l 284.738 327.734 l 288.641 327.734 288.863
+ 327.835 288.863 329.609 c 288.863 331.382 289.09 331.484 292.988 331.484
+ c 297.113 331.484 l 297.113 311.234 l 280.613 311.234 l h
+407.363 314.944 m 407.363 318.659 l 411.676 318.882 l 415.988 319.109 l
+ 416.215 323.421 l 416.438 327.734 l 407.363 327.734 l 407.363 319.484 l
+ 399.113 319.484 l 399.113 327.734 l 407.363 327.734 l 407.363 335.984 l
+ 424.613 335.984 l 424.613 344.234 l 432.863 344.234 l 432.863 335.984 l
+ 449.363 335.984 l 449.363 327.734 l 441.113 327.734 l 441.113 319.484 l
+ 432.863 319.484 l 432.863 327.734 l 423.863 327.734 l 423.863 311.234 l
+ 407.363 311.234 l h
+178.613 323.609 m 178.613 327.734 l 186.863 327.734 l 186.863 319.484 l
+ 178.613 319.484 l h
+195.863 323.609 m 195.863 327.734 l 203.363 327.734 l 203.363 319.484 l
+ 195.863 319.484 l h
+212.363 323.609 m 212.363 327.734 l 204.113 327.734 l 204.113 335.984 l
+ 212.363 335.984 l 212.363 344.984 l 195.113 344.984 l 195.113 336.734 l
+ 186.863 336.734 l 186.863 353.234 l 220.613 353.234 l 220.613 319.484 l
+ 212.363 319.484 l h
+237.863 323.609 m 237.863 327.734 l 229.613 327.734 l 229.613 361.484 l
+ 237.863 361.484 l 237.863 335.984 l 255.113 335.984 l 255.113 344.234 l
+ 263.414 344.234 l 263.203 336.171 l 262.988 328.109 l 254.551 327.898 l
+ 246.113 327.683 l 246.113 319.484 l 237.863 319.484 l h
+306.113 325.484 m 306.113 331.484 l 313.613 331.484 l 313.613 319.484 l
+ 306.113 319.484 l h
+322.613 325.484 m 322.613 331.484 l 326.738 331.484 l 330.641 331.484 330.863
+ 331.382 330.863 329.609 c 330.863 327.835 331.09 327.734 334.988 327.734
+ c 339.113 327.734 l 339.113 319.484 l 322.613 319.484 l h
+365.363 323.609 m 365.363 327.734 l 357.113 327.734 l 357.113 344.234 l
+ 364.613 344.234 l 364.613 335.984 l 372.863 335.984 l 372.863 319.484 l
+ 365.363 319.484 l h
+153.113 331.859 m 153.113 335.984 l 162.113 335.984 l 162.113 353.234 l
+ 153.113 353.234 l 153.113 369.659 l 157.426 369.882 l 161.738 370.109 l
+ 161.965 374.421 l 162.188 378.734 l 186.863 378.734 l 186.863 386.984 l
+ 195.113 386.984 l 195.113 370.484 l 169.613 370.484 l 169.613 361.484 l
+ 177.863 361.484 l 177.863 353.234 l 169.613 353.234 l 169.613 344.234 l
+ 177.863 344.234 l 177.863 336.734 l 169.613 336.734 l 169.613 327.734 l
+ 153.113 327.734 l h
+272.363 335.984 m 272.363 343.734 272.457 344.234 273.863 344.234 c 275.219
+ 344.234 275.363 343.734 275.363 339.038 c 275.363 333.73 276.383 331.484
+ 278.793 331.484 c 279.438 331.484 279.863 330.734 279.863 329.609 c 279.863
+ 327.859 279.613 327.734 276.113 327.734 c 272.363 327.734 l h
+344.363 340.484 m 344.363 343.984 344.488 344.234 346.238 344.234 c 347.988
+ 344.234 348.113 343.984 348.113 340.484 c 348.113 336.984 347.988 336.734
+ 346.238 336.734 c 344.488 336.734 344.363 336.984 344.363 340.484 c h
+390.863 340.859 m 390.863 344.984 l 381.863 344.984 l 381.863 353.234 l
+ 373.613 353.234 l 373.613 361.484 l 381.863 361.484 l 381.863 353.234 l
+ 390.863 353.234 l 390.863 361.484 l 398.363 361.484 l 398.363 353.234 l
+ 407.363 353.234 l 407.363 362.234 l 399.113 362.234 l 399.113 369.734 l
+ 407.363 369.734 l 407.363 378.734 l 416.438 378.734 l 416.215 383.046 l
+ 415.988 387.359 l 403.051 387.566 l 390.113 387.769 l 390.113 370.484 l
+ 373.613 370.484 l 373.613 395.234 l 399.113 395.234 l 399.113 403.484 l
+ 407.363 403.484 l 407.363 420.734 l 416.363 420.734 l 416.363 429.734 l
+ 407.363 429.734 l 407.363 421.484 l 390.113 421.484 l 390.113 412.484 l
+ 398.363 412.484 l 398.363 404.234 l 381.863 404.234 l 381.863 412.484 l
+ 364.613 412.484 l 364.613 404.234 l 357.113 404.234 l 357.113 420.734 l
+ 381.863 420.734 l 381.863 428.909 l 386.176 429.136 l 390.488 429.359 l
+ 390.715 433.671 l 390.938 437.984 l 416.438 437.984 l 416.215 442.296 l
+ 415.988 446.609 l 407.551 446.819 l 399.113 447.034 l 399.113 454.484 l
+ 423.863 454.484 l 423.863 420.734 l 432.863 420.734 l 432.863 437.984 l
+ 466.613 437.984 l 466.613 395.984 l 458.363 395.984 l 458.363 404.234 l
+ 450.113 404.234 l 450.113 412.484 l 441.039 412.484 l 441.266 408.171 l
+ 441.488 403.859 l 449.363 403.405 l 449.363 395.234 l 457.613 395.234 l
+ 457.613 387.812 l 449.738 387.359 l 449.516 383.046 l 449.289 378.734 l
+ 441.113 378.734 l 441.113 370.484 l 432.863 370.484 l 432.863 395.984 l
+ 424.613 395.984 l 424.613 404.234 l 415.613 404.234 l 415.613 395.234 l
+ 423.863 395.234 l 423.863 353.234 l 415.613 353.234 l 415.613 344.984 l
+ 407.363 344.984 l 407.363 336.734 l 390.863 336.734 l h
+450.113 340.484 m 450.113 344.234 l 457.613 344.234 l 457.613 336.734 l
+ 450.113 336.734 l h
+263.363 349.109 m 263.363 353.234 l 271.613 353.234 l 271.613 344.984 l
+ 263.363 344.984 l h
+365.363 349.109 m 365.363 353.234 l 372.863 353.234 l 372.863 344.984 l
+ 365.363 344.984 l h
+441.863 349.109 m 441.863 353.234 l 449.363 353.234 l 449.363 344.984 l
+ 441.863 344.984 l h
+272.363 361.484 m 272.363 369.234 272.457 369.734 273.863 369.734 c 275.273
+ 369.734 275.363 369.234 275.363 361.484 c 275.363 353.734 275.273 353.234
+ 273.863 353.234 c 272.457 353.234 272.363 353.734 272.363 361.484 c h
+348.113 357.319 m 348.113 361.409 l 352.426 361.632 l 356.738 361.859 l
+ 356.953 370.296 l 357.164 378.734 l 364.613 378.734 l 364.613 369.734 l
+ 372.863 369.734 l 372.863 362.234 l 364.613 362.234 l 364.613 353.234 l
+ 348.113 353.234 l h
+432.863 357.359 m 432.863 361.484 l 441.113 361.484 l 441.113 353.234 l
+ 432.863 353.234 l h
+195.863 365.984 m 195.863 369.734 l 212.363 369.734 l 212.363 362.234 l
+ 195.863 362.234 l h
+221.195 374.796 m 220.988 387.359 l 216.676 387.585 l 212.363 387.808 l
+ 212.363 395.234 l 221.363 395.234 l 221.363 404.234 l 212.363 404.234 l
+ 212.363 412.484 l 204.113 412.484 l 204.113 420.734 l 212.363 420.734 l
+ 212.363 412.484 l 237.863 412.484 l 237.863 421.484 l 212.363 421.484 l
+ 212.363 428.984 l 263.363 428.984 l 263.363 421.484 l 254.363 421.484 l
+ 254.363 412.484 l 263.363 412.484 l 263.363 403.484 l 280.238 403.484 l
+ 296.613 403.484 297.113 403.441 297.113 401.984 c 297.113 400.562 296.613
+ 400.484 287.418 400.484 c 275.551 400.484 275.363 400.366 275.363 392.929
+ c 275.363 388.28 275.211 387.734 273.902 387.734 c 272.672 387.734 272.406
+ 388.347 272.215 391.671 c 271.988 395.609 l 267.676 395.835 l 263.363 396.058
+ l 263.363 378.734 l 271.613 378.734 l 271.613 370.484 l 263.363 370.484
+ l 263.363 378.734 l 254.363 378.734 l 254.363 369.734 l 263.363 369.734
+ l 263.363 362.234 l 237.863 362.234 l 237.863 378.734 l 246.863 378.734
+ l 246.863 386.984 l 255.113 386.984 l 255.113 395.984 l 246.863 395.984
+ l 246.863 404.234 l 228.863 404.234 l 228.863 362.234 l 221.402 362.234
+ l h
+441.863 365.984 m 441.863 369.734 l 458.363 369.734 l 458.363 386.984 l
+ 466.613 386.984 l 466.613 362.234 l 441.863 362.234 l h
+344.363 382.859 m 344.363 395.234 l 346.238 395.234 l 348.012 395.234 348.113
+ 395.46 348.113 399.359 c 348.113 403.484 l 356.363 403.484 l 356.363 395.234
+ l 364.613 395.234 l 364.613 387.734 l 356.363 387.734 l 356.363 378.734
+ l 348.113 378.734 l 348.113 374.609 l 348.113 370.71 348.012 370.484 346.238
+ 370.484 c 344.363 370.484 l h
+153.113 382.859 m 153.113 386.984 l 161.363 386.984 l 161.363 378.734 l
+ 153.113 378.734 l h
+204.113 382.859 m 204.113 386.984 l 212.363 386.984 l 212.363 378.734 l
+ 204.113 378.734 l h
+162.113 391.484 m 162.113 395.234 l 170.363 395.234 l 170.363 412.484 l
+ 195.113 412.484 l 195.113 396.034 l 186.676 395.819 l 178.238 395.609 l
+ 177.785 387.734 l 162.113 387.734 l h
+195.863 391.484 m 195.863 395.234 l 203.363 395.234 l 203.363 387.734 l
+ 195.863 387.734 l h
+237.863 391.484 m 237.863 395.234 l 246.113 395.234 l 246.113 387.734 l
+ 237.863 387.734 l h
+153.113 408.319 m 153.113 420.659 l 157.426 420.886 l 161.738 421.109 l
+ 162.191 428.984 l 170.363 428.984 l 170.363 437.984 l 178.613 437.984 l
+ 178.613 446.984 l 170.363 446.984 l 170.363 454.484 l 195.113 454.484 l
+ 195.113 446.234 l 203.363 446.234 l 203.363 437.984 l 186.863 437.984 l
+ 186.863 428.984 l 195.113 428.984 l 195.113 421.484 l 169.613 421.484 l
+ 169.613 412.484 l 161.363 412.484 l 161.363 395.984 l 153.113 395.984 l
+ h
+204.113 399.734 m 204.113 403.484 l 212.363 403.484 l 212.363 395.984 l
+ 204.113 395.984 l h
+365.363 399.734 m 365.363 403.484 l 372.863 403.484 l 372.863 395.984 l
+ 365.363 395.984 l h
+322.613 402.359 m 322.613 404.234 l 306.113 404.234 l 306.113 412.484 l
+ 322.613 412.484 l 322.613 421.484 l 314.363 421.484 l 314.363 428.984 l
+ 330.863 428.984 l 330.863 412.484 l 339.113 412.484 l 339.113 400.484 l
+ 322.613 400.484 l h
+272.363 420.734 m 272.363 428.984 l 280.613 428.984 l 280.613 437.984 l
+ 288.113 437.984 l 288.113 412.484 l 272.363 412.484 l h
+297.113 420.734 m 297.113 428.984 l 305.363 428.984 l 305.363 412.484 l
+ 297.113 412.484 l h
+339.863 425.194 m 339.863 437.984 l 356.363 437.984 l 356.363 429.734 l
+ 348.164 429.734 l 347.953 421.296 l 347.738 412.859 l 339.863 412.405 l
+ h
+204.113 433.859 m 204.113 437.984 l 212.363 437.984 l 212.363 446.234 l
+ 221.363 446.234 l 221.363 479.984 l 228.828 479.984 l 229.035 467.421 l
+ 229.238 454.859 l 233.551 454.632 l 237.863 454.409 l 237.863 447.058 l
+ 233.551 446.835 l 229.238 446.609 l 229.016 442.296 l 228.789 437.984 l
+ 212.363 437.984 l 212.363 429.734 l 204.113 429.734 l h
+306.113 433.859 m 306.113 437.984 l 313.613 437.984 l 313.613 429.734 l
+ 306.113 429.734 l h
+365.363 433.859 m 365.363 437.984 l 373.613 437.984 l 373.613 446.234 l
+ 381.863 446.234 l 381.863 454.484 l 390.113 454.484 l 390.113 437.984 l
+ 381.863 437.984 l 381.863 429.734 l 365.363 429.734 l h
+153.113 442.109 m 153.113 446.234 l 161.363 446.234 l 161.363 437.984 l
+ 153.113 437.984 l h
+272.191 455.046 m 271.988 472.109 l 267.676 472.335 l 263.363 472.558 l
+ 263.363 479.909 l 267.676 480.136 l 271.988 480.359 l 271.988 488.609 l
+ 267.676 488.835 l 263.363 489.058 l 263.363 480.734 l 254.363 480.734 l
+ 254.363 472.484 l 246.113 472.484 l 246.113 463.484 l 254.363 463.484 l
+ 254.363 455.234 l 237.863 455.234 l 237.863 479.984 l 246.863 479.984 l
+ 246.863 488.984 l 255.188 488.984 l 254.965 493.296 l 254.738 497.609 l
+ 246.301 497.819 l 237.863 498.034 l 237.863 505.484 l 246.863 505.484 l
+ 246.863 522.734 l 263.363 522.734 l 263.363 513.734 l 279.863 513.734 l
+ 279.863 506.234 l 263.363 506.234 l 263.363 497.234 l 280.613 497.234 l
+ 280.613 505.484 l 288.113 505.484 l 288.113 488.984 l 279.863 488.984 l
+ 279.863 479.984 l 288.863 479.984 l 288.863 488.984 l 297.113 488.984 l
+ 297.113 497.234 l 306.113 497.234 l 306.113 505.484 l 313.613 505.484 l
+ 313.613 480.734 l 297.113 480.734 l 297.113 463.484 l 288.863 463.484 l
+ 288.863 472.484 l 279.863 472.484 l 279.863 463.484 l 288.113 463.484 l
+ 288.113 455.234 l 279.863 455.234 l 279.863 437.984 l 272.395 437.984 l
+ h
+288.863 442.109 m 288.863 446.234 l 297.113 446.234 l 297.113 454.484 l
+ 305.363 454.484 l 305.363 437.984 l 288.863 437.984 l h
+331.613 446.609 m 331.613 455.234 l 306.113 455.234 l 306.113 471.734 l
+ 313.613 471.734 l 313.613 463.484 l 322.613 463.484 l 322.613 471.734 l
+ 330.863 471.734 l 330.863 463.484 l 339.863 463.484 l 339.863 471.734 l
+ 348.113 471.734 l 348.113 463.484 l 356.363 463.484 l 356.363 446.984 l
+ 339.113 446.984 l 339.113 437.984 l 331.613 437.984 l h
+357.113 442.109 m 357.113 446.234 l 364.613 446.234 l 364.613 437.984 l
+ 357.113 437.984 l h
+204.113 450.734 m 204.113 454.484 l 212.363 454.484 l 212.363 446.984 l
+ 204.113 446.984 l h
+255.113 450.734 m 255.113 454.484 l 263.363 454.484 l 263.363 446.984 l
+ 255.113 446.984 l h
+365.363 455.234 m 365.363 463.484 l 372.863 463.484 l 372.863 446.984 l
+ 365.363 446.984 l h
+441.863 450.734 m 441.863 454.484 l 466.613 454.484 l 466.613 446.984 l
+ 441.863 446.984 l h
+153.113 493.109 m 153.113 522.734 l 212.363 522.734 l 212.363 463.484 l
+ 153.113 463.484 l h
+204.113 493.109 m 204.113 514.484 l 161.363 514.484 l 161.363 471.734 l
+ 204.113 471.734 l h
+170.363 493.109 m 170.363 505.484 l 195.113 505.484 l 195.113 480.734 l
+ 170.363 480.734 l h
+255.113 467.609 m 255.113 471.734 l 263.363 471.734 l 263.363 463.484 l
+ 255.113 463.484 l h
+357.113 476.234 m 357.113 488.984 l 348.113 488.984 l 348.113 480.734 l
+ 339.863 480.734 l 339.863 488.984 l 348.113 488.984 l 348.113 498.058 l
+ 343.801 497.831 l 339.488 497.609 l 339.266 493.296 l 339.039 488.984 l
+ 322.613 488.984 l 322.613 497.234 l 331.613 497.234 l 331.613 505.484 l
+ 365.363 505.484 l 365.363 513.734 l 373.613 513.734 l 373.613 522.734 l
+ 381.863 522.734 l 381.863 513.734 l 390.113 513.734 l 390.113 506.28 l
+373.238 505.859 l 373.016 501.546 l 372.789 497.234 l 390.863 497.234 l
+390.863 505.484 l 398.363 505.484 l 398.363 480.734 l 390.863 480.734 l
+390.863 488.984 l 381.863 488.984 l 381.863 463.484 l 373.613 463.484 l
+373.613 488.984 l 364.613 488.984 l 364.613 463.484 l 357.113 463.484 l
+h
+390.863 467.609 m 390.863 471.734 l 398.363 471.734 l 398.363 463.484 l
+ 390.863 463.484 l h
+407.363 493.109 m 407.363 522.734 l 466.613 522.734 l 466.613 463.484 l
+ 407.363 463.484 l h
+458.363 493.109 m 458.363 514.484 l 415.613 514.484 l 415.613 471.734 l
+ 458.363 471.734 l h
+424.613 493.109 m 424.613 505.484 l 449.363 505.484 l 449.363 480.734 l
+ 424.613 480.734 l h
+229.613 488.984 m 229.613 497.234 l 237.863 497.234 l 237.863 480.734 l
+ 229.613 480.734 l h
+221.363 510.359 m 221.363 522.734 l 228.863 522.734 l 228.863 497.984 l
+ 221.363 497.984 l h
+297.113 509.984 m 297.113 513.734 l 305.363 513.734 l 305.363 506.234 l
+ 297.113 506.234 l h
+280.613 518.609 m 280.613 522.734 l 288.113 522.734 l 288.113 514.484 l
+ 280.613 514.484 l h
+314.363 518.609 m 314.363 522.734 l 330.863 522.734 l 330.863 514.484 l
+ 314.363 514.484 l h
+348.113 518.609 m 348.113 522.734 l 364.613 522.734 l 364.613 514.484 l
+ 348.113 514.484 l h
+348.113 518.609 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
+%</wct10>
+% \end{macrocode}
+% \begin{macrocode}
+%<*zfb>
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:18:01 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 124 234 449 560
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 124 234 449 560
+%%EndPageSetup
+q 124 234 325 326 rectclip q
+0 g
+124.363 269.89 m 124.363 304.015 l 192.613 304.015 l 192.613 235.765 l
+124.363 235.765 l h
+183.613 270.265 m 183.613 295.015 l 134.113 295.015 l 134.113 245.515 l
+ 183.613 245.515 l h
+144.613 270.265 m 144.613 284.515 l 173.113 284.515 l 173.113 256.015 l
+ 144.613 256.015 l h
+212.863 240.64 m 212.863 245.515 l 222.613 245.515 l 222.613 235.765 l
+212.863 235.765 l h
+232.363 245.956 m 232.363 256.144 l 227.488 255.894 l 222.609 255.64 l
+222.609 260.308 l 222.613 264.972 l 232.551 265.183 l 242.488 265.39 l 242.934
+ 274.765 l 261.613 274.765 l 261.613 265.765 l 251.863 265.765 l 251.863
+ 255.265 l 262.363 255.265 l 262.363 265.015 l 272.113 265.015 l 272.113
+ 275.515 l 262.363 275.515 l 262.363 295.015 l 252.613 295.015 l 252.613
+ 314.515 l 242.113 314.515 l 242.113 304.765 l 232.363 304.765 l 232.363
+ 294.265 l 251.863 294.265 l 251.863 285.265 l 242.113 285.265 l 242.113
+ 275.515 l 222.613 275.515 l 222.613 285.265 l 212.863 285.265 l 212.863
+ 304.015 l 222.613 304.015 l 222.613 313.765 l 232.363 313.765 l 232.363
+ 323.448 l 237.426 323.667 l 242.488 323.89 l 242.934 333.194 l 252.238
+333.64 l 252.461 338.702 l 252.68 343.765 l 242.113 343.765 l 242.113 334.015
+ l 232.363 334.015 l 232.363 343.765 l 222.613 343.765 l 222.613 353.515
+ l 212.863 353.515 l 212.863 364.015 l 203.113 364.015 l 203.113 373.015
+ l 222.613 373.015 l 222.613 402.265 l 257.863 402.265 l 257.863 383.515
+ l 251.863 383.515 l 251.863 364.015 l 242.895 364.015 l 242.488 392.89
+l 232.363 393.335 l 232.363 363.265 l 242.113 363.265 l 242.113 353.515
+l 252.613 353.515 l 252.613 363.265 l 262.363 363.265 l 262.363 369.265
+l 281.113 369.265 l 281.113 364.085 l 271.738 363.64 l 271.293 353.515 l
+ 281.863 353.515 l 281.863 363.265 l 300.613 363.265 l 300.613 353.515 l
+ 290.863 353.515 l 290.863 334.015 l 281.863 334.015 l 281.863 343.765 l
+ 261.613 343.765 l 261.613 323.515 l 271.363 323.515 l 271.363 314.515 l
+ 261.613 314.515 l 261.613 304.015 l 271.363 304.015 l 271.363 284.515 l
+ 281.113 284.515 l 281.113 274.765 l 291.613 274.765 l 291.613 284.515 l
+ 320.113 284.515 l 320.113 275.562 l 300.988 275.14 l 300.777 265.577 l
+300.57 256.015 l 291.613 256.015 l 291.613 265.765 l 281.113 265.765 l 281.113
+ 256.085 l 271.738 255.64 l 271.293 245.515 l 242.113 245.515 l 242.113
+235.765 l 232.363 235.765 l h
+311.113 245.515 m 311.113 255.265 l 320.863 255.265 l 320.863 265.015 l
+ 330.613 265.015 l 330.613 255.265 l 340.363 255.265 l 340.363 265.015 l
+ 389.113 265.015 l 389.113 256.085 l 379.738 255.64 l 379.293 245.515 l
+370.434 245.515 l 369.988 255.64 l 360.051 255.859 l 350.113 256.081 l 350.113
+ 245.515 l 369.613 245.515 l 369.613 235.765 l 330.613 235.765 l 330.613
+ 245.515 l 319.984 245.515 l 320.238 240.64 l 320.488 235.761 l 315.801
+235.765 l 311.113 235.765 l h
+389.863 245.515 m 389.863 255.265 l 409.363 255.265 l 409.363 265.765 l
+ 389.863 265.765 l 389.863 275.515 l 340.363 275.515 l 340.363 265.765 l
+ 330.613 265.765 l 330.613 284.515 l 360.613 284.515 l 360.613 353.515 l
+ 350.863 353.515 l 350.863 363.265 l 370.363 363.265 l 370.363 382.765 l
+ 380.113 382.765 l 380.113 402.265 l 389.863 402.265 l 389.863 431.515 l
+ 398.863 431.515 l 398.863 393.265 l 389.113 393.265 l 389.113 382.765 l
+ 419.113 382.765 l 419.113 402.265 l 438.613 402.265 l 438.613 393.335 l
+ 428.488 392.89 l 428.488 383.14 l 433.551 382.917 l 438.613 382.698 l 438.613
+ 364.015 l 428.863 364.015 l 428.863 373.765 l 398.863 373.765 l 398.863
+ 363.265 l 408.613 363.265 l 408.613 353.515 l 418.363 353.515 l 418.363
+ 343.765 l 408.613 343.765 l 408.613 334.015 l 399.613 334.015 l 399.613
+ 353.515 l 369.613 353.515 l 369.613 343.765 l 379.363 343.765 l 379.363
+ 334.015 l 369.613 334.015 l 369.613 323.448 l 374.676 323.667 l 379.738
+ 323.89 l 380.184 333.265 l 389.043 333.265 l 389.488 323.89 l 418.363 323.484
+ l 418.363 314.515 l 408.613 314.515 l 408.613 274.765 l 418.363 274.765
+ l 418.363 265.015 l 428.113 265.015 l 428.113 245.515 l 408.613 245.515
+ l 408.613 235.765 l 389.863 235.765 l h
+399.613 299.515 m 399.613 314.515 l 369.613 314.515 l 369.613 284.515 l
+ 399.613 284.515 l h
+380.113 299.515 m 380.113 304.015 l 389.113 304.015 l 389.113 295.015 l
+ 380.113 295.015 l h
+389.863 368.515 m 389.863 373.765 l 379.363 373.765 l 379.363 363.265 l
+ 389.863 363.265 l h
+281.863 250.39 m 281.863 255.265 l 290.863 255.265 l 290.863 245.515 l
+281.863 245.515 l h
+438.613 250.39 m 438.613 255.265 l 448.363 255.265 l 448.363 245.515 l
+438.613 245.515 l h
+203.859 255.89 m 203.398 256.046 203.113 261.593 203.113 270.327 c 203.113
+ 284.515 l 212.113 284.515 l 212.113 256.159 l 208.359 255.901 l 206.293
+ 255.757 204.27 255.753 203.859 255.894 c h
+428.863 275.515 m 428.863 285.265 l 419.113 285.265 l 419.113 304.015 l
+ 428.043 304.015 l 428.488 294.64 l 433.551 294.417 l 438.613 294.198 l
+438.613 284.515 l 448.363 284.515 l 448.363 275.515 l 438.613 275.515 l
+438.613 265.765 l 428.863 265.765 l h
+281.863 299.515 m 281.863 313.765 l 290.863 313.765 l 290.863 285.265 l
+ 281.863 285.265 l h
+301.363 299.515 m 301.363 304.015 l 310.363 304.015 l 310.363 295.015 l
+ 301.363 295.015 l h
+320.863 304.39 m 320.863 313.765 l 330.613 313.765 l 330.613 295.015 l
+320.863 295.015 l h
+340.363 299.515 m 340.363 304.015 l 350.113 304.015 l 350.113 295.015 l
+ 340.363 295.015 l h
+438.613 299.515 m 438.613 304.015 l 448.363 304.015 l 448.363 295.015 l
+ 438.613 295.015 l h
+203.113 309.265 m 203.113 313.765 l 212.113 313.765 l 212.113 304.765 l
+ 203.113 304.765 l h
+124.363 348.605 m 124.363 382.698 l 129.426 382.917 l 134.488 383.14 l
+134.934 392.444 l 144.238 392.89 l 144.684 402.265 l 154.363 402.265 l 154.363
+ 412.765 l 144.613 412.765 l 144.613 421.694 l 153.988 422.14 l 154.199
+431.702 l 154.406 441.265 l 173.113 441.265 l 173.113 422.515 l 163.363
+422.515 l 163.363 402.265 l 203.113 402.265 l 203.113 412.765 l 173.863
+412.765 l 173.863 421.765 l 203.113 421.765 l 203.113 432.265 l 183.613
+432.265 l 183.613 441.194 l 192.988 441.64 l 193.211 446.702 l 193.43 451.765
+ l 183.613 451.765 l 183.613 461.515 l 193.363 461.515 l 193.363 471.265
+ l 202.363 471.265 l 202.363 461.515 l 212.863 461.515 l 212.863 471.265
+ l 232.363 471.265 l 232.363 490.765 l 242.113 490.765 l 242.113 481.015
+ l 251.863 481.015 l 251.863 472.015 l 242.113 472.015 l 242.113 461.515
+ l 252.613 461.515 l 252.613 471.265 l 261.613 471.265 l 261.613 461.515
+ l 271.363 461.515 l 271.363 451.765 l 261.613 451.765 l 261.613 442.015
+ l 252.613 442.015 l 252.613 451.765 l 202.293 451.765 l 202.738 441.64
+l 212.676 441.433 l 222.613 441.222 l 222.613 432.265 l 212.07 432.265 l
+ 212.277 422.327 l 212.488 412.39 l 217.551 412.171 l 222.613 411.948 l
+222.613 403.085 l 212.488 402.64 l 212.043 393.335 l 202.738 392.89 l 202.516
+ 388.202 l 202.289 383.515 l 193.363 383.515 l 193.363 393.265 l 173.113
+ 393.265 l 173.113 383.515 l 164.113 383.515 l 164.113 393.265 l 153.613
+ 393.265 l 153.613 383.515 l 143.863 383.515 l 143.863 364.015 l 134.113
+ 364.015 l 134.113 353.515 l 143.863 353.515 l 143.863 343.765 l 134.113
+ 343.765 l 134.113 314.515 l 124.363 314.515 l h
+164.113 319.015 m 164.113 323.515 l 173.113 323.515 l 173.113 314.515 l
+ 164.113 314.515 l h
+183.613 319.015 m 183.613 323.515 l 202.363 323.515 l 202.363 314.515 l
+ 183.613 314.515 l h
+212.863 319.015 m 212.863 323.515 l 222.613 323.515 l 222.613 314.515 l
+ 212.863 314.515 l h
+301.363 319.015 m 301.363 323.515 l 311.113 323.515 l 311.113 333.702 l
+ 320.863 333.109 l 320.863 353.515 l 311.18 353.515 l 310.961 358.577 l
+310.738 363.64 l 306.051 363.862 l 301.363 364.089 l 301.363 369.265 l 305.805
+ 369.265 l 309.449 369.265 310.648 369.601 312.477 371.14 c 314.547 372.882
+ 315.27 373.015 322.66 373.015 c 330.613 373.015 l 330.613 353.515 l 350.113
+ 353.515 l 350.113 334.015 l 340.363 334.015 l 340.363 343.765 l 330.613
+ 343.765 l 330.613 324.265 l 320.113 324.265 l 320.113 314.515 l 301.363
+ 314.515 l h
+330.613 319.015 m 330.613 323.515 l 340.363 323.515 l 340.363 314.515 l
+ 330.613 314.515 l h
+428.863 319.39 m 428.863 324.265 l 419.113 324.265 l 419.113 333.702 l
+428.863 333.109 l 428.863 343.765 l 448.363 343.765 l 448.363 334.015 l
+438.613 334.015 l 438.613 323.515 l 448.363 323.515 l 448.363 314.515 l
+428.863 314.515 l h
+144.613 328.952 m 144.609 333.64 l 153.988 333.409 l 163.363 333.179 l
+163.363 324.265 l 144.613 324.265 l 144.609 328.952 l h
+173.863 328.765 m 173.863 333.265 l 182.863 333.265 l 182.863 324.265 l
+ 173.863 324.265 l h
+222.613 328.765 m 222.613 333.265 l 232.363 333.265 l 232.363 324.265 l
+ 222.613 324.265 l h
+272.113 328.765 m 272.113 333.265 l 281.113 333.265 l 281.113 324.265 l
+ 272.113 324.265 l h
+291.613 328.765 m 291.613 333.265 l 300.613 333.265 l 300.613 324.265 l
+ 291.613 324.265 l h
+164.113 353.515 m 164.113 373.015 l 173.863 373.015 l 173.863 382.765 l
+ 192.613 382.765 l 192.613 373.765 l 182.863 373.765 l 182.863 363.265 l
+ 202.363 363.265 l 202.363 353.515 l 182.863 353.515 l 182.863 343.765 l
+ 173.113 343.765 l 173.113 334.015 l 164.113 334.015 l h
+183.613 338.89 m 183.613 343.765 l 192.613 343.765 l 192.613 334.015 l
+183.613 334.015 l h
+212.863 338.925 m 212.863 343.839 l 217.551 343.612 l 222.238 343.39 l
+222.684 334.015 l 212.863 334.015 l h
+203.113 348.64 m 203.113 353.515 l 212.113 353.515 l 212.113 343.765 l
+203.113 343.765 l h
+301.363 348.64 m 301.363 353.515 l 310.363 353.515 l 310.363 343.765 l
+301.363 343.765 l h
+438.613 358.39 m 438.613 363.265 l 448.363 363.265 l 448.363 353.515 l
+438.613 353.515 l h
+340.363 368.89 m 340.363 373.765 l 330.613 373.765 l 330.613 392.515 l
+340.363 392.515 l 340.363 382.765 l 359.863 382.765 l 359.863 373.765 l
+350.113 373.765 l 350.113 364.015 l 340.363 364.015 l h
+314.863 392.89 m 314.863 402.265 l 320.113 402.265 l 320.113 383.515 l
+314.863 383.515 l h
+438.613 388.015 m 438.613 392.515 l 448.363 392.515 l 448.363 383.515 l
+ 438.613 383.515 l h
+124.363 407.515 m 124.363 421.765 l 134.113 421.765 l 134.113 393.265 l
+ 124.363 393.265 l h
+340.363 403.015 m 340.363 412.765 l 330.613 412.765 l 330.613 421.765 l
+ 340.363 421.765 l 340.363 431.515 l 350.113 431.515 l 350.113 402.265 l
+ 359.863 402.265 l 359.863 393.265 l 340.363 393.265 l h
+320.863 407.515 m 320.863 412.015 l 330.613 412.015 l 330.613 403.015 l
+ 320.863 403.015 l h
+360.613 407.515 m 360.613 412.015 l 379.363 412.015 l 379.363 403.015 l
+ 360.613 403.015 l h
+409.363 407.515 m 409.363 412.015 l 418.363 412.015 l 418.363 403.015 l
+ 409.363 403.015 l h
+438.613 407.515 m 438.613 412.015 l 448.363 412.015 l 448.363 403.015 l
+ 438.613 403.015 l h
+232.535 427.202 m 232.723 440.417 232.848 441.632 234.051 441.546 c 234.773
+ 441.495 239.074 441.409 243.613 441.359 c 251.863 441.265 l 251.863 432.265
+ l 242.113 432.265 l 242.113 421.765 l 251.863 421.765 l 251.863 412.765
+ l 232.332 412.765 l h
+314.863 417.265 m 314.863 421.765 l 320.113 421.765 l 320.113 412.765 l
+ 314.863 412.765 l h
+252.613 426.98 m 252.613 431.444 l 261.988 431.89 l 262.434 441.234 l 291.238
+ 441.64 l 291.461 446.702 l 291.68 451.765 l 281.863 451.765 l 281.863 461.515
+ l 310.363 461.515 l 310.363 426.265 l 291.613 426.265 l 291.613 432.265
+ l 281.113 432.265 l 281.113 426.265 l 271.797 426.265 l 262.949 426.265
+ 262.363 426.171 260.25 424.39 c 258.773 423.148 257.105 422.515 255.316
+ 422.515 c 252.613 422.515 l h
+320.863 431.89 m 320.863 441.265 l 330.613 441.265 l 330.613 461.515 l
+320.863 461.515 l 320.863 471.265 l 340.363 471.265 l 340.363 451.765 l
+350.113 451.765 l 350.113 442.015 l 340.363 442.015 l 340.363 432.265 l
+330.613 432.265 l 330.613 422.515 l 320.863 422.515 l h
+360.613 432.077 m 360.609 441.64 l 369.988 441.409 l 379.363 441.179 l
+379.363 432.265 l 369.613 432.265 l 369.613 422.515 l 360.613 422.515 l
+360.609 432.077 l h
+428.863 432.265 m 428.863 442.015 l 419.113 442.015 l 419.113 451.765 l
+ 409.363 451.765 l 409.363 471.265 l 418.363 471.265 l 418.363 461.515 l
+ 428.113 461.515 l 428.113 451.765 l 448.363 451.765 l 448.363 422.515 l
+ 428.863 422.515 l h
+134.863 437.14 m 134.863 442.015 l 124.363 442.015 l 124.363 451.765 l
+134.945 451.765 l 134.719 461.519 l 134.488 471.269 l 139.176 471.265 l
+143.863 471.265 l 143.863 461.515 l 154.43 461.515 l 154.211 466.577 l 153.988
+ 471.64 l 150.238 471.753 l 148.176 471.816 146.066 471.901 145.551 471.941
+ c 144.914 471.991 144.613 473.456 144.613 476.515 c 144.613 481.015 l 173.113
+ 481.015 l 173.113 451.765 l 143.863 451.765 l 143.863 432.265 l 134.863
+ 432.265 l h
+380.113 446.89 m 380.113 451.765 l 389.113 451.765 l 389.113 442.015 l
+380.113 442.015 l h
+350.695 461.702 m 350.488 471.64 l 340.363 472.085 l 340.363 480.948 l
+345.426 481.167 l 350.488 481.39 l 350.934 490.765 l 359.863 490.765 l 359.863
+ 481.015 l 398.863 481.015 l 398.863 472.046 l 369.988 471.64 l 369.777
+461.702 l 369.57 451.765 l 350.906 451.765 l h
+183.613 476.515 m 183.613 481.015 l 192.613 481.015 l 192.613 472.015 l
+ 183.613 472.015 l h
+203.113 491.14 m 203.113 510.265 l 212.863 510.265 l 212.863 520.015 l
+222.613 520.015 l 222.613 501.335 l 212.488 500.89 l 212.082 472.015 l 203.113
+ 472.015 l h
+262.363 476.515 m 262.363 481.015 l 271.363 481.015 l 271.363 472.015 l
+ 262.363 472.015 l h
+301.363 486.265 m 301.363 500.515 l 310.363 500.515 l 310.363 490.765 l
+ 315.426 490.769 l 320.488 490.769 l 320.488 482.14 l 310.738 481.39 l 310.293
+ 472.015 l 301.363 472.015 l h
+419.113 476.515 m 419.113 481.015 l 448.363 481.015 l 448.363 472.015 l
+ 419.113 472.015 l h
+281.863 491.14 m 281.863 500.515 l 290.863 500.515 l 290.863 481.765 l
+281.863 481.765 l h
+330.613 486.265 m 330.613 490.765 l 340.363 490.765 l 340.363 481.765 l
+ 330.613 481.765 l h
+124.363 525.64 m 124.363 559.765 l 192.613 559.765 l 192.613 491.515 l
+124.363 491.515 l h
+183.613 525.265 m 183.613 550.015 l 134.113 550.015 l 134.113 500.515 l
+ 183.613 500.515 l h
+144.613 525.265 m 144.613 539.515 l 173.113 539.515 l 173.113 511.015 l
+ 144.613 511.015 l h
+222.613 496.015 m 222.613 500.515 l 232.363 500.515 l 232.363 491.515 l
+ 222.613 491.515 l h
+242.863 496.015 m 242.863 500.515 l 251.863 500.515 l 251.863 491.515 l
+ 242.863 491.515 l h
+262.363 496.015 m 262.363 500.515 l 271.363 500.515 l 271.363 491.515 l
+ 262.363 491.515 l h
+320.863 496.015 m 320.863 500.515 l 330.613 500.515 l 330.613 491.515 l
+ 320.863 491.515 l h
+340.363 496.015 m 340.363 500.515 l 350.113 500.515 l 350.113 491.515 l
+ 340.363 491.515 l h
+360.461 496.202 m 360.238 500.89 l 350.863 501.335 l 350.863 510.265 l
+369.613 510.265 l 369.613 491.515 l 360.684 491.515 l h
+380.113 525.64 m 380.113 559.765 l 448.363 559.765 l 448.363 491.515 l
+380.113 491.515 l h
+438.613 525.265 m 438.613 550.015 l 389.113 550.015 l 389.113 500.515 l
+ 438.613 500.515 l h
+399.613 525.265 m 399.613 539.515 l 428.051 539.515 l 428.488 511.015 l
+ 399.613 511.015 l h
+272.113 506.14 m 272.113 511.015 l 232.363 511.015 l 232.363 530.515 l
+203.113 530.515 l 203.113 559.765 l 207.801 559.765 l 212.488 559.769 l
+212.488 539.89 l 242.113 539.484 l 242.113 529.765 l 251.863 529.765 l 251.863
+ 520.015 l 272.113 520.015 l 272.113 529.765 l 281.863 529.765 l 281.863
+ 540.265 l 271.363 540.265 l 271.363 530.515 l 262.363 530.515 l 262.363
+ 540.265 l 252.613 540.265 l 252.613 549.265 l 255.051 549.335 l 262.617
+ 549.55 261.961 549.058 262.211 554.702 c 262.43 559.765 l 281.043 559.765
+ l 281.488 549.64 l 290.793 549.194 l 291.238 539.89 l 296.301 539.667 l
+ 301.363 539.448 l 301.363 549.265 l 310.293 549.265 l 310.738 539.89 l
+315.801 539.667 l 320.863 539.448 l 320.863 559.765 l 340.363 559.765 l
+340.363 550.015 l 330.613 550.015 l 330.613 539.515 l 340.363 539.515 l
+340.363 529.765 l 350.113 529.765 l 350.113 511.015 l 340.363 511.015 l
+340.363 520.765 l 330.613 520.765 l 330.613 511.015 l 320.863 511.015 l
+320.863 520.765 l 311.113 520.765 l 311.113 530.515 l 290.863 530.515 l
+290.863 520.765 l 281.113 520.765 l 281.113 501.265 l 272.113 501.265 l
+h
+291.613 515.515 m 291.613 520.015 l 310.363 520.015 l 310.363 511.015 l
+ 291.613 511.015 l h
+360.613 525.265 m 360.613 529.765 l 369.613 529.765 l 369.613 520.765 l
+ 360.613 520.765 l h
+350.863 550.015 m 350.863 559.765 l 369.613 559.765 l 369.613 540.265 l
+ 350.863 540.265 l h
+232.363 554.89 m 232.363 559.765 l 251.863 559.765 l 251.863 550.015 l
+232.363 550.015 l h
+232.363 554.89 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
+%</zfb>
+% \end{macrocode}
+% \begin{macrocode}
+%<*bthesistitle>
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 23:43:48 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 -1 422 55
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 422 55
+%%EndPageSetup
+q 0 -1 422 56 rectclip q
+0 g
+20.781 0.454 m 20.582 0.704 20.312 4.915 20.18 9.95 c 20.047 14.927 19.844
+ 19.544 19.723 20.208 c 19.512 21.403 19.488 21.415 17.988 21.192 c 17.156
+ 21.067 14.938 20.813 13.062 20.634 c 8.965 20.235 7.098 19.766 4.219 18.399
+ c 0.973 16.864 0.621 16.958 0.168 19.442 c -0.25 21.751 0.102 22.798 1.293
+ 22.798 c 1.676 22.798 2.816 23.032 3.828 23.317 c 5.516 23.79 6.543 24.063
+ 12.273 25.559 c 13.32 25.833 15.043 26.298 16.105 26.599 c 17.168 26.895
+ 18.309 27.141 18.641 27.141 c 19.082 27.141 19.242 27.466 19.242 28.388
+ c 19.242 29.161 19.551 29.989 20.055 30.567 c 20.871 31.505 l 22.859 30.806
+ l 23.953 30.423 25.258 29.72 25.754 29.243 c 26.66 28.376 l 32.27 28.821
+ l 35.352 29.067 38.203 29.302 38.602 29.349 c 40.082 29.509 40.516 29.274
+ 41.535 27.774 c 42.109 26.927 42.68 26.153 42.801 26.056 c 43.188 25.739
+ 43.527 22.552 43.281 21.571 c 43.098 20.833 42.824 20.626 42.02 20.626
+c 41.457 20.626 40.902 20.778 40.789 20.962 c 40.676 21.145 39.551 21.638
+ 38.293 22.056 c 36.312 22.716 35.297 22.806 30.789 22.72 c 25.574 22.618
+ l 25.324 20.626 l 25.188 19.532 25.043 14.727 25 9.95 c 24.961 5.177 24.859
+ 0.981 24.773 0.634 c 24.652 0.138 24.238 0.001 22.879 0.001 c 21.918 0.001
+ 20.977 0.204 20.781 0.454 c h
+202.465 0.454 m 202.309 0.7 202.234 4.911 202.301 9.809 c 202.375 15.247
+ 202.246 20.274 201.977 22.72 c 201.535 26.731 l 200.133 26.966 l 198.18
+ 27.298 196.074 26.872 194.555 25.845 c 193.848 25.364 193.043 24.97 192.766
+ 24.97 c 192.152 24.97 189.68 29.513 189.68 30.641 c 189.68 31.294 189.945
+ 31.493 191.039 31.681 c 191.785 31.806 192.965 32.059 193.66 32.239 c 194.359
+ 32.419 195.309 32.563 195.777 32.567 c 196.242 32.567 197.746 32.907 199.117
+ 33.325 c 201.609 34.083 l 201.707 41.919 l 201.805 49.759 l 203.684 49.864
+ l 204.992 49.942 206.055 49.751 207.18 49.239 c 209.047 48.388 209.301
+47.942 208.66 46.665 c 208.371 46.095 208.152 43.868 208.074 40.786 c 207.957
+ 35.825 l 209.273 35.825 l 209.996 35.825 211.422 36.095 212.445 36.427
+c 214.23 37.001 214.328 36.997 214.855 36.337 c 215.16 35.954 215.578 35.196
+ 215.789 34.649 c 215.996 34.102 216.293 33.653 216.449 33.653 c 216.832
+ 33.653 217.645 30.641 217.484 29.806 c 217.367 29.192 216.957 29.13 213.016
+ 29.114 c 210.633 29.102 208.41 28.97 208.082 28.817 c 207.363 28.481 206.992
+ 22.196 206.918 9.044 c 206.879 2.056 206.781 0.641 206.328 0.352 c 205.535
+ -0.144 202.801 -0.077 202.465 0.454 c h
+407.906 2.102 m 406.441 2.333 402.094 5.352 402.332 5.974 c 402.445 6.27
+ 402.707 6.513 402.914 6.513 c 403.426 6.513 410.059 13.184 410.059 13.7
+ c 410.059 13.927 410.184 14.114 410.332 14.114 c 410.895 14.122 413.797
+ 19.571 414.762 22.434 c 417.156 29.536 417.203 38.747 414.895 47.946 c
+414.594 49.141 414.215 50.649 414.047 51.294 c 413.758 52.427 413.781 52.462
+ 414.707 52.259 c 417.59 51.634 417.832 51.333 419.203 46.681 c 422.32 36.099
+ 422.586 26.45 420.016 17.052 c 419.426 14.895 416.766 9.188 415.988 8.407
+ c 415.711 8.134 415.488 7.778 415.488 7.618 c 415.488 7.462 414.449 6.247
+ 413.18 4.919 c 410.883 2.516 409.605 1.833 407.906 2.102 c h
+262.418 2.829 m 260.957 3.532 260.273 4.263 260.258 5.145 c 260.25 5.485
+ 260.02 6.302 259.746 6.954 c 257.246 12.884 256.172 26.763 257.664 33.872
+ c 258.633 38.485 259.824 41.72 261.766 45.02 c 263.887 48.626 268.145 52.833
+ 269.668 52.833 c 270.238 52.833 274.098 50.97 274.633 50.438 c 274.883
+50.188 275.41 49.884 275.809 49.755 c 276.207 49.63 276.531 49.407 276.531
+ 49.255 c 276.531 49.001 274.07 46.681 273.797 46.681 c 273.5 46.681 270.016
+ 42.997 270.016 42.684 c 270.016 42.493 269.887 42.341 269.73 42.341 c 269.445
+ 42.341 266.758 38.907 266.758 38.54 c 266.758 38.434 266.391 37.735 265.934
+ 36.993 c 264.969 35.411 263.863 32.599 262.914 29.313 c 262.355 27.368
+262.238 25.77 262.254 20.083 c 262.273 13.337 262.504 11.423 263.945 5.97
+ c 264.887 2.403 264.906 2.169 264.277 2.196 c 263.953 2.204 263.113 2.493
+ 262.418 2.829 c h
+386.898 2.415 m 378.605 3.438 377.863 3.704 377.195 5.88 c 375.809 10.376
+ 373.941 12.786 371.555 13.149 c 370.211 13.352 370.016 13.251 367.859 11.231
+ c 365.59 9.106 365.094 8.774 361.84 7.181 c 360.895 6.716 360.121 6.227
+ 360.121 6.095 c 360.121 5.661 357.707 4.341 356.914 4.341 c 354.457 4.341
+ 348.902 8.356 348.902 10.134 c 348.902 10.813 349.148 10.856 353.184 10.856
+ c 356.52 10.856 358 11.024 359.879 11.614 c 361.207 12.032 362.293 12.52
+ 362.293 12.7 c 362.293 12.88 362.457 13.028 362.66 13.028 c 363.078 13.028
+ 366.273 16.266 366.273 16.684 c 366.273 17.184 364.309 18.345 362.422 18.966
+ c 360.445 19.61 360.137 20.067 360.129 22.356 c 360.121 23.665 360.91 25.829
+ 361.527 26.212 c 361.746 26.345 362.91 25.876 364.117 25.169 c 365.324
+24.462 366.445 23.884 366.609 23.884 c 366.773 23.884 367.113 23.638 367.359
+ 23.341 c 367.605 23.044 368.086 22.798 368.426 22.798 c 369.125 22.798
+369.891 25.466 369.891 27.891 c 369.891 29.438 369.422 29.681 367.969 28.872
+ c 367.48 28.602 365.57 28.431 362.988 28.419 c 359.531 28.411 358.57 28.282
+ 357.477 27.696 c 356.164 26.985 356.152 26.985 355.625 27.696 c 355.055
+ 28.458 354.332 31.302 354.332 32.774 c 354.332 33.849 355.266 34.282 358.246
+ 34.587 c 362.355 35.009 368.797 36.509 370.098 37.349 c 370.312 37.485
+372.266 38.192 374.441 38.919 c 376.617 39.645 378.758 40.47 379.199 40.747
+ c 380.543 41.595 381.707 41.372 382.68 40.079 c 384.594 37.528 385.734
+33.751 384.637 33.587 c 384.391 33.548 383.02 33.509 381.59 33.493 c 378.305
+ 33.466 377.375 32.841 375.738 29.532 c 374.648 27.325 373.168 21.665 373.152
+ 19.653 c 373.148 18.552 378.91 12.809 380.75 12.087 c 381.047 11.97 381.781
+ 11.649 382.379 11.38 c 382.973 11.106 384.902 10.372 386.668 9.747 c 390.215
+ 8.489 392.648 7.013 393.762 5.446 c 394.797 3.997 394.684 3.372 393.324
+ 2.946 c 392.031 2.548 388.324 2.239 386.898 2.415 c h
+152.227 4.099 m 149.426 4.513 149.035 4.825 148.445 7.145 c 148.23 7.993
+ 147.895 8.684 147.699 8.684 c 147.504 8.684 147.344 8.931 147.344 9.227
+ c 147.344 9.528 147.098 9.77 146.801 9.77 c 146.5 9.77 146.258 9.931 146.258
+ 10.126 c 146.258 10.52 143.5 11.942 142.73 11.942 c 142.457 11.942 141.797
+ 11.481 141.262 10.923 c 138.781 8.333 136.094 6.876 133.781 6.876 c 132.195
+ 6.876 129.453 7.86 128.688 8.708 c 128.082 9.376 128.082 9.442 128.707
+10.134 c 129.066 10.532 129.656 10.856 130.016 10.856 c 131.078 10.856 135.316
+ 12.778 137.27 14.145 c 138.605 15.083 l 136.484 17.313 l 135.305 18.552
+ 134.051 19.54 133.66 19.54 c 132.48 19.54 131.969 20.563 132 22.849 c 132.035
+ 25.462 132.816 26.563 134.383 26.22 c 134.996 26.087 135.402 26.149 135.402
+ 26.376 c 135.402 26.993 142.492 29.04 144.098 28.888 c 145.492 28.755 145.5
+ 28.759 144.836 29.485 c 143.207 31.274 143 32.27 143 38.341 c 143 44.794
+ 142.957 44.888 140.816 43.102 c 139.562 42.056 l 139.582 38.852 l 139.59
+ 37.087 139.672 34.782 139.762 33.724 c 139.922 31.813 139.918 31.798 138.098
+ 30.087 c 135.477 27.626 131.059 26.356 131.059 28.067 c 131.059 28.333
+131.547 29.274 132.145 30.161 c 132.742 31.044 133.23 31.907 133.23 32.079
+ c 133.234 32.247 133.496 32.876 133.816 33.474 c 134.238 34.263 134.445
+ 35.942 134.574 39.626 c 134.691 42.876 134.926 44.962 135.227 45.442 c
+135.656 46.13 139.707 47.766 140.977 47.766 c 141.246 47.766 141.938 48.009
+ 142.508 48.309 c 143.953 49.059 146.387 48.985 148.055 48.134 c 149.832
+ 47.227 150.133 46.317 149.238 44.587 c 148.355 42.888 147.648 39.95 147.613
+ 37.852 c 147.582 35.696 148.406 34.516 150.328 33.966 c 152.465 33.356
+152.77 33.04 152.77 31.454 c 152.77 30.411 152.527 29.841 151.801 29.165
+ c 150.82 28.255 148.48 27.618 147.629 28.028 c 147.371 28.153 147.473 28.044
+ 147.855 27.786 c 149.988 26.349 150.328 25.423 149.152 24.247 c 148.754
+ 23.849 148.43 23.282 148.43 22.993 c 148.43 22.477 148.07 21.552 146.543
+ 18.102 c 145.828 16.485 l 146.91 15.571 l 147.504 15.067 148.383 14.329
+ 148.863 13.931 c 150.176 12.845 153.766 11.083 156.207 10.329 c 162.23
+8.47 164.34 7.106 163.805 5.415 c 163.562 4.653 163.234 4.54 159.645 3.985
+ c 156.93 3.567 155.723 3.587 152.227 4.099 c h
+142.797 24.309 m 142.523 25.177 141.594 25.141 139.391 24.181 c 137.582
+ 23.391 l 141.676 19.454 l 142.344 21.552 l 142.707 22.708 142.914 23.95
+ 142.797 24.309 c h
+315.25 4.927 m 312.305 6.091 309.629 8.333 309.27 9.942 c 308.648 12.696
+ 308.348 16.372 308.375 20.774 c 308.395 23.579 308.402 26.149 308.395 26.485
+ c 308.383 26.927 307.93 26.657 306.797 25.544 c 304.602 23.38 302.277 21.86
+ 300.727 21.575 c 299.773 21.399 299.355 21.11 299.219 20.528 c 299.113
+20.083 298.762 19.005 298.438 18.13 c 297.465 15.505 297.832 15.165 299.734
+ 16.923 c 301.922 18.938 302.586 18.934 302.586 16.919 c 302.586 14.095
+300.703 10.075 298.281 7.72 c 297.199 6.669 296.75 6.661 295.832 7.692 c
+ 294.453 9.227 293.852 12.157 294.121 15.993 c 294.41 20.114 294.184 21.352
+ 293.145 21.352 c 292.25 21.352 291.098 20.782 290.043 19.825 c 288.664
+18.571 287.23 19.645 286.145 22.735 c 285.496 24.583 286.012 25.618 287.711
+ 25.884 c 290.102 26.255 293.352 27.255 293.762 27.743 c 293.98 28.009 294.273
+ 28.227 294.41 28.227 c 294.547 28.227 295.02 28.606 295.457 29.067 c 295.895
+ 29.532 296.527 30.009 296.859 30.134 c 297.781 30.47 300.223 28.536 300.621
+ 27.149 c 300.957 25.985 l 302.855 28.532 l 303.902 29.934 304.758 31.239
+ 304.758 31.434 c 304.758 31.63 305 32.29 305.301 32.903 c 305.598 33.516
+ 306.086 34.52 306.387 35.13 c 306.684 35.743 306.93 36.528 306.93 36.868
+ c 306.93 37.212 307.07 37.645 307.242 37.833 c 307.414 38.024 307.973 39.403
+ 308.48 40.903 c 308.988 42.399 309.562 44.028 309.758 44.52 c 309.953 45.013
+ 310.395 46.474 310.734 47.766 c 311.078 49.063 311.625 50.813 311.949 51.657
+ c 312.52 53.153 312.582 53.192 314.184 53.196 c 315.09 53.196 316.027 53.001
+ 316.266 52.763 c 316.848 52.177 316.793 50.329 316.156 49.216 c 315.512
+ 48.091 315.449 44.372 316.066 43.724 c 316.312 43.458 316.762 42.774 317.059
+ 42.196 c 317.359 41.618 318.426 40.282 319.438 39.224 c 320.445 38.165
+321.992 36.438 322.871 35.388 c 325.047 32.786 327.559 30.399 328.117 30.399
+ c 328.371 30.399 328.633 30.27 328.699 30.11 c 328.766 29.954 329.719 29.364
+ 330.812 28.798 c 333.949 27.177 336.176 25.614 336.363 24.899 c 336.914
+ 22.786 335.586 22.224 330.949 22.61 c 325.246 23.087 323.25 23.989 323.223
+ 26.099 c 323.211 27.255 321.867 30.399 321.387 30.399 c 321.195 30.399
+321.043 30.641 321.043 30.942 c 321.043 31.239 320.879 31.485 320.68 31.485
+ c 320.48 31.485 320.02 31.77 319.656 32.118 c 319.293 32.466 318.602 33.083
+ 318.117 33.493 c 317.637 33.903 316.508 35.059 315.613 36.067 c 314.719
+ 37.075 313.648 38.075 313.234 38.29 c 312.551 38.645 312.383 38.477 311.355
+ 36.438 c 309.703 33.149 309.098 31.524 309.098 30.349 c 309.098 29.337
+309.145 29.309 310.508 29.528 c 311.625 29.708 312.062 29.606 312.633 29.036
+ c 313.273 28.395 313.312 28.106 312.992 26.263 c 312.797 25.13 312.723
+24.118 312.828 24.016 c 312.93 23.911 313.723 24.247 314.586 24.755 c 315.449
+ 25.266 316.488 25.833 316.895 26.013 c 317.301 26.192 317.852 26.602 318.113
+ 26.923 c 318.875 27.841 319.586 27.606 320.156 26.247 c 321.023 24.165
+320.57 21.712 319.312 21.712 c 319.102 21.712 318.875 21.591 318.809 21.442
+ c 318.648 21.079 315.371 18.458 315.082 18.458 c 314.953 18.458 314.355
+ 17.997 313.754 17.431 c 312.664 16.415 312.66 16.395 313.051 14.278 c 313.27
+ 13.102 313.68 11.915 313.961 11.63 c 314.789 10.802 317.961 10.665 319.562
+ 11.388 c 321.227 12.138 321.766 13.536 321.766 17.122 c 321.766 18.431
+321.93 19.602 322.129 19.724 c 322.82 20.153 323.934 19.493 324.164 18.524
+ c 324.293 17.989 324.52 17.388 324.672 17.188 c 325.281 16.384 326.793
+9.849 326.809 7.962 c 326.824 6.044 326.402 5.669 323.867 5.376 c 319.918
+ 4.919 315.816 4.704 315.25 4.927 c h
+121.473 6.602 m 120.414 9.708 120.145 12.118 120.258 17.368 c 120.383 22.977
+ l 118.77 22.856 l 117.723 22.774 116.785 22.423 116.117 21.86 c 115.547
+ 21.38 114.852 20.989 114.574 20.989 c 113.812 20.989 112.613 23.634 112.512
+ 25.524 c 112.426 27.153 112.453 27.2 113.789 27.669 c 114.539 27.931 115.84
+ 28.251 116.684 28.376 c 119.211 28.759 122.801 30.251 124.078 31.454 c
+125.223 32.532 126.121 32.388 127.402 30.927 c 128.809 29.325 128.879 27.759
+ 127.621 26.056 c 127.125 25.38 126.715 24.556 126.715 24.22 c 126.715 23.888
+ 126.496 22.981 126.227 22.212 c 125.562 20.298 125.199 17.368 125.625 17.368
+ c 125.812 17.368 126.469 17.86 127.078 18.454 c 128.398 19.743 129.973
+19.934 129.973 18.806 c 129.973 18.403 129.73 17.485 129.43 16.77 c 129.133
+ 16.056 128.887 15.208 128.887 14.884 c 128.883 14.559 128.641 13.829 128.344
+ 13.259 c 128.043 12.688 127.801 12.063 127.801 11.872 c 127.801 11.454
+124.668 7.247 123.875 6.602 c 123.57 6.356 122.941 6.153 122.473 6.153 c
+ 122.008 6.153 121.559 6.356 121.473 6.602 c h
+181.875 7.872 m 180.062 12.13 179.805 13.708 180.109 18.638 c 180.562 25.884
+ 180.512 26.438 179.473 25.903 c 178.559 25.434 177.449 24.755 176.965 24.364
+ c 175.574 23.251 174.926 23.434 173.891 25.224 c 173.34 26.177 172.785
+27.04 172.66 27.141 c 172.535 27.239 172.246 27.856 172.023 28.513 c 171.676
+ 29.528 171.715 29.798 172.289 30.372 c 172.656 30.743 173.668 31.153 174.535
+ 31.282 c 176.316 31.552 179.082 32.575 183.066 34.442 c 183.906 34.833
+184.887 35.063 185.242 34.95 c 185.996 34.712 188.086 31.653 188.43 30.282
+ c 188.625 29.513 188.434 29.122 187.406 28.149 c 186.711 27.497 185.949
+ 26.583 185.719 26.126 c 185.199 25.11 184.73 16.278 185.195 16.298 c 185.91
+ 16.325 187.492 18.048 189.113 20.559 c 190.293 22.388 191.008 23.165 191.426
+ 23.079 c 192.348 22.888 192.082 19.411 190.965 16.966 c 190.09 15.056 188.59
+ 12.298 188.234 11.942 c 187.844 11.552 186.426 9.427 186.426 9.231 c 186.426
+ 9.118 185.91 8.462 185.281 7.77 c 183.727 6.063 182.633 6.095 181.875 7.872
+ c h
+57.926 8.548 m 57.348 9.239 56.527 11.497 56.52 12.403 c 56.512 13.173
+57.469 13.575 60.133 13.915 c 62.109 14.169 63.715 14.563 68.691 16.024
+c 72.648 17.184 72.555 17.036 72.473 22.192 c 72.441 24.384 72.375 24.599
+ 71.895 24.118 c 71.594 23.817 71.352 23.489 71.352 23.384 c 71.352 23.024
+ 67.984 19.54 67.637 19.54 c 66.953 19.54 63.852 22.997 63.441 24.216 c
+63.102 25.216 63.125 25.606 63.551 26.259 c 64.004 26.95 64.391 27.063 66.266
+ 27.044 c 67.816 27.028 68.645 27.196 69.113 27.626 c 69.48 27.954 69.945
+ 28.227 70.145 28.227 c 70.348 28.227 70.789 28.528 71.125 28.899 c 71.664
+ 29.493 71.707 30.165 71.488 34.52 c 71.184 40.575 71.41 41.255 73.719 41.255
+ c 75.59 41.255 78.469 40.032 78.758 39.114 c 78.875 38.739 78.723 37.802
+ 78.41 37.028 c 77.949 35.876 77.867 34.169 77.945 27.493 c 78.043 19.36
+ l 78.926 19.458 l 79.414 19.513 79.855 19.602 79.91 19.657 c 80.43 20.177
+ 81.168 25.462 81.637 32.024 c 82.121 38.794 82.473 41.677 83.508 47.29
+c 83.766 48.669 84.703 49.302 86.113 49.036 c 88.926 48.509 89.969 47.001
+ 88.707 45.29 c 88.18 44.583 87.824 43.364 87.617 41.571 c 87.449 40.102
+ 87.145 37.763 86.938 36.368 c 86.73 34.974 86.566 32.778 86.566 31.481
+c 86.57 29.13 l 87.5 30.216 l 89.414 32.446 89.805 32.942 89.805 33.114
+c 89.805 33.212 90.051 33.579 90.352 33.927 c 90.652 34.274 91.355 35.114
+ 91.918 35.79 c 93.238 37.384 94.32 37.161 96.156 34.923 c 97.621 33.134
+ 97.68 31.735 96.301 31.298 c 95.895 31.165 93.906 29.446 91.887 27.47 c
+ 89.871 25.493 87.613 23.595 86.875 23.247 c 85.812 22.751 85.5 22.38 85.395
+ 21.481 c 85.316 20.856 85.316 20.165 85.391 19.942 c 85.551 19.462 93.125
+ 19.423 95.594 19.891 c 96.492 20.063 97.84 20.321 98.59 20.462 c 99.645
+ 20.665 100.113 20.579 100.66 20.087 c 102.062 18.817 103.727 14.122 103.496
+ 12.095 c 103.383 11.095 103.289 11.04 101.746 11.079 c 100.852 11.102 98.902
+ 11.548 97.418 12.075 c 94.828 12.989 94.406 13.028 87.285 13.016 c 82.078
+ 13.005 79.203 12.845 77.684 12.477 c 76.488 12.188 74.68 11.95 73.668 11.946
+ c 70.68 11.938 63.766 10.274 60.375 8.747 c 58.289 7.809 58.52 7.829 57.926
+ 8.548 c h
+11.016 28.677 m 10.027 30.2 10.016 30.266 10.125 35.462 c 10.184 38.349
+ 10.039 42.02 9.805 43.622 c 9.43 46.177 9.449 46.677 9.977 47.692 c 10.434
+ 48.583 10.805 48.845 11.559 48.825 c 13.102 48.782 15.043 47.958 15.441
+ 47.177 c 15.754 46.567 15.988 46.513 17.168 46.794 c 18.238 47.048 18.73
+ 46.985 19.465 46.505 c 20.871 45.583 20.414 44.153 17.934 41.712 c 16.324
+ 40.126 15.863 39.415 15.711 38.278 c 15.52 36.849 l 16.566 37.825 l 18.434
+ 39.563 20.707 40.962 21.301 40.735 c 21.746 40.563 21.824 40.177 21.656
+ 38.95 c 21.469 37.587 20.539 35.29 19.953 34.739 c 19.844 34.641 19.398
+ 34.091 18.957 33.516 c 16.648 30.509 13.129 27.149 12.281 27.141 c 12.133
+ 27.141 11.562 27.833 11.016 28.677 c h
+25.684 31.841 m 24.75 32.653 23.625 34.032 23.191 34.907 c 22.434 36.415
+ 22.41 36.766 22.676 41.681 c 22.832 44.532 22.977 48.329 23 50.118 c 23.023
+ 51.911 23.172 53.579 23.332 53.829 c 23.781 54.52 25.348 54.368 26.758
+53.497 c 28.023 52.712 l 27.809 49.903 l 27.59 47.091 l 28.754 47.481 l
+29.395 47.692 30.172 48.091 30.488 48.36 c 31.309 49.067 32.543 48.966 32.98
+ 48.153 c 33.574 47.04 33.41 44.423 32.695 43.606 c 31.887 42.681 29.879
+ 41.255 29.387 41.255 c 29.18 41.255 29.012 41.11 29.012 40.934 c 29.012
+ 40.759 28.523 40.415 27.926 40.169 c 26.965 39.77 26.84 39.544 26.844 38.224
+ c 26.852 36.138 27.227 35.72 29.117 35.681 c 31.188 35.634 31.945 36.306
+ 32.762 38.895 c 33.109 39.993 33.586 40.888 33.824 40.88 c 35.031 40.849
+ 36.609 38.337 36.609 36.45 c 36.609 35.759 36.859 34.489 37.164 33.63 c
+ 37.688 32.141 37.676 32.028 36.973 31.321 c 36.32 30.665 35.703 30.567
+31.809 30.474 c 27.383 30.368 l h
+296.914 34.356 m 294.777 35.325 294.484 36.071 294.785 39.774 c 295.031
+ 42.79 295.594 44.161 296.578 44.141 c 296.945 44.134 298.684 41.708 300.68
+ 38.423 c 301.555 36.985 301.719 35.466 301.125 34.352 c 300.637 33.446
+298.918 33.446 296.914 34.356 c h
+124.816 38.591 m 122.375 39.829 l 122.375 42.13 l 122.375 45.54 123.875
+ 48.489 125.613 48.489 c 126.07 48.489 126.535 48.13 126.781 47.587 c 127.008
+ 47.087 127.332 46.681 127.496 46.681 c 127.664 46.681 127.801 46.438 127.801
+ 46.138 c 127.801 45.841 127.934 45.595 128.098 45.595 c 128.418 45.595
+129.484 43.595 130.191 41.673 c 130.938 39.638 129.73 37.259 127.984 37.321
+ c 127.586 37.337 126.16 37.907 124.816 38.591 c h
+185.168 39.817 m 183 40.587 182.699 41.337 183.145 44.864 c 183.723 49.47
+ 185.5 51.028 186.973 48.22 c 187.363 47.474 187.773 46.782 187.879 46.681
+ c 189.934 44.794 191.742 41.169 191.312 39.813 c 191.113 39.184 190.789
+ 39.091 189.023 39.13 c 187.895 39.157 186.16 39.466 185.168 39.817 c h
+368.988 42.251 m 365.379 44.106 364.602 48.188 367.129 52.016 c 367.988
+ 53.321 369.418 53.618 369.754 52.563 c 370.152 51.298 371.145 49.028 371.375
+ 48.852 c 371.504 48.755 371.977 47.817 372.426 46.77 c 374.074 42.923 372.277
+ 40.559 368.988 42.251 c h
+368.988 42.251 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
+%</bthesistitle>
+% \end{macrocode}
+% \fi
+%
+% \Finale
+%
+\endinput
+% \iffalse
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End:
+% \fi
diff --git a/macros/xetex/latex/hithesis/hithesis.ins b/macros/xetex/latex/hithesis/hithesis.ins
new file mode 100644
index 0000000000..cdebcefd97
--- /dev/null
+++ b/macros/xetex/latex/hithesis/hithesis.ins
@@ -0,0 +1,130 @@
+%%
+%% Copyright (C) 2017- by Chu Yanshuo <yanshuoc@gmail.com>
+%%
+%% This file is part of the hithesis package project.
+%% ---------------------------------------------------
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3a
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3a or later is part of all distributions of LaTeX
+%% version 2004/10/01 or later.
+%%
+
+\input docstrip
+
+\askforoverwritefalse
+%\askonceonly
+\showprogress
+\keepsilent
+
+\usedir{tex/latex/hithesis}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2017-\the\year by Chu Yanshuo <yanshuoc@gmail.com>
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
+of this license or (at your option) any later version.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
+
+To produce the documentation run the original source files ending with `.dtx'
+through LaTeX.
+
+\endpreamble
+
+\declarepreamble\cfgpreamble
+
+This is a generated file.
+
+Copyright (C) 2017-\the\year by Chu Yanshuo <yanshuoc@gmail.com>
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
+of this license or (at your option) any later version.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
+
+This is the configuration file of the hithesis package with LaTeX2e.
+
+\endpreamble
+\declarepreamble\istpreamble
+
+This is a generated file.
+
+Copyright (C) 2017-\the\year by Chu Yanshuo <yanshuoc@gmail.com>
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
+of this license or (at your option) any later version.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
+
+This is the configuration file of the hithesis package with LaTeX2e.
+
+\endpreamble
+
+\generate{
+ \file{\jobname.cls}{\from{\jobname.dtx}{cls}}
+ \usepreamble\cfgpreamble
+ \file{\jobname.cfg}{\from{\jobname.dtx}{cfg}}
+ \usepreamble\istpreamble
+ \file{\jobname.ist}{\from{\jobname.dtx}{ist}}
+ \usepreamble\defaultpreamble\usepostamble\defaultpostamble
+ \file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
+
+\edef\epspreamble{\perCent!PS-Adobe-3.0 EPSF-3.0}
+\generate{\usepreamble\epspreamble
+ \usepostamble\empty
+ \file{figures/hitlogo.eps}{\from{\jobname.dtx}{hitlogo}}
+ \file{figures/bthesistitle.eps}{\from{\jobname.dtx}{bthesistitle}}
+ \file{wct1.eps}{\from{\jobname.dtx}{wct1}}
+ \file{wct5.eps}{\from{\jobname.dtx}{wct5}}
+ \file{wct10.eps}{\from{\jobname.dtx}{wct10}}
+ \file{zfb.eps}{\from{\jobname.dtx}{zfb}}}
+
+\ifToplevel{%
+ \Msg{***********************************************************}
+ \Msg{*}
+ \Msg{* To finish the installation you have to move the following}
+ \Msg{* files into a directory searched by TeX:}
+ \Msg{*}
+ \Msg{* The recommended directory is TEXMF/tex/latex/hithesis}
+ \Msg{*}
+ \Msg{* \space\space hithesis.cls}
+ \Msg{* \space\space hithesis.cfg}
+ \Msg{* \space\space hithesis.ist}
+ \Msg{* \space\space figures/hitlogo.eps}
+ \Msg{* \space\space figures/bthesistitle.eps}
+ \Msg{* \space\space wct1.eps}
+ \Msg{* \space\space wct5.eps}
+ \Msg{* \space\space wct10.eps}
+ \Msg{* \space\space zfb.eps}
+ \Msg{*}
+ \Msg{* To produce the documentation run the files ending with}
+ \Msg{* `.dtx' through LaTeX.}
+ \Msg{*}
+ \Msg{* Happy TeXing!}
+ \Msg{***********************************************************}}
+
+\endbatchfile
diff --git a/macros/xetex/latex/hithesis/hithesis.pdf b/macros/xetex/latex/hithesis/hithesis.pdf
new file mode 100644
index 0000000000..f9e8ebc4dc
--- /dev/null
+++ b/macros/xetex/latex/hithesis/hithesis.pdf
Binary files differ
diff --git a/macros/xetex/latex/hithesis/hithesis.sty b/macros/xetex/latex/hithesis/hithesis.sty
new file mode 100644
index 0000000000..d92ef07e6c
--- /dev/null
+++ b/macros/xetex/latex/hithesis/hithesis.sty
@@ -0,0 +1,328 @@
+\ProvidesPackage{hithesis}[2018/02/19 1.0.10 Harbin Institute of Technology
+Thesis Template Extension]
+% 此文件声明不在规范中要求的格式所使用的宏包。
+% (所以,格式基本上是自由发挥的。)
+
+% 根据窝工规范中对数字书写规范的规定(6):
+% 凡4位或4位以上的数都从个位起每3位数空半个数码(1/4汉字)。
+% 注意此处,除此任何空格都是错误的(包括\:\;\ 等)
+\RequirePackage{siunitx}
+\sisetup{group-minimum-digits=4, group-separator= \hspace{0.25em}}
+\sisetup{detect-weight,detect-mode,detect-family}
+
+% 处理数学公式中的黑斜体的宏包
+\RequirePackage{bm}
+% 不同于 \mathcal \mathfrak 之类的英文花体字体
+\RequirePackage{mathrsfs}
+% 支持彩色
+\RequirePackage{xcolor}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% set global color theme of thesis %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\definecolor{colorzero}{rgb}{0, 0, 0}
+\definecolor{colorone}{rgb}{1, 0, 0}
+\definecolor{colortwo}{rgb}{0, 0, 1}
+\definecolor{colorthree}{rgb}{0, 1, 0}
+% 图形和表格的控制旋转
+\RequirePackage{rotating}
+
+
+
+% 算法的宏包,注意宏包兼容性,先后顺序为float、hyperref、algorithm(2e),否则无法
+% 生成算法列表。我工算法混乱问题详见hithesis文档。各个实验室设置具体方法详见
+% hithesis文档或者示例中给出的地址。
+\RequirePackage[algoruled,linesnumbered,algochapter]{algorithm2e}
+\SetAlCapSty{}
+\newcommand{\foocaption}[1]{ \def\@algocf@pre@plainruled{\hrule height1.5pt depth0pt\kern\interspacetitleruled #1 \kern\interspacealgoruled\hrule height1pt depth0pt\kern\interspacetitleruled} }
+\def\@algocf@post@ruled{\kern\interspacealgoruled\hrule height1.5pt\relax}%
+
+\newcommand{\algoenname}{Algo.} %算法英文标题
+\newfloatlist[chapter]{algoen}{aen}{\listalgoenname}{\algoenname}
+\newfixedcaption{\algoencaption}{algoen}
+\renewcommand{\thealgoen}{\thechapter-\arabic{algocf}}
+\renewcommand{\@cftmakeaentitle}{\chapter*{\listalgoenname\@mkboth{\listalgoenname}{\listalgoenname}}
+}
+\renewcommand{\algorithmcfname}{算法}
+\setlength\AlCapSkip{1.2ex}
+\SetAlgoSkip{1pt}
+\renewcommand{\algocf@captiontext}[2]{\wuhao#1\algocf@typo~\AlCapFnt{}#2} % text of caption
+\expandafter\ifx\csname algocf@within\endcsname\relax% if \algocf@within doesn't exist
+\renewcommand\thealgocf{\@arabic\c@algocf} % and the way it is printed
+\else% else
+\renewcommand\thealgocf{\csname the\algocf@within\endcsname-\@arabic\c@algocf}
+\fi
+\renewcommand{\algocf@makecaption}[2]{%中英文双标题一定多于一行,因此去掉单行时的判断,并将\parbox中标题设置为居中
+ \addtolength{\hsize}{\algomargin}%
+ \sbox\@tempboxa{\algocf@captiontext{#1}{#2}}%
+ \hskip .5\algomargin%
+ \parbox[t]{\hsize}{\centering\algocf@captiontext{#1}{#2}}%
+ \addtolength{\hsize}{-\algomargin}%
+}
+\newcommand{\AlgoBiCaption}[2]{%直接取出自定义的中英文标题条目加入到真正的\caption 中
+ \caption[#1]{\protect\setlength{\baselineskip}{1.5em}#1 \protect \\ Algo.\thealgocf~#2} % \algoencaption{#2}
+ \addcontentsline{aen}{algoen}{\protect\numberline{\thealgoen}{#2}}
+}
+
+% 排版源码所使用的环境可以有两种。listings和minted
+\RequirePackage{listings}
+\lstset{
+% basicstyle=\small\ttfamily,
+columns=flexible,
+breaklines=true
+}
+
+% 或者使用minted 包。如果使用该包,需要在编译时加-shell-escape选项,且需要安装
+% pygmentatize 工具对代码进行高亮。
+% \RequirePackage{minted}
+%
+
+% 术语宏包,用来处理首次全写,之后缩写的问题
+\RequirePackage{glossaries}
+\setacronymstyle{short-long}
+\renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{#1}%
+}
+\makeglossaries
+% 添加术语举例
+
+\newacronym{tssbp}{树结构折筷过程}{树结构折筷过程(Tree-structured Stick-breaking process)}
+\def\gtssbp{\gls{tssbp}\sindex[china]{shu!树结构折筷过程}\sindex[english]{Tree-structured Stick-breaking process}}
+
+\newacronym[shortplural=SCNAs,longplural={体细胞拷贝数变异(Somatic copy number alternation,SCNA)}]{scna}{SCNA}{体细胞拷贝数变异(Somatic copy number alternation,SCNA)}
+\def\gscna{\gls{scna}\sindex[china]{ti!体细胞拷贝数变异}\sindex[english]{Somatic copy number alternation}\ignorespaces}
+\def\gscnas{\glspl{scna}\sindex[china]{ti!体细胞拷贝数变异}\sindex[english]{Somatic copy number alternation}\ignorespaces}
+
+% tikz做图宏宏包
+\usepackage{tikz}
+% 此处可以定义一些tikz全局样式
+% \tikzstyle{nodestyle}= [circle, fill=gray!60]
+% \tikzstyle{edgestyle}= [-latex]
+
+\tikzstyle{maternal}= [colorone]
+\tikzstyle{paternal}= [colortwo]
+\tikzstyle{variant}= [colorthree!80!colorzero]
+\tikzstyle{reference}= [colorzero]
+
+\tikzstyle{aallele}= [colorzero,rotate=90]
+\tikzstyle{ballele}= [colorthree!80!colorzero,rotate=90]
+
+\tikzstyle{refseg}= [colorzero,draw=colorzero, opacity=0.2]
+\tikzstyle{mseg}= [colorone,draw=colorone, opacity=0.2]
+\tikzstyle{pseg}= [colortwo,draw=colortwo, opacity=0.2]
+\tikzstyle{vseg}= [colorthree!80!colorzero,draw=colorthree!80!colorzero, opacity=0.6]
+
+\tikzstyle{bncell}= [draw=colorzero,opacity=0.2,line width=2pt, rounded corners=1pt]
+\tikzstyle{btcell}= [draw=colorone,opacity=0.6, line width=2pt, rounded corners=1pt]
+
+\tikzstyle{tncell}= [colorzero,opacity=0.9]
+\tikzstyle{ttcell}= [colorone,opacity=0.6]
+\tikzstyle{tscell}= [colorzero]
+\tikzstyle{refcell}= [colorzero]
+
+\tikzstyle{evolve}= [->,draw=colortwo,opacity=0.3,line width=1.5pt]
+\tikzstyle{fakeevolve}= [->,draw=colorzero,opacity=0.3,line width=1.5pt]
+
+\tikzstyle{refline}= [dashed,draw=colorzero,line width=1pt]
+\tikzstyle{tnline}= [dashed,draw=colorzero,opacity=0.3,line width=1pt]
+
+\newcommand{\gseg}[9]{%
+ \pgfmathsetmacro{\sstartx}{#1}
+ \pgfmathsetmacro{\slengx}{#2}
+ \pgfmathsetmacro{\sy}{#3}
+ \pgfmathsetmacro{\sdy}{#4}
+ \pgfmathsetmacro{\sdx}{#5}
+ \pgfmathsetmacro{\sdxh}{#7}
+ \pgfmathsetmacro{\sdxt}{#8}
+ \fill[#6](\sstartx,\sy)--(\sstartx-\sdx,\sy+\sdy)--
+ (\slengx+\sstartx+1.5-\sdx,\sy+\sdy)--(\slengx+\sstartx+1.5,\sy)--
+ (\slengx+\sstartx+1.5-\sdx,\sy-\sdy)--(\sstartx-\sdx,\sy-\sdy)--cycle;
+ \draw[#9] (\sstartx-\sdxh,\sy) -- (\sstartx, \sy);
+ \draw[#9] (\slengx+\sstartx+1.5, \sy) -- (\slengx+\sstartx+1.5+\sdxt,\sy);
+}
+\newcommand{\gsegr}[9]{%
+ \pgfmathsetmacro{\sstartx}{#1}
+ \pgfmathsetmacro{\slengx}{#2}
+ \pgfmathsetmacro{\sy}{#3}
+ \pgfmathsetmacro{\sdy}{#4}
+ \pgfmathsetmacro{\sdx}{#5}
+ \pgfmathsetmacro{\sdxh}{#7}
+ \pgfmathsetmacro{\sdxt}{#8}
+ \fill[#6](\sstartx-0.5,\sy)--(\sstartx+\sdx-0.5,\sy+\sdy)--
+ (\slengx+\sstartx+1.5+\sdx-0.5,\sy+\sdy)--(\slengx+\sstartx+1.5-0.5,\sy)--
+ (\slengx+\sstartx+1.5+\sdx-0.5,\sy-\sdy)--(\sstartx+\sdx-0.5,\sy-\sdy)--cycle;
+ \draw[#9] (\sstartx-\sdxh-0.5,\sy) -- (\sstartx-0.5, \sy);
+ \draw[#9] (\slengx+\sstartx+1.5-0.5, \sy) -- (\slengx+\sstartx+1.5+\sdxt-0.5,\sy);
+}
+
+\newcommand{\rcell}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node at (\x+10, \y) {Reference};
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[aallele]{C};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{refseg}{1.5}{1}{reference};
+}
+
+\newcommand{\ncell}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [paternal] at (\x+8, \y-0.5) {P};
+ \draw[bncell](\x-2,\y+0.5)--(\x+7,\y+0.5)--
+ (\x+7,\y-1)--(\x-2,\y-1)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[ballele]{T};
+ \draw (\x+2,\y-0.5) node[aallele]{C};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{A};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcellone}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [maternal] at (\x+8, \y-0.5) {M};
+ %\node [paternal] at (\x+8, \y-1) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+7,\y+0.5)--
+ (\x+7,\y-1.5)--(\x-2,\y-1.5)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[aallele]{A};
+ \draw (\x+2,\y-0.5) node[ballele]{G};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[aallele]{C};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-1) node[ballele]{T};
+ \draw (\x+2,\y-1) node[aallele]{C};
+ \draw (\x+3,\y-1) node[aallele]{T};
+ \draw (\x+4,\y-1) node[ballele]{A};
+ \gseg{\x}{4}{\y-1}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcellthree}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+12, \y) {M};
+ %\node [paternal] at (\x+12, \y-0.5) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+11,\y+0.5)--
+ (\x+11,\y-1)--(\x-2,\y-1)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \gseg{\x}{2}{\y}{0.2}{0.5}{mseg}{1.5}{0}{maternal};
+ \gseg{\x+4}{0}{\y}{0.2}{0.5}{vseg}{0.5}{0.5}{variant};
+ \draw (\x+7,\y) node[aallele]{T};
+ \draw (\x+8,\y) node[aallele]{C};
+ \gseg{\x+6}{2}{\y}{0.2}{0.5}{mseg}{0}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[ballele]{T};
+ \draw (\x+2,\y-0.5) node[aallele]{C};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{A};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcellfour}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+18, \y) {M};
+ %\node [paternal] at (\x+18, \y-0.5) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+15,\y+0.5)--
+ (\x+15,\y-1)--(\x-2,\y-1)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \gseg{\x}{2}{\y}{0.2}{0.5}{mseg}{1.5}{0}{maternal};
+ \gseg{\x+4}{0}{\y}{0.2}{0.5}{vseg}{0.5}{0.5}{variant};
+ \draw (\x+7,\y) node[aallele]{T};
+ \gseg{\x+6}{1}{\y}{0.2}{0.5}{mseg}{0}{0}{maternal};
+ \gseg{\x+9}{0}{\y}{0.2}{0.5}{vseg}{0.5}{0.5}{variant};
+ \draw (\x+12,\y) node[aallele]{C};
+ \gseg{\x+11}{1}{\y}{0.2}{0.5}{mseg}{0}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[ballele]{T};
+ \draw (\x+2,\y-0.5) node[aallele]{C};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{A};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcelltwo}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [maternal] at (\x+8, \y-0.5) {M};
+ %\node [paternal] at (\x+8, \y-1) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+7,\y+0.5)--
+ (\x+7,\y-1.5)--(\x-2,\y-1.5)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[aallele]{A};
+ \draw (\x+2,\y-0.5) node[ballele]{G};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{G};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-1) node[ballele]{T};
+ \draw (\x+2,\y-1) node[aallele]{C};
+ \draw (\x+3,\y-1) node[aallele]{T};
+ \draw (\x+4,\y-1) node[ballele]{A};
+ \gseg{\x}{4}{\y-1}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+
+\newcommand{\tcellfive}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [maternal] at (\x+8, \y-0.5) {M};
+ %\node [paternal] at (\x+8, \y-1) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+9.5,\y+0.5)--
+ (\x+9.5,\y-1.5)--(\x-2,\y-1.5)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[aallele]{A};
+ \draw (\x+2,\y-0.5) node[ballele]{G};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[aallele]{C};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-1) node[ballele]{T};
+ \gseg{\x}{1}{\y-1}{0.2}{0.5}{pseg}{1.5}{0}{paternal};
+ \draw (\x+4.5,\y-1) node[ballele]{A};
+ \draw (\x+5.5,\y-1) node[aallele]{T};
+ \draw (\x+6.5,\y-1) node[aallele]{C};
+ \gsegr{\x+3.5}{3}{\y-1}{0.2}{0.5}{pseg}{0.5}{1.5}{paternal};
+}
+
+% 最后定义一些常见的数学公式样式。格式和内容分离,是LaTeX的巨大优势
+% 例如如下定义:
+\newcommand{\theVector}[1]{\bm{#1}}
+\newcommand{\theMatrix}[1]{\mathbb{#1}}
+\newcommand{\theSet}[1]{\mathcal{#1}}
+\newcommand{\theDirected}[1]{{\overrightarrow{#1}}}
+\newcommand{\theUndirected}[1]{{\overline{#1}}}
+\newcommand{\theNetwork}[1]{\mathscr{#1}}
+\newcommand{\theNode}[1]{{\text{#1}}}
+\newcommand{\theDirectedEdge}[2]{{\overrightarrow{{#1}{#2}}}}
+\newcommand{\theUndirectedEdge}[2]{{\overline{{#1}{#2}}}}
+% 如果想要修改论文中所有的表示网络的数学符号的样式,不必在正文中处处修改,只需要
+% 在这里修改就可以了。
+
+% 定义命令
+\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
+\def\cmd@to@cs#1#2{\char\number`#2\relax}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\endinput
diff --git a/macros/xetex/latex/hithesis/latexmkrc b/macros/xetex/latex/hithesis/latexmkrc
new file mode 100644
index 0000000000..e8cd866595
--- /dev/null
+++ b/macros/xetex/latex/hithesis/latexmkrc
@@ -0,0 +1,40 @@
+# vim: set ft=perl:
+@default_files = ('main.tex');
+
+$pdf_mode = 1;
+$bibtex_use = 2;
+$recorder = 1;
+$preview_continuous_mode = 1;
+$clean_ext = "synctex.gz acn acr alg aux bbl bcf blg brf fdb_latexmk glg glo gls idx ilg ind lof log lot out run.xml toc pdf thm toe ist idx";
+$pdflatex = "xelatex -file-line-error --shell-escape -src-specials -synctex=1 -interaction=nonstopmode %O %S;cp %D %R.pdf";
+$pdf_update_method = 0;
+$makeindex = 'internal splitindex';
+sub splitindex {
+ # Use splitindex instead of makeindex.
+ # The splitindex programe starts from an .idx file, makes a set of
+ # other .idx files for separate indexes, and then runs makeindex to
+ # make corresponding .ind files.
+ # However, it is possible that the document uses the splitindex
+ # package, but in a way compatible with the standard methods
+ # compatible with makeindex, i.e., with a single index and with the
+ # use of the \printindex command.
+ # Then we need to invoke makeindex.
+ # In addition, latexmk assumes that makeindex or its replacement makes
+ # an .ind file from an .idx file, and latexmk gives an error if it
+ # doesn't exist, we need to make an .ind file.
+ # Both problems are solved by running makeindex and then splitindex.
+ # Note: errors are returned by makeindex and splitindex for things
+ # like a missing input file. No error is returned for lines in an
+ # input file that are in an incorrect format; they are simply
+ # ignored. So no problem is caused by lines in the .idx file
+ # that are generated by splitindex in a format incompatible with
+ # makeindex.
+ my $ret1 = system( "makeindex", $$Psource );
+ my $ret2 = system( "splitindex", $$Psource );
+ return $ret1 || $ret2;
+}
+@cus_dep_list = (@cus_dep_list, "idx ind 0 makenomenclature");
+sub makenomenclature {
+ system("splitindex $_[0] -- -s $_[0].ist"); }
+@generated_exts = (@generated_exts, 'glo');
+
diff --git a/macros/xetex/latex/hithesis/main.pdf b/macros/xetex/latex/hithesis/main.pdf
new file mode 100644
index 0000000000..1f0c0de474
--- /dev/null
+++ b/macros/xetex/latex/hithesis/main.pdf
Binary files differ
diff --git a/macros/xetex/latex/hithesis/main.tex b/macros/xetex/latex/hithesis/main.tex
new file mode 100644
index 0000000000..69549e2c36
--- /dev/null
+++ b/macros/xetex/latex/hithesis/main.tex
@@ -0,0 +1,138 @@
+% !Mode:: "TeX:UTF-8"
+\documentclass[newtxmath=true,newgeometry=two,capcenterlast=true,subcapcenterlast=true,openright=false,library=false,absupper=true,fontset=windowsnew,type=doctor]{hithesis}
+% 此处选项中不要有空格
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 必填选项
+% type=doctor|master|bachelor
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 选填选项(选填选项的缺省值已经尽可能满足了大多数需求,除非明确知道自己有什么
+% 需求)
+% glue=true|false
+% 含义:由于我工规范中要求字体行距在一个闭区间内,这个选项为true表示tex自
+% 动选择,为false表示区间内一个最接近版心要求行数的要求的默认值,缺省值为
+% false。
+% tocfour=true|false
+% 含义:是否添加第四级目录,只对本科文科个别要求四级目录有效,缺省值为
+% false
+% fontset=siyuan|windowsnew|windowsold
+% 含义:注意这个选项视为了解决特殊问题而设置,比如用有些发行版本的linux排
+% 版时可能(大多数发行版不会)会遇到的字体无法载入的问题,或者字体载入之
+% 后出现无法复制的问题以及想要解决排版如 biang biang 面的 biang 这类中易
+% 宋体无法识别的汉字的问题。没有特殊的需要不推荐使用这个选项。
+%
+% 如果是安装了 windows 字体的 linux 系统,可以填写windowsnew(win vista
+% 以后 的字体)或 windowsold(vista 以前)或者想用思源宋体并且是已经安装
+% 了思源宋体的任何系统,填写siyuan选项。缺省值为空,自动识别系统并匹配字体
+% 。模板版中给出的思源字体定义文件定义的思源字体的版本是Adobe版,其他字体
+% 是windowsnew字体。
+% tocblank=true|false
+% 含义:目录中第一章之前,是否加一行空白。缺省值为true。
+% chapterhang=true|false
+% 含义:目录的章标题是否悬挂居中,规范中要求章标题少于15字,所以这个选项
+% 有无没什么用,除了特殊需求。缺省值为true。
+% fulltime=true|false
+% 含义:是否全日制,缺省值为true。非全日制如同等学力等,要在cover中设置类
+% 型,封面中不同格式
+% subtitle=true|false
+% 含义:论文题目是否含有副标题,缺省值为false,如果有要在cover中设置副标
+% 题内容,封面中显示。
+% newgeometry=one|two
+% 含义:规范中的自相矛盾之处,版芯是否包含页眉页脚,旧方法是按照包含页眉
+% 页脚来设置。该选项是多选选项,如果没有这个选项,缺省值是旧模板的版芯设
+% 置方法,如果设置该选项one或two,分别对应两种页眉页码对应版芯线的相对位
+% 置。第一种是严格按照规范要求,难看。第二种微调了页眉页码位置,好一点。
+% debug=true|false
+% 含义:是否显示版芯框和行号,用来调试。默认否。
+% openright=true|false
+% 含义:博士论文是否要求章节首页必须在奇数页,此选项不在规范要求中,按个
+% 人喜好自行决定。 默认否。注意,窝工的默认情况是打印版博士论文要求右翻页
+% ,电子版要求非右翻页且无空白页。如果想DIY(或身不由己DIY)在什么地方右
+% 翻页,将这个选项设置为false,然后在目标位置添加`\cleardoublepage`命令即
+% 可。
+% library=true|false
+% 含义:是否为提交到图书馆的电子版。默认否。注意:如果设置成true,那么
+% openright选项将被强制转换为false。
+% capcenterlast=true|false
+% 含义:图题、表题最后一行是否居中对齐(我工规范要求居中,但不要求居中对
+% 齐),此选项不在规范要求中,按个人喜好自行决定。默认否。
+% subcapcenterlast=true|false
+% 含义:子图图题最后一行是否居中对齐(我工规范要求居中,但不要求居中对齐
+% ),此选项不在规范要求中,按个人喜好自行决定。默认否。
+% absupper=true|false
+% 含义:中文目录中的英文摘要在中文目录中的大小写样式歧义,在规范中要求首
+% 字母大写,在work样例中是全大写。该选项控制是否全大写。默认否。
+% bsmainpagenumberline=true|false
+% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设
+% 置是否在正文中显示页码横线,默认否。
+% bsfrontpagenumberline=true|false
+% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设
+% 置是否在前文中显示页码横线,默认否。
+% bsheadrule=true|false
+% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设
+% 置是否显示页眉横线,默认显示。
+% splitbibitem=true|false
+% 含义:参考文献每一个条目内能不能断页,应广大刀客要求添加。默认否。
+% newtxmath=true|false
+% 含义:数学字体是否使用新罗马。默认是。
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usepackage{hithesis}
+\graphicspath{{figures/}}
+
+\begin{document}
+
+\frontmatter
+\input{front/cover} % 封面
+\makecover
+\input{front/denotation}%物理量名称表,符合规范为主,有要求添加
+%\cleardoublepage 自定义在什么位置进行右翻页
+\tableofcontents % 中文目录
+%\cleardoublepage 自定义在什么位置进行右翻页
+\tableofengcontents % 英文目录,硕本不要求
+
+\mainmatter
+%\linenumbers %debug 选项
+%\layout %debug 选项
+%\floatdiagram %debug 选项
+%\begin{figure} %debug 选项
+%\currentfloat %debug 选项
+%\tryintextsep{\intextsep} %debug 选项
+%\trytopfigrule{0.5pt} %debug 选项
+%\trybotfigrule{1pt} %debug 选项
+%\setlayoutscale{0.9} %debug 选项
+%\floatdesign %debug 选项
+%\caption{Float layout with rules}\label{fig:fludf} %debug 选项
+%\end{figure} %debug 选项
+\include{body/introduction}
+
+\backmatter
+%硕博书序
+\include{back/conclusion} % 结论
+\bibliographystyle{hithesis} %如果没有参考文献时候
+\bibliography{reference}
+\begin{appendix}%附录
+\input{back/appA.tex}
+\end{appendix}
+\include{back/publications} % 所发文章
+\include{back/ceindex} % 索引, 根据自己的情况添加或者不添加,选择自动添加或者手工添加。
+\authorization %授权
+%\authorization[saomiao.pdf] %添加扫描页的命令,与上互斥
+\include{back/acknowledgements} %致谢
+\include{back/resume} % 博士学位论文有个人简介
+
+%本科书序为:
+% \include{body/conclusion} % 结论
+% \bibliographystyle{hithesis}
+% \bibliography{reference}
+% \authorization %授权
+% % \authorization[saomiao.pdf] %添加扫描页的命令,与上互斥
+% \include{body/acknowledgements} %致谢
+% \begin{appendix}%附录
+% % \input{body/appendix01}%本科生翻译论文
+% \end{appendix}
+
+\end{document}
+
+% Local Variables:
+% TeX-engine: xetex
+% End:
diff --git a/macros/xetex/latex/hithesis/reference.bib b/macros/xetex/latex/hithesis/reference.bib
new file mode 100644
index 0000000000..5b4b260487
--- /dev/null
+++ b/macros/xetex/latex/hithesis/reference.bib
@@ -0,0 +1,75 @@
+% !Mode:: "TeX:UTF-8"
+
+@INPROCEEDINGS{cnproceed,
+ author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
+ title = {武林高手从入门到精通},
+ booktitle = {第~$N$~次华山论剑},
+ year = 2006,
+ address = {西安, 中国},
+ month = sep,
+ language ="zh",
+}
+
+@ARTICLE{cnarticle,
+ AUTHOR = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
+ TITLE = "论刘姥姥食量大如牛之现实意义",
+ JOURNAL = "红楼梦杂谈",
+ PAGES = "260--266",
+ VOLUME = "224",
+ YEAR = "1800",
+ language ="zh",
+}
+
+
+@inbook{Lin1992,
+ language ="zh",
+ AUTHOR = "林来兴",
+ TITLE = "空间控制技术",
+ PUBLISHER = "宇航出版社",
+ YEAR = "1992",
+ Pages = "25-42",
+ ADDRESS = "北京",
+}
+
+@book{xin1994,
+ language ="zh",
+ title={信息技术与信息服务国际研讨会论文集},
+ author={辛希孟 and 中国科学院文献信息中心 and 孟广均 and 信息学},
+ year={1994},
+ publisher={中国社会科学出版社},
+ pages={45-49},
+ address={北京},
+ typeoflit={C},
+}
+
+@book{zhao1998,
+ language ="zh",
+ title={新时代的工业工程师},
+ author={赵耀东},
+ year={1998},
+ citedate = {1998-09-26},
+ address={台北},
+ publisher={天下文化出版社},
+ url={http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5)},
+ typeoflit={M/OL},
+}
+
+@phdthesis{Chen1992,
+ language ="zh",
+ Author = {谌颖},
+ Title = {空间最优交会控制理论与方法研究},
+ ADDRESS = "哈尔滨",
+ School = {哈尔滨工业大学},
+ Year = {1992},
+ pages= {8-13},
+}
+
+@article{hithesis2017,
+ title={Hi!Thesis!,Harbin Institue of Technology},
+ author={Yanshuo Chu},
+ journal={Github},
+ volume={001},
+ number={0001},
+ pages={000-999},
+ year={2017},
+}