summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hitszthesis
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-03-11 03:01:11 +0000
committerNorbert Preining <norbert@preining.info>2020-03-11 03:01:11 +0000
commit5412d52974c365e2d5bc1a8320816a729f7c10ab (patch)
tree5c8cee6076f9589a9d372c0ee08d16210251ac9a /macros/latex/contrib/hitszthesis
parent877268a0de707a979be934d888518f6cc02d73a6 (diff)
CTAN sync 202003110301
Diffstat (limited to 'macros/latex/contrib/hitszthesis')
-rw-r--r--macros/latex/contrib/hitszthesis/Makefile127
-rw-r--r--macros/latex/contrib/hitszthesis/README.md210
-rw-r--r--macros/latex/contrib/hitszthesis/back/acknowledgements.tex11
-rw-r--r--macros/latex/contrib/hitszthesis/back/appendix01.tex175
-rw-r--r--macros/latex/contrib/hitszthesis/back/appendix02.tex72
-rw-r--r--macros/latex/contrib/hitszthesis/back/appendix03.tex6
-rw-r--r--macros/latex/contrib/hitszthesis/back/appendixA.tex23
-rw-r--r--macros/latex/contrib/hitszthesis/back/appendixB.tex38
-rw-r--r--macros/latex/contrib/hitszthesis/back/ceindex.tex6
-rw-r--r--macros/latex/contrib/hitszthesis/back/conclusion.tex10
-rw-r--r--macros/latex/contrib/hitszthesis/back/publications.tex28
-rw-r--r--macros/latex/contrib/hitszthesis/back/resume.tex20
-rw-r--r--macros/latex/contrib/hitszthesis/body/chapter01.tex30
-rw-r--r--macros/latex/contrib/hitszthesis/body/chapter02.tex593
-rw-r--r--macros/latex/contrib/hitszthesis/body/chapter03.tex (renamed from macros/latex/contrib/hitszthesis/tex/chapter04.tex)0
-rw-r--r--macros/latex/contrib/hitszthesis/body/chapter04.tex2
-rw-r--r--macros/latex/contrib/hitszthesis/body/chapter05.tex (renamed from macros/latex/contrib/hitszthesis/tex/chapter05.tex)0
-rw-r--r--macros/latex/contrib/hitszthesis/body/chapter06.tex (renamed from macros/latex/contrib/hitszthesis/tex/chapter06.tex)0
-rw-r--r--macros/latex/contrib/hitszthesis/compile.bat50
-rw-r--r--macros/latex/contrib/hitszthesis/ctex-fontset-siyuan.def86
-rw-r--r--macros/latex/contrib/hitszthesis/figure/3angle.pngbin70797 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/3grasp.pngbin149872 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/3posoreest.pngbin170786 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/3rfcn.pngbin101012 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/figmutihopcomplex.pngbin24205 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/flowchart.pngbin31527 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/less1.jpgbin10369 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/less2.jpgbin6321 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figure/less3.jpgbin29884 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/figures/bthesistitle.eps (renamed from macros/latex/contrib/hitszthesis/front/thesistitle.eps)0
-rw-r--r--macros/latex/contrib/hitszthesis/figures/golfer.eps1398
-rw-r--r--macros/latex/contrib/hitszthesis/figures/hitlogo.eps382
-rw-r--r--macros/latex/contrib/hitszthesis/front/HITSZname.jpgbin84547 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/front/coverinformation.tex78
-rw-r--r--macros/latex/contrib/hitszthesis/front/denotation.tex17
-rw-r--r--macros/latex/contrib/hitszthesis/hitszthesis.bst1936
-rw-r--r--macros/latex/contrib/hitszthesis/hitszthesis.dtx3916
-rw-r--r--macros/latex/contrib/hitszthesis/hitszthesis.ins88
-rw-r--r--macros/latex/contrib/hitszthesis/hitszthesis.pdfbin402412 -> 601062 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/hitszthesis.sty448
-rw-r--r--macros/latex/contrib/hitszthesis/latexmkrc55
-rw-r--r--macros/latex/contrib/hitszthesis/main-bachelor.pdfbin0 -> 374802 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/main-doctor.pdfbin0 -> 336026 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/main-master.pdfbin0 -> 326398 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/main.pdfbin902896 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/main.tex175
-rw-r--r--macros/latex/contrib/hitszthesis/reference.bib75
-rw-r--r--macros/latex/contrib/hitszthesis/spine.pdfbin8312 -> 0 bytes
-rw-r--r--macros/latex/contrib/hitszthesis/spine.tex11
-rw-r--r--macros/latex/contrib/hitszthesis/tex/abstract.tex18
-rw-r--r--macros/latex/contrib/hitszthesis/tex/abstracten.tex18
-rw-r--r--macros/latex/contrib/hitszthesis/tex/acknowledgements.tex13
-rw-r--r--macros/latex/contrib/hitszthesis/tex/appendix01.tex27
-rw-r--r--macros/latex/contrib/hitszthesis/tex/appendix02.tex22
-rw-r--r--macros/latex/contrib/hitszthesis/tex/chapter01.tex16
-rw-r--r--macros/latex/contrib/hitszthesis/tex/chapter02.tex52
-rw-r--r--macros/latex/contrib/hitszthesis/tex/chapter03.tex330
-rw-r--r--macros/latex/contrib/hitszthesis/tex/conclusion.tex7
-rw-r--r--macros/latex/contrib/hitszthesis/tex/information.tex27
-rw-r--r--macros/latex/contrib/hitszthesis/tex/reference.tex80
60 files changed, 8322 insertions, 2354 deletions
diff --git a/macros/latex/contrib/hitszthesis/Makefile b/macros/latex/contrib/hitszthesis/Makefile
index ca045485ce..4bba9876b8 100644
--- a/macros/latex/contrib/hitszthesis/Makefile
+++ b/macros/latex/contrib/hitszthesis/Makefile
@@ -1,86 +1,115 @@
# Makefile for hitszthesis
-PACKAGE = hitszthesis
-THESIS = main
-SPINE = spine
-
-SOURCES = $(PACKAGE).ins $(PACKAGE).dtx
-CLSFILE = dtx-style.sty $(PACKAGE).cls
-
-LATEXMK = latexmk
+# Compiling method: latexmk/xelatex/pdflatex
+METHOD = xelatex
+# Set opts for latexmk if you use it
+LATEXMKOPTS = -xelatex
+# Basename of thesis
+THESISMAIN = main
+
+PACKAGE=hitszthesis
+SOURCES=$(PACKAGE).ins $(PACKAGE).dtx
+THESISCONTENTS=$(THESISMAIN).tex front/*.tex body/*.tex back/*.tex $(FIGURES) *.bst
+# NOTE: update this to reflect your local file types.
+FIGURES=$(wildcard figures/*.eps figures/*.pdf)
+BIBFILE=*.bib
+CLSFILES=dtx-style.sty $(PACKAGE).cls $(PACKAGE).ist h$(PACKAGE).cfg
# make deletion work on Windows
ifdef SystemRoot
RM = del /Q
+ OPEN = start
else
RM = rm -f
+ OPEN = open
endif
-.PHONY: all all-dev wordcount clean distclean dist thesis viewthesis spine viewspine doc viewdoc cls check save savepdf test FORCE_MAKE
+.PHONY: all clean distclean dist thesis wordcount viewthesis doc dev pub viewdoc cls check FORCE_MAKE
-thesis: $(THESIS).pdf
+all: doc thesis
-all: thesis spine
+cls: $(CLSFILES)
-dev: doc all clean
+$(CLSFILES): $(SOURCES)
+ latex $(PACKAGE).ins
-pub: doc all cleanall
+viewdoc: doc
+ $(OPEN) $(PACKAGE).pdf
-cls: $(CLSFILE)
+doc: $(PACKAGE).pdf
-$(CLSFILE): $(SOURCES)
- xetex $(PACKAGE).ins
+wordcount : $(THESISMAIN).tex
+ @texcount $< -inc -chinese
-doc: $(PACKAGE).pdf
+viewthesis: thesis
+ $(OPEN) $(THESISMAIN).pdf
-spine: $(SPINE).pdf
+thesis: $(THESISMAIN).pdf
-$(PACKAGE).pdf: cls FORCE_MAKE
- $(LATEXMK) $(PACKAGE).dtx
+ifeq ($(METHOD),latexmk)
-$(THESIS).pdf: cls FORCE_MAKE
- $(LATEXMK) $(THESIS)
+$(PACKAGE).pdf: $(CLSFILES) FORCE_MAKE
+ $(METHOD) $(LATEXMKOPTS) $(PACKAGE).dtx
-$(SPINE).pdf: cls FORCE_MAKE
- $(LATEXMK) $(SPINE)
+$(THESISMAIN).pdf: $(CLSFILES) FORCE_MAKE
+ $(METHOD) $(LATEXMKOPTS) $(THESISMAIN)
-viewdoc: doc
- $(LATEXMK) -pv $(PACKAGE).dtx
+else ifeq ($(METHOD),xelatex)
-viewthesis: thesis
- $(LATEXMK) -pv $(THESIS)
+$(PACKAGE).pdf: $(CLSFILES)
+ $(METHOD) $(PACKAGE).dtx
+ makeindex -s gind.ist -o $(PACKAGE).ind $(PACKAGE).idx
+ makeindex -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo
+ $(METHOD) $(PACKAGE).dtx
+ $(METHOD) $(PACKAGE).dtx
-viewspine: spine
- $(LATEXMK) -pv $(SPINE)
+$(THESISMAIN).idx: $(THESISMAIN).bbl
+ $(METHOD) $(THESISMAIN)
+ $(METHOD) $(THESISMAIN)
-save:
- bash testfiles/save.sh
-savepdf:
- bash testfiles/save-pdf.sh
+$(THESISMAIN)_china.idx : $(CLSFILES) $(THESISMAIN).bbl $(THESISMAIN).idx
+ splitindex $(THESISMAIN) -- -s $(PACKAGE).ist # 自动生成索引
-test:
- l3build check
+$(THESISMAIN)_english.ind $(THESISMAIN)_china.ind $(THESISMAIN)_english.idx : $(THESISMAIN)_china.idx
-wordcount : $(THESIS).tex
- @texcount $< -inc -chinese
+$(THESISMAIN).pdf: $(CLSFILES) $(THESISCONTENTS) $(THESISMAIN)_china.ind $(THESISMAIN)_china.idx $(THESISMAIN)_english.ind $(THESISMAIN)_english.idx $(THESISMAIN).bbl
+ $(METHOD) $(THESISMAIN)
+ splitindex $(THESISMAIN) -- -s $(PACKAGE).ist # 自动生成索引
+ $(METHOD) $(THESISMAIN)
+
+$(THESISMAIN).bbl: $(BIBFILE)
+ $(METHOD) $(THESISMAIN)
+ -bibtex $(THESISMAIN)
+ $(RM) $(THESISMAIN).pdf
+
+else
+$(error Unknown METHOD: $(METHOD))
+
+endif
+
+dev: doc thesis clean
+
+pub: doc thesis cleanall
clean:
- $(LATEXMK) -c $(PACKAGE).dtx $(THESIS) $(SPINE)
+ latexmk -c $(PACKAGE).dtx
+ latexmk -c $(THESISMAIN)
+ -@$(RM) *~ *.idx *.ind *.ilg *.thm *.toe *.bbl
cleanall: clean
- -@$(RM) $(CLSFILE)
+ -@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf
distclean: cleanall
+ -@$(RM) $(CLSFILES)
-@$(RM) -r dist
check: FORCE_MAKE
-ifeq ($(version),)
- @echo "Error: version missing: \"make [check|dist] version=X.Y\""; exit 1
-else
- @[[ $(shell grep -E -c '$(version) A Bachelor Thesis Template for Harbin Institute of Technology, ShenZhen|\\def\\version\{$(version)\}' hitszthesis.dtx) -eq 3 ]] || (echo "update version in hitszthesis.dtx before release"; exit 1)
- @[[ $(shell grep -E -c '"version": "$(version)"' package.json) -eq 1 ]] || (echo "update version in package.json before release"; exit 1)
-endif
-
-dist: check all-dev
- npm run build -- --version=$(version) \ No newline at end of file
+ ag 'Dissertation Template for Harbin Institute of Technology, ShenZhen|\\def\\version|"version":' hitszthesis.dtx package.json
+
+dist: all
+ @if [ -z "$(version)" ]; then \
+ echo "Usage: make dist version=[x.y.z | ctan]"; \
+ else \
+ npm run build -- --version=$(version); \
+ fi
diff --git a/macros/latex/contrib/hitszthesis/README.md b/macros/latex/contrib/hitszthesis/README.md
index 021551d0fd..1c75114339 100644
--- a/macros/latex/contrib/hitszthesis/README.md
+++ b/macros/latex/contrib/hitszthesis/README.md
@@ -1,6 +1,10 @@
<!-- Author : Jingxuan Yang-->
<!-- Program Email: yanglatex2e@gmail.com -->
+# hitszthesis: Dissertation Template for Harbin Institute of Technology, ShenZhen (HITSZ)
+
+# hitszthesis:哈尔滨工业大学(深圳)本硕博学位论文$\LaTeX$模板
+
![CTAN Version](https://img.shields.io/ctan/v/hitszthesis.svg)
![Github Version](https://img.shields.io/github/release/YangLaTeX/hitszthesis.svg)
![Repo Size](https://img.shields.io/github/repo-size/YangLaTeX/hitszthesis.svg)
@@ -10,35 +14,130 @@
# Introduction to hitszthesis
-HITSZThesis is a **bachelor dissertation** LaTeX template for **Harbin Institute of Technology, ShenZhen** (HITSZ). Current version is 2.3, updated on 2020/03/05.
+HITSZThesis is a **dissertation** LaTeX template for **Harbin Institute of Technology, ShenZhen** (HITSZ), including bachelor, master and doctor dissertations. Current version is 3.0, updated on 2020/03/10. Note that 3.x version is not compatible with 2.x version.
+
+```latex
+ |- front
+ |- coverinformation.tex
+ |- denotation.tex
+ |- body
+ |- chapter01.tex
+ |- chapter02.tex
+ |- chapter03.tex
+ |- chapter04.tex
+ |- chapter05.tex
+ |- chapter06.tex
+ |- back
+ |- acknowledgements.tex
+ |- appendix01.tex
+ |- appendix02.tex
+ |- appendix03.tex
+ |- appendixA.tex
+ |- appendixB.tex
+ |- ceindex.tex
+ |- conclusion.tex
+ |- publication.tex
+ |- resume.tex
+ |- figures
+ |- bthesistitle.eps
+ |- golfer.eps
+ |- hitlogo.eps
+ |- compile.bat
+ |- ctex-fontset-siyuan.def
+ |- hitszthesis.bst
+ |- hitszthesis.dtx
+ |- hitszthesis.ins
+ |- hitszthesis.pdf
+ |- hitszthesis.sty
+ |- latexmkrc
+ |- main-bachelor.pdf
+ |- main-doctor.pdf
+ |- main-master.pdf
+ |- main.tex
+ |- Makefile
+ |- README.md
+ |- reference.bib
+```
+
+# hitszthesis 模板简介
+
+hitszthesis 是哈尔滨工业大学(深圳)本硕博学位论文模板,当前版本为3.0,更新于2020年3月10日。注意3.x版本不兼容2.x版本。
# Documentation
-Download and unzip the template. Specific usage documentation and examples can be found in the files below. At present, these documents are **only available in Chinese**:
+Download and unzip the template. Specific usage documentation and examples can be found in the files below:
+
+* Template usage (hitszthesis.pdf, in Chinese)
+* Template example (main.pdf, in Chinese)
+* Brief Introduction (README.md, both in Chinese and English)
+
+Typesetting examples:
-* Template usage (hitszthesis.pdf)
-* Template example (main.pdf)
+* bachelor dissertation (main-bachelor.pdf)
+* master dissertation (main-master.pdf)
+* doctor dissertation (main-doctor.pdf)
+
+# 说明文档
+
+下载并解压本模板,文件夹中包含以下说明文档:
+
+* 模板开发文档(hitszthesis.pdf,中文版)
+* 模板撰写示例(main.pdf,中文版)
+* 模板简介(README.md,中英双语)
+
+示例文档:
+
+* 本科学位论文(main-bachelor.pdf)
+* 硕士学位论文(main-master.pdf)
+* 博士学位论文(main-doctor.pdf)
# Downloads
* Published version: [CTAN](https://www.ctan.org/pkg/hitszthesis)
* Developer version: [GitHub](https://github.com/YangLaTeX/hitszthesis)
-# Updates
+# 下载
+
+* 发布版本:[CTAN](https://www.ctan.org/pkg/hitszthesis)
+* 开发版本:[GitHub](https://github.com/YangLaTeX/hitszthesis)
+
+# Updates(更新)
## Automatic
Get the most up-to-date published version with your TeX distribution from [CTAN](https://www.ctan.org/pkg/hitszthesis).
+```bash
+tlmgr update hitszthesis
+```
+
+## 自动更新
+
+从[CTAN](https://www.ctan.org/pkg/hitszthesis)更新,命令行运行:
+
+```bash
+tlmgr update hitszthesis
+```
+
## Manual
Download the package from [GitHub](https://github.com/YangLaTeX/hitszthesis) 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):
```shell
-xetex hitszthesis.ins
+latex hitszthesis.ins
+```
+
+You'll get `hitszthesis.cls`, `hitszthesis.cfg` and `hitszthesis.ist` along with other template files.
+
+## 手动更新
+
+从[GitHub](https://github.com/YangLaTeX/hitszthesis)下载模板,解压后打开命令行,运行:
+
+```shell
+latex hitszthesis.ins
```
-You'll get `hitszthesis.cls` along with other template files.
+得到`hitszthesis.cls`,`hitszthesis.cfg` 与 `hitszthesis.ist`,而后打开 `main.tex` 即可开始撰写论文。
# Reporting Issues
@@ -46,6 +145,17 @@ Please follow the procedure below:
* QQ group: 1039392552
* [GitHub Issues](https://github.com/YangLaTeX/hitszthesis/issues)
+* [Educational Email](mailto:yangjingxuan@stu.hit.edu.cn)
+* [Gmail](mailto:yanglatex2e@gmail.com)
+
+# 模板问题反馈
+
+请按照以下顺序反馈问题:
+
+* QQ group: 1039392552
+* [GitHub 问题反馈](https://github.com/YangLaTeX/hitszthesis/issues)
+* [教育邮箱](mailto:yangjingxuan@stu.hit.edu.cn)
+* [Gmail 邮箱](mailto:yanglatex2e@gmail.com)
# Makefile Usage
@@ -53,32 +163,92 @@ To use Makefile, you should have GNU `make` tool installed.
```bash
make cls # generate class hitszthesis.cls
-make doc # generate template documentation hitszthesis.pdf;
-make thesis # generate thesis main.pdf;
-make spine # generate book spine for printing spine.pdf;
-make all # generate thesis and spine, same as `make thesis && make spine`;
+make doc # generate template documentation hitszthesis.pdf
+make thesis # generate thesis main.pdf
+make all # generate thesis and documentation
make wordcount # count word in thesis main.pdf
-make clean # delete all examples' files (excluding main.pdf);
-make cleanall # delete all examples' files and all pdf file;
-make dev # make doc all clean
-make pub # make doc all cleanall
+make clean # delete all examples' files (excluding main.pdf)
+make cleanall # delete all examples' files and all pdf files
+make dev # make all clean
+make pub # make all cleanall
+```
+
+# 使用Makefile
+
+使用Makefile之前请确保已安装GNU `make`工具。
+
+```bash
+make cls # 生成类文件 hitszthesis.cls
+make doc # 生成说明文档 hitszthesis.pdf
+make thesis # 生成论文 main.pdf
+make all # 生成论文与说明文档
+make wordcount # 论文字数统计
+make clean # 删除辅助文件,除了PDF文件
+make cleanall # 删除辅助文件,包含PDF文件
+make dev # 等同于 make all clean
+make pub # 等同于 make all cleanall
```
# compile.bat Usage
-compile.bat is designed for windows platform.
+`compile.bat` is designed for windows platform.
```bash
compile.bat cls # generate class hitszthesis.cls
compile.bat doc # generate template documentation hitszthesis.pdf
compile.bat thesis # generate thesis main.pdf
-compile.bat spine # generate book spine for printing spine.pdf
-compile.bat all # generate thesis and spine, same as `make thesis && make spine`
+compile.bat all # generate thesis and documentation
compile.bat wordcount # count word in thesis main.pdf
-compile.bat clean # delete all examples' files (excluding main.pdf)
-compile.bat cleanall # delete all examples' files and all pdf file
+compile.bat clean # delete all examples' files (excluding pdf files)
+compile.bat cleanall # delete all examples' files and all pdf files
+```
+
+# 使用compile.bat
+
+`compile.bat`为windows编译脚本。
+
+```bash
+compile.bat cls # 生成类文件 hitszthesis.cls
+compile.bat doc # 生成说明文档 hitszthesis.pdf
+compile.bat thesis # 生成论文 main.pdf
+compile.bat all # 生成论文与说明文档
+compile.bat wordcount # 论文字数统计
+compile.bat clean # 删除辅助文件,除了PDF文件
+compile.bat cleanall # 删除辅助文件,包含PDF文件
+```
+
+# Manually Compile(手动编译)
+
+## Compile Thesis(编译论文)
+
+```bash
+xelatex -shell-escape main.tex
+bibtex main.tex
+xelatex -shell-escape main.tex
+xelatex -shell-escape main.tex
+splitindex main -- -s hitszthesis.ist # generate index
+xelatex -shell-escape main.tex
+```
+
+## Compile Documentation(编译说明文档)
+
+```bash
+xelatex hitszthesis.dtx
+makeindex -s gind.ist -o hitszthesis.ind hitszthesis.idx
+makeindex -s gglo.ist -o hitszthesis.gls hitszthesis.glo
+xelatex hitszthesis.dtx
+xelatex hitszthesis.dtx
```
# License
This material is subject to the [LATEX Project Public License 1.3c](https://ctan.org/license/lppl1.3) or any later version.
+
+# 协议
+
+本模板的发布遵照[LATEX Project Public License 1.3c](https://ctan.org/license/lppl1.3)协议或其后版本。
+
+# Acknowledgements(致谢)
+
+* [hithesis](https://github.com/dustincys/hithesis)
+* [thuthesis](https://github.com/xueruini/thuthesis)
diff --git a/macros/latex/contrib/hitszthesis/back/acknowledgements.tex b/macros/latex/contrib/hitszthesis/back/acknowledgements.tex
new file mode 100644
index 0000000000..8442f867f6
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/acknowledgements.tex
@@ -0,0 +1,11 @@
+% !TEX root = ../main.tex
+
+% 致谢
+\begin{acknowledgements}
+衷心感谢导师~XXX~教授对本人的精心指导。他的言传身教将使我终生受益。
+
+……
+
+感谢哈深\LaTeX{}论文模板\hitszthesis\ !
+
+\end{acknowledgements}
diff --git a/macros/latex/contrib/hitszthesis/back/appendix01.tex b/macros/latex/contrib/hitszthesis/back/appendix01.tex
new file mode 100644
index 0000000000..faae623114
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/appendix01.tex
@@ -0,0 +1,175 @@
+% !TEX root = ../main.tex
+
+% 附录1
+\chapter{外文资料原文}
+\label{cha:engorg}
+
+\title{The title of the English paper}
+
+\textbf{Abstract:} As one of the most widely used techniques in operations
+research, \emph{ mathematical programming} is defined as a means of maximizing a
+quantity known as \emph{bjective function}, subject to a set of constraints
+represented by equations and inequalities. Some known subtopics of mathematical
+programming are linear programming, nonlinear programming, multiobjective
+programming, goal programming, dynamic programming, and multilevel
+programming$^{[1]}$.
+
+It is impossible to cover in a single chapter every concept of mathematical
+programming. This chapter introduces only the basic concepts and techniques of
+mathematical programming such that readers gain an understanding of them
+throughout the book$^{[2,3]}$.
+
+
+\section{Single-Objective Programming}
+The general form of single-objective programming (SOP) is written
+as follows,
+\begin{equation}\tag*{(123)} % 如果附录中的公式不想让它出现在公式索引中,那就请
+ % 用 \tag*{xxxx}
+\left\{\begin{array}{l}
+\max \,\,f(x)\\[0.1 cm]
+\mbox{subject to:} \\ [0.1 cm]
+\qquad g_j(x)\le 0,\quad j=1,2,\cdots,p
+\end{array}\right.
+\end{equation}
+which maximizes a real-valued function $f$ of
+$x=(x_1,x_2,\cdots,x_n)$ subject to a set of constraints.
+
+\newtheorem{mpdef}{Definition}[chapter]
+\begin{mpdef}
+In SOP, we call $x$ a decision vector, and
+$x_1,x_2,\cdots,x_n$ decision variables. The function
+$f$ is called the objective function. The set
+\begin{equation}\tag*{(456)} % 这里同理,其它不再一一指定。
+S=\left\{x\in\Re^n\bigm|g_j(x)\le 0,\,j=1,2,\cdots,p\right\}
+\end{equation}
+is called the feasible set. An element $x$ in $S$ is called a
+feasible solution.
+\end{mpdef}
+
+\newtheorem{mpdefop}[mpdef]{Definition}
+\begin{mpdefop}
+A feasible solution $x^*$ is called the optimal
+solution of SOP if and only if
+\begin{equation}
+f(x^*)\ge f(x)
+\end{equation}
+for any feasible solution $x$.
+\end{mpdefop}
+
+One of the outstanding contributions to mathematical programming was known as
+the Kuhn-Tucker conditions\ref{eq:ktc}. In order to introduce them, let us give
+some definitions. An inequality constraint $g_j(x)\le 0$ is said to be active at
+a point $x^*$ if $g_j(x^*)=0$. A point $x^*$ satisfying $g_j(x^*)\le 0$ is said
+to be regular if the gradient vectors $\nabla g_j(x)$ of all active constraints
+are linearly independent.
+
+Let $x^*$ be a regular point of the constraints of SOP and assume that all the
+functions $f(x)$ and $g_j(x),j=1,2,\cdots,p$ are differentiable. If $x^*$ is a
+local optimal solution, then there exist Lagrange multipliers
+$\lambda_j,j=1,2,\cdots,p$ such that the following Kuhn-Tucker conditions hold,
+\begin{equation}
+\label{eq:ktc}
+\left\{\begin{array}{l}
+ \nabla f(x^*)-\sum\limits_{j=1}^p\lambda_j\nabla g_j(x^*)=0\\[0.3cm]
+ \lambda_jg_j(x^*)=0,\quad j=1,2,\cdots,p\\[0.2cm]
+ \lambda_j\ge 0,\quad j=1,2,\cdots,p.
+\end{array}\right.
+\end{equation}
+If all the functions $f(x)$ and $g_j(x),j=1,2,\cdots,p$ are convex and
+differentiable, and the point $x^*$ satisfies the Kuhn-Tucker conditions
+(\ref{eq:ktc}), then it has been proved that the point $x^*$ is a global optimal
+solution of SOP.
+
+\subsection{Linear Programming}
+\label{sec:lp}
+
+If the functions $f(x),g_j(x),j=1,2,\cdots,p$ are all linear, then SOP is called
+a {\em linear programming}.
+
+The feasible set of linear is always convex. A point $x$ is called an extreme
+point of convex set $S$ if $x\in S$ and $x$ cannot be expressed as a convex
+combination of two points in $S$. It has been shown that the optimal solution to
+linear programming corresponds to an extreme point of its feasible set provided
+that the feasible set $S$ is bounded. This fact is the basis of the {\em simplex
+ algorithm} which was developed by Dantzig as a very efficient method for
+solving linear programming.
+\begin{table}[ht]
+\centering
+ \centering
+ \caption*{Table~1\hskip1em This is an example for manually numbered table, which
+ would not appear in the list of tables}
+ \label{tab:badtabular2}
+ \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
+ \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
+ \multicolumn{3}{c|}{\# of clients} & Server \\\hline
+ GT-ITM & Waxman Transit-Stub & 600 &
+ \multirow{2}{2em}{2\%}&
+ \multirow{2}{2em}{10\%}&
+ \multirow{2}{2em}{50\%}&
+ \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
+ \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
+ & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+Roughly speaking, the simplex algorithm examines only the extreme points of the
+feasible set, rather than all feasible points. At first, the simplex algorithm
+selects an extreme point as the initial point. The successive extreme point is
+selected so as to improve the objective function value. The procedure is
+repeated until no improvement in objective function value can be made. The last
+extreme point is the optimal solution.
+
+\subsection{Nonlinear Programming}
+
+If at least one of the functions $f(x),g_j(x),j=1,2,\cdots,p$ is nonlinear, then
+SOP is called a {\em nonlinear programming}.
+
+A large number of classical optimization methods have been developed to treat
+special-structural nonlinear programming based on the mathematical theory
+concerned with analyzing the structure of problems.
+
+Now we consider a nonlinear programming which is confronted solely with
+maximizing a real-valued function with domain $\Re^n$. Whether derivatives are
+available or not, the usual strategy is first to select a point in $\Re^n$ which
+is thought to be the most likely place where the maximum exists. If there is no
+information available on which to base such a selection, a point is chosen at
+random. From this first point an attempt is made to construct a sequence of
+points, each of which yields an improved objective function value over its
+predecessor. The next point to be added to the sequence is chosen by analyzing
+the behavior of the function at the previous points. This construction continues
+until some termination criterion is met. Methods based upon this strategy are
+called {\em ascent methods}, which can be classified as {\em direct methods},
+{\em gradient methods}, and {\em Hessian methods} according to the information
+about the behavior of objective function $f$. Direct methods require only that
+the function can be evaluated at each point. Gradient methods require the
+evaluation of first derivatives of $f$. Hessian methods require the evaluation
+of second derivatives. In fact, there is no superior method for all
+problems. The efficiency of a method is very much dependent upon the objective
+function.
+
+\subsection{Integer Programming}
+
+{\em Integer programming} is a special mathematical programming in which all of
+the variables are assumed to be only integer values. When there are not only
+integer variables but also conventional continuous variables, we call it {\em
+ mixed integer programming}. If all the variables are assumed either 0 or 1,
+then the problem is termed a {\em zero-one programming}. Although integer
+programming can be solved by an {\em exhaustive enumeration} theoretically, it
+is impractical to solve realistically sized integer programming problems. The
+most successful algorithm so far found to solve integer programming is called
+the {\em branch-and-bound enumeration} developed by Balas (1965) and Dakin
+(1965). The other technique to integer programming is the {\em cutting plane
+ method} developed by Gomory (1959).
+
+\hfill\textit{Uncertain Programming\/}\quad(\textsl{BaoDing Liu, 2006.2})
+
+\section*{References}
+\noindent{\itshape NOTE: These references are only for demonstration. They are
+ not real citations in the original text.}
+
+\begin{translationbib}
+\item Donald E. Knuth. The \TeX book. Addison-Wesley, 1984. ISBN: 0-201-13448-9
+\item Paul W. Abrahams, Karl Berry and Kathryn A. Hargreaves. \TeX\ for the
+ Impatient. Addison-Wesley, 1990. ISBN: 0-201-51375-7
+\item David Salomon. The advanced \TeX book. New York : Springer, 1995. ISBN:0-387-94556-3
+\end{translationbib}
diff --git a/macros/latex/contrib/hitszthesis/back/appendix02.tex b/macros/latex/contrib/hitszthesis/back/appendix02.tex
new file mode 100644
index 0000000000..15e3919847
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/appendix02.tex
@@ -0,0 +1,72 @@
+% !TEX root = ../main.tex
+
+% 附录2
+\chapter{外文资料的调研阅读报告或书面翻译}
+
+\title{英文资料的中文标题}
+
+{\heiti 摘要:} 本章为外文资料翻译内容。如果有摘要可以直接写上来,这部分好像没有
+明确的规定。
+
+\section{单目标规划}
+北冥有鱼,其名为鲲。鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几
+千里也。怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。
+\begin{equation}\tag*{(123)}
+ p(y|\mathbf{x}) = \frac{p(\mathbf{x},y)}{p(\mathbf{x})}=
+\frac{p(\mathbf{x}|y)p(y)}{p(\mathbf{x})}
+\end{equation}
+
+吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为
+恶无近刑,缘督以为经,可以保身,可以全生,可以养亲,可以尽年。
+
+\subsection{线性规划}
+庖丁为文惠君解牛,手之所触,肩之所倚,足之所履,膝之所倚,砉然响然,奏刀騞然,莫
+不中音,合于桑林之舞,乃中经首之会。
+\begin{table}[ht]
+\centering
+ \centering
+ \caption*{表~1\hskip1em 这是手动编号但不出现在索引中的一个表格例子}
+ \label{tab:badtabular3}
+ \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
+ \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
+ \multicolumn{3}{c|}{\# of clients} & Server \\\hline
+ GT-ITM & Waxman Transit-Stub & 600 &
+ \multirow{2}{2em}{2\%}&
+ \multirow{2}{2em}{10\%}&
+ \multirow{2}{2em}{50\%}&
+ \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
+ \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
+ & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+文惠君曰:“嘻,善哉!技盖至此乎?”庖丁释刀对曰:“臣之所好者道也,进乎技矣。始臣之
+解牛之时,所见无非全牛者;三年之后,未尝见全牛也;方今之时,臣以神遇而不以目视,
+官知止而神欲行。依乎天理,批大郤,导大窾,因其固然。技经肯綮之未尝,而况大坬乎!
+良庖岁更刀,割也;族庖月更刀,折也;今臣之刀十九年矣,所解数千牛矣,而刀刃若新发
+于硎。彼节者有间而刀刃者无厚,以无厚入有间,恢恢乎其于游刃必有余地矣。是以十九年
+而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒,视为止,行为迟,动刀甚微,
+謋然已解,如土委地。提刀而立,为之而四顾,为之踌躇满志,善刀而藏之。”
+
+文惠君曰:“善哉!吾闻庖丁之言,得养生焉。”
+
+
+\subsection{非线性规划}
+孔子与柳下季为友,柳下季之弟名曰盗跖。盗跖从卒九千人,横行天下,侵暴诸侯。穴室枢
+户,驱人牛马,取人妇女。贪得忘亲,不顾父母兄弟,不祭先祖。所过之邑,大国守城,小
+国入保,万民苦之。孔子谓柳下季曰:“夫为人父者,必能诏其子;为人兄者,必能教其弟。
+若父不能诏其子,兄不能教其弟,则无贵父子兄弟之亲矣。今先生,世之才士也,弟为盗
+跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
+
+柳下季曰:“先生言为人父者必能诏其子,为人兄者必能教其弟,若子不听父之诏,弟不受
+兄之教,虽今先生之辩,将奈之何哉?且跖之为人也,心如涌泉,意如飘风,强足以距敌,
+辩足以饰非。顺其心则喜,逆其心则怒,易辱人以言。先生必无往。”
+
+孔子不听,颜回为驭,子贡为右,往见盗跖。
+
+\subsection{整数规划}
+盗跖乃方休卒徒大山之阳,脍人肝而餔之。孔子下车而前,见谒者曰:“鲁人孔丘,闻将军
+高义,敬再拜谒者。”谒者入通。盗跖闻之大怒,目如明星,发上指冠,曰:“此夫鲁国之
+巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
+说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
+作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”
diff --git a/macros/latex/contrib/hitszthesis/back/appendix03.tex b/macros/latex/contrib/hitszthesis/back/appendix03.tex
new file mode 100644
index 0000000000..2b3cca8247
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/appendix03.tex
@@ -0,0 +1,6 @@
+% !TEX root = ../main.tex
+
+% 附录3
+\chapter{其它附录}
+
+其他的附录如数据、代码等,可以放在这里。
diff --git a/macros/latex/contrib/hitszthesis/back/appendixA.tex b/macros/latex/contrib/hitszthesis/back/appendixA.tex
new file mode 100644
index 0000000000..e549eebc93
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/appendixA.tex
@@ -0,0 +1,23 @@
+% !TEX root = ../main.tex
+
+% 附录A
+\chapter{带章节的附录}[Full Appendix]%
+完整的附录内容,包含章节,公式,图表等
+
+\section{附录节的内容}[Section in Appendix]
+这是附录的节的内容
+
+附录中图的示例:
+\begin{figure}[htbp]
+\centering
+\includegraphics[width = 0.4\textwidth]{golfer}
+%\bicaption[golfer5]{}{\xiaosi[0]打高尔夫球的人}{Fig.$\!$}{The person playing golf}\vspace{-1em}
+\caption{\xiaosi[0]打高尔夫球的人}
+\end{figure}
+
+附录中公式的示例:
+\begin{align}
+a & = b \times c \\
+E & = m c^2
+\label{eq}
+\end{align}
diff --git a/macros/latex/contrib/hitszthesis/back/appendixB.tex b/macros/latex/contrib/hitszthesis/back/appendixB.tex
new file mode 100644
index 0000000000..ec2a47bc2a
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/appendixB.tex
@@ -0,0 +1,38 @@
+% !TEX root = ../main.tex
+
+% 附录B
+\chapter{这个星球上最好的免费Linux软件列表}[List of the Best Linux Software in our Planet]
+\section{系统}
+
+\href{http://fvwm.org/}{FVWM 自从上世纪诞生以来,此星球最强大的窗口管理器。}
+推荐基于FVWM的桌面设计hifvwm:\href{https://github.com/dustincys/hifvwm}{https://github.com/dustincys/hifvwm}。
+
+\subsection{hifvwm的优点}
+
+\begin{enumerate}
+ \item 即使打开上百个窗口也不会“蒙圈”。计算机性能越来越强大,窗口任务的管理必须要升级到打怪兽级别。
+ \item 自动同步Bing搜索主页的壁纸。每次电脑开机,午夜零点自动更新,用户
+ 也可以手动更新,从此审美再也不疲劳。
+ \item 切换窗口自动聚焦到最上面的窗口。使用键盘快捷键切换窗口时候,减少
+ 操作过程,自动聚焦到目标窗口。这一特性是虚拟窗口必须的人性化设
+ 计。
+ \item 类似window右下角的功能的最小化窗口来显示桌面的功能此处类似
+ win7/win10,实现在一个桌面之内操作多个任务。
+ \item 任务栏结合标题栏。采用任务栏和标题栏结合,节省空间。
+ \item 同类窗口切换。可以在同类窗口之内类似alt-tab的方式切换。
+ \item ……
+\end{enumerate}
+
+\section{其他}
+
+\href{https://orgmode.org/}{orgmode,最强大的笔记系统,从来没有之一。}
+
+\href{https://www.jianguoyun.com/}{坚果云,国内一款支持WebDav的云盘系统,国内真正的云盘没有之一。}
+
+\section{vim}
+实现中英文每一句一行,以及实现每一句折叠断行的简单正则式,tex源码更加乖乖。
+\begin{lstlisting}
+vnoremap <leader>fae J:s/[.!?]\zs\s\+/\="\r".matchstr(getline('.'), '^\s*')/g<CR>
+vnoremap <leader>fac J:s/[。!?]/\=submatch(0)."\n".matchstr(getline('.'), '^\s*')/g<CR>
+vnoremap <leader>fle :!fmt -80 -s<CR>
+\end{lstlisting}
diff --git a/macros/latex/contrib/hitszthesis/back/ceindex.tex b/macros/latex/contrib/hitszthesis/back/ceindex.tex
new file mode 100644
index 0000000000..7d2b284dd7
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/ceindex.tex
@@ -0,0 +1,6 @@
+% !TEX root = ../main.tex
+
+% 中英文索引
+\begin{ceindex}
+ \printsubindex*
+\end{ceindex}
diff --git a/macros/latex/contrib/hitszthesis/back/conclusion.tex b/macros/latex/contrib/hitszthesis/back/conclusion.tex
new file mode 100644
index 0000000000..bebd69932e
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/conclusion.tex
@@ -0,0 +1,10 @@
+% !TEX root = ../main.tex
+
+% 结论
+\begin{conclusions}
+
+学位论文的结论作为论文正文的最后一章单独排写,但不加章标题序号。
+
+结论应是作者在学位论文研究过程中所取得的创新性成果的概要总结,不能与摘要混为一谈。博士学位论文结论应包括论文的主要结果、创新点、展望三部分,在结论中应概括论文的核心观点,明确、客观地指出本研究内容的创新性成果(含新见解、新观点、方法创新、技术创新、理论创新),并指出今后进一步在本研究方向进行研究工作的展望与设想。对所取得的创新性成果应注意从定性和定量两方面给出科学、准确的评价,分(1)、(2)、(3)…条列出,宜用“提出了”、“建立了”等词叙述。
+
+\end{conclusions}
diff --git a/macros/latex/contrib/hitszthesis/back/publications.tex b/macros/latex/contrib/hitszthesis/back/publications.tex
new file mode 100644
index 0000000000..04013c303c
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/publications.tex
@@ -0,0 +1,28 @@
+% !TEX root = ../main.tex
+
+% 发表论文、专利、获奖情况
+\begin{publication}
+ \noindent\textbf{(一)发表的学术论文}
+ \begin{publist}
+ \item XXX,XXX. Static Oxidation Model of Al-Mg/C Dissipation Thermal Protection Materials[J]. Rare Metal Materials and Engineering, 2010, 39(Suppl. 1): 520-524.(SCI~收录,IDS号为~669JS,IF=0.16)
+ \item XXX,XXX. 精密超声振动切削单晶铜的计算机仿真研究[J]. 系统仿真学报,2007,19(4):738-741,753.(EI~收录号:20071310514841)
+ \item XXX,XXX. 局部多孔质气体静压轴向轴承静态特性的数值求解[J]. 摩擦学学报,2007(1):68-72.(EI~收录号:20071510544816)
+ \item XXX,XXX. 硬脆光学晶体材料超精密切削理论研究综述[J]. 机械工程学报,2003,39(8):15-22.(EI~收录号:2004088028875)
+ \item XXX,XXX. 基于遗传算法的超精密切削加工表面粗糙度预测模型的参数辨识以及切削参数优化[J]. 机械工程学报,2005,41(11):158-162.(EI~收录号:2006039650087)
+ \item XXX,XXX. Discrete Sliding Mode Cintrok with Fuzzy Adaptive Reaching Law on 6-PEES Parallel Robot[C]. Intelligent System Design and Applications, Jinan, 2006: 649-652.(EI~收录号:20073210746529)
+ \end{publist}
+
+ \noindent\textbf{(二)申请及已获得的专利(无专利时此项不必列出)}
+ \begin{publist}
+ \item XXX,XXX. 一种温热外敷药制备方案:中国,88105607.3[P]. 1989-07-26.
+ \end{publist}
+
+ \noindent\textbf{(三)参与的科研项目及获奖情况}
+ \begin{publist}
+ \item XXX,XXX. XX~气体静压轴承技术研究, XX~省自然科学基金项目.课题编号:XXXX.
+ \item XXX,XXX. XX~静载下预应力混凝土房屋结构设计统一理论. 黑江省科学技术二等奖, 2007.
+ \end{publist}
+ %\vfill
+ %\hangafter=1\hangindent=2em\noindent
+ %\setlength{\parindent}{2em}
+\end{publication}
diff --git a/macros/latex/contrib/hitszthesis/back/resume.tex b/macros/latex/contrib/hitszthesis/back/resume.tex
new file mode 100644
index 0000000000..75fb26677b
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/back/resume.tex
@@ -0,0 +1,20 @@
+% !TEX root = ../main.tex
+
+% 个人简历
+\begin{resume}
+
+ XXXX~年~XX~月~XX~日出生于~XXXX。
+
+ XXXX~年~XX~月考入~XX~大学~XX~院(系)XX~专业,XXXX~年~XX~月本科毕业并获得~XX~学学士学位。
+
+ XXXX~年~XX~月------XXXX~年~XX~月在~XX~大学~XX~院(系)XX~学科学习并获得~XX~学硕士学位。
+
+ XXXX~年~XX~月------XXXX~年~XX~月在~XX~大学~XX~院(系)XX~学科学习并获得~XX~学博士学位。
+
+ 获奖情况:如获三好学生、优秀团干部、X~奖学金等(不含科研学术获奖)。
+
+ 工作经历:
+
+ \textbf{(除全日制硕士生以外,其余学生均应增列此项。个人简历一般应包含教育经历和工作经历。)}
+
+\end{resume}
diff --git a/macros/latex/contrib/hitszthesis/body/chapter01.tex b/macros/latex/contrib/hitszthesis/body/chapter01.tex
new file mode 100644
index 0000000000..b0c4c6202c
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/body/chapter01.tex
@@ -0,0 +1,30 @@
+% !TEX root = ../main.tex
+
+% 第1章,中英标题:\chapter{中文标题}[英文标题]
+\chapter{绪论}[Introduction]
+
+% 正文内容,注意LaTeX分段有两种方法,直接空一行或者使用<\par>
+% 默认首行缩进,不需要在代码编辑区手动敲空格
+随着社会发展,人口老龄化,劳动力短缺等问题逐渐凸显,对服务机器人的需求也越来越大,但是服务机器人所工作的非结构化环境也带来了许多技术难题,其中十分主要的一个问题就是非结构环境中机器人的自动抓取,因为抓取是机器人与现实世界交互的主要方式之一。不同于工业机器人在结构化环境中对工件的抓取,服务机器人在非结构化环境下的自动抓取面临着诸多挑战,例如动态化环境、光照变化、物体间存在相互遮挡,以及最主要的,非结构化环境中除了已知的物体,还有大量未知物体。对于非结构化环境中工作的服务机器人,预先获取所有需要进行抓取的物体的模型是不现实的,因此机器人必须能够对未知的物体在线进行快速稳定可靠的抓取规划。
+
+为了解决上述问题,常用的一种做法就是使用机器学习方法来学习从传感器数据提取出的特征表达到抓取位姿的映射关系,相比于建立物体的模型库来保存抓取经验,机器学习方法可以在没见过的物体上进行抓取经验的迁移。在这个领域中,一些传统的方法通常借助于人工设计的特征来表示和存储抓取经验,并训练分类器,但人工设计的特征往往只针对于某一种特定物体或任务有效,且人工设计特征的工作量大难度高,很难在其他场景进行使用。
+
+近年来,以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习技术,在计算机视觉和机械设备健康监测等诸多领域取得了重大的突破,在一些领域中达到了超过人类的性能。卷积神经网络可以通过大量数据的训练挖掘出适合于当前任务的特征表达,由于通常卷积神经网络需要堆叠很多层来提高特征表达能力,因此参数较多,需要使用比传统机器学习算法更多的标注数据来进行训练,抑制过拟合提高算法的泛化能力。
+
+在机器人抓取规划领域,使用卷积神经网络学习的特征取代人工设计的特征来对抓取进行表示和分类有很大的优势和应用前景。首先,相比于人工设计的特征,卷积神经网络通过大量数据的学习可以挖掘出泛化能力更强效果更好的特征,可以进一步提高抓取规划算法的性能,且省去了复杂的人工特征设计工作。其次,随着硬件计算力和仿真软件性能的提升,视觉传感器的普及,目前已有许多通过实验或者仿真收集的机器人抓取数据集可供使用。
+
+综上,有了足够的数据以及合理设计的卷积神经网络结构就可以建立更高性能的自动抓取规划算法,进而提高服务机器人在非结构化环境的交互能力,提高其自主化和智能化程度,提高服务机器人的实用性和推进产业落地。因此,基于卷积神经网络的机器人自动抓取规划具有重要的研究价值,可以带来巨大的经济效益。
+
+随着社会发展,人口老龄化,劳动力短缺等问题逐渐凸显,对服务机器人的需求也越来越大,但是服务机器人所工作的非结构化环境也带来了许多技术难题,其中十分主要的一个问题就是非结构环境中机器人的自动抓取,因为抓取是机器人与现实世界交互的主要方式之一。不同于工业机器人在结构化环境中对工件的抓取,服务机器人在非结构化环境下的自动抓取面临着诸多挑战,例如动态化环境、光照变化、物体间存在相互遮挡,以及最主要的,非结构化环境中除了已知的物体,还有大量未知物体。对于非结构化环境中工作的服务机器人,预先获取所有需要进行抓取的物体的模型是不现实的,因此机器人必须能够对未知的物体在线进行快速稳定可靠的抓取规划。
+
+为了解决上述问题,常用的一种做法就是使用机器学习方法来学习从传感器数据提取出的特征表达到抓取位姿的映射关系,相比于建立物体的模型库来保存抓取经验,机器学习方法可以在没见过的物体上进行抓取经验的迁移。在这个领域中,一些传统的方法通常借助于人工设计的特征来表示和存储抓取经验,并训练分类器,但人工设计的特征往往只针对于某一种特定物体或任务有效,且人工设计特征的工作量大难度高,很难在其他场景进行使用。
+
+近年来,以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习技术,在计算机视觉和机械设备健康监测等诸多领域取得了重大的突破,在一些领域中达到了超过人类的性能。卷积神经网络可以通过大量数据的训练挖掘出适合于当前任务的特征表达,由于通常卷积神经网络需要堆叠很多层来提高特征表达能力,因此参数较多,需要使用比传统机器学习算法更多的标注数据来进行训练,抑制过拟合提高算法的泛化能力。
+
+在机器人抓取规划领域,使用卷积神经网络学习的特征取代人工设计的特征来对抓取进行表示和分类有很大的优势和应用前景。
+
+首先,相比于人工设计的特征,卷积神经网络通过大量数据的学习可以挖掘出泛化能力更强效果更好的特征,可以进一步提高抓取规划算法的性能,且省去了复杂的人工特征设计工作。
+
+其次,随着硬件计算力和仿真软件性能的提升,视觉传感器的普及,目前已有许多通过实验或者仿真收集的机器人抓取数据集可供使用。
+
+综上,有了足够的数据以及合理设计的卷积神经网络结构就可以建立更高性能的自动抓取规划算法,进而提高服务机器人在非结构化环境的交互能力,提高其自主化和智能化程度,提高服务机器人的实用性和推进产业落地。因此,基于卷积神经网络的机器人自动抓取规划具有重要的研究价值,可以带来巨大的经济效益。
diff --git a/macros/latex/contrib/hitszthesis/body/chapter02.tex b/macros/latex/contrib/hitszthesis/body/chapter02.tex
new file mode 100644
index 0000000000..4b75e44fa6
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/body/chapter02.tex
@@ -0,0 +1,593 @@
+% !TEX root = ../main.tex
+
+% 第2章,中英标题:\chapter{中文标题}[英文标题]
+\chapter{示例文档}[Example]
+
+这是 \hitszthesis\ 的示例文档,基本上覆盖了模板中所有格式的设置。建议大家在使用模
+板之前,除了阅读《\hitszthesis\:哈尔滨工业大学学位论文模板》\footnote{即
+hitszthesis.pdf文件},本示例文档也最好能看一看。此示例文档尽量使用到所有的排版格式
+,然而对于一些不在我工规范中规定的文档,理论上是由用户自由发挥,这里不给出样例
+。需要另行载入的宏包和自定义命令在文件`hitszthesis.sty'中有示例,这里不列举。
+
+\section{关于数字}[Number]
+
+按《关于出版物上数字用法的试行规定》(1987年1月1日国家语言文字工作委员会等7个单位公布),除习惯用中文数字表示的以外,一般数字均用阿拉伯数字。
+(1)公历的世纪、年代、年、月、日和时刻一律用阿拉伯数字,如20世纪,80年代,4时3刻等。年号要用四位数,如1989年,不能用89年。
+(2)记数与计算(含正负整数、分数、小数、百分比、约数等)一律用阿拉伯数字,如3/4,4.5\%,10个月,500多种等。
+(3)一个数值的书写形式要照顾到上下文。不是出现在一组表示科学计量和具有统计意义数字中的一位数可以用汉字,如一个人,六条意见。星期几一律用汉字,如星期六。邻近两个数字并列连用,表示概数,应该用汉字数字,数字间不用顿号隔开,如三五天,七八十种,四十五六岁,一千七八百元等。
+(4)数字作为词素构成定型的词、词组、惯用语、缩略语等应当使用汉字。如二倍体,三叶虫,第三世界,“七五”规划,相差十万八千里等。
+(5)5位以上的数字,尾数零多的,可改写为以万、亿为单位的数。一般情况下不得以十、百、千、十万、百万、千万、十亿、百亿、千亿作为单位。如~\num{345000000}~公里可改写为3.45亿公里或~\num{34500}~万公里,但不能写为3亿~\num{4500}~万公里或3亿4千5百万公里。
+(6)数字的书写不必每格一个数码,一般每两数码占一格,数字间分节不用分位号“,”,凡4位或4位以上的数都从个位起每3位数空半个数码(1/4汉字)。“\num{3000000}”,不要写成“3,000,000”,小数点后的数从小数点起向右按每三位一组分节。一个用阿拉伯数字书写的多位数不能从数字中间转行。
+(7)数量的增加或减少要注意下列用词的概念:1)增加为(或增加到)过去的二倍,即过去为一,现在为二;2)增加(或增加了)二倍,即过去为一,现在为三;3)超额80\%,即定额为100,现在为180;4)降低到80\%,即过去为100,现在为80;5)降低(或降低了)80\%,即原来为100,现在为20;6)为原数的1/4,即原数为4,现在为1,或原数为1,现在为0.25。
+应特别注意在表达数字减小时,不宜用倍数,而应采用分数。如减少为原来的1/2,1/3等。
+
+
+\section{索引示例}[Index]
+
+为便于检索文中内容,可编制索引置于论文之后(根据需要决定是否设置)。索引以论文中
+的专业词语为检索线索,指出其相关内容的所在页码。索引用中、英两种文字书写,中文在
+前。\sindex[china]{qi!乔峰}\sindex[english]{Xu Zhu}\sindex[english]{Qiao Feng}
+中文按各词汉语拼音第一个字母排序,英文按该词第一个英文字母排序。
+
+\section{术语排版举例}[Glossaries and index]
+
+术语的定义和使用可以结合索引,灵活使用。
+例如,\gtssbp 是一种应用于狄利克雷过程抽样的算法。
+下次出现将是另一种格式:\gtssbp 。
+还可以切换单复数例如:\gscnas ,下次出现为:\gscnas 。
+此处体现了\LaTeX\ 格式内容分离的优势。
+
+\section{引用}[Cite]
+
+\sindex[china]{du!段誉}引文标注遵照GB/T7714-2005,采用顺序编码制。正文中引用文献的标示应置于所引内容最后一个字的右上角,所引文献编号用阿拉伯数字置于方括号“[ ]”中,用小4号字体的上角标。要求:
+
+(1)引用单篇文献时,如“二次铣削\cite{cnproceed}”。
+
+(2)同一处引用多篇文献时,各篇文献的序号在方括号内全部列出,各序号间用“,”,如
+遇连续序号,可标注讫序号。如,…形成了多种数学模型\cite{cnarticle,cnproceed}…
+注意此处添加\cs{inlinecite}中文空格\inlinecite{cnarticle,cnproceed},可以在cfg文件中修改空格类型。
+
+(3)多次引用同一文献时,在文献序号的“[ ]”后标注引文页码。如,…间质细胞CAMP含量
+测定\cite[100-197]{cnarticle}…。…含量测定方法规定
+\cite[92]{cnarticle}…。
+
+(4)当提及的参考文献为文中直接说明时,则用小4号字与正文排齐,如“由文献\inlinecite{hitszthesis2020}可知”
+
+\section{定理和定义等}[Theorem]
+\begin{theorem}[\cite{cnproceed}]
+宇宙大爆炸是一种爆炸。
+\end{theorem}
+\begin{definition}[(霍金)]
+宇宙大爆炸是一种爆炸。
+\end{definition}
+\begin{assumption}
+宇宙大爆炸是一种爆炸。
+\end{assumption}
+\begin{lemma}
+宇宙大爆炸是一种爆炸。
+\end{lemma}
+\begin{corollary}
+宇宙大爆炸是一种爆炸。
+\end{corollary}
+\begin{exercise}
+宇宙大爆炸是一种爆炸。
+\end{exercise}
+\begin{problem}[(Albert Einstein)]
+宇宙大爆炸是一种爆炸。
+\end{problem}
+\begin{remark}
+宇宙大爆炸是一种爆炸。
+\end{remark}
+\begin{axiom}[(爱因斯坦)]
+宇宙大爆炸是一种爆炸。
+\end{axiom}
+\begin{conjecture}
+宇宙大爆炸是一种爆炸。
+\end{conjecture}
+\section{图片}[Pictures]
+图应有自明性。插图应与文字紧密配合,文图相符,内容正确。选图要力求精练,插图、照
+片应完整清晰。机械工程图:采用第一角投影法,严格按照GB4457~GB131-83《机械制图》
+标准规定。数据流程图、程序流程图、系统流程图等按GB1526-89标准规定。电气图:图形
+符号、文字符号等应符合附录3所列有关标准的规定。流程图:必须采用结构化程序并正确
+运用流程框图。对无规定符号的图形应采用该行业的常用画法。坐标图的坐标线均用细实线
+,粗细不得超过图中曲线;有数字标注的坐标图,必须注明坐标单位。照片图要求主题和主
+要显示部分的轮廓鲜明,便于制版。如用放大或缩小的复制品,必须清晰,反差适中。照片
+上应有表示目的物尺寸的标度。引用文献中的图时,除在正文文字中标注参考文献序号以外
+,还必须在中、英文表题的右上角标注参考文献序号。
+
+\subsection{博士毕业论文双语题注}[Doctoral picture example]
+\begin{figure}[htpb]
+\centering
+\includegraphics[width = 0.4\textwidth]{golfer}
+\bicaption[golfer1]{}{打高尔夫球球的人(博士论文双语题注)}{Fig.$\!$}{The person playing golf (Doctoral thesis)}
+\end{figure}
+
+每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个半
+角字符排写。图序按章编排,如第1章第一个插图的图号为“图1-1”。图题置于图下,硕士论
+文只用中文,博士论文用中、英两种文字,居中书写,中文在上,要求中文用宋体5号字,
+英文用Times New Roman 5号字。有图注或其它说明时应置于图题之上。引用图应注明出处
+,在图题右上角加引用文献号。图中若有分图时,分图题置于分图之下或图题之下,可以只
+用中文书写,分图号用a)、b)等表示。图中各部分说明应采用中文(引用的外文图除外)或
+数字符号,各项文字说明置于图题之上(有分图时,置于分图题之上)。图中文字用宋体、
+Times New Roman字体,字号尽量采用5号字(当字数较多时可用小5号字,以清晰表达为原
+则,但在一个插图内字号要统一)。同一图内使用文字应统一。图表中物理量、符号用斜体
+。
+\subsection{本硕论文题注}[Other picture example]
+
+本硕论文题注如\figref{fig:bm}所示。
+\begin{figure}[ht]
+\centering
+\includegraphics[width = 0.4\textwidth]{golfer}
+\caption{打高尔夫球的人,硕士论文要求只用汉语}
+\label{fig:bm}
+\end{figure}
+
+\subsection{并排图和子图}[Abreast-picture and Sub-picture example]
+\subsubsection{并排图}[Abreast-picture example]
+
+使用并排图时,需要注意对齐方式。默认情况是中部对齐。这里给出中部对齐、顶部对齐
+、图片底部对齐三种常见方式。其中,底部对齐方式有一个很巧妙的方式,将长度比较小
+的图放在左面即可。
+
+\begin{figure}[htbp]
+\centering
+\begin{minipage}{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer2]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+\end{minipage}
+\centering
+\begin{minipage}{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer3]{}{打高尔夫球的人。注意,这里默认居中}{Fig.$\!$}{The person playing golf. Please note that, it is vertically center aligned by default.}
+\end{minipage}
+\end{figure}
+
+\begin{figure}[htbp]
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer5]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+\end{minipage}
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer8]{}{打高尔夫球的人。注意,此图是顶部对齐}{Fig.$\!$}{The person playing golf. Please note that, it is vertically top aligned.}
+\end{minipage}
+\end{figure}
+
+\begin{figure}[htbp]
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth,height=\textwidth]{golfer}
+\bicaption[golfer9]{}{打高尔夫球的人。注意,此图对齐方式是图片底部对齐}{Fig.$\!$}{The person playing golf. Please note that, it is vertically bottom aligned for figure.}
+\end{minipage}
+\centering
+\begin{minipage}[t]{0.4\textwidth}
+\centering
+\includegraphics[width=\textwidth]{golfer}
+\bicaption[golfer6]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+\end{minipage}
+\end{figure}
+
+\subsubsection{子图}[Sub-picture example]
+注意:子图题注也可以只用中文。规范规定“分图题置于分图之下或图题之下”,但没有给出具体的格式要求。
+没有要求的另外一个说法就是“无论什么格式都不对”。
+所以只有在一个图中有标注“a),b)”,无法使用\cs{subfigure}的情况下,使用最后一个图例中的格式设置方法,否则不要使用。
+为了应对“无论什么格式都不对”,这个子图图题使用“minipage”和“description”环境,宽度,对齐方式可以按照个人喜好自由设置,是否使用双语子图图题也可以自由设置。
+
+\begin{figure}[!ht]
+\setlength{\subfigcapskip}{-1bp}
+\centering
+\begin{minipage}{\textwidth}
+\centering
+\subfigure{\label{golfer41}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf]{\subfigure[打高尔夫球的人~1]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\hspace{2em}
+\subfigure{\label{golfer42}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf]{\subfigure[打高尔夫球的人~2]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\end{minipage}
+\centering
+\begin{minipage}{\textwidth}
+\centering
+\subfigure{\label{golfer43}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf]{\subfigure[打高尔夫球的人~3]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\hspace{2em}
+\subfigure{\label{golfer44}}\addtocounter{subfigure}{-2}
+\subfigure[The person playing golf. Here, 'hang indent' and 'center last line' are not stipulated in the regulation.]{\subfigure[打高尔夫球的人~4。注意,规范中没有明确规定要悬挂缩进、最后一行居中。]{\includegraphics[width=0.4\textwidth]{golfer}}}
+\end{minipage}
+\vspace{0.2em}
+\bicaption[golfer4]{}{打高尔夫球的人}{Fig.$\!$}{The person playing gol}
+\end{figure}
+
+\begin{figure}[t]
+ \centering
+ \begin{minipage}{.7\linewidth}
+ \setlength{\subfigcapskip}{-1bp}
+ \centering
+ \begin{minipage}{\textwidth}
+ \centering
+ \subfigure{\label{golfer45}}\addtocounter{subfigure}{-2}
+ \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~1]{\includegraphics[width=0.4\textwidth]{golfer}}}
+ \hspace{4em}
+ \subfigure{\label{golfer46}}\addtocounter{subfigure}{-2}
+ \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~2]{\includegraphics[width=0.4\textwidth]{golfer}}}
+ \end{minipage}
+ \vskip 0.2em
+ \wuhao 注意:这里是中文图注添加位置(我工要求,图注在图题之上)。
+ \vspace{0.2em}
+\bicaption[golfer47]{}{打高尔夫球的人。注意,此处我工有另外一处要求,子图图题可以位于主图题之下。但由于没有明确说明位于下方具体是什么格式,所以这里不给出举例。}{Fig.$\!$}{The person playing golf. Please note that, although it is appropriate to put subfigures' captions under this caption as stipulated in regulation, but its format is not clearly stated.}
+ \end{minipage}
+\end{figure}
+
+\begin{figure}[t]
+\centering
+\begin{tikzpicture}
+ \node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.3\textwidth]{golfer}};
+ \begin{scope}[x={(image.south east)},y={(image.north west)}]
+ \node at (0.3,0.5) {a)};
+ \node at (0.8,0.2) {b)};
+ \end{scope}
+\end{tikzpicture}
+\bicaption[golfer0]{}{打高尔夫球球的人(博士论文双语题注)}{Fig.$\!$}{The person playing golf (Doctoral thesis)}
+\vskip -0.4em
+ \hspace{2em}
+\begin{minipage}[t]{0.3\textwidth}
+\wuhao \setlist[description]{font=\normalfont}
+ \begin{description}
+ \item[a)]子图图题
+ \end{description}
+ \end{minipage}
+ \hspace{2em}
+ \begin{minipage}[t]{0.3\textwidth}
+\wuhao \setlist[description]{font=\normalfont}
+ \begin{description}
+ \item[b)]子图图题
+ \item[b)]Subfigure caption
+ \end{description}
+\end{minipage}
+\end{figure}
+
+
+\begin{figure}[!ht]
+ \centering
+ \begin{sideways}
+ \begin{minipage}{\textheight}
+ \centering
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+ \fbox{\includegraphics[width=0.2\textwidth]{golfer}}
+\bicaption[golfer7]{}{打高尔夫球的人(非规范要求)}{Fig.$\!$}{The person playing golf (Not stated in the regulation)}
+ \end{minipage}
+ \end{sideways}
+\end{figure}
+
+\clearpage
+
+如果不想让图片浮动到下一章节,那么在此处使用\cs{clearpage}命令。
+
+\section{如何做出符合规范的漂亮的图}
+关于作图工具在后文\ref{drawtool}中给出一些作图工具的介绍,此处不多言。
+此处以R语言和Tikz为例说明如何做出符合规范的图。
+
+\subsection{Tikz作图举例}
+使用Tikz作图核心思想是把格式、主题、样式与内容分离,定义在全局中。
+注意字体设置可以有两种选择,如何字少,用五号字,字多用小五。
+使用Tikz作图不会出现字体问题,字体会自动与正文一致。
+
+\begin{figure}[thb!]
+ \centering
+ \begin{tikzpicture}[xscale=0.8,yscale=0.3,rotate=90]
+ \small
+ \draw (-22,6.5) node[refcell]{参考基因组};
+ \draw[refline] (-23, 5) -- (27, 5);
+ \draw (-22,3.75) node[tscell]{肿瘤样本};
+ \draw (-20,3.75) node[tncell]{正常细胞};
+ \draw[tnline] (-21, 2.5) -- (27, 2.5);
+ \draw (-20,1.25) node[ttcell]{肿瘤细胞};
+ \rcell{2}{6};
+ \draw[fakeevolve] (4.5, 5.25) -- (4.5, 4.8);
+ \ncell{2}{4};
+ \draw[evolve] (4.5, 3) .. controls (4.5,2.8) and (-3.5,2.9) .. (-3.5, 2);
+ \draw[evolve] (4.5, 3) .. controls (4.5,2.8) and (11.5,2.9) .. (11.5, 2);
+ \tcellone{-6}{1.5};
+ \draw (-9, 2) node[ttcell]{1};
+ \draw[evolve] (-3.5, 0) .. controls (-3.5,-0.2) and (-12,-0.1) .. (-12, -1.5);
+ \draw[evolve] (-3.5, 0) .. controls (-3.5,-0.2) and (1.5,-0.1) .. (1.5, -1.5);
+ \tcellthree{7}{1.5};
+ \draw (4, 2) node[ttcell]{2};
+ \draw[evolve] (11, 0.5) .. controls (11,0.3) and (19,0.4) .. (19, -1.5);
+ \tcellfive{-16}{-2};
+ \draw (-19, -1.5) node[ttcell]{3};
+ \tcelltwo{-1}{-2};
+ \draw (-4, -1.5) node[ttcell]{4};
+ \tcellfour{12}{-2};
+ \draw (9, -1.5) node[ttcell]{5};
+ \end{tikzpicture}
+ \begin{minipage}{.9\linewidth}
+ \vskip 0.2em
+ \wuhao 图中,带有箭头的淡蓝色箭头表示肿瘤子种群的进化方向。一般地,从肿瘤组织中取用于进行二代测序的样本中含有一定程度的正常细胞污染,因此肿瘤的样本中含有正常细胞和肿瘤细胞。每一个子种群的基因组的模拟过程是把生殖细胞变异和体细胞变异加入到参考基因组中。
+ \vspace{0.6em}
+ \end{minipage}
+\bicaption[tumor]{}{肿瘤组织中各个子种群的进化示意图}{Fig.$\!$}{The diagram of tumor subpopulation evolution process}
+\end{figure}
+
+\subsection{R作图}
+R是一种极具有代表性的典型的作图工具,应用广泛。
+与Tikz图~\ref{tumor}~不同,R作图分两种情况:(1)可以转换为Tikz码;(2)不可转换为Tikz码。
+第一种情况图形简单,图形中不含有很多数据点,使用R语言中的Tikz包即可。
+第二种情况是图形复杂,含有海量数据点,这时候不要转成Tikz矢量图,这会使得论文体积巨大。
+推荐使用pdf或png非矢量图形。
+使用非矢量图形时要注意选择好字号(五号或小五),和字体(宋体、新罗马)然后选择生成图形大小,注意此时在正文中使用\cs{includegraphics}命令导入时,不要像导入矢量图那样控制图形大小,使用图形的原本的
+宽度和高度,这样就确保了非矢量图形中的文字与正文一致了。
+
+为了控制\hitszthesis\ 的大小,此处不给出具体举例,
+
+\section{表格}
+
+表应有自明性。表格不加左、右边线。表的编排建议采用国际通行的三线表。表中文字用宋
+体~5~号字。每个表格均应有表题(由表序和表名组成)。表序一般按章编排,如第~1~章第
+一个插表的序号为“表~1-1”等。表序与表名之间空一格,表名中不允许使用标点符号,表名
+后不加标点。表题置于表上,硕士学位论文只用中文,博士学位论文用中、英文两种文字居
+中排写,中文在上,要求中文用宋体~5~号字,英文用新罗马字体~5~号字。表头设计应简单
+明了,尽量不用斜线。表头中可采用化学符号或物理量符号。
+
+
+\subsection{普通表格的绘制方法}[Methods of drawing normal tables]
+
+表格应具有三线表格式,因此需要调用~booktabs~宏包,其标准格式如表~\ref{table1}~所示。
+\begin{table}[htbp]
+\bicaption[table1]{}{符合研究生院绘图规范的表格}{Table$\!$}{Table in agreement of the standard from graduate school}
+\vspace{0.5em}\centering\wuhao
+\begin{tabular}{ccccc}
+\toprule[1.5pt]
+$D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\
+\midrule[1pt]
+ 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\
+10 & 421.0 & 0.001035 & 3.59 & 0.04089\\
+20 & 640.2 & 0.001565 & 7.18 & 0.04089\\
+\bottomrule[1.5pt]
+\end{tabular}
+\end{table}
+全表如用同一单位,则将单位符号移至表头右上角,加圆括号。表中数据应准确无误,书写
+清楚。数字空缺的格内加横线“-”(占~2~个数字宽度)。表内文字或数字上、下或左、右
+相同时,采用通栏处理方式,不允许用“〃”、“同上”之类的写法。表内文字说明,起行空一
+格、转行顶格、句末不加标点。如某个表需要转页接排,在随后的各页上应重复表的编号。
+编号后加“(续表)”,表题可省略。续表应重复表头。
+
+\subsection{长表格的绘制方法}[Methods of drawing long tables]
+
+长表格是当表格在当前页排不下而需要转页接排的情况下所采用的一种表格环境。若长表格
+仍按照普通表格的绘制方法来获得,其所使用的\verb|table|浮动环境无法实现表格的换页
+接排功能,表格下方过长部分会排在表格第1页的页脚以下。为了能够实现长表格的转页接
+排功能,需要调用~longtable~宏包,由于长表格是跨页的文本内容,因此只需要单独的
+\verb|longtable|环境,所绘制的长表格的格式如表~\ref{table2}~所示。
+
+注意,长表格双语标题的格式。
+
+\vspace{-1.5bp}
+\ltfontsize{\wuhao[1.667]}
+\wuhao[1.667]\begin{longtable}{ccc}%
+\longbionenumcaption{}{{\wuhao 中国省级行政单位一览
+}\label{table2}}{Table$\!$}{}{{\wuhao Overview of the provincial administrative
+unit of China}}{-0.5em}{3.15bp}\\
+%\caption{\wuhao 中国省级行政单位一览}\\
+\toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+\endfirsthead
+\multicolumn{3}{r}{表~\thetable(续表)}\vspace{0.5em}\\
+\toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+\endhead
+\bottomrule[1.5pt]
+\endfoot
+北京市 & 京 & 北京\\
+天津市 & 津 & 天津\\
+河北省 & 冀 & 石家庄市\\
+山西省 & 晋 & 太原市\\
+内蒙古自治区 & 蒙 & 呼和浩特市\\
+辽宁省 & 辽 & 沈阳市\\
+吉林省 & 吉 & 长春市\\
+黑龙江省 & 黑 & 哈尔滨市\\
+上海市 & 沪/申 & 上海\\
+江苏省 & 苏 & 南京市\\
+浙江省 & 浙 & 杭州市\\
+安徽省 & 皖 & 合肥市\\
+福建省 & 闽 & 福州市\\
+江西省 & 赣 & 南昌市\\
+山东省 & 鲁 & 济南市\\
+河南省 & 豫 & 郑州市\\
+湖北省 & 鄂 & 武汉市\\
+湖南省 & 湘 & 长沙市\\
+广东省 & 粤 & 广州市\\
+广西壮族自治区 & 桂 & 南宁市\\
+海南省 & 琼 & 海口市\\
+重庆市 & 渝 & 重庆\\
+四川省 & 川/蜀 & 成都市\\
+贵州省 & 黔/贵 & 贵阳市\\
+云南省 & 云/滇 & 昆明市\\
+西藏自治区 & 藏 & 拉萨市\\
+陕西省 & 陕/秦 & 西安市\\
+甘肃省 & 甘/陇 & 兰州市\\
+青海省 & 青 & 西宁市\\
+宁夏回族自治区 & 宁 & 银川市\\
+新疆维吾尔自治区 & 新 & 乌鲁木齐市\\
+香港特别行政区 & 港 & 香港\\
+澳门特别行政区 & 澳 & 澳门\\
+台湾省 & 台 & 台北市\\
+\end{longtable}\normalsize
+\vspace{-1em}
+
+此长表格~\ref{table2}~第~2~页的标题“编号(续表)”和表头是通过代码自动添加上去的,无需人工添加,若表格在页面中的竖直位置发生了变化,长表格在第~2~页
+及之后各页的标题和表头位置能够始终处于各页的最顶部,也无需人工调整,\LaTeX~系统的这一优点是~word~等软件所无法比拟的。
+
+\subsection{列宽可调表格的绘制方法}[Methods of drawing tables with adjustable-width columns]
+论文中能用到列宽可调表格的情况共有两种,一种是当插入的表格某一单元格内容过长以至
+于一行放不下的情况,另一种是当对公式中首次出现的物理量符号进行注释的情况,这两种
+情况都需要调用~tabularx~宏包。下面将分别对这两种情况下可调表格的绘制方法进行阐述
+。
+\subsubsection{表格内某单元格内容过长的情况}[The condition when the contents in
+some cells of tables are too long]
+首先给出这种情况下的一个例子如表~\ref{table3}~所示。
+\begin{table}[htbp]
+ \centering
+\bicaption[table3]{}{最小的三个正整数的英文表示法}{Table$\!$}{The English construction of the smallest three positive integral numbers}\vspace{0.5em}\wuhao
+\begin{tabularx}{0.7\textwidth}{llX}
+\toprule[1.5pt]
+Value & Name & Alternate names, and names for sets of the given size\\\midrule[1pt]
+1 & One & ace, single, singleton, unary, unit, unity\\
+2 & Two & binary, brace, couple, couplet, distich, deuce, double, doubleton, duad, duality, duet, duo, dyad, pair, snake eyes, span, twain, twosome, yoke\\
+3 & Three & deuce-ace, leash, set, tercet, ternary, ternion, terzetto, threesome, tierce, trey, triad, trine, trinity, trio, triplet, troika, hat-trick\\\bottomrule[1.5pt]
+\end{tabularx}
+\end{table}
+tabularx环境共有两个必选参数:第1个参数用来确定表格的总宽度,第2个参数用来确定每
+列格式,其中标为X的项表示该列的宽度可调,其宽度值由表格总宽度确定。标为X的列一般
+选为单元格内容过长而无法置于一行的列,这样使得该列内容能够根据表格总宽度自动分行
+。若列格式中存在不止一个X项,则这些标为X的列的列宽相同,因此,一般不将内容较短的
+列设为X。标为X的列均为左对齐,因此其余列一般选为l(左对齐),这样可使得表格美观
+,但也可以选为c或r。
+
+\subsubsection{对物理量符号进行注释的情况}[The condition when physical symbols
+need to be annotated]
+
+为使得对公式中物理量符号注释的转行与破折号“———”后第一个字对齐,此处最好采用表格
+环境。此表格无任何线条,左对齐,且在破折号处对齐,一共有“式中”二字、物理量符号和
+注释三列,表格的总宽度可选为文本宽度,因此应该采用\verb|tabularx|环境。由
+\verb|tabularx|环境生成的对公式中物理量符号进行注释的公式如式(\ref{eq:1})所示。
+\begin{equation}\label{eq:1}
+\ddot{\bm{\rho}}-\frac{\mu}{R_{t}^{3}}\left(3\bm{R_{t}}\frac{\bm{R_{t}\rho}}{R_{t}^{2}}-\bm{\rho}\right)=\bm{a}
+\end{equation}
+\begin{tabularx}{\textwidth}{@{}l@{\quad}r@{———}X@{}}
+式中& $\bm{\rho}$ &追踪飞行器与目标飞行器之间的相对位置矢量;\\
+& $\bm{\ddot{\rho}}$&追踪飞行器与目标飞行器之间的相对加速度;\\
+& $\bm{a}$ &推力所产生的加速度;\\
+& $\bm{R_t}$ & 目标飞行器在惯性坐标系中的位置矢量;\\
+& $\omega_{t}$ & 目标飞行器的轨道角速度;\\
+\end{tabularx}\vspace{3.15bp}
+由此方法生成的注释内容应紧邻待注释公式并置于其下方,因此不能将代码放入
+\verb|table|浮动环境中。但此方法不能实现自动转页接排,可能会在当前页剩余空间不够
+时,全部移动到下一页而导致当前页出现很大空白。因此在需要转页处理时,还请您手动将
+需要转页的代码放入一个新的\verb|tabularx|环境中,将原来的一个\verb|tabularx|环境
+拆分为两个\verb|tabularx|环境。
+
+\subsubsection{排版横版表格的举例}[An example of landscape table]
+
+横版表格如\tabref{table4}所示。
+
+\begin{table}[p]
+\centering
+ \begin{sideways}
+ \begin{minipage}{\textheight}
+ \bicaption[table4]{}{不在规范中规定的横版表格}{Table$\!$}{A table style which is not stated in the regulation}
+ \vspace{0.5em}\centering\wuhao
+ \begin{tabular}{ccccc}
+ \toprule[1.5pt]
+ $D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\
+ \midrule[1pt]
+ 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\
+ 10 & 421.0 & 0.001035 & 3.59 & 0.04089\\
+ 20 & 640.2 & 0.001565 & 7.18 & 0.04089\\
+ \bottomrule[1.5pt]
+ \end{tabular}
+ \end{minipage}
+ \end{sideways}
+\end{table}
+
+\section{公式}
+与正常\LaTeX\ 使用方法一致,此处略。关于公式中符号样式的定义在`hitszthesis.sty'有示
+例。子公式编号示例:
+如果需要对公式的子公式进行编号,则使用\lstinline{subeqnarray}环境:
+\begin{lstlisting}
+ \begin{subeqnarray}
+ \label{eqw}
+ \slabel{eq0}
+ x & = & a \times b \\
+ \slabel{eq1}
+ & = & z + t\\
+ \slabel{eq2}
+ & = & z + t
+ \end{subeqnarray}
+\end{lstlisting}
+上述代码输出如下:
+\begin{subeqnarray}
+ \label{eqw}
+ \slabel{eq0}
+ x & = & a \times b \\
+ \slabel{eq1}
+ & = & z + t\\
+ \slabel{eq2}
+ & = & z + t
+\end{subeqnarray}
+
+\equref{eqw}中,\lstinline{label}为整个公式的标签,\lstinline{slabel}为子公式的标签。
+
+\section{其他杂项}[Miscellaneous]
+
+\subsection{右翻页}[Open right]
+
+对于双面打印的论文,强制使每章的标题页出现右手边为右翻页。
+规范中没有明确规定是否是右翻页打印。
+模板给出了右翻页选项。
+为了应对用户的个人喜好,在希望设置成右翻页的位置之前添加\cs{cleardoublepage}命令即可。
+
+\subsection{算法}[Algorithms]
+我工算法有以下几大特点。
+
+(1)算法不在规范中要求。
+
+(2)算法常常被使用(至少计算机学院)。
+
+(3)格式乱,甚至出现了每个实验室的格式要求都不一样。
+
+此处不给出示例,因为没法给,在
+\href{https://github.com/dustincys/PlutoThesis}{https://github.com/dustincys/PlutoThesis}
+的readme文件中有不同实验室算法要求说明。
+
+\subsection{脚注}[Footnotes]
+不在再规范\footnote{规范是指\PGR\ 和\UGR}中要求,模板默认使用清华大学的格式。
+
+\subsection{源码}[Source code]
+也不在再规范中要求。如果有需要最好使用minted包,但在编译的时候需要添加“
+-shell-escape”选项且安装pygmentize软件,这些不在模板中默认载入,如果需要自行载入
+。
+\subsection{思源宋体}[Siyuan font]
+如果要使用思源字体,需要思源字体的定义文件,此文件请到模板的开发版网址github:
+\href{https://gihitb.com/YangLaTeX/hitszthesis}{https://gihitb.com/YangLaTeX/hitszthesis}
+处下载。
+
+\subsection{专业绘图工具}[Processional drawing tool]
+\label{drawtool}
+推荐使用tikz包,使用tikz源码绘图的好处是,图片中的字体与正文中的字体一致。具体如
+何使用tikz绘图不属于模板范畴。
+tikz适合用来画不需要大量实验数据支撑示意图。但R语言等专业绘图工具具有画出各种、
+专业、复杂的数据图。R语言中有tikz包,能自动生成tikz码,这样tikz几乎无所不能。
+对于排版有极致追求的小伙伴,可以参考
+\href{http://www.texample.net/tikz/resources/}{http://www.texample.net/tikz/resources/}
+中所列工具,几乎所有作图软件所作的图形都可转成tikz,然后可以自由的在tikz中修改
+图中内容,定义字体等等。实现前文窝工规范中要求的图中字体的一致性的终极目标。
+
+
+\subsection{术语词汇管理}[Manage glossaries]
+推荐使用glossaries包管理术语、缩略语,可以自动生成首次全写,非首次缩写。
+
+\subsection{\TeX\ 源码编辑器}[\TeX editor]
+推荐:(1)付费软件Winedt;(2)免费软件kile;(3)vim或emaces或sublime等神级编
+译器(需要配置)。
+
+\subsection{\LaTeX\ 排版重要原则}[\LaTeX\ typesetting rules]
+格式和内容分离是\LaTeX\ 最大优势,所有多次出现的内容、样式等等都可以定义为简单命
+令、环境。这样的好处是方便修改、管理。例如,如果想要把所有的表示向量的符号由粗体
+\cs{mathbf}变换到花体\cs{mathcal},只需修改该格式的命令的定义部分,不需要像MS
+word那样处处修改。总而言之,使用自定义命令和环境才是正确的使用\LaTeX\ 的方式。
+
+
+% Local Variables:
+% TeX-master: "../main"
+% TeX-engine: xetex
+% End:
diff --git a/macros/latex/contrib/hitszthesis/tex/chapter04.tex b/macros/latex/contrib/hitszthesis/body/chapter03.tex
index c27e0dd0fe..c27e0dd0fe 100644
--- a/macros/latex/contrib/hitszthesis/tex/chapter04.tex
+++ b/macros/latex/contrib/hitszthesis/body/chapter03.tex
diff --git a/macros/latex/contrib/hitszthesis/body/chapter04.tex b/macros/latex/contrib/hitszthesis/body/chapter04.tex
new file mode 100644
index 0000000000..c27e0dd0fe
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/body/chapter04.tex
@@ -0,0 +1,2 @@
+% !TEX root = ../main.tex
+
diff --git a/macros/latex/contrib/hitszthesis/tex/chapter05.tex b/macros/latex/contrib/hitszthesis/body/chapter05.tex
index 7dddb495fc..7dddb495fc 100644
--- a/macros/latex/contrib/hitszthesis/tex/chapter05.tex
+++ b/macros/latex/contrib/hitszthesis/body/chapter05.tex
diff --git a/macros/latex/contrib/hitszthesis/tex/chapter06.tex b/macros/latex/contrib/hitszthesis/body/chapter06.tex
index 7dddb495fc..7dddb495fc 100644
--- a/macros/latex/contrib/hitszthesis/tex/chapter06.tex
+++ b/macros/latex/contrib/hitszthesis/body/chapter06.tex
diff --git a/macros/latex/contrib/hitszthesis/compile.bat b/macros/latex/contrib/hitszthesis/compile.bat
index e9fcd5fb9e..3ef4d41463 100644
--- a/macros/latex/contrib/hitszthesis/compile.bat
+++ b/macros/latex/contrib/hitszthesis/compile.bat
@@ -3,7 +3,6 @@ chcp 65001 >nul
set THESIS=main
set PACKAGE=hitszthesis
-set SPINE=spine
set flag=%1
if %flag%x == x (
@@ -29,12 +28,9 @@ if %flag%x == clsx (
)
if %flag%x == allx (
- call :all
- goto :EOF
-)
-
-if %flag%x == spinex (
- call :all
+ echo Compile thesis and documentation...
+ call :doc
+ call :thesis
goto :EOF
)
@@ -64,15 +60,23 @@ if %flag%x == wordcountx (
echo compile.bat [option]
echo options:
echo thesis Compile the thesis (default)
+ echo doc Compile the documentation
+ echo all Compile the thesis and documentation
echo clean Clean all work files
- echo cleanall Clean all work files and main.pdf
+ echo cleanall Clean all work files and pdf files
echo wordcount Count words in main.pdf
echo help Print this help message
goto :EOF
:thesis
- echo Compile...
- latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode main >nul 2>nul
+ echo Compile thesis...
+ latex %PACKAGE%.ins
+ xelatex -shell-escape %THESIS%.tex
+ bibtex %THESIS%.tex
+ xelatex -shell-escape %THESIS%.tex
+ xelatex -shell-escape %THESIS%.tex
+ splitindex %THESIS% -- -s hitszthesis.ist
+ xelatex -shell-escape %THESIS%.tex
goto :EOF
:cls
@@ -80,32 +84,26 @@ goto :EOF
xetex %PACKAGE%.ins
goto :EOF
-:spine
- echo Compile spine.tex file...
- latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode spine >nul 2>nul
-goto :EOF
-
-:all
- echo Compile thesis and spine...
- latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode main >nul 2>nul
- latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode spine >nul 2>nul
-goto :EOF
-
:doc
echo Compile documentation...
- xetex %PACKAGE%.ins
- latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode %PACKAGE%.dtx >nul 2>nul
+ latex %PACKAGE%.ins
+ xelatex %PACKAGE%.dtx
+ makeindex -s gind.ist -o %PACKAGE%.ind %PACKAGE%.idx
+ makeindex -s gglo.ist -o %PACKAGE%.gls %PACKAGE%.glo
+ xelatex %PACKAGE%.dtx
+ xelatex %PACKAGE%.dtx
goto :EOF
:clean
echo Clean auxiliary files...
- latexmk -c -silent %PACKAGE%.dtx %THESIS% %SPINE% 2>nul
- del tex\*.aux >nul 2>nul
+ latexmk -c %PACKAGE%.dtx
+ latexmk -c %THESIS%
+ del *.xdv *.hd *.aux front\*.aux body\*.aux back\*.aux >nul 2>nul
goto :EOF
:cleanall
echo Clean pdf files...
- del /Q %PACKAGE%.pdf %THESIS%.pdf %SPINE%.pdf >nul 2>nul
+ del /Q %PACKAGE%.pdf %THESIS%.pdf >nul 2>nul
goto :clean
goto :EOF
diff --git a/macros/latex/contrib/hitszthesis/ctex-fontset-siyuan.def b/macros/latex/contrib/hitszthesis/ctex-fontset-siyuan.def
new file mode 100644
index 0000000000..f429ef8dbd
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/ctex-fontset-siyuan.def
@@ -0,0 +1,86 @@
+\ProvidesExplFile{ctex-fontset-siyuan.def}
+ {\ExplFileDate}{2.4.9}{\ExplFileDescription}
+\tl_new:N \l__ctex_msyh_suffix_tl
+\tl_set:Nn \l__ctex_msyh_suffix_tl { .ttc }
+\file_if_exist:nF { C:/Windows/Fonts/msyh.ttc }
+ {
+ \file_if_exist:nF { msyh.ttc }
+ { \tl_set:Nn \l__ctex_msyh_suffix_tl { .ttf } }
+ }
+\sys_if_engine_pdftex:TF
+ {
+ \ctex_zhmap_case:nnn
+ {
+ \ctex_punct_set:n { windows }
+ \setCJKmainfont
+ [ BoldFont = simhei.ttf , ItalicFont = simkai.ttf ] { simsun.ttc }
+ \setCJKsansfont [ BoldFont = msyhbd\l__ctex_msyh_suffix_tl ] { msyh\l__ctex_msyh_suffix_tl }
+ \setCJKfamilyfont { zhyahei }
+ [ BoldFont = msyhbd\l__ctex_msyh_suffix_tl ] { msyh\l__ctex_msyh_suffix_tl }
+ \ctex_punct_map_family:nn { \CJKsfdefault } { zhyahei }
+ \ctex_punct_map_bfseries:nn { \CJKsfdefault , zhyahei } { zhyaheib }
+ \setCJKmonofont { simfang.ttf }
+ \setCJKfamilyfont { zhkai } { simkai.ttf }
+ \setCJKfamilyfont { zhfs } { simfang.ttf }
+ \setCJKfamilyfont { zhsong } { simsun.ttc }
+ \setCJKfamilyfont { zhhei } { simhei.ttf }
+ \setCJKfamilyfont { zhli } { simli.ttf }
+ \setCJKfamilyfont { zhyou } { simyou.ttf }
+ \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong }
+ \ctex_punct_map_family:nn { \CJKttdefault } { zhfs }
+ \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai }
+ \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei }
+ }
+ {
+ \ctex_load_zhmap:nnnn { rm } { zhhei } { zhfs } { zhwindowsfonts }
+ \ctex_punct_set:n { windows }
+ \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong }
+ \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei }
+ \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai }
+ }
+ {
+ \tl_set:Nn \CJKrmdefault { rm }
+ \tl_set:Nn \CJKsfdefault { sf }
+ \tl_set:Nn \CJKttdefault { tt }
+ }
+ }
+ {
+ \sys_if_engine_uptex:TF
+ {
+ \ctex_set_upfonts:nnnnnn
+ {simsun.ttc} {simhei.ttf} {simkai.ttf}
+ {msyh\l__ctex_msyh_suffix_tl} {msyhbd\l__ctex_msyh_suffix_tl}
+ {simfang.ttf}
+ \ctex_set_upfamily:nnn { zhsong } { upzhserif } {}
+ \ctex_set_upfamily:nnn { zhhei } { upzhserifb } {}
+ \ctex_set_upfamily:nnn { zhfs } { upzhmono} {}
+ \ctex_set_upfamily:nnn { zhkai } { upzhserifit } {}
+ \ctex_set_upfamily:nnn { zhyahei } { upzhsans } { upzhsansb }
+ \ctex_set_upfamily:nnn { zhli } { upschrm } {}
+ \ctex_set_upmap:nnn { upstsl } { simli.ttf } {}
+ \ctex_set_upfamily:nnn { zhyou } { upschgt } {}
+ \ctex_set_upmap:nnn { upstht } { simyou.ttf } {}
+ }
+ {
+ \setCJKmainfont
+ [ BoldFont = SimHei , ItalicFont = KaiTi ] { SourceHanSerifCN-Regular }
+ \setCJKsansfont
+ [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
+ \setCJKmonofont { FangSong }
+ \setCJKfamilyfont { zhkai } { KaiTi }
+ \setCJKfamilyfont { zhfs } { FangSong }
+ \setCJKfamilyfont { zhsong } { SourceHanSerifCN-Regular }
+ \setCJKfamilyfont { zhhei } { SimHei }
+ \setCJKfamilyfont { zhli } { LiSu }
+ \setCJKfamilyfont { zhyou } { YouYuan }
+ \setCJKfamilyfont { zhyahei }
+ [ BoldFont = { *~Bold } ] { Microsoft~YaHei }
+ }
+ }
+\NewDocumentCommand \songti { } { \CJKfamily { zhsong } }
+\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } }
+\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } }
+\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } }
+\NewDocumentCommand \lishu { } { \CJKfamily { zhli } }
+\NewDocumentCommand \youyuan { } { \CJKfamily { zhyou } }
+\NewDocumentCommand \yahei { } { \CJKfamily { zhyahei } }
diff --git a/macros/latex/contrib/hitszthesis/figure/3angle.png b/macros/latex/contrib/hitszthesis/figure/3angle.png
deleted file mode 100644
index 14d16cc9c3..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/3angle.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/3grasp.png b/macros/latex/contrib/hitszthesis/figure/3grasp.png
deleted file mode 100644
index baa5ded526..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/3grasp.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/3posoreest.png b/macros/latex/contrib/hitszthesis/figure/3posoreest.png
deleted file mode 100644
index 23994364da..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/3posoreest.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/3rfcn.png b/macros/latex/contrib/hitszthesis/figure/3rfcn.png
deleted file mode 100644
index cd3161a9fe..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/3rfcn.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/figmutihopcomplex.png b/macros/latex/contrib/hitszthesis/figure/figmutihopcomplex.png
deleted file mode 100644
index 014865ad28..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/figmutihopcomplex.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/flowchart.png b/macros/latex/contrib/hitszthesis/figure/flowchart.png
deleted file mode 100644
index 3637a7db94..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/flowchart.png
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/less1.jpg b/macros/latex/contrib/hitszthesis/figure/less1.jpg
deleted file mode 100644
index 5bdb2c1891..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/less1.jpg
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/less2.jpg b/macros/latex/contrib/hitszthesis/figure/less2.jpg
deleted file mode 100644
index d68e0cac5f..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/less2.jpg
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/figure/less3.jpg b/macros/latex/contrib/hitszthesis/figure/less3.jpg
deleted file mode 100644
index fba8801e22..0000000000
--- a/macros/latex/contrib/hitszthesis/figure/less3.jpg
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/front/thesistitle.eps b/macros/latex/contrib/hitszthesis/figures/bthesistitle.eps
index 631dc56ddd..631dc56ddd 100644
--- a/macros/latex/contrib/hitszthesis/front/thesistitle.eps
+++ b/macros/latex/contrib/hitszthesis/figures/bthesistitle.eps
diff --git a/macros/latex/contrib/hitszthesis/figures/golfer.eps b/macros/latex/contrib/hitszthesis/figures/golfer.eps
new file mode 100644
index 0000000000..4d09242de9
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/figures/golfer.eps
@@ -0,0 +1,1398 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator:Adobe Illustrator(TM) 1.0b2-
+%%Title:golfer art+
+%%CreationDate:1/6/87 9:32 AM
+%%DocumentFonts:Helvetica-Bold
+%%BoundingBox: 13 37 571 720
+%%TemplateBox:0 -48 576 672
+%%EndComments
+100 dict begin
+/q{bind def}bind def
+/Q{load def}q
+/x{exch def}q
+/X/def Q
+/g{/_g x/p{_g setgray}X}q
+/G{/_G x/P{_G setgray}X}q
+/k{/_b x/_g x/_r x/p{_r _g _b setrgbcolor}X}q
+/K{/_B x/_G x/_R x/P{_R _G _B setrgbcolor}X}q
+/d/setdash Q
+/i/setflat Q
+/j/setlinejoin Q
+/J/setlinecap Q
+/M/setmiterlimit Q
+/w/setlinewidth Q
+/_C{.25 sub round .25 add}q
+/_c{transform _C exch _C exch itransform}q
+/c{_c curveto}q
+/C/c Q
+/v{currentpoint 6 2 roll _c curveto}q
+/V/v Q
+/y{_c 2 copy curveto}q
+/Y/y Q
+/l{_c lineto}q
+/L/l Q
+/m{_c moveto}q
+/_e[]X
+/_E{_e length 0 ne{gsave 1 g 0 G 1 i 0 J 0 j .5 w 10 M[]0 d
+/Helvetica-Bold 24 0 0 1 z
+[0.966 0.259 -0.259 0.966
+_e 0 get _e 2 get add 2 div _e 1 get _e 3 get add 2 div]a
+(ERROR: can't fill a path)t T grestore}if}q
+/n/newpath Q
+/N/newpath Q
+/F{p{fill}stopped{/_e[pathbbox]X n _E}if}q
+/f{closepath F}q
+/S{P stroke}q
+/s{closepath S}q
+/B{gsave F grestore S}q
+/b{closepath B}q
+/u{}q
+/U{}q
+/_s/ashow Q
+/_S{(?)exch{2 copy 0 exch put pop dup true charpath currentpoint _m setmatrix
+stroke _M setmatrix moveto 3 copy pop rmoveto}forall pop pop pop n}q
+/_A{_a moveto _t exch 0 exch}q
+/_L{0 _l neg translate _M currentmatrix pop}q
+/_w{dup stringwidth exch 3 -1 roll length 1 sub _t mul add exch}q
+/_z[{0 0}bind{dup _w exch neg 2 div exch neg 2 div}bind
+{dup _w exch neg exch neg}bind]X
+/z{_z exch get/_a x/_t x/_l x exch findfont exch scalefont setfont}q
+/_d{matrix currentmatrix X}q
+/_D{/_m _d gsave concat/_M _d}q
+/e{_D p/t{_A _s _L}X}q
+/r{_D P/t{_A _S _L}X}q
+/a{_D/t{dup p _A _s P _A _S _L}X}q
+/o{_D/t{pop _L}X}q
+/T{grestore}q
+/Z{findfont begin currentdict dup length dict begin
+{1 index/FID ne{X}{pop pop}ifelse}forall/FontName exch X dup length 0 ne
+{/Encoding Encoding 256 array copy X 0 exch{dup type/nametype eq
+{Encoding 2 index 2 index put pop 1 add}{exch pop}ifelse}forall}if pop
+currentdict dup end end/FontName get exch definefont pop}q
+n
+%%EndProlog
+u
+0.9 g
+0 G
+1 i
+0 J
+0 j
+1 w
+10 M
+[]0 d
+%%Note:
+15.815 40.248 m
+567.815 40.002 L
+567.748 716.565 L
+15.998 716.81 L
+15.815 40.248 L
+b
+U
+1 g
+285.313 40 m
+567.688 40.125 L
+567.812 78.375 L
+285.312 78.25 L
+285.313 40 L
+b
+0 g
+175.5 163 m
+180.007 163 173.738 169.081 171.75 168.75 c
+174.75 169.25 176.25 169.5 174.5 171.25 C
+178 171.25 176.349 173.783 175 176.75 c
+173.75 179.5 170.75 182.25 168.25 182 C
+165.5 181.25 167.622 182.838 165.25 186 c
+164.5 187 164.75 187.5 161.75 186.75 c
+158.75 186 163.25 190 156.75 190 c
+150.25 190 148.5 189 145.5 186 c
+142.5 183 139.75 183.75 139.5 182.5 c
+139.25 181.25 139.5 176.75 138.75 175.5 c
+138 174.25 136.75 174.25 136.25 178 c
+135.75 181.75 140.25 182.25 134 187 C
+135.75 190.75 134.5 191.75 131 193.5 C
+131 200 129.202 203.364 119.5 208.5 c
+115.25 210.75 107 212.75 104.75 208.75 c
+102.5 204.75 103 206.5 96.5 205.75 c
+90 205 87.25 202.5 86.5 197.75 c
+85.75 193 82.75 195 79 194.75 c
+75.25 194.5 77 192.75 77.25 191.75 c
+77.5 190.75 75.25 192.5 71.5 192 c
+67.75 191.5 64.25 185.5 69.5 180.75 c
+74.75 176 66.5 180.75 64.25 182.25 c
+62 183.75 60.5 181.75 61 180.25 c
+61.5 178.75 58.75 180.75 57.5 180.75 c
+56.25 180.75 51.008 180.188 52 172.25 c
+52.25 170.25 51.5 170.5 49.75 169.25 c
+48 168 45.75 164.25 48.5 158.75 c
+51.25 153.25 49 150 48 145.5 c
+47 141 48 138.25 51.25 137.25 c
+54.5 136.25 54 133.791 54 130.75 C
+57 130.5 59 129.25 58.75 124.5 C
+62.25 124.5 61.75 126.75 62.5 130 c
+63.25 133.25 65.75 129 66.25 127 c
+66.75 125 67.5 125 72 125 C
+74.75 116.25 74.75 120.5 75.25 117.25 C
+80 117.5 79.5 116.75 83.25 113.75 c
+87 110.75 88.25 115.5 92 118.5 c
+95.75 121.5 94.25 122.75 96.25 118.75 c
+98.25 114.75 98.5 119 101.5 119.25 c
+104.5 119.5 101 115.75 105.25 114.5 c
+109.5 113.25 105 113.75 103.5 111.25 c
+102 108.75 95 103.5 101.75 101.5 c
+108.5 99.5 103.5 99.75 94.75 99.5 c
+86 99.25 73.75 87.5 97.25 73.25 C
+117.25 53.25 117.25 53.5 v
+117.25 53.75 175.25 163 175.5 163 c
+f
+1 J
+0.2 w
+389.709 210.076 m
+511.826 210.076 l
+S
+394.709 212.461 m
+516.826 212.461 l
+S
+415.459 215.112 m
+537.576 215.112 l
+S
+399.709 217.762 m
+521.826 217.762 l
+S
+402.459 222.799 m
+524.576 222.799 l
+S
+402.709 225.45 m
+524.826 225.45 l
+S
+392.959 227.851 m
+515.076 227.851 l
+S
+400.691 232.856 m
+522.809 232.856 l
+S
+388.191 235.241 m
+510.309 235.241 l
+S
+393.941 237.892 m
+516.059 237.892 l
+S
+393.441 240.292 m
+515.559 240.292 l
+S
+396.191 242.928 m
+518.309 242.928 l
+S
+386.441 245.579 m
+508.559 245.579 l
+S
+393.191 248.23 m
+515.309 248.23 l
+S
+414.191 250.631 m
+536.309 250.631 l
+S
+397.95 252.973 m
+520.067 252.973 l
+S
+398.7 255.358 m
+520.817 255.358 l
+S
+400.7 258.009 m
+522.817 258.009 l
+S
+384.45 260.659 m
+506.567 260.659 l
+S
+380.7 265.696 m
+502.817 265.696 l
+S
+379.95 268.347 m
+502.067 268.347 l
+S
+386.7 270.748 m
+508.817 270.748 l
+S
+394.433 275.752 m
+516.55 275.752 l
+S
+381.933 278.138 m
+504.05 278.138 l
+S
+379.433 280.789 m
+501.55 280.789 l
+S
+383.183 283.189 m
+505.3 283.189 l
+S
+370.433 285.825 m
+492.55 285.825 l
+S
+382.433 288.476 m
+504.55 288.476 l
+S
+356.183 291.127 m
+478.3 291.127 l
+S
+372.433 293.277 m
+494.55 293.277 l
+S
+361.866 296.006 m
+483.984 296.006 l
+S
+365.616 298.406 m
+487.734 298.406 l
+S
+366.866 301.042 m
+488.984 301.042 l
+S
+346.866 303.693 m
+468.984 303.693 l
+S
+338.616 306.344 m
+460.734 306.344 l
+S
+330.866 308.494 m
+452.984 308.494 l
+S
+301.575 344.342 m
+423.692 344.342 l
+S
+314.075 346.728 m
+436.192 346.728 l
+S
+318.325 349.378 m
+440.442 349.378 l
+S
+312.075 352.029 m
+434.192 352.029 l
+S
+327.325 357.065 m
+449.442 357.065 l
+S
+327.575 359.716 m
+449.692 359.716 l
+S
+317.825 362.117 m
+439.942 362.117 l
+S
+335.558 367.122 m
+457.675 367.122 l
+S
+313.058 369.507 m
+435.175 369.507 l
+S
+318.808 372.158 m
+440.925 372.158 l
+S
+317.579 404.674 m
+439.696 404.674 l
+S
+322.312 409.179 m
+444.429 409.179 l
+S
+323.812 412.065 m
+445.929 412.065 l
+S
+329.562 414.715 m
+451.679 414.715 l
+S
+329.062 417.116 m
+451.179 417.116 l
+S
+331.812 419.752 m
+453.929 419.752 l
+S
+322.062 422.402 m
+444.179 422.402 l
+S
+328.812 425.053 m
+450.929 425.053 l
+S
+349.812 427.454 m
+471.929 427.454 l
+S
+333.571 429.796 m
+455.688 429.796 l
+S
+334.321 432.182 m
+456.438 432.182 l
+S
+336.321 434.832 m
+458.438 434.832 l
+S
+320.071 437.483 m
+442.188 437.483 l
+S
+316.321 442.519 m
+438.438 442.519 l
+S
+315.571 445.17 m
+437.688 445.17 l
+S
+322.321 447.571 m
+444.438 447.571 l
+S
+330.054 452.576 m
+452.171 452.576 l
+S
+317.554 454.961 m
+439.671 454.961 l
+S
+315.054 457.612 m
+437.171 457.612 l
+S
+318.804 460.012 m
+440.921 460.012 l
+S
+306.054 462.648 m
+428.171 462.648 l
+S
+300.054 465.299 m
+422.171 465.299 l
+S
+291.804 467.95 m
+413.921 467.95 l
+S
+308.054 470.101 m
+430.171 470.101 l
+S
+260.834 543.511 m
+382.951 543.511 l
+S
+246.066 548.016 m
+368.184 548.016 l
+S
+256.066 550.901 m
+378.184 550.901 l
+S
+253.566 553.552 m
+375.684 553.552 l
+S
+230.316 555.952 m
+352.434 555.952 l
+S
+244.566 558.588 m
+366.684 558.588 l
+S
+238.566 561.239 m
+360.684 561.239 l
+S
+230.316 563.89 m
+352.434 563.89 l
+S
+216.566 565.541 m
+338.684 565.541 l
+S
+104.443 572.01 m
+226.575 572.209 l
+S
+98.682 567.48 m
+220.814 567.68 l
+S
+91.688 565.11 m
+213.82 565.31 l
+S
+97.192 561.955 m
+219.324 562.155 l
+S
+73.943 559.517 m
+196.075 559.717 l
+S
+88.199 556.904 m
+210.331 557.103 l
+S
+82.203 554.243 m
+204.335 554.443 l
+S
+73.956 551.578 m
+196.088 551.778 l
+S
+73.707 549.405 m
+195.839 549.605 l
+S
+85.302 539.953 m
+207.434 540.152 l
+S
+79.541 535.423 m
+201.673 535.623 l
+S
+72.547 533.053 m
+194.679 533.253 l
+S
+78.051 529.898 m
+200.183 530.098 l
+S
+54.802 527.46 m
+176.934 527.66 l
+S
+69.058 524.847 m
+191.19 525.046 l
+S
+63.061 522.186 m
+185.194 522.385 l
+S
+54.815 519.521 m
+176.947 519.721 l
+S
+54.566 517.348 m
+176.698 517.547 l
+S
+u
+189.475 196.879 m
+311.592 196.879 l
+S
+176.975 199.265 m
+299.092 199.265 l
+S
+174.475 201.916 m
+296.592 201.916 l
+S
+178.225 204.316 m
+300.342 204.316 l
+S
+165.475 206.952 m
+287.592 206.952 l
+S
+177.475 209.603 m
+299.592 209.603 l
+S
+155.725 212.254 m
+277.842 212.254 l
+S
+167.475 214.404 m
+289.592 214.404 l
+S
+156.908 217.133 m
+279.026 217.133 l
+S
+144.658 219.533 m
+266.776 219.533 l
+S
+161.908 222.169 m
+284.026 222.169 l
+S
+153.908 224.82 m
+276.026 224.82 l
+S
+163.658 226.971 m
+285.776 226.971 l
+S
+152.408 229.121 m
+274.526 229.121 l
+S
+145.925 233.316 m
+268.042 233.316 l
+S
+157.675 235.466 m
+279.792 235.466 l
+S
+147.108 238.195 m
+269.226 238.195 l
+S
+134.858 240.595 m
+256.976 240.595 l
+S
+137.608 243.231 m
+259.726 243.231 l
+S
+144.108 245.882 m
+266.226 245.882 l
+S
+153.858 248.033 m
+275.976 248.033 l
+S
+155.108 231.183 m
+277.226 231.183 l
+S
+103.425 247.816 m
+225.542 247.816 l
+S
+100.175 249.966 m
+222.292 249.966 l
+S
+89.608 252.695 m
+211.726 252.695 l
+S
+77.358 255.095 m
+199.476 255.095 l
+S
+U
+u
+1 g
+0 J
+1 w
+120.001 389.999 m
+170.811 344.713 248.714 349.191 294.001 400.001 c
+339.287 450.811 334.809 528.714 283.999 574.001 c
+233.189 619.287 155.286 614.809 109.999 563.999 c
+64.713 513.189 69.191 435.286 120.001 389.999 c
+f
+202 482 m
+F
+U
+u
+258 302 m
+306.6 267.759 373.759 279.4 408 328 c
+442.241 376.6 430.6 443.759 382 478 c
+333.4 512.241 266.241 500.6 232 452 c
+197.759 403.4 209.4 336.241 258 302 c
+f
+320 390 m
+F
+U
+u
+196 376 m
+252.332 345.072 323.072 365.668 354 422 c
+384.928 478.332 364.332 549.072 308 580 c
+251.668 610.928 180.928 590.332 150 534 c
+119.072 477.668 139.668 406.928 196 376 c
+f
+252 478 m
+F
+U
+u
+106 257 m
+170.064 231.595 242.595 262.936 268 327 c
+293.405 391.064 262.064 463.595 198 489 c
+133.936 514.405 61.405 483.064 36 419 c
+10.595 354.936 41.936 282.405 106 257 c
+f
+152 373 m
+F
+U
+u
+366.001 122 m
+415.706 97.7 475.7 118.296 500 168.001 c
+524.3 217.706 503.704 277.7 453.999 302 c
+404.294 326.3 344.3 305.704 320 255.999 c
+295.7 206.294 316.296 146.3 366.001 122 c
+f
+410 212 m
+F
+U
+u
+227.999 198 m
+267.763 185.85 309.849 208.236 322 247.999 c
+334.15 287.763 311.764 329.849 272.001 342 c
+232.237 354.15 190.151 331.764 178 292.001 c
+165.85 252.237 188.236 210.151 227.999 198 c
+f
+250 270 m
+F
+U
+0 g
+15.75 71.25 m
+24.25 82.75 24.75 84.75 27.75 82.25 c
+30.75 79.75 31.75 81.25 32.75 82.75 c
+33.75 84.25 30.75 86.75 35.75 88.75 c
+40.75 90.75 41.25 91.75 43.25 89.75 c
+45.25 87.75 39.25 89.25 50.25 88.75 c
+61.25 88.25 70.25 81.75 74.25 75.25 c
+78.25 68.75 77.75 67.25 75.25 63.25 c
+72.75 59.25 68.25 56.75 72.25 57.25 c
+76.25 57.75 75.75 60.75 77.75 56.75 c
+79.75 52.75 80.25 51.25 79.25 49.25 c
+78.25 47.25 74.25 46.75 81.25 46.25 c
+88.25 45.75 91.75 37.557 91.75 40.25 c
+15.752 40.248 l
+15.75 71.25 l
+f
+340.75 55.5 m
+F
+u
+u
+3 w
+280.774 44.223 m
+567.893 44.223 l
+S
+280.774 48.728 m
+567.893 48.728 l
+S
+280.774 53.734 m
+567.893 53.734 l
+S
+U
+u
+280.774 58.739 m
+567.893 58.739 l
+S
+280.774 63.245 m
+567.893 63.245 l
+S
+280.774 68.251 m
+567.893 68.251 l
+S
+U
+u
+280.774 73.257 m
+567.893 73.257 l
+S
+280.774 78.263 m
+567.893 78.263 l
+S
+U
+U
+0.8 g
+0.2 w
+243 252 m
+323 235 l
+346 273 l
+368 248 l
+376 247 376 248 V
+377 174 380.5 121 330.5 40 C
+90.5 40 91.5 40 V
+138.5 129 163 162 214 200 C
+236 229 234.527 240.11 238 254 c
+240 262 243 252 y
+b
+0.5 g
+359.5 485 m
+389.267 485 402.5 486.25 415.75 489 c
+429 491.75 435 493.25 439 493.5 c
+443 493.75 490.398 537.797 502.5 562 c
+507 571 514.5 577 517.5 579.5 c
+520.5 582 501.5 591 y
+428 512 428 512.5 v
+428 513 356.5 510 356 509.5 c
+355.5 509 351 488 y
+359 485 359.5 485 v
+b
+0.7 g
+370 496.5 m
+368 480.5 365.5 472.5 364.5 471.5 C
+329.5 476.5 l
+323.5 489.5 l
+370 496.5 l
+b
+0.5 g
+352.75 494 m
+380 493.25 399.626 496.75 407.5 499 c
+418 502 424.586 497.135 432.75 505.5 c
+453 526.25 473.5 544.5 496.5 586.5 C
+473.5 590 473.5 590.5 V
+456 571.5 443 563.5 434 558 c
+425 552.5 416 544 408.5 534.5 C
+399 533 379.5 537.5 364 537.5 c
+348.5 537.5 352.75 494 y
+b
+1 g
+500 583 m
+500.5 577.098 517 573.5 520.5 572 c
+524 570.5 526.353 568.989 526.5 579 c
+526.675 590.992 541 586 539 624 C
+538.5 624 506 628 y
+499.958 583.498 500 583 v
+b
+0 g
+1 J
+3 w
+562 629 m
+343 645 217 644 77 601 C
+52 576 L
+59.5 562 80.132 560.877 87 589 c
+89.513 599.292 87 597 101 601 c
+108.323 603.092 265 654 561 617 C
+562 629 l
+f
+1 G
+0 J
+0.7 w
+305 634 m
+391.5 636.5 415 635 473 632 c
+S
+0.5 w
+213 626.5 m
+153.5 619 125.925 611.699 90.75 602.5 c
+78.654 599.337 82.567 597.884 82.5 592 c
+82.395 582.717 73.75 571 59 572.5 c
+S
+1 g
+0 G
+1 w
+73 595.25 m
+79.25 592.5 76.25 574.75 57.25 580 C
+73 595.25 l
+f
+0.5 g
+0.2 w
+312 574.25 m
+311.25 570.5 310.687 571.687 306.187 569.187 C
+307.687 564.187 311.106 565.66 304.5 561.5 c
+302.594 560.299 305.598 556.561 305.75 555.5 c
+306.038 553.485 304.629 548.098 297 548.5 c
+292.25 548.75 255.5 536 y
+229.5 608.5 l
+224 650 224.5 650 v
+248.101 650 273.345 678.918 298 655.5 c
+324.857 629.99 316.981 613.501 316.75 612.875 c
+313.346 603.644 313.238 604.937 314.75 597.375 c
+316.88 586.725 317.016 588.834 318.625 584.75 C
+320.25 581.875 318.625 580.375 y
+316.689 578.236 313.081 579.809 310.375 579 c
+307.013 577.994 312 574.25 y
+B
+0 g
+0.5 w
+288.5 456 m
+S
+0.2 w
+211 511 m
+194.5 518.5 187 520.5 170.5 500 C
+154.5 498.5 149.5 501 131.5 479.5 C
+151 477.5 140 475 161 460 c
+182 445 190.5 436.5 212 461 C
+224.5 458 229 454.5 238.5 447 C
+238 446.5 237 500.5 y
+211 511 l
+f
+1 g
+207.5 526.5 m
+206 514.5 204 506 236 490.5 C
+242.5 509.5 l
+207.5 526.5 l
+b
+0 g
+1 w
+294.464 627.589 m
+288.571 618.522 284.821 617.313 280 615.5 c
+275.179 613.686 271.429 605.224 277.857 587.089 C
+274.107 586.485 275.179 585.88 275.714 582.858 C
+271.429 599.179 270.357 606.433 259.643 609.455 c
+248.929 612.477 245.714 589.507 247.321 566.537 C
+228.572 554.448 L
+224.639 578.851 235.956 576.38 212.5 600.992 c
+194.17 620.226 195.893 654.791 225.357 658.418 C
+223.214 667.485 233.929 678.97 259.107 677.761 c
+284.286 676.552 281.071 667.485 Y
+302.5 667.485 334.964 665.942 301.429 614.895 C
+306.25 639.679 303.571 643.306 296.607 646.933 C
+299.286 634.239 294.464 627.589 y
+f
+0.7 g
+0.2 w
+207.5 524.5 m
+214.75 519.25 241.5 509 y
+239 504.5 l
+232 503 214.5 508.75 206.75 519 C
+207 522.5 207.5 524.5 y
+b
+1 g
+298 546.5 m
+272.625 574.625 248.5 596 195.5 568.5 C
+196.26 524.417 214.492 504.333 239.5 510.5 C
+298 546.5 l
+b
+0.8 g
+351.5 542 m
+367 540 L
+358.5 509.5 357 489.5 357 482 C
+323.5 482.5 295.5 485.5 284.5 477.5 c
+298.5 468.5 l
+299 457 l
+270.5 451 l
+238.5 483.5 l
+241 513.5 l
+250.5 538 252.5 547.5 282.5 550 C
+306.251 550 334.454 541.702 343.687 542.187 C
+342.576 538.175 346.737 538.055 351.5 542 c
+b
+0 g
+1 w
+333.25 484.75 m
+343.25 458.25 371.5 466 349 418.5 C
+359 348.5 378 357 363 336 C
+358.5 333 359 333 v
+359.5 333 353 328 359 327.5 c
+365 327 371 316.5 373.5 253.5 C
+381 245.5 l
+371 221 371 220.5 V
+360.5 247 358 253 351 261.5 C
+340 238 331.5 220.5 328.5 211.5 C
+301 229.5 265 250 232.5 244.5 C
+247.5 287 246 299.5 275 320.5 C
+270 331.5 268.689 334.634 265.75 336.25 c
+255.75 341.75 261.891 340.771 251 375 c
+247.5 386 249.5 384 255.5 399 C
+252.5 397 253.5 401 253.5 402.5 c
+253.5 404 252.057 400.023 251 402.5 c
+235 440 219.5 489.5 249.5 534 C
+238.5 503.5 242.102 477.13 260 463 c
+269.5 455.5 278.75 453.25 291 457.25 C
+297.5 461 299.549 465.787 282 476.75 C
+292.5 487.5 333.25 484.75 y
+f
+457.25 576.25 m
+454.936 574.233 453.51 595.217 479.25 583 C
+495.651 573.321 495.931 560.263 482.5 560.5 C
+486.25 566 491.682 565.465 478.5 575 c
+463.444 585.891 460.318 578.924 457.25 576.25 c
+f
+1 g
+460.75 581.5 m
+463.387 583.699 467.528 583.937 470.5 583.375 c
+473.752 582.76 473.75 581.75 Y
+461.735 583.841 458.891 579.95 460.75 581.5 c
+f
+0 g
+310.393 647.785 m
+329.089 651.66 328.75 623.692 320.178 607.976 C
+319.107 621.274 316.428 636.386 310.536 635.782 c
+304.643 635.177 310.393 647.785 y
+f
+284.286 663.858 m
+286.964 677.157 280.536 689.246 281.071 689.246 C
+289.107 677.761 288.036 665.672 y
+284.286 663.858 l
+f
+0.2 w
+274.643 683.201 m
+278.929 678.97 280 668.694 279.464 665.672 c
+S
+276.25 686.224 m
+284.393 677.036 283.75 662.045 y
+S
+1 w
+297.679 661.44 m
+312.602 661.44 312.143 677.157 310.536 680.784 C
+308.929 672.321 305.179 666.276 292.857 664.463 C
+297.679 661.44 l
+f
+0.2 w
+295 661.44 m
+298.75 666.276 302.5 675.343 294.464 683.201 c
+S
+300.357 681.992 m
+304.265 669.255 303.814 670.807 292.321 656.604 c
+S
+311.821 649.078 m
+321.464 649.078 330.571 646.66 329.5 627.921 c
+S
+307.536 650.892 m
+316.268 651.33 319.057 653.025 326.821 646.056 c
+330.446 642.802 331.1 637.618 331.107 637.593 c
+S
+304.643 665.067 m
+305.629 663.874 321.031 667.072 321.304 651.569 c
+S
+0.5 w
+311.071 639.679 m
+317.893 638.968 312.696 617.332 v
+S
+1 w
+313.375 612.875 m
+315.455 614.262 313.5 617.375 297.125 615.375 C
+310.375 616.625 311.875 611.875 313.375 612.875 c
+f
+1 g
+308.5 604.875 m
+309.833 600.875 309.125 601.25 307.375 599 C
+302.25 600.625 303.25 599.875 299 602.5 C
+304.25 604.75 308.375 605.25 308.5 604.875 c
+f
+0 g
+307.5 604.437 m
+305.463 602.811 305.481 601.49 307.375 598.937 C
+309.261 601.307 309.489 602.172 308.562 605.062 C
+308.562 604.937 308.191 604.989 307.5 604.437 c
+f
+0.2 w
+305.625 583.75 m
+304.687 582.562 306.5 579.375 308.875 579.75 c
+S
+1 w
+311.125 574.5 m
+310.25 573.898 310 573.437 304.937 569.312 C
+306.229 564.611 308.063 564.014 308.312 564.562 C
+309.775 566.476 307.663 569.565 306.687 569.75 C
+311.812 571.75 311.625 572.5 312 574.25 C
+311.687 574.75 311.176 574.535 311.125 574.5 c
+f
+298.625 603 m
+302 600.437 304.294 599.524 307.812 598.937 c
+308.187 598.875 308.562 598.5 308.687 597.875 c
+S
+297.5 602.25 m
+299.939 602.851 307.687 603.062 311.75 607.812 C
+307.812 606 297.011 602.129 297.5 602.25 c
+f
+213.5 576.125 m
+218.674 549.92 230.862 532.355 245.5 526.5 C
+243.75 514.5 209.75 494.25 195.5 568.5 C
+203.75 572.25 213.347 576.901 213.5 576.125 c
+f
+0.2 w
+343.375 541.75 m
+333.375 534.75 318.25 525.5 312 521.25 c
+S
+351.562 541.937 m
+337.936 530.579 327.2 525.581 313.25 517.75 c
+S
+0.3 w
+312.75 495 m
+291.75 483.5 276.25 476 274.25 466 c
+S
+0.5 w
+229 580.75 m
+235.5 571 241.25 554.75 245.75 528 c
+S
+1 w
+235 581 m
+246 555.75 246.75 537.75 245.75 526 C
+252.125 560.5 243.75 567.75 239.75 581.5 C
+240 581.5 237 581.75 235 581 C
+f
+0.7 g
+0.2 w
+248.625 580.5 m
+253.169 564.605 256.75 553.75 250.25 535.75 C
+257.5 552.75 259.125 558.937 252.875 579.687 C
+251.029 580.149 248.517 580.879 248.625 580.5 c
+b
+0 g
+1 w
+258.25 577.75 m
+262.047 567.879 262.5 552.5 259.25 544.25 C
+267.75 548.25 275 549.75 278.25 549.75 C
+281.75 555.25 282.75 556.75 279.5 565.25 C
+270.06 573.13 257.909 578.635 258.25 577.75 c
+f
+207.5 524.5 m
+F
+207.25 514.75 m
+207.185 514.86 228.75 497.5 238 500.75 C
+236 494.5 l
+225 498 213.924 503.454 207.25 514.75 c
+f
+1 g
+0.2 w
+191 516 m
+175.472 497.418 168.5 492 171.5 453 C
+185 443.5 189 443.5 200 450.5 C
+186.5 469.5 182 491 198.5 515.5 C
+194.5 516 191.339 516.406 191 516 c
+b
+201 515 m
+194 499 187 484 203.5 453 C
+206.5 455 211.5 460.5 212 461 C
+203.5 480.5 193.5 501.5 206 510.5 C
+205 499.5 210.5 490.5 232.5 473.5 C
+232.5 483 231.5 482.5 233 492 C
+221 498 210 505 208 512.5 C
+201 515 l
+b
+0 g
+1 G
+0.5 w
+268 442.5 m
+253.5 402.5 l
+S
+269.5 435.5 m
+258.5 407 258.5 407.5 v
+S
+0.5 G
+0.4 w
+293.5 480.5 m
+297.5 463.5 298.5 460.5 289 445.5 c
+S
+1 G
+1 J
+0.3 w
+349.125 418.125 m
+338.393 403.978 348.387 416.158 341.625 408.875 c
+S
+u
+1 g
+0 G
+0 J
+0.2 w
+336.038 340.015 m
+338.267 329.694 L
+342.937 338.843 L
+340.707 349.164 L
+336.038 340.015 L
+b
+339.487 339.429 m
+B
+U
+u
+328.791 340.569 m
+331.562 330.38 L
+335.743 339.762 L
+332.972 349.952 L
+328.791 340.569 L
+b
+332.267 340.166 m
+B
+U
+u
+321.758 340.67 m
+325.133 330.664 L
+328.746 340.28 L
+325.37 350.286 L
+321.758 340.67 L
+b
+325.252 340.475 m
+B
+U
+u
+314.504 340.97 m
+317.88 330.964 L
+321.492 340.58 L
+318.117 350.586 L
+314.504 340.97 L
+b
+317.998 340.775 m
+B
+U
+u
+u
+307.24 340.468 m
+311.982 331.033 L
+314.214 341.059 L
+309.473 350.494 L
+307.24 340.468 L
+b
+310.727 340.764 m
+B
+U
+u
+300.016 339.751 m
+304.757 330.316 L
+306.99 340.342 L
+302.249 349.777 L
+300.016 339.751 L
+b
+303.503 340.047 m
+B
+U
+U
+u
+u
+292.985 339.2 m
+298.349 330.104 L
+299.903 340.258 L
+294.54 349.353 L
+292.985 339.2 L
+b
+296.444 339.729 m
+B
+U
+u
+285.826 338 m
+291.189 328.904 L
+292.744 339.057 L
+287.38 348.153 L
+285.826 338 L
+b
+289.285 338.529 m
+B
+U
+U
+u
+278.742 336.229 m
+285.413 328.042 L
+285.423 338.314 L
+278.753 346.501 L
+278.742 336.229 L
+b
+282.083 337.272 m
+B
+U
+u
+272.228 332.392 m
+279.743 324.974 L
+278.644 335.186 L
+271.13 342.604 L
+272.228 332.392 L
+b
+275.437 333.789 m
+B
+U
+0 g
+1 G
+1 w
+266.25 335.5 m
+276.25 351.5 284.659 350 343 350 c
+364 350 363 336 y
+S
+271 321 m
+294 332 309 335 362 324 c
+S
+u
+1 g
+0 G
+0.2 w
+350.823 325.912 m
+364.33 322.302 L
+361.658 347.078 L
+348.151 350.689 L
+350.823 325.912 L
+b
+356.24 336.495 m
+B
+U
+0 g
+1 w
+274 347.5 m
+281.5 351.5 280.229 357.581 311 338 c
+316.5 334.5 322.5 338 351 357.5 C
+282 360 l
+274 347.5 l
+f
+1 G
+0.5 w
+269.25 355.75 m
+277.75 353.25 284.25 352.5 288.75 349.75 c
+S
+353.25 358.25 m
+347.25 354 345.5 353.5 339.75 349.5 c
+S
+0.3 w
+355.25 272.75 m
+359.75 281.5 361.25 285 363.25 290.75 c
+S
+0.5 G
+0.5 w
+354 219 m
+339 195 327 176 317 166 c
+S
+323 197 m
+310 150 308 135 235 48 c
+S
+1 w
+241 241.5 m
+232 227.5 215.231 198.443 215 198 c
+192.581 155 178 110 164 71 c
+S
+0 G
+0.2 w
+265.394 600.822 m
+263.576 606.114 262.122 612.994 253.035 607.173 C
+250.126 603.468 249.763 601.704 249.763 596.589 c
+249.763 591.473 254.307 592.179 257.76 587.24 c
+261.213 582.301 266.484 579.302 267.029 588.475 c
+S
+0.3 g
+260.668 605.409 m
+262.486 601.352 261.94 599.941 257.578 597.824 c
+253.216 595.707 257.76 591.473 260.305 592.355 c
+262.849 593.237 263.394 592.532 264.303 591.65 c
+265.212 590.768 266.666 591.826 264.667 594.119 c
+262.667 596.413 259.759 593.943 261.032 597.471 c
+262.304 600.999 260.668 605.409 y
+b
+0 g
+257.578 606.644 m
+254.125 605.056 251.58 604.174 251.58 598.177 c
+251.58 592.179 258.487 590.415 259.214 588.651 c
+S
+u
+1 g
+257.397 584.594 m
+258.601 581.671 262.019 580.25 265.03 581.419 c
+268.041 582.588 269.506 585.905 268.302 588.827 c
+267.097 591.75 263.679 593.172 260.668 592.003 c
+257.657 590.833 256.192 587.516 257.397 584.594 c
+b
+262.849 586.711 m
+B
+U
+u
+0.2 g
+1 w
+258.487 586.358 m
+263.213 582.477 L
+267.211 587.063 L
+262.486 590.944 L
+258.487 586.358 L
+f
+262.849 586.711 m
+F
+U
+0 g
+309.25 579.875 m
+310.75 580.5 313.25 583.125 314.625 581 c
+F
+1 g
+307.964 565.926 m
+307.88 566.015 306.794 566.513 307.22 566.682 c
+307.647 566.851 307.68 566.599 307.935 566.639 C
+307.924 566.13 307.971 566.31 307.964 565.926 c
+f
+510 104 m
+509.564 104.895 511.5 89 495.5 74.5 C
+495.5 68 l
+506 79 518.582 86.358 510 104 c
+f
+0 g
+0.2 w
+403.75 534.25 m
+413.25 533.75 415.75 534.25 417.75 534.75 c
+S
+1 G
+0.3 w
+538.5 629 m
+542 625 547.5 620 y
+S
+548.75 629.25 m
+552.25 625.25 557.75 620.25 y
+S
+0 G
+0.2 w
+518.5 587.5 m
+522.5 586 526 587.5 527 587.5 c
+S
+514 617.5 m
+518 614 518.5 611.5 520 607.5 c
+S
+528.25 613.75 m
+533.25 615.25 532.5 615.5 538.25 614.25 c
+S
+1 g
+538 637.5 m
+537.25 618 533 617.5 531.25 617.5 c
+529.5 617.5 528.235 615.255 528.5 622.5 c
+529.25 643 528.775 643.326 534.25 642.75 c
+539 642.25 539 642.25 540.5 630.75 C
+538 631 l
+538 629 538 631.25 v
+538 633.5 538 637.5 Y
+b
+0.7 g
+507.5 650.75 m
+510 648.5 510.25 645.75 511.75 643.25 c
+513.25 640.75 508.5 638.25 508.5 638 c
+508.5 637.75 507.5 650.75 y
+b
+1 g
+529.25 639.25 m
+528.5 643 527 642.75 524 642.75 c
+521 642.75 519.75 644 519.5 632.25 C
+519.75 638 519.75 641 v
+519.75 644 518.75 644.25 515.25 644.25 c
+511.75 644.25 511.75 646 509.25 641.25 c
+506.75 636.5 505.75 633.25 506 633.25 c
+506.25 633.25 509.75 628.25 Y
+511.5 620.25 512.75 619.75 515.5 619.5 c
+518.25 619.25 520.25 618.25 519.5 623.5 C
+521 618.25 521 617.75 524.75 617 c
+528.5 616.25 528.5 618.25 528.5 622.5 c
+528.5 626.75 529.25 639.25 y
+b
+507.75 636.75 m
+512.687 638.231 515.604 641 515.25 641 C
+517.839 637.469 517.494 629.281 508.75 625.5 C
+508.75 625.25 502 635 502.25 634.75 c
+502.5 634.5 507.75 636.75 y
+b
+493.5 571.5 m
+495.171 563.425 503.634 565.498 503.5 576.25 c
+503.25 596.25 515.75 586.25 509 636.75 c
+508.301 641.977 510 650.75 506.5 651.5 c
+501.514 652.568 500.436 652.26 499.25 644.75 c
+498.5 640 496.5 646.25 496 648.5 c
+495.5 650.75 493.75 651 490.75 650.25 c
+487.75 649.5 488.253 648.665 487.5 645.5 c
+486.194 640.013 486.75 641.75 484.5 645.5 c
+482.39 649.016 481.306 648.011 477.5 647.25 c
+475 646.75 474.784 644.479 475.25 640.75 c
+475.5 638.75 474 642.25 472.5 644.5 c
+471 646.75 469.25 645.5 466.5 645.5 c
+463.75 645.5 463.25 641.003 463.5 635.5 c
+463.511 635.25 463 626.25 y
+449.75 627.25 l
+459.25 618.5 465.606 612.863 468.25 597 c
+468.75 594 468 592.25 470 592.75 C
+459.719 593.497 459.195 585.398 461 586 c
+466.25 587.75 471.75 589.25 476.75 587 c
+481.75 584.75 486.25 584.25 489.5 586.25 C
+490.25 582.75 492 578.75 493.5 571.5 c
+b
+0 g
+486.25 592.5 m
+489 595.25 492.117 593.078 492.25 592.75 c
+494.972 586.028 477 591.75 467.25 593 c
+S
+0.4 w
+470 592.75 m
+474.25 595.75 475 596 481.5 595.75 c
+S
+1 J
+2.5 w
+477.75 630 m
+478.5 620.75 l
+S
+479.25 617.5 m
+480 610.5 l
+S
+480.25 607.75 m
+481 600.25 481 600.5 v
+S
+487.5 631.75 m
+487.75 623.5 l
+S
+487.75 620.75 m
+487.75 612.5 l
+S
+488 609.25 m
+488.25 609.25 487.75 602.5 y
+S
+498 630.75 m
+497.25 623.75 l
+S
+496.75 620.75 m
+495.5 612.5 l
+S
+495.25 609.5 m
+493.75 602 l
+S
+0 J
+0.2 w
+465.5 637.25 m
+464.5 629.75 461.25 628.75 464.75 617 c
+S
+0.5 w
+502 589.25 m
+503.25 585 503.5 583.25 503.5 577 c
+S
+1 g
+1 w
+521.949 86.694 m
+521.637 87.353 523.021 75.657 511.583 64.988 C
+511.583 60.205 l
+519.089 68.299 528.083 73.713 521.949 86.694 c
+f
+553.457 99.673 m
+553.091 100.449 554.713 86.67 541.309 74.1 C
+541.309 68.465 l
+550.105 78.001 560.646 84.379 553.457 99.673 c
+f
+482.74 95.04 m
+482.429 95.699 483.812 84.003 472.375 73.334 C
+472.375 68.551 l
+479.881 76.645 488.875 82.059 482.74 95.04 c
+f
+450.924 87.63 m
+450.69 88.028 451.731 80.968 443.129 74.528 C
+443.129 71.641 l
+448.774 76.527 455.538 79.795 450.924 87.63 c
+f
+0 g
+308 61.5 m
+N
+3 w
+16.002 40.373 m
+568.002 40.127 L
+567.748 716.565 L
+S
+u
+15.815 40.248 m
+567.815 40.002 L
+567.748 716.565 L
+15.998 716.81 L
+15.815 40.248 L
+s
+U
+%%Trailer
+_E end
+showpage
diff --git a/macros/latex/contrib/hitszthesis/figures/hitlogo.eps b/macros/latex/contrib/hitszthesis/figures/hitlogo.eps
new file mode 100644
index 0000000000..251af0e1ba
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/figures/hitlogo.eps
@@ -0,0 +1,382 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.14.10 (http://cairographics.org)
+%%CreationDate: Sat Aug 26 21:27:21 2017
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 98 590 565 677
+%%EndComments
+%%BeginProlog
+save
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 98 590 565 677
+%%EndPageSetup
+q 98 590 467 87 rectclip q
+0 g
+532.574 596.495 m 527.34 601.503 l 532.105 601.257 l 536.867 601.015 l
+537.176 605.284 l 537.57 610.765 535.727 611.605 529.727 608.679 c 525.621
+ 606.675 525.082 606.632 522.34 608.054 c 519.105 609.734 518.207 613.554
+ 521.047 613.554 c 526.309 613.554 535.574 615.941 536.098 617.433 c 536.414
+ 618.331 537.324 619.831 538.117 620.761 c 539.957 622.917 538.949 624.589
+ 535.809 624.589 c 534.309 624.589 533.371 625.167 533.371 626.093 c 533.371
+ 627.132 534.414 627.597 536.746 627.597 c 538.602 627.597 540.684 628.273
+ 541.367 629.101 c 542.051 629.929 543.152 630.605 543.816 630.605 c 545.504
+ 630.605 554.359 636.612 554.359 637.753 c 554.359 640.003 551.082 639.741
+ 548.531 637.292 c 546.605 635.437 545.172 634.859 543.562 635.28 c 542.25
+ 635.624 540.578 635.269 539.586 634.433 c 538.641 633.64 535.949 632.155
+ 533.602 631.136 c 529.934 629.542 528.992 629.468 526.855 630.616 c 525.492
+ 631.351 524.375 632.526 524.375 633.237 c 524.375 634.55 530.199 636.609
+ 533.93 636.62 c 535.062 636.624 536.859 637.276 537.926 638.069 c 539.75
+ 639.425 539.766 639.616 538.18 641.234 c 536.59 642.855 536.336 642.855
+ 533.902 641.253 c 529.945 638.651 527.355 641.421 531.121 644.23 c 532.781
+ 645.468 532.785 645.62 531.133 647.3 c 529.477 648.987 529.316 648.98 527.637
+ 647.112 c 526.668 646.034 524.629 643.234 523.109 640.89 c 520.074 636.202
+ 519.285 635.859 516.941 638.214 c 515.5 639.659 515.535 640.05 517.367
+642.632 c 519.605 645.784 519.863 648.249 518.371 652.194 c 517.082 655.597
+ 517.922 657.003 520.438 655.651 c 522.004 654.812 522.375 653.526 522.375
+ 648.929 c 522.375 644.753 522.672 643.542 523.488 644.362 c 525.016 645.898
+ 524.98 659.335 523.438 664.03 c 522.742 666.136 522.426 668.109 522.73
+668.413 c 523.68 669.37 528.34 667.757 530.293 665.796 c 532.059 664.023
+ 532.078 663.616 530.602 658.296 c 529.742 655.202 529.355 652.359 529.738
+ 651.976 c 530.117 651.593 531.637 652.491 533.113 653.972 c 535.215 656.081
+ 535.535 656.925 534.582 657.878 c 532.492 659.98 533.246 660.816 536.652
+ 660.175 c 539.746 659.593 540.133 659.859 543.301 664.769 c 545.152 667.632
+ 546.953 671.386 547.305 673.109 c 548.117 677.101 550.496 677.569 552.109
+ 674.058 c 554.223 669.452 553.566 667.433 548.82 663.929 c 544.594 660.808
+ 543.32 658.456 545.219 657.28 c 545.688 656.991 547.113 657.866 548.391
+ 659.23 c 549.664 660.589 551.164 661.706 551.719 661.706 c 552.273 661.706
+ 553.707 662.624 554.898 663.749 c 556.094 664.878 558.707 666.066 560.711
+ 666.39 c 563.699 666.878 564.352 666.679 564.352 665.28 c 564.352 662.866
+ 562.582 659.78 558.711 655.433 c 556.867 653.362 555.355 651.331 555.355
+ 650.917 c 555.355 650.507 554.223 648.847 552.836 647.23 c 549.637 643.499
+ 550.965 641.87 555.352 644.148 c 559.18 646.136 563.352 645.437 563.352
+ 642.804 c 563.352 640.519 555.363 633.476 551.09 631.995 c 548.676 631.159
+ 547.922 630.343 548.094 628.757 c 548.223 627.589 547.203 624.968 545.824
+ 622.929 c 542.656 618.245 543.805 616.956 549.211 619.128 c 553.934 621.023
+ 556.355 620.526 556.355 617.655 c 556.355 615.093 554.867 614.226 549.359
+ 613.577 c 544.863 613.05 l 545.203 605.913 l 545.523 599.101 545.395 598.612
+ 542.348 595.132 c 540.594 593.124 538.855 591.484 538.48 591.484 c 538.109
+ 591.484 535.449 593.737 532.57 596.495 c h
+545.535 641.296 m 547.727 643.284 547.891 644.651 545.934 644.651 c 544.055
+ 644.651 541.191 641.734 541.914 640.558 c 542.719 639.253 543.449 639.401
+ 545.535 641.296 c h
+544.215 645.972 m 545.816 647.913 546.102 653.878 544.613 654.405 c 543.871
+ 654.671 543.363 653.995 543.363 652.73 c 543.363 651.562 542.691 650.347
+ 541.867 650.03 c 539.598 649.155 540.055 644.651 542.41 644.651 c 542.801
+ 644.651 543.613 645.245 544.215 645.972 c h
+551.395 649.917 m 553.59 653.487 554.887 657.499 554.098 658.288 c 553.82
+ 658.566 552.422 658.499 550.988 658.136 c 548.836 657.593 548.398 656.929
+ 548.488 654.327 c 548.551 652.593 548.27 650.155 547.863 648.913 c 546.742
+ 645.472 549.066 646.132 551.395 649.917 c h
+538.367 650.702 m 538.367 653.507 535.695 654.288 533.355 652.163 c 530.906
+ 649.937 531.66 648.663 535.43 648.663 c 537.715 648.663 538.367 649.116
+ 538.367 650.702 c h
+282.875 600.261 m 277.797 605.624 277.324 605.894 276.215 604.112 c 272.863
+ 598.734 269.059 596.937 267.828 600.155 c 267.441 601.167 267.922 602.335
+ 269.066 603.175 c 270.871 604.503 270.859 604.601 268.73 606.097 c 266.473
+ 607.683 265.711 612.261 267.395 614.105 c 268.73 615.566 269.637 620.386
+ 268.684 620.976 c 268.219 621.265 266.312 619.921 264.449 617.987 c 262.059
+ 615.511 260.328 614.562 258.594 614.765 c 255.715 615.109 254.789 612.874
+ 254.629 605.21 c 254.535 600.519 253.203 596.495 251.746 596.503 c 251.355
+ 596.503 249.742 598.905 248.168 601.839 c 245.32 607.136 245.312 607.202
+ 247.07 610.609 c 248.27 612.944 249.082 617.749 249.594 625.585 c 250.008
+ 631.933 250.805 638.308 251.363 639.753 c 252.125 641.714 251.977 643.499
+ 250.781 646.843 c 249.219 651.198 249.508 654.683 251.426 654.683 c 253.09
+ 654.683 258.27 649.773 258.812 647.679 c 259.164 646.339 258.359 644.612
+ 256.426 642.53 c 252.633 638.456 251.941 635.39 253.887 631.269 c 255.355
+ 628.167 255.328 627.573 253.5 622.737 c 252.418 619.882 251.531 616.87
+251.531 616.05 c 251.531 613.741 253.32 614.284 254.043 616.812 c 255.953
+ 623.487 259.816 632.554 260.559 632.093 c 261.027 631.804 260.547 629.655
+ 259.492 627.323 c 257.395 622.687 256.992 619.573 258.484 619.573 c 259.879
+ 619.573 271.633 631.741 272.492 634.069 c 274.375 639.183 269.77 642.163
+ 265.789 638.409 c 263.043 635.819 264.242 633.862 267.5 635.612 c 270.496
+ 637.218 271.133 636.206 269.094 633.085 c 266.918 629.749 263.18 630.019
+ 262.684 633.542 c 262.496 634.882 261.68 636.991 260.871 638.23 c 259.566
+ 640.226 259.578 640.835 260.961 643.523 c 261.824 645.191 262.527 647.554
+ 262.527 648.769 c 262.527 650.909 262.59 650.921 264.5 649.191 c 265.586
+ 648.202 266.754 646.511 267.094 645.429 c 267.617 643.773 268.297 643.566
+ 271.367 644.109 c 273.375 644.468 276.207 645.612 277.656 646.659 c 280.102
+ 648.421 281.516 648.39 281.516 646.566 c 281.516 646.151 280.379 644.452
+ 278.992 642.796 c 277.355 640.847 276.852 639.546 277.555 639.112 c 279.039
+ 638.191 282.02 641.073 284.074 645.425 c 285.672 648.804 285.859 648.909
+ 287.145 647.148 c 289.727 643.601 288.723 641.331 282.492 636.651 c 279.207
+ 634.179 276.52 631.585 276.52 630.882 c 276.52 629.14 277.234 629.265 281.129
+ 631.679 c 282.973 632.823 284.887 633.503 285.391 633.191 c 285.91 632.87
+ 286.07 627.23 285.766 620.124 c 285.227 607.624 l 287.703 606.491 l 289.066
+ 605.866 290.965 604.019 291.93 602.386 c 293.543 599.64 293.555 599.23
+292.07 596.952 c 291.188 595.601 289.984 594.491 289.402 594.491 c 288.816
+ 594.491 285.883 597.089 282.875 600.261 c h
+273.02 608.37 m 273.02 610.183 271.062 609.855 270.676 607.972 c 270.461
+ 606.929 270.836 606.468 271.676 606.749 c 272.414 606.999 273.02 607.726
+ 273.02 608.37 c h
+282.852 607.202 m 283.219 607.569 282.781 608.691 281.883 609.687 c 280.688
+ 611.011 280.215 613.609 280.133 619.3 c 280.035 625.71 279.75 627.023 278.516
+ 626.687 c 277.691 626.46 276.098 626.202 274.969 626.116 c 271.961 625.882
+ 270.523 624.722 270.523 622.523 c 270.523 620.179 271.371 620.081 274.23
+ 622.089 c 276.879 623.952 277.211 623.409 277.312 617.042 c 277.441 609.073
+ 280.066 604.405 282.852 607.202 c h
+273.762 615.073 m 273.055 618.792 271.52 619.167 271.52 615.62 c 271.52
+ 613.698 272.031 612.55 272.883 612.55 c 273.797 612.55 274.086 613.378
+273.762 615.073 c h
+394.883 598.015 m 393.098 602.304 391.578 602.413 388.113 598.507 c 386.641
+ 596.851 384.613 595.495 383.605 595.495 c 381.195 595.495 378.461 598.601
+ 378.461 601.335 c 378.461 603.222 378.98 603.487 382.387 603.351 c 386.152
+ 603.206 391.453 605.589 391.453 607.433 c 391.453 607.905 390.789 608.847
+ 389.973 609.523 c 387.883 611.269 389.734 614.339 393.125 614.741 c 395.992
+ 615.081 397.672 617.566 395.035 617.566 c 393.027 617.566 392.965 619.448
+ 394.945 620.21 c 395.766 620.526 396.172 621.222 395.844 621.753 c 395.516
+ 622.284 394.617 622.476 393.852 622.179 c 392.133 621.519 389.453 622.46
+ 389.453 623.726 c 389.453 624.237 391.027 625.589 392.953 626.726 c 396.656
+ 628.921 397.723 631.148 394.59 630.151 c 393.52 629.808 392.199 630.202
+ 391.473 631.085 c 389.547 633.413 388.578 633.023 382.863 627.597 c 379.957
+ 624.839 376.715 622.581 375.656 622.581 c 372.305 622.581 368.316 626.507
+ 368.66 629.468 c 368.938 631.862 369.391 632.124 373.461 632.249 c 376.531
+ 632.343 380.18 633.566 384.957 636.101 c 394.23 641.026 394.789 641.616
+ 393.477 645.089 c 392.566 647.491 392.199 647.694 390.832 646.558 c 389.961
+ 645.831 388.855 644.202 388.375 642.937 c 387.219 639.886 383.684 639.886
+ 382.922 642.937 c 382.605 644.198 382.816 646.472 383.391 647.991 c 384.277
+ 650.327 384.734 650.589 386.379 649.706 c 387.66 649.019 389.188 648.991
+ 390.844 649.624 c 393.203 650.526 393.383 651.093 393.66 658.405 c 393.945
+ 666.054 394.008 666.226 396.637 666.53 c 400.406 666.968 403.234 662.734
+ 401.59 659.109 c 399.938 655.476 400.156 654.683 402.805 654.683 c 404.324
+ 654.683 406.367 656.109 408.551 658.691 c 410.863 661.421 412.75 662.698
+ 414.488 662.702 c 420.211 662.714 421.387 656.741 416.188 654.066 c 414.402
+ 653.148 412.633 651.917 412.258 651.331 c 410.691 648.894 412.91 648.859
+ 419.168 651.222 c 424.895 653.386 426.004 653.534 427.223 652.312 c 429.281
+ 650.245 427.848 646.894 424.637 646.273 c 423.152 645.987 418.617 645.484
+ 414.562 645.155 c 407.32 644.566 399.117 641.452 395.652 637.976 c 393.398
+ 635.714 395.266 634.98 398.512 636.851 c 401.117 638.351 402.941 637.671
+ 400.453 636.128 c 399.906 635.788 398.992 634.632 398.418 633.562 c 397.598
+ 632.019 397.703 631.609 398.922 631.609 c 399.77 631.609 401.816 633.816
+ 403.473 636.515 c 406.613 641.64 410.02 643.499 412.223 641.288 c 414.098
+ 639.405 412.746 636.929 409.156 635.671 c 405.512 634.398 401.445 630.839
+ 401.445 628.929 c 401.445 626.905 403.148 627.335 404.863 629.792 c 406.754
+ 632.499 408.355 631.3 406.609 628.491 c 405.914 627.378 405.605 625.655
+ 405.922 624.659 c 406.312 623.417 405.664 622.3 403.863 621.116 c 402.004
+ 619.894 401.543 619.073 402.297 618.316 c 403.051 617.562 403.785 617.605
+ 404.812 618.46 c 406.566 619.921 407.676 618.554 406.395 616.515 c 404.566
+ 613.62 405.332 612.726 409.191 613.241 c 412.043 613.624 413.598 613.222
+ 415.688 611.569 c 420.625 607.663 418.66 600.019 412.891 600.679 c 410.457
+ 600.956 409.883 601.534 409.605 603.991 c 409.246 607.144 405.945 612.55
+ 404.375 612.55 c 403.863 612.55 403.445 609.46 403.445 605.683 c 403.445
+ 598.589 402.5 596.714 398.145 595.159 c 396.754 594.663 396.004 595.319
+ 394.883 598.015 c h
+396.797 603.276 m 397.668 604.691 396.223 609.542 394.93 609.542 c 393.551
+ 609.542 391.23 604.077 392.199 603.105 c 393.039 602.261 396.246 602.382
+ 396.797 603.276 c h
+402.742 646.757 m 403.496 647.964 403.191 648.917 401.512 650.605 c 398.883
+ 653.245 398.91 653.265 398.02 648.335 c 397.379 644.776 397.492 644.519
+ 399.535 644.823 c 400.75 645.003 402.191 645.874 402.742 646.757 c h
+409.371 653.312 m 410.508 654.769 411.441 656.347 411.441 656.823 c 411.441
+ 658.632 408.605 657.593 407.059 655.218 c 403.922 650.417 405.852 648.823
+ 409.371 653.312 c h
+214.914 599.761 m 213.449 602.105 211.418 605.245 210.402 606.741 c 208.055
+ 610.202 208.074 610.874 210.492 609.577 c 213.383 608.023 216.555 608.3
+ 216.555 610.105 c 216.555 611.011 215.816 611.581 214.805 611.456 c 213.844
+ 611.335 212.344 611.554 211.477 611.937 c 210.609 612.319 208.68 612.167
+ 207.191 611.597 c 204.832 610.698 204.625 610.292 205.59 608.48 c 206.457
+ 606.855 206.352 605.859 205.105 603.956 c 202.848 600.495 200.562 600.796
+ 200.562 604.558 c 200.562 606.335 199.938 607.835 199.062 608.175 c 196.402
+ 609.198 192.527 607.558 191.555 604.999 c 190.48 602.155 188.414 601.812
+ 186.141 604.093 c 184.316 605.925 184.156 609.409 185.629 615.058 c 187.48
+ 622.14 187.406 622.038 189.418 620.21 c 191.863 617.987 192.836 618.148
+ 192.047 620.64 c 191.539 622.241 191.781 622.64 193.125 622.394 c 195.914
+ 621.886 195.902 624.284 193.109 624.987 c 189.305 625.948 190.039 628.273
+ 194.816 630.398 c 200.5 632.925 201.59 634.495 201.848 640.484 c 202.078
+ 645.937 200.887 648.109 198.23 647.085 c 196.191 646.3 196.109 644.968
+197.973 643.093 c 200.273 640.784 198.648 637.792 193.09 634.089 c 187.453
+ 630.335 186.836 630.151 184.598 631.573 c 183.406 632.331 183.977 633.308
+ 187.598 636.706 c 191.922 640.769 191.949 642.991 187.645 640.679 c 184.664
+ 639.077 180.711 640.468 179.043 643.71 c 177.273 647.14 178.188 647.987
+ 184.07 648.378 c 187.996 648.64 202.82 655.359 209.664 659.976 c 223.113
+ 669.05 230.449 670.456 230.531 663.98 c 230.551 662.155 220.797 657.48
+218.496 658.21 c 216.395 658.882 205.637 652.972 205.586 651.12 c 205.555
+ 649.89 207.598 647.659 208.758 647.659 c 209.195 647.659 209.559 648.737
+ 209.559 650.05 c 209.559 651.683 210.27 652.636 211.805 653.046 c 218.297
+ 654.792 222.848 652.425 221.922 647.776 c 221.543 645.874 221.988 644.562
+ 223.469 643.218 c 225.973 640.944 226.035 639.921 223.934 635.691 c 222.16
+ 632.12 221.879 627.03 222.48 609.202 c 222.801 599.722 222.598 597.144
+221.469 596.425 c 218.898 594.792 217.609 595.448 214.914 599.761 c h
+193.641 610.819 m 193.516 612.019 192.148 611.788 191.719 610.495 c 191.496
+ 609.831 191.855 609.472 192.516 609.691 c 193.176 609.913 193.684 610.421
+ 193.641 610.819 c h
+207.059 616.562 m 206.574 617.347 206 617.405 205.332 616.737 c 204.785
+ 616.187 204.66 615.206 205.059 614.558 c 205.543 613.773 206.117 613.714
+ 206.785 614.382 c 207.332 614.933 207.457 615.913 207.059 616.562 c h
+197.02 615.491 m 198.043 617.148 195.918 617.546 193.965 616.062 c 192.129
+ 614.667 192.141 614.62 194.258 614.589 c 195.461 614.569 196.707 614.976
+ 197.02 615.491 c h
+216.555 618.511 m 216.555 620.132 216.102 621.737 215.555 622.081 c 214.957
+ 622.448 214.555 621.253 214.555 619.128 c 214.555 617.167 215.004 615.558
+ 215.555 615.558 c 216.102 615.558 216.555 616.886 216.555 618.511 c h
+200.637 620.851 m 200.512 622.05 199.141 621.819 198.715 620.526 c 198.492
+ 619.862 198.852 619.503 199.512 619.722 c 200.172 619.944 200.68 620.452
+ 200.637 620.851 c h
+211.555 621.577 m 211.555 623.913 211.547 623.913 207.906 622.523 c 205.68
+ 621.675 205.418 621.276 206.594 620.534 c 209.141 618.917 211.555 619.425
+ 211.555 621.577 c h
+201.562 625.53 m 201.562 626.05 201.113 626.753 200.562 627.097 c 200.012
+ 627.437 199.562 627.011 199.562 626.151 c 199.562 625.292 200.012 624.589
+ 200.562 624.589 c 201.113 624.589 201.562 625.011 201.562 625.53 c h
+207.559 626.593 m 207.559 627.148 207.109 627.597 206.559 627.597 c 206.008
+ 627.597 205.559 627.148 205.559 626.593 c 205.559 626.042 206.008 625.593
+ 206.559 625.593 c 207.109 625.593 207.559 626.042 207.559 626.593 c h
+216.555 628.683 m 216.555 631.128 214.219 630.784 213.73 628.265 c 213.539
+ 627.276 214.051 626.593 214.98 626.593 c 215.906 626.593 216.555 627.452
+ 216.555 628.683 c h
+211.555 631.609 m 211.555 632.163 210.656 632.612 209.559 632.612 c 208.457
+ 632.612 207.559 632.163 207.559 631.609 c 207.559 631.058 208.457 630.609
+ 209.559 630.609 c 210.656 630.609 211.555 631.058 211.555 631.609 c h
+217.051 635.12 m 217.051 637.28 215.621 637.956 213.668 636.714 c 212.484
+ 635.964 212.484 635.605 213.668 634.265 c 215.406 632.296 217.051 632.71
+ 217.051 635.12 c h
+212.828 640.71 m 217.453 644.538 217.516 645.655 213.113 645.655 c 209.266
+ 645.655 209.074 645.472 208.098 640.89 c 207.23 636.835 208.102 636.804
+ 212.828 640.71 c h
+128.227 600.8 m 127.195 601.558 126.262 603.929 125.957 606.566 c 125.109
+ 613.921 125.109 613.921 118.793 609.253 c 109.316 602.253 98.121 600.542
+ 98.121 606.093 c 98.121 607.441 99.188 608.167 102.031 608.761 c 112.367
+ 610.917 125.305 623.241 132.859 638.132 c 138.129 648.515 140.203 653.585
+ 141.551 659.37 c 142.934 665.308 144.477 666.409 147.484 663.597 c 148.641
+ 662.515 149.59 661.53 149.59 661.409 c 149.59 661.288 150.004 659.753 150.504
+ 657.991 c 151.281 655.28 151.051 654.37 148.98 651.98 c 144.109 646.359
+ 144.684 643.757 152.543 635.788 c 155.344 632.948 157.535 631.605 159.375
+ 631.593 c 165.98 631.558 166.078 627.913 159.559 624.573 c 152.633 621.026
+ 150.691 621.933 147.234 630.316 c 145.594 634.292 143.684 637.765 142.988
+ 638.034 c 141.922 638.444 136.598 631.062 136.598 629.175 c 136.598 628.136
+ 140.172 628.577 141.355 629.761 c 142.23 630.64 142.883 630.612 144.051
+ 629.64 c 146.699 627.433 145.762 625.593 140.93 623.511 c 137.234 621.925
+ 136.094 621.773 135.461 622.796 c 134.402 624.495 132.02 623.007 129.785
+ 619.257 c 128.18 616.558 128.195 616.362 130.098 614.952 c 131.898 613.616
+ 132.176 613.671 132.996 615.523 c 133.5 616.655 134.855 617.566 136.039
+ 617.566 c 137.215 617.566 139.926 618.464 142.07 619.558 c 145.691 621.413
+ 146.094 621.437 147.777 619.905 c 150.16 617.741 150.082 614.421 147.594
+ 612.28 c 145.211 610.234 145.055 608.96 147.094 608.175 c 148.988 607.444
+ 149.023 604.816 147.164 602.948 c 145.359 601.136 135.992 600.995 135.223
+ 602.769 c 134.848 603.628 134.156 603.316 133.016 601.765 c 131.094 599.151
+ 130.609 599.05 128.227 600.8 c h
+137.023 608.066 m 138.883 610.909 138.379 612.55 135.648 612.55 c 133.48
+ 612.55 132.523 610.558 133.285 607.632 c 134.008 604.862 135.012 604.976
+ 137.023 608.066 c h
+439.98 602.456 m 437.832 604.839 438.777 606.734 441.746 605.984 c 444.188
+ 605.37 450.902 607.831 453.773 610.394 c 455.973 612.359 459.414 618.847
+ 459.414 621.038 c 459.414 621.886 458.898 622.581 458.266 622.581 c 456.938
+ 622.581 446.797 615.98 445.906 614.53 c 444.969 613.007 440.812 613.382
+ 439.375 615.116 c 438.465 616.218 438.355 617.452 439.004 619.276 c 440.008
+ 622.105 440.91 622.71 446.922 624.589 c 452.84 626.441 458.934 629.319
+460.223 630.878 c 461.512 632.437 463.242 651.933 462.715 658.964 c 462.426
+ 662.823 462.715 663.804 464.395 664.706 c 466.066 665.605 466.859 665.355
+ 468.914 663.296 c 471.898 660.3 472.152 655.714 469.926 645.151 c 467.488
+ 633.605 467.926 632.933 475.637 636.347 c 478.484 637.609 479.691 638.831
+ 480.098 640.862 c 480.762 644.21 480.73 644.206 484.438 641.452 c 489.152
+ 637.956 488.227 633.753 482.398 632.187 c 474.547 630.077 466.41 626.163
+ 466.41 624.495 c 466.41 623.519 467.297 622.433 468.379 622.089 c 469.465
+ 621.745 471.961 619.573 473.934 617.261 c 478.641 611.741 480.852 610.62
+ 487.148 610.581 c 490.035 610.558 492.395 610.148 492.395 609.663 c 492.395
+ 609.183 490.648 606.925 488.512 604.648 c 481.785 597.48 478.121 599.12
+ 471.395 612.335 c 469.086 616.866 466.902 620.573 466.539 620.573 c 466.176
+ 620.573 465.102 618.378 464.152 615.691 c 462.457 610.905 455.445 602.851
+ 451.664 601.347 c 447.969 599.878 441.773 600.464 439.98 602.456 c h
+312.055 609.765 m 310.184 612.444 310.016 616.487 311.75 616.987 c 312.434
+ 617.187 315.617 617.929 318.82 618.64 c 324.414 619.878 324.938 620.28
+332.062 628.757 c 340.41 638.687 342.074 643.023 335.305 637.206 c 330.438
+ 633.023 327.645 632.718 323.895 635.952 c 321.719 637.831 321.324 638.819
+ 321.867 640.999 c 322.516 643.589 322.758 643.683 327.266 643.081 c 331.402
+ 642.534 332.836 642.901 338.875 646.062 c 347.543 650.601 349.062 650.609
+ 351.191 646.128 c 352.871 642.589 l 345.676 635.319 l 338.238 627.804 336.664
+ 624.886 340.73 626.159 c 341.969 626.546 343.867 627.48 344.953 628.234
+ c 347.512 630.015 348.977 629.964 350.902 628.03 c 353.52 625.401 351.297
+ 622.948 345.621 622.194 c 342.91 621.831 340.176 620.913 339.547 620.151
+ c 338.918 619.39 337.34 618.499 336.039 618.171 c 334.742 617.843 331.656
+ 615.316 329.184 612.554 c 324.812 607.675 324.527 607.534 319.148 607.534
+ c 314.559 607.534 313.344 607.917 312.055 609.765 c h
+505.375 617.816 m 504.285 619.609 503.395 621.851 503.391 622.8 c 503.391
+ 624.331 511.609 634.667 513.422 635.413 c 514.961 636.046 515.297 632.331
+ 513.883 630.304 c 511.719 627.202 512.027 626.288 514.98 627.03 c 516.406
+ 627.39 517.395 627.327 517.176 626.89 c 516.953 626.452 516.004 624.398
+ 515.062 622.323 c 512.961 617.694 510.367 614.558 508.648 614.558 c 507.938
+ 614.558 506.465 616.023 505.375 617.816 c h
+103.352 622.866 m 102.25 624.558 101.918 627.546 102.094 634.269 c 102.43
+ 647.069 103.199 647.917 109 641.921 c 111.391 639.452 112.613 637.245 112.613
+ 635.401 c 112.613 631.862 113.738 631.855 115.438 635.378 c 117.777 640.23
+ 117.848 640.636 116.371 640.636 c 114.98 640.636 110.859 644.405 111.703
+ 644.905 c 115.488 647.163 122.918 650.667 123.918 650.667 c 125.789 650.667
+ 130.602 645.37 130.602 643.312 c 130.602 642.359 129.012 640.179 127.07
+ 638.468 c 123.73 635.523 123.629 635.253 125.211 633.499 c 126.543 632.019
+ 126.637 631.351 125.664 630.175 c 123.93 628.077 117.938 626.292 115.059
+ 627.019 c 113.609 627.382 112.613 627.198 112.613 626.566 c 112.613 624.995
+ 107.938 620.573 106.277 620.573 c 105.492 620.573 104.176 621.605 103.352
+ 622.866 c h
+269.172 648.128 m 267.156 649.659 267.727 651.675 270.18 651.675 c 272.613
+ 651.675 278.656 654.737 283.016 658.183 c 288.625 662.62 289.121 662.843
+ 291.84 662.159 c 294.371 661.523 296.98 657.269 295.91 655.526 c 295.129
+ 654.257 286.891 650.671 284.758 650.671 c 283.484 650.671 283.617 651.151
+ 285.414 653.073 c 288.715 656.597 286.133 657.456 282.641 653.995 c 278.672
+ 650.066 273.848 646.651 272.312 646.691 c 271.602 646.706 270.188 647.355
+ 269.172 648.128 c h
+276.227 660.691 m 276.555 661.956 276.156 662.909 275.133 663.304 c 272.043
+ 664.495 273.32 667.347 277.512 668.609 c 285.633 671.05 288.781 665.093
+ 281.559 660.952 c 276.715 658.175 275.555 658.116 276.227 660.691 c h
+276.227 660.691 m f
+Q Q
+showpage
+%%Trailer
+end restore
+%%EOF
diff --git a/macros/latex/contrib/hitszthesis/front/HITSZname.jpg b/macros/latex/contrib/hitszthesis/front/HITSZname.jpg
deleted file mode 100644
index 3d0df2b0e0..0000000000
--- a/macros/latex/contrib/hitszthesis/front/HITSZname.jpg
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/front/coverinformation.tex b/macros/latex/contrib/hitszthesis/front/coverinformation.tex
new file mode 100644
index 0000000000..c685b0aa02
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/front/coverinformation.tex
@@ -0,0 +1,78 @@
+% !TEX root = ../main.tex
+
+\hitszsetup{
+ %******************************
+ % 注意:
+ % 1. 配置里面不要出现空行
+ % 2. 不需要的配置信息可以删除
+ %******************************
+ %
+ %=====
+ % 秘级
+ %=====
+ statesecrets={公开},
+ natclassifiedindex={TM301.2},
+ intclassifiedindex={62-5},
+ %
+ %=========
+ % 中文信息
+ %=========
+ ctitleone={基于神经网络的},%本科生封面使用
+ ctitletwo={机器人智能抓取研究},%本科生封面使用
+ ctitlecover={基于神经网络的机器人智能抓取研究},%放在封面中使用,自由断行
+ ctitle={基于神经网络的机器人智能抓取研究},%放在原创性声明中使用
+ csubtitle={一条副标题}, %一般情况没有,可以注释掉
+ cxueke={工学},
+ csubject={机械设计制造及其自动化},
+ caffil={机电工程与自动化学院},
+ cauthor={杨敬轩},
+ csupervisor={某某某 教授},
+ cassosupervisor={某某某 教授}, % 副指导老师
+ ccosupervisor={某某某 教授}, % 联合指导老师
+ % 日期自动使用当前时间,若需指定按如下方式修改:
+ %cdate={超新星纪元},
+ cstudentid={SZ160310217},
+ cstudenttype={同等学力人员}, %非全日制教育申请学位者
+ %(同等学力人员)、(工程硕士)、(工商管理硕士)、
+ %(高级管理人员工商管理硕士)、(公共管理硕士)、(中职教师)、(高校教师)等
+ %
+ %
+ %=========
+ % 英文信息
+ %=========
+ etitle={Research on robot intelligent grasping based on Neural Network},
+ esubtitle={This is the sub title},
+ exueke={Engineering},
+ esubject={Mechanical Design, Manufacturing and Automation},
+ eaffil={\emultiline[t]{School of Mechanical Engineering\\ and Automation}},
+ eauthor={Jingxuan Yang},
+ esupervisor={Professor XXX},
+ eassosupervisor={XXX},
+ % 日期自动生成,若需指定按如下方式修改:
+ edate={June, 2020},
+ estudenttype={Master of Art},
+ %
+ % 关键词用“英文逗号”分割
+ ckeywords={\TeX, \LaTeX, CJK, 论文模板, 毕业论文},
+ ekeywords={\TeX, \LaTeX, CJK, hitszthesis, thesis},
+}
+
+% 中文摘要
+\begin{cabstract}
+
+ 摘要的字数(以汉字计),硕士学位论文一般为500 $\sim$ 1000字,博士学位论文为1000 $\sim$ 2000字,均以能将规定内容阐述清楚为原则,文字要精练,段落衔接要流畅。摘要页不需写出论文题目。英文摘要与中文摘要的内容应完全一致,在语法、用词上应准确无误,语言简练通顺。留学生的英文版博士学位论文中应有不少于3000字的“详细中文摘要”。
+
+ 关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。关键词不超过5个,每个关键词中间用分号分隔。(模板作者注:关键词分隔符不用考虑,模板会自动处理。英文关键词同理。)
+
+\end{cabstract}
+
+% 英文摘要
+\begin{eabstract}
+
+ An abstract of a dissertation is a summary and extraction of research workand contributions. Included in an abstract should be description of researchtopic and research objective, brief introduction to methodology and research process, and summarization of conclusion and contributions of the research. An abstract should be characterized by independence and clarity and carry identical information with the dissertation. It should be such that the general idea and major contributions of the dissertation are conveyed without reading the dissertation.
+
+ An abstract should be concise and to the point. It is a misunderstanding to make an abstract an outline of the dissertation and words ``the first chapter'', ``the second chapter'' and the like should be avoided in the abstract.
+
+ Key words are terms used in a dissertation for indexing, reflecting core information of the dissertation. An abstract may contain a maximum of 5 key words, with semi-colons used in between to separate one another.
+
+\end{eabstract}
diff --git a/macros/latex/contrib/hitszthesis/front/denotation.tex b/macros/latex/contrib/hitszthesis/front/denotation.tex
new file mode 100644
index 0000000000..a9fe7d07bd
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/front/denotation.tex
@@ -0,0 +1,17 @@
+% !TEX root = ../main.tex
+
+% 物理量符号表,如果采用标准符号则不需要此表
+\begin{denotation}
+ % 此处最好是h
+ \begin{table}[h]
+ \caption{国际单位制中具有专门名称的导出单位}
+ \vspace{0.5em}\centering\wuhao
+ \begin{tabular}{ccccc}
+ \toprule[1.5pt]
+ 量的名称&单位名称&单位符号&其它表示实例\\
+ \midrule[1pt]
+ 频率&赫[兹]&Hz&s-1\\
+ \bottomrule[1.5pt]
+ \end{tabular}
+ \end{table}
+\end{denotation}
diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.bst b/macros/latex/contrib/hitszthesis/hitszthesis.bst
new file mode 100644
index 0000000000..493b80f394
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/hitszthesis.bst
@@ -0,0 +1,1936 @@
+%=============================================================================
+% FileName: hitszthesis.bst
+% Author: Chu Yanshuo
+% Email: chu@yanshuo.name
+% HomePage: http://yanshuo.name
+% Version: 0.0.1
+% Modified: 杨敬轩(Jingxuan Yang)
+% History: 胡海星
+% LastChange: 2020-03-09 15:39:30
+%=============================================================================
+ %
+ENTRY % class Entry {
+{ % public:
+ author % String author;
+ editor % String editor;
+ translator % String translator;
+ title % String title;
+ edition % String edition;
+ address % String address;
+ publisher % String publisher;
+ pages % String pages;
+ year % String year;
+ date % String date;
+ modifydate % String modifydate;
+ citedate % String citedate;
+ url % String url;
+ doi % String doi;
+ language % String language;
+ booktitle % String booktitle;
+ journal % String journal;
+ chapter % String chapter;
+ series % String series;
+ volume % String volume;
+ number % String number;
+ version % String version;
+ month % String month;
+ school % String school;
+ institution % String institution;
+ organization % String organization;
+ type % String type;
+ howpublished % String howpublished;
+ eid % String eid;
+ key % String key;
+ country % String country;
+ patentid % String patentid;
+ media % String media;
+} { % // declare integer variables
+ required % int required; // withther the bibfield is required
+} { % // declare String variables
+ label % String label; // label for the entry
+ mark % String mark; // mark for the entry
+ % // there is ahidden entry variable sort.key$
+ % String sort_key;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+INTEGERS { % // declare global int variables
+ entry.count % static int entry_count; // number of entries
+ longest.label.width % static int longest_label_width; // width of the longest label
+ i % static int i;
+ j % static int j;
+ k % static int k;
+} %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+STRINGS { % // declare global String variables
+ longest.label % static String longest_label; // the longest label
+ s % static String s;
+ t % static String t;
+} %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% define global static constants
+FUNCTION {true} {#1}
+FUNCTION {false} {#0}
+FUNCTION {debug.enabled} {true}
+FUNCTION {cap.volume.en} {"Vol~"}
+FUNCTION {cap.volume.zh} {"卷"}
+FUNCTION {cap.edition.en} {"~ed"}
+FUNCTION {cap.edition.zh} {"版"}
+FUNCTION {cap.anonymous.en} {"Anon"}
+FUNCTION {cap.anonymous.zh} {"佚名"}
+FUNCTION {cap.no.address.en} {"[S.l.]"}
+FUNCTION {cap.no.address.zh} {"[出版地不详]"}
+FUNCTION {cap.no.publisher.en} {"[s.n.]"}
+FUNCTION {cap.no.publisher.zh} {"[出版者不详]"}
+FUNCTION {cap.et.al.en} {", et~al"}
+FUNCTION {cap.et.al.zh} {", 等"}
+FUNCTION {cap.translate.en} {"~trans"}
+FUNCTION {cap.translate.zh} {"译"}
+FUNCTION {cap.doi.url} {"http://dx.doi.org/"}
+FUNCTION {cap.st.en} {"st"}
+FUNCTION {cap.nd.en} {"nd"}
+FUNCTION {cap.rd.en} {"rd"}
+FUNCTION {cap.th.en} {"th"}
+
+FUNCTION {cap.space} {" "}
+FUNCTION {cap.period} {"\@. "}
+FUNCTION {cap.comma} {"\@, "}
+FUNCTION {cap.colon} {"\thinspace{}\textnormal{: }"}
+FUNCTION {cap.double.slash} {" //\thinspace{}"}
+FUNCTION {cap.dash} {"\textnormal{-}"}
+
+% Predefined latex command used to format the style of bibitems
+FUNCTION {env.bibbegin} { "\begin{thebibliography}" }
+FUNCTION {env.bibend} { "\end{thebibliography}" }
+FUNCTION {cmd.bibauthor} { "\providecommand{\bibauthor}[1]{#1}" }
+FUNCTION {cmd.bibeditor} { "\providecommand{\bibeditor}[1]{#1}" }
+FUNCTION {cmd.bibtranslator} { "\providecommand{\bibtranslator}[1]{#1}" }
+FUNCTION {cmd.bibtitle} { "\providecommand{\bibtitle}[1]{#1}" }
+FUNCTION {cmd.bibbooktitle} { "\providecommand{\bibbooktitle}[1]{#1}" }
+FUNCTION {cmd.bibjournal} { "\providecommand{\bibjournal}[1]{#1}" }
+FUNCTION {cmd.bibmark} { "\providecommand{\bibmark}[1]{\mbox{#1}}" }
+FUNCTION {cmd.bibcountry} { "\providecommand{\bibcountry}[1]{#1}" }
+FUNCTION {cmd.bibpatentid} { "\providecommand{\bibpatentid}[1]{#1}" }
+FUNCTION {cmd.bibedition} { "\providecommand{\bibedition}[1]{#1}" }
+FUNCTION {cmd.biborganization} { "\providecommand{\biborganization}[1]{#1}" }
+FUNCTION {cmd.bibaddress} { "\providecommand{\bibaddress}[1]{#1}" }
+FUNCTION {cmd.bibpublisher} { "\providecommand{\bibpublisher}[1]{#1}" }
+FUNCTION {cmd.bibinstitution} { "\providecommand{\bibinstitution}[1]{#1}" }
+FUNCTION {cmd.bibschool} { "\providecommand{\bibschool}[1]{#1}" }
+FUNCTION {cmd.bibvolume} { "\providecommand{\bibvolume}[1]{#1}" }
+FUNCTION {cmd.bibnumber} { "\providecommand{\bibnumber}[1]{#1}" }
+FUNCTION {cmd.bibversion} { "\providecommand{\bibversion}[1]{#1}" }
+FUNCTION {cmd.bibpages} { "\providecommand{\bibpages}[1]{#1}" }
+FUNCTION {cmd.bibmodifydate} { "\providecommand{\bibmodifydate}[1]{#1}" }
+FUNCTION {cmd.bibcitedate} { "\providecommand{\bibcitedate}[1]{#1}" }
+FUNCTION {cmd.bibyear} { "\providecommand{\bibyear}[1]{#1}" }
+FUNCTION {cmd.bibdate} { "\providecommand{\bibdate}[1]{#1}" }
+FUNCTION {cmd.biburl} { "\providecommand{\biburl}[1]{\newline\url{#1}}" }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {log.str} { % void Entry::log_str(String value, String message)
+ debug.enabled { % if (debug_enabled == 1) {
+ "DEBUG: " swap$ * " - '" * % message = "DEBUG: " + message + " - '";
+ swap$ * % message = message + value;
+ "'" * % message = message + "'";
+ top$ % log(message);
+ } { % } else {
+ pop$ pop$ % return;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {log.int} { % int Entry::log_int(int value, String message)
+ debug.enabled { % if (debug_enabled == 1) {
+ "DEBUG: " swap$ * " - " * % message = "DEBUG: " + message + " - ";
+ swap$ int.to.str$ * % message = message + int_to_str(value);
+ top$ % log(message);
+ } { % } else {
+ pop$ pop$ % return;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {not} { % int Entry::not(int x) {
+ { % if (x == 1) {
+ false % return false;
+ } { % } else {
+ true % return true;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {and} { % int Entry::and(int x, int y) {
+ { % if (y == 1) {
+ skip$ % return x;
+ } { % } else {
+ pop$ false % return false;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {or} { % int Entry::or(int x, int y) {
+ { % if (y == 1) {
+ pop$ true % return true;
+ } { % } else {
+ skip$ % return x;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // calculate the length in characters of a string
+ % // We need this function since text.length$ is NOT
+ % // the length in characters.
+INTEGERS {length.i} % static int length_i;
+FUNCTION {length} { % int Entry::length(String str) {
+ duplicate$ empty$ { % if (empty(str)) {
+ pop$ #0 % return 0;
+ } { % } else {
+ #1 'length.i := % length_i = 1;
+ false % int stop = false;
+ {not} { % while (! stop) {
+ duplicate$ length.i #1 substring$ % String tmp = substring(str, length_i, 1);
+ "" = { % if (tmp == "") {
+ true % stop = true;
+ } { % } else {
+ length.i #1 + 'length.i := % length_i = length_i + 1;
+ false % stop = false;
+ } if$ % }
+ } while$ % }
+ pop$ length.i #1 - % return length_i - 1;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.digit} { % int Entry::is_digit(String ch) {
+ chr.to.int$ % int ascii = chr_to_int(ch);
+ duplicate$ "0" chr.to.int$ < { % if (ascii < chr_to_int("0")) {
+ pop$ false % return false;
+ } { % } else {
+ "9" chr.to.int$ > { % if (ascii > chr_to_int("9")) {
+ false % return false;
+ } { % } else {
+ true % return true;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // test if str is a number
+FUNCTION {is.number} { % int Entry::is_number(String str) {
+ duplicate$ empty$ not swap$ % int result = (! empty(str));
+ { duplicate$ empty$ not} { % while (! empty(str)) {
+ duplicate$ #1 #1 substring$ is.digit { % if (is_digit(substring(str, 1, 1))) {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } { % } else {
+ pop$ pop$ false % result = false;
+ "" % str = "";
+ } if$ % }
+ } while$ % }
+ pop$ % return result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the number prefix of str
+FUNCTION {extract.number} { % String Entry::extract_number(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ length swap$ % int n = length(str);
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ is.digit { % if (is_digit(substring(suffix, 1, 1))) {
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } { % } else {
+ true % stop = true;
+ } if$ % }
+ } while$ % }
+ length - % int n = n - length(suffix);
+ #1 swap$ substring$ % return substring(str, 1, n);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.last.chr} { % String Entry::get_last_chr(String str) {
+ duplicate$ length % int n = length(str);
+ duplicate$ #0 = { % if (n == 0) {
+ pop$ % return str;
+ } { % } else {
+ #1 substring$ % return substring(str, n, 1);
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.ordinal.suffix.en} { % String Entry::get_ordinal_suffix_en(String ch) {
+ duplicate$ "1" = { % if (num == "1") {
+ pop$ cap.st.en % return cap_st_en;
+ } { % } else {
+ duplicate$ "2" = { % if (num == "2") {
+ pop$ cap.nd.en % return cap_nd_en;
+ } { % } else {
+ duplicate$ "3" = { % if (num == "3") {
+ pop$ cap.rd.en % return cap_rd_en;
+ } { % } else {
+ pop$ cap.th.en % return cap_th_en;
+ } if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {num.to.ordinal.en} { % String Entry::num_to_ordinal_en(String num) {
+ duplicate$ empty$ { % if (empty(num)) {
+ skip$ % return num;
+ } { % } else {
+ duplicate$ get.last.chr % String ch = get_last_chr(num);
+ get.ordinal.suffix.en % String str = get_ordinal_suffix_en(ch);
+ * % reutrn num + str;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+STRINGS {remove.dots.result} % static String remove_dots_result;
+ %
+FUNCTION {remove.dots} { % String Entry::remove_dots(String str) {
+ "" 'remove.dots.result := % remove_dots_result = "";
+ { duplicate$ empty$ not } { % while (! empty(str)) {
+ duplicate$ #1 #2 substring$ % String tmp = substring(str, 1, 2);
+ "\." = { % if (tmp == "\.") {
+ #3 global.max$ substring$ % str = substring(str, 3, global_max);
+ } { % } else {
+ duplicate$ #1 #1 substring$ % tmp = substring(str, 1, 1);
+ duplicate$ "." = { % if (tmp == ".") {
+ pop$ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } { % } else {
+ remove.dots.result swap$ * % tmp = remove_dots_result + tmp;
+ 'remove.dots.result := % remove_dots_result = tmp;
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } if$ % }
+ } if$ % }
+ } while$ % }
+ pop$ remove.dots.result % return remove_dots_result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.brace} { % String Entry::add_brace(String str) {
+ "{" swap$ * "}" * % return "{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.bracket} { % String Entry::bracket(String str) {
+ "(" swap$ * ")" * % return "(" + str + ")";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.squarebracket} { % String Entry::add_squarebracket(String str) {
+ "[" swap$ * "]" * % return "[" + str + "]";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.textit} { % String Entry::add_textit(String str) {
+ "\textit{" swap$ * "}" * % return "\textit{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {add.textbf} { % String Entry::add_textbf(String str) {
+ "\textbf{" swap$ * "}" * % return "\textbf{" + str + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // test if str contains a dash '-'
+FUNCTION {contain.dash} { % int Entry::contain_dash(String str) {
+ false swap$ % int result = false;
+ { duplicate$ empty$ not} { % while (! empty(str)) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(str, 1, 1) == "-") {
+ pop$ pop$ true % result = true;
+ "" % str = "";
+ } { % } else {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } if$ % }
+ } while$ % }
+ pop$ % return result;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring before the first '-'
+ % // returns the string itself if no '-'
+FUNCTION {extract.before.first.dash} { % String Entry::extract_before_first_dash(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ length swap$ % int n = length(str);
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(suffix, 1, 1) == "-") {
+ true % stop = true;
+ } { % } else {4r
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } if$ % }
+ } while$ % }
+ length - % int n = n - length(suffix);
+ #1 swap$ substring$ % return substring(str, 1, n);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring after the first '-'
+ % // returns the string itself if no '-'
+FUNCTION {extract.after.first.dash} { % String Entry::extract_after_first_dash(String str) {
+ duplicate$ % String suffix = str;
+ duplicate$ empty$ % int stop = empty(suffix);
+ { not } { % while (! stop) {
+ duplicate$ #1 #1 substring$ "-" = { % if (substring(suffix, 1, 1) == "-") {
+ true % stop = true;
+ } { % } else {4r
+ #2 global.max$ substring$ % suffix = substring(suffix, 2, global_max);
+ duplicate$ empty$ % stop = empty(suffix);
+ } if$ % }
+ } while$ % }
+ duplicate$ empty$ { % if (empty(suffix)) {
+ pop$ % return str;
+ } { % } else {
+ swap$ pop$ #2 global.max$ substring$ % return substring(suffix, 2, global_max);
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // extract the substring after the last '-'
+ % // returns the empty string if no '-'
+FUNCTION {extract.after.last.dash} { % String Entry::extract_after_last_dash(String str) {
+ duplicate$ contain.dash not { % if (! contain_dash(str)) {
+ pop$ "" % return "";
+ } { % } else {
+ {duplicate$ contain.dash} { % while (contain_dash(str)) {
+ extract.after.first.dash % str = extract_after_first_dash(str);
+ } while$ % }
+ % return str;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim.start} { % String Entry::trim_start(String str) {
+ {duplicate$ #1 #1 substring$ " " =} { % while (substring(str, 1, 1) == " ") {
+ #2 global.max$ substring$ % str = substring(str, 2, global_max);
+ } while$ % }
+ % return str;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim.end} { % String Entry::trim_end(String str) {
+ {duplicate$ get.last.chr " " =} { % while (get_last_chr(str) == " ") {
+ duplicate$ length #1 - % int n = length(str) - 1;
+ #1 swap$ substring$ % str = substring(str, 1, n);
+ } while$ % }
+ % return str;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {trim} { % String Entry::trim(String str) {
+ trim.start % str = trim_start(str);
+ trim.end % return trim_end(str);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {start.bibitem} { % void Entry::start_bibitem() {
+ newline$ % writeln();
+ "\bibitem{" cite$ * "}" * write$ % write("\bibitem{" + this.cite + "}");
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {end.bibitem} { % void Entry::end_bibitem() {
+ cap.period write$ % write(cap_period);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.in.chinese} { % int Entry::is_in_chinese() {
+ language empty$ { % if (empty(this.language)) {
+ false % return false;
+ } { % } else {
+ language "zh" = { % if (this.language == "zh") {
+ true % return true;
+ } { % } else {
+ false % return false;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {is.online} { % int Entry::is_online() {
+ url empty$ not { % if (! empty(this.url)) {
+ true % return true;
+ } { % } else {
+ doi empty$ not { % if (! empty(this.doi)) {
+ true % return true;
+ } { % } else {
+ false % return false;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {set.mark} { % void Entry::set_mark(String mark) {
+ 'mark := % this.mark = mark;
+ is.online { % if (is_online()) {
+ mark "/OL" * 'mark := % this.mark = this.mark + "/OL";
+ } { % } else {
+ media empty$ not { % if (! empty(this.media)) {
+ mark "/" * media * 'mark := % this.mark = this.mark + "/" + this.media;
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.volume} { % String Entry::cap_volume() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.volume.zh % return cap_volume_zh;
+ } { % } else {
+ cap.volume.en % return cap_volume_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.edition} { % String Entry::cap_edition() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.edition.zh % return cap_edition_zh;
+ } { % } else {
+ cap.edition.en % return cap_edition_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.anonymous} { % String Entry::cap_anonymous() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.anonymous.zh % return cap_anonymous_zh;
+ } { % } else {
+ cap.anonymous.en % return cap_anonymous_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.no.address} { % String Entry::cap_no_address() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.no.address.zh % return cap_no_address_zh;
+ } { % } else {
+ cap.no.address.en % return cap_no_address_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.no.publisher} { % String Entry::cap_no_publisher() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.no.publisher.zh % return cap_no_publisher_zh;
+ } { % } else {
+ cap.no.publisher.en % return cap_no_publisher_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.et.al} { % String Entry::cap_et_al() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.et.al.zh % return cap_et_al_zh;
+ } { % } else {
+ cap.et.al.en % return cap_et_al_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {cap.translate} { % String Entry::cap_translate() {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.translate.zh % return cap_translate_zh;
+ } { % } else {
+ cap.translate.en % return cap_translate_en;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.bibinfo} { % String Entry::format_bibinfo(String info, String type) {
+ swap$ add.brace swap$ % info = add_brace(info);
+ "\bib" swap$ * swap$ * % return "\bib" + type + info;
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INTEGERS { nameindex namecount } % static int nameindex, namecount;
+STRINGS { namelist nameformat } % static String namelist, nameformat;
+STRINGS { firstname lastname jrname vonname} % static String firstname, lastname, jrname, vonname;
+ %
+FUNCTION {format.names} { % String Entry::format_names(String names) {
+ 'namelist := % namelist = names;
+ namelist num.names$ 'namecount := % namecount = num_names(namelist);
+ "" % String result = "";
+ #0 'nameindex := % nameindex = 0;
+ {nameindex namecount < nameindex #3 < and} { % while ((nameindex < namecount) && (nameindex < 3)) {
+ nameindex #1 + 'nameindex := % nameindex = nameindex + 1;
+ nameindex #1 > { % if (nameindex > 1) {
+ cap.comma * % result = result + cap_comma;
+ } 'skip$ if$ % }
+ namelist nameindex "{vv}" format.name$ % String tmp = format_name(namelist, nameindex, "{vv}");
+ 'vonname := % vonname = tmp;
+ namelist nameindex "{jj}" format.name$ % tmp = format_name(namelist, nameindex, "{jj}");
+ remove.dots 'jrname := % jrname = remove_dots(tmp);
+ namelist nameindex "{f}" format.name$ % tmp = format_name(namelist, nameindex, "{f}");
+ remove.dots % tmp = remove_dots(tmp);
+ 'firstname := % firstname = change_case(tmp, "u");
+ namelist nameindex "{ll}" format.name$ % tmp = format_name(namelist, nameindex, "{ll}");
+ 'lastname := % lastname = change_case(tmp, "u");
+ jrname empty$ not { % if (! empty(jrname)) {
+ jrname * " " * % result = result + jrname + " "
+ } 'skip$ if$ % }
+ vonname empty$ not { % if (! empty(vonname)) {
+ vonname * " " * % result = result + vonname + " "
+ } 'skip$ if$ % }
+ lastname empty$ not { % if (! empty(lastname)) {
+ lastname * " " * % result = result + lastname + " "
+ } 'skip$ if$ % }
+ firstname empty$ not { % if (! empty(firstname)) {
+ firstname * " " * % result = result + firstname + " "
+ } 'skip$ if$ % }
+ trim.end % result = trim_end(result);
+ } while$ % }
+ nameindex namecount < { % if (nameindex < namecount) {
+ cap.et.al * % result = result + cap_et_al();
+ } 'skip$ if$ % }
+} % }
+ %
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // format English names
+FUNCTION {format.names.en} { % String Entry::format_names_en(String names) {
+ format.names % format_names(names);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % // format Chinese names
+FUNCTION {format.names.zh} { % String Entry::format_names_zh(String names) {
+ format.names % format_names(names);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.author} { % String Emtry::format_author(String authors) {
+ is.in.chinese { % if (is_in_chinese) {
+ format.names.zh % authors = format_names_zh(authors);
+ } { % } else {
+ format.names.en % authors = format_names_en(authors);
+ } if$ % }
+ "author" format.bibinfo % return format_bibinfo(authors, "author");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.editor} { % String Emtry::format_author(String editors) {
+ is.in.chinese { % if (is_in_chinese) {
+ format.names.zh % editors = format_names_zh(editors);
+ } { % } else {
+ format.names.en % editors = format_names_en(editors);
+ } if$ % }
+ "editor" format.bibinfo % return format_bibinfo(editors, "editor");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.translator} { % String Emtry::format_translator(String translators) {
+ is.in.chinese { % if (is_in_chinese) {
+ duplicate$ % String names = translators;
+ format.names.zh % translators = format_names_zh(translators);
+ swap$ num.names$ #3 > { % if (num_names(names) > 3) {
+ cap.translate.zh * % translators = translators + cap_translate_zh;
+ } { % } else {
+ cap.comma * cap.translate.zh * % translators = translators + cap_comma + cap_translate_zh;
+ } if$ % }
+ } { % } else {
+ duplicate$ % String names = translators;
+ format.names.en % translators = format_names_en(translators);
+ swap$ num.names$ #3 > { % if (num_names(names) > 3) {
+ cap.translate.en * % translators = translators + cap_translate_en;
+ } { % } else {
+ cap.comma * cap.translate.en * % translators = translators + cap_comma + cap_translate_en;
+ } if$ % }
+ } if$ % }
+ "translator" format.bibinfo % return format_bibinfo(translator, "translator");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.title} { % String Emtry::format_title(String title) {
+ "title" format.bibinfo % return format_bibinfo(title, "title");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.booktitle} { % String Emtry::format_booktitle(String booktitle) {
+ "booktitle" format.bibinfo % return format_bibinfo(booktitle, "booktitle");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.mark} { % String Emtry::format_mark(String mark) {
+ "[" swap$ * "]" * % mark = "[" + mark + "]";
+ "mark" format.bibinfo % return format_bibinfo(mark, "mark");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.country} { % String Emtry::format_country(String country) {
+ "country" format.bibinfo % return format_bibinfo(country, "country");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.patentid} { % String Emtry::format_patentid(String patentid) {
+ "patentid" format.bibinfo % return format_bibinfo(patentid, "patentid");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.edition} { % String Emtry::format_edition(String edition) {
+ duplicate$ is.number { % if (is_number(edition)) {
+ is.in.chinese { % if (is_in_chinese()) {
+ cap.edition.zh * % edition = edition + cap_edition_zh;
+ } { % } else {
+ num.to.ordinal.en cap.edition.en * % edition = num_to_ordinal_en(edition) + cap_edition_en;
+ } if$ % }
+ } 'skip$ if$ % }
+ % // use a \mbox{} to prevent line break within edition
+ "\mbox{" swap$ * "}" * % edition = "\mbox{" + edition + "}";
+ "edition" format.bibinfo % return format_bibinfo(edition, "edition");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.organization} { % String Emtry::format_organization(String organization) {
+ "organization" format.bibinfo % return format_bibinfo(organization, "organization");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.address} { % String Emtry::format_address(String address) {
+ "address" format.bibinfo % return format_bibinfo(address, "address");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.publisher} { % String Emtry::format_publisher(String publisher) {
+ "publisher" format.bibinfo % return format_bibinfo(publisher, "publisher");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.institution} { % String Emtry::format_institution(String institution) {
+ "institution" format.bibinfo % return format_bibinfo(institution, "institution");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.school} { % String Emtry::format_school(String school) {
+ "school" format.bibinfo % return format_bibinfo(school, "school");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.year} { % String Emtry::format_year(String year) {
+ "year" format.bibinfo % return format_bibinfo(year, "year");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.date} { % String Emtry::format_date(String date) {
+ "date" format.bibinfo % return format_bibinfo(date, "date");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.journal} { % String Emtry::format_journal(String journal) {
+ "journal" format.bibinfo % return format_bibinfo(journal, "journal");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.volume} { % String Emtry::format_volume(String volume) {
+ "volume" format.bibinfo % return format_bibinfo(volume, "volume");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.number} { % String Emtry::format_number(String number) {
+ add.bracket % number = add_bracket(number);
+ "number" format.bibinfo % return format_bibinfo(number, "number");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.report.number} { % String Emtry::format_report_number(String number) {
+ "number" format.bibinfo % return format_bibinfo(number, "number");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.version} { % String Emtry::format_version(String version) {
+ "version" format.bibinfo % return format_bibinfo(version, "version");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.pages} { % String Emtry::format_pages(String pages) {
+ "pages" format.bibinfo % return format_bibinfo(pages, "pages");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.modifydate} { % String Emtry::format_modifydate(String modifydate) {
+ add.bracket % modifydate = add_bracket(modifydate);
+ "modifydate" format.bibinfo % return format_bibinfo(modifydate, "modifydate");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {format.citedate} { % String Emtry::format_citedate(String citedate) {
+ add.squarebracket % citedate = add_squarebracket(citedate);
+ "citedate" format.bibinfo % return format_bibinfo(citedate, "citedate");
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % // NOTE: do not use the format_bibinfo() for URL,
+ % // since if the URL contains special symbols such
+ % // as '%', the \biburl{} will be broken.
+FUNCTION {format.url} { % String Emtry::format_url(String url) {
+ "\url{" swap$ * "}" * % return "\url{" + url + "}";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.full.title} { % String Entry::get_full_title() {
+ series empty$ { % if (empty(this.series)) {
+ volume empty$ { % if (empty(this.volume)) {
+ title % return this.title;
+ } { % } else {
+ title cap.colon * cap.volume * volume * % return this.title + cap_colon + cap_volume() + this.volume;
+ } if$ % }
+ } { % } else {
+ volume empty$ { % if (empty(this.volume)) {
+ series cap.colon * title * % return this.series + cap_colon + this.title;
+ } { % } else {
+ series cap.comma * cap.volume * volume * % String str = this.series + cap_comma + cal_volume() + this.volume;
+ cap.colon * title * % return str + cap_colon + this.title;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.full.booktitle} { % String Entry::get_full_booktitle() {
+ series empty$ { % if (empty(this.series)) {
+ volume empty$ { % if (empty(this.volume)) {
+ booktitle % return this.booktitle;
+ } { % } else {
+ booktitle cap.colon * cap.volume * volume * % return this.booktitle + cap_colon + cap_volume() + this.volume;
+ } if$ % }
+ } { % } else {
+ volume empty$ { % if (empty(this.volume)) {
+ series cap.colon * booktitle * % return this.series + cap_colon + this.booktitle;
+ } { % } else {
+ series cap.comma * cap.volume * volume * % String str = this.series + cap_comma + cal_volume() + this.volume;
+ cap.colon * booktitle * % return str + cap_colon + this.booktitle;
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {get.pages} { % String Entry::get_pages() {
+ pages contain.dash { % if (contain_dash(this.pages)) {
+ pages extract.before.first.dash % String p1 = extract_before_first_dash(this.pages);
+ pages extract.after.last.dash % String p2 = extract_after_last_dash(this.pages);
+ cap.dash swap$ * * % return p1 + cap_dash + p2;
+ } { % } else {
+ pages % return this.pages;
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.author.or.editor} { % void Entry::output_author_or_editor(int required) {
+ 'required := % this.required = required;
+ author empty$ not { % if (! empty(this.author)) {
+ author format.author write$ % write(format_author(this.author));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ editor empty$ not { % if (! empty(this.editor)) {
+ editor format.editor write$ % write(format_editor(this.editor));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require author/editor: " cite$ * warning$% warning("Require author/editor: " + this.cite);
+ cap.anonymous format.author write$ % write(format_author(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.author} { % void Entry::output_author(int required) {
+ 'required := % this.required = required;
+ author empty$ not { % if (! empty(this.author)) {
+ author format.author write$ % write(format_author(this.author));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require author: " cite$ * warning$ % warning("Require author: " + this.cite);
+ cap.anonymous format.author write$ % write(format_author(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.editor} { % void Entry::output_editor(int required) {
+ 'required := % this.required = required;
+ editor empty$ not { % if (! empty(this.editor)) {
+ editor format.editor write$ % write(format_editor(this.editor));
+ cap.period write$ % write(cap_period);
+ } { % } else {
+ required { % if (required == 1) {
+ "Require editor: " cite$ * warning$ % warning("Require editor: " + this.cite);
+ cap.anonymous format.editor write$ % write(format_editor(cap_anonymous()));
+ cap.period write$ % write(cap_period);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.title} { % void Entry::output_title(int required) {
+ 'required := % this.required = required;
+ title empty$ not { % if (! empty(this.title)) {
+ title format.title write$ % write(format_title(this.title));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require title: " cite$ * warning$ % warning("Require title: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.series.volume.title} { % void Entry::output_series_volume_title(int required) {
+ 'required := % this.required = required;
+ title empty$ not { % if (! empty(this.title)) {
+ get.full.title format.booktitle write$ % write(format_booktitle(get_full_title()));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require title: " cite$ * warning$ % warning("Require title: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.series.volume.booktitle} { % void Entry::output_series_volume_booktitle(int required) {
+ 'required := % this.required = required;
+ booktitle empty$ not { % if (! empty(this.booktitle)) {
+ get.full.booktitle format.booktitle write$ % write(format_booktitle(get_full_booktitle());
+ } { % } else {
+ required { % if (required == 1) {
+ "Require booktitle: " cite$ * warning$ % warning("Require booktitle: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.journal} { % void Entry::output_journal(int required) {
+ 'required := % this.required = required;
+ journal empty$ not { % if (! empty(this.journal)) {
+ cap.period write$ % write(cap_period);
+ journal format.journal write$ % write(format_journal(this.journal));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require journal: " cite$ * warning$ % warning("Require journal: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.mark} { % void Entry::output_mark(int required) {
+ 'required := % this.required = required;
+ mark empty$ not { % if (! empty(this.mark)) {
+ mark format.mark write$ % write(format_mark(this.mark));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require mark: " cite$ * warning$ % warning("Require mark: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.translator} { % void Entry::output_translator(int required) {
+ 'required := % this.required = required;
+ translator empty$ not { % if (! empty(this.translator)) {
+ cap.period write$ % write(cap_period);
+ translator format.translator write$ % write(format_translator(this.translator));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require translator: " cite$ * warning$ % warning("Require translator: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.edition} { % void Entry::output_edition(int required) {
+ 'required := % this.required = required;
+ edition empty$ not { % if (! empty(this.edition)) {
+ cap.period write$ % write(cap_period);
+ edition format.edition write$ % write(format_edition(this.edition));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require edition: " cite$ * warning$ % warning("Require edition: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.address} { % void Entry::output_address(int required) {
+ 'required := % this.required = required;
+ address empty$ not { % if (! empty(this.address)) {
+ cap.period write$ % write(cap_period);
+ address format.address write$ % write(format_address(this.address));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require address: " cite$ * warning$ % warning("Require address: " + this.cite);
+ cap.period write$ % write(cap_period);
+ cap.no.address format.address write$ % write(format_address(cap_no_address()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.publisher} { % void Entry::output_publisher(int required) {
+ 'required := % this.required = required;
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ cap.colon write$ % write(cap_colon);
+ publisher format.publisher write$ % write(format_publisher(this.publisher));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require publisher: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.publisher write$ % write(format_publisher(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.publisher.no.address} { % void Entry::output_publisher_no_address(int required) {
+ 'required := % this.required = required;
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ cap.period write$ % write(cap_period);
+ publisher format.publisher write$ % write(format_publisher(this.publisher));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require publisher: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.period write$ % write(cap_period);
+ cap.no.publisher format.publisher write$ % write(format_publisher(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.school} { % void Entry::output_school(int required) {
+ 'required := % this.required = required;
+ school empty$ not { % if (! empty(this.school)) {
+ cap.colon write$ % write(cap_colon);
+ school format.school write$ % write(format_school(this.school));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require school: " cite$ * warning$ % warning("Require publisher: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.school write$ % write(format_school(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.institution} { % void Entry::output_institution(int required) {
+ 'required := % this.required = required;
+ institution empty$ not { % if (! empty(this.institution)) {
+ cap.colon write$ % write(cap_colon);
+ institution format.institution write$ % write(format_publisher(this.institution));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require institution: " cite$ * warning$ % warning("Require institution: " + this.cite);
+ cap.colon write$ % write(cap_colon);
+ cap.no.publisher format.institution write$ % write(format_institution(cap_no_publisher()));
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.year} { % void Entry::output_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year format.year write$ % write(format_year(this.year));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.pages} { % void Entry::output_pages(int required) {
+ 'required := % this.required = required;
+ pages empty$ not { % if (! empty(this.pages)) {
+ cap.colon write$ % write(cap_colon);
+ get.pages format.pages write$ % write(format_pages(get_pages()));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require pages: " cite$ * warning$ % warning("Require pages: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.modifydate} { % void Entry::output_modifydate(int required) {
+ 'required := % this.required = required;
+ modifydate empty$ not { % if (! empty(this.modifydate)) {
+ cap.space write$ % write(cap_space);
+ modifydate format.modifydate write$ % write(format_modifydate(this.modifydate));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require modifydate: " cite$ * warning$ % warning("Require modifydate: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.citedate} { % void Entry::output_citedate(int required) {
+ 'required := % this.required = required;
+ citedate empty$ not { % if (! empty(this.citedate)) {
+ cap.space write$ % write(cap_space);
+ citedate format.citedate write$ % write(format_citedate(this.citedate));
+ } { % } else {
+ required is.online or { % if ((required == 1) || (is_online())) {
+ "Require citedate: " cite$ * warning$ % warning("Require citedate: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.date} { % void Entry::output_date(int required) {
+ 'required := % this.required = required;
+ date empty$ not { % if (! empty(this.date)) {
+ date format.date write$ % write(format_date(this.date));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require date: " cite$ * warning$ % warning("Require date: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.volume} { % void Entry::output_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume format.volume write$ % write(format_volume(this.volume));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.number} { % void Entry::output_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number format.number write$ % write(format_number(this.number));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.report.number} { % void Entry::output_report_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ cap.colon write$ % write(cap_colon);
+ number format.report.number write$ % write(format_report_number(this.number));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.country} { % void Entry::output_country(int required) {
+ 'required := % this.required = required;
+ country empty$ not { % if (! empty(this.country)) {
+ cap.colon write$ % write(cap_colon);
+ country format.country write$ % write(format_country(this.country));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require country: " cite$ * warning$ % warning("Require country: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.patentid} { % void Entry::output_patentid(int required) {
+ 'required := % this.required = required;
+ patentid empty$ not { % if (! empty(this.patentid)) {
+ cap.comma write$ % write(cap_comma);
+ patentid format.patentid write$ % write(format_patentid(this.patentid));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require patentid: " cite$ * warning$ % warning("Require patentid: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.year} { % void Entry::output_start_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year extract.before.first.dash % String str = extract_before_first_dash(this.year);
+ format.year write$ % write(format_year(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.volume} { % void Entry::output_start_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume extract.before.first.dash % String str = extract_before_first_dash(this.volume);
+ format.volume write$ % write(format_volume(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.start.number} { % void Entry::output_start_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number extract.before.first.dash % String str = extract_before_first_dash(this.number);
+ format.number write$ % write(format_number(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.year} { % void Entry::output_end_year(int required) {
+ 'required := % this.required = required;
+ year empty$ not { % if (! empty(this.year)) {
+ year extract.after.last.dash % String str = extract_after_last_dash(this.year);
+ format.year write$ % write(format_year(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require year: " cite$ * warning$ % warning("Require year: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.volume} { % void Entry::output_end_volume(int required) {
+ 'required := % this.required = required;
+ volume empty$ not { % if (! empty(this.volume)) {
+ cap.comma write$ % write(cap_comma);
+ volume extract.after.last.dash % String str = extract_after_last_dash(this.volume);
+ format.volume write$ % write(format_volume(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require volume: " cite$ * warning$ % warning("Require volume: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.end.number} { % void Entry::output_end_number(int required) {
+ 'required := % this.required = required;
+ number empty$ not { % if (! empty(this.number)) {
+ number extract.after.last.dash % String str = extract_after_last_dash(this.number);
+ format.number write$ % write(format_number(str));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require number: " cite$ * warning$ % warning("Require number: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.url.or.doi} { % void Entry::output_url_or_doi(int required) {
+ 'required := % this.required = required;
+ url empty$ not { % if (! empty(this.url)) {
+ cap.period write$ % write(cap_period);
+ url format.url write$ % write(format_url(this.url));
+ } { % } else {
+ doi empty$ not { % if (! empty(this.doi)) {
+ cap.period write$ % write(cap_period);
+ cap.doi.url doi * format.url write$ % write(format_url(cap_doi_url + this.doi));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require URL or DOI: " cite$ * warning$ % warning("Require URL or DOI: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.url} { % void Entry::output_url(int required) {
+ 'required := % this.required = required;
+ url empty$ not { % if (! empty(this.url)) {
+ cap.period write$ % write(cap_period);
+ url format.url write$ % write(format_url(this.url));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require URL: " cite$ * warning$ % warning("Require URL: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {output.version} { % void Entry::output_version(int required) {
+ 'required := % this.required = required;
+ version empty$ not { % if (! empty(this.version)) {
+ cap.period write$ % write(cap_period);
+ version format.version write$ % write(format_version(this.version));
+ } { % } else {
+ required { % if (required == 1) {
+ "Require version: " cite$ * warning$ % warning("Require version: " + this.cite);
+ } 'skip$ if$ % }
+ } if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {book.impl} { % void Entry::book_impl() {
+ start.bibitem % start_bibitem();
+ true output.author.or.editor % output_author_or_editor(true);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {book} { % void Entry::book() {
+ "M" set.mark % set_mark("M");
+ book.impl % book_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {collection} { % void Entry::collection() {
+ "G" set.mark % set_mark("G");
+ book.impl % book_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {proceedings} { % void Entry::proceedings() {
+ "C" set.mark % set_mark("C");
+ start.bibitem % start_bibitem();
+ true output.editor % output_editor(true);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {conference} { % void Entry::conference() {
+ proceedings % proceedings();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {thesis.impl} { % void Entry::thesis_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ true output.address % output_address(true);
+ true output.school % output_school(true);
+ cap.comma write$ % write(cap_comma);
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {phdthesis} { % void Entry::phdthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {masterthesis} { % void Entry::masterthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {bachelorthesis} { % void Entry::bachelorthesis() {
+ "D" set.mark % set_mark("D");
+ thesis.impl % thesis_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {techreport} { % void Entry::techreport() {
+ "R" set.mark % set_mark("R");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ false output.report.number % output_report_number(false);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ false output.version % output_version(false);
+ institution empty$ not { % if (! empty(this.institution)) {
+ true output.address % output_address(true);
+ true output.institution % output_institution(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {standard} { % void Entry::standard() {
+ "S" set.mark % set_mark("S");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {reference} { % void Entry::reference() {
+ "K" set.mark % set_mark("K");
+ start.bibitem % start_bibitem();
+ false output.author.or.editor % output_author_or_editor(false);
+ true output.series.volume.title % output_series_volume_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {manual} { % void Entry::manual() {
+ reference % reference();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {periodical.impl} { % void Entry::periodical_impl() {
+ start.bibitem % start_bibitem();
+ false output.editor % output_editor(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.start.year % output_start_year(true);
+ false output.start.volume % output_start_volume(false);
+ false output.start.number % output_start_number(false);
+ cap.dash write$ % write(cap_dash);
+ year contain.dash { % if (contain_dash(this.year)) {
+ true output.end.year % output_end_year(true);
+ false output.end.volume % output_end_volume(false);
+ false output.end.number % output_end_number(false);
+ } 'skip$ if$ % }
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.start.year % output_start_year(true);
+ cap.dash write$ % write(cap_dash);
+ year contain.dash { % if (contain_dash(this.year)) {
+ true output.end.year % output_end_year(true);
+ } 'skip$ if$ % }
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {periodical} { % void Entry::periodical() {
+ "J" set.mark % set_mark("J");
+ periodical.impl % periodical_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {newspaper} { % void Entry::newspaper() {
+ "N" set.mark % set_mark("N");
+ periodical.impl % periodical_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {patent} { % void Entry::patent() {
+ "P" set.mark % set_mark("P");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.country % output_country(true);
+ true output.patentid % output_patentid(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.date % output_date(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {online} { % void Entry::online() {
+ "EB" set.mark % set_mark("EB");
+ start.bibitem % start_bibitem();
+ false output.author % output_author(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ address empty$ not { % if (! empty(this.address)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ true output.publisher.no.address % output_publisher_no_address(true);
+ cap.comma write$ % write(cap_comma);
+ } if$ % }
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.modifydate % output_modifydate(false);
+ true output.citedate % output_citedate(true);
+ true output.url % output_url(true);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {webpage} { % void Entry::online() {
+ online % online();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {program.impl} { % void Entry::program_impl() {
+ start.bibitem % start_bibitem();
+ false output.author % output_author(false);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {program} { % void Entry::program() {
+ "CP" set.mark % set_mark("CP");
+ program.impl % program_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {database} { % void Entry::database() {
+ "DB" set.mark % set_mark("DB");
+ program.impl % program_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {unpublished} { % void Entry::unpublished() {
+ "H" set.mark % set_mark("H");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ cap.period write$ % write(cap_period);
+ true output.year % output_year(true);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {manuscript} { % void Entry::manuscript() {
+ unpublished % unpublished();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inbook.impl} { % void Entry::inbook_impl() {
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ false output.translator % output_translator(false);
+ cap.double.slash write$ % write(cap_double_slash);
+ false output.editor % output_editor(false);
+ true output.series.volume.booktitle % output_series_volume_booktitle(true);
+ false output.edition % output_edition(false);
+ publisher empty$ not { % if (! empty(this.publisher)) {
+ true output.address % output_address(true);
+ true output.publisher % output_publisher(true);
+ cap.comma write$ % write(cap_comma);
+ } { % } else {
+ cap.period write$ % write(cap_period);
+ } if$ % }
+ true output.year % output_year(true);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inbook} { % void Entry::inbook() {
+ "M" set.mark % set_mark("M");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {incollection} { % void Entry::incollection() {
+ "G" set.mark % set_mark("G");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {inproceedings} { % void Entry::inproceedings() {
+ "C" set.mark % set_mark("C");
+ inbook.impl % inbook_impl();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {article} { % void Entry::article() {
+ "J" set.mark % set_mark("J");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ true output.journal % output_journal(true);
+ cap.comma write$ % write(cap_comma);
+ true output.year % output_year(true);
+ false output.volume % output_volume(false);
+ false output.number % output_number(false);
+ false output.pages % output_pages(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {news} { % void Entry::news() {
+ "N" set.mark % set_mark("N");
+ start.bibitem % start_bibitem();
+ true output.author % output_author(true);
+ true output.title % output_title(true);
+ true output.mark % output_mark(true);
+ true output.journal % output_journal(true);
+ cap.comma write$ % write(cap_comma);
+ true output.date % output_date(true);
+ false output.number % output_number(false);
+ false output.citedate % output_citedate(false);
+ false output.url.or.doi % output_url_or_doi(false);
+ end.bibitem % end_bibitem();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {default.type} { % void Entry::default_type() {
+ "Unsupported entry type for " cite$ * warning$ % warning("Unsupported entry type for " + this.cite);
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {longest.label.pass} { % void longest_label_pass(Entry entry) {
+ entry.count #1 + 'entry.count := % entry_count = entry_count + 1;
+ entry.count int.to.str$ 'label := % this.label = int_to_str(entry_count);
+ label width$ longest.label.width > { % if (width(this.label) > longest_label_width) {
+ label 'longest.label := % longest_label = this.label;
+ label width$ 'longest.label.width := % longest_label_width = width(this.label);
+ } 'skip$ if$ % }
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {write.style.commands} { % void write_style_commands() {
+ cmd.bibauthor write$ % write(cmd_bibauthor);
+ newline$ % writeln();
+ cmd.bibeditor write$ % write(cmd_bibeditor);
+ newline$ % writeln();
+ cmd.bibtranslator write$ % write(cmd_bibtranslator);
+ newline$ % writeln();
+ cmd.bibtitle write$ % write(cmd_bibtitle);
+ newline$ % writeln();
+ cmd.bibbooktitle write$ % write(cmd_bibbooktitle);
+ newline$ % writeln();
+ cmd.bibjournal write$ % write(cmd_bibjournal);
+ newline$ % writeln();
+ cmd.bibmark write$ % write(cmd_bibmark);
+ newline$ % writeln();
+ cmd.bibcountry write$ % write(cmd_bibcountry);
+ newline$ % writeln();
+ cmd.bibpatentid write$ % write(cmd_bibpatentid);
+ newline$ % writeln();
+ cmd.bibedition write$ % write(cmd_bibedition);
+ newline$ % writeln();
+ cmd.biborganization write$ % write(cmd_biborganization);
+ newline$ % writeln();
+ cmd.bibaddress write$ % write(cmd_bibaddress);
+ newline$ % writeln();
+ cmd.bibpublisher write$ % write(cmd_bibpublisher);
+ newline$ % writeln();
+ cmd.bibinstitution write$ % write(cmd_bibinstitution);
+ newline$ % writeln();
+ cmd.bibschool write$ % write(cmd_bibschool);
+ newline$ % writeln();
+ cmd.bibvolume write$ % write(cmd_bibvolume);
+ newline$ % writeln();
+ cmd.bibnumber write$ % write(cmd_bibnumber);
+ newline$ % writeln();
+ cmd.bibversion write$ % write(cmd_bibversion);
+ newline$ % writeln();
+ cmd.bibpages write$ % write(cmd_bibpages);
+ newline$ % writeln();
+ cmd.bibmodifydate write$ % write(cmd_bibmodifydate);
+ newline$ % writeln();
+ cmd.bibcitedate write$ % write(cmd_bibcitedate);
+ newline$ % writeln();
+ cmd.bibyear write$ % write(cmd_bibyear);
+ newline$ % writeln();
+ cmd.bibdate write$ % write(cmd_bibdate);
+ newline$ % writeln();
+ cmd.biburl write$ % write(cmd_biburl);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {begin.bib} { % void begin_bib() {
+ preamble$ empty$ not { % if (! empty(premble)) {
+ preamble$ write$ % write(premeable);
+ newline$ % writeln();
+ } 'skip$ if$ % }
+ env.bibbegin write$ % write(env_bibbegin);
+ "{" longest.label * "}" * write$ % write("{" + longest.label + "}");
+ newline$ % writeln();
+ write.style.commands % write_style_commands();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {end.bib} { % void end_bib() {
+ newline$ % writeln();
+ env.bibend write$ % write(env_bibend);
+ newline$ % writeln();
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+FUNCTION {initialize} { % void initialize() {
+ #0 'entry.count := % entry_count = 0;
+ #0 'longest.label.width := % longest_label_width = 0;
+ "" 'longest.label := % longest_label = "";
+} % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % void main() {
+READ % List<Entry> entryList = read("<file>.bib");
+EXECUTE {initialize} % initialize();
+ITERATE {longest.label.pass} % for (Entry entry : entryList) {
+ % longest_label_pass(entry);
+ % }
+EXECUTE {begin.bib} % begin_bib();
+ITERATE {call.type$} % for (Entry entry : entryList) {
+ % switch (typeof(entry)) {
+ % case "book":
+ % entry.book();
+ % break;
+ % case "article":
+ % entry.article();
+ % break;
+ % .
+ % .
+ % .
+ % case "incollection":
+ % entry.incollection();
+ % break;
+ % case "misc":
+ % entry.misc();
+ % break;
+ % default:
+ % entry.default_type();
+ % }
+ % }
+EXECUTE {end.bib} % end_bib();
+ % }
+ %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% End of file `GBT7714-2005.bst'
diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.dtx b/macros/latex/contrib/hitszthesis/hitszthesis.dtx
index eebbca7b50..feb49f4a6b 100644
--- a/macros/latex/contrib/hitszthesis/hitszthesis.dtx
+++ b/macros/latex/contrib/hitszthesis/hitszthesis.dtx
@@ -16,7 +16,7 @@
%
% \iffalse
%<*driver>
-\ProvidesFile{hitszthesis.dtx}[2020/03/05 v2.3 A Bachelor Thesis Template for Harbin Institute of Technology, ShenZhen (HITSZ) ]
+\ProvidesFile{hitszthesis.dtx}[2020/03/10 3.0 Dissertation Template for Harbin Institute of Technology, ShenZhen (HITSZ)]
\documentclass{ltxdoc}
\usepackage{dtx-style}
@@ -30,7 +30,23 @@
%</driver>
% \fi
%
-% \GetFileInfo{\jobname.dtx}
+% \CheckSum{0}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
%
% \DoNotIndex{\newenvironment,\@bsphack,\@empty,\@esphack,\sfcode}
% \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter}
@@ -44,41 +60,40 @@
% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect}
% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize}
% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny}
-% \DoNotIndex{\normalfont,\bfseries,\slshape,\sffamily,\interlinepenalty}
-% \DoNotIndex{\textbf,\textit,\textsf,\textsc}
-% \DoNotIndex{\hfil,\par,\hskip,\vskip,\vspace,\quad}
% \DoNotIndex{\centering,\raggedright,\ref}
% \DoNotIndex{\c@secnumdepth,\@startsection,\@setfontsize}
% \DoNotIndex{\ ,\@plus,\@minus,\p@,\z@,\@m,\@M,\@ne,\m@ne}
% \DoNotIndex{\@@par,\DeclareOperation,\RequirePackage,\LoadClass}
% \DoNotIndex{\AtBeginDocument,\AtEndDocument}
-% \DoNotIndex{\widowpenalty,\vfill,\usetikzlibrary,\usecounter}
-% \DoNotIndex{\underline,\to,\text,\textsuperscript,\textwidth}
-% \DoNotIndex{\thanks,\subsubsection,\subsection,\sloppy,\rule}
-% \DoNotIndex{\ProvidesClass,\makebox,\makeatletter,\makeatother}
-% \DoNotIndex{\,,\.,\;}
+%
+% \GetFileInfo{\jobname.dtx}
%
% \changes{v1.0}{2019/9/26}{Initial creation}
% \changes{v1.1}{2019/10/30}{Fix loading \pkg{mtpro2} bug, add \pkg{etex} package}
% \changes{v1.2}{2020/02/15}{Add two options: onerow or tworow, infoleft or infocenter, migrate settings file into cls file, initial commit on ctan}
% \changes{v2.0}{2020/02/18}{Format cls file to dtx file, regulate thesis template for HITSZ}
+% \changes{v2.2}{2020/03/04}{Use \pkg{ctex} to set chinese titile and toc}
+% \changes{v2.2}{2020/03/05}{Use \pkg{subeqnarray} rather than \pkg{cases} to write sub equations}
+% \changes{v2.2}{2020/03/04}{Omit sections of appendix in toc}
+% \changes{v2.3}{2020/03/05}{Add math font option XITS}
+% \changes{v2.3}{2020/03/05}{Add boldcaption option to control the caption font}
%
% \def\indexname{索引}
% \def\glossaryname{修改记录}
% \IndexPrologue{\section{\indexname}}
% \GlossaryPrologue{\section{\glossaryname}}
-%
+%
% \definecolor{hitcolor}{RGB}{21,95,130}
-% \title{\bfseries\color{hitcolor}\hitszthesis:哈尔滨工业大学(深圳)\\ 本科毕业设计(论文)模板}
+% \title{\bfseries\color{hitcolor}\hitszthesis:哈尔滨工业大学(深圳)\\ 学位论文模板}
% \author{{\Large\fangsong 杨敬轩}\\[5pt]\texttt{yanglatex2e@gmail.com}\\[5pt]\texttt{yangjingxuan@stu.hit.edu.cn}}
-% \date{\fileversion\ (\filedate)}
+% \date{v\fileversion\ (\filedate)}
% \maketitle\thispagestyle{empty}
%
% \vskip0.5cm
%
-% \def\abstractname{\Large 摘要}
+% \def\abstractname{\Large 摘\quad 要}
% \begin{abstract}\normalsize\vskip0.5cm
-% \hitszthesis 宏包旨在建立一个{\bfseries 规格严格、功夫到家}的哈尔滨工业大学(深圳)学位论文模板,目前只包含本科毕业设计(论文)模板。模板的构建基于 \pkg{hitszthesis.dtx} 与 \pkg{hitszthesis.ins},在使用本模板之前,请仔细阅读\file{hitszthesis.pdf}(本文件)、\file{main.tex}(撰写示例)及\file{main.pdf}(撰写效果)。
+% \hitszthesis 宏包旨在建立一个{\bfseries 规格严格、功夫到家}的哈尔滨工业大学(深圳)学位论文模板,目前包含本硕博毕业设计(论文)模板。模板的构建基于 \pkg{hitszthesis.dtx} 与 \pkg{hitszthesis.ins},在使用本模板之前,请仔细阅读\file{hitszthesis.pdf}(本文件)、\file{main.tex}(撰写示例)及\file{main.pdf}(撰写效果)。
% \end{abstract}
%
% \vskip1.5cm
@@ -88,8 +103,8 @@
% \begin{enumerate}
% \item 本模板的发布遵守 \href{http://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License 1.3c}以及其后的最新版本,使用前请认真阅读协议内
% 容。
-% \item 本模板为作者根据哈尔滨工业大学(深圳)教务处颁发的《本科毕业设计(论文)撰写规范》、《书写范例》
-% 编写而成,旨在供哈尔滨工业大学(深圳)本科毕业生撰写学位论文使用。
+% \item 本模板为作者根据\hitsz 教务处颁发的\UGR 与\PGR 编写而成,
+% 旨在供\hitsz 毕业生撰写学位论文使用。
% \item 哈尔滨工业大学(深圳)教务处只提供毕业论文写作指南,不提供官方模板,也不会授
% 权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格式审查老师
% 不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。
@@ -105,15 +120,14 @@
% \begin{multicols}{2}[
% \setlength{\columnseprule}{.4pt}
% \setlength{\columnsep}{18pt}]
-% \large
% \tableofcontents
% \end{multicols}
% \clearpage
%
% \section{模板介绍}
-% \hitszthesis\ (\textbf{H}arbin \textbf{I}nstitute of \textbf{T}echnology,
+% \hitszthesis\ (\textbf{H}arbin \textbf{I}nstitute of \textbf{T}echnology,
% \textbf{S}hen\textbf{Z}hen \LaTeX\
-% \textbf{Thesis} Template) 是为了帮助哈尔滨工业大学(深圳)本科毕业生撰写毕业论文而编写
+% \textbf{Thesis} Template) 是为了帮助哈尔滨工业大学(深圳)毕业生撰写毕业论文而编写
% 的 \LaTeX\ 论文模板。
%
% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处可以参考示例文档或者根据
@@ -156,14 +170,18 @@
% \endlastfoot
% hitszthesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\
% hitszthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule
-% hitszthesis.cls & 模板类文件(由上述两个文件生成)\\\midrule
+% hitszthesis.cls & 模板类文件\\
+% hitszthesis.cfg & 模板配置文件\\
+% hitszthesis.bst & 参考文献样式文件\\\midrule
+% hitszthesis.ist & 索引样式文件\\\midrule
+% reference.bib & 文档参考文献\\
% main.tex & 示例文档主文件\\
-% spine.tex & 书脊示例文档\\
-% figure/ & 示例文档插图路径\\
-% front/ & 示例文档封面插图路径\\
-% tex/ & 示例文档正文各部分路径\\
+% front/ & 正文之前内容\\
+% body/ & 正文内容\\
+% body/ & 正文之后内容\\
+% figures/ & 示例文档图片路径\\
% hitszthesis.sty & 为示例文档加载其它宏包\\\midrule
-% Makefile & GNU make 使用 Makefile\\
+% Makefile & Makefile\\
% compile.bat & Windows 编译用脚本文件\\
% latexmkrc & latexmk 配置文件 \\
% README.md & Readme\\
@@ -172,10 +190,11 @@
%
% 几点说明:
% \begin{itemize}
-% \item \file{hitszthesis.cls} 可由 \file{hitszthesis.ins}
+% \item \file{hitszthesis.cls} 和 \file{hitszthesis.cfg} 可由 \file{hitszthesis.ins}
% 和 \file{hitszthesis.dtx} 生成,但为了降低同学们的使用难度,故
% 将 \file{hitszthesis.cls} 文件一起发布。
% \item 使用前请一定阅读文档:\file{hitszthesis.pdf}。
+% \item 默认的生成的论文中含有丰富的格式示例,使用前请仔细阅读\file{main.pdf}。
% \end{itemize}
%
% \subsection{生成模板}
@@ -203,7 +222,7 @@
%
% # 最后两次编译生成说明文档 hitszthesis.pdf
% $ xelatex hitszthesis.dtx
-% $ xelatex hitszthesis.dtx
+% $ xelatex hitszthesis.dtx
% \end{shell}
%
% \subsection{生成论文}
@@ -224,7 +243,9 @@
%
% # 3. 下面解决引用
% $ xelatex main
-% $ xelatex main # 此时生成完整的 pdf 文件
+% $ xelatex main # 如果不需要生成索引此时生成完整的 pdf 文件
+% $ splitindex main -- -s hitszthesis.ist # 自动生成索引
+% $ xelatex main.tex # 此时生成完整的 pdf 文件
% \end{shell}
%
% \subsubsection{latexmk}
@@ -233,9 +254,8 @@
% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。下面给出了一个用
% \texttt{latexmk} 调用 \texttt{xelatex} 生成最终文档的示例:
% \begin{shell}
-% $ latexmk main.tex # 生成论文 main.pdf
-% $ latexmk spine.tex # 生成书脊 spine.pdf
-% $ latexmk hitszthesis.dtx # 生成说明文档 hitszthesis.pdf
+% $ latexmk -xelatex main.tex # 生成论文 main.pdf
+% $ latexmk -xelatex hitszthesis.dtx # 生成说明文档 hitszthesis.pdf
% $ latexmk -c # 清理编译生成的辅助文件
% \end{shell}
%
@@ -243,7 +263,6 @@
% \label{sec:make}
% \note[提示:]{若要使用 \texttt{make} 编译,需自行下载模板。因为 \TeX\ 发行版中
% 的 \file{Makefile} 不在当前目录。}
-%
% 上面的方法虽然不困难,但是每次都输入还是非常麻烦,所以 \hitszthesis\ 提供了一
% 个 \file{Makefile}。如果可以使用 GNU make 工具,
% 则使用 \texttt{make} 生成文件是最方便的办法。
@@ -279,6 +298,7 @@
% $ compile.bat clean # 删除编译所产生的辅助文件
% $ compile.bat cleanall # 删除所有 pdf 文件和所有辅助文件
% \end{shell}
+%
% \subsection{升级}
% \label{sec:updgrade}
% \hitszthesis\ 升级非常简单,可以通过 \TeX\ 发行版的包管理工具自动更新发行版,
@@ -288,14 +308,16 @@
% # 或者直接更新全部宏包至最新版
% $ tlmgr update --all
% \end{shell}
-%
+%
% 也可以下载最新的开发版,将 \file{hitszthesis.ins},\file{hitszthesis.dtx},拷贝至工作目录覆盖相应的文件,然后运行:
% \begin{shell}
% $ xetex hitszthesis.ins
% \end{shell}
% 生成新的类文件和配置文件即可。
%
-% 还可以直接拷贝 \file{hitszthesis.cls}替换原有文件,避免执行上面的命令行。
+% 也可以直接拷
+% 贝 \file{hitszthesis.cls},\file{hitszthesis.cfg} 和
+% \file{hitszthesis.ist},免去上面命令的执行。
%
% \section{使用说明}
% \label{sec:usage}
@@ -314,90 +336,33 @@
%
% \subsection{示例文件}
% \label{sec:userguide}
-%
-% 模板核心文件为:\file{hitszthesis.cls},
-% 但如果没有示例文档会很难下手,所以推荐从模板自带的示例文档入手,其中包括了论文
-% 写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。对于不清
-% 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档,
-% 具体内容可以参考模板附带的 \file{main.tex}。
+% 模板核心文件有三
+% 个:\file{hitszthesis.cls},\file{hitszthesis.cfg} 和\file{hitszthesis.bst},但是如果
+% 没有示例文档用户会发现很难下手。所以推荐新用户从模板自带的示例文档入手,里面包
+% 括了论文写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。
+% 对于不清楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示
+% 例文档,具体内容可以参考模板附带的 \file{main.tex}。
%
% \lstinputlisting[style=lstStyleLaTeX]{main.tex}
%
% \subsection{论文选项}
% \label{sec:option}
%
-% \DescribeOption{covertitle}
-% 选择论文封面第一页标题行数,当前支持:\option{onerow},
-% \option{tworow},其中\option{onerow}为默认选项。
-% \begin{latex}
-% % 封面标题两行
-% \documentclass[covertitle=tworow]{hitszthesis}
-% \end{latex}
-%
-% \DescribeOption{infoalign}
-% 论文封面第二页下划线部分内容对齐方式。可选:\option{infoleft},\option{infocenter},其中\option{infocenter}为默认选项。
-% \begin{latex}
-% % 封面第二页信息居左对齐
-% \documentclass[infoalign=infoleft]{hitszthesis}
-% \end{latex}
-%
-% \DescribeOption{mathfont}
-% 论文使用的数学字体。可选:\option{newtxmath},\option{SITX},\option{mtpro2},\option{mtpro2lite},其中\option{newtxmath}为默认选项,\option{mtpro2lite}字体可以\href{https://www.pctex.com/mtpro2.html}{免费使用},但是\option{mtpro2}完全版需要\href{https://www.pctex.com/mtpro2.html}{购买授权},\option{SITX}字体为可选备用选项。
-% \begin{latex}
-% % 论文采用mtpro2数学字体
-% \documentclass[mathfont=mtpro2]{hitszthesis}
-% % 论文采用mtpro2 lite数学字体
-% \documentclass[mathfont=mtpro2lite]{hitszthesis}
-% % 论文采用SITX数学字体
-% \documentclass[mathfont=SITX]{hitszthesis}
-% \end{latex}
-%
-% \DescribeOption{boldcaption}
-% 论文中图表的题注是否加粗选项,这是一个布尔选项,默认为否。
-% \begin{latex}
-% % 论文题注加粗
-% \documentclass[boldcaption=true]{hitszthesis}
-% \end{latex}
-%
-% \subsection{引用方式}
-% \label{sec:citestyle}
-%
-% \myentry{引用}
-% \DescribeMacro{\upcite}
-% 学校要求的参考文献引用有两种模式:(1)上标模式。比如“同样的工作有很
-% 多$^{[1,2]}$\ldots”。(2)正文模式。比如“文[3] 中详细说明了\ldots”。其中上标
-% 模式采用 \cs{upcite}\marg{key},而 \cs{cite}\marg{key} 则用来生成正文模式。
-%
-% 关于参考文献表推荐使用 \cs{thebibliography} 环境,虽然有些麻烦,
-% 但是避免了使用 \BibTeX 带来的很多格式设置问题。
-% 有余力者可以尝试使用 \BibTeX,
-% \BibTeX 默认情况下可以自动识别文献语言,
-% 并自动处理文献类型和载体类型标识,也可以手动指定,如:
-% \begin{latex}
-% @misc{citekey,
-% language = {japanese},
-% mark = {Z},
-% medium = {DK},
-% ...
-% \end{latex}
-% 可选的语言有 english, chinese, japanese, russian。
+% 论文选项在\file{main.tex}文件的开头描述,此处不赘述。
%
% \subsection{中文字体}
% \label{sec:chinese-fonts}
+% 正确配置中文字体是使用模板的第一步。模板调用 \CTeX\ 宏包,只提供基于
+% \pkg{xeCJK} 包,使用 \XeLaTeX\ 编译的方式。
+% 关于如何使用字体命令、字号等等,属于模板格式范畴,在实现细节中讨论。
+% 关于中文字体安装、配置的所有问题不在本模板讨论范围。
%
-% \subsubsection{字体配置}
-% \label{sec:font-config}
-% 模板默认使用 \CTeX\ 的字体配置。关于中文字体安装、配置的所有问题不在本模板讨论
-% 范围。
-%
-% \subsubsection{字体命令}
-% \label{sec:fontcmds}
% \myentry{字体}
% \DescribeMacro{\songti}
% \DescribeMacro{\fangsong}
% \DescribeMacro{\heiti}
% \DescribeMacro{\kaishu}
-% 用来切换宋体、仿宋、黑体、楷体四种基本字体。
+% 宋体、仿宋、黑体、楷体四种基本字体命令:
%
% \begin{latex}
% {\songti 乾:元,亨,利贞}
@@ -410,8 +375,6 @@
% \DescribeMacro{\chuhao}
% \DescribeMacro{\xiaochu}
% \DescribeMacro{\yihao}
-% \DescribeMacro{\xiaoyi}
-% \DescribeMacro{\bahao}
% 定义字体大小,分别为:
%
% \begin{center}
@@ -436,111 +399,390 @@
% 也可以使用 \CTeX\ 定义的 \cs{zihao}\marg{num} 来切换字号,具体用法参看其文
% 档。
%
-% \subsection{封面信息}
+% \subsection{前文}
% \label{sec:titlepage}
-% 封面信息配置方法:每个信息利用命令独立设置,大多数命令的使用方法都是 \cs{command}\marg{arg},例外者将具体指出。
-%
-% \myentry{封面信息}
-% \DescribeMacro{\thesistitle}
-% \cs{thesistitle}\marg{arg},输入论文标题
+% 前文内容是正文之前,含封面、摘要、目录、符号表。
+% 封面信息提供两种配置方法:一是通过统一设置命 令 \cs{hitszsetup}
+% 通过\emph{key=value} 形式完成;二是每个信息利用命令独立设置, 其中命令的名字跟
+% \emph{key} 相同。两种方式可以交叉使用,并按顺序执行(即后来的设置会覆
+% 盖前面的)。以 \texttt{c} 开头的命令跟中文(chinese)相关,\texttt{e}
+% 开头则为对应的英文(english)。
+%
+% \DescribeMacro{\hitszsetup}
+% \cs{hitszsetup} 用法与常见 \emph{key=value} 命令相同,如下:
+% \begin{latex}
+% \hitszsetup{
+% key1 = value1,
+% key2 = {a value, with comma},
+% }
+% % 可以多次调用
+% \hitszsetup{
+% key3 = value3,
+% key1 = value11, % 覆盖 value1
+% }
+% \end{latex}
+%
+% \note[注意:]{\cs{hitszsetup} 使用 \pkg{kvoptions} 机制,所以配置项之间不能有空行,否则
+% 会报错。}
+%
+% 大多数命令的使用方法都是: \cs{command}\marg{arg},例外者将具体指出。这些命令都
+% 在示例文档的 \file{front/cover.tex} 中。
+%
+% \subsubsection{密级}
+% \label{sec:setup-secret}
+% \myentry{密级}
+% \DescribeMacro{statesecrets}
+% \DescribeMacro{natclassifiedindex}
+% \DescribeMacro{intclassifiedindex}
+% 定义秘密级别和国内国际索引号。
+% \begin{latex}
+% \hitszsetup{
+% statesecrets={公开},
+% natclassifiedindex={TM301.2},
+% intclassifiedindex={62-5},
+% }
+% \end{latex}
+%
+% \subsubsection{论文标题}
+% \myentry{论文标题}
+% \DescribeMacro{ctitle}
+% \DescribeMacro{etitle}
+% \DescribeMacro{ctitleone}
+% \DescribeMacro{ctitletwo}
+% \DescribeMacro{csubtitle}
+% \DescribeMacro{esubtitle}
+% 中英文标题。
+% 如果有副标题,需要在封面选项中设置subtitle=true,否则不显示副标题。
+% \begin{latex}
+% \hitszsetup{
+% ctitlecover={封面中文题目可断行},
+% ctitle={论文中文题目},
+% etitle={Thesis English Title},
+% csubtitle={论文中文副题目(如果有)},
+% esubtitle={Thesis English Sub-Title (if necessary)},
+% ctitleone={本科生论文中文题目上部分},
+% ctitletwo={本科生论文中文题目下部分},
+% }
+% \end{latex}
+%
+% \subsubsection{作者姓名}
+% \myentry{作者姓名}
+% \DescribeMacro{cauthor}
+% \DescribeMacro{eauthor}
+% 作者姓名。
+% \begin{latex}
+% \hitszsetup{
+% cauthor={中文姓名},
+% eauthor={Name in Pinyin}
+% }
+% \end{latex}
%
-% \DescribeMacro{\titleone}
-% \cs{titleone}\marg{arg},输入论文标题第一行
+% \subsubsection{申请学位名称}
+% \label{sec:degree}
+% \myentry{学科名称}
+% \DescribeMacro{cxueke}
+% \DescribeMacro{exueke}
+% 按照入学的培养计划中学科自行填写,具体学科名称不是本文档范畴。
%
-% \DescribeMacro{\titletwo}
-% \cs{titletwo}\marg{arg},输入论文标题第二行
+% \begin{latex}
+% \hitszsetup{
+% cxueke={工学},
+% exueke={Engineering},
+% }
+% \end{latex}
%
-% \DescribeMacro{\schoolname}
-% \cs{schoolname}\marg{arg},输入学校名称
+% \subsubsection{院系名称}
+% \myentry{院系名称}
+% \DescribeMacro{caffil}
+% \DescribeMacro{eaffil}
+% 院系名称,同上,按照入学的培养计划中学科自行填写,具体院系名称不是本文档范畴。
+% \begin{latex}
+% \hitszsetup{
+% caffil={机电工程与自动化学院},
+% eaffil={\emultiline[t]{School of Mechanical Engineering\\ and Automation}},
+% }
+% \end{latex}
+% \note[注意:]{个别学院英文名过长,使用以上方法自行换行。}
%
-% \DescribeMacro{\departname}
-% \cs{departname}\marg{arg},输入学院名称
+% \subsubsection{专业名称}
+% \myentry{专业名称}
+% \DescribeMacro{csubject}
+% \DescribeMacro{esubject}
+% 专业名称,同上,按照入学的培养计划中学科自行填写,具体名称不是本文档范畴。
+% \begin{latex}
+% \hitszsetup{
+% csubject={机械设计制造及其自动化},
+% esubject={Mechanical Design, Manufacturing and Automation},
+% }
+% \end{latex}
%
-% \DescribeMacro{\majorin}
-% \cs{majorin}\marg{arg},输入专业
+% \subsubsection{导师}
+% \myentry{导师}
+% \DescribeMacro{csupervisor}
+% \DescribeMacro{esupervisor}
+% 直接导师。
+% \begin{latex}
+% \hitszsetup{
+% csupervisor={导师~教授},
+% esupervisor={Supervisor}
+% }
+% \end{latex}
+%
+% \myentry{副导师}
+% \DescribeMacro{cassosupervisor}
+% \DescribeMacro{eassosupervisor}
+% 副指导教师。
+% \begin{latex}
+% \hitszsetup{
+% cassosupervisor={副导师~副教授},
+% eassosupervisor={2nd Boss}
+% }
+% \end{latex}
%
-% \DescribeMacro{\authorname}
-% \cs{authorname}\marg{arg},输入姓名
+% \myentry{联合导师}
+% \DescribeMacro{ccosupervisor}
+% \DescribeMacro{ecosupervisor}
+% 硕士生联合指导教师,博士生联合导师。
+% \begin{latex}
+% \hitszsetup{
+% ccosupervisor={联合导师~教授},
+% ecosupervisor={3rd Boss}
+% }
+% \end{latex}
%
-% \DescribeMacro{\studentID}
-% \cs{studentID}\marg{arg},输入学号
+% \subsubsection{成文日期}
+% \myentry{日期}
+% \DescribeMacro{cdate}
+% \DescribeMacro{edate}
+% 默认为当前时间,也可以自己指定。
+% \begin{latex}
+% \hitszsetup{
+% cdate={中文日期},
+% edate={English Date},
+% }
+% \end{latex}
%
-% \DescribeMacro{\dateinput}
-% \cs{dateinput}\marg{arg},输入答辩日期
+% \subsubsection{学生类型}
+% \myentry{学生类型}
+% \DescribeMacro{cstudenttype}
+% \DescribeMacro{estudenttype}
+% 非全日制教育申请学位者
+%(同等学力人员)、(工程硕士)、(工商管理硕士)、
+%(高级管理人员工商管理硕士)、(公共管理硕士)、(中职教师)、(高校教师)等,
+% 具体要求按照入学的培养计划中学科自行填写,具体名称不是本文档范畴。
+% \begin{latex}
+% \hitszsetup{
+% cstudenttype={同等学力人员},
+% estudenttype={Master of Art},
+% }
+% \end{latex}
%
-% \DescribeMacro{\instructor}
-% \cs{instructor}\marg{arg},输入指导教师
+% \subsubsection{学号}
+% \myentry{学号}
+% \DescribeMacro{cstudentid}
+% 学号,具体要求按照入学的培养计划中学科自行填写。
+% \begin{latex}
+% \hitszsetup{
+% cstudentid={9527},
+% }
+% \end{latex}
%
% \subsubsection{摘要}
-% \myentry{摘要关键词}
-% \DescribeEnv{abstract}
-% \DescribeEnv{abstracten}
-% \DescribeMacro{\keywords}
-% \DescribeMacro{\keywordsen}
+% \myentry{摘要正文}
+% \DescribeEnv{cabstract}
+% \DescribeEnv{eabstract}
+% \note[说明:]{摘要正文只能用环境命令的形式,不支持 \cs{hitszsetup}。}
+%
% \begin{latex}
-% \begin{abstract}
+% \begin{cabstract}
% 摘要请写在这里...
-% \keywords{xxx}
-% \end{abstract}
+% \end{cabstract}
%
-% \begin{abstracten}
+% \begin{eabstract}
% Here comes the abstract in English...
-% \keywordsen{xxx}
-% \end{abstracten}
+% \end{eabstract}
% \end{latex}
%
-% \subsection{目录和索引表}
-% 目录、插图和表格等索引命令分别如下,
-% 将其插入到期望的位置即可
-% (带星号的命令表示对应的索引表不会出现在目录中):
-%
-% \myentry{目录索引}
-% \DescribeMacro{\tableofcontents}
-% \DescribeMacro{\listoffigures}
-% \DescribeMacro{\listoffigures*}
-% \DescribeMacro{\listoftables}
-% \DescribeMacro{\listoftables*}
-% \begin{longtable}{ll}
-% \toprule
-% {\heiti 用途} & {\heiti 命令} \\\midrule
-% 目录 & \cs{tableofcontents} \\\midrule
-% 插图索引 & \cs{listoffigures} \\
-% & \cs{listoffigures*} \\\midrule
-% 表格索引 & \cs{listoftables} \\
-% & \cs{listoftables*} \\\bottomrule
-% \end{longtable}
+% \myentry{关键词}
+% \DescribeMacro{ckeywords}
+% \DescribeMacro{ekeywords}
+% 关键词用英文逗号分割写入相应的命令中,模板会解析各关键词并生成符合不同论文格式
+% 要求的关键词格式。
+% \begin{latex}
+% \hitszsetup{
+% ckeywords={关键词 1, 关键词 2},
+% ekeywords={keyword 1, keyword 2}
+% }
+% \end{latex}
%
-% \LaTeX\ 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出
-% 现在浮动环境中,否则不被计数。
+% \subsubsection{符号对照表}
+% \DescribeEnv{denotation}
+% 主要符号表环境,单独在文件\file{front/denotation.tex}中。
+% 跟据\PGR\
+% 示例中要求,窝工符号表是table环境,示例文件如下,由于窝工要求博士论文图表标题是双语,所以任何对单个标题的全局格式调整都会影响到双语标题,所以这里使用\cs{vspace},具体见实现细节中的描述。
+%
+% \lstinputlisting[style=lstStyleLaTeX]{front/denotation.tex}
+%
+% \subsubsection{目录}
+% 目录不需要用户干预,自动生成,具体命令已经写在\file{main.tex} 中。
+%
+% \subsection{正文}
+%
+% \subsubsection{图和表}
+% \hitsz\ 博士毕业论文要求使用中英双语图题、表题,这增加了维护难度。
+% 因为现有唯一的方法是在已有的图题或表题的基础上再添加一行英语图题或表题。
+% 两个题之间的距离具体多少不在\PGR\ 中要求。目前的方法是用户手动调节该距离。
+% 关于图题\PGR\ 和\UGR\ 只规定了居中,并没有规定居中对其。然而评审老师很多喜欢居
+% 中且居中对齐。模板默认选项是居中且居中对齐,如果不喜欢居中对齐,那么需要在
+% \file{main.tex} 的文档类选项中设置选项capcenterlast=false。详细方法见前文的介绍
+% 。
+% \begin{hitszrgu}
+% 每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个
+% 半角字符排写。图序按章编排,如第1章第一个插图的图号为“图1-1”。图题置于图下,硕
+% 士论文只用中文,博士论文用中、英两种文字,居中书写,中文在上,要求中文用宋体5
+% 号字,英文用Times New Roman 5号字。有图注或其它说明时应置于图题之上。引用图应
+% 注明出处,在图题右上角加引用文献号。图中若有分图时,分图题置于分图之下或图题之
+% 下,可以只用中文书写,分图号用a)、b)等表示。图中各部分说明应采用中文(引用的外
+% 文图除外)或数字符号,各项文字说明置于图题之上(有分图时,置于分图题之上)。图
+% 中文字用宋体、Times New Roman字体,字号尽量采用5号字(当字数较多时可用小5号字
+% ,以清晰表达为原则,但在一个插图内字号要统一)。同一图内使用文字应统一。图表中
+% 物理量、符号用斜体。
+% \end{hitszrgu}
+%
+% 单双语图题的方法如下:
+% \begin{latex}
+% \begin{figure}[htpb]
+% \centering
+% \includegraphics[width = 0.4\textwidth]{golfer}
+% \bicaption[golfer1]{}{注意图中文字尽量用五号字
+% }{Fig.$\!$}{The person playing golf}
+% \end{figure}
+% \end{latex}
%
-% 如果不想让某个表格或者图片出现在索引里面,那么请使用命令 \cs{caption*},这
-% 个命令不会给表格编号,也就是出来的只有标题文字而没有“表~xx”,“图~xx”,
+% 单张单图题的格式如下:
+% \begin{latex}
+% \begin{figure}[h]
+% \centering
+% \includegraphics[width = 0.4\textwidth]{golfer}
+% \caption{注意图中文字字号尽量用五号字}
+% \end{figure}
+% \end{latex}
+%
+% 并排图例:
+% \begin{latex}
+% \begin{figure}[htbp]
+% \centering
+% \begin{minipage}{0.4\textwidth}
+% \centering
+% \includegraphics[width=\textwidth]{golfer}
+% \bicaption[golfer2]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+% \end{minipage}
+% \begin{minipage}{0.4\textwidth}
+% \centering
+% \includegraphics[width=\textwidth]{golfer}
+% \bicaption[golfer3]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+% \end{minipage}
+% \end{figure}
+% \end{latex}
%
-% \subsection{封底部分}
+% 子图图例:
+% \begin{latex}
+% \begin{figure}[htbp]
+% \centering
+% \subfigure{\label{golfer41}}\addtocounter{subfigure}{-2}
+% \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~1]{\includegraphics[width=0.4\textwidth]{golfer}}}
+% \subfigure{\label{golfer42}}\addtocounter{subfigure}{-2}
+% \subfigure[The person playing golf]{\subfigure[打高尔夫球的人~2]{\includegraphics[width=0.4\textwidth]{golfer}}}
+% \bicaption[golfer4]{}{打高尔夫球的人}{Fig.$\!$}{The person playing golf}
+% \end{figure}
+% \end{latex}
%
-% \subsubsection{原创性声明}
-% \myentry{声明}
-% \DescribeMacro{\declaration}
-% \cs{declaration}会自动生成原创性声明的全部内容,其中签字部分需要打印后手签。
+% 表格示例,表格中的字体是可以自行调整的:
+% \begin{latex}
+% \begin{table}[htbp]
+% \bicaption[table1]{}{符合研究生院绘图规范的表格}{Table$\!$}{Table in agreement of the standard from graduate school}
+% \vspace{0.5em}\centering\wuhao
+% \begin{tabular}{ccccc}
+% \toprule[1.5pt]
+% $D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\
+% \midrule[1pt]
+% 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\
+% 10 & 421.0 & 0.001035 & 3.59 & 0.04089\\
+% 20 & 640.2 & 0.001565 & 7.18 & 0.04089\\
+% \bottomrule[1.5pt]
+% \end{tabular}
+% \end{table}
+% \end{latex}
%
-% \subsubsection{附录}
-% \myentry{附录}
-% \DescribeMacro{\appendix}
-% 附录里主要是外文资料以及翻译,放置在 |\appendix| 后面即可。
+% 因为长表格不是浮动体,不会自动调整位置、也不会自动调整字体大小,一切都要手动设
+% 置。特别繁琐。长表格示例:
+% \begin{latex}
+% \ltfontsize{\dawu[1.667]} %设置表格内字体行间距
+% \dawu[1.667]\begin{longtable}{ccc} % 注意此处设置的是表格线距离
+% \longbionenumcaption{}{{\wuhao 中国省级行政单位一览 %此处要添加字体设置
+% }\label{table2}}{Table$\!$}{}{{\wuhao Overview of the provincial administrative
+% unit of China}}{-0.5em}{3.15bp}\\ %注意后两个参数分别是中英标题间距、标题和表格的间距。
+% %\caption{\wuhao 中国省级行政单位一览}\\[1em] %注意此处是标题和表格间距,这行
+% %是单语标题
+% \toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+% \endfirsthead
+% \multicolumn{3}{r}{表~\thetable(续表)}\vspace{0.5em}\\
+% \toprule[1.5pt] 名称 & 简称 & 省会或首府 \\ \midrule[1pt]
+% \endhead
+% \bottomrule[1.5pt]
+% \endfoot
+% 北京市 & 京 & 北京\\
+% 天津市 & 津 & 天津\\
+% 河北省 & 冀 & 石家庄市\\
+% 山西省 & 晋 & 太原市\\
+% 内蒙古自治区 & 蒙 & 呼和浩特市\\
+% 辽宁省 & 辽 & 沈阳市\\
+% 吉林省 & 吉 & 长春市\\
+% 黑龙江省 & 黑 & 哈尔滨市\\
+% 上海市 & 沪/申 & 上海\\
+% 江苏省 & 苏 & 南京市\\
+% 浙江省 & 浙 & 杭州市\\
+% 安徽省 & 皖 & 合肥市\\
+% 福建省 & 闽 & 福州市\\
+% 江西省 & 赣 & 南昌市\\
+% 山东省 & 鲁 & 济南市\\
+% 河南省 & 豫 & 郑州市\\
+% 湖北省 & 鄂 & 武汉市\\
+% 湖南省 & 湘 & 长沙市\\
+% 广东省 & 粤 & 广州市\\
+% 广西壮族自治区 & 桂 & 南宁市\\
+% 海南省 & 琼 & 海口市\\
+% 重庆市 & 渝 & 重庆\\
+% 四川省 & 川/蜀 & 成都市\\
+% 贵州省 & 黔/贵 & 贵阳市\\
+% 云南省 & 云/滇 & 昆明市\\
+% 西藏自治区 & 藏 & 拉萨市\\
+% 陕西省 & 陕/秦 & 西安市\\
+% 甘肃省 & 甘/陇 & 兰州市\\
+% 青海省 & 青 & 西宁市\\
+% 宁夏回族自治区 & 宁 & 银川市\\
+% 新疆维吾尔自治区 & 新 & 乌鲁木齐市\\
+% 香港特别行政区 & 港 & 香港\\
+% 澳门特别行政区 & 澳 & 澳门\\
+% 台湾省 & 台 & 台北市\\
+% \end{longtable}\normalsize %注意这里要恢复正常字体
+% \end{latex}
%
-% \subsection{自定义}
-% \label{sec:othercmd}
+% \subsubsection{公式}
+%
+% 公式不做介绍,与正常用法一致。
%
% \subsubsection{数学环境}
% \label{sec:math}
+%
% \hitszthesis\ 定义了常用的数学环境:
%
% \begin{center}
-% \begin{tabular}{*{8}{l}}\toprule
-% axiom & theorem & definition & proposition & lemma & postulate &note& conclusion\\
-% 公理 & 定理 & 定义 & 命题 & 引理 & 公设 &笔记& 结论\\\midrule
-% proof & corollary & example & exercise & assumption & remark & problem & property\\
-% 证明 & 推论 & 例& 练习 & 假设 & 注 & 问题 & 性质\\\bottomrule
+% \begin{tabular}{*{7}{l}}\toprule
+% axiom & theorem & definition & proposition & lemma & conjecture &\\
+% 公理 & 定理 & 定义 & 命题 & 引理 & 猜想 &\\\midrule
+% proof & corollary & example & exercise & assumption & remark & problem \\
+% 证明 & 推论 & 例子& 练习 & 假设 & 注释 & 问题\\\bottomrule
% \end{tabular}
% \end{center}
%
@@ -558,8 +800,7 @@
% \smallskip
% 列举出来的数学环境毕竟是有限的,如果想用\emph{胡说}这样的数学环境,那么可以定义:
% \begin{latex}
-% \theoremstyle{ydefstyle}
-% \newtheorem{ydefinition}{nonsense}[chapter]
+% \newtheorem{nonsense}{胡说}[chapter]
% \end{latex}
%
% 然后这样使用:
@@ -572,28 +813,111 @@
%
% \medskip
% \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}}
+% \subsubsection{算法}
+% 窝工算法不在规范中要求且一千个评审老师有一千个算法格式喜好。详见
+% \href{https://github.com/PlutoThesis/PlutoThesis}{PlutoThesis}
+% 中的各个实验室算法喜好举例。
+% \subsubsection{引用参考文献}
+% \DescribeMacro{\inlinecite}
+% 学校要求的参考文献引用有两种模式:(1)上标模式。比如``同样的工作有很
+% 多$^{[1,2]}$\ldots''。(2)正文模式。比如``文[3] 中详细说明了\ldots''。其中上标
+% 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规
+% 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。
+%
+% 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry:
+% \texttt{language},将其设置为 \texttt{zh} 用来指示此参考文献为中文,以
+% 便 \file{hitszthesis.bst} 处理。如:
+% \begin{latex}
+% @INPROCEEDINGS{cnproceed,
+% author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
+% title = {武林高手从入门到精通},
+% booktitle = {第~$N$~次华山论剑},
+% year = 2006,
+% address = {西安, 中国},
+% month = sep,
+% language = "zh",
+% }
+%
+% @ARTICLE{cnarticle,
+% AUTHOR = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
+% TITLE = "论刘姥姥食量大如牛之现实意义",
+% JOURNAL = "红楼梦杂谈",
+% PAGES = "260--266",
+% VOLUME = "224",
+% YEAR = "1800",
+% LANGUAGE = "zh",
+% }
+% \end{latex}
+%
+% 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行,
+% 以避免可能的编译错误。
%
% \subsubsection{列表环境}
-% \myentry{列表}
% \DescribeEnv{itemize}
% \DescribeEnv{enumerate}
% \DescribeEnv{description}
% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
+% \subsection{后文}
+%
+% \subsubsection{结论}
+% \DescribeEnv{conclusion}
+% 结论之后为后文内容。
+%
+% \lstinputlisting[style=lstStyleLaTeX]{back/conclusion.tex}
+%
+% \subsubsection{参考文献}
+% 在后文中的参考文献是自动生成的,不需要用户干预,具体命令在\file{main.tex} 中有
+% 示例。
+%
+% \subsubsection{附录}
+% \DescribeEnv{appendix}
+% 所有的附录都插到这里来。因为附录会更改默认的 chapter 属性,而后面的{\heiti 个人简
+% 历}又需要恢复,所以实现为环境可以保证全局的属性不受影响。
+% \begin{latex}
+% \begin{appendix}
+% \input{back/appA.tex}
+% \end{appendix}
+% \end{latex}
+%
+% \subsubsection{所发表文章}
+% \DescribeEnv{publication}
+% \PGR 与\UGR\ 中都没有明确规定此处的格式,以下仅为示例。
+%
+% \lstinputlisting[style=lstStyleLaTeX]{back/publications.tex}
+%
+% \subsubsection{索引}
+% \DescribeEnv{ceindex}
+% 窝工要求中英文双语索引。后文中的自动索引实际上不需要用户干预。
+% \subsubsection{授权}
+% \DescribeMacro{\authorization}
+% 授权页中的签名和日期是需要手写,不需要人工干预。具体示例在\file{main.tex} 中。
+%\begin{latex}
+% \authorization %授权
+% %\authorization[scan.pdf] %添加扫描页的命令,与上互斥
+%\end{latex}
+%
+% \subsubsection{致谢声明}
+% \DescribeEnv{acknowledgement}
+% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦!
+%
+% \lstinputlisting[style=lstStyleLaTeX]{back/acknowledgements.tex}
%
-% \subsection{书脊}
-% \myentry{书脊}
-% \DescribeMacro{\spine}
-% 生成装订的书脊,为竖排格式,命令格式:\cs{spine}\oarg{标题}\oarg{作者}。默认参
-% 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。
-% 否则,可参考参看模板示例文件 \file{spine.tex} 进行微调:
+% \subsubsection{简历}
+% \DescribeEnv{resume}
+% 个人简历。
+% 实际上,致谢和个人简历是自由发挥的地区,字体,文体,格式,内容,完全自己决定。
%
-% \lstinputlisting[style=lstStyleLaTeX]{spine.tex}
+% \lstinputlisting[style=lstStyleLaTeX]{back/resume.tex}
+%
+% \subsection{其它}
+% 模板的配置文件 \file{hitszthesis.cfg} 中定义了很多固定词汇,一般无须修改。如果有特殊需求,
+% 推荐在导言区使用 \cs{renewcommand}。
%
% \section{致谢}
% \label{sec:thanks}
-% 感谢|thuthesis|、|hithesis|、|sjtuthesis|、|elegantbook|模板的作者,本模板基于他们改编而来!
+% 感谢\href{https://github.com/dustincys/hithesis}{hithesis}、\href{https://github.com/xueruini/thuthesis}{thuthesis}模板的作者,本模板基于他们改编而来!
%
% 欢迎各位到 \href{http://github.com/YangLaTeX/hitszthesis/}{\hitszthesis\ Github 主页}贡献!
%
@@ -603,342 +927,314 @@
% \section{实现细节}
%
% \subsection{基本信息}
-% 设置需要的 \LaTeX 版本,定义提供的类文件名称以及说明文字
% \begin{macrocode}
%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<cls>\ProvidesClass{hitszthesis}
-%<cls>[2020/03/05 v2.3 A Bachelor Thesis Template for Harbin Institute of Technology, ShenZhen
-%<cls> (HITSZ)]
-% \end{macrocode}
-%
-% 检查编译引擎,要求使用 \XeLaTeX,否则提示错误
-% \begin{macrocode}
-\RequirePackage{ifxetex}
-\ifxetex\else
- \ClassError{hitszthesis}{Please use XeLaTeX to compile this file}{}
- \end{document}
-\fi
+%<cfg>\ProvidesFile{hitszthesis.cfg}
+%<cls|cfg>[2020/03/10 3.0 Dissertation Template for Harbin Institute of Technology, ShenZhen (HITSZ)]
% \end{macrocode}
%
% \subsection{定义选项}
-% 加载键值对设置宏包
+% \label{sec:defoption}
% \begin{macrocode}
%<*cls>
+\RequirePackage{ifthen}
\RequirePackage{kvoptions}
+\SetupKeyvalOptions{
+ family=hitsz,
+ prefix=hitsz@,
+ setkeys=\kvsetkeys}
+\newif\ifhitsz@bachelor
+\newif\ifhitsz@master
+\newif\ifhitsz@doctor
+\define@key{hitsz}{type}{%
+ \hitsz@bachelorfalse
+ \hitsz@masterfalse
+ \hitsz@doctorfalse
+ \expandafter\csname hitsz@#1true\endcsname}
+% \end{macrocode}
+%
+% 此处设置校区,没有明确给出哈尔滨或者威海校区的时候,默认为深圳校区。
+% \begin{macrocode}
+\newif\ifhitsz@shenzhen
+\newif\ifhitsz@weihai
+\newif\ifhitsz@harbin
+\define@key{hitsz}{campus}{%
+ \hitsz@shenzhenfalse
+ \hitsz@weihaifalse
+ \hitsz@harbinfalse
+ \expandafter\csname hitsz@#1true\endcsname}
+\ifhitsz@harbin
+ \relax
+\else
+ \ifhitsz@weihai
+ \relax
+ \else
+ \hitsz@shenzhentrue
+ \fi
+\fi
% \end{macrocode}
%
-% 加载对宏包、环境、命令进行操作的强大宏包
-% \begin{macrocode}
-\RequirePackage{etoolbox}
-% \end{macrocode}
-%
-% 设置关键词:|hitsz|
-% \begin{macrocode}
-\SetupKeyvalOptions{family=hitsz, prefix=hitsz@, setkeys=\kvsetkeys}
-% \end{macrocode}
-%
-% \begin{macro}{\ykv}
-% 定义设置关键词命令 \cs{ykv}
+% 目录中英文是否用 Arial 字体(默认关闭)。
% \begin{macrocode}
-\newcommand{\ykv}[1]{\kvsetkeys{hitsz}{#1}}
+\DeclareBoolOption[false]{arialtoc}
% \end{macrocode}
-% \end{macro}
%
-% 表格信息对齐
+% 章节标题中的英文是否用 Arial 字体(默认关闭)。
% \begin{macrocode}
-\DeclareStringOption[infocenter]{infoalign}
-\DeclareVoidOption{infocenter}{\ykv{infoalign = infocenter}}
-\DeclareVoidOption{infoleft}{\ykv{infoalign = infoleft}}
+\DeclareBoolOption[false]{arialtitle}
% \end{macrocode}
%
-% 封面标题行数
+% 封面第二页信息是否居左对齐(默认关闭)。
% \begin{macrocode}
-\DeclareStringOption[onerow]{covertitle}
-\DeclareVoidOption{onerow}{\ykv{covertitle = onerow}}
-\DeclareVoidOption{tworow}{\ykv{covertitle = tworow}}
+\DeclareBoolOption[false]{infoleft}
% \end{macrocode}
%
-% 数学字体选择,添加XITS数学字体
-%(https://github.com/alif-type/xits),该字体来源于
-% Scientific and Technical Information Exchange(XTIS)字体
-% \changes{v2.3}{2020/03/05}{Add math font option XITS}
+% 封面第一页标题是否为两行,如果标题过长可以选择(默认关闭)。
% \begin{macrocode}
-\DeclareStringOption[newtxmath]{mathfont}
-\DeclareVoidOption{XITS}{\ykv{mathfont = XITS}}
-\DeclareVoidOption{mtpro2}{\ykv{mathfont = mtpro2}}
-\DeclareVoidOption{mtpro2lite}{\ykv{mathfont = mtpro2lite}}
-\DeclareVoidOption{newtxmath}{\ykv{mathfont = newtxmath}}
+\DeclareBoolOption[false]{covertitletworow}
% \end{macrocode}
%
-% 题注是否加粗选项,默认不加粗
-% \changes{v2.3}{2020/03/05}{Add boldcaption option to control the caption font}
+% 图表题注是否加粗(默认关闭)。
% \begin{macrocode}
\DeclareBoolOption[false]{boldcaption}
% \end{macrocode}
%
-% 将其他选项传递给|book|文档类
+% \option{raggedbottom} 选项(默认开启)。如果不开启这个选项,会出现一页中尽量上
+% 下对齐,段的间距大。如果开启,尽量使段间距保持一致,页面底部出现空白。
% \begin{macrocode}
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}}
+\DeclareBoolOption[true]{raggedbottom}
% \end{macrocode}
%
-% 禁用键值对操作
+% 在脚注标记中使用 \pkg{pifont} 的带圈数字(默认关闭)。
% \begin{macrocode}
-\ProcessKeyvalOptions*\relax
+\DeclareBoolOption[false]{pifootnote}
% \end{macrocode}
%
-% 加载 |book| 类,A4大小,正文12磅,单面打印
+% 字体间距设置(默认关闭)。
% \begin{macrocode}
-\LoadClass[12pt,a4paper,openany,oneside]{book}
+\DeclareBoolOption[false]{glue}
% \end{macrocode}
%
-% \subsection{加载宏包}
-% 使用 \XeLaTeX 编译 \pkg{mtpro2} 宏包必须加载此宏包
+% 文科生四级目录设置(默认关闭)。
% \begin{macrocode}
-\RequirePackage{etex}
+\DeclareBoolOption[false]{tocfour}
% \end{macrocode}
%
-% 加载支持中文的 \pkg{ctex} 宏包,并设置章节标题格式
-% \changes{v2.2}{2020/03/04}{Use \pkg{ctex} to set chinese titile and toc}
+% 目录中“目录”位置是否空行(默认开启)。
% \begin{macrocode}
-\RequirePackage[UTF8,scheme=chinese,zihao=-4,heading=true]{ctex}
-\ctexset{%
- space = auto,
- chapter={
- afterindent=true,
- number=\arabic{chapter},
- beforeskip={28.34658bp},%一个空行 1.57481 × 18
- afterskip={24.74658bp},%0.8应该不计算间距 0.8 × 18 + 0.57481×18
- aftername=\enspace,
- format={\centering\heiti\xiaoer[1.57481]},%\center 会影响之后全局
- nameformat=\relax,
- numberformat=\relax,
- fixskip=true, % 添加这一行去除默认间距
- %hang=true,
- },
- section={
- afterindent=true,
- beforeskip={12bp},%上下空0.5行
- afterskip={13.5bp},
- format={\heiti\fontsize{15bp}{21bp}\selectfont},
- aftername=\enspace,
- fixskip=true,
- break={},
- },
- subsection={
- afterindent=true,
- beforeskip={10bp},
- afterskip={11bp},
- format={\heiti\fontsize{14bp}{18bp}\selectfont},
- aftername=\enspace,
- fixskip=true,
- break={},
- },
- subsubsection={
- afterindent=true,
- beforeskip={9bp},
- afterskip={9bp},
- format={\heiti\normalsize},
- aftername=\enspace,
- fixskip=true,
- break={},
- },
- paragraph/afterindent=true,
- subparagraph/afterindent=true
-}
+\DeclareBoolOption[false]{tocblank}
% \end{macrocode}
%
-% 正文和数学字体设置
+% 章标题是否悬挂居中(默认开启)
% \begin{macrocode}
-\RequirePackage{amsmath}
-\ifdefstring{\hitsz@mathfont}{XITS}{
- \setmainfont{Times New Roman}
- \setsansfont{Arial}
- \setmonofont[Scale=MatchLowercase]{Consolas}
- \RequirePackage{unicode-math}
- \unimathsetup{
- math-style = ISO,
- bold-style = ISO,
- nabla = upright,
- partial = upright,
- }
- \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}
- }
- \AtBeginDocument{\renewcommand{\mathbf}{\mathbfup}
- \newcommand\square{\mdlgwhtsquare}
- }
-}{\relax}
-\ifdefstring{\hitsz@mathfont}{mtpro2}{%
- \RequirePackage{newtxtext} % newtxtext宏包必须加在数学字体宏包之前
- \RequirePackage[mtphrb,mtpcal,zswash,uprightGreek]{mtpro2}
-}{\relax}
-\ifdefstring{\hitsz@mathfont}{mtpro2lite}{%
- \RequirePackage{newtxtext}
- \RequirePackage[lite,subscriptcorrection,slantedGreek,nofontinfo]{mtpro2}
-}{\relax}
-\ifdefstring{\hitsz@mathfont}{newtxmath}{%
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
-\let\openbox\relax
-}{\relax}
-\RequirePackage{type1cm}
-\RequirePackage{lipsum}
+\DeclareBoolOption[true]{chapterhang}
% \end{macrocode}
%
-% \begin{macro}{\kai}
-% \begin{macro}{\song}
-% 设置中文加粗字体
+% 是否是全日制学生(默认是)。
% \begin{macrocode}
-\setCJKfamilyfont{kai}[AutoFakeBold]{simkai.ttf}
-\newcommand*{\kai}{\CJKfamily{kai}}
-\setCJKfamilyfont{song}[AutoFakeBold]{SimSun}
-\newcommand*{\song}{\CJKfamily{song}}
+\DeclareBoolOption[true]{fulltime}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\linespread}
-% 行间距,设为1.3,due to 12pt与小四号字的大小微差
+% 是否有子标题(默认是)。
% \begin{macrocode}
-\linespread{1.3}
+\DeclareBoolOption[false]{subtitle}
% \end{macrocode}
-% \end{macro}
%
-% 加载常用宏包
-% 在一页上可以使用单栏和多栏样式
+% 是否开启debug模式(默认否)。如果开启,载入显示行号等的包,只为开发调试用。
% \begin{macrocode}
-\RequirePackage{multicol}
+\DeclareBoolOption[false]{debug}
% \end{macrocode}
%
-% 排版代码
+% 是否使用右开页(默认否)。
% \begin{macrocode}
-\RequirePackage{fancyvrb}
+\DeclareBoolOption[false]{openright}
% \end{macrocode}
%
-% 自定义目录格式
+% 是否为提交图书馆电子版。
% \begin{macrocode}
-\RequirePackage{titletoc}
+\DeclareBoolOption[false]{library}
% \end{macrocode}
%
-% 设置颜色
+% 图题和标题最后一行是否居中对其(默认是,非规范要求)。
% \begin{macrocode}
-\RequirePackage{xcolor}
+\DeclareBoolOption[true]{capcenterlast}
% \end{macrocode}
%
-% 插入图片
+% 子图图题和标题最后一行是否居中对其(默认是,非规范要求)。
% \begin{macrocode}
-\RequirePackage{graphicx}
+\DeclareBoolOption[true]{subcapcenterlast}
% \end{macrocode}
%
-% 表格
+% 中文目录中Abstract是否均为大写
% \begin{macrocode}
-\RequirePackage{array}
+\DeclareBoolOption[true]{absupper}
% \end{macrocode}
%
-% 长表格
+% 此处添加控制本科论文的页码横线选项
% \begin{macrocode}
-\RequirePackage{longtable}
+\DeclareBoolOption[true]{bsmainpagenumberline}
+\DeclareBoolOption[true]{bsfrontpagenumberline}
+\DeclareBoolOption[true]{bsheadrule}
% \end{macrocode}
%
-% \pkg{booktabs} 提供了\cs{toprule} 等命令
+% 数学字体选项,默认使用\option{newtxmath}
% \begin{macrocode}
-\RequirePackage{booktabs}
+\newif\ifhitsz@newtxmath
+\newif\ifhitsz@mtprotwolite
+\newif\ifhitsz@mtprotwo
+\define@key{hitsz}{mathfont}{%
+ \hitsz@newtxmathfalse
+ \hitsz@mtprotwolitefalse
+ \hitsz@mtprotwofalse
+ \expandafter\csname hitsz@#1true\endcsname}
+\ifhitsz@mtprotwolite
+ \relax
+\else
+ \ifhitsz@mtprotwo
+ \relax
+ \else
+ \hitsz@newtxmathtrue
+ \fi
+\fi
% \end{macrocode}
%
-% \pkg{multirow} 支持在表格中跨行
+% 参考文献分割开关
% \begin{macrocode}
-\RequirePackage{multirow}
+\DeclareBoolOption[false]{splitbibitem}
% \end{macrocode}
%
-% 调整间隔, 让表格更好看些
+% 声明字体选项
% \begin{macrocode}
-\RequirePackage{bigstrut}
+\DeclareStringOption{fontset}
% \end{macrocode}
%
-% 在跨行表格中输入定界符
+% 将其余选项默认传递给 \pkg{ctexbook}。
% \begin{macrocode}
-\RequirePackage{bigdelim}
+\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
% \end{macrocode}
%
-% 保护脆落命令
+% 解析用户传递过来的选项,并加载 \pkg{ctexbook}。
% \begin{macrocode}
-\RequirePackage{cprotect}
+\ProcessKeyvalOptions*
% \end{macrocode}
%
-% 定制列表环境
+% 使用 \XeTeX\ 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动调用。传递
+% 给 \pkg{fontspec} 宏包 \option{no-math} 选项,避免部分数学符号字体自动调整
+% 为 CMR。其他引擎下没有这个问题,这一行会被无视。
% \begin{macrocode}
-\RequirePackage{enumitem}
+\PassOptionsToPackage{no-math}{fontspec}
% \end{macrocode}
%
-% 设置代码环境
+% 载入单双面打印设置,本、硕单面,博士双面。
% \begin{macrocode}
-\RequirePackage{listings}
+\ifhitsz@bachelor
+\PassOptionsToClass{oneside}{book}
+\fi
+\ifhitsz@master
+\PassOptionsToClass{oneside}{book}
+\fi
+\ifhitsz@doctor
+\PassOptionsToClass{twoside}{book}
+\fi
% \end{macrocode}
%
-% 超链接格式设置
+% 设置字体。由于宋体没有粗体,且窝工模板的标题要求使用粗宋体,于是面临CTeX的经典
+% 的伪粗体bug:“首次出现伪粗体字体之后的正常字体无法复制”。但如果使用自带宋体的
+% 思源字体,那么不必使用伪粗体。模板只给出了新windows字体的思源字体设置,且思源
+% 字体版本为Adobe版。
% \begin{macrocode}
-\RequirePackage{hyperref}
+\ifthenelse%
+{\equal{\hitsz@fontset}{}}%
+{%
+ \PassOptionsToPackage{AutoFakeBold=2}{xeCJK}
+}%
+{%
+ \ifthenelse%
+ {\equal{\hitsz@fontset}{siyuan}}%
+ {\relax}%
+ {%
+ \PassOptionsToPackage{AutoFakeBold=2}{xeCJK}
+ }%
+ \PassOptionsToClass{fontset=\hitsz@fontset}{ctexbook}
+}%
% \end{macrocode}
%
-% \begin{macro}{\parindent}
-% 首行缩进
+% 使用 \XeLaTeX 编译 \pkg{mtpro2} 宏包必须加载此宏包
% \begin{macrocode}
-\RequirePackage{indentfirst}
-\setlength\parindent{2em}
+\RequirePackage{etex}
% \end{macrocode}
-% \end{macro}
%
-% 设置浮动体的标题
+% 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。
% \begin{macrocode}
-\RequirePackage{caption}
+\LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook}
% \end{macrocode}
%
-% 浮动环境
+% 用户至少要提供一个选项,指定论文类型。
% \begin{macrocode}
-\RequirePackage{float}
+\ifhitsz@bachelor\relax\else
+ \ifhitsz@master\relax\else
+ \ifhitsz@doctor\relax\else
+ \ClassError{hitszthesis}%
+ {Please specify thesis type in option: \MessageBreak
+ type=[bachelor | master | doctor]}{}
+ \fi
+ \fi
+\fi
% \end{macrocode}
%
-% 下划线
+% \subsection{装载宏包}
+% \label{sec:loadpackage}
+%
+% 引用的宏包和相应的定义。
% \begin{macrocode}
-\RequirePackage{ulem}
+\RequirePackage{etoolbox}
+\RequirePackage{ifxetex}
+\ifxetex
+\else
+ \ClassError{hitszthesis}%
+ {Please use: \MessageBreak
+ xelatex}{}
+\fi
+\RequirePackage{xparse}
% \end{macrocode}
%
-% 尺寸计算
+% \AmSTeX\ 宏包,用来排出更加漂亮的公式。
% \begin{macrocode}
-\RequirePackage{calc}
+\RequirePackage{amsmath}
% \end{macrocode}
%
-% \pkg{tikz} 绘图
+% 定理类环境宏包,其中 \pkg{amsmath} 选项用来兼容 \AmSTeX\ 的宏包
% \begin{macrocode}
-\RequirePackage{tikz}
+\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
+\RequirePackage{amssymb}
% \end{macrocode}
%
-% 公式字母加粗
+% \pkg{newtx} 设置 Times New Roman,Helvetica。
% \begin{macrocode}
-\RequirePackage{bm}
+\RequirePackage[defaultsups]{newtxtext}
% \end{macrocode}
%
-% 子公式编号
-% \changes{v2.2}{2020/03/05}{Use \pkg{subeqnarray} rather than \pkg{cases} to write sub equations}
+% 添加数学字体开关
% \begin{macrocode}
-\RequirePackage{subeqnarray}
+\ifhitsz@newtxmath
+ \RequirePackage{newtxmath}
+\else
+ \ifhitsz@mtprotwolite
+ \let\Bbbk\relax
+ \RequirePackage[lite,subscriptcorrection,slantedGreek,nofontinfo]{mtpro2}
+ \else
+ \ifhitsz@mtprotwo
+ \let\Bbbk\relax
+ \RequirePackage[mtphrb,mtpcal,zswash,uprightGreek]{mtpro2}
+ \fi
+ \fi
+\fi
% \end{macrocode}
%
-% 书写单位
+% 图形支持宏包。
% \begin{macrocode}
-\RequirePackage{siunitx}
+\RequirePackage{graphicx}
% \end{macrocode}
%
% \pkg{pdfpages} 宏包便于我们插入扫描后的授权页和声明页 PDF 文档。
@@ -947,344 +1243,275 @@
\includepdfset{fitpaper=true}
% \end{macrocode}
%
-% 排版代码
+% 更好的列表环境。
% \begin{macrocode}
-\RequirePackage{listings}
-% \end{macrocode}
-%
-% \begin{macro}{\lstdefinestyle}
-% 定义 |ystyle| 样式
-% \begin{macrocode}
-\lstdefinestyle{ystyle}{
- basicstyle=%
- \ttfamily
- \lst@ifdisplaystyle\small\fi
-}
+\RequirePackage{enumitem} %使用enumitem宏包,改变列表项的格式
+\RequirePackage{environ}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\lstset}
-% 使用 |ystyle| 样式
+% 禁止 \LaTeX 自动调整多余的页面底部空白,并保持脚注仍然在底部。
+% 脚注按页编号。
% \begin{macrocode}
-\lstset{basicstyle = \ttfamily, style = ystyle, breaklines = true}
+\ifhitsz@raggedbottom
+ \RequirePackage[bottom,perpage,hang]{footmisc}
+ \raggedbottom
+\else
+ \RequirePackage[perpage,hang]{footmisc}
+\fi
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\definecolor}
-% 定义代码颜色
+% 脚注格式。
% \begin{macrocode}
-\definecolor{lightgrey}{rgb}{0.9,0.9,0.9}
-\definecolor{frenchplum}{RGB}{190,20,83}
-\definecolor{winered}{rgb}{0.5,0,0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\lstset}
-% 设置 \LaTeX 代码排版样式
-% \begin{macrocode}
-\lstset{language = [LaTeX]TeX,
- texcsstyle = *\color{winered},
- numbers = none,
- mathescape,
- breaklines = true,
- keywordstyle = \color{winered},
- commentstyle = \color{gray},
- emph = {hitszpaper,fontenc,fontspec,xeCJK,FiraMono,xunicode,newtxmath,
- figure,fig,image,img,table,itemize,enumerate,newtxtext,newtxtt,
- ctex, microtype,description,times,newtx,booktabs,tabular,
- PDFLaTeX,XeLaTeX,type1cm,BibTeX,device,color,mode,lang,
- amsthm,tcolorbox,titlestyle,cite,marginnote,ctex,listings,base,
- subnumcases},
- emphstyle = {\color{frenchplum}},
- morekeywords = {DeclareSymbolFont,SetSymbolFont,toprule,midrule,bottomrule,
- institute,version,includegraphics,setmainfont,setsansfont,
- setmonofont,setCJKmainfont,setCJKsansfont,setCJKmonofont,
- RequirePackage,figref, tabref,email,maketitle,keywords,definecolor,
- extrainfo,logo,cover,subtitle,appendix,chapter,hypersetup,
- mainmatter,frontmatter,tableofcontents, hitszpar,heiti,kaishu,lstset,
- pagecolor,zhnumber,marginpar,part, equote,marginnote},
- frame = single,
- tabsize = 2,
- rulecolor = \color{black},
- framerule = 0.2pt,
- columns = flexible,
- % backgroundcolor = \color{lightgrey}
-}
+\ifhitsz@pifootnote
+ \RequirePackage{pifont}
+\fi
% \end{macrocode}
-% \end{macro}
%
-% \subsection{输入信息}
-% \subsubsection{定义输入常量}
-% \begin{macro}{\hitsz@tokens@thesistitle}
-% 论文标题
+% 利用 \pkg{CJKfntef} 实现汉字的下划线和盒子内两段对齐,并可以避免
+% \cs{makebox}\oarg{width}\oarg{s} 可能产生的 underful boxes。
% \begin{macrocode}
-\newcommand\hitsz@tokens@thesistitle{}
+\RequirePackage{CJKfntef}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@keywords}
-% 关键词,中文
+% 表格控制
% \begin{macrocode}
-\newcommand\hitsz@tokens@keywords{}
+\RequirePackage{longtable}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@keywordsen}
-% 关键词,英文
+% 使用三线表:\cs{toprule},\cs{midrule},\cs{bottomrule}。
% \begin{macrocode}
-\newcommand\hitsz@tokens@keywordsen{}
+\RequirePackage{booktabs}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@papercategory}
-% 论文类别
+% 参考文献引用宏包。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@papercategory{}
+\RequirePackage[sort&compress]{natbib}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@schoolname}
-% 学校名称
+% 子公式编号。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@schoolname{}
+\RequirePackage{subeqnarray}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@departname}
-% 院系
+% 生成有书签的 pdf 及其开关,请结合 gbk2uni 避免书签乱码。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@departname{}
+\RequirePackage{hyperref}
+\hypersetup{%
+ CJKbookmarks=true,
+ linktoc=all,
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=3,
+ pdfcreator={XeLaTeX with hitszthesis class},
+ breaklinks=true,
+ colorlinks=false,
+ plainpages=false,
+ pdfstartview=FitH,
+ pdfborder={0 0 0}
+}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@dateinput}
-% 日期
+% 设置 url 样式,与上下文一致
% \begin{macrocode}
-\newcommand*\hitsz@tokens@dateinput{}
+\urlstyle{same}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@authorname}
-% 姓名
+% \subsection{页面设置}
+% \label{sec:layout}
+% 根据撰写规范设置版芯。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@authorname{}
+\ifhitsz@debug
+ \RequirePackage[showframe]{geometry}
+\else
+ \RequirePackage{geometry}
+\fi
+\geometry{
+ a4paper, % 210 * 297mm
+ hcentering,
+ ignoreall,
+ nomarginpar,
+}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@studentID}
-% 学号
+% 设置版芯页边距
% \begin{macrocode}
-\newcommand*\hitsz@tokens@studentID{}
+\geometry{% 版芯高度 = textheight(224) + head(5) + headsep(3) + footskip(8) = 240 mm
+ text={150true mm,224true mm},
+ top=37.5true mm,
+ left=30true mm,
+ head=5true mm,
+ headsep=3true mm,
+ footskip=0true mm,
+ foot=8true mm
+}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@majorin}
-% 专业
+% 载入显示行号的包。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@majorin{}
+\ifhitsz@debug%
+\RequirePackage{layout}
+\RequirePackage{layouts}
+\RequirePackage{lineno}
+\fi
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@instructor}
-% 指导教师
+% 利用 \pkg{fancyhdr} 设置页眉页脚。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@instructor{}
+\RequirePackage{fancyhdr}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@titleone}
-% 第一行标题
+% 其他包,表格、数学符号包
% \begin{macrocode}
-\newcommand*\hitsz@tokens@titleone{}
+\RequirePackage{tabularx}
+\RequirePackage{varwidth}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\hitsz@tokens@titletwo}
-% 第二行标题
+% 此处changepage环境用来控制索引页面的左右边距,规范中给出的示例的边距要大于正文。
% \begin{macrocode}
-\newcommand*\hitsz@tokens@titletwo{}
+\RequirePackage{changepage}
+\RequirePackage{multicol}
+\RequirePackage[below]{placeins}%允许上一个section的浮动图形出现在下一个section的开始部分,还提供\FloatBarrier命令,使所有未处理的浮动图形立即被处理
+\RequirePackage{flafter} % 使得所有浮动体不能被放置在其浮动环境之前,以免浮动体在引述它的文本之前出现.
+\RequirePackage{multirow} %使用Multirow宏包,使得表格可以合并多个row格
+\ifhitsz@subcapcenterlast
+\PassOptionsToPackage{centerlast}{subfigure}
+\fi
+\RequirePackage{subfigure}%支持子图 %centerlast 设置最后一行是否居中
+\RequirePackage[subfigure]{ccaption} %支持双语标题
% \end{macrocode}
-% \end{macro}
%
-% \subsubsection{定义与常量有关的新命令}
-%
-% \begin{macro}{\thesistitle}
-% 输入论文标题
+% 中英文索引包。
% \begin{macrocode}
-\newcommand*\thesistitle[1]{%
- \renewcommand{\hitsz@tokens@thesistitle}{#1}}
+\RequirePackage[makeindex]{splitidx}
+\newindex[]{china}
+\newindex[]{english}
+%</cls>
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\papercategory}
-% 输入论文类别
+% 窝工要求的索引格式。
% \begin{macrocode}
-\newcommand*\papercategory[1]{%
- \renewcommand{\hitsz@tokens@papercategory}{#1}}
+%<*ist>
+headings_flag 1
+heading_prefix "\{\\vskip -\\baselineskip\\centering\\normalsize\\textbf\{"
+heading_suffix "\}\\par\}\\nopagebreak\\wuhao\n"
+delim_0 "\\hspace*{\\fill}"
+delim_1 "\\hspace*{\\fill}"
+%</ist>
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\schoolname}
-% 输入校名
+% 排版logo。
% \begin{macrocode}
-\newcommand*\schoolname[1]{%
- \renewcommand{\hitsz@tokens@schoolname}{#1}}
+%<cls>\RequirePackage{xltxtra}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\departname}
-% 输入院系名称
-% \begin{macrocode}
-\newcommand*\departname[1]{%
- \renewcommand{\hitsz@tokens@departname}{#1}}
-% \end{macrocode}
-% \end{macro}
+% \subsection{主文档格式}
+% \label{sec:mainbody}
%
-% \begin{macro}{\dateinput}
-% 输入日期
-% \begin{macrocode}
-\newcommand*\dateinput[1]{%
- \renewcommand{\hitsz@tokens@dateinput}{#1}}
-% \end{macrocode}
-% \end{macro}
+% \subsubsection{Three matters}
%
-% \begin{macro}{\authorname}
-% 输入姓名
+% \begin{macro}{\cleardoublepage}
+% 对于 \textsl{openright} 选项,必须保证章首页右开,且如果前章末页无内容须
+% 清空其页眉页脚。
+% 如果\textsl{library}为真,则强制设置\textsl{openright}为真。
% \begin{macrocode}
-\newcommand*\authorname[1]{%
- \renewcommand{\hitsz@tokens@authorname}{#1}}
+%<*cls>
+\ifhitsz@library
+ \hitsz@openrightfalse
+\else
+ \relax
+\fi
+\let\hitsz@cleardoublepage\cleardoublepage
+\newcommand{\hitsz@clearemptydoublepage}{%
+ \clearpage{\pagestyle{hitsz@empty}\hitsz@cleardoublepage}
+}
+\let\cleardoublepage\hitsz@clearemptydoublepage
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\studentID}
-% 输入学号
+% \begin{macro}{\frontmatter}
+% 我们的单面和双面模式与常规的不太一样。
% \begin{macrocode}
-\newcommand*\studentID[1]{%
- \renewcommand{\hitsz@tokens@studentID}{#1}}
+\renewcommand\frontmatter{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \@mainmatterfalse
+ \pagenumbering{Roman}
+ \pagestyle{hitsz@empty}
+}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\majorin}
-% 输入专业
+% \begin{macro}{\mainmatter}
+% 根据打印店(伪官方)的猛虎式操作,\cs{mainmatter}命令的逻辑是,双面打印时第一章必须在奇数页。
% \begin{macrocode}
-\newcommand*\majorin[1]{%
- \renewcommand{\hitsz@tokens@majorin}{#1}}
+\renewcommand\mainmatter{%
+ \ifhitsz@tocblank%
+ \addtocontents{toc}{\vspace{\baselineskip}}
+ \addtocontents{toe}{\vspace{\baselineskip}}
+ \fi%
+ \ifhitsz@doctor%
+ \ifhitsz@library\clearpage\else\cleardoublepage\fi
+ \else%
+ \clearpage
+ \fi%
+ \@mainmattertrue
+ \pagenumbering{arabic}
+ \pagestyle{hitsz@headings}
+}
% \end{macrocode}
% \end{macro}
-%
-% \begin{macro}{\instructor}
-% 输入指导教师
+% \begin{macro}{\backmatter}
% \begin{macrocode}
-\newcommand*\instructor[1]{%
- \renewcommand{\hitsz@tokens@instructor}{#1}}
+\renewcommand\backmatter{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \@mainmattertrue}
+%</cls>
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\titleone}
-% 输入第一行标题
-% \begin{macrocode}
-\newcommand*\titleone[1]{%
- \renewcommand{\hitsz@tokens@titleone}{#1}}
-% \end{macrocode}
-% \end{macro}
+% \subsubsection{字体}
+% \label{sec:font}
%
-% \begin{macro}{\titletwo}
-% 输入第二行标题
+% \begin{macro}{\normalsize}
+% 根据窝工规定,正文小四号 (12bp) 字,行距为1.25倍。
% \begin{macrocode}
-\newcommand*\titletwo[1]{%
- \renewcommand{\hitsz@tokens@titletwo}{#1}}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{定义常量的值}
-% \begin{macro}{\listfigurename}
-% \begin{macro}{\listtablename}
-% \begin{macro}{\abstractname}
-% \begin{macro}{\keywordsname}
-% \begin{macro}{\keywordsenname}
-% \begin{macro}{\contentsname}
-% \begin{macro}{\indexname}
-% \begin{macro}{\notename}
-% \begin{macro}{\proofname}
-% \begin{macro}{\problemname}
-% \begin{macro}{\definitionname}
-% 中文标题名称设置
-% \begin{macrocode}
-\renewcommand\listfigurename{插图目录}
-\renewcommand\listtablename{附表目录}
-\renewcommand\abstractname{摘\quad 要}
-\newcommand{\keywordsname}{关键词}
-\newcommand{\keywordsenname}{Keywords}
-\renewcommand{\contentsname}{目\quad 录}
-\renewcommand{\indexname}{索\quad 引}
-\newcommand{\notename}{笔记}
-\renewcommand*{\proofname}{证明}
-\newcommand{\problemname}{问题}
-\newcommand{\definitionname}{定义}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\theoremname}
-% \begin{macro}{\axiomname}
-% \begin{macro}{\postulatename}
-% \begin{macro}{\lemmaname}
-% \begin{macro}{\propositionname}
-% \begin{macro}{\corollaryname}
-% \begin{macro}{\examplename}
-% \begin{macro}{\exercisename}
-% \begin{macro}{\remarkname}
-% \begin{macro}{\assumptionname}
-% \begin{macro}{\conclusionname}
-% 继续设置
-% \begin{macrocode}
-\newcommand{\theoremname}{定理}
-\newcommand{\axiomname}{公理}
-\newcommand{\postulatename}{公设}
-\newcommand{\lemmaname}{引理}
-\newcommand{\propositionname}{命题}
-\newcommand{\corollaryname}{推论}
-\newcommand{\examplename}{例}
-\newcommand{\exercisename}{练习}
-\newcommand{\remarkname}{注}
-\newcommand{\assumptionname}{假设}
-\newcommand{\conclusionname}{结论}
+%<*cls>
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize{12bp}{ \ifhitsz@glue 20.50398bp \@plus 2.83465bp \@minus 0bp
+ \else 19.27374bp
+ \fi}%
+ \abovedisplayskip=8pt
+ \abovedisplayshortskip=8pt
+ \belowdisplayskip=\abovedisplayskip
+ \belowdisplayshortskip=\abovedisplayshortskip}
% \end{macrocode}
% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\solutionname}
-% \begin{macro}{\propertyname}
-% 继续定义
-% \begin{macrocode}
-\newcommand{\solutionname}{解}
-\newcommand{\propertyname}{性质}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% WORD 中的字号对应该关系如下(1bp = 72.27/72 pt):
+% \begin{center}
+% \begin{tabular}{llll}
+% \toprule
+% 初号 & 42bp & 14.82mm & 42.1575pt \\
+% 小初 & 36bp & 12.70mm & 36.135 pt \\
+% 一号 & 26bp & 9.17mm & 26.0975pt \\
+% 小一 & 24bp & 8.47mm & 24.09pt \\
+% 二号 & 22bp & 7.76mm & 22.0825pt \\
+% 小二 & 18bp & 6.35mm & 18.0675pt \\
+% 三号 & 16bp & 5.64mm & 16.06pt \\
+% 小三 & 15bp & 5.29mm & 15.05625pt \\
+% 四号 & 14bp & 4.94mm & 14.0525pt \\
+% 小四 & 12bp & 4.23mm & 12.045pt \\
+% 五号 & 10.5bp & 3.70mm & 10.59375pt \\
+% 小五 & 9bp & 3.18mm & 9.03375pt \\
+% 六号 & 7.5bp & 2.56mm & \\
+% 小六 & 6.5bp & 2.29mm & \\
+% 七号 & 5.5bp & 1.94mm & \\
+% 八号 & 5bp & 1.76mm & \\\bottomrule
+% \end{tabular}
+% \end{center}
%
-% \vskip0.3cm
-% \subsection{字号设置}
% \begin{macro}{\hitsz@def@fontsize}
-% 中英字号转换
+% 根据习惯定义字号。用法:\cs{hitsz@def@fontsize}\marg{字号名称}\marg{磅数}避免了
+% 字号选择和行距的紧耦合。所有字号定义时为单倍行距,并提供选项指定行距倍数。
% \begin{macrocode}
\def\hitsz@def@fontsize#1#2{%
\expandafter\newcommand\csname #1\endcsname[1][1.3]{%
@@ -1292,19 +1519,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\dachu}
% \begin{macro}{\chuhao}
% \begin{macro}{\xiaochu}
% \begin{macro}{\yihao}
% \begin{macro}{\xiaoyi}
% \begin{macro}{\erhao}
-% 定义一组字号
-% \begin{macrocode}
-\hitsz@def@fontsize{chuhao}{42bp}
-\hitsz@def@fontsize{xiaochu}{36bp}
-\hitsz@def@fontsize{yihao}{26bp}
-\hitsz@def@fontsize{xiaoyi}{24bp}
-\hitsz@def@fontsize{erhao}{22bp}
-% \end{macrocode}
% \begin{macro}{\xiaoer}
% \begin{macro}{\sanhao}
% \begin{macro}{\xiaosan}
@@ -1318,8 +1538,14 @@
% \begin{macro}{\xiaoliu}
% \begin{macro}{\qihao}
% \begin{macro}{\bahao}
-% 继续定义字号
+% 一组字号定义。
% \begin{macrocode}
+\hitsz@def@fontsize{dachu}{58bp}
+\hitsz@def@fontsize{chuhao}{42bp}
+\hitsz@def@fontsize{xiaochu}{36bp}
+\hitsz@def@fontsize{yihao}{26bp}
+\hitsz@def@fontsize{xiaoyi}{24bp}
+\hitsz@def@fontsize{erhao}{22bp}
\hitsz@def@fontsize{xiaoer}{18bp}
\hitsz@def@fontsize{sanhao}{16bp}
\hitsz@def@fontsize{xiaosan}{15bp}
@@ -1333,6 +1559,7 @@
\hitsz@def@fontsize{xiaoliu}{6.5bp}
\hitsz@def@fontsize{qihao}{5.5bp}
\hitsz@def@fontsize{bahao}{5bp}
+%</cls>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1352,1017 +1579,1622 @@
% \end{macro}
% \end{macro}
% \end{macro}
-%
-% \subsection{图片搜索目录设置}
-% \begin{macro}{\graphicspath}
-% 图片搜索目录
-% \begin{macrocode}
-\graphicspath{{./figure/}{./figures/}{./image/}{./images/}
-{./graphics/}{./graphic/}{./pictures/}{./picture/}{./front/}}
-% \end{macrocode}
% \end{macro}
%
-% \subsection{页面设置}
-% \begin{macro}{\geometry}
-% 页面设置,按照撰写示例word模板设置页边距
+% \subsubsection{页眉页脚}
+% \label{sec:headerfooter}
+%
+% \begin{macro}{\hitsz@empty}
+% \begin{macro}{\hitsz@plain}
+% \begin{macro}{\hitsz@headings}
+% 定义三种页眉页脚格式:
+% \begin{itemize}
+% \item \texttt{hitsz@empty}:页眉页脚都没有
+% \item \texttt{hitsz@plain}:只显示页脚的页码。\cs{chapter} 自动调用
+% \cs{thispagestyle\{hitsz@plain\}}。
+% \item \texttt{hitsz@headings}:页眉页脚同时显示
+% \end{itemize}
% \begin{macrocode}
-\RequirePackage{geometry}
-\geometry{
- a4paper,
- left=30mm,
- right=30mm,
- top=41mm,
- bottom=30mm,
- headheight = 2.17cm,
- headsep = 1mm,
- footskip = 5mm,
+%<*cls>
+\let\hitsz@headrule\headrule
+\fancypagestyle{hitsz@empty}{%
+ \fancyhf{}
+ \let\headrule\hitsz@headrule%
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}
}
% \end{macrocode}
-% \end{macro}
%
-% \subsection{超链接设置}
-% \begin{macro}{\hypersetup}
-% 超链接设置,设置目录、图表公式引用的跳转
-% \begin{macrocode}
-\RequirePackage{hyperref}
-\hypersetup{
- breaklinks,
- unicode,
- linktoc=all,
- bookmarksnumbered=true,
- bookmarksopen=true,
- pdfsubject={哈尔滨工业大学(深圳)本科毕业设计(论文)},
- pdftitle = {哈尔滨工业大学(深圳)本科毕业设计(论文)},
- pdfauthor = {杨敬轩},
- pdfkeywords={HITSZThesis, Dissertation},
- pdfcreator={XeLaTeX with hitszthesis class},
- colorlinks,
- linkcolor=black,
- citecolor=black,
- plainpages=false,
- pdfstartview=FitH,
- pdfborder={0 0 0},
+% 此处根据本科生模板的多种版本,提供选项自定义页码、页眉样式。
+% \begin{macrocode}
+\fancypagestyle{hitsz@headings}{%
+ \fancyhf{}
+ \ifhitsz@doctor
+ \fancyhead[CO]{\songti\xiaowu[0]\leftmark}
+ \ifhitsz@harbin
+ \fancyhead[CE]{\songti\xiaowu[0]\hitsz@cschoolname\hitsz@cdegree\hitsz@cthesisname}
+ \fi
+ \ifhitsz@shenzhen
+ \fancyhead[CE]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@cdegree\hitsz@cthesisname}
+ \fi
+ \ifhitsz@weihai
+ \fancyhead[CE]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@weihaicampus\hitsz@cdegree\hitsz@cthesisname}
+ \fi
+ \else
+ \ifhitsz@master
+ \ifhitsz@harbin
+ \fancyhead[C]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@cdegree\hitsz@cthesisname}
+ \fi
+ \ifhitsz@shenzhen
+ \fancyhead[C]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@cdegree\hitsz@cthesisname}
+ \fi
+ \ifhitsz@weihai
+ \fancyhead[C]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@weihaicampus\hitsz@cdegree\hitsz@cthesisname}
+ \fi
+ \fi
+ \fi
+ \ifhitsz@bachelor
+ \ifhitsz@harbin
+ \fancyhead[C]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@bachelor@cxuewei\hitsz@bachelor@cthesisname}%
+ \fi
+ \ifhitsz@shenzhen
+ \fancyhead[C]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@shenzhencampus\hitsz@bachelor@cxuewei\hitsz@bachelor@cthesisname}%
+ \fi
+ \ifhitsz@weihai
+ \fancyhead[C]{\songti\xiaowu[0]%
+ \hitsz@cschoolname\hitsz@weihaicampus\hitsz@bachelor@cxuewei\hitsz@bachelor@cthesisname}%
+ \fi
+ \fancyfoot[C]{\xiaowu%
+ \if@mainmatter%
+ \ifhitsz@bsmainpagenumberline-~\thepage~-
+ \else\thepage
+ \fi
+ \else%
+ \ifhitsz@bsfrontpagenumberline-~\thepage~-
+ \else\thepage
+ \fi
+ \fi
+ }
+ \ifhitsz@bsheadrule
+ \renewcommand{\headrule}{
+ \vskip 1.190132pt
+ \hrule\@height2.276208pt\@width\headwidth
+ \vskip 0.75pt
+ \hrule\@height.75pt\@width\headwidth
+ }
+ \else
+ \renewcommand{\headrulewidth}{0pt}
+ \fi
+ \else%
+ \fancyfoot[C]{\xiaowu-~\thepage~-}
+ \renewcommand{\headrule}{%
+ \vskip 1.190132pt
+ \hrule\@height2.276208pt\@width\headwidth
+ \vskip 0.75pt
+ \hrule\@height.75pt\@width\headwidth
+ }
+ \fi
+ % 页眉中小五汉字,0行距时,占用9bt,页眉高度为14pt,
+ % 所以页眉中headrule四个距离之和要保持等于 14pt - 9bt = 4.96634pt
+ \renewcommand{\footrulewidth}{0pt}
}
+\AtBeginDocument{%此处解决页眉经典bug
+ \pagestyle{hitsz@empty}
+ \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\enspace#1}{}}}
+%</cls>
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \subsection{正文内容设置}
-% 章节设置
-% \begin{macrocode}
-\RequirePackage[pagestyles]{titlesec}
-\RequirePackage{apptools}
-% \end{macrocode}
+% \subsubsection{段落}
+% \label{sec:paragraph}
%
-% \begin{macro}{\setcounter}
-% 更改章节编号深度
+% 全文首行缩进 2 字符,标点符号用全角
% \begin{macrocode}
-\setcounter{secnumdepth}{3}
+%<*cls>
+\ctexset{%
+ punct=quanjiao,
+ space=auto,
+ autoindent=true}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\captionsetup}
-% 图表标题设置,字号为small,分割符为空格
+% 利用 \pkg{enumitem} 命令调整默认列表环境间的距离,以符合中文习惯。
% \begin{macrocode}
-\RequirePackage[font=small,labelsep=quad]{caption}
-\ifhitsz@boldcaption
- \renewcommand\captionfont{\small\song\bfseries}
-\fi
+\setlist{nosep}
+%</cls>
% \end{macrocode}
%
-% 标题与图表的间距为3pt
-% \begin{macrocode}
-\captionsetup[table]{skip=3pt}
-\captionsetup[figure]{skip=10pt}
-% \end{macrocode}
-% \end{macro}
+% \subsubsection{脚注}
+% \label{sec:footnote}
%
-% \begin{macro}{\figref}
-% \begin{macro}{\tabref}
-% \begin{macro}{\equref}
-% 图表的引用格式
+% 脚注符合中文习惯,数字带圈。
% \begin{macrocode}
-\newcommand\figref[1]{图\ref{#1}}
-\newcommand\tabref[1]{表\ref{#1}}
-\newcommand\equref[1]{式(\ref{#1})}
+%<*cls>
+\def\hitsz@textcircled#1{%
+ \ifnum\value{#1} >9
+ \ClassError{hitszszthesis}%
+ {Too many footnotes in this page.}{Keep footnote less than 10.}
+ \fi
+ \ifhitsz@pifootnote%
+ \ding{\the\numexpr\value{#1}+171\relax}%
+ \else%
+ \textcircled{\xiaoliu\arabic{#1}}%
+ \fi}
+\renewcommand{\thefootnote}{\hitsz@textcircled{footnote}}
+\renewcommand{\thempfootnote}{\hitsz@textcircled{mpfootnote}}
+% \end{macrocode}
+%
+% 定义脚注分割线,字号(宋体小五),以及悬挂缩进(1.5字符)。
+% \begin{macrocode}
+\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
+\let\hitsz@footnotesize\footnotesize
+\renewcommand\footnotesize{\hitsz@footnotesize\xiaowu[1.5]}
+\footnotemargin1.5em\relax
+% \end{macrocode}
+%
+% \cs{@makefnmark} 默认是上标样式,而在脚注部分要求为正文大小。利用\cs{patchcmd}
+% 动态调整 \cs{@makefnmark} 的定义。
+% \begin{macrocode}
+\let\hitsz@makefnmark\@makefnmark
+\def\hitsz@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
+\pretocmd{\@makefntext}{\let\@makefnmark\hitsz@@makefnmark}{}{}
+\apptocmd{\@makefntext}{\let\@makefnmark\hitsz@makefnmark}{}{}
+%</cls>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\setlist}
-% 设置列表环境各项间无自动间距
-% \begin{macrocode}
-\setlist{nolistsep}
-% \end{macrocode}
-% \end{macro}
+% \subsubsection{数学相关}
+% \label{sec:equation}
%
-% \subsection{定理样式设置}
-% 定义各类定理样式
+% 允许太长的公式断行、分页等。
% \begin{macrocode}
-\RequirePackage{amsthm}
-\let\proof\relax
-\let\endproof\relax
+%<*cls>
+\allowdisplaybreaks[4]
+\predisplaypenalty=0 %公式之前可以换页,公式出现在页面顶部
+\postdisplaypenalty=0
+\renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi\@arabic\c@equation}
% \end{macrocode}
%
-% \begin{macro}{\newtheoremstyle}
-% 定义新定义样式
+% 公式距前后文的距离由 4 个参数控制,参见 \cs{normalsize} 的定义。
+% 同时为了让 \pkg{amsmath} 的 \cs{tag*} 命令得到正确的格式,我们必须修改这些代
+% 码。\cs{make@df@tag} 是定义 \cs{tag*} 和 \cs{tag} 内部命令的。
+% \cs{make@df@tag@@} 处理 \cs{tag*},我们就改它!
+% \begin{latex}
+% \def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@}
+% \def\make@df@tag@@#1{%
+% \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
+% \end{latex}
% \begin{macrocode}
-\newtheoremstyle{ydefstyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{%
- 0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}}
+\def\make@df@tag{\@ifstar\hitsz@make@df@tag@@\make@df@tag@@@}
+\def\hitsz@make@df@tag@@#1{\gdef\df@tag{\hitsz@maketag{#1}\def\@currentlabel{#1}}}
+\iffalse
+\ifhitsz@bachelor
+ \def\hitsz@maketag#1{\maketag@@@{%
+ (\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)}}
+ \def\tagform@#1{\maketag@@@{%
+ (\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)\equcaption{#1}}}
+\fi
+\fi
+\def\hitsz@maketag#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)}}
+\def\tagform@#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)\equcaption{#1}}}
% \end{macrocode}
%
-% 定义新定理样式
+% 修改 \cs{tagform} 会影响 \cs{eqref}。
% \begin{macrocode}
-\newtheoremstyle{ythmstyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{%
- 0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}}
+\renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
+%</cls>
% \end{macrocode}
%
-% 定义新命题样式
+% 定理标题使用黑体,正文使用宋体,冒号隔开。
% \begin{macrocode}
-\newtheoremstyle{yprostyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{%
- 0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}}
+%<*cfg>
+\theorembodyfont{\normalfont}
+\theoremheaderfont{\normalfont\heiti}
+\theoremsymbol{\ensuremath{\square}}
+\newtheorem*{proof}{证明}
+\theoremstyle{plain}
+\theoremsymbol{}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\theoremstyle}
-% \begin{macro}{\newtheorem}
-% 应用定义样式
+% 此处去除了冒号,如果需要在加上这个冒号。
% \begin{macrocode}
-\theoremstyle{ydefstyle}
-\newtheorem{ydefinition}{\definitionname }[chapter]
+\theoremseparator{}
+\newtheorem{assumption}{假设}[chapter]
+\newtheorem{definition}{定义}[chapter]
+\newtheorem{proposition}{命题}[chapter]
+\newtheorem{lemma}{引理}[chapter]
+\newtheorem{theorem}{定理}[chapter]
+\newtheorem{axiom}{公理}[chapter]
+\newtheorem{corollary}{推论}[chapter]
+\newtheorem{exercise}{练习}[chapter]
+\newtheorem{example}{例}[chapter]
+\newtheorem{remark}{注释}[chapter]
+\newtheorem{problem}{问题}[chapter]
+\newtheorem{conjecture}{猜想}[chapter]
+%</cfg>
% \end{macrocode}
%
-% 应用定理样式
+% \subsubsection{浮动对象以及表格}
+% \label{sec:float}
+%
+% 设置浮动对象和文字之间的距离,由于规范中没有明确规定,根据经验,设置成正文汉字
+% 高度。
% \begin{macrocode}
-\theoremstyle{ythmstyle}
-\newtheorem{ytheorem}{\theoremname }[chapter]
-\newtheorem{ylemma}{\lemmaname }[chapter]
-\newtheorem{ycorollary}{\corollaryname }[chapter]
-\newtheorem{ypostulate}{\postulatename }[chapter]
-\newtheorem{yaxiom}{\axiomname }[chapter]
+%<*cls>
+\setlength{\intextsep}{\ifhitsz@glue 8.50398bp \@plus 2.83465bp \@minus 0bp\else 8.50398bp\fi}
+\setlength{\textfloatsep}{\ifhitsz@glue 8.50398bp \@plus 2.83465bp \@minus 0bp\else 8.50398bp\fi}
+\setlength{\floatsep}{\ifhitsz@glue 12bp \@plus 2.83465bp \@minus 0bp\else 12bp\fi}
+% \end{macrocode}
+%
+% 此处设置float在p选项时间隔,此处不设置\cs{@fptop}和\cs{@fpbot}以确保居中。
+% 下面这组命令使浮动对象的缺省值稍微宽松一点,从而防止幅度对象占据过多的文本页面,
+% 也可以防止在很大空白的浮动页上放置很小的图形。
+% \begin{macrocode}
+\g@addto@macro\appendix{\renewcommand*{\thefigure}{\thechapter-\arabic{figure}}}
+\g@addto@macro\appendix{\renewcommand*{\thetable}{\thechapter-\arabic{table}}}
+\g@addto@macro\appendix{\renewcommand*{\theequation}{\thechapter-\arabic{equation}}}
+\renewcommand{\textfraction}{0.15}
+\renewcommand{\topfraction}{0.85}
+\renewcommand{\bottomfraction}{0.65}
+\renewcommand{\floatpagefraction}{0.60}
+% \end{macrocode}
+%
+% 由于窝工的双标题,导致标题之下多出一空白字符的距离,去除。
+% \begin{macro}{\@makecaption}
+% 根据窝工规范,本科和硕博的图题序号之后的空格不一样。
+% \begin{hitszrgu}[\PGR][2.13.1]
+% 每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个
+% 半角字符排写。
+% \end{hitszrgu}
+% \begin{hitszrgu}[\UGR][2.13.1]
+% 每个图均应有图题(由图序和图名组成),图题不宜有标点符号,图名在图序之后空1个
+% 字符排写。
+% \end{hitszrgu}
+% 窝工规范中没有明确规定是否标题是否居中对齐,这里给出一个居中选项自行调整。
+% 注意,窝工只规定:“居中书写”。此处不额外添加悬挂处理。
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \ifhitsz@boldcaption\songti\bfseries\fi
+ \wuhao\sbox\@tempboxa{#1\ifhitsz@bachelor\hskip\ccwd\else\enskip\fi#2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \ifhitsz@capcenterlast%
+ \vskip 6.3bp%
+ {\setbox0=\vbox{#1\ifhitsz@bachelor\hskip\ccwd\else\enskip\fi#2}
+ \setbox1=\vbox{%
+ \unvbox0
+ \setbox2=\lastbox
+ \hbox to \textwidth{\hfill\unhcopy2 \unskip\unskip\hfill}
+ }
+ \unvbox1}
+ \else%
+ #1\ifhitsz@bachelor\hskip\ccwd\else\enskip\fi#2%
+ \fi%
+ \par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+\vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\longbionenumcaption}
+% 长表格的双语标题是一个坑. 因为第一不能用浮动格式,只能用longtable包中的tabular
+% ,这样表题只能使用表格中前两行来写。这样出现了一个问题是,中英表题的间距,标题
+% 和表第一行间距,表格内部间距等多个变量的协调问题。这个问题只要使用tabular的形
+% 式,就是无解的。唯一的方法就是把这些参数都给用户列出来。以下,第2,5参数为中英
+% 双语标题内容,1,4为标题参数。6为中英标题间距,7为表题和表格间距。
+% \begin{macrocode}
+\renewcommand*{\longbionenumcaption}[7]{%
+\@if@contemptyarg{#1}{\caption{#2}}{\caption[#1]{#2}}%
+\global\let\@cont@oldtablename\tablename
+\gdef\tablename{#3}
+\global\let\LT@c@ption\@cont@LT@nonumintoc
+\\[#6]
+\@if@contemptyarg{#4}{\caption{#5}}{\caption[#4]{#5}}%
+\global\let\tablename\@cont@oldtablename
+\global\let\LT@c@ption\@cont@oldLT@c@ption
+\vspace{#7}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ltfontsize}
+% 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号,
+% 行距设置为1.3倍行距。此处还需要提供一个设置长表格内部字体的命令。
+% \begin{macrocode}
+\let\hitsz@LT@array\LT@array
+\def\LT@array{\wuhao\hitsz@LT@array} % set default font size
+\newcommand{\ltfontsize}[1]{\def\LT@array{#1\hitsz@LT@array}}
+% \end{macrocode}
+% \end{macro}
+%
+% 图表名称及格式。
+% \begin{macrocode}
+\renewcommand{\thesubtable}{(\alph{subtable})}
+\renewcommand{\thefigure}{\arabic{chapter}-\arabic{figure}}%使图编号为 7-1 的格式 %\protect{~}
+\renewcommand{\thesubfigure}{\alph{subfigure})}%使子图编号为 a)的格式
+\renewcommand{\p@subfigure}{\thefigure~} %使子图引用为 7-1 a) 的格式,母图编号和子图编号之间用~加一个空格
+\renewcommand{\thetable}{\arabic{chapter}-\arabic{table}}%使表编号为 7-1 的格式
% \end{macrocode}
%
-% 应用命题样式
+% \begin{macro}{\figref}
+% \begin{macro}{\tabref}
+% \begin{macro}{\equref}
+% 图表的引用格式
% \begin{macrocode}
-\theoremstyle{yprostyle}
-\newtheorem{yproposition}{\propositionname }[chapter]
+\newcommand\figref[1]{图\ref{#1}}
+\newcommand\tabref[1]{表\ref{#1}}
+\newcommand\equref[1]{式(\ref{#1})}
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
-% \begin{environment}{theorem}
-% 定义新定理环境
+% 调整罗列环境、浮动格式、间距。
% \begin{macrocode}
-\newenvironment{theorem}[2]
- {\ifstrempty{#1}{\ytheorem}{\ytheorem[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endytheorem}
+\setitemize{leftmargin=0em,itemsep=0em,partopsep=0em,parsep=0em,topsep=0em,itemindent=3em}
+\setenumerate{leftmargin=0em,itemsep=0em,partopsep=0em,parsep=0em,topsep=0em,itemindent=3.5em}
+\newcommand{\citeup}[1]{\textsuperscript{\cite{#1}}}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{definition}
-% 定义新定义环境
+% 此处删除hang caption的设置
% \begin{macrocode}
-\newenvironment{definition}[2]
- {\ifstrempty{#1}{\ydefinition}{\ydefinition[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endydefinition}
+\captionnamefont{\wuhao}
+\captiontitlefont{\wuhao}
+\renewcommand{\subcapsize}{\wuhao}
+\setlength{\abovecaptionskip}{0pt}%为了双标题之间的间距,不能设置
+\setlength{\belowcaptionskip}{0pt}
+% 自定义项目列表标签及格式 \begin{publist} 列表项 \end{publist}
+\newcounter{pubctr} %自定义新计数器
+\newenvironment{publist}{%%%%%定义新环境
+\begin{list}{[\arabic{pubctr}]} %%标签格式
+ {
+ \usecounter{pubctr}
+ \setlength{\leftmargin}{1.7em} % 左边界 \leftmargin =\itemindent + \labelwidth + \labelsep
+ \setlength{\itemindent}{0em} % 标号缩进量
+ \setlength{\labelsep}{0.5em} % 标号和列表项之间的距离,默认0.5em
+ \setlength{\rightmargin}{0em} % 右边界
+ \setlength{\topsep}{0ex} % 列表到上下文的垂直距离
+ \setlength{\parsep}{0ex} % 段落间距
+ \setlength{\itemsep}{0ex} % 标签间距
+ \setlength{\listparindent}{0pt} % 段落缩进量
+ }}
+{\end{list}}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{lemma}
-% 定义新引理环境
+% 设置定理定义格式
% \begin{macrocode}
-\newenvironment{lemma}[2]
- {\ifstrempty{#1}{\ylemma}{\ylemma[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endylemma}
+\renewtheoremstyle{plain}
+{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\theorem@separator]}
+{\item[\hskip\labelsep \theorem@headerfont ##1\ ##2\ ##3\theorem@separator]}
+\theorembodyfont{\songti\rmfamily}
+\theoremheaderfont{\heiti\rmfamily}
+\theoremsymbol{$\square$}
+\setlength{\theorempreskipamount}{0pt}
+\setlength{\theorempostskipamount}{-2pt}
+\setlength{\parindent}{2em}
+\arraycolsep=1.6pt
+%</cls>
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{corollary}
-% 定义新推论环境
-% \begin{macrocode}
-\newenvironment{corollary}[2]
- {\ifstrempty{#1}{\ycorollary}{\ycorollary[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endycorollary}
-% \end{macrocode}
-% \end{environment}
+% \subsubsection{章节标题}
+% \label{sec:theor}
%
-% \begin{environment}{postulate}
-% 定义新公设环境
% \begin{macrocode}
-\newenvironment{postulate}[2]
- {\ifstrempty{#1}{\ypostulate}{\ypostulate[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endypostulate}
+%<*cfg>
+\ctexset{%
+ chapter/name={第,章},
+ appendixname=附录,
+ contentsname={目\hspace{\ccwd}录},
+ listfigurename=插图索引,
+ listtablename=表格索引,
+ figurename=图,
+ tablename=表,
+ bibname=参考文献,
+ indexname=索引,
+}
+\newcommand\listfigureename{Index of figure}
+\newcommand\listtableename{Index of table}
+\newcommand\listequationename{Index of equation}
+\newcommand\listequationname{公式索引}
+\newcommand\equationname{公式}
+\newcommand{\cabstractcname}{摘\hspace{\ccwd}要}
+\newcommand{\cabstractename}{Abstract (In Chinese)}
+% \end{macrocode}
+%
+% 此处删除冗余选项
+% \begin{macrocode}
+\newcommand{\eabstractcname}{Abstract}
+\newcommand{\eabstractename}{Abstract (In English)}
+\newcommand{\hitsz@ckeywords@title}{关键词:}
+\def\hitsz@ckeywords@separator{;}
+\def\hitsz@ekeywords@separator{,}
+\let\CJK@todaysave=\today
+\def\CJK@todaysmall@short{\the\year 年 \the\month 月}
+\def\CJK@todaysmall{\the\year 年 \the\month 月 \the\day 日}
+\def\CJK@todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
+\def\CJK@todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
+\def\CJK@today{\CJK@todaysmall}
+\renewcommand\today{\CJK@today}
+\newcommand\CJKtoday[1][1]{%
+ \ifcase#1\def\CJK@today{\CJK@todaysave}
+ \or\def\CJK@today{\CJK@todaysmall}
+ \or\def\CJK@today{\CJK@todaybig}
+ \fi}
+% \end{macrocode}
+%
+% 按照word示范要求,此处使用阿拉伯数字
+% \begin{macrocode}
+\cdate{\ifhitsz@bachelor\CJK@todaysmall@short\else\CJK@todaysmall@short\fi}
+\edate{\ifcase \month \or January\or February\or March\or April\or May%
+ \or June\or July \or August\or September\or October\or November
+ \or December\fi\unskip,\ \ \the\year}
+%</cfg>
+% \end{macrocode}
+%
+% 按照窝工要求,页面中标题之下不少于一行。
+% \begin{macrocode}
+%<*cls>
+\def\hitsz@title@font{%
+ \ifhitsz@arialtitle\sffamily\else\heiti\fi}
+
+\newcommand\hitsz@chapter@titleformat[1]{%开启悬挂缩进选项
+ \ifthenelse%
+ {\equal{#1}{\eabstractcname}}%
+ {\bfseries #1}%
+ %实现章标题的居中加悬挂缩进,注意,此处一定是\CTEX@chaptername\CTEX@chapter@aftername, 否则是英文标题长度
+ {\ifhitsz@chapterhang%
+ \settowidth{\hangindent}{\CTEX@chaptername\CTEX@chapter@aftername}\hangafter=1
+ \fi#1}%
+ %{\begin{varwidth}[t]{\hitsz@chapter@indentboxwidth}#1\end{varwidth}}
+}
+
+\renewcommand\@afterheading{%
+ \@nobreaktrue
+ \everypar{%
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty 1
+ \if@afterindent \else
+ {\setbox\z@\lastbox}%
+ \fi
+ \else
+ \clubpenalty 1
+ \everypar{}%
+ \fi}}
+% \end{macrocode}
+%
+% 设置一到四级标题、目录、书签格式。
+% \begin{macrocode}
+\ctexset{%
+ chapter={
+ afterindent=true,
+ pagestyle={hitsz@headings},
+ beforeskip={24.74658bp},%一个空行 1.57481 × 18
+ afterskip={24.74658bp},%0.8应该不计算间距 0.8 × 18 + 0.57481×18
+ aftername=\enspace,
+ format={\centering\hitsz@title@font\xiaoer[1.57481]},%\center 会影响之后全局
+ nameformat=\relax,
+ numberformat=\relax,
+ titleformat=\hitsz@chapter@titleformat,
+ fixskip=true, % 添加这一行去除默认间距
+ %hang=true,
+ },
+ section={
+ afterindent=true,
+ beforeskip={\ifhitsz@glue
+ 13.5bp \@plus 1.677267bp \@minus 1.157391bp
+ \else
+ \ifhitsz@bachelor 20.25bp \else 20.25bp
+ \fi
+ \fi}, % 原为13.5bp
+ afterskip={\ifhitsz@glue
+ 13.5bp \@plus 1.677267bp \@minus 1.157391bp
+ \else
+ \ifhitsz@bachelor 20.25bp \else 20.25bp
+ \fi
+ \fi},
+ format={\hitsz@title@font
+ \ifhitsz@glue
+ \fontsize{15bp}{21bp \@plus 1.677267bp \@minus 1.157391bp}
+ \else
+ \fontsize{15bp}{21bp}
+ \fi
+ \selectfont},
+ aftername=\enspace,
+ fixskip=true,
+ break={},
+ },
+ subsection={
+ afterindent=true,
+ beforeskip={\ifhitsz@glue 11bp \@plus 1.842609bp \@minus 0.9920497bp
+ \else
+ \ifhitsz@bachelor 16.5bp
+ \else 16.5bp
+ \fi
+ \fi}, % 原为11bp
+ afterskip={ \ifhitsz@glue 11bp \@plus 2.33863bp \@minus 0.49602bp
+ \else
+ \ifhitsz@bachelor 16.5bp
+ \else 16.5bp
+ \fi
+ \fi},
+ format={\hitsz@title@font
+ \ifhitsz@glue
+ \fontsize{14bp}{18bp \@plus 1.842609bp \@minus 0.9920497bp}
+ \else
+ \fontsize{14bp}{18bp}
+ \fi\selectfont},
+ aftername=\enspace,
+ fixskip=true,
+ break={},
+ },
+ subsubsection={
+ afterindent=true,
+ beforeskip={\ifhitsz@glue 8.50398bp \@plus 2.83465bp \@minus 0bp
+ \else
+ \ifhitsz@bachelor 13.5bp
+ \else 13.5bp
+ \fi
+ \fi}, % 原为9bp
+ afterskip={ \ifhitsz@glue 8.50398bp \@plus 2.83465bp \@minus 0bp
+ \else
+ \ifhitsz@bachelor 13.5bp
+ \else 13.5bp
+ \fi
+ \fi},
+ format={\hitsz@title@font\normalsize},
+ aftername=\enspace,
+ fixskip=true,
+ break={},
+ },
+ paragraph/afterindent=true,
+ subparagraph/afterindent=true
+}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{axiom}
-% 定义新公理环境
-% \begin{macrocode}
-\newenvironment{axiom}[2]
- {\ifstrempty{#1}{\yaxiom}{\yaxiom[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endyaxiom}
+% 设置附表、附录格式。
+% \begin{macrocode}
+\NewDocumentCommand{\hitsz@appendix@chapter}{s m o}{%
+ \IfBooleanT{#1}%
+ {
+ \phantomsection
+ \markboth{#2}{#2}
+ \ifthenelse%
+ {\equal{#2}{\eabstractcname}}%
+ {\addcontentsline{toc}{chapter}{%
+ \texorpdfstring{\ifhitsz@arialtitle\sffamily\heiti%
+ \else\heiti
+ \fi
+ \ifhitsz@absupper\MakeUppercase{#2}%
+ \else#2
+ \fi}{#2}}}
+ {\addcontentsline{toc}{chapter}{%
+ \texorpdfstring{\ifhitsz@arialtitle\sffamily\heiti\else\heiti\fi #2}{#2}}}
+ \IfValueT{#3}{\addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries #3}{#3}}}
+ \hitsz@chapter*{#2}
+ }
+}
+% 该附录命令适用于发表文章,简历等
+\newcommand{\BiAppChapter}[2] % 该附录命令适用于有章节的完整附录
+{\phantomsection
+ \chapter{#1}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{proposition}
-% 定义新命题环境
+% 此处添加保护选项
% \begin{macrocode}
-\newenvironment{proposition}[2]
- {\ifstrempty{#1}{\yproposition}{\yproposition[#1]}\ifstrempty{#2}{}{\label{#2}}}
- {\endyproposition}
+ \addcontentsline{toe}{chapter}{%
+ \texorpdfstring{\bfseries \xiaosi Appendix \thechapter~~#2}{Appendix \thechapter~~#2}}
+}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{note}
-% 定义新注解环境
+% 设置章节命令。s: 星号,表示在目录中出不出现序号。m: 必须要有的选项,中文章
+% 节名称也即目录中名称,页眉中名称,书签中的名称。o: 可选内容,没有就默认是正
+% 文章节,如果有,则是英文目录中显示的内容。
+% \begin{macro}{\chapter}
+% \begin{macro}{\section}
+% \begin{macro}{\subsection}
+% \begin{macro}{\subsubsection}
% \begin{macrocode}
-\newenvironment{note}{
- \par\noindent\textbf{\notename\,}
- \itshape}{\par}
+\let\hitsz@chapter\chapter
+\RenewDocumentCommand{\chapter}{s o m o}{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi\phantomsection%
+ \IfBooleanTF{#1}%
+ {% if \chapter*
+ \hitsz@chapter*{#3}%
+ \IfValueT{#4}{%
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{proof}
-% 定义新证明环境
+% 此处添加保护选项
% \begin{macrocode}
-\newenvironment{proof}{
- \par\noindent\textbf{\proofname\;}
-}{\hfill$\square$\quad\par}
+ \addcontentsline{toe}{chapter}{\texorpdfstring{\bfseries #4}{#4}}
+ }
+ }%
+ {% if \chapter
+ \IfNoValueTF{#2}%
+ {\hitsz@chapter{#3}}%
+ {\hitsz@chapter[#2]{#3}}%
+ \IfValueT{#4}{%
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{solution}
-% 定义新解答环境
+% 此处需删除章节的空白
% \begin{macrocode}
-\newenvironment{solution}{\medskip\par\noindent\textbf{\solutionname} \itshape}{\par}
+ \addcontentsline{toe}{chapter}{%
+ \texorpdfstring{\bfseries\relax Chapter \thechapter\hspace{0.5em}\ignorespaces #4}{%
+ Chapter \thechapter\hspace{0.5em}\ignorespaces #4}}
+ }
+ }
+}
+
+\let\hitsz@section\section
+\RenewDocumentCommand\section{s o m o}{
+ \IfBooleanTF{#1}%
+ {% if \section*
+ \hitsz@section*{#3}%
+ \IfValueT{#4}{%
+ \addcontentsline{toe}{section}{#4}
+ }
+ }%
+ {% if \section
+ \IfNoValueTF{#2}%
+ {\hitsz@section{#3}}%
+ {\hitsz@section[#2]{#3}}%
+ \IfValueT{#4}{%
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{remark}
-% 定义新注释环境
+% 此处需删除章节的空白
% \begin{macrocode}
-\newenvironment{remark}{\noindent\textbf{\remarkname}}{\par}
+ \addcontentsline{toe}{section}{%
+ \protect\numberline{\csname thesection\endcsname}\ignorespaces #4}
+ }
+ }
+}
+
+\let\hitsz@subsection\subsection
+\RenewDocumentCommand\subsection{s o m o}{
+ \IfBooleanTF{#1}%
+ {% if \subsection*
+ \hitsz@subsection*{#3}%
+ \IfValueT{#4}{%
+ \addcontentsline{toe}{subsection}{#4}
+ }
+ }%
+ {% if \subsection
+ \IfNoValueTF{#2}%
+ {\hitsz@subsection{#3}}%
+ {\hitsz@subsection[#2]{#3}}%
+ \IfValueT{#4}{%
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{assumption}
-% 定义新假设环境
+% 此处需删除章节的空白
% \begin{macrocode}
-\newenvironment{assumption}{\par\noindent\textbf{\assumptionname}}{\par}
+ \addcontentsline{toe}{subsection}{%
+ \protect\numberline{\csname thesubsection\endcsname}\ignorespaces #4}
+ }
+ }
+}
+
+\let\hitsz@subsubsection\subsubsection
+\RenewDocumentCommand\subsubsection{s o m o}{
+ \IfBooleanTF{#1}%
+ {% if \subsubsection*
+ \hitsz@subsubsection*{#3}%
+ \IfValueT{#4}{%
+ \addcontentsline{toe}{subsubsection}{#4}
+ }
+ }%
+ {% if \subsubsection
+ \IfNoValueTF{#2}%
+ {\hitsz@subsubsection{#3}}%
+ {\hitsz@subsubsection[#2]{#3}}%
+ \IfValueT{#4}{%
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{conclusion}
-% 定义新结论环境
+% 此处需删除章节的空白
% \begin{macrocode}
-\newenvironment{conclusion}{\par\noindent\textbf{\conclusionname}}{\par}
+ \addcontentsline{toe}{subsubsection}{%
+ \protect\numberline{\csname thesubsubsection\endcsname}\ignorespaces #4}
+ }
+ }
+}
% \end{macrocode}
-% \end{environment}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{定义封面}
+% \label{sec:cov}
%
-% \begin{environment}{property}
-% 定义新性质环境
+% 封面信息。
% \begin{macrocode}
-\newenvironment{property}{\par\noindent\textbf{\propertyname}}{\par}
+\def\hitsz@def@term#1{%
+ \define@key{hitsz}{#1}{\csname #1\endcsname{##1}}
+ \expandafter\gdef\csname #1\endcsname##1{%
+ \expandafter\gdef\csname hitsz@#1\endcsname{##1}}
+ \csname #1\endcsname{}}
+
+\hitsz@def@term{statesecrets} %密级
+\hitsz@def@term{natclassifiedindex} %国内图书分类号
+\hitsz@def@term{intclassifiedindex} %国际图书分类号
+
+\hitsz@def@term{ctitlecover} %中文标题封面
+\hitsz@def@term{ctitle} %中文标题
+\hitsz@def@term{csubtitle} %中文副标题
+\hitsz@def@term{cxueke} %中文学科
+\hitsz@def@term{cauthor} %中文作者
+\hitsz@def@term{csupervisor} %中文导师
+\hitsz@def@term{cassosupervisor} %中文副导师
+\hitsz@def@term{ccosupervisor}%中文联合导师
+\hitsz@def@term{caffil}%中文院系
+\hitsz@def@term{csubject}%中文专业
+\hitsz@def@term{cdate}
+
+\hitsz@def@term{cstudentid}%
+\hitsz@def@term{cstudenttype}%
+\hitsz@def@term{ctitleone}%
+\hitsz@def@term{ctitletwo}%
+
+
+\hitsz@def@term{etitle} %英文标题
+\hitsz@def@term{esubtitle} %英文标题
+\hitsz@def@term{exueke} %英文学科
+\hitsz@def@term{eauthor} %英文作者
+\hitsz@def@term{esupervisor} %英文导师
+\hitsz@def@term{eassosupervisor} %英文副导师
+\hitsz@def@term{ecosupervisor} %英文联合导师
+\hitsz@def@term{eaffil}
+\hitsz@def@term{esubject}
+\hitsz@def@term{edate}
+\hitsz@def@term{estudenttype}
+\newcommand{\hitsz@@cabstract}[1]{\long\gdef\hitsz@cabstract{#1}}
+\newenvironment{cabstract}{\Collect@Body\hitsz@@cabstract}{}
+\newcommand{\hitsz@@eabstract}[1]{\long\gdef\hitsz@eabstract{#1}}
+\newenvironment{eabstract}{\Collect@Body\hitsz@@eabstract}{}
+\def\hitsz@parse@keywords#1{
+ \define@key{hitsz}{#1}{\csname #1\endcsname{##1}}
+ \expandafter\gdef\csname hitsz@#1\endcsname{}
+ \expandafter\gdef\csname #1\endcsname##1{
+ \@for\reserved@a:=##1\do{
+ \expandafter\ifx\csname hitsz@#1\endcsname\@empty\else
+ \expandafter\g@addto@macro\csname hitsz@#1\endcsname{%
+ \ignorespaces\csname hitsz@#1@separator\endcsname}
+ \fi
+ \expandafter\expandafter\expandafter\g@addto@macro%
+ \expandafter\csname hitsz@#1\expandafter\endcsname\expandafter{\reserved@a}}}}
+\hitsz@parse@keywords{ckeywords}
+\hitsz@parse@keywords{ekeywords}
+\def\hitszsetup{\kvsetkeys{hitsz}}
+%</cls>
% \end{macrocode}
-% \end{environment}
%
-% \subsection{封面设置}
-% \begin{macro}{\maketitle}
-% 重定义\cs{maketitle}命令
+% 定义封面中用到的词汇。
% \begin{macrocode}
-\renewcommand{\maketitle}{\par
- \begingroup
- \newgeometry{left=20mm,right=20mm,top=30mm,bottom=35mm}
- \newpage
- % 禁止图片位于页面最上方
- \global\@topnum\z@
- \@maketitle % 下面再设置封面具体内容
- \endgroup
- % 先取消原来封面样式的所有设置,以便后面重写此命令
- \global\let\thanks\relax
- \global\let\maketitle\relax
- \global\let\@maketitle\relax
- \global\let\@thanks\@empty
- \global\let\@author\@empty
- \global\let\@date\@empty
- \global\let\@title\@empty
- \global\let\title\relax
- \global\let\author\relax
- \global\let\date\relax
- \global\let\and\relax
+%<*cfg>
+\ifhitsz@doctor
+\gdef\hitsz@cxueweishort{博}
+\gdef\hitsz@exuewei{Doctor}
+\gdef\hitsz@exueweier{Doctoral}
+\gdef\hitsz@cxuewei{\hitsz@cxueweishort 士}
+\gdef\hitsz@cdegree{\hitsz@cxueke\hitsz@cxuewei}
+\gdef\hitsz@edegree{\hitsz@exuewei \ of \hitsz@exueke}
+\def\hitsz@cauthortitle{\hitsz@cxueweishort 士研究生}
+\fi
+\ifhitsz@master
+\gdef\hitsz@cxueweishort{硕}
+\gdef\hitsz@exuewei{Master}
+\gdef\hitsz@exueweier{Master's}
+\gdef\hitsz@cxuewei{\hitsz@cxueweishort 士}
+\gdef\hitsz@cdegree{\hitsz@cxueke\hitsz@cxuewei}
+\gdef\hitsz@edegree{\hitsz@exuewei \ of \hitsz@exueke}
+\def\hitsz@cauthortitle{\hitsz@cxueweishort 士研究生}
+\fi
+\ifhitsz@bachelor
+\gdef\hitsz@cxuewei{学士}
+\fi
+\def\hitsz@bachelor@cxuewei{本科}
+\def\hitsz@bachelor@cthesisname{毕业设计(论文)}
+\def\hitsz@bachelor@caffiltitle{院(系)}
+%</cfg>
+% \end{macrocode}
+%
+% 此处添加深圳校区设置
+% \begin{macrocode}
+%<*cfg>
+\def\hitsz@bachelor@caffiltitlesz{学院}
+\def\hitsz@bachelor@caffiltitlewh{学院}
+\def\hitsz@bachelor@cstudentidtitle{学号}
+\def\hitsz@bachelor@cmajortitle{专业}
+\def\hitsz@bachelor@csupervisortitle{指导教师}
+\def\hitsz@bachelor@cthesistitle{题目}
+\def\hitsz@bachelor@cstudenttitle{学生}
+\def\hitsz@cthesisname{学位论文}
+\def\hitsz@cschoolname{哈尔滨工业大学}
+%</cfg>
+% \end{macrocode}
+%
+% 此处添加深圳校区设置
+% \begin{macrocode}
+%<*cfg>
+\def\hitsz@shenzhencampus{(深圳)}
+\def\hitsz@weihaicampus{(威海)}
+\def\hitsz@cschoolnametitle{授予学位单位}
+\def\hitsz@cdatetitle{答辩日期}
+\def\hitsz@caffiltitle{所在单位}
+\def\hitsz@csubjecttitle{学科}
+\def\hitsz@cdegreetitle{申请学位}
+\def\hitsz@csupervisortitle{导师}
+\def\hitsz@cassosupervisortitle{副导师}
+\def\hitsz@ccosupervisortitle{联合导师}
+\def\hitsz@title@csep{:}
+\def\hitsz@eauthortitle{Candidate}
+\def\hitsz@esupervisortitle{Supervisor}
+\def\hitsz@eassosupervisortitle{Associate Supervisor}
+\def\hitsz@ecosupervisortitle{Co Supervisor}
+\def\hitsz@edegreetitle{Academic Degree Applied for}
+\def\hitsz@esubjecttitle{Specialty}
+\def\hitsz@eaffiltitle{Affiliation}
+\def\hitsz@edatetitle{Date of Defence}
+\def\hitsz@eschoolnametitle{Degree-Conferring-Institution}
+\def\hitsz@eschoolname{Harbin Institute of Technology}
+\def\hitsz@title@esep{:}
+\def\hitsz@natclassifiedindextitle{国内图书分类号}
+\def\hitsz@internatclassifiedindextitle{国际图书分类号}
+\def\hitsz@secretlevel{密级}
+\def\hitsz@schoolidtitle{学校代码}
+\def\hitsz@schoolid{10213}
+\def\hitsz@conclusion@ctitle{结\hspace{\ccwd}论}
+\def\hitsz@conclusion@etitle{Conclusions}
+\def\hitsz@bibname@etitle{References}
+\def\hitsz@acknowledgement@ctitle{致\hspace{\ccwd}谢}
+\def\hitsz@acknowledgement@etitle{Acknowledgements}
+\def\hitsz@resume@ctitle{个人简历}
+\def\hitsz@resume@etitle{Resume}
+\def\hitsz@authorization@ctitle{哈尔滨工业大学学位论文原创性声明和使用权限}
+\def\hitsz@authorization@etitle{Statement of copyright and Letter of authorization}
+\newcommand{\hitsz@authorsig}{作者签名:}
+\newcommand{\hitsz@teachersig}{导师签名:}
+\newcommand{\hitsz@frontdate}{日期:}
+\newcommand{\hitsz@denotation@ctitle}{物理量名称及符号表}
+\newcommand{\hitsz@denotation@etitle}{List of physical quantity and symbol}
+\newcommand{\hitsz@authorizationtitle}{学位论文使用权限}
+\newcommand{\hitsz@authorizationtext}{%
+学位论文是研究生在哈尔滨工业大学攻读学位期间完成的成果,知识产权归属哈尔滨工业大学。学位论文的使用权限如下:
+
+(1)学校可以采用影印、缩印或其他复制手段保存研究生上交的学位论文,并向国家图书馆报送学位论文;(2)学校可以将学位论文部分或全部内容编入有关数据库进行检索和提供相应阅览服务;(3)研究生毕业后发表与此学位论文研究成果相关的学术论文和其他成果时,应征得导师同意,且第一署名单位为哈尔滨工业大学。
+
+保密论文在保密期内遵守有关保密规定,解密后适用于此使用权限规定。
+
+本人知悉学位论文的使用权限,并将遵守有关规定。}
+\newcommand{\hitsz@declarename@bachelor}{%
+\ifhitsz@harbin%
+ 哈尔滨工业大学本科毕业设计(论文)原创性声明
+\else%
+ \ifhitsz@shenzhen%
+ 哈尔滨工业大学(深圳)本科毕业设计(论文)原创性声明
+ \else%
+ \ifhitsz@weihai%
+ 哈尔滨工业大学(威海)本科毕业设计(论文)原创性声明
+ \fi%
+ \fi%
+\fi%
}
-% 定义封面具体内容
-\newdimen\infowidth
-\infowidth = 6.5cm
-\def\@maketitle{%
- \newpage
- % 开始写封面
- \thispagestyle{empty}
- \vspace*{2cm}
- %%------------------------
+\newcommand{\hitsz@authorizationtext@bachelor}{%
+本人郑重声明:在哈尔滨工业大学攻读学士学位期间,所提交的毕业设计(论文)《\hitsz@ctitle》,是本人在导师指导下独立进行研究工作所取得的成果。对本文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明,其它未注明部分不包含他人已发表或撰写过的研究成果,不存在购买、由他人代写、剽窃和伪造数据等作假行为。
+
+本人愿为此声明承担法律责任。}
+\newcommand{\hitsz@declarename}{学位论文原创性声明}
+\newcommand{\hitsz@declaretext}{%
+本人郑重声明:此处所提交的学位论文《\hitsz@ctitle》,是本人在导师指导下,在哈尔滨工业大学攻读学位期间独立进行研究工作所取得的成果,且学位论文中除已标注引用文献的部分外不包含他人完成或已发表的研究成果。对本学位论文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明。}
+\newcommand{\hitsz@datefill}{\hspace{2.5em}年\hspace{1.5em}月\hspace{1.5em}日}
+\newcommand{\hitsz@publication@ctitle}{攻读\hitsz@cxuewei 学位期间发表的论文及其他成果}
+\newcommand{\hitsz@publication@etitle}{Papers published in the period of Ph.D. education}
+\def\hitsz@index@etitle{Index}
+\def\hitsz@dummyrow{哈深hitszthesis}
+\def\hitsz@cbraceleft{(}
+\def\hitsz@cbraceright{)}
+\def\hitsz@ebraceleft{(}
+\def\hitsz@ebraceright{)}
+%</cfg>
+% \end{macrocode}
+%
+% 中英文封面。
+% \begin{macrocode}
+%<*cls>
+\newlength{\hitsz@title@width}
+\newcommand{\hitsz@put@title}[2][\hitsz@title@width]{%
+ \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
+
+\def\hitsz@first@titlepage{%
+ \ifhitsz@bachelor\hitsz@first@titlepage@bachelor\else\hitsz@first@titlepage@other\fi}
+\def\hitsz@second@titlepage{%
+ \ifhitsz@bachelor\hitsz@second@titlepage@bachelor\else\hitsz@second@titlepage@other\fi}
+
+\newcommand{\hitsz@first@titlepage@bachelor}{
+\ifthenelse%
+{\equal{\hitsz@fontset}{siyuan}}%
+{\xiaosi[1]\vspace*{0.65em}}%
+{\xiaosi[1]\textcolor[rgb]{1,1,1}{\songti{\hitsz@dummyrow}}}%
\begin{center}
- \ifdefstring{\hitsz@covertitle}{tworow}{
- \parbox[t][1.4cm][t]{\textwidth}{
- \begin{center}\erhao[0]\bfseries\hitsz@tokens@titleone\end{center}
- }\par
- \parbox[t][2.5cm][t]{\textwidth}{
- \begin{center}\erhao[0]\bfseries\hitsz@tokens@titletwo\end{center}
- }\par
- }{\relax}
- \ifdefstring{\hitsz@covertitle}{onerow}{
- \parbox[t][3.4cm][t]{\textwidth}{
- \begin{center}\erhao[0]\bfseries\hitsz@tokens@thesistitle\end{center}
- }
- }{\relax}
- \parbox[t][8.7cm][t]{\textwidth}{
- \begin{center}\xiaoer[0]\song\textbf{\ziju{0.2}\hitsz@tokens@authorname}\end{center}
- }
+ \ifhitsz@covertitletworow
+ \vspace*{0.7cm}
+ \parbox[t][1.4cm][t]{\textwidth}{%
+ \begin{center}
+ \erhao[0]\heiti\hitsz@ctitleone
+ \end{center}
+ }\par
+ \parbox[t][3cm][t]{\textwidth}{%
+ \begin{center}
+ \erhao[0]\heiti\hitsz@ctitletwo
+ \end{center}
+ }\par
+ \else
+ \vspace*{1.2cm}
+ \parbox[t][3.4cm][t]{\textwidth}{%
+ \begin{center}
+ \erhao[0]\heiti\hitsz@ctitlecover
+ \end{center}
+ }
+ \fi
+ % 姓名
+ \parbox[t][9cm][t]{\textwidth}{%
+ \begin{center}
+ \xiaoer[0]\songti\textbf{\hitsz@cauthor}
+ \end{center}
+ }
\begin{center}
- \bfseries
- \begin{tabular}{rl}
-{\xiaosi 学\hphantom{教师}院:} & \xiaosi\hitsz@tokens@departname\\[14pt]
-{\xiaosi 学\hphantom{教师}号:} & \xiaosi\hitsz@tokens@studentID
+ \setlength{\hitsz@title@width}{4em}
+ \heiti\xiaosi
+% \end{macrocode}
+%
+% 此处深圳校区竟然是左对齐。另外,院系名称也有点不一样。
+% \begin{macrocode}
+ \ifhitsz@shenzhen%
+ \begin{tabular}{rl}%
+ \else%
+ \begin{tabular}{rc}%
+ \fi%
+ {\hitsz@put@title{%
+ \ifhitsz@harbin%
+ \hitsz@bachelor@caffiltitle%
+ \else%
+ \ifhitsz@shenzhen%
+ \hitsz@bachelor@caffiltitlesz%
+ \else%
+ \ifhitsz@weihai%
+ \hitsz@bachelor@caffiltitlewh%
+ \fi%
+ \fi%
+ \fi%
+ }\hitsz@title@csep} & \hitsz@caffil\\[14pt]
+ {\hitsz@put@title{\hitsz@bachelor@cstudentidtitle}\hitsz@title@csep} & \hitsz@cstudentid
\end{tabular}
- \hspace{0.5cm}
- \begin{tabular}{rl}
-{\xiaosi 专\hphantom{教师}业:} & \xiaosi\hitsz@tokens@majorin\\[14pt]
-{\xiaosi 指导教师:} & \xiaosi\hitsz@tokens@instructor
+ \ifhitsz@shenzhen%
+ \begin{tabular}{rl}%
+ \else%
+ \begin{tabular}{rc}%
+ \fi%
+ {\hitsz@put@title{\hitsz@bachelor@cmajortitle}\hitsz@title@csep} & \hitsz@csubject\\[14pt]
+ {\hitsz@put@title{\hitsz@bachelor@csupervisortitle}\hitsz@title@csep} & \hitsz@csupervisor
\end{tabular}
\end{center}
- % 日期
\vspace{2.6cm}
- {\xiaosi[0]\song\textbf{2020年6月}}
+ {\xiaosi[0]\songti\textbf{\hitsz@cdate}}
\end{center}
- %%----------------------------
-%% 第二页
-\clearpage
-\thispagestyle{empty}
+}
+% \end{macrocode}
+%
+% 此处本科生使用了\hitsz\ 的logo且本科生论文标题使用了华文新魏字体,为了方便使用,
+% 此处使用了矢量化图片作为输入。
+% \begin{macrocode}
+\newdimen\infowidth
+\infowidth = 7cm
+\newcommand{\hitsz@second@titlepage@bachelor}{
\vspace*{0.8cm}
- \centering\includegraphics[width=8cm]{HITSZname}
+ \ifhitsz@harbin%
+ \centering{\includegraphics[width=6.2cm]{hitlogo}}
+ \else%
+ \ifhitsz@shenzhen%
+ \centering{\includegraphics[width=6.2cm]{hitlogo}~~\raisebox{0.2em}{%
+ \kaishu\yihao\hitsz@shenzhencampus}}
+ \else%
+ \ifhitsz@weihai%
+ \centering{\includegraphics[width=6.2cm]{hitlogo}~~\raisebox{0.2em}{%
+ \kaishu\yihao\hitsz@weihaicampus}}
+ \fi%
+ \fi%
+ \fi%
\vspace{1.3cm}
\begin{center}
- \centering\includegraphics[width=10.5cm]{thesistitle}
+ \centering\includegraphics[width=10.5cm]{bthesistitle}
\vfill
\parbox[t][14.2cm][b]{\textwidth}
{\heiti\xiaosan
- \begin{center} \renewcommand{\arraystretch}{2.6} \bfseries
- % 居中对齐
- \ifdefstring{\hitsz@infoalign}{infocenter}{
- \begin{tabular}{l@{\ \ }c}
- {\xiaoer 题\hphantom{\ 导\ \ \ }目} &
- \underline{\makebox[\infowidth]{%
- \xiaoer \hitsz@tokens@titleone}}\\
- & \underline{\makebox[\infowidth]{%
- \xiaoer \hitsz@tokens@titletwo}}\\
- & \\
- {\xiaosan 专\hphantom{\ 导\ 教\ }业} &
- \underline{\makebox[\infowidth]{%
- \xiaosan\hitsz@tokens@majorin}}\\
- {\xiaosan 学\hphantom{\ 导\ 教\ }号} &
- \underline{\makebox[\infowidth]{%
- \xiaosan\hitsz@tokens@studentID}}\\
- {\xiaosan 学\hphantom{\ 导\ 教\ }生} &
- \underline{\makebox[\infowidth]{%
- \xiaosan\hitsz@tokens@authorname}}\\
- {\xiaosan 指\ 导\ 教\ 师} & \underline{\makebox[\infowidth]{%
- \xiaosan\hitsz@tokens@instructor}}\\
- {\xiaosan 答\ 辩\ 日\ 期} & \underline{\makebox[\infowidth]{%
- \xiaosan\hitsz@tokens@dateinput}}
- \end{tabular} \renewcommand{\arraystretch}{1}
- }{\relax}
- % 左对齐
- \ifdefstring{\hitsz@infoalign}{infoleft}{
- \begin{tabular}{l@{\ \ }c}
- {\xiaoer 题\hphantom{\ 导\ \ \ }目} &
- \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaoer \hitsz@tokens@titleone}}\\
- & \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaoer \hitsz@tokens@titletwo}}\\
- & \\
- {\xiaosan 专\hphantom{\ 导\ 教\ }业} &
- \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaosan\hitsz@tokens@majorin}}\\
- {\xiaosan 学\hphantom{\ 导\ 教\ }号} &
- \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaosan\hitsz@tokens@studentID}}\\
- {\xiaosan 学\hphantom{\ 导\ 教\ }生} &
- \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaosan\hitsz@tokens@authorname}}\\
- {\xiaosan 指\ 导\ 教\ 师} & \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaosan\hitsz@tokens@instructor}}\\
- {\xiaosan 答\ 辩\ 日\ 期} & \underline{\makebox[\infowidth][l]{%
- \hspace*{1em}\xiaosan\hitsz@tokens@dateinput}}
- \end{tabular} \renewcommand{\arraystretch}{1}
- }{\relax}
+ \begin{center} \renewcommand{\arraystretch}{2.5} \heiti
+ \setlength{\hitsz@title@width}{5.5em}
+ \ifhitsz@infoleft
+ \begin{tabular}{l@{\ \ }l}
+ {\xiaoer \hitsz@put@title{\hitsz@bachelor@cthesistitle}} &
+ \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaoer \hitsz@ctitleone}}\\
+ & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaoer \hitsz@ctitletwo}}\\
+ & \\
+ {\hitsz@put@title{\hitsz@bachelor@cmajortitle}} &
+ \underline{\makebox[\infowidth][l]{\hspace*{1em}\hitsz@csubject}}\\
+ {\hitsz@put@title{\hitsz@bachelor@cstudentidtitle}} &
+ \underline{\makebox[\infowidth][l]{\hspace*{1em}\hitsz@cstudentid}}\\
+ {\hitsz@put@title{\hitsz@bachelor@cstudenttitle}} &
+ \underline{\makebox[\infowidth][l]{\hspace*{1em}\hitsz@cauthor}}\\
+ {\hitsz@put@title{\hitsz@bachelor@csupervisortitle}} &
+ \underline{\makebox[\infowidth][l]{\hspace*{1em}\hitsz@csupervisor}}\\
+ {\hitsz@put@title{\hitsz@cdatetitle}} &
+ \underline{\makebox[\infowidth][l]{\hspace*{1em}\CJK@todaysmall}}
+ \end{tabular}
+ \else
+ \begin{tabular}{l@{\ \ }c}
+ {\xiaoer \hitsz@put@title{\hitsz@bachelor@cthesistitle}} &
+ \underline{\makebox[\infowidth]{\xiaoer \hitsz@ctitleone}}\\
+ & \underline{\makebox[\infowidth]{\xiaoer \hitsz@ctitletwo}}\\
+ & \\
+ {\hitsz@put@title{\hitsz@bachelor@cmajortitle}} &
+ \underline{\makebox[\infowidth]{\hitsz@csubject}}\\
+ {\hitsz@put@title{\hitsz@bachelor@cstudentidtitle}} &
+ \underline{\makebox[\infowidth]{\hitsz@cstudentid}}\\
+ {\hitsz@put@title{\hitsz@bachelor@cstudenttitle}} &
+ \underline{\makebox[\infowidth]{\hitsz@cauthor}}\\
+ {\hitsz@put@title{\hitsz@bachelor@csupervisortitle}} &
+ \underline{\makebox[\infowidth]{\hitsz@csupervisor}}\\
+ {\hitsz@put@title{\hitsz@cdatetitle}} &
+ \underline{\makebox[\infowidth]{\CJK@todaysmall}}
+ \end{tabular}
+ \fi
+ \renewcommand{\arraystretch}{1}
\end{center}
}
\end{center}
- \restoregeometry
- \clearpage
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\frontmatter}
-% 设置前言页码编号为大写罗马数字
-% \begin{macrocode}
-\renewcommand{\frontmatter}{%
-\cleardoublepage
-\@mainmatterfalse
-\pagenumbering{Roman}
}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{中英文摘要环境与关键词命令设置}
-% \begin{environment}{abstract}
-%% 中文摘要环境
-% \begin{macrocode}
-\newenvironment{abstract}{\chapter*{\abstractname}
-\addcontentsline{toc}{chapter}{\abstractname}
-}{\if@twocolumn\else\null\fi}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{environment}{keywords}
-% 中文关键词环境
-% \begin{macrocode}
-\newcommand\keywords[1]{%
- \renewcommand{\hitsz@tokens@keywords}{#1}
- {\vskip18pt
- \hspace{-30bp}\begin{tabular}{lp{132mm}}
- {\zihao{-4}\heiti\keywordsname:}&
- {\xiaosi\hitsz@tokens@keywords}
- \end{tabular}}
+
+\newlength{\hitsz@etitlelength}%
+\newcommand{\hitsz@first@titlepage@other}{
+ % 封面一
+\ifthenelse%
+{\equal{\hitsz@fontset}{siyuan}}%
+{\xiaosi[1]\vspace*{0.65em}}%
+{\xiaosi[1]\textcolor[rgb]{1,1,1}{\songti{\hitsz@dummyrow}}}%
+ \vspace*{1.2cm}
+\begin{center}
+ \begin{center}\xiaoyi[1]\songti\textbf{\hitsz@cxuewei\hitsz@cthesisname}\end{center}
+ \ifhitsz@fulltime\vspace{1.4cm}\else%
+ \begin{center}
+ \xiaoyi[1]\songti
+ \textbf{\hitsz@cbraceleft\hitsz@cstudenttype\hitsz@cbraceright}
+ \end{center}
+ \fi%
+ \parbox[t][7.8cm][t]{\textwidth}{%
+ \begin{center}\erhao\heiti\hitsz@ctitlecover\end{center}
+ \ifhitsz@subtitle%
+ \begin{center}
+ \hspace{-4em}\xiaoer\heiti\pozhehao\hitsz@csubtitle
+ \end{center}
+ \fi
+ \begin{center}%
+ \settowidth{\hitsz@etitlelength}{%
+ \erhao\hitsz@etitle\ifhitsz@subtitle\hitsz@title@esep\hitsz@esubtitle\fi}%
+ \ifdim\hitsz@etitlelength>450mm\xiaoer\else\erhao\fi%
+ \textbf{\MakeUppercase{\hitsz@etitle}%
+ \ifhitsz@subtitle%
+ \hitsz@title@esep\MakeUppercase{\hitsz@esubtitle}
+ \fi}\end{center}}
+
+ \parbox[t][7.4cm][t]{\textwidth}{
+ \begin{center}\xiaoer\songti\textbf{\hitsz@cauthor}\end{center}}
+ \parbox[t][1.4cm][t]{\textwidth}{
+ \begin{center}\kaishu\xiaoer\textbf{\hitsz@cschoolname}\end{center}}
+ {\songti\xiaoer\textbf{\hitsz@cdate}}
+\end{center}
}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{environment}{abstracten}
-% 英文摘要环境
-% \begin{macrocode}
-\newenvironment{abstracten}{\chapter*{\bfseries Abstract}
-\addcontentsline{toc}{chapter}{ABSTRACT}
-}{\if@twocolumn\else\null\fi}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{environment}{keywordsen}
-% 英文关键词环境
-% \begin{macrocode}
-\newcommand\keywordsen[1]{%
- \renewcommand{\hitsz@tokens@keywordsen}{#1}
- {\vskip 18pt
- \hspace{-30bp}\begin{tabular}{lp{127mm}}
- {\zihao{-4}\bf\keywordsenname:}&
- {\xiaosi\hitsz@tokens@keywordsen}
- \end{tabular}}
+
+%内封
+\newcommand{\hitsz@second@titlepage@other}{
+ \begin{center}
+ {\songti \xiaosi
+ \begin{tabular}{@{}r@{:}l@{}}
+ \hitsz@natclassifiedindextitle & \hitsz@natclassifiedindex\\
+ \hitsz@internatclassifiedindextitle & \hitsz@intclassifiedindex
+ \end{tabular}}\hfill
+ {\songti \xiaosi
+ \begin{tabular}{@{}r@{:}l@{}}
+ \hitsz@schoolidtitle & \hitsz@schoolid\\
+ \hitsz@secretlevel & \hitsz@statesecrets
+ \end{tabular}}
+ \parbox[t][3.2cm][t]{\textwidth}{\begin{center} \end{center} }
+ \parbox[t][2.4cm][t]{\textwidth}{\xiaoer[1]
+ \begin{center}\songti\bfseries\hitsz@cdegree\hitsz@cthesisname\end{center}
+ \ifhitsz@fulltime\relax
+ \else%
+ \begin{center}
+ \songti\textbf{\hitsz@cbraceleft\hitsz@cstudenttype\hitsz@cbraceright}
+ \end{center}
+ \fi}
+ \parbox[t][5cm][t]{\textwidth}{\erhao
+ \begin{center}\heiti\hitsz@ctitlecover\end{center}
+ \ifhitsz@subtitle%
+ \begin{center}
+ \hspace{-4em}\xiaoer\heiti\pozhehao\hitsz@csubtitle
+ \end{center}
+ \fi}
+ \parbox[t][9.8cm][b]{\textwidth}
+ {\sihao
+ \setlength{\hitsz@title@width}{6em}
+ \begin{center} \renewcommand{\arraystretch}{1.62} \songti
+ \begin{tabular}{l@{\hitsz@title@csep}l}
+ {\heiti \hitsz@put@title{\hitsz@cauthortitle}} & \hitsz@cauthor\\
+ {\heiti \hitsz@put@title{\hitsz@csupervisortitle}} & \hitsz@csupervisor\\
+ \ifx\hitsz@cassosupervisor\@empty\else%
+ {\heiti \hitsz@put@title{\hitsz@cassosupervisortitle}}& \hitsz@cassosupervisor\\
+ \fi
+ \ifx\hitsz@ccosupervisor\@empty\else%
+ {\heiti \hitsz@put@title{\hitsz@ccosupervisortitle}} & \hitsz@ccosupervisor\\
+ \fi
+ {\heiti \hitsz@put@title{\hitsz@cdegreetitle}} & \hitsz@cdegree\\
+ {\heiti \hitsz@put@title{\hitsz@csubjecttitle}} & \hitsz@csubject\\
+ {\heiti \hitsz@put@title{\hitsz@caffiltitle}} & \hitsz@caffil\\
+ {\heiti \hitsz@put@title{\hitsz@cdatetitle}} & \hitsz@cdate\\
+ {\heiti \hitsz@put@title{\hitsz@cschoolnametitle}} & \hitsz@cschoolname
+ \end{tabular} \renewcommand{\arraystretch}{1}
+ \end{center} }
+ \end{center}
}
-% \end{macrocode}
-% \end{environment}
-%
-% \subsection{原创性声明设置}
-% \begin{macro}{\declaration}
-% 定义原创性声明命令
-% \begin{macrocode}
-\newcommand{\declaration}{\par
- \begingroup
- \hitsz@declaration
- \endgroup
+% 英文封面
+\newcommand{\emultiline}[2][c]{%
+ \renewcommand{\arraystretch}{1}
+ \begin{tabular}[#1]{@{}l@{}}#2\end{tabular}
+ \renewcommand{\arraystretch}{1.3}
}
-% \end{macrocode}
-%
-% 定义原创性声明具体内容
-% \begin{macrocode}
-\def\hitsztitle{\hitsz@tokens@thesistitle}
-\def\hitszauthor{\hitsz@tokens@authorname}
-\def\hitsz@declaration{
-\chapter*{\sanhao 哈尔滨工业大学(深圳)本科毕业设计(论文)原创性声明}
-\addcontentsline{toc}{chapter}{原创性声明}\par
-本人郑重声明:在哈尔滨工业大学(深圳)攻读学士学位期间,所提交的毕业设计(论文)《\hitsztitle》,是本人在导师指导下独立进行研究工作所取得的成果。对本文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明,其它未注明部分不包含他人已发表或撰写过的研究成果,不存在购买、由他人代写、剽窃和伪造数据等作假行为。
-\par
-本人愿为此声明承担法律责任。\par
-\vspace{30pt}
-\hspace{6em}作者签名:\hspace{8em}日期:\hspace{3em}年\hspace{1.5em}月\hspace{1.5em}日
+\newcommand{\hitsz@engcover}{
+ {
+ \xiaosi[1.667]\noindent Classified Index: \hitsz@natclassifiedindex \\[8pt]
+ U.D.C: \hitsz@intclassifiedindex }
+ \vspace*{1em}
+ \begin{center}
+ \parbox[t][1.6cm][t]{\textwidth}{\begin{center} \end{center} }
+ \parbox[t][3.5cm][t]{\textwidth}{\xiaoer[1]
+ \begin{center}Dissertation for the {\hitsz@exueweier} Degree in \hitsz@exueke\end{center}
+ \ifhitsz@fulltime\relax
+ \else%
+ \begin{center}
+ \hitsz@ebraceleft\hitsz@estudenttype\hitsz@ebraceright
+ \end{center}
+ \fi} %与中文保持一致,删除in {\hitsz@exueke}
+ \parbox[t][7cm][t]{\textwidth}{%
+ \begin{center}%
+ \settowidth{\hitsz@etitlelength}{%
+ \erhao\hitsz@etitle\ifhitsz@subtitle\hitsz@title@esep\hitsz@esubtitle\fi}%
+ \ifdim\hitsz@etitlelength>450mm\xiaoer\else\erhao\fi%
+ \textbf{\MakeUppercase{\hitsz@etitle}%
+\ifhitsz@subtitle\hitsz@title@esep\MakeUppercase{\hitsz@esubtitle}\fi}\end{center}}
+ %★★★★若信息内容不太长,不会引起信息内容分行时,使用tabular环境,否则使用下面的tabularx环境。
+ {\sihao\renewcommand{\arraystretch}{1.3}
+ \begin{tabular}{@{}l@{~}l@{}}
+ \textbf{\hitsz@eauthortitle\hitsz@title@esep} & \hitsz@eauthor\\
+ \textbf{\hitsz@esupervisortitle\hitsz@title@esep} & \hitsz@esupervisor\\
+ \ifx\hitsz@eassosupervisor\@empty\else%
+ \textbf{\hitsz@eassosupervisortitle\hitsz@title@esep} & \hitsz@eassosupervisor\\
+ \fi
+ \ifx\hitsz@ecosupervisor\@empty\else%
+ \textbf{\hitsz@ecosupervisortitle\hitsz@title@esep} & \hitsz@ecosupervisor\\
+ \fi
+ \textbf{\hitsz@edegreetitle\hitsz@title@esep} & \hitsz@edegree\\
+ \textbf{\hitsz@esubjecttitle\hitsz@title@esep} &\hitsz@esubject\\
+ \textbf{\hitsz@eaffiltitle\hitsz@title@esep} &\hitsz@eaffil\\
+ \textbf{\hitsz@edatetitle\hitsz@title@esep} & \hitsz@edate\\
+ \textbf{\hitsz@eschoolnametitle\hitsz@title@esep} & \hitsz@eschoolname
+ \end{tabular}\renewcommand{\arraystretch}{1}}
+ \end{center}
}
+
+\def\makecover{
+ \phantomsection
+ \pdfbookmark[0]{\hitsz@ctitle}{ctitle}
+ \xiaosi[1]%
+% \end{macrocode}
+%
+% 此处添加提交图书馆电子版的逻辑
+% \begin{macrocode}
+ \begin{titlepage}
+ \hitsz@first@titlepage
+ \ifhitsz@library\clearpage\else\cleardoublepage\fi
+ \hitsz@second@titlepage
+ \ifhitsz@library\clearpage\else\cleardoublepage\fi
+ \ifhitsz@bachelor
+ \relax
+ \else
+ \phantomsection
+ \pdfbookmark[0]{\hitsz@etitle}{etitle}
+ \hitsz@engcover
+ \ifhitsz@library\clearpage\else\cleardoublepage\fi
+ \fi
+ \end{titlepage}
+ \normalsize
+ \hitsz@makeabstract}
+% \end{macrocode}
+%
+% 生成参考文献和关键字。
+% \begin{macrocode}
+\newbox\hitsz@kw
+\newcommand\hitsz@put@keywords[2]{%
+ \begingroup
+ \setbox\hitsz@kw=\hbox{#1}
+ \noindent\hangindent\wd\hitsz@kw\hangafter1%
+ \box\hitsz@kw#2\par
+ \endgroup}
+
+\newcommand{\hitsz@makeabstract}{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\cabstractcname}[\cabstractename]
+ \pagestyle{hitsz@headings}
+ \pagenumbering{Roman}
+ \hitsz@cabstract
+ \vskip12bp
+ \hitsz@put@keywords{\heiti\hitsz@ckeywords@title}{\hitsz@ckeywords}
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\eabstractcname}[\eabstractename]
+ \hitsz@eabstract
+ \vskip12bp
+ \hitsz@put@keywords{\textbf{Keywords:\enskip}}{\hitsz@ekeywords}}
+% \end{macrocode}
+%
+% 定义符号表。
+% \begin{macrocode}
+\newenvironment{denotation}[1][2.5cm]{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\hitsz@denotation@ctitle}[\hitsz@denotation@etitle]
+\setcounter{table}{0}
+\renewcommand{\thetable}{\arabic{table}}%使表编号为 1 的格式
+ }{\renewcommand{\thetable}{\arabic{chapter}-\arabic{table}}%使表编号为 7-1 的格式
+\setcounter{table}{0}}%
+% \end{macrocode}
+%
+% 定义索引、目录格式
+% \begin{macrocode}
+\def\hitsz@starttoc#1{% #1: float type, prepend type name in \listof*** entry.
+ \let\oldnumberline\numberline
+ \def\numberline##1{\oldnumberline{\csname #1name\endcsname\hskip.4em ##1}}
+ \@starttoc{\csname ext@#1\endcsname}
+ \let\numberline\oldnumberline}
+\def\hitsz@listof#1#2{% #1: float type
+\chapter*{\csname list#1name\endcsname}[#2]\hitsz@starttoc{#1}}
+
+\renewcommand\listoffigures{\hitsz@listof{figure}{\listfigureename}}
+\renewcommand*\l@figure{\addvspace{6bp}\@dottedtocline{1}{0em}{4em}}
+\renewcommand\listoftables{\hitsz@listof{table}{\listtableename}}
+\let\l@table\l@figure
+\def\ext@equation{loe}
+\def\equcaption#1{%
+ \addcontentsline{\ext@equation}{equation}%
+ {\protect\numberline{#1}}}
+\newcommand\listofequations{\hitsz@listof{equation}{\listequationename}}
+\let\l@equation\l@figure
% \end{macrocode}
-% \end{macro}
-%
-% \subsection{参考文献设置}
-% \begin{environment}{thebibliography}
-% 重定义参考文献环境
-% \begin{macrocode}
-\renewenvironment{thebibliography}[1]
- {\chapter*{\bibname}%
- \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
- \list{\@biblabel{\@arabic\c@enumiv}}%
- {\settowidth\labelwidth{\@biblabel{#1}}%
- \leftmargin\labelwidth
- \advance\leftmargin\labelsep
- \addtolength{\itemsep}{-1.5ex}
- \@openbib@code
- \usecounter{enumiv}%
- \let\p@enumiv\@empty
- \renewcommand\theenumiv{\@arabic\c@enumiv}}%
- \sloppy
- \clubpenalty4000
- \@clubpenalty \clubpenalty
- \widowpenalty4000%
- \sfcode`\.\@m}
- {\def\@noitemerr
- {\@latex@warning{Empty `thebibliography' environment}}%
- \endlist}
-% \end{macrocode}
-% \end{environment}
-%
-% \subsection{页眉页脚设置}
-% \begin{macro}{\pagestyle}
-% 定义页眉页脚
-% \begin{macrocode}
-\RequirePackage{fancyhdr}
-\pagestyle{fancy}
-% \end{macrocode}
-%
-% 页眉
-% \begin{macrocode}
-\lhead{}
-\chead{\wuhao 哈尔滨工业大学(深圳)本科毕业设计(论文)}
-\rhead{}
-% \end{macrocode}
-%
-% 页脚
-% \begin{macrocode}
-\lfoot{}
-\cfoot{\wuhao -\thepage-}
-\rfoot{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\makeheadrule}
-% 定义页眉双横线样式,注意下面代码中的\pkg{\%}不能删
-% \begin{macrocode}
-\newcommand{\makeheadrule}{%
-\makebox[0pt][l]{\rule[1mm]{\headwidth}{0.4mm}}%
-\rule[0.35\baselineskip]{\headwidth}{0.8mm}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\headrule}
-% 定义页眉横线为双横线
-% \begin{macrocode}
-\renewcommand{\headrule}{%
-{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi%
-\makeheadrule}}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{目录格式设置}
-%
-% \begin{macro}{\titlecontents}
-% 设置目录格式,目录只有三级
-%
-% 1级目录格式
-% \begin{macrocode}
-\titlecontents{chapter}[0pt]{\vspace{1mm}\heiti}
-{\thecontentslabel\hskip.5em}{}{\titlerule*[4pt]{.}\contentspage}
-% \end{macrocode}
-%
-% 2级目录格式
-% \begin{macrocode}
-\titlecontents{section}[25pt]{\songti}
-{\thecontentslabel\hskip.5em}{}{\titlerule*[4pt]{.}\contentspage}
-% \end{macrocode}
-%
-% 3级目录格式
-% \begin{macrocode}
-\titlecontents{subsection}[47pt]{\songti}
-{\thecontentslabel\hskip.5em}{}{\titlerule*[4pt]{.}\contentspage}
-% \end{macrocode}
-%
-% 附录章节,节标题不计入目录中
-% \changes{v2.2}{2020/03/04}{Omit sections of appendix in toc}
-% \begin{macrocode}
-\g@addto@macro\appendix{\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{environment}{tabular}
-% 修改表格字号,注意 |tabular| 要放在 |table| 环境里
-% \begin{macrocode}
-\BeforeBeginEnvironment{tabular}{\wuhao}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{environment}{table}
-% 修改表格与后文间距,缩短1cm
-% \begin{macrocode}
-\AfterEndEnvironment{table}{\vspace{-1cm}}
-% \end{macrocode}
-% \end{environment}
-%
-% \begin{macro}{\newcounter}
-% 新计数器,编排表格编号用
-% \begin{macrocode}
-\newcounter{rowno}
-% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\thefigure}
-% \begin{macro}{\thetable}
-% \begin{macro}{\theequation}
-% 设置图表公式编号格式为1-1
-% \begin{macrocode}
-\renewcommand{\thefigure}{\thechapter-\arabic{figure}}
-\renewcommand{\thetable}{\thechapter-\arabic{table}}
-\renewcommand{\theequation}{\thechapter-\arabic{equation}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \subsubsection{目录}
+% \label{sec:toc}
%
-% \subsection{其他杂项设置}
-% \begin{macro}{\usetikzlibrary}
-% 使用\pkg{tikz}配置流程图基本图形
+% 本科文科生要求目录有四级。
% \begin{macrocode}
-\usetikzlibrary{shapes.geometric, arrows}
+\setcounter{secnumdepth}{3}
+\setcounter{tocdepth}{2}
+\ifhitsz@bachelor\ifhitsz@tocfour\setcounter{tocdepth}{3}\fi\fi
% \end{macrocode}
-% \end{macro}
%
-% \begin{environment}{startstop}
-% 开始
+% 工大论文目录中的潜规则:目录中的目录位置是空白。
% \begin{macrocode}
-\tikzstyle{startstop} = [rectangle, rounded corners, minimum width = 2cm,
-minimum height=1cm,text centered, draw = black]
+\renewcommand\tableofcontents{%
+\ifhitsz@openright\cleardoublepage\else\clearpage\fi
+\phantomsection
+\markboth{\contentsname}{ccontent}
+\hitsz@chapter*{\contentsname}
+\pdfbookmark[0]{\contentsname}{ccontent}
+\normalsize\@starttoc{toc}}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{io}
-% 输入输出
+% 按照窝工要求的目录格式。
% \begin{macrocode}
-\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110,
-minimum width=2cm, minimum height=1cm, text centered, draw=black]
+\ifhitsz@arialtoc
+ \def\hitsz@toc@font{\sffamily}
+\fi
+\def\@pnumwidth{4em}%规定中的提前悬挂
+\def\@tocrmarg{\@pnumwidth}
+\def\@dotsep{1}
+% \end{macrocode}
+%
+% 此处临时更改一下对齐方式。\CTeX\ 似乎无法应对双语目录。
+% \begin{macrocode}
+\setlength\@tempdima{4em}%
+\patchcmd{\@dottedtocline}{#4}{\csname hitsz@toc@font\endcsname #4}{}{}
+\patchcmd{\@dottedtocline}{\hb@xt@\@pnumwidth}{\hbox}{}{}
+\renewcommand*\l@chapter[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ %\vskip 4bp \@plus\p@
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ % numberline is called here, and it uses \@tempdima
+% \end{macrocode}
+%
+% 修改本科生论文目录格式
+% \begin{macrocode}
+ {\ifhitsz@bachelor\rmfamily\else\csname hitsz@toc@font\endcsname\fi\heiti #1}
+ \leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill
+ \nobreak{\normalfont\normalcolor #2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{process}
-% 过程
+% 按工大标准, 缩小目录中各级标题之间的缩进,使它们相隔一个字符距离,也就是12pt。
% \begin{macrocode}
-\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm,
-text centered, draw=black]
+\renewcommand*\l@section{\@dottedtocline{1}{1em}{1.8em}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{2em}{2.5em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{3\ccwd}{3.1em}}
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{decision}
-% 判断
+% 英文目录格式。
% \begin{macrocode}
-\tikzstyle{decision} = [diamond, aspect = 3, text centered, draw=black]
+\def\@dotsep{0.75} % 定义英文目录的点间距
+\setlength\leftmargini {0pt}
+\setlength\leftmarginii {0pt}
+\setlength\leftmarginiii {0pt}
+\setlength\leftmarginiv {0pt}
+\setlength\leftmarginv {0pt}
+\setlength\leftmarginvi {0pt}
+
+\def\engcontentsname{\bfseries Contents}
+\newcommand\tableofengcontents{
% \end{macrocode}
-% \end{environment}
%
-% \begin{environment}{arrow}
-% 箭头形式
+% 此处添加英文目录的章标题格式,默认细点
% \begin{macrocode}
-\tikzstyle{arrow} = [->,>=stealth]
+ %控制英文目录:细点\@dottedtocline,粗点\@dottedtoclinebold
+ \def\l@chapter{\@dottedtocline{0}{0em}{5em}}
+ \@restonecolfalse
+ \chapter*{\engcontentsname %chapter*上移一行,避免在toc中出现。
+ \pdfbookmark[0]{Contents}{econtent}
+ \@mkboth{%
+ \engcontentsname}{\engcontentsname}}
% \end{macrocode}
-% \end{environment}
%
-% \begin{macro}{\upcite}
-% 参考文献标号为上标
+% 此处临时更改一下对齐方式。\CTeX\ 似乎无法应对双语目录。
+% 删除增加\cs{hangindent}的方法,其原因是\cs{numberline}多出一个空格
% \begin{macrocode}
-\newcommand{\upcite}[1]{\textsuperscript{\textsuperscript{\cite{#1}}}}
+ \@starttoc{toe}%
+ \if@restonecol\twocolumn\fi}
+\def\@dotsep{0.75} % 定义英文目录的点间距
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\thefootnote}
-% 设置脚注编号格式
+% 目录中附录的章号格式。
% \begin{macrocode}
-\renewcommand{\thefootnote}{\fnsymbol{footnote}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\chapter}
-% 解决book类文档章首页和目录页没有页眉页脚的问题
-% \begin{macrocode}
-\makeatletter
-\renewcommand\chapter{
- \if@openright\cleardoublepage
- \else\clearpage
- \fi
- \thispagestyle{fancy}
- \global\@topnum\z@
- \@afterindentfalse
- \secdef\@chapter\@schapter
+\ctexset{%
+ appendix/number=\ifhitsz@bachelor\arabic{chapter}\else\Alph{chapter}\fi,
}
-\makeatother
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{新数学命令设置}
-% \begin{macro}{\dif}
-% \begin{macro}{\no}
-% \begin{macro}{\dis}
-% \begin{macro}{\ls}
-% \begin{macro}{\gs}
-% 新简记数学命令
-% \begin{macrocode}
-\newcommand\dif{\text{d}}
-\newcommand\no{\noindent}
-\newcommand\dis{\displaystyle}
-\newcommand\ls{\leqslant}
-\newcommand\gs{\geqslant}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\limit}
-% \begin{macro}{\limn}
-% \begin{macro}{\limxz}
-% \begin{macro}{\limxi}
-% \begin{macro}{\limxpi}
-% \begin{macro}{\limxni}
-% \begin{macro}{\limtpi}
-% \begin{macro}{\limtni}
-% 极限
-% \begin{macrocode}
-\newcommand\limit{\dis\lim\limits}
-\newcommand\limn{\dis\lim\limits_{n\to\infty}}
-\newcommand\limxz{\dis\lim\limits_{x\to0}}
-\newcommand\limxi{\dis\lim\limits_{x\to\infty}}
-\newcommand\limxpi{\dis\lim\limits_{x\to+\infty}}
-\newcommand\limxni{\dis\lim\limits_{x\to-\infty}}
-\newcommand\limtpi{\dis\lim\limits_{t\to+\infty}}
-\newcommand\limtni{\dis\lim\limits_{t\to-\infty}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\sumn}
-% \begin{macro}{\sumnz}
-% $n$求和
-% \begin{macrocode}
-\newcommand\sumn{\dis\sum\limits_{n=1}^{\infty}}
-\newcommand\sumnz{\dis\sum\limits_{n=0}^{\infty}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\sumi}
-% \begin{macro}{\sumiz}
-% \begin{macro}{\sumin}
-% \begin{macro}{\sumizn}
-% $i$求和
-% \begin{macrocode}
-\newcommand\sumi{\dis\sum\limits_{i=1}^{\infty}}
-\newcommand\sumiz{\dis\sum\limits_{i=0}^{\infty}}
-\newcommand\sumin{\dis\sum\limits_{i=1}^{n}}
-\newcommand\sumizn{\dis\sum\limits_{i=0}^{n}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\sumk}
-% \begin{macro}{\sumkz}
-% \begin{macro}{\sumkn}
-% \begin{macro}{\sumkfn}
-% $k$求和
-% \begin{macrocode}
-\newcommand\sumk{\dis\sum\limits_{k=1}^{\infty}}
-\newcommand\sumkz{\dis\sum\limits_{k=0}^{\infty}}
-\newcommand\sumkn{\dis\sum\limits_{k=0}^n}
-\newcommand\sumkfn{\dis\sum\limits_{k=1}^n}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\pzx}
-% \begin{macro}{\pzy}
-% $z$偏微分
-% \begin{macrocode}
-\newcommand\pzx{\dis\frac{\partial z}{\partial x}}
-\newcommand\pzy{\dis\frac{\partial z}{\partial y}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\pfx}
-% \begin{macro}{\pfy}
-% $f$偏微分
-% \begin{macrocode}
-\newcommand\pfx{\dis\frac{\partial f}{\partial x}}
-\newcommand\pfy{\dis\frac{\partial f}{\partial y}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\pzxx}
-% \begin{macro}{\pzxy}
-% \begin{macro}{\pzyx}
-% \begin{macro}{\pzyy}
-% $z$二重偏微分
+% 设置附录、结论、参考文献等格式。
% \begin{macrocode}
-\newcommand\pzxx{\dis\frac{\partial^2 z}{\partial x^2}}
-\newcommand\pzxy{\dis\frac{\partial^2 z}{\partial x\partial y}}
-\newcommand\pzyx{\dis\frac{\partial^2 z}{\partial y\partial x}}
-\newcommand\pzyy{\dis\frac{\partial^2 z}{\partial y^2}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\pfxx}
-% \begin{macro}{\pfxy}
-% \begin{macro}{\pfyx}
-% \begin{macro}{\pfyy}
-% $f$二重偏微分
-% \begin{macrocode}
-\newcommand\pfxx{\dis\frac{\partial^2 f}{\partial x^2}}
-\newcommand\pfxy{\dis\frac{\partial^2 f}{\partial x\partial y}}
-\newcommand\pfyx{\dis\frac{\partial^2 f}{\partial y\partial x}}
-\newcommand\pfyy{\dis\frac{\partial^2 f}{\partial y^2}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\intzi}
-% \begin{macro}{\intd}
-% \begin{macro}{\intab}
-% 积分
-% \begin{macrocode}
-\newcommand\intzi{\dis\int_{0}^{+\infty}}
-\newcommand\intd{\dis\int}
-\newcommand\intab{\dis\int_a^b}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\degree}
-% 角度符号
-% \begin{macrocode}
-\newcommand{\degree}{^\circ}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ma}
-% 花体
-% \begin{macrocode}
-\newcommand\ma{\mathcal{A}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\mb}
-% \begin{macro}{\mc}
-% \begin{macro}{\me}
-% \begin{macro}{\mg}
-% 继续定义
-% \begin{macrocode}
-\newcommand\mb{\mathcal{B}}
-\newcommand\mc{\mathcal{C}}
-\newcommand\me{\mathcal{E}}
-\newcommand\mg{\mathcal{g}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\mcc}
-% \begin{macro}{\mrr}
-% \begin{macro}{\mzz}
-% 重体
-% \begin{macrocode}
-\newcommand\mcc{\mathbb{C}}
-\newcommand\mrr{\mathbb{R}}
-\newcommand\mzz{\mathbb{Z}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\vx}
-% \begin{macro}{\vX}
-% \begin{macro}{\vy}
-% \begin{macro}{\vY}
-% 向量
-% \begin{macrocode}
-\newcommand\vx{\mathbf{x}}
-\newcommand\vX{\mathbf{X}}
-\newcommand\vy{\mathbf{y}}
-\newcommand\vY{\mathbf{Y}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\sgn}
-% \begin{macro}{\arccot}
-% \begin{macro}{\arccosh}
-% 定义新数学符号
-% \begin{macrocode}
-\DeclareMathOperator{\sgn}{sgn}
-\DeclareMathOperator{\arccot}{arccot}
-\DeclareMathOperator{\arccosh}{arccosh}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\arcsinh}
-% \begin{macro}{\arctanh}
-% \begin{macro}{\arccoth}
-% \begin{macro}{\grad}
-% \begin{macro}{\argmax}
-% \begin{macro}{\argmin}
-% \begin{macro}{\diag}
-% \begin{macro}{\csign}
-% 继续定义数学符号
-% \begin{macrocode}
-\DeclareMathOperator{\arcsinh}{arcsinh}
-\DeclareMathOperator{\arctanh}{arctanh}
-\DeclareMathOperator{\arccoth}{arccoth}
-\DeclareMathOperator{\grad}{\bf{grad}}
-\DeclareMathOperator{\argmax}{argmax}
-\DeclareMathOperator{\argmin}{argmin}
-\DeclareMathOperator{\diag}{diag}
-\DeclareMathOperator{\csign}{csign}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \subsection{书脊}
-% \label{sec:spine}
-% \begin{macro}{\spine}
-% 单独使用书脊命令会在新的一页产生竖排书脊。
-% \begin{macrocode}
-\newcommand{\spine}{%
- \begingroup
- \hitsz@spine
- \endgroup
+\let\hitsz@appendix\appendix
+\renewenvironment{appendix}{%
+ \let\title\hitsz@appendix@title
+ \hitsz@appendix
+ \ifhitsz@bachelor\renewcommand{\thechapter}{\arabic{chapter}}\fi
+ }{%
+ \let\title\@gobble}
+\let\title\@gobble
+\newcommand{\hitsz@appendix@title}[1]{%
+ \begin{center}
+ \bfseries\xiaosi #1
+ \end{center}}
+\newlist{translationbib}{enumerate}{1}
+\setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp,
+ leftmargin=10mm,labelsep=!,before=\vspace{0.5\baselineskip}\wuhao[1.3]
}
-\def\hitsz@spine{%
- \newpage\thispagestyle{empty}%
- \heiti\addCJKfontfeatures*{RawFeature={vertical:}}
- \xiaosan\ziju{0.4}%
- \noindent\hfill\rotatebox[origin=lt]{-90}{%
- \makebox[\textheight]{本科毕业设计(论文)\hfill \hitsztitle \hfill \hitszauthor}
+\newenvironment{conclusions}{%
+\ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\hitsz@conclusion@ctitle}[\hitsz@conclusion@etitle]}{}
+\newenvironment{acknowledgements}{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\hitsz@acknowledgement@ctitle}[\hitsz@acknowledgement@etitle]}{}
+\newenvironment{resume}{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\hitsz@resume@ctitle}[\hitsz@resume@etitle]}{}
+\newenvironment{publication}{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\hitsz@publication@ctitle}[\hitsz@publication@etitle]}{}
+% \end{macrocode}
+%
+% 此处中英文索引的格式设置尽量符合\PGR\ 中给出的示例的格式。此处间距常数是人工调节的。
+% \begin{macrocode}
+\newenvironment{ceindex}{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\indexname}[\hitsz@index@etitle]
+ \setlength{\columnsep}{4em}
+ \begin{adjustwidth}{2em}{2em}
+ \begin{multicols*}{2}}{\end{multicols*}
+ \end{adjustwidth}
}
+
+\newlist{idxwordlist}{description}{3}
+\setlist[idxwordlist, 1]{%
+ itemsep=\baselineskip,
+ labelindent=8em,
+ font=\normalsize\bfseries,
+}
+\setlist[idxwordlist, 2]{%
+ nosep,
+ labelindent=2em,
+ font=\wuhao\rm,
+}
+\setlist[idxwordlist, 3]{%
+ nosep,
+ labelindent=4em,
+ font=\wuhao\rm,
+}
+
+\def\hitsz@authorization@other{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \hitsz@appendix@chapter*{\hitsz@authorization@ctitle}[\hitsz@authorization@etitle]
+ \xiaosi[1.6]\vspace{\baselineskip}
+ \begin{center}\xiaosan\heiti\hitsz@declarename\end{center}
+ \par\hitsz@declaretext
+ \vspace{\baselineskip}
+ \par\hspace{6em}\hitsz@authorsig\hfill\hitsz@frontdate\hitsz@datefill
+ \vspace{2\baselineskip}
+ \begin{center}\xiaosan\heiti\hitsz@authorizationtitle\end{center}
+ \par\hitsz@authorizationtext
+ \vspace{2\baselineskip}
+ \par\hspace{6em}\hitsz@authorsig\hfill\hitsz@frontdate\hitsz@datefill
+ \vspace{2\baselineskip}
+ \par\hspace{6em}\hitsz@teachersig\hfill\hitsz@frontdate\hitsz@datefill
+}
+\def\hitsz@authorization@bachelor@toc{%
+ \ifhitsz@shenzhen%
+ 原创性声明
+ \else%
+ \hitsz@declarename@bachelor
+ \fi
+}
+\def\hitsz@authorization@bachelor{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi
+ \chapter*{\ifhitsz@harbin\relax\else\sanhao\fi\hitsz@declarename@bachelor}
+ \addcontentsline{toc}{chapter}{\hitsz@authorization@bachelor@toc}
+ \hitsz@authorizationtext@bachelor
+\vspace{2\baselineskip}
+\par\hspace{6em}\hitsz@authorsig\hfill\hitsz@frontdate\hitsz@datefill
+}
+
+\NewDocumentCommand{\authorization}{o}{%
+ \IfNoValueTF{#1}{%
+ \ifhitsz@bachelor\hitsz@authorization@bachelor\else\hitsz@authorization@other\fi
+ }{%
+ \includepdf[fitpaper=true,pagecommand={%
+ \thispagestyle{hitsz@empty}%
+ \phantomsection
+ \addcontentsline{toc}{chapter}{%
+ \ifhitsz@bachelor\hitsz@declarename@bachelor
+ \else\hitsz@authorization@ctitle
+ \fi}%
+ \ifhitsz@doctor%
+ \addcontentsline{toe}{chapter}{%
+ \texorpdfstring{\bfseries \hitsz@authorization@etitle}{\hitsz@authorization@etitle}}%
+ \fi%
+ }]{#1}%
+ }%
}
% \end{macrocode}
-% \end{macro}
+% \begin{macrocode}
+\newcommand\bibstyle@numerical{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
+\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{\hitsz@inline@sep}}
+\citestyle{numerical}
+\DeclareRobustCommand\inlinecite{\@inlinecite}
+\def\@inlinecite#1{\begingroup\citestyle{inline}\let\@cite\NAT@citenum\citep{#1}\endgroup}
+\let\onlinecite\inlinecite
+\renewenvironment{thebibliography}[1]{%
+ \ifhitsz@openright\cleardoublepage\else\clearpage\fi\phantomsection%
+ \hitsz@appendix@chapter*{\bibname}[\hitsz@bibname@etitle]
+ \normalsize
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\renewcommand{\makelabel}[1]{##1\hfill}
+ \settowidth{\labelwidth}{\@biblabel{#1}}
+ \setlength{\labelsep}{0.5em}
+ \setlength{\itemindent}{0pt}
+ \setlength{\leftmargin}{\labelsep+\labelwidth}
+ \addtolength{\itemsep}{-0.8em}
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy\frenchspacing
+% \end{macrocode}
+% \begin{macrocode}
+ \flushbottom
+% \end{macrocode}
+% \begin{macrocode}
+ \ifhitsz@splitbibitem
+ \clubpenalty0
+ \@clubpenalty \clubpenalty
+ \widowpenalty0%
+ \interlinepenalty-50%
+ \else
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \interlinepenalty4000%
+ \fi
+\sfcode`\.\@m}
+{\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+\endlist\frenchspacing}
+\patchcmd\NAT@citexnum{%
+ \@ifnum{\NAT@ctype=\z@}{%
+ \if*#2*\else\NAT@cmt#2\fi
+ }{}%
+ \NAT@mbox{\NAT@@close}%
+}{%
+ \NAT@mbox{\NAT@@close}%
+ \@ifnum{\NAT@ctype=\z@}{%
+ \if*#2*\else\textsuperscript{#2}\fi
+ }{}%
+}{}{}
+\renewcommand\NAT@citesuper[3]{\ifNAT@swa
+ \if*#2*\else#2\NAT@spacechar\fi
+\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close\if*#3*\else#3\fi}%
+ \else #1\fi\endgroup}
+\patchcmd{\NAT@citex}{%
+ \if*#2*\else\NAT@cmt#2\fi
+ \if\relax\NAT@date\relax\else\NAT@@close\fi
+}{%
+ \if\relax\NAT@date\relax\else\NAT@@close\fi
+ \if*#2*\else\textsuperscript{#2}\fi
+}{}{}
+\renewcommand\NAT@cite%
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+ #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup}
+%</cls>
+% \end{macrocode}
%
% \subsection{其它}
% \label{sec:other}
%
-% \changes{v2.2}{2020/03/02}{Deal with warnings about PDF string}
-% 处理生成的PDF中某些\LaTeX{}命令无法识别的问题
-% \begin{macrocode}
-\pdfstringdefDisableCommands{%
- \def\quad{}%
- \def\hskip#1{}%
-}
-% \end{macrocode}
-%
% 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。
% \begin{macrocode}
+%<*cls>
+\AtEndOfClass{\input{hitszthesis.cfg}}
\AtEndOfClass{\sloppy}
%</cls>
% \end{macrocode}
-%
% \iffalse
% \begin{macrocode}
%<*dtx-style>
\ProvidesPackage{dtx-style}
\RequirePackage{hypdoc}
-\RequirePackage{ifthen}
-\RequirePackage[UTF8,scheme=chinese]{ctex}
-\RequirePackage{newtxtext}
-\RequirePackage{newtxmath}
+\RequirePackage[UTF8,scheme=chinese,fontset=windowsnew]{ctex}
+\RequirePackage{newpxtext}
+\RequirePackage{newpxmath}
\RequirePackage[
top=2.5cm, bottom=2.5cm,
- left=5cm, right=1.5cm,
+ left=4cm, right=2cm,
headsep=8mm]{geometry}
\RequirePackage{array,longtable,booktabs}
\RequirePackage{listings}
@@ -2371,10 +3203,7 @@ text centered, draw=black]
\RequirePackage{enumitem}
\RequirePackage{etoolbox}
\RequirePackage{metalogo}
-
-\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{%
- \xeCJKsetwidth{‘’“”}{1em}
-}{}
+\RequirePackage{hyperref}
\colorlet{hitsz@macro}{blue!60!black}
\colorlet{hitsz@env}{blue!70!black}
@@ -2463,11 +3292,26 @@ text centered, draw=black]
\DeclareDocumentCommand{\file}{s m}{%
\texttt{#2}\IfBooleanF#1{\hitsz@special@index{file}{#2}}}
\newcommand{\myentry}[1]{%
- \marginpar{\raggedleft\color{purple}\bfseries\small\strut #1}}
+ \marginpar{\small\raggedleft\color{purple}\bfseries\strut #1}}
\newcommand{\note}[2][Note]{{%
\color{magenta}{\bfseries #1}\emph{#2}}}
-
-\def\hitszthesis{\textsc{Hitsz}\-\textsc{Thesis}}
+%</dtx-style>
+% \end{macrocode}
+% \begin{macrocode}
+%<cfg|dtx-style>\newcommand{\pozhehao}{——}
+%<cfg|dtx-style>\def\hitszthesis{\textsc{Hitsz}\-\textsc{Thesis}}
+%<cfg|dtx-style>\def\hitsz{哈尔滨工业大学(深圳)}
+%<cfg|dtx-style>\def\PGR{\href{http://hitgs.hit.edu.cn/aa/fd/c3425a109309/page.htm}
+%<cfg|dtx-style>{《\hitsz 研究生学位论文撰写规范》}}
+%<cfg|dtx-style>\def\UGR{\href{http://www.hitsz.edu.cn/UserFiles/editor/file/20190923/1569224708968004622.doc}
+%<cfg|dtx-style>{《\hitsz 本科生毕业论文撰写规范》}}
+%<cfg>\def\hitsz@inline@sep{,}
+% \end{macrocode}
+% \begin{macrocode}
+%<*dtx-style>
+ \NewDocumentEnvironment{hitszrgu}{o o}
+ { \IfNoValueTF{#1}{\PGR,\UGR}{#1}\IfNoValueF{#2}{#2中}%
+\color{red}规定:“}{”}
%</dtx-style>
% \end{macrocode}
% \fi
@@ -2480,4 +3324,4 @@ text centered, draw=black]
% mode: doctex
% TeX-master: t
% End:
-% \fi \ No newline at end of file
+% \fi
diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.ins b/macros/latex/contrib/hitszthesis/hitszthesis.ins
index a00405c62f..7f9842300c 100644
--- a/macros/latex/contrib/hitszthesis/hitszthesis.ins
+++ b/macros/latex/contrib/hitszthesis/hitszthesis.ins
@@ -1,22 +1,24 @@
%%
-%% Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com>
+% Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com>
%%
%% This file is part of the hitszthesis package project.
-%% ------------------------------------------------------------------------------
+%% ---------------------------------------------------
%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3a
%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3a or later is part of all distributions of LaTeX
+%% version 2004/10/01 or later.
%%
-%% This work has the LPPL1.3c maintenance status `maintained'.
\input docstrip
\askforoverwritefalse
+%\askonceonly
\showprogress
\keepsilent
@@ -26,22 +28,68 @@
This is a generated file.
-Copyright (C) 2019-\the\year by Jingxuan Yang <yanglatex2e@gmail.com>
+Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com>
-This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
of this license or (at your option) any later version.
-The latest version of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
To produce the documentation run the original source files ending with `.dtx'
through LaTeX.
\endpreamble
-\generate{\file{\jobname.cls}{\from{\jobname.dtx}{cls}}
+\declarepreamble\cfgpreamble
+
+This is a generated file.
+
+Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com>
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
+of this license or (at your option) any later version.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
+
+This is the configuration file of the hitszthesis package with LaTeX2e.
+
+\endpreamble
+\declarepreamble\istpreamble
+
+This is a generated file.
+
+Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com>
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3a
+of this license or (at your option) any later version.
+The latest version of this license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3a or later is part of all distributions of LaTeX
+version 2004/10/01 or later.
+
+This is the configuration file of the hitszthesis package with LaTeX2e.
+
+\endpreamble
+
+\generate{
+ \file{\jobname.cls}{\from{\jobname.dtx}{cls}}
+ \usepreamble\cfgpreamble
+ \file{\jobname.cfg}{\from{\jobname.dtx}{cfg}}
+ \usepreamble\istpreamble
+ \file{\jobname.ist}{\from{\jobname.dtx}{ist}}
\usepreamble\defaultpreamble\usepostamble\defaultpostamble
\file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
@@ -54,9 +102,11 @@ through LaTeX.
\Msg{* The recommended directory is TEXMF/tex/latex/hitszthesis}
\Msg{*}
\Msg{* \space\space hitszthesis.cls}
+ \Msg{* \space\space hitszthesis.cfg}
+ \Msg{* \space\space hitszthesis.ist}
\Msg{*}
- \Msg{* To produce the documentation run the file hitszthesis.dtx}
- \Msg{* through LaTeX.}
+ \Msg{* To produce the documentation run the files ending with}
+ \Msg{* `.dtx' through LaTeX.}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{***********************************************************}}
diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.pdf b/macros/latex/contrib/hitszthesis/hitszthesis.pdf
index 818a851e77..be696baf8a 100644
--- a/macros/latex/contrib/hitszthesis/hitszthesis.pdf
+++ b/macros/latex/contrib/hitszthesis/hitszthesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.sty b/macros/latex/contrib/hitszthesis/hitszthesis.sty
index 392775978c..2d787274f6 100644
--- a/macros/latex/contrib/hitszthesis/hitszthesis.sty
+++ b/macros/latex/contrib/hitszthesis/hitszthesis.sty
@@ -11,22 +11,450 @@
%
% This work has the LPPL1.3c maintenance status `maintained'.
%
-\ProvidesPackage{hitszthesis}[2020/03/05 v2.2 A Collection of Styles for Bachelor Thesis of Harbin Institute of Technology, ShenZhen]
+\ProvidesPackage{hitszthesis}[2020/03/10 2.4 Style Collection of Dissertation Template for Harbin Institute of Technology, ShenZhen (HITSZ)]
-% 将引入的宏包以及各种自定义命令都放在这里
-% 在 \file{main.tex} 中使用 |\usepackage{hitszthesis}| 引入本文件
+% 此文件声明不在规范中要求的格式所使用的宏包
-% 加载宏包
-% \RequirePackage{package}
+% 根据窝工规范中对数字书写规范的规定(6):
+% 凡4位或4位以上的数都从个位起每3位数空半个数码(1/4汉字)。
+% 注意此处,除此任何空格都是错误的(包括\:\;\ 等)
+\RequirePackage{siunitx}
+\sisetup{group-minimum-digits=4, group-separator= \hspace{0.25em}}
+\sisetup{detect-weight,detect-mode,detect-family}
-% 自定义命令
-% \newcommand\totallynewcommand{command details}
-% \renewcommand\existedcommand{command details}
+% 处理数学公式中的黑斜体的宏包
+\RequirePackage{bm}
-% etc
+% 不同于 \mathcal \mathfrak 之类的英文花体字体
+\RequirePackage{mathrsfs}
+% 支持彩色
+\RequirePackage{xcolor}
+\definecolor{colorzero}{rgb}{0, 0, 0}
+\definecolor{colorone}{rgb}{1, 0, 0}
+\definecolor{colortwo}{rgb}{0, 0, 1}
+\definecolor{colorthree}{rgb}{0, 1, 0}
+% 图形和表格的控制旋转
+\RequirePackage{rotating}
+% 算法的宏包,注意宏包兼容性,先后顺序为 float、hyperref、algorithm(2e),否则无法
+% 生成算法列表。我工算法混乱问题详见hithesis文档。各个实验室设置具体方法详见
+% hithesis文档或者示例中给出的地址。
+\RequirePackage[algoruled,linesnumbered,algochapter]{algorithm2e}
+\SetAlCapSty{}
+\newcommand{\foocaption}[1]{ \def\@algocf@pre@plainruled{\hrule height1.5pt depth0pt\kern\interspacetitleruled #1 \kern\interspacealgoruled\hrule height1pt depth0pt\kern\interspacetitleruled} }
+\def\@algocf@post@ruled{\kern\interspacealgoruled\hrule height1.5pt\relax}%
-% 结束输入
+% 算法英文标题
+\newcommand{\algoenname}{Algo.}
+\newfloatlist[chapter]{algoen}{aen}{\listalgoenname}{\algoenname}
+\newfixedcaption{\algoencaption}{algoen}
+\renewcommand{\thealgoen}{\thechapter-\arabic{algocf}}
+\renewcommand{\@cftmakeaentitle}{\chapter*{\listalgoenname\@mkboth{\listalgoenname}{\listalgoenname}}
+}
+\renewcommand{\algorithmcfname}{算法}
+\setlength\AlCapSkip{1.2ex}
+\SetAlgoSkip{1pt}
+\renewcommand{\algocf@captiontext}[2]{\wuhao#1\algocf@typo~\AlCapFnt{}#2} % text of caption
+\expandafter\ifx\csname algocf@within\endcsname\relax% if \algocf@within doesn't exist
+\renewcommand\thealgocf{\@arabic\c@algocf} % and the way it is printed
+\else% else
+\renewcommand\thealgocf{\csname the\algocf@within\endcsname-\@arabic\c@algocf}
+\fi
+\renewcommand{\algocf@makecaption}[2]{%中英文双标题一定多于一行,因此去掉单行时的判断,并将\parbox中标题设置为居中
+ \addtolength{\hsize}{\algomargin}%
+ \sbox\@tempboxa{\algocf@captiontext{#1}{#2}}%
+ \hskip .5\algomargin%
+ \parbox[t]{\hsize}{\centering\algocf@captiontext{#1}{#2}}%
+ \addtolength{\hsize}{-\algomargin}%
+}
+\newcommand{\AlgoBiCaption}[2]{%直接取出自定义的中英文标题条目加入到真正的\caption 中
+ \caption[#1]{\protect\setlength{\baselineskip}{1.5em}#1 \protect \\ Algo.\thealgocf~#2} % \algoencaption{#2}
+ \addcontentsline{aen}{algoen}{\protect\numberline{\thealgoen}{#2}}
+}
+
+% 排版源码所使用的环境可以有两种。listings和minted
+\RequirePackage{listings}
+
+% 定义代码颜色
+\definecolor{lightgrey}{rgb}{0.9,0.9,0.9}
+\definecolor{frenchplum}{RGB}{190,20,83}
+\definecolor{winered}{rgb}{0.5,0,0}
+
+% 设置 \LaTeX 代码排版样式
+\lstset{language = [LaTeX]TeX,
+ basicstyle = \small\ttfamily,
+ texcsstyle = *\color{winered},
+ numbers = left,
+ stepnumber=1,
+ numberstyle=\small\ttfamily,
+ numbersep=10pt,
+ mathescape,
+ breaklines = true,
+ keywordstyle = \color{winered},
+ commentstyle = \color{gray},
+ emph = {fontenc,fontspec,xeCJK,FiraMono,xunicode,newtxmath,
+ figure,fig,image,img,table,itemize,enumerate,newtxtext,newtxtt,
+ ctex, microtype,description,times,newtx,booktabs,tabular,
+ PDFLaTeX,XeLaTeX,type1cm,BibTeX,device,color,mode,lang,
+ amsthm,tcolorbox,titlestyle,cite,marginnote,ctex,listings,base,
+ subnumcases,subeqnarray},
+ emphstyle = {\color{frenchplum}},
+ morekeywords = {DeclareSymbolFont,SetSymbolFont,toprule,midrule,bottomrule,
+ institute,version,includegraphics,setmainfont,setsansfont,
+ setmonofont,setCJKmainfont,setCJKsansfont,setCJKmonofont,
+ RequirePackage,figref, tabref,email,maketitle,keywords,definecolor,
+ extrainfo,logo,cover,subtitle,appendix,chapter,hypersetup,
+ mainmatter,frontmatter,tableofcontents, hitszpar,heiti,kaishu,lstset,
+ pagecolor,zhnumber,marginpar,part, equote,marginnote,slabel},
+ frame = single,
+ tabsize = 2,
+ rulecolor = \color{black},
+ framerule = 0.2pt,
+ columns = flexible,
+ % backgroundcolor = \color{lightgrey}
+}
+
+% 或者使用minted 包。如果使用该包,需要在编译时加-shell-escape选项,且需要安装
+% pygmentatize 工具对代码进行高亮。
+% \RequirePackage{minted}
+%
+
+% 术语宏包,用来处理首次全写,之后缩写的问题
+\RequirePackage{glossaries}
+\setacronymstyle{short-long}
+\renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{#1}%
+}
+\makeglossaries
+
+% 添加术语举例
+\newacronym{tssbp}{树结构折筷过程}{树结构折筷过程(Tree-structured Stick-breaking process)}
+\def\gtssbp{\gls{tssbp}\sindex[china]{shu!树结构折筷过程}\sindex[english]{Tree-structured Stick-breaking process}}
+
+\newacronym[shortplural=SCNAs,longplural={体细胞拷贝数变异(Somatic copy number alternation,SCNA)}]{scna}{SCNA}{体细胞拷贝数变异(Somatic copy number alternation,SCNA)}
+\def\gscna{\gls{scna}\sindex[china]{ti!体细胞拷贝数变异}\sindex[english]{Somatic copy number alternation}\ignorespaces}
+\def\gscnas{\glspl{scna}\sindex[china]{ti!体细胞拷贝数变异}\sindex[english]{Somatic copy number alternation}\ignorespaces}
+
+% tikz做图宏宏包
+\usepackage{tikz}
+% 此处可以定义一些tikz全局样式
+% \tikzstyle{nodestyle}= [circle, fill=gray!60]
+% \tikzstyle{edgestyle}= [-latex]
+
+\tikzstyle{maternal}= [colorone]
+\tikzstyle{paternal}= [colortwo]
+\tikzstyle{variant}= [colorthree!80!colorzero]
+\tikzstyle{reference}= [colorzero]
+
+\tikzstyle{aallele}= [colorzero,rotate=90]
+\tikzstyle{ballele}= [colorthree!80!colorzero,rotate=90]
+
+\tikzstyle{refseg}= [colorzero,draw=colorzero, opacity=0.2]
+\tikzstyle{mseg}= [colorone,draw=colorone, opacity=0.2]
+\tikzstyle{pseg}= [colortwo,draw=colortwo, opacity=0.2]
+\tikzstyle{vseg}= [colorthree!80!colorzero,draw=colorthree!80!colorzero, opacity=0.6]
+
+\tikzstyle{bncell}= [draw=colorzero,opacity=0.2,line width=2pt, rounded corners=1pt]
+\tikzstyle{btcell}= [draw=colorone,opacity=0.6, line width=2pt, rounded corners=1pt]
+
+\tikzstyle{tncell}= [colorzero,opacity=0.9]
+\tikzstyle{ttcell}= [colorone,opacity=0.6]
+\tikzstyle{tscell}= [colorzero]
+\tikzstyle{refcell}= [colorzero]
+
+\tikzstyle{evolve}= [->,draw=colortwo,opacity=0.3,line width=1.5pt]
+\tikzstyle{fakeevolve}= [->,draw=colorzero,opacity=0.3,line width=1.5pt]
+
+\tikzstyle{refline}= [dashed,draw=colorzero,line width=1pt]
+\tikzstyle{tnline}= [dashed,draw=colorzero,opacity=0.3,line width=1pt]
+
+\newcommand{\gseg}[9]{%
+ \pgfmathsetmacro{\sstartx}{#1}
+ \pgfmathsetmacro{\slengx}{#2}
+ \pgfmathsetmacro{\sy}{#3}
+ \pgfmathsetmacro{\sdy}{#4}
+ \pgfmathsetmacro{\sdx}{#5}
+ \pgfmathsetmacro{\sdxh}{#7}
+ \pgfmathsetmacro{\sdxt}{#8}
+ \fill[#6](\sstartx,\sy)--(\sstartx-\sdx,\sy+\sdy)--
+ (\slengx+\sstartx+1.5-\sdx,\sy+\sdy)--(\slengx+\sstartx+1.5,\sy)--
+ (\slengx+\sstartx+1.5-\sdx,\sy-\sdy)--(\sstartx-\sdx,\sy-\sdy)--cycle;
+ \draw[#9] (\sstartx-\sdxh,\sy) -- (\sstartx, \sy);
+ \draw[#9] (\slengx+\sstartx+1.5, \sy) -- (\slengx+\sstartx+1.5+\sdxt,\sy);
+}
+\newcommand{\gsegr}[9]{%
+ \pgfmathsetmacro{\sstartx}{#1}
+ \pgfmathsetmacro{\slengx}{#2}
+ \pgfmathsetmacro{\sy}{#3}
+ \pgfmathsetmacro{\sdy}{#4}
+ \pgfmathsetmacro{\sdx}{#5}
+ \pgfmathsetmacro{\sdxh}{#7}
+ \pgfmathsetmacro{\sdxt}{#8}
+ \fill[#6](\sstartx-0.5,\sy)--(\sstartx+\sdx-0.5,\sy+\sdy)--
+ (\slengx+\sstartx+1.5+\sdx-0.5,\sy+\sdy)--(\slengx+\sstartx+1.5-0.5,\sy)--
+ (\slengx+\sstartx+1.5+\sdx-0.5,\sy-\sdy)--(\sstartx+\sdx-0.5,\sy-\sdy)--cycle;
+ \draw[#9] (\sstartx-\sdxh-0.5,\sy) -- (\sstartx-0.5, \sy);
+ \draw[#9] (\slengx+\sstartx+1.5-0.5, \sy) -- (\slengx+\sstartx+1.5+\sdxt-0.5,\sy);
+}
+
+\newcommand{\rcell}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node at (\x+10, \y) {Reference};
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[aallele]{C};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{refseg}{1.5}{1}{reference};
+}
+
+\newcommand{\ncell}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [paternal] at (\x+8, \y-0.5) {P};
+ \draw[bncell](\x-2,\y+0.5)--(\x+7,\y+0.5)--
+ (\x+7,\y-1)--(\x-2,\y-1)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[ballele]{T};
+ \draw (\x+2,\y-0.5) node[aallele]{C};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{A};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcellone}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [maternal] at (\x+8, \y-0.5) {M};
+ %\node [paternal] at (\x+8, \y-1) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+7,\y+0.5)--
+ (\x+7,\y-1.5)--(\x-2,\y-1.5)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[aallele]{A};
+ \draw (\x+2,\y-0.5) node[ballele]{G};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[aallele]{C};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-1) node[ballele]{T};
+ \draw (\x+2,\y-1) node[aallele]{C};
+ \draw (\x+3,\y-1) node[aallele]{T};
+ \draw (\x+4,\y-1) node[ballele]{A};
+ \gseg{\x}{4}{\y-1}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcellthree}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+12, \y) {M};
+ %\node [paternal] at (\x+12, \y-0.5) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+11,\y+0.5)--
+ (\x+11,\y-1)--(\x-2,\y-1)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \gseg{\x}{2}{\y}{0.2}{0.5}{mseg}{1.5}{0}{maternal};
+ \gseg{\x+4}{0}{\y}{0.2}{0.5}{vseg}{0.5}{0.5}{variant};
+ \draw (\x+7,\y) node[aallele]{T};
+ \draw (\x+8,\y) node[aallele]{C};
+ \gseg{\x+6}{2}{\y}{0.2}{0.5}{mseg}{0}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[ballele]{T};
+ \draw (\x+2,\y-0.5) node[aallele]{C};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{A};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcellfour}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+18, \y) {M};
+ %\node [paternal] at (\x+18, \y-0.5) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+15,\y+0.5)--
+ (\x+15,\y-1)--(\x-2,\y-1)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \gseg{\x}{2}{\y}{0.2}{0.5}{mseg}{1.5}{0}{maternal};
+ \gseg{\x+4}{0}{\y}{0.2}{0.5}{vseg}{0.5}{0.5}{variant};
+ \draw (\x+7,\y) node[aallele]{T};
+ \gseg{\x+6}{1}{\y}{0.2}{0.5}{mseg}{0}{0}{maternal};
+ \gseg{\x+9}{0}{\y}{0.2}{0.5}{vseg}{0.5}{0.5}{variant};
+ \draw (\x+12,\y) node[aallele]{C};
+ \gseg{\x+11}{1}{\y}{0.2}{0.5}{mseg}{0}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[ballele]{T};
+ \draw (\x+2,\y-0.5) node[aallele]{C};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{A};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+\newcommand{\tcelltwo}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [maternal] at (\x+8, \y-0.5) {M};
+ %\node [paternal] at (\x+8, \y-1) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+7,\y+0.5)--
+ (\x+7,\y-1.5)--(\x-2,\y-1.5)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[aallele]{A};
+ \draw (\x+2,\y-0.5) node[ballele]{G};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[ballele]{G};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-1) node[ballele]{T};
+ \draw (\x+2,\y-1) node[aallele]{C};
+ \draw (\x+3,\y-1) node[aallele]{T};
+ \draw (\x+4,\y-1) node[ballele]{A};
+ \gseg{\x}{4}{\y-1}{0.2}{0.5}{pseg}{1.5}{1}{paternal};
+}
+
+
+\newcommand{\tcellfive}[2]{%
+ \pgfmathsetmacro{\x}{#1}
+ \pgfmathsetmacro{\y}{#2}
+ %\node [maternal] at (\x+8, \y) {M};
+ %\node [maternal] at (\x+8, \y-0.5) {M};
+ %\node [paternal] at (\x+8, \y-1) {P};
+ \draw[btcell](\x-2,\y+0.5)--(\x+9.5,\y+0.5)--
+ (\x+9.5,\y-1.5)--(\x-2,\y-1.5)--cycle;
+ \draw (\x+1,\y) node[aallele]{A};
+ \draw (\x+2,\y) node[ballele]{G};
+ \draw (\x+3,\y) node[aallele]{T};
+ \draw (\x+4,\y) node[aallele]{C};
+ \gseg{\x}{4}{\y}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-0.5) node[aallele]{A};
+ \draw (\x+2,\y-0.5) node[ballele]{G};
+ \draw (\x+3,\y-0.5) node[aallele]{T};
+ \draw (\x+4,\y-0.5) node[aallele]{C};
+ \gseg{\x}{4}{\y-0.5}{0.2}{0.5}{mseg}{1.5}{1}{maternal};
+ \draw (\x+1,\y-1) node[ballele]{T};
+ \gseg{\x}{1}{\y-1}{0.2}{0.5}{pseg}{1.5}{0}{paternal};
+ \draw (\x+4.5,\y-1) node[ballele]{A};
+ \draw (\x+5.5,\y-1) node[aallele]{T};
+ \draw (\x+6.5,\y-1) node[aallele]{C};
+ \gsegr{\x+3.5}{3}{\y-1}{0.2}{0.5}{pseg}{0.5}{1.5}{paternal};
+}
+
+% 最后定义一些常见的数学公式样式
+\newcommand{\theVector}[1]{\bm{#1}}
+\newcommand{\theMatrix}[1]{\mathbb{#1}}
+\newcommand{\theSet}[1]{\mathcal{#1}}
+\newcommand{\theDirected}[1]{{\overrightarrow{#1}}}
+\newcommand{\theUndirected}[1]{{\overline{#1}}}
+\newcommand{\theNetwork}[1]{\mathscr{#1}}
+\newcommand{\theNode}[1]{{\text{#1}}}
+\newcommand{\theDirectedEdge}[2]{{\overrightarrow{{#1}{#2}}}}
+\newcommand{\theUndirectedEdge}[2]{{\overline{{#1}{#2}}}}
+
+% 新简记数学命令
+\newcommand\dif{\text{d}}
+\newcommand\no{\noindent}
+\newcommand\dis{\displaystyle}
+\newcommand\ls{\leqslant}
+\newcommand\gs{\geqslant}
+
+% 极限
+\newcommand\limit{\dis\lim\limits}
+\newcommand\limn{\dis\lim\limits_{n\to\infty}}
+\newcommand\limxz{\dis\lim\limits_{x\to0}}
+\newcommand\limxi{\dis\lim\limits_{x\to\infty}}
+\newcommand\limxpi{\dis\lim\limits_{x\to+\infty}}
+\newcommand\limxni{\dis\lim\limits_{x\to-\infty}}
+\newcommand\limtpi{\dis\lim\limits_{t\to+\infty}}
+\newcommand\limtni{\dis\lim\limits_{t\to-\infty}}
+
+% n求和
+\newcommand\sumn{\dis\sum\limits_{n=1}^{\infty}}
+\newcommand\sumnz{\dis\sum\limits_{n=0}^{\infty}}
+
+% i求和
+\newcommand\sumi{\dis\sum\limits_{i=1}^{\infty}}
+\newcommand\sumiz{\dis\sum\limits_{i=0}^{\infty}}
+\newcommand\sumin{\dis\sum\limits_{i=1}^{n}}
+\newcommand\sumizn{\dis\sum\limits_{i=0}^{n}}
+
+% k求和
+\newcommand\sumk{\dis\sum\limits_{k=1}^{\infty}}
+\newcommand\sumkz{\dis\sum\limits_{k=0}^{\infty}}
+\newcommand\sumkn{\dis\sum\limits_{k=0}^n}
+\newcommand\sumkfn{\dis\sum\limits_{k=1}^n}
+
+% z偏微分
+\newcommand\pzx{\dis\frac{\partial z}{\partial x}}
+\newcommand\pzy{\dis\frac{\partial z}{\partial y}}
+
+% f偏微分
+\newcommand\pfx{\dis\frac{\partial f}{\partial x}}
+\newcommand\pfy{\dis\frac{\partial f}{\partial y}}
+
+% z二重偏微分
+\newcommand\pzxx{\dis\frac{\partial^2 z}{\partial x^2}}
+\newcommand\pzxy{\dis\frac{\partial^2 z}{\partial x\partial y}}
+\newcommand\pzyx{\dis\frac{\partial^2 z}{\partial y\partial x}}
+\newcommand\pzyy{\dis\frac{\partial^2 z}{\partial y^2}}
+
+% f二重偏微分
+\newcommand\pfxx{\dis\frac{\partial^2 f}{\partial x^2}}
+\newcommand\pfxy{\dis\frac{\partial^2 f}{\partial x\partial y}}
+\newcommand\pfyx{\dis\frac{\partial^2 f}{\partial y\partial x}}
+\newcommand\pfyy{\dis\frac{\partial^2 f}{\partial y^2}}
+
+% 积分
+\newcommand\intzi{\dis\int_{0}^{+\infty}}
+\newcommand\intd{\dis\int}
+\newcommand\intab{\dis\int_a^b}
+
+% 角度符号
+\newcommand{\degree}{^\circ}
+
+% 花体
+\newcommand\ma{\mathcal{A}}
+\newcommand\mb{\mathcal{B}}
+\newcommand\mc{\mathcal{C}}
+\newcommand\me{\mathcal{E}}
+\newcommand\mg{\mathcal{g}}
+
+% 重体
+\newcommand\mcc{\mathbb{C}}
+\newcommand\mrr{\mathbb{R}}
+\newcommand\mzz{\mathbb{Z}}
+
+% 向量
+\newcommand\vx{\mathbf{x}}
+\newcommand\vX{\mathbf{X}}
+\newcommand\vy{\mathbf{y}}
+\newcommand\vY{\mathbf{Y}}
+
+% 定义新数学符号
+\DeclareMathOperator{\sgn}{sgn}
+\DeclareMathOperator{\arccot}{arccot}
+\DeclareMathOperator{\arccosh}{arccosh}
+\DeclareMathOperator{\arcsinh}{arcsinh}
+\DeclareMathOperator{\arctanh}{arctanh}
+\DeclareMathOperator{\arccoth}{arccoth}
+\DeclareMathOperator{\grad}{\bf{grad}}
+\DeclareMathOperator{\argmax}{argmax}
+\DeclareMathOperator{\argmin}{argmin}
+\DeclareMathOperator{\diag}{diag}
+\DeclareMathOperator{\csign}{csign}
+
+% 定义命令
+\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
+\def\cmd@to@cs#1#2{\char\number`#2\relax}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\endinput
diff --git a/macros/latex/contrib/hitszthesis/latexmkrc b/macros/latex/contrib/hitszthesis/latexmkrc
index 3ba7612943..e8cd866595 100644
--- a/macros/latex/contrib/hitszthesis/latexmkrc
+++ b/macros/latex/contrib/hitszthesis/latexmkrc
@@ -1,23 +1,40 @@
# vim: set ft=perl:
+@default_files = ('main.tex');
-$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\"");
+$pdf_mode = 1;
+$bibtex_use = 2;
+$recorder = 1;
+$preview_continuous_mode = 1;
+$clean_ext = "synctex.gz acn acr alg aux bbl bcf blg brf fdb_latexmk glg glo gls idx ilg ind lof log lot out run.xml toc pdf thm toe ist idx";
+$pdflatex = "xelatex -file-line-error --shell-escape -src-specials -synctex=1 -interaction=nonstopmode %O %S;cp %D %R.pdf";
+$pdf_update_method = 0;
+$makeindex = 'internal splitindex';
+sub splitindex {
+ # Use splitindex instead of makeindex.
+ # The splitindex programe starts from an .idx file, makes a set of
+ # other .idx files for separate indexes, and then runs makeindex to
+ # make corresponding .ind files.
+ # However, it is possible that the document uses the splitindex
+ # package, but in a way compatible with the standard methods
+ # compatible with makeindex, i.e., with a single index and with the
+ # use of the \printindex command.
+ # Then we need to invoke makeindex.
+ # In addition, latexmk assumes that makeindex or its replacement makes
+ # an .ind file from an .idx file, and latexmk gives an error if it
+ # doesn't exist, we need to make an .ind file.
+ # Both problems are solved by running makeindex and then splitindex.
+ # Note: errors are returned by makeindex and splitindex for things
+ # like a missing input file. No error is returned for lines in an
+ # input file that are in an incorrect format; they are simply
+ # ignored. So no problem is caused by lines in the .idx file
+ # that are generated by splitindex in a format incompatible with
+ # makeindex.
+ my $ret1 = system( "makeindex", $$Psource );
+ my $ret2 = system( "splitindex", $$Psource );
+ return $ret1 || $ret2;
}
-push @generated_exts, 'glo', 'gls';
+@cus_dep_list = (@cus_dep_list, "idx ind 0 makenomenclature");
+sub makenomenclature {
+ system("splitindex $_[0] -- -s $_[0].ist"); }
+@generated_exts = (@generated_exts, 'glo');
-add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
-sub nlo2nls {
- system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
-}
-push @generated_exts, 'nlo', 'nls';
diff --git a/macros/latex/contrib/hitszthesis/main-bachelor.pdf b/macros/latex/contrib/hitszthesis/main-bachelor.pdf
new file mode 100644
index 0000000000..08edf3d17a
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/main-bachelor.pdf
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/main-doctor.pdf b/macros/latex/contrib/hitszthesis/main-doctor.pdf
new file mode 100644
index 0000000000..a95b7f251f
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/main-doctor.pdf
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/main-master.pdf b/macros/latex/contrib/hitszthesis/main-master.pdf
new file mode 100644
index 0000000000..236991ef90
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/main-master.pdf
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/main.pdf b/macros/latex/contrib/hitszthesis/main.pdf
deleted file mode 100644
index a56890a9e1..0000000000
--- a/macros/latex/contrib/hitszthesis/main.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/main.tex b/macros/latex/contrib/hitszthesis/main.tex
index afe154b4d6..9611965789 100644
--- a/macros/latex/contrib/hitszthesis/main.tex
+++ b/macros/latex/contrib/hitszthesis/main.tex
@@ -2,110 +2,177 @@
% !Mode:: "TeX:UTF-8"
% !TEX program = XeLaTeX
%%=============================================
-% 模板名称:HITSZThesis
-% 模板版本:V2.3
+% 模板名称:hitszthesis
+% 模板版本:V3.0
% 模板作者:杨敬轩(Jingxuan Yang)
% 联系作者:yangjingxuan@stu.hit.edu.cn & yanglatex2e@gmail.com
% 模板交流:QQ群:1039392552,加群请备注LaTeX、hitszthesis相关说明
-% 模板适用:哈尔滨工业大学(深圳)本科毕业设计(论文)
-% 模板编译:XeLaTeX,编译两次,两次,两次!!!
+% 模板适用:哈尔滨工业大学(深圳)本、硕、博学位论文
+% 模板编译:手动编译方法参看 README.md 或 hitszthesis.pdf
% GNU make 工具:make thesis
% compile.bat 批处理脚本:compile.bat thesis
% 更多编译细节详见说明文档:hitszthesis.pdf
-% 更新时间:2020/03/05
+% 更新时间:2020/03/10
% 模板帮助:请**务必务必务必**阅读 hitszthesis.pdf 说明文档,文档查看方法:
% cmd 命令行:texdoc hitszthesis
-% 推荐前往模板的GitHub仓库获取最新文件,地址:
+% 推荐前往模板的 GitHub 仓库获取最新文件,地址:
% https://github.com/YangLaTeX/hitszthesis
%%=============================================
-% 设置文档类别为<hitszthesis>
-\documentclass{hitszthesis}
-
-% 模板提供以下选项
-% 1. covertitle,封面标题单行或多行显示:
-%% onerow(默认,单行),tworow(两行)
-% 2. infoalign,封面第二页下划线内容居中或居左显示:
-%% infocenter(默认,居中),infoleft(居左)
-% 3. mathfont,正文数学字体选项:
-%% newtxmath(默认),XITS(可选),mtpro2lite(lite版,免费),
-%% mtpro2(完全版,需购买授权)
-%% mtpro2字体官网:https://www.pctex.com/mtpro2.html
-% 4. boldcaption,图表题注是否加粗布尔选项,默认为false(否)
-
-% 示例:两行,居左,mtpro2字体,图表题注加粗,
-% 将<\documentclass{hitszthesis}>注释,且将下面语句取消注释
-%\documentclass[tworow, infoleft, mtpro2, boldcaption=true]{hitszthesis}
+% 设置文档类别为 <hitszthesis>
+% \documentclass[type=doctor]{hitszthesis}
+% \documentclass[type=master]{hitszthesis}
+\documentclass[type=bachelor]{hitszthesis}
+
+% 模板提供以下选项,各个选项之间不要有空格
+% 1. type=bachelor|master|doctor
+% 含义:本科、硕士、博士学位论文,不设默认值,**必填**
+% 2. covertitletworow=true|false
+% 含义:本科封面第一页标题单行或多行显示,默认为单行显示(false)
+% 3. infoleft=true|false
+% 含义:本科封面第二页下划线内容居中或居左显示,默认为居中显示(false)
+% 4. mathfont=newtxmath|mtprotwolite|mtprotwo
+% 含义:正文数学字体选项:newtxmath(默认),mtprotwolite(lite版,免费),
+% mtprotwo(完全版,需购买授权),
+% mtpro2字体官网:https://www.pctex.com/mtpro2.html
+% 5. boldcaption=true|false
+% 含义:图表题注是否加粗,默认为不加粗(false)
+% 6. tocfour=true|false
+% 含义:是否添加第四级目录,只对本科文科个别要求四级目录有效,默认不添加(false)
+% 7. fulltime=true|false
+% 含义:是否全日制,非全日制如同等学力等,要在coverinformation中设置类型,
+% 默认是全日制(true)
+% 8. subtitle=true|false
+% 含义:论文题目是否含有副标题,默认没有副标题(false)
+% 9. openright=true|false
+% 含义:博士论文是否要求章节首页必须在奇数页,默认否(false)
+% 10. library=true|false
+% 含义:是否为提交到图书馆的电子版,默认否(false)
% 自定义设置与额外加载的宏包请写在 \file{hitszthesis.sty} 里
-% 预设该文件为空
\usepackage{hitszthesis}
-% 填写封面信息
-\input{tex/information}
+% 图片存放路径,在这些文件夹里的图片可以直接使用图片文件名调用
+\graphicspath{{figures/}{pictures/}}
%%=============================================
-% 开始写文章
+% 开始写论文
% !!注意本文仅作为排版格式示例,并不作为毕业论文规范
\begin{document}
-% 若题目过长,则需使用以下命令调整封面第二页下划线长度
-%\infowidth = 8cm
-
-% 生成封面两页
-\maketitle
+% 若题目过长,则需使用以下命令调整本科封面第二页下划线长度
+%\infowidth = 9cm
% 开始写前言部分
\frontmatter
-% 中文摘要
-\input{tex/abstract}
+% 封面信息填写
+\input{front/coverinformation}
-% 英文摘要
-\input{tex/abstracten}
+% 生成封面、中英文摘要
+\makecover
-% 生成目录
+% 物理量名称表,若采用标准符号则不需要此表
+\input{front/denotation}
+
+% 中文目录
\tableofcontents
+% 英文目录,本硕不要求
+% \tableofengcontents
+
% 开始写正文
\mainmatter
% 第1章
-\input{tex/chapter01}
+\input{body/chapter01}
% 第2章
-\input{tex/chapter02}
+\input{body/chapter02}
% 第3章
-\input{tex/chapter03}
+% \input{body/chapter03}
% 第4章
-%\input{tex/chapter04}
+% \input{body/chapter04}
% 第5章
-%\input{tex/chapter05}
+% \input{body/chapter05}
% 第6章
-%\input{tex/chapter06}
+% \input{body/chapter06}
+
+% 开始写正文之后的部分
+\backmatter
+
+%%%% \begin{本科书序} %%%% 这是一个假的环境,本科请用这里的内容
% 结论
-\input{tex/conclusion}
+\input{back/conclusion}
% 参考文献
-\input{tex/reference}
+\bibliographystyle{hitszthesis}
+\bibliography{reference}
+
+% 授权
+\authorization
+
+% 授权页为扫描的PDF文件(scan.pdf),与上面的命令互斥
+% \authorization[scan.pdf]
+
+% 致谢
+\input{back/acknowledgements}
+
+% 附录
+\begin{appendix}
+ \input{back/appendix01}
+ \input{back/appendix02}
+ \input{back/appendix03}
+\end{appendix}
+
+%%%% \end{本科书序}
-% 原创性声明
-\declaration
-% 开始写附录
-\appendix
+%%%% \begin{硕博书序} %%%% 这是一个假的环境,硕、博请用这里的内容
-% 附录A
-\input{tex/appendix01}
+% % 结论
+% \input{back/conclusion}
+
+% % 参考文献
+% \bibliographystyle{hitszthesis}
+% \bibliography{reference}
+
+% % 附录
+% \begin{appendix}
+% \input{back/appendixA.tex}
+% \input{back/appendixB.tex}
+% \end{appendix}
+
+% % 发表文章
+% \input{back/publications}
+
+% % 索引
+% \input{back/ceindex}
+
+% % 授权
+% \authorization
+
+% % 授权页为扫描的PDF文件(scan.pdf),与上面的命令互斥
+% % \authorization[scan.pdf]
+
+% % 致谢
+% \input{back/acknowledgements}
+
+% % 博士学位论文个人简介
+% \input{back/resume}
+
+%%%% \end{硕博书序}
-% 附录B
-\input{tex/appendix02}
% 结束文档撰写
\end{document}
-%%============================================= \ No newline at end of file
+%%=============================================
+
+% Local Variables:
+% TeX-engine: xetex
+% End:
diff --git a/macros/latex/contrib/hitszthesis/reference.bib b/macros/latex/contrib/hitszthesis/reference.bib
new file mode 100644
index 0000000000..4f073efae8
--- /dev/null
+++ b/macros/latex/contrib/hitszthesis/reference.bib
@@ -0,0 +1,75 @@
+% !Mode:: "TeX:UTF-8"
+
+@INPROCEEDINGS{cnproceed,
+ author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
+ title = {武林高手从入门到精通},
+ booktitle = {第~$N$~次华山论剑},
+ year = 2006,
+ address = {西安, 中国},
+ month = sep,
+ language ="zh",
+}
+
+@ARTICLE{cnarticle,
+ AUTHOR = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
+ TITLE = "论刘姥姥食量大如牛之现实意义",
+ JOURNAL = "红楼梦杂谈",
+ PAGES = "260--266",
+ VOLUME = "224",
+ YEAR = "1800",
+ language ="zh",
+}
+
+
+@inbook{Lin1992,
+ language ="zh",
+ AUTHOR = "林来兴",
+ TITLE = "空间控制技术",
+ PUBLISHER = "宇航出版社",
+ YEAR = "1992",
+ Pages = "25-42",
+ ADDRESS = "北京",
+}
+
+@book{xin1994,
+ language ="zh",
+ title={信息技术与信息服务国际研讨会论文集},
+ author={辛希孟 and 中国科学院文献信息中心 and 孟广均 and 信息学},
+ year={1994},
+ publisher={中国社会科学出版社},
+ pages={45-49},
+ address={北京},
+ typeoflit={C},
+}
+
+@book{zhao1998,
+ language ="zh",
+ title={新时代的工业工程师},
+ author={赵耀东},
+ year={1998},
+ citedate = {1998-09-26},
+ address={台北},
+ publisher={天下文化出版社},
+ url={http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5)},
+ typeoflit={M/OL},
+}
+
+@phdthesis{Chen1992,
+ language ="zh",
+ Author = {谌颖},
+ Title = {空间最优交会控制理论与方法研究},
+ ADDRESS = "哈尔滨",
+ School = {哈尔滨工业大学},
+ Year = {1992},
+ pages= {8-13},
+}
+
+@article{hitszthesis2020,
+ title={Dissertation Template for Harbin Institute of Technology, ShenZhen (HITSZ)},
+ author={Jingxuan Yang},
+ journal={Github},
+ volume={001},
+ number={0001},
+ pages={000-999},
+ year={2020},
+}
diff --git a/macros/latex/contrib/hitszthesis/spine.pdf b/macros/latex/contrib/hitszthesis/spine.pdf
deleted file mode 100644
index 378022907c..0000000000
--- a/macros/latex/contrib/hitszthesis/spine.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/hitszthesis/spine.tex b/macros/latex/contrib/hitszthesis/spine.tex
deleted file mode 100644
index 47272769fa..0000000000
--- a/macros/latex/contrib/hitszthesis/spine.tex
+++ /dev/null
@@ -1,11 +0,0 @@
-\documentclass{hitszthesis}
-
-% 填写封面信息
-\input{tex/information}
-
-\begin{document}
-
-% 使用默认标题和默认作者生成书脊
-\spine
-
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/abstract.tex b/macros/latex/contrib/hitszthesis/tex/abstract.tex
deleted file mode 100644
index 4bc6a0c565..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/abstract.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-% !TEX root = ../main.tex
-
-% 开始写摘要
-\begin{abstract}
-
-近年来,基于神经网络方法的机器人智能抓取物体的研究方兴未艾。本文首先介绍了该研究的背景,采用神经网络的方法进行机器人智能抓取研究是一个可行的方案。
-
-而后,本文总结归纳了神经网络在机器人智能抓取领域的研究历史与研究现状。由实值神经网络的三个里程碑意义的模型到复值神经网络的兴起,神经网络的模型得到了极大地扩展。基于深度学习的方法已经在机器人视觉识别领域取得了重大的成就,识别要抓取的物体图像以后,机器人的抓取策略也很有讲究。
-
-本文还重点介绍了基于三种不同的神经网络方法进行的机器人智能抓取研究。首先是基于复值神经网络的方法,该方法包含离散、连续、多值三种模型,复值神经网络以其自然的复数处理能力,使得图像等常需频域处理的信号有了直接的表达和处理方式。
-
-然后是基于轻量级卷积神经网络的方法,目前基于神经网络的机器人抓取位姿预测方法的研究使用的网络结构通常具有大量的参数,需要大量的计算和存储资源。基于 SqueezeNet 的轻量级卷积神经网络抓取预测模型在不降低准确率的情况下,网络模型更小,需要的存储资源更少,速度更快。
-
-最后是基于级联卷积神经网络的方法,该方法提出一种抓取姿态细估计的卷积神经网络模型 Angle-Net,在此基础上,提出一种两阶段级联式抓取位姿检测模型。
-
-% 中文关键词
-\keywords{轻量级;卷积神经网络;复值神经网络;级联神经网络;轻量级卷积神经网络;位姿检测模型}
-\end{abstract} \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/abstracten.tex b/macros/latex/contrib/hitszthesis/tex/abstracten.tex
deleted file mode 100644
index bfcc60d8ca..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/abstracten.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-% !TEX root = ../main.tex
-
-% 英文摘要
-\begin{abstracten}
-
-In recent years, the research of intelligent object grabbing by robots based on neural network method is in the ascendant. Firstly, this paper introduces the background of this research, and it is a feasible scheme to apply the neural network method to the intelligent grasping of robots.
-
-Then, this paper summarizes the research history and status quo of neural network in the field of robotic intelligent grasping. From the three milestone models of real-valued neural networks to the emergence of complex-valued neural networks, the model of neural networks has been greatly expanded. The method based on deep learning has made great achievements in the field of robot vision recognition. After recognizing the object image to be grasped, the strategy of robot grasping is also very exquisite.
-
-This paper also focuses on the intelligent grasping of robots based on three different neural network methods. Firstly, the method based on complex-valued neural network includes three models: discrete, continuous and multi-valued. Complex-valued neural network, with its natural complex processing ability, makes the signal which often needs to be processed in frequency domain, such as image, have a direct expression and processing mode.
-
-Then it is based on the method of lightweight convolution neural network. At present, the network structure used in the research of robot grasping pose prediction method based on neural network usually has a large number of parameters, which requires a lot of computing and storage resources. The grabbing prediction model of lightweight convolutional neural network based on SqueezeNet has smaller network model, less storage resources and faster speed without reducing accuracy.
-
-Finally, based on the method of cascade convolution neural network, a convolution neural network model Angle-Net for fine grabbing attitude estimation is proposed. On this basis, a two-stage cascade grabbing pose detection model is proposed.
-
-% 英文关键词
-\keywordsen{Lightweight, Convolutional Neural Network, Complex Neural Network, Two stage cascade grabbing pose detection model}
-\end{abstracten} \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/acknowledgements.tex b/macros/latex/contrib/hitszthesis/tex/acknowledgements.tex
deleted file mode 100644
index 9bc038fbe2..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/acknowledgements.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-% !TEX root = ../main.tex
-
-% 致谢
-\chapter*{致\quad 谢}
-\addcontentsline{toc}{chapter}{致\quad 谢}
-
-衷心感谢导师XXX教授对本人的精心指导。$\cdots\cdots$,他的言传身教将使我终生受益。
-
-感谢XXX教授,以及实验室全体老师和同窗们的热情帮助和支持!
-
-本课题承蒙XXXX基金资助,特此致谢。
-
-$\cdots$ \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/appendix01.tex b/macros/latex/contrib/hitszthesis/tex/appendix01.tex
deleted file mode 100644
index c59fa1ee19..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/appendix01.tex
+++ /dev/null
@@ -1,27 +0,0 @@
-% !TEX root = ../main.tex
-
-% 附录已经设置为目录只包含章标题,章节写法与正文完全相同
-\chapter{外文资料翻译}
-
-题目:基于驾驶员—车辆—道路交互的驾驶安全场
-
-期刊:IEEE Transactions on Intelligent Transportation Systems, 2015, 16: 2203-2214.
-
-摘要:车辆驾驶安全受许多因素的影响,包括驾驶员、车辆和道路环境,它们之间的相互作用非常复杂。现有的评估驾驶安全性的方法仅考虑有限的因素及其相互作用,基于运动学和动力学的车辆驾驶安全辅助系统难以适应日益复杂的交通环境。在本文中,我们提出了一个新的概念——驾驶安全场。驾驶安全场利用场论来表示由驾驶员、车辆、道路状况和其他交通因素引起的风险因素。本文构建了一个统一的驾驶安全场模型,包括以下三个部分:(1)势能场,由道路上的静止物体构成,例如停止的车辆;(2)动能场,由道路上的移动物体构成,例如车辆和行人;(3)行为场,由驾驶员的个人特征构成。
-
-\section{求和算子}
-
-\textbf{求和算子} 是用以表达多个数求和运算的一个缩略符号,它在统计学和计量经济学分析中扮演着重要作用。如果 $\{x_i: i=1, 2, \cdots, n\}$ 表示 $n$ 个数的一个序列,那么我们就把这 $n$ 个数的和写为\equref{eq:1}:
-\begin{equation}
-\label{eq:1}
-\sum_{i=1}^n x_i \equiv x_1 + x_2 +\cdots + x_n
-\end{equation}
-
-引用图片示例:\figref{appen:angle}
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.6\textwidth]{3angle}
- \caption{附录插图示例:Angle-Net 结构}
- \label{appen:angle}
-\end{figure} \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/appendix02.tex b/macros/latex/contrib/hitszthesis/tex/appendix02.tex
deleted file mode 100644
index cac3b135bf..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/appendix02.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-% !TEX root = ../main.tex
-
-\chapter{其他附录文本}
-
-\lipsum[2]
-
-\section{求和算子}
-
-\textbf{求和算子} 是用以表达多个数求和运算的一个缩略符号,它在统计学和计量经济学分析中扮演着重要作用。如果 $\{x_i: i=1, 2, \cdots, n\}$ 表示 $n$ 个数的一个序列,那么我们就把这 $n$ 个数的和写为\equref{eq:2}:
-\begin{equation}
-\label{eq:2}
-a^2+b^2=c^2
-\end{equation}
-
-引用图片示例:\figref{appen:fire}
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.6\textwidth]{less3}
- \caption{附录插图示例:f\/ire模块}
- \label{appen:fire}
-\end{figure} \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/chapter01.tex b/macros/latex/contrib/hitszthesis/tex/chapter01.tex
deleted file mode 100644
index f666f53f29..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/chapter01.tex
+++ /dev/null
@@ -1,16 +0,0 @@
-% !TEX root = ../main.tex
-
-% 第1章的标题
-\chapter{绪论}
-
-% 正文内容,注意LaTeX分段有两种方法,直接空一行或者使用<\par>
-% 默认首行缩进,不需要在代码编辑区手动敲空格
-随着社会发展,人口老龄化,劳动力短缺等问题逐渐凸显,对服务机器人的需求也越来越大,但是服务机器人所工作的非结构化环境也带来了许多技术难题,其中十分主要的一个问题就是非结构环境中机器人的自动抓取,因为抓取是机器人与现实世界交互的主要方式之一。不同于工业机器人在结构化环境中对工件的抓取,服务机器人在非结构化环境下的自动抓取面临着诸多挑战,例如动态化环境、光照变化、物体间存在相互遮挡,以及最主要的,非结构化环境中除了已知的物体,还有大量未知物体。对于非结构化环境中工作的服务机器人,预先获取所有需要进行抓取的物体的模型是不现实的,因此机器人必须能够对未知的物体在线进行快速稳定可靠的抓取规划。
-
-为了解决上述问题,常用的一种做法就是使用机器学习方法来学习从传感器数据提取出的特征表达到抓取位姿的映射关系,相比于建立物体的模型库来保存抓取经验,机器学习方法可以在没见过的物体上进行抓取经验的迁移。在这个领域中,一些传统的方法通常借助于人工设计的特征来表示和存储抓取经验,并训练分类器,但人工设计的特征往往只针对于某一种特定物体或任务有效,且人工设计特征的工作量大难度高,很难在其他场景进行使用。
-
-近年来,以卷积神经网络(Convolutional Neural Network, CNN)为代表的深度学习技术,在计算机视觉和机械设备健康监测等诸多领域取得了重大的突破,在一些领域中达到了超过人类的性能。卷积神经网络可以通过大量数据的训练挖掘出适合于当前任务的特征表达,由于通常卷积神经网络需要堆叠很多层来提高特征表达能力,因此参数较多,需要使用比传统机器学习算法更多的标注数据来进行训练,抑制过拟合提高算法的泛化能力。
-
-在机器人抓取规划领域,使用卷积神经网络学习的特征取代人工设计的特征来对抓取进行表示和分类有很大的优势和应用前景。首先,相比于人工设计的特征,卷积神经网络通过大量数据的学习可以挖掘出泛化能力更强效果更好的特征,可以进一步提高抓取规划算法的性能,且省去了复杂的人工特征设计工作。其次,随着硬件计算力和仿真软件性能的提升,视觉传感器的普及,目前已有许多通过实验或者仿真收集的机器人抓取数据集可供使用。
-
-综上,有了足够的数据以及合理设计的卷积神经网络结构就可以建立更高性能的自动抓取规划算法,进而提高服务机器人在非结构化环境的交互能力,提高其自主化和智能化程度,提高服务机器人的实用性和推进产业落地。因此,基于卷积神经网络的机器人自动抓取规划具有重要的研究价值,可以带来巨大的经济效益。 \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/chapter02.tex b/macros/latex/contrib/hitszthesis/tex/chapter02.tex
deleted file mode 100644
index 510218ecdd..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/chapter02.tex
+++ /dev/null
@@ -1,52 +0,0 @@
-% !TEX root = ../main.tex
-
-% 第2章的标题
-\chapter{文献综述}
-
-% 第2章第1节的标题
-\section{实值神经网络发展历程}
-
-% <\upcite{}>为在右上角引用参考文献命令
-% <\cite{}>为在正文中引用参考文献命令
-% 目前不支持[1-6]类型的引用,需手动填写<$^{[1\text{-}6]}$>
-
-人类利用人工神经网络对生物神经网络的结构、机理和功能模拟的研究,经历了近半
-个多世纪漫长而又曲折的过程。具有里程碑意义的是如下三个模型\upcite{bibc1,bibc2}。
-
-1943年神经生理学家McCulloch和数学家Pitts提出的第一个人工神经网络模型:
-McCulloch-Pitts模型\upcite{bibc3},成为神经网络研究的开端。1949年心理学家D.O.Hebb在文献\upcite{bibc4}中提出了神经元之间突触联系强度可以改变的假设,并据此提出了神经元学习的准则,为神经网络的学习算法奠定了基础。这些重大进展促进了神经网络早期的研究。
-
-1958年Rosenblat将McCulloch和Pitts的工作与Hebb的工作结合在一起,设计出的
-一种称为感知机的神经网络模型\upcite{bibc5},首次把人工神经网络的研究从理论付诸工程实践,引起了许多科学家的兴趣。不过在1969年,人工智能创始人之一Minsky和Papert出版了以《感知机》为名的书\upcite{bibc6},书中从数学上深入分析了感知机的原理,指出了其局限性并从理论上对感知机的原理给予了沉重的打击,使得神经网络早期的研究热潮迅速降温,并开始陷入低潮和休眠状态。
-
-% <\/>命令解决fi、ff等上边连接在一起的问题
-1982年和1984年美国加州理工大学的生物物理学家J.J.Hopf\/ield提出了Hopf\/ield神经网络\upcite{bibc7,bibc8}。Hopf\/ield神经网络模型的提出具有划时代的伟大意义,使得神经网络的研究从体眠的状态开始复苏。Hopf\/ield在文献\cite{bibc7,bibc8}中设计出用电子电路实现这一网络的方案,从而为神经计算机的研究奠定了基础。更为重要的是他把设计出的神经网络应用于联想记忆以及解决优化领域一直困扰的TSP问题,并取得了巨大的成功,这些重大进展大大促进了神经网络的研究。此外,他还通过引入类似于Lapunov函的“计算能量函数”的概念对网络的动力学特性进行了分析并给出了网络稳定性的条件,从而开启了神经网络稳定性研究。
-
-% 节标题
-\section{复值神经网络的兴起}
-
-复值神经网络(Complex-valued Neural Network)是实值神经网络在复数域的推广。相比实值神经网络,复值神经网络的起步稍晚。其历史可追溯到1975年Widrow提出的复值最小均方(LMS)算法,该算法后来被广泛运用于信号处理领域\upcite{bibc9}。但正如复数的出现和被人认可经历了一个漫长的过程一样,复值神经网络在出现后的相当长时间,并未引起人们的重视。直至近几年来,随着神经网络应用领域的不断扩展,许多需要处理复数信号的领域也提出了用神经网络解决其相关问题的要求,例如量子力学、电磁学、光电子、图像、遥感、时间序列分析等。在这些领域中,基于复数信号的表示、分析和处理具有极大的便利,而复值神经网络则能直接处理复数信号,因而很自然地使二者联系在一起。事实上,在需要幅值和相位(或理解为大小和方向)两方面信息来表示同一信号的场合,运用复值神经网络较之实值神经网络,要更为直接。尽管可以用2个实值神经网络分别表达此类信号的大小和方向(或实部和虚部),但正如复数虽然只是两个实数按某种规则而连接,但依然有其独立于实数而存在的必要性一样,复值神经网络由于复数有实部和虚部,且复数运算规则的特殊性等原因,在其实现和运用过程中表现出一些实值神经网络所不具有特质,因此复值神经网络也不能简单地理解为可用2个实值神经网络所取代。而且在将神经网络从实数域到复数域的推广中,并不是像表面上理解的那样:仅是简单地将一个变量从实数变成复数。如果这样做的话,许多诸如奇异等意想不到的问题就有可能发生\upcite{bibc10}。
-
-作为复值神经网络研究领域的先导者,日本的Akira Hirose教授总结了近年来复值神经网络的研究成果,并出版一本名为《复值神经网络的理论及应用》专著\upcite{bibc10}。书中总结了近年来复值神经网络理论的发展和应用情况。
-
-% 节标题
-\section{抓取物体图像识别}
-
-近年来,基于深度学习的方法已经在包括视觉识别\upcite{bib1,bib2},语音识别和自然语言处理等任务上取得了重大成就。美国康奈尔大学 Lenz 等\upcite{bib3}借鉴深度学习在图像检测及图像识别等任务中的成功经验,提出了基于深度学习的机器人抓取检测的方法\upcite{bib3,bib4}。与传统的依靠人工经验抽取样本点特征的方式相比,基于深度学习的机器人抓取检测的方法可以自动学习如何识别和提取待抓取位置的特定特征。越来越多的机器人学者研究如何将深度学习的方法应用于机器人抓取检测上从而使机器人具备更强大的智能。大部分研究学者都是将深度学习的方法用来学习不同形状和位姿的物体的末端执行器的最佳配置,基于深度学习的深层表达能力学习的参数为每个图像预测多个抓取位置进行排序来找到最佳抓取位置。
-
-基于深度学习的方法,Lenz 等\upcite{bib3}提出了基于稀疏自编码器的两步级联抓取检测系统,构建两个大小网络用于提取 RGB-D 输入数据的抓取特征,采用滑动窗的方法搜索抓取框,最后在网络顶层添加支持向量机(Support Vector Machine,SVM)作为分类器的网络结构。在标准康奈尔抓取数据集\upcite{bib6}上达到 73.9\%的检测准确率,耗时13.5s,由于采用类似于穷举法的搜索机制,需要在不同大小的图像块上使用分类器进行重复计算,计算量非常大,且十分耗时。
-
-Redmon 等\upcite{bib7}认为采用滑动窗口的方法来预测抓取位置是一种非常耗时的方法,而且使用单阶段的网络性能优于 Lenz 等的级联系统。为了避免在不同大小的图像块上重复计算,他们利用卷积神经网络强大的特征提取能力将整个图像输入网络中,在整个图像上直接进行全局的抓取预测,目前大部分学者采用这种方案\upcite{bib5,bib8}。使用类似于 AlexNet\upcite{bib9}的卷积神经网络模型来实现单阶段的检测方法,以更快的速度达到了更高的检测精度,但是这种方法由于卷积神经网络结构的复杂性仍然存在模型较大的缺陷。
-
-Kumra 等\upcite{bib4}也采用将整个图像输入卷积神经网络中进行全局的抓取预测,网络结构上,他们采用网络结构更复杂特征提取能力更强的ResNet50提取抓取特征\upcite{bib10},用 SVM 预测抓取配置的参数。精度上可以达到比较好的检测精度,但是由于模型采用层数较深的残差网络,导致网络模型和计算量都比较大。
-
-Chu 等\upcite{bib5}提出了一种适合于多物体场景抓取模型,首先使用 ResNet50 对输入图像提取抓取特征,然后使用类似于 RPN 网络的模型进行抓取框的推荐,最后经 ROI Pooling 进行角度参数的分类和抓取框的回归。这种模型适用于多物体的抓取场景, 并且达到了较高的抓取检测准确率,由于模型较深且类似于级联系统导致模型较大。
-
-% 节标题
-\section{机器人抓取策略}
-
-在机器人分拣、 搬运等抓取作业任务中,包括顶抓(top-grasp)和侧抓(side-grasp) 2 种方式的平面抓取(planar grasp)是最为常用的抓取策略。对于任意姿态的未知不规则物体,在光照不均、 背景复杂的场景下,如何利用低成本的单目相机实现快速可靠的机器人自主抓取姿态检测具有很大的挑战。
-
-机器人自主抓取姿态规划方法根据感知信息的不同可分为 2 类:一类是基于物体模型的抓取姿态估计\upcite{bibb1,bibb2,bibb3},一类是不依赖物体模型的抓取姿态检测。基于模型的方法需要给定精确、 完整的物体 3 维模型,然而低成本相机的成像噪声大,很难扫描建立精确模型。另外,基于 3 维模型的方法计算复杂,难以适应机器人实时抓取判断的需求。
-
-不依赖物体模型的方法借助于机器学习技术,其实质是将抓取位姿检测问题转化成目标识别问题。例如,文\cite{bibb4} 提出了一种用 2 维矢量矩形表示图像上物体抓取位姿的直观方法。机器学习方法的出现令抓取检测不局限于已知物体。早期的学习方法\upcite{bibb4} 需要人为针对特定物体设定特定的视觉特征,不具备灵活性。近年来,深度学习\upcite{bibb5} 发展迅速,其优越性正在于可自主提取与抓取位姿有关的特征。 \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/chapter03.tex b/macros/latex/contrib/hitszthesis/tex/chapter03.tex
deleted file mode 100644
index 8bd0613917..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/chapter03.tex
+++ /dev/null
@@ -1,330 +0,0 @@
-% !TEX root = ../main.tex
-
-% 章标题
-\chapter{典型神经网络案例分析}
-
-% 节标题
-\section{基于复值神经网络的机器人智能抓取}
-
-% 条标题
-\subsection{一类离散时间复值Hopf\/ield神经网络的分析与综合}
-
-% <$x$>为行内公式
-假设网络神经元的个数为$n$,其中第$i$个神经元的动态描述为:
-% 行间公式环境,此公式环境有自动标号
-\begin{equation}
-\left\{
-\begin{aligned}
- u_i(k+1)&=\sum\limits_{j=1}^nT_{ij}V_{j}(k)+a_iu_i(k)+I_i\\
- V_i(k)&=g_i[u_i(k)]+\intab x\dif x
-\end{aligned}
-\right.
-\end{equation}
-其中$u_i(k)\in \mathbb{C},\ V_i(k)\in \mcc$和$I_i\in\mcc$分别为第$i$个神经元在$k$步的状态、输出和阈值,$T_{ij}\in\mcc$为第$j$个神经元到第$i$个神经元的连接权值,$a_i\in\mrr$是第$i$个神经元的动态时间常数,$g(\cdot)$为某种非线性复值函数,即$g_i:\ \mcc\rightarrow\mcc$。
-
-若定义$\mathbf{u}=[u_1,\cdots,u_n]^T\in\mcc^n,\ \mathbf{ V}=[V_1,\cdots,V_n]^T\in\mcc^n,\ \mathbf{g}=[g_1,\ldots,g_n]^T\in\mcc^n\rightarrow\mcc^n,\ \mathbf{ T}
-=[T_{ij}]\in\mcc^{n\times n},\ \mathbf{A}=\diag(a_i)\triangleq \diag(A_{ii})
-\in\mcc^{n\times n},\ \mathbf{ I}=[I_{i}]\in\mcc^{n}$,则系统动态可写成:
-\begin{equation}
-\left\{
-\begin{aligned}
- \mathbf{u}(k+1)&=\mathbf{T}\cdot\mathbf{V}(k)+\mathbf{A}\mathbf{u}(k)+\mathbf{ I}\\
- \mathbf{V}(k)&=\mathbf{g}[\mathbf{u}(k)]
-\end{aligned}
-\right.
-\end{equation}
-
-% 条标题
-\subsection{一类连续复值 Hopf\/ield 神经网络}
-
-考虑一类复值Hopf\/ield神经网络,该网络具有$n$个神经元,其动态描述如下:
-\begin{equation}
-\left\{
-\begin{aligned}
- \frac{\dif u_i(t)}{\dif t}&=-c_iu_i(t)+\sum\limits_{j=1}^na_{ij}V_{j}(t)+I_i\\
- V_i(t)&=f_i[u_i(t)]
-\end{aligned}
-\right.
-\end{equation}
-
-其中$u_i(t)\in \mathbb{C},\ V_i(t)\in \mcc$和$I_i\in\mcc$分别为第$i$个神经元在时刻$t$的状态、输出和阈值,$a_{ij}\in\mcc$为第$j$个神经元到第$i$个神经元的连接权值,$c_i>0$是第$i$个神经元的动态时间常数,$f(\cdot)$为某种非线性复值函数,即$f_i:\ \mcc\rightarrow\mcc$。
-
-\subsection{一种具有多值状态的复值 Hopf\/ield 神经网络模型}
-具有多值状态的复值 Hopf\/ield 神经网络是传统的二值Hopf\/ield 神经网络在复数域的扩展。该网络具有$n$个神经元,单层全连接结构,每个神经元具有复平面单位圆上的$K$种状态,即若表示第$l$个神经元在第$k$步迭代中的状态为$x_l(k)$,则:
-\begin{equation}
-x_l(k)=\exp[{i\theta_K\cdot l(k)}],\ \theta_K=\frac{2\pi}{K},\ l(k)=0,\ 1,\ \cdots,\ K-1
-\end{equation}
-
- \figref{figmulti}给出了状态种类 $K=8$时的神经元状态取值示例,其中状态种类数$K$平分复平面单位圆为$K$等分。当记第$j$个神经元到第$l$个神经元的连接权值为$w_{lj}$时,第$l$神经元在第$k$步迭代后的输出为:
-\begin{equation}
-y_l(k) = \csign_K\left(\sum\limits_{j=1}^n w_{lj}\cdot x_j(k)\right)
-% 公式标签,可用<\eqref{}>引用
-\label{eqiter}
-\end{equation}
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.5\textwidth]{figmutihopcomplex.png}
- \caption{复值神经元状态$(K=8)$及状态转移规则}
- % 图片标签,可用<\figref{}>引用
- \label{figmulti}
-\end{figure}
-
-其中激活函数$\csign(\cdot)$定义如下:
-\begin{equation}
-\csign(u)=
-\left\{
-\begin{array}{cc}
- e^{i0},&0\ls\arg[u\cdot\exp(i\pi/K)]<\frac{2\pi}{K}\\
- e^{i\frac{2\pi}{K}},&\frac{2\pi}{K}\ls\arg[u\cdot\exp(i\pi/K)]<\frac{4\pi}{K}\\
- \vdots&\vdots\\
- e^{i\frac{2\pi}{K}(K-1)},&(K-1)\frac{2\pi}{K}
- \ls\arg[u\cdot\exp(i\pi/K)]<2\pi\\
-\end{array}
-\right.
-\end{equation}
-
-可见,激活函数$\csign(\cdot)$实际上可理解为一种复数域上定义的signum函数,它将神经元状态的加权和映射到了复平面单位圆上最接近该加权和的量化点上,其间加权和幅值固定映射成了1。相应的状态转移过程如\figref{figmulti}所示。
-
-从激活函数的定义还可以看出,这种网络是一种全连接回归,且由于神经元的状态有$K$种$(K\gs2)$,因此可将该网络看作传统的二值Hopf\/ield神经网络在复数多值域中的扩展。于是,沿袭Hopf\/ield网络的状态更新方式,该类网络的状态更新也可分同步和异步两种:
-
-异步方式:网络中的神经元状态等概率地依\equref{eqiter}进行更新,一次只更新一个神经元状态;
-
-同步方式:网络的每次迭代中,所有神经元状态同时被更新,即依照下式更新:\begin{equation}
-% 若使用XITS字体:
-% <\mathbfup> 与 <\mathbf> 的效果相同,都是直立加粗
-% 斜体加粗使用 <\mathbfit>
-{\mathbf{ X}}(k+1)=\mathbf{ Y}(k)=\csign[\mathbf{ W }\cdot\mathbf{ X }(k)]
-\end{equation}
-其中$\mathbf{ X}(k)$为神经元状态$x(k)$组成的列向量,$\mathbf{ W}=(w_{kj})$为整个网络的连接权矩阵。
-
-% 节标题
-\section{基于轻量级卷积神经网络的机器人智能抓取}
-
-% 条标题
-\subsection{机器人抓取检测的问题描述}
-
-目前基于神经网络的机器人抓取位姿预测方法的研究主要集中在结合基础分类网络如 AlexNet、ResNet 等提高抓取检测准确性上,这些网络最初是为复杂的分类任务和海量数据的特点而设计的,网络结构通常具有大量的参数,需要大量的计算和存储资源。针对上述深度学习抓取检测方法的不足,文献\cite{bib:one}提出了基于 SqueezeNet 的轻量级卷积神经网络抓取预测模型,在不降低准确率的情况下,该网络模型更小,需要的存储资源更少,速度更快,更适合于移动机器人平台中。 类似的设计轻量级模型的工作如\cite{bib11}。
-
-如\figref{figless1}所示的抓取位姿预测问题与如\figref{figless2}所示普通检测问题的区别在于:抓取位姿预测问题不只是在最佳抓取位置处预测出类似于普通检测问题形式的回归框,还要预测出最佳抓取位姿$(x,\ y,\ h,\ w,\ \theta)$。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.4\textwidth]{less1.jpg}
- \caption{五维抓取表示}
- \label{figless1}
-\end{figure}
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.3\textwidth]{less2.jpg}
- \caption{普通检测表示}
- \label{figless2}
-\end{figure}
-
-机器人抓取位姿检测问题可以被表述为对于给定对象的图像$I$找到最佳抓取位姿$g$。\figref{figless1}显示了一个五维抓取表示\upcite{bib3},以便对物体的潜在的最佳抓取位姿进行表示,五维抓取位姿$g$可以表示为\equref{eqgrasp}:
-\begin{equation}
-g=f(x,y,h,w,\theta)
-\label{eqgrasp}
-\end{equation}
-
-其中$(x,\ y)$是与抓取矩形的中心对应的坐标,$h$是平行板的高度,$w$是平行板之间的最大距离,$\theta$是抓取矩形相对于水平轴的取向。蓝线$h$表示二指机器人手爪的平行板,红线$w$对应于抓取之前手爪的平行板之间的距离,该五维抓取表示给出了在对物体执行抓取时平行板夹具的位置和方向。Lenz 等表明一个最佳的五维抓取表示可以被映射回一个可以被机器人用来执行抓取的七维抓取表示,还可以降低计算成本。
-
-% 条标题
-\subsection{多模态轻量级抓取检测模型架构}
-
-与以前的方法\upcite{bib3,bib4,bib5}相比,文献\cite{bib:one}使用一个小型轻量级的卷积神经网络架构 SqueezeNet-RM(SqueezeNet Regression Model),该架构结合 SqueezeNet\upcite{bib12}参数少的优点和 DenseNet\upcite{bib13}多旁路连接加强特征复用的思想能提升抓取检测准确率的优点,在康奈尔抓取数据集检测任务上,在保证准确率不降低的情况下,网络模型更小,所需存储空间更少,模型速度更快。
-
-如\figref{figflowchart}所示,整体架构的思想是在 SqueezeNet 网络模型中引入 DenseNet 增加旁路加强特征复用的思想,conv1 和 conv10 之后加入 Batch Normalization,并在最后一层后面添加一个全连接层。全连接层有六个输出神经元对应抓取矩形框的坐标,四个神经元对应位置和高度,抓取角度使用两个附加的参数化坐标:正弦和余弦的两倍角。网络直接从原始图像回归出抓取位姿$(x,y,h,w,\theta)$。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.4\textwidth]{flowchart}
- \caption{SqueezeNet-RM 网络模型}
- \label{figflowchart}
-\end{figure}
-
-% 条标题
-\subsection{SqueezeNet轻量级卷积神经网络架构}
-
-如\figref{figflowchart}, SqueezeNet-RM 网络模型以一个独立的卷积层 conv1 为开端,相邻的是 8 个 f\/ire 模块,之后加一个独立的卷积层 conv10,最后以一个最终的全连接层结束。在层 conv1,f\/ire4,f\/ire8 和 conv10 之后使用步长为 2 的 max-pooling、f\/ire2、f\/ire4、f\/ire6 分别向后面的每一层引出旁路连接,这些相对较后的 pooling 和旁路连接有助于提高检测精度。
-
-类似于 Inception\upcite{bib14}和 DenseNet\upcite{bib15}的模块化思想,SqueezeNet 神经网络采用了模块化的设计思想,它的基础模块称为 f\/ire 模块,如\figref{figfire}所示: f\/ire 模块含两部分:squeeze 层和 expand 层。首先使用$1\times1$的卷积操作对输入特征图进行压缩,其卷积核数要少于上一层 feature map 数,输出特征图的数量可以远比输入特征图的数量少,这是 squeeze层的设计。然后,采用不同大小的卷积核$1\times1$和$3\times3$进行卷积操作,将这些卷积操作的输出特征图 concat 起来,这是 expand 层操作,最终将特征图的数量提升上去。将上述 f\/ire 模块堆叠, 得到 SqueezeNet 网络。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.6\textwidth]{less3}
- \caption{f\/ire模块}
- \label{figfire}
-\end{figure}
-
-SqueezeNet 通过 f\/ire 模块和自身优化结构,采用了以下几种常用的策略实现参数的减少。策略 1: 使用$1\times1$过滤器替换$3\times3$过滤器,因为$1\times1$滤波器具有比$3\times3$滤波器少9倍的参数,见\figref{figfire}中 Squeeze 层。策略 2:使用 Squeeze 层将输入到$3\times3$过滤器的通道的数量减少。具体而言,对于一个完全由$3\times3$滤波器组成的卷积层,该层中的参数的总量是(输入通道的数量)$\times$(滤波器的数量)$\times3\times3$,因此,为了在 CNN 中保持小的参数总数,在采用策略1的同时还要减少$3\times3$滤波器的输入通道的数量。策略 3:延迟降采样, 以使卷积层具有大的激活图,见\figref{figflowchart}中的 Maxpool 位置,大的激活图(通过延迟降采样)可以获得更高的检测精度,有助于提高任务的准确性\upcite{bib16}。策略1和2在试图保持准确性的同时减少CNN中的参数的数量,策略3是在有限的参数运算量上最大化精度。
-
-文献\cite{bib:one}采用在ImageNet分类问题上表现最佳的SqueezeNet (Simple Bypass Conection) 架构\upcite{bib12}。 SqueezeNet是一个全卷积网络,在f\/ire9 层之后添加了一个随机失活层dropout\upcite{bib17},以避免过拟合,在 SqueezeNet 网络的最后一层添加一个全连接层Fully Connected Layer (FC层) 作为输出层。
-
-% 节标题
-\section{基于级联卷积神经网络的机器人智能抓取}
-
-% 条标题
-\subsection{机器人抓取检测的问题}
-
-机器人抓取检测问题包括 2 个部分:抓取位置确定和抓取姿态估计。传统的位置检测方法根据二值化的图像计算物体重心作为抓取位置,但是可抓取位置不在重心处的物体甚多。通常采用滑动窗口法\upcite{bibb6,bibb7} 解决抓取点不在重心上的问题,但此方法以遍历搜索获得最优解,时间代价大。文\cite{bibb8} 对此作出了改进,通过缩小搜索区域范围并减少搜索窗旋转次数来实现时间的优化。Pinto 等人\upcite{bibb9}尝试用随机采样法缩短定位时间,但检测结果因依赖采样位置而表现不稳定,且计算时间减少的成效不明显。 在抓取姿态估计方面,文\cite{bibb7,bibb10}将最优搜索窗的旋转角度作为抓取角度,文\cite{bibb9} 率先以旋转角度为标签将抓取检测感知部分当作分类问题解决,但这些属于粗估计方法,低精度的抓取角度可导致机器人在实际抓取时因受力点错误而抓取失败。因此,减少抓取定位时间消耗和提升姿态估计精度是机器人在线抓取检测时亟待解决的 2 个问题。
-
-深度神经网络用于机器人抓取位姿检测的另一个问题是,已有公开模型如文\cite{bibb7}和文\cite{bibb11}所提出的模型等都是在封闭大数据集上训练所得,通常需要随机器人部署而扩展关于实际特定抓取对象的小样本数据集。迁移学习为特定任务小样本集下深度网络模型训练提供了方法。自建的数据集规模虽小,但能够在已经过百万级封闭数据集训练并具有基本特征提取能力的模型上微调训练,令在特定小样本集下训练的模型仍具有卓越的性能。这样不仅能缩短训练周期,还可提升整个系统的拓展性。
-
-文献\cite{bib:three}针对任意姿态的未知不规则物体,提出一种适于顶抓策略的平面抓取位姿快速检测方法,其主要研究内容及贡献包括:
-
-% enumerate,有序列表环境
-% fullwidth,正文不缩进
-% label,设置编号格式,可选:\Alph \alph \Roman \roman 或 \arabic
-% itemindent,编号缩进量
-\begin{enumerate}[fullwidth, label=(\arabic*), itemindent=2em]
-\item 提出一种抓取姿态细估计的卷积神经网络模型 Anlge-Net。
-
-\item 在此基础上,提出一种两阶段级联式抓取位姿检测模型。模型第 1 阶段先以基于区域的全卷积网络\upcite{bibb12}为基础提取少量且可靠的候选抓取位置, 再对候选结果筛选排序确定最优抓取位置,以此加快检测速度;第 2 阶段为 Angle-Net 在前一阶段输出的局部位置图像下计算抓取角度。 相比于文\cite{bibb9}的方法,直接计算的抓取角度误差更小,抓取检测精度得以提升。
-\end{enumerate}
-
-% 条标题
-\subsection{机器人抓取问题描述}
-
-机器人平面抓取作业任务如\figref{figgrasp}所示。机器人视觉系统分析给定抓取场景的彩色图像,推断出顶抓策略下的目标物体最优抓取位姿。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.6\textwidth]{3grasp}
- \caption{机器人抓取作业任务示例}
- \label{figgrasp}
-\end{figure}
-
-为使抓取检测结果与机器人末端执行器位姿对应,图像中抓取位姿检测结果采用基于文\cite{bibb4}方法简化得到的“点线法”表示,如\figref{figgrasp}中的采集图像部分所示,圆点为抓取位置的中心点,图像坐标系下记作$(u, v)$,对应机器人末端执行器两指连线的中点;短实线对应机器人末端执行器的两指连线,抓取角度$\theta$为该线顺时针旋转时与图像坐标系下$X$轴正方向的夹角,对应机器人末端执行器绕机器人 基坐标系$Z$轴旋转的角度。考虑到抓取角度的对称性,设$\theta\in [0, 180)$。线长$l$对应机器人末端执行器尝试抓取时的两指开度。
-
-针对上述研究目标和相关定义,机器人抓取检测问题可描述如下:$t$时刻机器人获取目标的$n$维度特征序列$X (t) = (x_1(t), x_2(t),\cdots, x_n(t))$,有
-\begin{equation}
-G(u(t), v(t), \theta(t), l(t)) = F(X (t))
-\end{equation}
-
-其中,$F$为级联机器人平面抓取位姿检测模型,$G$为“点线法”表示的抓取检测结果。
-
-% 条标题
-\subsection{R-FCN与Angle-Net级联的抓取检测器}
-
-抓取位姿检测任务包括抓取点确定和抓取姿态估计 2 个阶段。采取由粗到细的方式,针对各部分任务设计对应的卷积神经网络,并将网络级联成最终的检测模型。
-
-模型结构如\figref{figpoe}所示,第 1 个阶段可视作定位与分类问题,以 R-FCN 为基础实现抓取定位以及抓取角度的粗估计;第 2 个阶段转换成回归问题,通过构造 Angle-Net 模型实现抓取角度的精细估计。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=\textwidth]{3posoreest}
- \caption{抓取位姿检测模型结构}
- \label{figpoe}
-\end{figure}
-
-针对目标检测问题已提出了许多优秀的深度学习模型,根据文\upcite{bibb14}的研究,基于区域的全卷积网络(R-FCN)兼具优秀的检测速度和准确率。故本文选用 R-FCN 实现图像中候选抓取位置的提取, 可抓取位置在图像上由边界框(bounding-box)标出,抓取点即为边界框中心点.为实现抓取角度的 粗估计,以抓取角度$\theta$为分类标签,共计 4 类:$0\degree,\ 45\degree,\ 90\degree,\ 135\degree$。为在提高检测速度的同时尽量降低对检测结果的影响,抓取位置候选框定为 300 个。 R-FCN 模型输入为任意尺寸的包含目标物体的场景图像,输出为候选框及其对应的可靠性分数,通过筛选和排序确定在工作区域内分数最高的抓取位置。
-
-深度网络目标检测模型根据感兴趣区域(RoI)池化层分为两大类:一类是共享计算的全卷积子网络模型,如 R-CNN\upcite{bibb15}、 快速 R-CNN\upcite{bibb16}、 更快 R-CNN \upcite{bibb17};另一类为不共享计算的作用于各自 RoI 的子网络模型,如 SSD (single shot multibox detector)\upcite{bibb18}、YOLO (you only look once) \upcite{bibb19}。R-FCN 基于 R-CNN 的框架,即先进行区域建议再进行区域分类的策略,为了使检测能对目标的平移做出准确 响应,采用全卷积网络(FCN),用专门的卷积层构建位置敏感分数图 (position-sensitive score map)。每个空间敏感地图对 RoI 的相对空间位置信息进行编码,并在 FCN 上面增加 1 个位置敏感的RoI池化层来监管这些分数图。R-FCN 的结构如\figref{figrfcn}所示。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.6\textwidth]{3rfcn}
- \caption{R-FCN 模型结构}
- \label{figrfcn}
-\end{figure}
-
-设待检测类别共有$c$类,在机器人抓取检测模型中$c = 4$。R-FCN 结构中的基础卷积网络基于残差网络(ResNet)\upcite{bibb20},采用 ResNet 的前 100 层并在其最后接一个$1\times1\times1024$的全卷积层。基础卷积网络用于特征提取并输出特征图。区域建议网络沿用更快R-CNN中的区域建议网络(region proposal network,RPN)\upcite{bibb17}网络,生成多个 RoI,即抓取位置候选区域,每个 RoI 被分成$k\times k$块。$k^2$位置敏感分数图作为 R-FCN 中的最后一层卷积层,其功能是输出用于分类的结果。R-FCN 中对RoI 的$(i, j)$块$(0\ls i, j\ls k-1)$进行位置敏感的池化操作,定义为\equref{eqrcijt}:
-\begin{equation}
-r_c(i,j\mid\theta)=\sum_{(x,y)\in(i,j)}\frac{z_{i,j,c}(x+x_0,\ y+y_0|\Theta)}{n}
-\label{eqrcijt}
-\end{equation}
-
-其中,$r_c(i,j\mid\theta)$表示$ (i, j) $块对第$ C $类的池化响应;$z_{i,j,c}$是 $k^2(4 + 1)$分数图中的一个,$(x_0, y_0)$ 表示 RoI 的左上角;$n$表示的是每一块当中的像素值,$\Theta$为待学习参数。
-
-池化操作后输出$k^2$个位置敏感的分数图,利用\equref{eqrc}和\equref{eqsc}得到每一类最终的分数,用于计算损失。
-\begin{equation}
-r_c(\Theta)=\sum_{i,j}r_c(i,j\mid\theta)
-\label{eqrc}
-\end{equation}
-\begin{equation}
-s_c(\Theta)=\dfrac{\exp[{r_c(\Theta)}]}{\sum\limits_{c'=0}^C\exp[{r_{c'}(\Theta)}]}
-\label{eqsc}
-\end{equation}
-
-用模型直接输出角度值替代角度分类标签值可实现更高精度的抓取姿态估计,故构建姿态细估计模型 Angle-Net,结构如\figref{figangle}所示。
-
-\begin{figure}[!htbp]
- \centering
- \includegraphics[width=0.6\textwidth]{3angle}
- \caption{Angle-Net 结构}
- \label{figangle}
-\end{figure}
-
-Angle-Net 由 4 个卷积层和 2 个全连接层组成。卷积层的卷积核个数分别为 16、 32、 64、 128,全连接层的神经元个数均为 4096。 损失函数(loss function)作为模型预测值与真实值差异程度的估量函数,决定了模型训练的收敛速度和最终效果。 Angle-Net 的损失函数采用L1范数函数,为防止过拟合,在损失函数的基础上加上正则化项,定义如\equref{eqnor}:
-\begin{equation}
-L=\frac{1}{N}\left(\Big|\theta'-\theta_0\Big|+\sum\limits_i^n\lambda\omega_i^2\right)
-\label{eqnor}
-\end{equation}
-其中,$\theta_0$为期望的抓取角度,$\lambda$为正则化项,$\omega_i$为模型权值参数。
-
-\subsubsection{四级标题示例}
-
-% 条标题
-\section{表格绘制示例}
-
-表格按规定为五号字,引用表格示例:\tabref{symbol}.
-
-% 第一列不用填写,自动编号的三线表
-% 设置表格第一列计数器归零
-\setcounter{rowno}{0}
-\begin{center}
-\renewcommand{\arraystretch}{1.25}
-\begin{table}[H]
-\centering %居中
-\setlength{\abovecaptionskip}{0pt}
-\setlength{\belowcaptionskip}{0pt}
-\caption{符号说明}\label{symbol}
-\begin{tabular}{>{\stepcounter{rowno}\therowno}ccl}
- \toprule[1.5pt]
-\multicolumn{1}{c}{序号}& \makebox[0.2\textwidth][c]{符号} & \makebox[0.4\textwidth][c]{意义} \\ \midrule
- &$CNCi\#$&编号为$i$的CNC, $i=1,2,\cdots,8$\\
- &$t_{mj}$ & RGV移动$j$个单位所需时间, $j=0,1,2,3$ \\
- &$t_{cnc}$ & CNC加工完成一道工序的物料所需时间 \\
- &$t_{cnc1}$ & CNC加工完成第一道工序所需时间 \\
- &$t_{cnc2}$ & CNC加工完成第二道工序所需时间 \\
-\bottomrule[1.5pt]
-\end{tabular}
-\end{table}
-\end{center}
-
-定义定理等环境示例:模板支持以下环境:definition、theorem、proposition、corollary、lemma、remark、exam、exer、note、proof、assumption、conclusion、solution,第二对\{\}内的内容为此定理的label,可以用此label引用,定理\ref{thm:sin}如下。
-\begin{theorem}{正弦定理}{thm:sin}
-\begin{equation}
-\frac{a}{\sin A}=\frac{b}{\sin B}=\frac{c}{\sin C}
-\end{equation}
-\vspace{0.01cm}
-\end{theorem}
-% 证明环境
-\begin{proof}
-以下是一段无意义文字:\lipsum[5]
-\end{proof}
-
-如果需要对公式的子公式进行编号,则使用\lstinline{subeqnarray}环境:
-\begin{lstlisting}
-\begin{subeqnarray}
-\label{eqw}
-\slabel{eq0}
-x & = & a \times b \\
-\slabel{eq1}
-& = & z + t\\
-\slabel{eq2}
-& = & z + t
-\end{subeqnarray}
-\end{lstlisting}
-上述代码输出如下:
-\begin{subeqnarray}
-\label{eqw}
-\slabel{eq0}
-x & = & a \times b \\
-\slabel{eq1}
-& = & z + t\\
-\slabel{eq2}
-& = & z + t
-\end{subeqnarray}
-
-\equref{eqw}中,\lstinline{eqw}为整个公式的标签,\lstinline{slabel}为子公式的标签。 \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/conclusion.tex b/macros/latex/contrib/hitszthesis/tex/conclusion.tex
deleted file mode 100644
index 937975925a..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/conclusion.tex
+++ /dev/null
@@ -1,7 +0,0 @@
-% !TEX root = ../main.tex
-
-% 结论
-\chapter*{结\quad 论}
-\addcontentsline{toc}{chapter}{结\quad 论}
-
-学位论文的结论作为论文正文的最后一章单独排写,但不加章标题序号。结论是对整个论文主要成果的总结。在结论中应明确指出本研究内容的创新性成果或创新点(含新见解、新观点),并指出今后进一步在本研究方向进行研究工作的展望与设想,上述各项用(1).(2). $\cdots$表述,不要将结论写成论文的摘要。结论字数一般在2000字以内。 \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/information.tex b/macros/latex/contrib/hitszthesis/tex/information.tex
deleted file mode 100644
index bbf854c59f..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/information.tex
+++ /dev/null
@@ -1,27 +0,0 @@
-% !TEX root = ../main.tex
-
-%TC:ignore
-
-% 论文标题
-\thesistitle{基于神经网络的机器人智能抓取研究}
-% 标题拆分为两行
-% 第一行标题
-\titleone{基于神经网络的}
-% 第二行标题
-\titletwo{机器人智能抓取研究}
-% 学校名称
-\schoolname{哈尔滨工业大学(深圳)}
-% 学院名称
-\departname{机电工程与自动化学院}
-% 专业
-\majorin{机械设计制造及其自动化}
-% 姓名
-\authorname{杨敬轩}
-% 学号
-\studentID{SZ160310217}
-% 答辩日期
-\dateinput{2020年6月7日}
-% 指导教师
-\instructor{XX 教授}
-
-%TC:endignore \ No newline at end of file
diff --git a/macros/latex/contrib/hitszthesis/tex/reference.tex b/macros/latex/contrib/hitszthesis/tex/reference.tex
deleted file mode 100644
index 2dded07576..0000000000
--- a/macros/latex/contrib/hitszthesis/tex/reference.tex
+++ /dev/null
@@ -1,80 +0,0 @@
-% !TEX root = ../main.tex
-
-% 参考文献
-% 文献个数小于99
-\begin{thebibliography}{99}
-\addcontentsline{toc}{chapter}{参考文献}
-
-% 每条参考文献均需用<\bibitem{}>引出,
-% 花括号里的内容为此条参考文献的标签label,
-% 可用<\upcite{}>和<\cite{}>引用。
-
-\bibitem{bibc1} 焦李成.神经网络系统理论[M].西安:西安电子科技大学出版社,1991.
-\bibitem{bibc2} 何玉彬,李新忠.神经网络控制及其应用[M].北京:科学出版社,2000.
-\bibitem{bibc3} McCulloch W S, Pitts W A. A logical calculus of the ideas immanent in nervous activity[J]. Bulletin of Mathematical Biophysics, 1943, 5: 115-133.
-\bibitem{bibc4} Hebb D O. The Organization of Behaviour [M]. New York, John Wiley\&Sons Inc., 1949.
-\bibitem{bibc5} Rosenblatt. The perception: a probabilistic model for information storage and organization in the brain [J]. Psychology Review, 1958, 65: 386-408.
-\bibitem{bibc6} Minsky M, Papert S. Perceptron [M]. Cambridge, MA: MIT Press, 1969.
-\bibitem{bibc7} Hopf\/ield J J. Neural networks and physical systems with emergent collective computational abilities[C]. Proceeding of the National Academy of Science. USA (Biophysics), 1982, 79: 2554-2558.
-\bibitem{bibc8} Hopf\/ield J J. Neurons with graded response have collective computational properties like those of two-state neurons[C]. Proceedins of the National Academy of Science, USA(Biophysics), 1984, 81:3088-3092.
-\bibitem{bibc9} Widrow B, McCool J, Ball M. The complex LMS algorithm [C]. Proc. IEEE, 1975, 63(4):719-720
-\bibitem{bibc10} Hirose A. Complex-valued neural networks: theories and applications [M]. World Scientif\/ic Series on Innovation Intelligence, vol 5, Singapore: World Scientif\/ic Publishing Co. Pte. Ltd. 2003
-
-\bibitem{bib1} 谢林江, 季桂树, 彭清, 等. 改进的卷积神经网络在行人检测中的应用[J]. 计算机科学与探索, 2018, 12(5):708-718.
-\bibitem{bib2}王耀玮, 唐伦, 刘云龙, 等. 基于多任务卷积神经网络的车辆多属性识别[J]. 计算机工程与应用, 2018, 54(8):21-27.
-\bibitem{bib3} Lenz I, Lee H, Saxena A. Deep learning for detecting robotic grasps[J]. The International Journal of Robotics Research, 2015, 34(4-5):705-724.
-\bibitem{bib4} Kumra S, Kanan C. Robotic grasp detection using deep convolutional neural networks[C]//2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2017: 769-776.
-\bibitem{bib5} Chu F J, Xu R, Vela P A. Real-world multiobject, multigrasp detection[J]. IEEE Robotics and Automation Letters, 2018, 3(4): 3355-3362.
-\bibitem{bib6} Robot Learning Lab: Learning to Grasp[EB/OL].(2009) [2019-03-12].
-\bibitem{bib7} Redmon J, Angelova A. Real-time grasp detection using convolutional neural networks[C]//2015 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2015: 1316-1322.
-\bibitem{bib8} Ni P, Zhang W, Bai W, et al. A New Approach Based on Two-stream CNNs for Novel Objects Grasping in Clutter[J]. Journal of Intelligent \& Robotic Systems, 2018(2):1-17.
-\bibitem{bib9} Krizhevsky A, Sutskever I, Hinton G E. Imagenet classif\/ication with deep convolutional neural networks[C]// Advances in neural information processing systems. 2012: 1097-1105.
-\bibitem{bib10} He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.
-
-\bibitem{bibb1} Dogar M, Hsiao K, Ciocarlie M, et al. Physics-based grasp planning through clutter[C]//Robotics: Science and Systems VIII. Cambridge, USA: MIT Press, 2012: 8pp.
-\bibitem{bibb2} Goldfeder C, Ciocarlie M, Dang H, et al. The Columbia grasp database[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2009: 1710-1716.
-\bibitem{bibb3} Weisz J, Allen P K. Pose error robust grasping from contact wrench space metrics[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2012: 557- 562.
-\bibitem{bibb4} Jiang Y, Moseson S, Saxena A. Eff\/icient grasping from RGB-D images: Learning using a new rectangle representation[C]// IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE,2011: 3304-3311.
-\bibitem{bibb5} Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504-507.
-
-\bibitem{bib11} Qiang Z, Li Z, Li J, et al. Vehicle color recognition using
-Multiple-Layer Feature Representations of lightweight convolutional neural network[J]. Signal Processing, 2018, 147: 146-153.
-
- \bibitem{bib:one} 马倩倩,李晓娟,施智平.轻量级卷积神经网络的机器人抓取检测研究[J/OL].计算机工程与应用:1-11[2019-04-09].
-
- \bibitem{bib12} Iandola F N, Han S, Moskewicz M W, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and<
-0.5 MB model size[J].2016.
-
- \bibitem{bib13} Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition, 2017: 4700-4708.
-
- \bibitem{bib14} Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]// Proceedings of the IEEE conference on computer vision and pat- tern recognition. 2016: 2818-2826.
- \bibitem{bib15} Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.
- \bibitem{bib16} He K, Sun J. Convolutional neural networks at con-strained time cost[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 5353-5360.
- \bibitem{bib17} Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. The Journal of Machine Learning Research, 2014, 15(1): 1929-1958.
-
-\bibitem{bibb6} 仲训杲,徐敏,仲训昱,等.基于多模特征深度学习的机器人抓取判别方法 [J].自动化学报,2016,42(7):1022- 1029.
-\bibitem{bibb7} Lenz I, Lee H, Saxena A. Deep learning for detecting robotic grasps[J]. International Journal of Robotics Research, 2015, 34(4/5): 705-724.
-\bibitem{bibb8} 杜学丹,蔡莹皓,鲁涛,等.一种基于深度学习的机械臂抓取方法 [J].机器人,2017,39(6):820-828,837.
-\bibitem{bibb9} Pinto L, Gupta A. Supersizing self-supervision: Learning to grasp from 50k tries and 700 robot hours[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2016: 3406-3413.
-\bibitem{bibb10} Guo D, Sun F C, Liu H P, et al. A hybrid deep architecture for robotic grasp detection[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2017: 1609-1614.
-\bibitem{bibb11} 刘义军.基于 FPGA 的线结构光视觉测量系统研究 [D]. 长 春:吉林大学,2017:23-49.
-
- \bibitem{bib:three} 夏晶,钱堃,马旭东,刘环.基于级联卷积神经网络的机器人平面抓取位姿快速检测[J].机器人,2018,40(06):794-802.
-
-\bibitem{bibb12} 邹媛媛,赵明扬,张雷.基于量块的线结构光视觉传感器直接标定方法 [J]. 中国激光,2014,41(11):189-194.
-\bibitem{bibb13} 卢津,孙惠斌,常智勇.新型正交消隐点的摄像机标定方法 [J]. 中国激光,2014,41(2):294-302.
-
-\bibitem{bibb14} Huang J, Rathod V, Sun C, et al. Speed/accuracy trade-offs for modern convolutional object detectors[A/OL]. (2017-04-25) [2017-12-07].
-\bibitem{bibb15} Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, USA: IEEE, 2014: 580-587.
-\bibitem{bibb16} Girshick R. Fast R-CNN[C]//IEEE International Conference on Computer Vision. Piscataway, USA: IEEE, 2015: 1440-1448.
-\bibitem{bibb17} Ren S Q, He K M, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[M]// Advances in Neural Information Processing Systems 28. Cam- bridge, USA: MIT Press, 2015: 91-99.
-\bibitem{bibb18} Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector[C]//European Conference on Computer Vision. Cham, Switzerland: Springer, 2016: 21-37.
-\bibitem{bibb19} Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, USA:IEEE, 2016: 779-788.
-\bibitem{bibb20} Szegedy C, Ioffe S, Vanhoucke V, et al. Inception-v4, Inception-ResNet and the impact of residual connections on learning [A/OL]. (2016-08-23) [2017-12-07].
-
-\bibitem{bib:two} 李传浩. 基于卷积神经网络的机器人自动抓取规划研究[D].哈尔滨工业大学,2018.
-
- \bibitem{bib:four} 胡琳,晁飞.基于双神经网络结构的发展型机器人3D抓取[J].电脑知识与技术,2012,8(12):2859-2862.
-\bibitem{bib:five} 刘晓玉. 复杂环境下基于神经网络的工件识别与机器人智能抓取[D].武汉科技大学,2009.
-\bibitem{bib:six} 游辉胜. 基于模糊神经网络的单目视觉伺服机器人智能抓取[D].武汉科技大学,2008.
-\end{thebibliography} \ No newline at end of file