Files
bachelor-thesis/thuthesis.cls
2026-05-12 10:45:51 +08:00

4265 lines
114 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
%%
%% This is file `thuthesis.cls',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% thuthesis.dtx (with options: `cls')
%%
%% This is a generated file.
%%
%% Copyright (C) 2005-2026 by Tsinghua University TUNA Association <tuna@tsinghua.edu.cn>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008 or later.
%%
%% To produce the documentation run the original source files ending with `.dtx'
%% through LaTeX.
%%
\NeedsTeXFormat{LaTeX2e}[2017/04/15]
\ProvidesClass{thuthesis}
[2026/05/10 7.7.0 Tsinghua University Thesis Template]
\newcommand\thu@error[1]{%
\ClassError{thuthesis}{#1}{}%
}
\newcommand\thu@warning[1]{%
\ClassWarning{thuthesis}{#1}%
}
\newcommand\thu@debug[1]{%
\typeout{Package thuthesis Info: #1}%
}
\newcommand\thu@patch@error[1]{%
\thu@error{Failed to patch command \protect#1}%
}
\newcommand\thu@deprecate[2]{%
\def\thu@@tmp{#2}%
\thu@warning{%
The #1 is deprecated%
\ifx\thu@@tmp\@empty\else
. Use #2 instead%
\fi
}%
}
\newcommand\thu@replace@with@error[1]{%
\expandafter\def\csname #1\endcsname{%
\thu@error{%
\expandafter\protect\csname #1\endcsname\space can only be used once.
\MessageBreak
Please remove the duplicate call%
}%
}%
}
\@ifl@t@r\fmtversion{2017/04/15}{}{
\thu@error{%
TeX Live 2017 or later version is required to compile this document%
}
}
\RequirePackage{iftex}
\ifXeTeX\else
\ifLuaTeX\else
\thu@error{XeLaTeX or LuaLaTeX is required to compile this document}
\fi
\fi
\InputIfFileExists{thuthesis-pdf-test-config.tex}{}{
\InputIfFileExists{thuthesis-log-test-config.tex}{}{}
}
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
\def\version{7.7.0}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=thu,
prefix=thu@,
setkeys=\kvsetkeys}
\let\thu@setup@hook\@empty
\newcommand\thusetup[1]{%
\let\thu@setup@hook\@empty
\kvsetkeys{thu}{#1}%
\thu@setup@hook
}
\newcommand\thu@define@key[1]{%
\kvsetkeys{thu@key}{#1}%
}
\kv@set@family@handler{thu@key}{%
\@namedef{thu@#1@@name}{#1}%
\def\thu@@default{}%
\def\thu@@choices{}%
\kv@define@key{thu@value}{name}{%
\@namedef{thu@#1@@name}{##1}%
}%
\@namedef{thu@#1@@check}{}%
\@namedef{thu@#1@@code}{}%
\kv@define@key{thu@value}{choices}{%
\def\thu@@choices{##1}%
\@namedef{thu@#1@@reset}{}%
\@namedef{thu@#1@@check}{%
\@ifundefined{%
ifthu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}%
}{%
\thu@error{Invalid value "#1 = \@nameuse{thu@\@nameuse{thu@#1@@name}}"}%
}%
\@nameuse{thu@#1@@reset}%
\@nameuse{thu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}true}%
}%
}%
\kv@define@key{thu@value}{default}{%
\def\thu@@default{##1}%
}%
\kvsetkeys{thu@value}{#2}%
\@namedef{thu@\@nameuse{thu@#1@@name}}{}%
\kv@set@family@handler{thu@choice}{%
\ifx\thu@@default\@empty
\def\thu@@default{##1}%
\fi
\expandafter\newif\csname ifthu@\@nameuse{thu@#1@@name}@##1\endcsname
\expandafter\g@addto@macro\csname thu@#1@@reset\endcsname{%
\@nameuse{thu@\@nameuse{thu@#1@@name}@##1false}%
}%
}%
\kvsetkeys@expandafter{thu@choice}{\thu@@choices}%
\expandafter\let\csname thu@\@nameuse{thu@#1@@name}\endcsname\thu@@default
\expandafter\ifx\csname thu@\@nameuse{thu@#1@@name}\endcsname\@empty\else
\@nameuse{thu@#1@@check}%
\fi
\kv@define@key{thu}{#1}{%
\@namedef{thu@\@nameuse{thu@#1@@name}}{##1}%
\@nameuse{thu@#1@@check}%
\@nameuse{thu@#1@@code}%
}%
}
\newcommand\thu@option@hook[2]{%
\expandafter\g@addto@macro\csname thu@#1@@code\endcsname{#2}%
}
\thu@define@key{
thesis-type = {
name = thesis@type,
choices = {
thesis,
proposal,
},
default = thesis,
},
degree = {
choices = {
bachelor,
master,
doctor,
postdoc,
},
default = doctor,
},
degree-type = {
choices = {
academic,
professional,
},
name = degree@type,
},
main-language = {
name = main@language,
choices = {
chinese,
english,
},
},
language = {
choices = {
chinese,
english,
},
},
system = {
choices = {
auto,
mac,
unix,
windows,
},
default = auto,
},
fontset = {
choices = {
auto,
windows,
mac,
ubuntu,
fandol,
none,
},
default = auto,
},
font = {
choices = {
auto,
times,
termes,
stix,
xits,
libertinus,
newcm,
lm,
newtx,
none,
},
default = auto,
},
cjk-font = {
name = cjk@font,
choices = {
auto,
windows,
windows-local,
mac,
mac-word,
noto,
fandol,
none,
},
default = auto,
},
windows-font-dir = {
name = windows@font@dir,
default = {.},
},
math-font = {
name = math@font,
choices = {
auto,
stix,
xits,
libertinus,
newcm,
lm,
newtx,
none,
},
default = auto,
},
math-style = {
name = math@style,
choices = {
GB,
ISO,
TeX,
},
},
uppercase-greek = {
name = uppercase@greek,
choices = {
italic,
upright,
},
},
less-than-or-equal = {
name = leq,
choices = {
slanted,
horizontal,
},
},
integral = {
choices = {
upright,
slanted,
},
},
integral-limits = {
name = integral@limits,
choices = {
true,
false,
},
},
partial = {
choices = {
upright,
italic,
},
},
math-ellipsis = {
name = math@ellipsis,
choices = {
centered,
lower,
AMS,
},
},
real-part = {
name = real@part,
choices = {
roman,
fraktur,
},
},
output = {
choices = {
print,
electronic,
},
default = print,
},
eqn-paren-style = {
name = eqn@paren@style,
choices = {
full,
half,
}
},
style-override = {
name = style@override,
choices = {
none,
schwarzman,
},
},
footnote-numbering = {
name = footnote@numbering,
choices = {
page,
chapter,
global,
},
},
footnote-style = {
name = footnote@style,
choices = {
circled,
plain,
},
},
figure-numbering = {
name = figure@numbering,
choices = {
chapter,
global,
},
},
table-numbering = {
name = table@numbering,
choices = {
chapter,
global,
},
},
equation-numbering = {
name = equation@numbering,
choices = {
chapter,
global,
},
},
}
\newif\ifthu@degree@graduate
\newcommand\thu@set@graduate{%
\thu@degree@graduatefalse
\ifthu@degree@doctor
\thu@degree@graduatetrue
\fi
\ifthu@degree@master
\thu@degree@graduatetrue
\fi
}
\thu@set@graduate
\thu@option@hook{degree}{%
\thu@set@graduate
}
\DeclareBoolOption[false]{openright}
\DeclareComplementaryOption{openany}{openright}
\DeclareBoolOption[true]{raggedbottom}
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
\ProcessKeyvalOptions*
\ifthu@openright
\PassOptionsToClass{openright}{book}
\else
\PassOptionsToClass{openany}{book}
\fi
\PassOptionsToPackage{no-math}{fontspec}
\ifthu@style@override@schwarzman
\thusetup{
footnote-numbering = global,
footnote-style = plain,
figure-numbering = global,
table-numbering = global,
equation-numbering = global,
}
\fi
\thu@option@hook{style-override}{\thu@error{%
The 'style-override' option is only valid in class options.%
}}%
\thu@option@hook{footnote-numbering}{\thu@error{%
The 'footnote-numbering' option is only valid in class options.%
}}%
\ifthu@footnote@numbering@page
\PassOptionsToPackage{perpage}{footmisc}%
\fi
\LoadClass[a4paper,UTF8,zihao=-4,scheme=plain,fontset=none]{ctexbook}[2017/04/01]
\RequirePackage{etoolbox}
\RequirePackage{filehook}
\RequirePackage{xparse}
\RequirePackage{geometry}%
\RequirePackage{fancyhdr}
\RequirePackage{titletoc}
\RequirePackage{notoccite}
\RequirePackage{amsmath}
\RequirePackage{graphicx}
\RequirePackage[labelformat=simple]{subcaption}
\RequirePackage{pdfpages}
\includepdfset{fitpaper=true}
\AtEndPreamble{
\ifx\tikzifexternalizing\@undefined\else
\tikzifexternalizing{
\renewcommand*\includepdf[2][]{}
}{}
\fi
}
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{environ}
\ifthu@raggedbottom
\RequirePackage[bottom,hang]{footmisc}
\raggedbottom
\else
\RequirePackage[hang]{footmisc}
\fi
\ifXeTeX
\RequirePackage{xeCJKfntef}
\else
\RequirePackage{ulem}
\fi
\RequirePackage{array}
\RequirePackage{booktabs}
\RequirePackage{url}
\AtEndPreamble{
\@ifpackageloaded{biblatex}{}{
\@ifpackageloaded{apacite}{}{
\RequirePackage{natbib}
}
}
}
\AtEndOfPackageFile*{natbib}{
\@ifpackageloaded{apacite}{}{
\RequirePackage{bibunits}
}
}
\newcommand\thu@package@conflict[2]{%
\AtEndOfPackageFile*{#1}{%
\AtBeginOfPackageFile*{#2}{%
\thu@error{The "#2" package is incompatible with "#1"}%
}%
}%
}
\thu@package@conflict{biblatex}{bibunits}
\thu@package@conflict{biblatex}{chapterbib}
\thu@package@conflict{biblatex}{cite}
\thu@package@conflict{biblatex}{multibib}
\thu@package@conflict{biblatex}{natbib}
\thu@package@conflict{bibunits}{biblatex}
\thu@package@conflict{bibunits}{chapterbib}
\thu@package@conflict{bibunits}{multibib}
\thu@package@conflict{unicode-math}{amscd}
\thu@package@conflict{unicode-math}{amsfonts}
\thu@package@conflict{unicode-math}{amssymb}
\thu@package@conflict{unicode-math}{bbm}
\thu@package@conflict{unicode-math}{bm}
\thu@package@conflict{unicode-math}{eucal}
\thu@package@conflict{unicode-math}{eufrak}
\thu@package@conflict{unicode-math}{mathrsfs}
\thu@package@conflict{unicode-math}{newtxmath}
\thu@package@conflict{unicode-math}{upgreek}
\thu@package@conflict{natbib}{biblatex}
\thu@package@conflict{natbib}{cite}
\thu@package@conflict{newtxmath}{amsfonts}
\thu@package@conflict{newtxmath}{amssymb}
\thu@package@conflict{newtxmath}{unicode-math}
\thu@package@conflict{newtxmath}{upgreek}
\AtBeginOfPackageFile*{amsthm}{
\@ifpackageloaded{newtxmath}{
\thu@error{The "amsthm" package should be loaded before setting "newtxmath"}
}{}
}%
\geometry{
paper = a4paper, % 210 * 297mm
marginparwidth = 2cm,
marginparsep = 0.5cm,
}
\newcommand\thu@set@geometry{%
\ifthu@degree@bachelor
\geometry{
margin = 3cm,
footskip = 1.5cm,
}%
\else
\geometry{
margin = 3cm,
headheight = 2.7cm,
headsep = 0.3cm,
footskip = 0.8cm,
}%
\fi
}
\thu@set@geometry
\thu@option@hook{degree}{\thu@set@geometry}
\thu@option@hook{output}{\thu@set@geometry}
\thusetup{main-language=\thu@language}%
\let\thu@main@language\thu@language
\thu@option@hook{language}{%
\ifx\@begindocumenthook\@undefined\else
\thusetup{main-language=\thu@language}%
\let\thu@main@language\thu@language
\fi
}
\newcommand\thu@reset@main@language{%
\thusetup{language = \thu@main@language}%
\let\thu@language\thu@main@language
}
\newcommand\thu@set@chapter@names{%
\ifthu@degree@bachelor
\def\thu@statement@name{声明}%
\else
\def\thu@statement@name{\hspace{1em}}%
\fi
\ifthu@main@language@chinese
\def\listfigurename{插图清单}%
\def\listtablename{附表清单}%
\def\thu@list@figure@table@name{插图和附表清单}%
\def\thu@list@algorithm@name{算法清单}%
\def\thu@denotation@name{符号和缩略语说明}%
\def\thu@comments@name{指导教师评语}%
\def\bibname{参考文献}%
\def\appendixname{附录}%
\def\indexname{索引}%
\def\thu@resolution@name{答辩委员会决议书}%
\ifthu@degree@bachelor
\def\contentsname{目录}%
\def\thu@acknowledgements@name{致谢}%
\def\listequationname{公式索引}%
\def\thu@resume@name{在学期间参加课题的研究成果}%
\else
\def\listequationname{公式清单}%
\def\thu@acknowledgements@name{\quad}%
\ifthu@degree@graduate
\def\contentsname{\quad}%
\def\thu@resume@name{个人简历、在学期间完成的相关学术成果}%
\else % degree = postdoc
\def\contentsname{\qquad}%
\def\thu@denotation@name{符号表}%
\def\thu@resume@name{个人简历、发表的学术论文与科研成果}%
\fi
\fi
\else
\ifthu@main@language@english
\def\thu@comments@name{Comments from Thesis Supervisor}%
\def\thu@resolution@name{Resolution of Thesis Defense Committee}%
\def\indexname{Index}%
\ifthu@degree@bachelor
\def\contentsname{CONTENTS}%
\def\listfigurename{FIGURES}%
\def\listtablename{TABLES}%
\def\thu@list@figure@table@name{FIGURES AND TABLES}%
\def\thu@list@algorithm@name{ALGORITHMS}%
\def\listequationname{EQUATIONS}%
\def\thu@denotation@name{ABBREVIATIONS}%
\def\bibname{REFERENCES}%
\def\appendixname{APPENDIX}%
\def\thu@acknowledgements@name{ACKNOWLEDGEMENTS}%
\def\thu@resume@name{PUBLICATIONS}%
\else
\def\contentsname{Table of Contents}%
\def\listfigurename{List of Figures}%
\def\listtablename{List of Tables}%
\def\thu@list@figure@table@name{List of Figures and Tables}%
\def\thu@list@algorithm@name{List of Algorithms}%
\def\listequationname{List of Equations}%
\def\thu@denotation@name{List of Symbols and Acronyms}%
\def\bibname{References}%
\def\appendixname{Appendix}%
\def\thu@acknowledgements@name{Acknowledgements}%
\def\thu@resume@name{Resume}%
\fi
\fi
\fi
}
\thu@set@chapter@names
\thu@option@hook{degree}{\thu@set@chapter@names}
\thu@option@hook{main-language}{\thu@set@chapter@names}
\newcommand\thu@set@names{%
\ifthu@language@chinese
\ctexset{
figurename = 图,
tablename = 表,
}%
\def\thu@algorithm@name{算法}%
\def\thu@equation@name{公式}%
\def\thu@assumption@name{假设}%
\def\thu@definition@name{定义}%
\def\thu@proposition@name{命题}%
\def\thu@lemma@name{引理}%
\def\thu@theorem@name{定理}%
\def\thu@axiom@name{公理}%
\def\thu@corollary@name{推论}%
\def\thu@exercise@name{练习}%
\def\thu@example@name{}%
\def\thu@remark@name{注释}%
\def\thu@problem@name{问题}%
\def\thu@conjecture@name{猜想}%
\def\thu@proof@name{证明}%
\def\thu@theorem@separator{}%
\else
\ifthu@language@english
\ctexset{
figurename = {Figure},
tablename = {Table},
}%
\def\thu@algorithm@name{Algorithm}%
\def\thu@equation@name{Equation}%
\def\thu@assumption@name{Assumption}%
\def\thu@definition@name{Definition}%
\def\thu@proposition@name{Proposition}%
\def\thu@lemma@name{Lemma}%
\def\thu@theorem@name{Theorem}%
\def\thu@axiom@name{Axiom}%
\def\thu@corollary@name{Corollary}%
\def\thu@exercise@name{Exercise}%
\def\thu@example@name{Example}%
\def\thu@remark@name{Remark}%
\def\thu@problem@name{Problem}%
\def\thu@conjecture@name{Conjecture}%
\def\thu@proof@name{Proof}%
\def\thu@theorem@separator{: }%
\fi
\fi
}
\thu@set@names
\thu@option@hook{language}{\thu@set@names}
\ifLuaTeX
% ctex 将带圈数字 U+2460U+2473 归入字符范围 3ALchar这里改回范围 6JAchar
\ltjdefcharrange{6}{"2460-"2473, "2605}
\else
\ifXeTeX
\xeCJKDeclareCharClass{CJK}{"2460 -> "2473, "2605}
\fi
\fi
\newcommand\thu@set@punctuations{%
\ifthu@language@chinese
\ifLuaTeX
\ltjsetparameter{jacharrange={+9}}
\else
\ifXeTeX
\xeCJKDeclareCharClass{FullLeft}{"2018, "201C}%
\xeCJKDeclareCharClass{FullRight}{
"00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
}%
\fi
\fi
\else
\ifthu@language@english
\ifLuaTeX
\ltjsetparameter{jacharrange={-9}}
\else
\ifXeTeX
\xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}%
\xeCJKDeclareCharClass{HalfRight}{
"00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A,
}%
\fi
\fi
\fi
\fi
}
\thu@set@punctuations
\thu@option@hook{language}{\thu@set@punctuations}
\renewcommand\normalsize{%
\@setfontsize\normalsize{12bp}{20bp}%
\abovedisplayskip 6bp%
\abovedisplayshortskip 6bp%
\belowdisplayshortskip 6bp%
\belowdisplayskip \abovedisplayskip
}
\normalsize
\ifx\MakeRobust\@undefined \else
\MakeRobust\normalsize
\fi
\def\thu@def@fontsize#1#2{%
\expandafter\newcommand\csname #1\endcsname[1][1.3]{%
\fontsize{#2}{##1\dimexpr #2}\selectfont}}
\thu@def@fontsize{chuhao}{42bp}
\thu@def@fontsize{xiaochu}{36bp}
\thu@def@fontsize{yihao}{26bp}
\thu@def@fontsize{xiaoyi}{24bp}
\thu@def@fontsize{erhao}{22bp}
\thu@def@fontsize{xiaoer}{18bp}
\thu@def@fontsize{sanhao}{16bp}
\thu@def@fontsize{xiaosan}{15bp}
\thu@def@fontsize{sihao}{14bp}
\thu@def@fontsize{xiaosi}{12bp}
\thu@def@fontsize{wuhao}{10.5bp}
\thu@def@fontsize{xiaowu}{9bp}
\thu@def@fontsize{liuhao}{7.5bp}
\thu@def@fontsize{xiaoliu}{6.5bp}
\thu@def@fontsize{qihao}{5.5bp}
\thu@def@fontsize{bahao}{5bp}
\ifthu@system@auto
\IfFileExists{/System/Library/Fonts/Menlo.ttc}{
\thusetup{system = mac}
}{
\IfFileExists{/dev/null}{
\IfFileExists{null:}{
\thusetup{system = windows}
}{
\thusetup{system = unix}
}
}{
\thusetup{system = windows}
}
}
\thu@debug{Detected system: \thu@system}
\fi
\newcommand\thu@mac@word@font@dir{%
/Applications/Microsoft Word.app/Contents/Resources/DFonts%
}
\ifthu@fontset@auto
\ifthu@system@windows
\thusetup{fontset = windows}
\else
\IfFontExistsTF{SimSun}{
\thusetup{fontset = windows}
}{
\IfFileExists{\thu@windows@font@dir/Simsun.ttc}{
\thusetup{fontset = windows, cjk-font = windows-local}
}{
\IfFileExists{\thu@mac@word@font@dir/Simsun.ttc}{
\thusetup{fontset = windows, cjk-font = mac-word}
}{
\ifthu@system@mac
\thusetup{fontset = mac}
\else
\IfFontExistsTF{Noto Serif CJK SC}{
\thusetup{fontset = ubuntu}
}{
\thusetup{fontset = fandol}
}
\fi
}
}
}
\fi
\thu@debug{Detected fontset: \thu@fontset}
\fi
\newcommand\thu@set@font{%
\@nameuse{thu@set@font@\thu@font}%
}
\thu@option@hook{font}{\thu@set@font}
\newcommand\thu@set@font@auto{%
\ifthu@font@auto
\ifthu@fontset@windows
\thusetup{font=times}%
\else
\ifthu@fontset@mac
\thusetup{font=times}%
\else
\thusetup{font=termes}%
\fi
\fi
\fi
}
\thu@option@hook{math-font}{\g@addto@macro\thu@setup@hook{\thu@set@font@auto}}
\AtBeginOfPackageFile*{siunitx}{\thu@set@font@auto}
\AtEndPreamble{\thu@set@font@auto}
\newcommand\thu@set@font@times{%
\setmainfont{Times New Roman}%
\setsansfont{Arial}%
\ifthu@fontset@mac
\setmonofont{Menlo}[Scale = MatchLowercase]%
\else
\setmonofont{Courier New}[Scale = MatchLowercase]%
\fi
}
\newcommand\thu@set@font@termes{%
\setmainfont{texgyretermes}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]%
\thu@set@texgyre@sans@mono
}
\newcommand\thu@set@texgyre@sans@mono{%
\setsansfont{texgyreheros}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]%
\setmonofont{texgyrecursor}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
Scale = MatchLowercase,
Ligatures = CommonOff,
]%
}
\let\thu@font@family@stix\@empty
\newcommand\thu@set@stix@names{%
\ifx\thu@font@family@stix\@empty
\IfFontExistsTF{STIXTwoText-Regular.otf}{%
\gdef\thu@font@family@stix{STIXTwoText}%
\gdef\thu@font@name@stix@math{STIXTwoMath-Regular}%
}{%
\gdef\thu@font@family@stix{STIX2Text}%
\gdef\thu@font@name@stix@math{STIX2Math}%
}%
\fi
}
\newcommand\thu@set@font@stix{%
\thu@set@stix@names
\setmainfont{\thu@font@family@stix}[
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = *-Italic,
BoldItalicFont = *-BoldItalic,
]%
\thu@set@texgyre@sans@mono
}
\let\thu@font@family@xits\@empty
\newcommand\thu@set@xits@names{%
\ifx\thu@font@family@xits\@empty
\IfFontExistsTF{XITSMath-Regular.otf}{%
\gdef\thu@font@family@xits{XITS}%
\gdef\thu@font@style@xits@rm{Regular}%
\gdef\thu@font@style@xits@bf{Bold}%
\gdef\thu@font@style@xits@it{Italic}%
\gdef\thu@font@style@xits@bfit{BoldItalic}%
\gdef\thu@font@name@xits@math{XITSMath-Regular}%
}{%
\gdef\thu@font@family@xits{xits}%
\gdef\thu@font@style@xits@rm{regular}%
\gdef\thu@font@style@xits@bf{bold}%
\gdef\thu@font@style@xits@it{italic}%
\gdef\thu@font@style@xits@bfit{bolditalic}%
\gdef\thu@font@name@xits@math{xits-math}%
}%
\fi
}
\newcommand\thu@set@font@xits{%
\thu@set@xits@names
\setmainfont{\thu@font@family@xits}[
Extension = .otf,
UprightFont = *-\thu@font@style@xits@rm,
BoldFont = *-\thu@font@style@xits@bf,
ItalicFont = *-\thu@font@style@xits@it,
BoldItalicFont = *-\thu@font@style@xits@bfit,
]%
\thu@set@texgyre@sans@mono
}
\let\thu@font@family@libertinus\@empty
\newcommand\thu@set@libertinus@names{%
\ifx\thu@font@family@libertinus\@empty
\IfFontExistsTF{LibertinusSerif-Regular.otf}{%
\gdef\thu@font@family@libertinus@serif{LibertinusSerif}%
\gdef\thu@font@family@libertinus@sans{LibertinusSans}%
\gdef\thu@font@name@libertinus@math{LibertinusMath-Regular}%
\gdef\thu@font@style@libertinus@rm{Regular}%
\gdef\thu@font@style@libertinus@bf{Bold}%
\gdef\thu@font@style@libertinus@it{Italic}%
\gdef\thu@font@style@libertinus@bfit{BoldItalic}%
}{%
\gdef\thu@font@family@libertinus@serif{libertinusserif}%
\gdef\thu@font@family@libertinus@sans{libertinussans}%
\gdef\thu@font@name@libertinus@math{libertinusmath-regular}%
\gdef\thu@font@style@libertinus@rm{regular}%
\gdef\thu@font@style@libertinus@bf{bold}%
\gdef\thu@font@style@libertinus@it{italic}%
\gdef\thu@font@style@libertinus@bfit{bolditalic}%
}%
\fi
}
\newcommand\thu@set@font@libertinus{%
\thu@set@libertinus@names
\setmainfont{\thu@font@family@libertinus@serif}[
Extension = .otf,
UprightFont = *-\thu@font@style@libertinus@rm,
BoldFont = *-\thu@font@style@libertinus@bf,
ItalicFont = *-\thu@font@style@libertinus@it,
BoldItalicFont = *-\thu@font@style@libertinus@bfit,
]%
\setsansfont{\thu@font@family@libertinus@sans}[
Extension = .otf,
UprightFont = *-\thu@font@style@libertinus@rm,
BoldFont = *-\thu@font@style@libertinus@bf,
ItalicFont = *-\thu@font@style@libertinus@it,
]%
\setmonofont{lmmonolt10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-oblique,
BoldItalicFont = *-boldoblique,
]%
}
\newcommand\thu@set@font@newcm{%
\setmainfont{NewCM10}[
Extension = .otf,
UprightFont = *-Book,
BoldFont = *-Bold,
ItalicFont = *-BookItalic,
BoldItalicFont = *-BoldItalic,
]%
\setsansfont{NewCMSans10}[
Extension = .otf,
UprightFont = *-Book,
BoldFont = *-Bold,
ItalicFont = *-BookOblique,
BoldItalicFont = *-BoldOblique,
]%
\setmonofont{NewCMMono10}[
Extension = .otf,
UprightFont = *-Book,
ItalicFont = *-BookItalic,
BoldFont = *-Bold,
BoldItalicFont = *-BoldOblique,
]%
}
\newcommand\thu@set@font@lm{%
\setmainfont{lmroman10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]%
\setsansfont{lmsans10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-oblique,
BoldItalicFont = *-boldoblique,
]%
\setmonofont{lmmonolt10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-oblique,
BoldItalicFont = *-boldoblique,
]%
}
\newcommand\thu@set@font@newtx{%
\RequirePackage{newtxtext}%
}
\ifthu@cjk@font@auto
\ifthu@fontset@mac
\thusetup{cjk-font = mac}
\else
\ifthu@fontset@windows
\IfFontExistsTF{SimSun}{
\thusetup{cjk-font = windows}
}{
\IfFileExists{\thu@windows@font@dir/Simsun.ttc}{
\thusetup{cjk-font = windows-local}
}{
\IfFileExists{\thu@mac@word@font@dir/Simsun.ttc}{
\thusetup{cjk-font = mac-word}
}{
\thu@error{Cannot find "SimSun" font}
}
}
}
\else
\ifthu@fontset@ubuntu
\thusetup{cjk-font = noto}
\else
\thusetup{cjk-font = fandol}
\fi
\fi
\fi
\thu@debug{Detected CJK font: \thu@cjk@font}
\fi
\newcommand\thu@set@cjk@font@windows{%
\setCJKmainfont{SimSun}[
AutoFakeBold = 3,
ItalicFont = KaiTi,
]%
\setCJKsansfont{SimHei}[AutoFakeBold = 3]%
\setCJKmonofont{FangSong}%
\setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold = 3]%
\setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold = 3]%
\setCJKfamilyfont{zhkai}{KaiTi}%
\setCJKfamilyfont{zhfs}{FangSong}%
}
\@namedef{thu@set@cjk@font@windows-local}{%
\IfFileExists{\thu@windows@font@dir/Kaiti.ttf}{
\setCJKmainfont{SimSun}[%
Path = \thu@windows@font@dir/,
Extension = .ttc,
AutoFakeBold = 3,
ItalicFont = Kaiti,
ItalicFeatures = {Extension = .ttf},
]%
\setCJKmonofont{Fangsong}[
Path = \thu@windows@font@dir/,
Extension = .ttf,
]%
\setCJKfamilyfont{zhkai}{Kaiti}[
Path = \thu@windows@font@dir/,
Extension = .ttf,
]%
\setCJKfamilyfont{zhfs}{Fangsong}[
Path = \thu@windows@font@dir/,
Extension = .ttf,
]%
}{
\setCJKmainfont{SimSun}[%
Path = \thu@windows@font@dir/,
Extension = .ttc,
AutoFakeBold = 3,
ItalicFont = Simkai,
ItalicFeatures = {Extension = .ttf},
]%
\setCJKmonofont{Simfang}[
Path = \thu@windows@font@dir/,
Extension = .ttf,
]%
\setCJKfamilyfont{zhkai}{Simkai}[
Path = \thu@windows@font@dir/,
Extension = .ttf,
]%
\setCJKfamilyfont{zhfs}{Simfang}[
Path = \thu@windows@font@dir/,
Extension = .ttf,
]%
}
\setCJKsansfont{SimHei}[%
Path = \thu@windows@font@dir/,
Extension = .ttf,
AutoFakeBold = 3,
]%
\setCJKfamilyfont{zhsong}{SimSun}[%
Path = \thu@windows@font@dir/,
Extension = .ttc,
AutoFakeBold = 3,
]%
\setCJKfamilyfont{zhhei}{SimHei}[%
Path = \thu@windows@font@dir/,
Extension = .ttf,
AutoFakeBold = 3,
]%
}
\@namedef{thu@set@cjk@font@mac-word}{%
\let\thu@windows@font@dir\thu@mac@word@font@dir
\@nameuse{thu@set@cjk@font@windows-local}%
}
\newcommand\thu@set@cjk@font@mac{%
\defaultCJKfontfeatures{}%
\setCJKmainfont{Songti SC}[
UprightFont = * Light,
BoldFont = * Bold,
ItalicFont = Kaiti SC Regular,
BoldItalicFont = Kaiti SC Bold,
]%
\setCJKsansfont{Heiti SC}[
UprightFont = * Light,
BoldFont = * Medium,
]%
\setCJKmonofont{STFangsong}
\setCJKfamilyfont{zhsong}{Songti SC}[
UprightFont = * Light,
BoldFont = * Bold,
]%
\setCJKfamilyfont{zhhei}{Heiti SC}[
UprightFont = * Light,
BoldFont = * Medium,
]%
\setCJKfamilyfont{zhfs}{STFangsong}%
\setCJKfamilyfont{zhkai}{Kaiti SC}[
UprightFont = * Regular,
BoldFont = * Bold,
]%
\setCJKfamilyfont{zhli}{Baoli SC}%
\setCJKfamilyfont{zhyuan}{Yuanyi SC}[
UprightFont = * Light,
BoldFont = * Bold,
]%
}
\newcommand\thu@set@cjk@font@noto{%
\defaultCJKfontfeatures{}%
\setCJKmainfont{Noto Serif CJK SC}[
UprightFont = * Light,
BoldFont = * Bold,
ItalicFont = FandolKai-Regular,
ItalicFeatures = {Extension = .otf},
Script = CJK,
]%
\setCJKsansfont{Noto Sans CJK SC}[
BoldFont = * Medium,
Script = CJK,
]%
\setCJKmonofont{Noto Sans Mono CJK SC}[
Script = CJK,
]%
\setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[
UprightFont = * Light,
UprightFont = * Bold,
Script = CJK,
]%
\setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[
BoldFont = * Medium,
Script = CJK,
]%
\setCJKfamilyfont{zhfs}{FandolFang}[
Extension = .otf,
UprightFont = *-Regular,
]%
\setCJKfamilyfont{zhkai}{FandolKai}[
Extension = .otf,
UprightFont = *-Regular,
]%
}
\newcommand\thu@set@cjk@font@fandol{%
\defaultCJKfontfeatures{}%
\setCJKmainfont{FandolSong}[
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
ItalicFont = FandolKai-Regular,
ItalicFeatures = {Extension = .otf},
]%
\setCJKsansfont{FandolHei}[
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
]%
\setCJKmonofont{FandolFang}[
Extension = .otf,
UprightFont = *-Regular,
]%
\setCJKfamilyfont{zhsong}{FandolSong}[
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
]%
\setCJKfamilyfont{zhhei}{FandolHei}[
Extension = .otf,
UprightFont = *-Regular,
BoldFont = *-Bold,
]%
\setCJKfamilyfont{zhfs}{FandolFang}[
Extension = .otf,
UprightFont = *-Regular,
]%
\setCJKfamilyfont{zhkai}{FandolKai}[
Extension = .otf,
UprightFont = *-Regular,
]%
}
\ifthu@cjk@font@none\else
\providecommand\songti{\CJKfamily{zhsong}}
\providecommand\heiti{\CJKfamily{zhhei}}
\providecommand\fangsong{\CJKfamily{zhfs}}
\providecommand\kaishu{\CJKfamily{zhkai}}
\fi
\newcommand\thu@set@cjk@font{%
\@nameuse{thu@set@cjk@font@\thu@cjk@font}%
}
\thu@set@cjk@font
\thu@option@hook{cjk-font}{\thu@set@cjk@font}
\newcommand\thu@set@math@style{%
\ifthu@math@style@TeX
\thusetup{
uppercase-greek = upright,
less-than-or-equal = horizontal,
integral = slanted,
integral-limits = false,
partial = italic,
math-ellipsis = AMS,
real-part = fraktur,
}%
\else
\thusetup{
uppercase-greek = italic,
integral = upright,
partial = upright,
real-part = roman,
}%
\ifthu@math@style@ISO
\thusetup{
less-than-or-equal = horizontal,
integral-limits = true,
math-ellipsis = lower,
}%
\else
\ifthu@math@style@GB
\thusetup{
less-than-or-equal = slanted,
integral-limits = false,
math-ellipsis = centered,
}%
\fi
\fi
\fi
}
\ifthu@main@language@chinese
\thusetup{math-style=GB}%
\else
\thusetup{math-style=TeX}%
\fi
\thu@set@math@style
\thu@option@hook{math-style}{\thu@set@math@style}
\thu@option@hook{main-language}{%
\ifthu@main@language@chinese
\thusetup{math-style=GB}%
\else
\thusetup{math-style=TeX}%
\fi
}
\newcommand\thu@set@unimath@leq{%
\ifthu@leq@horizontal
\ifx\@begindocumenthook\@undefined
\let\le\thu@save@leq
\let\ge\thu@save@geq
\let\leq\thu@save@leq
\let\geq\thu@save@geq
\else
\AtBeginDocument{%
\let\le\thu@save@leq
\let\ge\thu@save@geq
\let\leq\thu@save@leq
\let\geq\thu@save@geq
}%
\fi
\else
\ifthu@leq@slanted
\ifx\@begindocumenthook\@undefined
\let\le\leqslant
\let\ge\geqslant
\let\leq\leqslant
\let\geq\geqslant
\else
\AtBeginDocument{%
\let\le\leqslant
\let\ge\geqslant
\let\leq\leqslant
\let\geq\geqslant
}%
\fi
\fi
\fi
}
\newcommand\thu@set@unimath@integral@limits{%
\ifthu@integral@limits@true
\removenolimits{%
\int\iint\iiint\iiiint\oint\oiint\oiiint
\intclockwise\varointclockwise\ointctrclockwise\sumint
\intbar\intBar\fint\cirfnint\awint\rppolint
\scpolint\npolint\pointint\sqint\intlarhk\intx
\intcap\intcup\upint\lowint
}%
\else
\addnolimits{%
\int\iint\iiint\iiiint\oint\oiint\oiiint
\intclockwise\varointclockwise\ointctrclockwise\sumint
\intbar\intBar\fint\cirfnint\awint\rppolint
\scpolint\npolint\pointint\sqint\intlarhk\intx
\intcap\intcup\upint\lowint
}%
\fi
}
\newcommand\thu@set@unimath@ellipsis{%
\ifthu@math@ellipsis@centered
\DeclareRobustCommand\mathellipsis{\mathinner{\unicodecdots}}%
\else
\DeclareRobustCommand\mathellipsis{\mathinner{\unicodeellipsis}}%
\fi
}
\newcommand\thu@set@unimath@real@part{%
\ifthu@real@part@roman
\AtBeginDocument{%
\def\Re{\operatorname{Re}}%
\def\Im{\operatorname{Im}}%
}%
\else
\AtBeginDocument{%
\let\Re\thu@save@Re
\let\Im\thu@save@Im
}%
\fi
}
\newcommand\thu@set@unimath@style{%
\ifthu@uppercase@greek@upright
\unimathsetup{math-style = TeX}%
\else
\ifthu@uppercase@greek@italic
\unimathsetup{math-style = ISO}%
\fi
\fi
\ifthu@math@style@TeX
\unimathsetup{bold-style = TeX}%
\else
\unimathsetup{bold-style = ISO}%
\fi
\thu@set@unimath@leq
\thu@set@unimath@integral@limits
\ifthu@partial@upright
\unimathsetup{partial = upright}%
\else
\ifthu@partial@italic
\unimathsetup{partial = italic}%
\fi
\fi
\thu@set@unimath@ellipsis
\thu@set@unimath@real@part
}
\newcommand\thu@qed{\rule{1ex}{1ex}}
\newcommand\thu@load@unimath{%
\@ifpackageloaded{unicode-math}{}{%
\RequirePackage{unicode-math}%
\AtBeginDocument{%
\let\thu@save@leq\leq
\let\thu@save@geq\geq
\let\thu@save@Re\Re
\let\thu@save@Im\Im
}%
\DeclareRobustCommand\bm[1]{{\symbfit{##1}}}%
\DeclareRobustCommand\boldsymbol[1]{{\symbfit{##1}}}%
\newcommand\square{\mdlgwhtsquare}%
\newcommand\blacksquare{\mdlgblksquare}%
\AtBeginDocument{%
\renewcommand\checkmark{\ensuremath{\symbol{"2713}}}%
}%
\renewcommand\thu@qed{\ensuremath{\QED}}%
}%
}
\newcommand\thu@set@math@font@stix{%
\thu@set@stix@names
\setmathfont{\thu@font@name@stix@math}[
Extension = .otf,
Scale = MatchLowercase,
StylisticSet = \thu@xits@integral@stylistic@set,
]%
\setmathfont{\thu@font@name@stix@math}[
Extension = .otf,
Scale = MatchLowercase,
StylisticSet = 1,
range = {scr,bfscr},
]%
}
\newcommand\thu@xits@integral@stylistic@set{%
\ifthu@integral@upright
8%
\fi
}
\newcommand\thu@set@math@font@xits{%
\thu@set@xits@names
\setmathfont{\thu@font@name@xits@math}[
Extension = .otf,
StylisticSet = \thu@xits@integral@stylistic@set,
]%
\setmathfont{\thu@font@name@xits@math}[
Extension = .otf,
StylisticSet = 1,
range = {cal,bfcal},
]%
}
\newcommand\thu@libertinus@integral@stylistic@set{%
\ifthu@integral@slanted
8%
\fi
}
\newcommand\thu@set@math@font@libertinus{%
\thu@set@libertinus@names
\setmathfont{\thu@font@name@libertinus@math}[
Extension = .otf,
StylisticSet = \thu@libertinus@integral@stylistic@set,
]%
}
\newcommand\thu@newcm@integral@stylistic@set{%
\ifthu@integral@upright
2%
\fi
}
\newcommand\thu@set@math@font@newcm{%
\setmathfont{NewCMMath-Book}[
Extension = .otf,
StylisticSet = \thu@newcm@integral@stylistic@set,
]%
\setmathfont{NewCMMath-Book}[
Extension = .otf,
StylisticSet = 1,
range = {scr,bfscr},
]%
\setmathrm{NewCM10}[
Extension = .otf,
UprightFont = *-Book,
BoldFont = *-Bold,
ItalicFont = *-BookItalic,
BoldItalicFont = *-BoldItalic,
]%
\setmathsf{NewCMSans10}[
Extension = .otf,
UprightFont = *-Book,
BoldFont = *-Bold,
ItalicFont = *-BookOblique,
BoldItalicFont = *-BoldOblique,
]%
\setmathtt{NewCMMono10}[
Extension = .otf,
UprightFont = *-Book,
ItalicFont = *-BookItalic,
BoldFont = *-Bold,
BoldItalicFont = *-BoldOblique,
]%
}
\newcommand\thu@set@math@font@lm{%
\setmathfont{latinmodern-math}[Extension=.otf]%
\setmathrm{lmroman10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-italic,
BoldItalicFont = *-bolditalic,
]%
\setmathsf{lmsans10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-oblique,
BoldItalicFont = *-boldoblique,
]%
\setmathtt{lmmonolt10}[
Extension = .otf,
UprightFont = *-regular,
BoldFont = *-bold,
ItalicFont = *-oblique,
BoldItalicFont = *-boldoblique,
]%
}
\newcommand\thu@set@math@font@newtx{%
\ifthu@font@newtx\else
\let\thu@save@encodingdefault\encodingdefault
\let\thu@save@rmdefault\rmdefault
\let\thu@save@sfdefault\sfdefault
\let\thu@save@ttdefault\ttdefault
\RequirePackage[T1]{fontenc}%
\renewcommand{\rmdefault}{ntxtlf}%
\renewcommand{\sfdefault}{qhv}%
\renewcommand{\ttdefault}{ntxtt}%
\fi
\ifthu@uppercase@greek@italic
\PassOptionsToPackage{slantedGreek}{newtxmath}%
\fi
\ifthu@integral@upright
\PassOptionsToPackage{upint}{newtxmath}%
\fi
\RequirePackage{newtxmath}%
\let\thu@save@leq\leq
\let\thu@save@geq\geq
\ifthu@leq@slanted
\let\le\leqslant
\let\ge\geqslant
\let\leq\leqslant
\let\geq\geqslant
\fi
\ifthu@integral@limits@true
\let\ilimits@\displaylimits
\fi
\let\thu@save@partial\partial
\ifthu@partial@upright
\let\partial\uppartial
\fi
\ifthu@math@ellipsis@centered
\DeclareRobustCommand\mathellipsis{\mathinner{\cdotp\cdotp\cdotp}}%
\else
\DeclareRobustCommand\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}%
\fi
\let\thu@save@Re\Re
\let\thu@save@Im\Im
\ifthu@real@part@roman
\def\Re{\operatorname{Re}}%
\def\Im{\operatorname{Im}}%
\fi
\RequirePackage{bm}%
\ifthu@font@newtx\else
\let\encodingdefault\thu@save@encodingdefault
\let\rmdefault\thu@save@rmdefault
\let\sfdefault\thu@save@sfdefault
\let\ttdefault\thu@save@ttdefault
\fi
\DeclareRobustCommand\symup[1]{{\mathrm{##1}}}%
\DeclareRobustCommand\symbf[1]{{\bm{##1}}}%
\DeclareRobustCommand\symbfsf[1]{{\bm{\mathsf{##1}}}}%
\let\increment\upDelta%
\renewcommand\thu@qed{\openbox}%
}
\newcommand\thu@set@math@font{%
\ifthu@math@font@none\else
\ifthu@math@font@newtx
\thu@set@math@font@newtx
\else
\thu@load@unimath
\thu@set@unimath@style
\@nameuse{thu@set@math@font@\thu@math@font}%
\fi
\fi
}
\thu@option@hook{math-font}{\g@addto@macro\thu@setup@hook{\thu@set@math@font}}
\newcommand\thu@set@math@font@auto{%
\ifthu@math@font@auto
\thusetup{math-font=xits}%
\fi
}
\AtBeginOfPackageFile*{siunitx}{\thu@set@math@font@auto}
\AtEndPreamble{\thu@set@math@font@auto}
\def\cleardoublepage{%
\clearpage
\if@twoside
\ifthu@output@print
\ifodd\c@page
\else
\thispagestyle{empty}%
\hbox{}%
\newpage
\if@twocolumn
\hbox{}\newpage
\fi
\fi
\fi
\fi
}
\renewcommand\frontmatter{%
\cleardoublepage
\@mainmatterfalse
\pagenumbering{Roman}%
}
\renewcommand\mainmatter{%
\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}%
}
\renewcommand\backmatter{%
\clearpage
\@mainmatterfalse
\thusetup{toc-depth = 0}%
}
\pagestyle{fancy}
\fancypagestyle{plain}{%
\fancyhf{}%
\renewcommand\footrulewidth{0pt}%
\ifthu@degree@bachelor
\renewcommand\headrulewidth{0pt}%
\fancyfoot[C]{
\ifthu@main@language@chinese
\fontsize{10.5bp}{12.075bp}\selectfont
\else
\normalsize
\fi
\thepage
}%
\let\@mkboth\@gobbletwo
\let\chaptermark\@gobble
\else
\renewcommand\headrulewidth{0.75bp}%
\fancyhead[C]{%
\wuhao
\ifthu@main@language@chinese
\leftmark
\else
\MakeUppercase{\leftmark}%
\fi
}%
\fancyfoot[C]{\wuhao\thepage}%
\let\@mkboth\markboth
\def\chaptermark##1{%
\markboth{%
\CTEXifname{%
\CTEXthechapter
\ifthu@main@language@chinese
\quad
\else
\space
\fi
}{}##1%
}{}%
}%
\fi
\let\sectionmark\@gobble
}
\pagestyle{plain}
\def\ps@chapter{}
\ctexset{chapter/pagestyle = chapter}
\ctexset{%
punct=quanjiao,
}
\newcommand\thu@set@indent{%
\ifthu@main@language@chinese
\ctexset{autoindent=2}%
\else
\ifthu@degree@bachelor
\ctexset{autoindent=0.8cm}%
\else
\ctexset{autoindent=0.74cm}%
\fi
\fi
}
\thu@set@indent
\thu@option@hook{degree}{\thu@set@indent}
\thu@option@hook{main-language}{\thu@set@indent}
\urlstyle{same}
\g@addto@macro\UrlBreaks{%
\do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M
\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z
\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m
\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
}
\Urlmuskip=0mu plus 0.1mu
\partopsep=\z@skip
\def\@listi{\leftmargin\leftmargini
\parsep \z@skip
\topsep \z@skip
\itemsep\z@skip}
\let\@listI\@listi
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep \z@skip
\parsep \z@skip
\itemsep \z@skip}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep \z@skip
\parsep \z@skip
\partopsep \z@skip
\itemsep \z@skip}
\setlist{nosep}
\interfootnotelinepenalty=10000
\ifthu@footnote@numbering@global
\@removefromreset{footnote}{chapter}%
\fi
\newcommand\thu@circled[1]{%
\ifnum#1 >10\relax
\thu@warning{%
Too many footnotes in this page.
Keep footnote less than 10%
}%
\fi
{\symbol{\the\numexpr#1+"245F\relax}}%
}
\ifthu@footnote@style@circled
\renewcommand{\thefootnote}{\thu@circled{\c@footnote}}%
\renewcommand{\thempfootnote}{\thu@circled{\c@mpfootnote}}%
\else
\renewcommand{\thefootnote}{\arabic{footnote}}%
\renewcommand{\thempfootnote}{\arabic{mpfootnote}}%
\fi
\def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@}
\footnotemargin=13.5bp
\long\def\@makefntext#1{%
\begingroup
% 序号取消上标
\def\@makefnmark{\hbox{\normalfont\@thefnmark}}%
\xiaowu
\ifFN@hangfoot
\bgroup
\setbox\@tempboxa\hbox{%
\ifdim\footnotemargin>\z@
\hb@xt@\footnotemargin{\@makefnmark\hss}%
\else
\@makefnmark
\fi
}%
\leftmargin\wd\@tempboxa
\rightmargin\z@
\linewidth \columnwidth
\advance \linewidth -\leftmargin
\parshape \@ne \leftmargin \linewidth
% \footnotesize
\xiaowu
\@setpar{{\@@par}}%
\leavevmode
\llap{\box\@tempboxa}%
\parskip\hangfootparskip\relax
\parindent\hangfootparindent\relax
\else
\parindent1em%
\noindent
\ifdim\footnotemargin>\z@
\hb@xt@ \footnotemargin{\hss\@makefnmark}%
\else
\ifdim\footnotemargin=\z@
\llap{\@makefnmark}%
\else
\llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}%
\fi
\fi
\fi
\footnotelayout#1%
\ifFN@hangfoot
\par\egroup
\fi
\endgroup
}
\allowdisplaybreaks[4]
\newcommand\thu@put@parentheses[1]{%
\ifthu@language@chinese
\ifthu@eqn@paren@style@full
\kern 0pt\relax
#1%
\else
(#1)%
\fi
\else
(#1)%
\fi
}
\def\tagform@#1{%
\maketag@@@{\thu@put@parentheses{\ignorespaces#1\unskip\@@italiccorr}}%
}
\DeclareRobustCommand{\eqref}[1]{%
\ifthu@language@chinese
\ifthu@eqn@paren@style@full
\unskip
\fi
\fi
\textup{\tagform@{\ref{#1}}}%
\ifthu@language@chinese
\ifthu@eqn@paren@style@full
\ignorespaces
\fi
\fi
}
\def\fps@figure{htbp}
\def\fps@table{htbp}
\setlength{\floatsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength{\textfloatsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength{\intextsep}{12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength{\@fptop}{0bp \@plus1.0fil}
\setlength{\@fpsep}{12bp \@plus2.0fil}
\setlength{\@fpbot}{0bp \@plus1.0fil}
\patchcmd{\@addtocurcol}%
{\vskip \intextsep}%
{\edef\save@first@penalty{\the\lastpenalty}\unpenalty
\ifnum \lastpenalty = \@M % hopefully the OR penalty
\unpenalty
\else
\penalty \save@first@penalty \relax % put it back
\fi
\ifnum\outputpenalty <-\@Mii
\addvspace\intextsep
\vskip\parskip
\else
\addvspace\intextsep
\fi}%
{}{\thu@patch@error{\@addtocurcol}}
\patchcmd{\@addtocurcol}%
{\vskip\intextsep \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi}%
{\ifnum\outputpenalty <-\@Mii
\aftergroup\vskip\aftergroup\intextsep
\aftergroup\nointerlineskip
\else
\vskip\intextsep
\fi}%
{}{\thu@patch@error{\@addtocurcol}}
\patchcmd{\@getpen}{\@M}{\@Mi}
{}{\thu@patch@error{\@getpen}}
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
\renewcommand{\bottomfraction}{0.65}
\renewcommand{\floatpagefraction}{0.60}
\thu@define@key{
figure-number-separator = {
name = figure@number@separator,
default = {.},
},
table-number-separator = {
name = table@number@separator,
default = {.},
},
equation-number-separator = {
name = equation@number@separator,
default = {.},
},
number-separator = {
name = number@separator,
default = {.},
},
}
\newcommand\thu@set@figure@numbering{%
\ifthu@figure@numbering@chapter
\@addtoreset{figure}{chapter}%
\else
\@removefromreset{figure}{chapter}%
\fi
}
\thu@set@figure@numbering
\thu@option@hook{figure-numbering}{\thu@set@figure@numbering}
\renewcommand\thefigure{%
\ifthu@figure@numbering@chapter
\ifnum\c@chapter>\z@
\thechapter
\thu@figure@number@separator
\fi
\fi
\@arabic\c@figure
}
\newcommand\thu@set@table@numbering{%
\ifthu@table@numbering@chapter
\@addtoreset{table}{chapter}%
\else
\@removefromreset{table}{chapter}%
\fi
}
\thu@set@table@numbering
\thu@option@hook{table-numbering}{\thu@set@table@numbering}
\renewcommand\thetable{%
\ifthu@table@numbering@chapter
\ifnum\c@chapter>\z@
\thechapter
\thu@table@number@separator
\fi
\fi
\@arabic\c@table
}
\newcommand\thu@set@equation@numbering{%
\ifthu@equation@numbering@chapter
\@addtoreset{equation}{chapter}%
\else
\@removefromreset{equation}{chapter}%
\fi
}
\thu@set@equation@numbering
\thu@option@hook{equation-numbering}{\thu@set@equation@numbering}
\renewcommand\theequation{%
\ifthu@equation@numbering@chapter
\ifnum\c@chapter>\z@
\thechapter
\thu@equation@number@separator
\fi
\fi
\@arabic\c@equation
}
\newcommand\thu@set@number@separator{%
\let\thu@figure@number@separator\thu@number@separator
\let\thu@table@number@separator\thu@number@separator
\let\thu@equation@number@separator\thu@number@separator
}
\thu@option@hook{number-separator}{\thu@set@number@separator}
\DeclareCaptionFont{thu}{%
\ifthu@degree@bachelor
\fontsize{11bp}{15bp}\selectfont
\else
\ifthu@language@chinese
\fontsize{11bp}{14.3bp}\selectfont
\else
\fontsize{11bp}{12.65bp}\selectfont
\fi
\fi
}
\captionsetup{
font = thu,
labelsep = quad,
skip = 6bp,
figureposition = bottom,
tableposition = top,
}
\captionsetup[sub]{font=thu}
\renewcommand{\thesubfigure}{(\alph{subfigure})}
\renewcommand{\thesubtable}{(\alph{subtable})}
\newcommand\thu@set@table@font{
\ifthu@language@chinese
\def\thu@table@font{%
\fontsize{11bp}{14.3bp}\selectfont
\renewcommand\arraystretch{1.42}%
}%
\else
\def\thu@table@font{%
\fontsize{11bp}{12.65bp}\selectfont
\renewcommand\arraystretch{1.47}%
}%
\fi
}
\thu@set@table@font
\thu@option@hook{language}{\thu@set@table@font}
\patchcmd\@floatboxreset{%
\normalsize
}{%
\thu@table@font
}{}{\thu@patch@error{\@floatboxreset}}
\AtEndOfPackageFile*{longtable}{
\AtBeginEnvironment{longtable}{%
\thu@table@font
}
}
\heavyrulewidth=1.5bp
\lightrulewidth=1bp
\AtEndOfPackageFile*{threeparttable}{
\g@addto@macro\TPT@defaults{\wuhao}
}
\newcommand{\thu@abstract@name}{\quad}
\newcommand{\thu@abstract@name@en}{Abstract}
\ctexset{%
chapter = {
nameformat = {},
numberformat = {},
titleformat = {},
fixskip = true,
afterindent = true,
lofskip = 0pt,
lotskip = 0pt,
},
section = {
afterindent = true,
},
subsection = {
afterindent = true,
},
subsubsection = {
afterindent = true,
},
paragraph/afterindent = true,
subparagraph/afterindent = true,
}
\newcommand\thu@set@section@format{%
\ifthu@degree@bachelor
\ctexset{%
chapter = {
format = \centering\sffamily\fontsize{16bp}{20.8bp}\selectfont,
titleformat = \thu@stretch{3em},
aftername = \quad,
beforeskip = 27bp,
afterskip = 27bp,
},
section = {
format = \sffamily\fontsize{14bp}{20bp}\selectfont,
aftername = \quad,
beforeskip = 24bp,
afterskip = 6bp,
},
subsection = {
format = \sffamily\fontsize{13bp}{20bp}\selectfont,
aftername = \quad,
beforeskip = 12bp,
afterskip = 6bp,
},
subsubsection = {
format = \sffamily\fontsize{12bp}{20bp}\selectfont,
aftername = \quad,
beforeskip = 12bp,
afterskip = 6bp,
},
}%
\ifthu@main@language@chinese
\ctexset{
chapter = {
name = {第,章},
number = \thechapter,
},
}%
\else
\ctexset{
chapter = {
name = \chaptername\space,
number = \thu@english@number{chapter},
},
}%
\fi
\else
\ctexset{%
chapter = {
titleformat = {},
beforeskip = 27bp,
afterskip = 27bp,
number = \thechapter,
},
section = {
beforeskip = 24bp,
afterskip = 6bp,
},
subsection = {
beforeskip = 12bp,
afterskip = 6bp,
},
subsubsection = {
beforeskip = 12bp,
afterskip = 6bp,
},
}%
\ifthu@main@language@chinese
\ctexset{%
chapter = {
format = \centering\sffamily\sanhao,
nameformat = {},
titleformat = {},
name = {第,章},
aftername = \quad,
},
section = {
format = \sffamily\fontsize{14bp}{20bp}\selectfont,
aftername = \quad,
},
subsection = {
format = \sffamily\fontsize{13bp}{20bp}\selectfont,
aftername = \quad,
},
subsubsection = {
format = \sffamily\fontsize{12bp}{20bp}\selectfont,
aftername = \quad,
},
}%
\else
\ctexset{%
chapter = {
format = \centering\sffamily\bfseries\fontsize{16bp}{20bp}\selectfont,
nameformat = \MakeUppercase,
titleformat = \MakeUppercase,
name = \chaptername\space,
aftername = \space,
},
section = {
format = \sffamily\bfseries\fontsize{14bp}{20bp}\selectfont,
aftername = \space,
},
subsection = {
format = \sffamily\bfseries\fontsize{13bp}{20bp}\selectfont,
aftername = \space,
},
subsubsection = {
format = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont,
aftername = \space,
},
}%
\fi
\fi
}
\thu@set@section@format
\thu@option@hook{degree}{\thu@set@section@format}
\thu@option@hook{main-language}{\thu@set@section@format}
\newcommand\thu@english@number[1]{%
\expandafter\ifcase\csname c@#1\endcsname
Zero\or
One\or
Two\or
Three\or
Four\or
Five\or
Six\or
Seven\or
Eight\or
Nine\or
Ten\or
Eleven\or
Twelve\or
Thirteen\or
Fourteen\or
Fifteen\or
Sixteen\or
Seventeen\or
Eighteen\or
Nineteen\or
Twenty\or
\thu@error{You are genius}%
\fi
}
\newcommand\thu@pdfbookmark[2]{}
\newcommand\thu@phantomsection{}
\NewDocumentCommand\thu@chapter{s o m o}{%
\IfBooleanF{#1}{%
\thu@error{You have to use the star form: \string\thu@chapter*}%
}%
\if@openright\cleardoublepage\else\clearpage\fi%
\IfValueTF{#2}{%
\ifthenelse{\equal{#2}{}}{%
\thu@pdfbookmark{0}{#3}%
}{%
\thu@phantomsection
\addcontentsline{toc}{chapter}{#2}%
}%
}{%
\thu@phantomsection
\addcontentsline{toc}{chapter}{#3}%
}%
\chapter*{#3}%
\IfValueTF{#4}{%
\ifthenelse{\equal{#4}{}}{%
\@mkboth{}{}%
}{%
\@mkboth{#4}{#4}%
}%
}{%
\@mkboth{#3}{#3}%
}%
}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{2}
\renewcommand\tableofcontents{%
\ifthu@degree@graduate
\thu@chapter*{\contentsname}%
\else
\ifthu@degree@bachelor
\ctexset{chapter/titleformat = \thu@stretch{2.5em}}%
\thu@chapter*[]{\contentsname}%
\ctexset{chapter/titleformat = \thu@stretch{3em}}%
\else
\thu@chapter*[]{\contentsname}%
\fi
\fi
\@starttoc{toc}%
}
\thu@define@key{
toc-chapter-style = {
name = toc@chapter@style,
choices = {
arial,
times,
},
default = arial,
},
}
\thu@option@hook{toc-chapter-style}{\thu@deprecate{"toc-chapter-style" option}{}}
\newcommand\thu@contents@label@delimiter{%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\space
\else
\quad
\fi
\else
\quad
\fi
}
\newcommand\thu@leaders{\nobreak\titlerule*[4bp]{.}\nobreak}
\newcommand\thu@set@toc@format{%
\contentsmargin{\z@}%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\titlecontents{chapter}
[0pt]{\sffamily}
{\contentspush{\thecontentslabel\space}\thu@stretch{3em}}{\thu@stretch{3em}}
{\rmfamily\thu@leaders\thecontentspage}%
\titlecontents{section}
[1em]{}
{\contentspush{\thecontentslabel\space}}{}
{\thu@leaders\thecontentspage}%
\titlecontents{subsection}
[2em]{}
{\contentspush{\thecontentslabel\space}}{}
{\thu@leaders\thecontentspage}%
\else
\ifthu@main@language@english
\titlecontents{chapter}
[\z@]{\addvspace{6bp}\sffamily}
{\contentspush{\thecontentslabel\quad}}{}
{\rmfamily\thu@leaders\thecontentspage}%
\titlecontents{section}
[0.5cm]{}
{\contentspush{\thecontentslabel\quad}}{}
{\thu@leaders\thecontentspage}%
\titlecontents{subsection}
[1cm]{}
{\contentspush{\thecontentslabel\quad}}{}
{\thu@leaders\thecontentspage}%
\fi
\fi
\else
\ifthu@main@language@chinese
\titlecontents{chapter}
[\z@]{\sffamily}
{\contentspush{\thecontentslabel\quad}}{}
{\rmfamily\thu@leaders\thecontentspage}%
\titlecontents{section}
[1em]{}
{\contentspush{\thecontentslabel\quad}}{}
{\thu@leaders\thecontentspage}%
\titlecontents{subsection}
[2em]{}
{\contentspush{\thecontentslabel\quad}}{}
{\thu@leaders\thecontentspage}%
\else
\titlecontents{chapter}
[\z@]{\heiti}
{\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase}
{\rmfamily\thu@leaders\thecontentspage}%
\titlecontents{section}
[1em]{}
{\contentspush{\thecontentslabel\space}}{}
{\thu@leaders\thecontentspage}%
\titlecontents{subsection}
[2em]{}
{\contentspush{\thecontentslabel\space}}{}
{\thu@leaders\thecontentspage}%
\fi
\fi
}
\thu@set@toc@format
\thu@option@hook{degree}{\thu@set@toc@format}
\thu@option@hook{main-language}{\thu@set@toc@format}
\thu@define@key{
secret-level = {
name = secret@level,
},
secret-year = {
name = secret@year,
},
title = {
default = {标题},
},
title* = {
default = {Title},
name = title@en,
},
author = {
default = {姓名},
},
author* = {
default = {Name of author},
name = author@en,
},
student-id = {
name = student@id,
},
supervisor = {
default = {导师姓名},
},
supervisor* = {
default = {Name of supervisor},
name = supervisor@en,
},
associate-supervisor = {
name = associate@supervisor,
},
associate-supervisor* = {
name = associate@supervisor@en,
},
co-supervisor = {
name = co@supervisor,
},
co-supervisor* = {
name = co@supervisor@en,
},
% Reserved for compatibility
joint-supervisor = {
name = co@supervisor,
},
joint-supervisor* = {
name = co@supervisor@en,
},
degree-category = {
default = {工学博士},
name = degree@category,
},
degree-category* = {
default = {Doctor of Philosophy},
name = degree@category@en,
},
}
\thu@define@key{
department = {
default = {计算机科学与技术系},
},
discipline = {
% default = {计算机科学与技术},
},
discipline* = {
% default = {Computer Science and Technology},
name = discipline@en,
},
}
\thu@option@hook{discipline}{%
\ifthu@degree@type@professional
\thu@warning{`discipline' for professional degree is deprecated. Use `professional-field' instead.}%
\let\thu@professional@field\thu@discipline
\let\thu@discipline\@empty
\fi
}
\thu@option@hook{discipline*}{%
\ifthu@degree@type@professional
\thu@warning{`discipline*' for professional degree is deprecated. Use `professional-field*' instead.}%
\let\thu@professional@field@en\thu@discipline@en
\let\thu@discipline@en\@empty
\fi
}
\thu@define@key{
professional-field = {
name = professional@field,
},
professional-field* = {
name = professional@field@en,
},
engineering-field = {
name = engineering@field,
},
engineering-field* = {
name = engineering@field@en,
},
date = {
default = {\the\year-\two@digits{\month}-\two@digits{\day}},
},
clc,
udc,
id,
discipline-level-1 = {
default = {一级学科名称},
name = discipline@level@i,
},
discipline-level-2 = {
default = {二级学科名称},
name = discipline@level@ii,
},
start-date = {
name = start@date,
default = {\the\year-\two@digits{\month}-\two@digits{\day}},
},
end-date = {
name = end@date,
default = {\the\year-\two@digits{\month}-\two@digits{\day}},
},
include-spine = {
name = include@spine,
choices = {
false,
true,
},
default = false,
},
}
\newcommand\thu@format@date[2]{%
\edef\thu@@date{#2}%
\def\thu@@process@date##1-##2-##3\@nil{%
#1{##1}{##2}{##3}%
}%
\expandafter\thu@@process@date\thu@@date\@nil
}
\newcommand\thu@date@zh@digit[3]{#1 年 \number#2 月 \number#3 日}
\newcommand\thu@date@zh@digit@short[3]{#1 年 \number#2 月}
\newcommand\thu@date@zh@short[3]{\zhdigits{#1}\zhnumber{#2}}
\newcommand\thu@date@month[1]{%
\ifcase\number#1\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December%
\fi
}
\newcommand\thu@date@en@short[3]{\thu@date@month{#2}, #1}
\newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt}
\newcommand\thu@uline[2][6em]{\uline{\hb@xt@ #1{\hss#2\hss}}}
\newcommand\thu@fixed@box[2]{%
\begingroup
\ifLuaTeX
\ltjsetparameter{kanjiskip = {0pt plus 2filll minus 1filll}}%
\else
\renewcommand\CJKglue{\hspace{0pt plus 2filll minus 1filll}}%
\fi
\makebox[#1][l]{#2}%
\endgroup
}
\newbox\thu@stretch@box
\newcommand\thu@stretch[2]{%
\sbox\thu@stretch@box{#2}%
\ifdim \wd\thu@stretch@box < #1\relax
\begingroup
\ifLuaTeX
\ltjsetparameter{kanjiskip = {0pt plus 2filll}}%
\else
\renewcommand\CJKglue{\hspace{0pt plus 2filll}}%
\fi
\makebox[#1][l]{#2}%
\endgroup
\else
\box\thu@stretch@box
\fi
}
\newbox\thu@pad@box
\newcommand\thu@pad[2]{%
\sbox\thu@pad@box{#2}%
\ifdim \wd\thu@pad@box < #1\relax
\makebox[#1][l]{\box\thu@pad@box}%
\else
\box\thu@pad@box
\fi
}
\newcounter{thu@csl@count}
\newcommand\thu@name@title@process[1]{%
\ifcase\c@thu@csl@count % == 0
\gdef\thu@@name{#1}%
\or % == 1
\gdef\thu@@title{#1}%
\fi
\stepcounter{thu@csl@count}%
}
\newcommand\thu@name@title@format[2]{%
\thu@pad{3cm}{\thu@stretch{4em}{#1}}%
\thu@stretch{3em}{#2}%
}
\newcommand\thu@name@title[1]{%
\setcounter{thu@csl@count}{0}%
\gdef\thu@@name{}%
\gdef\thu@@title{}%
\expandafter\comma@parse\expandafter{#1}{\thu@name@title@process}%
\thu@name@title@format{\thu@@name}{\thu@@title}%
}
\renewcommand\maketitle{%
\cleardoublepage
\pagenumbering{Alph}%
\thu@pdfbookmark{-1}{\thu@title}%
\thu@titlepage
\ifthu@include@spine@true
\spine
\fi
\ifthu@degree@graduate
\ifthu@thesis@type@thesis
\cleardoublepage
\thu@titlepage@en
\fi
\fi
\clearpage
}
\newcommand\thu@titlepage{%
\thusetup{language = chinese}%
\ifthu@degree@graduate
% 研究生
\thu@titlepage@thesis
\else
\ifthu@degree@bachelor
% 本科生
\thu@titlepage@bachelor
\else
\ifthu@degree@postdoc
% 博后
\thu@cover@postdoc
\cleardoublepage
\thu@titlepage@postdoc
\fi
\fi
\fi
\thu@reset@main@language
}
\newcommand\thu@titlepage@thesis{%
\newgeometry{
top = 2cm,
bottom = 6cm,
hmargin = 3.5cm,
}%
\thispagestyle{empty}%
\null\vskip 8.1pt%
\begingroup
\centering
\parbox[t][2cm][t]{\textwidth}{%
\hskip -21.5pt%
\thu@titlepage@secret
}\par
\vskip 40.5pt%
\begingroup
\sffamily\fontsize{26bp}{46.8bp}\selectfont
\thu@title\par
\endgroup
\ifthu@main@language@english
\vskip 5.4pt%
\begingroup
\sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
\thu@title@en\par
\endgroup
\vskip -9.2pt%
\fi
\vskip 24.1pt%
\thu@title@page@degree@category\par
\vfill
\ifthu@degree@type@academic
\parbox[t][7.25cm][t]{\textwidth}{%
\fangsong\fontsize{16bp}{31.2bp}\selectfont
\thu@titlepage@info
}\par
\else
\parbox[t][5.25cm][b]{\textwidth}{%
\fangsong\fontsize{16bp}{31.2bp}\selectfont
\thu@titlepage@info
}\par
\vskip 62pt%
\fi
\parbox[t][1.03cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
\endgroup
\clearpage
\restoregeometry
}
\newcommand\thu@set@student@id{%
\ifthu@thesis@type@proposal\else
\ifx\thu@student@id\@empty\else
\thu@warning{`student-id' in "\protect\thusetup" would be ignored when `thesis-type' is not proposal.}%
\fi
\fi
}
\thu@set@student@id
\thu@option@hook{thesis-type}{\thu@set@student@id}
\thu@option@hook{student-id}{\thu@set@student@id}
\newcommand\thu@titlepage@secret{%
\sffamily\sanhao
\ifx\thu@secret@level\@empty
\phantom{秘密}%
\else
\thu@secret@level\symbol{"2605}\makebox[3em][c]{\thu@secret@year}%
\fi\par
}
\newcommand\thu@title@page@degree@category{%
\begingroup
\fontsize{16bp}{22bp}\selectfont
\ifLuaTeX
\fontspec{\CJK@family}%
\ltjsetparameter{kanjiskip = {1bp}}%
\else
\CJKfamily+{}%
\renewcommand\CJKglue{\hspace{1bp}}%
\fi
\ifthu@thesis@type@thesis
(申请清华大学\thu@degree@category
\ifthu@degree@type@professional
专业%
\fi
学位论文)%
\else
\ifthu@thesis@type@proposal
(清华大学%
\ifthu@degree@doctor
博士%
\else
\ifthu@degree@master
硕士%
\fi
\fi
学位论文选题报告)%
\fi
\fi
\par
\endgroup
}
\newcommand\thu@titlepage@info{%
\thu@titlepage@info@tabular{2.3cm}{2.85cm}{2.75cm}{0.77cm}{%
\thu@info@item{培养单位}{}{\thu@department}%
\ifthu@degree@type@academic
\thu@info@item{学科}{}{\thu@discipline}%
\thu@info@item{研究生}{\thu@name@title}{\thu@author}%
\else
\thu@info@item{专业领域}{}{\thu@professional@field}%
\thu@info@item{工程领域}{}{\thu@engineering@field}%
\thu@info@item{申请人}{\thu@name@title}{\thu@author}%
\fi
\ifthu@thesis@type@proposal
\ifx\thu@student@id\@empty
\thu@warning{Missing option `student-id' in "\protect\thusetup", ID will not appear on cover.}%
\else
\thu@info@item{学号}{}{\thu@student@id}%
\fi
\fi
\thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
\thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
\thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
}\par
}
\newcommand\thu@titlepage@info@tabular[5]{%
\def\thu@info@item##1##2##3{%
\ifx##3\@empty\else
\thu@pad{#2}{\thu@fixed@box{#3}{##1}}%
\thu@pad{#4}{}%
##2{##3}\\
\fi
}%
\hspace{#1}%
\begin{tabular}{l}%
\renewcommand\arraystretch{1}%
#5%
\end{tabular}%
}
\newcommand\thu@titlepage@date{%
\begingroup
\sanhao
\ifLuaTeX
\ltjsetparameter{kanjiskip = {1bp}}%
\else
\renewcommand\CJKglue{\hspace{1bp}}%
\fi
\thu@format@date{\thu@date@zh@short}{\thu@date}\par
\endgroup
}
\newcommand{\thu@titlepage@en}{%
\newgeometry{
top = 5.5cm,
bottom = 5cm,
hmargin = 3.4cm,
}%
\thispagestyle{empty}%
\thusetup{language = english}%
\ifthu@degree@type@academic
\thu@titlepage@en@graduate@academic
\else
\thu@titlepage@en@graduate@professional
\fi
\thu@reset@main@language
\clearpage
\restoregeometry
}
\newcommand\thu@titlepage@en@graduate@academic{%
\begingroup
\centering
\null\vskip -0.31cm%
\parbox[t][143bp][t]{\textwidth}{%
\centering\thu@titlepage@en@title
}\par
\sanhao[1.725]%
\thu@titlepage@en@degree
\vskip 3bp%
in\par
\vskip 3.5bp%
{\bfseries\sffamily\thu@discipline@en\par}%
\vfill
{\sffamily by\par}%
\vskip 0.24cm%
{\sffamily\bfseries\thu@author@en\par}%
\vskip 0.18cm%
\parbox[t][3.0cm][t]{\textwidth}{%
\centering
\xiaosan[2.1]%
\thu@titlepage@en@supervisor
}\par
\thu@titlepage@en@date
\vskip 0.7cm%
\endgroup
}
\newcommand\thu@titlepage@en@graduate@professional{%
\begingroup
\centering
\null\vskip -0.31cm%
\parbox[t][143bp][t]{\textwidth}{%
\centering\thu@titlepage@en@title
}\par
\sanhao[1.725]%
\thu@titlepage@en@degree
\vfill
{\sffamily by\par}%
\vskip 0.24cm%
{\sffamily\bfseries\thu@author@en\par}%
\ifx\thu@professional@field@en\empty
\vskip 1.95cm%
\else
\vskip -0.1cm%
{\sffamily\bfseries(\thu@professional@field@en)\par}%
\vskip 1.1cm%
\fi
\parbox[t][3.37cm][t]{\textwidth}{%
\centering
\xiaosan[1.82]%
\thu@titlepage@en@supervisor
}\par
\thu@titlepage@en@date
\vskip 0.3cm%
\endgroup
}
\newcommand\thu@titlepage@en@title{%
\begingroup
% 对齐到网格,每行 15.6bp
\sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
\thu@title@en\par
\endgroup
}
\newcommand\thu@thesis@name@en{%
\ifthu@degree@master
Thesis%
\else
Dissertation%
\fi
}
\newcommand\thu@titlepage@en@degree{%
\thu@thesis@name@en{} submitted to\par
{\bfseries Tsinghua University\par}%
in partial fulfillment of the requirement\par
for the
\ifthu@degree@type@professional
professional
\fi
degree of\par
{\sffamily\bfseries\thu@degree@category@en\par}%
}
\newcommand\thu@titlepage@en@supervisor{%
\begin{tabular}{r@{\makebox[20.5bp][l]{\hspace{2bp}:}}l}%
\renewcommand\arraystretch{1}%
\thu@thesis@name@en{} Supervisor & \thu@supervisor@en \\
\ifx\thu@associate@supervisor@en\@empty\else
Associate Supervisor & \thu@associate@supervisor@en \\
\fi
\ifx\thu@co@supervisor@en\@empty\else
Co-supervisor & \thu@co@supervisor@en \\
\fi
\end{tabular}%
}
\newcommand\thu@titlepage@en@date{%
\begingroup
\sffamily\bfseries\sanhao
\thu@format@date{\thu@date@en@short}{\thu@date}\par
\endgroup
}
\newlength\thu@info@label@width
\newlength\thu@info@label@text@width
\newcommand\thu@titlepage@bachelor{%
\newgeometry{
top = 3.8cm,
bottom = 3.2cm,
left = 3.2cm, % 装订线靠左 0.2 cm
right = 3cm,
}%
\thispagestyle{empty}%
\begingroup
\centering
\parbox[t][0cm][t]{\textwidth}{%
\hfill
\xiaosi
\ifx\thu@secret@level\@empty\else
\thu@secret@level\space\thu@secret@year 年\par
\fi
}\par
\endgroup
\vspace{19bp}%
\begingroup
\centering
\hspace*{-5bp}%
\includegraphics[width=50.4bp]{thu-fig-logo.pdf}%
\hspace{10bp}%
\raisebox{7bp}{\includegraphics[width=117bp]{thu-text-logo.pdf}}%
\par
\vspace{17bp}%
\begingroup
\sffamily\bfseries\xiaochu\ziju{0.3}%
综合论文训练%
\ifthu@thesis@type@proposal
\\开题报告
\fi
\par
\endgroup
\vspace{48bp}%
\parbox[t][136bp]{\linewidth}{%
\centering
\heiti\fontsize{26bp}{32.5bp}\selectfont
\thu@title\par
\ifthu@main@language@english
\thusetup{language=english}%
\thu@title@en\par
\thusetup{language=chinese}%
\fi
}\par
\endgroup
\begingroup
\fangsong
\fontsize{16bp}{30.96bp}\selectfont
\noindent
\def\thu@name@title@format##1##2{%
\thu@stretch{4em}{##1}%
\hspace{1.5em}%
\thu@stretch{2.5em}{##2}%
}%
\ifx\thu@co@supervisor\@empty
\setlength\thu@info@label@width{2.5cm}%
\setlength\thu@info@label@text@width{4em}%
\else
\setlength\thu@info@label@width{86bp}%
\setlength\thu@info@label@text@width{5em}%
\fi
\thu@titlepage@info@tabular{81bp}{\thu@info@label@width}{\thu@info@label@text@width}{0.82cm}{%
\thu@info@item{系别}{}{\thu@department}%
\thu@info@item{专业}{}{\thu@discipline}%
\thu@info@item{姓名}{\thu@name@title}{\thu@author}%
\thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
\thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
\thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
}\par
\endgroup
\vfill
\begingroup
\centering
\fontsize{16bp}{24bp}\selectfont
\ziju{0.03}%
\thu@format@date{\thu@date@zh@short}{\thu@date}\par
\endgroup
\vspace*{60bp}%
\clearpage
\restoregeometry
}
\newcommand\thu@cover@postdoc{%
\thispagestyle{empty}%
\begin{center}%
\renewcommand\ULthickness{0.7pt}%
\vspace*{0.35cm}%
{\sihao[2.6]%
\thu@stretch{3.1em}{分类号}\thu@underline[3.7cm]{\thu@clc}\hfill
密级\thu@underline[3.7cm]{\thu@secret@level}\par
\thu@stretch{3.1em}{U D C}\thu@underline[3.7cm]{\thu@udc}\hfill
编号\thu@underline[3.7cm]{\thu@id}\par
}%
\vskip 3.15cm%
{\sffamily\bfseries\xiaoer[2.6]%
{\ziju{1.5}清华大学\par}%
{\ziju{0.5}博士后研究工作报告\par}%
}%
\vskip 0.2cm%
\parbox[t][4.0cm][c]{\textwidth}{%
\centering\sihao[3.46]%
\renewcommand\ULdepth{1em}%
\expandafter\uline\expandafter{\thu@title}\par
}\par
\vskip 0.4cm%
{\xiaosi\thu@author\par}%
\vskip 1.4cm%
{\xiaosi[1.58]%
\renewcommand\ULdepth{0.9em}%
工作完成日期\quad
\thu@uline[5.9cm]{%
\thu@format@date{\thu@date@zh@digit@short}{\thu@start@date}%
\thu@format@date{\thu@date@zh@digit@short}{\thu@end@date}%
}\par
\vskip 0.55cm%
报告提交日期\quad
\thu@uline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par
}%
\vskip 0.45cm%
{\xiaosi[2]{\ziju{1}清华大学}\quad (北京)\par}%
\vskip 0.25cm%
{\xiaosi[2]\thu@format@date{\thu@date@zh@digit@short}{\thu@date}\par}%
\end{center}%
}
\newcommand\thu@titlepage@postdoc{%
\thispagestyle{empty}%
\begin{center}%
\vspace*{1.5cm}%
\parbox[t][3cm][c]{\textwidth}{%
\centering\sanhao[1.95]\thu@title\par
}\par
\vskip 0.15cm%
\parbox[t][3cm][c]{\textwidth}{%
\centering\sihao[1.36]\thu@title@en\par
}\par
\vskip 0.4cm%
{\xiaosi[2.6]%
\begin{tabular}{l@{\quad}l}%
\renewcommand\arraystretch{1}%
\thu@stretch{11em}{博士后姓名} & \thu@author \\
\thu@stretch{11em}{流动站(一级学科)名称} & \thu@discipline@level@i \\
\thu@stretch{11em}{\quad{}业(二级学科)名称} & \thu@discipline@level@ii \\
\end{tabular}\par
}%
\vskip 2.7cm%
{\xiaosi[2.6]%
研究工作起始时间\quad\thu@format@date{\thu@date@zh@digit}{\thu@start@date}\par
\vskip 0.1cm%
研究工作期满时间\quad\thu@format@date{\thu@date@zh@digit}{\thu@end@date}\par
}%
\vskip 2.1cm%
{\xiaosi[2.6]清华大学人事处(北京)\par}%
\vskip 0.6cm%
{\wuhao\thu@format@date{\thu@date@zh@digit@short}{\thu@date}\par}%
\end{center}%
}
\def\thu@committee@name{学位论文指导小组、公开评阅人和答辩委员会名单}
\NewEnviron{committee}[1][]{%
\ifthu@degree@graduate
\cleardoublepage
\let\thu@committee@file\@empty
\kv@define@key{thu@committee}{name}{\let\thu@committee@name\kv@value}%
\kv@define@key{thu@committee}{file}{\let\thu@committee@file\kv@value}%
\kv@set@family@handler{thu@committee}{%
\ifx\kv@value\relax
\let\thu@committee@file\kv@key
\else
\kv@handled@false
\fi
}%
\kvsetkeys{thu@committee}{#1}%
\ifx\thu@committee@file\@empty
\begingroup
\ctexset{
chapter = {
format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
afterskip = 49bp,
},
section = {
beforeskip = 26bp,
afterskip = 9.5bp,
format += \centering,
numbering = false,
afterindent = false,
},
}%
\thu@chapter*[]{\thu@committee@name}%
\thispagestyle{empty}%
\thusetup{language=chinese}%
\BODY\clearpage
\thu@reset@main@language
\endgroup
\else
\thu@pdfbookmark{0}{\thu@committee@name}%
\includepdf{\thu@committee@file}%
\fi
\fi
}
\newcommand\copyrightpage[1][]{%
\ifthu@degree@postdoc\relax\else
\cleardoublepage
\def\thu@@tmp{#1}%
\ifx\thu@@tmp\@empty
\thusetup{language=chinese}%
\ifthu@degree@bachelor
\thu@copyright@page@bachelor
\else
\thu@copyright@page@graduate
\fi
\clearpage
\thu@reset@main@language
\else
\thispagestyle{empty}%
\thu@pdfbookmark{0}{关于学位论文使用授权的说明}%
\thu@phantomsection
\kv@define@key{thu@copyright}{file}{\includepdf{\kv@value}}%
\kv@set@family@handler{thu@copyright}{%
\ifx\kv@value\relax
\includepdf{\kv@key}%
\else
\kv@handled@false
\fi
}%
\kvsetkeys{thu@copyright}{#1}%
\fi
\fi
\thu@replace@with@error{copyrightpage}
}
\newcommand{\thu@authorization@frontdate}{%
\ifthu@degree@bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
\newcommand\thu@copyright@page@graduate{%
\begingroup
\ctexset{
chapter = {
format = {\centering\sffamily\erhao},
beforeskip = 40bp,
afterskip = 36bp,
},
}%
\thu@chapter*[]{关于学位论文使用授权的说明}%
\endgroup
\thispagestyle{empty}%
\vskip 13bp%
\begingroup
\fontsize{14bp}{26bp}\selectfont
本人完全了解清华大学有关保留、使用学位论文的规定,即:\par
清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:%
1\nobreak 已获学位的研究生必须按学校规定提交学位论文,%
学校可以采用影印、缩印或其他复制手段保存研究生上交的学位论文;\allowbreak
2\nobreak 为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料室等场所供校内师生阅读,%
或在校园网上供校内师生浏览部分内容;\allowbreak
\ifthu@degree@doctor
3\nobreak 根据《中华人民共和国学位法》及上级教育主管部门具体要求,向国家图书馆报送相应的学位论文。%
\else
3\nobreak 按照上级教育主管部门督导、抽查等要求,报送相应的学位论文。%
\fi
\par
本人保证遵守上述规定。\par
\endgroup
\vskip 33bp%
\begingroup
\fontsize{12bp}{23.4bp}\selectfont
\parindent\z@
\leftskip 43bp%
作者签名:\hspace{4bp}\thu@underline[7em]{}\hspace{47bp}%
导师签名:\hspace{4bp}\thu@underline[7em]{}\par
\vskip 6bp%
\hspace{2em}期:\hspace{4bp}\thu@underline[7em]{}\hspace{47bp}%
\hspace{2em}期:\hspace{4bp}\thu@underline[7em]{}\par
\endgroup
}
\newcommand\thu@copyright@page@bachelor{%
\begingroup
\ctexset{
chapter = {
format = {\centering\sffamily\erhao},
beforeskip = 40bp,
afterskip = 37bp,
},
}%
\thu@chapter*[]{关于论文使用授权的说明}%
\endgroup
\thispagestyle{empty}%
\vspace*{13bp}%
\begingroup
\fontsize{14bp}{26bp}\selectfont
本人完全了解清华大学有关保留、使用综合论文训练论文的规定,即:%
学校有权保留论文的复印件,允许论文被查阅和借阅;%
学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。\par
\endgroup
\vspace{71bp}%
\begingroup
\setlength{\parindent}{0pt}%
\fontsize{12bp}{18bp}\selectfont
\hspace*{42bp}作者签名:\hspace{118bp}导师签名:\par
\vspace{11bp}%
\hspace*{42bp}\hspace{2em}期:\hspace{118bp}\hspace{2em}期:\par
\endgroup
}
\thu@define@key{
keywords,
keywords* = {
name = keywords@en,
},
}
\newcommand\thu@clist@use[2]{%
\def\thu@@tmp{}%
\def\thu@clist@processor##1{%
\ifx\thu@@tmp\@empty
\def\thu@@tmp{#2}%
\else
#2%
\fi
##1%
}%
\expandafter\comma@parse\expandafter{#1}{\thu@clist@processor}%
}
\newenvironment{abstract}{%
\thusetup{language = chinese}%
\ifthu@degree@graduate
\begingroup
\ifthu@main@language@english
\ctexset{%
chapter/format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
}%
\fi
\thu@chapter*{\thu@abstract@name}%
\endgroup
\else
\thu@chapter*[]{\thu@abstract@name}%
\fi
}{%
\par
\null\par
\ifthu@degree@postdoc
\textbf{关键词:}%
\else
\noindent
\textsf{关键词:}%
\fi
\thu@clist@use{\thu@keywords}{}\par
\gdef\thu@keywords{}%
\thu@reset@main@language % switch back to main language
}
\newenvironment{abstract*}{%
\thusetup{language = english}%
\ifthu@degree@bachelor
\begingroup
\ctexset{chapter/afterskip = 30bp}%
\thu@chapter*[]{\thu@abstract@name@en}%
\endgroup
\else
\ifthu@degree@graduate
\thu@chapter*{\thu@abstract@name@en}%
\else
\thu@chapter*[]{\thu@abstract@name@en}%
\fi
\fi
}{%
\par
\null\par
\ifthu@degree@postdoc\else
\noindent
\fi
\textbf{Keywords:} \thu@clist@use{\thu@keywords@en}{; }\par
\thu@reset@main@language % switch back to main language
}
\newenvironment{denotation}[1][2.5cm]{%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\thu@chapter*[]{\thu@denotation@name}%
\else
\thu@chapter*{\thu@denotation@name}%
\fi
\else
\ifthu@degree@graduate
\thu@chapter*{\thu@denotation@name}%
\else
\thu@chapter*[]{\thu@denotation@name}%
\fi
\fi
\begin{thu@denotation}[labelwidth=#1]%
}{%
\end{thu@denotation}%
}
\newlist{thu@denotation}{description}{1}
\setlist[thu@denotation]{%
nosep,
font=\normalfont,
align=left,
leftmargin=!, % sum of the following 3 lengths
labelindent=0pt,
labelwidth=2.5cm,
labelsep*=0.5cm,
itemindent=0pt,
}
\newcommand{\thu@statement@text@bachelor}{%
本人郑重声明:所呈交的综合论文训练论文,是本人在导师指导下,独立进行研究工作所取得的成果。%
尽我所知,除文中已经注明引用的内容外,本论文的研究成果不包含任何他人享有著作权的内容。%
对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。%
}
\newcommand{\thu@statement@text@graduate}{%
本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取得的成果%
\ifx\thu@secret@level\@empty
,不包含涉及国家秘密的内容%
\fi%
。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人享有著作权的内容。%
对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。%
}
\newcommand{\thu@signature}{\hspace{1em}名:}
\newcommand{\thu@backdate}{\hspace{1em}期:}
\newenvironment{acknowledgements}{%
\@mainmatterfalse
\thu@end@appendix@ref@section
\thu@chapter*{\thu@acknowledgements@name}%
}{%
}
\thu@define@key{
statement-page-style = {
name = statement@page@style,
choices = {
plain,
empty,
},
default = plain,
}
}
\newcommand\statement[1][]{%
\@mainmatterfalse
\thu@end@appendix@ref@section
\let\thu@statement@file\@empty
\kv@define@key{thu@statement}{page-style}{\thusetup{statement-page-style=##1}}%
\kv@define@key{thu@statement}{file}{\let\thu@statement@file\kv@value}%
\kv@set@family@handler{thu@statement}{%
\ifx\kv@value\relax
\let\thu@statement@file\kv@key
\else
\kv@handled@false
\fi
}%
\kvsetkeys{thu@statement}{#1}%
\ifx\thu@statement@file\@empty
\thusetup{language=chinese}%
\begingroup
\ifthu@degree@graduate
\ifthu@main@language@english
\ctexset{%
chapter/format = \centering\sffamily\fontsize{16bp}{20bp}\selectfont,
}%
\fi
\fi
\thu@chapter*{\thu@statement@name}%
\endgroup
\thispagestyle{\thu@statement@page@style}%
\ifthu@degree@graduate
\vspace{13bp}%
\fontsize{12bp}{21bp}\selectfont
\begingroup
\renewcommand\CJKglue{\hspace{.15bp plus .1bp}}%
\thu@statement@text@graduate\par
\endgroup
\vspace{78.5bp}%
\begingroup
\noindent\hspace{153.5bp}\fontsize{13bp}{18bp}\selectfont
\thu@signature\thu@underline[76bp]{}\hspace{-3bp}%
\thu@backdate\thu@underline[65bp]{}\par
\endgroup
\else
\ifthu@degree@bachelor
\begingroup
\renewcommand\CJKglue{\hspace{.1bp}}%
\thu@statement@text@bachelor\par
\endgroup
\vspace{40bp}%
\hfill\hspace{.5em}名:\thu@underline[2.75cm]{}\hspace{.5em}%
\hspace{.5em}期:\thu@underline[2.75cm]{}\par
\fi
\fi
\thu@reset@main@language
\else
\includepdf[pagecommand={%
\markboth{\thu@statement@name}{}%
\thu@phantomsection
\addcontentsline{toc}{chapter}{\thu@statement@name}%
\thispagestyle{\thu@statement@page@style}%
}]{\thu@statement@file}%
\fi
\thu@replace@with@error{statement}
}
\let\acknowledgement\acknowledgements
\let\endacknowledgement\endacknowledgements
\def\thu@listof#1{% #1: float type
\setcounter{tocdepth}{2}% restore tocdepth in case being modified
\@ifstar{\thu@deprecate{starred form of \protect\listof... command}{}}{}%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\thu@chapter*[]{\csname list#1name\endcsname}%
\else
\thu@chapter*{\csname list#1name\endcsname}%
\fi
\else
\ifthu@degree@graduate
\thu@chapter*{\csname list#1name\endcsname}%
\else
\thu@chapter*[]{\csname list#1name\endcsname}%
\fi
\fi
\@starttoc{\csname ext@#1\endcsname}%
}
\renewcommand\listoffigures{%
\thu@listof{figure}%
}
\titlecontents{figure}
[\z@]{}
{\contentspush{\figurename~\thecontentslabel\thu@contents@label@delimiter}}{}
{\thu@leaders\thecontentspage}
\renewcommand\listoftables{%
\thu@listof{table}%
}
\titlecontents{table}
[\z@]{}
{\contentspush{\tablename~\thecontentslabel\thu@contents@label@delimiter}}{}
{\thu@leaders\thecontentspage}
\newcommand\listoffiguresandtables{%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\thu@chapter*[]{\thu@list@figure@table@name}%
\else
\thu@chapter*{\thu@list@figure@table@name}%
\fi
\else
\ifthu@degree@graduate
\thu@chapter*{\thu@list@figure@table@name}%
\else
\thu@chapter*[]{\thu@list@figure@table@name}%
\fi
\fi
\@starttoc{lof}%
\par
\null\par
\@starttoc{lot}%
}
\def\ext@equation{loe}
\def\equcaption#1{%
\thu@deprecate{"\protect\equcaption" command}{}%
\addcontentsline{\ext@equation}{equation}%
{\protect\numberline{#1}}}
\newcommand\listofequations{%
\thu@deprecate{"\protect\listofequations" command}{}%
\thu@listof{equation}%
}
\titlecontents{equation}
[0pt]{\addvspace{6bp}}
{\contentspush{\thu@equation@name~\thecontentslabel\thu@contents@label@delimiter}}{}
{\thu@leaders\thecontentspage}
\contentsuse{equation}{loe}
\thu@define@key{
cite-style = {
name = cite@style,
choices = {
super,
inline,
author-year,
}
}
}
\newcommand\thu@bib@heading[1]{\thu@chapter*{#1}}
\def\bibliographystyle#1{%
\gdef\bu@bibstyle{#1}%
\ifx\@begindocumenthook\@undefined\else
\expandafter\AtBeginDocument
\fi
{\if@filesw
\immediate\write\@auxout{\string\bibstyle{#1}}%
\immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}%
\fi}%
}
\def\bibliography#1{%
\if@filesw
\immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}%
\immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}%
\fi
\gdef\bu@bibdata{#1}%
\@input@{\jobname.bbl}}
\PassOptionsToPackage{compress}{natbib}
\AtEndOfPackageFile*{natbib}{
\DeclareRobustCommand\inlinecite{\@inlinecite}
\def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup}
\let\onlinecite\inlinecite
\newcommand\bibstyle@super{%
\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
\newcommand\bibstyle@inline{%
\bibpunct{[}{]}{,}{n}{,}{,}}
\@namedef{bibstyle@author-year}{%
\bibpunct{(}{)}{;}{a}{,}{,}}
\thu@option@hook{cite-style}{\@nameuse{bibstyle@\thu@cite@style}}
\@namedef{bibstyle@thuthesis-numeric}{\citestyle{super}}
\@namedef{bibstyle@thuthesis-author-year}{\citestyle{author-year}}
\@namedef{bibstyle@cell}{\citestyle{author-year}}
\@namedef{bibstyle@thuthesis-bachelor}{\citestyle{super}}
\renewcommand\NAT@citesuper[3]{%
\ifNAT@swa
\if*#2*\else
#2\NAT@spacechar
\fi
% \unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
% \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
\unskip\kern\p@
\textsuperscript{%
\NAT@@open#1\NAT@@close
\if*#3*\else#3\fi
}%
\kern\p@
\else
#1%
\fi
\endgroup
}
\renewcommand\NAT@citenum[3]{%
\ifNAT@swa
\NAT@@open
\if*#2*\else
#2\NAT@spacechar
\fi
% #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close
#1\NAT@@close
\if*#3*\else
\textsuperscript{#3}%
\fi
\else
#1%
\fi
\endgroup
}
\def\NAT@citexnum[#1][#2]#3{%
\NAT@reset@parser
\NAT@sort@cites{#3}%
\NAT@reset@citea
\@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
\@for\@citeb:=\NAT@cite@list\do
{\@safe@activestrue
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
\@safe@activesfalse
\@ifundefined{b@\@citeb\@extra@b@citeb}{%
{\reset@font\bfseries?}
\NAT@citeundefined\PackageWarning{natbib}%
{Citation `\@citeb' on page \thepage \space undefined}}%
{\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
\NAT@parse{\@citeb}%
\ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
\let\NAT@name=\NAT@all@names
\global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
\fi
\ifNAT@full\let\NAT@nm\NAT@all@names\else
\let\NAT@nm\NAT@name\fi
\ifNAT@swa
\@ifnum{\NAT@ctype>\@ne}{%
\@citea
\NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
}{%
\@ifnum{\NAT@cmprs>\z@}{%
\NAT@ifcat@num\NAT@num
{\let\NAT@nm=\NAT@num}%
{\def\NAT@nm{-2}}%
\NAT@ifcat@num\NAT@last@num
{\@tempcnta=\NAT@last@num\relax}%
{\@tempcnta\m@ne}%
\@ifnum{\NAT@nm=\@tempcnta}{%
\@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
}{%
\advance\@tempcnta by\@ne
\@ifnum{\NAT@nm=\@tempcnta}{%
% \ifx\NAT@last@yr\relax
% \def@NAT@last@yr{\@citea}%
% \else
% \def@NAT@last@yr{--\NAT@penalty}%
% \fi
\ifthu@degree@bachelor
\ifx\NAT@last@yr\relax
\def@NAT@last@yr{\@citea}%
\else
\def@NAT@last@yr{-\NAT@penalty}%
\fi
\else
\def@NAT@last@yr{-\NAT@penalty}%
\fi
}{%
\NAT@last@yr@mbox
}%
}%
}{%
\@tempswatrue
\@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
\if@tempswa\NAT@citea@mbox\fi
}%
}%
\NAT@def@citea
\else
\ifcase\NAT@ctype
\ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
\@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
\fi
\if*#1*\else#1\NAT@spacechar\fi
\NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
\NAT@def@citea@box
\or
\NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
\or
\NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
\or
\NAT@hyper@citea@space\NAT@alias
\fi
\fi
}%
}%
\@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
\ifNAT@swa\else
% \@ifnum{\NAT@ctype=\z@}{%
% \if*#2*\else\NAT@cmt#2\fi
% }{}%
\NAT@mbox{\NAT@@close}%
\@ifnum{\NAT@ctype=\z@}{%
\if*#2*\else
\textsuperscript{#2}%
\fi
}{}%
\NAT@super@kern
\fi
}{#1}{#2}%
}%
\renewcommand\NAT@cite%
[3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
% #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
#1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup}
\def\NAT@citex%
[#1][#2]#3{%
\NAT@reset@parser
\NAT@sort@cites{#3}%
\NAT@reset@citea
\@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
\@for\@citeb:=\NAT@cite@list\do
{\@safe@activestrue
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
\@safe@activesfalse
\@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
{\reset@font\bfseries ?}\NAT@citeundefined
\PackageWarning{natbib}%
{Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
{\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
\NAT@parse{\@citeb}%
\ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
\let\NAT@name=\NAT@all@names
\global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
\fi
\ifNAT@full\let\NAT@nm\NAT@all@names\else
\let\NAT@nm\NAT@name\fi
\ifNAT@swa\ifcase\NAT@ctype
\if\relax\NAT@date\relax
\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
\else
\ifx\NAT@last@nm\NAT@nm\NAT@yrsep
\ifx\NAT@last@yr\NAT@year
\def\NAT@temp{{?}}%
\ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
{Multiple citation on page \thepage: same authors and
year\MessageBreak without distinguishing extra
letter,\MessageBreak appears as question mark}\fi
\NAT@hyper@{\NAT@exlab}%
\else\unskip\NAT@spacechar
\NAT@hyper@{\NAT@date}%
\fi
\else
\@citea\NAT@hyper@{%
\NAT@nmfmt{\NAT@nm}%
\hyper@natlinkbreak{%
\NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
}%
\NAT@date
}%
\fi
\fi
\or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
\or\@citea\NAT@hyper@{\NAT@date}%
\or\@citea\NAT@hyper@{\NAT@alias}%
\fi \NAT@def@citea
\else
\ifcase\NAT@ctype
\if\relax\NAT@date\relax
\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
\else
\ifx\NAT@last@nm\NAT@nm\NAT@yrsep
\ifx\NAT@last@yr\NAT@year
\def\NAT@temp{{?}}%
\ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
{Multiple citation on page \thepage: same authors and
year\MessageBreak without distinguishing extra
letter,\MessageBreak appears as question mark}\fi
\NAT@hyper@{\NAT@exlab}%
\else
\unskip\NAT@spacechar
\NAT@hyper@{\NAT@date}%
\fi
\else
\@citea\NAT@hyper@{%
\NAT@nmfmt{\NAT@nm}%
\hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
{\@citeb\@extra@b@citeb}%
\NAT@date
}%
\fi
\fi
\or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
\or\@citea\NAT@hyper@{\NAT@date}%
\or\@citea\NAT@hyper@{\NAT@alias}%
\fi
\if\relax\NAT@date\relax
\NAT@def@citea
\else
\NAT@def@citea@close
\fi
\fi
}}\ifNAT@swa\else
% \if*#2*\else\NAT@cmt#2\fi
\if\relax\NAT@date\relax\else\NAT@@close\fi
\if*#2*\else\textsuperscript{#2}\fi
\fi}{#1}{#2}}
\renewcommand\bibsection{\thu@bib@heading{\bibname}}
\newcommand\thu@set@bibliography@format{%
\renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}%
\setlength{\bibsep}{3bp \@plus 3bp \@minus 3bp}%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\setlength{\bibhang}{21bp}% 2em
\else
\renewcommand\bibfont{\fontsize{10.5bp}{17bp}\selectfont}%
\setlength{\bibsep}{6bp \@plus 3bp \@minus 3bp}%
\setlength{\bibhang}{0.5in}%
\fi
\else
\setlength{\bibhang}{21bp}% 2em
\fi
}
\thu@set@bibliography@format
\thu@option@hook{degree}{\thu@set@bibliography@format}
\thu@option@hook{main-language}{\thu@set@bibliography@format}
\patchcmd\thebibliography{%
\clubpenalty4000%
}{%
\interlinepenalty=5000\relax
\clubpenalty=10000\relax
}{}{\thu@patch@error{\thebibliography}}
\patchcmd\thebibliography{%
\widowpenalty4000%
}{%
\widowpenalty=10000\relax
}{}{\thu@patch@error{\thebibliography}}
\def\@biblabel#1{[#1]\hfill}
\renewcommand\NAT@bibsetnum[1]{%
% \settowidth\labelwidth{\@biblabel{#1}}%
% \setlength{\leftmargin}{\labelwidth}%
% \addtolength{\leftmargin}{\labelsep}%
\setlength{\labelwidth}{1cm}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\z@}%
\setlength{\itemsep}{\bibsep}%
\setlength{\parsep}{\z@}%
\ifNAT@openbib
\addtolength{\leftmargin}{\bibindent}%
\setlength{\itemindent}{-\bibindent}%
\setlength{\listparindent}{\itemindent}%
\setlength{\parsep}{0pt}%
\fi
}
}
\AtEndOfPackageFile*{biblatex}{
\AtBeginDocument{
\ifthenelse{\equal{\blx@bbxfile}{apa}}{\def\bibname{REFERENCES}}{}
\ifthenelse{\equal{\blx@bbxfile}{apa6}}{\def\bibname{REFERENCES}}{}
\ifthenelse{\equal{\blx@bbxfile}{mla}}{\def\bibname{WORKS CITED}}{}
\ifthenelse{\equal{\blx@bbxfile}{mla-new}}{\def\bibname{WORKS CITED}}{}
}
\DeclareRobustCommand\inlinecite{\parencite}
\defbibheading{bibliography}[\bibname]{\thu@bib@heading{#1}}
\newcommand\thu@set@bibliography@format{%
\renewcommand\bibfont{\fontsize{10.5bp}{16bp}\selectfont}%
\setlength{\bibitemsep}{3bp \@plus 3bp \@minus 3bp}%
% 在 .bbx 中设置 \labelwidth 为 1 cm\labelsep 为 0 pt。
\setlength{\biblabelsep}{0pt}%
\ifthu@degree@bachelor
\ifthu@main@language@chinese
\setlength{\bibhang}{21bp}% 2em
\else
\renewcommand\bibfont{\fontsize{10.5bp}{17bp}\selectfont}%
\setlength{\bibitemsep}{6bp \@plus 3bp \@minus 3bp}%
\setlength{\bibhang}{0.5in}%
\fi
\else
\setlength{\bibhang}{21bp}% 2em
\fi
}
\thu@set@bibliography@format
\thu@option@hook{degree}{\thu@set@bibliography@format}
\thu@option@hook{main-language}{\thu@set@bibliography@format}
}
\AtEndOfPackageFile*{apacite}{
\AtBeginDocument{
\thu@set@chapter@names
}
\renewcommand\bibliographytypesize{\fontsize{10.5bp}{16bp}\selectfont}
\setlength{\bibitemsep}{3bp \@plus 3bp \@minus 3bp}%
\ifthu@degree@bachelor
\ifthu@main@language@english
\renewcommand\bibliographytypesize{\fontsize{10.5bp}{17bp}\selectfont}%
\setlength{\bibitemsep}{6bp \@plus 3bp \@minus 3bp}%
\fi
\fi
\ifthu@main@language@chinese
\setlength{\bibleftmargin}{1cm}
\setlength{\bibindent}{-\bibleftmargin}
\else
\setlength{\bibleftmargin}{0.5in}
\setlength{\bibindent}{-\bibleftmargin}
\fi
\def\st@rtbibchapter{%
\if@numberedbib%
\chapter{\bibname}% e.g., 6. References
\else%
\thu@chapter*{\bibname}% e.g., References
\fi%
}%
}
\g@addto@macro\appendix{%
\@mainmattertrue
}
\thu@define@key{
toc-depth = {
name = toc@depth,
},
}
\thu@option@hook{toc-depth}{%
\ifx\@begindocumenthook\@undefined
\protected@write\@auxout{}{%
\string\ttl@writefile{toc}{%
\protect\setcounter{tocdepth}{\thu@toc@depth}%
}%
}%
\else
\setcounter{tocdepth}{\thu@toc@depth}%
\fi
}
\g@addto@macro\appendix{%
\thusetup{
toc-depth = 0,
}%
}
\thu@define@key{
appendix-figure-in-lof = {
name = appendix@figure@in@lof,
choices = {
true,
false,
},
default = false,
},
}
\thu@option@hook{appendix-figure-in-lof}{%
\ifthu@appendix@figure@in@lof@true
\addtocontents{lof}{\string\let\string\contentsline\string\ttl@contentsline}%
\addtocontents{lot}{\string\let\string\contentsline\string\ttl@contentsline}%
\addtocontents{loe}{\string\let\string\contentsline\string\ttl@contentsline}%
\else
\addtocontents{lof}{\string\let\string\contentsline\string\ttl@gobblecontents}%
\addtocontents{lot}{\string\let\string\contentsline\string\ttl@gobblecontents}%
\addtocontents{loe}{\string\let\string\contentsline\string\ttl@gobblecontents}%
\fi
}
\g@addto@macro\appendix{%
\thusetup{
appendix-figure-in-lof = false,
}%
}
\newcommand\thu@appendix@bib@heading[1]{%
\begingroup
\ctexset{section/numbering = false}%
\ifthu@degree@bachelor
\ctexset{section = {
format = \centering\fontsize{12bp}{14.4bp}\selectfont,
beforeskip = 66bp,
afterskip = 4bp,
}}%
\fi
\section{#1}%
\endgroup
}
\g@addto@macro\appendix{%
\let\thu@bib@heading\thu@appendix@bib@heading
}
\newcommand\thu@end@appendix@ref@section{}
\AtBeginOfPackageFile*{bibunits}{
\def\bibliography#1{%
\if@filesw
\immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}%
\immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}%
\fi
\@input@{\jobname.bbl}%
\gdef\bu@bibdata{#1}%
}
\def\bibliographystyle#1{%
\ifx\@begindocumenthook\@undefined\else
\expandafter\AtBeginDocument
\fi
{\if@filesw
\immediate\write\@auxout{\string\bibstyle{#1}}%
\immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}%
\fi}%
\gdef\bu@bibstyle{#1}%
}
}
\AtEndOfPackageFile*{bibunits}{
\def\@startbibunit{%
\global\let\@startbibunitorrelax\relax
\global\let\@finishbibunit\@finishstartedbibunit
\global\advance\@bibunitauxcnt 1
\if@filesw
{\endlinechar-1
\makeatletter
\@input{\@bibunitname.aux}}%
\immediate\openout\@bibunitaux\@bibunitname.aux
\immediate\write\@bibunitaux{\string\bibstyle{\@localbibstyle}}%
\fi
}
\def\bu@bibliography#1{%
\putbib[#1]%
}
\def\bu@bibliographystyle#1{%
\if@filesw
\immediate\write\@bibunitaux{\string\gdef\string\@localbibstyle{#1}}%
\fi
\gdef\@localbibstyle{#1}%
}
\providecommand\printbibliography{\putbib\relax}%
\g@addto@macro\appendix{%
\renewcommand\@bibunitname{\jobname-appendix-\@alph\c@chapter}%
\bibliographyunit[\chapter]%
\renewcommand\@extra@binfo{@-\@alph\c@chapter}%
\renewcommand\@extra@b@citeb{@-\@alph\c@chapter}%
\ifthu@degree@bachelor\else
\renewcommand\citenumfont{\@Alph\c@chapter.}%
\renewcommand\bibnumfmt[1]{[\@Alph\c@chapter.#1]\hfill}%
\fi
}
\renewcommand\thu@end@appendix@ref@section{%
\bibliographyunit\relax
}
\AtEndDocument{\thu@end@appendix@ref@section}
% \let\@xtestdef\@gobbletwo % This doesn't work
\def\bibunits@rerun@warning{\relax}
}
\PassOptionsToPackage{defernumbers=true}{biblatex}
\AtEndOfPackageFile*{biblatex}{
\DeclareRefcontext{appendix}{labelprefix=\@Alph\c@chapter.}
\g@addto@macro\appendix{%
% 参考 biblatex 的 refsection=chapter 选项实现方式,
% 在 \@makechapterhead 和 \@makeschapterhead 进行 patch
\pretocmd\@makechapterhead{%
\newrefsection
\ifthu@degree@bachelor\else
\newrefcontext{appendix}%
\fi
}{}{\thu@patch@error{\@makechapterhead}}%
\pretocmd\@makeschapterhead{%
\newrefsection
\ifthu@degree@bachelor\else
\newrefcontext{appendix}%
\fi
}{}{\thu@patch@error{\@makeschapterhead}}%
}
\def\bibliographystyle#1{%
\thu@warning{'bibliographystyle' invalid for 'biblatex'.}%
}
}
\@ifpackagelater{titletoc}{2019/07/14}{
\newcommand\thu@print@contents[5]{%
\printcontents[#1]{#2}{#3}[#4]{}%
}
}{
\newcommand\thu@print@contents[5]{%
\printcontents[#1]{#2}{#3}{\setcounter{tocdepth}{#4}#5}%
}
}
\newenvironment{survey}{%
\thu@deprecate{"survey" environment}{}%
\chapter{外文资料的调研阅读报告}%
\thusetup{language = english}%
\let\title\@gobble
\let\maketitle\relax
\let\tableofcontents\relax
\let\appendix\relax
\renewcommand\bibname{参考文献}%
}{%
\thu@reset@main@language % restore language
}
\newenvironment{translation}{%
\thu@deprecate{"translation" environment}{}%
\chapter{外文资料的书面翻译}%
\thusetup{language = chinese}%
\let\title\@gobble
\let\maketitle\relax
\renewenvironment{abstract}{%
\ctexset{
section = {
format += \centering,
numbering = false,
},
}%
\section{摘要}%
}{%
\par
\ifx\thu@keywords\@empty\else
\textbf{关键词:}\thu@clist@use{\thu@keywords}{}\par
\fi
}%
\let\tableofcontents\relax
\let\appendix\relax
}{%
\thu@reset@main@language % restore language
}
\NewEnviron{translation-index}{%
\thu@deprecate{"translation-index" environment}{}%
}{}
\newenvironment{resume}{%
\@mainmatterfalse
\thu@end@appendix@ref@section
\thu@chapter*{\thu@resume@name}%
\ctexset{section/numbering = false}%
\ifthu@degree@bachelor
\ctexset{section/aftertitle = {\@@par}}%
\else
\ctexset{section/format += \centering}%
\fi
\ifthu@language@chinese
\ctexset{
subsection = {
format = \sffamily\fontsize{14bp}{20bp}\selectfont,
numbering = false,
aftertitle = {\@@par},
},
}%
\setlist[achievements]{
topsep = 6bp,
itemsep = 6bp,
leftmargin = 1cm,
labelwidth = 1cm,
labelsep = 0pt,
first = {
\ifthu@degree@graduate
\fontsize{12bp}{16bp}\selectfont
\fi
},
align = left,
label = [\arabic*],
resume = achievements,
}%
\else
\ctexset{
subsection = {
beforeskip = 0pt,
afterskip = 0pt,
format = \bfseries\normalsize,
indent = \parindent,
numbering = false,
},
}%
\ifthu@degree@bachelor
% 内容部分用Arial字体字号15pt行距采用固定值20pt 段前后 0pt。
\sffamily\fontsize{15bp}{20bp}\selectfont
\fi
\setlist[achievements]{
topsep = 0bp,
itemsep = 0bp,
leftmargin = 1.75cm,
labelsep = 0.5cm,
align = right,
label = [\arabic*],
resume = achievements,
}%
\fi
}{}
\newcommand\resumeitem[1]{%
\thu@error{The "\protect\resumeitem" is obsolete. Please update to the new format}%
}
\newcommand\researchitem[1]{%
\thu@error{The "\protect\researchitem" is obsolete. Please update to the new format}%
}
\newlist{achievements}{enumerate}{1}
\setlist[achievements]{
topsep = 6bp,
partopsep = 0bp,
itemsep = 6bp,
parsep = 0bp,
leftmargin = 10mm,
itemindent = 0pt,
align = left,
label = [\arabic*],
resume = achievements,
}
\newenvironment{publications}{%
\thu@deprecate{"publications" environment}{"achievements"}%
\begin{achievements}%
}{%
\end{achievements}%
}
\newcommand\publicationskip{%
\thu@error{The "\protect\publicationskip" is obsolete. Do not use it}%
}
\NewEnviron{comments}[1][]{%
\thu@end@appendix@ref@section
\ifthu@degree@graduate
\@mainmatterfalse
\kv@define@key{thu@comments}{name}{\let\thu@comments@name\kv@value}%
\kv@set@family@handler{thu@comments}{%
\ifx\kv@value\relax
\let\thu@comments@name\kv@key
\else
\kv@handled@false
\fi
}%
\kvsetkeys{thu@comments}{#1}%
\chapter{\thu@comments@name}%
\BODY\clearpage
\fi
}
\NewEnviron{resolution}{%
\thu@end@appendix@ref@section
\ifthu@degree@graduate
\@mainmatterfalse
\chapter{\thu@resolution@name}%
\BODY\clearpage
\fi
}
\newcommand{\record}[1]{%
\ifthu@degree@bachelor
\let\thu@record@file\@empty
\kv@define@key{thu@record}{file}{\let\thu@record@file\kv@value}%
\kv@set@family@handler{thu@record}{%
\ifx\kv@value\relax
\let\thu@record@file\kv@key
\else
\kv@handled@false
\fi
}%
\kvsetkeys{thu@record}{#1}%
\ifx\thu@record@file\@empty
\thu@error{File path of \protect\record\space is required}
\fi
\clearpage
\thu@pdfbookmark{0}{综合论文训练记录表}%
\includepdf[pages=-]{\thu@record@file}%
\fi
\thu@replace@with@error{record}
}
\PassOptionsToPackage{
linktoc = all,
bookmarksdepth = 2,
bookmarksnumbered = true,
bookmarksopen = true,
bookmarksopenlevel = 1,
bookmarksdepth = 3,
unicode = true,
psdextra = true,
breaklinks = true,
plainpages = false,
pdfdisplaydoctitle = true,
hidelinks,
}{hyperref}
\AtEndOfPackageFile*{hyperref}{
\newcounter{thu@bookmark}
\renewcommand\thu@pdfbookmark[2]{%
\phantomsection
\stepcounter{thu@bookmark}%
\pdfbookmark[#1]{#2}{thuchapter.\thethu@bookmark}%
}
\renewcommand\thu@phantomsection{%
\phantomsection
}
\pdfstringdefDisableCommands{%
\let\\\relax
\let\quad\relax
\let\qquad\relax
\let\hspace\@gobble
}%
\@ifpackagelater{hyperref}{2019/04/27}{}{%
\g@addto@macro\psdmapshortnames{\let\mu\textmu}
}%
\ifthu@main@language@chinese
\hypersetup{
pdflang = zh-CN,
}%
\else
\hypersetup{
pdflang = en-US,
}%
\fi
\AtBeginDocument{%
\ifthu@main@language@chinese
\hypersetup{
pdftitle = \thu@title,
pdfauthor = \thu@author,
pdfsubject = \thu@discipline,
pdfkeywords = \thu@keywords,
}%
\else
\hypersetup{
pdftitle = \thu@title@en,
pdfauthor = \thu@author@en,
pdfsubject = \thu@discipline@en,
pdfkeywords = \thu@keywords@en,
}%
\fi
\hypersetup{
pdfcreator={\thuthesis-v\version}}
}%
}
\AtEndOfPackageFile*{mathtools}{
\@ifpackageloaded{unicode-math}{
\let\underbrace\LaTeXunderbrace
\let\overbrace\LaTeXoverbrace
}{}
\expandafter\def\csname MT_extended_eqref:n\endcsname#1{%
\ifthu@language@chinese
\ifthu@eqn@paren@style@full
\unskip
\fi
\fi
\protected@write\@auxout{}
{\string\MT@newlabel{#1}}%
\textup{\let\df@label\@empty\csname MT_prev_tagform:n\endcsname{\ref{#1}}}%
\ifthu@language@chinese
\ifthu@eqn@paren@style@full
\ignorespaces
\fi
\fi
}
\expandafter\MakeRobust\csname MT_extended_eqref:n\endcsname
}
\PassOptionsToPackage{notocbasic}{nomencl}
\AtEndOfPackageFile*{nomencl}{
\let\nomname\thu@denotation@name
\def\thenomenclature{\begin{denotation}[\nom@tempdim]}
\def\endthenomenclature{\end{denotation}}
}
\AtEndOfPackageFile*{siunitx}{%
\newcommand\thu@set@siunitx@language{%
\ifthu@language@chinese
\sisetup{
list-final-separator = {\TextOrMath{\space}{\ }\text{}\TextOrMath{\space}{\ }},
list-pair-separator = {\TextOrMath{\space}{\ }\text{}\TextOrMath{\space}{\ }},
range-phrase = {\text{}},
}%
\else
\ifthu@language@english
\sisetup{
list-final-separator = {\TextOrMath{\space}{\ }\text{and}\TextOrMath{\space}{\ }},
list-pair-separator = {\TextOrMath{\space}{\ }\text{and}\TextOrMath{\space}{\ }},
range-phrase = {\TextOrMath{\space}{\ }\text{to}\TextOrMath{\space}{\ }},
}%
\fi
\fi
}
\thu@set@siunitx@language
\thu@option@hook{language}{\thu@set@siunitx@language}
}
\AtEndOfPackageFile*{amsthm}{%
\newtheoremstyle{thu}
{\z@}{\z@}
{\normalfont}{\z@}
{\normalfont\sffamily}{\thu@theorem@separator}
{0.5em}{}
\theoremstyle{thu}
\newtheorem{assumption}{\thu@assumption@name}[chapter]%
\newtheorem{definition}{\thu@definition@name}[chapter]%
\newtheorem{proposition}{\thu@proposition@name}[chapter]%
\newtheorem{lemma}{\thu@lemma@name}[chapter]%
\newtheorem{theorem}{\thu@theorem@name}[chapter]%
\newtheorem{axiom}{\thu@axiom@name}[chapter]%
\newtheorem{corollary}{\thu@corollary@name}[chapter]%
\newtheorem{exercise}{\thu@exercise@name}[chapter]%
\newtheorem{example}{\thu@example@name}[chapter]%
\newtheorem{remark}{\thu@remark@name}[chapter]%
\newtheorem{problem}{\thu@problem@name}[chapter]%
\newtheorem{conjecture}{\thu@conjecture@name}[chapter]%
\renewenvironment{proof}[1][\thu@proof@name]{\par
\pushQED{\qed}%
% \normalfont \topsep6\p@\@plus6\p@\relax
\normalfont \topsep\z@\relax
\trivlist
\item[\hskip\labelsep
% \itshape
% #1\@addpunct{.}]\ignorespaces
\sffamily
#1]\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
\renewcommand\qedsymbol{\thu@qed}
}
\AtEndOfPackageFile*{ntheorem}{%
\theorembodyfont{\normalfont}%
\theoremheaderfont{\normalfont\sffamily}%
\theoremsymbol{\thu@qed}%
\newtheorem*{proof}{\thu@proof@name}%
\theoremstyle{plain}%
\theoremsymbol{}%
\theoremseparator{\thu@theorem@separator}%
\newtheorem{assumption}{\thu@assumption@name}[chapter]%
\newtheorem{definition}{\thu@definition@name}[chapter]%
\newtheorem{proposition}{\thu@proposition@name}[chapter]%
\newtheorem{lemma}{\thu@lemma@name}[chapter]%
\newtheorem{theorem}{\thu@theorem@name}[chapter]%
\newtheorem{axiom}{\thu@axiom@name}[chapter]%
\newtheorem{corollary}{\thu@corollary@name}[chapter]%
\newtheorem{exercise}{\thu@exercise@name}[chapter]%
\newtheorem{example}{\thu@example@name}[chapter]%
\newtheorem{remark}{\thu@remark@name}[chapter]%
\newtheorem{problem}{\thu@problem@name}[chapter]%
\newtheorem{conjecture}{\thu@conjecture@name}[chapter]%
}
\PassOptionsToPackage{chapter}{algorithm}
\AtEndOfPackageFile*{algorithm}{
\floatname{algorithm}{\thu@algorithm@name}
\renewcommand\listofalgorithms{%
\thu@listof{algorithm}%
}
\renewcommand\listalgorithmname{\thu@list@algorithm@name}
\def\ext@algorithm{loa}
\contentsuse{algorithm}{loa}
\titlecontents{algorithm}
[\z@]{}
{\contentspush{\fname@algorithm~\thecontentslabel\thu@contents@label@delimiter}}{}
{\thu@leaders\thecontentspage}
}
\PassOptionsToPackage{algochapter}{algorithm2e}
\AtEndOfPackageFile*{algorithm2e}{
\renewcommand\algorithmcfname{\thu@algorithm@name}
\SetAlgoCaptionLayout{thu@caption@font}
\SetAlCapSty{relax}
\SetAlgoCaptionSeparator{\hspace*{1em}}
\SetAlFnt{\fontsize{11bp}{14.3bp}\selectfont}
\renewcommand\listofalgorithms{%
\thu@listof{algorithmcf}%
}
\renewcommand\listalgorithmcfname{\thu@list@algorithm@name}
\def\ext@algorithmcf{loa}
\contentsuse{algocf}{loa}
\titlecontents{algocf}
[\z@]{}
{\contentspush{\algorithmcfname~\thecontentslabel\thu@contents@label@delimiter}}{}
{\thu@leaders\thecontentspage}
}
\AtEndOfPackageFile*{minted}{
\newcommand\thu@set@listing@language{%
\ifthu@language@chinese
\floatname{listing}{代码}%
\else
\floatname{listing}{Listing}%
\fi
}
\thu@set@listing@language
\thu@option@hook{language}{\thu@set@listing@language}
}
\thu@define@key{
spine-font = {
name = spine@font,
},
spine-title = {
name = spine@title,
},
spine-author = {
name = spine@author,
},
}
\renewcommand\thu@spine@font{%
\ifthu@degree@doctor
\fontsize{16bp}{20.8bp}\selectfont
\else
\fontsize{15bp}{19.5bp}\selectfont
\fi
}
\newcommand*\CJKmovesymbol[1]{\raise.3em\hbox{#1}}
\newcommand*\CJKmove{%
\punctstyle{plain}%
\let\CJKsymbol\CJKmovesymbol
\let\CJKpunctsymbol\CJKsymbol
}
\NewDocumentCommand{\spine}{
O{
\ifx\thu@spine@title\@empty
\thu@title
\else
\thu@spine@title
\fi
}
O{
\ifx\thu@spine@author\@empty
\thu@author
\else
\thu@spine@author
\fi
}}{%
\clearpage
\ifthu@degree@bachelor
\newgeometry{
vmargin = 3cm,
hmargin = 1cm,
}%
\else
\newgeometry{
vmargin = 5.5cm,
hmargin = 1cm,
}%
\fi
\thispagestyle{empty}%
\ifthu@main@language@chinese
\thu@pdfbookmark{0}{书脊}%
\else
\thu@pdfbookmark{0}{Spine}%
\fi
\begingroup
\noindent\hfill
\rotatebox[origin=lt]{-90}{%
\makebox[\textheight]{%
\fangsong
\addCJKfontfeatures*{RawFeature={vertical}}%
\thu@spine@font
\CJKmove
#1\hfill
\thu@stretch{4.5em}{#2}%
}%
}%
\endgroup
\clearpage
\restoregeometry
}
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\DeclareRobustCommand\file{\nolinkurl}
\DeclareRobustCommand\env{\textsf}
\DeclareRobustCommand\pkg{\textsf}
\DeclareRobustCommand\cls{\textsf}
\sloppy
\endinput
%%
%% End of file `thuthesis.cls'.