%% %% 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-2009 by Ruini Xue %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3a %% of this license or (at your option) any later version. %% The latest version of this license is in: %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.3a or later is part of all distributions of LaTeX %% version 2004/10/01 or later. %% %% To produce the documentation run the original source files ending with `.dtx' %% through LaTeX. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesClass{thuthesis} [2008/02/28 4.5.1 Tsinghua University Thesis Template] \newif\ifthu@UTF \newif\ifthu@GBK \DeclareOption{utf}{\thu@UTFtrue\thu@GBKfalse} \DeclareOption{gbk}{\thu@GBKtrue\thu@UTFfalse} \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} \def\version{4.5} \newif\ifthu@bachelor\thu@bachelorfalse \newif\ifthu@master\thu@masterfalse \newif\ifthu@doctor\thu@doctorfalse \newif\ifthu@secret\thu@secretfalse \DeclareOption{bachelor}{\thu@bachelortrue} \DeclareOption{master}{\thu@mastertrue} \DeclareOption{doctor}{\thu@doctortrue} \DeclareOption{secret}{\thu@secrettrue} \newif\ifthu@dvips \newif\ifthu@dvipdfm \newif\ifthu@xetex \newif\ifthu@pdftex \DeclareOption{dvips}{\thu@dvipstrue} \DeclareOption{dvipdfm}{\thu@dvipdfmtrue} \DeclareOption{pdftex}{\thu@pdftextrue} \DeclareOption{xetex}{\thu@xetextrue} \newif\ifthu@arial \DeclareOption{arial}{\thu@arialtrue} \newif\ifthu@arialtoc \DeclareOption{arialtoc}{\thu@arialtoctrue} \newif\ifthu@arialtitle \DeclareOption{arialtitle}{\thu@arialtitletrue} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} \ExecuteOptions{utf,arialtitle} \ProcessOptions\relax \LoadClass[12pt,a4paper,openany]{book} \ifthu@bachelor\relax\else \ifthu@master\relax\else \ifthu@doctor\relax\else \ClassError{thuthesis}% {You have to specify one of thesis options: bachelor, master or doctor.}{} \fi \fi \fi \RequirePackage{ifpdf,ifxetex} \ifthu@xetex\RequireXeTeX\fi \def\RequirePDFTeX{% \ifpdf\else \ClassError{thuthesis}% {pdflatex is required to compile this document!}{} \fi} \ifthu@pdftex\RequirePDFTeX\fi \def\thu@checkoption#1#2{% \@for\reserved@a:=#2\do{% \csname ifthu@\reserved@a\endcsname \ClassError{thuthesis}% {Please remove `\reserved@a' option when you run #1.}{} \fi}} \ifpdf\thu@checkoption{pdflatex}{dvips,dvipdfm,xetex}\thu@pdftextrue\fi % force the option to be true \ifxetex\thu@checkoption{xelatex}{dvips,dvipdfm,pdftex}\thu@xetextrue\fi \RequirePackage{ifthen,calc} \RequirePackage{amsmath,amssymb} \RequirePackage{txfonts} \RequirePackage{graphicx} \RequirePackage[config]{subfig} \RequirePackage{indentfirst} \RequirePackage[neverdecrease]{paralist} \ifthu@xetex \RequirePackage{xunicode,xltxtra} \RequirePackage[CJKnumber,CJKtextspaces,CJKmathspaces]{xeCJK} \punctstyle{kaiming} % todo: minor fix of CJKnumb \def\CJK@null{\kern\CJKnullspace\Unicode{48}{7}\kern\CJKnullspace} \defaultfontfeatures{Mapping=tex-text} % after fontspec \setCJKmainfont[BoldFont={Adobe Heiti Std}, ItalicFont={Adobe Kaiti Std}]{Adobe Song Std} \setCJKsansfont{Adobe Heiti Std} \setCJKmonofont{Adobe Kaiti Std} \setCJKfamilyfont{song}{Adobe Song Std} \setCJKfamilyfont{hei}{Adobe Heiti Std} \setCJKfamilyfont{fs}{Adobe Fangsong Std} \setCJKfamilyfont{kai}{Adobe Kaiti Std} \setCJKfamilyfont{li}{Adobe Kaiti Std} % todo: 用隶书字体代替 \setCJKfamilyfont{you}{Adobe Kaiti Std} % todo: 用幼圆字体代替 \setmainfont{Times New Roman} \setsansfont{Arial} \setmonofont{Courier New} \else \RequirePackage{CJKutf8} \RequirePackage{CJKnumb} \ifthu@GBK % CJKpunct 在 UTF 下工作的不好。 \IfFileExists{CJKpunct.sty}% {\RequirePackage{CJKpunct}}% {\ClassWarning{thuthesis}{no CJKpunct.sty availiable!}} \fi \RequirePackage{CJKspace} \ifthu@arial \IfFileExists{arial.sty}% {\RequirePackage{arial}}% {\ClassWarning{thuthesis}{no arial.sty availiable!}} \fi \fi \ifthu@dvips\else \ifthu@xetex\else \RequirePackage{ccmap} \fi \fi \RequirePackage[amsmath,thmmarks,hyperref]{ntheorem} \RequirePackage{array} \RequirePackage{longtable} \RequirePackage{booktabs} \RequirePackage[numbers,super,sort&compress]{natbib} \RequirePackage{hyperref} \ifxetex \hypersetup{% CJKbookmarks=true} \else \hypersetup{% unicode=true, CJKbookmarks=false} \fi \hypersetup{% bookmarksnumbered=true, bookmarksopen=true, bookmarksopenlevel=1, breaklinks=true, colorlinks=false, plainpages=false, pdfpagelabels, pdfborder=0 0 0} \ifthu@dvips \RequirePackage{breakurl} \fi \urlstyle{same} \RequirePackage{hypernat} \renewcommand\frontmatter{% \if@openright\cleardoublepage\else\clearpage\fi \@mainmatterfalse \pagenumbering{Roman} \pagestyle{thu@empty}} \renewcommand\mainmatter{% \if@openright\cleardoublepage\else\clearpage\fi \@mainmattertrue \pagenumbering{arabic} \ifthu@bachelor\pagestyle{thu@plain}\else\pagestyle{thu@headings}\fi} \renewcommand\backmatter{% \if@openright\cleardoublepage\else\clearpage\fi \@mainmattertrue} \newcommand{\song}{\CJKfamily{song}} % 宋体 \def\songti{\song} \newcommand{\fs}{\CJKfamily{fs}} % 仿宋体 \def\fangsong{\fs} \newcommand{\kai}{\CJKfamily{kai}} % 楷体 \def\kaishu{\kai} \newcommand{\hei}{\CJKfamily{hei}} % 黑体 \def\heiti{\hei} \newcommand{\li}{\CJKfamily{li}} % 隶书 \def\lishu{\li} \newcommand{\you}{\CJKfamily{you}} % 幼圆 \def\youyuan{\you} \newlength\thu@linespace \newcommand{\thu@choosefont}[2]{% \setlength{\thu@linespace}{#2*\real{#1}}% \fontsize{#2}{\thu@linespace}\selectfont} \def\thu@define@fontsize#1#2{% \expandafter\newcommand\csname #1\endcsname[1][\baselinestretch]{% \thu@choosefont{##1}{#2}}} \thu@define@fontsize{chuhao}{42bp} \thu@define@fontsize{xiaochu}{36bp} \thu@define@fontsize{yihao}{26bp} \thu@define@fontsize{xiaoyi}{24bp} \thu@define@fontsize{erhao}{22bp} \thu@define@fontsize{xiaoer}{18bp} \thu@define@fontsize{sanhao}{16bp} \thu@define@fontsize{xiaosan}{15bp} \thu@define@fontsize{sihao}{14bp} \thu@define@fontsize{banxiaosi}{13bp} \thu@define@fontsize{xiaosi}{12bp} \thu@define@fontsize{dawu}{11bp} \thu@define@fontsize{wuhao}{10.5bp} \thu@define@fontsize{xiaowu}{9bp} \thu@define@fontsize{liuhao}{7.5bp} \thu@define@fontsize{xiaoliu}{6.5bp} \thu@define@fontsize{qihao}{5.5bp} \thu@define@fontsize{bahao}{5bp} \renewcommand\normalsize{% \@setfontsize\normalsize{12bp}{20bp} \abovedisplayskip=10bp \@plus 2bp \@minus 2bp \abovedisplayshortskip=10bp \@plus 2bp \@minus 2bp \belowdisplayskip=\abovedisplayskip \belowdisplayshortskip=\abovedisplayshortskip} \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}} \AtBeginDvi{\special{!% \@percentchar\@percentchar BeginPaperSize: a4 ^^Ja4^^J\@percentchar\@percentchar EndPaperSize}} \setlength{\textwidth}{\paperwidth} \setlength{\textheight}{\paperheight} \setlength\marginparwidth{0cm} \setlength\marginparsep{0cm} \addtolength{\textwidth}{-6.4cm} \setlength{\oddsidemargin}{3.2cm-1in} \setlength{\evensidemargin}{\oddsidemargin} \setlength{\headheight}{20pt} \setlength{\topskip}{0pt} \setlength{\skip\footins}{15pt} \setlength{\topmargin}{2.8cm-1in} \ifthu@bachelor \setlength{\footskip}{1.3cm} \setlength{\headsep}{0.6cm} \addtolength{\textheight}{-7.8cm} \else \setlength{\footskip}{1.5cm} \setlength{\headsep}{0.5cm} \addtolength{\textheight}{-8.6cm} \fi \let\thu@cleardoublepage\cleardoublepage \newcommand{\thu@clearemptydoublepage}{% \clearpage{\pagestyle{empty}\thu@cleardoublepage}} \let\cleardoublepage\thu@clearemptydoublepage \def\ps@thu@empty{% \let\@oddhead\@empty% \let\@evenhead\@empty% \let\@oddfoot\@empty% \let\@evenfoot\@empty} \def\ps@thu@plain{% \let\@oddhead\@empty% \let\@evenhead\@empty% \def\@oddfoot{\hfil\wuhao\thepage\hfil}% \let\@evenfoot=\@oddfoot} \def\ps@thu@headings{% \def\@oddhead{\vbox to\headheight{% \hb@xt@\textwidth{\hfill\wuhao\song\leftmark\ifthu@bachelor\relax\else\hfill\fi}% \vskip2pt\hbox{\vrule width\textwidth height0.4pt depth0pt}}} \def\@evenhead{\vbox to\headheight{% \hb@xt@\textwidth{\wuhao\song% \ifthu@bachelor\thu@schoolename\thu@bachelor@subtitle% \else\hfill\leftmark\fi\hfill}% \vskip2pt\hbox{\vrule width\textwidth height0.4pt depth0pt}}} \def\@oddfoot{\hfil\wuhao\thepage\hfil} \let\@evenfoot=\@oddfoot} \renewcommand{\chaptermark}[1]{\@mkboth{\@chapapp\ ~~#1}{}} \newlength\CJK@twochars \ifxetex \def\CJK@spaceChar{\Unicode{48}{7}} \else \ifthu@UTF \def\CJK@spaceChar{\CJKchar{"080}{"080}} \fi \ifthu@GBK \def\CJK@spaceChar{\CJKchar{"0A1}{"0A1}} \fi \fi \def\CJKindent{% \settowidth\CJK@twochars{\CJK@spaceChar\CJK@spaceChar}% \parindent\CJK@twochars} \setlength{\parskip}{0pt \@plus2pt \@minus0pt} \def\thu@item@space{% \let\itemize\compactitem \let\enditemize\endcompactitem \let\enumerate\compactenum \let\endenumerate\endcompactenum \let\description\compactdesc \let\enddescription\endcompactdesc} \newcommand*\MakePerPage[2][\@ne]{% \expandafter\def\csname c@pchk@#2\endcsname{\c@pchk@{#2}{#1}}% \newcounter{pcabs@#2}% \@addtoreset{pchk@#2}{#2}} \def\new@pagectr#1{\@newl@bel{pchk@#1}} \def\c@pchk@#1#2{\z@=\z@ \begingroup \expandafter\let\expandafter\next\csname pchk@#1@\arabic{pcabs@#1}\endcsname \addtocounter{pcabs@#1}\@ne \expandafter\ifx\csname pchk@#1@\arabic{pcabs@#1}\endcsname\next \else \setcounter{#1}{#2}\fi \protected@edef\next{% \string\new@pagectr{#1}{\arabic{pcabs@#1}}{\noexpand\thepage}}% \protected@write\@auxout{}{\next}% \endgroup\global\z@} \MakePerPage{footnote} \def\thu@textcircled#1{% \ifnum \value{#1} <10 \textcircled{\xiaoliu\arabic{#1}} \else\ifnum \value{#1} <100 \textcircled{\qihao\arabic{#1}}\fi \fi} \renewcommand{\thefootnote}{\thu@textcircled{footnote}} \renewcommand{\thempfootnote}{\thu@textcircled{mpfootnote}} \def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@} \let\thu@footnotesize\footnotesize \renewcommand\footnotesize{\thu@footnotesize\xiaowu[1.5]} \def\@makefnmark{\textsuperscript{\hbox{\normalfont\@thefnmark}}} \long\def\@makefntext#1{ \bgroup \setbox\@tempboxa\hbox{% \hb@xt@ 2em{\@thefnmark\hss}} \leftmargin\wd\@tempboxa \rightmargin\z@ \linewidth \columnwidth \advance \linewidth -\leftmargin \parshape \@ne \leftmargin \linewidth \footnotesize \@setpar{{\@@par}}% \leavevmode \llap{\box\@tempboxa}% #1 \par\egroup} \allowdisplaybreaks[4] \renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi\@arabic\c@equation} \def\make@df@tag{\@ifstar\thu@make@df@tag@@\make@df@tag@@@} \def\thu@make@df@tag@@#1{\gdef\df@tag{\thu@maketag{#1}\def\@currentlabel{#1}}} \renewcommand{\eqref}[1]{\textup{(\ref{#1})}} \renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi\@arabic\c@equation} \def\thu@maketag#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)}} \def\tagform@#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)\equcaption{#1}}} \gdef\@endtrivlist#1{% % from \endtrivlist \if@inlabel \indent\fi \if@newlist \@noitemerr\fi \ifhmode \ifdim\lastskip >\z@ #1\unskip \par %<<<<<<<<<<<<<<<<<<<<<< \else #1\unskip \par \fi \fi \if@noparlist \else \ifdim\lastskip >\z@ \@tempskipa\lastskip \vskip -\lastskip \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip \vskip\@tempskipa \fi \@endparenv \fi #1} \theorembodyfont{\song\rmfamily} \theoremheaderfont{\hei\rmfamily} \setlength{\floatsep}{12bp \@plus4pt \@minus1pt} \setlength{\intextsep}{12bp \@plus4pt \@minus2pt} \setlength{\textfloatsep}{12bp \@plus4pt \@minus2pt} \setlength{\@fptop}{0bp \@plus1.0fil} \setlength{\@fpsep}{12bp \@plus2.0fil} \setlength{\@fpbot}{0bp \@plus1.0fil} \renewcommand{\textfraction}{0.15} \renewcommand{\topfraction}{0.85} \renewcommand{\bottomfraction}{0.65} \renewcommand{\floatpagefraction}{0.60} \let\old@tabular\@tabular \def\thu@tabular{\dawu[1.5]\old@tabular} \DeclareCaptionLabelFormat{thu}{{\dawu[1.5]\song #1~\rmfamily #2}} \DeclareCaptionLabelSeparator{thu}{\hspace{1em}} \DeclareCaptionFont{thu}{\dawu[1.5]} \captionsetup{labelformat=thu,labelsep=thu,font=thu} \captionsetup[table]{position=top,belowskip={12bp-\intextsep},aboveskip=6bp} \captionsetup[figure]{position=bottom,belowskip={12bp-\intextsep},aboveskip=6bp} \captionsetup[subfloat]{labelformat=simple,font=thu,captionskip=6bp,nearskip=6bp,farskip=0bp,topadjust=0bp} \renewcommand{\thesubfigure}{(\alph{subfigure})} \renewcommand{\thesubtable}{(\alph{subtable})} \let\thu@LT@array\LT@array \def\LT@array{\dawu[1.5]\thu@LT@array} % set default font size \def\hlinewd#1{% \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet \reserved@a\@xhline} \ifthu@arialtitle \def\thu@title@font{\sffamily} \fi \renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi\phantomsection% \ifthu@bachelor\thispagestyle{thu@plain}% \else\thispagestyle{thu@headings}\fi% \global\@topnum\z@% \@afterindenttrue% \secdef\@chapter\@schapter} \def\@chapter[#1]#2{% \ifnum \c@secnumdepth >\m@ne \if@mainmatter \refstepcounter{chapter}% \addcontentsline{toc}{chapter}{\protect\numberline{\@chapapp}#1}%TODO: shit \else \addcontentsline{toc}{chapter}{#1}% \fi \else \addcontentsline{toc}{chapter}{#1}% \fi \chaptermark{#1}% \@makechapterhead{#2}} \def\@makechapterhead#1{% \vspace*{20bp}% {\parindent \z@ \centering \hei\csname thu@title@font\endcsname\ifthu@bachelor\xiaosan\else\sanhao[1]\fi \ifnum \c@secnumdepth >\m@ne \@chapapp\hskip1em \fi #1\par\nobreak \vskip 24bp}} \def\@schapter#1{% \@makeschapterhead{#1} \@afterheading} \def\@makeschapterhead#1{% \vspace*{20bp}% {\parindent \z@ \centering \hei\csname thu@title@font\endcsname\sanhao[1] \ifthu@bachelor\xiaosan\else \def\@tempa{#1} \def\@tempb{\eabstractname} \ifx\@tempa\@tempb\bfseries\fi \fi \interlinepenalty\@M #1\par\nobreak \vskip 24bp}} \newcounter{thu@bookmark} \def\thu@chapter*{% \@ifnextchar [ % ] {\thu@@chapter} {\thu@@chapter@}} \def\thu@@chapter@#1{\thu@@chapter[#1]{#1}} \def\thu@@chapter[#1]#2{% \@ifnextchar [ % ] {\thu@@@chapter[#1]{#2}} {\thu@@@chapter[#1]{#2}[]}} \def\thu@@@chapter[#1]#2[#3]{% \if@openright\cleardoublepage\else\clearpage\fi \phantomsection \def\@tmpa{#1} \def\@tmpb{#3} \ifx\@tmpa\@empty \addtocounter{thu@bookmark}\@ne \pdfbookmark[0]{#2}{thuchapter.\thethu@bookmark} \else \addcontentsline{toc}{chapter}{#1} \fi \chapter*{#2} \ifx\@tmpb\@empty \@mkboth{#2}{#2} \else \@mkboth{#3}{#3} \fi} \renewcommand\section{\@startsection {section}{1}{\z@}% {\ifthu@bachelor -20bp\else -24bp\fi\@plus -1ex \@minus -.2ex}% {6bp \@plus .2ex}% {\hei\csname thu@title@font\endcsname\sihao[1.429]}} \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% {\ifthu@bachelor -12bp\else -16bp\fi\@plus -1ex \@minus -.2ex}% {6bp \@plus .2ex}% {\hei\csname thu@title@font\endcsname\ifthu@bachelor\xiaosi[1.667]\else\banxiaosi[1.538]\fi}} \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% {\ifthu@bachelor -12bp\else -16bp\fi\@plus -1ex \@minus -.2ex}% {6bp \@plus .2ex}% {\hei\csname thu@title@font\endcsname\xiaosi[1.667]}} \setcounter{secnumdepth}{3} \ifthu@doctor \setcounter{tocdepth}{2} \else \setcounter{tocdepth}{3} \fi \renewcommand\tableofcontents{% \thu@chapter*[]{\contentsname} \ifthu@bachelor\xiaosi[1.8]\else\xiaosi[1.5]\fi\@starttoc{toc}\normalsize} \ifthu@arialtoc \def\thu@toc@font{\sffamily} \fi \def\@pnumwidth{2em} % 这个参数没用了 \def\@tocrmarg{2em} \def\@dotsep{1} % 目录点间的距离 \def\@dottedtocline#1#2#3#4#5{% \ifnum #1>\c@tocdepth \else \vskip \z@ \@plus.2\p@ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip \parindent #2\relax\@afterindenttrue \interlinepenalty\@M \leavevmode \@tempdima #3\relax \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip {\csname thu@toc@font\endcsname #4}\nobreak \leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill \nobreak{\normalfont \normalcolor #5}% \par}% \fi} \renewcommand*\l@chapter[2]{% \ifnum \c@tocdepth >\m@ne \addpenalty{-\@highpenalty}% \vskip 4bp \@plus\p@ \setlength\@tempdima{4em}% \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip {\hei\ifthu@bachelor\sffamily\else\csname thu@toc@font\endcsname\fi #1} % numberline is called here, and it uses \@tempdima \leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill \nobreak{\normalfont\normalcolor #2}\par \penalty\@highpenalty \endgroup \fi} \renewcommand*\l@section{\@dottedtocline{1}{\ifthu@bachelor 1.0em\else 1.2em\fi}{2.1em}} \renewcommand*\l@subsection{\@dottedtocline{2}{\ifthu@bachelor 1.6em\else 2em\fi}{3em}} \renewcommand*\l@subsubsection{\@dottedtocline{3}{\ifthu@bachelor 2.4em\else 3.5em\fi}{3.8em}} \def\thu@define@term#1{ \expandafter\gdef\csname #1\endcsname##1{% \expandafter\gdef\csname thu@#1\endcsname{##1}} \csname #1\endcsname{}} \thu@define@term{secretlevel} \thu@define@term{secretyear} \thu@define@term{ctitle} \thu@define@term{cdegree} \newcommand\cdepartment[2][]{\def\thu@cdepartment@short{#1}\def\thu@cdepartment{#2}} \def\caffil{\cdepartment} % todo: for compatibility \def\thu@cdepartment@short{} \def\thu@cdepartment{} \thu@define@term{cmajor} \def\csubject{\cmajor} % todo: for compatibility \thu@define@term{cauthor} \thu@define@term{csupervisor} \thu@define@term{cassosupervisor} \thu@define@term{ccosupervisor} \thu@define@term{cdate} \thu@define@term{etitle} \thu@define@term{edegree} \thu@define@term{edepartment} \def\eaffil{\edepartment} % todo: for compability \thu@define@term{emajor} \def\esubject{\emajor} % todo: for compability \thu@define@term{eauthor} \thu@define@term{esupervisor} \thu@define@term{eassosupervisor} \thu@define@term{ecosupervisor} \thu@define@term{edate} \long\@xp\def\@xp\collect@@body\@xp#\@xp1\@xp\end\@xp#\@xp2\@xp{% \collect@@body{#1}\end{#2}} \long\@xp\def\@xp\push@begins\@xp#\@xp1\@xp\begin\@xp#\@xp2\@xp{% \push@begins{#1}\begin{#2}} \long\@xp\def\@xp\addto@envbody\@xp#\@xp1\@xp{% \addto@envbody{#1}} \newcommand{\thu@@cabstract}[1]{\long\gdef\thu@cabstract{#1}} \newenvironment{cabstract}{\collect@body\thu@@cabstract}{} \newcommand{\thu@@eabstract}[1]{\long\gdef\thu@eabstract{#1}} \newenvironment{eabstract}{\collect@body\thu@@eabstract}{} \def\thu@parse@keywords#1{ \expandafter\gdef\csname thu@#1\endcsname{} % todo: need or not? \expandafter\gdef\csname #1\endcsname##1{ \@for\reserved@a:=##1\do{ \expandafter\ifx\csname thu@#1\endcsname\@empty\else \expandafter\g@addto@macro\csname thu@#1\endcsname{\ignorespaces\csname thu@#1@separator\endcsname} \fi \expandafter\expandafter\expandafter\g@addto@macro% \expandafter\csname thu@#1\expandafter\endcsname\expandafter{\reserved@a}}}} \thu@parse@keywords{ckeywords} \thu@parse@keywords{ekeywords} \newlength{\thu@title@width} \def\thu@put@title#1{\makebox{\hb@xt@ \thu@title@width{#1}}} \newcommand{\thu@first@titlepage}{ \begin{center} \vspace*{-1.3cm} \parbox[b][2.4cm][t]{\textwidth}{% \ifthu@secret\hfill{\sihao\thu@secret@title}\else\rule{1cm}{0cm}\fi} \ifthu@bachelor \vskip0.2cm {\ziju{10bp}\yihao\li\thu@schoolename} \par\vskip1.2cm {\ziju{18bp}\xiaochu\hei\thu@bachelor@subtitle} \vskip2.5cm \noindent\hei\xiaoer\thu@bachelor@title@pre\thu@title@sep \parbox[t]{12cm}{% \setbox0=\hbox{{\yihao[1.55]\thu@ctitle}} \begin{picture}(0,0)(0,0) \setlength\unitlength{1cm} \linethickness{1.3pt} \put(0,-0.25){\line(1,0){12}} \ifdim\wd0>12cm \put(0,-1.68){\line(1,0){12}} \fi \end{picture}% \ignorespaces\yihao[1.55]\thu@ctitle} %TODO: CJKulem.sty \vskip1.55cm \else \parbox[t][9cm][t]{\paperwidth-8cm}{ \renewcommand{\baselinestretch}{1.5} \begin{center} \yihao[1.2]{\hei\sffamily\thu@ctitle}\par \ifthu@master \erhao[1.1] \textbf{\sffamily\thu@etitle}\par\vskip 5bp \else % for doctor \par\vskip 20bp \fi \xiaoer[1] \textrm{{\ziju{2bp}\thu@apply}} \end{center}} \fi \ifthu@bachelor \vskip1cm \parbox[t][7.0cm][t]{\textwidth}{{\sanhao[1.8] \hspace*{1.65cm}\fs \setlength{\thu@title@width}{4em} \setlength{\extrarowheight}{6pt} \ifxetex % todo: ugly codes \begin{tabular}{p{\thu@title@width}@{}l@{\extracolsep{8pt}}l} \else \begin{tabular}{p{\thu@title@width}l@{}l} \fi \thu@put@title{\thu@bachelor@departmenttitle} & \thu@title@sep & \thu@cdepartment\\ \thu@put@title{\thu@bachelor@majortitle} & \thu@title@sep & \thu@cmajor\\ \thu@put@title{\thu@bachelor@authortitle} & \thu@title@sep & \thu@cauthor \\ \thu@put@title{\thu@csupervisortitle} & \thu@title@sep & \thu@csupervisor\\ \ifx\thu@cassosupervisor\@empty\else \thu@put@title{\thu@cassosupertitle} & \thu@title@sep & \thu@cassosupervisor\\ \fi \end{tabular} }} \else \parbox[t][7.8cm][t]{\textwidth}{{\sanhao[1.5] \begin{center}\fs \setlength{\thu@title@width}{6em} \setlength{\extrarowheight}{4pt} \ifxetex % todo: ugly codes \begin{tabular}{p{\thu@title@width}@{}c@{\extracolsep{8pt}}l} \else \begin{tabular}{p{\thu@title@width}c@{\extracolsep{4pt}}l} \fi \thu@put@title{\thu@cdepartmenttitle} & \thu@title@sep & {\ziju{3bp}\thu@cdepartment}\\ \thu@put@title{\thu@cmajortitle} & \thu@title@sep & {\ziju{3bp}\thu@cmajor}\\ \thu@put@title{\thu@cauthortitle} & \thu@title@sep & {\ziju{11bp}\thu@cauthor}\\ \thu@put@title{\thu@csupervisortitle} & \thu@title@sep & {\ziju{11bp}\thu@csupervisor}\\ \ifx\thu@cassosupervisor\@empty\else \thu@put@title{\thu@cassosupertitle} & \thu@title@sep & {\ziju{11bp}\thu@cassosupervisor}\\ \fi \ifx\thu@ccosupervisor\@empty\else \thu@put@title{\thu@ccosupertitle} & \thu@title@sep & {\ziju{11bp}\thu@ccosupervisor}\\ \fi \end{tabular} \end{center}}} \fi \begin{center} {\ifthu@bachelor\hskip-0.9cm\xiaosi\else\sanhao\fi \song \thu@cdate} \end{center} \end{center}} % end of titlepage \newcommand{\thu@doctor@engcover}{% \begin{center} \vspace*{0.2cm} \parbox[t][5.2cm][t]{\paperwidth-7.2cm}{ \renewcommand{\baselinestretch}{1.5} \begin{center} \erhao[1.1]\bfseries\sffamily\thu@etitle \end{center}} \parbox[t][5.8cm][t]{\paperwidth-7.2cm}{ \renewcommand{\baselinestretch}{1.3} \begin{center} \sanhao Dissertation Submitted to\\ {\bfseries Tsinghua University}\\ in partial fulfillment of the requirement\\ for the degree of\\ {\bfseries\sffamily\thu@edegree} \end{center}} \parbox[t][3.6cm][b]{\paperwidth-7.2cm}{ \renewcommand{\baselinestretch}{1.3} \begin{center} \sanhao\sffamily by\\[3bp] \bfseries\thu@eauthor\\(~\thu@emajor~) \end{center}} \par\vspace{0.9cm} \parbox[t][2.1cm][t]{\paperwidth-7.2cm}{ \renewcommand{\baselinestretch}{1.2}\xiaosan\centering \begin{tabular}{rl} Dissertation Supervisor : & \thu@esupervisor\\ \ifx\thu@eassosupervisor\@empty \else Associate Supervisor : & \thu@eassosupervisor\\\fi \ifx\thu@ecosupervisor\@empty \else Cooperate Supervisor : & \thu@ecosupervisor\\\fi \end{tabular}} \parbox[t][2cm][b]{\paperwidth-7.2cm}{ \begin{center} \sanhao\bfseries\sffamily\thu@edate \end{center}} \end{center}} \newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt} \newcommand{\thu@authorization@mk}{% \ifthu@bachelor\vspace*{-0.6cm}\else\vspace*{-0.1cm}\fi % shit code! \begin{center}\erhao\hei\thu@authtitle\end{center} \ifthu@bachelor\vskip\baselineskip\else\vskip18pt\sihao[2.03]\fi\par \thu@authorization\par \textbf{\thu@authorizationaddon}\par \ifthu@bachelor\vskip1.0cm\else\vskip1.9cm\fi \ifthu@bachelor \ifthu@bachelor\indent\else\noindent\fi\thu@authorsig\thu@underline\relax% \thu@teachersig\thu@underline\relax\thu@frontdate\thu@underline\relax \else \begingroup \parindent0pt\xiaosi \hspace*{1.5cm}\thu@authorsig\thu@underline[7em]\relax\hfill% \thu@teachersig\thu@underline[7em]\relax\hspace*{1cm}\\[3pt] \hspace*{1.5cm}\thu@frontdate\thu@underline[7em]\relax\hfill% \thu@frontdate\thu@underline[7em]\relax\hspace*{1cm} \endgroup \fi} \newcommand{\makecover}{ \phantomsection \pdfbookmark[-1]{\thu@ctitle}{ctitle} \normalsize% \begin{titlepage} \thu@first@titlepage \ifthu@doctor \cleardoublepage\thu@doctor@engcover \fi \cleardoublepage\thu@authorization@mk \end{titlepage} \normalsize \thu@makeabstract \let\@tabular\thu@tabular} \newcommand{\thu@makeabstract}{% \cleardoublepage % always openright for Abstract \thu@chapter*[]{\cabstractname} % no tocline \ifthu@bachelor \pagestyle{thu@plain} \else \pagestyle{thu@headings} \fi \pagenumbering{Roman} \thu@cabstract \vskip12bp \setbox0=\hbox{{\hei\thu@ckeywords@title}} \ifthu@bachelor\indent\else\noindent\hangindent\wd0\hangafter1\fi \box0\thu@ckeywords \thu@chapter*[]{\eabstractname} % no tocline \thu@eabstract \vskip12bp \setbox0=\hbox{\textbf{Key words:\enskip}} \ifthu@bachelor\indent\else\noindent\hangindent\wd0\hangafter1\fi \box0\thu@ekeywords} \newenvironment{denotation}[1][2.5cm]{ \thu@chapter*[]{\thu@denotation@name} % no tocline \noindent\begin{list}{}% {\vskip-30bp\xiaosi[1.6] \renewcommand\makelabel[1]{##1\hfil} \setlength{\labelwidth}{#1} % 标签盒子宽度 \setlength{\labelsep}{0.5cm} % 标签与列表文本距离 \setlength{\itemindent}{0cm} % 标签缩进量 \setlength{\leftmargin}{\labelwidth+\labelsep} % 左边界 \setlength{\rightmargin}{0cm} \setlength{\parsep}{0cm} % 段落间距 \setlength{\itemsep}{0cm} % 标签间距 \setlength{\listparindent}{0cm} % 段落缩进量 \setlength{\topsep}{0pt} % 标签与上文的间距 }}{\end{list}} \newenvironment{ack}{% \ifthu@bachelor \thu@chapter*{\thu@ackname} \else % \cleardoublepage \thu@chapter*[\thu@acklongname]{\thu@ackname}[\thu@acklongname] \fi} {% \ifthu@bachelor\relax\else %TAG 1 \par\vfill% \noindent {\setlength{\unitlength}{0.1\textwidth} \begin{picture}(10, 0.1) \multiput(0,0)(1, 0){10}{\rule{0.8\unitlength}{1.2pt}} \multiput(0,0.08)(1, 0){10}{\rule{0.8\unitlength}{1.2pt}} \end{picture}} \fi % END TAG 1 \ifthu@bachelor \thu@chapter*{\thu@declarename} \else \parbox[t][4cm][c]{\textwidth}{{\sanhao\hei\centerline{\thu@declarename}}} \fi \par{\xiaosi\parindent2em\thu@declaretext}\vskip2cm {\xiaosi\hfill\thu@signature\thu@underline[2.5cm]\relax% \thu@backdate\thu@underline[2.5cm]\relax}% } \def\thu@starttoc#1{% #1: float type, prepend type name in \listof*** entry. \let\oldnumberline\numberline \def\numberline##1{\oldnumberline{\csname #1name\endcsname\hskip.4em ##1}} \@starttoc{\csname ext@#1\endcsname} \let\numberline\oldnumberline} \def\thu@listof#1{% #1: float type \@ifstar {\thu@chapter*[]{\csname list#1name\endcsname}\thu@starttoc{#1}} {\thu@chapter*{\csname list#1name\endcsname}\thu@starttoc{#1}}} \renewcommand\listoffigures{\thu@listof{figure}} \renewcommand*\l@figure{\@dottedtocline{1}{0em}{4em}} \renewcommand\listoftables{\thu@listof{table}} \let\l@table\l@figure \def\ext@equation{loe} \def\equcaption#1{% \addcontentsline{\ext@equation}{equation}% {\protect\numberline{#1}}} \newcommand\listofequations{\thu@listof{equation}} \let\l@equation\l@figure \bibpunct{[}{]}{,}{s}{}{,} \renewcommand\NAT@citesuper[3]{\ifNAT@swa% \unskip\kern\p@\textsuperscript{\NAT@@open #1\NAT@@close}% \if*#3*\else\ (#3)\fi\else #1\fi\endgroup} \DeclareRobustCommand\onlinecite{\@onlinecite} \def\@onlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \def\thudot{\ifthu@bachelor\else\unskip.\fi} \def\thumasterbib{\ifthu@doctor [M]\else [Master Thesis]\fi} \def\thuphdbib{\ifthu@doctor [D]\else [Doctor Thesis]\fi} \renewenvironment{thebibliography}[1]{% \thu@chapter*{\bibname}% \wuhao[1.5] \list{\@biblabel{\@arabic\c@enumiv}}% {\renewcommand{\makelabel}[1]{##1\hfill} \settowidth\labelwidth{1.1cm} \setlength{\labelsep}{0.4em} \setlength{\itemindent}{0pt} \setlength{\leftmargin}{\labelwidth+\labelsep} \addtolength{\itemsep}{-0.7em} \usecounter{enumiv}% \let\p@enumiv\@empty \renewcommand\theenumiv{\@arabic\c@enumiv}}% \sloppy\frenchspacing \clubpenalty4000 \@clubpenalty \clubpenalty \widowpenalty4000% \interlinepenalty4000% \sfcode`\.\@m} {\def\@noitemerr {\@latex@warning{Empty `thebibliography' environment}}% \endlist\frenchspacing} \let\thu@appendix\appendix \renewenvironment{appendix}{% \thu@appendix \gdef\@chapapp{\appendixname~\thechapter} %\renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi\@arabic\c@equation} }{} \newenvironment{resume}{% % \cleardoublepage \thu@chapter*{\thu@resume@title}}{} \newcommand{\resumeitem}[1]{\vspace{2.5em}{\sihao\hei\centerline{#1}}\par} \newcommand{\shuji}[1][\thu@ctitle]{ \newpage\thispagestyle{empty}\ziju{0.4em}\fs\xiaosan \hfill\rotatebox{-90}{\hb@xt@ \textheight{#1\hfill\thu@cauthor}}} \iffalse \newcommand{\bs}{\symbol{'134}}%Print backslash \newcommand{\cih}[1]{% \index{commands!#1@\texttt{\bs#1}}% \index{#1@\texttt{\hspace*{-1.2ex}\bs #1}}} \newcommand{\ci}[1]{\cih{#1}\texttt{\bs#1}} \newcommand{\pai}[1]{% \index{packages!#1@\textsf{#1}}% \index{#1@\textsf{#1}}% \textsf{#1}} \newcommand{\ei}[1]{% \index{environments!\texttt{#1}}% \index{#1@\texttt{#1}}% \texttt{#1}} \newcommand{\wi}[1]{\index{#1}#1} \fi \newcommand*{\ziju}[1]{\renewcommand{\CJKglue}{\hskip #1}} \newcommand{\pozhehao}{\kern0.3ex\rule[0.8ex]{2em}{0.1ex}\kern0.3ex} \def\thu@active@cjk{ % Activate all >128 characters. \count@=128 \@whilenum\count@<254 \do{% \advance\count@ by 1 \lccode`\~=\count@ \catcode\count@=\active \lowercase{\def~{\kern1ex}}}} \AtEndOfClass{\ifxetex\else\thu@active@cjk\fi\input{thuthesis.cfg}} \def\thu@fixselectfont{% \ifx\@EverySelectfont@EveryHook\@undefined\else% everysel package is loaded \DeclareRobustCommand{\selectfont}{% \ifx\f@linespread\baselinestretch \else \set@fontsize\baselinestretch\f@size\f@baselineskip \fi \xdef\font@name{% \csname\curr@fontshape/\f@size\endcsname}% \pickup@font \font@name % CJK addition: \CJK@bold@false \csname \curr@fontshape\endcsname % everysel addition: \@EverySelectfont@EveryHook \@EverySelectfont@AtNextHook \gdef\@EverySelectfont@AtNextHook{}% % end additions \size@update \enc@update} \fi} \def\thu@setup@pdfinfo{% \hypersetup{% pdftitle={\thu@ctitle}, pdfauthor={\thu@cauthor}, pdfsubject={\thu@cdegree}, pdfkeywords={\thu@ckeywords}, pdfcreator={\thu@cauthor}, pdfproducer={\thuthesis}}} \ifxetex \AtBeginDocument{\CJKindent} \else \def\thu@beginCJK{% \thu@fixselectfont% \begin{CJK*}{UTF8}{song}\CJKindent} \def\thu@endCJK{\clearpage\end{CJK*}} \let\thu@begindocumenthook\@begindocumenthook \let\thu@enddocumenthook\@enddocumenthook \def\AtBeginDocument{\g@addto@macro\thu@begindocumenthook} \def\AtEndDocument{\g@addto@macro\thu@enddocumenthook} \def\@begindocumenthook{\thu@begindocumenthook\thu@beginCJK} \def\@enddocumenthook{\thu@endCJK\thu@enddocumenthook} \fi \AtEndOfClass{\sloppy\thu@item@space} \endinput %% %% End of file `thuthesis.cls'.