texlive[53329] Master/texmf-dist: thuthesis (6jan20)

commits+karl at tug.org commits+karl at tug.org
Mon Jan 6 00:08:16 CET 2020


Revision: 53329
          http://tug.org/svn/texlive?view=revision&revision=53329
Author:   karl
Date:     2020-01-06 00:08:16 +0100 (Mon, 06 Jan 2020)
Log Message:
-----------
thuthesis (6jan20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst
    trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst
    trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst
    trunk/Master/texmf-dist/doc/latex/thuthesis/README.md
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/resume.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty
    trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc
    trunk/Master/texmf-dist/doc/latex/thuthesis/main.pdf
    trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib
    trunk/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf
    trunk/Master/texmf-dist/source/latex/thuthesis/Makefile
    trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx
    trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins
    trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/abstract.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/acknowledgements.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-survey.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-translation.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/math_commands.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/ref/appendix.bib
    trunk/Master/texmf-dist/doc/latex/thuthesis/spine.pdf
    trunk/Master/texmf-dist/doc/latex/thuthesis/spine.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/thusetup.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex
    trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf
    trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex
    trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.sty

Modified: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst	2020-01-05 23:08:16 UTC (rev 53329)
@@ -44,10 +44,8 @@
 
 FUNCTION {load.config}
 {
-  #1 'uppercase.name :=
   #0 'uppercase.name :=
   #3 'max.num.authors :=
-  #0 'period.between.author.year :=
   #1 'period.between.author.year :=
   #1 'sentence.case.title :=
   #0 'link.title :=
@@ -56,9 +54,8 @@
   #0 'in.booktitle :=
   #0 'italic.jounal :=
   #0 'bold.journal.volume :=
-  #1 'show.missing.address.publisher :=
+  #0 'show.missing.address.publisher :=
   #1 'show.url :=
-  #1 'show.doi :=
   #0 'show.doi :=
   #0 'show.note :=
   #1 'lang.zh.order :=
@@ -155,7 +152,7 @@
 
 FUNCTION {bbl.wide.space} { "\ " }
 
-FUNCTION {bbl.slash} { "//\allowbreak " }
+FUNCTION {bbl.slash} { " // " }
 
 FUNCTION {bbl.sine.loco}
 { entry.lang lang.zh =
@@ -629,19 +626,15 @@
 FUNCTION {output.bibitem}
 { newline$
   "\bibitem[" write$
-  label write$
-  ")" make.full.names duplicate$ short.list =
+  label ")" *
+  make.full.names duplicate$ short.list =
      { pop$ }
      { * }
   if$
   's :=
   s text.length$ 'charptr :=
-    { charptr #0 > }
-    { s charptr #1 substring$ "]" =
-        { #0 'charptr := }
-        { charptr #1 - 'charptr := }
-      if$
-    }
+    { charptr #0 > s charptr #1 substring$ "[" = not and }
+    { charptr #1 - 'charptr := }
   while$
   charptr #0 >
     { "{" s * "}" * }
@@ -889,6 +882,9 @@
 
 FUNCTION {format.mark}
 { show.mark
+  type$ "phdthesis" = type$ "mastersthesis" = or type$ "patent" = or
+  medium empty$ not or entry.is.electronic or
+  and
     { medium empty$ not
         { entry.mark "/" * medium * 'entry.mark := }
         { entry.is.electronic
@@ -897,7 +893,7 @@
           if$
         }
       if$
-      "\allowbreak[" entry.mark * "]" *
+      " [" entry.mark * "]" *
     }
     { "" }
   if$

Modified: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst	2020-01-05 23:08:16 UTC (rev 53329)
@@ -4,7 +4,7 @@
 %%
 %% The original source files were:
 %%
-%% gbt7714.dtx  (with options: `2015,numerical')
+%% gbt7714.dtx  (with options: `2015,numerical,noslsn')
 %% -------------------------------------------------------------------
 %% GB/T 7714-2015 BibTeX Style
 %% https://github.com/CTeX-org/gbt7714-bibtex-style
@@ -48,7 +48,7 @@
   #0 'in.booktitle :=
   #0 'italic.jounal :=
   #0 'bold.journal.volume :=
-  #1 'show.missing.address.publisher :=
+  #0 'show.missing.address.publisher :=
   #1 'show.url :=
   #1 'show.doi :=
   #0 'show.note :=
@@ -615,19 +615,15 @@
 FUNCTION {output.bibitem}
 { newline$
   "\bibitem[" write$
-  label write$
-  ")" make.full.names duplicate$ short.list =
+  label ")" *
+  make.full.names duplicate$ short.list =
      { pop$ }
      { * }
   if$
   's :=
   s text.length$ 'charptr :=
-    { charptr #0 > }
-    { s charptr #1 substring$ "]" =
-        { #0 'charptr := }
-        { charptr #1 - 'charptr := }
-      if$
-    }
+    { charptr #0 > s charptr #1 substring$ "[" = not and }
+    { charptr #1 - 'charptr := }
   while$
   charptr #0 >
     { "{" s * "}" * }

Modified: trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst	2020-01-05 23:08:16 UTC (rev 53329)
@@ -39,7 +39,6 @@
 
 FUNCTION {load.config}
 {
-  #1 'uppercase.name :=
   #0 'uppercase.name :=
   #3 'max.num.authors :=
   #1 'sentence.case.title :=
@@ -49,9 +48,8 @@
   #0 'in.booktitle :=
   #0 'italic.jounal :=
   #0 'bold.journal.volume :=
-  #1 'show.missing.address.publisher :=
+  #0 'show.missing.address.publisher :=
   #1 'show.url :=
-  #1 'show.doi :=
   #0 'show.doi :=
   #0 'show.note :=
 }
@@ -143,7 +141,7 @@
 
 FUNCTION {bbl.wide.space} { "\ " }
 
-FUNCTION {bbl.slash} { "//\allowbreak " }
+FUNCTION {bbl.slash} { " // " }
 
 FUNCTION {bbl.sine.loco}
 { entry.lang lang.zh =
@@ -617,19 +615,15 @@
 FUNCTION {output.bibitem}
 { newline$
   "\bibitem[" write$
-  label write$
-  ")" make.full.names duplicate$ short.list =
+  label ")" *
+  make.full.names duplicate$ short.list =
      { pop$ }
      { * }
   if$
   's :=
   s text.length$ 'charptr :=
-    { charptr #0 > }
-    { s charptr #1 substring$ "]" =
-        { #0 'charptr := }
-        { charptr #1 - 'charptr := }
-      if$
-    }
+    { charptr #0 > s charptr #1 substring$ "[" = not and }
+    { charptr #1 - 'charptr := }
   while$
   charptr #0 >
     { "{" s * "}" * }
@@ -877,6 +871,9 @@
 
 FUNCTION {format.mark}
 { show.mark
+  type$ "phdthesis" = type$ "mastersthesis" = or type$ "patent" = or
+  medium empty$ not or entry.is.electronic or
+  and
     { medium empty$ not
         { entry.mark "/" * medium * 'entry.mark := }
         { entry.is.electronic
@@ -885,7 +882,7 @@
           if$
         }
       if$
-      "\allowbreak[" entry.mark * "]" *
+      " [" entry.mark * "]" *
     }
     { "" }
   if$

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/README.md	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/README.md	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,18 +1,20 @@
-[![Build Status](https://travis-ci.org/xueruini/thuthesis.svg?branch=master)](https://travis-ci.org/xueruini/thuthesis)
+[![Actions Status](https://github.com/xueruini/thuthesis/workflows/build/badge.svg)](https://github.com/xueruini/thuthesis/actions)
 [![Join the chat at https://gitter.im/thuthesis/Lobby](https://badges.gitter.im/thuthesis/Lobby.svg)](https://gitter.im/thuthesis/Lobby)
-[![Github downloads](https://img.shields.io/github/downloads/xueruini/thuthesis/total.svg)](https://github.com/xueruini/thuthesis/releases)
-[![GitHub release](https://img.shields.io/github/release/xueruini/thuthesis/all.svg)](https://github.com/xueruini/thuthesis/releases/latest)
-[![GitHub commits](https://img.shields.io/github/commits-since/xueruini/thuthesis/latest.svg)](https://github.com/xueruini/thuthesis/commits/master)
+[![GitHub downloads](https://img.shields.io/github/downloads/xueruini/thuthesis/total)](https://github.com/xueruini/thuthesis/releases)
+[![GitHub commits](https://img.shields.io/github/commits-since/xueruini/thuthesis/latest)](https://github.com/xueruini/thuthesis/commits/master)
+[![GitHub release](https://img.shields.io/github/v/release/xueruini/thuthesis)](https://github.com/xueruini/thuthesis/releases/latest)
+[![CTAN](https://img.shields.io/ctan/v/thuthesis)](https://www.ctan.org/pkg/thuthesis)
 
 # What's ThuThesis?
 ThuThesis is an abbreviation of <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template.
 
-This package establishes a simple and easy-to-use LaTeX template for Tsinghua dissertations, including general undergraduate research papers, masters theses, doctoral theses, doctoral dissertations, and post-doc reports. Additional support for other formats (what else is there?) will be added continuously. An English translation of this README follows the Chinese below.
+This package establishes a simple and easy-to-use LaTeX template for Tsinghua dissertations, including general undergraduate research papers, masters theses, doctoral dissertations, and postdoctoral reports. An English translation of this README follows the Chinese below.
 
+
 # ThuThesis是什么?
 ThuThesis为 <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template之缩写。
 
-此宏包旨在建立一个简单易用的清华大学学位论文LaTeX模板,包括本科综合论文训练、硕士论文、博士论文、博士哲学论文以及博士后出站报告。现在支持本科、硕士、博士论文、博士后出站报告格式,对其它格式(还有么?)的支持会陆续加入。
+此宏包旨在建立一个简单易用的清华大学学位论文LaTeX模板,包括本科综合论文训练、硕士论文、博士论文以及博士后出站报告。
 
 # 文档
 请[下载](https://github.com/xueruini/thuthesis/releases)模板,里面包括具体使用说明以及示例文档:
@@ -21,12 +23,12 @@
 * 示例文档 (main.pdf)
 
 # 下载
-* 发行版:[CTAN](http://www.ctan.org/pkg/thuthesis)
+* 发行版:[CTAN](https://www.ctan.org/pkg/thuthesis)
 * 开发版:[GitHub](https://github.com/xueruini/thuthesis)
 
 # 升级
 ## 自动更新
-通过 TeX 发行版工具自动从 [CTAN](http://www.ctan.org/pkg/thuthesis) 更新。
+通过 TeX 发行版工具自动从 [CTAN](https://www.ctan.org/pkg/thuthesis) 更新。
 
 ## 手动更新
 从 [GitHub](https://github.com/xueruini/thuthesis) 下载放入论文目录,执行命令(Windows 用户在文件夹空白处按`Shift+鼠标右键`,点击“在此处打开命令行窗口”):
@@ -39,22 +41,19 @@
 按推荐顺序排序:
 
 * 先到 [FAQ](https://github.com/xueruini/thuthesis/wiki/FAQ) 看看常见问题
-* [Github Issues](http://github.com/xueruini/thuthesis/issues)
-* [TeX at newsmth](http://www.newsmth.net/nForum/#!board/TeX)
-* [ThuThesis at Google Groups](http://groups.google.com/group/thuthesis)
+* [GitHub Issues](https://github.com/xueruini/thuthesis/issues)
 
 # Makefile的用法
 
 ```shell
-make [{all|thesis|shuji|doc|clean|cleanall|distclean}]
+make [{all|thesis|spine|doc|clean|cleanall|distclean}]
 ```
 
 ## 目标
-* `make all`       等于 `make thesis && make shuji && make doc`;
-* `make cls`       生成模板文件;
 * `make thesis`    生成论文 main.pdf;
-* `make shuji`     生成书脊 shuji.pdf;
-* `make doc`       生成使用说明书 thuthesis.pdf;
+* `make spine`     生成书脊 spine.pdf;
+* `make doc`       生成模板使用说明书 thuthesis.pdf;
+* `make all`       生成论文和书籍,相当于 `make thesis && make spine`;
 * `make clean`     删除示例文件的中间文件(不含 main.pdf);
 * `make cleanall`  删除示例文件的中间文件和 main.pdf;
 * `make distclean` 删除示例文件和模板的所有中间文件和 PDF。
@@ -65,12 +64,12 @@
 * Template example (main.pdf)
 
 # Downloads
-* Published version: [CTAN](http://www.ctan.org/pkg/thuthesis)
+* Published version: [CTAN](https://www.ctan.org/pkg/thuthesis)
 * Developer version: [GitHub](https://github.com/xueruini/thuthesis)
 
 # Updates
 ## Automatic
-Get the most up-to-date published version of the TeX tools from [CTAN](http://www.ctan.org/pkg/thuthesis).
+Get the most up-to-date published version of the TeX tools from [CTAN](https://www.ctan.org/pkg/thuthesis).
 
 ## Manual
 Download the package from [GitHub](https://github.com/xueruini/thuthesis) to the root directory of your thesis, then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here from the popup menu"):
@@ -82,23 +81,20 @@
 # Reporting Issues
 Please follow the procedure below:
 
-* Check the  [FAQ](https://github.com/xueruini/thuthesis/wiki/FAQ)
-* [Github Issues](http://github.com/xueruini/thuthesis/issues)
-* [TeX at newsmth](http://www.newsmth.net/nForum/#!board/TeX)
-* [ThuThesis at Google Groups](http://groups.google.com/group/thuthesis)
+* Check the [FAQ](https://github.com/xueruini/thuthesis/wiki/FAQ)
+* [GitHub Issues](https://github.com/xueruini/thuthesis/issues)
 
 # Makefile Usage
 
 ```shell
-make [{all|thesis|shuji|doc|clean|cleanall|distclean}]
+make [{all|thesis|spine|doc|clean|cleanall|distclean}]
 ```
 
 ## Targets
-* `make all`       same as `make thesis && make shuji && make doc`;
-* `make cls`       generate template file;
 * `make thesis`    generate thesis main.pdf;
-* `make shuji`     generate book spine for printing shuji.pdf;
-* `make doc`       generate documentation thuthesis.pdf;
+* `make spine`     generate book spine for printing spine.pdf;
+* `make doc`       generate template documentation thuthesis.pdf;
+* `make all`       generate thesis and spine, same as `make thesis && make spine`;
 * `make clean`     delete all examples' files (excluding main.pdf);
 * `make cleanall`  delete all examples' files and main.pdf;
 * `make distclean` delete all examples' and templates' files and PDFs.

Added: trunk/Master/texmf-dist/doc/latex/thuthesis/data/abstract.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/abstract.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/abstract.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,55 @@
+% !TeX root = ../main.tex
+
+% 中英文摘要和关键字
+
+\begin{abstract}
+  论文的摘要是对论文研究内容和成果的高度概括。摘要应对论文所研究的问题及其研究目
+  的进行描述,对研究方法和过程进行简单介绍,对研究成果和所得结论进行概括。摘要应
+  具有独立性和自明性,其内容应包含与论文全文同等量的主要信息。使读者即使不阅读全
+  文,通过摘要就能了解论文的总体内容和主要成果。
+
+  论文摘要的书写应力求精确、简明。切忌写成对论文书写内容进行提要的形式,尤其要避
+  免“第 1 章……;第 2 章……;……”这种或类似的陈述方式。
+
+  本文介绍清华大学论文模板 \thuthesis{} 的使用方法。本模板符合学校的本科、硕士、
+  博士论文格式要求。
+
+  本文的创新点主要有:
+  \begin{itemize}
+    \item 用例子来解释模板的使用方法;
+    \item 用废话来填充无关紧要的部分;
+    \item 一边学习摸索一边编写新代码。
+  \end{itemize}
+
+  关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。关键词不超过 5
+  个,每个关键词中间用分号分隔。(模板作者注:关键词分隔符不用考虑,模板会自动处
+  理。英文关键词同理。)
+
+  % 关键词用“英文逗号”分隔
+  \thusetup{
+    keywords = {TeX, LaTeX, CJK, 模板, 论文},
+  }
+\end{abstract}
+
+\begin{abstract*}
+  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.
+  \thusetup{
+    keywords* = {TeX, LaTeX, CJK, template, thesis},
+  }
+\end{abstract*}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/data/abstract.tex
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,12 +0,0 @@
-% 如果使用声明扫描页,将可选参数指定为扫描后的 PDF 文件名,例如:
-% \begin{acknowledgement}[scan-statement.pdf]
-\begin{acknowledgement}
-  衷心感谢导师 xxx 教授和物理系 xxx 副教授对本人的精心指导。他们的言传身教将使
-  我终生受益。
-
-  在美国麻省理工学院化学系进行九个月的合作研究期间,承蒙 xxx 教授热心指导与帮助,不
-  胜感激。感谢 xx 实验室主任 xx 教授,以及实验室全体老师和同学们的热情帮助和支
-  持!本课题承蒙国家自然科学基金资助,特此致谢。
-
-  感谢 \LaTeX 和 \thuthesis\cite{thuthesis},帮我节省了不少时间。
-\end{acknowledgement}

Added: trunk/Master/texmf-dist/doc/latex/thuthesis/data/acknowledgements.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/acknowledgements.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/acknowledgements.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,12 @@
+% !TeX root = ../main.tex
+
+\begin{acknowledgements}
+  衷心感谢导师 xxx 教授和物理系 xxx 副教授对本人的精心指导。他们的言传身教将使
+  我终生受益。
+
+  在美国麻省理工学院化学系进行九个月的合作研究期间,承蒙 xxx 教授热心指导与帮助,不
+  胜感激。感谢 xx 实验室主任 xx 教授,以及实验室全体老师和同学们的热情帮助和支
+  持!本课题承蒙国家自然科学基金资助,特此致谢。
+
+  感谢 \LaTeX{} 和 \thuthesis\cite{thuthesis},帮我节省了不少时间。
+\end{acknowledgements}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/data/acknowledgements.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-survey.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-survey.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-survey.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,172 @@
+% !TeX root = ../main.tex
+
+\begin{survey}
+\label{cha:survey}
+
+\title{Title of the Survey}
+\maketitle
+
+写出至少 5000 外文印刷字符的调研阅读报告或者书面翻译 1-2 篇(不少于 2 万外文印刷符)。
+
+It is impossible to cover in a single chapter every concept of mathematical
+programming.\cite{tex} This chapter introduces only the basic concepts and techniques of
+mathematical programming such that readers gain an understanding of them
+throughout the book\cite{abrahams99tex,salomon1995advanced}.
+
+
+\section{Single-Objective Programming}
+The general form of single-objective programming (SOP) is written
+as follows,
+\begin{equation*} % 如果附录中的公式不想让它出现在公式索引中,那就请
+                             % 用 equation*
+\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.
+
+\newcommand\Real{\mathbf{R}}
+\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*}
+S=\left\{x\in\Real^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
+    \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
+    & \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.
+\begin{figure}[h]
+  \centering
+  \includegraphics{thu-lib-logo.pdf}
+  \caption*{Figure~1\quad This is an example for manually numbered figure,
+    which would not appear in the list of figures}
+  \label{tab:badfigure2}
+\end{figure}
+
+Now we consider a nonlinear programming which is confronted solely with
+maximizing a real-valued function with domain $\Real^n$.  Whether derivatives are
+available or not, the usual strategy is first to select a point in $\Real^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})
+
+\bibliographystyle{plainnat}
+\bibliography{ref/refs,ref/appendix}
+
+\end{survey}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-survey.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-translation.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-translation.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-translation.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,96 @@
+% !TeX root = ../main.tex
+
+\begin{translation}
+\label{cha:translation}
+
+\title{书面翻译题目}
+\maketitle
+
+\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
+    \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
+    & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+文惠君曰:“嘻,善哉!技盖至此乎?”庖丁释刀对曰:“臣之所好者道也,进乎技矣。始臣之
+解牛之时,所见无非全牛者;三年之后,未尝见全牛也;方今之时,臣以神遇而不以目视,
+官知止而神欲行。依乎天理,批大郤,导大窾,因其固然。技经肯綮之未尝,而况大坬乎!
+良庖岁更刀,割也;族庖月更刀,折也;今臣之刀十九年矣,所解数千牛矣,而刀刃若新发
+于硎。彼节者有间而刀刃者无厚,以无厚入有间,恢恢乎其于游刃必有余地矣。是以十九年
+而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒,视为止,行为迟,动刀甚微,
+謋然已解,如土委地。提刀而立,为之而四顾,为之踌躇满志,善刀而藏之。”
+
+文惠君曰:“善哉!吾闻庖丁之言,得养生焉。”
+
+
+\subsection{非线性规划}
+孔子与柳下季为友,柳下季之弟名曰盗跖。盗跖从卒九千人,横行天下,侵暴诸侯。穴室枢
+户,驱人牛马,取人妇女。贪得忘亲,不顾父母兄弟,不祭先祖。所过之邑,大国守城,小
+国入保,万民苦之。孔子谓柳下季曰:“夫为人父者,必能诏其子;为人兄者,必能教其弟。
+若父不能诏其子,兄不能教其弟,则无贵父子兄弟之亲矣。今先生,世之才士也,弟为盗
+跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
+\begin{figure}[h]
+  \centering
+  \includegraphics{thu-whole-logo.pdf}
+  \caption*{图~1\hskip1em 这是手动编号但不出现索引中的图片的例子}
+  \label{tab:badfigure3}
+\end{figure}
+
+柳下季曰:“先生言为人父者必能诏其子,为人兄者必能教其弟,若子不听父之诏,弟不受
+兄之教,虽今先生之辩,将奈之何哉?且跖之为人也,心如涌泉,意如飘风,强足以距敌,
+辩足以饰非。顺其心则喜,逆其心则怒,易辱人以言。先生必无往。”
+
+孔子不听,颜回为驭,子贡为右,往见盗跖。
+
+\subsection{整数规划}
+盗跖乃方休卒徒大山之阳,脍人肝而餔之。孔子下车而前,见谒者曰:“鲁人孔丘,闻将军
+高义,敬再拜谒者。”谒者入通。盗跖闻之大怒,目如明星,发上指冠,曰:“此夫鲁国之
+巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
+说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
+作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”
+
+
+\nocite{abrahams99tex,salomon1995advanced}
+\bibliographystyle{plainnat}
+\bibliography{ref/appendix}
+
+% 也可以使用 thebiliography 环境手写
+% \begin{thebibliography}{2}
+%   \bibitem{abrahams99tex}
+%   P.~W. Abrahams, K.~Berry, and K.~A. Hargreaves, \emph{{\TeX} for the
+%     Impatient}.\hskip 1em plus 0.5em minus 0.4em\relax Addison-Wesley, 1990.
+
+%   \bibitem{salomon1995advanced}
+%   D.~Salomon, ``The advanced {\TeX}book.''\hskip 1em plus 0.5em minus 0.4em\relax
+%     New York: Springer, 1995.
+% \end{thebibliography}
+
+
+\end{translation}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix-translation.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,237 @@
+\chapter{单目标规划}
+
+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.
+
+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.
+
+
+\section{Single-Objective Programming}
+The general form of single-objective programming (SOP) is written
+as follows,
+\begin{equation*} % 如果附录中的公式不想让它出现在公式索引中,那就请
+                             % 用 equation*
+\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.
+
+\newcommand\Real{\mathbf{R}}
+\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*}
+S=\left\{x\in\Real^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
+    \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
+    & \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.
+\begin{figure}[h]
+  \centering
+  \includegraphics{thu-lib-logo.pdf}
+  \caption*{Figure~1\quad This is an example for manually numbered figure,
+    which would not appear in the list of figures}
+  \label{tab:badfigure2}
+\end{figure}
+
+Now we consider a nonlinear programming which is confronted solely with
+maximizing a real-valued function with domain $\Real^n$.  Whether derivatives are
+available or not, the usual strategy is first to select a point in $\Real^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{单目标规划}
+北冥有鱼,其名为鲲。鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几
+千里也。怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。
+\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
+    \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
+    & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+文惠君曰:“嘻,善哉!技盖至此乎?”庖丁释刀对曰:“臣之所好者道也,进乎技矣。始臣之
+解牛之时,所见无非全牛者;三年之后,未尝见全牛也;方今之时,臣以神遇而不以目视,
+官知止而神欲行。依乎天理,批大郤,导大窾,因其固然。技经肯綮之未尝,而况大坬乎!
+良庖岁更刀,割也;族庖月更刀,折也;今臣之刀十九年矣,所解数千牛矣,而刀刃若新发
+于硎。彼节者有间而刀刃者无厚,以无厚入有间,恢恢乎其于游刃必有余地矣。是以十九年
+而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒,视为止,行为迟,动刀甚微,
+謋然已解,如土委地。提刀而立,为之而四顾,为之踌躇满志,善刀而藏之。”
+
+文惠君曰:“善哉!吾闻庖丁之言,得养生焉。”
+
+
+\subsection{非线性规划}
+孔子与柳下季为友,柳下季之弟名曰盗跖。盗跖从卒九千人,横行天下,侵暴诸侯。穴室枢
+户,驱人牛马,取人妇女。贪得忘亲,不顾父母兄弟,不祭先祖。所过之邑,大国守城,小
+国入保,万民苦之。孔子谓柳下季曰:“夫为人父者,必能诏其子;为人兄者,必能教其弟。
+若父不能诏其子,兄不能教其弟,则无贵父子兄弟之亲矣。今先生,世之才士也,弟为盗
+跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
+\begin{figure}[h]
+  \centering
+  \includegraphics{thu-whole-logo.pdf}
+  \caption*{图~1\hskip1em 这是手动编号但不出现索引中的图片的例子}
+  \label{tab:badfigure3}
+\end{figure}
+
+柳下季曰:“先生言为人父者必能诏其子,为人兄者必能教其弟,若子不听父之诏,弟不受
+兄之教,虽今先生之辩,将奈之何哉?且跖之为人也,心如涌泉,意如飘风,强足以距敌,
+辩足以饰非。顺其心则喜,逆其心则怒,易辱人以言。先生必无往。”
+
+孔子不听,颜回为驭,子贡为右,往见盗跖。
+
+\subsection{整数规划}
+盗跖乃方休卒徒大山之阳,脍人肝而餔之。孔子下车而前,见谒者曰:“鲁人孔丘,闻将军
+高义,敬再拜谒者。”谒者入通。盗跖闻之大怒,目如明星,发上指冠,曰:“此夫鲁国之
+巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
+说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
+作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/appendix01.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,263 +0,0 @@
-\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*} % 如果附录中的公式不想让它出现在公式索引中,那就请
-                             % 用 equation*
-\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.
-
-\newcommand\Real{\mathbf{R}}
-\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*}
-S=\left\{x\in\Real^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
-    \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
-    & \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.
-\begin{figure}[h]
-  \centering
-  \includegraphics{thu-lib-logo.pdf}
-  \caption*{Figure~1\quad This is an example for manually numbered figure,
-    which would not appear in the list of figures}
-  \label{tab:badfigure2}
-\end{figure}
-
-Now we consider a nonlinear programming which is confronted solely with
-maximizing a real-valued function with domain $\Real^n$.  Whether derivatives are
-available or not, the usual strategy is first to select a point in $\Real^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
-    \multirow{2}{1.5cm}{Xue} & Rui  & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
-    & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
-\end{tabular}
-\end{table}
-
-文惠君曰:“嘻,善哉!技盖至此乎?”庖丁释刀对曰:“臣之所好者道也,进乎技矣。始臣之
-解牛之时,所见无非全牛者;三年之后,未尝见全牛也;方今之时,臣以神遇而不以目视,
-官知止而神欲行。依乎天理,批大郤,导大窾,因其固然。技经肯綮之未尝,而况大坬乎!
-良庖岁更刀,割也;族庖月更刀,折也;今臣之刀十九年矣,所解数千牛矣,而刀刃若新发
-于硎。彼节者有间而刀刃者无厚,以无厚入有间,恢恢乎其于游刃必有余地矣。是以十九年
-而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒,视为止,行为迟,动刀甚微,
-謋然已解,如土委地。提刀而立,为之而四顾,为之踌躇满志,善刀而藏之。”
-
-文惠君曰:“善哉!吾闻庖丁之言,得养生焉。”
-
-
-\subsection{非线性规划}
-孔子与柳下季为友,柳下季之弟名曰盗跖。盗跖从卒九千人,横行天下,侵暴诸侯。穴室枢
-户,驱人牛马,取人妇女。贪得忘亲,不顾父母兄弟,不祭先祖。所过之邑,大国守城,小
-国入保,万民苦之。孔子谓柳下季曰:“夫为人父者,必能诏其子;为人兄者,必能教其弟。
-若父不能诏其子,兄不能教其弟,则无贵父子兄弟之亲矣。今先生,世之才士也,弟为盗
-跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
-\begin{figure}[h]
-  \centering
-  \includegraphics{thu-whole-logo.pdf}
-  \caption*{图~1\hskip1em 这是手动编号但不出现索引中的图片的例子}
-  \label{tab:badfigure3}
-\end{figure}
-
-柳下季曰:“先生言为人父者必能诏其子,为人兄者必能教其弟,若子不听父之诏,弟不受
-兄之教,虽今先生之辩,将奈之何哉?且跖之为人也,心如涌泉,意如飘风,强足以距敌,
-辩足以饰非。顺其心则喜,逆其心则怒,易辱人以言。先生必无往。”
-
-孔子不听,颜回为驭,子贡为右,往见盗跖。
-
-\subsection{整数规划}
-盗跖乃方休卒徒大山之阳,脍人肝而餔之。孔子下车而前,见谒者曰:“鲁人孔丘,闻将军
-高义,敬再拜谒者。”谒者入通。盗跖闻之大怒,目如明星,发上指冠,曰:“此夫鲁国之
-巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
-说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
-作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”
-
-
-\chapter{其它附录}
-前面两个附录主要是给本科生做例子。其它附录的内容可以放到这里,当然如果你愿意,可
-以把这部分也放到独立的文件中,然后将其 \cs{input} 到主文件中。

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,3 +1,5 @@
+% !TeX root = ../main.tex
+
 \chapter{带 English 的标题}
 \label{cha:intro}
 
@@ -68,7 +70,7 @@
 \subsection{基本表格}
 \label{sec:basictable}
 
-模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtabular},命
+模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtable},命
 令有一个 \cs{hlinewd}。三线表可以用 \pkg{booktabs} 提供
 的 \cs{toprule}、\cs{midrule} 和 \cs{bottomrule}。它们与 \pkg{longtable} 能很好的
 配合使用。如果表格比较简单的话可以直接用命令 \cs{hlinewd}\marg{width} 控制。
@@ -85,9 +87,9 @@
       thuthesis.ins & \LaTeX{} 安装文件,DocStrip\footnote{表格中的脚注} \\
       thuthesis.dtx & 所有的一切都在这里面\footnote{再来一个}。\\
       thuthesis.cls & 模板类文件。\\
-      thuthesis-numeric.bst    & 参考文献 Bib\TeX\ 样式文件。\\
-      thuthesis-author-year.bst    & 参考文献 Bib\TeX\ 样式文件。\\
-      thuthesis.sty   & 常用的包和命令写在这里,减轻主文件的负担。\\
+      thuthesis-numeric.bst    & 参考文献 BibTeX 样式文件。\\
+      thuthesis-author-year.bst    & 参考文献 BibTeX 样式文件。\\
+      thusetup.tex   & 基本配置和常用的包、命令,减轻主文件的负担。\\
       \bottomrule[1.5pt]
     \end{tabularx}
   \end{minipage}
@@ -286,9 +288,9 @@
 \bottomrule[1.5pt]
 \end{longtable}
 
-要想用好论文模板还是得提前学习一些 \TeX/\LaTeX{}的相关知识,具备一些基本能力,掌
+要想用好论文模板还是得提前学习一些 \TeX/\LaTeX{} 的相关知识,具备一些基本能力,掌
 握一些常见技巧,否则一旦遇到问题还真是比较麻烦。我们见过很多这样的同学,一直以来
-都是使用 Word 等字处理工具,以为 \LaTeX{}模板的用法也应该类似,所以就沿袭同样的思
+都是使用 Word 等字处理工具,以为 \LaTeX{} 模板的用法也应该类似,所以就沿袭同样的思
 路来对待这种所见非所得的排版工具,结果被折腾的焦头烂额,疲惫不堪。
 
 如果您要排版的表格长度超过一页,那么推荐使用 \pkg{longtable} 或者 \pkg{supertabular}
@@ -331,6 +333,7 @@
   杰出的文学家,哲学家,同时也是一位政治改革家。与韩愈共同倡导唐代古文运动,并称
   韩柳\footnote{唐宋八大家之首二位。}。
 \end{minipage}
+\\
 
 唐朝安史之乱后,宦官专权,藩镇割据,土地兼并日渐严重,社会生产破坏严重,民不聊生。柳宗
 元对这种社会现实极为不满,他积极参加了王叔文领导的“永济革新”,并成为这一
@@ -504,7 +507,7 @@
 当然参考文献可以直接写 \cs{bibitem},虽然费点功夫,但是好控制,各种格式可以自己随意改
 写。
 
-本模板推荐使用 BIB\TeX,分别提供数字引用(\texttt{thuthesis-numeric.bst})和作
+本模板推荐使用 BibTeX,分别提供数字引用(\texttt{thuthesis-numeric.bst})和作
 者年份引用(\texttt{thuthesis-author-year.bst})样式,基本符合学校的参考文献格式
 (如专利等引用未加详细测试)。看看这个例子,关于书的~\cite{tex, companion,
   ColdSources},还有这些~\cite{Krasnogor2004e, clzs, zjsw},关于杂志
@@ -532,21 +535,19 @@
 
 \section{公式}
 \label{sec:equation}
-\renewcommand\vec{\symbf}
-\newcommand\mat{\symbf}
-贝叶斯公式如式~(\ref{equ:chap1:bayes}),其中 $p(y|\vec{x})$ 为后验;
-$p(\vec{x})$ 为先验;分母 $p(\vec{x})$ 为归一化因子。
+贝叶斯公式如式~(\ref{equ:chap1:bayes}),其中 $p(y|\vx)$ 为后验;
+$p(\vx)$ 为先验;分母 $p(\vx)$ 为归一化因子。
 \begin{equation}
 \label{equ:chap1:bayes}
-p(y|\vec{x}) = \frac{p(\vec{x},y)}{p(\vec{x})}=
-\frac{p(\vec{x}|y)p(y)}{p(\vec{x})}
+p(y|\vx) = \frac{p(\vx,y)}{p(\vx)}=
+\frac{p(\vx|y)p(y)}{p(\vx)}
 \end{equation}
 
 论文里面公式越多,\TeX{} 就越 happy。再看一个 \pkg{amsmath} 的例子:
 \newcommand{\envert}[1]{\left\lvert#1\right\rvert}
 \begin{equation}\label{detK2}
-\det\mat{K}(t=1,t_1,\dots,t_n)=\sum_{I\in\vec{n}}(-1)^{\envert{I}}
-\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\vec{A}
+\det\mK(t=1,t_1,\dots,t_n)=\sum_{I\in\vn}(-1)^{\envert{I}}
+\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mA
 ^{(\lambda)}(\overline{I}|\overline{I})=0.
 \end{equation}
 

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,6 +1,8 @@
-\chapter{中华人民共和国}
-\label{cha:china}
+% !TeX root = ../main.tex
 
+\chapter{图表公式例子}
+\label{cha:chapter02}
+
 \section{其它例子}
 \label{sec:other}
 
@@ -8,8 +10,8 @@
 习一下:
 \begin{equation}
 \label{equ:chap2:bayes}
-p(y|\vec{x}) = \frac{p(\vec{x},y)}{p(\vec{x})}=
-\frac{p(\vec{x}|y)p(y)}{p(\vec{x})}
+p(y|\vx) = \frac{p(\vx,y)}{p(\vx)}=
+\frac{p(\vx|y)p(y)}{p(\vx)}
 \end{equation}
 
 \subsection{绘图}
@@ -23,7 +25,7 @@
 \subsection{插图}
 \label{sec:graphs}
 
-强烈推荐《\LaTeXe\ 插图指南》!关于子图形的使用细节请参看 \pkg{subcaption} 宏包的说明文档。
+强烈推荐《\LaTeXe{} 插图指南》!关于子图形的使用细节请参看 \pkg{subcaption} 宏包的说明文档。
 
 \subsubsection{一个图形}
 \label{sec:onefig}

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/cover.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,118 +0,0 @@
-\thusetup{
-  %******************************
-  % 注意:
-  %   1. 配置里面不要出现空行
-  %   2. 不需要的配置信息可以删除
-  %******************************
-  %
-  %=====
-  % 秘级
-  %=====
-  secretlevel={秘密},
-  secretyear={10},
-  %
-  %=========
-  % 中文信息
-  %=========
-  ctitle={清华大学学位论文 \LaTeX\ 模板\\使用示例文档 v\version},
-  cdegree={工学硕士},
-  cdepartment={计算机科学与技术系},
-  cmajor={计算机科学与技术},
-  cauthor={薛瑞尼},
-  csupervisor={郑纬民教授},
-  cassosupervisor={陈文光教授}, % 副指导老师
-  ccosupervisor={某某某教授}, % 联合指导老师
-  % 日期自动使用当前时间,若需指定按如下方式修改:
-  % cdate={超新星纪元},
-  %
-  % 博士后专有部分
-  catalognumber     = {分类号},  % 可以留空
-  udc               = {UDC},  % 可以留空
-  id                = {编号},  % 可以留空: id={},
-  cfirstdiscipline  = {计算机科学与技术},  % 流动站(一级学科)名称
-  cseconddiscipline = {系统结构},  % 专 业(二级学科)名称
-  postdoctordate    = {2009 年 7 月——2011 年 7 月},  % 工作完成日期
-  postdocstartdate  = {2009 年 7 月 1 日},  % 研究工作起始时间
-  postdocenddate    = {2011 年 7 月 1 日},  % 研究工作期满时间
-  %
-  %=========
-  % 英文信息
-  %=========
-  etitle={An Introduction to \LaTeX{} Thesis Template of Tsinghua University v\version},
-  % 这块比较复杂,需要分情况讨论:
-  % 1. 学术型硕士
-  %    edegree:必须为Master of Arts或Master of Science(注意大小写)
-  %             “哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
-  %              填写Master of Arts,其它填写Master of Science”
-  %    emajor:“获得一级学科授权的学科填写一级学科名称,其它填写二级学科名称”
-  % 2. 专业型硕士
-  %    edegree:“填写专业学位英文名称全称”
-  %    emajor:“工程硕士填写工程领域,其它专业学位不填写此项”
-  % 3. 学术型博士
-  %    edegree:Doctor of Philosophy(注意大小写)
-  %    emajor:“获得一级学科授权的学科填写一级学科名称,其它填写二级学科名称”
-  % 4. 专业型博士
-  %    edegree:“填写专业学位英文名称全称”
-  %    emajor:不填写此项
-  edegree={Doctor of Engineering},
-  emajor={Computer Science and Technology},
-  eauthor={Xue Ruini},
-  esupervisor={Professor Zheng Weimin},
-  eassosupervisor={Chen Wenguang},
-  % 日期自动生成,若需指定按如下方式修改:
-  % edate={December, 2005}
-  %
-  % 关键词用“英文逗号”分割
-  ckeywords={TeX, LaTeX, CJK, 模板, 论文},
-  ekeywords={TeX, LaTeX, CJK, template, thesis}
-}
-
-% 定义中英文摘要和关键字
-\begin{cabstract}
-  论文的摘要是对论文研究内容和成果的高度概括。摘要应对论文所研究的问题及其研究目
-  的进行描述,对研究方法和过程进行简单介绍,对研究成果和所得结论进行概括。摘要应
-  具有独立性和自明性,其内容应包含与论文全文同等量的主要信息。使读者即使不阅读全
-  文,通过摘要就能了解论文的总体内容和主要成果。
-
-  论文摘要的书写应力求精确、简明。切忌写成对论文书写内容进行提要的形式,尤其要避
-  免“第 1 章……;第 2 章……;……”这种或类似的陈述方式。
-
-  本文介绍清华大学论文模板 \thuthesis{} 的使用方法。本模板符合学校的本科、硕士、
-  博士论文格式要求。
-
-  本文的创新点主要有:
-  \begin{itemize}
-    \item 用例子来解释模板的使用方法;
-    \item 用废话来填充无关紧要的部分;
-    \item 一边学习摸索一边编写新代码。
-  \end{itemize}
-
-  关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。关键词不超过 5
-  个,每个关键词中间用分号分隔。(模板作者注:关键词分隔符不用考虑,模板会自动处
-  理。英文关键词同理。)
-\end{cabstract}
-
-% 如果习惯关键字跟在摘要文字后面,可以用直接命令来设置,如下:
-% \ckeywords{\TeX, \LaTeX, CJK, 模板, 论文}
-
-\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}
-
-% \ekeywords{\TeX, \LaTeX, CJK, template, thesis}

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/denotation.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,3 +1,5 @@
+% !TeX root = ../main.tex
+
 \begin{denotation}[3cm]
 \item[HPC] 高性能计算 (High Performance Computing)
 \item[cluster] 集群

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/data/resume.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/data/resume.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/data/resume.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,3 +1,5 @@
+% !TeX root = ../main.tex
+
 \begin{resume}
 
   \resumeitem{个人简历}

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty	2020-01-05 23:08:16 UTC (rev 53329)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
+%% Copyright (C) 2005-2020 by Ruini Xue <xueruini at gmail.com>
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -22,20 +22,19 @@
 %% through LaTeX.
 %% 
 \RequirePackage{ifxetex}
-\ifxetex\else
-  \ClassError{thuthesis}{You should use XeLaTeX}{}
-  \end{document}
-\fi
+\RequireXeTeX
 \ProvidesPackage{dtx-style}
 \RequirePackage{hypdoc}
 \RequirePackage{ifthen}
+\RequirePackage{fontspec}[2017/01/20]
+\RequirePackage{amsmath}
+\RequirePackage{unicode-math}
 \RequirePackage[UTF8,scheme=chinese]{ctex}
-\RequirePackage{newpxtext}
-\RequirePackage{newpxmath}
 \RequirePackage[
   top=2.5cm, bottom=2.5cm,
   left=4cm, right=2cm,
   headsep=3mm]{geometry}
+\RequirePackage{hologo}
 \RequirePackage{array,longtable,booktabs}
 \RequirePackage{listings}
 \RequirePackage{fancyhdr}
@@ -44,9 +43,54 @@
 \RequirePackage{etoolbox}
 \RequirePackage{metalogo}
 
-\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{%
+\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{
+  \setmainfont{Palatino}
+  \setsansfont[Scale=MatchLowercase]{Helvetica}
+  \setmonofont[Scale=MatchLowercase]{Menlo}
   \xeCJKsetwidth{‘’“”}{1em}
-}{}
+}{
+  \setmainfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyrepagella}
+  \setsansfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyreheros}
+  \setmonofont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+    Scale          = MatchLowercase,
+  ]{texgyrecursor}
+}
+\unimathsetup{
+  math-style=ISO,
+  bold-style=ISO,
+}
+\IfFontExistsTF{XITSMath-Regular.otf}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = XITSMath-Bold,
+    StylisticSet = 8,
+  ]{XITSMath-Regular}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
+}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = *bold,
+    StylisticSet = 8,
+  ]{xits-math}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
+}
 
 \colorlet{thu at macro}{blue!60!black}
 \colorlet{thu at env}{blue!70!black}
@@ -101,7 +145,7 @@
    breakautoindent=true,
    columns=flexible,
    keepspaces=true,
-   gobble=2,
+   gobble=4,
    framesep=3pt,
    rulesep=1pt,
    framerule=1pt,

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/latexmkrc	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,14 +1,23 @@
 # vim: set ft=perl:
-$xdvipdfmx="xdvipdfmx -q -E -o %D %O %S";
-$clean_ext = 'thm bbl hd loe synctex.gz xdv';
-$makeindex = 'makeindex -s gind.ist %O -o %D %S';
-add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
-sub makeglo2gls {
+
+$pdf_mode = 5;
+
+$xelatex = "xelatex -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S";
+$xdvipdfmx = "xdvipdfmx -q -E -o %D %O %S";
+
+$bibtex_use = 1.5;
+
+$clean_ext = "hd loe synctex.gz thm xdv";
+
+$makeindex = "makeindex -s gind.ist %O -o %D %S";
+add_cus_dep('glo', 'gls', 0, 'glo2gls');
+sub glo2gls {
     system("makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"");
 }
-push @generated_exts, "glo", "gls";
+push @generated_exts, 'glo', 'gls';
+
 add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
 sub nlo2nls {
     system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
 }
-push @generated_exts, "nlo", "nls";
+push @generated_exts, 'nlo', 'nls';

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/main.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/main.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,76 +1,72 @@
-\documentclass[degree=master,tocarialchapter]{thuthesis}
-% 选项
-%   degree=[bachelor|master|doctor|postdoctor], % 必选,学位类型
-%   language=[chinese|english], % 可选(默认:chinese),论文的主要语言
-%   secret,                % 可选(默认:关闭),是否有密级
-%   tocarialchapter,       % 可选(默认:关闭),章目录中使用黑体(这项表示同时打开下面两项)
-%   tocarialchapterentry,  % 可选(默认:关闭),单独控制章标题在目录中使用黑体
-%   tocarialchapterpage,   % 可选(默认:关闭),单独控制章页码在目录中使用黑体
+% !TeX encoding = UTF-8
+% !TeX program = xelatex
+% !TeX spellcheck = en_US
 
-% 所有其它可能用到的包都统一放到这里了,可以根据自己的实际添加或者删除。
-\usepackage{thuthesis}
+\documentclass[fontset=windows,degree=master]{thuthesis}
+  % 学位 degree:
+  %   doctor | master | bachelor | postdoc
+  % 学位类型 degree-type:
+  %   academic(默认)| professional
 
-% 定义所有的图片文件在 figures 子目录下
-\graphicspath{{figures/}}
 
-% 可以在这里修改配置文件中的定义。导言区可以使用中文。
-% \def\myname{薛瑞尼}
+% 论文基本配置,加载宏包等全局配置
+\input{thusetup.tex}
 
+
 \begin{document}
 
-%%% 封面部分
+% 封面
+\maketitle
+
+% 使用授权的说明
+\copyrightpage
+
 \frontmatter
-\input{data/cover}
-% 如果使用授权说明扫描页,将可选参数中指定为扫描得到的 PDF 文件名,例如:
-% \makecover[scan-auth.pdf]
-\makecover
+\input{data/abstract.tex}
 
-%% 目录
+% 目录
 \tableofcontents
 
-%% 符号对照表
+% 符号对照表
 \input{data/denotation}
 
 
-%%% 正文部分
+% 正文部分
 \mainmatter
 \input{data/chap01}
 \input{data/chap02}
 
 
-%%% 其它部分
+% 其它部分
 \backmatter
 
-%% 本科生要这几个索引,研究生不要。选择性留下。
-% 插图索引
-\listoffigures
-% 表格索引
-\listoftables
-% 公式索引
-\listofequations
+%% 本科生要求的几个索引。
+% \listoffigures    % 插图索引
+% \listoftables     % 表格索引
+% \listofequations  % 公式索引
 
-
-%% 参考文献
-% 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。
-% 如果不需要参考文献,请将下面两行删除或注释掉。
+% 参考文献
 \bibliographystyle{thuthesis-numeric}      % 顺序编码制
 % \bibliographystyle{thuthesis-author-year}  % 著者-出版年制
 % \bibliographystyle{thuthesis-bachelor}     % 本科生参考文献的著录格式
 \bibliography{ref/refs}
 
+% 致谢
+\input{data/acknowledgements}
 
-%% 致谢
-\input{data/ack}
+% 声明
+\statement
 
-%% 附录
-\begin{appendix}
-\input{data/appendix01}
-\end{appendix}
+% 附录
+\appendix
+% \input{data/appendix-survey}       % 本科生:外文资料的调研阅读报告
+% \input{data/appendix-translation}  % 本科生:外文资料的书面翻译
+\input{data/appendix}
 
-%% 个人简历
+% 个人简历
 \input{data/resume}
 
-%% 本科生进行格式审查是需要下面这个表格,答辩可能不需要。选择性留下。
-% 综合论文训练记录表
-\includepdf[pages=-]{scan-record.pdf}
+% 本科生的综合论文训练记录表
+% \includepdf[pages=-]{scan-record.pdf}
+
 \end{document}

Added: trunk/Master/texmf-dist/doc/latex/thuthesis/math_commands.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/math_commands.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/math_commands.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,290 @@
+% Adapted for use with thuthesis.
+% Original code is at https://github.com/goodfeli/dlbook_notation/blob/master/math_commands.tex
+
+%%%%% NEW MATH DEFINITIONS %%%%%
+
+\newcommand\ceil[1]{\lceil #1 \rceil}
+\newcommand\floor[1]{\lfloor #1 \rfloor}
+
+
+% Vectors
+\newcommand\Vector[1]{\symbf{#1}}
+
+\newcommand\0{{\Vector{0}}}
+\newcommand\vzero{{\Vector{0}}}
+\newcommand\1{{\Vector{1}}}
+\newcommand\vone{{\Vector{1}}}
+
+\newcommand\va{{\Vector{a}}}
+\newcommand\vb{{\Vector{b}}}
+\newcommand\vc{{\Vector{c}}}
+\newcommand\vd{{\Vector{d}}}
+\newcommand\ve{{\Vector{e}}}
+\newcommand\vf{{\Vector{f}}}
+\newcommand\vg{{\Vector{g}}}
+\newcommand\vh{{\Vector{h}}}
+\newcommand\vi{{\Vector{i}}}
+\newcommand\vj{{\Vector{j}}}
+\newcommand\vk{{\Vector{k}}}
+\newcommand\vl{{\Vector{l}}}
+\newcommand\vm{{\Vector{m}}}
+\newcommand\vn{{\Vector{n}}}
+\newcommand\vo{{\Vector{o}}}
+\newcommand\vp{{\Vector{p}}}
+\newcommand\vq{{\Vector{q}}}
+\newcommand\vr{{\Vector{r}}}
+\newcommand\vs{{\Vector{s}}}
+\newcommand\vt{{\Vector{t}}}
+\newcommand\vu{{\Vector{u}}}
+\newcommand\vv{{\Vector{v}}}
+\newcommand\vw{{\Vector{w}}}
+\newcommand\vx{{\Vector{x}}}
+\newcommand\vy{{\Vector{y}}}
+\newcommand\vz{{\Vector{z}}}
+
+\newcommand\valpha{{\Vector{\alpha}}}
+\newcommand\vbeta{{\Vector{\beta}}}
+\newcommand\vgamma{{\Vector{\gamma}}}
+\newcommand\vdelta{{\Vector{\delta}}}
+\newcommand\vepsilon{{\Vector{\epsilon}}}
+\newcommand\vtheta{{\Vector{\theta}}}
+\newcommand\viota{{\Vector{\iota}}}
+\newcommand\vkappa{{\Vector{\kappa}}}
+\newcommand\vlambda{{\Vector{\lambda}}}
+\newcommand\vmu{{\Vector{\mu}}}
+\newcommand\vnu{{\Vector{\nu}}}
+\newcommand\vxi{{\Vector{\xi}}}
+\newcommand\vpi{{\Vector{\pi}}}
+\newcommand\vrho{{\Vector{\rho}}}
+\newcommand\vsigma{{\Vector{\sigma}}}
+\newcommand\vtau{{\Vector{\tau}}}
+\newcommand\vupsilon{{\Vector{\upsilon}}}
+\newcommand\vphi{{\Vector{\phi}}}
+\newcommand\vchi{{\Vector{\chi}}}
+\newcommand\vpsi{{\Vector{\psi}}}
+\newcommand\vomega{{\Vector{\omega}}}
+
+
+% Matrix
+\newcommand\MATRIX[1]{\symbf{#1}}
+
+\newcommand\mA{{\MATRIX{A}}}
+\newcommand\mB{{\MATRIX{B}}}
+\newcommand\mC{{\MATRIX{C}}}
+\newcommand\mD{{\MATRIX{D}}}
+\newcommand\mE{{\MATRIX{E}}}
+\newcommand\mF{{\MATRIX{F}}}
+\newcommand\mG{{\MATRIX{G}}}
+\newcommand\mH{{\MATRIX{H}}}
+\newcommand\mI{{\MATRIX{I}}}
+\newcommand\mJ{{\MATRIX{J}}}
+\newcommand\mK{{\MATRIX{K}}}
+\newcommand\mL{{\MATRIX{L}}}
+\newcommand\mM{{\MATRIX{M}}}
+\newcommand\mN{{\MATRIX{N}}}
+\newcommand\mO{{\MATRIX{O}}}
+\newcommand\mP{{\MATRIX{P}}}
+\newcommand\mQ{{\MATRIX{Q}}}
+\newcommand\mR{{\MATRIX{R}}}
+\newcommand\mS{{\MATRIX{S}}}
+\newcommand\mT{{\MATRIX{T}}}
+\newcommand\mU{{\MATRIX{U}}}
+\newcommand\mV{{\MATRIX{V}}}
+\newcommand\mW{{\MATRIX{W}}}
+\newcommand\mX{{\MATRIX{X}}}
+\newcommand\mY{{\MATRIX{Y}}}
+\newcommand\mZ{{\MATRIX{Z}}}
+
+\newcommand\mGamma{{\MATRIX{\Gamma}}}
+\newcommand\mDelta{{\MATRIX{\Delta}}}
+\newcommand\mTheta{{\MATRIX{\Theta}}}
+\newcommand\mLambda{{\MATRIX{\Lambda}}}
+\newcommand\mXi{{\MATRIX{\Xi}}}
+\newcommand\mPi{{\MATRIX{\Pi}}}
+\newcommand\mSigma{{\MATRIX{\Sigma}}}
+\newcommand\mUpsilon{{\MATRIX{\Upsilon}}}
+\newcommand\mPhi{{\MATRIX{\Phi}}}
+\newcommand\mPsi{{\MATRIX{\Psi}}}
+\newcommand\mOmega{{\MATRIX{\Omega}}}
+
+
+% Tensor
+\newcommand\tens[1]{\symbfsf{#1}}
+\newcommand\tA{{\tens{A}}}
+\newcommand\tB{{\tens{B}}}
+\newcommand\tC{{\tens{C}}}
+\newcommand\tD{{\tens{D}}}
+\newcommand\tE{{\tens{E}}}
+\newcommand\tF{{\tens{F}}}
+\newcommand\tG{{\tens{G}}}
+\newcommand\tH{{\tens{H}}}
+\newcommand\tI{{\tens{I}}}
+\newcommand\tJ{{\tens{J}}}
+\newcommand\tK{{\tens{K}}}
+\newcommand\tL{{\tens{L}}}
+\newcommand\tM{{\tens{M}}}
+\newcommand\tN{{\tens{N}}}
+\newcommand\tO{{\tens{O}}}
+\newcommand\tP{{\tens{P}}}
+\newcommand\tQ{{\tens{Q}}}
+\newcommand\tR{{\tens{R}}}
+\newcommand\tS{{\tens{S}}}
+\newcommand\tT{{\tens{T}}}
+\newcommand\tU{{\tens{U}}}
+\newcommand\tV{{\tens{V}}}
+\newcommand\tW{{\tens{W}}}
+\newcommand\tX{{\tens{X}}}
+\newcommand\tY{{\tens{Y}}}
+\newcommand\tZ{{\tens{Z}}}
+
+
+% Graph
+\newcommand\gA{{\mathcal{A}}}
+\newcommand\gB{{\mathcal{B}}}
+\newcommand\gC{{\mathcal{C}}}
+\newcommand\gD{{\mathcal{D}}}
+\newcommand\gE{{\mathcal{E}}}
+\newcommand\gF{{\mathcal{F}}}
+\newcommand\gG{{\mathcal{G}}}
+\newcommand\gH{{\mathcal{H}}}
+\newcommand\gI{{\mathcal{I}}}
+\newcommand\gJ{{\mathcal{J}}}
+\newcommand\gK{{\mathcal{K}}}
+\newcommand\gL{{\mathcal{L}}}
+\newcommand\gM{{\mathcal{M}}}
+\newcommand\gN{{\mathcal{N}}}
+\newcommand\gO{{\mathcal{O}}}
+\newcommand\gP{{\mathcal{P}}}
+\newcommand\gQ{{\mathcal{Q}}}
+\newcommand\gR{{\mathcal{R}}}
+\newcommand\gS{{\mathcal{S}}}
+\newcommand\gT{{\mathcal{T}}}
+\newcommand\gU{{\mathcal{U}}}
+\newcommand\gV{{\mathcal{V}}}
+\newcommand\gW{{\mathcal{W}}}
+\newcommand\gX{{\mathcal{X}}}
+\newcommand\gY{{\mathcal{Y}}}
+\newcommand\gZ{{\mathcal{Z}}}
+
+
+% Sets
+\newcommand\sA{{\mathbb{A}}}
+\newcommand\sB{{\mathbb{B}}}
+\newcommand\sC{{\mathbb{C}}}
+\newcommand\sD{{\mathbb{D}}}
+% Don't use a set called E, because this would be the same as our symbol
+% for expectation.
+\newcommand\sF{{\mathbb{F}}}
+\newcommand\sG{{\mathbb{G}}}
+\newcommand\sH{{\mathbb{H}}}
+\newcommand\sI{{\mathbb{I}}}
+\newcommand\sJ{{\mathbb{J}}}
+\newcommand\sK{{\mathbb{K}}}
+\newcommand\sL{{\mathbb{L}}}
+\newcommand\sM{{\mathbb{M}}}
+\newcommand\sN{{\mathbb{N}}}
+\newcommand\sO{{\mathbb{O}}}
+\newcommand\sP{{\mathbb{P}}}
+\newcommand\sQ{{\mathbb{Q}}}
+\newcommand\sR{{\mathbb{R}}}
+\newcommand\sS{{\mathbb{S}}}
+\newcommand\sT{{\mathbb{T}}}
+\newcommand\sU{{\mathbb{U}}}
+\newcommand\sV{{\mathbb{V}}}
+\newcommand\sW{{\mathbb{W}}}
+\newcommand\sX{{\mathbb{X}}}
+\newcommand\sY{{\mathbb{Y}}}
+\newcommand\sZ{{\mathbb{Z}}}
+
+
+% Random variables
+\newcommand\RandomVariable[1]{\symit{#1}}
+
+\newcommand\rA{{\RandomVariable{A}}}
+\newcommand\rB{{\RandomVariable{B}}}
+\newcommand\rC{{\RandomVariable{C}}}
+\newcommand\rD{{\RandomVariable{D}}}
+\newcommand\rE{{\RandomVariable{E}}}
+\newcommand\rF{{\RandomVariable{F}}}
+\newcommand\rG{{\RandomVariable{G}}}
+\newcommand\rH{{\RandomVariable{H}}}
+\newcommand\rI{{\RandomVariable{I}}}
+\newcommand\rJ{{\RandomVariable{J}}}
+\newcommand\rK{{\RandomVariable{K}}}
+\newcommand\rL{{\RandomVariable{L}}}
+\newcommand\rM{{\RandomVariable{M}}}
+\newcommand\rN{{\RandomVariable{N}}}
+\newcommand\rO{{\RandomVariable{O}}}
+\newcommand\rP{{\RandomVariable{P}}}
+\newcommand\rQ{{\RandomVariable{Q}}}
+\newcommand\rR{{\RandomVariable{R}}}
+\newcommand\rS{{\RandomVariable{S}}}
+\newcommand\rT{{\RandomVariable{T}}}
+\newcommand\rU{{\RandomVariable{U}}}
+\newcommand\rV{{\RandomVariable{V}}}
+\newcommand\rW{{\RandomVariable{W}}}
+\newcommand\rX{{\RandomVariable{X}}}
+\newcommand\rY{{\RandomVariable{Y}}}
+\newcommand\rZ{{\RandomVariable{Z}}}
+
+% Random vectors
+\newcommand\RandomVector[1]{\symbf{#1}}
+
+\newcommand\rvA{{\RandomVector{A}}}
+\newcommand\rvB{{\RandomVector{B}}}
+\newcommand\rvC{{\RandomVector{C}}}
+\newcommand\rvD{{\RandomVector{D}}}
+\newcommand\rvE{{\RandomVector{E}}}
+\newcommand\rvF{{\RandomVector{F}}}
+\newcommand\rvG{{\RandomVector{G}}}
+\newcommand\rvH{{\RandomVector{H}}}
+\newcommand\rvI{{\RandomVector{I}}}
+\newcommand\rvJ{{\RandomVector{J}}}
+\newcommand\rvK{{\RandomVector{K}}}
+\newcommand\rvL{{\RandomVector{L}}}
+\newcommand\rvM{{\RandomVector{M}}}
+\newcommand\rvN{{\RandomVector{N}}}
+\newcommand\rvO{{\RandomVector{O}}}
+\newcommand\rvP{{\RandomVector{P}}}
+\newcommand\rvQ{{\RandomVector{Q}}}
+\newcommand\rvR{{\RandomVector{R}}}
+\newcommand\rvS{{\RandomVector{S}}}
+\newcommand\rvT{{\RandomVector{T}}}
+\newcommand\rvU{{\RandomVector{U}}}
+\newcommand\rvV{{\RandomVector{V}}}
+\newcommand\rvW{{\RandomVector{W}}}
+\newcommand\rvX{{\RandomVector{X}}}
+\newcommand\rvY{{\RandomVector{Y}}}
+\newcommand\rvZ{{\RandomVector{Z}}}
+
+\newcommand\laplace{\mathrm{Laplace}} % Laplace distribution
+
+\newcommand\E{\mathbb{E}}
+\newcommand\Ls{\mathcal{L}}
+\newcommand\R{\mathbb{R}}
+\newcommand\emp{\tilde{p}}
+\newcommand\lr{\alpha}
+\newcommand\reg{\lambda}
+\newcommand\rect{\mathrm{rectifier}}
+\newcommand\softmax{\mathrm{softmax}}
+\newcommand\sigmoid{\sigma}
+\newcommand\softplus{\zeta}
+\newcommand\KL{D_{\mathrm{KL}}}
+\newcommand\Var{\mathrm{Var}}
+\newcommand\standarderror{\mathrm{SE}}
+\newcommand\Cov{\mathrm{Cov}}
+% Wolfram Mathworld says $L^2$ is for function spaces and $\ell^2$ is for vectors
+% But then they seem to use $L^2$ for vectors throughout the site, and so does
+% wikipedia.
+\newcommand\normlzero{L^0}
+\newcommand\normlone{L^1}
+\newcommand\normltwo{L^2}
+\newcommand\normlp{L^p}
+\newcommand\normmax{L^\infty}
+
+\DeclareMathOperator*{\argmax}{arg\,max}
+\DeclareMathOperator*{\argmin}{arg\,min}
+
+\DeclareMathOperator{\sign}{sign}
+\DeclareMathOperator{\Tr}{Tr}
+\let\ab\allowbreak


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/math_commands.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/thuthesis/ref/appendix.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/ref/appendix.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/ref/appendix.bib	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,14 @@
+ at book{abrahams99tex,
+  author =       {Paul W. Abrahams and Karl Berry and Kathryn A. Hargreaves},
+  title =        {{\TeX} for the Impatient},
+  publisher =    {Addison-Wesley},
+  year =         {1990},
+}
+
+ at incollection{salomon1995advanced,
+  author =       {David Salomon},
+  title =        {The advanced {\TeX}book},
+  address =      {New York},
+  publisher =    {Springer},
+  year =         {1995},
+}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/ref/appendix.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib	2020-01-05 23:08:16 UTC (rev 53329)
@@ -58,7 +58,7 @@
 
 @book{tex,
   author =       "Donald E. Knuth",
-  title =        "The {\TeX} Book",
+  title =        "The {\TeX}book",
   publisher =    "Addison-Wesley Publishing Company",
   address =      "Reading, MA",
   year =         1989,

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/shuji.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,20 +0,0 @@
-\documentclass[degree=master]{thuthesis}
-
-\begin{document}
-\thusetup{
-  cauthor={薛瑞尼},
-  ctitle={没有英文的中文标题}
-}
-
-\shuji % 使用默认标题和默认作者
-
-\shuji[使用默认作者的标题]
-
-\shuji[同时修改标题和作者的标题][尼瑞薛]
-
-\ifxetex
-  \shuji[清华大学学位 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
-\else
-  \shuji[清华大学学位 \raisebox{8pt}{\LaTeX} 论文模板 \raisebox{8pt}{v\version} 样例]
-\fi
-\end{document}

Added: trunk/Master/texmf-dist/doc/latex/thuthesis/spine.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/thuthesis/spine.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/spine.pdf	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/spine.pdf	2020-01-05 23:08:16 UTC (rev 53329)

Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/spine.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/thuthesis/spine.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/spine.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/spine.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,19 @@
+\documentclass[degree=master]{thuthesis}
+
+\thusetup{
+  author = {薛瑞尼},
+  title  = {没有英文的中文标题}
+}
+
+\begin{document}
+
+
+\spine % 使用默认标题和默认作者
+
+\spine[使用默认作者的标题]
+
+\spine[同时修改标题和作者的标题][尼瑞薛]
+
+% 中英文混合时需要微调
+\spine[清华大学学位 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/spine.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/thuthesis/thusetup.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/thuthesis/thusetup.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/thuthesis/thusetup.tex	2020-01-05 23:08:16 UTC (rev 53329)
@@ -0,0 +1,154 @@
+% !TeX root = ../main.tex
+
+% 论文基本信息配置
+
+\thusetup{
+  %******************************
+  % 注意:
+  %   1. 配置里面不要出现空行
+  %   2. 不需要的配置信息可以删除
+  %******************************
+  %
+  % 标题
+  %   可使用“\\”命令手动控制换行
+  %
+  title  = {清华大学学位论文 \LaTeX{} 模板\\使用示例文档 v\version},
+  title* = {An Introduction to \LaTeX{} Thesis Template of Tsinghua
+            University v\version},
+  %
+  % 学位
+  %   1. 学术型
+  %      - 中文
+  %        需注明所属的学科门类,例如:
+  %        哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、医学、
+  %        军事学、管理学、艺术学
+  %      - 英文
+  %        博士:Doctor of Philosophy
+  %        硕士:
+  %          哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
+  %          填写“Master of Arts“,其它填写“Master of Science”
+  %   2. 专业型
+  %      直接填写专业学位的名称,例如:
+  %      教育博士、工程硕士等
+  %      Doctor of Education, Master of Engineering
+  %   3. 本科生不需要填写
+  %
+  degree-name  = {工学硕士},
+  degree-name* = {Master of Science},
+  %
+  % 培养单位
+  %   填写所属院系的全名
+  %
+  department = {计算机科学与技术系},
+  %
+  % 学科
+  %   1. 学术型学位
+  %      获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称
+  %   2. 工程硕士
+  %      工程领域名称
+  %   3. 其他专业型学位
+  %      不填写此项
+  %   4. 本科生不需要填写
+  %
+  discipline  = {计算机科学与技术},
+  discipline* = {Computer Science and Technology},
+  %
+  % 姓名
+  %
+  author  = {薛瑞尼},
+  author* = {Xue Ruini},
+  %
+  % 指导教师
+  %   中文姓名和职称之间以英文逗号“,”分开,下同
+  %
+  supervisor  = {郑纬民教授},
+  supervisor* = {Professor Zheng Weimin},
+  %
+  % 副指导教师
+  %
+  associate-supervisor  = {陈文光教授},
+  associate-supervisor* = {Professor Chen Wenguang},
+  %
+  % 联合指导教师
+  %
+  % joint-supervisor  = {某某某教授},
+  % joint-supervisor* = {Professor Mou Moumou},
+  %
+  % 日期
+  %   使用 ISO 格式;默认为当前时间
+  %
+  % date = {2019-07-07},
+  %
+  % 密级和年限
+  %   秘密, 机密, 绝密
+  %
+  % secret-level = {秘密},
+  % secret-year  = {10},
+  %
+  % 博士后专有部分
+  %
+  % clc                = {分类号},
+  % udc                = {UDC},
+  % id                 = {编号},
+  % discipline-level-1 = {计算机科学与技术},  % 流动站(一级学科)名称
+  % discipline-level-2 = {系统结构},          % 专业(二级学科)名称
+  % start-date         = {2011-07-01},        % 研究工作起始时间
+}
+
+%% Put any packages you would like to use here
+
+% 表格中支持跨行
+\usepackage{multirow}
+
+% 跨页表格
+\usepackage{longtable}
+
+% 固定宽度的表格
+\usepackage{tabularx}
+
+% 表格中的反斜线
+\usepackage{diagbox}
+
+% 确定浮动对象的位置,可以使用 H,强制将浮动对象放到这里(可能效果很差)
+\usepackage{float}
+
+% 浮动图形控制宏包。
+% 允许上一个 section 的浮动图形出现在下一个 section 的开始部分
+% 该宏包提供处理浮动对象的 \FloatBarrier 命令,使所有未处
+% 理的浮动图形立即被处理。这三个宏包仅供参考,未必使用:
+% \usepackage[below]{placeins}
+% \usepackage{floatflt} % 图文混排用宏包
+% \usepackage{rotating} % 图形和表格的控制旋转
+
+% 定理类环境宏包
+\usepackage[amsmath,thmmarks,hyperref]{ntheorem}
+
+% 给自定义的宏后面自动加空白
+% \usepackage{xspace}
+
+% 借用 ltxdoc 里面的几个命令。
+\def\cmd#1{\cs{\expandafter\cmd at to@cs\string#1}}
+\def\cmd at to@cs#1#2{\char\number`#2\relax}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+
+\newcommand*{\meta}[1]{{%
+  \ensuremath{\langle}\rmfamily\itshape#1\/\ensuremath{\rangle}}}
+\providecommand\marg[1]{%
+  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\providecommand\oarg[1]{%
+  {\ttfamily[}\meta{#1}{\ttfamily]}}
+\providecommand\parg[1]{%
+  {\ttfamily(}\meta{#1}{\ttfamily)}}
+\providecommand\pkg[1]{{\sffamily#1}}
+
+% 定义所有的图片文件在 figures 子目录下
+\graphicspath{{figures/}}
+
+% 数学命令
+\input{math_commands.tex}
+
+% 定义自己常用的东西
+% \def\myname{薛瑞尼}
+
+% hyperref 宏包在最后调用
+\usepackage{hyperref}


Property changes on: trunk/Master/texmf-dist/doc/latex/thuthesis/thusetup.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/thuthesis/Makefile
===================================================================
--- trunk/Master/texmf-dist/source/latex/thuthesis/Makefile	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/source/latex/thuthesis/Makefile	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,73 +1,74 @@
 # Makefile for ThuThesis
 
-# Set opts for latexmk if you use it
-LATEXMKOPTS = -xelatex -file-line-error -halt-on-error -interaction=nonstopmode
-# Basename of thesis
-THESISMAIN = main
-# Basename of shuji
-SHUJIMAIN = shuji
+PACKAGE = thuthesis
+THESIS  = main
+SPINE   = spine
 
-PACKAGE=thuthesis
-SOURCES=$(PACKAGE).ins $(PACKAGE).dtx
-THESISCONTENTS=$(THESISMAIN).tex data/*.tex $(FIGURES)
-# NOTE: update this to reflect your local file types.
-FIGURES=$(wildcard figures/*.pdf)
-BIBFILE=ref/*.bib
-BSTFILE=*.bst
-SHUJICONTENTS=$(SHUJIMAIN).tex
-CLSFILES=dtx-style.sty $(PACKAGE).cls
+SOURCES = $(PACKAGE).ins $(PACKAGE).dtx
+CLSFILE = dtx-style.sty $(PACKAGE).cls
 
+LATEXMK = latexmk
+
 # 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 shuji viewshuji doc viewdoc cls check FORCE_MAKE
+.PHONY: all all-dev clean distclean dist thesis viewthesis spine viewspine doc viewdoc cls check save savepdf test FORCE_MAKE
 
-all: doc thesis shuji
+thesis: $(THESIS).pdf
 
-cls: $(CLSFILES)
+all: thesis spine
 
-$(CLSFILES): $(SOURCES)
+all-dev: doc all
+
+cls: $(CLSFILE)
+
+$(CLSFILE): $(SOURCES)
 	xetex $(PACKAGE).ins
 
-viewdoc: doc
-	$(OPEN) $(PACKAGE).pdf
-
 doc: $(PACKAGE).pdf
 
-viewthesis: thesis
-	$(OPEN) $(THESISMAIN).pdf
+spine: $(SPINE).pdf
 
-thesis: $(THESISMAIN).pdf
+$(PACKAGE).pdf: cls FORCE_MAKE
+	$(LATEXMK) $(PACKAGE).dtx
 
-viewshuji: shuji
-	$(OPEN) $(SHUJIMAIN).pdf
+$(THESIS).pdf: cls FORCE_MAKE
+	$(LATEXMK) $(THESIS)
 
-shuji: $(SHUJIMAIN).pdf
+$(SPINE).pdf: cls FORCE_MAKE
+	$(LATEXMK) $(SPINE)
 
-$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex FORCE_MAKE
-	latexmk $(LATEXMKOPTS) $(PACKAGE).dtx
+viewdoc: doc
+	$(LATEXMK) -pv $(PACKAGE).dtx
 
-$(THESISMAIN).pdf: $(CLSFILES) $(BSTFILE) FORCE_MAKE
-	latexmk $(LATEXMKOPTS) $(THESISMAIN)
+viewthesis: thesis
+	$(LATEXMK) -pv $(THESIS)
 
-$(SHUJIMAIN).pdf: $(CLSFILES) FORCE_MAKE
-	latexmk $(LATEXMKOPTS) $(SHUJIMAIN)
+viewspine: spine
+	$(LATEXMK) -pv $(SPINE)
 
+save:
+	bash testfiles/save.sh
+
+savepdf:
+	bash testfiles/save-pdf.sh
+
+test:
+	l3build check
+
 clean:
-	latexmk -c $(PACKAGE).dtx $(THESISMAIN) $(SHUJIMAIN)
-	-@$(RM) *~
+	$(LATEXMK) -c $(PACKAGE).dtx $(THESIS) $(SPINE)
+	-@$(RM) *~ main-survey.*
 
 cleanall: clean
-	-@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf $(SHUJIMAIN).pdf
+	-@$(RM) $(PACKAGE).pdf $(THESIS).pdf $(SPINE).pdf
 
 distclean: cleanall
-	-@$(RM) $(CLSFILES)
+	-@$(RM) $(CLSFILE)
 	-@$(RM) -r dist
 
 check: FORCE_MAKE
@@ -78,5 +79,5 @@
 	@[[ $(shell grep -E -c '"version": "$(version)"' package.json) -eq 1 ]] || (echo "update version in package.json before release"; exit 1)
 endif
 
-dist: check all
+dist: check all-dev
 	npm run build -- --version=$(version)

Modified: trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
+% Copyright (C) 2005-2020 by Ruini Xue <xueruini at gmail.com>
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -16,13 +16,12 @@
 %
 % \iffalse
 %<*driver>
-\ProvidesFile{thuthesis.dtx}[2019/04/27 5.5.2 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2020/01/06 6.0.0 Tsinghua University Thesis Template]
 \documentclass{ltxdoc}
 \usepackage{dtx-style}
 
 \EnableCrossrefs
 \CodelineIndex
-\RecordChanges
 
 \begin{document}
   \DocInput{\jobname.dtx}
@@ -53,90 +52,8 @@
 %
 % \GetFileInfo{\jobname.dtx}
 %
-% \changes{v1.0}{2005/07/06}{Please refer to ``Bao--Pan'' version.}
-% \changes{v1.1}{2005/11/03}{Initial version, migrate from the old ``Bao--Pan''
-% version. Make the template a class instead of package.}
-% \changes{v1.2}{2005/11/04}{Remove \pkg{fancyref}; Remove \pkg{ucite} and implement
-% \cs{onlinecite}; use package \pkg{arial} or \pkg{helvet} selectively.}
-% \changes{v1.3}{2005/11/14}{Replace \pkg{subfigure} with \pkg{subfig}, replace \pkg{caption2}
-% with \pkg{caption}, add details about using figure are in the example.}
-% \changes{v1.4rc1}{2005/11/20}{I do not know why \cs{thu at authorizationaddon} does not work
-% now for v1.3, while it's fine in v1.2. Temporarily, I remove the directive
-% :(. There might be better solution. Other changes: add \option{config} option to
-% subfig to be compatible with subfigure. add \pkg{courier} package for tt font.}
-% \changes{v1.4}{2005/12/05}{Fix the problem of \textbf{chinese}, which is
-% because both CJK and everysel redefine the \cs{selectfont}. So, a not so good
-% workaround is to merge them up. Add \file{shuji.tex} example. Add \cs{pozhehao} command.}
-% \changes{v2.1}{2006/02/27}{Add support to bachelor thesis.}
-% \changes{v2.1}{2006/03/01}{Remove \pkg{fancyhdr} and \pkg{geometry}.}
-% \changes{v2.1}{2006/03/01}{Redefine footnote marks.}
-% \changes{v2.1}{2006/03/01}{Replace \file{thubib.bst} with \file{chinesebst.bst}.}
-% \changes{v2.1}{2006/03/02}{Merge the modification of \pkg{ntheorem}.}
-% \changes{v2.1}{2006/03/02}{Remove \pkg{footmisc} and refine the document.}
-% \changes{v2.1}{2006/03/03}{Work very hard on the document.}
-% \changes{v2.1}{2006/03/03}{Add \cs{checklab} code to reduce ``unresolved labels'' warning}
-% \changes{v2.2}{2006/03/26}{Adjust margins. How bad it is to simulate MS WORD!.}
-% \changes{v2.2}{2006/03/26}{Add bachelor training overview details supporting.}
-% \changes{v2.2}{2006/03/26}{CJK support in preamble.}
-% \changes{v2.2}{2006/03/26}{Adjust hyperref to avoid boxes around links.}
-% \changes{v2.3}{2006/04/07}{Fix a great bug: \cs{PassOptionsToClass} and \cs{LoadClass}
-% rather than \cs{PassOptionToPackage} and \cs{LoadPackage}.}
-% \changes{v2.3}{2006/04/07}{Reorganize the codes in cover, make the pagestyle more readable.}
-% \changes{v2.3}{2006/04/07}{Add gbk2uni into the document.}
-% \changes{v2.3}{2006/04/07}{Support \option{openright} and openany.}
-% \changes{v2.3}{2006/04/09}{Adjust \cs{hypersetup} to remove color and box.}
-% \changes{v2.3}{2006/04/09}{Adjust margins again.}
-% \changes{v2.3}{2006/04/09}{Adjust references formats.}
-% \changes{v2.3}{2006/04/09}{Redefine frontmatter and mainmatter to fit our case.}
-% \changes{v2.3}{2006/04/09}{Add assumption environment.}
-% \changes{v2.3}{2006/04/09}{Change the brace in the cover.}
-% \changes{v2.4}{2006/04/14}{Fill more pdf info. with \cs{hypersetup}.}
-% \changes{v2.4}{2006/04/14}{自动隐藏密级为内部时后面的五角星。}
-% \changes{v2.4}{2006/04/14}{增加“注释 (Remark)”环境。}
-% \changes{v2.4}{2006/04/14}{压缩 item 之间的距离。}
-% \changes{v2.4}{2006/04/14}{\file{thubib.bst} 文献标题取消自动小写。}
-% \changes{v2.4}{2006/04/14}{中文参考文献取消 In: Proceedings。}
-% \changes{v2.4}{2006/04/14}{英文文参考文献调整 In: editor, Proceedings。}
-% \changes{v2.4}{2006/04/14}{参考文献为学位论文时,加方括号,作者后面为实心点。}
-% \changes{v2.4}{2006/04/14}{中文参考文献作者超过三个加等。}
-% \changes{v2.4}{2006/04/14}{中文参考文献需要在 bib 中指定 |lang="chinese"|。}
-% \changes{v2.4}{2006/04/14}{学位论文不在需要 type 字段。}
-% \changes{v2.4}{2006/04/14}{为摘要等条目增加书签。}
-% \changes{v2.4}{2006/04/14}{章节的编号用黑体,也就是自动打开 \option{arialtitle} 选项。}
-% \changes{v2.4.1}{2006/04/17}{2.4 忘了把关键词的 tabular 改成 thu at tabular。}
-% \changes{v2.4.1}{2006/04/17}{参考文献最后一个作者前是逗号而不是 and。}
-% \changes{v2.4.2}{2006/04/18}{去掉参考文献第二个作者后面烦人的逗号。}
-% \changes{v2.5}{2006/05/19}{对本科论文进行大幅度的重写,因为教务处修改了格式要求。}
-% \changes{v2.5}{2006/05/19}{重新整理代码,使其布局更易读。}
-% \changes{v2.5.1}{2006/05/24}{如果选项设置了 dvips,但是用 PDF\LaTeX\ 编译,报错。}
-% \changes{v2.5.1}{2006/05/24}{根据教务处的新要求调整附录部分。}
-% \changes{v2.5.1}{2006/05/25}{参考文献中杂志文章如果没有卷号,那么页码直接跟在
-% 年份后面,并用句点分割。在 \file{thubib.bst} 中增加 output.year 函数。}
-% \changes{v2.6}{2006/06/09}{增加 dvipdfm 选项。}
-% \changes{v2.6.1}{2006/06/16}{取消 \file{thubib.bst} 中 inbook 类 volume 后的页
-% 码。}
-% \changes{v2.6.2}{2006/06/18}{改正 groupmembers 的拼写错误。}
-% \changes{v3.0}{2007/05/12}{不用专门为本科论文生成“\textbf{提交}”版本了。}
-% \changes{v3.0}{2007/05/12}{没有了综合论文训练页面,很多本科论文专用命令就消失了。}
-% \changes{v4.4}{2008/05/12}{修复网址断字。}
-% \changes{v4.5}{2008/01/03}{加入 \XeTeX\ 支持,需要 \pkg{xeCJK}。}
-% \changes{v4.5}{2008/01/04}{彻底转向 UTF-8,并支持 \XeLaTeX。}
-% \changes{v4.5}{2009/01/03}{增加 xetex, pdftex 选项。}
-% \changes{v4.6}{2011/04/27}{增加博士后文档部分。}
-% \changes{v4.6}{2011/10/22}{使用手册更新。}
-% \changes{v4.7}{2012/06/12}{去掉 \pkg{hypernat} 依赖,\pkg{hyperref} 和 \pkg{natbib} 可以很好配合了。}
-% \changes{v4.8}{2013/03/02}{no need to load \pkg{indentfirst} directly since we use \pkg{ctex}.}
-% \changes{v4.8}{2013/03/02}{内部调用 \pkg{ctex} 宏包,自动检测编译引擎。}
-% \changes{v4.8}{2013/03/04}{dvips method is deprecated. We ask their users to load it manually.}
-% \changes{v4.8}{2013/03/09}{reset baselinestretch after ctex's change.}
-% \changes{v4.8}{2014/11/25}{好几年累积的一些更新,最重要的是切换到 \CTeX。}
-% \changes{v5.4.2}{2017/12/16}{删除 \cs{pozhehao}。}
-% \changes{v5.4.4}{2018/04/22}{删除 \option{arialtitle},所有论文格式都一样。}
-%
 % \def\indexname{索引}
-% \def\glossaryname{修改记录}
 % \IndexPrologue{\section{\indexname}}
-% \GlossaryPrologue{\section{\glossaryname}}
 %
 % \title{\bfseries\color{violet}\thuthesis:清华大学学位论文模板}
 % \author{{\fangsong 薛瑞尼}\\[5pt]\texttt{xueruini at gmail.com}}
@@ -154,9 +71,11 @@
 % \begin{abstract}
 % \noindent
 % \begin{enumerate}
-% \item 本模板的发布遵守 \LaTeX\ Project Public License,使用前请认真阅读协议内
+% \item 本模板的发布遵守 \LaTeX{} Project Public License,使用前请认真阅读协议内
 %   容。
-% \item 本模板为作者根据清华大学教务处颁发的《综合论文训练写作指南》,
+% \item 本模板为作者根据
+%   清华大学教务处颁发的
+%   \href{http://www.law.tsinghua.edu.cn/publish/law/7024/2012/20120216153516317135347/20120216153516317135347_.html}{《综合论文训练写作指南》},
 %   清华大学研究生院颁发的
 %   \href{http://yjsy.cic.tsinghua.edu.cn/docinfo/board/boarddetail.jsp?columnId=001050603&parentColumnId=0010506&itemSeq=5365}{《研究生学位论文写作指南》},
 %   清华大学
@@ -167,7 +86,7 @@
 %   权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格式审查老师
 %   不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。
 % \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵
-%   守 \LaTeX\ Project Public License 协议。由于违犯协议而引起的任何纠纷争端均与
+%   守 \LaTeX{} Project Public License 协议。由于违犯协议而引起的任何纠纷争端均与
 %   本模板作者无关。
 % \end{enumerate}
 % \end{abstract}
@@ -183,35 +102,39 @@
 % \clearpage
 %
 % \section{模板介绍}
-% \thuthesis\ (\textbf{T}sing\textbf{h}ua \textbf{U}niversity \LaTeX\
+% \thuthesis{} (\textbf{T}sing\textbf{h}ua \textbf{U}niversity \LaTeX{}
 % \textbf{Thesis} Template) 是为了帮助清华大学毕业生撰写毕业论文而编写
-% 的 \LaTeX\ 论文模板。
+% 的 \LaTeX{} 论文模板。
 %
-% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处可以参考示例文档或者根据
-% 第~\ref{sec:howtoask} 节说明提问,有兴趣者都可以参与完善此手册,也非常欢迎对代
-% 码的贡献。
+% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处,或者想提出改进建议,
+% 可以在 \href{https://github.com/xueruini/thuthesis/issues/}{GitHub Issues}
+% 参与讨论或提问。
+% 有兴趣者都可以参与完善此手册,也非常欢迎对代码的贡献。
 %
 % \note[注意:]{模板的作用在于减少论文写作过程中格式调整的时间。前提是遵守模板的
-% 用法,否则即便用了 \thuthesis\ 也难以保证输出的论文符合学校规范。}
+% 用法,否则即便用了 \thuthesis{} 也难以保证输出的论文符合学校规范。}
 %
+% 用户如果遇到 bug,或者发现与学校《写作指南》 的要求不一致,可以尝试以下办法:
+% \begin{enumerate}
+%   \item 将模板升级到最新,见第~\ref{sec:upgrade} 节;
+%   \item 阅读 \href{https://github.com/xueruini/thuthesis/wiki/FAQ}{FAQ};
+%   \item 在 GitHub Issues 中按照说明
+%     \href{https://github.com/xueruini/thuthesis/issues/new?template=bug_report.md}{报告 bug}。
+% \end{enumerate}
 %
 % \section{安装}
 % \label{sec:installation}
 %
-% \thuthesis\ 已经包含在主要的 \TeX\ 发行版中,一般不需要安装,可以利用发行版自
-% 带更新工具自动更新。阅读文档可以使用以下命令:
-% \begin{shell}
-% $ texdoc thuthesis
-% \end{shell}
+% \thuthesis{} 已经包含在主要的 \TeX{} 发行版中,但是通常版本较旧,
+% 而且不方便更新。
+% 建议使用 GitHub 上的最新版:
+% \url{https://github.com/xueruini/thuthesis}。
 %
-% 如果要使用开发版,需自己下载,\thuthesis\ 相关链接:
-% \begin{itemize}
-% \item 主页:\href{https://github.com/xueruini/thuthesis}{GitHub}
-% \item 下载:\href{http://www.ctan.org/pkg/thuthesis}{CTAN}
-% \end{itemize}
+% 模板支持在 TeX Live、MacTeX 和 MiKTeX 平台下进行编译,但要求 2017 年或更新的发行版。
+% 当然,尽可能使用最新的版本可以避免 bug。
 %
 % \subsection{模板的组成}
-% 下表列出了 \thuthesis\ 的主要文件及其功能介绍:
+% 下表列出了 \thuthesis{} 的主要文件及其功能介绍:
 %
 % \begin{longtable}{l|p{8cm}}
 % \toprule
@@ -229,11 +152,11 @@
 % thuthesis-author-year.bst & 参考文献样式文件\\
 % tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\\midrule
 % main.tex & 示例文档主文件\\
-% shuji.tex & 书脊示例文档\\
+% spine.tex & 书脊示例文档\\
 % ref/ & 示例文档参考文献目录\\
 % data/ & 示例文档章节具体内容\\
 % figures/ & 示例文档图片路径\\
-% thuthesis.sty & 为示例文档加载其它宏包\\\midrule
+% thusetup.tex & 示例文档基本配置\\\midrule
 % Makefile & Makefile\\
 % latexmkrc & latexmk 配置文件 \\
 % README.md & Readme\\
@@ -250,113 +173,80 @@
 %
 % \subsection{生成模板}
 % \label{sec:generate-cls}
-% \note[提示:]{若使用 \TeX 发行版自带的 \thuthesis\ 或 Github 上发布的版本,可忽
-% 略此节,直接阅读第~\ref{sec:generate-thesis} 节。若下载 CTAN 包或者 Github 开发
-% 代码,请阅读本节了解生成模板文件的步骤。}
+% 模板的源文件(\file{thuthesis.dtx})中包含了大量的注释,需要将注释去掉生成轻量
+% 级的 \file{.cls} 文件供 \cs{documentclass} 调用。
 %
-% 模板解压缩后生成文件夹 \file{thuthesis-vX.Y.Z}\footnote{\texttt{vX.Y.Z} 为版本
-% 号。},其中包括:模板源文件(\file{thuthesis.ins} 和 \file{thuthesis.dtx}),参
-% 考文献样式 \file{thuthesis-numeric.bst} 和 \file{thuthesis-author-year.bst},示例文档
-% (\file{main.tex},\file{shuji.tex},\file{thuthesis.sty}\footnote{可能用到的包
-% 以及一些命令定义都放在这里,以免 \file{thuthesis.cls} 过分臃
-% 肿。},\file{data/} 和 \file{figures/} 和 \file{ref/})。在使用之前需要先生成模
-% 板文件和配置文件(具体命令细节请参考 \file{README.md} 和 \file{Makefile}):
-%
 % \begin{shell}
-% $ cd thuthesis-vX.Y.Z
-% # 生成 thuthesis.cls
-% $ xetex thuthesis.ins
-%
-% # 下面的命令用来生成用户手册,可以不执行
-% $ xelatex thuthesis.dtx
-% $ makeindex -s gind.ist -o thuthesis.ind thuthesis.idx
-% $ makeindex -s gglo.ist -o thuthesis.gls thuthesis.glo
-% $ xelatex thuthesis.dtx
-% $ xelatex thuthesis.dtx  % 生成说明文档 thuthesis.pdf
+%   $ xetex thuthesis.ins
 % \end{shell}
 %
-% \subsection{生成论文}
+% \note[注意:]{如果没有生成的模板 \file{thuthesis.cls} 文件
+%   (跟 \file{main.tex} 同一目录下),
+%   \LaTeX{} 在编译时可能找到发行版中较旧版本的 \file{.cls},从而造成冲突。}
+%
+% \subsection{编译论文}
 % \label{sec:generate-thesis}
 % 本节介绍几种常见的生成论文的方法。用户可根据自己的情况选择。
 %
-% \subsubsection{\XeLaTeX}
-% \label{sec:xelatex}
-% 很多用户对 \LaTeX\ 命令执行的次数不太清楚。一个基本的原则是多次运行 \LaTeX\ 命
-% 令直至不再出现警告。下面给出生成示例文档的详细过程(\texttt{\#} 开头的行为注
-% 释),首先来看推荐的 \texttt{xelatex} 方式:
+% \subsubsection{GNU make}
+% \label{sec:make}
+% 如果用户可以使用 GNU make 工具,这是最方便的办法。
+% 所以 \thuthesis{} 提供了 \file{Makefile}:
 % \begin{shell}
-% # 1. 发现里面的引用关系,文件后缀 .tex 可以省略
-% $ xelatex main
-%
-% # 2. 编译参考文件源文件,生成 bbl 文件
-% $ bibtex main
-%
-% # 3. 下面解决引用
-% $ xelatex main
-% $ xelatex main   # 此时生成完整的 pdf 文件
+%   $ make thesis    # 生成论文 main.pdf
+%   $ make spine     # 生成书脊 spine.pdf
+%   $ make doc       # 生成说明文档 thuthesis.pdf
+%   $ make clean     # 清理编译生成的辅助文件
 % \end{shell}
 %
 % \subsubsection{latexmk}
 % \label{sec:latexmk}
-% \texttt{latexmk} 命令支持全自动生成 \LaTeX\ 编写的文档,并且支持使用不同的工具
-% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。下面给出了一个用
-% \texttt{latexmk} 调用 \texttt{xelatex} 生成最终文档的示例:
+% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具
+% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。
 % \begin{shell}
-% # 一句话就够了!
-% $ latexmk -xelatex main
+%   $ latexmk main.tex       # 生成论文 main.pdf
+%   $ latexmk spine.tex      # 生成书脊 spine.pdf
+%   $ latexmk thuthesis.dtx  # 生成说明文档 thuthesis.pdf
+%   $ latexmk -c             # 清理编译生成的辅助文件
 % \end{shell}
+% \texttt{latexmk} 的编译过程是通过 \file{latexmk} 文件来配置的,如果要进一步了解,
+% 可以参考 \pkg{latexmk} 的文档。
 %
-% \subsubsection{make}
-% \label{sec:make}
-% \note[提示:]{若要使用 \texttt{make} 编译,需自行下载模板。因为 \TeX\ 发行版中
-% 的 \file{Makefile} 不在当前目录。}
-%
-% 上面的方法虽然不复杂,但是每次都输入还是非常罗嗦,所以 \thuthesis\ 提供了一
-% 个 \file{Makefile}:
-%
+% \subsubsection{\XeLaTeX}
+% \label{sec:xelatex}
+% 如果用户无法使用以上两种较为方便的编译方法,就只能按照以下复杂的办法手动编译。
 % \begin{shell}
-% $ make clean
-% $ make cls       # 生成 thuthesis.cls
-% $ make doc       # 生成说明文档 thuthesis.pdf
-% $ make thesis    # 生成示例文档 main.pdf
-% $ make shuji     # 生成书脊 shuji.pdf
+%   $ xetex thuthesis.ins  # 生成 thuthesis.cls
+%   $ xelatex main.tex
+%   $ bibtex main.tex      # 生成 bbl 文件
+%   $ xelatex main.tex     # 解决引用
+%   $ xelatex main.tex     # 生成完整的 pdf 文件
 % \end{shell}
 %
-% \thuthesis\ 的 \file{Makefile} 默认用 \texttt{latexmk} 调用\texttt{xelatex} 编
-% 译。如有需要可修
-% 改 \file{Makefile} 开头的参数或通过命令行传递参数(请参看 \file{README.md}),
-% 进一步还可以修改 \file{latexmkrc} 进行定制。
-%
-% \subsection{升级}
-% \label{sec:updgrade}
-% \thuthesis\ 升级非常简单,可以通过 \TeX\ 发行版的包管理工具自动更新发行版,也可
-% 以下载最新的开发版,
-% 将 \file{thuthesis.ins},\file{thuthesis.dtx},\file{tsinghua.pdf},
-% \file{thuthesis-author-year.bst} 和 \file{thuthesis-numeric.bst} 拷贝至工作目录覆盖相应
-% 的文件,然后运行:
+% 下面的命令用来生成用户手册,
 % \begin{shell}
-% $ xetex thuthesis.ins
+%   $ xelatex thuthesis.dtx
+%   $ makeindex -s gind.ist -o thuthesis.ind thuthesis.idx
+%   $ makeindex -s gglo.ist -o thuthesis.gls thuthesis.glo
+%   $ xelatex thuthesis.dtx
+%   $ xelatex thuthesis.dtx  % 生成说明文档 thuthesis.pdf
 % \end{shell}
 %
-% 生成新的类文件和配置文件即可。也可以直接拷
-% 贝 \file{thuthesis.cls},免去上面命令的执行。
+% \subsection{升级}
+% \label{sec:upgrade}
+% 如果需要升级 \thuthesis{},应当从 GitHub 下载最新的版本,
+% 将 \file{thuthesis.dtx},\file{thuthesis.ins},\file{tsinghua.pdf}和
+% \file{thuthesis-*.bst} 拷贝至工作目录覆盖相应的文件,然后按照
+% 第~\ref{sec:generate-cls} 节的内容生成新的模板和使用说明。
 %
+% 有时模板可能进行了重要的修改,不兼容已写好的正文内容,
+% 用户应当按照 GitHub 上的示例文档的格式重新调整。
 %
 % \section{使用说明}
 % \label{sec:usage}
-% 本手册假定用户已经能处理一般的 \LaTeX\ 文档,并对 \BibTeX\ 有一定了解。如果
-% 从来没有接触过 \TeX\ 和 \LaTeX,建议先学习相关的基础知识。
+% 本手册假定用户已经能处理一般的 \LaTeX{} 文档,并对 \hologo{BibTeX} 有一定了解。如果
+% 从未接触过 \TeX{} 和 \LaTeX,建议先学习相关的基础知识。
 %
-% \subsection{关于提问}
-% \label{sec:howtoask}
-% 按照优先级推荐提问的位置如下:
-%
-% \begin{itemize}
-% \item \href{http://github.com/xueruini/thuthesis/issues}{Github Issues}
-% \item \href{http://www.newsmth.net/nForum/#!board/TeX}{Tex at newsmth}
-% \item \href{http://groups.google.com/group/thuthesis}{ThuThesis at Google Groups}
-% \end{itemize}
-%
 % \subsection{示例文件}
 % \label{sec:userguide}
 %
@@ -363,403 +253,293 @@
 % 模板核心文件
 % 有:\file{thuthesis.cls},\file{thuthesis-numeric.bst},
 % \file{thuthesis-author-year.bst} 和 \file{tsinghua.pdf},
-% 但如果没有示例文档会很难下手,所以推荐从模板自带的示例文档入手,其中包括了论文
-% 写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。对于不清
+% 但如果没有示例文档会较难下手,所以推荐从模板自带的示例文档入手。其中包括了论文
+% 写作用到的所有命令及其使用方法,只需用自己的内容进行相应替换就可以。对于不清
 % 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档,
 % 具体内容可以参考模板附带的 \file{main.tex} 和 \file{data/}。
 %
 % \lstinputlisting[style=lstStyleLaTeX]{main.tex}
 %
+% 其中 \file{thusetup.tex} 包括了论文基本信息的配置样例:
+%
+% \lstinputlisting[style=lstStyleLaTeX]{thusetup.tex}
+%
 % \subsection{论文选项}
 % \label{sec:option}
 %
 % \DescribeOption{degree}
-%   选择论文类型,当前支
-%   持:\option{bachelor},\option{master},\option{doctor},\option{postdoctor}。
-%   为必选项。
+% 选择学位,可选:
+% \option{bachelor},\option{master},\option{doctor}(默认),\option{postdoc}。
+% 本节中的 \emph{key-value} 选项只能在文档类的选项中进行设置,
+% 不能用于 \cs{thusetup} 命令。
 % \begin{latex}
-% % 博士论文
-% \documentclass[degree=doctor]{thuthesis}
-%
-% % 硕士论文
-% \documentclass[degree=master]{thuthesis}
+%   % 博士论文
+%   \documentclass[degree=doctor]{thuthesis}
 % \end{latex}
 %
-% \DescribeOption{language}
-% 论文的主要语言(默认:中文)。可选:\option{chinese},\option{english}。
-%
-% \DescribeOption{secret}
-% 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置分别用来指定保
-% 密级别和时限。若不设置,则二者取默认值,分别为“\textbf{秘密}”和当前年份。
+% \subsubsection{学位类型}
+% \label{sec:degree-type}
+% 定义研究生学位的类型,可选:\option{academic}(默认)、\option{professional},
+% 本科生不受影响。
 % \begin{latex}
-% \documentclass[secret]{thuthesis} % 打开保密
-% \documentclass[secret=false]{thuthesis} % 关闭保密
-%
-% \thusetup{
-%   secretlevel=公开,
-%   secretyear=10
-% }
+%   \documentclass[degree=master, degree-type=professional]{thuthesis}
 % \end{latex}
 %
-% \DescribeOption{openany}
-% \DescribeOption{openright}
-% 正规出版物的章节出现在奇数页,也就是右手边的页面,这就是 \option{openright},也
-% 是 \thuthesis\ 的默认选项。在这种情况下,如果前一章的最后一页也是奇数,那么模板
-% 会自动生成一个纯粹的空白页,很多人不是很习惯这种方式,而且学校的格式似乎更倾向
-% 于页面连续,那就是通常所说的 \option{openany}\footnote{目前所有论文都
-% 是 \option{openany}。}。这两个选项不用设置,\thuthesis\ 会根据当前论文类型自动选
-% 择。
+% \DescribeOption{language}
+% 论文全文的主要语言。可选:\option{chinese}(默认),\option{english}。
 %
-% \DescribeOption{tocarialchapter}
-% 章目录项(内容和页码)是否用 \textsf{Arial} 字体。如果想分别控制内容和页码的字体,
-% 用下面两个开关。
-%
-% \DescribeOption{tocarialchapterentry}
-% 章目录项内容中的英文和数字是否用 \textsf{Arial} 字体。中文强制黑体,为了协调这个选
-% 项应该默认打开,不过从目前的反馈来看各学院的标准不一致。
-%
-% \DescribeOption{tocarialchapterpage}
-% 章目录项页码是否用 \textsf{Arial} 字体。
-%
-% \subsection{引用方式}
-% \label{sec:citestyle}
-% 模板支持两种引用方式,分别为理工科常用的“数字式 [1]”和文科常用
-% 的“作者-年份 (Zhang, 2008)”。使用者可通过 \cs{bibliographystyle} 来选择:
+% 注意,本科生《写作指南》要求“本科生(含国外来华留学本科生)非外语专业论文统一要求
+% 用中文书写。”研究生《写作指南》要求“外国人来华留学生可以用英文撰写学位论文,但
+% 须采用中文封面”,“除留学生外,学位论文一律须用汉语书写”,用户须提前与导师和院系
+% 的审查教师协商使用何种语言书写论文。
 % \begin{latex}
-% % 数字式
-% \bibliographystyle{thuthesis-numeric}
-%
-% % 作者-年份
-% \bibliographystyle{thuthesis-author-year}
+%   \documentclass[degree=bachelor, language=english]{thuthesis}
 % \end{latex}
 %
-% \DescribeMacro{\inlinecite}
-% 学校要求的参考文献引用有两种模式:(1)上标模式。比如``同样的工作有很
-% 多$^{[1,2]}$\ldots''。(2)正文模式。比如``文[3] 中详细说明了\ldots''。其中上标
-% 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规
-% 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。
-%
-% 关于参考文献表推荐使用 \BibTeX,默认情况下可以自动识别文献语言,
-% 并自动处理文献类型和载体类型标识,也可以手动指定,如:
-% \begin{latex}
-% @misc{citekey,
-%   language = {japanese},
-%   mark     = {Z},
-%   medium   = {DK},
-%   ...
-% \end{latex}
-% 可选的语言有 english, chinese, japanese, russian。
-%
-% 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行,
-% 以避免可能的编译错误。
-%
-% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中,
-% 然后按著者字顺和出版年排列;
-% 中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。
-% 然而由于 \BibTeX{} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺,
-% 所以\emph{必须}在 bib 数据库中的 key 域手动录入著者姓名的拼音,如:
-% \begin{latex}
-% @book{capital,
-%   author = {马克思 and 恩格斯},
-%   key    = {ma3 ke4 si1   en1 ge2 si1},
-%   ...
-% \end{latex}
-%
-% \BibTeX{} 对自定义样式的支持比较有限,
-% 所以用户只能通过修改 \file{bst} 文件来修改文献列表的格式。
-% 本宏包提供了一些接口供用户更方便地修改,
-% 在 \file{bst} 文件开始处的 |load.config| 函数中,
-% 有一组配置参数用来控制样式。
-% 若变量被设为 |#1| 则表示该项被启用,设为 |#0| 则不启用。
-% 默认的值是严格遵循学校规定的配置。
-%
-%
-% \subsection{中文字体}
-% \label{sec:chinese-fonts}
-%
-% \subsubsection{字体配置}
+% \subsection{字体配置}
 % \label{sec:font-config}
-% 模板默认使用 \CTeX\ 的字体配置。关于中文字体安装、配置的所有问题不在本模板讨论
-% 范围。
+% 模板默认可以自动检测操作系统,并配置改平台上合适的字体,
+% 具体的配置策略如表~\ref{tab:font}。
+% \begin{table}[htb]
+%   \centering
+%   \caption{\thuthesis{} 自动配置字体策略}
+%   \label{tab:font}
+%   \begin{tabular}{ccc}
+%     \toprule
+%     Windows         & macOS           & 其他            \\
+%     \midrule
+%     Times New Roman & Times New Roman & TeX Gyre Termes \\
+%     Arial           & Arial           & TeX Gyre Heros  \\
+%     Courier         & Menlo           & TeX Gyre Cursor \\
+%     中易宋体        & 华文宋体        & Fandol 宋体     \\
+%     中易黑体        & 华文黑体        & Fandol 黑体     \\
+%     \bottomrule
+%   \end{tabular}
+% \end{table}
 %
-% \subsubsection{字体命令}
-% \label{sec:fontcmds}
-% \myentry{字体}
-% \DescribeMacro{\songti}
-% \DescribeMacro{\fangsong}
-% \DescribeMacro{\heiti}
-% \DescribeMacro{\kaishu}
-% 用来切换宋体、仿宋、黑体、楷体四种基本字体。
+% 然而自动配置的字体只能保证编译通过,但是还存在一些问题:
+% \begin{enumerate}
+%   \item 在其他平台上配置的 TeX Gyre 系列字体,虽然在风格上比较接近 Times 和 Arial,
+%     但是毕竟跟《写作指南》要求的字体不完全一致;
+%   \item Fandol 字库的字形较少,常常出现缺字的情况;
+%   \item 华文字库和 Fandol 字库虽然不违反《写作指南》的要求,
+%     但是其字形跟中易字库有所差别,这导致封面、标题的视觉效果与学校的 Word 示例不一致,
+%     可能被审查老师认为格式不符合要求。
+% \end{enumerate}
 %
-% \begin{latex}
-% {\songti 乾:元,亨,利贞}
-% {\fangsong 初九,潜龙勿用}
-% {\heiti 九二,见龙在田,利见大人}
-% {\kaishu 九三,君子终日乾乾,夕惕若,厉,无咎}
-% \end{latex}
+% 所以建议在提交最终版前使用 Windows 平台的字体进行编译。
 %
-% \myentry{字号}
-% \DescribeMacro{\chuhao}
-% \DescribeMacro{\xiaochu}
-% \DescribeMacro{\yihao}
-% \DescribeMacro{\xiaoyi}
-% \DescribeMacro{\bahao}
-% 定义字体大小,分别为:
+% 用户也可以在调用 \thuthesis{} 时手动指定使用的字库,如:
 %
-% \begin{center}
-% \begin{tabular}{llllll}
-% \toprule
-% \cs{chuhao} & \cs{xiaochu} & \cs{yihao}  & \cs{xiaoyi}    & \cs{erhao}  & \cs{xiaoer}\\
-% \cs{sanhao} & \cs{xiaosan} & \cs{sihao}  & \cs{banxiaosi} & \cs{xiaosi} & \cs{dawu}\\
-% \cs{wuhao}  & \cs{xiaowu}  & \cs{liuhao} & \cs{xiaoliu}   & \cs{qihao}  & \cs{bahao}\\\bottomrule
-% \end{tabular}
-% \end{center}
-%
-% 使用方法为:\cs{command}\oarg{num},其中 command 为字号命令,num 为行距。比
-% 如 \cs{xiaosi}[1.5] 表示选择小四字体,行距 1.5 倍。写作指南要求表格中的字体
-% 是 \cs{dawu},模板已经设置好了。
-%
 % \begin{latex}
-% {\erhao 二号}
-% {\sanhao[1.5] 三号}
-% {\sihao 四号}
-% {\qihao[2] 七号}
+%   \documentclass[fontset=windows]{thuthesis}
 % \end{latex}
 %
-% 也可以使用 \CTeX\ 定义的 \cs{zihao}\marg{num} 来切换字号,具体用法参看其文
-% 档。
+% 允许的选项有 \option{windows}、\option{mac}、\option{fandol},详
+% 见 \pkg{ctex}、\pkg{xeCJK}、\pkg{fontspec} 等宏包的使用说明。
 %
 % \subsection{封面信息}
 % \label{sec:titlepage}
-% 封面信息提供两种配置方法:一是通过统一设置命
-% 令 \cs{thusetup} 通过\emph{key=value} 形式完成;二是每个信息利用命令独立设置,
-% 其中命令的名字跟 \emph{key} 相同。两种方式可以交叉使用,并按顺序执行(即后来的设置会覆
-% 盖前面的)。以 \texttt{c} 开头的命令跟中文相关,\texttt{e} 开头则为对应的英文。
+% 封面信息可以通过统一设置命令 \cs{thusetup} 设置 \emph{key=value} 形式完成;
+% 带 * 号的键通常是对应的英文。
 %
 % \DescribeMacro{\thusetup}
 % \cs{thusetup} 用法与常见 \emph{key=value} 命令相同,如下:
 % \begin{latex}
-% \thusetup{
-%   key1 = value1,
-%   key2 = {a value, with comma},
-% }
-% % 可以多次调用
-% \thusetup{
-%   key3 = value3,
-%   key1 = value11, % 覆盖 value1
-% }
+%   \thusetup{
+%     key1 = value1,
+%     key2 = {a value, with comma},
+%   }
+%   % 可以多次调用
+%   \thusetup{
+%     key3 = value3,
+%     key1 = value11,  % 覆盖 value1
+%   }
 % \end{latex}
 %
-% \note[注意:]{\cs{thusetup} 使用 \pkg{kvoptions} 机制,所以配置项之间不能有空行,否则
+% \note[注意:]{\cs{thusetup} 使用 \pkg{kvsetkeys} 机制,所以配置项之间不能有空行,否则
 % 会报错。}
 %
-% 大多数命令的使用方法都是: \cs{command}\marg{arg},例外者将具体指出。这些命令都
-% 在示例文档的 \file{data/cover.tex} 中。
-%
-% \subsubsection{密级}
-% \label{sec:setup-secret}
-% 定义秘密级别和年限,需要打开论文的 \option{secret} 选项。
-% \begin{latex}
-% \thusetup{
-%   secretyear  = 10,
-%   secretlevel = {内部},
-% }
-% \end{latex}
-%
-% \subsubsection{博士后专用参数}
-% 只见过,没用过,不知道具体是什么意思。
-% \begin{latex}
-% \thusetup{
-%   catalognumber = {分类号},
-%   udc           = {udc},
-%   id            = {id},
-% }
-% \end{latex}
-%
 % \subsubsection{论文标题}
 % 中英文标题。可以在标题内部使用换行|\\|。
 % \begin{latex}
-% \thusetup{
-%   ctitle = {论文中文题目},
-%   etitle = {Thesis English Title},
-% }
+%   \thusetup{
+%     title  = {论文中文题目},
+%     title* = {Thesis English Title},
+%   }
 % \end{latex}
 %
-% \subsubsection{作者姓名}
-% 作者姓名。
-% \begin{latex}
-% \thusetup{
-%   cauthor = {中文姓名},
-%   eauthor = {Name in Pinyin},
-% }
-% \end{latex}
-%
 % \subsubsection{申请学位名称}
-% \label{sec:degree}
-% 学位和专业的设置比想象的要复杂一些:
+% \label{sec:degree-name}
+% 学位的设置要复杂一些:
 %
-% \begin{longtable}{p{2cm}p{8cm}p{4cm}}
+% \begin{longtable}{p{2cm}p{6cm}p{6cm}}
 %   \toprule
-%   学位类型 & edegree & emajor \\\midrule
-%   学术型硕士
-%     & 必须为“Master of Art”或“Master of Science”(注意大
-%       小写),其中 “哲学、文学、历史学、法学、教育学、艺术学门类,公共
-%       管理学科填写“Master of Arts”,其它填写“Master of Science”。
-%     & “获得一级学科授权的学科填写一级学科名称,其它填写二级学
-%       科名称”。\\\midrule
-%   专业型硕士
-%     & 专业学位英文名称全称 & %     工程硕士填写工程领域,其它专业学位不填写此项。\\\midrule
-%   学术型博士 & Doctor of Philosophy(注意大小写)
-%     & 获得一级学科授权的学科填写一级学科名称,其它填写二级学科名称。\\\midrule
-%   专业型博士 & 专业学位英文名称全称 & 不填写此项。\\\bottomrule
+%   学位类型 & degree-name & degree-name* \\
+%   \midrule
+%   学术型博士 & 需注明所属的学科门类,例如:
+%       哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、医学、
+%       军事学、管理学、艺术学
+%     & Doctor of Philosophy \\
+%   \midrule
+%   学术型硕士 & 同上
+%     & 哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
+%       填写“Master of Arts“,其它填写“Master of Science” \\
+%   \midrule
+%   专业型研究生学位 & 专业学位的名称,例如:教育博士、工程硕士
+%     & 专业学位的名称,例如:Doctor of Education, Master of Engineering \\
+%   \midrule
+%   本科生 & - & - \\
+%   \bottomrule
 % \end{longtable}
 %
 % \begin{latex}
-% \thusetup{
-%   cdegree = {您要申请什么学位},
-%   edegree = {Degree in English},
-% }
+%   \thusetup{
+%     degree-name  = {您要申请什么学位},
+%     degree-name* = {Degree in English},
+%   }
 % \end{latex}
 %
 % \subsubsection{院系名称}
 % 院系名称。
 % \begin{latex}
-% \thusetup{
-%   cdepartment = {系名全称},
-%   edepartment = {Deparment of CS},
-% }
+%   \thusetup{
+%     department = {系名全称},
+%   }
 % \end{latex}
 %
-% \subsubsection{专业名称}
-% 参见第 \ref{sec:degree} 节。
+% \subsubsection{学科名称}
+%
+% \begin{itemize}
+%   \item 学术型学位:获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称;
+%   \item 工程硕士:工程领域名称;
+%   \item 其他专业型学位:-
+%   \item 本科生:-
+% \end{itemize}
+%
 % \begin{latex}
-% \thusetup{
-%   cmajor = {专业名称},
-%   emajor = {Major in English},
-% }
+%   \thusetup{
+%     discipline  = {学科名称},
+%     discipline* = {Discipline in English},
+%   }
 % \end{latex}
 %
-% 博士后专用。
+% \subsubsection{作者姓名}
+% 作者姓名。
 % \begin{latex}
-% \thusetup{
-%   cfirstdiscipline  = {流动站(一级学科)名称},
-%   cseconddiscipline = {专业(二级学科)名称},
-% }
+%   \thusetup{
+%     author  = {中文姓名},
+%     author* = {Name in Pinyin},
+%   }
 % \end{latex}
 %
 % \subsubsection{导师}
 % \myentry{导师}
-% 直接导师。
+% 导师的姓名与职称之间以“,”(西文逗号,U+002C)隔开,下同。
 % \begin{latex}
-% \thusetup{
-%   csupervisor = {导师~教授},
-%   esupervisor = {Supervisor},
-% }
+%   \thusetup{
+%     supervisor  = {导师姓名, 教授},
+%     supervisor* = {Supervisor Name, Professor},
+%   }
 % \end{latex}
 %
 % \myentry{副导师}
 % 本科生的辅导教师,硕士的副指导教师。
 % \begin{latex}
-% \thusetup{
-%   cassosupervisor = {副导师~副教授},
-%   eassosupervisor = {2nd Boss},
-% }
+%   \thusetup{
+%     associate-supervisor  = {副导师姓名, 副教授},
+%     associate-supervisor* = {Assoc-Supervisor Name, Professor},
+%   }
 % \end{latex}
 %
 % \myentry{联合导师}
 % 硕士生联合指导教师,博士生联合导师。
 % \begin{latex}
-% \thusetup{
-%   ccosupervisor = {联合导师~教授},
-%   ecosupervisor = {3rd Boss},
-% }
+%   \thusetup{
+%     joint-supervisor  = {联合导师姓名, 教授},
+%     joint-supervisor* = {Join-Supervisor Name, Professor},
+%   }
 % \end{latex}
 %
 % \subsubsection{成文日期}
-% 默认为当前时间,也可以自己指定。
+% 默认为当前日期,也可以自己指定,要求使用 ISO 格式。
 % \begin{latex}
-% \thusetup{
-%   cdate            = {中文日期},
-%   edate            = {English Date},
-%   postdoctordate   = {2009 年 7 月——2011 年 7 月},  % 博士后工作完成日期
-%   postdocstartdate = {2009 年 7 月 1 日},  % 博士后研究工作起始时间
-%   postdocenddate   = {2011 年 7 月 1 日},  % 博士后研究工作期满时间
-% }
+%   \thusetup{
+%     date = {2011-07-01},
+%   }
 % \end{latex}
 %
-% \subsubsection{摘要}
-% \myentry{摘要正文}
-% \DescribeEnv{cabstract}
-% \DescribeEnv{eabstract}
-% \note[说明:]{摘要正文只能用环境命令的形式,不支持 \cs{thusetup}。}
-%
+% \subsubsection{密级}
+% \label{sec:setup-secret}
+% 定义秘密级别和年限。
 % \begin{latex}
-% \begin{cabstract}
-%  摘要请写在这里...
-% \end{cabstract}
-%
-% \begin{eabstract}
-%  Here comes the abstract in English...
-% \end{eabstract}
+%   \thusetup{
+%     secret-year  = 10,
+%     secret-level = {内部},
+%   }
 % \end{latex}
 %
-% \myentry{关键词}
-% 关键词用英文逗号分割写入相应的命令中,模板会解析各关键词并生成符合不同论文格式
-% 要求的关键词格式。
+% \subsubsection{博士后专用参数}
 % \begin{latex}
-% \thusetup{
-%   ckeywords = {关键词 1, 关键词 2},
-%   ekeywords = {keyword 1, keyword 2},
-% }
+%   \thusetup{
+%     clc                = {分类号},
+%     udc                = {udc},
+%     id                 = {id},
+%     discipline-level-1 = {流动站(一级学科)名称},
+%     discipline-level-2 = {专业(二级学科)名称},
+%     start-date         = {2011-07-01}, % 研究工作起始时间
+%   }
 % \end{latex}
 %
 % \myentry{生成封面}
-% \DescribeMacro{\makecover}
-% 生成封面,包括首页,授权,摘要等。用法:\cs{makecover}\oarg{file}。如果使用授权
-% 说明扫描页,将可选参数中指定为扫描得到的 PDF 文件名,例如:
+% \DescribeMacro{\maketitle}
+% 生成封面,不含授权说明,摘要等。
 % \begin{latex}
-% % 直接生成封面
-% \makecover
-%
-% % 将签字扫描后授权文件 scan-auth.pdf 替换原始页面
-% \makecover[scan-auth.pdf]
+%   % 直接生成封面
+%   \maketitle
 % \end{latex}
 %
-% \subsubsection{符号对照表}
-% \DescribeEnv{denotation}
-% 主要符号表环境,跟 \env{description} 类似,使用方法参见示例文件。带一个可选参数,
-% 用来指定符号列的宽度(默认为 2.5cm)。
+% \subsection{前言部分}
+%
+% \subsubsection{授权说明}
+% \myentry{授权说明}
+% \DescribeMacro{\copyrightpage}
+% 生成授权说明。用法:\cs{copyrightpage}\oarg{file}。
+% 可选参数为扫描得到的 PDF 文件名,例如:
 % \begin{latex}
-% \begin{denotation}
-%   \item[E] 能量
-%   \item[m] 质量
-%   \item[c] 光速
-% \end{denotation}
+%   % 将签字扫描后授权文件 scan-auth.pdf 替换原始页面
+%   \copyrightpage[scan-auth.pdf]
 % \end{latex}
 %
-% 如果默认符号列的宽度不满意,可以通过参数来调整:
+% \subsubsection{摘要}
+% \myentry{摘要正文}
+% \DescribeEnv{abstract}
+% \DescribeEnv{abstract*}
+%
+% 摘要直接在正文中使用 \env{abstract}、\env{abstract*} 环境生成。
+%
 % \begin{latex}
-% \begin{denotation}[1.5cm] % 设置为 1.5cm
-%   \item[E] 能量
-%   \item[m] 质量
-%   \item[c] 光速
-% \end{denotation}
+%   \begin{abstract}
+%     摘要请写在这里...
+%   \end{abstract}
+%
+%   \begin{abstract*}
+%     Here comes the abstract in English...
+%   \end{abstract*}
 % \end{latex}
 %
-% 另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置:
+% \myentry{关键词}
+% 关键词需要使用 \cs{thusetup} 进行设置。关键词之间以\emph{西文逗号}隔开,模板会
+% 自动调整为要求的格式。关键词的设置只要在摘要环境结束前即可。
 % \begin{latex}
-% \usepackage{nomencl}
-% \makenomenclature
+%   \thusetup{
+%     keywords  = {关键词 1, 关键词 2},
+%     keywords* = {keyword 1, keyword 2},
+%   }
 % \end{latex}
-% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号:
-% \begin{latex}
-% \nomenclature{$m$}{The mass of one angel}
-% \end{latex}
-% 最后使用 \cs{printnomenclature} 命令生成符号表。
-% 更详细的使用方法参见 \pkg{nomencl} 宏包的文档。
 %
-% \subsection{目录和索引表}
-% 目录、插图、表格和公式等索引命令分别如下,将其插入到期望的位置即可(带星号的命令表
+% \subsubsection{目录和索引表}
+% 目录、插图、表格和公式等索引命令分别如下,将其插入到期望的位置即可(带*的命令表
 % 示对应的索引表不会出现在目录中):
 %
 % \DescribeMacro{\tableofcontents}
@@ -781,15 +561,15 @@
 %          & \cs{listofequations*}\\\bottomrule
 % \end{longtable}
 %
-% \LaTeX\ 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出
+% \LaTeX{} 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出
 % 现在浮动环境中,否则不被计数。
 %
 % 如果不想让某个表格或者图片出现在索引里面,那么请使用命令 \cs{caption*},这
-% 个命令不会给表格编号,也就是出来的只有标题文字而没有``表~xx'',``图~xx'',否则
-% 索引里面序号不连续就显得不伦不类,这也是 \LaTeX\ 里星号命令默认的规则。
+% 个命令不会给表格编号,也就是出来的只有标题文字而没有“表~xx”,“图~xx”,否则
+% 索引里面序号不连续就显得不伦不类,这也是 \LaTeX{} 里星号命令默认的规则。
 %
 % 有这种需求的多是本科同学的英文资料翻译部分,如果你觉得附录中英文原文中的表格和
-% 图片显示成``表''和``图''很不协调的话,一个很好的办法还是用 \cs{caption*},参数
+% 图片显示成“表”和“图”很不协调的话,一个很好的办法还是用 \cs{caption*},参数
 % 随便自己写,具体用法请参看示例文档。
 %
 % 如果的确想让其编号,但又不想出现在索引中的话,目前模板暂不支持。
@@ -805,67 +585,261 @@
 % 使用方法如下。假如有一个非 equation 数学环境 \texttt{mymath},只要在其中写一
 % 句 \cs{equcaption} 就可以将它加入公式列表。
 % \begin{latex}
-% \begin{mymath}
-%   \label{eq:emc2}\equcaption{\ref{eq:emc2}}
-%   E=mc^2
-% \end{mymath}
+%   \begin{mymath}
+%     \label{eq:emc2}\equcaption{\ref{eq:emc2}}
+%     E=mc^2
+%   \end{mymath}
 % \end{latex}
 %
 % \texttt{mymath} 中公式的编号需要自己来做。
 %
-% 同图表一样,附录中的公式有时候也不希望它跟全文统一编号,而且不希望它出现在公式
-% 索引中,目前的解决办法就是利用 \cs{tag*}\marg{公式编号} 来解决。用法很简单,此
+% 同图表一样,附录中的公式有时也不希望它跟全文统一编号,而且不希望它出现在公式
+% 索引中。目前的办法是利用 \cs{tag*}\marg{公式编号} 来解决。用法比较简单,此
 % 处不再罗嗦,实例请参看示例文档附录 A 的前两个公式。
 %
-% \subsection{封底部分}
+% \subsubsection{符号对照表}
+% \DescribeEnv{denotation}
+% 主要符号表环境,跟 \env{description} 类似,使用方法参见示例文件。带一个可选参数,
+% 用来指定符号列的宽度(默认为 2.5cm)。
+% \begin{latex}
+%   \begin{denotation}
+%     \item[E] 能量
+%     \item[m] 质量
+%     \item[c] 光速
+%   \end{denotation}
+% \end{latex}
 %
-% \subsubsection{致谢声明}
+% 如果默认符号列的宽度不满意,可以通过参数来调整:
+% \begin{latex}
+%   \begin{denotation}[1.5cm] % 设置为 1.5cm
+%     \item[E] 能量
+%     \item[m] 质量
+%     \item[c] 光速
+%   \end{denotation}
+% \end{latex}
+%
+% 符号对照表的另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置:
+%
+% \begin{latex}
+%   \usepackage{nomencl}
+%   \makenomenclature
+% \end{latex}
+%
+% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号:
+%
+% \begin{latex}
+%   \nomenclature{$m$}{The mass of one angel}
+% \end{latex}
+%
+% 最后使用 \cs{printnomenclature} 命令生成符号表。更详细的使用方法参
+% 见 \pkg{nomencl} 宏包的文档。
+%
+% \subsection{正文部分}
+%
+% \subsubsection{数学环境}
+% \label{sec:math}
+% \thuthesis{} 定义了常用的数学环境:
+%
+% \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{列表环境}
+% \DescribeEnv{itemize}
+% \DescribeEnv{enumerate}
+% \DescribeEnv{description}
+% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
+% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
+% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
+%
+% \subsubsection{引用方式}
+% \label{sec:citestyle}
+% 模板支持两种引用方式,分别为理工科常用的“顺序编码制\textsuperscript{[1]}”和文科常用
+% 的“著者-出版年制 (Zhang, 2008)”。
+% 使用者在设置参考文献表的格式
+% (\cs{bibliographystyle},见第~\ref{sec:bibliography} 节)时,
+% 正文中引用文献的标注会自动调整为对应的格式:
+%
+% \begin{latex}
+%   % 顺序编码制
+%   \bibliographystyle{thuthesis-numeric}
+% \end{latex}
+%
+% 或
+%
+% \begin{latex}
+%   % 著者-出版年制
+%   \bibliographystyle{thuthesis-author-year}
+% \end{latex}
+%
+% \DescribeMacro{\inlinecite}
+% 顺序编码制的参考文献引用也有两种模式:
+% \begin{enumerate}
+%   \item 上标模式。比如“同样的工作有很多\textsuperscript{[1,2]}\dots”。
+%   \item 正文模式。比如“文 [3] 中详细说明了\dots”。
+% \end{enumerate}
+%
+% \DescribeOption{cite-style}
+% 用户可以将引用标注的格式设为正文模式:
+%
+% \begin{latex}
+%   \thusetup{
+%     cite-style = inline,
+%   }
+% \end{latex}
+%
+% 也可以使用 \cs{inlinecite}\marg{key} 临时使用正文模式的引用标注。
+%
+% \subsection{其他部分}
+%
+% \subsubsection{参考文献}
+% \label{sec:bibliography}
+%
+% 模板支持使用 \hologo{BibTeX} 处理生成参考文献表,
+% 用户需要在文中设置参考文献格式并调用 \file{.bib} 数据库:
+% \begin{latex}
+%   \bibliographystyle{thuthesis-numeric}        % 顺序编码制
+%   % \bibliographystyle{thuthesis-author-year}  % 著者-出版年制
+%   % \bibliographystyle{thuthesis-bachelor}     % 本科生参考文献的著录格式
+%   \bibliographystyle{ref1,ref2}                % 载入 ref1.bib 和 ref2.bib
+% \end{latex}
+%
+% \note[注意:]{\cs{bibliographystyle} 命令只能出现一次。}
+%
+% \hologo{BibTeX} 可以自动识别数据库中每条文献的语言,并自动处理文献类型和载体类
+% 型标识,用户也可以手动指定,如:
+%
+% \begin{latex}
+%   @misc{citekey,
+%     language = {japanese},
+%     mark     = {Z},
+%     medium   = {DK},
+%     ...
+%   }
+% \end{latex}
+%
+% 可选的语言有 \option{english}, \option{chinese}, \option{japanese} 和 \option{russian}。
+%
+% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中,然后按著者字
+% 顺和出版年排列;中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。
+% 由于 \hologo{BibTeX} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺,所
+% 以\emph{必须}在 \file{.bib} 数据库中的 |key| 域手动录入著者姓名的拼音,如:
+% \begin{latex}
+%   @book{capital,
+%     author = {马克思 and 恩格斯},
+%     key    = {ma3 ke4 si1 en1 ge2 si1},
+%     ...
+%   }
+% \end{latex}
+%
+% \hologo{BibTeX} 对自定义样式的支持比较有限,所以用户只能通过修改 \file{bst} 文
+% 件来修改文献列表的格式。本宏包提供了一些接口供用户更方便地修改,在 \file{bst}
+% 文件开始处的 |load.config| 函数中,有一组配置参数用来控制样式。若变量被设
+% 为 |#1| 则表示该项被启用,设为 |#0| 则不启用。默认的值是严格遵循学校规定的配
+% 置。
+%
+%
+% \subsubsection{致谢}
+%
 % \DescribeEnv{acknowledgement}
 % 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦。
+%
 % \begin{latex}
-% \begin{acknowledgement}
-%   …
-%   还要特别感谢 \thuthesis\ 节省了论文排版时间!
-% \end{acknowledgement}
+%   \begin{acknowledgements}
+%     …
+%     还要特别感谢 \thuthesis{} 节省了论文排版时间!
+%   \end{acknowledgements}
 % \end{latex}
 %
-% 本科论文在此处还有一节“声明”,提交版本时需要替换为签字扫描文件,同样我们也提供:
+% \subsubsection{声明}
+% \DescribeMacro{\statement}
 % 如果使用声明扫描页,将可选参数指定为扫描后的 PDF 文件名,例如:
+%
 % \begin{latex}
-% \begin{acknowledgement}[scan-statement.pdf]
-%   加了扫描文件后,这里面的文字就没用了。
-%
-%   还要特别感谢计算机系薛瑞尼同学在论文格式和 \LaTeX\ 编译等方面给我的很多帮助!
-% \end{acknowledgement}
+%   \statement[scan-statement.pdf]
 % \end{latex}
 %
 % \subsubsection{附录}
-% \DescribeEnv{appendix}
-% 所有的附录都插到这里来。因为附录会更改默认的 chapter 属性,而后面的{\heiti 个人简
-%   历}又需要恢复,所以实现为环境可以保证全局的属性不受影响。
+%
+% 附录由 \cs{appendix} 命令开启,然后像正文一样书写。
 % \begin{latex}
-% \begin{appendix}
-%  \input{data/appendix01}
-%  \input{data/appendix02}
-% \end{appendix}
+%   \appendix
+%   \chapter{...}
+%   ...
 % \end{latex}
 %
-% \DescribeMacro{\title}
-% 附录里主要是本科的外文资料以及翻译,在这种情况下,\cs{chapter} 的标题是固定的
-% (即“外文资料的调研阅读报告或书面翻译”),所以用 \cs{title}\marg{标题} 开排版外
-% 文资料以及翻译的标题。这个命令只能在附录环境下使用。
+% \DescribeOption{toc-depth}
+% 一些院系要求目录中只出现附录的章标题,不出现附录中的一级、二级节标题。模板默认
+% 如此设置,用户也可以在 \cs{appendix} 命令后手动控制加入目录的标题层级,其
+% 中 |0| 表示章标题,|1| 表示一级节标题,以此类推。
 %
-% \DescribeEnv{translationbib}
-% 本环境用来描述外文资料中的参考文献,例子:
 % \begin{latex}
-% \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}
+%   \appendix
+%   \thusetup{toc-depth=0}  % 目录只出现章标题
 % \end{latex}
 %
+% \DescribeEnv{survey}
+% \DescribeEnv{translation}
+% 本科生《写作指南》要求附录 A 为外文资料的调研阅读报告或书面翻译,二者择一。
+% 调研报告(或书面翻译)的题目和参考文献是独立于论文的,相当一篇独立的小文章,
+% 所以模板相应定义了 \env{survey} 和 \env{translation}。在这两个环境内部可以
+% 像论文正文一样使用标题和参考文献的命令,但不会影响外部:
+%
+% \begin{latex}
+%   \begin{survey}
+%     \title{...}
+%     \maketitle
+%     ... \cite{...}
+%     \bibliographystyle{...}
+%     \bibliography{...}
+%   \end{survey}
+% \end{latex}
+%
+% 书面翻译对应的原文索引的实际作用更接近参考文献,所以也用参考文献的机制来生成,
+% 但是在正文中并不引用。
+%
+% \begin{latex}
+%   \begin{translation}
+%     ... \nocite{...}
+%     \bibliographystyle{...}
+%     \bibliography{...}
+%   \end{translation}
+% \end{latex}
+%
 % \subsubsection{简历}
 % \DescribeEnv{resume}
 % 开启个人简历章节,包括个人简历,发表文章,研究成果列表等。每个子项目请
@@ -894,35 +868,35 @@
 % \env{publications} 环境支持每一部分分别编写,逻辑上更清楚,为了在环境之间支持
 % 空行,需要利用 \cs{publicationskip} 控制。示例:
 % \begin{latex}
-%  \researchitem{发表的学术论文}
+%   \researchitem{发表的学术论文}
 %
-%  % 1. 已经刊载的学术论文
-%  \begin{publications}
-%    \item Yang Y, Ren T L, Zhang L T, et al. Miniature microphone with silicon-
-%      based ferroelectric thin films. Integrated Ferroelectrics, 2003,
-%      52:229-235. (SCI 收录, 检索号:758FZ.)
-%    \item 杨轶, 张宁欣, 任天令, 等. 硅基铁电微声学器件中薄膜残余应力的研究. 中国机
-%      械工程, 2005, 16(14):1289-1291. (EI 收录, 检索号:0534931 2907.)
-%    \item 杨轶, 张宁欣, 任天令, 等. 集成铁电器件中的关键工艺研究. 仪器仪表学报,
-%      2003, 24(S4):192-193. (EI 源刊.)
-%  \end{publications}
+%   % 1. 已经刊载的学术论文
+%   \begin{publications}
+%     \item Yang Y, Ren T L, Zhang L T, et al. Miniature microphone with
+%       silicon-based ferroelectric thin films. Integrated Ferroelectrics,
+%       2003, 52:229-235. (SCI 收录, 检索号:758FZ.)
+%     \item 杨轶, 张宁欣, 任天令, 等. 硅基铁电微声学器件中薄膜残余应力的研究. 中国机
+%       械工程, 2005, 16(14):1289-1291. (EI 收录, 检索号:0534931 2907.)
+%     \item 杨轶, 张宁欣, 任天令, 等. 集成铁电器件中的关键工艺研究. 仪器仪表学报,
+%       2003, 24(S4):192-193. (EI 源刊.)
+%   \end{publications}
 %
-%  % 2. 尚未刊载,但已经接到正式录用函的学术论文
-%  \begin{publications}[before=\publicationskip,after=\publicationskip]
-%    \item Yang Y, Ren T L, Zhu Y P, et al. PMUTs for handwriting recognition. In
-%      press. (已被 Integrated Ferroelectrics 录用. SCI 源刊.)
-%  \end{publications}
+%   % 2. 尚未刊载,但已经接到正式录用函的学术论文
+%   \begin{publications}[before=\publicationskip,after=\publicationskip]
+%     \item Yang Y, Ren T L, Zhu Y P, et al. PMUTs for handwriting
+%       recognition. In press. (已被 Integrated Ferroelectrics 录用. SCI 源刊.)
+%   \end{publications}
 %
-%  % 3. 其他学术论文。
-%  \begin{publications}
-%    \item Wu X M, Yang Y, Cai J, et al. Measurements of ferroelectric MEMS
-%      microphones. Integrated Ferroelectrics, 2005, 69:417-429. (SCI 收录, 检索号
-%      :896KM)
-%    \item 贾泽, 杨轶, 陈兢, 等. 用于压电和电容微麦克风的体硅腐蚀相关研究. 压电与声
-%      光, 2006, 28(1):117-119. (EI 收录, 检索号:06129773469)
-%    \item 伍晓明, 杨轶, 张宁欣, 等. 基于MEMS技术的集成铁电硅微麦克风. 中国集成电路,
-%      2003, 53:59-61.
-%  \end{publications}
+%   % 3. 其他学术论文。
+%   \begin{publications}
+%     \item Wu X M, Yang Y, Cai J, et al. Measurements of ferroelectric
+%       MEMS microphones. Integrated Ferroelectrics, 2005, 69:417-429.
+%       (SCI 收录, 检索号:896KM)
+%     \item 贾泽, 杨轶, 陈兢, 等. 用于压电和电容微麦克风的体硅腐蚀相关研究. 压电与声
+%       光, 2006, 28(1):117-119. (EI 收录, 检索号:06129773469)
+%     \item 伍晓明, 杨轶, 张宁欣, 等. 基于MEMS技术的集成铁电硅微麦克风. 中国集成电路,
+%       2003, 53:59-61.
+%   \end{publications}
 % \end{latex}
 %
 % \DescribeEnv{achievements}
@@ -932,89 +906,21 @@
 % 具体用法请参看示例文档 \file{data/resume.tex}。
 %
 % \subsection{书脊}
-% \DescribeMacro{\shuji}
-% 生成装订的书脊,为竖排格式,命令格式:\cs{shuji}\oarg{标题}\oarg{作者}。默认参
+% \DescribeMacro{\spine}
+% 生成装订的书脊,为竖排格式,命令格式:\cs{spine}\oarg{标题}\oarg{作者}。默认参
 % 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。
-% 否则,就要像例子里面那样做一些微调(参看模板自带的 \file{shuji.tex})。下面是一
-% 个例子:
-% \begin{latex}
-% \documentclass[degree=master]{thuthesis}
+% 否则,可参考参看模板示例文件 \file{spine.tex} 进行微调:
 %
-% \begin{document}
-% \thuset{
-%   ctitle={论文中文题目},
-%   cauthor={中文姓名}}
+% \lstinputlisting[style=lstStyleLaTeX]{spine.tex}
 %
-% \shuji % 使用默认标题和默认作者
 %
-% \shuji[使用默认作者的标题]
-%
-% \shuji[同时修改标题和作者的标题][尼瑞薛]
-%
-% % 如果标题中有英文,那可以参考如下方法进行微调:
-% \shuji[清华大学 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
-% \end{document}
-% \end{latex}
-%
-% \subsection{自定义}
-% \label{sec:othercmd}
-%
-% \subsubsection{数学环境}
-% \label{sec:math}
-% \thuthesis\ 定义了常用的数学环境:
-%
-% \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{列表环境}
-% \DescribeEnv{itemize}
-% \DescribeEnv{enumerate}
-% \DescribeEnv{description}
-% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
-% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
-% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
-%
 % \section{致谢}
 % \label{sec:thanks}
-% 感谢这些年来一直陪伴 \thuthesis\ 成长的新老同学!
+% 感谢这些年来一直陪伴 \thuthesis{} 成长的新老同学!
 %
-% 欢迎各位到 \href{http://github.com/xueruini/thuthesis/}{\thuthesis\ Github 主页}贡献!
+% 欢迎各位到 \href{http://github.com/xueruini/thuthesis/}{\thuthesis{} GitHub 主页}贡献!
 %
-% \StopEventually{\PrintChanges\PrintIndex}
+% \StopEventually{\PrintIndex}
 % \clearpage
 %
 % \section{实现细节}
@@ -1021,37 +927,27 @@
 %
 % \subsection{基本信息}
 %    \begin{macrocode}
-%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<cls>\NeedsTeXFormat{LaTeX2e}
 %<cls>\ProvidesClass{thuthesis}
-%<cls>[2019/04/27 5.5.2 Tsinghua University Thesis Template]
+%<cls>[2020/01/06 6.0.0 Tsinghua University Thesis Template]
 %    \end{macrocode}
 %
-% 检查编译引擎,要求使用 XeLaTeX。
+% 检查编译引擎,要求使用 \XeLaTeX。
 %    \begin{macrocode}
 \RequirePackage{ifxetex}
-\ifxetex\else
-  \ClassError{thuthesis}{You should use XeLaTeX}{}
-  \end{document}
-\fi
+\RequireXeTeX
 %    \end{macrocode}
 %
 % \subsection{定义选项}
 % \label{sec:defoption}
 % 定义论文类型以及是否涉密
-% \changes{v2.4}{2006/04/14}{添加模板名称命令。}
-% \changes{v2.5}{2006/05/19}{增加本科论文的提交选项 submit。}
-% \changes{v2.5.1}{2006/05/24}{如果没有设置格式选项,报错。}
-% \changes{v2.5.1}{2006/05/26}{submit 只能由本科用。}
-% \changes{v2.5.3}{2006/06/03}{submit 选项的一个笔误。}
-% \changes{v3.0}{2007/05/12}{删除 submit 选项。}
-% \changes{v4.6}{2011/04/26}{增加 postdoctor 选项。}
-% \changes{v4.8}{2014/11/25}{v4.7曾经想发布,但是一直没有做,于是就被跳过了,算是造一个段子吧。}
-% \changes{v4.8.1}{2014/12/09}{按照 CTAN 的要求整理一下文件。}
 %    \begin{macrocode}
 %<*cls>
 \hyphenation{Thu-Thesis}
 \def\thuthesis{ThuThesis}
-\def\version{5.5.2}
+\def\version{6.0.0}
+\RequirePackage{kvdefinekeys}
+\RequirePackage{kvsetkeys}
 \RequirePackage{kvoptions}
 \SetupKeyvalOptions{
   family=thu,
@@ -1059,35 +955,200 @@
   setkeys=\kvsetkeys}
 %    \end{macrocode}
 %
-% 用 \pkg{kvoptions} 的 \texttt{key=value} 方式来设置论文类型。
-% \changes{v5.0.0}{2015/12/13}{使用 \pkg{kvoptions} 简化选项 type。}
-% \changes{v5.4.2}{2017/12/18}{使用 degree 取代 type 选项。}
+% 用 \pkg{kvoptions} 的 \emph{key=value} 方式来设置论文类型。
 %    \begin{macrocode}
-\DeclareStringOption[doctor]{degree}[doctor]
+\newcommand\thu at error[1]{%
+  \ClassError{thuthesis}{#1}{}%
+}
 %    \end{macrocode}
 %
-% 论文是使用英文。
-% \changes{v5.5.0}{2018/12/09}{增加选项使用英文模板。}
+% \begin{macro}{\thusetup}
+% 提供一个 \cs{thusetup} 命令支持 \emph{key-value} 的方式来设置。
 %    \begin{macrocode}
-\DeclareStringOption[chinese]{language}[chinese]
+\newcommand\thusetup{%
+  \kvsetkeys{thu}%
+}
 %    \end{macrocode}
+% \end{macro}
 %
-% 论文是否保密。
+% 同时用 \emph{key-value} 的方式来定义这些接口:
+% \begin{latex}
+%   \thu at define@key{
+%     <key> = {
+%       name = <name>,
+%       choices = {
+%         <choice1>,
+%         <choice2>,
+%       },
+%       default = <default>,
+%       code = <code>,
+%     },
+%   }
+% \end{latex}
+%
+% 其中 |choices| 设置允许使用的值,默认为第一个(或者 \meta{default});
+% \meta{code} 是相应的内容被设置时执行的代码。
+%
 %    \begin{macrocode}
-\DeclareBoolOption{secret}
+\newcommand\thu at define@key[1]{%
+  \kvsetkeys{thu at key}{#1}%
+}
+\kv at set@family at handler{thu at key}{%
 %    \end{macrocode}
 %
-% 章目录中的英文是否用 Arial 字体(默认关闭),可以分别控制内容和页码部分。
+% \cs{thusetup} 会将 \meta{value} 存到 \cs{thu@\meta{key}},
+% 但是宏的名字包含 “-” 这样的特殊字符时不方便直接调用,比如 |key = math-style|,
+% 这时可以用 |name| 设置 \meta{key} 的别称,比如 |key = math at style|,
+% 这样就可以通过 \cs{thu at math@style} 来引用。
+% |default| 是定义该 \meta{key} 时默认的值,缺省为空。
+%
 %    \begin{macrocode}
-\DeclareBoolOption{tocarialchapter}
-\DeclareBoolOption{tocarialchapterentry}
-\DeclareBoolOption{tocarialchapterpage}
+  \@namedef{thu@#1@@name}{#1}%
+  \def\thu@@default{}%
+  \def\thu@@choices{}%
+  \kv at define@key{thu at value}{name}{%
+    \@namedef{thu@#1@@name}{##1}%
+  }%
+  \kv at define@key{thu at value}{code}{%
+    \@namedef{thu@#1@@code}{##1}%
+  }%
 %    \end{macrocode}
 %
+% 由于在定义接口时,\cs{thu@\meta{key}@@code} 不一定有定义,
+% 而且在文档类/宏包中还有可能对该 |key| 的 |code| 进行添加。
+% 所以 \cs{thu@\meta{key}@@code} 会检查如果在定义文档类/宏包时则推迟执行,否则立即执行。
 %
+%    \begin{macrocode}
+  \@namedef{thu@#1@@check}{}%
+  \@namedef{thu@#1@@code}{}%
+  \@namedef{thu@#1@@hook}{%
+    \expandafter\ifx\csname\@currname.\@currext-h@@k\endcsname\relax
+      \@nameuse{thu@#1@@code}%
+    \else
+      \AtEndOfClass{%
+        \@nameuse{thu@#1@@code}%
+      }%
+    \fi
+  }%
+%    \end{macrocode}
+%
+% 保存下 |choices = {}| 定义的内容,在定义 \cs{thu@\meta{name}} 后再执行。
+%
+%    \begin{macrocode}
+  \kv at define@key{thu at value}{choices}{%
+    \def\thu@@choices{##1}%
+    \@namedef{thu@#1@@reset}{}%
+%    \end{macrocode}
+%
+% \cs{thu@\meta{key}@check} 检查 |value| 是否有效,
+% 并设置 \cs{ifthu@\meta{name}@\meta{value}}。
+%
+%    \begin{macrocode}
+    \@namedef{thu@#1@@check}{%
+      \@ifundefined{%
+        ifthu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}%
+      }{%
+        \thu at error{Invalid value "#1 = \@nameuse{thu@\@nameuse{thu@#1@@name}}"}%
+      }%
+      \@nameuse{thu@#1@@reset}%
+      \@nameuse{thu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}true}%
+    }%
+  }%
+  \kv at define@key{thu at value}{default}{%
+    \def\thu@@default{##1}%
+  }%
+  \kvsetkeys{thu at value}{#2}%
+  \@namedef{thu@\@nameuse{thu@#1@@name}}{}%
+%    \end{macrocode}
+%
+% 第一个 \meta{choice} 设为 \meta{default},
+% 并且对每个 \meta{choice} 定义 \cs{ifthu@\meta{name}@\meta{choice}}。
+%
+%    \begin{macrocode}
+  \kv at set@family at handler{thu at choice}{%
+    \ifx\thu@@default\@empty
+      \def\thu@@default{##1}%
+    \fi
+    \expandafter\newif\csname ifthu@\@nameuse{thu@#1@@name}@##1\endcsname
+    \expandafter\g at addto@macro\csname thu@#1@@reset\endcsname{%
+      \@nameuse{thu@\@nameuse{thu@#1@@name}@##1false}%
+    }%
+  }%
+  \kvsetkeys at expandafter{thu at choice}{\thu@@choices}%
+%    \end{macrocode}
+%
+% 将 \meta{default} 赋值到 \cs{thu@\meta{name}},如果非空则执行相应的代码。
+%
+%    \begin{macrocode}
+  \expandafter\let\csname thu@\@nameuse{thu@#1@@name}\endcsname\thu@@default
+  \expandafter\ifx\csname thu@\@nameuse{thu@#1@@name}\endcsname\@empty\else
+    \@nameuse{thu@#1@@check}%
+    \@nameuse{thu@#1@@hook}%
+  \fi
+%    \end{macrocode}
+%
+% 定义 \cs{thusetup} 接口。
+%
+%    \begin{macrocode}
+  \kv at define@key{thu}{#1}{%
+    \@namedef{thu@\@nameuse{thu@#1@@name}}{##1}%
+    \@nameuse{thu@#1@@check}%
+    \@nameuse{thu@#1@@hook}%
+  }%
+}
+%    \end{macrocode}
+%
+% 定义接口向 |key| 添加 |code|:
+%
+%    \begin{macrocode}
+\newcommand\thu at addto[2]{%
+  \expandafter\g at addto@macro\csname thu@#1@@code\endcsname{#2}%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newif\ifthu at degree@graduate
+\newcommand\thu at set@graduate{%
+  \thu at degree@graduatefalse
+  \ifthu at degree@doctor
+    \thu at degree@graduatetrue
+  \fi
+  \ifthu at degree@master
+    \thu at degree@graduatetrue
+  \fi
+}
+\thu at define@key{
+  degree = {
+    choices = {
+      bachelor,
+      master,
+      doctor,
+      postdoc,
+    },
+    default = doctor,
+    code = {\thu at set@graduate},
+  },
+  degree-type = {
+    choices = {
+      academic,
+      professional,
+    },
+    name = degree at type,
+  },
+%    \end{macrocode}
+%
+% 论文是否使用英文。
+%    \begin{macrocode}
+  language = {
+    choices = {
+      chinese,
+      english,
+    },
+  },
+}
+%    \end{macrocode}
+%
 % \option{raggedbottom} 选项(默认打开)
-% \changes{v4.8}{2013/03/05}{增加 noraggedbottom 选项。}
-% \changes{v5.0.0}{2015/12/13}{norggedbottom 选项修改为 raggedbottom。}
 %    \begin{macrocode}
 \DeclareBoolOption[true]{raggedbottom}
 %    \end{macrocode}
@@ -1097,31 +1158,11 @@
 \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
 %    \end{macrocode}
 %
-% \changes{v2.5.1}{2006/05/24}{研究生院目录要 times,而教务处要 arial。}
-% \changes{v2.5.1}{2006/05/26}{本科 openright,研究生 openany。}
-% \changes{v3.1}{2007/10/09}{本科的目录又不要 arial 字体了。}
-% \changes{v4.8}{2013/05/29}{添加 nocap 选项,恢复默认标题样式,模板会进一步定制。}
 % 解析用户传递过来的选项,并加载 \pkg{ctexbook}。
 %    \begin{macrocode}
 \ProcessKeyvalOptions*
-\newcommand\thu at validate@key[1]{%
-  \@ifundefined{thu@\csname thu@#1\endcsname true}{%
-    \ClassError{thuthesis}{Invalid value '\csname thu@#1\endcsname'}{}%
-  }{%
-    \csname thu@\csname thu@#1\endcsname true\endcsname
-  }%
-}
-\newif\ifthu at bachelor
-\newif\ifthu at master
-\newif\ifthu at doctor
-\newif\ifthu at postdoctor
-\thu at validate@key{degree}
-\newif\ifthu at chinese
-\newif\ifthu at english
-\thu at validate@key{language}
 %    \end{macrocode}
 %
-% \changes{v5.3.1}{2016/03/20}{使用 \CTeX\ 默认中文字体配置,支持不同引擎。}
 % 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。
 %    \begin{macrocode}
 \PassOptionsToPackage{quiet}{xeCJK}
@@ -1139,16 +1180,11 @@
 %    \end{macrocode}
 %
 % \AmSTeX\ 宏包,用来排出更加漂亮的公式。
-% \changes{v4.8}{2013/03/02}{no need to load amssymb since we use txfonts.}
 %    \begin{macrocode}
 \RequirePackage{amsmath}
 %    \end{macrocode}
 %
 % 使用 \pkg{unicode-math} 处理数学字体。
-% \changes{v3.1}{2007/06/16}{replace \pkg{mathptmx} with \pkg{txfonts}.}
-% \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 替换 \pkg{txfonts}。}
-% \changes{v5.2.2}{2016/02/01}{不希望 \pkg{newtx} 修改 \cs{@makefnmark}。 }
-% \changes{v5.5.0}{2018/07/07}{使用 \pkg{unicode-math} 处理数学字体。}
 %    \begin{macrocode}
 \RequirePackage{unicode-math}
 %    \end{macrocode}
@@ -1164,7 +1200,7 @@
 \RequirePackage[labelformat=simple]{subcaption}
 %    \end{macrocode}
 %
-% \pkg{pdfpages} 宏包便于我们插入扫描后的授权页和声明页 PDF 文档。
+% \pkg{pdfpages} 宏包便于我们插入扫描后的授权说明和声明页 PDF 文档。
 %    \begin{macrocode}
 \RequirePackage{pdfpages}
 \includepdfset{fitpaper=true}
@@ -1171,17 +1207,12 @@
 %    \end{macrocode}
 %
 % 更好的列表环境。
-% \changes{v2.6.2}{2006/06/18}{去掉 \pkg{paralist} 的 \option{newitem} 和
-% \option{newenum} 选项,因为默认是打开的。}
-% \changes{v2.6.4}{2006/10/23}{增加 \option{neverdecrease} 选项。}
-% \changes{v5.0.0}{2012/12/13}{删除 \pkg{paralist} 选项。}
-% \changes{v5.2.2}{2016/01/31}{利用 \pkg{environ} 的 \cs{Collect at Body}。}
 %    \begin{macrocode}
 \RequirePackage[shortlabels]{enumitem}
 \RequirePackage{environ}
 %    \end{macrocode}
 %
-% 禁止 \LaTeX 自动调整多余的页面底部空白,并保持脚注仍然在底部。
+% 禁止 \LaTeX{} 自动调整多余的页面底部空白,并保持脚注仍然在底部。
 % 脚注按页编号。
 %    \begin{macrocode}
 \ifthu at raggedbottom
@@ -1198,22 +1229,9 @@
 \RequirePackage{CJKfntef}
 %    \end{macrocode}
 %
-% \changes{v4.8}{2013/05/28}{在 CJK 模式下用 \pkg{CJKspace} 保留中英文间空格。}
-% \changes{v5.0.0}{2015/04/17}{固定字体设置,同时改善与 \pkg{ctex} 兼容性。}
-% \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 字体。}
-% \changes{v5.3.1}{2016/03/20}{\pkg{ctex} 默认加载 \pkg{CJKspace}。}
-% \changes{v5.3.1}{2016/03/20}{几乎没人主动安装 Arial 字体。}
-%
-% 定理类环境宏包,其中 \pkg{amsmath} 选项用来兼容 \AmSTeX\ 的宏包
-%    \begin{macrocode}
-\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
-%    \end{macrocode}
-%
 % 表格控制
-% \changes{v2.6}{2006/06/09}{增加 \pkg{longtable}。}
 %    \begin{macrocode}
 \RequirePackage{array}
-\RequirePackage{longtable}
 %    \end{macrocode}
 %
 % 使用三线表:\cs{toprule},\cs{midrule},\cs{bottomrule}。
@@ -1224,31 +1242,12 @@
 % 参考文献引用宏包。
 %    \begin{macrocode}
 \RequirePackage[sort&compress]{natbib}
+\RequirePackage{bibunits}
 %    \end{macrocode}
 %
-% 删除默认模板(\file{book.cls})在章之间引入的垂直间隔。要放在 \pkg{hyperref}
-% 之前。
 %    \begin{macrocode}
+\RequirePackage{url}
 %    \end{macrocode}
-% 生成有书签的 pdf 及其开关,请结合 gbk2uni 避免书签乱码。
-% \changes{v2.6}{2006/06/09}{去除 hyperref 选项,等待全局传递。}
-% \changes{v5.2.2}{2016/01/25}{目录中标题和页码都是链接。}
-%    \begin{macrocode}
-\RequirePackage{hyperref}
-\hypersetup{
-  linktoc            = all,
-  bookmarksnumbered  = true,
-  bookmarksopen      = true,
-  bookmarksopenlevel = 1,
-  breaklinks         = true,
-  plainpages         = false,
-  hidelinks,
-}
-\pdfstringdefDisableCommands{
-  \let\\\@empty
-  \let\hspace\@gobble
-}
-%    \end{macrocode}
 %
 % 设置 url 样式,与上下文一致
 %    \begin{macrocode}
@@ -1257,14 +1256,13 @@
 %
 % 使用 \pkg{xurl} 的方法,增加 URL 可断行的位置。
 %    \begin{macrocode}
-\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\-}
+\g at addto@macro\UrlBreaks{%
+  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
+  \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M
+  \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z
+  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m
+  \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
+}
 \Urlmuskip=0mu plus 0.1mu
 %    \end{macrocode}
 %
@@ -1271,38 +1269,39 @@
 %
 % \subsection{页面设置}
 % \label{sec:layout}
-% 本来这部分应该是最容易设置的,但根据格式规定出来的结果跟学校的 WORD 样例相差很
-% 大,所以只能微调。
-% \changes{v2.4}{2006/04/14}{把页面尺寸写入 dvi,避免有的用户通
-%   过 dvips 不指定页面类型而得到古怪的结果。}
-% \changes{v4.5.2}{2010/09/19}{研究生页面边距由 3.2cm 改为 3cm。}
-% \changes{v4.7}{2012/05/29}{修改本科生页脚间距与样例基本一致。}
-% \changes{v5.0.0}{2015/03/10}{不再将页面尺寸写入 dvi,因为已不支持 dvips,
-% 而该方案会使得在使用 tikzexternalize 时外部 PDF 图片 BBox 不对。}
-% \changes{v5.0.0}{2015/12/14}{用 \pkg{geometry} 简化设置。}
+%
+% 研究生《写作指南》:
+% 页边距:上下左右均为 3.0 厘米,装订线 0 厘米;
+% 页眉距边界:2.2 厘米,页脚距边界:2.2 厘米。
+%
+% 本科生《写作指南》:
+% 页边距:上:3.8 厘米,下:3.2 厘米,左右:3 厘米,装订线:左 0.2 厘米。
+% 本科生 Word 模板:
+% 页眉距边界:1.5 厘米,页脚距边界:1.75 厘米。
+%
 %    \begin{macrocode}
 \RequirePackage{geometry}
 \geometry{
   a4paper, % 210 * 297mm
-  hcentering,
-  ignoreall,
-  nomarginpar}
-\ifthu at bachelor
+  nomarginpar,
+}
+\ifthu at degree@bachelor
   \geometry{
-    left=32mm,
-    headheight=5mm,
-    headsep=5mm,
-    textheight=227mm,
-    bottom=32mm,
-    footskip=12mm}
+    top        = 3.8cm,
+    bottom     = 3.2cm,
+    left       = 3.2cm,
+    right      = 3cm,
+    headheight = 0.5cm,
+    headsep    = 1.8cm,
+    footskip   = 1.45cm,
+  }
 \else
   \geometry{
-    left=30mm,
-    headheight=5mm,
-    headsep=5mm,
-    textheight=237mm,
-    bottom=29mm,
-    footskip=6mm}
+    margin     = 3cm,
+    headheight = 0.5cm,
+    headsep    = 0.3cm,
+    footskip   = 0.8cm,
+  }
 \fi
 %    \end{macrocode}
 %
@@ -1312,7 +1311,6 @@
 %    \end{macrocode}
 %
 % 利用 \pkg{notoccite} 避免目录中引用编号混乱。
-% \changes{v5.4.4}{2018/04/13}{让目录中的引用不影响正文中引用序号。}
 %    \begin{macrocode}
 \RequirePackage{notoccite}
 %    \end{macrocode}
@@ -1336,22 +1334,23 @@
 % \begin{macro}{\mainmatter}
 % \begin{macro}{\backmatter}
 % 我们的单面和双面模式与常规的不太一样。
-% \changes{v2.5.1}{2006/05/23}{本科正文之后页码即用罗马数字,研究生不变。}
-% \changes{v2.5.3}{2006/06/03}{第一章永远右开。}
-% \changes{v4.4}{2008/05/30}{本科正文后的页码延续前面的阿拉伯数字,不再用罗马数
-% 字。}
-% \changes{v4.4}{2008/05/30}{本科取消了所有页眉。}
 %    \begin{macrocode}
 \renewcommand\frontmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmatterfalse
-  \pagenumbering{Alph}
-  \pagestyle{thu at empty}}
+  \ifthu at degree@bachelor
+    \pagestyle{thu at plain}
+  \else
+    \pagestyle{thu at headings}
+  \fi
+  \pagenumbering{Roman}%
+  \let\@tabular\thu at tabular
+}
 \renewcommand\mainmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmattertrue
   \pagenumbering{arabic}
-  \ifthu at bachelor\pagestyle{thu at plain}\else\pagestyle{thu at headings}\fi}
+  \ifthu at degree@bachelor\pagestyle{thu at plain}\else\pagestyle{thu at headings}\fi}
 \renewcommand\backmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmattertrue}
@@ -1400,7 +1399,6 @@
 %    \end{macrocode}
 %
 % 使用 \pkg{unicode-math} 配置数学字体
-% \changes{v5.5.2}{2019/04/21}{使用 XITS 数学字体。}
 %    \begin{macrocode}
 \unimathsetup{
   math-style = ISO,
@@ -1427,7 +1425,6 @@
 %
 % 在使用 Windows Vista 或之后版本的系统时,\pkg{ctex} 宏包会默认使用微软雅黑字体,
 % 这可能会导致审查不合格。下面设置适合印刷的黑体,同时保持跨平台兼容性。
-% \changes{v5.5.0}{2019/01/06}{Windows 的中文字体开启伪粗。}
 %    \begin{macrocode}
 \ifthenelse{\equal{\thu at fontset}{windows}}{
   \xeCJKsetup{EmboldenFactor=2}
@@ -1466,7 +1463,6 @@
 %
 % \begin{macro}{\normalsize}
 % 正文小四号 (12bp) 字,行距为固定值 20 bp。
-% \changes{v5.4.5}{2018/05/17}{调整公式和正文间距。}
 %    \begin{macrocode}
 \renewcommand\normalsize{%
   \@setfontsize\normalsize{12bp}{20bp}%
@@ -1501,13 +1497,11 @@
 % \end{center}
 %
 % \begin{macro}{\thu at def@fontsize}
-% \changes{v2.6.2}{2006/06/18}{引入此命令重新定义字号。}
 % 根据习惯定义字号。用法:
 %
 % \cs{thu at def@fontsize}\marg{字号名称}\marg{磅数}
 %
 % 避免了字号选择和行距的紧耦合。所有字号定义时为单倍行距,并提供选项指定行距倍数。
-% \changes{v5.2.3}{2016/02/13}{改写字体定义命令。}
 %    \begin{macrocode}
 \def\thu at def@fontsize#1#2{%
   \expandafter\newcommand\csname #1\endcsname[1][1.3]{%
@@ -1602,7 +1596,7 @@
   }%
 }
 \newcommand\thu at setdefaultlanguage{%
-  \ifthu at chinese
+  \ifthu at language@chinese
     \thu at setchinese
   \else
     \thu at setenglish
@@ -1612,7 +1606,7 @@
 %
 % 中英文翻译:
 %    \begin{macrocode}
-\ifthu at chinese
+\ifthu at language@chinese
   \ctexset{
     chapter/name   = {第,章},
     appendixname   = 附录,
@@ -1642,10 +1636,10 @@
   \newcommand\thu at proof@name{证明}
   \newcommand\thu at theorem@separator{:}
   \newcommand\thu at ack@name{致\hspace{\ccwd}谢}
-  \ifthu at bachelor
+  \ifthu at degree@bachelor
     \newcommand\thu at resume@title{在学期间参加课题的研究成果}
   \else
-    \ifthu at postdoctor
+    \ifthu at degree@postdoc
       \newcommand\thu at resume@title{个人简历、发表的学术论文与科研成果}
     \else
       \newcommand\thu at resume@title{个人简历、在学期间发表的学术论文与研究成果}
@@ -1669,19 +1663,11 @@
   \newcommand\thu at conjecture@name{Conjecture}
   \newcommand\thu at proof@name{proof}
   \newcommand\thu at theorem@separator{: }
-  \newcommand\thu at ack@name{Acknowledgments}
-  \ifthu at bachelor
+  \newcommand\thu at ack@name{Acknowledgements}
+  \ifthu at degree@bachelor
     \newcommand\thu at resume@title{Research Achievements}
   \else
-    \ifthu at postdoctor
-      \newcommand\thu at resume@title{%
-        Resume, Publications and Research Achievements%
-      }
-    \else
-      \newcommand\thu at resume@title{%
-        Resume, Publications and Research Achievements%
-      }
-    \fi
+    \newcommand\thu at resume@title{Resume, Publications and Research Achievements}
   \fi
 \fi
 %    \end{macrocode}
@@ -1694,12 +1680,6 @@
 % \begin{macro}{\ps at thu@empty}
 % \begin{macro}{\ps at thu@plain}
 % \begin{macro}{\ps at thu@headings}
-% \changes{v2.0}{2005/12/18}{以前的太乱了,重新整理过清晰多了。}
-% \changes{v2.1}{2006/03/01}{彻底放弃 fancyhdr,定义自己的样式。}
-% \changes{v2.5}{2006/05/13}{本科的奇偶页眉不同。}
-% \changes{v2.5}{2006/05/20}{增加 empty 页面样式。}
-% \changes{v4.7}{2012/05/29}{本科页码用小五号字。}
-% \changes{v5.0.0}{2015/12/20}{利用 \pkg{fancyhdr} 设置页眉页脚。}
 % 定义三种页眉页脚格式:
 % \begin{itemize}
 % \item \texttt{thu at empty}:页眉页脚都没有
@@ -1742,7 +1722,6 @@
 %    \end{macrocode}
 %
 % 利用 \pkg{enumitem} 命令调整默认列表环境间的距离,以符合中文习惯。
-% \changes{v2.5.2}{2006/06/01}{更改默认列表距离。}
 %    \begin{macrocode}
 \setlist{nosep}
 %    \end{macrocode}
@@ -1751,13 +1730,7 @@
 % \subsubsection{脚注}
 % \label{sec:footnote}
 % 脚注符合中文习惯,数字带圈。
-% \changes{v2.1}{2006/03/01}{让脚注它悬挂起来,而且中文中用上标,脚注中用正体。}
-% \changes{v2.5}{2006/05/13}{修正 minipage 中的脚注。}
 % \begin{macro}{\thu at textcircled}
-% \changes{v2.5.1}{2006/05/21}{脚注编号使用 \cs{textcircled} 命令,每页允许至多 99 个。}
-% \changes{v5.2.2}{2016/02/01}{脚注编号每页允许至多 9 个。}
-% \changes{v5.5.0}{2018/12/10}{去掉 \option{pifootnote} 选项。}
-% \changes{v5.5.1}{2019/04/16}{修复 minipage 中 footnote 编号问题。}
 % 生成带圈的脚注数字,最多处理到 10。
 %    \begin{macrocode}
 \ifthenelse{\equal{\thu at fontset}{mac}}{
@@ -1795,9 +1768,6 @@
 %
 % \cs{@makefnmark} 默认是上标样式,而在脚注部分要求为正文大小。利用\cs{patchcmd}
 % 动态调整 \cs{@makefnmark} 的定义。
-% \changes{v2.6}{2006/06/09}{脚注改成 1.5 倍行距,漂亮。}
-% \changes{v5.2.2}{2016/02/01}{基于 \pkg{footmisc} 来设置不同位置 footnote
-% marker 样式。}
 %    \begin{macrocode}
 \let\thu at makefnmark\@makefnmark
 \def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
@@ -1811,7 +1781,7 @@
 % \begin{macro}{\ldots}
 % 省略号一律居中,所以 \cs{ldots} 不再居于底部。
 %    \begin{macrocode}
-\ifthu at chinese
+\ifthu at language@chinese
   \def\mathellipsis{\cdots}
 \fi
 %    \end{macrocode}
@@ -1895,29 +1865,20 @@
 %
 % 公式距前后文的距离由 4 个参数控制,参见 \cs{normalsize} 的定义。
 %
-% \changes{v2.5.1}{2006/05/24}{本科公式编号前添加\textbf{公式}二字。需要修 \pkg{amsmath} 极其深的一个命令。}
-% \changes{v2.5.1}{2006/05/24}{教务处居然要本科论文公式全文编号!}
-% \changes{v2.5.2}{2006/05/29}{上一个版本忘了把研究生的公式编号排除。}
-% \changes{v3.0}{2007/05/12}{本科公式又要取消全文统一编号了。}
 % 本科的公式编号要求很诡异,不得不修改 \pkg{amsmath} 中很深的一个命令 \cs{tagform@}。
-% \changes{v2.6.2}{2006/06/19}{根据不同论文格式显示不同公式编号,并自动加入索引。}
-% \changes{v4.2}{2008/01/23}{\cs{eqref} 加括号。}
 % 同时为了让 \pkg{amsmath} 的 \cs{tag*} 命令得到正确的格式,我们必须修改这些代
 % 码。\cs{make at df@tag} 是定义 \cs{tag*} 和 \cs{tag} 内部命令的。
 % \cs{make at df@tag@@} 处理 \cs{tag*},我们就改它!
 % \begin{latex}
-% \def\make at df@tag{\@ifstar\make at df@tag@@\make at df@tag@@@}
-% \def\make at df@tag@@#1{%
-%   \gdef\df at tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
+%   \def\make at df@tag{\@ifstar\make at df@tag@@\make at df@tag@@@}
+%   \def\make at df@tag@@#1{%
+%     \gdef\df at tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
 % \end{latex}
-% \changes{v4.4}{2008/05/30}{本科论文终于去掉了\textbf{公式}二字。}
-% \changes{v4.4.4}{2008/06/12}{修复了一个从 v4.3 升级到 v4.4 过程中的丢失公式索引的 bug,原修改代码保留备忘。}
-% \changes{v5.2.3}{2016/02/13}{安全注释本科公式部分。}
 %    \begin{macrocode}
 \def\make at df@tag{\@ifstar\thu at make@df at tag@@\make at df@tag@@@}
 \def\thu at make@df at tag@@#1{\gdef\df at tag{\thu at maketag{#1}\def\@currentlabel{#1}}}
 \iffalse
-\ifthu at bachelor
+\ifthu at degree@bachelor
   \def\thu at maketag#1{\maketag@@@{%
     (\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)}}
   \def\tagform@#1{\maketag@@@{%
@@ -1932,39 +1893,9 @@
 \renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
 %    \end{macrocode}
 %
-% 定理标题使用黑体,正文使用宋体,冒号隔开。
-% \changes{v2.6.2}{2006/06/17}{增加问题和猜想两个数学环境。}
-% \changes{v4.2}{2008/03/07}{调整证明环境的编号和结尾的方块。}
-% \changes{v5.0.0}{2015/04/18}{修正定理字样为黑体 (\#104)。}
-% \changes{v5.3.2}{2017/05/01}{定理环境格式设置(环境标题和环境正文字体设置)统一放置到 .cfg 文件中。}
-% \changes{v5.5.0}{2019/01/08}{移除 cfg 文件。}
-%    \begin{macrocode}
-\theorembodyfont{\normalfont}
-\theoremheaderfont{\normalfont\sffamily}
-\theoremsymbol{\ensuremath{\square}}
-\newtheorem*{proof}{\thu at proof@name}
-\theoremstyle{plain}
-\theoremsymbol{}
-\theoremseparator{\thu at theorem@separator}
-\newtheorem{assumption}{\thu at assumption@name}[chapter]
-\newtheorem{definition}{\thu at definition@name}[chapter]
-\newtheorem{proposition}{\thu at proposition@name}[chapter]
-\newtheorem{lemma}{\thu at lemma@name}[chapter]
-\newtheorem{theorem}{\thu at theorem@name}[chapter]
-\newtheorem{axiom}{\thu at axiom@name}[chapter]
-\newtheorem{corollary}{\thu at corollary@name}[chapter]
-\newtheorem{exercise}{\thu at exercise@name}[chapter]
-\newtheorem{example}{\thu at example@name}[chapter]
-\newtheorem{remark}{\thu at remark@name}[chapter]
-\newtheorem{problem}{\thu at problem@name}[chapter]
-\newtheorem{conjecture}{\thu at conjecture@name}[chapter]
-%    \end{macrocode}
-%
 % \subsubsection{浮动对象以及表格}
 % \label{sec:float}
 % 设置浮动对象和文字之间的距离
-% \changes{v2.6}{2006/06/09}{增加 \cs{floatsep},\cs{@fptop},\cs{@fpsep} 和 \cs{@fpbot}。}
-% \changes{v5.5.0}{2019/03/15}{修正图表标题与文字之间的距离。}
 %    \begin{macrocode}
 \setlength{\floatsep}{12bp \@plus 2bp \@minus 4bp}
 \setlength{\textfloatsep}{12bp}
@@ -1990,16 +1921,8 @@
 %   \item 图:caption 在下,段前空 6 磅,段后空 12 磅
 %   \item 表:caption 在上,段前空 12 磅,段后空 6 磅
 % \end{itemize}
-% \changes{v2.4}{2006/04/14}{表格内容为 11 磅。}
-% \changes{v2.4}{2006/04/14}{图表标题左对齐,取消原先漂亮的 hang 模式。}
-% \changes{v2.5}{2006/05/13}{标题上下间距重调,以前没有考虑 \cs{intextsep} 的影响。}
-% \changes{v2.5.1}{2006/05/23}{增加 \pkg{subfigure} 和 \pkg{subtable} 的 caption 配置。}
-% \changes{v2.5.1}{2006/05/24}{重新定义表格默认字体。}
-% \changes{v2.5.3}{2006/06/07}{不管 caption 出现在什么位置,\cs{aboveskip} 总是出现在标题和浮动体之间的距离。}
-% \changes{v4.3}{2008/03/11}{子图引用时加括号。}
-% \changes{v5.0.0}{2015/06/27}{本科附录图表编号用-不用.(如图A-1,表A-2)。}
 %    \begin{macrocode}
-\ifthu at bachelor
+\ifthu at degree@bachelor
   \g at addto@macro\appendix{\renewcommand*{\thefigure}{\thechapter-\arabic{figure}}}
   \g at addto@macro\appendix{\renewcommand*{\thetable}{\thechapter-\arabic{table}}}
 \fi
@@ -2019,14 +1942,6 @@
 \renewcommand{\thesubtable}{(\alph{subtable})}
 % \renewcommand{\p at subfigure}{:}
 %    \end{macrocode}
-% 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号。
-% \changes{v2.5.3}{2006/06/08}{增加对 \pkg{longtable} 的处理。}
-% \changes{v4.5.1}{2009/01/06}{太好了,不用处理 \pkg{longtable} 的 \cs{caption}
-% 了。}
-%    \begin{macrocode}
-\let\thu at LT@array\LT at array
-\def\LT at array{\dawu[1.5]\thu at LT@array} % set default font size
-%    \end{macrocode}
 %
 % \begin{macro}{\hlinewd}
 % 简单的表格使用三线表推荐用 \cs{hlinewd}。如果表格比较复杂还是用 \pkg{booktabs} 的命
@@ -2041,9 +1956,8 @@
 %
 % \subsubsection{章节标题}
 % \label{sec:theor}
-% \changes{v2.5}{2006/05/19}{增加索引名称定义。}
 %    \begin{macrocode}
-\ifthu at bachelor
+\ifthu at degree@bachelor
   \newcommand{\cabstractname}{中文摘要}
   \newcommand{\eabstractname}{ABSTRACT}
 \else
@@ -2050,18 +1964,6 @@
   \newcommand{\cabstractname}{摘\hspace{\ccwd}要}
   \newcommand{\eabstractname}{Abstract}
 \fi
-\let\CJK at todaysave=\today
-\def\CJK at todaysmall@short{\the\year 年 \the\month 月}
-\def\CJK at todaysmall{\the\year 年 \the\month 月 \the\day 日}
-\def\CJK at todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
-\def\CJK at todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
-\def\CJK at today{\CJK at todaysmall}
-\renewcommand\today{\CJK at today}
-\newcommand\CJKtoday[1][1]{%
-  \ifcase#1\def\CJK at today{\CJK at todaysave}
-    \or\def\CJK at today{\CJK at todaysmall}
-    \or\def\CJK at today{\CJK at todaybig}
-  \fi}
 %    \end{macrocode}
 %
 % \pkg{fancyhdr} 定义页眉页脚很方便,但是有一个非常隐蔽的坑。通过 \pkg{fancyhdr}
@@ -2068,21 +1970,21 @@
 % 定义的样式在第一次被调用时会修改 \cs{chaptermark},这会导致页眉信息错误(多余
 % 章号并且英文大写)。这是因为在原始的 \file{book.cls} 中定义如下(大意):
 % \begin{latex}
-% \newcommand\chaptername{Chapter}
-% \newcommand\@chapapp{\chaptername}
-% \def\chaptermark#1{
-%   \markboth{\MakeUppercase{\@chapapp\ \thechapter}}{}}
+%   \newcommand\chaptername{Chapter}
+%   \newcommand\@chapapp{\chaptername}
+%   \def\chaptermark#1{
+%     \markboth{\MakeUppercase{\@chapapp\ \thechapter}}{}}
 % \end{latex}
 % 很显然这个 \cs{\@chapapp} 不适合中文,因此我们使用\cs{CTEXthechapter}(
 % 如,“第 x 章”),同时会将 \cs{MakeUppercase} 去掉。也就是说我们会做如下动作:
 % \begin{latex}
-% \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}
+%   \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}
 % \end{latex}
 % 但,\pkg{fancyhdr} 不知何故在 \cs{ps at fancy} 中对 \cs{chaptermark} 进行重定义
 % (其实一模一样),而这个 \cs{ps at fancy} 会在 \cs{fancypagestyle} 中使用,如下:
 % \begin{latex}
-% \newcommand{\fancypagestyle}[2]{%
-%   \@namedef{ps@#1}{\let\fancy at gbl\relax#2\relax\ps at fancy}}
+%   \newcommand{\fancypagestyle}[2]{%
+%     \@namedef{ps@#1}{\let\fancy at gbl\relax#2\relax\ps at fancy}}
 % \end{latex}
 % 这样的话,\cs{ps at fancy} 会在 \pkg{fancyhdr} 定义的任何样式首次样被激活时调用,从
 % 而覆盖我们的 \cs{chaptermark} 定义(后续样式再激活不会重复覆盖)。所以我们采用如下
@@ -2094,38 +1996,26 @@
 %    \end{macrocode}
 %
 % 各级标题格式设置。
-% \changes{v5.0.0}{2012/12/23}{用 \cs{ctexset} 来设置,替换复杂的 \cs{@startsection}。}
 % \begin{description}
 % \item[chapter] 章序号与章名之间空一个汉字符 黑体三号字,居中书写,单倍行距,段
 %   前空 24 磅,段后空 18 磅。本科要求:段前段后间距 30/20 pt,行距 20pt。但正文
 %   章节 30pt 的话和样例效果不一致。
 %
-% \changes{v2.5}{2006/05/13}{取消 \pkg{titlesec} 宏包,用基本 \LaTeX\ 命令格式化标题。}
-% \changes{v2.5.1}{2006/05/23}{让 \cs{chapter*} 自动 \cs{markboth}。}
-% \changes{v3.1}{2006/06/16}{英文摘要标题要搞特殊化。}
-% \changes{v5.0.0}{2015/04/17}{修正章节间距问题(\#57)}
-%
 % \item[section] 一级节标题,例如:\fbox{2.1 实验装置与实验方法}。节标题序号与标
 %   题名之间空一个汉字符(下同)。采用黑体四号(14pt)字居左书写,行距为固定
 %   值 20 磅,段前空 24 磅,段后空 6 磅。本科:25/12 pt,行距 18pt。
 %
-% \changes{v4.4}{2008/06/04}{调整段前距为 -20bp 而不是原来的 -24bp。}
-%
 % \item[subsection] 二级节标题,例如:\fbox{2.1.1 实验装置}。采用黑体 13pt 字居左
 %   书写,行距为固定值 20 磅,段前空 12 磅,段后空 6 磅。本科:中文黑体 12pt 字,
 %   英文 13pt 字,段间距 12/6 pt,行距 15pt。
 %
-% \changes{v4.4}{2008/06/04}{修改本科生模板的二级节标题为小四而不是半小四。}
-% \changes{v4.4}{2008/06/04}{调整段前距为 -12bp 而不是原来的 -16bp。}
-%
 % \item[subsubsection] 三级节标题,例如:\fbox{2.1.2.1 归纳法}。采用黑体小四号
 %   (12pt)字居左书写,行距为固定值 20 磅,段前空 12 磅,段后空 6 磅。
 %
-% \changes{v4.4}{2008/06/04}{调整段前距为 -12bp 而不是原来的 -16bp。}
 % \end{description}
 %    \begin{macrocode}
 \newcommand\thu at chapter@titleformat[1]{%
-  \ifthu at bachelor #1\else%
+  \ifthu at degree@bachelor #1\else%
     \ifthenelse%
       {\equal{#1}{\eabstractname}}%
       {\bfseries #1}%
@@ -2134,11 +2024,11 @@
 \ctexset{%
   chapter={
     afterindent=true,
-    pagestyle={\ifthu at bachelor thu at plain\else thu at headings\fi},
-    beforeskip={\ifthu at bachelor 15bp\else 9bp\fi},
+    pagestyle={\ifthu at degree@bachelor thu at plain\else thu at headings\fi},
+    beforeskip={\ifthu at degree@bachelor 15bp\else 9bp\fi},
     aftername=\hskip\ccwd,
-    afterskip={\ifthu at bachelor 20bp\else 24bp\fi},
-    format={\centering\sffamily\ifthu at bachelor\xiaosan[1.333]\else\sanhao[1]\fi},
+    afterskip={\ifthu at degree@bachelor 20bp\else 24bp\fi},
+    format={\centering\sffamily\ifthu at degree@bachelor\xiaosan[1.333]\else\sanhao[1]\fi},
     nameformat=\relax,
     numberformat=\relax,
     titleformat=\thu at chapter@titleformat,
@@ -2147,22 +2037,22 @@
   },
   section={
     afterindent=true,
-    beforeskip={\ifthu at bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex},
-    afterskip={\ifthu at bachelor 12bp\else 6bp\fi \@plus .2ex},
-    format={\sffamily\ifthu at bachelor\sihao[1.286]\else\sihao[1.429]\fi},
+    beforeskip={\ifthu at degree@bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex},
+    afterskip={\ifthu at degree@bachelor 12bp\else 6bp\fi \@plus .2ex},
+    format={\sffamily\ifthu at degree@bachelor\sihao[1.286]\else\sihao[1.429]\fi},
   },
   subsection={
     afterindent=true,
-    beforeskip={\ifthu at bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
+    beforeskip={\ifthu at degree@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
     afterskip={6bp \@plus .2ex},
-    format={\sffamily\ifthu at bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi},
-    numberformat={\sffamily\ifthu at bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi},
+    format={\sffamily\ifthu at degree@bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi},
+    numberformat={\sffamily\ifthu at degree@bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi},
   },
   subsubsection={
     afterindent=true,
-    beforeskip={\ifthu at bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
+    beforeskip={\ifthu at degree@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
     afterskip={6bp \@plus .2ex},
-    format={\sffamily\ifthu at bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi},
+    format={\sffamily\ifthu at degree@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi},
   },
   paragraph/afterindent=true,
   subparagraph/afterindent=true}
@@ -2169,7 +2059,6 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\thu at chapter*}
-% \changes{v2.5.2}{2006/05/29}{定义自己的 \cs{thu at chapter*}。}
 % 默认的 \cs{chapter*} 很难同时满足研究生院和本科生的论文要求。本科论文要求所有的
 % 章都出现在目录里,比如摘要、Abstract、主要符号表等,所以可以简单的扩展默
 % 认\cs{chapter*} 实现这个目的。但是研究生又不要这些出现在目录中,而且致谢和声明
@@ -2179,18 +2068,17 @@
 % \cs{thu at chapter*}\oarg{tocline}\marg{title}\oarg{header}: tocline 是出现在目录
 % 中的条目,如果为空则此 chapter 不出现在目录中,如果省略表示目录出现 title;
 % title 是章标题;header 是页眉出现的标题,如果忽略则取 title。通过这个宏我才真
-% 正体会到 \TeX\ macro 的力量!
+% 正体会到 \TeX{} macro 的力量!
 %    \begin{macrocode}
-\newcounter{thu at bookmark}
+\newcommand\thu at pdfbookmark[2]{}
 \NewDocumentCommand\thu at chapter{s o m o}{
   \IfBooleanF{#1}{%
     \ClassError{thuthesis}{You have to use the star form: \string\thu at chapter*}{}
   }%
-  \if at openright\cleardoublepage\else\clearpage\fi\phantomsection%
+  \if at openright\cleardoublepage\else\clearpage\fi%
   \IfValueTF{#2}{%
     \ifthenelse{\equal{#2}{}}{%
-      \addtocounter{thu at bookmark}\@ne
-      \pdfbookmark[0]{#3}{thuchapter.\thethu at bookmark}
+      \thu at pdfbookmark{0}{#3}%
     }{%
       \addcontentsline{toc}{chapter}{#3}
     }
@@ -2197,9 +2085,9 @@
   }{%
     \addcontentsline{toc}{chapter}{#3}
   }%
-  \ifthu at bachelor \ctexset{chapter/beforeskip=25bp} \fi
+  \ifthu at degree@bachelor \ctexset{chapter/beforeskip=25bp} \fi
   \chapter*{#3}%
-  \ifthu at bachelor \ctexset{chapter/beforeskip=15bp} \fi
+  \ifthu at degree@bachelor \ctexset{chapter/beforeskip=15bp} \fi
   \IfValueTF{#4}{%
     \ifthenelse{\equal{#4}{}}
     {\@mkboth{}{}}
@@ -2216,8 +2104,6 @@
 % \label{sec:toc}
 % 最多 4 层,即: x.x.x.x,对应的命令和层序号分别是:
 % \cs{chapter}(0), \cs{section}(1), \cs{subsection}(2), \cs{subsubsection}(3)。
-% \changes{v3.1}{2007/10/09}{博士论文目录只出现到第 3 级标题即可。}
-% \changes{v5.0.0}{2015/05/21}{硕士博士论文目录只出现到第 3 级标题即可。其他未明确要求。}
 %    \begin{macrocode}
 \setcounter{secnumdepth}{3}
 \setcounter{tocdepth}{2}
@@ -2225,37 +2111,21 @@
 %
 % 每章标题行前空 6 磅,后空 0 磅。章节名中英文用 Arial 字体,页码仍用 Times。
 % \begin{macro}{\tableofcontents}
-% \changes{v2.0}{2005/12/18}{附录的目录项需要调整一下。以及公式编号方式等等。}
-% \changes{v2.5}{2006/05/13}{取消 \pkg{titletoc} 宏包,用 \cs{dottedtocline} 调整
-%   目录。}
-% \changes{v2.5.1}{2006/05/23}{减小目录项中的导引小点跟页码之间的留白。}
-% \changes{v2.5.2}{2006/05/29}{用 \cs{thu at chapter*} 改写目录命令。}
-% \changes{v3.0}{2007/05/12}{缩小目录中标题与页码之间\textbf{点}之间的距离。}
-% \changes{v4.0}{2007/11/08}{本科研究生目录字号行距都不同。}
-% \changes{v4.4}{2008/06/04}{本科生目录字号改回\cs{xiaosi}\oarg{1.8}。}
-% \changes{v4.4}{2008/06/04}{本科生目录缩进要求不同。}
-% \changes{v4.4}{2008/06/18}{本科章目录项一直用黑体 (Arial)。}
 % 目录生成命令。
 %    \begin{macrocode}
 \renewcommand\tableofcontents{%
   \thu at chapter*[]{\contentsname}
-  \ifthu at bachelor\xiaosi[1.667]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize}
+  \ifthu at degree@bachelor\xiaosi[1.667]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize}
 %    \end{macrocode}
 % 调整目录样式,允许指定目录字体。
-% \changes{v5.2.2}{2016/01/23}{用 \cs{patchcmd} 修改 \cs{@dottedtocline}。}
 %    \begin{macrocode}
 \def\@pnumwidth{2em}
 \def\@tocrmarg{\@pnumwidth}
 \def\@dotsep{1}
-\ifthu at tocarialchapter
-  \thu at tocarialchapterentrytrue\thu at tocarialchapterpagetrue
-\fi
-\def\thu at toc@chapter at entry@font{\ifthu at tocarialchapterentry\sffamily\fi}
-\def\thu at toc@chapter at page@font{\ifthu at tocarialchapterpage\sffamily\fi}
 \renewcommand*\l at chapter[2]{%
   \ifnum \c at tocdepth >\m at ne
     \addpenalty{-\@highpenalty}%
-    \ifthu at bachelor\vskip 6bp\else\vskip 4bp\fi \@plus\p@
+    \ifthu at degree@bachelor\vskip 6bp\else\vskip 4bp\fi \@plus\p@
     \setlength\@tempdima{4em}%
     \begingroup
       \parindent \z@ \rightskip \@pnumwidth
@@ -2263,9 +2133,18 @@
       \leavevmode
       \advance\leftskip\@tempdima
       \hskip -\leftskip
-      {\thu at toc@chapter at entry@font #1}%
+      \begingroup
+        \ifthu at degree@graduate
+          \sffamily
+        \else
+          \ifthu at degree@bachelor
+            \heiti
+          \fi
+        \fi
+        #1%
+      \endgroup
       \leaders\hbox{$\m at th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill%
-      \nobreak{\thu at toc@chapter at page@font #2}\par
+      \nobreak #2\par
       \penalty\@highpenalty
     \endgroup
   \fi}
@@ -2274,16 +2153,14 @@
 % 研究生学位论文写作指南中规定:目录中的章标题行居左书写,一级节标题行缩进 1 个
 % 汉字符,二级节标题行缩进 2 个汉字符(但示例文件中为 1.5 个汉字符)。本科生指
 % 南中未作明确规定,示例文件中对于一级和二级节标题分别缩进 1 和 1.5 个汉字符。
-% \changes{v5.0.0}{2015/04/28}{修正学位论文中目录里节前缩进(\#103)}
 %    \begin{macrocode}
-% \patchcmd{\@dottedtocline}{#4}{\csname thu at toc@font\endcsname #4}{}{}
 \patchcmd{\@dottedtocline}{\hb at xt@\@pnumwidth}{\hbox}{}{}
 \renewcommand*\l at section{%
   \@dottedtocline{1}{\ccwd}{2.1em}}
 \renewcommand*\l at subsection{%
-  \@dottedtocline{2}{\ifthu at bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
+  \@dottedtocline{2}{\ifthu at degree@bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
 \renewcommand*\l at subsubsection{%
-  \@dottedtocline{3}{\ifthu at bachelor 2.4em\else 3.5em\fi}{3.8em}}
+  \@dottedtocline{3}{\ifthu at degree@bachelor 2.4em\else 3.5em\fi}{3.8em}}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -2290,520 +2167,730 @@
 %
 % \subsubsection{封面和封底}
 % \label{sec:cover}
-% \begin{macro}{\thu at def@term}
-% 方便的定义封面的一些替换命令。
-% \changes{v2.6.2}{2006/06/18}{引入 \cs{thu at def@term} 定义封面命令。}
-% \changes{v3.1}{2006/06/16}{重新定义摘要为环境,long 选项不需要了。}
-%    \begin{macrocode}
-\def\thu at def@term#1{%
-  \define at key{thu}{#1}{\csname #1\endcsname{##1}}
-  \expandafter\gdef\csname #1\endcsname##1{%
-    \expandafter\gdef\csname thu@#1\endcsname{##1}}
-  \csname #1\endcsname{}}
-%    \end{macrocode}
-% \end{macro}
-%
-% \changes{v2.0}{2005/12/18}{增加了封面密级,增加博士封面支持}
-% \changes{v4.6}{2011/04/27}{增加博士后相关指令。}
-%
 % 定义密级参数。
 %    \begin{macrocode}
-\thu at def@term{secretlevel}
-\thu at def@term{secretyear}
+\thu at define@key{
+  secret-level = {
+    name = secret at level,
+  },
+  secret-year = {
+    name = secret at year,
+  },
 %    \end{macrocode}
 %
 % 论文中英文题目。
 %    \begin{macrocode}
-\thu at def@term{ctitle}
-\thu at def@term{etitle}
+  title = {
+    default = {标题},
+  },
+  title* = {
+    default = {Title},
+    name    = title at en,
+  },
 %    \end{macrocode}
 %
 % 作者、导师、副导师、联合指导老师。
 %    \begin{macrocode}
-\thu at def@term{cauthor}
-\thu at def@term{csupervisor}
-\thu at def@term{cassosupervisor}
-\thu at def@term{ccosupervisor}
-\thu at def@term{eauthor}
-\thu at def@term{esupervisor}
-\thu at def@term{eassosupervisor}
-\thu at def@term{ecosupervisor}
+  author = {
+    default = {姓名},
+  },
+  author* = {
+    default = {Name of author},
+    name    = author at en,
+  },
+  supervisor = {
+    default = {导师姓名},
+  },
+  supervisor* = {
+    default = {Name of supervisor},
+    name    = supervisor at en,
+  },
+  associate-supervisor = {
+    name = associate at supervisor,
+  },
+  associate-supervisor* = {
+    name = associate at supervisor@en,
+  },
+  joint-supervisor = {
+    name = joint at supervisor,
+  },
+  joint-supervisor* = {
+    name = joint at supervisor@en,
+  },
 %    \end{macrocode}
 %
 % 学位中英文。
 %    \begin{macrocode}
-\thu at def@term{cdegree}
-\thu at def@term{edegree}
+  degree-name = {
+    default = {工学博士},
+    name    = degree at name,
+  },
+  degree-name* = {
+    default = {Doctor of Philosophy},
+    name    = degree at name@en,
+  },
 %    \end{macrocode}
 %
 % 院系中英文名称。
 %    \begin{macrocode}
-\thu at def@term{cdepartment}
-\thu at def@term{edepartment}
+  department = {
+    default = {计算机科学与技术系},
+  },
 %    \end{macrocode}
 %
-% 学位中英文名称。
-% \changes{v2.5}{2006/05/20}{院系和专业分别改名用 department 和 major,代替原来
-% 的 affil 和 subject。}
+% 专业中英文名称。
 %    \begin{macrocode}
-\thu at def@term{cmajor}
-\thu at def@term{emajor}
+  discipline = {
+    % default = {计算机科学与技术},
+  },
+  discipline* = {
+    % default = {Computer Science and Technology},
+    name    = discipline at en,
+  },
 %    \end{macrocode}
 %
 % 论文成文日期。
 %    \begin{macrocode}
-\thu at def@term{cdate}
-\thu at def@term{edate}
+  date = {
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
 %    \end{macrocode}
 %
 % 博士后专用封面参数。
 %    \begin{macrocode}
-\thu at def@term{id}
-\thu at def@term{udc}
-\thu at def@term{catalognumber}
-\thu at def@term{cfirstdiscipline}
-\thu at def@term{cseconddiscipline}
-\thu at def@term{postdoctordate}
-\thu at def@term{postdocstartdate}
-\thu at def@term{postdocenddate}
+  clc,
+  udc,
+  id,
+  discipline-level-1 = {
+    default = {一级学科名称},
+    name    = discipline at level@i,
+  },
+  discipline-level-2 = {
+    default = {二级学科名称},
+    name    = discipline at level@ii,
+  },
+  start-date = {
+    name    = start at date,
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+  end-date = {
+    name    = end at date,
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+}
 %    \end{macrocode}
 %
-% 摘要最好以环境的形式出现(否则命令的形式会导致开始结束的括号距离太远,我不喜
-% 欢),这就必须让环境能够自己保存内容留待以后使用。使用 \pkg{environ} 的
-% \cs{Collect at Body} 来实现。
-% \changes{v3.1}{2006/06/17}{重新定义摘要成为环境。}
-% \changes{v5.2.2}{2016/01/31}{用 \pkg{environ} 封装的 \cs{Collect at Body}。}
+% 输出日期的给定格式:\cs{thu at format@date}\marg{format}\marg{date},
+% 其中格式 \meta{format} 接受三个参数分别对应年、月、日,
+% \meta{date} 是 ISO 格式的日期(yyyy-mm-dd)。
 %    \begin{macrocode}
-\newcommand{\thu@@cabstract}[1]{\long\gdef\thu at cabstract{#1}}
-\newenvironment{cabstract}{\Collect at Body\thu@@cabstract}{}
-\newcommand{\thu@@eabstract}[1]{\long\gdef\thu at eabstract{#1}}
-\newenvironment{eabstract}{\Collect at Body\thu@@eabstract}{}
+\newcommand\thu at format@date[2]{%
+  \edef\thu@@date{#2}%
+  \def\thu@@process at date##1-##2-##3\@nil{%
+    #1{##1}{##2}{##3}%
+  }%
+  \expandafter\thu@@process at date\thu@@date\@nil
+}
+\newcommand\thu at date@zh at digit[3]{#1 年 \number#2 月 \number#3 日}
+\newcommand\thu at date@zh at digit@short[3]{#1 年 \number#2 月}
+\newcommand\thu at date@zh at short[3]{\zhdigits{#1}年\zhnumber{#2}月}
+\newcommand\thu at date@month[1]{%
+  \ifcase\number#1\or
+    January\or February\or March\or April\or May\or June\or
+    July\or August\or September\or October\or November\or December%
+  \fi
+}
+\newcommand\thu at date@en at short[3]{\thu at date@month{#2}, #1}
 %    \end{macrocode}
 %
-% \begin{macro}{\thu at parse@keywords}
-%   不同论文格式关键词之间的分割不太相同,我们用 \cs{ckeywords} 和
-%    \cs{ekeywords} 来收集关键词列表,然后用本命令来生成符合要求的格式。
+% 下划线命令
 %    \begin{macrocode}
-\def\thu at parse@keywords#1{
-  \define at key{thu}{#1}{\csname #1\endcsname{##1}}
-  \expandafter\gdef\csname thu@#1\endcsname{}
-  \expandafter\gdef\csname #1\endcsname##1{
-    \@for\reserved at a:=##1\do{
-      \expandafter\ifx\csname thu@#1\endcsname\@empty\else
-        \expandafter\g at addto@macro\csname thu@#1\endcsname{%
-          \ignorespaces\csname thu@#1 at separator\endcsname}
+\newcommand\thu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
+\newcommand\thu at CJKunderline[2][6em]{\CJKunderline*{\hb at xt@ #1{\hss#2\hss}}}
+%    \end{macrocode}
+%
+% 将内容拉伸或压缩到固定宽度。
+%    \begin{macrocode}
+\newcommand\thu at fixed@box[2]{%
+  \begingroup
+    \def\CJKglue{\hskip 0pt plus 2filll minus 1filll}%
+    \makebox[#1][l]{#2}%
+  \endgroup
+}
+%    \end{macrocode}
+%
+% 如果内容小于给定宽度,则拉伸至该宽度,否则取自然宽度。
+%    \begin{macrocode}
+\newbox\thu at stretch@box
+\newcommand\thu at stretch[2]{%
+  \sbox\thu at stretch@box{#2}%
+  \ifdim \wd\thu at stretch@box < #1\relax
+    \begingroup
+      \def\CJKglue{\hskip 0pt plus 2filll}%
+      \makebox[#1][l]{#2}%
+    \endgroup
+  \else
+    \box\thu at stretch@box
+  \fi
+}
+%    \end{macrocode}
+%
+% 如果内容小于给定宽度,则在右侧填充空白至该宽度,否则取自然宽度。
+%    \begin{macrocode}
+\newbox\thu at pad@box
+\newcommand\thu at pad[2]{%
+  \sbox\thu at pad@box{#2}%
+  \ifdim \wd\thu at pad@box < #1\relax
+    \makebox[#1][l]{\box\thu at pad@box}%
+  \else
+    \box\thu at pad@box
+  \fi
+}
+%    \end{macrocode}
+%
+% 导师的姓名和职称使用“,”分开,所以这里用 \pkg{kvsetkeys} 的 \cs{comma at parse} 来处理。
+%    \begin{macrocode}
+\newcounter{thu at csl@count}
+\newcommand\thu at name@title at process[1]{%
+  \ifcase\c at thu@csl at count  % == 0
+    \gdef\thu@@name{#1}%
+  \or  % == 1
+    \gdef\thu@@title{#1}%
+  \fi
+  \stepcounter{thu at csl@count}%
+}
+\newcommand\thu at name@title at format[2]{%
+  \thu at pad{3cm}{\thu at stretch{4em}{#1}}%
+  \thu at stretch{3em}{#2}%
+}
+\newcommand\thu at name@title[1]{%
+  \setcounter{thu at csl@count}{0}%
+  \gdef\thu@@name{}%
+  \gdef\thu@@title{}%
+  \expandafter\comma at parse\expandafter{#1}{\thu at name@title at process}%
+  \thu at name@title at format{\thu@@name}{\thu@@title}%
+}
+%    \end{macrocode}
+%
+% \myentry{封面}
+% \begin{macro}{\maketitle}
+% 生成封面(题名页)总命令。
+%    \begin{macrocode}
+\renewcommand\maketitle{%
+  \cleardoublepage
+  \pagestyle{thu at empty}%
+  \pagenumbering{Alph}%
+  \thu at pdfbookmark{-1}{\thu at title}%
+  \thu at titlepage
+  \ifthu at degree@graduate
+    \cleardoublepage
+    \thu at titlepage@en
+  \fi
+  \clearpage
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thu at titlepage}
+% 中文封面(题名页)
+%
+% 研究生的中文封面分“学术型”和“专业型”两种 layout,但是“工程硕士”跟“学术型” 的
+% layout 一样,所以按照 \cs{thu at discipline}(工程领域)是否为空来区分“工程硕士”。
+%    \begin{macrocode}
+\newcommand\thu at titlepage{%
+  \ifthu at degree@graduate
+    \ifthu at degree@type at academic
+      \thu at titlepage@graduate at academic
+    \else
+      \ifx\thu at discipline\@empty
+        \thu at titlepage@graduate at professional
+      \else
+        \thu at titlepage@graduate at academic
       \fi
-      \expandafter\expandafter\expandafter\g at addto@macro%
-        \expandafter\csname thu@#1\expandafter\endcsname\expandafter{\reserved at a}}}}
+    \fi
+  \else
+    \ifthu at degree@bachelor
+      \thu at titlepage@bachelor
+    \else
+      \ifthu at degree@postdoc
+        \thu at cover@postdoc
+        \cleardoublepage
+        \thu at titlepage@postdoc
+      \fi
+    \fi
+  \fi
+}
 %    \end{macrocode}
 % \end{macro}
-% 利用 \cs{thu at parse@keywords} 来定义,内部通过 \cs{thu at ckeywords} 和
-% \cs{thu at ekeywords} 来引用。
-% \changes{v3.1}{2007/06/16}{增强的关键词命令。}
+%
+% \myentry{研究生中文封面}
+% 《写作指南》规定中文封面页边距:
+% 上—6. 0 厘米,下—5.5 厘米,左—4.0 厘米,右—4.0 厘米,装订线 0 厘米。
+% 然而作为事实标准的 Word 模板的页边距是上下 6.0 厘米,左右 4.0 厘米。
+% 这里缩小上边距以方便排版保密信息。
 %    \begin{macrocode}
-\thu at parse@keywords{ckeywords}
-\thu at parse@keywords{ekeywords}
+\newcommand\thu at titlepage@graduate at academic{%
+  \newgeometry{
+    top     = 2cm,
+    bottom  = 6cm,
+    hmargin = 3.5cm,
+  }%
+  \null\vskip 0.2cm%
+  \begingroup
+    \centering
+    \parbox[t][2cm][t]{\textwidth}{%
+      \hskip -0.69cm%
+      \thu at titlepage@secret
+    }\par
+    \vskip 1.5cm%
+    {\thu at titlepage@title}%
+    \vskip 0.85cm%
+    \thu at titlepage@degree
+    \vfill
+    \parbox[t][7.25cm][t]{\textwidth}{\centering\thu at titlepage@info}\par
+    \parbox[t][1.03cm][t]{\textwidth}{\centering\thu at titlepage@date}\par
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
 %    \end{macrocode}
 %
-% \begin{macro}{\thusetup}
-% \changes{v5.1.0}{2015/12/26}{通过 \cs{thusetup} 统一设置封面信息。}
-% 由上可见,封面和封底有一大堆信息需要设置,为了简化操作界面,提供一
-% 个 \cs{thusetup} 命令支持 key/value 的方式来设置。key 就是前面各个设置项的
-% 名字。\note[说明:]{只能设置普通项,不支持环境项,
-% 如 \texttt{cabstract} 和 \texttt{eabstract}。} 由于这些设置项被 \cs{makecover}
-% 调用,所以此命令需要在 \cs{makecover} 之前被调用。
+% 专业型学位论文中文封面
 %    \begin{macrocode}
-\def\thusetup{\kvsetkeys{thu}}
+\newcommand\thu at titlepage@graduate at professional{%
+  \newgeometry{
+    top     = 2cm,
+    bottom  = 6cm,
+    hmargin = 3.5cm,
+  }%
+  \null\vskip 0.45cm%
+  \begingroup
+    \centering
+    \parbox[t][1.52cm][t]{\textwidth}{%
+      \hskip -0.69cm%
+      \thu at titlepage@secret
+    }\par
+    \vskip 1.5cm%
+    {\sffamily\yihao[1.575]\thu at title\par}%
+    \vskip 0.9cm%
+    \thu at titlepage@degree
+    \vfill
+    \parbox[t][5.28cm][t]{\textwidth}{\centering\thu at titlepage@info}\par
+    \parbox[t][1.25cm][t]{\textwidth}{\centering\thu at titlepage@date}\par
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
 %    \end{macrocode}
-% \end{macro}
 %
-% \changes{v1.4rc1}{2005/12/14}{I have to put all chinese chars into cfg,
-% otherwise they would not appear.}
-% \changes{v2.5.1}{2006/05/25}{硕士封面的冒号前居然有点小距离!}
-% \changes{v3.1}{2007/10/09}{去掉配置文件中的 \cs{hfill}。}
-% \changes{v3.1}{2007/10/09}{\textbf{内部}密级前面要五角星了。}
-% \changes{v4.0}{2007/11/08}{\textbf{内部}密级前面终究还是不要五角星了。}
-% \changes{v4.4.2}{2008/06/05}{本科生格式终于也开始用空格作为关键字分隔符了。}
-% \changes{v4.4.2}{2008/06/07}{本科生签名之间距离改为 \cs{hskip1em}。}
-% \changes{v4.5.2}{2010/05/29}{本科论文日期具体到日。}
-% \changes{v4.6}{2011/04/26}{增加博士后相关配置。}
-% \changes{v4.7}{2012/05/27}{修正本科生作者信息名称。}
-% \changes{v4.7}{2012/05/27}{本科生关键字也用分号分割了。}
-% \changes{v5.3.0}{2016/03/11}{更新到研究生院 2016.3 指南。}
-% 定义封面用到的各种文字。
 %    \begin{macrocode}
-\def\thu at ckeywords@separator{;}
-\def\thu at ekeywords@separator{;}
-\def\thu at title@sep{:}
-\ifthu at postdoctor
-  \def\thu at secretlevel{密级}
-\else
-  \def\thu at secretlevel{秘密}
-\fi
-\def\thu at secretyear{\the\year}
-\def\thu at schoolname{清华大学}
-\def\thu at bachelor@subtitle{综合论文训练}
-\def\thu at bachelor@title at pre{题目}
-\def\thu at postdoctor@date at title{研究起止日期}
-\ifthu at postdoctor
-  \def\thu at author@title{博士后姓名}
-\else
-  \ifthu at bachelor
-    \def\thu at author@title{姓名}
+\newcommand\thu at titlepage@secret{%
+  \sffamily\CJKfamily+{}\sanhao
+  \ifx\thu at secret@level\@empty
+    \phantom{秘密}%
   \else
-    \def\thu at author@title{研究生}
+    \thu at secret@level★\makebox[3em][c]{\thu at secret@year}年%
+  \fi\par
+}
+%    \end{macrocode}
+%
+% 题名使用一号黑体字,一行写不下时可分两行写。
+% 由于 Word 模板这里设置了“对齐到网格”,所以实际行距不是 1.25 倍。
+%    \begin{macrocode}
+\newcommand\thu at titlepage@title{%
+  \sffamily\yihao[1.8]\thu at title\par
+}
+%    \end{macrocode}
+%
+% 申请学位的学科门类: 小二号宋体字,字距延伸 0.5bp,
+% 所以 \cs{CJKglue} 应该设为 1 bp。
+%    \begin{macrocode}
+\newcommand\thu at titlepage@degree{%
+  \begingroup
+    \def\CJKglue{\hskip 1bp}%
+    \CJKfamily+{}\xiaoer
+    (申请清华大学\thu at degree@name\ifthu at degree@type at professional 专业\fi 学位论文)\par
+  \endgroup
+}
+%    \end{macrocode}
+%
+% 作者及导师信息部分使用三号仿宋字
+%    \begin{macrocode}
+\newcommand\thu at titlepage@info{%
+  \ifthu at degree@doctor
+    \thu at titlepage@info at doctor
+  \else
+    \thu at titlepage@info at master
   \fi
-\fi
-\def\thu at postdoctor@first at discipline@title{流动站(一级学科)名称}
-\def\thu at postdoctor@second at discipline@title{专\hspace{1em}业(二级学科)名称}
-\def\thu at secret@content{%
-  \unskip\ifthu at master$\bigstar$ \fi%
-  \ifthu at doctor$\bigstar$ \fi%
-  \thu at secretyear 年}
-\def\thu at apply{(申请清华大学\thu at cdegree 学位论文)}
-\ifthu at bachelor
-  \def\thu at department@title{系别}
-  \def\thu at major@title{专业}
-\else
-  \def\thu at department@title{培养单位}
-  \def\thu at major@title{学科}
-\fi
-\ifthu at postdoctor
-  \def\thu at supervisor@title{合作导师}
-\else
-  \def\thu at supervisor@title{指导教师}
-\fi
-\ifthu at bachelor
-  \def\thu at assosuper@title{辅导教师}
-\else
-  \def\thu at assosuper@title{副指导教师}
-\fi
-\def\thu at cosuper@title{%
-  \ifthu at doctor 联合导师\else \ifthu at master 联合指导教师\fi\fi}
-\cdate{\ifthu at bachelor\CJK at todaysmall\else\ifthu at postdoctor\CJK at todaysmall@short\else\CJK at todaybig@short\fi\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}
-\newcommand{\thu at authtitle}{关于学位论文使用授权的说明}
-\newcommand{\thu at authorization}{%
-\ifthu at bachelor
-本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
-论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
-容,可以采用影印、缩印或其他复制手段保存该论文。
-\else
-本人完全了解清华大学有关保留、使用学位论文的规定,即:
-
-清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
-必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
-学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
-室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu at master 。\else ;
-(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
-论文。\fi
-
-本人保证遵守上述规定。
-\fi}
-\newcommand{\thu at authorizationaddon}{%
-  \ifthu at bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
-\newcommand{\thu at authorsig}{\ifthu at bachelor 签\hskip1em名:\else 作者签名:\fi}
-\newcommand{\thu at teachersig}{导师签名:}
-\newcommand{\thu at frontdate}{%
-  日\ifthu at bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
-\newcommand{\thu at ckeywords@title}{关键词:}
+}
+\newcommand\thu at cover@info at tabular[4]{%
+  \def\thu at cover@item##1##2##3{%
+    \ifx##3\@empty\else
+      \thu at pad{#2}{\thu at fixed@box{#1}{##1}}%
+      \thu at pad{#3}{:}%
+      ##2{##3}\\
+    \fi
+  }%
+  \begin{tabular}{l}%
+    #4%
+  \end{tabular}
+}
+\newcommand\thu at titlepage@info at doctor{%
+  \fangsong\sanhao[1.95]%
+  \thu at cover@info at tabular{2.8cm}{2.8cm}{0.82cm}{%
+    \thu at cover@item{培养单位}{}{\thu at department}%
+    \ifthu at degree@type at academic
+      \thu at cover@item{学科}{}{\thu at discipline}%
+      \thu at cover@item{研究生}{\thu at name@title}{\thu at author}%
+    \else
+      \thu at cover@item{申请人}{\thu at name@title}{\thu at author}%
+    \fi
+    \thu at cover@item{指导教师}{\thu at name@title}{\thu at supervisor}%
+    \thu at cover@item{副指导教师}{\thu at name@title}{\thu at associate@supervisor}%
+    \thu at cover@item{联合导师}{\thu at name@title}{\thu at joint@supervisor}%
+  }\par
+}
+\newcommand\thu at titlepage@info at master{%
+  \fangsong\sanhao[1.95]%
+  \thu at cover@info at tabular{5.5em}{3.6cm}{0.82cm}{%
+    \thu at cover@item{培养单位}{}{\thu at department}%
+    \ifthu at degree@type at academic
+      \thu at cover@item{学科}{}{\thu at discipline}%
+      \thu at cover@item{研究生}{\thu at name@title}{\thu at author}%
+    \else
+      \thu at cover@item{工程领域}{}{\thu at discipline}%
+      \thu at cover@item{申请人}{\thu at name@title}{\thu at author}%
+    \fi
+    \thu at cover@item{指导教师}{\thu at name@title}{\thu at supervisor}%
+    \thu at cover@item{副指导教师}{\thu at name@title}{\thu at associate@supervisor}%
+    \thu at cover@item{联合指导教师}{\thu at name@title}{\thu at joint@supervisor}%
+  }\par
+}
 %    \end{macrocode}
 %
+% 论文成文打印的日期,用三号宋体汉字,字距延伸 0.5bp,
+% 所以 \cs{CJKglue} 应该设为 1 bp。
+%    \begin{macrocode}
+\newcommand\thu at titlepage@date{%
+  \begingroup
+    \def\CJKglue{\hskip 1bp}%
+    \sanhao\thu at format@date{\thu at date@zh at short}{\thu at date}\par
+  \endgroup
+}
+%    \end{macrocode}
 %
-% \myentry{封面第一页}
-% \begin{macro}{\thu at first@titlepage}
-% 题名使用一号黑体字,一行写不下时可分两行写,并采用 1.25 倍行距。
-% 申请学位的学科门类: 小二号宋体字。
-% 中文封面页边距:
-%  上- 6.0 厘米,下- 5.5 厘米,左- 4.0 厘米,右- 4.0 厘米,装订线 0 厘米;
-% \changes{v2.5.1}{2006/05/21}{本科封面标题调整微小的空隙。}
-% \changes{v2.5.1}{2006/05/21}{本科封面标题第二行的横线上移一点。}
-% \changes{v2.5.2}{2006/05/29}{研究生论文标题中英文用 arial 字体。}
-% \changes{v2.6}{2006/06/09}{本科生题目加长,最多 24 个字。}
-% \changes{v4.6}{2011/04/26}{增加博士后封面。}
-% \changes{v4.7}{2011/11/28}{硕士中文封面不再需要英文标题。}
-% \changes{v4.7}{2012/05/30}{本科生题目下划线长度自动适应字数。}
-% \changes{v5.1.0}{2015/12/27}{利用 \env{CJKfilltwosides} 优化封面排版。}
-% \changes{v5.5.0}{2019/01/08}{修正博士后封面的格式。}
+% \myentry{研究生英文封面}
+% \begin{macro}{\thu at titlepage@en}
+%    \begin{macrocode}
+\newcommand{\thu at titlepage@en}{%
+  \newgeometry{
+    top     = 5.5cm,
+    bottom  = 5cm,
+    hmargin = 3.6cm,
+  }%
+  \ifthu at degree@type at academic
+    \thu at titlepage@en at graduate@academic
+  \else
+    \thu at titlepage@en at graduate@professional
+  \fi
+  \clearpage
+  \restoregeometry
+}
+\newcommand\thu at titlepage@en at graduate@academic{%
+  \begingroup
+    \centering
+    \null\vskip -0.7cm%
+    \thu at titlepage@en at title
+    \vfill
+    \sanhao[1.725]%
+    \thu at titlepage@en at degree
+    \vskip 0.13cm%
+    in\par
+    \vskip 0.1cm%
+    {\bfseries\sffamily\thu at discipline@en\par}
+    \vskip 0.7cm%
+    {\sffamily by\par}
+    \vskip 0.24cm%
+    {\sffamily\bfseries\thu at author@en\par}%
+    \vskip 0.14cm%
+    \parbox[t][3.07cm][t]{\textwidth}{%
+      \centering\xiaosan[2.1]%
+      \thu at titlepage@en at supervisor
+    }\par
+    \thu at titlepage@en at date
+    \vskip 0.65cm%
+  \endgroup
+}
+\newcommand\thu at titlepage@en at graduate@professional{%
+  \begingroup
+    \centering
+    \null\vskip -0.7cm%
+    \thu at titlepage@en at title
+    \vfill
+    \sanhao[1.725]%
+    \thu at titlepage@en at degree
+    \vskip 1.1cm%
+    {\sffamily by\par}
+    \vskip 0.24cm%
+    {\sffamily\bfseries\thu at author@en\par}%
+    \ifx\thu at discipline@en\empty
+      \vskip 1.95cm%
+    \else
+      \vskip -0.1cm%
+      {\sffamily\bfseries(\thu at discipline@en)\par}%
+      \vskip 1.1cm%
+    \fi
+    \parbox[t][3.37cm][t]{\textwidth}{%
+      \centering\xiaosan[1.82]%
+      \thu at titlepage@en at supervisor
+    }\par
+    \thu at titlepage@en at date
+    \vskip 0.3cm%
+  \endgroup
+}
+\newcommand\thu at titlepage@en at title{%
+  \begingroup
+    \sffamily\bfseries\fontsize{20bp}{31bp}\selectfont
+    \thu at title@en\par
+  \endgroup
+}
+\newcommand\thu at thesis@name at en{%
+  \ifthu at degree@master
+    Thesis%
+  \else
+    Dissertation%
+  \fi
+}
+\newcommand\thu at titlepage@en at degree{%
+  \thu at thesis@name at en{} Submitted to\par
+  {\bfseries Tsinghua University\par}%
+  in partial fulfillment of the requirement\par
+  for the
+  \ifthu at degree@type at professional
+    professional
+  \fi
+  degree of\par
+  {\sffamily\bfseries\thu at degree@name at en\par}%
+}
+\newcommand\thu at titlepage@en at supervisor{%
+  \begin{tabular}{r@{\makebox[0.71cm][l]{:}}l}%
+    \thu at thesis@name at en{} Supervisor & \thu at supervisor@en     \\
+    \ifx\thu at associate@supervisor at en\@empty\else
+      Associate Supervisor            & \thu at associate@supervisor at en \\
+    \fi
+    \ifx\thu at joint@supervisor at en\@empty\else
+      Cooperate Supervisor            & \thu at joint@supervisor at en   \\
+    \fi
+  \end{tabular}%
+}
+\newcommand\thu at titlepage@en at date{%
+  \begingroup
+    \sffamily\bfseries\sanhao
+    \thu at format@date{\thu at date@en at short}{\thu at date}\par
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
 %
+% \myentry{本科生封面}
 %    \begin{macrocode}
-\newcommand\thu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
-\newcommand\thu at CJKunderline[2][6em]{\CJKunderline*{\hb at xt@ #1{\hss#2\hss}}}
-\newlength{\thu at title@width}
-\newcommand{\thu at put@title}[2][\thu at title@width]{%
-  \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
-\def\thu at first@titlepage{%
-  \ifthu at postdoctor\thu at first@titlepage at postdoctor\else\thu at first@titlepage at other\fi}
-\newcommand\thu at first@titlepage at postdoctor{%
+\newcommand\thu at titlepage@bachelor{%
+  \newgeometry{
+    vmargin = 2.54cm,
+    hmargin = 3.17cm,
+  }%
+  \null\vskip 0.44cm%
+  \begingroup
+    \centering
+    \parbox[t][2cm][t]{\textwidth}{%
+      \hfill
+      \sffamily\CJKfamily+{}\xiaosi
+      \ifx\thu at secret@level\@empty
+        \phantom{秘密}%
+      \else
+        \thu at secret@level\makebox[3em][c]{\thu at secret@year}年%
+      \fi\par
+    }\par
+    \begingroup
+      \ifcsname lishu\endcsname
+        \lishu\yihao\ziju{0.5}清华大学%
+      \else
+        \includegraphics{tsinghua.pdf}%
+      \fi
+      \par
+    \endgroup
+    \vskip 0.94cm%
+    {\sffamily\bfseries\xiaochu\ziju{0.5}综合论文训练\par}%
+    \vskip 2.3cm%
+    \parbox[t][2.4cm][t]{\textwidth}{%
+      \heiti\xiaoer[1.56]%
+      \parindent=2em%
+      \hangindent=5em%
+      \makebox[3em][l]{题目:}%
+      \yihao[1.56]%
+      \CJKunderline[skip=false, thickness=0.05em, depth=0.12em]{\thu at title}\par
+    }\par
+    \vskip 2.5cm%
+    \parbox[t][6.0cm][t]{\textwidth}{%
+      \fangsong\sanhao[2.3]%
+      \leftskip=2.5cm%
+      \parindent=\z@
+      \def\thu at cover@item##1##2##3{%
+        \ifx##3\@empty\else
+          \thu at fixed@box{4em}{##1}:##2{##3}\\
+        \fi
+      }%
+      \def\thu at name@title at format##1##2{%
+        \thu at stretch{3em}{##1}\quad ##2%
+      }
+      \thu at cover@item{系别}{}{\thu at department}%
+      \thu at cover@item{专业}{}{\thu at discipline}%
+      \thu at cover@item{姓名}{\thu at name@title}{\thu at author}%
+      \thu at cover@item{指导教师}{\thu at name@title}{\thu at supervisor}%
+      \thu at cover@item{辅导教师}{\thu at name@title}{\thu at associate@supervisor}%
+    }\par
+    {\xiaosi\thu at format@date{\thu at date@zh at digit}{\thu at date}\par}%
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
+%    \end{macrocode}
+%
+% \myentry{博士后封面}
+%    \begin{macrocode}
+\newcommand\thu at cover@postdoc{%
   \begin{center}%
-    \setlength{\thu at title@width}{3.5em}%
     \renewcommand\ULthickness{0.7pt}%
     \vspace*{0.35cm}%
     {\sihao[2.6]%
-      \thu at put@title{分类号}\thu at underline[3.7cm]{\thu at catalognumber}\hfill
-      密级\thu at underline[3.7cm]{\ifthu at secret\thu at secret@content\fi}\par
-      \thu at put@title{U D C}\thu at underline[3.7cm]{\thu at udc}\hfill
+      \thu at stretch{3.1em}{分类号}\thu at underline[3.7cm]{\thu at clc}\hfill
+      密级\thu at underline[3.7cm]{\thu at secret@level}\par
+      \thu at stretch{3.1em}{U D C}\thu at underline[3.7cm]{\thu at udc}\hfill
       编号\thu at underline[3.7cm]{\thu at id}\par
     }%
     \vskip 3.15cm%
     {\sffamily\bfseries\xiaoer[2.6]%
-      {\ziju{1.5}\thu at schoolname\par}%
+      {\ziju{1.5}清华大学\par}%
       {\ziju{0.5}博士后研究工作报告\par}%
     }%
     \vskip 0.2cm%
     \parbox[t][4.0cm][c]{\textwidth}{%
-      \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu at ctitle}\par
+      \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu at title}\par
     }\par
     \vskip 0.4cm%
-    {\xiaosi\thu at cauthor\par}%
+    {\xiaosi\thu at author\par}%
     \vskip 1.4cm%
     {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}%
-      工作完成日期\quad\thu at CJKunderline[5.9cm]{\thu at postdoctordate}\par
+      工作完成日期\quad
+      \thu at CJKunderline[5.9cm]{%
+        \thu at format@date{\thu at date@zh at digit@short}{\thu at start@date}—%
+        \thu at format@date{\thu at date@zh at digit@short}{\thu at end@date}
+      }\par
       \vskip 0.55cm%
-      报告提交日期\quad\thu at CJKunderline[5.9cm]{\thu at cdate}\par
+      报告提交日期\quad
+      \thu at CJKunderline[5.9cm]{\thu at format@date{\thu at date@zh at digit@short}{\thu at date}}\par
     }%
     \vskip 0.45cm%
-    {\xiaosi[2]{\ziju{1}\thu at schoolname}\quad (北京)\par}%
+    {\xiaosi[2]{\ziju{1}清华大学}\quad (北京)\par}%
     \vskip 0.25cm%
-    {\xiaosi[2]\thu at cdate\par}%
+    {\xiaosi[2]\thu at format@date{\thu at date@zh at digit@short}{\thu at date}\par}%
   \end{center}%
-  \cleardoublepage
+}
+%    \end{macrocode}
+%
+% \myentry{博士后题名页}
+%    \begin{macrocode}
+\newcommand\thu at titlepage@postdoc{%
   \begin{center}%
     \vspace*{1.5cm}%
     \parbox[t][3cm][c]{\textwidth}{%
-      \centering\sanhao[1.95]\thu at ctitle\par
+      \centering\sanhao[1.95]\thu at title\par
     }\par
     \vskip 0.15cm%
     \parbox[t][3cm][c]{\textwidth}{%
-      \centering\sihao[1.36]\thu at etitle\par
+      \centering\sihao[1.36]\thu at title@en\par
     }\par
     \vskip 0.4cm%
     {\xiaosi[2.6]%
-      \setlength{\thu at title@width}{11em}%
       \begin{tabular}{l@{\quad}l}%
-        \thu at put@title{博士后姓名}                  & \thu at cauthor           \\
-        \thu at put@title{流动站(一级学科)名称}      & \thu at cfirstdiscipline  \\
-        \thu at put@title{专\quad{}业(二级学科)名称} & \thu at cseconddiscipline \\
+        \thu at stretch{11em}{博士后姓名}                  & \thu at author           \\
+        \thu at stretch{11em}{流动站(一级学科)名称}      & \thu at discipline@level at i  \\
+        \thu at stretch{11em}{专\quad{}业(二级学科)名称} & \thu at discipline@level at ii \\
       \end{tabular}\par
     }%
     \vskip 2.7cm%
     {\xiaosi[2.6]%
-      研究工作起始时间\quad\thu at postdocstartdate\par
+      研究工作起始时间\quad\thu at format@date{\thu at date@zh at digit}{\thu at start@date}\par
       \vskip 0.1cm%
-      研究工作期满时间\quad\thu at postdocenddate\par
+      研究工作期满时间\quad\thu at format@date{\thu at date@zh at digit}{\thu at end@date}\par
     }%
     \vskip 2.1cm%
-    {\xiaosi[2.6]\thu at schoolname{}人事部(北京)\par}%
+    {\xiaosi[2.6]清华大学人事部(北京)\par}%
     \vskip 0.6cm%
-    {\wuhao\thu at cdate\par}%
+    {\wuhao\thu at format@date{\thu at date@zh at digit@short}{\thu at date}\par}%
   \end{center}%
 }
-\newcommand{\thu at first@titlepage at other}{
-  \begin{center}
-    \vspace*{-1.6cm}
-    \parbox[b][2.4cm][t]{\textwidth}{%
-      \ifthu at secret{\heiti\sanhao\thu at secretlevel\thu at secret@content}\else\rule{1cm}{0cm}\fi}
-    \ifthu at bachelor
-      \vskip0.65cm
-      {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu at schoolname\else\includegraphics{tsinghua.pdf}\fi}
-      \par\vskip1.5cm
-      {\xiaochu\heiti\ziju{0.5}\textbf\thu at bachelor@subtitle}
-      \vskip2.2cm\hskip0.8cm
-      \noindent\heiti\xiaoer\thu at bachelor@title at pre\thu at title@sep
-      \parbox[t]{12cm}{%
-      \ignorespaces\yihao[1.51]%
-      \renewcommand{\CJKunderlinebasesep}{0.25cm}%
-      \renewcommand{\ULthickness}{1.3pt}%
-      \xeCJKsetup{underline/format=\color{black}}%
-      \CJKunderline*{\thu at ctitle}}%
-      \vskip1.3cm
-    \else
-      \vskip0.8cm
-      \parbox[t][9cm][t]{\paperwidth-8cm}{
-      \renewcommand{\baselinestretch}{1.3}
-      \begin{center}
-        \yihao[1.2]{\sffamily\thu at ctitle}\par%
-        \par\vskip 18bp%
-        \xiaoer[1]\textrm{\thu at apply}%
-      \end{center}}
-    \fi
 %    \end{macrocode}
 %
-% 作者及导师信息部分使用三号仿宋字
-% \changes{v2.0}{2005/12/20}{封面的培养单位,学科等内容字距自动调整。}
-% \changes{v2.1}{2006/02/29}{增加本科部分。}
-% \changes{v2.6.2}{2006/06/17}{如果本科生没有辅导教师则不显示。}
-% \changes{v3.1}{2007/10/09}{重新放置封面表格的提示元素。}
-% \changes{v4.4.3}{2008/06/09}{修改本科生论文封面格式以符合新样例。}
-% \changes{v5.1.0}{2015/12/27}{修改联合指导教师显示问题。}
+% \myentry{授权说明}
+% \begin{macro}{\copyrightpage}
+% 授权说明
 %    \begin{macrocode}
-    \ifthu at bachelor
-      \vskip0.75cm
-      \ifx\thu at cassosupervisor\@empty%
-        \def\thu at tempa{7.15cm}
-      \else%
-        \def\thu at tempa{8.15cm}
+\newcommand{\thu at authorization}{%
+\ifthu at degree@bachelor
+本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
+论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
+容,可以采用影印、缩印或其他复制手段保存该论文。
+\else
+本人完全了解清华大学有关保留、使用学位论文的规定,即:
+
+清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
+必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
+学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
+室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu at degree@master 。\else ;
+(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
+论文。\fi
+
+本人保证遵守上述规定。
+\fi}
+\newcommand{\thu at authorizationaddon}{%
+  \ifthu at degree@bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
+\newcommand{\thu at authorsig}{\ifthu at degree@bachelor 签\hskip1em名:\else 作者签名:\fi}
+\newcommand{\thu at teachersig}{导师签名:}
+\newcommand{\thu at frontdate}{%
+  日\ifthu at degree@bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
+\newcommand\copyrightpage[1][]{%
+  \ifthu at degree@postdoc\relax\else
+    \ifthu at degree@bachelor\clearpage\else\cleardoublepage\fi%
+    \def\thu@@tmp{#1}
+    \ifx\thu@@tmp\@empty
+      \ifthu at degree@bachelor\thu at authorization@mk\else%
+        \begin{list}{}{%
+          \topsep\z@%
+          \listparindent\parindent%
+          \parsep\parskip%
+          \setlength{\leftmargin}{0.9mm}%
+          \setlength{\rightmargin}{0.9mm}}%
+        \item[]\thu at authorization@mk%
+        \end{list}%
       \fi%
-      \parbox[t][\thu at tempa][t]{\textwidth}{%
-        {\fangsong\sanhao[1.95]%
-         \hspace*{1.9cm}
-         \setlength{\thu at title@width}{4em}
-         \setlength{\extrarowheight}{6pt}
-         \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
-             \thu at put@title{\thu at department@title} & \thu at title@sep
-               & \thu at cdepartment\\
-             \thu at put@title{\thu at major@title}      & \thu at title@sep
-               & \thu at cmajor\\
-             \thu at put@title{\thu at author@title}     & \thu at title@sep
-               & \thu at cauthor \\
-             \thu at put@title{\thu at supervisor@title} & \thu at title@sep
-               & \thu at csupervisor\\
-             \ifx\thu at cassosupervisor\@empty\else%
-               \thu at put@title{\thu at assosuper@title} & \thu at title@sep
-               & \thu at cassosupervisor\\
-             \fi
-           \end{tabular}
-        }}
     \else
-      \vskip 5bp
-      \parbox[t][7.8cm][t]{\textwidth}{{\sanhao[1.5]
-        \begin{center}\fangsong
-          \setlength{\thu at title@width}{5em}
-          \setlength{\extrarowheight}{4pt}
-          \begin{tabular}{p{\thu at title@width}@{}c@{\extracolsep{8pt}}l}
-              \thu at put@title{\thu at department@title}  & \thu at title@sep
-                & {\ziju{0.1875}\thu at cdepartment}\\
-              \thu at put@title{\thu at major@title}       & \thu at title@sep
-                & {\ziju{0.1875}\thu at cmajor}\\
-              \thu at put@title{\thu at author@title}      & \thu at title@sep
-                & {\ziju{0.6875}\thu at cauthor}\\
-              \thu at put@title{\thu at supervisor@title}  & \thu at title@sep
-                & {\ziju{0.6875}\thu at csupervisor}\\
-              \ifx\thu at cassosupervisor\@empty\else
-                \thu at put@title{\thu at assosuper@title} & \thu at title@sep
-                & {\ziju{0.6875}\thu at cassosupervisor}\\
-              \fi
-              \ifx\thu at ccosupervisor\@empty\else
-                \ifthu at master
-                  \hfill\makebox[0pt][r]{\thu at cosuper@title} & \thu at title@sep
-                  & {\ziju{0.6875}\thu at ccosupervisor}\\
-                \fi
-                \ifthu at doctor
-                  \thu at put@title{\thu at cosuper@title} & \thu at title@sep
-                  & {\ziju{0.6875}\thu at ccosupervisor}\\
-                \fi
-              \fi
-            \end{tabular}
-        \end{center}}}
-      \fi
-%    \end{macrocode}
-%
-% 论文成文打印的日期,用三号宋体汉字,不用阿拉伯数字
-% 本科:论文成文打印的日期用阿拉伯数字,采用小四号宋体
-% \changes{v4.4.3}{2008/06/09}{修改本科生论文封面日期格式以符合新样例。}
-%    \begin{macrocode}
-     \begin{center}
-       {\ifthu at bachelor\vskip-1.0cm\xiaosi\else%
-         \vskip-0.5cm\sanhao\fi%
-         \songti\thu at cdate}
-     \end{center}
-    \end{center}} % end of titlepage
-%    \end{macrocode}
-% \end{macro}
-%
-% \myentry{英文封面}
-% \begin{macro}{\thu at doctor@engcover}
-% \changes{v4.2}{2008/01/23}{博士英文封面补充联合导师。}
-% \changes{v4.7}{2011/11/28}{硕士生新增英文封面。}
-% 研究生论文使用。
-%    \begin{macrocode}
-\def\thu at master@art{Master of Arts}
-\def\thu at master@sci{Master of Science}
-\def\thu at doctor@phi{Doctor of Philosophy}
-\newcommand{\thu at engcover}{%
-  \newif\ifthu at professional\thu at professionalfalse
-  \ifthu at master
-    \ifthenelse{\equal{\thu at edegree}{\thu at master@art}}
-      {\relax}
-      {\ifthenelse{\equal{\thu at edegree}{\thu at master@sci}}
-        {\relax}
-        {\thu at professionaltrue}}
+      \includepdf{#1}%
+    \fi
   \fi
-  \ifthu at doctor
-    \ifthenelse{\equal{\thu at edegree}{\thu at doctor@phi}}
-      {\relax}
-      {\thu at professionaltrue}
-  \fi
-  \begin{center}
-    \vspace*{-5pt}
-    \parbox[t][5.2cm][t]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.5}
-      \begin{center}
-        \erhao[1.1]\bfseries\sffamily\thu at etitle%
-      \end{center}}
-    \parbox[t][][t]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.3}
-      \begin{center}
-        \sanhao%
-        \ifthu at master Thesis \else Dissertation \fi
-        Submitted to\\
-        {\bfseries Tsinghua University}\\
-        in partial fulfillment of the requirement\\
-        for the \ifthu at professional professional \fi
-        degree of\\
-        {\bfseries\sffamily\thu at edegree}%
-        \ifthu at professional\relax\else
-          \\in\\[3bp]
-          {\bfseries\sffamily\thu at emajor}%
-        \fi
-      \end{center}}
-    \parbox[t][][b]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.3}
-      \begin{center}
-        \sanhao\sffamily by\\[3bp]
-        \bfseries\thu at eauthor%
-        \ifthu at professional
-          \ifx\thu at emajor\empty\relax\else
-            \\(~\thu at emajor~)%
-        \fi\fi
-      \end{center}}
-    \par\vspace{0.9cm}
-    \parbox[t][2.1cm][t]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.2}
-      \xiaosan\centering
-      \begin{tabular}{rl}
-        \ifthu at master Thesis \else Dissertation \fi
-        Supervisor : & \thu at esupervisor\\
-        \ifx\thu at eassosupervisor\@empty
-          \else Associate Supervisor : & \thu at eassosupervisor\\\fi
-        \ifx\thu at ecosupervisor\@empty
-          \else Cooperate Supervisor : & \thu at ecosupervisor\\\fi
-      \end{tabular}}
-    \parbox[t][2cm][b]{\paperwidth-7.2cm}{
-    \begin{center}
-      \sanhao\bfseries\sffamily\thu at edate
-    \end{center}}
-  \end{center}}
+}
 %    \end{macrocode}
-% \end{macro}
 %
-% \myentry{授权页面}
-% \begin{macro}{\thu at authorization@mk}
-% \changes{v4.0}{2007/11/08}{研究生的授权部分调整了一下,不知道老师为什么总爱修改
-% 那些无关紧要的格式,郁闷。感谢 PMHT at newsmth 的认真比对。}
-% \changes{v4.4.2}{2008/06/07}{修改本科生的授权部分,按照 2008 年的新样例。}
 % 支持扫描文件替换。
 %    \begin{macrocode}
 \newcommand{\thu at authorization@mk}{%
-  \ifthu at bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
-  \begin{center}\erhao\heiti\thu at authtitle\end{center}
-  \ifthu at bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
+  \ifthu at degree@bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
+  \begin{center}\erhao\heiti 关于学位论文使用授权的说明\end{center}
+  \ifthu at degree@bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
   \thu at authorization\par
   \textbf{\thu at authorizationaddon}\par
-  \ifthu at bachelor\vskip0.7cm\else\vskip1.0cm\fi
-  \ifthu at bachelor
+  \ifthu at degree@bachelor\vskip0.7cm\else\vskip1.0cm\fi
+  \ifthu at degree@bachelor
     \indent\mbox{\thu at authorsig\thu at underline\relax%
     \thu at teachersig\thu at underline\relax\thu at frontdate\thu at underline\relax}
   \else
@@ -2818,94 +2905,35 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\makecover}
-% 生成封面总命令。
-% \changes{v2.1}{2006/02/29}{分成几个小模块来搞,不然这个 macro 太大了,看不过来。}
-%    \begin{macrocode}
-\def\makecover{%
-  \thu at setup@pdfinfo\thu at makecover}
-\def\thu at setup@pdfinfo{%
-  \ifthu at chinese
-    \hypersetup{
-      pdftitle    = \thu at ctitle,
-      pdfauthor   = \thu at cauthor,
-      pdfsubject  = \thu at cdegree,
-      pdfkeywords = \thu at ckeywords,
-    }%
-  \else
-    \hypersetup{
-      pdftitle    = \thu at etitle,
-      pdfauthor   = \thu at eauthor,
-      pdfsubject  = \thu at edegree,
-      pdfkeywords = \thu at ekeywords,
-    }%
-  \fi
-  \hypersetup{
-    pdfcreator={\thuthesis-v\version}}}
-\NewDocumentCommand{\thu at makecover}{o}{
-  \phantomsection
-  \pdfbookmark[-1]{\thu at ctitle}{ctitle}
-  \normalsize%
-  \begin{titlepage}
-%    \end{macrocode}
+% \subsubsection{摘要}
+% \label{sec:abstractformat}
 %
-% 论文封面第一页!
+% \begin{macro}{\thu at clist@use}
+% 不同论文格式关键词之间的分割不太相同,我们用 \option{keywords} 和
+% \option{keywords*} 来收集关键词列表,然后用本命令来生成符合要求的格式,
+% 类似于 \LaTeX3 的 \cs{clist\_use:Nn}。
 %    \begin{macrocode}
-    \thu at first@titlepage
-%    \end{macrocode}
-%
-% \changes{v2.5}{2006/05/19}{本科论文评语位置调整。}
-% \changes{v3.0}{2007/05/12}{本科论文评语取消。}
-% \changes{v4.7}{2011/11/28}{硕士论文也需要英文封面。}
-%
-% 研究生论文需要增加英文封面
-%    \begin{macrocode}
-    \ifthu at bachelor\relax\else
-      \ifthu at postdoctor\relax\else
-        \cleardoublepage\thu at engcover
-    \fi\fi
-%    \end{macrocode}
-%
-% 授权说明
-% \changes{v3.0}{2007/05/12}{本科论文授权图片扫描取消。}
-% \changes{v4.5.2}{2010/05/29}{本科封面和授权说明之间不要空白页。}
-% \changes{v4.6}{2011/05/29}{博士后报告无授权说明。}
-% \changes{v5.0.0}{2015/06/05}{使用 \pkg{pdfpages} 宏包支持本硕博论文授权说明扫描版(\#36)。}
-%    \begin{macrocode}
-    \ifthu at postdoctor\relax\else%
-      \ifthu at bachelor\clearpage\else\cleardoublepage\fi%
-      \IfNoValueTF{#1}{%
-        \ifthu at bachelor\thu at authorization@mk\else%
-          \begin{list}{}{%
-            \topsep\z@%
-            \listparindent\parindent%
-            \parsep\parskip%
-            \setlength{\leftmargin}{0.9mm}%
-            \setlength{\rightmargin}{0.9mm}}%
-          \item[]\thu at authorization@mk%
-          \end{list}%
-        \fi%
-      }{%
-        \includepdf{#1}%
-      }%
+\thu at define@key{
+  keywords,
+  keywords* = {
+    name = keywords at en,
+  },
+}
+\newcommand\thu at clist@use[2]{%
+  \def\thu@@tmp{}%
+  \kv at set@family at handler{thu at clist}{%
+    \ifx\thu@@tmp\@empty
+      \def\thu@@tmp{#2}%
+    \else
+      #2%
     \fi
-  \end{titlepage}
+    ##1%
+  }%
+  \kvsetkeys at expandafter{thu at clist}{#1}%
+}
 %    \end{macrocode}
-%
-% \changes{v2.5}{2006/05/16}{综合论文训练在授权说明之后。}
-% \changes{v3.0}{2007/05/12}{本科综合论文训练在电子版中取消。}
-%
-% 中英文摘要
-%    \begin{macrocode}
-  \normalsize
-  \thu at makeabstract
-  \let\@tabular\thu at tabular}
-%    \end{macrocode}
 % \end{macro}
 %
-% \subsubsection{摘要}
-% \label{sec:abstractformat}
-%
 % \begin{macro}{\thu at put@keywords}
 % 排版关键字。
 %    \begin{macrocode}
@@ -2913,88 +2941,59 @@
 \newcommand\thu at put@keywords[2]{%
   \begingroup
     \setbox\thu at kw=\hbox{#1}
-    \ifthu at bachelor\indent\else\noindent\hangindent\wd\thu at kw\hangafter1\fi%
+    \ifthu at degree@bachelor\indent\else\noindent\hangindent\wd\thu at kw\hangafter1\fi%
     \box\thu at kw#2\par
   \endgroup}
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\thu at makeabstract}
+% \begin{environment}{abstract}
 % 中文摘要部分的标题为“\textbf{摘要}”,用黑体三号字。
-% \changes{v2.5.1}{2006/05/24}{教务处又不要正文前的页眉了。}
-% \changes{v2.5.1}{2006/05/24}{不管是哪种论文格式,摘要都要右开。}
-% \changes{v2.5.2}{2006/05/29}{在研究生论文中,摘要不出现在目录中,但是要在书签中出现。}
-% \changes{v2.5.3}{2006/06/03}{\cs{pagenumber} 会自动设置页码为 1。}
-% \changes{v2.6.3}{2006/06/30}{为本科正确设置目录及以后的页码。}
-% \changes{v4.5.2}{2010/05/29}{本科论文摘要亦无需右开。}
+% 摘要内容用小四号字书写,两端对齐,汉字用宋体,外文字用 Times New Roman 体,
+% 标点符号一律用中文输入状态下的标点符号。
 %    \begin{macrocode}
-\newcommand{\thu at makeabstract}{%
-  \ifthu at bachelor\clearpage\else\cleardoublepage\fi
+\newenvironment{abstract}{%
+  \ifthu at degree@bachelor\clearpage\else\cleardoublepage\fi
   \thu at setchinese
   \thu at chapter*[]{\cabstractname} % no tocline
-  \ifthu at bachelor
-    \pagestyle{thu at plain}
-  \else
-    \pagestyle{thu at headings}
-  \fi
-  \pagenumbering{Roman}
+}{%
 %    \end{macrocode}
 %
-% 摘要内容用小四号字书写,两端对齐,汉字用宋体,外文字用 Times New Roman 体,
-% 标点符号一律用中文输入状态下的标点符号。
-% \changes{v3.1}{2007/06/16}{研究生关键词不再沉底。}
-%    \begin{macrocode}
-  \thu at cabstract
-%    \end{macrocode}
 % 每个关键词之间空两个汉字符宽度, 且为悬挂缩进。
-% \changes{v2.6.2}{2006/06/17}{取消最后一列的空白。}
-% \changes{v2.6.2}{2006/06/20}{取消 tabular 环境,用 \cs{hangindent} 实现关键词
-% 悬挂缩进,英文摘要同。}
-% \changes{v4.4.2}{2008/06/05}{本科生格式中文关键词采用首行缩进且无悬挂缩进。}
 %    \begin{macrocode}
-  \ifthu at doctor\vfill\else\vskip12bp\fi
-  \thu at put@keywords{\textbf\thu at ckeywords@title}{\thu at ckeywords}
+  \ifthu at degree@doctor\vfill\else\vskip12bp\fi
+  \thu at put@keywords{\textbf{关键词:}}{%
+    \thu at clist@use{\thu at keywords}{;}%
+  }%
+  \thu at setdefaultlanguage
+}
 %    \end{macrocode}
+% \end{environment}
 %
+% \begin{environment}{abstract*}
 % 英文摘要部分的标题为 \textbf{Abstract},用 Arial 体三号字。研究生的英文摘要要求
-% 非常怪异:虽然正文前的封面部分为右开,但是英文摘要要跟中文摘要连
-% 续。\changes{v2.5.1}{2006/05/28}{研究生封面英文摘要连续。}
+% 非常怪异:虽然正文前的封面部分为右开,但是英文摘要要跟中文摘要连续。
+% 摘要内容用小四号 Times New Roman。
 %    \begin{macrocode}
+\newenvironment{abstract*}{%
   \thu at setenglish
   \thu at chapter*[]{\eabstractname} % no tocline
-%    \end{macrocode}
-%
-% 摘要内容用小四号 Times New Roman。
-%    \begin{macrocode}
-  \thu at eabstract
-%    \end{macrocode}
-%
-% 每个关键词之间空四个英文字符宽度。
-% \changes{v2.4}{2006/04/14}{It is \textbf{Key words}, but not \textbf{Key
-% Words}.}
-% \changes{v2.6.2}{2006/06/17}{取消最后一列的空白。}
-% \changes{v2.6.4}{2006/10/23}{\textbf{Keywords} but not \textbf{Key words}.}
-% \changes{v3.0}{2007/05/13}{\textbf{Key words} but not
-% \textbf{Keywords}. What are you doing?}
-% \changes{v4.4.2}{2008/06/05}{Bachelor English abstract format requires
-% indent and no hang-indent.}
-% \changes{v4.7}{2012/06/02}{Bachelor sample uses Keywords w/o space \texttt{-\_-}}
-%    \begin{macrocode}
-  \ifthu at doctor\vfill\else\vskip12bp\fi
+}{%
+  \ifthu at degree@doctor\vfill\else\vskip12bp\fi
   \thu at put@keywords{%
-    \textbf{\ifthu at bachelor Keywords:\else Key Words:\fi\enskip}}{\thu at ekeywords}%
+    \textbf{\ifthu at degree@bachelor Keywords:\else Key Words:\fi\enskip}%
+  }{%
+    \thu at clist@use{\thu at keywords@en}{; }%
+  }%
   \thu at setdefaultlanguage
 }
 %    \end{macrocode}
-% \end{macro}
+% \end{environment}
 %
 % \subsubsection{主要符号表}
 % \label{sec:denotationfmt}
 % \begin{environment}{denotation}
 % 主要符号对照表。
-% \changes{v2.0e}{2005/12/18}{主要符号表定义为一个 list,用起来方便。}
-% \changes{v2.4}{2006/04/14}{为主要符号表环境增加一个可选参数,调节符号列的宽度。}
-% \changes{v5.2.1}{2016/01/11}{利用 \pkg{enumitem} 改造环境定义,更直观。}
 %    \begin{macrocode}
 \newenvironment{denotation}[1][2.5cm]{%
   \thu at chapter*[]{\thu at denotation@name} % no tocline
@@ -3020,9 +3019,8 @@
 % \subsubsection{致谢以及声明}
 % \label{sec:ackanddeclare}
 %
-% \begin{environment}{acknowledgement}
+% \begin{environment}{acknowledgements}
 % 支持扫描文件替换。
-% \changes{v2.4}{2006/04/14}{调整\textbf{致谢}等中间的距离。}
 %    \begin{macrocode}
 \newcommand\thu at declarename{声\hspace{\ccwd}明}
 \newcommand{\thu at declaretext}{本人郑重声明:所呈交的学位论文,是本人在导师指导下
@@ -3033,51 +3031,36 @@
 \newcommand{\thu at backdate}{日\hspace{1em}期:}
 %    \end{macrocode}
 %
-% \changes{v2.0}{2005/12/19}{将致谢定义为一个环境更合适,里面也不用像以前段首需
-% 要自己缩进。}
-% \changes{v1.5}{2005/12/16}{在那些不显示编号的章节前面先执行一次
-%  \cs{cleardoublepage},使新开章节的页码到达正确的状态。否则会因为 \cs{addcontentsline}
-% 在 chapter 之前而导致目录页码错误。}
 % 定义致谢与声明环境。
-% \changes{v2.5}{2006/05/16}{本科论文要求致谢声明分页,但是研究生的不分。}
-% \changes{v2.5.2}{2006/05/29}{研究生致谢右开。}
-% \changes{v2.5.2}{2006/05/30}{研究生致谢题目是致谢,目录是致谢与声明。}
-% \changes{v2.6.3}{2006/07/01}{重画双虚线,自适应页面宽度。}
-% \changes{v4.5.2}{2010/09/19}{研究生论文的致谢和声明终于分开了。}
-% \changes{v5.2.1}{2016/01/11}{用 \env{acknowledgement} 替换 \env{ack}。}
 %    \begin{macrocode}
-\NewDocumentEnvironment{acknowledgement}{o}{%
-    \thu at chapter*{\thu at ack@name}
-  }
+\newenvironment{acknowledgements}{%
+  \thu at chapter*{\thu at ack@name}%
+}{}
 %    \end{macrocode}
 %
 % 声明部分
-% \changes{v3.0}{2007/05/12}{本科论文声明部分图片扫描取消。}
-% \changes{v5.0.0}{2015/06/05}{使用 pdfpages 宏包支持本硕博论文声明扫描版(\#36)。}
 %    \begin{macrocode}
-  {
-    \ifthu at postdoctor\relax\else%
-      \IfNoValueTF{#1}{%
-        \thu at chapter*{\thu at declarename}
-        \par{\xiaosi\parindent2em\thu at declaretext}\vskip2cm
-        {\xiaosi\hfill\thu at signature\thu at underline[2.5cm]\relax%
-         \thu at backdate\thu at underline[2.5cm]\relax}%
-      }{%
-        \includepdf[pagecommand={\thispagestyle{thu at empty}%
-          \phantomsection\addcontentsline{toc}{chapter}{\thu at declarename}%
-        }]{#1}%
-      }%
-    \fi
-  }
+\newcommand\statement[1][]{%
+  \def\thu@@tmp{#1}%
+  \ifx\thu@@tmp\@empty
+    \thu at chapter*{\thu at declarename}%
+    \par{\xiaosi\parindent2em\thu at declaretext}\vskip2cm%
+    {\xiaosi\hfill\thu at signature\thu at underline[2.5cm]\relax
+      \thu at backdate\thu at underline[2.5cm]\relax}%
+  \else
+    \includepdf[pagecommand={\thispagestyle{thu at empty}%
+      \addcontentsline{toc}{chapter}{\thu at declarename}%
+    }]{#1}%
+  \fi
+}
 %    \end{macrocode}
 % \end{environment}
-% \begin{environment}{ack}
-% 兼容旧版本保留 \env{ack}。
+%
+% 兼容旧版本保留 \env{acknowledgement}。
 %    \begin{macrocode}
-\let\ack\acknowledgement
-\let\endack\endacknowledgement
+\let\acknowledgement\acknowledgements
+\let\endacknowledgement\endacknowledgements
 %    \end{macrocode}
-% \end{environment}
 %
 % \subsubsection{图表索引}
 % \label{sec:threeindex}
@@ -3086,12 +3069,6 @@
 % \begin{macro}{\listoftables}
 % \begin{macro}{\listoftables*}
 % 定义图表以及公式目录样式。
-% \changes{v2.5}{2006/05/18}{增加插图、表格和公式索引。}
-% \changes{v2.5}{2006/05/19}{为了让索引中能出现\textbf{图 xxx},不得不修改 \LaTeX
-%   内部命令 \cs{@caption}。}
-% \changes{v2.6.4}{2006/10/23}{增加 \cs{listoffigures*},\cs{listoftables*}。}
-% \changes{v4.5.1}{2009/01/06}{更优雅的插图/表格索引,避免跟 \pkg{caption} 包冲
-% 突。\cs{thu at listof} 相应修改。}
 %    \begin{macrocode}
 \def\thu at starttoc#1{% #1: float type, prepend type name in \listof*** entry.
   \let\oldnumberline\numberline
@@ -3103,7 +3080,7 @@
     {\thu at chapter*[]{\csname list#1name\endcsname}\thu at starttoc{#1}}
     {\thu at chapter*{\csname list#1name\endcsname}\thu at starttoc{#1}}}
 \renewcommand\listoffigures{\thu at listof{figure}}
-\renewcommand*\l at figure{\ifthu at bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}}
+\renewcommand*\l at figure{\ifthu at degree@bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}}
 \renewcommand\listoftables{\thu at listof{table}}
 \let\l at table\l at figure
 %    \end{macrocode}
@@ -3113,20 +3090,16 @@
 % \end{macro}
 %
 % \begin{macro}{\equcaption}
-% \changes{v2.6.2}{2006/06/19}{此命令配合 \pkg{amsmath} 命令基本可以满足所有
-% 公式需要。}
-%   本命令只是为了生成公式列表,所以这个 caption 是假的。如果要编号最好用
-%    equation 环境,如果是其它编号环境,请手动添加 \cs{equcaption}。
+% 本命令只是为了生成公式列表,所以这个 caption 是假的。如果要编号最好用
+% \env{equation} 环境,如果是其它编号环境,请手动添加 \cs{equcaption}。
 % 用法如下:
 %
 % \cs{equcaption}\marg{counter}
 %
 % \marg{counter} 指定出现在索引中的编号,一般取 \cs{theequation},如果你是用
-%  \pkg{amsmath} 的 \cs{tag},那么默认是 \cs{tag} 的参数;除此之外可能需要你
+% \pkg{amsmath} 的 \cs{tag},那么默认是 \cs{tag} 的参数;除此之外可能需要你
 % 手工指定。
 %
-% \changes{v2.5}{2006/05/19}{将公式编号写入临时文件以便生成公式列表。}
-% \changes{v2.5.3}{2006/06/03}{取消 \cs{equcaption} 的参数}
 %    \begin{macrocode}
 \def\ext at equation{loe}
 \def\equcaption#1{%
@@ -3137,10 +3110,7 @@
 %
 % \begin{macro}{\listofequations}
 % \begin{macro}{\listofequations*}
-% \LaTeX\ 默认没有公式索引,此处定义自己的 \cs{listofequations}。
-% \changes{v2.5}{2006/05/19}{增加公式索引命令。}
-% \changes{v2.5.1}{2006/05/26}{公式索引项 numwidth 增加。}
-% \changes{v2.6.4}{2006/10/23}{增加 \cs{listofequations*}。}
+% \LaTeX{} 默认没有公式索引,此处定义自己的 \cs{listofequations}。
 %    \begin{macrocode}
 \newcommand\listofequations{\thu at listof{equation}}
 \let\l at equation\l at figure
@@ -3152,14 +3122,9 @@
 % \subsection{参考文献}
 % \label{sec:ref}
 %
-% \changes{v5.4.4}{2018/04/12}{参考文献列表的页码使用 hyphen 取代 en dash。}
-%
 % \begin{macro}{\inlinecite}
 % 依赖于 \pkg{natbib} 宏包,修改其中的命令。 旧命令 \cs{onlinecite} 依然可用。
-% \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼
-% 容性,\cs{onlinecite} 会保留。}
 %    \begin{macrocode}
-\newcommand\bibstyle at inline{\bibpunct{[}{]}{,}{n}{,}{,}}
 \DeclareRobustCommand\inlinecite{\@inlinecite}
 \def\@inlinecite#1{\begingroup\let\@cite\NAT at citenum\citep{#1}\endgroup}
 \let\onlinecite\inlinecite
@@ -3171,15 +3136,9 @@
 % 本科生要求固定行距 17pt,段前后间距 3pt。
 %
 % 复用 \pkg{natbib} 的 \texttt{thebibliography} 环境,调整距离。
-% \changes{v2.4}{2006/04/15}{参考文献间距调小一点,label 长度增加一点,以便让超过
-%  100 的参考文献更好地对齐。}
-% \changes{v2.5}{2006/05/13}{参考文献序号靠左,而不是靠右。}
-% \changes{v2.6.4}{2006/10/23}{调整参考文献标签宽度,使得条目增多时仍能对齐。}
-% \changes{v5.4.0}{2017/12/03}{基于 \pkg{natbib} 的环境调整距离兼容性更好。}
-% \changes{v5.4.4}{2018/04/14}{参考文献标号左对齐。}
 %    \begin{macrocode}
 \renewcommand\bibsection{\thu at chapter*{\bibname}}
-\renewcommand\bibfont{\ifthu at bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
+\renewcommand\bibfont{\ifthu at degree@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
 \setlength\bibhang{2\ccwd}
 \addtolength{\bibsep}{-0.7em}
 \setlength{\labelsep}{0.4em}
@@ -3186,17 +3145,29 @@
 \def\@biblabel#1{[#1]\hfill}
 %    \end{macrocode}
 %
-% 两种引用样式:
-% \changes{v5.4.0}{2017/12/3}{\cs{bibliographystyle}\marg{newbib} will cause \cs{bibstyle at newbib} to
-% be called on THE NEXT LATEX RUN (via the aux file).}
-% \changes{v5.4.1}{2017/12/04}{bst 在 ctan 上不分路径,故加前缀。}
+% 几种种引用样式:
 %    \begin{macrocode}
 \expandafter\newcommand\csname bibstyle at thuthesis-numeric\endcsname{%
   \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
 \expandafter\newcommand\csname bibstyle at thuthesis-author-year\endcsname{%
   \bibpunct{(}{)}{;}{a}{,}{,}}
+\expandafter\newcommand\csname bibstyle at thuthesis-bachelor\endcsname{%
+  \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
 %    \end{macrocode}
 %
+% 设置 \option{cite-style} 的接口:
+%    \begin{macrocode}
+\@namedef{bibstyle at thuthesis-inline}{\bibpunct{[}{]}{,}{n}{,}{,}}
+\thu at define@key{
+  cite-style = {
+    name = cite at style,
+    code = {
+      \@nameuse{bibstyle at thuthesis-\thu at cite@style}
+    },
+  }
+}
+%    \end{macrocode}
+%
 % 下面修改 \pkg{natbib} 的引用格式,主要是将页码写在上标位置。
 % numeric 模式的 \cs{citet} 的页码:
 %    \begin{macrocode}
@@ -3241,7 +3212,6 @@
 %
 % 在顺序编码制下,\pkg{natbib} 只有在三个以上连续文献引用才会使用连接号,
 % 这里修改为允许两个引用使用连接号。
-% \changes{v5.4.4}{2018/04/12}{允许连续两个文献引用使用连接号。}
 %    \begin{macrocode}
 \patchcmd{\NAT at citexnum}{%
   \ifx\NAT at last@yr\relax
@@ -3256,50 +3226,97 @@
 %
 % \subsection{附录}
 % \label{sec:appendix}
-% \begin{environment}{appendix}
-% 主要给本科做外文翻译用。
+%
+% 研究生和本科生的写作指南均未规定附录的节标题是否加入目录,
+% 但是从示例来看,目录中只出现附录的 chapter 标题,
+% 不出现附录中的 section 及 subsection 的标题。
+% 部分院系(例如自动化系)的格式审查的老师甚至一致口头如此要求。
+% (\href{https://github.com/xueruini/thuthesis/pull/425}{\#425})
 %    \begin{macrocode}
-\let\thu at appendix\appendix
-\renewenvironment{appendix}{%
+\thu at define@key{
+  toc-depth = {
+    name = toc at depth,
+    code = {\addtocontents{toc}{\protect\setcounter{tocdepth}{\thu at toc@depth}}},
+  },
+}
+\g at addto@macro\appendix{\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}}
+%    \end{macrocode}
+%
+% 本科生《写作指南》有独特的要求:附录 A 为外文资料的调研阅读报告或书面翻译,
+% 并且要分别附上独立的参考文献和外文资料的原文索引。
+% 所以这里定义 \env{survey} 和 \env{translation} 专门处理这两种情况,
+% 其中参考文献使用了 \pkg{bibunits} 宏包的功能。
+%
+% \begin{environment}{survey}
+% 外文资料的调研阅读报告。
+%    \begin{macrocode}
+\newenvironment{survey}{%
+  \chapter{外文资料的调研阅读报告}%
+  \thu at setenglish
   \let\title\thu at appendix@title
-  \thu at appendix}{%
-  \let\title\@gobble}
+  \let\maketitle\thu at appendix@maketitle
+  \renewcommand\bibname{参考文献}%
+  \let\bibsection\thu at appendix@bibsection
+  \renewcommand\@bibunitname{main-survey}%
+  \let\bibliographystyle\defaultbibliographystyle
+  \let\bibliography\thu at appendix@bibliography
+  \begin{bibunit}%
+}{%
+  \end{bibunit}%
+}
 %    \end{macrocode}
 % \end{environment}
 %
-% \begin{macro}{\title}
-% \changes{v5.2.0}{2016/01/11}{增加 \cs{title} 排版翻译标题。}
-% 本科外文翻译文章的标题,用法:\cs{title}\marg{资料标题}。这个命令只能在附录环
-% 境下使用。
+% \begin{environment}{translation}
+% 外文资料的书面翻译。
 %    \begin{macrocode}
-\let\title\@gobble
-\newcommand{\thu at appendix@title}[1]{%
-  \begin{center}
-    \xiaosi[1.667] #1
-  \end{center}}
+\newenvironment{translation}{%
+  \chapter{外文资料的书面翻译}%
+  \thu at setenglish
+  \let\title\thu at appendix@title
+  \let\maketitle\thu at appendix@maketitle
+  \renewcommand\bibname{书面翻译对应的原文索引}%
+  \let\bibsection\thu at appendix@bibsection
+  \renewcommand\@bibunitname{main-translation}%
+  \let\bibliographystyle\defaultbibliographystyle
+  \let\bibliography\thu at appendix@bibliography
+  \begin{bibunit}%
+}{%
+  \end{bibunit}%
+}
 %    \end{macrocode}
-% \end{macro}
+% \end{environment}
 %
-% \begin{environment}{translationbib}
-% \changes{v5.2.0}{2016/01/11}{增加翻译文献环境 \env{translationbib}。}
-% 外文资料的参考文用宋体五号字,取固定行距17pt,段前后3pt。
+% 调研阅读报告需要独立的标题,这里仿照了标准文档类的用法 \cs{title}, \cs{maketitle}。
 %    \begin{macrocode}
-\newlist{translationbib}{enumerate}{1}
-\setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp,
-  leftmargin=10mm,labelsep=!,before=\vspace{0.5\baselineskip}\wuhao[1.3]}
+\DeclareRobustCommand\thu at appendix@title[1]{\gdef\thu at appendix@@title{#1}}
+\newcommand\thu at appendix@maketitle{%
+  \par
+  \begin{center}%
+    \xiaosi[1.667]\thu at appendix@@title
+  \end{center}%
+  \par
+}
 %    \end{macrocode}
-% \end{environment}
 %
+% 调研阅读报告的参考文献(或书面翻译对应的外文资料的原文索引)标题用宋体小四号字,段前 20pt,段后 6pt,行距 20pt。
+%    \begin{macrocode}
+\newcommand\thu at appendix@bibsection{%
+  \par
+  \vskip 20bp%
+  \begingroup
+    \centering
+    \xiaosi[1.667]\bibname\par
+  \endgroup
+  \vskip 6bp%
+}%
+\newcommand\thu at appendix@bibliography[1]{\putbib[#1]}
+%    \end{macrocode}
+%
+%
 % \subsection{个人简历}
 %
 % \begin{environment}{resume}
-% \changes{v1.5}{2005/12/16}{增加个人简历章节的命令,去掉主文件中需要重新
-% 定义 \cs{cleardoublepage} 和自己写 \cs{markboth},\cs{addcontentsline} 的部分。}
-% \changes{v2.0}{2005/12/18}{最后决定将 resume 定义为环境。这样与前面的主要符号
-% 表、致谢等对应。}
-% \changes{v2.5.1}{2006/05/23}{教务处和研究生院非要搞的不一样!}
-% \changes{v2.5.2}{2006/05/29}{研究生的个人介绍要右开。}
-% \changes{v4.6}{2011/05/02}{支持可选参数,自己定义简历章节标题。}
 % 个人简历发表文章等。
 %    \begin{macrocode}
 \newenvironment{resume}[1][\thu at resume@title]{%
@@ -3329,8 +3346,6 @@
 % 二者分别通过两个环境 \env{publications} 和 \env{achievements} 罗
 % 列。
 %
-% \changes{v5.0.0}{2015/04/18}{博士后就不提在学期间了,不合适(\#100)}
-% \changes{v5.0.0}{2015/05/17}{让简历部分更符合格式指南和示例文件(\#122)}
 %    \begin{macrocode}
 \newlist{publications}{enumerate}{1}
 \setlist[publications]{label=[\arabic*],align=left,nosep,itemsep=8bp,
@@ -3343,7 +3358,6 @@
 % \end{environment}
 %
 % \begin{macro}{\publicationskip}
-% \changes{v5.2.0}{2016/01/11}{增加 \cs{publicationskip}。}
 % \env{publications} 环境可以连续出现多次,第二类论文列表前后要空一行,使
 % 用 \cs{publicationskip}。
 %    \begin{macrocode}
@@ -3358,9 +3372,67 @@
 \newcommand\thu at atendpackage{\csname ctex_at_end_package:nn\endcsname}
 %    \end{macrocode}
 %
+% \subsubsection{\pkg{hyperref} 宏包}
+%
+%    \begin{macrocode}
+\thu at atendpackage{hyperref}{
+  \hypersetup{
+    linktoc            = all,
+    bookmarksnumbered  = true,
+    bookmarksopen      = true,
+    bookmarksopenlevel = 1,
+    unicode            = true,
+    psdextra           = true,
+    breaklinks         = true,
+    plainpages         = false,
+    hidelinks,
+  }%
+  \newcounter{thu at bookmark}
+  \renewcommand\thu at pdfbookmark[2]{%
+    \phantomsection
+    \stepcounter{thu at bookmark}%
+    \pdfbookmark[#1]{#2}{thuchapter.\thethu at bookmark}%
+  }
+  \pdfstringdefDisableCommands{
+    \let\\\@empty
+    \let\hspace\@gobble
+  }%
+%    \end{macrocode}
+%
+% \pkg{hyperref} 与 \pkg{unicode-math} 存在一些兼容性问题,见
+% \href{https://github.com/ustctug/ustcthesis/issues/223}{%
+%   ustctug/ustcthesis\#223},
+% \href{https://github.com/ho-tex/hyperref/pull/90}{ho-tex/hyperref\#90} 和
+% \href{https://github.com/ustctug/ustcthesis/issues/235}{%
+%   ustctug/ustcthesis/\#235}。
+%    \begin{macrocode}
+  \@ifpackagelater{hyperref}{2019/04/27}{}{%
+    \g at addto@macro\psdmapshortnames{\let\mu\textmu}
+  }%
+  \AtBeginDocument{%
+    \ifthu at language@chinese
+      \hypersetup{
+        pdftitle    = \thu at title,
+        pdfauthor   = \thu at author,
+        pdfsubject  = \thu at degree@name,
+        pdfkeywords = \thu at keywords,
+      }%
+    \else
+      \hypersetup{
+        pdftitle    = \thu at title@en,
+        pdfauthor   = \thu at author@en,
+        pdfsubject  = \thu at degree@name at en,
+        pdfkeywords = \thu at keywords@en,
+      }%
+    \fi
+    \hypersetup{
+      pdfcreator={\thuthesis-v\version}}
+  }%
+}
+%    \end{macrocode}
+%
 % \subsubsection{\pkg{nomencl} 宏包}
 %
-% \changes{v5.5.0}{2018/12/09}{增加 \pkg{nomencl} 宏包的支持。}
 %    \begin{macrocode}
 \thu at atendpackage{nomencl}{
   \let\nomname\thu at denotation@name
@@ -3369,14 +3441,80 @@
 }
 %    \end{macrocode}
 %
+% \subsubsection{\pkg{longtable} 宏包}
+%
+% 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号。
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \let\thu at LT@array\LT at array
+  \def\LT at array{\dawu[1.5]\thu at LT@array} % set default font size
+}
+%    \end{macrocode}
+%
+% \subsubsection{\pkg{siunitx} 宏包}
+%
+%    \begin{macrocode}
+\thu at atendpackage{siunitx}{%
+  \sisetup{
+    group-minimum-digits = 4,
+    separate-uncertainty = true,
+    inter-unit-product   = \ensuremath{{}\cdot{}},
+  }
+  \newcommand\thu at set@siunitx at language{%
+    \ifthu at language@chinese
+      \sisetup{
+        list-final-separator = { 和 },
+        list-pair-separator  = { 和 },
+        range-phrase         = {~},
+      }%
+    \else
+      \ifthu at language@english
+        \sisetup{
+          list-final-separator = { and },
+          list-pair-separator  = { and },
+          range-phrase         = { to },
+        }%
+      \fi
+    \fi
+  }
+  \thu at set@siunitx at language
+  \thu at addto{language}{\thu at set@siunitx at language}
+}
+%    \end{macrocode}
+%
+% \subsubsection{\pkg{ntheorem} 宏包}
+%
+% 定理标题使用黑体,正文使用宋体,冒号隔开。
+%    \begin{macrocode}
+\thu at atendpackage{ntheorem}{%
+  \theorembodyfont{\normalfont}%
+  \theoremheaderfont{\normalfont\sffamily}%
+  \theoremsymbol{\ensuremath{\square}}%
+  \newtheorem*{proof}{\thu at proof@name}%
+  \theoremstyle{plain}%
+  \theoremsymbol{}%
+  \theoremseparator{\thu at theorem@separator}%
+  \newtheorem{assumption}{\thu at assumption@name}[chapter]%
+  \newtheorem{definition}{\thu at definition@name}[chapter]%
+  \newtheorem{proposition}{\thu at proposition@name}[chapter]%
+  \newtheorem{lemma}{\thu at lemma@name}[chapter]%
+  \newtheorem{theorem}{\thu at theorem@name}[chapter]%
+  \newtheorem{axiom}{\thu at axiom@name}[chapter]%
+  \newtheorem{corollary}{\thu at corollary@name}[chapter]%
+  \newtheorem{exercise}{\thu at exercise@name}[chapter]%
+  \newtheorem{example}{\thu at example@name}[chapter]%
+  \newtheorem{remark}{\thu at remark@name}[chapter]%
+  \newtheorem{problem}{\thu at problem@name}[chapter]%
+  \newtheorem{conjecture}{\thu at conjecture@name}[chapter]%
+}
+%    \end{macrocode}
+%
 % \subsection{书脊}
-% \label{sec:shuji}
-% \begin{macro}{\shuji}
+% \label{sec:spine}
+% \begin{macro}{\spine}
 % 单独使用书脊命令会在新的一页产生竖排书脊。
-% \changes{v4.5}{2009/01/04}{简化代码,同时支持 \XeLaTeX。}
-% \changes{v5.0.0}{2015/12/21}{扩展 \cs{shuji}\oarg{标题}\oarg{作者}。}
 %    \begin{macrocode}
-\NewDocumentCommand{\shuji}{O{\thu at ctitle} O{\thu at cauthor}}{%
+\NewDocumentCommand{\spine}{O{\thu at title} O{\thu at author}}{%
   \newpage\thispagestyle{empty}%
   \fangsong\addCJKfontfeatures*{RawFeature={vertical:}}
   \xiaosan\ziju{0.4}%
@@ -3389,7 +3527,6 @@
 % \label{sec:other}
 %
 % 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。
-% \changes{v2.5}{2006/05/13}{不用 \cs{CJKcaption},在导言区直接引入配置文件。}
 %    \begin{macrocode}
 \AtEndOfClass{\sloppy}
 %</cls>
@@ -3402,13 +3539,15 @@
 \ProvidesPackage{dtx-style}
 \RequirePackage{hypdoc}
 \RequirePackage{ifthen}
+\RequirePackage{fontspec}[2017/01/20]
+\RequirePackage{amsmath}
+\RequirePackage{unicode-math}
 \RequirePackage[UTF8,scheme=chinese]{ctex}
-\RequirePackage{newpxtext}
-\RequirePackage{newpxmath}
 \RequirePackage[
   top=2.5cm, bottom=2.5cm,
   left=4cm, right=2cm,
   headsep=3mm]{geometry}
+\RequirePackage{hologo}
 \RequirePackage{array,longtable,booktabs}
 \RequirePackage{listings}
 \RequirePackage{fancyhdr}
@@ -3417,9 +3556,54 @@
 \RequirePackage{etoolbox}
 \RequirePackage{metalogo}
 
-\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{%
+\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{
+  \setmainfont{Palatino}
+  \setsansfont[Scale=MatchLowercase]{Helvetica}
+  \setmonofont[Scale=MatchLowercase]{Menlo}
   \xeCJKsetwidth{‘’“”}{1em}
-}{}
+}{
+  \setmainfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyrepagella}
+  \setsansfont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+  ]{texgyreheros}
+  \setmonofont[
+    Extension      = .otf,
+    UprightFont    = *-regular,
+    BoldFont       = *-bold,
+    ItalicFont     = *-italic,
+    BoldItalicFont = *-bolditalic,
+    Scale          = MatchLowercase,
+  ]{texgyrecursor}
+}
+\unimathsetup{
+  math-style=ISO,
+  bold-style=ISO,
+}
+\IfFontExistsTF{XITSMath-Regular.otf}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = XITSMath-Bold,
+    StylisticSet = 8,
+  ]{XITSMath-Regular}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
+}{
+  \setmathfont[
+    Extension    = .otf,
+    BoldFont     = *bold,
+    StylisticSet = 8,
+  ]{xits-math}
+  \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
+}
 
 \colorlet{thu at macro}{blue!60!black}
 \colorlet{thu at env}{blue!70!black}
@@ -3474,7 +3658,7 @@
    breakautoindent=true,
    columns=flexible,
    keepspaces=true,
-   gobble=2,
+   gobble=4,
    framesep=3pt,
    rulesep=1pt,
    framerule=1pt,

Modified: trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,5 +1,5 @@
 %%
-%% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
+%% Copyright (C) 2005-2020 by Ruini Xue <xueruini at gmail.com>
 %%
 %% This file is part of the ThuThesis package project.
 %% ---------------------------------------------------
@@ -57,6 +57,8 @@
   \Msg{* \space\space thuthesis.cls}
   \Msg{* \space\space thuthesis-author-year.bst}
   \Msg{* \space\space thuthesis-numeric.bst}
+  \Msg{* \space\space thuthesis-bachelor.bst}
+  \Msg{* \space\space tsinghua.pdf}
   \Msg{*}
   \Msg{* To produce the documentation run the files ending with}
   \Msg{* `.dtx' through LaTeX.}

Modified: trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls	2020-01-05 23:08:16 UTC (rev 53329)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2005-2019 by Ruini Xue <xueruini at gmail.com>
+%% Copyright (C) 2005-2020 by Ruini Xue <xueruini at gmail.com>
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,46 +21,131 @@
 %% To produce the documentation run the original source files ending with `.dtx'
 %% through LaTeX.
 %% 
-\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{thuthesis}
-[2019/04/27 5.5.2 Tsinghua University Thesis Template]
+[2020/01/06 6.0.0 Tsinghua University Thesis Template]
 \RequirePackage{ifxetex}
-\ifxetex\else
-  \ClassError{thuthesis}{You should use XeLaTeX}{}
-  \end{document}
-\fi
+\RequireXeTeX
 \hyphenation{Thu-Thesis}
 \def\thuthesis{ThuThesis}
-\def\version{5.5.2}
+\def\version{6.0.0}
+\RequirePackage{kvdefinekeys}
+\RequirePackage{kvsetkeys}
 \RequirePackage{kvoptions}
 \SetupKeyvalOptions{
   family=thu,
   prefix=thu@,
   setkeys=\kvsetkeys}
-\DeclareStringOption[doctor]{degree}[doctor]
-\DeclareStringOption[chinese]{language}[chinese]
-\DeclareBoolOption{secret}
-\DeclareBoolOption{tocarialchapter}
-\DeclareBoolOption{tocarialchapterentry}
-\DeclareBoolOption{tocarialchapterpage}
+\newcommand\thu at error[1]{%
+  \ClassError{thuthesis}{#1}{}%
+}
+\newcommand\thusetup{%
+  \kvsetkeys{thu}%
+}
+\newcommand\thu at define@key[1]{%
+  \kvsetkeys{thu at key}{#1}%
+}
+\kv at set@family at handler{thu at key}{%
+  \@namedef{thu@#1@@name}{#1}%
+  \def\thu@@default{}%
+  \def\thu@@choices{}%
+  \kv at define@key{thu at value}{name}{%
+    \@namedef{thu@#1@@name}{##1}%
+  }%
+  \kv at define@key{thu at value}{code}{%
+    \@namedef{thu@#1@@code}{##1}%
+  }%
+  \@namedef{thu@#1@@check}{}%
+  \@namedef{thu@#1@@code}{}%
+  \@namedef{thu@#1@@hook}{%
+    \expandafter\ifx\csname\@currname.\@currext-h@@k\endcsname\relax
+      \@nameuse{thu@#1@@code}%
+    \else
+      \AtEndOfClass{%
+        \@nameuse{thu@#1@@code}%
+      }%
+    \fi
+  }%
+  \kv at define@key{thu at value}{choices}{%
+    \def\thu@@choices{##1}%
+    \@namedef{thu@#1@@reset}{}%
+    \@namedef{thu@#1@@check}{%
+      \@ifundefined{%
+        ifthu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}%
+      }{%
+        \thu at error{Invalid value "#1 = \@nameuse{thu@\@nameuse{thu@#1@@name}}"}%
+      }%
+      \@nameuse{thu@#1@@reset}%
+      \@nameuse{thu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}true}%
+    }%
+  }%
+  \kv at define@key{thu at value}{default}{%
+    \def\thu@@default{##1}%
+  }%
+  \kvsetkeys{thu at value}{#2}%
+  \@namedef{thu@\@nameuse{thu@#1@@name}}{}%
+  \kv at set@family at handler{thu at choice}{%
+    \ifx\thu@@default\@empty
+      \def\thu@@default{##1}%
+    \fi
+    \expandafter\newif\csname ifthu@\@nameuse{thu@#1@@name}@##1\endcsname
+    \expandafter\g at addto@macro\csname thu@#1@@reset\endcsname{%
+      \@nameuse{thu@\@nameuse{thu@#1@@name}@##1false}%
+    }%
+  }%
+  \kvsetkeys at expandafter{thu at choice}{\thu@@choices}%
+  \expandafter\let\csname thu@\@nameuse{thu@#1@@name}\endcsname\thu@@default
+  \expandafter\ifx\csname thu@\@nameuse{thu@#1@@name}\endcsname\@empty\else
+    \@nameuse{thu@#1@@check}%
+    \@nameuse{thu@#1@@hook}%
+  \fi
+  \kv at define@key{thu}{#1}{%
+    \@namedef{thu@\@nameuse{thu@#1@@name}}{##1}%
+    \@nameuse{thu@#1@@check}%
+    \@nameuse{thu@#1@@hook}%
+  }%
+}
+\newcommand\thu at addto[2]{%
+  \expandafter\g at addto@macro\csname thu@#1@@code\endcsname{#2}%
+}
+\newif\ifthu at degree@graduate
+\newcommand\thu at set@graduate{%
+  \thu at degree@graduatefalse
+  \ifthu at degree@doctor
+    \thu at degree@graduatetrue
+  \fi
+  \ifthu at degree@master
+    \thu at degree@graduatetrue
+  \fi
+}
+\thu at define@key{
+  degree = {
+    choices = {
+      bachelor,
+      master,
+      doctor,
+      postdoc,
+    },
+    default = doctor,
+    code = {\thu at set@graduate},
+  },
+  degree-type = {
+    choices = {
+      academic,
+      professional,
+    },
+    name = degree at type,
+  },
+  language = {
+    choices = {
+      chinese,
+      english,
+    },
+  },
+}
 \DeclareBoolOption[true]{raggedbottom}
 \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
 \ProcessKeyvalOptions*
-\newcommand\thu at validate@key[1]{%
-  \@ifundefined{thu@\csname thu@#1\endcsname true}{%
-    \ClassError{thuthesis}{Invalid value '\csname thu@#1\endcsname'}{}%
-  }{%
-    \csname thu@\csname thu@#1\endcsname true\endcsname
-  }%
-}
-\newif\ifthu at bachelor
-\newif\ifthu at master
-\newif\ifthu at doctor
-\newif\ifthu at postdoctor
-\thu at validate@key{degree}
-\newif\ifthu at chinese
-\newif\ifthu at english
-\thu at validate@key{language}
 \PassOptionsToPackage{quiet}{xeCJK}
 \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook}
 \RequirePackage{etoolbox}
@@ -80,57 +165,42 @@
   \RequirePackage[perpage,hang]{footmisc}
 \fi
 \RequirePackage{CJKfntef}
-\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
 \RequirePackage{array}
-\RequirePackage{longtable}
 \RequirePackage{booktabs}
 \RequirePackage[sort&compress]{natbib}
-\RequirePackage{hyperref}
-\hypersetup{
-  linktoc            = all,
-  bookmarksnumbered  = true,
-  bookmarksopen      = true,
-  bookmarksopenlevel = 1,
-  breaklinks         = true,
-  plainpages         = false,
-  hidelinks,
+\RequirePackage{bibunits}
+\RequirePackage{url}
+\urlstyle{same}
+\g at addto@macro\UrlBreaks{%
+  \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
+  \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M
+  \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z
+  \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m
+  \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
 }
-\pdfstringdefDisableCommands{
-  \let\\\@empty
-  \let\hspace\@gobble
-}
-\urlstyle{same}
-\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
 \RequirePackage{geometry}
 \geometry{
   a4paper, % 210 * 297mm
-  hcentering,
-  ignoreall,
-  nomarginpar}
-\ifthu at bachelor
+  nomarginpar,
+}
+\ifthu at degree@bachelor
   \geometry{
-    left=32mm,
-    headheight=5mm,
-    headsep=5mm,
-    textheight=227mm,
-    bottom=32mm,
-    footskip=12mm}
+    top        = 3.8cm,
+    bottom     = 3.2cm,
+    left       = 3.2cm,
+    right      = 3cm,
+    headheight = 0.5cm,
+    headsep    = 1.8cm,
+    footskip   = 1.45cm,
+  }
 \else
   \geometry{
-    left=30mm,
-    headheight=5mm,
-    headsep=5mm,
-    textheight=237mm,
-    bottom=29mm,
-    footskip=6mm}
+    margin     = 3cm,
+    headheight = 0.5cm,
+    headsep    = 0.3cm,
+    footskip   = 0.8cm,
+  }
 \fi
 \RequirePackage{fancyhdr}
 \RequirePackage{notoccite}
@@ -141,13 +211,19 @@
 \renewcommand\frontmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmatterfalse
-  \pagenumbering{Alph}
-  \pagestyle{thu at empty}}
+  \ifthu at degree@bachelor
+    \pagestyle{thu at plain}
+  \else
+    \pagestyle{thu at headings}
+  \fi
+  \pagenumbering{Roman}%
+  \let\@tabular\thu at tabular
+}
 \renewcommand\mainmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmattertrue
   \pagenumbering{arabic}
-  \ifthu at bachelor\pagestyle{thu at plain}\else\pagestyle{thu at headings}\fi}
+  \ifthu at degree@bachelor\pagestyle{thu at plain}\else\pagestyle{thu at headings}\fi}
 \renewcommand\backmatter{%
   \if at openright\cleardoublepage\else\clearpage\fi
   \@mainmattertrue}
@@ -271,13 +347,13 @@
   }%
 }
 \newcommand\thu at setdefaultlanguage{%
-  \ifthu at chinese
+  \ifthu at language@chinese
     \thu at setchinese
   \else
     \thu at setenglish
   \fi
 }
-\ifthu at chinese
+\ifthu at language@chinese
   \ctexset{
     chapter/name   = {第,章},
     appendixname   = 附录,
@@ -307,10 +383,10 @@
   \newcommand\thu at proof@name{证明}
   \newcommand\thu at theorem@separator{:}
   \newcommand\thu at ack@name{致\hspace{\ccwd}谢}
-  \ifthu at bachelor
+  \ifthu at degree@bachelor
     \newcommand\thu at resume@title{在学期间参加课题的研究成果}
   \else
-    \ifthu at postdoctor
+    \ifthu at degree@postdoc
       \newcommand\thu at resume@title{个人简历、发表的学术论文与科研成果}
     \else
       \newcommand\thu at resume@title{个人简历、在学期间发表的学术论文与研究成果}
@@ -334,19 +410,11 @@
   \newcommand\thu at conjecture@name{Conjecture}
   \newcommand\thu at proof@name{proof}
   \newcommand\thu at theorem@separator{: }
-  \newcommand\thu at ack@name{Acknowledgments}
-  \ifthu at bachelor
+  \newcommand\thu at ack@name{Acknowledgements}
+  \ifthu at degree@bachelor
     \newcommand\thu at resume@title{Research Achievements}
   \else
-    \ifthu at postdoctor
-      \newcommand\thu at resume@title{%
-        Resume, Publications and Research Achievements%
-      }
-    \else
-      \newcommand\thu at resume@title{%
-        Resume, Publications and Research Achievements%
-      }
-    \fi
+    \newcommand\thu at resume@title{Resume, Publications and Research Achievements}
   \fi
 \fi
 \fancypagestyle{thu at empty}{%
@@ -400,7 +468,7 @@
 \def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
 \pretocmd{\@makefntext}{\let\@makefnmark\thu@@makefnmark}{}{}
 \apptocmd{\@makefntext}{\let\@makefnmark\thu at makefnmark}{}{}
-\ifthu at chinese
+\ifthu at language@chinese
   \def\mathellipsis{\cdots}
 \fi
 \protected\def\le{\leqslant}
@@ -431,7 +499,7 @@
 \def\make at df@tag{\@ifstar\thu at make@df at tag@@\make at df@tag@@@}
 \def\thu at make@df at tag@@#1{\gdef\df at tag{\thu at maketag{#1}\def\@currentlabel{#1}}}
 \iffalse
-\ifthu at bachelor
+\ifthu at degree@bachelor
   \def\thu at maketag#1{\maketag@@@{%
     (\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)}}
   \def\tagform@#1{\maketag@@@{%
@@ -441,25 +509,6 @@
 \def\thu at maketag#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)}}
 \def\tagform@#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)\equcaption{#1}}}
 \renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
-\theorembodyfont{\normalfont}
-\theoremheaderfont{\normalfont\sffamily}
-\theoremsymbol{\ensuremath{\square}}
-\newtheorem*{proof}{\thu at proof@name}
-\theoremstyle{plain}
-\theoremsymbol{}
-\theoremseparator{\thu at theorem@separator}
-\newtheorem{assumption}{\thu at assumption@name}[chapter]
-\newtheorem{definition}{\thu at definition@name}[chapter]
-\newtheorem{proposition}{\thu at proposition@name}[chapter]
-\newtheorem{lemma}{\thu at lemma@name}[chapter]
-\newtheorem{theorem}{\thu at theorem@name}[chapter]
-\newtheorem{axiom}{\thu at axiom@name}[chapter]
-\newtheorem{corollary}{\thu at corollary@name}[chapter]
-\newtheorem{exercise}{\thu at exercise@name}[chapter]
-\newtheorem{example}{\thu at example@name}[chapter]
-\newtheorem{remark}{\thu at remark@name}[chapter]
-\newtheorem{problem}{\thu at problem@name}[chapter]
-\newtheorem{conjecture}{\thu at conjecture@name}[chapter]
 \setlength{\floatsep}{12bp \@plus 2bp \@minus 4bp}
 \setlength{\textfloatsep}{12bp}
 \setlength{\intextsep}{12bp}
@@ -470,7 +519,7 @@
 \renewcommand{\topfraction}{0.85}
 \renewcommand{\bottomfraction}{0.65}
 \renewcommand{\floatpagefraction}{0.60}
-\ifthu at bachelor
+\ifthu at degree@bachelor
   \g at addto@macro\appendix{\renewcommand*{\thefigure}{\thechapter-\arabic{figure}}}
   \g at addto@macro\appendix{\renewcommand*{\thetable}{\thechapter-\arabic{table}}}
 \fi
@@ -488,12 +537,10 @@
 \captionsetup[sub]{font=thu}
 \renewcommand{\thesubfigure}{(\alph{subfigure})}
 \renewcommand{\thesubtable}{(\alph{subtable})}
-\let\thu at LT@array\LT at array
-\def\LT at array{\dawu[1.5]\thu at LT@array} % set default font size
 \def\hlinewd#1{%
   \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
     \reserved at a\@xhline}
-\ifthu at bachelor
+\ifthu at degree@bachelor
   \newcommand{\cabstractname}{中文摘要}
   \newcommand{\eabstractname}{ABSTRACT}
 \else
@@ -500,23 +547,11 @@
   \newcommand{\cabstractname}{摘\hspace{\ccwd}要}
   \newcommand{\eabstractname}{Abstract}
 \fi
-\let\CJK at todaysave=\today
-\def\CJK at todaysmall@short{\the\year 年 \the\month 月}
-\def\CJK at todaysmall{\the\year 年 \the\month 月 \the\day 日}
-\def\CJK at todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
-\def\CJK at todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
-\def\CJK at today{\CJK at todaysmall}
-\renewcommand\today{\CJK at today}
-\newcommand\CJKtoday[1][1]{%
-  \ifcase#1\def\CJK at today{\CJK at todaysave}
-    \or\def\CJK at today{\CJK at todaysmall}
-    \or\def\CJK at today{\CJK at todaybig}
-  \fi}
 \AtBeginDocument{%
   \pagestyle{thu at empty}
   \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}}
 \newcommand\thu at chapter@titleformat[1]{%
-  \ifthu at bachelor #1\else%
+  \ifthu at degree@bachelor #1\else%
     \ifthenelse%
       {\equal{#1}{\eabstractname}}%
       {\bfseries #1}%
@@ -525,11 +560,11 @@
 \ctexset{%
   chapter={
     afterindent=true,
-    pagestyle={\ifthu at bachelor thu at plain\else thu at headings\fi},
-    beforeskip={\ifthu at bachelor 15bp\else 9bp\fi},
+    pagestyle={\ifthu at degree@bachelor thu at plain\else thu at headings\fi},
+    beforeskip={\ifthu at degree@bachelor 15bp\else 9bp\fi},
     aftername=\hskip\ccwd,
-    afterskip={\ifthu at bachelor 20bp\else 24bp\fi},
-    format={\centering\sffamily\ifthu at bachelor\xiaosan[1.333]\else\sanhao[1]\fi},
+    afterskip={\ifthu at degree@bachelor 20bp\else 24bp\fi},
+    format={\centering\sffamily\ifthu at degree@bachelor\xiaosan[1.333]\else\sanhao[1]\fi},
     nameformat=\relax,
     numberformat=\relax,
     titleformat=\thu at chapter@titleformat,
@@ -538,35 +573,34 @@
   },
   section={
     afterindent=true,
-    beforeskip={\ifthu at bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex},
-    afterskip={\ifthu at bachelor 12bp\else 6bp\fi \@plus .2ex},
-    format={\sffamily\ifthu at bachelor\sihao[1.286]\else\sihao[1.429]\fi},
+    beforeskip={\ifthu at degree@bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex},
+    afterskip={\ifthu at degree@bachelor 12bp\else 6bp\fi \@plus .2ex},
+    format={\sffamily\ifthu at degree@bachelor\sihao[1.286]\else\sihao[1.429]\fi},
   },
   subsection={
     afterindent=true,
-    beforeskip={\ifthu at bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
+    beforeskip={\ifthu at degree@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
     afterskip={6bp \@plus .2ex},
-    format={\sffamily\ifthu at bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi},
-    numberformat={\sffamily\ifthu at bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi},
+    format={\sffamily\ifthu at degree@bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi},
+    numberformat={\sffamily\ifthu at degree@bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi},
   },
   subsubsection={
     afterindent=true,
-    beforeskip={\ifthu at bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
+    beforeskip={\ifthu at degree@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
     afterskip={6bp \@plus .2ex},
-    format={\sffamily\ifthu at bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi},
+    format={\sffamily\ifthu at degree@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi},
   },
   paragraph/afterindent=true,
   subparagraph/afterindent=true}
-\newcounter{thu at bookmark}
+\newcommand\thu at pdfbookmark[2]{}
 \NewDocumentCommand\thu at chapter{s o m o}{
   \IfBooleanF{#1}{%
     \ClassError{thuthesis}{You have to use the star form: \string\thu at chapter*}{}
   }%
-  \if at openright\cleardoublepage\else\clearpage\fi\phantomsection%
+  \if at openright\cleardoublepage\else\clearpage\fi%
   \IfValueTF{#2}{%
     \ifthenelse{\equal{#2}{}}{%
-      \addtocounter{thu at bookmark}\@ne
-      \pdfbookmark[0]{#3}{thuchapter.\thethu at bookmark}
+      \thu at pdfbookmark{0}{#3}%
     }{%
       \addcontentsline{toc}{chapter}{#3}
     }
@@ -573,9 +607,9 @@
   }{%
     \addcontentsline{toc}{chapter}{#3}
   }%
-  \ifthu at bachelor \ctexset{chapter/beforeskip=25bp} \fi
+  \ifthu at degree@bachelor \ctexset{chapter/beforeskip=25bp} \fi
   \chapter*{#3}%
-  \ifthu at bachelor \ctexset{chapter/beforeskip=15bp} \fi
+  \ifthu at degree@bachelor \ctexset{chapter/beforeskip=15bp} \fi
   \IfValueTF{#4}{%
     \ifthenelse{\equal{#4}{}}
     {\@mkboth{}{}}
@@ -588,19 +622,14 @@
 \setcounter{tocdepth}{2}
 \renewcommand\tableofcontents{%
   \thu at chapter*[]{\contentsname}
-  \ifthu at bachelor\xiaosi[1.667]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize}
+  \ifthu at degree@bachelor\xiaosi[1.667]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize}
 \def\@pnumwidth{2em}
 \def\@tocrmarg{\@pnumwidth}
 \def\@dotsep{1}
-\ifthu at tocarialchapter
-  \thu at tocarialchapterentrytrue\thu at tocarialchapterpagetrue
-\fi
-\def\thu at toc@chapter at entry@font{\ifthu at tocarialchapterentry\sffamily\fi}
-\def\thu at toc@chapter at page@font{\ifthu at tocarialchapterpage\sffamily\fi}
 \renewcommand*\l at chapter[2]{%
   \ifnum \c at tocdepth >\m at ne
     \addpenalty{-\@highpenalty}%
-    \ifthu at bachelor\vskip 6bp\else\vskip 4bp\fi \@plus\p@
+    \ifthu at degree@bachelor\vskip 6bp\else\vskip 4bp\fi \@plus\p@
     \setlength\@tempdima{4em}%
     \begingroup
       \parindent \z@ \rightskip \@pnumwidth
@@ -608,9 +637,18 @@
       \leavevmode
       \advance\leftskip\@tempdima
       \hskip -\leftskip
-      {\thu at toc@chapter at entry@font #1}%
+      \begingroup
+        \ifthu at degree@graduate
+          \sffamily
+        \else
+          \ifthu at degree@bachelor
+            \heiti
+          \fi
+        \fi
+        #1%
+      \endgroup
       \leaders\hbox{$\m at th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill%
-      \nobreak{\thu at toc@chapter at page@font #2}\par
+      \nobreak #2\par
       \penalty\@highpenalty
     \endgroup
   \fi}
@@ -618,377 +656,599 @@
 \renewcommand*\l at section{%
   \@dottedtocline{1}{\ccwd}{2.1em}}
 \renewcommand*\l at subsection{%
-  \@dottedtocline{2}{\ifthu at bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
+  \@dottedtocline{2}{\ifthu at degree@bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
 \renewcommand*\l at subsubsection{%
-  \@dottedtocline{3}{\ifthu at bachelor 2.4em\else 3.5em\fi}{3.8em}}
-\def\thu at def@term#1{%
-  \define at key{thu}{#1}{\csname #1\endcsname{##1}}
-  \expandafter\gdef\csname #1\endcsname##1{%
-    \expandafter\gdef\csname thu@#1\endcsname{##1}}
-  \csname #1\endcsname{}}
-\thu at def@term{secretlevel}
-\thu at def@term{secretyear}
-\thu at def@term{ctitle}
-\thu at def@term{etitle}
-\thu at def@term{cauthor}
-\thu at def@term{csupervisor}
-\thu at def@term{cassosupervisor}
-\thu at def@term{ccosupervisor}
-\thu at def@term{eauthor}
-\thu at def@term{esupervisor}
-\thu at def@term{eassosupervisor}
-\thu at def@term{ecosupervisor}
-\thu at def@term{cdegree}
-\thu at def@term{edegree}
-\thu at def@term{cdepartment}
-\thu at def@term{edepartment}
-\thu at def@term{cmajor}
-\thu at def@term{emajor}
-\thu at def@term{cdate}
-\thu at def@term{edate}
-\thu at def@term{id}
-\thu at def@term{udc}
-\thu at def@term{catalognumber}
-\thu at def@term{cfirstdiscipline}
-\thu at def@term{cseconddiscipline}
-\thu at def@term{postdoctordate}
-\thu at def@term{postdocstartdate}
-\thu at def@term{postdocenddate}
-\newcommand{\thu@@cabstract}[1]{\long\gdef\thu at cabstract{#1}}
-\newenvironment{cabstract}{\Collect at Body\thu@@cabstract}{}
-\newcommand{\thu@@eabstract}[1]{\long\gdef\thu at eabstract{#1}}
-\newenvironment{eabstract}{\Collect at Body\thu@@eabstract}{}
-\def\thu at parse@keywords#1{
-  \define at key{thu}{#1}{\csname #1\endcsname{##1}}
-  \expandafter\gdef\csname thu@#1\endcsname{}
-  \expandafter\gdef\csname #1\endcsname##1{
-    \@for\reserved at a:=##1\do{
-      \expandafter\ifx\csname thu@#1\endcsname\@empty\else
-        \expandafter\g at addto@macro\csname thu@#1\endcsname{%
-          \ignorespaces\csname thu@#1 at separator\endcsname}
+  \@dottedtocline{3}{\ifthu at degree@bachelor 2.4em\else 3.5em\fi}{3.8em}}
+\thu at define@key{
+  secret-level = {
+    name = secret at level,
+  },
+  secret-year = {
+    name = secret at year,
+  },
+  title = {
+    default = {标题},
+  },
+  title* = {
+    default = {Title},
+    name    = title at en,
+  },
+  author = {
+    default = {姓名},
+  },
+  author* = {
+    default = {Name of author},
+    name    = author at en,
+  },
+  supervisor = {
+    default = {导师姓名},
+  },
+  supervisor* = {
+    default = {Name of supervisor},
+    name    = supervisor at en,
+  },
+  associate-supervisor = {
+    name = associate at supervisor,
+  },
+  associate-supervisor* = {
+    name = associate at supervisor@en,
+  },
+  joint-supervisor = {
+    name = joint at supervisor,
+  },
+  joint-supervisor* = {
+    name = joint at supervisor@en,
+  },
+  degree-name = {
+    default = {工学博士},
+    name    = degree at name,
+  },
+  degree-name* = {
+    default = {Doctor of Philosophy},
+    name    = degree at name@en,
+  },
+  department = {
+    default = {计算机科学与技术系},
+  },
+  discipline = {
+    % default = {计算机科学与技术},
+  },
+  discipline* = {
+    % default = {Computer Science and Technology},
+    name    = discipline at en,
+  },
+  date = {
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+  clc,
+  udc,
+  id,
+  discipline-level-1 = {
+    default = {一级学科名称},
+    name    = discipline at level@i,
+  },
+  discipline-level-2 = {
+    default = {二级学科名称},
+    name    = discipline at level@ii,
+  },
+  start-date = {
+    name    = start at date,
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+  end-date = {
+    name    = end at date,
+    default = {\the\year-\two at digits{\month}-\two at digits{\day}},
+  },
+}
+\newcommand\thu at format@date[2]{%
+  \edef\thu@@date{#2}%
+  \def\thu@@process at date##1-##2-##3\@nil{%
+    #1{##1}{##2}{##3}%
+  }%
+  \expandafter\thu@@process at date\thu@@date\@nil
+}
+\newcommand\thu at date@zh at digit[3]{#1 年 \number#2 月 \number#3 日}
+\newcommand\thu at date@zh at digit@short[3]{#1 年 \number#2 月}
+\newcommand\thu at date@zh at short[3]{\zhdigits{#1}年\zhnumber{#2}月}
+\newcommand\thu at date@month[1]{%
+  \ifcase\number#1\or
+    January\or February\or March\or April\or May\or June\or
+    July\or August\or September\or October\or November\or December%
+  \fi
+}
+\newcommand\thu at date@en at short[3]{\thu at date@month{#2}, #1}
+\newcommand\thu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
+\newcommand\thu at CJKunderline[2][6em]{\CJKunderline*{\hb at xt@ #1{\hss#2\hss}}}
+\newcommand\thu at fixed@box[2]{%
+  \begingroup
+    \def\CJKglue{\hskip 0pt plus 2filll minus 1filll}%
+    \makebox[#1][l]{#2}%
+  \endgroup
+}
+\newbox\thu at stretch@box
+\newcommand\thu at stretch[2]{%
+  \sbox\thu at stretch@box{#2}%
+  \ifdim \wd\thu at stretch@box < #1\relax
+    \begingroup
+      \def\CJKglue{\hskip 0pt plus 2filll}%
+      \makebox[#1][l]{#2}%
+    \endgroup
+  \else
+    \box\thu at stretch@box
+  \fi
+}
+\newbox\thu at pad@box
+\newcommand\thu at pad[2]{%
+  \sbox\thu at pad@box{#2}%
+  \ifdim \wd\thu at pad@box < #1\relax
+    \makebox[#1][l]{\box\thu at pad@box}%
+  \else
+    \box\thu at pad@box
+  \fi
+}
+\newcounter{thu at csl@count}
+\newcommand\thu at name@title at process[1]{%
+  \ifcase\c at thu@csl at count  % == 0
+    \gdef\thu@@name{#1}%
+  \or  % == 1
+    \gdef\thu@@title{#1}%
+  \fi
+  \stepcounter{thu at csl@count}%
+}
+\newcommand\thu at name@title at format[2]{%
+  \thu at pad{3cm}{\thu at stretch{4em}{#1}}%
+  \thu at stretch{3em}{#2}%
+}
+\newcommand\thu at name@title[1]{%
+  \setcounter{thu at csl@count}{0}%
+  \gdef\thu@@name{}%
+  \gdef\thu@@title{}%
+  \expandafter\comma at parse\expandafter{#1}{\thu at name@title at process}%
+  \thu at name@title at format{\thu@@name}{\thu@@title}%
+}
+\renewcommand\maketitle{%
+  \cleardoublepage
+  \pagestyle{thu at empty}%
+  \pagenumbering{Alph}%
+  \thu at pdfbookmark{-1}{\thu at title}%
+  \thu at titlepage
+  \ifthu at degree@graduate
+    \cleardoublepage
+    \thu at titlepage@en
+  \fi
+  \clearpage
+}
+\newcommand\thu at titlepage{%
+  \ifthu at degree@graduate
+    \ifthu at degree@type at academic
+      \thu at titlepage@graduate at academic
+    \else
+      \ifx\thu at discipline\@empty
+        \thu at titlepage@graduate at professional
+      \else
+        \thu at titlepage@graduate at academic
       \fi
-      \expandafter\expandafter\expandafter\g at addto@macro%
-        \expandafter\csname thu@#1\expandafter\endcsname\expandafter{\reserved at a}}}}
-\thu at parse@keywords{ckeywords}
-\thu at parse@keywords{ekeywords}
-\def\thusetup{\kvsetkeys{thu}}
-\def\thu at ckeywords@separator{;}
-\def\thu at ekeywords@separator{;}
-\def\thu at title@sep{:}
-\ifthu at postdoctor
-  \def\thu at secretlevel{密级}
-\else
-  \def\thu at secretlevel{秘密}
-\fi
-\def\thu at secretyear{\the\year}
-\def\thu at schoolname{清华大学}
-\def\thu at bachelor@subtitle{综合论文训练}
-\def\thu at bachelor@title at pre{题目}
-\def\thu at postdoctor@date at title{研究起止日期}
-\ifthu at postdoctor
-  \def\thu at author@title{博士后姓名}
-\else
-  \ifthu at bachelor
-    \def\thu at author@title{姓名}
+    \fi
   \else
-    \def\thu at author@title{研究生}
+    \ifthu at degree@bachelor
+      \thu at titlepage@bachelor
+    \else
+      \ifthu at degree@postdoc
+        \thu at cover@postdoc
+        \cleardoublepage
+        \thu at titlepage@postdoc
+      \fi
+    \fi
   \fi
-\fi
-\def\thu at postdoctor@first at discipline@title{流动站(一级学科)名称}
-\def\thu at postdoctor@second at discipline@title{专\hspace{1em}业(二级学科)名称}
-\def\thu at secret@content{%
-  \unskip\ifthu at master$\bigstar$ \fi%
-  \ifthu at doctor$\bigstar$ \fi%
-  \thu at secretyear 年}
-\def\thu at apply{(申请清华大学\thu at cdegree 学位论文)}
-\ifthu at bachelor
-  \def\thu at department@title{系别}
-  \def\thu at major@title{专业}
-\else
-  \def\thu at department@title{培养单位}
-  \def\thu at major@title{学科}
-\fi
-\ifthu at postdoctor
-  \def\thu at supervisor@title{合作导师}
-\else
-  \def\thu at supervisor@title{指导教师}
-\fi
-\ifthu at bachelor
-  \def\thu at assosuper@title{辅导教师}
-\else
-  \def\thu at assosuper@title{副指导教师}
-\fi
-\def\thu at cosuper@title{%
-  \ifthu at doctor 联合导师\else \ifthu at master 联合指导教师\fi\fi}
-\cdate{\ifthu at bachelor\CJK at todaysmall\else\ifthu at postdoctor\CJK at todaysmall@short\else\CJK at todaybig@short\fi\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}
-\newcommand{\thu at authtitle}{关于学位论文使用授权的说明}
-\newcommand{\thu at authorization}{%
-\ifthu at bachelor
-本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
-论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
-容,可以采用影印、缩印或其他复制手段保存该论文。
-\else
-本人完全了解清华大学有关保留、使用学位论文的规定,即:
-
-清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
-必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
-学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
-室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu at master 。\else ;
-(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
-论文。\fi
-
-本人保证遵守上述规定。
-\fi}
-\newcommand{\thu at authorizationaddon}{%
-  \ifthu at bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
-\newcommand{\thu at authorsig}{\ifthu at bachelor 签\hskip1em名:\else 作者签名:\fi}
-\newcommand{\thu at teachersig}{导师签名:}
-\newcommand{\thu at frontdate}{%
-  日\ifthu at bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
-\newcommand{\thu at ckeywords@title}{关键词:}
-\newcommand\thu at underline[2][6em]{\hskip1pt\underline{\hb at xt@ #1{\hss#2\hss}}\hskip3pt}
-\newcommand\thu at CJKunderline[2][6em]{\CJKunderline*{\hb at xt@ #1{\hss#2\hss}}}
-\newlength{\thu at title@width}
-\newcommand{\thu at put@title}[2][\thu at title@width]{%
-  \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
-\def\thu at first@titlepage{%
-  \ifthu at postdoctor\thu at first@titlepage at postdoctor\else\thu at first@titlepage at other\fi}
-\newcommand\thu at first@titlepage at postdoctor{%
+}
+\newcommand\thu at titlepage@graduate at academic{%
+  \newgeometry{
+    top     = 2cm,
+    bottom  = 6cm,
+    hmargin = 3.5cm,
+  }%
+  \null\vskip 0.2cm%
+  \begingroup
+    \centering
+    \parbox[t][2cm][t]{\textwidth}{%
+      \hskip -0.69cm%
+      \thu at titlepage@secret
+    }\par
+    \vskip 1.5cm%
+    {\thu at titlepage@title}%
+    \vskip 0.85cm%
+    \thu at titlepage@degree
+    \vfill
+    \parbox[t][7.25cm][t]{\textwidth}{\centering\thu at titlepage@info}\par
+    \parbox[t][1.03cm][t]{\textwidth}{\centering\thu at titlepage@date}\par
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
+\newcommand\thu at titlepage@graduate at professional{%
+  \newgeometry{
+    top     = 2cm,
+    bottom  = 6cm,
+    hmargin = 3.5cm,
+  }%
+  \null\vskip 0.45cm%
+  \begingroup
+    \centering
+    \parbox[t][1.52cm][t]{\textwidth}{%
+      \hskip -0.69cm%
+      \thu at titlepage@secret
+    }\par
+    \vskip 1.5cm%
+    {\sffamily\yihao[1.575]\thu at title\par}%
+    \vskip 0.9cm%
+    \thu at titlepage@degree
+    \vfill
+    \parbox[t][5.28cm][t]{\textwidth}{\centering\thu at titlepage@info}\par
+    \parbox[t][1.25cm][t]{\textwidth}{\centering\thu at titlepage@date}\par
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
+\newcommand\thu at titlepage@secret{%
+  \sffamily\CJKfamily+{}\sanhao
+  \ifx\thu at secret@level\@empty
+    \phantom{秘密}%
+  \else
+    \thu at secret@level★\makebox[3em][c]{\thu at secret@year}年%
+  \fi\par
+}
+\newcommand\thu at titlepage@title{%
+  \sffamily\yihao[1.8]\thu at title\par
+}
+\newcommand\thu at titlepage@degree{%
+  \begingroup
+    \def\CJKglue{\hskip 1bp}%
+    \CJKfamily+{}\xiaoer
+    (申请清华大学\thu at degree@name\ifthu at degree@type at professional 专业\fi 学位论文)\par
+  \endgroup
+}
+\newcommand\thu at titlepage@info{%
+  \ifthu at degree@doctor
+    \thu at titlepage@info at doctor
+  \else
+    \thu at titlepage@info at master
+  \fi
+}
+\newcommand\thu at cover@info at tabular[4]{%
+  \def\thu at cover@item##1##2##3{%
+    \ifx##3\@empty\else
+      \thu at pad{#2}{\thu at fixed@box{#1}{##1}}%
+      \thu at pad{#3}{:}%
+      ##2{##3}\\
+    \fi
+  }%
+  \begin{tabular}{l}%
+    #4%
+  \end{tabular}
+}
+\newcommand\thu at titlepage@info at doctor{%
+  \fangsong\sanhao[1.95]%
+  \thu at cover@info at tabular{2.8cm}{2.8cm}{0.82cm}{%
+    \thu at cover@item{培养单位}{}{\thu at department}%
+    \ifthu at degree@type at academic
+      \thu at cover@item{学科}{}{\thu at discipline}%
+      \thu at cover@item{研究生}{\thu at name@title}{\thu at author}%
+    \else
+      \thu at cover@item{申请人}{\thu at name@title}{\thu at author}%
+    \fi
+    \thu at cover@item{指导教师}{\thu at name@title}{\thu at supervisor}%
+    \thu at cover@item{副指导教师}{\thu at name@title}{\thu at associate@supervisor}%
+    \thu at cover@item{联合导师}{\thu at name@title}{\thu at joint@supervisor}%
+  }\par
+}
+\newcommand\thu at titlepage@info at master{%
+  \fangsong\sanhao[1.95]%
+  \thu at cover@info at tabular{5.5em}{3.6cm}{0.82cm}{%
+    \thu at cover@item{培养单位}{}{\thu at department}%
+    \ifthu at degree@type at academic
+      \thu at cover@item{学科}{}{\thu at discipline}%
+      \thu at cover@item{研究生}{\thu at name@title}{\thu at author}%
+    \else
+      \thu at cover@item{工程领域}{}{\thu at discipline}%
+      \thu at cover@item{申请人}{\thu at name@title}{\thu at author}%
+    \fi
+    \thu at cover@item{指导教师}{\thu at name@title}{\thu at supervisor}%
+    \thu at cover@item{副指导教师}{\thu at name@title}{\thu at associate@supervisor}%
+    \thu at cover@item{联合指导教师}{\thu at name@title}{\thu at joint@supervisor}%
+  }\par
+}
+\newcommand\thu at titlepage@date{%
+  \begingroup
+    \def\CJKglue{\hskip 1bp}%
+    \sanhao\thu at format@date{\thu at date@zh at short}{\thu at date}\par
+  \endgroup
+}
+\newcommand{\thu at titlepage@en}{%
+  \newgeometry{
+    top     = 5.5cm,
+    bottom  = 5cm,
+    hmargin = 3.6cm,
+  }%
+  \ifthu at degree@type at academic
+    \thu at titlepage@en at graduate@academic
+  \else
+    \thu at titlepage@en at graduate@professional
+  \fi
+  \clearpage
+  \restoregeometry
+}
+\newcommand\thu at titlepage@en at graduate@academic{%
+  \begingroup
+    \centering
+    \null\vskip -0.7cm%
+    \thu at titlepage@en at title
+    \vfill
+    \sanhao[1.725]%
+    \thu at titlepage@en at degree
+    \vskip 0.13cm%
+    in\par
+    \vskip 0.1cm%
+    {\bfseries\sffamily\thu at discipline@en\par}
+    \vskip 0.7cm%
+    {\sffamily by\par}
+    \vskip 0.24cm%
+    {\sffamily\bfseries\thu at author@en\par}%
+    \vskip 0.14cm%
+    \parbox[t][3.07cm][t]{\textwidth}{%
+      \centering\xiaosan[2.1]%
+      \thu at titlepage@en at supervisor
+    }\par
+    \thu at titlepage@en at date
+    \vskip 0.65cm%
+  \endgroup
+}
+\newcommand\thu at titlepage@en at graduate@professional{%
+  \begingroup
+    \centering
+    \null\vskip -0.7cm%
+    \thu at titlepage@en at title
+    \vfill
+    \sanhao[1.725]%
+    \thu at titlepage@en at degree
+    \vskip 1.1cm%
+    {\sffamily by\par}
+    \vskip 0.24cm%
+    {\sffamily\bfseries\thu at author@en\par}%
+    \ifx\thu at discipline@en\empty
+      \vskip 1.95cm%
+    \else
+      \vskip -0.1cm%
+      {\sffamily\bfseries(\thu at discipline@en)\par}%
+      \vskip 1.1cm%
+    \fi
+    \parbox[t][3.37cm][t]{\textwidth}{%
+      \centering\xiaosan[1.82]%
+      \thu at titlepage@en at supervisor
+    }\par
+    \thu at titlepage@en at date
+    \vskip 0.3cm%
+  \endgroup
+}
+\newcommand\thu at titlepage@en at title{%
+  \begingroup
+    \sffamily\bfseries\fontsize{20bp}{31bp}\selectfont
+    \thu at title@en\par
+  \endgroup
+}
+\newcommand\thu at thesis@name at en{%
+  \ifthu at degree@master
+    Thesis%
+  \else
+    Dissertation%
+  \fi
+}
+\newcommand\thu at titlepage@en at degree{%
+  \thu at thesis@name at en{} Submitted to\par
+  {\bfseries Tsinghua University\par}%
+  in partial fulfillment of the requirement\par
+  for the
+  \ifthu at degree@type at professional
+    professional
+  \fi
+  degree of\par
+  {\sffamily\bfseries\thu at degree@name at en\par}%
+}
+\newcommand\thu at titlepage@en at supervisor{%
+  \begin{tabular}{r@{\makebox[0.71cm][l]{:}}l}%
+    \thu at thesis@name at en{} Supervisor & \thu at supervisor@en     \\
+    \ifx\thu at associate@supervisor at en\@empty\else
+      Associate Supervisor            & \thu at associate@supervisor at en \\
+    \fi
+    \ifx\thu at joint@supervisor at en\@empty\else
+      Cooperate Supervisor            & \thu at joint@supervisor at en   \\
+    \fi
+  \end{tabular}%
+}
+\newcommand\thu at titlepage@en at date{%
+  \begingroup
+    \sffamily\bfseries\sanhao
+    \thu at format@date{\thu at date@en at short}{\thu at date}\par
+  \endgroup
+}
+\newcommand\thu at titlepage@bachelor{%
+  \newgeometry{
+    vmargin = 2.54cm,
+    hmargin = 3.17cm,
+  }%
+  \null\vskip 0.44cm%
+  \begingroup
+    \centering
+    \parbox[t][2cm][t]{\textwidth}{%
+      \hfill
+      \sffamily\CJKfamily+{}\xiaosi
+      \ifx\thu at secret@level\@empty
+        \phantom{秘密}%
+      \else
+        \thu at secret@level\makebox[3em][c]{\thu at secret@year}年%
+      \fi\par
+    }\par
+    \begingroup
+      \ifcsname lishu\endcsname
+        \lishu\yihao\ziju{0.5}清华大学%
+      \else
+        \includegraphics{tsinghua.pdf}%
+      \fi
+      \par
+    \endgroup
+    \vskip 0.94cm%
+    {\sffamily\bfseries\xiaochu\ziju{0.5}综合论文训练\par}%
+    \vskip 2.3cm%
+    \parbox[t][2.4cm][t]{\textwidth}{%
+      \heiti\xiaoer[1.56]%
+      \parindent=2em%
+      \hangindent=5em%
+      \makebox[3em][l]{题目:}%
+      \yihao[1.56]%
+      \CJKunderline[skip=false, thickness=0.05em, depth=0.12em]{\thu at title}\par
+    }\par
+    \vskip 2.5cm%
+    \parbox[t][6.0cm][t]{\textwidth}{%
+      \fangsong\sanhao[2.3]%
+      \leftskip=2.5cm%
+      \parindent=\z@
+      \def\thu at cover@item##1##2##3{%
+        \ifx##3\@empty\else
+          \thu at fixed@box{4em}{##1}:##2{##3}\\
+        \fi
+      }%
+      \def\thu at name@title at format##1##2{%
+        \thu at stretch{3em}{##1}\quad ##2%
+      }
+      \thu at cover@item{系别}{}{\thu at department}%
+      \thu at cover@item{专业}{}{\thu at discipline}%
+      \thu at cover@item{姓名}{\thu at name@title}{\thu at author}%
+      \thu at cover@item{指导教师}{\thu at name@title}{\thu at supervisor}%
+      \thu at cover@item{辅导教师}{\thu at name@title}{\thu at associate@supervisor}%
+    }\par
+    {\xiaosi\thu at format@date{\thu at date@zh at digit}{\thu at date}\par}%
+  \endgroup
+  \clearpage
+  \restoregeometry
+}
+\newcommand\thu at cover@postdoc{%
   \begin{center}%
-    \setlength{\thu at title@width}{3.5em}%
     \renewcommand\ULthickness{0.7pt}%
     \vspace*{0.35cm}%
     {\sihao[2.6]%
-      \thu at put@title{分类号}\thu at underline[3.7cm]{\thu at catalognumber}\hfill
-      密级\thu at underline[3.7cm]{\ifthu at secret\thu at secret@content\fi}\par
-      \thu at put@title{U D C}\thu at underline[3.7cm]{\thu at udc}\hfill
+      \thu at stretch{3.1em}{分类号}\thu at underline[3.7cm]{\thu at clc}\hfill
+      密级\thu at underline[3.7cm]{\thu at secret@level}\par
+      \thu at stretch{3.1em}{U D C}\thu at underline[3.7cm]{\thu at udc}\hfill
       编号\thu at underline[3.7cm]{\thu at id}\par
     }%
     \vskip 3.15cm%
     {\sffamily\bfseries\xiaoer[2.6]%
-      {\ziju{1.5}\thu at schoolname\par}%
+      {\ziju{1.5}清华大学\par}%
       {\ziju{0.5}博士后研究工作报告\par}%
     }%
     \vskip 0.2cm%
     \parbox[t][4.0cm][c]{\textwidth}{%
-      \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu at ctitle}\par
+      \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu at title}\par
     }\par
     \vskip 0.4cm%
-    {\xiaosi\thu at cauthor\par}%
+    {\xiaosi\thu at author\par}%
     \vskip 1.4cm%
     {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}%
-      工作完成日期\quad\thu at CJKunderline[5.9cm]{\thu at postdoctordate}\par
+      工作完成日期\quad
+      \thu at CJKunderline[5.9cm]{%
+        \thu at format@date{\thu at date@zh at digit@short}{\thu at start@date}—%
+        \thu at format@date{\thu at date@zh at digit@short}{\thu at end@date}
+      }\par
       \vskip 0.55cm%
-      报告提交日期\quad\thu at CJKunderline[5.9cm]{\thu at cdate}\par
+      报告提交日期\quad
+      \thu at CJKunderline[5.9cm]{\thu at format@date{\thu at date@zh at digit@short}{\thu at date}}\par
     }%
     \vskip 0.45cm%
-    {\xiaosi[2]{\ziju{1}\thu at schoolname}\quad (北京)\par}%
+    {\xiaosi[2]{\ziju{1}清华大学}\quad (北京)\par}%
     \vskip 0.25cm%
-    {\xiaosi[2]\thu at cdate\par}%
+    {\xiaosi[2]\thu at format@date{\thu at date@zh at digit@short}{\thu at date}\par}%
   \end{center}%
-  \cleardoublepage
+}
+\newcommand\thu at titlepage@postdoc{%
   \begin{center}%
     \vspace*{1.5cm}%
     \parbox[t][3cm][c]{\textwidth}{%
-      \centering\sanhao[1.95]\thu at ctitle\par
+      \centering\sanhao[1.95]\thu at title\par
     }\par
     \vskip 0.15cm%
     \parbox[t][3cm][c]{\textwidth}{%
-      \centering\sihao[1.36]\thu at etitle\par
+      \centering\sihao[1.36]\thu at title@en\par
     }\par
     \vskip 0.4cm%
     {\xiaosi[2.6]%
-      \setlength{\thu at title@width}{11em}%
       \begin{tabular}{l@{\quad}l}%
-        \thu at put@title{博士后姓名}                  & \thu at cauthor           \\
-        \thu at put@title{流动站(一级学科)名称}      & \thu at cfirstdiscipline  \\
-        \thu at put@title{专\quad{}业(二级学科)名称} & \thu at cseconddiscipline \\
+        \thu at stretch{11em}{博士后姓名}                  & \thu at author           \\
+        \thu at stretch{11em}{流动站(一级学科)名称}      & \thu at discipline@level at i  \\
+        \thu at stretch{11em}{专\quad{}业(二级学科)名称} & \thu at discipline@level at ii \\
       \end{tabular}\par
     }%
     \vskip 2.7cm%
     {\xiaosi[2.6]%
-      研究工作起始时间\quad\thu at postdocstartdate\par
+      研究工作起始时间\quad\thu at format@date{\thu at date@zh at digit}{\thu at start@date}\par
       \vskip 0.1cm%
-      研究工作期满时间\quad\thu at postdocenddate\par
+      研究工作期满时间\quad\thu at format@date{\thu at date@zh at digit}{\thu at end@date}\par
     }%
     \vskip 2.1cm%
-    {\xiaosi[2.6]\thu at schoolname{}人事部(北京)\par}%
+    {\xiaosi[2.6]清华大学人事部(北京)\par}%
     \vskip 0.6cm%
-    {\wuhao\thu at cdate\par}%
+    {\wuhao\thu at format@date{\thu at date@zh at digit@short}{\thu at date}\par}%
   \end{center}%
 }
-\newcommand{\thu at first@titlepage at other}{
-  \begin{center}
-    \vspace*{-1.6cm}
-    \parbox[b][2.4cm][t]{\textwidth}{%
-      \ifthu at secret{\heiti\sanhao\thu at secretlevel\thu at secret@content}\else\rule{1cm}{0cm}\fi}
-    \ifthu at bachelor
-      \vskip0.65cm
-      {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu at schoolname\else\includegraphics{tsinghua.pdf}\fi}
-      \par\vskip1.5cm
-      {\xiaochu\heiti\ziju{0.5}\textbf\thu at bachelor@subtitle}
-      \vskip2.2cm\hskip0.8cm
-      \noindent\heiti\xiaoer\thu at bachelor@title at pre\thu at title@sep
-      \parbox[t]{12cm}{%
-      \ignorespaces\yihao[1.51]%
-      \renewcommand{\CJKunderlinebasesep}{0.25cm}%
-      \renewcommand{\ULthickness}{1.3pt}%
-      \xeCJKsetup{underline/format=\color{black}}%
-      \CJKunderline*{\thu at ctitle}}%
-      \vskip1.3cm
+\newcommand{\thu at authorization}{%
+\ifthu at degree@bachelor
+本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
+论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
+容,可以采用影印、缩印或其他复制手段保存该论文。
+\else
+本人完全了解清华大学有关保留、使用学位论文的规定,即:
+
+清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
+必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
+学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
+室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu at degree@master 。\else ;
+(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
+论文。\fi
+
+本人保证遵守上述规定。
+\fi}
+\newcommand{\thu at authorizationaddon}{%
+  \ifthu at degree@bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
+\newcommand{\thu at authorsig}{\ifthu at degree@bachelor 签\hskip1em名:\else 作者签名:\fi}
+\newcommand{\thu at teachersig}{导师签名:}
+\newcommand{\thu at frontdate}{%
+  日\ifthu at degree@bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
+\newcommand\copyrightpage[1][]{%
+  \ifthu at degree@postdoc\relax\else
+    \ifthu at degree@bachelor\clearpage\else\cleardoublepage\fi%
+    \def\thu@@tmp{#1}
+    \ifx\thu@@tmp\@empty
+      \ifthu at degree@bachelor\thu at authorization@mk\else%
+        \begin{list}{}{%
+          \topsep\z@%
+          \listparindent\parindent%
+          \parsep\parskip%
+          \setlength{\leftmargin}{0.9mm}%
+          \setlength{\rightmargin}{0.9mm}}%
+        \item[]\thu at authorization@mk%
+        \end{list}%
+      \fi%
     \else
-      \vskip0.8cm
-      \parbox[t][9cm][t]{\paperwidth-8cm}{
-      \renewcommand{\baselinestretch}{1.3}
-      \begin{center}
-        \yihao[1.2]{\sffamily\thu at ctitle}\par%
-        \par\vskip 18bp%
-        \xiaoer[1]\textrm{\thu at apply}%
-      \end{center}}
+      \includepdf{#1}%
     \fi
-    \ifthu at bachelor
-      \vskip0.75cm
-      \ifx\thu at cassosupervisor\@empty%
-        \def\thu at tempa{7.15cm}
-      \else%
-        \def\thu at tempa{8.15cm}
-      \fi%
-      \parbox[t][\thu at tempa][t]{\textwidth}{%
-        {\fangsong\sanhao[1.95]%
-         \hspace*{1.9cm}
-         \setlength{\thu at title@width}{4em}
-         \setlength{\extrarowheight}{6pt}
-         \begin{tabular}{p{\thu at title@width}@{}l@{\extracolsep{8pt}}l}
-             \thu at put@title{\thu at department@title} & \thu at title@sep
-               & \thu at cdepartment\\
-             \thu at put@title{\thu at major@title}      & \thu at title@sep
-               & \thu at cmajor\\
-             \thu at put@title{\thu at author@title}     & \thu at title@sep
-               & \thu at cauthor \\
-             \thu at put@title{\thu at supervisor@title} & \thu at title@sep
-               & \thu at csupervisor\\
-             \ifx\thu at cassosupervisor\@empty\else%
-               \thu at put@title{\thu at assosuper@title} & \thu at title@sep
-               & \thu at cassosupervisor\\
-             \fi
-           \end{tabular}
-        }}
-    \else
-      \vskip 5bp
-      \parbox[t][7.8cm][t]{\textwidth}{{\sanhao[1.5]
-        \begin{center}\fangsong
-          \setlength{\thu at title@width}{5em}
-          \setlength{\extrarowheight}{4pt}
-          \begin{tabular}{p{\thu at title@width}@{}c@{\extracolsep{8pt}}l}
-              \thu at put@title{\thu at department@title}  & \thu at title@sep
-                & {\ziju{0.1875}\thu at cdepartment}\\
-              \thu at put@title{\thu at major@title}       & \thu at title@sep
-                & {\ziju{0.1875}\thu at cmajor}\\
-              \thu at put@title{\thu at author@title}      & \thu at title@sep
-                & {\ziju{0.6875}\thu at cauthor}\\
-              \thu at put@title{\thu at supervisor@title}  & \thu at title@sep
-                & {\ziju{0.6875}\thu at csupervisor}\\
-              \ifx\thu at cassosupervisor\@empty\else
-                \thu at put@title{\thu at assosuper@title} & \thu at title@sep
-                & {\ziju{0.6875}\thu at cassosupervisor}\\
-              \fi
-              \ifx\thu at ccosupervisor\@empty\else
-                \ifthu at master
-                  \hfill\makebox[0pt][r]{\thu at cosuper@title} & \thu at title@sep
-                  & {\ziju{0.6875}\thu at ccosupervisor}\\
-                \fi
-                \ifthu at doctor
-                  \thu at put@title{\thu at cosuper@title} & \thu at title@sep
-                  & {\ziju{0.6875}\thu at ccosupervisor}\\
-                \fi
-              \fi
-            \end{tabular}
-        \end{center}}}
-      \fi
-     \begin{center}
-       {\ifthu at bachelor\vskip-1.0cm\xiaosi\else%
-         \vskip-0.5cm\sanhao\fi%
-         \songti\thu at cdate}
-     \end{center}
-    \end{center}} % end of titlepage
-\def\thu at master@art{Master of Arts}
-\def\thu at master@sci{Master of Science}
-\def\thu at doctor@phi{Doctor of Philosophy}
-\newcommand{\thu at engcover}{%
-  \newif\ifthu at professional\thu at professionalfalse
-  \ifthu at master
-    \ifthenelse{\equal{\thu at edegree}{\thu at master@art}}
-      {\relax}
-      {\ifthenelse{\equal{\thu at edegree}{\thu at master@sci}}
-        {\relax}
-        {\thu at professionaltrue}}
   \fi
-  \ifthu at doctor
-    \ifthenelse{\equal{\thu at edegree}{\thu at doctor@phi}}
-      {\relax}
-      {\thu at professionaltrue}
-  \fi
-  \begin{center}
-    \vspace*{-5pt}
-    \parbox[t][5.2cm][t]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.5}
-      \begin{center}
-        \erhao[1.1]\bfseries\sffamily\thu at etitle%
-      \end{center}}
-    \parbox[t][][t]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.3}
-      \begin{center}
-        \sanhao%
-        \ifthu at master Thesis \else Dissertation \fi
-        Submitted to\\
-        {\bfseries Tsinghua University}\\
-        in partial fulfillment of the requirement\\
-        for the \ifthu at professional professional \fi
-        degree of\\
-        {\bfseries\sffamily\thu at edegree}%
-        \ifthu at professional\relax\else
-          \\in\\[3bp]
-          {\bfseries\sffamily\thu at emajor}%
-        \fi
-      \end{center}}
-    \parbox[t][][b]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.3}
-      \begin{center}
-        \sanhao\sffamily by\\[3bp]
-        \bfseries\thu at eauthor%
-        \ifthu at professional
-          \ifx\thu at emajor\empty\relax\else
-            \\(~\thu at emajor~)%
-        \fi\fi
-      \end{center}}
-    \par\vspace{0.9cm}
-    \parbox[t][2.1cm][t]{\paperwidth-7.2cm}{
-      \renewcommand{\baselinestretch}{1.2}
-      \xiaosan\centering
-      \begin{tabular}{rl}
-        \ifthu at master Thesis \else Dissertation \fi
-        Supervisor : & \thu at esupervisor\\
-        \ifx\thu at eassosupervisor\@empty
-          \else Associate Supervisor : & \thu at eassosupervisor\\\fi
-        \ifx\thu at ecosupervisor\@empty
-          \else Cooperate Supervisor : & \thu at ecosupervisor\\\fi
-      \end{tabular}}
-    \parbox[t][2cm][b]{\paperwidth-7.2cm}{
-    \begin{center}
-      \sanhao\bfseries\sffamily\thu at edate
-    \end{center}}
-  \end{center}}
+}
 \newcommand{\thu at authorization@mk}{%
-  \ifthu at bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
-  \begin{center}\erhao\heiti\thu at authtitle\end{center}
-  \ifthu at bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
+  \ifthu at degree@bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
+  \begin{center}\erhao\heiti 关于学位论文使用授权的说明\end{center}
+  \ifthu at degree@bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
   \thu at authorization\par
   \textbf{\thu at authorizationaddon}\par
-  \ifthu at bachelor\vskip0.7cm\else\vskip1.0cm\fi
-  \ifthu at bachelor
+  \ifthu at degree@bachelor\vskip0.7cm\else\vskip1.0cm\fi
+  \ifthu at degree@bachelor
     \indent\mbox{\thu at authorsig\thu at underline\relax%
     \thu at teachersig\thu at underline\relax\thu at frontdate\thu at underline\relax}
   \else
@@ -1000,83 +1260,52 @@
                      \thu at frontdate\thu at underline[7em]\relax\hspace*{1cm}
     \endgroup
   \fi}
-\def\makecover{%
-  \thu at setup@pdfinfo\thu at makecover}
-\def\thu at setup@pdfinfo{%
-  \ifthu at chinese
-    \hypersetup{
-      pdftitle    = \thu at ctitle,
-      pdfauthor   = \thu at cauthor,
-      pdfsubject  = \thu at cdegree,
-      pdfkeywords = \thu at ckeywords,
-    }%
-  \else
-    \hypersetup{
-      pdftitle    = \thu at etitle,
-      pdfauthor   = \thu at eauthor,
-      pdfsubject  = \thu at edegree,
-      pdfkeywords = \thu at ekeywords,
-    }%
-  \fi
-  \hypersetup{
-    pdfcreator={\thuthesis-v\version}}}
-\NewDocumentCommand{\thu at makecover}{o}{
-  \phantomsection
-  \pdfbookmark[-1]{\thu at ctitle}{ctitle}
-  \normalsize%
-  \begin{titlepage}
-    \thu at first@titlepage
-    \ifthu at bachelor\relax\else
-      \ifthu at postdoctor\relax\else
-        \cleardoublepage\thu at engcover
-    \fi\fi
-    \ifthu at postdoctor\relax\else%
-      \ifthu at bachelor\clearpage\else\cleardoublepage\fi%
-      \IfNoValueTF{#1}{%
-        \ifthu at bachelor\thu at authorization@mk\else%
-          \begin{list}{}{%
-            \topsep\z@%
-            \listparindent\parindent%
-            \parsep\parskip%
-            \setlength{\leftmargin}{0.9mm}%
-            \setlength{\rightmargin}{0.9mm}}%
-          \item[]\thu at authorization@mk%
-          \end{list}%
-        \fi%
-      }{%
-        \includepdf{#1}%
-      }%
+\thu at define@key{
+  keywords,
+  keywords* = {
+    name = keywords at en,
+  },
+}
+\newcommand\thu at clist@use[2]{%
+  \def\thu@@tmp{}%
+  \kv at set@family at handler{thu at clist}{%
+    \ifx\thu@@tmp\@empty
+      \def\thu@@tmp{#2}%
+    \else
+      #2%
     \fi
-  \end{titlepage}
-  \normalsize
-  \thu at makeabstract
-  \let\@tabular\thu at tabular}
+    ##1%
+  }%
+  \kvsetkeys at expandafter{thu at clist}{#1}%
+}
 \newbox\thu at kw
 \newcommand\thu at put@keywords[2]{%
   \begingroup
     \setbox\thu at kw=\hbox{#1}
-    \ifthu at bachelor\indent\else\noindent\hangindent\wd\thu at kw\hangafter1\fi%
+    \ifthu at degree@bachelor\indent\else\noindent\hangindent\wd\thu at kw\hangafter1\fi%
     \box\thu at kw#2\par
   \endgroup}
-\newcommand{\thu at makeabstract}{%
-  \ifthu at bachelor\clearpage\else\cleardoublepage\fi
+\newenvironment{abstract}{%
+  \ifthu at degree@bachelor\clearpage\else\cleardoublepage\fi
   \thu at setchinese
   \thu at chapter*[]{\cabstractname} % no tocline
-  \ifthu at bachelor
-    \pagestyle{thu at plain}
-  \else
-    \pagestyle{thu at headings}
-  \fi
-  \pagenumbering{Roman}
-  \thu at cabstract
-  \ifthu at doctor\vfill\else\vskip12bp\fi
-  \thu at put@keywords{\textbf\thu at ckeywords@title}{\thu at ckeywords}
+}{%
+  \ifthu at degree@doctor\vfill\else\vskip12bp\fi
+  \thu at put@keywords{\textbf{关键词:}}{%
+    \thu at clist@use{\thu at keywords}{;}%
+  }%
+  \thu at setdefaultlanguage
+}
+\newenvironment{abstract*}{%
   \thu at setenglish
   \thu at chapter*[]{\eabstractname} % no tocline
-  \thu at eabstract
-  \ifthu at doctor\vfill\else\vskip12bp\fi
+}{%
+  \ifthu at degree@doctor\vfill\else\vskip12bp\fi
   \thu at put@keywords{%
-    \textbf{\ifthu at bachelor Keywords:\else Key Words:\fi\enskip}}{\thu at ekeywords}%
+    \textbf{\ifthu at degree@bachelor Keywords:\else Key Words:\fi\enskip}%
+  }{%
+    \thu at clist@use{\thu at keywords@en}{; }%
+  }%
   \thu at setdefaultlanguage
 }
 \newenvironment{denotation}[1][2.5cm]{%
@@ -1103,25 +1332,24 @@
   其他个人和集体,均已在文中以明确方式标明。}
 \newcommand{\thu at signature}{签\hspace{1em}名:}
 \newcommand{\thu at backdate}{日\hspace{1em}期:}
-\NewDocumentEnvironment{acknowledgement}{o}{%
-    \thu at chapter*{\thu at ack@name}
-  }
-  {
-    \ifthu at postdoctor\relax\else%
-      \IfNoValueTF{#1}{%
-        \thu at chapter*{\thu at declarename}
-        \par{\xiaosi\parindent2em\thu at declaretext}\vskip2cm
-        {\xiaosi\hfill\thu at signature\thu at underline[2.5cm]\relax%
-         \thu at backdate\thu at underline[2.5cm]\relax}%
-      }{%
-        \includepdf[pagecommand={\thispagestyle{thu at empty}%
-          \phantomsection\addcontentsline{toc}{chapter}{\thu at declarename}%
-        }]{#1}%
-      }%
-    \fi
-  }
-\let\ack\acknowledgement
-\let\endack\endacknowledgement
+\newenvironment{acknowledgements}{%
+  \thu at chapter*{\thu at ack@name}%
+}{}
+\newcommand\statement[1][]{%
+  \def\thu@@tmp{#1}%
+  \ifx\thu@@tmp\@empty
+    \thu at chapter*{\thu at declarename}%
+    \par{\xiaosi\parindent2em\thu at declaretext}\vskip2cm%
+    {\xiaosi\hfill\thu at signature\thu at underline[2.5cm]\relax
+      \thu at backdate\thu at underline[2.5cm]\relax}%
+  \else
+    \includepdf[pagecommand={\thispagestyle{thu at empty}%
+      \addcontentsline{toc}{chapter}{\thu at declarename}%
+    }]{#1}%
+  \fi
+}
+\let\acknowledgement\acknowledgements
+\let\endacknowledgement\endacknowledgements
 \def\thu at starttoc#1{% #1: float type, prepend type name in \listof*** entry.
   \let\oldnumberline\numberline
   \def\numberline##1{\oldnumberline{\csname #1name\endcsname\hskip.4em ##1}}
@@ -1132,7 +1360,7 @@
     {\thu at chapter*[]{\csname list#1name\endcsname}\thu at starttoc{#1}}
     {\thu at chapter*{\csname list#1name\endcsname}\thu at starttoc{#1}}}
 \renewcommand\listoffigures{\thu at listof{figure}}
-\renewcommand*\l at figure{\ifthu at bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}}
+\renewcommand*\l at figure{\ifthu at degree@bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}}
 \renewcommand\listoftables{\thu at listof{table}}
 \let\l at table\l at figure
 \def\ext at equation{loe}
@@ -1141,12 +1369,11 @@
                   {\protect\numberline{#1}}}
 \newcommand\listofequations{\thu at listof{equation}}
 \let\l at equation\l at figure
-\newcommand\bibstyle at inline{\bibpunct{[}{]}{,}{n}{,}{,}}
 \DeclareRobustCommand\inlinecite{\@inlinecite}
 \def\@inlinecite#1{\begingroup\let\@cite\NAT at citenum\citep{#1}\endgroup}
 \let\onlinecite\inlinecite
 \renewcommand\bibsection{\thu at chapter*{\bibname}}
-\renewcommand\bibfont{\ifthu at bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
+\renewcommand\bibfont{\ifthu at degree@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
 \setlength\bibhang{2\ccwd}
 \addtolength{\bibsep}{-0.7em}
 \setlength{\labelsep}{0.4em}
@@ -1155,6 +1382,17 @@
   \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
 \expandafter\newcommand\csname bibstyle at thuthesis-author-year\endcsname{%
   \bibpunct{(}{)}{;}{a}{,}{,}}
+\expandafter\newcommand\csname bibstyle at thuthesis-bachelor\endcsname{%
+  \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
+\@namedef{bibstyle at thuthesis-inline}{\bibpunct{[}{]}{,}{n}{,}{,}}
+\thu at define@key{
+  cite-style = {
+    name = cite at style,
+    code = {
+      \@nameuse{bibstyle at thuthesis-\thu at cite@style}
+    },
+  }
+}
 \patchcmd\NAT at citexnum{%
   \@ifnum{\NAT at ctype=\z@}{%
     \if*#2*\else\NAT at cmt#2\fi
@@ -1189,19 +1427,59 @@
 }{%
   \def at NAT@last at yr{-\NAT at penalty}%
 }{}{}
-\let\thu at appendix\appendix
-\renewenvironment{appendix}{%
+\thu at define@key{
+  toc-depth = {
+    name = toc at depth,
+    code = {\addtocontents{toc}{\protect\setcounter{tocdepth}{\thu at toc@depth}}},
+  },
+}
+\g at addto@macro\appendix{\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}}
+\newenvironment{survey}{%
+  \chapter{外文资料的调研阅读报告}%
+  \thu at setenglish
   \let\title\thu at appendix@title
-  \thu at appendix}{%
-  \let\title\@gobble}
-\let\title\@gobble
-\newcommand{\thu at appendix@title}[1]{%
-  \begin{center}
-    \xiaosi[1.667] #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]}
+  \let\maketitle\thu at appendix@maketitle
+  \renewcommand\bibname{参考文献}%
+  \let\bibsection\thu at appendix@bibsection
+  \renewcommand\@bibunitname{main-survey}%
+  \let\bibliographystyle\defaultbibliographystyle
+  \let\bibliography\thu at appendix@bibliography
+  \begin{bibunit}%
+}{%
+  \end{bibunit}%
+}
+\newenvironment{translation}{%
+  \chapter{外文资料的书面翻译}%
+  \thu at setenglish
+  \let\title\thu at appendix@title
+  \let\maketitle\thu at appendix@maketitle
+  \renewcommand\bibname{书面翻译对应的原文索引}%
+  \let\bibsection\thu at appendix@bibsection
+  \renewcommand\@bibunitname{main-translation}%
+  \let\bibliographystyle\defaultbibliographystyle
+  \let\bibliography\thu at appendix@bibliography
+  \begin{bibunit}%
+}{%
+  \end{bibunit}%
+}
+\DeclareRobustCommand\thu at appendix@title[1]{\gdef\thu at appendix@@title{#1}}
+\newcommand\thu at appendix@maketitle{%
+  \par
+  \begin{center}%
+    \xiaosi[1.667]\thu at appendix@@title
+  \end{center}%
+  \par
+}
+\newcommand\thu at appendix@bibsection{%
+  \par
+  \vskip 20bp%
+  \begingroup
+    \centering
+    \xiaosi[1.667]\bibname\par
+  \endgroup
+  \vskip 6bp%
+}%
+\newcommand\thu at appendix@bibliography[1]{\putbib[#1]}
 \newenvironment{resume}[1][\thu at resume@title]{%
   \thu at chapter*{#1}}{}
 \newcommand{\resumeitem}[1]{%
@@ -1216,12 +1494,108 @@
   leftmargin=10mm,labelsep=!,before=\xiaosi[1.26]}
 \def\publicationskip{\bigskip\bigskip}
 \newcommand\thu at atendpackage{\csname ctex_at_end_package:nn\endcsname}
+\thu at atendpackage{hyperref}{
+  \hypersetup{
+    linktoc            = all,
+    bookmarksnumbered  = true,
+    bookmarksopen      = true,
+    bookmarksopenlevel = 1,
+    unicode            = true,
+    psdextra           = true,
+    breaklinks         = true,
+    plainpages         = false,
+    hidelinks,
+  }%
+  \newcounter{thu at bookmark}
+  \renewcommand\thu at pdfbookmark[2]{%
+    \phantomsection
+    \stepcounter{thu at bookmark}%
+    \pdfbookmark[#1]{#2}{thuchapter.\thethu at bookmark}%
+  }
+  \pdfstringdefDisableCommands{
+    \let\\\@empty
+    \let\hspace\@gobble
+  }%
+  \@ifpackagelater{hyperref}{2019/04/27}{}{%
+    \g at addto@macro\psdmapshortnames{\let\mu\textmu}
+  }%
+  \AtBeginDocument{%
+    \ifthu at language@chinese
+      \hypersetup{
+        pdftitle    = \thu at title,
+        pdfauthor   = \thu at author,
+        pdfsubject  = \thu at degree@name,
+        pdfkeywords = \thu at keywords,
+      }%
+    \else
+      \hypersetup{
+        pdftitle    = \thu at title@en,
+        pdfauthor   = \thu at author@en,
+        pdfsubject  = \thu at degree@name at en,
+        pdfkeywords = \thu at keywords@en,
+      }%
+    \fi
+    \hypersetup{
+      pdfcreator={\thuthesis-v\version}}
+  }%
+}
 \thu at atendpackage{nomencl}{
   \let\nomname\thu at denotation@name
   \def\thenomenclature{\begin{denotation}[\nom at tempdim]}
   \def\endthenomenclature{\end{denotation}}
 }
-\NewDocumentCommand{\shuji}{O{\thu at ctitle} O{\thu at cauthor}}{%
+\AtBeginDocument{%
+  \let\thu at LT@array\LT at array
+  \def\LT at array{\dawu[1.5]\thu at LT@array} % set default font size
+}
+\thu at atendpackage{siunitx}{%
+  \sisetup{
+    group-minimum-digits = 4,
+    separate-uncertainty = true,
+    inter-unit-product   = \ensuremath{{}\cdot{}},
+  }
+  \newcommand\thu at set@siunitx at language{%
+    \ifthu at language@chinese
+      \sisetup{
+        list-final-separator = { 和 },
+        list-pair-separator  = { 和 },
+        range-phrase         = {~},
+      }%
+    \else
+      \ifthu at language@english
+        \sisetup{
+          list-final-separator = { and },
+          list-pair-separator  = { and },
+          range-phrase         = { to },
+        }%
+      \fi
+    \fi
+  }
+  \thu at set@siunitx at language
+  \thu at addto{language}{\thu at set@siunitx at language}
+}
+\thu at atendpackage{ntheorem}{%
+  \theorembodyfont{\normalfont}%
+  \theoremheaderfont{\normalfont\sffamily}%
+  \theoremsymbol{\ensuremath{\square}}%
+  \newtheorem*{proof}{\thu at proof@name}%
+  \theoremstyle{plain}%
+  \theoremsymbol{}%
+  \theoremseparator{\thu at theorem@separator}%
+  \newtheorem{assumption}{\thu at assumption@name}[chapter]%
+  \newtheorem{definition}{\thu at definition@name}[chapter]%
+  \newtheorem{proposition}{\thu at proposition@name}[chapter]%
+  \newtheorem{lemma}{\thu at lemma@name}[chapter]%
+  \newtheorem{theorem}{\thu at theorem@name}[chapter]%
+  \newtheorem{axiom}{\thu at axiom@name}[chapter]%
+  \newtheorem{corollary}{\thu at corollary@name}[chapter]%
+  \newtheorem{exercise}{\thu at exercise@name}[chapter]%
+  \newtheorem{example}{\thu at example@name}[chapter]%
+  \newtheorem{remark}{\thu at remark@name}[chapter]%
+  \newtheorem{problem}{\thu at problem@name}[chapter]%
+  \newtheorem{conjecture}{\thu at conjecture@name}[chapter]%
+}
+\NewDocumentCommand{\spine}{O{\thu at title} O{\thu at author}}{%
   \newpage\thispagestyle{empty}%
   \fangsong\addCJKfontfeatures*{RawFeature={vertical:}}
   \xiaosan\ziju{0.4}%

Deleted: trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.sty	2020-01-05 22:16:43 UTC (rev 53328)
+++ trunk/Master/texmf-dist/tex/latex/thuthesis/thuthesis.sty	2020-01-05 23:08:16 UTC (rev 53329)
@@ -1,50 +0,0 @@
-\ProvidesPackage{thuthesis}[2007/11/30 4.1 put any packages you would like to use here]
-
-% 处理数学公式中的黑斜体的宏包
-% \RequirePackage{bm}
-
-% 不同于 \mathcal \mathfrak 之类的英文花体字体
-% \RequirePackage{mathrsfs}
-
-% 表格中支持跨行
-\RequirePackage{multirow}
-
-% 固定宽度的表格
-\RequirePackage{tabularx}
-
-% 表格中的反斜线
-\RequirePackage{diagbox}
-
-% 确定浮动对象的位置,可以使用 H,强制将浮动对象放到这里(可能效果很差)
-\RequirePackage{float}
-
-% 浮动图形控制宏包。
-% 允许上一个 section 的浮动图形出现在下一个 section 的开始部分
-% 该宏包提供处理浮动对象的 \FloatBarrier 命令,使所有未处
-% 理的浮动图形立即被处理。这三个宏包仅供参考,未必使用:
-% \RequirePackage[below]{placeins}
-% \RequirePackage{floatflt} % 图文混排用宏包
-% \RequirePackage{rotating} % 图形和表格的控制旋转
-
-% 给自定义的宏后面自动加空白
-% \RequirePackage{xspace}
-
-% 借用 ltxdoc 里面的几个命令。
-\def\cmd#1{\cs{\expandafter\cmd at to@cs\string#1}}
-\def\cmd at to@cs#1#2{\char\number`#2\relax}
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-
-\newcommand*{\meta}[1]{{%
-  \ensuremath{\langle}\rmfamily\itshape#1\/\ensuremath{\rangle}}}
-\providecommand\marg[1]{%
-  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
-\providecommand\oarg[1]{%
-  {\ttfamily[}\meta{#1}{\ttfamily]}}
-\providecommand\parg[1]{%
-  {\ttfamily(}\meta{#1}{\ttfamily)}}
-\providecommand\pkg[1]{{\sffamily#1}}
-
-% 定义自己常用的东西
-\newcommand{\china}{中华人民共和国}
-
-\endinput



More information about the tex-live-commits mailing list