summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-01-06 03:01:05 +0000
committerNorbert Preining <norbert@preining.info>2020-01-06 03:01:05 +0000
commit9d0c8699c4a9f01ec5cc8aeb7e3b14956b3d51c1 (patch)
tree570162c5a6220ea63dffe4e5471f477e99e77c99 /macros
parentd703bc2777b69363e791c0ec50045947b1a399da (diff)
CTAN sync 202001060301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/curve2e/README.txt25
-rw-r--r--macros/latex/contrib/curve2e/curve2e.dtx93
-rw-r--r--macros/latex/contrib/curve2e/curve2e.pdfbin703517 -> 710384 bytes
-rw-r--r--macros/latex/contrib/thesis-ekf/README8
-rw-r--r--macros/latex/contrib/thesis-ekf/thesis-ekf.dtx15
-rw-r--r--macros/latex/contrib/thesis-ekf/thesis-ekf.ins4
-rw-r--r--macros/latex/contrib/thesis-ekf/thesis-ekf.pdfbin256100 -> 250634 bytes
-rw-r--r--macros/latex/contrib/thuthesis/Makefile85
-rw-r--r--macros/latex/contrib/thuthesis/README.md50
-rw-r--r--macros/latex/contrib/thuthesis/data/abstract.tex55
-rw-r--r--macros/latex/contrib/thuthesis/data/acknowledgements.tex (renamed from macros/latex/contrib/thuthesis/data/ack.tex)10
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix-survey.tex172
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix-translation.tex96
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix.tex (renamed from macros/latex/contrib/thuthesis/data/appendix01.tex)34
-rw-r--r--macros/latex/contrib/thuthesis/data/chap01.tex31
-rw-r--r--macros/latex/contrib/thuthesis/data/chap02.tex12
-rw-r--r--macros/latex/contrib/thuthesis/data/cover.tex118
-rw-r--r--macros/latex/contrib/thuthesis/data/denotation.tex2
-rw-r--r--macros/latex/contrib/thuthesis/data/resume.tex2
-rw-r--r--macros/latex/contrib/thuthesis/latexmkrc23
-rw-r--r--macros/latex/contrib/thuthesis/main.pdfbin1063986 -> 768081 bytes
-rw-r--r--macros/latex/contrib/thuthesis/main.tex84
-rw-r--r--macros/latex/contrib/thuthesis/math_commands.tex290
-rw-r--r--macros/latex/contrib/thuthesis/ref/appendix.bib14
-rw-r--r--macros/latex/contrib/thuthesis/ref/refs.bib2
-rw-r--r--macros/latex/contrib/thuthesis/shuji.pdfbin26554 -> 0 bytes
-rw-r--r--macros/latex/contrib/thuthesis/shuji.tex20
-rw-r--r--macros/latex/contrib/thuthesis/spine.pdfbin0 -> 20221 bytes
-rw-r--r--macros/latex/contrib/thuthesis/spine.tex19
-rw-r--r--macros/latex/contrib/thuthesis/thusetup.tex154
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-author-year.bst24
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-bachelor.bst16
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-numeric.bst23
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.dtx3426
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.ins4
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.pdfbin709954 -> 937163 bytes
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.sty50
37 files changed, 2883 insertions, 2078 deletions
diff --git a/macros/latex/contrib/curve2e/README.txt b/macros/latex/contrib/curve2e/README.txt
index 84e7fecffb..1d74851d13 100644
--- a/macros/latex/contrib/curve2e/README.txt
+++ b/macros/latex/contrib/curve2e/README.txt
@@ -6,11 +6,11 @@
%%
%% curve2e.dtx (with options: `readme')
%%
-%% Copyright (C) 2005--2019 Claudio Beccari all rights reserved.
+%% Copyright (C) 2005--2020 Claudio Beccari all rights reserved.
%% License information appended
%%
File README.txt for package curve2e
- [2019-12-06 v.2.0.7 Extension package for pict2e]
+ [2020-01-05 v.2.0.8 Extension package for pict2e]
@@ -24,7 +24,9 @@ ltxdoc.cfg
curve2e.dtx is the documented TeX source file of file curve2e.sty; you
get curve2e.sty, curve2e.pdf, and curve2e-v161.sty by running pdflatex
on curve2e.dtx. The ltxdoc.cfg file customises the way the documentation
-file is typeset. This specific .cfg file is part of the ltxdoc package functionality and it is supposed to be configured for each specifica other bundle.
+file is typeset. This specific .cfg file is part of the ltxdoc package
+functionality and it is supposed to be configured for each specific
+other bundle.
README.txt, this file, contains general information.
@@ -41,7 +43,7 @@ slope, to draw arcs and curved vectors, to draw curves where just
the interpolating nodes are specified together with the slopes at
the nodes; closed paths of any shape can be filled with color; all
coordinates are treated as ordered pairs, i.e. 'complex numbers';
-coordinates may be expressed also in polar form.
+coordinates may be expressed also in polar form. Coordinates may be specified with macros, so that editing any drawing is rendered much simpler: any point specified with a macro is modified only once in the macro definition.
Some of these features have been incorporated in the 2011 version of
pict2e; therefore this package avoids any modification to the original
pict2e commands.
@@ -49,9 +51,12 @@ pict2e commands.
Curve2e now accepts polar coordinates in addition to the usual cartesian
ones; several macros have been upgraded and a new macro for tracing cubic
Bezier splines with their control nodes specified in polar form is
-available. The same applies to quadratic Bezier splines. The \multiput
+available. The same applies to quadratic Bezier splines. The multiput
command has been completely modified in a backwards compatible way, as
-to manipulate the increment components in a configurable way.
+to manipulate the increment components in a configurable way. A new
+xmultiput command has been defined that is more configurable than the
+original one; both \multiput and \xmultiput are backwards compatible with
+the original picture environment definition.
This version solves a conflict with package eso-pic.
@@ -71,10 +76,10 @@ have an older or a basic/incomplete installation of the TeX system,
such L3 functions might not be available. This is why this
package checks the presence of the developer interface; in case
such interface is not available it falls back to the previous version
-renamed curve2e-v161.sty, which is part of this bundle, and that must
-not be renamed in any way. The compatibility mentioned above implies
-that the user macros remain the same, but their implementation requires
-the L3 interface.
+renamed curve2e-v161.sty, which is part of this bundle; this order
+package name must not be modified in any way. The compatibility mentioned
+above implies that the user macros remain the same, but their
+implementation requires the L3 interface.
The package has the LPPL status of author maintained.
diff --git a/macros/latex/contrib/curve2e/curve2e.dtx b/macros/latex/contrib/curve2e/curve2e.dtx
index d850055244..2bf4c5af2d 100644
--- a/macros/latex/contrib/curve2e/curve2e.dtx
+++ b/macros/latex/contrib/curve2e/curve2e.dtx
@@ -6,7 +6,7 @@
\keepsilent
\preamble
- Copyright (C) 2005--2019 Claudio Beccari all rights reserved.
+ Copyright (C) 2005--2020 Claudio Beccari all rights reserved.
License information appended
\endpreamble
@@ -47,7 +47,7 @@ README.txt and curve2e-v161.sty.
%<+package>\ProvidesPackage{curve2e}%
%<+readme>File README.txt for package curve2e
%<*package|readme>
- [2019-12-06 v.2.0.7 Extension package for pict2e]
+ [2020-01-05 v.2.0.8 Extension package for pict2e]
%</package|readme>
%<*driver>
\documentclass{ltxdoc}\errorcontextlines=9
@@ -110,7 +110,7 @@ README.txt and curve2e-v161.sty.
%</driver>
% \fi
%
-% \CheckSum{5592}
+% \CheckSum{5600}
% \begin{abstract}
% This file documents the |curve2e| extension package to the |pict2e|
% bundle implementation; the latter was described by Lamport
@@ -476,7 +476,7 @@ README.txt and curve2e-v161.sty.
% \begin{verbatim}
% \unitlength=.5mm
% \begin{picture}(60,20)
-% \put(0,0){\GraphGrid(80,20)}
+% \GraphGrid(80,20)
% \put(0,0){\vector(1.5,2.3){10}}
% \put(20,0){\Vector(10,15.33333)}
% \VECTOR(40,0)(50,15.33333)
@@ -488,7 +488,7 @@ README.txt and curve2e-v161.sty.
% \begin{minipage}{.48\textwidth}\centering
% \unitlength=.5mm
% \begin{picture}(60,20)
-% \put(0,0){\GraphGrid(80,20)}
+% \GraphGrid(80,20)
% \put(0,0){\vector(1.5,2.3){10}}
% \put(20,0){\Vector(10,15.33333)}
% \VECTOR(40,0)(50,15.33333)
@@ -538,7 +538,7 @@ README.txt and curve2e-v161.sty.
%\begin{minipage}{0.55\textwidth}
%\begin{verbatim}
%\begin{picture}(40,30)
-%\put(0,0){\GraphGrid(40,30)}
+%\GraphGrid(40,30)
%\Zbox(40,0)[l]{40,0}[1]
%\Zbox(90:30)[bc]{90{:}30}[1]
%\Zbox(60:30)[bc]{60{:}30}[1]
@@ -551,7 +551,7 @@ README.txt and curve2e-v161.sty.
%\hfill
%\begin{minipage}{0.4\textwidth}
%\begin{picture}(40,30)
-%\put(0,0){\GraphGrid(40,30)}
+%\GraphGrid(40,30)
%\Zbox(40,0)[l]{40,0}[1]
%\Zbox(90:30)[bc]{90{:}30}[1]
%\Zbox(60:30)[bc]{60{:}30}[1]
@@ -614,7 +614,7 @@ README.txt and curve2e-v161.sty.
% \begin{verbatim}
% \unitlength=1mm
% \begin{picture}(40,40)
-% \put(0,0){\GraphGrid(40,40)}
+% \GraphGrid(40,40)
% \Dashline(0,0)(40,10){4}
% \put(0,0){\circle*{2}}
% \Dashline(40,10)(0,25){4}
@@ -631,7 +631,7 @@ README.txt and curve2e-v161.sty.
% \begin{minipage}{.48\textwidth}\centering
% \unitlength=1mm
% \begin{picture}(40,40)
-% \put(0,0){\GraphGrid(40,40)}
+% \GraphGrid(40,40)
% \Dashline(0,0)(40,10){4}
% \put(0,0){\circle*{2}}
% \Dashline(40,10)(0,25){4}
@@ -653,7 +653,7 @@ README.txt and curve2e-v161.sty.
%\begin{minipage}{0.55\textwidth}
%\begin{verbatim}
%\begin{picture}(40,30)
-%\put(0,0){\GraphGrid(40,30)}
+%\GraphGrid(40,30)
%\Dashline(0,0)(40,10){2}\Dashline(0,0)(40,20){2}
%\Dashline(0,0)(40,30){2}\Dashline(0,0)(30,30){2}
%\Dashline(0,0)(20,30){2}\Dashline(0,0)(10,30){2}
@@ -668,7 +668,7 @@ README.txt and curve2e-v161.sty.
%\hfill
%\begin{minipage}{0.4\textwidth}\raggedleft
%\begin{picture}(40,30)
-%\put(0,0){\GraphGrid(40,30)}
+%\GraphGrid(40,30)
%\Dashline(0,0)(40,10){2}
%\Dashline(0,0)(40,20){2}
%\Dashline(0,0)(40,30){2}
@@ -701,7 +701,7 @@ README.txt and curve2e-v161.sty.
%\begin{minipage}{0.55\textwidth}
%\begin{verbatim}
%\begin{picture}(40,30)
-%\put(0,0){\GraphGrid(40,30)}
+%\GraphGrid(40,30)
%\Dotline(0,0)(40,10){1.5}\Dotline(0,0)(40,20){1.5}
%\Dotline(0,0)(40,30){1.5}\Dotline(0,0)(30,30){1.5}
%\Dotline(0,0)(20,30){1.5}\Dotline(0,0)(10,30){1.5}
@@ -715,7 +715,7 @@ README.txt and curve2e-v161.sty.
%\hfill
%\begin{minipage}{0.4\textwidth}\raggedleft
%\begin{picture}(40,30)
-%\put(0,0){\GraphGrid(40,30)}
+%\GraphGrid(40,30)
%\Dotline(0,0)(40,10){1.5}
%\Dotline(0,0)(40,20){1.5}
%\Dotline(0,0)(40,30){1.5}
@@ -731,7 +731,7 @@ README.txt and curve2e-v161.sty.
%\end{minipage}
%\caption{Different length dotted lines with the same nominal dot gap;
% again notice the relative polar coordinates for the dotted lines
-% starting at thhe grid lower right vertex.}
+% starting at the grid lower right vertex.}
%\label{fig:dottedlines}
%\end{figure}
%^^A
@@ -787,7 +787,7 @@ README.txt and curve2e-v161.sty.
% \begin{verbatim}
% \unitlength=0.5mm
% \begin{picture}(60,40)
-% \put(0,0){\GraphGrid(60,40)}
+% \GraphGrid(60,40)
% \Arc(0,20)(30,0){60}
% \VECTOR(0,20)(30,0)\VECTOR(0,20)(32.5,36)
% \VectorArc(0,20)(15,10){60}
@@ -800,7 +800,7 @@ README.txt and curve2e-v161.sty.
% \begin{minipage}{.48\textwidth}\centering
% \unitlength=0.5mm
% \begin{picture}(60,40)
-% \put(0,0){\GraphGrid(60,40)}
+% \GraphGrid(60,40)
% \Arc(0,20)(30,0){60}
% \VECTOR(0,20)(30,0)\VECTOR(0,20)(32.5,36)
% \VectorArc(0,20)(15,10){60}
@@ -1336,7 +1336,7 @@ README.txt and curve2e-v161.sty.
%\begin{Verbatim}[fontsize=\setfontsize{8}]
%\unitlength=0.01\linewidth
%\begin{picture}(100,100)
-%\put(0,0){\GraphGrid(100,100)}
+%\GraphGrid(100,100)
%\multiput(0,0)(10,10){11}{\circle*{2}}
%\color{blue!70!white}
%\multiput(0,0)(10,0){11}{\circle*{2}}%
@@ -1360,7 +1360,7 @@ README.txt and curve2e-v161.sty.
%\begin{minipage}{0.45\linewidth}
%\unitlength=0.01\linewidth
%\begin{picture}(100,100)
-%\put(0,0){\GraphGrid(100,100)}
+%\GraphGrid(100,100)
%\multiput(0,0)(10,10){11}{\circle*{2}}
%\color{blue!70!white}
%\multiput(0,0)(10,0){11}{\circle*{2}}%
@@ -1398,7 +1398,7 @@ README.txt and curve2e-v161.sty.
%\begin{verbatim}
%\unitlength=0.0095\linewidth
%\begin{picture}(100,100)
-%\put(0,0){\GraphGrid(100,100)}
+%\GraphGrid(100,100)
%\put(50,50){\thicklines\circle{100}}
%\xmultiput[50,50](60:40)(-30:1){12}%
% {\makebox(0,0){\circle*{2}}}%
@@ -1415,7 +1415,7 @@ README.txt and curve2e-v161.sty.
%\begin{minipage}{0.45\textwidth}\raggedleft
%\unitlength=0.0095\linewidth
%\begin{picture}(100,100)
-%\put(0,0){\GraphGrid(100,100)}
+%\GraphGrid(100,100)
%\put(50,50){\thicklines\circle{100}}
%\xmultiput[50,50](60:40)(-30:1){12}%
% {\makebox(0,0){\circle*{2}}}[\MultVect\R by\D to\R]%
@@ -1577,7 +1577,7 @@ README.txt and curve2e-v161.sty.
% in our preamble, we add, if not already defined by the package, the two
% new commands that allow to make floating point tests, and to implement
% a “while” cycle\footnote{Thanks to Brian Dunn who spotted a bug in
-% the previous definitions.}
+% the previous version definitions.}
% \begin{macrocode}
%
\ExplSyntaxOn
@@ -1753,8 +1753,8 @@ README.txt and curve2e-v161.sty.
% specific slopes.
%
% It is necessary to redefine the low level macros \cs{moveto},
-% \cs{lineto}, and \cs{curveto}, because their original definition
-% accepts only cartesian coordinates. We proceed the same as for the
+% \cs{lineto}, and \cs{curveto}, because their original definitions
+% accept only cartesian coordinates. We proceed the same as for the
% \cs{put} command.
% \begin{macrocode}
\let\originalmoveto\moveto
@@ -2360,8 +2360,8 @@ README.txt and curve2e-v161.sty.
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{The red service grid}
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% The next command is very useful for debugging while editing one's
-% drawing; it draws a red grid with square meshes that are ten drawing
+% The next command is handy for debugging while editing one's
+% drawing; it draws a red grid with square meshes that are ten drawing
% units apart; there is no graduation along the grid, since it is
% supposed to be a debugging aid and the user should know what he/she is
% doing; nevertheless it is advisable to displace the grid by means of a
@@ -2369,14 +2369,34 @@ README.txt and curve2e-v161.sty.
% coordinates that are multiples of 10. Missing to do so the readings
% become cumbersome. The |\RoundUp| macro provides to increase the
% grid dimensions to integer multiples of ten.
+% Actually the new definition of this command does not need a |put|
+% command (although it is not prohibited to use it) because its syntax
+% now is the following one
+%\begin{flushleft}
+%\cs{GraphGrid}\parg{ll corner offset}\parg{grid dimensions}
+%\end{flushleft}
+% where the first argument is optional: if it is missing, the lower
+% left corner is put at the origin of the canvas coordinates. Of course
+% also the lower left corner offset is recommended to be specified with
+% coordinates that are integer multiples of~10; this is particularly
+% important when the |picture| environment offset is specified wit non
+% integer multiple of~10 values.
+% Actually, since both arguments are delimited with round parentheses,
+% a single argument is assumed to contain the grid dimensions, while
+% if both arguments are given, the first one is the lower left corner
+% offset, and the second one the grid dimensions.
% \begin{macrocode}
-\def\GraphGrid(#1,#2){\bgroup\textcolor{red}{\linethickness{.1\p@}%
+\def\Gr@phGrid(#1,#2){\bgroup\textcolor{red}{\linethickness{.1\p@}%
\RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt
\@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne
\multiput(0,0)(10,0){\@tempcnta}{\line(0,1){\@GridHt}}%
\@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne
\multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}%
\egroup\ignorespaces}
+\NewDocumentCommand\GraphGrid{r() d()}{%
+\IfValueTF{#2}{\put(#1){\Gr@phGrid(#2)}}%
+ {\put(0,0){\Gr@phGrid(#1)}}}
+
% \end{macrocode}
% Rounding up is useful because also the grid margins fall on coordinates
% multiples of 10. It resorts to the |\Integer| macro that will be
@@ -4090,7 +4110,9 @@ ltxdoc.cfg
curve2e.dtx is the documented TeX source file of file curve2e.sty; you
get curve2e.sty, curve2e.pdf, and curve2e-v161.sty by running pdflatex
on curve2e.dtx. The ltxdoc.cfg file customises the way the documentation
-file is typeset. This specific .cfg file is part of the ltxdoc package functionality and it is supposed to be configured for each specifica other bundle.
+file is typeset. This specific .cfg file is part of the ltxdoc package
+functionality and it is supposed to be configured for each specific
+other bundle.
README.txt, this file, contains general information.
@@ -4107,7 +4129,7 @@ slope, to draw arcs and curved vectors, to draw curves where just
the interpolating nodes are specified together with the slopes at
the nodes; closed paths of any shape can be filled with color; all
coordinates are treated as ordered pairs, i.e. 'complex numbers';
-coordinates may be expressed also in polar form.
+coordinates may be expressed also in polar form. Coordinates may be specified with macros, so that editing any drawing is rendered much simpler: any point specified with a macro is modified only once in the macro definition.
Some of these features have been incorporated in the 2011 version of
pict2e; therefore this package avoids any modification to the original
pict2e commands.
@@ -4115,9 +4137,12 @@ pict2e commands.
Curve2e now accepts polar coordinates in addition to the usual cartesian
ones; several macros have been upgraded and a new macro for tracing cubic
Bezier splines with their control nodes specified in polar form is
-available. The same applies to quadratic Bezier splines. The \multiput
+available. The same applies to quadratic Bezier splines. The multiput
command has been completely modified in a backwards compatible way, as
-to manipulate the increment components in a configurable way.
+to manipulate the increment components in a configurable way. A new
+xmultiput command has been defined that is more configurable than the
+original one; both \multiput and \xmultiput are backwards compatible with
+the original picture environment definition.
This version solves a conflict with package eso-pic.
@@ -4137,10 +4162,10 @@ have an older or a basic/incomplete installation of the TeX system,
such L3 functions might not be available. This is why this
package checks the presence of the developer interface; in case
such interface is not available it falls back to the previous version
-renamed curve2e-v161.sty, which is part of this bundle, and that must
-not be renamed in any way. The compatibility mentioned above implies
-that the user macros remain the same, but their implementation requires
-the L3 interface.
+renamed curve2e-v161.sty, which is part of this bundle; this order
+package name must not be modified in any way. The compatibility mentioned
+above implies that the user macros remain the same, but their
+implementation requires the L3 interface.
The package has the LPPL status of author maintained.
diff --git a/macros/latex/contrib/curve2e/curve2e.pdf b/macros/latex/contrib/curve2e/curve2e.pdf
index 3838751099..cd2c9f9c77 100644
--- a/macros/latex/contrib/curve2e/curve2e.pdf
+++ b/macros/latex/contrib/curve2e/curve2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/thesis-ekf/README b/macros/latex/contrib/thesis-ekf/README
index f9878d8e91..65b561ff43 100644
--- a/macros/latex/contrib/thesis-ekf/README
+++ b/macros/latex/contrib/thesis-ekf/README
@@ -1,5 +1,5 @@
thesis-ekf class
-Copyright 2014-2019 by Tibor Tomacs
+Copyright 2014-2020 by Tibor Tomacs
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -28,11 +28,13 @@ The files should be installed in the following subdirectories of the TEXMF tree.
eszterhazy-logo-en.pdf tex/latex/thesis-ekf/
eszterhazy-logo-hu.eps tex/latex/thesis-ekf/
eszterhazy-logo-hu.pdf tex/latex/thesis-ekf/
- README doc/latex/thesis-ekf/
thesis-ekf.cls tex/latex/thesis-ekf/
+
+ README doc/latex/thesis-ekf/
+ thesis-ekf.pdf doc/latex/thesis-ekf/
+
thesis-ekf.dtx source/latex/thesis-ekf/
thesis-ekf.ins source/latex/thesis-ekf/
- thesis-ekf.pdf doc/latex/thesis-ekf/
=============================================================
Thesis class for Eszterhazy Karoly University (Eger, Hungary). \ No newline at end of file
diff --git a/macros/latex/contrib/thesis-ekf/thesis-ekf.dtx b/macros/latex/contrib/thesis-ekf/thesis-ekf.dtx
index 57b39b6db3..c7c3273915 100644
--- a/macros/latex/contrib/thesis-ekf/thesis-ekf.dtx
+++ b/macros/latex/contrib/thesis-ekf/thesis-ekf.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
-% Copyright (C) 2014-2019 by Tibor Tomacs
+% Copyright (C) 2014-2020 by Tibor Tomacs
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.2
@@ -20,7 +20,7 @@
\ProvidesFile{thesis-ekf.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%<class>\ProvidesClass{thesis-ekf}[2019/05/06 v3.1 Thesis class for Eszterhazy Karoly University (Eger, Hungary)]
+%<class>\ProvidesClass{thesis-ekf}[2020/01/05 v3.2 Thesis class for Eszterhazy Karoly University (Eger, Hungary)]
%<class>
%<*driver>
\documentclass{ltxdoc}
@@ -31,10 +31,11 @@
\PassOptionsToPackage{active=onlycs}{magyar.ldf}
\usepackage[english,magyar]{babel}
\frenchspacing
-\usepackage{paralist,textcomp,fancyvrb}
+\usepackage{lmodern,paralist,textcomp,fancyvrb}
\setlength{\MacroTopsep}{0pt}
\fvset{gobble=1,fontsize=\footnotesize,commandchars=+<>}
\newcommand{\param}[1]{\hspace*{-9pt}{\small#1}}
+\renewcommand{\bfdefault}{b}
\begin{document}
\DocInput{./thesis-ekf.dtx}
\end{document}
@@ -58,7 +59,7 @@
% Right brace \} Tilde \~}
%
% \GetFileInfo{thesis-ekf.cls}
-% \title{Thesis class for\\ Eszterházy Károly University\\\textsf{thesis-ekf.cls}\\[2mm]{\normalsize Version 3.1\\2019/05/06\\}}
+% \title{Thesis class for\\ Eszterházy Károly University\\\textsf{thesis-ekf.cls}\\[2mm]{\normalsize Version 3.2\\2020/01/05\\}}
% \author{Tibor Tómács\\{\small\ttfamily tomacs.tibor@uni-eszterhazy.hu}}
% \date{}
% \maketitle
@@ -145,7 +146,7 @@
%
%\begin{Verbatim}
%\documentclass{thesis-ekf}
-%\usepackage[utf8]{inputenc}% Ez a sor csak 2018 előtt telepített TeX-rendszer esetén kell.
+%\usepackage[utf8]{inputenc}% Csak 2018 előtt telepített TeX-rendszer esetén kell!
%\usepackage[T1]{fontenc}
%\PassOptionsToPackage{defaults=hu-min}{magyar.ldf}
%\usepackage[magyar]{babel}
@@ -157,7 +158,7 @@
%\author{Hallgató neve\\szak}
%\supervisor{Konzulens neve\\beosztás}
%\city{Eger}
-%\date{2019}
+%\date{2020}
%\maketitle
%
%\tableofcontents
@@ -369,6 +370,8 @@
\AfterEndPreamble{
+\@ifundefined{l@magyar}{}{\iflanguage{magyar}{\renewcommand{\bfdefault}{b}}{}}
+
\ifthesisekf@tocnopagenum
\hypersetup{pageanchor=false}
\let\thesisekf@tableofcontents\tableofcontents
diff --git a/macros/latex/contrib/thesis-ekf/thesis-ekf.ins b/macros/latex/contrib/thesis-ekf/thesis-ekf.ins
index 949577a5ec..aa2c4df9c9 100644
--- a/macros/latex/contrib/thesis-ekf/thesis-ekf.ins
+++ b/macros/latex/contrib/thesis-ekf/thesis-ekf.ins
@@ -1,5 +1,5 @@
-% Copyright (C) 2014-2019 by Tibor Tomacs
+% Copyright (C) 2014-2020 by Tibor Tomacs
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.2 of this license or (at your option) any later
@@ -15,7 +15,7 @@
\usedir{tex/latex/thesis-ekf}
\preamble
This is a generated file.
-Copyright (C) 2014-2019 by Tibor Tomacs
+Copyright (C) 2014-2020 by Tibor Tomacs
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
version 1.2 of this license or (at your option) any later
diff --git a/macros/latex/contrib/thesis-ekf/thesis-ekf.pdf b/macros/latex/contrib/thesis-ekf/thesis-ekf.pdf
index 595f51fca0..e165f10b15 100644
--- a/macros/latex/contrib/thesis-ekf/thesis-ekf.pdf
+++ b/macros/latex/contrib/thesis-ekf/thesis-ekf.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/Makefile b/macros/latex/contrib/thuthesis/Makefile
index 95f4036008..f3dd43cc77 100644
--- a/macros/latex/contrib/thuthesis/Makefile
+++ b/macros/latex/contrib/thuthesis/Makefile
@@ -1,73 +1,74 @@
# Makefile for ThuThesis
-# Set opts for latexmk if you use it
-LATEXMKOPTS = -xelatex -file-line-error -halt-on-error -interaction=nonstopmode
-# Basename of thesis
-THESISMAIN = main
-# Basename of shuji
-SHUJIMAIN = shuji
-
-PACKAGE=thuthesis
-SOURCES=$(PACKAGE).ins $(PACKAGE).dtx
-THESISCONTENTS=$(THESISMAIN).tex data/*.tex $(FIGURES)
-# NOTE: update this to reflect your local file types.
-FIGURES=$(wildcard figures/*.pdf)
-BIBFILE=ref/*.bib
-BSTFILE=*.bst
-SHUJICONTENTS=$(SHUJIMAIN).tex
-CLSFILES=dtx-style.sty $(PACKAGE).cls
+PACKAGE = thuthesis
+THESIS = main
+SPINE = spine
+
+SOURCES = $(PACKAGE).ins $(PACKAGE).dtx
+CLSFILE = dtx-style.sty $(PACKAGE).cls
+
+LATEXMK = latexmk
# make deletion work on Windows
ifdef SystemRoot
RM = del /Q
- OPEN = start
else
RM = rm -f
- OPEN = open
endif
-.PHONY: all clean distclean dist thesis viewthesis shuji viewshuji doc viewdoc cls check FORCE_MAKE
+.PHONY: all all-dev clean distclean dist thesis viewthesis spine viewspine doc viewdoc cls check save savepdf test FORCE_MAKE
-all: doc thesis shuji
+thesis: $(THESIS).pdf
-cls: $(CLSFILES)
+all: thesis spine
-$(CLSFILES): $(SOURCES)
- xetex $(PACKAGE).ins
+all-dev: doc all
-viewdoc: doc
- $(OPEN) $(PACKAGE).pdf
+cls: $(CLSFILE)
+
+$(CLSFILE): $(SOURCES)
+ xetex $(PACKAGE).ins
doc: $(PACKAGE).pdf
-viewthesis: thesis
- $(OPEN) $(THESISMAIN).pdf
+spine: $(SPINE).pdf
+
+$(PACKAGE).pdf: cls FORCE_MAKE
+ $(LATEXMK) $(PACKAGE).dtx
+
+$(THESIS).pdf: cls FORCE_MAKE
+ $(LATEXMK) $(THESIS)
-thesis: $(THESISMAIN).pdf
+$(SPINE).pdf: cls FORCE_MAKE
+ $(LATEXMK) $(SPINE)
-viewshuji: shuji
- $(OPEN) $(SHUJIMAIN).pdf
+viewdoc: doc
+ $(LATEXMK) -pv $(PACKAGE).dtx
+
+viewthesis: thesis
+ $(LATEXMK) -pv $(THESIS)
-shuji: $(SHUJIMAIN).pdf
+viewspine: spine
+ $(LATEXMK) -pv $(SPINE)
-$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex FORCE_MAKE
- latexmk $(LATEXMKOPTS) $(PACKAGE).dtx
+save:
+ bash testfiles/save.sh
-$(THESISMAIN).pdf: $(CLSFILES) $(BSTFILE) FORCE_MAKE
- latexmk $(LATEXMKOPTS) $(THESISMAIN)
+savepdf:
+ bash testfiles/save-pdf.sh
-$(SHUJIMAIN).pdf: $(CLSFILES) FORCE_MAKE
- latexmk $(LATEXMKOPTS) $(SHUJIMAIN)
+test:
+ l3build check
clean:
- latexmk -c $(PACKAGE).dtx $(THESISMAIN) $(SHUJIMAIN)
- -@$(RM) *~
+ $(LATEXMK) -c $(PACKAGE).dtx $(THESIS) $(SPINE)
+ -@$(RM) *~ main-survey.*
cleanall: clean
- -@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf $(SHUJIMAIN).pdf
+ -@$(RM) $(PACKAGE).pdf $(THESIS).pdf $(SPINE).pdf
distclean: cleanall
- -@$(RM) $(CLSFILES)
+ -@$(RM) $(CLSFILE)
-@$(RM) -r dist
check: FORCE_MAKE
@@ -78,5 +79,5 @@ else
@[[ $(shell grep -E -c '"version": "$(version)"' package.json) -eq 1 ]] || (echo "update version in package.json before release"; exit 1)
endif
-dist: check all
+dist: check all-dev
npm run build -- --version=$(version)
diff --git a/macros/latex/contrib/thuthesis/README.md b/macros/latex/contrib/thuthesis/README.md
index ff9a88378d..3691ac56b6 100644
--- a/macros/latex/contrib/thuthesis/README.md
+++ b/macros/latex/contrib/thuthesis/README.md
@@ -1,18 +1,20 @@
-[![Build Status](https://travis-ci.org/xueruini/thuthesis.svg?branch=master)](https://travis-ci.org/xueruini/thuthesis)
+[![Actions Status](https://github.com/xueruini/thuthesis/workflows/build/badge.svg)](https://github.com/xueruini/thuthesis/actions)
[![Join the chat at https://gitter.im/thuthesis/Lobby](https://badges.gitter.im/thuthesis/Lobby.svg)](https://gitter.im/thuthesis/Lobby)
-[![Github downloads](https://img.shields.io/github/downloads/xueruini/thuthesis/total.svg)](https://github.com/xueruini/thuthesis/releases)
-[![GitHub release](https://img.shields.io/github/release/xueruini/thuthesis/all.svg)](https://github.com/xueruini/thuthesis/releases/latest)
-[![GitHub commits](https://img.shields.io/github/commits-since/xueruini/thuthesis/latest.svg)](https://github.com/xueruini/thuthesis/commits/master)
+[![GitHub downloads](https://img.shields.io/github/downloads/xueruini/thuthesis/total)](https://github.com/xueruini/thuthesis/releases)
+[![GitHub commits](https://img.shields.io/github/commits-since/xueruini/thuthesis/latest)](https://github.com/xueruini/thuthesis/commits/master)
+[![GitHub release](https://img.shields.io/github/v/release/xueruini/thuthesis)](https://github.com/xueruini/thuthesis/releases/latest)
+[![CTAN](https://img.shields.io/ctan/v/thuthesis)](https://www.ctan.org/pkg/thuthesis)
# What's ThuThesis?
ThuThesis is an abbreviation of <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template.
-This package establishes a simple and easy-to-use LaTeX template for Tsinghua dissertations, including general undergraduate research papers, masters theses, doctoral theses, doctoral dissertations, and post-doc reports. Additional support for other formats (what else is there?) will be added continuously. An English translation of this README follows the Chinese below.
+This package establishes a simple and easy-to-use LaTeX template for Tsinghua dissertations, including general undergraduate research papers, masters theses, doctoral dissertations, and postdoctoral reports. An English translation of this README follows the Chinese below.
+
# ThuThesis是什么?
ThuThesis为 <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template之缩写。
-此宏包旨在建立一个简单易用的清华大学学位论文LaTeX模板,包括本科综合论文训练、硕士论文、博士论文、博士哲学论文以及博士后出站报告。现在支持本科、硕士、博士论文、博士后出站报告格式,对其它格式(还有么?)的支持会陆续加入。
+此宏包旨在建立一个简单易用的清华大学学位论文LaTeX模板,包括本科综合论文训练、硕士论文、博士论文以及博士后出站报告。
# 文档
请[下载](https://github.com/xueruini/thuthesis/releases)模板,里面包括具体使用说明以及示例文档:
@@ -21,12 +23,12 @@ ThuThesis为 <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Templa
* 示例文档 (main.pdf)
# 下载
-* 发行版:[CTAN](http://www.ctan.org/pkg/thuthesis)
+* 发行版:[CTAN](https://www.ctan.org/pkg/thuthesis)
* 开发版:[GitHub](https://github.com/xueruini/thuthesis)
# 升级
## 自动更新
-通过 TeX 发行版工具自动从 [CTAN](http://www.ctan.org/pkg/thuthesis) 更新。
+通过 TeX 发行版工具自动从 [CTAN](https://www.ctan.org/pkg/thuthesis) 更新。
## 手动更新
从 [GitHub](https://github.com/xueruini/thuthesis) 下载放入论文目录,执行命令(Windows 用户在文件夹空白处按`Shift+鼠标右键`,点击“在此处打开命令行窗口”):
@@ -39,22 +41,19 @@ ThuThesis为 <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Templa
按推荐顺序排序:
* 先到 [FAQ](https://github.com/xueruini/thuthesis/wiki/FAQ) 看看常见问题
-* [Github Issues](http://github.com/xueruini/thuthesis/issues)
-* [TeX@newsmth](http://www.newsmth.net/nForum/#!board/TeX)
-* [ThuThesis@Google Groups](http://groups.google.com/group/thuthesis)
+* [GitHub Issues](https://github.com/xueruini/thuthesis/issues)
# Makefile的用法
```shell
-make [{all|thesis|shuji|doc|clean|cleanall|distclean}]
+make [{all|thesis|spine|doc|clean|cleanall|distclean}]
```
## 目标
-* `make all` 等于 `make thesis && make shuji && make doc`;
-* `make cls` 生成模板文件;
* `make thesis` 生成论文 main.pdf;
-* `make shuji` 生成书脊 shuji.pdf;
-* `make doc` 生成使用说明书 thuthesis.pdf;
+* `make spine` 生成书脊 spine.pdf;
+* `make doc` 生成模板使用说明书 thuthesis.pdf;
+* `make all` 生成论文和书籍,相当于 `make thesis && make spine`;
* `make clean` 删除示例文件的中间文件(不含 main.pdf);
* `make cleanall` 删除示例文件的中间文件和 main.pdf;
* `make distclean` 删除示例文件和模板的所有中间文件和 PDF。
@@ -65,12 +64,12 @@ Download and unzip the template. Specific usage documentation and examples can b
* Template example (main.pdf)
# Downloads
-* Published version: [CTAN](http://www.ctan.org/pkg/thuthesis)
+* Published version: [CTAN](https://www.ctan.org/pkg/thuthesis)
* Developer version: [GitHub](https://github.com/xueruini/thuthesis)
# Updates
## Automatic
-Get the most up-to-date published version of the TeX tools from [CTAN](http://www.ctan.org/pkg/thuthesis).
+Get the most up-to-date published version of the TeX tools from [CTAN](https://www.ctan.org/pkg/thuthesis).
## Manual
Download the package from [GitHub](https://github.com/xueruini/thuthesis) to the root directory of your thesis, then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here from the popup menu"):
@@ -82,23 +81,20 @@ You'll get `thuthesis.cls` along with other template files.
# Reporting Issues
Please follow the procedure below:
-* Check the [FAQ](https://github.com/xueruini/thuthesis/wiki/FAQ)
-* [Github Issues](http://github.com/xueruini/thuthesis/issues)
-* [TeX@newsmth](http://www.newsmth.net/nForum/#!board/TeX)
-* [ThuThesis@Google Groups](http://groups.google.com/group/thuthesis)
+* Check the [FAQ](https://github.com/xueruini/thuthesis/wiki/FAQ)
+* [GitHub Issues](https://github.com/xueruini/thuthesis/issues)
# Makefile Usage
```shell
-make [{all|thesis|shuji|doc|clean|cleanall|distclean}]
+make [{all|thesis|spine|doc|clean|cleanall|distclean}]
```
## Targets
-* `make all` same as `make thesis && make shuji && make doc`;
-* `make cls` generate template file;
* `make thesis` generate thesis main.pdf;
-* `make shuji` generate book spine for printing shuji.pdf;
-* `make doc` generate documentation thuthesis.pdf;
+* `make spine` generate book spine for printing spine.pdf;
+* `make doc` generate template documentation thuthesis.pdf;
+* `make all` generate thesis and spine, same as `make thesis && make spine`;
* `make clean` delete all examples' files (excluding main.pdf);
* `make cleanall` delete all examples' files and main.pdf;
* `make distclean` delete all examples' and templates' files and PDFs.
diff --git a/macros/latex/contrib/thuthesis/data/abstract.tex b/macros/latex/contrib/thuthesis/data/abstract.tex
new file mode 100644
index 0000000000..a7737b5168
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/data/abstract.tex
@@ -0,0 +1,55 @@
+% !TeX root = ../main.tex
+
+% 中英文摘要和关键字
+
+\begin{abstract}
+ 论文的摘要是对论文研究内容和成果的高度概括。摘要应对论文所研究的问题及其研究目
+ 的进行描述,对研究方法和过程进行简单介绍,对研究成果和所得结论进行概括。摘要应
+ 具有独立性和自明性,其内容应包含与论文全文同等量的主要信息。使读者即使不阅读全
+ 文,通过摘要就能了解论文的总体内容和主要成果。
+
+ 论文摘要的书写应力求精确、简明。切忌写成对论文书写内容进行提要的形式,尤其要避
+ 免“第 1 章……;第 2 章……;……”这种或类似的陈述方式。
+
+ 本文介绍清华大学论文模板 \thuthesis{} 的使用方法。本模板符合学校的本科、硕士、
+ 博士论文格式要求。
+
+ 本文的创新点主要有:
+ \begin{itemize}
+ \item 用例子来解释模板的使用方法;
+ \item 用废话来填充无关紧要的部分;
+ \item 一边学习摸索一边编写新代码。
+ \end{itemize}
+
+ 关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。关键词不超过 5
+ 个,每个关键词中间用分号分隔。(模板作者注:关键词分隔符不用考虑,模板会自动处
+ 理。英文关键词同理。)
+
+ % 关键词用“英文逗号”分隔
+ \thusetup{
+ keywords = {TeX, LaTeX, CJK, 模板, 论文},
+ }
+\end{abstract}
+
+\begin{abstract*}
+ An abstract of a dissertation is a summary and extraction of research work
+ and contributions. Included in an abstract should be description of research
+ topic and research objective, brief introduction to methodology and research
+ process, and summarization of conclusion and contributions of the
+ research. An abstract should be characterized by independence and clarity and
+ carry identical information with the dissertation. It should be such that the
+ general idea and major contributions of the dissertation are conveyed without
+ reading the dissertation.
+
+ An abstract should be concise and to the point. It is a misunderstanding to
+ make an abstract an outline of the dissertation and words ``the first
+ chapter'', ``the second chapter'' and the like should be avoided in the
+ abstract.
+
+ Key words are terms used in a dissertation for indexing, reflecting core
+ information of the dissertation. An abstract may contain a maximum of 5 key
+ words, with semi-colons used in between to separate one another.
+ \thusetup{
+ keywords* = {TeX, LaTeX, CJK, template, thesis},
+ }
+\end{abstract*}
diff --git a/macros/latex/contrib/thuthesis/data/ack.tex b/macros/latex/contrib/thuthesis/data/acknowledgements.tex
index bdab98fb98..0ef68793d5 100644
--- a/macros/latex/contrib/thuthesis/data/ack.tex
+++ b/macros/latex/contrib/thuthesis/data/acknowledgements.tex
@@ -1,6 +1,6 @@
-% 如果使用声明扫描页,将可选参数指定为扫描后的 PDF 文件名,例如:
-% \begin{acknowledgement}[scan-statement.pdf]
-\begin{acknowledgement}
+% !TeX root = ../main.tex
+
+\begin{acknowledgements}
衷心感谢导师 xxx 教授和物理系 xxx 副教授对本人的精心指导。他们的言传身教将使
我终生受益。
@@ -8,5 +8,5 @@
胜感激。感谢 xx 实验室主任 xx 教授,以及实验室全体老师和同学们的热情帮助和支
持!本课题承蒙国家自然科学基金资助,特此致谢。
- 感谢 \LaTeX 和 \thuthesis\cite{thuthesis},帮我节省了不少时间。
-\end{acknowledgement}
+ 感谢 \LaTeX{} 和 \thuthesis\cite{thuthesis},帮我节省了不少时间。
+\end{acknowledgements}
diff --git a/macros/latex/contrib/thuthesis/data/appendix-survey.tex b/macros/latex/contrib/thuthesis/data/appendix-survey.tex
new file mode 100644
index 0000000000..4a753f5211
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/data/appendix-survey.tex
@@ -0,0 +1,172 @@
+% !TeX root = ../main.tex
+
+\begin{survey}
+\label{cha:survey}
+
+\title{Title of the Survey}
+\maketitle
+
+写出至少 5000 外文印刷字符的调研阅读报告或者书面翻译 1-2 篇(不少于 2 万外文印刷符)。
+
+It is impossible to cover in a single chapter every concept of mathematical
+programming.\cite{tex} This chapter introduces only the basic concepts and techniques of
+mathematical programming such that readers gain an understanding of them
+throughout the book\cite{abrahams99tex,salomon1995advanced}.
+
+
+\section{Single-Objective Programming}
+The general form of single-objective programming (SOP) is written
+as follows,
+\begin{equation*} % 如果附录中的公式不想让它出现在公式索引中,那就请
+ % 用 equation*
+\left\{\begin{array}{l}
+\max \,\,f(x)\\[0.1 cm]
+\mbox{subject to:} \\ [0.1 cm]
+\qquad g_j(x)\le 0,\quad j=1,2,\cdots,p
+\end{array}\right.
+\end{equation*}
+which maximizes a real-valued function $f$ of
+$x=(x_1,x_2,\cdots,x_n)$ subject to a set of constraints.
+
+\newcommand\Real{\mathbf{R}}
+\newtheorem{mpdef}{Definition}[chapter]
+\begin{mpdef}
+In SOP, we call $x$ a decision vector, and
+$x_1,x_2,\cdots,x_n$ decision variables. The function
+$f$ is called the objective function. The set
+\begin{equation*}
+S=\left\{x\in\Real^n\bigm|g_j(x)\le 0,\,j=1,2,\cdots,p\right\}
+\end{equation*}
+is called the feasible set. An element $x$ in $S$ is called a
+feasible solution.
+\end{mpdef}
+
+\newtheorem{mpdefop}[mpdef]{Definition}
+\begin{mpdefop}
+A feasible solution $x^*$ is called the optimal
+solution of SOP if and only if
+\begin{equation}
+f(x^*)\ge f(x)
+\end{equation}
+for any feasible solution $x$.
+\end{mpdefop}
+
+One of the outstanding contributions to mathematical programming was known as
+the Kuhn-Tucker conditions\ref{eq:ktc}. In order to introduce them, let us give
+some definitions. An inequality constraint $g_j(x)\le 0$ is said to be active at
+a point $x^*$ if $g_j(x^*)=0$. A point $x^*$ satisfying $g_j(x^*)\le 0$ is said
+to be regular if the gradient vectors $\nabla g_j(x)$ of all active constraints
+are linearly independent.
+
+Let $x^*$ be a regular point of the constraints of SOP and assume that all the
+functions $f(x)$ and $g_j(x),j=1,2,\cdots,p$ are differentiable. If $x^*$ is a
+local optimal solution, then there exist Lagrange multipliers
+$\lambda_j,j=1,2,\cdots,p$ such that the following Kuhn-Tucker conditions hold,
+\begin{equation}
+\label{eq:ktc}
+\left\{\begin{array}{l}
+ \nabla f(x^*)-\sum\limits_{j=1}^p\lambda_j\nabla g_j(x^*)=0\\[0.3cm]
+ \lambda_jg_j(x^*)=0,\quad j=1,2,\cdots,p\\[0.2cm]
+ \lambda_j\ge 0,\quad j=1,2,\cdots,p.
+\end{array}\right.
+\end{equation}
+If all the functions $f(x)$ and $g_j(x),j=1,2,\cdots,p$ are convex and
+differentiable, and the point $x^*$ satisfies the Kuhn-Tucker conditions
+(\ref{eq:ktc}), then it has been proved that the point $x^*$ is a global optimal
+solution of SOP.
+
+\subsection{Linear Programming}
+\label{sec:lp}
+
+If the functions $f(x),g_j(x),j=1,2,\cdots,p$ are all linear, then SOP is called
+a {\em linear programming}.
+
+The feasible set of linear is always convex. A point $x$ is called an extreme
+point of convex set $S$ if $x\in S$ and $x$ cannot be expressed as a convex
+combination of two points in $S$. It has been shown that the optimal solution to
+linear programming corresponds to an extreme point of its feasible set provided
+that the feasible set $S$ is bounded. This fact is the basis of the {\em simplex
+ algorithm} which was developed by Dantzig as a very efficient method for
+solving linear programming.
+\begin{table}[ht]
+\centering
+ \centering
+ \caption*{Table~1\hskip1em This is an example for manually numbered table, which
+ would not appear in the list of tables}
+ \label{tab:badtabular2}
+ \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
+ \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
+ \multicolumn{3}{c|}{\# of clients} & Server \\\hline
+ GT-ITM & Waxman Transit-Stub & 600 &
+ \multirow{2}{2em}{2\%}&
+ \multirow{2}{2em}{10\%}&
+ \multirow{2}{2em}{50\%}&
+ \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
+ \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
+ \multirow{2}{1.5cm}{Xue} & Rui & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
+ & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+Roughly speaking, the simplex algorithm examines only the extreme points of the
+feasible set, rather than all feasible points. At first, the simplex algorithm
+selects an extreme point as the initial point. The successive extreme point is
+selected so as to improve the objective function value. The procedure is
+repeated until no improvement in objective function value can be made. The last
+extreme point is the optimal solution.
+
+\subsection{Nonlinear Programming}
+
+If at least one of the functions $f(x),g_j(x),j=1,2,\cdots,p$ is nonlinear, then
+SOP is called a {\em nonlinear programming}.
+
+A large number of classical optimization methods have been developed to treat
+special-structural nonlinear programming based on the mathematical theory
+concerned with analyzing the structure of problems.
+\begin{figure}[h]
+ \centering
+ \includegraphics{thu-lib-logo.pdf}
+ \caption*{Figure~1\quad This is an example for manually numbered figure,
+ which would not appear in the list of figures}
+ \label{tab:badfigure2}
+\end{figure}
+
+Now we consider a nonlinear programming which is confronted solely with
+maximizing a real-valued function with domain $\Real^n$. Whether derivatives are
+available or not, the usual strategy is first to select a point in $\Real^n$ which
+is thought to be the most likely place where the maximum exists. If there is no
+information available on which to base such a selection, a point is chosen at
+random. From this first point an attempt is made to construct a sequence of
+points, each of which yields an improved objective function value over its
+predecessor. The next point to be added to the sequence is chosen by analyzing
+the behavior of the function at the previous points. This construction continues
+until some termination criterion is met. Methods based upon this strategy are
+called {\em ascent methods}, which can be classified as {\em direct methods},
+{\em gradient methods}, and {\em Hessian methods} according to the information
+about the behavior of objective function $f$. Direct methods require only that
+the function can be evaluated at each point. Gradient methods require the
+evaluation of first derivatives of $f$. Hessian methods require the evaluation
+of second derivatives. In fact, there is no superior method for all
+problems. The efficiency of a method is very much dependent upon the objective
+function.
+
+\subsection{Integer Programming}
+
+{\em Integer programming} is a special mathematical programming in which all of
+the variables are assumed to be only integer values. When there are not only
+integer variables but also conventional continuous variables, we call it {\em
+ mixed integer programming}. If all the variables are assumed either 0 or 1,
+then the problem is termed a {\em zero-one programming}. Although integer
+programming can be solved by an {\em exhaustive enumeration} theoretically, it
+is impractical to solve realistically sized integer programming problems. The
+most successful algorithm so far found to solve integer programming is called
+the {\em branch-and-bound enumeration} developed by Balas (1965) and Dakin
+(1965). The other technique to integer programming is the {\em cutting plane
+ method} developed by Gomory (1959).
+
+\hfill\textit{Uncertain Programming\/}\quad(\textsl{BaoDing Liu, 2006.2})
+
+\bibliographystyle{plainnat}
+\bibliography{ref/refs,ref/appendix}
+
+\end{survey}
diff --git a/macros/latex/contrib/thuthesis/data/appendix-translation.tex b/macros/latex/contrib/thuthesis/data/appendix-translation.tex
new file mode 100644
index 0000000000..f085815300
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/data/appendix-translation.tex
@@ -0,0 +1,96 @@
+% !TeX root = ../main.tex
+
+\begin{translation}
+\label{cha:translation}
+
+\title{书面翻译题目}
+\maketitle
+
+\section{单目标规划}
+北冥有鱼,其名为鲲。鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几
+千里也。怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。
+\begin{equation}\tag*{(123)}
+ p(y|\mathbf{x}) = \frac{p(\mathbf{x},y)}{p(\mathbf{x})}=
+\frac{p(\mathbf{x}|y)p(y)}{p(\mathbf{x})}
+\end{equation}
+
+吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为
+恶无近刑,缘督以为经,可以保身,可以全生,可以养亲,可以尽年。
+
+\subsection{线性规划}
+庖丁为文惠君解牛,手之所触,肩之所倚,足之所履,膝之所倚,砉然响然,奏刀騞然,莫
+不中音,合于桑林之舞,乃中经首之会。
+\begin{table}[ht]
+\centering
+ \centering
+ \caption*{表~1\hskip1em 这是手动编号但不出现在索引中的一个表格例子}
+ \label{tab:badtabular3}
+ \begin{tabular}[c]{|m{1.5cm}|c|c|c|c|c|c|}\hline
+ \multicolumn{2}{|c|}{Network Topology} & \# of nodes &
+ \multicolumn{3}{c|}{\# of clients} & Server \\\hline
+ GT-ITM & Waxman Transit-Stub & 600 &
+ \multirow{2}{2em}{2\%}&
+ \multirow{2}{2em}{10\%}&
+ \multirow{2}{2em}{50\%}&
+ \multirow{2}{1.2in}{Max. Connectivity}\\\cline{1-3}
+ \multicolumn{2}{|c|}{Inet-2.1} & 6000 & & & &\\\hline
+ \multirow{2}{1.5cm}{Xue} & Rui & Ni &\multicolumn{4}{c|}{\multirow{2}*{\thuthesis}}\\\cline{2-3}
+ & \multicolumn{2}{c|}{ABCDEF} &\multicolumn{4}{c|}{} \\\hline
+\end{tabular}
+\end{table}
+
+文惠君曰:“嘻,善哉!技盖至此乎?”庖丁释刀对曰:“臣之所好者道也,进乎技矣。始臣之
+解牛之时,所见无非全牛者;三年之后,未尝见全牛也;方今之时,臣以神遇而不以目视,
+官知止而神欲行。依乎天理,批大郤,导大窾,因其固然。技经肯綮之未尝,而况大坬乎!
+良庖岁更刀,割也;族庖月更刀,折也;今臣之刀十九年矣,所解数千牛矣,而刀刃若新发
+于硎。彼节者有间而刀刃者无厚,以无厚入有间,恢恢乎其于游刃必有余地矣。是以十九年
+而刀刃若新发于硎。虽然,每至于族,吾见其难为,怵然为戒,视为止,行为迟,动刀甚微,
+謋然已解,如土委地。提刀而立,为之而四顾,为之踌躇满志,善刀而藏之。”
+
+文惠君曰:“善哉!吾闻庖丁之言,得养生焉。”
+
+
+\subsection{非线性规划}
+孔子与柳下季为友,柳下季之弟名曰盗跖。盗跖从卒九千人,横行天下,侵暴诸侯。穴室枢
+户,驱人牛马,取人妇女。贪得忘亲,不顾父母兄弟,不祭先祖。所过之邑,大国守城,小
+国入保,万民苦之。孔子谓柳下季曰:“夫为人父者,必能诏其子;为人兄者,必能教其弟。
+若父不能诏其子,兄不能教其弟,则无贵父子兄弟之亲矣。今先生,世之才士也,弟为盗
+跖,为天下害,而弗能教也,丘窃为先生羞之。丘请为先生往说之。”
+\begin{figure}[h]
+ \centering
+ \includegraphics{thu-whole-logo.pdf}
+ \caption*{图~1\hskip1em 这是手动编号但不出现索引中的图片的例子}
+ \label{tab:badfigure3}
+\end{figure}
+
+柳下季曰:“先生言为人父者必能诏其子,为人兄者必能教其弟,若子不听父之诏,弟不受
+兄之教,虽今先生之辩,将奈之何哉?且跖之为人也,心如涌泉,意如飘风,强足以距敌,
+辩足以饰非。顺其心则喜,逆其心则怒,易辱人以言。先生必无往。”
+
+孔子不听,颜回为驭,子贡为右,往见盗跖。
+
+\subsection{整数规划}
+盗跖乃方休卒徒大山之阳,脍人肝而餔之。孔子下车而前,见谒者曰:“鲁人孔丘,闻将军
+高义,敬再拜谒者。”谒者入通。盗跖闻之大怒,目如明星,发上指冠,曰:“此夫鲁国之
+巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
+说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
+作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”
+
+
+\nocite{abrahams99tex,salomon1995advanced}
+\bibliographystyle{plainnat}
+\bibliography{ref/appendix}
+
+% 也可以使用 thebiliography 环境手写
+% \begin{thebibliography}{2}
+% \bibitem{abrahams99tex}
+% P.~W. Abrahams, K.~Berry, and K.~A. Hargreaves, \emph{{\TeX} for the
+% Impatient}.\hskip 1em plus 0.5em minus 0.4em\relax Addison-Wesley, 1990.
+
+% \bibitem{salomon1995advanced}
+% D.~Salomon, ``The advanced {\TeX}book.''\hskip 1em plus 0.5em minus 0.4em\relax
+% New York: Springer, 1995.
+% \end{thebibliography}
+
+
+\end{translation}
diff --git a/macros/latex/contrib/thuthesis/data/appendix01.tex b/macros/latex/contrib/thuthesis/data/appendix.tex
index f34536ed5b..94a4a0595c 100644
--- a/macros/latex/contrib/thuthesis/data/appendix01.tex
+++ b/macros/latex/contrib/thuthesis/data/appendix.tex
@@ -1,20 +1,17 @@
-\chapter{外文资料原文}
-\label{cha:engorg}
+\chapter{单目标规划}
-\title{The title of the English paper}
-
-\textbf{Abstract:} As one of the most widely used techniques in operations
+As one of the most widely used techniques in operations
research, \emph{ mathematical programming} is defined as a means of maximizing a
quantity known as \emph{bjective function}, subject to a set of constraints
represented by equations and inequalities. Some known subtopics of mathematical
programming are linear programming, nonlinear programming, multiobjective
programming, goal programming, dynamic programming, and multilevel
-programming$^{[1]}$.
+programming.
It is impossible to cover in a single chapter every concept of mathematical
programming. This chapter introduces only the basic concepts and techniques of
mathematical programming such that readers gain an understanding of them
-throughout the book$^{[2,3]}$.
+throughout the book.
\section{Single-Objective Programming}
@@ -169,24 +166,6 @@ the {\em branch-and-bound enumeration} developed by Balas (1965) and Dakin
\hfill\textit{Uncertain Programming\/}\quad(\textsl{BaoDing Liu, 2006.2})
-\section*{References}
-\noindent{\itshape NOTE: These references are only for demonstration. They are
- not real citations in the original text.}
-
-\begin{translationbib}
-\item Donald E. Knuth. The \TeX book. Addison-Wesley, 1984. ISBN: 0-201-13448-9
-\item Paul W. Abrahams, Karl Berry and Kathryn A. Hargreaves. \TeX\ for the
- Impatient. Addison-Wesley, 1990. ISBN: 0-201-51375-7
-\item David Salomon. The advanced \TeX book. New York : Springer, 1995. ISBN:0-387-94556-3
-\end{translationbib}
-
-\chapter{外文资料的调研阅读报告或书面翻译}
-
-\title{英文资料的中文标题}
-
-{\heiti 摘要:} 本章为外文资料翻译内容。如果有摘要可以直接写上来,这部分好像没有
-明确的规定。
-
\section{单目标规划}
北冥有鱼,其名为鲲。鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几
千里也。怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。
@@ -256,8 +235,3 @@ the {\em branch-and-bound enumeration} developed by Balas (1965) and Dakin
巧伪人孔丘非邪?为我告之:尔作言造语,妄称文、武,冠枝木之冠,带死牛之胁,多辞缪
说,不耕而食,不织而衣,摇唇鼓舌,擅生是非,以迷天下之主,使天下学士不反其本,妄
作孝弟,而侥幸于封侯富贵者也。子之罪大极重,疾走归!不然,我将以子肝益昼餔之膳。”
-
-
-\chapter{其它附录}
-前面两个附录主要是给本科生做例子。其它附录的内容可以放到这里,当然如果你愿意,可
-以把这部分也放到独立的文件中,然后将其 \cs{input} 到主文件中。
diff --git a/macros/latex/contrib/thuthesis/data/chap01.tex b/macros/latex/contrib/thuthesis/data/chap01.tex
index 7277f2fb25..e1ab5e19d8 100644
--- a/macros/latex/contrib/thuthesis/data/chap01.tex
+++ b/macros/latex/contrib/thuthesis/data/chap01.tex
@@ -1,3 +1,5 @@
+% !TeX root = ../main.tex
+
\chapter{带 English 的标题}
\label{cha:intro}
@@ -68,7 +70,7 @@
\subsection{基本表格}
\label{sec:basictable}
-模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtabular},命
+模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtable},命
令有一个 \cs{hlinewd}。三线表可以用 \pkg{booktabs} 提供
的 \cs{toprule}、\cs{midrule} 和 \cs{bottomrule}。它们与 \pkg{longtable} 能很好的
配合使用。如果表格比较简单的话可以直接用命令 \cs{hlinewd}\marg{width} 控制。
@@ -85,9 +87,9 @@
thuthesis.ins & \LaTeX{} 安装文件,DocStrip\footnote{表格中的脚注} \\
thuthesis.dtx & 所有的一切都在这里面\footnote{再来一个}。\\
thuthesis.cls & 模板类文件。\\
- thuthesis-numeric.bst & 参考文献 Bib\TeX\ 样式文件。\\
- thuthesis-author-year.bst & 参考文献 Bib\TeX\ 样式文件。\\
- thuthesis.sty & 常用的包和命令写在这里,减轻主文件的负担。\\
+ thuthesis-numeric.bst & 参考文献 BibTeX 样式文件。\\
+ thuthesis-author-year.bst & 参考文献 BibTeX 样式文件。\\
+ thusetup.tex & 基本配置和常用的包、命令,减轻主文件的负担。\\
\bottomrule[1.5pt]
\end{tabularx}
\end{minipage}
@@ -286,9 +288,9 @@ EP.B.8 & 126.74 & 0.003 & 0.017 & 0.005 & 0.083 & 1656 \\
\bottomrule[1.5pt]
\end{longtable}
-要想用好论文模板还是得提前学习一些 \TeX/\LaTeX{}的相关知识,具备一些基本能力,掌
+要想用好论文模板还是得提前学习一些 \TeX/\LaTeX{} 的相关知识,具备一些基本能力,掌
握一些常见技巧,否则一旦遇到问题还真是比较麻烦。我们见过很多这样的同学,一直以来
-都是使用 Word 等字处理工具,以为 \LaTeX{}模板的用法也应该类似,所以就沿袭同样的思
+都是使用 Word 等字处理工具,以为 \LaTeX{} 模板的用法也应该类似,所以就沿袭同样的思
路来对待这种所见非所得的排版工具,结果被折腾的焦头烂额,疲惫不堪。
如果您要排版的表格长度超过一页,那么推荐使用 \pkg{longtable} 或者 \pkg{supertabular}
@@ -331,6 +333,7 @@ EP.B.8 & 126.74 & 0.003 & 0.017 & 0.005 & 0.083 & 1656 \\
杰出的文学家,哲学家,同时也是一位政治改革家。与韩愈共同倡导唐代古文运动,并称
韩柳\footnote{唐宋八大家之首二位。}。
\end{minipage}
+\\
唐朝安史之乱后,宦官专权,藩镇割据,土地兼并日渐严重,社会生产破坏严重,民不聊生。柳宗
元对这种社会现实极为不满,他积极参加了王叔文领导的“永济革新”,并成为这一
@@ -504,7 +507,7 @@ V_j & = v_j, & \qquad X_j & = x_j,
当然参考文献可以直接写 \cs{bibitem},虽然费点功夫,但是好控制,各种格式可以自己随意改
写。
-本模板推荐使用 BIB\TeX,分别提供数字引用(\texttt{thuthesis-numeric.bst})和作
+本模板推荐使用 BibTeX,分别提供数字引用(\texttt{thuthesis-numeric.bst})和作
者年份引用(\texttt{thuthesis-author-year.bst})样式,基本符合学校的参考文献格式
(如专利等引用未加详细测试)。看看这个例子,关于书的~\cite{tex, companion,
ColdSources},还有这些~\cite{Krasnogor2004e, clzs, zjsw},关于杂志
@@ -532,21 +535,19 @@ V_j & = v_j, & \qquad X_j & = x_j,
\section{公式}
\label{sec:equation}
-\renewcommand\vec{\symbf}
-\newcommand\mat{\symbf}
-贝叶斯公式如式~(\ref{equ:chap1:bayes}),其中 $p(y|\vec{x})$ 为后验;
-$p(\vec{x})$ 为先验;分母 $p(\vec{x})$ 为归一化因子。
+贝叶斯公式如式~(\ref{equ:chap1:bayes}),其中 $p(y|\vx)$ 为后验;
+$p(\vx)$ 为先验;分母 $p(\vx)$ 为归一化因子。
\begin{equation}
\label{equ:chap1:bayes}
-p(y|\vec{x}) = \frac{p(\vec{x},y)}{p(\vec{x})}=
-\frac{p(\vec{x}|y)p(y)}{p(\vec{x})}
+p(y|\vx) = \frac{p(\vx,y)}{p(\vx)}=
+\frac{p(\vx|y)p(y)}{p(\vx)}
\end{equation}
论文里面公式越多,\TeX{} 就越 happy。再看一个 \pkg{amsmath} 的例子:
\newcommand{\envert}[1]{\left\lvert#1\right\rvert}
\begin{equation}\label{detK2}
-\det\mat{K}(t=1,t_1,\dots,t_n)=\sum_{I\in\vec{n}}(-1)^{\envert{I}}
-\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\vec{A}
+\det\mK(t=1,t_1,\dots,t_n)=\sum_{I\in\vn}(-1)^{\envert{I}}
+\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mA
^{(\lambda)}(\overline{I}|\overline{I})=0.
\end{equation}
diff --git a/macros/latex/contrib/thuthesis/data/chap02.tex b/macros/latex/contrib/thuthesis/data/chap02.tex
index e7604f525c..d4200f2dc4 100644
--- a/macros/latex/contrib/thuthesis/data/chap02.tex
+++ b/macros/latex/contrib/thuthesis/data/chap02.tex
@@ -1,5 +1,7 @@
-\chapter{中华人民共和国}
-\label{cha:china}
+% !TeX root = ../main.tex
+
+\chapter{图表公式例子}
+\label{cha:chapter02}
\section{其它例子}
\label{sec:other}
@@ -8,8 +10,8 @@
习一下:
\begin{equation}
\label{equ:chap2:bayes}
-p(y|\vec{x}) = \frac{p(\vec{x},y)}{p(\vec{x})}=
-\frac{p(\vec{x}|y)p(y)}{p(\vec{x})}
+p(y|\vx) = \frac{p(\vx,y)}{p(\vx)}=
+\frac{p(\vx|y)p(y)}{p(\vx)}
\end{equation}
\subsection{绘图}
@@ -23,7 +25,7 @@ jPicEdt, jaxdraw 等等。
\subsection{插图}
\label{sec:graphs}
-强烈推荐《\LaTeXe\ 插图指南》!关于子图形的使用细节请参看 \pkg{subcaption} 宏包的说明文档。
+强烈推荐《\LaTeXe{} 插图指南》!关于子图形的使用细节请参看 \pkg{subcaption} 宏包的说明文档。
\subsubsection{一个图形}
\label{sec:onefig}
diff --git a/macros/latex/contrib/thuthesis/data/cover.tex b/macros/latex/contrib/thuthesis/data/cover.tex
deleted file mode 100644
index 8aae6b8443..0000000000
--- a/macros/latex/contrib/thuthesis/data/cover.tex
+++ /dev/null
@@ -1,118 +0,0 @@
-\thusetup{
- %******************************
- % 注意:
- % 1. 配置里面不要出现空行
- % 2. 不需要的配置信息可以删除
- %******************************
- %
- %=====
- % 秘级
- %=====
- secretlevel={秘密},
- secretyear={10},
- %
- %=========
- % 中文信息
- %=========
- ctitle={清华大学学位论文 \LaTeX\ 模板\\使用示例文档 v\version},
- cdegree={工学硕士},
- cdepartment={计算机科学与技术系},
- cmajor={计算机科学与技术},
- cauthor={薛瑞尼},
- csupervisor={郑纬民教授},
- cassosupervisor={陈文光教授}, % 副指导老师
- ccosupervisor={某某某教授}, % 联合指导老师
- % 日期自动使用当前时间,若需指定按如下方式修改:
- % cdate={超新星纪元},
- %
- % 博士后专有部分
- catalognumber = {分类号}, % 可以留空
- udc = {UDC}, % 可以留空
- id = {编号}, % 可以留空: id={},
- cfirstdiscipline = {计算机科学与技术}, % 流动站(一级学科)名称
- cseconddiscipline = {系统结构}, % 专 业(二级学科)名称
- postdoctordate = {2009 年 7 月——2011 年 7 月}, % 工作完成日期
- postdocstartdate = {2009 年 7 月 1 日}, % 研究工作起始时间
- postdocenddate = {2011 年 7 月 1 日}, % 研究工作期满时间
- %
- %=========
- % 英文信息
- %=========
- etitle={An Introduction to \LaTeX{} Thesis Template of Tsinghua University v\version},
- % 这块比较复杂,需要分情况讨论:
- % 1. 学术型硕士
- % edegree:必须为Master of Arts或Master of Science(注意大小写)
- % “哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
- % 填写Master of Arts,其它填写Master of Science”
- % emajor:“获得一级学科授权的学科填写一级学科名称,其它填写二级学科名称”
- % 2. 专业型硕士
- % edegree:“填写专业学位英文名称全称”
- % emajor:“工程硕士填写工程领域,其它专业学位不填写此项”
- % 3. 学术型博士
- % edegree:Doctor of Philosophy(注意大小写)
- % emajor:“获得一级学科授权的学科填写一级学科名称,其它填写二级学科名称”
- % 4. 专业型博士
- % edegree:“填写专业学位英文名称全称”
- % emajor:不填写此项
- edegree={Doctor of Engineering},
- emajor={Computer Science and Technology},
- eauthor={Xue Ruini},
- esupervisor={Professor Zheng Weimin},
- eassosupervisor={Chen Wenguang},
- % 日期自动生成,若需指定按如下方式修改:
- % edate={December, 2005}
- %
- % 关键词用“英文逗号”分割
- ckeywords={TeX, LaTeX, CJK, 模板, 论文},
- ekeywords={TeX, LaTeX, CJK, template, thesis}
-}
-
-% 定义中英文摘要和关键字
-\begin{cabstract}
- 论文的摘要是对论文研究内容和成果的高度概括。摘要应对论文所研究的问题及其研究目
- 的进行描述,对研究方法和过程进行简单介绍,对研究成果和所得结论进行概括。摘要应
- 具有独立性和自明性,其内容应包含与论文全文同等量的主要信息。使读者即使不阅读全
- 文,通过摘要就能了解论文的总体内容和主要成果。
-
- 论文摘要的书写应力求精确、简明。切忌写成对论文书写内容进行提要的形式,尤其要避
- 免“第 1 章……;第 2 章……;……”这种或类似的陈述方式。
-
- 本文介绍清华大学论文模板 \thuthesis{} 的使用方法。本模板符合学校的本科、硕士、
- 博士论文格式要求。
-
- 本文的创新点主要有:
- \begin{itemize}
- \item 用例子来解释模板的使用方法;
- \item 用废话来填充无关紧要的部分;
- \item 一边学习摸索一边编写新代码。
- \end{itemize}
-
- 关键词是为了文献标引工作、用以表示全文主要内容信息的单词或术语。关键词不超过 5
- 个,每个关键词中间用分号分隔。(模板作者注:关键词分隔符不用考虑,模板会自动处
- 理。英文关键词同理。)
-\end{cabstract}
-
-% 如果习惯关键字跟在摘要文字后面,可以用直接命令来设置,如下:
-% \ckeywords{\TeX, \LaTeX, CJK, 模板, 论文}
-
-\begin{eabstract}
- An abstract of a dissertation is a summary and extraction of research work
- and contributions. Included in an abstract should be description of research
- topic and research objective, brief introduction to methodology and research
- process, and summarization of conclusion and contributions of the
- research. An abstract should be characterized by independence and clarity and
- carry identical information with the dissertation. It should be such that the
- general idea and major contributions of the dissertation are conveyed without
- reading the dissertation.
-
- An abstract should be concise and to the point. It is a misunderstanding to
- make an abstract an outline of the dissertation and words ``the first
- chapter'', ``the second chapter'' and the like should be avoided in the
- abstract.
-
- Key words are terms used in a dissertation for indexing, reflecting core
- information of the dissertation. An abstract may contain a maximum of 5 key
- words, with semi-colons used in between to separate one another.
-\end{eabstract}
-
-% \ekeywords{\TeX, \LaTeX, CJK, template, thesis}
diff --git a/macros/latex/contrib/thuthesis/data/denotation.tex b/macros/latex/contrib/thuthesis/data/denotation.tex
index 46d4172d85..aeefccbf9a 100644
--- a/macros/latex/contrib/thuthesis/data/denotation.tex
+++ b/macros/latex/contrib/thuthesis/data/denotation.tex
@@ -1,3 +1,5 @@
+% !TeX root = ../main.tex
+
\begin{denotation}[3cm]
\item[HPC] 高性能计算 (High Performance Computing)
\item[cluster] 集群
diff --git a/macros/latex/contrib/thuthesis/data/resume.tex b/macros/latex/contrib/thuthesis/data/resume.tex
index 890bd51305..80bd6aa06b 100644
--- a/macros/latex/contrib/thuthesis/data/resume.tex
+++ b/macros/latex/contrib/thuthesis/data/resume.tex
@@ -1,3 +1,5 @@
+% !TeX root = ../main.tex
+
\begin{resume}
\resumeitem{个人简历}
diff --git a/macros/latex/contrib/thuthesis/latexmkrc b/macros/latex/contrib/thuthesis/latexmkrc
index d9969694c2..3ba7612943 100644
--- a/macros/latex/contrib/thuthesis/latexmkrc
+++ b/macros/latex/contrib/thuthesis/latexmkrc
@@ -1,14 +1,23 @@
# vim: set ft=perl:
-$xdvipdfmx="xdvipdfmx -q -E -o %D %O %S";
-$clean_ext = 'thm bbl hd loe synctex.gz xdv';
-$makeindex = 'makeindex -s gind.ist %O -o %D %S';
-add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
-sub makeglo2gls {
+
+$pdf_mode = 5;
+
+$xelatex = "xelatex -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S";
+$xdvipdfmx = "xdvipdfmx -q -E -o %D %O %S";
+
+$bibtex_use = 1.5;
+
+$clean_ext = "hd loe synctex.gz thm xdv";
+
+$makeindex = "makeindex -s gind.ist %O -o %D %S";
+add_cus_dep('glo', 'gls', 0, 'glo2gls');
+sub glo2gls {
system("makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"");
}
-push @generated_exts, "glo", "gls";
+push @generated_exts, 'glo', 'gls';
+
add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
sub nlo2nls {
system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
}
-push @generated_exts, "nlo", "nls";
+push @generated_exts, 'nlo', 'nls';
diff --git a/macros/latex/contrib/thuthesis/main.pdf b/macros/latex/contrib/thuthesis/main.pdf
index 35f10b2a08..25ebfc5702 100644
--- a/macros/latex/contrib/thuthesis/main.pdf
+++ b/macros/latex/contrib/thuthesis/main.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/main.tex b/macros/latex/contrib/thuthesis/main.tex
index f0acc491aa..aa45220054 100644
--- a/macros/latex/contrib/thuthesis/main.tex
+++ b/macros/latex/contrib/thuthesis/main.tex
@@ -1,76 +1,72 @@
-\documentclass[degree=master,tocarialchapter]{thuthesis}
-% 选项
-% degree=[bachelor|master|doctor|postdoctor], % 必选,学位类型
-% language=[chinese|english], % 可选(默认:chinese),论文的主要语言
-% secret, % 可选(默认:关闭),是否有密级
-% tocarialchapter, % 可选(默认:关闭),章目录中使用黑体(这项表示同时打开下面两项)
-% tocarialchapterentry, % 可选(默认:关闭),单独控制章标题在目录中使用黑体
-% tocarialchapterpage, % 可选(默认:关闭),单独控制章页码在目录中使用黑体
+% !TeX encoding = UTF-8
+% !TeX program = xelatex
+% !TeX spellcheck = en_US
-% 所有其它可能用到的包都统一放到这里了,可以根据自己的实际添加或者删除。
-\usepackage{thuthesis}
+\documentclass[fontset=windows,degree=master]{thuthesis}
+ % 学位 degree:
+ % doctor | master | bachelor | postdoc
+ % 学位类型 degree-type:
+ % academic(默认)| professional
-% 定义所有的图片文件在 figures 子目录下
-\graphicspath{{figures/}}
-% 可以在这里修改配置文件中的定义。导言区可以使用中文。
-% \def\myname{薛瑞尼}
+% 论文基本配置,加载宏包等全局配置
+\input{thusetup.tex}
+
\begin{document}
-%%% 封面部分
+% 封面
+\maketitle
+
+% 使用授权的说明
+\copyrightpage
+
\frontmatter
-\input{data/cover}
-% 如果使用授权说明扫描页,将可选参数中指定为扫描得到的 PDF 文件名,例如:
-% \makecover[scan-auth.pdf]
-\makecover
+\input{data/abstract.tex}
-%% 目录
+% 目录
\tableofcontents
-%% 符号对照表
+% 符号对照表
\input{data/denotation}
-%%% 正文部分
+% 正文部分
\mainmatter
\input{data/chap01}
\input{data/chap02}
-%%% 其它部分
+% 其它部分
\backmatter
-%% 本科生要这几个索引,研究生不要。选择性留下。
-% 插图索引
-\listoffigures
-% 表格索引
-\listoftables
-% 公式索引
-\listofequations
+%% 本科生要求的几个索引。
+% \listoffigures % 插图索引
+% \listoftables % 表格索引
+% \listofequations % 公式索引
-
-%% 参考文献
-% 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。
-% 如果不需要参考文献,请将下面两行删除或注释掉。
+% 参考文献
\bibliographystyle{thuthesis-numeric} % 顺序编码制
% \bibliographystyle{thuthesis-author-year} % 著者-出版年制
% \bibliographystyle{thuthesis-bachelor} % 本科生参考文献的著录格式
\bibliography{ref/refs}
+% 致谢
+\input{data/acknowledgements}
-%% 致谢
-\input{data/ack}
+% 声明
+\statement
-%% 附录
-\begin{appendix}
-\input{data/appendix01}
-\end{appendix}
+% 附录
+\appendix
+% \input{data/appendix-survey} % 本科生:外文资料的调研阅读报告
+% \input{data/appendix-translation} % 本科生:外文资料的书面翻译
+\input{data/appendix}
-%% 个人简历
+% 个人简历
\input{data/resume}
-%% 本科生进行格式审查是需要下面这个表格,答辩可能不需要。选择性留下。
-% 综合论文训练记录表
-\includepdf[pages=-]{scan-record.pdf}
+% 本科生的综合论文训练记录表
+% \includepdf[pages=-]{scan-record.pdf}
+
\end{document}
diff --git a/macros/latex/contrib/thuthesis/math_commands.tex b/macros/latex/contrib/thuthesis/math_commands.tex
new file mode 100644
index 0000000000..5fc9be6751
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/math_commands.tex
@@ -0,0 +1,290 @@
+% Adapted for use with thuthesis.
+% Original code is at https://github.com/goodfeli/dlbook_notation/blob/master/math_commands.tex
+
+%%%%% NEW MATH DEFINITIONS %%%%%
+
+\newcommand\ceil[1]{\lceil #1 \rceil}
+\newcommand\floor[1]{\lfloor #1 \rfloor}
+
+
+% Vectors
+\newcommand\Vector[1]{\symbf{#1}}
+
+\newcommand\0{{\Vector{0}}}
+\newcommand\vzero{{\Vector{0}}}
+\newcommand\1{{\Vector{1}}}
+\newcommand\vone{{\Vector{1}}}
+
+\newcommand\va{{\Vector{a}}}
+\newcommand\vb{{\Vector{b}}}
+\newcommand\vc{{\Vector{c}}}
+\newcommand\vd{{\Vector{d}}}
+\newcommand\ve{{\Vector{e}}}
+\newcommand\vf{{\Vector{f}}}
+\newcommand\vg{{\Vector{g}}}
+\newcommand\vh{{\Vector{h}}}
+\newcommand\vi{{\Vector{i}}}
+\newcommand\vj{{\Vector{j}}}
+\newcommand\vk{{\Vector{k}}}
+\newcommand\vl{{\Vector{l}}}
+\newcommand\vm{{\Vector{m}}}
+\newcommand\vn{{\Vector{n}}}
+\newcommand\vo{{\Vector{o}}}
+\newcommand\vp{{\Vector{p}}}
+\newcommand\vq{{\Vector{q}}}
+\newcommand\vr{{\Vector{r}}}
+\newcommand\vs{{\Vector{s}}}
+\newcommand\vt{{\Vector{t}}}
+\newcommand\vu{{\Vector{u}}}
+\newcommand\vv{{\Vector{v}}}
+\newcommand\vw{{\Vector{w}}}
+\newcommand\vx{{\Vector{x}}}
+\newcommand\vy{{\Vector{y}}}
+\newcommand\vz{{\Vector{z}}}
+
+\newcommand\valpha{{\Vector{\alpha}}}
+\newcommand\vbeta{{\Vector{\beta}}}
+\newcommand\vgamma{{\Vector{\gamma}}}
+\newcommand\vdelta{{\Vector{\delta}}}
+\newcommand\vepsilon{{\Vector{\epsilon}}}
+\newcommand\vtheta{{\Vector{\theta}}}
+\newcommand\viota{{\Vector{\iota}}}
+\newcommand\vkappa{{\Vector{\kappa}}}
+\newcommand\vlambda{{\Vector{\lambda}}}
+\newcommand\vmu{{\Vector{\mu}}}
+\newcommand\vnu{{\Vector{\nu}}}
+\newcommand\vxi{{\Vector{\xi}}}
+\newcommand\vpi{{\Vector{\pi}}}
+\newcommand\vrho{{\Vector{\rho}}}
+\newcommand\vsigma{{\Vector{\sigma}}}
+\newcommand\vtau{{\Vector{\tau}}}
+\newcommand\vupsilon{{\Vector{\upsilon}}}
+\newcommand\vphi{{\Vector{\phi}}}
+\newcommand\vchi{{\Vector{\chi}}}
+\newcommand\vpsi{{\Vector{\psi}}}
+\newcommand\vomega{{\Vector{\omega}}}
+
+
+% Matrix
+\newcommand\MATRIX[1]{\symbf{#1}}
+
+\newcommand\mA{{\MATRIX{A}}}
+\newcommand\mB{{\MATRIX{B}}}
+\newcommand\mC{{\MATRIX{C}}}
+\newcommand\mD{{\MATRIX{D}}}
+\newcommand\mE{{\MATRIX{E}}}
+\newcommand\mF{{\MATRIX{F}}}
+\newcommand\mG{{\MATRIX{G}}}
+\newcommand\mH{{\MATRIX{H}}}
+\newcommand\mI{{\MATRIX{I}}}
+\newcommand\mJ{{\MATRIX{J}}}
+\newcommand\mK{{\MATRIX{K}}}
+\newcommand\mL{{\MATRIX{L}}}
+\newcommand\mM{{\MATRIX{M}}}
+\newcommand\mN{{\MATRIX{N}}}
+\newcommand\mO{{\MATRIX{O}}}
+\newcommand\mP{{\MATRIX{P}}}
+\newcommand\mQ{{\MATRIX{Q}}}
+\newcommand\mR{{\MATRIX{R}}}
+\newcommand\mS{{\MATRIX{S}}}
+\newcommand\mT{{\MATRIX{T}}}
+\newcommand\mU{{\MATRIX{U}}}
+\newcommand\mV{{\MATRIX{V}}}
+\newcommand\mW{{\MATRIX{W}}}
+\newcommand\mX{{\MATRIX{X}}}
+\newcommand\mY{{\MATRIX{Y}}}
+\newcommand\mZ{{\MATRIX{Z}}}
+
+\newcommand\mGamma{{\MATRIX{\Gamma}}}
+\newcommand\mDelta{{\MATRIX{\Delta}}}
+\newcommand\mTheta{{\MATRIX{\Theta}}}
+\newcommand\mLambda{{\MATRIX{\Lambda}}}
+\newcommand\mXi{{\MATRIX{\Xi}}}
+\newcommand\mPi{{\MATRIX{\Pi}}}
+\newcommand\mSigma{{\MATRIX{\Sigma}}}
+\newcommand\mUpsilon{{\MATRIX{\Upsilon}}}
+\newcommand\mPhi{{\MATRIX{\Phi}}}
+\newcommand\mPsi{{\MATRIX{\Psi}}}
+\newcommand\mOmega{{\MATRIX{\Omega}}}
+
+
+% Tensor
+\newcommand\tens[1]{\symbfsf{#1}}
+\newcommand\tA{{\tens{A}}}
+\newcommand\tB{{\tens{B}}}
+\newcommand\tC{{\tens{C}}}
+\newcommand\tD{{\tens{D}}}
+\newcommand\tE{{\tens{E}}}
+\newcommand\tF{{\tens{F}}}
+\newcommand\tG{{\tens{G}}}
+\newcommand\tH{{\tens{H}}}
+\newcommand\tI{{\tens{I}}}
+\newcommand\tJ{{\tens{J}}}
+\newcommand\tK{{\tens{K}}}
+\newcommand\tL{{\tens{L}}}
+\newcommand\tM{{\tens{M}}}
+\newcommand\tN{{\tens{N}}}
+\newcommand\tO{{\tens{O}}}
+\newcommand\tP{{\tens{P}}}
+\newcommand\tQ{{\tens{Q}}}
+\newcommand\tR{{\tens{R}}}
+\newcommand\tS{{\tens{S}}}
+\newcommand\tT{{\tens{T}}}
+\newcommand\tU{{\tens{U}}}
+\newcommand\tV{{\tens{V}}}
+\newcommand\tW{{\tens{W}}}
+\newcommand\tX{{\tens{X}}}
+\newcommand\tY{{\tens{Y}}}
+\newcommand\tZ{{\tens{Z}}}
+
+
+% Graph
+\newcommand\gA{{\mathcal{A}}}
+\newcommand\gB{{\mathcal{B}}}
+\newcommand\gC{{\mathcal{C}}}
+\newcommand\gD{{\mathcal{D}}}
+\newcommand\gE{{\mathcal{E}}}
+\newcommand\gF{{\mathcal{F}}}
+\newcommand\gG{{\mathcal{G}}}
+\newcommand\gH{{\mathcal{H}}}
+\newcommand\gI{{\mathcal{I}}}
+\newcommand\gJ{{\mathcal{J}}}
+\newcommand\gK{{\mathcal{K}}}
+\newcommand\gL{{\mathcal{L}}}
+\newcommand\gM{{\mathcal{M}}}
+\newcommand\gN{{\mathcal{N}}}
+\newcommand\gO{{\mathcal{O}}}
+\newcommand\gP{{\mathcal{P}}}
+\newcommand\gQ{{\mathcal{Q}}}
+\newcommand\gR{{\mathcal{R}}}
+\newcommand\gS{{\mathcal{S}}}
+\newcommand\gT{{\mathcal{T}}}
+\newcommand\gU{{\mathcal{U}}}
+\newcommand\gV{{\mathcal{V}}}
+\newcommand\gW{{\mathcal{W}}}
+\newcommand\gX{{\mathcal{X}}}
+\newcommand\gY{{\mathcal{Y}}}
+\newcommand\gZ{{\mathcal{Z}}}
+
+
+% Sets
+\newcommand\sA{{\mathbb{A}}}
+\newcommand\sB{{\mathbb{B}}}
+\newcommand\sC{{\mathbb{C}}}
+\newcommand\sD{{\mathbb{D}}}
+% Don't use a set called E, because this would be the same as our symbol
+% for expectation.
+\newcommand\sF{{\mathbb{F}}}
+\newcommand\sG{{\mathbb{G}}}
+\newcommand\sH{{\mathbb{H}}}
+\newcommand\sI{{\mathbb{I}}}
+\newcommand\sJ{{\mathbb{J}}}
+\newcommand\sK{{\mathbb{K}}}
+\newcommand\sL{{\mathbb{L}}}
+\newcommand\sM{{\mathbb{M}}}
+\newcommand\sN{{\mathbb{N}}}
+\newcommand\sO{{\mathbb{O}}}
+\newcommand\sP{{\mathbb{P}}}
+\newcommand\sQ{{\mathbb{Q}}}
+\newcommand\sR{{\mathbb{R}}}
+\newcommand\sS{{\mathbb{S}}}
+\newcommand\sT{{\mathbb{T}}}
+\newcommand\sU{{\mathbb{U}}}
+\newcommand\sV{{\mathbb{V}}}
+\newcommand\sW{{\mathbb{W}}}
+\newcommand\sX{{\mathbb{X}}}
+\newcommand\sY{{\mathbb{Y}}}
+\newcommand\sZ{{\mathbb{Z}}}
+
+
+% Random variables
+\newcommand\RandomVariable[1]{\symit{#1}}
+
+\newcommand\rA{{\RandomVariable{A}}}
+\newcommand\rB{{\RandomVariable{B}}}
+\newcommand\rC{{\RandomVariable{C}}}
+\newcommand\rD{{\RandomVariable{D}}}
+\newcommand\rE{{\RandomVariable{E}}}
+\newcommand\rF{{\RandomVariable{F}}}
+\newcommand\rG{{\RandomVariable{G}}}
+\newcommand\rH{{\RandomVariable{H}}}
+\newcommand\rI{{\RandomVariable{I}}}
+\newcommand\rJ{{\RandomVariable{J}}}
+\newcommand\rK{{\RandomVariable{K}}}
+\newcommand\rL{{\RandomVariable{L}}}
+\newcommand\rM{{\RandomVariable{M}}}
+\newcommand\rN{{\RandomVariable{N}}}
+\newcommand\rO{{\RandomVariable{O}}}
+\newcommand\rP{{\RandomVariable{P}}}
+\newcommand\rQ{{\RandomVariable{Q}}}
+\newcommand\rR{{\RandomVariable{R}}}
+\newcommand\rS{{\RandomVariable{S}}}
+\newcommand\rT{{\RandomVariable{T}}}
+\newcommand\rU{{\RandomVariable{U}}}
+\newcommand\rV{{\RandomVariable{V}}}
+\newcommand\rW{{\RandomVariable{W}}}
+\newcommand\rX{{\RandomVariable{X}}}
+\newcommand\rY{{\RandomVariable{Y}}}
+\newcommand\rZ{{\RandomVariable{Z}}}
+
+% Random vectors
+\newcommand\RandomVector[1]{\symbf{#1}}
+
+\newcommand\rvA{{\RandomVector{A}}}
+\newcommand\rvB{{\RandomVector{B}}}
+\newcommand\rvC{{\RandomVector{C}}}
+\newcommand\rvD{{\RandomVector{D}}}
+\newcommand\rvE{{\RandomVector{E}}}
+\newcommand\rvF{{\RandomVector{F}}}
+\newcommand\rvG{{\RandomVector{G}}}
+\newcommand\rvH{{\RandomVector{H}}}
+\newcommand\rvI{{\RandomVector{I}}}
+\newcommand\rvJ{{\RandomVector{J}}}
+\newcommand\rvK{{\RandomVector{K}}}
+\newcommand\rvL{{\RandomVector{L}}}
+\newcommand\rvM{{\RandomVector{M}}}
+\newcommand\rvN{{\RandomVector{N}}}
+\newcommand\rvO{{\RandomVector{O}}}
+\newcommand\rvP{{\RandomVector{P}}}
+\newcommand\rvQ{{\RandomVector{Q}}}
+\newcommand\rvR{{\RandomVector{R}}}
+\newcommand\rvS{{\RandomVector{S}}}
+\newcommand\rvT{{\RandomVector{T}}}
+\newcommand\rvU{{\RandomVector{U}}}
+\newcommand\rvV{{\RandomVector{V}}}
+\newcommand\rvW{{\RandomVector{W}}}
+\newcommand\rvX{{\RandomVector{X}}}
+\newcommand\rvY{{\RandomVector{Y}}}
+\newcommand\rvZ{{\RandomVector{Z}}}
+
+\newcommand\laplace{\mathrm{Laplace}} % Laplace distribution
+
+\newcommand\E{\mathbb{E}}
+\newcommand\Ls{\mathcal{L}}
+\newcommand\R{\mathbb{R}}
+\newcommand\emp{\tilde{p}}
+\newcommand\lr{\alpha}
+\newcommand\reg{\lambda}
+\newcommand\rect{\mathrm{rectifier}}
+\newcommand\softmax{\mathrm{softmax}}
+\newcommand\sigmoid{\sigma}
+\newcommand\softplus{\zeta}
+\newcommand\KL{D_{\mathrm{KL}}}
+\newcommand\Var{\mathrm{Var}}
+\newcommand\standarderror{\mathrm{SE}}
+\newcommand\Cov{\mathrm{Cov}}
+% Wolfram Mathworld says $L^2$ is for function spaces and $\ell^2$ is for vectors
+% But then they seem to use $L^2$ for vectors throughout the site, and so does
+% wikipedia.
+\newcommand\normlzero{L^0}
+\newcommand\normlone{L^1}
+\newcommand\normltwo{L^2}
+\newcommand\normlp{L^p}
+\newcommand\normmax{L^\infty}
+
+\DeclareMathOperator*{\argmax}{arg\,max}
+\DeclareMathOperator*{\argmin}{arg\,min}
+
+\DeclareMathOperator{\sign}{sign}
+\DeclareMathOperator{\Tr}{Tr}
+\let\ab\allowbreak
diff --git a/macros/latex/contrib/thuthesis/ref/appendix.bib b/macros/latex/contrib/thuthesis/ref/appendix.bib
new file mode 100644
index 0000000000..4fbfb750fc
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/ref/appendix.bib
@@ -0,0 +1,14 @@
+@book{abrahams99tex,
+ author = {Paul W. Abrahams and Karl Berry and Kathryn A. Hargreaves},
+ title = {{\TeX} for the Impatient},
+ publisher = {Addison-Wesley},
+ year = {1990},
+}
+
+@incollection{salomon1995advanced,
+ author = {David Salomon},
+ title = {The advanced {\TeX}book},
+ address = {New York},
+ publisher = {Springer},
+ year = {1995},
+}
diff --git a/macros/latex/contrib/thuthesis/ref/refs.bib b/macros/latex/contrib/thuthesis/ref/refs.bib
index 4832dbb425..f9d99381e7 100644
--- a/macros/latex/contrib/thuthesis/ref/refs.bib
+++ b/macros/latex/contrib/thuthesis/ref/refs.bib
@@ -58,7 +58,7 @@
@book{tex,
author = "Donald E. Knuth",
- title = "The {\TeX} Book",
+ title = "The {\TeX}book",
publisher = "Addison-Wesley Publishing Company",
address = "Reading, MA",
year = 1989,
diff --git a/macros/latex/contrib/thuthesis/shuji.pdf b/macros/latex/contrib/thuthesis/shuji.pdf
deleted file mode 100644
index 0c61d58ba9..0000000000
--- a/macros/latex/contrib/thuthesis/shuji.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/shuji.tex b/macros/latex/contrib/thuthesis/shuji.tex
deleted file mode 100644
index 5467371b80..0000000000
--- a/macros/latex/contrib/thuthesis/shuji.tex
+++ /dev/null
@@ -1,20 +0,0 @@
-\documentclass[degree=master]{thuthesis}
-
-\begin{document}
-\thusetup{
- cauthor={薛瑞尼},
- ctitle={没有英文的中文标题}
-}
-
-\shuji % 使用默认标题和默认作者
-
-\shuji[使用默认作者的标题]
-
-\shuji[同时修改标题和作者的标题][尼瑞薛]
-
-\ifxetex
- \shuji[清华大学学位 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
-\else
- \shuji[清华大学学位 \raisebox{8pt}{\LaTeX} 论文模板 \raisebox{8pt}{v\version} 样例]
-\fi
-\end{document}
diff --git a/macros/latex/contrib/thuthesis/spine.pdf b/macros/latex/contrib/thuthesis/spine.pdf
new file mode 100644
index 0000000000..714858ee1d
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/spine.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/spine.tex b/macros/latex/contrib/thuthesis/spine.tex
new file mode 100644
index 0000000000..aec1fde0b3
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/spine.tex
@@ -0,0 +1,19 @@
+\documentclass[degree=master]{thuthesis}
+
+\thusetup{
+ author = {薛瑞尼},
+ title = {没有英文的中文标题}
+}
+
+\begin{document}
+
+
+\spine % 使用默认标题和默认作者
+
+\spine[使用默认作者的标题]
+
+\spine[同时修改标题和作者的标题][尼瑞薛]
+
+% 中英文混合时需要微调
+\spine[清华大学学位 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
+\end{document}
diff --git a/macros/latex/contrib/thuthesis/thusetup.tex b/macros/latex/contrib/thuthesis/thusetup.tex
new file mode 100644
index 0000000000..2571c78f04
--- /dev/null
+++ b/macros/latex/contrib/thuthesis/thusetup.tex
@@ -0,0 +1,154 @@
+% !TeX root = ../main.tex
+
+% 论文基本信息配置
+
+\thusetup{
+ %******************************
+ % 注意:
+ % 1. 配置里面不要出现空行
+ % 2. 不需要的配置信息可以删除
+ %******************************
+ %
+ % 标题
+ % 可使用“\\”命令手动控制换行
+ %
+ title = {清华大学学位论文 \LaTeX{} 模板\\使用示例文档 v\version},
+ title* = {An Introduction to \LaTeX{} Thesis Template of Tsinghua
+ University v\version},
+ %
+ % 学位
+ % 1. 学术型
+ % - 中文
+ % 需注明所属的学科门类,例如:
+ % 哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、医学、
+ % 军事学、管理学、艺术学
+ % - 英文
+ % 博士:Doctor of Philosophy
+ % 硕士:
+ % 哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
+ % 填写“Master of Arts“,其它填写“Master of Science”
+ % 2. 专业型
+ % 直接填写专业学位的名称,例如:
+ % 教育博士、工程硕士等
+ % Doctor of Education, Master of Engineering
+ % 3. 本科生不需要填写
+ %
+ degree-name = {工学硕士},
+ degree-name* = {Master of Science},
+ %
+ % 培养单位
+ % 填写所属院系的全名
+ %
+ department = {计算机科学与技术系},
+ %
+ % 学科
+ % 1. 学术型学位
+ % 获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称
+ % 2. 工程硕士
+ % 工程领域名称
+ % 3. 其他专业型学位
+ % 不填写此项
+ % 4. 本科生不需要填写
+ %
+ discipline = {计算机科学与技术},
+ discipline* = {Computer Science and Technology},
+ %
+ % 姓名
+ %
+ author = {薛瑞尼},
+ author* = {Xue Ruini},
+ %
+ % 指导教师
+ % 中文姓名和职称之间以英文逗号“,”分开,下同
+ %
+ supervisor = {郑纬民教授},
+ supervisor* = {Professor Zheng Weimin},
+ %
+ % 副指导教师
+ %
+ associate-supervisor = {陈文光教授},
+ associate-supervisor* = {Professor Chen Wenguang},
+ %
+ % 联合指导教师
+ %
+ % joint-supervisor = {某某某教授},
+ % joint-supervisor* = {Professor Mou Moumou},
+ %
+ % 日期
+ % 使用 ISO 格式;默认为当前时间
+ %
+ % date = {2019-07-07},
+ %
+ % 密级和年限
+ % 秘密, 机密, 绝密
+ %
+ % secret-level = {秘密},
+ % secret-year = {10},
+ %
+ % 博士后专有部分
+ %
+ % clc = {分类号},
+ % udc = {UDC},
+ % id = {编号},
+ % discipline-level-1 = {计算机科学与技术}, % 流动站(一级学科)名称
+ % discipline-level-2 = {系统结构}, % 专业(二级学科)名称
+ % start-date = {2011-07-01}, % 研究工作起始时间
+}
+
+%% Put any packages you would like to use here
+
+% 表格中支持跨行
+\usepackage{multirow}
+
+% 跨页表格
+\usepackage{longtable}
+
+% 固定宽度的表格
+\usepackage{tabularx}
+
+% 表格中的反斜线
+\usepackage{diagbox}
+
+% 确定浮动对象的位置,可以使用 H,强制将浮动对象放到这里(可能效果很差)
+\usepackage{float}
+
+% 浮动图形控制宏包。
+% 允许上一个 section 的浮动图形出现在下一个 section 的开始部分
+% 该宏包提供处理浮动对象的 \FloatBarrier 命令,使所有未处
+% 理的浮动图形立即被处理。这三个宏包仅供参考,未必使用:
+% \usepackage[below]{placeins}
+% \usepackage{floatflt} % 图文混排用宏包
+% \usepackage{rotating} % 图形和表格的控制旋转
+
+% 定理类环境宏包
+\usepackage[amsmath,thmmarks,hyperref]{ntheorem}
+
+% 给自定义的宏后面自动加空白
+% \usepackage{xspace}
+
+% 借用 ltxdoc 里面的几个命令。
+\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
+\def\cmd@to@cs#1#2{\char\number`#2\relax}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+
+\newcommand*{\meta}[1]{{%
+ \ensuremath{\langle}\rmfamily\itshape#1\/\ensuremath{\rangle}}}
+\providecommand\marg[1]{%
+ {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\providecommand\oarg[1]{%
+ {\ttfamily[}\meta{#1}{\ttfamily]}}
+\providecommand\parg[1]{%
+ {\ttfamily(}\meta{#1}{\ttfamily)}}
+\providecommand\pkg[1]{{\sffamily#1}}
+
+% 定义所有的图片文件在 figures 子目录下
+\graphicspath{{figures/}}
+
+% 数学命令
+\input{math_commands.tex}
+
+% 定义自己常用的东西
+% \def\myname{薛瑞尼}
+
+% hyperref 宏包在最后调用
+\usepackage{hyperref}
diff --git a/macros/latex/contrib/thuthesis/thuthesis-author-year.bst b/macros/latex/contrib/thuthesis/thuthesis-author-year.bst
index 350d534aa6..370aa0520f 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-author-year.bst
+++ b/macros/latex/contrib/thuthesis/thuthesis-author-year.bst
@@ -44,10 +44,8 @@ INTEGERS {
FUNCTION {load.config}
{
- #1 'uppercase.name :=
#0 'uppercase.name :=
#3 'max.num.authors :=
- #0 'period.between.author.year :=
#1 'period.between.author.year :=
#1 'sentence.case.title :=
#0 'link.title :=
@@ -56,9 +54,8 @@ FUNCTION {load.config}
#0 'in.booktitle :=
#0 'italic.jounal :=
#0 'bold.journal.volume :=
- #1 'show.missing.address.publisher :=
+ #0 'show.missing.address.publisher :=
#1 'show.url :=
- #1 'show.doi :=
#0 'show.doi :=
#0 'show.note :=
#1 'lang.zh.order :=
@@ -155,7 +152,7 @@ FUNCTION {bbl.colon} { ": " }
FUNCTION {bbl.wide.space} { "\ " }
-FUNCTION {bbl.slash} { "//\allowbreak " }
+FUNCTION {bbl.slash} { " // " }
FUNCTION {bbl.sine.loco}
{ entry.lang lang.zh =
@@ -629,19 +626,15 @@ FUNCTION {make.full.names}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
- label write$
- ")" make.full.names duplicate$ short.list =
+ label ")" *
+ make.full.names duplicate$ short.list =
{ pop$ }
{ * }
if$
's :=
s text.length$ 'charptr :=
- { charptr #0 > }
- { s charptr #1 substring$ "]" =
- { #0 'charptr := }
- { charptr #1 - 'charptr := }
- if$
- }
+ { charptr #0 > s charptr #1 substring$ "[" = not and }
+ { charptr #1 - 'charptr := }
while$
charptr #0 >
{ "{" s * "}" * }
@@ -889,6 +882,9 @@ FUNCTION {set.entry.mark}
FUNCTION {format.mark}
{ show.mark
+ type$ "phdthesis" = type$ "mastersthesis" = or type$ "patent" = or
+ medium empty$ not or entry.is.electronic or
+ and
{ medium empty$ not
{ entry.mark "/" * medium * 'entry.mark := }
{ entry.is.electronic
@@ -897,7 +893,7 @@ FUNCTION {format.mark}
if$
}
if$
- "\allowbreak[" entry.mark * "]" *
+ " [" entry.mark * "]" *
}
{ "" }
if$
diff --git a/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst b/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
index 1063c962b1..412acbe2c2 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
+++ b/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% gbt7714.dtx (with options: `2015,numerical')
+%% gbt7714.dtx (with options: `2015,numerical,noslsn')
%% -------------------------------------------------------------------
%% GB/T 7714-2015 BibTeX Style
%% https://github.com/CTeX-org/gbt7714-bibtex-style
@@ -48,7 +48,7 @@ FUNCTION {load.config}
#0 'in.booktitle :=
#0 'italic.jounal :=
#0 'bold.journal.volume :=
- #1 'show.missing.address.publisher :=
+ #0 'show.missing.address.publisher :=
#1 'show.url :=
#1 'show.doi :=
#0 'show.note :=
@@ -615,19 +615,15 @@ FUNCTION {make.full.names}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
- label write$
- ")" make.full.names duplicate$ short.list =
+ label ")" *
+ make.full.names duplicate$ short.list =
{ pop$ }
{ * }
if$
's :=
s text.length$ 'charptr :=
- { charptr #0 > }
- { s charptr #1 substring$ "]" =
- { #0 'charptr := }
- { charptr #1 - 'charptr := }
- if$
- }
+ { charptr #0 > s charptr #1 substring$ "[" = not and }
+ { charptr #1 - 'charptr := }
while$
charptr #0 >
{ "{" s * "}" * }
diff --git a/macros/latex/contrib/thuthesis/thuthesis-numeric.bst b/macros/latex/contrib/thuthesis/thuthesis-numeric.bst
index 17f186e6de..c8cd10f4b8 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-numeric.bst
+++ b/macros/latex/contrib/thuthesis/thuthesis-numeric.bst
@@ -39,7 +39,6 @@ INTEGERS {
FUNCTION {load.config}
{
- #1 'uppercase.name :=
#0 'uppercase.name :=
#3 'max.num.authors :=
#1 'sentence.case.title :=
@@ -49,9 +48,8 @@ FUNCTION {load.config}
#0 'in.booktitle :=
#0 'italic.jounal :=
#0 'bold.journal.volume :=
- #1 'show.missing.address.publisher :=
+ #0 'show.missing.address.publisher :=
#1 'show.url :=
- #1 'show.doi :=
#0 'show.doi :=
#0 'show.note :=
}
@@ -143,7 +141,7 @@ FUNCTION {bbl.colon} { ": " }
FUNCTION {bbl.wide.space} { "\ " }
-FUNCTION {bbl.slash} { "//\allowbreak " }
+FUNCTION {bbl.slash} { " // " }
FUNCTION {bbl.sine.loco}
{ entry.lang lang.zh =
@@ -617,19 +615,15 @@ FUNCTION {make.full.names}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
- label write$
- ")" make.full.names duplicate$ short.list =
+ label ")" *
+ make.full.names duplicate$ short.list =
{ pop$ }
{ * }
if$
's :=
s text.length$ 'charptr :=
- { charptr #0 > }
- { s charptr #1 substring$ "]" =
- { #0 'charptr := }
- { charptr #1 - 'charptr := }
- if$
- }
+ { charptr #0 > s charptr #1 substring$ "[" = not and }
+ { charptr #1 - 'charptr := }
while$
charptr #0 >
{ "{" s * "}" * }
@@ -877,6 +871,9 @@ FUNCTION {set.entry.mark}
FUNCTION {format.mark}
{ show.mark
+ type$ "phdthesis" = type$ "mastersthesis" = or type$ "patent" = or
+ medium empty$ not or entry.is.electronic or
+ and
{ medium empty$ not
{ entry.mark "/" * medium * 'entry.mark := }
{ entry.is.electronic
@@ -885,7 +882,7 @@ FUNCTION {format.mark}
if$
}
if$
- "\allowbreak[" entry.mark * "]" *
+ " [" entry.mark * "]" *
}
{ "" }
if$
diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx
index fbabf09833..231655c9da 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.dtx
+++ b/macros/latex/contrib/thuthesis/thuthesis.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2005-2019 by Ruini Xue <xueruini@gmail.com>
+% Copyright (C) 2005-2020 by Ruini Xue <xueruini@gmail.com>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,13 +16,12 @@
%
% \iffalse
%<*driver>
-\ProvidesFile{thuthesis.dtx}[2019/04/27 5.5.2 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2020/01/06 6.0.0 Tsinghua University Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
\EnableCrossrefs
\CodelineIndex
-\RecordChanges
\begin{document}
\DocInput{\jobname.dtx}
@@ -53,90 +52,8 @@
%
% \GetFileInfo{\jobname.dtx}
%
-% \changes{v1.0}{2005/07/06}{Please refer to ``Bao--Pan'' version.}
-% \changes{v1.1}{2005/11/03}{Initial version, migrate from the old ``Bao--Pan''
-% version. Make the template a class instead of package.}
-% \changes{v1.2}{2005/11/04}{Remove \pkg{fancyref}; Remove \pkg{ucite} and implement
-% \cs{onlinecite}; use package \pkg{arial} or \pkg{helvet} selectively.}
-% \changes{v1.3}{2005/11/14}{Replace \pkg{subfigure} with \pkg{subfig}, replace \pkg{caption2}
-% with \pkg{caption}, add details about using figure are in the example.}
-% \changes{v1.4rc1}{2005/11/20}{I do not know why \cs{thu@authorizationaddon} does not work
-% now for v1.3, while it's fine in v1.2. Temporarily, I remove the directive
-% :(. There might be better solution. Other changes: add \option{config} option to
-% subfig to be compatible with subfigure. add \pkg{courier} package for tt font.}
-% \changes{v1.4}{2005/12/05}{Fix the problem of \textbf{chinese}, which is
-% because both CJK and everysel redefine the \cs{selectfont}. So, a not so good
-% workaround is to merge them up. Add \file{shuji.tex} example. Add \cs{pozhehao} command.}
-% \changes{v2.1}{2006/02/27}{Add support to bachelor thesis.}
-% \changes{v2.1}{2006/03/01}{Remove \pkg{fancyhdr} and \pkg{geometry}.}
-% \changes{v2.1}{2006/03/01}{Redefine footnote marks.}
-% \changes{v2.1}{2006/03/01}{Replace \file{thubib.bst} with \file{chinesebst.bst}.}
-% \changes{v2.1}{2006/03/02}{Merge the modification of \pkg{ntheorem}.}
-% \changes{v2.1}{2006/03/02}{Remove \pkg{footmisc} and refine the document.}
-% \changes{v2.1}{2006/03/03}{Work very hard on the document.}
-% \changes{v2.1}{2006/03/03}{Add \cs{checklab} code to reduce ``unresolved labels'' warning}
-% \changes{v2.2}{2006/03/26}{Adjust margins. How bad it is to simulate MS WORD!.}
-% \changes{v2.2}{2006/03/26}{Add bachelor training overview details supporting.}
-% \changes{v2.2}{2006/03/26}{CJK support in preamble.}
-% \changes{v2.2}{2006/03/26}{Adjust hyperref to avoid boxes around links.}
-% \changes{v2.3}{2006/04/07}{Fix a great bug: \cs{PassOptionsToClass} and \cs{LoadClass}
-% rather than \cs{PassOptionToPackage} and \cs{LoadPackage}.}
-% \changes{v2.3}{2006/04/07}{Reorganize the codes in cover, make the pagestyle more readable.}
-% \changes{v2.3}{2006/04/07}{Add gbk2uni into the document.}
-% \changes{v2.3}{2006/04/07}{Support \option{openright} and openany.}
-% \changes{v2.3}{2006/04/09}{Adjust \cs{hypersetup} to remove color and box.}
-% \changes{v2.3}{2006/04/09}{Adjust margins again.}
-% \changes{v2.3}{2006/04/09}{Adjust references formats.}
-% \changes{v2.3}{2006/04/09}{Redefine frontmatter and mainmatter to fit our case.}
-% \changes{v2.3}{2006/04/09}{Add assumption environment.}
-% \changes{v2.3}{2006/04/09}{Change the brace in the cover.}
-% \changes{v2.4}{2006/04/14}{Fill more pdf info. with \cs{hypersetup}.}
-% \changes{v2.4}{2006/04/14}{自动隐藏密级为内部时后面的五角星。}
-% \changes{v2.4}{2006/04/14}{增加“注释 (Remark)”环境。}
-% \changes{v2.4}{2006/04/14}{压缩 item 之间的距离。}
-% \changes{v2.4}{2006/04/14}{\file{thubib.bst} 文献标题取消自动小写。}
-% \changes{v2.4}{2006/04/14}{中文参考文献取消 In: Proceedings。}
-% \changes{v2.4}{2006/04/14}{英文文参考文献调整 In: editor, Proceedings。}
-% \changes{v2.4}{2006/04/14}{参考文献为学位论文时,加方括号,作者后面为实心点。}
-% \changes{v2.4}{2006/04/14}{中文参考文献作者超过三个加等。}
-% \changes{v2.4}{2006/04/14}{中文参考文献需要在 bib 中指定 |lang="chinese"|。}
-% \changes{v2.4}{2006/04/14}{学位论文不在需要 type 字段。}
-% \changes{v2.4}{2006/04/14}{为摘要等条目增加书签。}
-% \changes{v2.4}{2006/04/14}{章节的编号用黑体,也就是自动打开 \option{arialtitle} 选项。}
-% \changes{v2.4.1}{2006/04/17}{2.4 忘了把关键词的 tabular 改成 thu@tabular。}
-% \changes{v2.4.1}{2006/04/17}{参考文献最后一个作者前是逗号而不是 and。}
-% \changes{v2.4.2}{2006/04/18}{去掉参考文献第二个作者后面烦人的逗号。}
-% \changes{v2.5}{2006/05/19}{对本科论文进行大幅度的重写,因为教务处修改了格式要求。}
-% \changes{v2.5}{2006/05/19}{重新整理代码,使其布局更易读。}
-% \changes{v2.5.1}{2006/05/24}{如果选项设置了 dvips,但是用 PDF\LaTeX\ 编译,报错。}
-% \changes{v2.5.1}{2006/05/24}{根据教务处的新要求调整附录部分。}
-% \changes{v2.5.1}{2006/05/25}{参考文献中杂志文章如果没有卷号,那么页码直接跟在
-% 年份后面,并用句点分割。在 \file{thubib.bst} 中增加 output.year 函数。}
-% \changes{v2.6}{2006/06/09}{增加 dvipdfm 选项。}
-% \changes{v2.6.1}{2006/06/16}{取消 \file{thubib.bst} 中 inbook 类 volume 后的页
-% 码。}
-% \changes{v2.6.2}{2006/06/18}{改正 groupmembers 的拼写错误。}
-% \changes{v3.0}{2007/05/12}{不用专门为本科论文生成“\textbf{提交}”版本了。}
-% \changes{v3.0}{2007/05/12}{没有了综合论文训练页面,很多本科论文专用命令就消失了。}
-% \changes{v4.4}{2008/05/12}{修复网址断字。}
-% \changes{v4.5}{2008/01/03}{加入 \XeTeX\ 支持,需要 \pkg{xeCJK}。}
-% \changes{v4.5}{2008/01/04}{彻底转向 UTF-8,并支持 \XeLaTeX。}
-% \changes{v4.5}{2009/01/03}{增加 xetex, pdftex 选项。}
-% \changes{v4.6}{2011/04/27}{增加博士后文档部分。}
-% \changes{v4.6}{2011/10/22}{使用手册更新。}
-% \changes{v4.7}{2012/06/12}{去掉 \pkg{hypernat} 依赖,\pkg{hyperref} 和 \pkg{natbib} 可以很好配合了。}
-% \changes{v4.8}{2013/03/02}{no need to load \pkg{indentfirst} directly since we use \pkg{ctex}.}
-% \changes{v4.8}{2013/03/02}{内部调用 \pkg{ctex} 宏包,自动检测编译引擎。}
-% \changes{v4.8}{2013/03/04}{dvips method is deprecated. We ask their users to load it manually.}
-% \changes{v4.8}{2013/03/09}{reset baselinestretch after ctex's change.}
-% \changes{v4.8}{2014/11/25}{好几年累积的一些更新,最重要的是切换到 \CTeX。}
-% \changes{v5.4.2}{2017/12/16}{删除 \cs{pozhehao}。}
-% \changes{v5.4.4}{2018/04/22}{删除 \option{arialtitle},所有论文格式都一样。}
-%
% \def\indexname{索引}
-% \def\glossaryname{修改记录}
% \IndexPrologue{\section{\indexname}}
-% \GlossaryPrologue{\section{\glossaryname}}
%
% \title{\bfseries\color{violet}\thuthesis:清华大学学位论文模板}
% \author{{\fangsong 薛瑞尼}\\[5pt]\texttt{xueruini@gmail.com}}
@@ -154,9 +71,11 @@
% \begin{abstract}
% \noindent
% \begin{enumerate}
-% \item 本模板的发布遵守 \LaTeX\ Project Public License,使用前请认真阅读协议内
+% \item 本模板的发布遵守 \LaTeX{} Project Public License,使用前请认真阅读协议内
% 容。
-% \item 本模板为作者根据清华大学教务处颁发的《综合论文训练写作指南》,
+% \item 本模板为作者根据
+% 清华大学教务处颁发的
+% \href{http://www.law.tsinghua.edu.cn/publish/law/7024/2012/20120216153516317135347/20120216153516317135347_.html}{《综合论文训练写作指南》},
% 清华大学研究生院颁发的
% \href{http://yjsy.cic.tsinghua.edu.cn/docinfo/board/boarddetail.jsp?columnId=001050603&parentColumnId=0010506&itemSeq=5365}{《研究生学位论文写作指南》},
% 清华大学
@@ -167,7 +86,7 @@
% 权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格式审查老师
% 不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。
% \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵
-% 守 \LaTeX\ Project Public License 协议。由于违犯协议而引起的任何纠纷争端均与
+% 守 \LaTeX{} Project Public License 协议。由于违犯协议而引起的任何纠纷争端均与
% 本模板作者无关。
% \end{enumerate}
% \end{abstract}
@@ -183,35 +102,39 @@
% \clearpage
%
% \section{模板介绍}
-% \thuthesis\ (\textbf{T}sing\textbf{h}ua \textbf{U}niversity \LaTeX\
+% \thuthesis{} (\textbf{T}sing\textbf{h}ua \textbf{U}niversity \LaTeX{}
% \textbf{Thesis} Template) 是为了帮助清华大学毕业生撰写毕业论文而编写
-% 的 \LaTeX\ 论文模板。
+% 的 \LaTeX{} 论文模板。
%
-% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处可以参考示例文档或者根据
-% 第~\ref{sec:howtoask} 节说明提问,有兴趣者都可以参与完善此手册,也非常欢迎对代
-% 码的贡献。
+% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处,或者想提出改进建议,
+% 可以在 \href{https://github.com/xueruini/thuthesis/issues/}{GitHub Issues}
+% 参与讨论或提问。
+% 有兴趣者都可以参与完善此手册,也非常欢迎对代码的贡献。
%
% \note[注意:]{模板的作用在于减少论文写作过程中格式调整的时间。前提是遵守模板的
-% 用法,否则即便用了 \thuthesis\ 也难以保证输出的论文符合学校规范。}
+% 用法,否则即便用了 \thuthesis{} 也难以保证输出的论文符合学校规范。}
%
+% 用户如果遇到 bug,或者发现与学校《写作指南》 的要求不一致,可以尝试以下办法:
+% \begin{enumerate}
+% \item 将模板升级到最新,见第~\ref{sec:upgrade} 节;
+% \item 阅读 \href{https://github.com/xueruini/thuthesis/wiki/FAQ}{FAQ};
+% \item 在 GitHub Issues 中按照说明
+% \href{https://github.com/xueruini/thuthesis/issues/new?template=bug_report.md}{报告 bug}。
+% \end{enumerate}
%
% \section{安装}
% \label{sec:installation}
%
-% \thuthesis\ 已经包含在主要的 \TeX\ 发行版中,一般不需要安装,可以利用发行版自
-% 带更新工具自动更新。阅读文档可以使用以下命令:
-% \begin{shell}
-% $ texdoc thuthesis
-% \end{shell}
+% \thuthesis{} 已经包含在主要的 \TeX{} 发行版中,但是通常版本较旧,
+% 而且不方便更新。
+% 建议使用 GitHub 上的最新版:
+% \url{https://github.com/xueruini/thuthesis}。
%
-% 如果要使用开发版,需自己下载,\thuthesis\ 相关链接:
-% \begin{itemize}
-% \item 主页:\href{https://github.com/xueruini/thuthesis}{GitHub}
-% \item 下载:\href{http://www.ctan.org/pkg/thuthesis}{CTAN}
-% \end{itemize}
+% 模板支持在 TeX Live、MacTeX 和 MiKTeX 平台下进行编译,但要求 2017 年或更新的发行版。
+% 当然,尽可能使用最新的版本可以避免 bug。
%
% \subsection{模板的组成}
-% 下表列出了 \thuthesis\ 的主要文件及其功能介绍:
+% 下表列出了 \thuthesis{} 的主要文件及其功能介绍:
%
% \begin{longtable}{l|p{8cm}}
% \toprule
@@ -229,11 +152,11 @@
% thuthesis-author-year.bst & 参考文献样式文件\\
% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\\midrule
% main.tex & 示例文档主文件\\
-% shuji.tex & 书脊示例文档\\
+% spine.tex & 书脊示例文档\\
% ref/ & 示例文档参考文献目录\\
% data/ & 示例文档章节具体内容\\
% figures/ & 示例文档图片路径\\
-% thuthesis.sty & 为示例文档加载其它宏包\\\midrule
+% thusetup.tex & 示例文档基本配置\\\midrule
% Makefile & Makefile\\
% latexmkrc & latexmk 配置文件 \\
% README.md & Readme\\
@@ -250,112 +173,79 @@
%
% \subsection{生成模板}
% \label{sec:generate-cls}
-% \note[提示:]{若使用 \TeX 发行版自带的 \thuthesis\ 或 Github 上发布的版本,可忽
-% 略此节,直接阅读第~\ref{sec:generate-thesis} 节。若下载 CTAN 包或者 Github 开发
-% 代码,请阅读本节了解生成模板文件的步骤。}
-%
-% 模板解压缩后生成文件夹 \file{thuthesis-vX.Y.Z}\footnote{\texttt{vX.Y.Z} 为版本
-% 号。},其中包括:模板源文件(\file{thuthesis.ins} 和 \file{thuthesis.dtx}),参
-% 考文献样式 \file{thuthesis-numeric.bst} 和 \file{thuthesis-author-year.bst},示例文档
-% (\file{main.tex},\file{shuji.tex},\file{thuthesis.sty}\footnote{可能用到的包
-% 以及一些命令定义都放在这里,以免 \file{thuthesis.cls} 过分臃
-% 肿。},\file{data/} 和 \file{figures/} 和 \file{ref/})。在使用之前需要先生成模
-% 板文件和配置文件(具体命令细节请参考 \file{README.md} 和 \file{Makefile}):
+% 模板的源文件(\file{thuthesis.dtx})中包含了大量的注释,需要将注释去掉生成轻量
+% 级的 \file{.cls} 文件供 \cs{documentclass} 调用。
%
% \begin{shell}
-% $ cd thuthesis-vX.Y.Z
-% # 生成 thuthesis.cls
-% $ xetex thuthesis.ins
-%
-% # 下面的命令用来生成用户手册,可以不执行
-% $ xelatex thuthesis.dtx
-% $ makeindex -s gind.ist -o thuthesis.ind thuthesis.idx
-% $ makeindex -s gglo.ist -o thuthesis.gls thuthesis.glo
-% $ xelatex thuthesis.dtx
-% $ xelatex thuthesis.dtx % 生成说明文档 thuthesis.pdf
+% $ xetex thuthesis.ins
% \end{shell}
%
-% \subsection{生成论文}
+% \note[注意:]{如果没有生成的模板 \file{thuthesis.cls} 文件
+% (跟 \file{main.tex} 同一目录下),
+% \LaTeX{} 在编译时可能找到发行版中较旧版本的 \file{.cls},从而造成冲突。}
+%
+% \subsection{编译论文}
% \label{sec:generate-thesis}
% 本节介绍几种常见的生成论文的方法。用户可根据自己的情况选择。
%
-% \subsubsection{\XeLaTeX}
-% \label{sec:xelatex}
-% 很多用户对 \LaTeX\ 命令执行的次数不太清楚。一个基本的原则是多次运行 \LaTeX\ 命
-% 令直至不再出现警告。下面给出生成示例文档的详细过程(\texttt{\#} 开头的行为注
-% 释),首先来看推荐的 \texttt{xelatex} 方式:
+% \subsubsection{GNU make}
+% \label{sec:make}
+% 如果用户可以使用 GNU make 工具,这是最方便的办法。
+% 所以 \thuthesis{} 提供了 \file{Makefile}:
% \begin{shell}
-% # 1. 发现里面的引用关系,文件后缀 .tex 可以省略
-% $ xelatex main
-%
-% # 2. 编译参考文件源文件,生成 bbl 文件
-% $ bibtex main
-%
-% # 3. 下面解决引用
-% $ xelatex main
-% $ xelatex main # 此时生成完整的 pdf 文件
+% $ make thesis # 生成论文 main.pdf
+% $ make spine # 生成书脊 spine.pdf
+% $ make doc # 生成说明文档 thuthesis.pdf
+% $ make clean # 清理编译生成的辅助文件
% \end{shell}
%
% \subsubsection{latexmk}
% \label{sec:latexmk}
-% \texttt{latexmk} 命令支持全自动生成 \LaTeX\ 编写的文档,并且支持使用不同的工具
-% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。下面给出了一个用
-% \texttt{latexmk} 调用 \texttt{xelatex} 生成最终文档的示例:
+% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具
+% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。
% \begin{shell}
-% # 一句话就够了!
-% $ latexmk -xelatex main
+% $ latexmk main.tex # 生成论文 main.pdf
+% $ latexmk spine.tex # 生成书脊 spine.pdf
+% $ latexmk thuthesis.dtx # 生成说明文档 thuthesis.pdf
+% $ latexmk -c # 清理编译生成的辅助文件
% \end{shell}
+% \texttt{latexmk} 的编译过程是通过 \file{latexmk} 文件来配置的,如果要进一步了解,
+% 可以参考 \pkg{latexmk} 的文档。
%
-% \subsubsection{make}
-% \label{sec:make}
-% \note[提示:]{若要使用 \texttt{make} 编译,需自行下载模板。因为 \TeX\ 发行版中
-% 的 \file{Makefile} 不在当前目录。}
-%
-% 上面的方法虽然不复杂,但是每次都输入还是非常罗嗦,所以 \thuthesis\ 提供了一
-% 个 \file{Makefile}:
-%
+% \subsubsection{\XeLaTeX}
+% \label{sec:xelatex}
+% 如果用户无法使用以上两种较为方便的编译方法,就只能按照以下复杂的办法手动编译。
% \begin{shell}
-% $ make clean
-% $ make cls # 生成 thuthesis.cls
-% $ make doc # 生成说明文档 thuthesis.pdf
-% $ make thesis # 生成示例文档 main.pdf
-% $ make shuji # 生成书脊 shuji.pdf
+% $ xetex thuthesis.ins # 生成 thuthesis.cls
+% $ xelatex main.tex
+% $ bibtex main.tex # 生成 bbl 文件
+% $ xelatex main.tex # 解决引用
+% $ xelatex main.tex # 生成完整的 pdf 文件
% \end{shell}
%
-% \thuthesis\ 的 \file{Makefile} 默认用 \texttt{latexmk} 调用\texttt{xelatex} 编
-% 译。如有需要可修
-% 改 \file{Makefile} 开头的参数或通过命令行传递参数(请参看 \file{README.md}),
-% 进一步还可以修改 \file{latexmkrc} 进行定制。
-%
-% \subsection{升级}
-% \label{sec:updgrade}
-% \thuthesis\ 升级非常简单,可以通过 \TeX\ 发行版的包管理工具自动更新发行版,也可
-% 以下载最新的开发版,
-% 将 \file{thuthesis.ins},\file{thuthesis.dtx},\file{tsinghua.pdf},
-% \file{thuthesis-author-year.bst} 和 \file{thuthesis-numeric.bst} 拷贝至工作目录覆盖相应
-% 的文件,然后运行:
+% 下面的命令用来生成用户手册,
% \begin{shell}
-% $ xetex thuthesis.ins
+% $ xelatex thuthesis.dtx
+% $ makeindex -s gind.ist -o thuthesis.ind thuthesis.idx
+% $ makeindex -s gglo.ist -o thuthesis.gls thuthesis.glo
+% $ xelatex thuthesis.dtx
+% $ xelatex thuthesis.dtx % 生成说明文档 thuthesis.pdf
% \end{shell}
%
-% 生成新的类文件和配置文件即可。也可以直接拷
-% 贝 \file{thuthesis.cls},免去上面命令的执行。
+% \subsection{升级}
+% \label{sec:upgrade}
+% 如果需要升级 \thuthesis{},应当从 GitHub 下载最新的版本,
+% 将 \file{thuthesis.dtx},\file{thuthesis.ins},\file{tsinghua.pdf}和
+% \file{thuthesis-*.bst} 拷贝至工作目录覆盖相应的文件,然后按照
+% 第~\ref{sec:generate-cls} 节的内容生成新的模板和使用说明。
%
+% 有时模板可能进行了重要的修改,不兼容已写好的正文内容,
+% 用户应当按照 GitHub 上的示例文档的格式重新调整。
%
% \section{使用说明}
% \label{sec:usage}
-% 本手册假定用户已经能处理一般的 \LaTeX\ 文档,并对 \BibTeX\ 有一定了解。如果
-% 从来没有接触过 \TeX\ 和 \LaTeX,建议先学习相关的基础知识。
-%
-% \subsection{关于提问}
-% \label{sec:howtoask}
-% 按照优先级推荐提问的位置如下:
-%
-% \begin{itemize}
-% \item \href{http://github.com/xueruini/thuthesis/issues}{Github Issues}
-% \item \href{http://www.newsmth.net/nForum/#!board/TeX}{Tex@newsmth}
-% \item \href{http://groups.google.com/group/thuthesis}{ThuThesis@Google Groups}
-% \end{itemize}
+% 本手册假定用户已经能处理一般的 \LaTeX{} 文档,并对 \hologo{BibTeX} 有一定了解。如果
+% 从未接触过 \TeX{} 和 \LaTeX,建议先学习相关的基础知识。
%
% \subsection{示例文件}
% \label{sec:userguide}
@@ -363,403 +253,293 @@
% 模板核心文件
% 有:\file{thuthesis.cls},\file{thuthesis-numeric.bst},
% \file{thuthesis-author-year.bst} 和 \file{tsinghua.pdf},
-% 但如果没有示例文档会很难下手,所以推荐从模板自带的示例文档入手,其中包括了论文
-% 写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。对于不清
+% 但如果没有示例文档会较难下手,所以推荐从模板自带的示例文档入手。其中包括了论文
+% 写作用到的所有命令及其使用方法,只需用自己的内容进行相应替换就可以。对于不清
% 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档,
% 具体内容可以参考模板附带的 \file{main.tex} 和 \file{data/}。
%
% \lstinputlisting[style=lstStyleLaTeX]{main.tex}
%
+% 其中 \file{thusetup.tex} 包括了论文基本信息的配置样例:
+%
+% \lstinputlisting[style=lstStyleLaTeX]{thusetup.tex}
+%
% \subsection{论文选项}
% \label{sec:option}
%
% \DescribeOption{degree}
-% 选择论文类型,当前支
-% 持:\option{bachelor},\option{master},\option{doctor},\option{postdoctor}。
-% 为必选项。
+% 选择学位,可选:
+% \option{bachelor},\option{master},\option{doctor}(默认),\option{postdoc}。
+% 本节中的 \emph{key-value} 选项只能在文档类的选项中进行设置,
+% 不能用于 \cs{thusetup} 命令。
% \begin{latex}
-% % 博士论文
-% \documentclass[degree=doctor]{thuthesis}
-%
-% % 硕士论文
-% \documentclass[degree=master]{thuthesis}
+% % 博士论文
+% \documentclass[degree=doctor]{thuthesis}
% \end{latex}
%
-% \DescribeOption{language}
-% 论文的主要语言(默认:中文)。可选:\option{chinese},\option{english}。
-%
-% \DescribeOption{secret}
-% 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置分别用来指定保
-% 密级别和时限。若不设置,则二者取默认值,分别为“\textbf{秘密}”和当前年份。
+% \subsubsection{学位类型}
+% \label{sec:degree-type}
+% 定义研究生学位的类型,可选:\option{academic}(默认)、\option{professional},
+% 本科生不受影响。
% \begin{latex}
-% \documentclass[secret]{thuthesis} % 打开保密
-% \documentclass[secret=false]{thuthesis} % 关闭保密
-%
-% \thusetup{
-% secretlevel=公开,
-% secretyear=10
-% }
+% \documentclass[degree=master, degree-type=professional]{thuthesis}
% \end{latex}
%
-% \DescribeOption{openany}
-% \DescribeOption{openright}
-% 正规出版物的章节出现在奇数页,也就是右手边的页面,这就是 \option{openright},也
-% 是 \thuthesis\ 的默认选项。在这种情况下,如果前一章的最后一页也是奇数,那么模板
-% 会自动生成一个纯粹的空白页,很多人不是很习惯这种方式,而且学校的格式似乎更倾向
-% 于页面连续,那就是通常所说的 \option{openany}\footnote{目前所有论文都
-% 是 \option{openany}。}。这两个选项不用设置,\thuthesis\ 会根据当前论文类型自动选
-% 择。
-%
-% \DescribeOption{tocarialchapter}
-% 章目录项(内容和页码)是否用 \textsf{Arial} 字体。如果想分别控制内容和页码的字体,
-% 用下面两个开关。
-%
-% \DescribeOption{tocarialchapterentry}
-% 章目录项内容中的英文和数字是否用 \textsf{Arial} 字体。中文强制黑体,为了协调这个选
-% 项应该默认打开,不过从目前的反馈来看各学院的标准不一致。
-%
-% \DescribeOption{tocarialchapterpage}
-% 章目录项页码是否用 \textsf{Arial} 字体。
-%
-% \subsection{引用方式}
-% \label{sec:citestyle}
-% 模板支持两种引用方式,分别为理工科常用的“数字式 [1]”和文科常用
-% 的“作者-年份 (Zhang, 2008)”。使用者可通过 \cs{bibliographystyle} 来选择:
-% \begin{latex}
-% % 数字式
-% \bibliographystyle{thuthesis-numeric}
-%
-% % 作者-年份
-% \bibliographystyle{thuthesis-author-year}
-% \end{latex}
-%
-% \DescribeMacro{\inlinecite}
-% 学校要求的参考文献引用有两种模式:(1)上标模式。比如``同样的工作有很
-% 多$^{[1,2]}$\ldots''。(2)正文模式。比如``文[3] 中详细说明了\ldots''。其中上标
-% 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规
-% 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。
-%
-% 关于参考文献表推荐使用 \BibTeX,默认情况下可以自动识别文献语言,
-% 并自动处理文献类型和载体类型标识,也可以手动指定,如:
-% \begin{latex}
-% @misc{citekey,
-% language = {japanese},
-% mark = {Z},
-% medium = {DK},
-% ...
-% \end{latex}
-% 可选的语言有 english, chinese, japanese, russian。
-%
-% 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行,
-% 以避免可能的编译错误。
+% \DescribeOption{language}
+% 论文全文的主要语言。可选:\option{chinese}(默认),\option{english}。
%
-% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中,
-% 然后按著者字顺和出版年排列;
-% 中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。
-% 然而由于 \BibTeX{} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺,
-% 所以\emph{必须}在 bib 数据库中的 key 域手动录入著者姓名的拼音,如:
+% 注意,本科生《写作指南》要求“本科生(含国外来华留学本科生)非外语专业论文统一要求
+% 用中文书写。”研究生《写作指南》要求“外国人来华留学生可以用英文撰写学位论文,但
+% 须采用中文封面”,“除留学生外,学位论文一律须用汉语书写”,用户须提前与导师和院系
+% 的审查教师协商使用何种语言书写论文。
% \begin{latex}
-% @book{capital,
-% author = {马克思 and 恩格斯},
-% key = {ma3 ke4 si1 en1 ge2 si1},
-% ...
+% \documentclass[degree=bachelor, language=english]{thuthesis}
% \end{latex}
%
-% \BibTeX{} 对自定义样式的支持比较有限,
-% 所以用户只能通过修改 \file{bst} 文件来修改文献列表的格式。
-% 本宏包提供了一些接口供用户更方便地修改,
-% 在 \file{bst} 文件开始处的 |load.config| 函数中,
-% 有一组配置参数用来控制样式。
-% 若变量被设为 |#1| 则表示该项被启用,设为 |#0| 则不启用。
-% 默认的值是严格遵循学校规定的配置。
-%
-%
-% \subsection{中文字体}
-% \label{sec:chinese-fonts}
-%
-% \subsubsection{字体配置}
+% \subsection{字体配置}
% \label{sec:font-config}
-% 模板默认使用 \CTeX\ 的字体配置。关于中文字体安装、配置的所有问题不在本模板讨论
-% 范围。
-%
-% \subsubsection{字体命令}
-% \label{sec:fontcmds}
-% \myentry{字体}
-% \DescribeMacro{\songti}
-% \DescribeMacro{\fangsong}
-% \DescribeMacro{\heiti}
-% \DescribeMacro{\kaishu}
-% 用来切换宋体、仿宋、黑体、楷体四种基本字体。
+% 模板默认可以自动检测操作系统,并配置改平台上合适的字体,
+% 具体的配置策略如表~\ref{tab:font}。
+% \begin{table}[htb]
+% \centering
+% \caption{\thuthesis{} 自动配置字体策略}
+% \label{tab:font}
+% \begin{tabular}{ccc}
+% \toprule
+% Windows & macOS & 其他 \\
+% \midrule
+% Times New Roman & Times New Roman & TeX Gyre Termes \\
+% Arial & Arial & TeX Gyre Heros \\
+% Courier & Menlo & TeX Gyre Cursor \\
+% 中易宋体 & 华文宋体 & Fandol 宋体 \\
+% 中易黑体 & 华文黑体 & Fandol 黑体 \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% 然而自动配置的字体只能保证编译通过,但是还存在一些问题:
+% \begin{enumerate}
+% \item 在其他平台上配置的 TeX Gyre 系列字体,虽然在风格上比较接近 Times 和 Arial,
+% 但是毕竟跟《写作指南》要求的字体不完全一致;
+% \item Fandol 字库的字形较少,常常出现缺字的情况;
+% \item 华文字库和 Fandol 字库虽然不违反《写作指南》的要求,
+% 但是其字形跟中易字库有所差别,这导致封面、标题的视觉效果与学校的 Word 示例不一致,
+% 可能被审查老师认为格式不符合要求。
+% \end{enumerate}
%
-% \begin{latex}
-% {\songti 乾:元,亨,利贞}
-% {\fangsong 初九,潜龙勿用}
-% {\heiti 九二,见龙在田,利见大人}
-% {\kaishu 九三,君子终日乾乾,夕惕若,厉,无咎}
-% \end{latex}
+% 所以建议在提交最终版前使用 Windows 平台的字体进行编译。
%
-% \myentry{字号}
-% \DescribeMacro{\chuhao}
-% \DescribeMacro{\xiaochu}
-% \DescribeMacro{\yihao}
-% \DescribeMacro{\xiaoyi}
-% \DescribeMacro{\bahao}
-% 定义字体大小,分别为:
-%
-% \begin{center}
-% \begin{tabular}{llllll}
-% \toprule
-% \cs{chuhao} & \cs{xiaochu} & \cs{yihao} & \cs{xiaoyi} & \cs{erhao} & \cs{xiaoer}\\
-% \cs{sanhao} & \cs{xiaosan} & \cs{sihao} & \cs{banxiaosi} & \cs{xiaosi} & \cs{dawu}\\
-% \cs{wuhao} & \cs{xiaowu} & \cs{liuhao} & \cs{xiaoliu} & \cs{qihao} & \cs{bahao}\\\bottomrule
-% \end{tabular}
-% \end{center}
-%
-% 使用方法为:\cs{command}\oarg{num},其中 command 为字号命令,num 为行距。比
-% 如 \cs{xiaosi}[1.5] 表示选择小四字体,行距 1.5 倍。写作指南要求表格中的字体
-% 是 \cs{dawu},模板已经设置好了。
+% 用户也可以在调用 \thuthesis{} 时手动指定使用的字库,如:
%
% \begin{latex}
-% {\erhao 二号}
-% {\sanhao[1.5] 三号}
-% {\sihao 四号}
-% {\qihao[2] 七号}
+% \documentclass[fontset=windows]{thuthesis}
% \end{latex}
%
-% 也可以使用 \CTeX\ 定义的 \cs{zihao}\marg{num} 来切换字号,具体用法参看其文
-% 档。
+% 允许的选项有 \option{windows}、\option{mac}、\option{fandol},详
+% 见 \pkg{ctex}、\pkg{xeCJK}、\pkg{fontspec} 等宏包的使用说明。
%
% \subsection{封面信息}
% \label{sec:titlepage}
-% 封面信息提供两种配置方法:一是通过统一设置命
-% 令 \cs{thusetup} 通过\emph{key=value} 形式完成;二是每个信息利用命令独立设置,
-% 其中命令的名字跟 \emph{key} 相同。两种方式可以交叉使用,并按顺序执行(即后来的设置会覆
-% 盖前面的)。以 \texttt{c} 开头的命令跟中文相关,\texttt{e} 开头则为对应的英文。
+% 封面信息可以通过统一设置命令 \cs{thusetup} 设置 \emph{key=value} 形式完成;
+% 带 * 号的键通常是对应的英文。
%
% \DescribeMacro{\thusetup}
% \cs{thusetup} 用法与常见 \emph{key=value} 命令相同,如下:
% \begin{latex}
-% \thusetup{
-% key1 = value1,
-% key2 = {a value, with comma},
-% }
-% % 可以多次调用
-% \thusetup{
-% key3 = value3,
-% key1 = value11, % 覆盖 value1
-% }
+% \thusetup{
+% key1 = value1,
+% key2 = {a value, with comma},
+% }
+% % 可以多次调用
+% \thusetup{
+% key3 = value3,
+% key1 = value11, % 覆盖 value1
+% }
% \end{latex}
%
-% \note[注意:]{\cs{thusetup} 使用 \pkg{kvoptions} 机制,所以配置项之间不能有空行,否则
+% \note[注意:]{\cs{thusetup} 使用 \pkg{kvsetkeys} 机制,所以配置项之间不能有空行,否则
% 会报错。}
%
-% 大多数命令的使用方法都是: \cs{command}\marg{arg},例外者将具体指出。这些命令都
-% 在示例文档的 \file{data/cover.tex} 中。
-%
-% \subsubsection{密级}
-% \label{sec:setup-secret}
-% 定义秘密级别和年限,需要打开论文的 \option{secret} 选项。
-% \begin{latex}
-% \thusetup{
-% secretyear = 10,
-% secretlevel = {内部},
-% }
-% \end{latex}
-%
-% \subsubsection{博士后专用参数}
-% 只见过,没用过,不知道具体是什么意思。
-% \begin{latex}
-% \thusetup{
-% catalognumber = {分类号},
-% udc = {udc},
-% id = {id},
-% }
-% \end{latex}
-%
% \subsubsection{论文标题}
% 中英文标题。可以在标题内部使用换行|\\|。
% \begin{latex}
-% \thusetup{
-% ctitle = {论文中文题目},
-% etitle = {Thesis English Title},
-% }
-% \end{latex}
-%
-% \subsubsection{作者姓名}
-% 作者姓名。
-% \begin{latex}
-% \thusetup{
-% cauthor = {中文姓名},
-% eauthor = {Name in Pinyin},
-% }
+% \thusetup{
+% title = {论文中文题目},
+% title* = {Thesis English Title},
+% }
% \end{latex}
%
% \subsubsection{申请学位名称}
-% \label{sec:degree}
-% 学位和专业的设置比想象的要复杂一些:
+% \label{sec:degree-name}
+% 学位的设置要复杂一些:
%
-% \begin{longtable}{p{2cm}p{8cm}p{4cm}}
+% \begin{longtable}{p{2cm}p{6cm}p{6cm}}
% \toprule
-% 学位类型 & edegree & emajor \\\midrule
-% 学术型硕士
-% & 必须为“Master of Art”或“Master of Science”(注意大
-% 小写),其中 “哲学、文学、历史学、法学、教育学、艺术学门类,公共
-% 管理学科填写“Master of Arts”,其它填写“Master of Science”。
-% & “获得一级学科授权的学科填写一级学科名称,其它填写二级学
-% 科名称”。\\\midrule
-% 专业型硕士
-% & 专业学位英文名称全称 & % 工程硕士填写工程领域,其它专业学位不填写此项。\\\midrule
-% 学术型博士 & Doctor of Philosophy(注意大小写)
-% & 获得一级学科授权的学科填写一级学科名称,其它填写二级学科名称。\\\midrule
-% 专业型博士 & 专业学位英文名称全称 & 不填写此项。\\\bottomrule
+% 学位类型 & degree-name & degree-name* \\
+% \midrule
+% 学术型博士 & 需注明所属的学科门类,例如:
+% 哲学、经济学、法学、教育学、文学、历史学、理学、工学、农学、医学、
+% 军事学、管理学、艺术学
+% & Doctor of Philosophy \\
+% \midrule
+% 学术型硕士 & 同上
+% & 哲学、文学、历史学、法学、教育学、艺术学门类,公共管理学科
+% 填写“Master of Arts“,其它填写“Master of Science” \\
+% \midrule
+% 专业型研究生学位 & 专业学位的名称,例如:教育博士、工程硕士
+% & 专业学位的名称,例如:Doctor of Education, Master of Engineering \\
+% \midrule
+% 本科生 & - & - \\
+% \bottomrule
% \end{longtable}
%
% \begin{latex}
-% \thusetup{
-% cdegree = {您要申请什么学位},
-% edegree = {Degree in English},
-% }
+% \thusetup{
+% degree-name = {您要申请什么学位},
+% degree-name* = {Degree in English},
+% }
% \end{latex}
%
% \subsubsection{院系名称}
% 院系名称。
% \begin{latex}
-% \thusetup{
-% cdepartment = {系名全称},
-% edepartment = {Deparment of CS},
-% }
+% \thusetup{
+% department = {系名全称},
+% }
% \end{latex}
%
-% \subsubsection{专业名称}
-% 参见第 \ref{sec:degree} 节。
+% \subsubsection{学科名称}
+%
+% \begin{itemize}
+% \item 学术型学位:获得一级学科授权的学科填写一级学科名称,其他填写二级学科名称;
+% \item 工程硕士:工程领域名称;
+% \item 其他专业型学位:-
+% \item 本科生:-
+% \end{itemize}
+%
% \begin{latex}
-% \thusetup{
-% cmajor = {专业名称},
-% emajor = {Major in English},
-% }
+% \thusetup{
+% discipline = {学科名称},
+% discipline* = {Discipline in English},
+% }
% \end{latex}
%
-% 博士后专用。
+% \subsubsection{作者姓名}
+% 作者姓名。
% \begin{latex}
-% \thusetup{
-% cfirstdiscipline = {流动站(一级学科)名称},
-% cseconddiscipline = {专业(二级学科)名称},
-% }
+% \thusetup{
+% author = {中文姓名},
+% author* = {Name in Pinyin},
+% }
% \end{latex}
%
% \subsubsection{导师}
% \myentry{导师}
-% 直接导师。
+% 导师的姓名与职称之间以“,”(西文逗号,U+002C)隔开,下同。
% \begin{latex}
-% \thusetup{
-% csupervisor = {导师~教授},
-% esupervisor = {Supervisor},
-% }
+% \thusetup{
+% supervisor = {导师姓名, 教授},
+% supervisor* = {Supervisor Name, Professor},
+% }
% \end{latex}
%
% \myentry{副导师}
% 本科生的辅导教师,硕士的副指导教师。
% \begin{latex}
-% \thusetup{
-% cassosupervisor = {副导师~副教授},
-% eassosupervisor = {2nd Boss},
-% }
+% \thusetup{
+% associate-supervisor = {副导师姓名, 副教授},
+% associate-supervisor* = {Assoc-Supervisor Name, Professor},
+% }
% \end{latex}
%
% \myentry{联合导师}
% 硕士生联合指导教师,博士生联合导师。
% \begin{latex}
-% \thusetup{
-% ccosupervisor = {联合导师~教授},
-% ecosupervisor = {3rd Boss},
-% }
+% \thusetup{
+% joint-supervisor = {联合导师姓名, 教授},
+% joint-supervisor* = {Join-Supervisor Name, Professor},
+% }
% \end{latex}
%
% \subsubsection{成文日期}
-% 默认为当前时间,也可以自己指定。
+% 默认为当前日期,也可以自己指定,要求使用 ISO 格式。
% \begin{latex}
-% \thusetup{
-% cdate = {中文日期},
-% edate = {English Date},
-% postdoctordate = {2009 年 7 月——2011 年 7 月}, % 博士后工作完成日期
-% postdocstartdate = {2009 年 7 月 1 日}, % 博士后研究工作起始时间
-% postdocenddate = {2011 年 7 月 1 日}, % 博士后研究工作期满时间
-% }
+% \thusetup{
+% date = {2011-07-01},
+% }
% \end{latex}
%
-% \subsubsection{摘要}
-% \myentry{摘要正文}
-% \DescribeEnv{cabstract}
-% \DescribeEnv{eabstract}
-% \note[说明:]{摘要正文只能用环境命令的形式,不支持 \cs{thusetup}。}
-%
+% \subsubsection{密级}
+% \label{sec:setup-secret}
+% 定义秘密级别和年限。
% \begin{latex}
-% \begin{cabstract}
-% 摘要请写在这里...
-% \end{cabstract}
-%
-% \begin{eabstract}
-% Here comes the abstract in English...
-% \end{eabstract}
+% \thusetup{
+% secret-year = 10,
+% secret-level = {内部},
+% }
% \end{latex}
%
-% \myentry{关键词}
-% 关键词用英文逗号分割写入相应的命令中,模板会解析各关键词并生成符合不同论文格式
-% 要求的关键词格式。
+% \subsubsection{博士后专用参数}
% \begin{latex}
-% \thusetup{
-% ckeywords = {关键词 1, 关键词 2},
-% ekeywords = {keyword 1, keyword 2},
-% }
+% \thusetup{
+% clc = {分类号},
+% udc = {udc},
+% id = {id},
+% discipline-level-1 = {流动站(一级学科)名称},
+% discipline-level-2 = {专业(二级学科)名称},
+% start-date = {2011-07-01}, % 研究工作起始时间
+% }
% \end{latex}
%
% \myentry{生成封面}
-% \DescribeMacro{\makecover}
-% 生成封面,包括首页,授权,摘要等。用法:\cs{makecover}\oarg{file}。如果使用授权
-% 说明扫描页,将可选参数中指定为扫描得到的 PDF 文件名,例如:
+% \DescribeMacro{\maketitle}
+% 生成封面,不含授权说明,摘要等。
% \begin{latex}
-% % 直接生成封面
-% \makecover
-%
-% % 将签字扫描后授权文件 scan-auth.pdf 替换原始页面
-% \makecover[scan-auth.pdf]
+% % 直接生成封面
+% \maketitle
% \end{latex}
%
-% \subsubsection{符号对照表}
-% \DescribeEnv{denotation}
-% 主要符号表环境,跟 \env{description} 类似,使用方法参见示例文件。带一个可选参数,
-% 用来指定符号列的宽度(默认为 2.5cm)。
-% \begin{latex}
-% \begin{denotation}
-% \item[E] 能量
-% \item[m] 质量
-% \item[c] 光速
-% \end{denotation}
-% \end{latex}
+% \subsection{前言部分}
%
-% 如果默认符号列的宽度不满意,可以通过参数来调整:
+% \subsubsection{授权说明}
+% \myentry{授权说明}
+% \DescribeMacro{\copyrightpage}
+% 生成授权说明。用法:\cs{copyrightpage}\oarg{file}。
+% 可选参数为扫描得到的 PDF 文件名,例如:
% \begin{latex}
-% \begin{denotation}[1.5cm] % 设置为 1.5cm
-% \item[E] 能量
-% \item[m] 质量
-% \item[c] 光速
-% \end{denotation}
+% % 将签字扫描后授权文件 scan-auth.pdf 替换原始页面
+% \copyrightpage[scan-auth.pdf]
% \end{latex}
%
-% 另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置:
+% \subsubsection{摘要}
+% \myentry{摘要正文}
+% \DescribeEnv{abstract}
+% \DescribeEnv{abstract*}
+%
+% 摘要直接在正文中使用 \env{abstract}、\env{abstract*} 环境生成。
+%
% \begin{latex}
-% \usepackage{nomencl}
-% \makenomenclature
+% \begin{abstract}
+% 摘要请写在这里...
+% \end{abstract}
+%
+% \begin{abstract*}
+% Here comes the abstract in English...
+% \end{abstract*}
% \end{latex}
-% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号:
+%
+% \myentry{关键词}
+% 关键词需要使用 \cs{thusetup} 进行设置。关键词之间以\emph{西文逗号}隔开,模板会
+% 自动调整为要求的格式。关键词的设置只要在摘要环境结束前即可。
% \begin{latex}
-% \nomenclature{$m$}{The mass of one angel}
+% \thusetup{
+% keywords = {关键词 1, 关键词 2},
+% keywords* = {keyword 1, keyword 2},
+% }
% \end{latex}
-% 最后使用 \cs{printnomenclature} 命令生成符号表。
-% 更详细的使用方法参见 \pkg{nomencl} 宏包的文档。
%
-% \subsection{目录和索引表}
-% 目录、插图、表格和公式等索引命令分别如下,将其插入到期望的位置即可(带星号的命令表
+% \subsubsection{目录和索引表}
+% 目录、插图、表格和公式等索引命令分别如下,将其插入到期望的位置即可(带*的命令表
% 示对应的索引表不会出现在目录中):
%
% \DescribeMacro{\tableofcontents}
@@ -781,15 +561,15 @@
% & \cs{listofequations*}\\\bottomrule
% \end{longtable}
%
-% \LaTeX\ 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出
+% \LaTeX{} 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出
% 现在浮动环境中,否则不被计数。
%
% 如果不想让某个表格或者图片出现在索引里面,那么请使用命令 \cs{caption*},这
-% 个命令不会给表格编号,也就是出来的只有标题文字而没有``表~xx'',``图~xx'',否则
-% 索引里面序号不连续就显得不伦不类,这也是 \LaTeX\ 里星号命令默认的规则。
+% 个命令不会给表格编号,也就是出来的只有标题文字而没有“表~xx”,“图~xx”,否则
+% 索引里面序号不连续就显得不伦不类,这也是 \LaTeX{} 里星号命令默认的规则。
%
% 有这种需求的多是本科同学的英文资料翻译部分,如果你觉得附录中英文原文中的表格和
-% 图片显示成``表''和``图''很不协调的话,一个很好的办法还是用 \cs{caption*},参数
+% 图片显示成“表”和“图”很不协调的话,一个很好的办法还是用 \cs{caption*},参数
% 随便自己写,具体用法请参看示例文档。
%
% 如果的确想让其编号,但又不想出现在索引中的话,目前模板暂不支持。
@@ -805,65 +585,259 @@
% 使用方法如下。假如有一个非 equation 数学环境 \texttt{mymath},只要在其中写一
% 句 \cs{equcaption} 就可以将它加入公式列表。
% \begin{latex}
-% \begin{mymath}
-% \label{eq:emc2}\equcaption{\ref{eq:emc2}}
-% E=mc^2
-% \end{mymath}
+% \begin{mymath}
+% \label{eq:emc2}\equcaption{\ref{eq:emc2}}
+% E=mc^2
+% \end{mymath}
% \end{latex}
%
% \texttt{mymath} 中公式的编号需要自己来做。
%
-% 同图表一样,附录中的公式有时候也不希望它跟全文统一编号,而且不希望它出现在公式
-% 索引中,目前的解决办法就是利用 \cs{tag*}\marg{公式编号} 来解决。用法很简单,此
+% 同图表一样,附录中的公式有时也不希望它跟全文统一编号,而且不希望它出现在公式
+% 索引中。目前的办法是利用 \cs{tag*}\marg{公式编号} 来解决。用法比较简单,此
% 处不再罗嗦,实例请参看示例文档附录 A 的前两个公式。
%
-% \subsection{封底部分}
+% \subsubsection{符号对照表}
+% \DescribeEnv{denotation}
+% 主要符号表环境,跟 \env{description} 类似,使用方法参见示例文件。带一个可选参数,
+% 用来指定符号列的宽度(默认为 2.5cm)。
+% \begin{latex}
+% \begin{denotation}
+% \item[E] 能量
+% \item[m] 质量
+% \item[c] 光速
+% \end{denotation}
+% \end{latex}
+%
+% 如果默认符号列的宽度不满意,可以通过参数来调整:
+% \begin{latex}
+% \begin{denotation}[1.5cm] % 设置为 1.5cm
+% \item[E] 能量
+% \item[m] 质量
+% \item[c] 光速
+% \end{denotation}
+% \end{latex}
+%
+% 符号对照表的另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置:
+%
+% \begin{latex}
+% \usepackage{nomencl}
+% \makenomenclature
+% \end{latex}
+%
+% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号:
+%
+% \begin{latex}
+% \nomenclature{$m$}{The mass of one angel}
+% \end{latex}
+%
+% 最后使用 \cs{printnomenclature} 命令生成符号表。更详细的使用方法参
+% 见 \pkg{nomencl} 宏包的文档。
+%
+% \subsection{正文部分}
+%
+% \subsubsection{数学环境}
+% \label{sec:math}
+% \thuthesis{} 定义了常用的数学环境:
+%
+% \begin{center}
+% \begin{tabular}{*{7}{l}}\toprule
+% axiom & theorem & definition & proposition & lemma & conjecture &\\
+% 公理 & 定理 & 定义 & 命题 & 引理 & 猜想 &\\\midrule
+% proof & corollary & example & exercise & assumption & remark & problem \\
+% 证明 & 推论 & 例子& 练习 & 假设 & 注释 & 问题\\\bottomrule
+% \end{tabular}
+% \end{center}
+%
+% 比如:
+% \begin{latex}
+% \begin{definition}
+% 道千乘之国,敬事而信,节用而爱人,使民以时。
+% \end{definition}
+% \end{latex}
+% 产生(自动编号):
+% \medskip
+%
+% \noindent\framebox[\linewidth][l]{{\heiti 定义~1.1~~~} % {道千乘之国,敬事而信,节用而爱人,使民以时。}}
+%
+% \smallskip
+% 列举出来的数学环境毕竟是有限的,如果想用\emph{胡说}这样的数学环境,那么可以定义:
+% \begin{latex}
+% \newtheorem{nonsense}{胡说}[chapter]
+% \end{latex}
+%
+% 然后这样使用:
+% \begin{latex}
+% \begin{nonsense}
+% 契丹武士要来中原夺武林秘笈。—— 慕容博
+% \end{nonsense}
+% \end{latex}
+%
+% 产生(自动编号):
+%
+% \medskip
+% \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}}
+%
+% \subsubsection{列表环境}
+% \DescribeEnv{itemize}
+% \DescribeEnv{enumerate}
+% \DescribeEnv{description}
+% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
+% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
+% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
+%
+% \subsubsection{引用方式}
+% \label{sec:citestyle}
+% 模板支持两种引用方式,分别为理工科常用的“顺序编码制\textsuperscript{[1]}”和文科常用
+% 的“著者-出版年制 (Zhang, 2008)”。
+% 使用者在设置参考文献表的格式
+% (\cs{bibliographystyle},见第~\ref{sec:bibliography} 节)时,
+% 正文中引用文献的标注会自动调整为对应的格式:
+%
+% \begin{latex}
+% % 顺序编码制
+% \bibliographystyle{thuthesis-numeric}
+% \end{latex}
+%
+% 或
+%
+% \begin{latex}
+% % 著者-出版年制
+% \bibliographystyle{thuthesis-author-year}
+% \end{latex}
+%
+% \DescribeMacro{\inlinecite}
+% 顺序编码制的参考文献引用也有两种模式:
+% \begin{enumerate}
+% \item 上标模式。比如“同样的工作有很多\textsuperscript{[1,2]}\dots”。
+% \item 正文模式。比如“文 [3] 中详细说明了\dots”。
+% \end{enumerate}
+%
+% \DescribeOption{cite-style}
+% 用户可以将引用标注的格式设为正文模式:
+%
+% \begin{latex}
+% \thusetup{
+% cite-style = inline,
+% }
+% \end{latex}
+%
+% 也可以使用 \cs{inlinecite}\marg{key} 临时使用正文模式的引用标注。
+%
+% \subsection{其他部分}
+%
+% \subsubsection{参考文献}
+% \label{sec:bibliography}
+%
+% 模板支持使用 \hologo{BibTeX} 处理生成参考文献表,
+% 用户需要在文中设置参考文献格式并调用 \file{.bib} 数据库:
+% \begin{latex}
+% \bibliographystyle{thuthesis-numeric} % 顺序编码制
+% % \bibliographystyle{thuthesis-author-year} % 著者-出版年制
+% % \bibliographystyle{thuthesis-bachelor} % 本科生参考文献的著录格式
+% \bibliographystyle{ref1,ref2} % 载入 ref1.bib 和 ref2.bib
+% \end{latex}
+%
+% \note[注意:]{\cs{bibliographystyle} 命令只能出现一次。}
+%
+% \hologo{BibTeX} 可以自动识别数据库中每条文献的语言,并自动处理文献类型和载体类
+% 型标识,用户也可以手动指定,如:
+%
+% \begin{latex}
+% @misc{citekey,
+% language = {japanese},
+% mark = {Z},
+% medium = {DK},
+% ...
+% }
+% \end{latex}
+%
+% 可选的语言有 \option{english}, \option{chinese}, \option{japanese} 和 \option{russian}。
+%
+% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中,然后按著者字
+% 顺和出版年排列;中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。
+% 由于 \hologo{BibTeX} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺,所
+% 以\emph{必须}在 \file{.bib} 数据库中的 |key| 域手动录入著者姓名的拼音,如:
+% \begin{latex}
+% @book{capital,
+% author = {马克思 and 恩格斯},
+% key = {ma3 ke4 si1 en1 ge2 si1},
+% ...
+% }
+% \end{latex}
+%
+% \hologo{BibTeX} 对自定义样式的支持比较有限,所以用户只能通过修改 \file{bst} 文
+% 件来修改文献列表的格式。本宏包提供了一些接口供用户更方便地修改,在 \file{bst}
+% 文件开始处的 |load.config| 函数中,有一组配置参数用来控制样式。若变量被设
+% 为 |#1| 则表示该项被启用,设为 |#0| 则不启用。默认的值是严格遵循学校规定的配
+% 置。
+%
+%
+% \subsubsection{致谢}
%
-% \subsubsection{致谢声明}
% \DescribeEnv{acknowledgement}
% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦。
+%
% \begin{latex}
-% \begin{acknowledgement}
-% …
-% 还要特别感谢 \thuthesis\ 节省了论文排版时间!
-% \end{acknowledgement}
+% \begin{acknowledgements}
+% …
+% 还要特别感谢 \thuthesis{} 节省了论文排版时间!
+% \end{acknowledgements}
% \end{latex}
%
-% 本科论文在此处还有一节“声明”,提交版本时需要替换为签字扫描文件,同样我们也提供:
+% \subsubsection{声明}
+% \DescribeMacro{\statement}
% 如果使用声明扫描页,将可选参数指定为扫描后的 PDF 文件名,例如:
-% \begin{latex}
-% \begin{acknowledgement}[scan-statement.pdf]
-% 加了扫描文件后,这里面的文字就没用了。
%
-% 还要特别感谢计算机系薛瑞尼同学在论文格式和 \LaTeX\ 编译等方面给我的很多帮助!
-% \end{acknowledgement}
+% \begin{latex}
+% \statement[scan-statement.pdf]
% \end{latex}
%
% \subsubsection{附录}
-% \DescribeEnv{appendix}
-% 所有的附录都插到这里来。因为附录会更改默认的 chapter 属性,而后面的{\heiti 个人简
-% 历}又需要恢复,所以实现为环境可以保证全局的属性不受影响。
+%
+% 附录由 \cs{appendix} 命令开启,然后像正文一样书写。
+% \begin{latex}
+% \appendix
+% \chapter{...}
+% ...
+% \end{latex}
+%
+% \DescribeOption{toc-depth}
+% 一些院系要求目录中只出现附录的章标题,不出现附录中的一级、二级节标题。模板默认
+% 如此设置,用户也可以在 \cs{appendix} 命令后手动控制加入目录的标题层级,其
+% 中 |0| 表示章标题,|1| 表示一级节标题,以此类推。
+%
+% \begin{latex}
+% \appendix
+% \thusetup{toc-depth=0} % 目录只出现章标题
+% \end{latex}
+%
+% \DescribeEnv{survey}
+% \DescribeEnv{translation}
+% 本科生《写作指南》要求附录 A 为外文资料的调研阅读报告或书面翻译,二者择一。
+% 调研报告(或书面翻译)的题目和参考文献是独立于论文的,相当一篇独立的小文章,
+% 所以模板相应定义了 \env{survey} 和 \env{translation}。在这两个环境内部可以
+% 像论文正文一样使用标题和参考文献的命令,但不会影响外部:
+%
% \begin{latex}
-% \begin{appendix}
-% \input{data/appendix01}
-% \input{data/appendix02}
-% \end{appendix}
+% \begin{survey}
+% \title{...}
+% \maketitle
+% ... \cite{...}
+% \bibliographystyle{...}
+% \bibliography{...}
+% \end{survey}
% \end{latex}
%
-% \DescribeMacro{\title}
-% 附录里主要是本科的外文资料以及翻译,在这种情况下,\cs{chapter} 的标题是固定的
-% (即“外文资料的调研阅读报告或书面翻译”),所以用 \cs{title}\marg{标题} 开排版外
-% 文资料以及翻译的标题。这个命令只能在附录环境下使用。
+% 书面翻译对应的原文索引的实际作用更接近参考文献,所以也用参考文献的机制来生成,
+% 但是在正文中并不引用。
%
-% \DescribeEnv{translationbib}
-% 本环境用来描述外文资料中的参考文献,例子:
% \begin{latex}
-% \begin{translationbib}
-% \item Donald E. Knuth. The \TeX book. Addison-Wesley, 1984. ISBN: 0-201-13448-9
-% \item Paul W. Abrahams, Karl Berry and Kathryn A. Hargreaves. \TeX\ for the
-% Impatient. Addison-Wesley, 1990. ISBN: 0-201-51375-7
-% \item David Salomon. The advanced \TeX book. New York : Springer, 1995. ISBN:0-387-94556-3
-% \end{translationbib}
+% \begin{translation}
+% ... \nocite{...}
+% \bibliographystyle{...}
+% \bibliography{...}
+% \end{translation}
% \end{latex}
%
% \subsubsection{简历}
@@ -894,35 +868,35 @@
% \env{publications} 环境支持每一部分分别编写,逻辑上更清楚,为了在环境之间支持
% 空行,需要利用 \cs{publicationskip} 控制。示例:
% \begin{latex}
-% \researchitem{发表的学术论文}
-%
-% % 1. 已经刊载的学术论文
-% \begin{publications}
-% \item Yang Y, Ren T L, Zhang L T, et al. Miniature microphone with silicon-
-% based ferroelectric thin films. Integrated Ferroelectrics, 2003,
-% 52:229-235. (SCI 收录, 检索号:758FZ.)
-% \item 杨轶, 张宁欣, 任天令, 等. 硅基铁电微声学器件中薄膜残余应力的研究. 中国机
-% 械工程, 2005, 16(14):1289-1291. (EI 收录, 检索号:0534931 2907.)
-% \item 杨轶, 张宁欣, 任天令, 等. 集成铁电器件中的关键工艺研究. 仪器仪表学报,
-% 2003, 24(S4):192-193. (EI 源刊.)
-% \end{publications}
-%
-% % 2. 尚未刊载,但已经接到正式录用函的学术论文
-% \begin{publications}[before=\publicationskip,after=\publicationskip]
-% \item Yang Y, Ren T L, Zhu Y P, et al. PMUTs for handwriting recognition. In
-% press. (已被 Integrated Ferroelectrics 录用. SCI 源刊.)
-% \end{publications}
-%
-% % 3. 其他学术论文。
-% \begin{publications}
-% \item Wu X M, Yang Y, Cai J, et al. Measurements of ferroelectric MEMS
-% microphones. Integrated Ferroelectrics, 2005, 69:417-429. (SCI 收录, 检索号
-% :896KM)
-% \item 贾泽, 杨轶, 陈兢, 等. 用于压电和电容微麦克风的体硅腐蚀相关研究. 压电与声
-% 光, 2006, 28(1):117-119. (EI 收录, 检索号:06129773469)
-% \item 伍晓明, 杨轶, 张宁欣, 等. 基于MEMS技术的集成铁电硅微麦克风. 中国集成电路,
-% 2003, 53:59-61.
-% \end{publications}
+% \researchitem{发表的学术论文}
+%
+% % 1. 已经刊载的学术论文
+% \begin{publications}
+% \item Yang Y, Ren T L, Zhang L T, et al. Miniature microphone with
+% silicon-based ferroelectric thin films. Integrated Ferroelectrics,
+% 2003, 52:229-235. (SCI 收录, 检索号:758FZ.)
+% \item 杨轶, 张宁欣, 任天令, 等. 硅基铁电微声学器件中薄膜残余应力的研究. 中国机
+% 械工程, 2005, 16(14):1289-1291. (EI 收录, 检索号:0534931 2907.)
+% \item 杨轶, 张宁欣, 任天令, 等. 集成铁电器件中的关键工艺研究. 仪器仪表学报,
+% 2003, 24(S4):192-193. (EI 源刊.)
+% \end{publications}
+%
+% % 2. 尚未刊载,但已经接到正式录用函的学术论文
+% \begin{publications}[before=\publicationskip,after=\publicationskip]
+% \item Yang Y, Ren T L, Zhu Y P, et al. PMUTs for handwriting
+% recognition. In press. (已被 Integrated Ferroelectrics 录用. SCI 源刊.)
+% \end{publications}
+%
+% % 3. 其他学术论文。
+% \begin{publications}
+% \item Wu X M, Yang Y, Cai J, et al. Measurements of ferroelectric
+% MEMS microphones. Integrated Ferroelectrics, 2005, 69:417-429.
+% (SCI 收录, 检索号:896KM)
+% \item 贾泽, 杨轶, 陈兢, 等. 用于压电和电容微麦克风的体硅腐蚀相关研究. 压电与声
+% 光, 2006, 28(1):117-119. (EI 收录, 检索号:06129773469)
+% \item 伍晓明, 杨轶, 张宁欣, 等. 基于MEMS技术的集成铁电硅微麦克风. 中国集成电路,
+% 2003, 53:59-61.
+% \end{publications}
% \end{latex}
%
% \DescribeEnv{achievements}
@@ -932,126 +906,48 @@
% 具体用法请参看示例文档 \file{data/resume.tex}。
%
% \subsection{书脊}
-% \DescribeMacro{\shuji}
-% 生成装订的书脊,为竖排格式,命令格式:\cs{shuji}\oarg{标题}\oarg{作者}。默认参
+% \DescribeMacro{\spine}
+% 生成装订的书脊,为竖排格式,命令格式:\cs{spine}\oarg{标题}\oarg{作者}。默认参
% 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。
-% 否则,就要像例子里面那样做一些微调(参看模板自带的 \file{shuji.tex})。下面是一
-% 个例子:
-% \begin{latex}
-% \documentclass[degree=master]{thuthesis}
-%
-% \begin{document}
-% \thuset{
-% ctitle={论文中文题目},
-% cauthor={中文姓名}}
-%
-% \shuji % 使用默认标题和默认作者
-%
-% \shuji[使用默认作者的标题]
-%
-% \shuji[同时修改标题和作者的标题][尼瑞薛]
-%
-% % 如果标题中有英文,那可以参考如下方法进行微调:
-% \shuji[清华大学 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例]
-% \end{document}
-% \end{latex}
-%
-% \subsection{自定义}
-% \label{sec:othercmd}
-%
-% \subsubsection{数学环境}
-% \label{sec:math}
-% \thuthesis\ 定义了常用的数学环境:
-%
-% \begin{center}
-% \begin{tabular}{*{7}{l}}\toprule
-% axiom & theorem & definition & proposition & lemma & conjecture &\\
-% 公理 & 定理 & 定义 & 命题 & 引理 & 猜想 &\\\midrule
-% proof & corollary & example & exercise & assumption & remark & problem \\
-% 证明 & 推论 & 例子& 练习 & 假设 & 注释 & 问题\\\bottomrule
-% \end{tabular}
-% \end{center}
-%
-% 比如:
-% \begin{latex}
-% \begin{definition}
-% 道千乘之国,敬事而信,节用而爱人,使民以时。
-% \end{definition}
-% \end{latex}
-% 产生(自动编号):
-% \medskip
-%
-% \noindent\framebox[\linewidth][l]{{\heiti 定义~1.1~~~} % {道千乘之国,敬事而信,节用而爱人,使民以时。}}
-%
-% \smallskip
-% 列举出来的数学环境毕竟是有限的,如果想用\emph{胡说}这样的数学环境,那么可以定义:
-% \begin{latex}
-% \newtheorem{nonsense}{胡说}[chapter]
-% \end{latex}
-%
-% 然后这样使用:
-% \begin{latex}
-% \begin{nonsense}
-% 契丹武士要来中原夺武林秘笈。—— 慕容博
-% \end{nonsense}
-% \end{latex}
-% 产生(自动编号):
+% 否则,可参考参看模板示例文件 \file{spine.tex} 进行微调:
%
-% \medskip
-% \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}}
+% \lstinputlisting[style=lstStyleLaTeX]{spine.tex}
%
-% \subsubsection{列表环境}
-% \DescribeEnv{itemize}
-% \DescribeEnv{enumerate}
-% \DescribeEnv{description}
-% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压
-% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号,
-% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。
%
% \section{致谢}
% \label{sec:thanks}
-% 感谢这些年来一直陪伴 \thuthesis\ 成长的新老同学!
+% 感谢这些年来一直陪伴 \thuthesis{} 成长的新老同学!
%
-% 欢迎各位到 \href{http://github.com/xueruini/thuthesis/}{\thuthesis\ Github 主页}贡献!
+% 欢迎各位到 \href{http://github.com/xueruini/thuthesis/}{\thuthesis{} GitHub 主页}贡献!
%
-% \StopEventually{\PrintChanges\PrintIndex}
+% \StopEventually{\PrintIndex}
% \clearpage
%
% \section{实现细节}
%
% \subsection{基本信息}
% \begin{macrocode}
-%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<cls>\NeedsTeXFormat{LaTeX2e}
%<cls>\ProvidesClass{thuthesis}
-%<cls>[2019/04/27 5.5.2 Tsinghua University Thesis Template]
+%<cls>[2020/01/06 6.0.0 Tsinghua University Thesis Template]
% \end{macrocode}
%
-% 检查编译引擎,要求使用 XeLaTeX。
+% 检查编译引擎,要求使用 \XeLaTeX。
% \begin{macrocode}
\RequirePackage{ifxetex}
-\ifxetex\else
- \ClassError{thuthesis}{You should use XeLaTeX}{}
- \end{document}
-\fi
+\RequireXeTeX
% \end{macrocode}
%
% \subsection{定义选项}
% \label{sec:defoption}
% 定义论文类型以及是否涉密
-% \changes{v2.4}{2006/04/14}{添加模板名称命令。}
-% \changes{v2.5}{2006/05/19}{增加本科论文的提交选项 submit。}
-% \changes{v2.5.1}{2006/05/24}{如果没有设置格式选项,报错。}
-% \changes{v2.5.1}{2006/05/26}{submit 只能由本科用。}
-% \changes{v2.5.3}{2006/06/03}{submit 选项的一个笔误。}
-% \changes{v3.0}{2007/05/12}{删除 submit 选项。}
-% \changes{v4.6}{2011/04/26}{增加 postdoctor 选项。}
-% \changes{v4.8}{2014/11/25}{v4.7曾经想发布,但是一直没有做,于是就被跳过了,算是造一个段子吧。}
-% \changes{v4.8.1}{2014/12/09}{按照 CTAN 的要求整理一下文件。}
% \begin{macrocode}
%<*cls>
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
-\def\version{5.5.2}
+\def\version{6.0.0}
+\RequirePackage{kvdefinekeys}
+\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=thu,
@@ -1059,35 +955,200 @@
setkeys=\kvsetkeys}
% \end{macrocode}
%
-% 用 \pkg{kvoptions} 的 \texttt{key=value} 方式来设置论文类型。
-% \changes{v5.0.0}{2015/12/13}{使用 \pkg{kvoptions} 简化选项 type。}
-% \changes{v5.4.2}{2017/12/18}{使用 degree 取代 type 选项。}
+% 用 \pkg{kvoptions} 的 \emph{key=value} 方式来设置论文类型。
% \begin{macrocode}
-\DeclareStringOption[doctor]{degree}[doctor]
+\newcommand\thu@error[1]{%
+ \ClassError{thuthesis}{#1}{}%
+}
% \end{macrocode}
%
-% 论文是使用英文。
-% \changes{v5.5.0}{2018/12/09}{增加选项使用英文模板。}
+% \begin{macro}{\thusetup}
+% 提供一个 \cs{thusetup} 命令支持 \emph{key-value} 的方式来设置。
% \begin{macrocode}
-\DeclareStringOption[chinese]{language}[chinese]
+\newcommand\thusetup{%
+ \kvsetkeys{thu}%
+}
% \end{macrocode}
+% \end{macro}
+%
+% 同时用 \emph{key-value} 的方式来定义这些接口:
+% \begin{latex}
+% \thu@define@key{
+% <key> = {
+% name = <name>,
+% choices = {
+% <choice1>,
+% <choice2>,
+% },
+% default = <default>,
+% code = <code>,
+% },
+% }
+% \end{latex}
+%
+% 其中 |choices| 设置允许使用的值,默认为第一个(或者 \meta{default});
+% \meta{code} 是相应的内容被设置时执行的代码。
%
-% 论文是否保密。
% \begin{macrocode}
-\DeclareBoolOption{secret}
+\newcommand\thu@define@key[1]{%
+ \kvsetkeys{thu@key}{#1}%
+}
+\kv@set@family@handler{thu@key}{%
% \end{macrocode}
%
-% 章目录中的英文是否用 Arial 字体(默认关闭),可以分别控制内容和页码部分。
+% \cs{thusetup} 会将 \meta{value} 存到 \cs{thu@\meta{key}},
+% 但是宏的名字包含 “-” 这样的特殊字符时不方便直接调用,比如 |key = math-style|,
+% 这时可以用 |name| 设置 \meta{key} 的别称,比如 |key = math@style|,
+% 这样就可以通过 \cs{thu@math@style} 来引用。
+% |default| 是定义该 \meta{key} 时默认的值,缺省为空。
+%
% \begin{macrocode}
-\DeclareBoolOption{tocarialchapter}
-\DeclareBoolOption{tocarialchapterentry}
-\DeclareBoolOption{tocarialchapterpage}
+ \@namedef{thu@#1@@name}{#1}%
+ \def\thu@@default{}%
+ \def\thu@@choices{}%
+ \kv@define@key{thu@value}{name}{%
+ \@namedef{thu@#1@@name}{##1}%
+ }%
+ \kv@define@key{thu@value}{code}{%
+ \@namedef{thu@#1@@code}{##1}%
+ }%
% \end{macrocode}
%
+% 由于在定义接口时,\cs{thu@\meta{key}@@code} 不一定有定义,
+% 而且在文档类/宏包中还有可能对该 |key| 的 |code| 进行添加。
+% 所以 \cs{thu@\meta{key}@@code} 会检查如果在定义文档类/宏包时则推迟执行,否则立即执行。
+%
+% \begin{macrocode}
+ \@namedef{thu@#1@@check}{}%
+ \@namedef{thu@#1@@code}{}%
+ \@namedef{thu@#1@@hook}{%
+ \expandafter\ifx\csname\@currname.\@currext-h@@k\endcsname\relax
+ \@nameuse{thu@#1@@code}%
+ \else
+ \AtEndOfClass{%
+ \@nameuse{thu@#1@@code}%
+ }%
+ \fi
+ }%
+% \end{macrocode}
+%
+% 保存下 |choices = {}| 定义的内容,在定义 \cs{thu@\meta{name}} 后再执行。
+%
+% \begin{macrocode}
+ \kv@define@key{thu@value}{choices}{%
+ \def\thu@@choices{##1}%
+ \@namedef{thu@#1@@reset}{}%
+% \end{macrocode}
+%
+% \cs{thu@\meta{key}@check} 检查 |value| 是否有效,
+% 并设置 \cs{ifthu@\meta{name}@\meta{value}}。
+%
+% \begin{macrocode}
+ \@namedef{thu@#1@@check}{%
+ \@ifundefined{%
+ ifthu@\@nameuse{thu@#1@@name}@\@nameuse{thu@\@nameuse{thu@#1@@name}}%
+ }{%
+ \thu@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}}{}%
+% \end{macrocode}
+%
+% 第一个 \meta{choice} 设为 \meta{default},
+% 并且对每个 \meta{choice} 定义 \cs{ifthu@\meta{name}@\meta{choice}}。
+%
+% \begin{macrocode}
+ \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}%
+% \end{macrocode}
+%
+% 将 \meta{default} 赋值到 \cs{thu@\meta{name}},如果非空则执行相应的代码。
+%
+% \begin{macrocode}
+ \expandafter\let\csname thu@\@nameuse{thu@#1@@name}\endcsname\thu@@default
+ \expandafter\ifx\csname thu@\@nameuse{thu@#1@@name}\endcsname\@empty\else
+ \@nameuse{thu@#1@@check}%
+ \@nameuse{thu@#1@@hook}%
+ \fi
+% \end{macrocode}
+%
+% 定义 \cs{thusetup} 接口。
+%
+% \begin{macrocode}
+ \kv@define@key{thu}{#1}{%
+ \@namedef{thu@\@nameuse{thu@#1@@name}}{##1}%
+ \@nameuse{thu@#1@@check}%
+ \@nameuse{thu@#1@@hook}%
+ }%
+}
+% \end{macrocode}
+%
+% 定义接口向 |key| 添加 |code|:
+%
+% \begin{macrocode}
+\newcommand\thu@addto[2]{%
+ \expandafter\g@addto@macro\csname thu@#1@@code\endcsname{#2}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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@define@key{
+ degree = {
+ choices = {
+ bachelor,
+ master,
+ doctor,
+ postdoc,
+ },
+ default = doctor,
+ code = {\thu@set@graduate},
+ },
+ degree-type = {
+ choices = {
+ academic,
+ professional,
+ },
+ name = degree@type,
+ },
+% \end{macrocode}
+%
+% 论文是否使用英文。
+% \begin{macrocode}
+ language = {
+ choices = {
+ chinese,
+ english,
+ },
+ },
+}
+% \end{macrocode}
%
% \option{raggedbottom} 选项(默认打开)
-% \changes{v4.8}{2013/03/05}{增加 noraggedbottom 选项。}
-% \changes{v5.0.0}{2015/12/13}{norggedbottom 选项修改为 raggedbottom。}
% \begin{macrocode}
\DeclareBoolOption[true]{raggedbottom}
% \end{macrocode}
@@ -1097,31 +1158,11 @@
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
% \end{macrocode}
%
-% \changes{v2.5.1}{2006/05/24}{研究生院目录要 times,而教务处要 arial。}
-% \changes{v2.5.1}{2006/05/26}{本科 openright,研究生 openany。}
-% \changes{v3.1}{2007/10/09}{本科的目录又不要 arial 字体了。}
-% \changes{v4.8}{2013/05/29}{添加 nocap 选项,恢复默认标题样式,模板会进一步定制。}
% 解析用户传递过来的选项,并加载 \pkg{ctexbook}。
% \begin{macrocode}
\ProcessKeyvalOptions*
-\newcommand\thu@validate@key[1]{%
- \@ifundefined{thu@\csname thu@#1\endcsname true}{%
- \ClassError{thuthesis}{Invalid value '\csname thu@#1\endcsname'}{}%
- }{%
- \csname thu@\csname thu@#1\endcsname true\endcsname
- }%
-}
-\newif\ifthu@bachelor
-\newif\ifthu@master
-\newif\ifthu@doctor
-\newif\ifthu@postdoctor
-\thu@validate@key{degree}
-\newif\ifthu@chinese
-\newif\ifthu@english
-\thu@validate@key{language}
% \end{macrocode}
%
-% \changes{v5.3.1}{2016/03/20}{使用 \CTeX\ 默认中文字体配置,支持不同引擎。}
% 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。
% \begin{macrocode}
\PassOptionsToPackage{quiet}{xeCJK}
@@ -1139,16 +1180,11 @@
% \end{macrocode}
%
% \AmSTeX\ 宏包,用来排出更加漂亮的公式。
-% \changes{v4.8}{2013/03/02}{no need to load amssymb since we use txfonts.}
% \begin{macrocode}
\RequirePackage{amsmath}
% \end{macrocode}
%
% 使用 \pkg{unicode-math} 处理数学字体。
-% \changes{v3.1}{2007/06/16}{replace \pkg{mathptmx} with \pkg{txfonts}.}
-% \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 替换 \pkg{txfonts}。}
-% \changes{v5.2.2}{2016/02/01}{不希望 \pkg{newtx} 修改 \cs{@makefnmark}。 }
-% \changes{v5.5.0}{2018/07/07}{使用 \pkg{unicode-math} 处理数学字体。}
% \begin{macrocode}
\RequirePackage{unicode-math}
% \end{macrocode}
@@ -1164,24 +1200,19 @@
\RequirePackage[labelformat=simple]{subcaption}
% \end{macrocode}
%
-% \pkg{pdfpages} 宏包便于我们插入扫描后的授权页和声明页 PDF 文档。
+% \pkg{pdfpages} 宏包便于我们插入扫描后的授权说明和声明页 PDF 文档。
% \begin{macrocode}
\RequirePackage{pdfpages}
\includepdfset{fitpaper=true}
% \end{macrocode}
%
% 更好的列表环境。
-% \changes{v2.6.2}{2006/06/18}{去掉 \pkg{paralist} 的 \option{newitem} 和
-% \option{newenum} 选项,因为默认是打开的。}
-% \changes{v2.6.4}{2006/10/23}{增加 \option{neverdecrease} 选项。}
-% \changes{v5.0.0}{2012/12/13}{删除 \pkg{paralist} 选项。}
-% \changes{v5.2.2}{2016/01/31}{利用 \pkg{environ} 的 \cs{Collect@Body}。}
% \begin{macrocode}
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{environ}
% \end{macrocode}
%
-% 禁止 \LaTeX 自动调整多余的页面底部空白,并保持脚注仍然在底部。
+% 禁止 \LaTeX{} 自动调整多余的页面底部空白,并保持脚注仍然在底部。
% 脚注按页编号。
% \begin{macrocode}
\ifthu@raggedbottom
@@ -1198,22 +1229,9 @@
\RequirePackage{CJKfntef}
% \end{macrocode}
%
-% \changes{v4.8}{2013/05/28}{在 CJK 模式下用 \pkg{CJKspace} 保留中英文间空格。}
-% \changes{v5.0.0}{2015/04/17}{固定字体设置,同时改善与 \pkg{ctex} 兼容性。}
-% \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 字体。}
-% \changes{v5.3.1}{2016/03/20}{\pkg{ctex} 默认加载 \pkg{CJKspace}。}
-% \changes{v5.3.1}{2016/03/20}{几乎没人主动安装 Arial 字体。}
-%
-% 定理类环境宏包,其中 \pkg{amsmath} 选项用来兼容 \AmSTeX\ 的宏包
-% \begin{macrocode}
-\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}
-% \end{macrocode}
-%
% 表格控制
-% \changes{v2.6}{2006/06/09}{增加 \pkg{longtable}。}
% \begin{macrocode}
\RequirePackage{array}
-\RequirePackage{longtable}
% \end{macrocode}
%
% 使用三线表:\cs{toprule},\cs{midrule},\cs{bottomrule}。
@@ -1224,30 +1242,11 @@
% 参考文献引用宏包。
% \begin{macrocode}
\RequirePackage[sort&compress]{natbib}
+\RequirePackage{bibunits}
% \end{macrocode}
%
-% 删除默认模板(\file{book.cls})在章之间引入的垂直间隔。要放在 \pkg{hyperref}
-% 之前。
-% \begin{macrocode}
-% \end{macrocode}
-% 生成有书签的 pdf 及其开关,请结合 gbk2uni 避免书签乱码。
-% \changes{v2.6}{2006/06/09}{去除 hyperref 选项,等待全局传递。}
-% \changes{v5.2.2}{2016/01/25}{目录中标题和页码都是链接。}
% \begin{macrocode}
-\RequirePackage{hyperref}
-\hypersetup{
- linktoc = all,
- bookmarksnumbered = true,
- bookmarksopen = true,
- bookmarksopenlevel = 1,
- breaklinks = true,
- plainpages = false,
- hidelinks,
-}
-\pdfstringdefDisableCommands{
- \let\\\@empty
- \let\hspace\@gobble
-}
+\RequirePackage{url}
% \end{macrocode}
%
% 设置 url 样式,与上下文一致
@@ -1257,52 +1256,52 @@
%
% 使用 \pkg{xurl} 的方法,增加 URL 可断行的位置。
% \begin{macrocode}
-\def\UrlBreaks{%
- \do\/%
- \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l%
- \do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z%
- \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L%
- \do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z%
- \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:%
- \do\*\do\-\do\~\do\'\do\"\do\-}
+\g@addto@macro\UrlBreaks{%
+ \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9%
+ \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M
+ \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z
+ \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m
+ \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z
+}
\Urlmuskip=0mu plus 0.1mu
% \end{macrocode}
%
%
% \subsection{页面设置}
% \label{sec:layout}
-% 本来这部分应该是最容易设置的,但根据格式规定出来的结果跟学校的 WORD 样例相差很
-% 大,所以只能微调。
-% \changes{v2.4}{2006/04/14}{把页面尺寸写入 dvi,避免有的用户通
-% 过 dvips 不指定页面类型而得到古怪的结果。}
-% \changes{v4.5.2}{2010/09/19}{研究生页面边距由 3.2cm 改为 3cm。}
-% \changes{v4.7}{2012/05/29}{修改本科生页脚间距与样例基本一致。}
-% \changes{v5.0.0}{2015/03/10}{不再将页面尺寸写入 dvi,因为已不支持 dvips,
-% 而该方案会使得在使用 tikzexternalize 时外部 PDF 图片 BBox 不对。}
-% \changes{v5.0.0}{2015/12/14}{用 \pkg{geometry} 简化设置。}
+%
+% 研究生《写作指南》:
+% 页边距:上下左右均为 3.0 厘米,装订线 0 厘米;
+% 页眉距边界:2.2 厘米,页脚距边界:2.2 厘米。
+%
+% 本科生《写作指南》:
+% 页边距:上:3.8 厘米,下:3.2 厘米,左右:3 厘米,装订线:左 0.2 厘米。
+% 本科生 Word 模板:
+% 页眉距边界:1.5 厘米,页脚距边界:1.75 厘米。
+%
% \begin{macrocode}
\RequirePackage{geometry}
\geometry{
a4paper, % 210 * 297mm
- hcentering,
- ignoreall,
- nomarginpar}
-\ifthu@bachelor
+ nomarginpar,
+}
+\ifthu@degree@bachelor
\geometry{
- left=32mm,
- headheight=5mm,
- headsep=5mm,
- textheight=227mm,
- bottom=32mm,
- footskip=12mm}
+ top = 3.8cm,
+ bottom = 3.2cm,
+ left = 3.2cm,
+ right = 3cm,
+ headheight = 0.5cm,
+ headsep = 1.8cm,
+ footskip = 1.45cm,
+ }
\else
\geometry{
- left=30mm,
- headheight=5mm,
- headsep=5mm,
- textheight=237mm,
- bottom=29mm,
- footskip=6mm}
+ margin = 3cm,
+ headheight = 0.5cm,
+ headsep = 0.3cm,
+ footskip = 0.8cm,
+ }
\fi
% \end{macrocode}
%
@@ -1312,7 +1311,6 @@
% \end{macrocode}
%
% 利用 \pkg{notoccite} 避免目录中引用编号混乱。
-% \changes{v5.4.4}{2018/04/13}{让目录中的引用不影响正文中引用序号。}
% \begin{macrocode}
\RequirePackage{notoccite}
% \end{macrocode}
@@ -1336,22 +1334,23 @@
% \begin{macro}{\mainmatter}
% \begin{macro}{\backmatter}
% 我们的单面和双面模式与常规的不太一样。
-% \changes{v2.5.1}{2006/05/23}{本科正文之后页码即用罗马数字,研究生不变。}
-% \changes{v2.5.3}{2006/06/03}{第一章永远右开。}
-% \changes{v4.4}{2008/05/30}{本科正文后的页码延续前面的阿拉伯数字,不再用罗马数
-% 字。}
-% \changes{v4.4}{2008/05/30}{本科取消了所有页眉。}
% \begin{macrocode}
\renewcommand\frontmatter{%
\if@openright\cleardoublepage\else\clearpage\fi
\@mainmatterfalse
- \pagenumbering{Alph}
- \pagestyle{thu@empty}}
+ \ifthu@degree@bachelor
+ \pagestyle{thu@plain}
+ \else
+ \pagestyle{thu@headings}
+ \fi
+ \pagenumbering{Roman}%
+ \let\@tabular\thu@tabular
+}
\renewcommand\mainmatter{%
\if@openright\cleardoublepage\else\clearpage\fi
\@mainmattertrue
\pagenumbering{arabic}
- \ifthu@bachelor\pagestyle{thu@plain}\else\pagestyle{thu@headings}\fi}
+ \ifthu@degree@bachelor\pagestyle{thu@plain}\else\pagestyle{thu@headings}\fi}
\renewcommand\backmatter{%
\if@openright\cleardoublepage\else\clearpage\fi
\@mainmattertrue}
@@ -1400,7 +1399,6 @@
% \end{macrocode}
%
% 使用 \pkg{unicode-math} 配置数学字体
-% \changes{v5.5.2}{2019/04/21}{使用 XITS 数学字体。}
% \begin{macrocode}
\unimathsetup{
math-style = ISO,
@@ -1427,7 +1425,6 @@
%
% 在使用 Windows Vista 或之后版本的系统时,\pkg{ctex} 宏包会默认使用微软雅黑字体,
% 这可能会导致审查不合格。下面设置适合印刷的黑体,同时保持跨平台兼容性。
-% \changes{v5.5.0}{2019/01/06}{Windows 的中文字体开启伪粗。}
% \begin{macrocode}
\ifthenelse{\equal{\thu@fontset}{windows}}{
\xeCJKsetup{EmboldenFactor=2}
@@ -1466,7 +1463,6 @@
%
% \begin{macro}{\normalsize}
% 正文小四号 (12bp) 字,行距为固定值 20 bp。
-% \changes{v5.4.5}{2018/05/17}{调整公式和正文间距。}
% \begin{macrocode}
\renewcommand\normalsize{%
\@setfontsize\normalsize{12bp}{20bp}%
@@ -1501,13 +1497,11 @@
% \end{center}
%
% \begin{macro}{\thu@def@fontsize}
-% \changes{v2.6.2}{2006/06/18}{引入此命令重新定义字号。}
% 根据习惯定义字号。用法:
%
% \cs{thu@def@fontsize}\marg{字号名称}\marg{磅数}
%
% 避免了字号选择和行距的紧耦合。所有字号定义时为单倍行距,并提供选项指定行距倍数。
-% \changes{v5.2.3}{2016/02/13}{改写字体定义命令。}
% \begin{macrocode}
\def\thu@def@fontsize#1#2{%
\expandafter\newcommand\csname #1\endcsname[1][1.3]{%
@@ -1602,7 +1596,7 @@
}%
}
\newcommand\thu@setdefaultlanguage{%
- \ifthu@chinese
+ \ifthu@language@chinese
\thu@setchinese
\else
\thu@setenglish
@@ -1612,7 +1606,7 @@
%
% 中英文翻译:
% \begin{macrocode}
-\ifthu@chinese
+\ifthu@language@chinese
\ctexset{
chapter/name = {第,章},
appendixname = 附录,
@@ -1642,10 +1636,10 @@
\newcommand\thu@proof@name{证明}
\newcommand\thu@theorem@separator{:}
\newcommand\thu@ack@name{致\hspace{\ccwd}谢}
- \ifthu@bachelor
+ \ifthu@degree@bachelor
\newcommand\thu@resume@title{在学期间参加课题的研究成果}
\else
- \ifthu@postdoctor
+ \ifthu@degree@postdoc
\newcommand\thu@resume@title{个人简历、发表的学术论文与科研成果}
\else
\newcommand\thu@resume@title{个人简历、在学期间发表的学术论文与研究成果}
@@ -1669,19 +1663,11 @@
\newcommand\thu@conjecture@name{Conjecture}
\newcommand\thu@proof@name{proof}
\newcommand\thu@theorem@separator{: }
- \newcommand\thu@ack@name{Acknowledgments}
- \ifthu@bachelor
+ \newcommand\thu@ack@name{Acknowledgements}
+ \ifthu@degree@bachelor
\newcommand\thu@resume@title{Research Achievements}
\else
- \ifthu@postdoctor
- \newcommand\thu@resume@title{%
- Resume, Publications and Research Achievements%
- }
- \else
- \newcommand\thu@resume@title{%
- Resume, Publications and Research Achievements%
- }
- \fi
+ \newcommand\thu@resume@title{Resume, Publications and Research Achievements}
\fi
\fi
% \end{macrocode}
@@ -1694,12 +1680,6 @@
% \begin{macro}{\ps@thu@empty}
% \begin{macro}{\ps@thu@plain}
% \begin{macro}{\ps@thu@headings}
-% \changes{v2.0}{2005/12/18}{以前的太乱了,重新整理过清晰多了。}
-% \changes{v2.1}{2006/03/01}{彻底放弃 fancyhdr,定义自己的样式。}
-% \changes{v2.5}{2006/05/13}{本科的奇偶页眉不同。}
-% \changes{v2.5}{2006/05/20}{增加 empty 页面样式。}
-% \changes{v4.7}{2012/05/29}{本科页码用小五号字。}
-% \changes{v5.0.0}{2015/12/20}{利用 \pkg{fancyhdr} 设置页眉页脚。}
% 定义三种页眉页脚格式:
% \begin{itemize}
% \item \texttt{thu@empty}:页眉页脚都没有
@@ -1742,7 +1722,6 @@
% \end{macrocode}
%
% 利用 \pkg{enumitem} 命令调整默认列表环境间的距离,以符合中文习惯。
-% \changes{v2.5.2}{2006/06/01}{更改默认列表距离。}
% \begin{macrocode}
\setlist{nosep}
% \end{macrocode}
@@ -1751,13 +1730,7 @@
% \subsubsection{脚注}
% \label{sec:footnote}
% 脚注符合中文习惯,数字带圈。
-% \changes{v2.1}{2006/03/01}{让脚注它悬挂起来,而且中文中用上标,脚注中用正体。}
-% \changes{v2.5}{2006/05/13}{修正 minipage 中的脚注。}
% \begin{macro}{\thu@textcircled}
-% \changes{v2.5.1}{2006/05/21}{脚注编号使用 \cs{textcircled} 命令,每页允许至多 99 个。}
-% \changes{v5.2.2}{2016/02/01}{脚注编号每页允许至多 9 个。}
-% \changes{v5.5.0}{2018/12/10}{去掉 \option{pifootnote} 选项。}
-% \changes{v5.5.1}{2019/04/16}{修复 minipage 中 footnote 编号问题。}
% 生成带圈的脚注数字,最多处理到 10。
% \begin{macrocode}
\ifthenelse{\equal{\thu@fontset}{mac}}{
@@ -1795,9 +1768,6 @@
%
% \cs{@makefnmark} 默认是上标样式,而在脚注部分要求为正文大小。利用\cs{patchcmd}
% 动态调整 \cs{@makefnmark} 的定义。
-% \changes{v2.6}{2006/06/09}{脚注改成 1.5 倍行距,漂亮。}
-% \changes{v5.2.2}{2016/02/01}{基于 \pkg{footmisc} 来设置不同位置 footnote
-% marker 样式。}
% \begin{macrocode}
\let\thu@makefnmark\@makefnmark
\def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}}
@@ -1811,7 +1781,7 @@
% \begin{macro}{\ldots}
% 省略号一律居中,所以 \cs{ldots} 不再居于底部。
% \begin{macrocode}
-\ifthu@chinese
+\ifthu@language@chinese
\def\mathellipsis{\cdots}
\fi
% \end{macrocode}
@@ -1895,29 +1865,20 @@
%
% 公式距前后文的距离由 4 个参数控制,参见 \cs{normalsize} 的定义。
%
-% \changes{v2.5.1}{2006/05/24}{本科公式编号前添加\textbf{公式}二字。需要修 \pkg{amsmath} 极其深的一个命令。}
-% \changes{v2.5.1}{2006/05/24}{教务处居然要本科论文公式全文编号!}
-% \changes{v2.5.2}{2006/05/29}{上一个版本忘了把研究生的公式编号排除。}
-% \changes{v3.0}{2007/05/12}{本科公式又要取消全文统一编号了。}
% 本科的公式编号要求很诡异,不得不修改 \pkg{amsmath} 中很深的一个命令 \cs{tagform@}。
-% \changes{v2.6.2}{2006/06/19}{根据不同论文格式显示不同公式编号,并自动加入索引。}
-% \changes{v4.2}{2008/01/23}{\cs{eqref} 加括号。}
% 同时为了让 \pkg{amsmath} 的 \cs{tag*} 命令得到正确的格式,我们必须修改这些代
% 码。\cs{make@df@tag} 是定义 \cs{tag*} 和 \cs{tag} 内部命令的。
% \cs{make@df@tag@@} 处理 \cs{tag*},我们就改它!
% \begin{latex}
-% \def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@}
-% \def\make@df@tag@@#1{%
-% \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
+% \def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@}
+% \def\make@df@tag@@#1{%
+% \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}}
% \end{latex}
-% \changes{v4.4}{2008/05/30}{本科论文终于去掉了\textbf{公式}二字。}
-% \changes{v4.4.4}{2008/06/12}{修复了一个从 v4.3 升级到 v4.4 过程中的丢失公式索引的 bug,原修改代码保留备忘。}
-% \changes{v5.2.3}{2016/02/13}{安全注释本科公式部分。}
% \begin{macrocode}
\def\make@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}}}
\iffalse
-\ifthu@bachelor
+\ifthu@degree@bachelor
\def\thu@maketag#1{\maketag@@@{%
(\ignorespaces\text{\equationname\hskip0.5em}#1\unskip\@@italiccorr)}}
\def\tagform@#1{\maketag@@@{%
@@ -1932,39 +1893,9 @@
\renewcommand{\eqref}[1]{\textup{(\ref{#1})}}
% \end{macrocode}
%
-% 定理标题使用黑体,正文使用宋体,冒号隔开。
-% \changes{v2.6.2}{2006/06/17}{增加问题和猜想两个数学环境。}
-% \changes{v4.2}{2008/03/07}{调整证明环境的编号和结尾的方块。}
-% \changes{v5.0.0}{2015/04/18}{修正定理字样为黑体 (\#104)。}
-% \changes{v5.3.2}{2017/05/01}{定理环境格式设置(环境标题和环境正文字体设置)统一放置到 .cfg 文件中。}
-% \changes{v5.5.0}{2019/01/08}{移除 cfg 文件。}
-% \begin{macrocode}
-\theorembodyfont{\normalfont}
-\theoremheaderfont{\normalfont\sffamily}
-\theoremsymbol{\ensuremath{\square}}
-\newtheorem*{proof}{\thu@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]
-% \end{macrocode}
-%
% \subsubsection{浮动对象以及表格}
% \label{sec:float}
% 设置浮动对象和文字之间的距离
-% \changes{v2.6}{2006/06/09}{增加 \cs{floatsep},\cs{@fptop},\cs{@fpsep} 和 \cs{@fpbot}。}
-% \changes{v5.5.0}{2019/03/15}{修正图表标题与文字之间的距离。}
% \begin{macrocode}
\setlength{\floatsep}{12bp \@plus 2bp \@minus 4bp}
\setlength{\textfloatsep}{12bp}
@@ -1990,16 +1921,8 @@
% \item 图:caption 在下,段前空 6 磅,段后空 12 磅
% \item 表:caption 在上,段前空 12 磅,段后空 6 磅
% \end{itemize}
-% \changes{v2.4}{2006/04/14}{表格内容为 11 磅。}
-% \changes{v2.4}{2006/04/14}{图表标题左对齐,取消原先漂亮的 hang 模式。}
-% \changes{v2.5}{2006/05/13}{标题上下间距重调,以前没有考虑 \cs{intextsep} 的影响。}
-% \changes{v2.5.1}{2006/05/23}{增加 \pkg{subfigure} 和 \pkg{subtable} 的 caption 配置。}
-% \changes{v2.5.1}{2006/05/24}{重新定义表格默认字体。}
-% \changes{v2.5.3}{2006/06/07}{不管 caption 出现在什么位置,\cs{aboveskip} 总是出现在标题和浮动体之间的距离。}
-% \changes{v4.3}{2008/03/11}{子图引用时加括号。}
-% \changes{v5.0.0}{2015/06/27}{本科附录图表编号用-不用.(如图A-1,表A-2)。}
-% \begin{macrocode}
-\ifthu@bachelor
+% \begin{macrocode}
+\ifthu@degree@bachelor
\g@addto@macro\appendix{\renewcommand*{\thefigure}{\thechapter-\arabic{figure}}}
\g@addto@macro\appendix{\renewcommand*{\thetable}{\thechapter-\arabic{table}}}
\fi
@@ -2019,14 +1942,6 @@
\renewcommand{\thesubtable}{(\alph{subtable})}
% \renewcommand{\p@subfigure}{:}
% \end{macrocode}
-% 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号。
-% \changes{v2.5.3}{2006/06/08}{增加对 \pkg{longtable} 的处理。}
-% \changes{v4.5.1}{2009/01/06}{太好了,不用处理 \pkg{longtable} 的 \cs{caption}
-% 了。}
-% \begin{macrocode}
-\let\thu@LT@array\LT@array
-\def\LT@array{\dawu[1.5]\thu@LT@array} % set default font size
-% \end{macrocode}
%
% \begin{macro}{\hlinewd}
% 简单的表格使用三线表推荐用 \cs{hlinewd}。如果表格比较复杂还是用 \pkg{booktabs} 的命
@@ -2041,48 +1956,35 @@
%
% \subsubsection{章节标题}
% \label{sec:theor}
-% \changes{v2.5}{2006/05/19}{增加索引名称定义。}
% \begin{macrocode}
-\ifthu@bachelor
+\ifthu@degree@bachelor
\newcommand{\cabstractname}{中文摘要}
\newcommand{\eabstractname}{ABSTRACT}
\else
\newcommand{\cabstractname}{摘\hspace{\ccwd}要}
\newcommand{\eabstractname}{Abstract}
\fi
-\let\CJK@todaysave=\today
-\def\CJK@todaysmall@short{\the\year 年 \the\month 月}
-\def\CJK@todaysmall{\the\year 年 \the\month 月 \the\day 日}
-\def\CJK@todaybig@short{\zhdigits{\the\year}年\zhnumber{\the\month}月}
-\def\CJK@todaybig{\zhdigits{\the\year}年\zhnumber{\the\month}月\zhnumber{\the\day}日}
-\def\CJK@today{\CJK@todaysmall}
-\renewcommand\today{\CJK@today}
-\newcommand\CJKtoday[1][1]{%
- \ifcase#1\def\CJK@today{\CJK@todaysave}
- \or\def\CJK@today{\CJK@todaysmall}
- \or\def\CJK@today{\CJK@todaybig}
- \fi}
% \end{macrocode}
%
% \pkg{fancyhdr} 定义页眉页脚很方便,但是有一个非常隐蔽的坑。通过 \pkg{fancyhdr}
% 定义的样式在第一次被调用时会修改 \cs{chaptermark},这会导致页眉信息错误(多余
% 章号并且英文大写)。这是因为在原始的 \file{book.cls} 中定义如下(大意):
% \begin{latex}
-% \newcommand\chaptername{Chapter}
-% \newcommand\@chapapp{\chaptername}
-% \def\chaptermark#1{
-% \markboth{\MakeUppercase{\@chapapp\ \thechapter}}{}}
+% \newcommand\chaptername{Chapter}
+% \newcommand\@chapapp{\chaptername}
+% \def\chaptermark#1{
+% \markboth{\MakeUppercase{\@chapapp\ \thechapter}}{}}
% \end{latex}
% 很显然这个 \cs{\@chapapp} 不适合中文,因此我们使用\cs{CTEXthechapter}(
% 如,“第 x 章”),同时会将 \cs{MakeUppercase} 去掉。也就是说我们会做如下动作:
% \begin{latex}
-% \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}
+% \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}
% \end{latex}
% 但,\pkg{fancyhdr} 不知何故在 \cs{ps@fancy} 中对 \cs{chaptermark} 进行重定义
% (其实一模一样),而这个 \cs{ps@fancy} 会在 \cs{fancypagestyle} 中使用,如下:
% \begin{latex}
-% \newcommand{\fancypagestyle}[2]{%
-% \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
+% \newcommand{\fancypagestyle}[2]{%
+% \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
% \end{latex}
% 这样的话,\cs{ps@fancy} 会在 \pkg{fancyhdr} 定义的任何样式首次样被激活时调用,从
% 而覆盖我们的 \cs{chaptermark} 定义(后续样式再激活不会重复覆盖)。所以我们采用如下
@@ -2094,38 +1996,26 @@
% \end{macrocode}
%
% 各级标题格式设置。
-% \changes{v5.0.0}{2012/12/23}{用 \cs{ctexset} 来设置,替换复杂的 \cs{@startsection}。}
% \begin{description}
% \item[chapter] 章序号与章名之间空一个汉字符 黑体三号字,居中书写,单倍行距,段
% 前空 24 磅,段后空 18 磅。本科要求:段前段后间距 30/20 pt,行距 20pt。但正文
% 章节 30pt 的话和样例效果不一致。
%
-% \changes{v2.5}{2006/05/13}{取消 \pkg{titlesec} 宏包,用基本 \LaTeX\ 命令格式化标题。}
-% \changes{v2.5.1}{2006/05/23}{让 \cs{chapter*} 自动 \cs{markboth}。}
-% \changes{v3.1}{2006/06/16}{英文摘要标题要搞特殊化。}
-% \changes{v5.0.0}{2015/04/17}{修正章节间距问题(\#57)}
-%
% \item[section] 一级节标题,例如:\fbox{2.1 实验装置与实验方法}。节标题序号与标
% 题名之间空一个汉字符(下同)。采用黑体四号(14pt)字居左书写,行距为固定
% 值 20 磅,段前空 24 磅,段后空 6 磅。本科:25/12 pt,行距 18pt。
%
-% \changes{v4.4}{2008/06/04}{调整段前距为 -20bp 而不是原来的 -24bp。}
-%
% \item[subsection] 二级节标题,例如:\fbox{2.1.1 实验装置}。采用黑体 13pt 字居左
% 书写,行距为固定值 20 磅,段前空 12 磅,段后空 6 磅。本科:中文黑体 12pt 字,
% 英文 13pt 字,段间距 12/6 pt,行距 15pt。
%
-% \changes{v4.4}{2008/06/04}{修改本科生模板的二级节标题为小四而不是半小四。}
-% \changes{v4.4}{2008/06/04}{调整段前距为 -12bp 而不是原来的 -16bp。}
-%
% \item[subsubsection] 三级节标题,例如:\fbox{2.1.2.1 归纳法}。采用黑体小四号
% (12pt)字居左书写,行距为固定值 20 磅,段前空 12 磅,段后空 6 磅。
%
-% \changes{v4.4}{2008/06/04}{调整段前距为 -12bp 而不是原来的 -16bp。}
% \end{description}
% \begin{macrocode}
\newcommand\thu@chapter@titleformat[1]{%
- \ifthu@bachelor #1\else%
+ \ifthu@degree@bachelor #1\else%
\ifthenelse%
{\equal{#1}{\eabstractname}}%
{\bfseries #1}%
@@ -2134,11 +2024,11 @@
\ctexset{%
chapter={
afterindent=true,
- pagestyle={\ifthu@bachelor thu@plain\else thu@headings\fi},
- beforeskip={\ifthu@bachelor 15bp\else 9bp\fi},
+ pagestyle={\ifthu@degree@bachelor thu@plain\else thu@headings\fi},
+ beforeskip={\ifthu@degree@bachelor 15bp\else 9bp\fi},
aftername=\hskip\ccwd,
- afterskip={\ifthu@bachelor 20bp\else 24bp\fi},
- format={\centering\sffamily\ifthu@bachelor\xiaosan[1.333]\else\sanhao[1]\fi},
+ afterskip={\ifthu@degree@bachelor 20bp\else 24bp\fi},
+ format={\centering\sffamily\ifthu@degree@bachelor\xiaosan[1.333]\else\sanhao[1]\fi},
nameformat=\relax,
numberformat=\relax,
titleformat=\thu@chapter@titleformat,
@@ -2147,29 +2037,28 @@
},
section={
afterindent=true,
- beforeskip={\ifthu@bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex},
- afterskip={\ifthu@bachelor 12bp\else 6bp\fi \@plus .2ex},
- format={\sffamily\ifthu@bachelor\sihao[1.286]\else\sihao[1.429]\fi},
+ beforeskip={\ifthu@degree@bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex},
+ afterskip={\ifthu@degree@bachelor 12bp\else 6bp\fi \@plus .2ex},
+ format={\sffamily\ifthu@degree@bachelor\sihao[1.286]\else\sihao[1.429]\fi},
},
subsection={
afterindent=true,
- beforeskip={\ifthu@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
+ beforeskip={\ifthu@degree@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
afterskip={6bp \@plus .2ex},
- format={\sffamily\ifthu@bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi},
- numberformat={\sffamily\ifthu@bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi},
+ format={\sffamily\ifthu@degree@bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi},
+ numberformat={\sffamily\ifthu@degree@bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi},
},
subsubsection={
afterindent=true,
- beforeskip={\ifthu@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
+ beforeskip={\ifthu@degree@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex},
afterskip={6bp \@plus .2ex},
- format={\sffamily\ifthu@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi},
+ format={\sffamily\ifthu@degree@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi},
},
paragraph/afterindent=true,
subparagraph/afterindent=true}
% \end{macrocode}
%
% \begin{macro}{\thu@chapter*}
-% \changes{v2.5.2}{2006/05/29}{定义自己的 \cs{thu@chapter*}。}
% 默认的 \cs{chapter*} 很难同时满足研究生院和本科生的论文要求。本科论文要求所有的
% 章都出现在目录里,比如摘要、Abstract、主要符号表等,所以可以简单的扩展默
% 认\cs{chapter*} 实现这个目的。但是研究生又不要这些出现在目录中,而且致谢和声明
@@ -2179,27 +2068,26 @@
% \cs{thu@chapter*}\oarg{tocline}\marg{title}\oarg{header}: tocline 是出现在目录
% 中的条目,如果为空则此 chapter 不出现在目录中,如果省略表示目录出现 title;
% title 是章标题;header 是页眉出现的标题,如果忽略则取 title。通过这个宏我才真
-% 正体会到 \TeX\ macro 的力量!
+% 正体会到 \TeX{} macro 的力量!
% \begin{macrocode}
-\newcounter{thu@bookmark}
+\newcommand\thu@pdfbookmark[2]{}
\NewDocumentCommand\thu@chapter{s o m o}{
\IfBooleanF{#1}{%
\ClassError{thuthesis}{You have to use the star form: \string\thu@chapter*}{}
}%
- \if@openright\cleardoublepage\else\clearpage\fi\phantomsection%
+ \if@openright\cleardoublepage\else\clearpage\fi%
\IfValueTF{#2}{%
\ifthenelse{\equal{#2}{}}{%
- \addtocounter{thu@bookmark}\@ne
- \pdfbookmark[0]{#3}{thuchapter.\thethu@bookmark}
+ \thu@pdfbookmark{0}{#3}%
}{%
\addcontentsline{toc}{chapter}{#3}
}
}{%
\addcontentsline{toc}{chapter}{#3}
}%
- \ifthu@bachelor \ctexset{chapter/beforeskip=25bp} \fi
+ \ifthu@degree@bachelor \ctexset{chapter/beforeskip=25bp} \fi
\chapter*{#3}%
- \ifthu@bachelor \ctexset{chapter/beforeskip=15bp} \fi
+ \ifthu@degree@bachelor \ctexset{chapter/beforeskip=15bp} \fi
\IfValueTF{#4}{%
\ifthenelse{\equal{#4}{}}
{\@mkboth{}{}}
@@ -2216,8 +2104,6 @@
% \label{sec:toc}
% 最多 4 层,即: x.x.x.x,对应的命令和层序号分别是:
% \cs{chapter}(0), \cs{section}(1), \cs{subsection}(2), \cs{subsubsection}(3)。
-% \changes{v3.1}{2007/10/09}{博士论文目录只出现到第 3 级标题即可。}
-% \changes{v5.0.0}{2015/05/21}{硕士博士论文目录只出现到第 3 级标题即可。其他未明确要求。}
% \begin{macrocode}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{2}
@@ -2225,37 +2111,21 @@
%
% 每章标题行前空 6 磅,后空 0 磅。章节名中英文用 Arial 字体,页码仍用 Times。
% \begin{macro}{\tableofcontents}
-% \changes{v2.0}{2005/12/18}{附录的目录项需要调整一下。以及公式编号方式等等。}
-% \changes{v2.5}{2006/05/13}{取消 \pkg{titletoc} 宏包,用 \cs{dottedtocline} 调整
-% 目录。}
-% \changes{v2.5.1}{2006/05/23}{减小目录项中的导引小点跟页码之间的留白。}
-% \changes{v2.5.2}{2006/05/29}{用 \cs{thu@chapter*} 改写目录命令。}
-% \changes{v3.0}{2007/05/12}{缩小目录中标题与页码之间\textbf{点}之间的距离。}
-% \changes{v4.0}{2007/11/08}{本科研究生目录字号行距都不同。}
-% \changes{v4.4}{2008/06/04}{本科生目录字号改回\cs{xiaosi}\oarg{1.8}。}
-% \changes{v4.4}{2008/06/04}{本科生目录缩进要求不同。}
-% \changes{v4.4}{2008/06/18}{本科章目录项一直用黑体 (Arial)。}
% 目录生成命令。
% \begin{macrocode}
\renewcommand\tableofcontents{%
\thu@chapter*[]{\contentsname}
- \ifthu@bachelor\xiaosi[1.667]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize}
+ \ifthu@degree@bachelor\xiaosi[1.667]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize}
% \end{macrocode}
% 调整目录样式,允许指定目录字体。
-% \changes{v5.2.2}{2016/01/23}{用 \cs{patchcmd} 修改 \cs{@dottedtocline}。}
% \begin{macrocode}
\def\@pnumwidth{2em}
\def\@tocrmarg{\@pnumwidth}
\def\@dotsep{1}
-\ifthu@tocarialchapter
- \thu@tocarialchapterentrytrue\thu@tocarialchapterpagetrue
-\fi
-\def\thu@toc@chapter@entry@font{\ifthu@tocarialchapterentry\sffamily\fi}
-\def\thu@toc@chapter@page@font{\ifthu@tocarialchapterpage\sffamily\fi}
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
- \ifthu@bachelor\vskip 6bp\else\vskip 4bp\fi \@plus\p@
+ \ifthu@degree@bachelor\vskip 6bp\else\vskip 4bp\fi \@plus\p@
\setlength\@tempdima{4em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
@@ -2263,9 +2133,18 @@
\leavevmode
\advance\leftskip\@tempdima
\hskip -\leftskip
- {\thu@toc@chapter@entry@font #1}%
+ \begingroup
+ \ifthu@degree@graduate
+ \sffamily
+ \else
+ \ifthu@degree@bachelor
+ \heiti
+ \fi
+ \fi
+ #1%
+ \endgroup
\leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill%
- \nobreak{\thu@toc@chapter@page@font #2}\par
+ \nobreak #2\par
\penalty\@highpenalty
\endgroup
\fi}
@@ -2274,536 +2153,744 @@
% 研究生学位论文写作指南中规定:目录中的章标题行居左书写,一级节标题行缩进 1 个
% 汉字符,二级节标题行缩进 2 个汉字符(但示例文件中为 1.5 个汉字符)。本科生指
% 南中未作明确规定,示例文件中对于一级和二级节标题分别缩进 1 和 1.5 个汉字符。
-% \changes{v5.0.0}{2015/04/28}{修正学位论文中目录里节前缩进(\#103)}
% \begin{macrocode}
-% \patchcmd{\@dottedtocline}{#4}{\csname thu@toc@font\endcsname #4}{}{}
\patchcmd{\@dottedtocline}{\hb@xt@\@pnumwidth}{\hbox}{}{}
\renewcommand*\l@section{%
\@dottedtocline{1}{\ccwd}{2.1em}}
\renewcommand*\l@subsection{%
- \@dottedtocline{2}{\ifthu@bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
+ \@dottedtocline{2}{\ifthu@degree@bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}}
\renewcommand*\l@subsubsection{%
- \@dottedtocline{3}{\ifthu@bachelor 2.4em\else 3.5em\fi}{3.8em}}
+ \@dottedtocline{3}{\ifthu@degree@bachelor 2.4em\else 3.5em\fi}{3.8em}}
% \end{macrocode}
% \end{macro}
%
%
% \subsubsection{封面和封底}
% \label{sec:cover}
-% \begin{macro}{\thu@def@term}
-% 方便的定义封面的一些替换命令。
-% \changes{v2.6.2}{2006/06/18}{引入 \cs{thu@def@term} 定义封面命令。}
-% \changes{v3.1}{2006/06/16}{重新定义摘要为环境,long 选项不需要了。}
-% \begin{macrocode}
-\def\thu@def@term#1{%
- \define@key{thu}{#1}{\csname #1\endcsname{##1}}
- \expandafter\gdef\csname #1\endcsname##1{%
- \expandafter\gdef\csname thu@#1\endcsname{##1}}
- \csname #1\endcsname{}}
-% \end{macrocode}
-% \end{macro}
-%
-% \changes{v2.0}{2005/12/18}{增加了封面密级,增加博士封面支持}
-% \changes{v4.6}{2011/04/27}{增加博士后相关指令。}
-%
% 定义密级参数。
% \begin{macrocode}
-\thu@def@term{secretlevel}
-\thu@def@term{secretyear}
+\thu@define@key{
+ secret-level = {
+ name = secret@level,
+ },
+ secret-year = {
+ name = secret@year,
+ },
% \end{macrocode}
%
% 论文中英文题目。
% \begin{macrocode}
-\thu@def@term{ctitle}
-\thu@def@term{etitle}
+ title = {
+ default = {标题},
+ },
+ title* = {
+ default = {Title},
+ name = title@en,
+ },
% \end{macrocode}
%
% 作者、导师、副导师、联合指导老师。
% \begin{macrocode}
-\thu@def@term{cauthor}
-\thu@def@term{csupervisor}
-\thu@def@term{cassosupervisor}
-\thu@def@term{ccosupervisor}
-\thu@def@term{eauthor}
-\thu@def@term{esupervisor}
-\thu@def@term{eassosupervisor}
-\thu@def@term{ecosupervisor}
+ author = {
+ default = {姓名},
+ },
+ author* = {
+ default = {Name of author},
+ name = author@en,
+ },
+ supervisor = {
+ default = {导师姓名},
+ },
+ supervisor* = {
+ default = {Name of supervisor},
+ name = supervisor@en,
+ },
+ associate-supervisor = {
+ name = associate@supervisor,
+ },
+ associate-supervisor* = {
+ name = associate@supervisor@en,
+ },
+ joint-supervisor = {
+ name = joint@supervisor,
+ },
+ joint-supervisor* = {
+ name = joint@supervisor@en,
+ },
% \end{macrocode}
%
% 学位中英文。
% \begin{macrocode}
-\thu@def@term{cdegree}
-\thu@def@term{edegree}
+ degree-name = {
+ default = {工学博士},
+ name = degree@name,
+ },
+ degree-name* = {
+ default = {Doctor of Philosophy},
+ name = degree@name@en,
+ },
% \end{macrocode}
%
% 院系中英文名称。
% \begin{macrocode}
-\thu@def@term{cdepartment}
-\thu@def@term{edepartment}
+ department = {
+ default = {计算机科学与技术系},
+ },
% \end{macrocode}
%
-% 学位中英文名称。
-% \changes{v2.5}{2006/05/20}{院系和专业分别改名用 department 和 major,代替原来
-% 的 affil 和 subject。}
+% 专业中英文名称。
% \begin{macrocode}
-\thu@def@term{cmajor}
-\thu@def@term{emajor}
+ discipline = {
+ % default = {计算机科学与技术},
+ },
+ discipline* = {
+ % default = {Computer Science and Technology},
+ name = discipline@en,
+ },
% \end{macrocode}
%
% 论文成文日期。
% \begin{macrocode}
-\thu@def@term{cdate}
-\thu@def@term{edate}
+ date = {
+ default = {\the\year-\two@digits{\month}-\two@digits{\day}},
+ },
% \end{macrocode}
%
% 博士后专用封面参数。
% \begin{macrocode}
-\thu@def@term{id}
-\thu@def@term{udc}
-\thu@def@term{catalognumber}
-\thu@def@term{cfirstdiscipline}
-\thu@def@term{cseconddiscipline}
-\thu@def@term{postdoctordate}
-\thu@def@term{postdocstartdate}
-\thu@def@term{postdocenddate}
-% \end{macrocode}
-%
-% 摘要最好以环境的形式出现(否则命令的形式会导致开始结束的括号距离太远,我不喜
-% 欢),这就必须让环境能够自己保存内容留待以后使用。使用 \pkg{environ} 的
-% \cs{Collect@Body} 来实现。
-% \changes{v3.1}{2006/06/17}{重新定义摘要成为环境。}
-% \changes{v5.2.2}{2016/01/31}{用 \pkg{environ} 封装的 \cs{Collect@Body}。}
-% \begin{macrocode}
-\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}{}
-% \end{macrocode}
-%
-% \begin{macro}{\thu@parse@keywords}
-% 不同论文格式关键词之间的分割不太相同,我们用 \cs{ckeywords} 和
-% \cs{ekeywords} 来收集关键词列表,然后用本命令来生成符合要求的格式。
-% \begin{macrocode}
-\def\thu@parse@keywords#1{
- \define@key{thu}{#1}{\csname #1\endcsname{##1}}
- \expandafter\gdef\csname thu@#1\endcsname{}
- \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}
+ 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}},
+ },
+}
+% \end{macrocode}
+%
+% 输出日期的给定格式:\cs{thu@format@date}\marg{format}\marg{date},
+% 其中格式 \meta{format} 接受三个参数分别对应年、月、日,
+% \meta{date} 是 ISO 格式的日期(yyyy-mm-dd)。
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+% 下划线命令
+% \begin{macrocode}
+\newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt}
+\newcommand\thu@CJKunderline[2][6em]{\CJKunderline*{\hb@xt@ #1{\hss#2\hss}}}
+% \end{macrocode}
+%
+% 将内容拉伸或压缩到固定宽度。
+% \begin{macrocode}
+\newcommand\thu@fixed@box[2]{%
+ \begingroup
+ \def\CJKglue{\hskip 0pt plus 2filll minus 1filll}%
+ \makebox[#1][l]{#2}%
+ \endgroup
+}
+% \end{macrocode}
+%
+% 如果内容小于给定宽度,则拉伸至该宽度,否则取自然宽度。
+% \begin{macrocode}
+\newbox\thu@stretch@box
+\newcommand\thu@stretch[2]{%
+ \sbox\thu@stretch@box{#2}%
+ \ifdim \wd\thu@stretch@box < #1\relax
+ \begingroup
+ \def\CJKglue{\hskip 0pt plus 2filll}%
+ \makebox[#1][l]{#2}%
+ \endgroup
+ \else
+ \box\thu@stretch@box
+ \fi
+}
+% \end{macrocode}
+%
+% 如果内容小于给定宽度,则在右侧填充空白至该宽度,否则取自然宽度。
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+% 导师的姓名和职称使用“,”分开,所以这里用 \pkg{kvsetkeys} 的 \cs{comma@parse} 来处理。
+% \begin{macrocode}
+\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}%
+}
+% \end{macrocode}
+%
+% \myentry{封面}
+% \begin{macro}{\maketitle}
+% 生成封面(题名页)总命令。
+% \begin{macrocode}
+\renewcommand\maketitle{%
+ \cleardoublepage
+ \pagestyle{thu@empty}%
+ \pagenumbering{Alph}%
+ \thu@pdfbookmark{-1}{\thu@title}%
+ \thu@titlepage
+ \ifthu@degree@graduate
+ \cleardoublepage
+ \thu@titlepage@en
+ \fi
+ \clearpage
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\thu@titlepage}
+% 中文封面(题名页)
+%
+% 研究生的中文封面分“学术型”和“专业型”两种 layout,但是“工程硕士”跟“学术型” 的
+% layout 一样,所以按照 \cs{thu@discipline}(工程领域)是否为空来区分“工程硕士”。
+% \begin{macrocode}
+\newcommand\thu@titlepage{%
+ \ifthu@degree@graduate
+ \ifthu@degree@type@academic
+ \thu@titlepage@graduate@academic
+ \else
+ \ifx\thu@discipline\@empty
+ \thu@titlepage@graduate@professional
+ \else
+ \thu@titlepage@graduate@academic
\fi
- \expandafter\expandafter\expandafter\g@addto@macro%
- \expandafter\csname thu@#1\expandafter\endcsname\expandafter{\reserved@a}}}}
+ \fi
+ \else
+ \ifthu@degree@bachelor
+ \thu@titlepage@bachelor
+ \else
+ \ifthu@degree@postdoc
+ \thu@cover@postdoc
+ \cleardoublepage
+ \thu@titlepage@postdoc
+ \fi
+ \fi
+ \fi
+}
% \end{macrocode}
% \end{macro}
-% 利用 \cs{thu@parse@keywords} 来定义,内部通过 \cs{thu@ckeywords} 和
-% \cs{thu@ekeywords} 来引用。
-% \changes{v3.1}{2007/06/16}{增强的关键词命令。}
+%
+% \myentry{研究生中文封面}
+% 《写作指南》规定中文封面页边距:
+% 上—6. 0 厘米,下—5.5 厘米,左—4.0 厘米,右—4.0 厘米,装订线 0 厘米。
+% 然而作为事实标准的 Word 模板的页边距是上下 6.0 厘米,左右 4.0 厘米。
+% 这里缩小上边距以方便排版保密信息。
% \begin{macrocode}
-\thu@parse@keywords{ckeywords}
-\thu@parse@keywords{ekeywords}
+\newcommand\thu@titlepage@graduate@academic{%
+ \newgeometry{
+ top = 2cm,
+ bottom = 6cm,
+ hmargin = 3.5cm,
+ }%
+ \null\vskip 0.2cm%
+ \begingroup
+ \centering
+ \parbox[t][2cm][t]{\textwidth}{%
+ \hskip -0.69cm%
+ \thu@titlepage@secret
+ }\par
+ \vskip 1.5cm%
+ {\thu@titlepage@title}%
+ \vskip 0.85cm%
+ \thu@titlepage@degree
+ \vfill
+ \parbox[t][7.25cm][t]{\textwidth}{\centering\thu@titlepage@info}\par
+ \parbox[t][1.03cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
+ \endgroup
+ \clearpage
+ \restoregeometry
+}
% \end{macrocode}
%
-% \begin{macro}{\thusetup}
-% \changes{v5.1.0}{2015/12/26}{通过 \cs{thusetup} 统一设置封面信息。}
-% 由上可见,封面和封底有一大堆信息需要设置,为了简化操作界面,提供一
-% 个 \cs{thusetup} 命令支持 key/value 的方式来设置。key 就是前面各个设置项的
-% 名字。\note[说明:]{只能设置普通项,不支持环境项,
-% 如 \texttt{cabstract} 和 \texttt{eabstract}。} 由于这些设置项被 \cs{makecover}
-% 调用,所以此命令需要在 \cs{makecover} 之前被调用。
+% 专业型学位论文中文封面
% \begin{macrocode}
-\def\thusetup{\kvsetkeys{thu}}
+\newcommand\thu@titlepage@graduate@professional{%
+ \newgeometry{
+ top = 2cm,
+ bottom = 6cm,
+ hmargin = 3.5cm,
+ }%
+ \null\vskip 0.45cm%
+ \begingroup
+ \centering
+ \parbox[t][1.52cm][t]{\textwidth}{%
+ \hskip -0.69cm%
+ \thu@titlepage@secret
+ }\par
+ \vskip 1.5cm%
+ {\sffamily\yihao[1.575]\thu@title\par}%
+ \vskip 0.9cm%
+ \thu@titlepage@degree
+ \vfill
+ \parbox[t][5.28cm][t]{\textwidth}{\centering\thu@titlepage@info}\par
+ \parbox[t][1.25cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
+ \endgroup
+ \clearpage
+ \restoregeometry
+}
% \end{macrocode}
-% \end{macro}
%
-% \changes{v1.4rc1}{2005/12/14}{I have to put all chinese chars into cfg,
-% otherwise they would not appear.}
-% \changes{v2.5.1}{2006/05/25}{硕士封面的冒号前居然有点小距离!}
-% \changes{v3.1}{2007/10/09}{去掉配置文件中的 \cs{hfill}。}
-% \changes{v3.1}{2007/10/09}{\textbf{内部}密级前面要五角星了。}
-% \changes{v4.0}{2007/11/08}{\textbf{内部}密级前面终究还是不要五角星了。}
-% \changes{v4.4.2}{2008/06/05}{本科生格式终于也开始用空格作为关键字分隔符了。}
-% \changes{v4.4.2}{2008/06/07}{本科生签名之间距离改为 \cs{hskip1em}。}
-% \changes{v4.5.2}{2010/05/29}{本科论文日期具体到日。}
-% \changes{v4.6}{2011/04/26}{增加博士后相关配置。}
-% \changes{v4.7}{2012/05/27}{修正本科生作者信息名称。}
-% \changes{v4.7}{2012/05/27}{本科生关键字也用分号分割了。}
-% \changes{v5.3.0}{2016/03/11}{更新到研究生院 2016.3 指南。}
-% 定义封面用到的各种文字。
-% \begin{macrocode}
-\def\thu@ckeywords@separator{;}
-\def\thu@ekeywords@separator{;}
-\def\thu@title@sep{:}
-\ifthu@postdoctor
- \def\thu@secretlevel{密级}
-\else
- \def\thu@secretlevel{秘密}
-\fi
-\def\thu@secretyear{\the\year}
-\def\thu@schoolname{清华大学}
-\def\thu@bachelor@subtitle{综合论文训练}
-\def\thu@bachelor@title@pre{题目}
-\def\thu@postdoctor@date@title{研究起止日期}
-\ifthu@postdoctor
- \def\thu@author@title{博士后姓名}
-\else
- \ifthu@bachelor
- \def\thu@author@title{姓名}
+% \begin{macrocode}
+\newcommand\thu@titlepage@secret{%
+ \sffamily\CJKfamily+{}\sanhao
+ \ifx\thu@secret@level\@empty
+ \phantom{秘密}%
\else
- \def\thu@author@title{研究生}
+ \thu@secret@level★\makebox[3em][c]{\thu@secret@year}年%
+ \fi\par
+}
+% \end{macrocode}
+%
+% 题名使用一号黑体字,一行写不下时可分两行写。
+% 由于 Word 模板这里设置了“对齐到网格”,所以实际行距不是 1.25 倍。
+% \begin{macrocode}
+\newcommand\thu@titlepage@title{%
+ \sffamily\yihao[1.8]\thu@title\par
+}
+% \end{macrocode}
+%
+% 申请学位的学科门类: 小二号宋体字,字距延伸 0.5bp,
+% 所以 \cs{CJKglue} 应该设为 1 bp。
+% \begin{macrocode}
+\newcommand\thu@titlepage@degree{%
+ \begingroup
+ \def\CJKglue{\hskip 1bp}%
+ \CJKfamily+{}\xiaoer
+ (申请清华大学\thu@degree@name\ifthu@degree@type@professional 专业\fi 学位论文)\par
+ \endgroup
+}
+% \end{macrocode}
+%
+% 作者及导师信息部分使用三号仿宋字
+% \begin{macrocode}
+\newcommand\thu@titlepage@info{%
+ \ifthu@degree@doctor
+ \thu@titlepage@info@doctor
+ \else
+ \thu@titlepage@info@master
\fi
-\fi
-\def\thu@postdoctor@first@discipline@title{流动站(一级学科)名称}
-\def\thu@postdoctor@second@discipline@title{专\hspace{1em}业(二级学科)名称}
-\def\thu@secret@content{%
- \unskip\ifthu@master$\bigstar$ \fi%
- \ifthu@doctor$\bigstar$ \fi%
- \thu@secretyear 年}
-\def\thu@apply{(申请清华大学\thu@cdegree 学位论文)}
-\ifthu@bachelor
- \def\thu@department@title{系别}
- \def\thu@major@title{专业}
-\else
- \def\thu@department@title{培养单位}
- \def\thu@major@title{学科}
-\fi
-\ifthu@postdoctor
- \def\thu@supervisor@title{合作导师}
-\else
- \def\thu@supervisor@title{指导教师}
-\fi
-\ifthu@bachelor
- \def\thu@assosuper@title{辅导教师}
-\else
- \def\thu@assosuper@title{副指导教师}
-\fi
-\def\thu@cosuper@title{%
- \ifthu@doctor 联合导师\else \ifthu@master 联合指导教师\fi\fi}
-\cdate{\ifthu@bachelor\CJK@todaysmall\else\ifthu@postdoctor\CJK@todaysmall@short\else\CJK@todaybig@short\fi\fi}
-\edate{\ifcase \month \or January\or February\or March\or April\or May%
- \or June\or July \or August\or September\or October\or November
- \or December\fi\unskip,\ \ \the\year}
-\newcommand{\thu@authtitle}{关于学位论文使用授权的说明}
-\newcommand{\thu@authorization}{%
-\ifthu@bachelor
-本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
-论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
-容,可以采用影印、缩印或其他复制手段保存该论文。
-\else
-本人完全了解清华大学有关保留、使用学位论文的规定,即:
-
-清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
-必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
-学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
-室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu@master 。\else ;
-(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
-论文。\fi
-
-本人保证遵守上述规定。
-\fi}
-\newcommand{\thu@authorizationaddon}{%
- \ifthu@bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
-\newcommand{\thu@authorsig}{\ifthu@bachelor 签\hskip1em名:\else 作者签名:\fi}
-\newcommand{\thu@teachersig}{导师签名:}
-\newcommand{\thu@frontdate}{%
- 日\ifthu@bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
-\newcommand{\thu@ckeywords@title}{关键词:}
+}
+\newcommand\thu@cover@info@tabular[4]{%
+ \def\thu@cover@item##1##2##3{%
+ \ifx##3\@empty\else
+ \thu@pad{#2}{\thu@fixed@box{#1}{##1}}%
+ \thu@pad{#3}{:}%
+ ##2{##3}\\
+ \fi
+ }%
+ \begin{tabular}{l}%
+ #4%
+ \end{tabular}
+}
+\newcommand\thu@titlepage@info@doctor{%
+ \fangsong\sanhao[1.95]%
+ \thu@cover@info@tabular{2.8cm}{2.8cm}{0.82cm}{%
+ \thu@cover@item{培养单位}{}{\thu@department}%
+ \ifthu@degree@type@academic
+ \thu@cover@item{学科}{}{\thu@discipline}%
+ \thu@cover@item{研究生}{\thu@name@title}{\thu@author}%
+ \else
+ \thu@cover@item{申请人}{\thu@name@title}{\thu@author}%
+ \fi
+ \thu@cover@item{指导教师}{\thu@name@title}{\thu@supervisor}%
+ \thu@cover@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
+ \thu@cover@item{联合导师}{\thu@name@title}{\thu@joint@supervisor}%
+ }\par
+}
+\newcommand\thu@titlepage@info@master{%
+ \fangsong\sanhao[1.95]%
+ \thu@cover@info@tabular{5.5em}{3.6cm}{0.82cm}{%
+ \thu@cover@item{培养单位}{}{\thu@department}%
+ \ifthu@degree@type@academic
+ \thu@cover@item{学科}{}{\thu@discipline}%
+ \thu@cover@item{研究生}{\thu@name@title}{\thu@author}%
+ \else
+ \thu@cover@item{工程领域}{}{\thu@discipline}%
+ \thu@cover@item{申请人}{\thu@name@title}{\thu@author}%
+ \fi
+ \thu@cover@item{指导教师}{\thu@name@title}{\thu@supervisor}%
+ \thu@cover@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
+ \thu@cover@item{联合指导教师}{\thu@name@title}{\thu@joint@supervisor}%
+ }\par
+}
% \end{macrocode}
%
+% 论文成文打印的日期,用三号宋体汉字,字距延伸 0.5bp,
+% 所以 \cs{CJKglue} 应该设为 1 bp。
+% \begin{macrocode}
+\newcommand\thu@titlepage@date{%
+ \begingroup
+ \def\CJKglue{\hskip 1bp}%
+ \sanhao\thu@format@date{\thu@date@zh@short}{\thu@date}\par
+ \endgroup
+}
+% \end{macrocode}
+%
+% \myentry{研究生英文封面}
+% \begin{macro}{\thu@titlepage@en}
+% \begin{macrocode}
+\newcommand{\thu@titlepage@en}{%
+ \newgeometry{
+ top = 5.5cm,
+ bottom = 5cm,
+ hmargin = 3.6cm,
+ }%
+ \ifthu@degree@type@academic
+ \thu@titlepage@en@graduate@academic
+ \else
+ \thu@titlepage@en@graduate@professional
+ \fi
+ \clearpage
+ \restoregeometry
+}
+\newcommand\thu@titlepage@en@graduate@academic{%
+ \begingroup
+ \centering
+ \null\vskip -0.7cm%
+ \thu@titlepage@en@title
+ \vfill
+ \sanhao[1.725]%
+ \thu@titlepage@en@degree
+ \vskip 0.13cm%
+ in\par
+ \vskip 0.1cm%
+ {\bfseries\sffamily\thu@discipline@en\par}
+ \vskip 0.7cm%
+ {\sffamily by\par}
+ \vskip 0.24cm%
+ {\sffamily\bfseries\thu@author@en\par}%
+ \vskip 0.14cm%
+ \parbox[t][3.07cm][t]{\textwidth}{%
+ \centering\xiaosan[2.1]%
+ \thu@titlepage@en@supervisor
+ }\par
+ \thu@titlepage@en@date
+ \vskip 0.65cm%
+ \endgroup
+}
+\newcommand\thu@titlepage@en@graduate@professional{%
+ \begingroup
+ \centering
+ \null\vskip -0.7cm%
+ \thu@titlepage@en@title
+ \vfill
+ \sanhao[1.725]%
+ \thu@titlepage@en@degree
+ \vskip 1.1cm%
+ {\sffamily by\par}
+ \vskip 0.24cm%
+ {\sffamily\bfseries\thu@author@en\par}%
+ \ifx\thu@discipline@en\empty
+ \vskip 1.95cm%
+ \else
+ \vskip -0.1cm%
+ {\sffamily\bfseries(\thu@discipline@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
+ \sffamily\bfseries\fontsize{20bp}{31bp}\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@name@en\par}%
+}
+\newcommand\thu@titlepage@en@supervisor{%
+ \begin{tabular}{r@{\makebox[0.71cm][l]{:}}l}%
+ \thu@thesis@name@en{} Supervisor & \thu@supervisor@en \\
+ \ifx\thu@associate@supervisor@en\@empty\else
+ Associate Supervisor & \thu@associate@supervisor@en \\
+ \fi
+ \ifx\thu@joint@supervisor@en\@empty\else
+ Cooperate Supervisor & \thu@joint@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
+}
+% \end{macrocode}
+% \end{macro}
%
-% \myentry{封面第一页}
-% \begin{macro}{\thu@first@titlepage}
-% 题名使用一号黑体字,一行写不下时可分两行写,并采用 1.25 倍行距。
-% 申请学位的学科门类: 小二号宋体字。
-% 中文封面页边距:
-% 上- 6.0 厘米,下- 5.5 厘米,左- 4.0 厘米,右- 4.0 厘米,装订线 0 厘米;
-% \changes{v2.5.1}{2006/05/21}{本科封面标题调整微小的空隙。}
-% \changes{v2.5.1}{2006/05/21}{本科封面标题第二行的横线上移一点。}
-% \changes{v2.5.2}{2006/05/29}{研究生论文标题中英文用 arial 字体。}
-% \changes{v2.6}{2006/06/09}{本科生题目加长,最多 24 个字。}
-% \changes{v4.6}{2011/04/26}{增加博士后封面。}
-% \changes{v4.7}{2011/11/28}{硕士中文封面不再需要英文标题。}
-% \changes{v4.7}{2012/05/30}{本科生题目下划线长度自动适应字数。}
-% \changes{v5.1.0}{2015/12/27}{利用 \env{CJKfilltwosides} 优化封面排版。}
-% \changes{v5.5.0}{2019/01/08}{修正博士后封面的格式。}
+% \myentry{本科生封面}
+% \begin{macrocode}
+\newcommand\thu@titlepage@bachelor{%
+ \newgeometry{
+ vmargin = 2.54cm,
+ hmargin = 3.17cm,
+ }%
+ \null\vskip 0.44cm%
+ \begingroup
+ \centering
+ \parbox[t][2cm][t]{\textwidth}{%
+ \hfill
+ \sffamily\CJKfamily+{}\xiaosi
+ \ifx\thu@secret@level\@empty
+ \phantom{秘密}%
+ \else
+ \thu@secret@level\makebox[3em][c]{\thu@secret@year}年%
+ \fi\par
+ }\par
+ \begingroup
+ \ifcsname lishu\endcsname
+ \lishu\yihao\ziju{0.5}清华大学%
+ \else
+ \includegraphics{tsinghua.pdf}%
+ \fi
+ \par
+ \endgroup
+ \vskip 0.94cm%
+ {\sffamily\bfseries\xiaochu\ziju{0.5}综合论文训练\par}%
+ \vskip 2.3cm%
+ \parbox[t][2.4cm][t]{\textwidth}{%
+ \heiti\xiaoer[1.56]%
+ \parindent=2em%
+ \hangindent=5em%
+ \makebox[3em][l]{题目:}%
+ \yihao[1.56]%
+ \CJKunderline[skip=false, thickness=0.05em, depth=0.12em]{\thu@title}\par
+ }\par
+ \vskip 2.5cm%
+ \parbox[t][6.0cm][t]{\textwidth}{%
+ \fangsong\sanhao[2.3]%
+ \leftskip=2.5cm%
+ \parindent=\z@
+ \def\thu@cover@item##1##2##3{%
+ \ifx##3\@empty\else
+ \thu@fixed@box{4em}{##1}:##2{##3}\\
+ \fi
+ }%
+ \def\thu@name@title@format##1##2{%
+ \thu@stretch{3em}{##1}\quad ##2%
+ }
+ \thu@cover@item{系别}{}{\thu@department}%
+ \thu@cover@item{专业}{}{\thu@discipline}%
+ \thu@cover@item{姓名}{\thu@name@title}{\thu@author}%
+ \thu@cover@item{指导教师}{\thu@name@title}{\thu@supervisor}%
+ \thu@cover@item{辅导教师}{\thu@name@title}{\thu@associate@supervisor}%
+ }\par
+ {\xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par}%
+ \endgroup
+ \clearpage
+ \restoregeometry
+}
+% \end{macrocode}
%
+% \myentry{博士后封面}
% \begin{macrocode}
-\newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt}
-\newcommand\thu@CJKunderline[2][6em]{\CJKunderline*{\hb@xt@ #1{\hss#2\hss}}}
-\newlength{\thu@title@width}
-\newcommand{\thu@put@title}[2][\thu@title@width]{%
- \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}}
-\def\thu@first@titlepage{%
- \ifthu@postdoctor\thu@first@titlepage@postdoctor\else\thu@first@titlepage@other\fi}
-\newcommand\thu@first@titlepage@postdoctor{%
+\newcommand\thu@cover@postdoc{%
\begin{center}%
- \setlength{\thu@title@width}{3.5em}%
\renewcommand\ULthickness{0.7pt}%
\vspace*{0.35cm}%
{\sihao[2.6]%
- \thu@put@title{分类号}\thu@underline[3.7cm]{\thu@catalognumber}\hfill
- 密级\thu@underline[3.7cm]{\ifthu@secret\thu@secret@content\fi}\par
- \thu@put@title{U D C}\thu@underline[3.7cm]{\thu@udc}\hfill
+ \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}\thu@schoolname\par}%
+ {\ziju{1.5}清华大学\par}%
{\ziju{0.5}博士后研究工作报告\par}%
}%
\vskip 0.2cm%
\parbox[t][4.0cm][c]{\textwidth}{%
- \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu@ctitle}\par
+ \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu@title}\par
}\par
\vskip 0.4cm%
- {\xiaosi\thu@cauthor\par}%
+ {\xiaosi\thu@author\par}%
\vskip 1.4cm%
{\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}%
- 工作完成日期\quad\thu@CJKunderline[5.9cm]{\thu@postdoctordate}\par
+ 工作完成日期\quad
+ \thu@CJKunderline[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@CJKunderline[5.9cm]{\thu@cdate}\par
+ 报告提交日期\quad
+ \thu@CJKunderline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par
}%
\vskip 0.45cm%
- {\xiaosi[2]{\ziju{1}\thu@schoolname}\quad (北京)\par}%
+ {\xiaosi[2]{\ziju{1}清华大学}\quad (北京)\par}%
\vskip 0.25cm%
- {\xiaosi[2]\thu@cdate\par}%
+ {\xiaosi[2]\thu@format@date{\thu@date@zh@digit@short}{\thu@date}\par}%
\end{center}%
- \cleardoublepage
+}
+% \end{macrocode}
+%
+% \myentry{博士后题名页}
+% \begin{macrocode}
+\newcommand\thu@titlepage@postdoc{%
\begin{center}%
\vspace*{1.5cm}%
\parbox[t][3cm][c]{\textwidth}{%
- \centering\sanhao[1.95]\thu@ctitle\par
+ \centering\sanhao[1.95]\thu@title\par
}\par
\vskip 0.15cm%
\parbox[t][3cm][c]{\textwidth}{%
- \centering\sihao[1.36]\thu@etitle\par
+ \centering\sihao[1.36]\thu@title@en\par
}\par
\vskip 0.4cm%
{\xiaosi[2.6]%
- \setlength{\thu@title@width}{11em}%
\begin{tabular}{l@{\quad}l}%
- \thu@put@title{博士后姓名} & \thu@cauthor \\
- \thu@put@title{流动站(一级学科)名称} & \thu@cfirstdiscipline \\
- \thu@put@title{专\quad{}业(二级学科)名称} & \thu@cseconddiscipline \\
+ \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@postdocstartdate\par
+ 研究工作起始时间\quad\thu@format@date{\thu@date@zh@digit}{\thu@start@date}\par
\vskip 0.1cm%
- 研究工作期满时间\quad\thu@postdocenddate\par
+ 研究工作期满时间\quad\thu@format@date{\thu@date@zh@digit}{\thu@end@date}\par
}%
\vskip 2.1cm%
- {\xiaosi[2.6]\thu@schoolname{}人事部(北京)\par}%
+ {\xiaosi[2.6]清华大学人事部(北京)\par}%
\vskip 0.6cm%
- {\wuhao\thu@cdate\par}%
+ {\wuhao\thu@format@date{\thu@date@zh@digit@short}{\thu@date}\par}%
\end{center}%
}
-\newcommand{\thu@first@titlepage@other}{
- \begin{center}
- \vspace*{-1.6cm}
- \parbox[b][2.4cm][t]{\textwidth}{%
- \ifthu@secret{\heiti\sanhao\thu@secretlevel\thu@secret@content}\else\rule{1cm}{0cm}\fi}
- \ifthu@bachelor
- \vskip0.65cm
- {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu@schoolname\else\includegraphics{tsinghua.pdf}\fi}
- \par\vskip1.5cm
- {\xiaochu\heiti\ziju{0.5}\textbf\thu@bachelor@subtitle}
- \vskip2.2cm\hskip0.8cm
- \noindent\heiti\xiaoer\thu@bachelor@title@pre\thu@title@sep
- \parbox[t]{12cm}{%
- \ignorespaces\yihao[1.51]%
- \renewcommand{\CJKunderlinebasesep}{0.25cm}%
- \renewcommand{\ULthickness}{1.3pt}%
- \xeCJKsetup{underline/format=\color{black}}%
- \CJKunderline*{\thu@ctitle}}%
- \vskip1.3cm
- \else
- \vskip0.8cm
- \parbox[t][9cm][t]{\paperwidth-8cm}{
- \renewcommand{\baselinestretch}{1.3}
- \begin{center}
- \yihao[1.2]{\sffamily\thu@ctitle}\par%
- \par\vskip 18bp%
- \xiaoer[1]\textrm{\thu@apply}%
- \end{center}}
- \fi
% \end{macrocode}
%
-% 作者及导师信息部分使用三号仿宋字
-% \changes{v2.0}{2005/12/20}{封面的培养单位,学科等内容字距自动调整。}
-% \changes{v2.1}{2006/02/29}{增加本科部分。}
-% \changes{v2.6.2}{2006/06/17}{如果本科生没有辅导教师则不显示。}
-% \changes{v3.1}{2007/10/09}{重新放置封面表格的提示元素。}
-% \changes{v4.4.3}{2008/06/09}{修改本科生论文封面格式以符合新样例。}
-% \changes{v5.1.0}{2015/12/27}{修改联合指导教师显示问题。}
-% \begin{macrocode}
- \ifthu@bachelor
- \vskip0.75cm
- \ifx\thu@cassosupervisor\@empty%
- \def\thu@tempa{7.15cm}
- \else%
- \def\thu@tempa{8.15cm}
+% \myentry{授权说明}
+% \begin{macro}{\copyrightpage}
+% 授权说明
+% \begin{macrocode}
+\newcommand{\thu@authorization}{%
+\ifthu@degree@bachelor
+本人完全了解清华大学有关保留、使用学位论文的规定,即:学校有权保留学位
+论文的复印件,允许该论文被查阅和借阅;学校可以公布该论文的全部或部分内
+容,可以采用影印、缩印或其他复制手段保存该论文。
+\else
+本人完全了解清华大学有关保留、使用学位论文的规定,即:
+
+清华大学拥有在著作权法规定范围内学位论文的使用权,其中包括:(1)已获学位的研究生
+必须按学校规定提交学位论文,学校可以采用影印、缩印或其他复制手段保存研究生上交的
+学位论文;(2)为教学和科研目的,学校可以将公开的学位论文作为资料在图书馆、资料
+室等场所供校内师生阅读,或在校园网上供校内师生浏览部分内容\ifthu@degree@master 。\else ;
+(3)根据《中华人民共和国学位条例暂行实施办法》,向国家图书馆报送可以公开的学位
+论文。\fi
+
+本人保证遵守上述规定。
+\fi}
+\newcommand{\thu@authorizationaddon}{%
+ \ifthu@degree@bachelor(涉密的学位论文在解密后应遵守此规定)\else (保密的论文在解密后应遵守此规定)\fi}
+\newcommand{\thu@authorsig}{\ifthu@degree@bachelor 签\hskip1em名:\else 作者签名:\fi}
+\newcommand{\thu@teachersig}{导师签名:}
+\newcommand{\thu@frontdate}{%
+ 日\ifthu@degree@bachelor\hspace{1em}\else\hspace{2em}\fi 期:}
+\newcommand\copyrightpage[1][]{%
+ \ifthu@degree@postdoc\relax\else
+ \ifthu@degree@bachelor\clearpage\else\cleardoublepage\fi%
+ \def\thu@@tmp{#1}
+ \ifx\thu@@tmp\@empty
+ \ifthu@degree@bachelor\thu@authorization@mk\else%
+ \begin{list}{}{%
+ \topsep\z@%
+ \listparindent\parindent%
+ \parsep\parskip%
+ \setlength{\leftmargin}{0.9mm}%
+ \setlength{\rightmargin}{0.9mm}}%
+ \item[]\thu@authorization@mk%
+ \end{list}%
\fi%
- \parbox[t][\thu@tempa][t]{\textwidth}{%
- {\fangsong\sanhao[1.95]%
- \hspace*{1.9cm}
- \setlength{\thu@title@width}{4em}
- \setlength{\extrarowheight}{6pt}
- \begin{tabular}{p{\thu@title@width}@{}l@{\extracolsep{8pt}}l}
- \thu@put@title{\thu@department@title} & \thu@title@sep
- & \thu@cdepartment\\
- \thu@put@title{\thu@major@title} & \thu@title@sep
- & \thu@cmajor\\
- \thu@put@title{\thu@author@title} & \thu@title@sep
- & \thu@cauthor \\
- \thu@put@title{\thu@supervisor@title} & \thu@title@sep
- & \thu@csupervisor\\
- \ifx\thu@cassosupervisor\@empty\else%
- \thu@put@title{\thu@assosuper@title} & \thu@title@sep
- & \thu@cassosupervisor\\
- \fi
- \end{tabular}
- }}
\else
- \vskip 5bp
- \parbox[t][7.8cm][t]{\textwidth}{{\sanhao[1.5]
- \begin{center}\fangsong
- \setlength{\thu@title@width}{5em}
- \setlength{\extrarowheight}{4pt}
- \begin{tabular}{p{\thu@title@width}@{}c@{\extracolsep{8pt}}l}
- \thu@put@title{\thu@department@title} & \thu@title@sep
- & {\ziju{0.1875}\thu@cdepartment}\\
- \thu@put@title{\thu@major@title} & \thu@title@sep
- & {\ziju{0.1875}\thu@cmajor}\\
- \thu@put@title{\thu@author@title} & \thu@title@sep
- & {\ziju{0.6875}\thu@cauthor}\\
- \thu@put@title{\thu@supervisor@title} & \thu@title@sep
- & {\ziju{0.6875}\thu@csupervisor}\\
- \ifx\thu@cassosupervisor\@empty\else
- \thu@put@title{\thu@assosuper@title} & \thu@title@sep
- & {\ziju{0.6875}\thu@cassosupervisor}\\
- \fi
- \ifx\thu@ccosupervisor\@empty\else
- \ifthu@master
- \hfill\makebox[0pt][r]{\thu@cosuper@title} & \thu@title@sep
- & {\ziju{0.6875}\thu@ccosupervisor}\\
- \fi
- \ifthu@doctor
- \thu@put@title{\thu@cosuper@title} & \thu@title@sep
- & {\ziju{0.6875}\thu@ccosupervisor}\\
- \fi
- \fi
- \end{tabular}
- \end{center}}}
- \fi
-% \end{macrocode}
-%
-% 论文成文打印的日期,用三号宋体汉字,不用阿拉伯数字
-% 本科:论文成文打印的日期用阿拉伯数字,采用小四号宋体
-% \changes{v4.4.3}{2008/06/09}{修改本科生论文封面日期格式以符合新样例。}
-% \begin{macrocode}
- \begin{center}
- {\ifthu@bachelor\vskip-1.0cm\xiaosi\else%
- \vskip-0.5cm\sanhao\fi%
- \songti\thu@cdate}
- \end{center}
- \end{center}} % end of titlepage
-% \end{macrocode}
-% \end{macro}
-%
-% \myentry{英文封面}
-% \begin{macro}{\thu@doctor@engcover}
-% \changes{v4.2}{2008/01/23}{博士英文封面补充联合导师。}
-% \changes{v4.7}{2011/11/28}{硕士生新增英文封面。}
-% 研究生论文使用。
-% \begin{macrocode}
-\def\thu@master@art{Master of Arts}
-\def\thu@master@sci{Master of Science}
-\def\thu@doctor@phi{Doctor of Philosophy}
-\newcommand{\thu@engcover}{%
- \newif\ifthu@professional\thu@professionalfalse
- \ifthu@master
- \ifthenelse{\equal{\thu@edegree}{\thu@master@art}}
- {\relax}
- {\ifthenelse{\equal{\thu@edegree}{\thu@master@sci}}
- {\relax}
- {\thu@professionaltrue}}
- \fi
- \ifthu@doctor
- \ifthenelse{\equal{\thu@edegree}{\thu@doctor@phi}}
- {\relax}
- {\thu@professionaltrue}
+ \includepdf{#1}%
+ \fi
\fi
- \begin{center}
- \vspace*{-5pt}
- \parbox[t][5.2cm][t]{\paperwidth-7.2cm}{
- \renewcommand{\baselinestretch}{1.5}
- \begin{center}
- \erhao[1.1]\bfseries\sffamily\thu@etitle%
- \end{center}}
- \parbox[t][][t]{\paperwidth-7.2cm}{
- \renewcommand{\baselinestretch}{1.3}
- \begin{center}
- \sanhao%
- \ifthu@master Thesis \else Dissertation \fi
- Submitted to\\
- {\bfseries Tsinghua University}\\
- in partial fulfillment of the requirement\\
- for the \ifthu@professional professional \fi
- degree of\\
- {\bfseries\sffamily\thu@edegree}%
- \ifthu@professional\relax\else
- \\in\\[3bp]
- {\bfseries\sffamily\thu@emajor}%
- \fi
- \end{center}}
- \parbox[t][][b]{\paperwidth-7.2cm}{
- \renewcommand{\baselinestretch}{1.3}
- \begin{center}
- \sanhao\sffamily by\\[3bp]
- \bfseries\thu@eauthor%
- \ifthu@professional
- \ifx\thu@emajor\empty\relax\else
- \\(~\thu@emajor~)%
- \fi\fi
- \end{center}}
- \par\vspace{0.9cm}
- \parbox[t][2.1cm][t]{\paperwidth-7.2cm}{
- \renewcommand{\baselinestretch}{1.2}
- \xiaosan\centering
- \begin{tabular}{rl}
- \ifthu@master Thesis \else Dissertation \fi
- 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}}
+}
% \end{macrocode}
-% \end{macro}
%
-% \myentry{授权页面}
-% \begin{macro}{\thu@authorization@mk}
-% \changes{v4.0}{2007/11/08}{研究生的授权部分调整了一下,不知道老师为什么总爱修改
-% 那些无关紧要的格式,郁闷。感谢 PMHT@newsmth 的认真比对。}
-% \changes{v4.4.2}{2008/06/07}{修改本科生的授权部分,按照 2008 年的新样例。}
% 支持扫描文件替换。
% \begin{macrocode}
\newcommand{\thu@authorization@mk}{%
- \ifthu@bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
- \begin{center}\erhao\heiti\thu@authtitle\end{center}
- \ifthu@bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
+ \ifthu@degree@bachelor\vspace*{0.2cm}\else\vspace*{0.42cm}\fi % shit code!
+ \begin{center}\erhao\heiti 关于学位论文使用授权的说明\end{center}
+ \ifthu@degree@bachelor\vskip5pt\else\vskip40pt\sihao[2.03]\fi\par
\thu@authorization\par
\textbf{\thu@authorizationaddon}\par
- \ifthu@bachelor\vskip0.7cm\else\vskip1.0cm\fi
- \ifthu@bachelor
+ \ifthu@degree@bachelor\vskip0.7cm\else\vskip1.0cm\fi
+ \ifthu@degree@bachelor
\indent\mbox{\thu@authorsig\thu@underline\relax%
\thu@teachersig\thu@underline\relax\thu@frontdate\thu@underline\relax}
\else
@@ -2818,94 +2905,35 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\makecover}
-% 生成封面总命令。
-% \changes{v2.1}{2006/02/29}{分成几个小模块来搞,不然这个 macro 太大了,看不过来。}
-% \begin{macrocode}
-\def\makecover{%
- \thu@setup@pdfinfo\thu@makecover}
-\def\thu@setup@pdfinfo{%
- \ifthu@chinese
- \hypersetup{
- pdftitle = \thu@ctitle,
- pdfauthor = \thu@cauthor,
- pdfsubject = \thu@cdegree,
- pdfkeywords = \thu@ckeywords,
- }%
- \else
- \hypersetup{
- pdftitle = \thu@etitle,
- pdfauthor = \thu@eauthor,
- pdfsubject = \thu@edegree,
- pdfkeywords = \thu@ekeywords,
- }%
- \fi
- \hypersetup{
- pdfcreator={\thuthesis-v\version}}}
-\NewDocumentCommand{\thu@makecover}{o}{
- \phantomsection
- \pdfbookmark[-1]{\thu@ctitle}{ctitle}
- \normalsize%
- \begin{titlepage}
-% \end{macrocode}
-%
-% 论文封面第一页!
-% \begin{macrocode}
- \thu@first@titlepage
-% \end{macrocode}
-%
-% \changes{v2.5}{2006/05/19}{本科论文评语位置调整。}
-% \changes{v3.0}{2007/05/12}{本科论文评语取消。}
-% \changes{v4.7}{2011/11/28}{硕士论文也需要英文封面。}
+% \subsubsection{摘要}
+% \label{sec:abstractformat}
%
-% 研究生论文需要增加英文封面
+% \begin{macro}{\thu@clist@use}
+% 不同论文格式关键词之间的分割不太相同,我们用 \option{keywords} 和
+% \option{keywords*} 来收集关键词列表,然后用本命令来生成符合要求的格式,
+% 类似于 \LaTeX3 的 \cs{clist\_use:Nn}。
% \begin{macrocode}
- \ifthu@bachelor\relax\else
- \ifthu@postdoctor\relax\else
- \cleardoublepage\thu@engcover
- \fi\fi
-% \end{macrocode}
-%
-% 授权说明
-% \changes{v3.0}{2007/05/12}{本科论文授权图片扫描取消。}
-% \changes{v4.5.2}{2010/05/29}{本科封面和授权说明之间不要空白页。}
-% \changes{v4.6}{2011/05/29}{博士后报告无授权说明。}
-% \changes{v5.0.0}{2015/06/05}{使用 \pkg{pdfpages} 宏包支持本硕博论文授权说明扫描版(\#36)。}
-% \begin{macrocode}
- \ifthu@postdoctor\relax\else%
- \ifthu@bachelor\clearpage\else\cleardoublepage\fi%
- \IfNoValueTF{#1}{%
- \ifthu@bachelor\thu@authorization@mk\else%
- \begin{list}{}{%
- \topsep\z@%
- \listparindent\parindent%
- \parsep\parskip%
- \setlength{\leftmargin}{0.9mm}%
- \setlength{\rightmargin}{0.9mm}}%
- \item[]\thu@authorization@mk%
- \end{list}%
- \fi%
- }{%
- \includepdf{#1}%
- }%
+\thu@define@key{
+ keywords,
+ keywords* = {
+ name = keywords@en,
+ },
+}
+\newcommand\thu@clist@use[2]{%
+ \def\thu@@tmp{}%
+ \kv@set@family@handler{thu@clist}{%
+ \ifx\thu@@tmp\@empty
+ \def\thu@@tmp{#2}%
+ \else
+ #2%
\fi
- \end{titlepage}
-% \end{macrocode}
-%
-% \changes{v2.5}{2006/05/16}{综合论文训练在授权说明之后。}
-% \changes{v3.0}{2007/05/12}{本科综合论文训练在电子版中取消。}
-%
-% 中英文摘要
-% \begin{macrocode}
- \normalsize
- \thu@makeabstract
- \let\@tabular\thu@tabular}
+ ##1%
+ }%
+ \kvsetkeys@expandafter{thu@clist}{#1}%
+}
% \end{macrocode}
% \end{macro}
%
-% \subsubsection{摘要}
-% \label{sec:abstractformat}
-%
% \begin{macro}{\thu@put@keywords}
% 排版关键字。
% \begin{macrocode}
@@ -2913,88 +2941,59 @@
\newcommand\thu@put@keywords[2]{%
\begingroup
\setbox\thu@kw=\hbox{#1}
- \ifthu@bachelor\indent\else\noindent\hangindent\wd\thu@kw\hangafter1\fi%
+ \ifthu@degree@bachelor\indent\else\noindent\hangindent\wd\thu@kw\hangafter1\fi%
\box\thu@kw#2\par
\endgroup}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\thu@makeabstract}
+% \begin{environment}{abstract}
% 中文摘要部分的标题为“\textbf{摘要}”,用黑体三号字。
-% \changes{v2.5.1}{2006/05/24}{教务处又不要正文前的页眉了。}
-% \changes{v2.5.1}{2006/05/24}{不管是哪种论文格式,摘要都要右开。}
-% \changes{v2.5.2}{2006/05/29}{在研究生论文中,摘要不出现在目录中,但是要在书签中出现。}
-% \changes{v2.5.3}{2006/06/03}{\cs{pagenumber} 会自动设置页码为 1。}
-% \changes{v2.6.3}{2006/06/30}{为本科正确设置目录及以后的页码。}
-% \changes{v4.5.2}{2010/05/29}{本科论文摘要亦无需右开。}
-% \begin{macrocode}
-\newcommand{\thu@makeabstract}{%
- \ifthu@bachelor\clearpage\else\cleardoublepage\fi
- \thu@setchinese
- \thu@chapter*[]{\cabstractname} % no tocline
- \ifthu@bachelor
- \pagestyle{thu@plain}
- \else
- \pagestyle{thu@headings}
- \fi
- \pagenumbering{Roman}
-% \end{macrocode}
-%
% 摘要内容用小四号字书写,两端对齐,汉字用宋体,外文字用 Times New Roman 体,
% 标点符号一律用中文输入状态下的标点符号。
-% \changes{v3.1}{2007/06/16}{研究生关键词不再沉底。}
% \begin{macrocode}
- \thu@cabstract
+\newenvironment{abstract}{%
+ \ifthu@degree@bachelor\clearpage\else\cleardoublepage\fi
+ \thu@setchinese
+ \thu@chapter*[]{\cabstractname} % no tocline
+}{%
% \end{macrocode}
+%
% 每个关键词之间空两个汉字符宽度, 且为悬挂缩进。
-% \changes{v2.6.2}{2006/06/17}{取消最后一列的空白。}
-% \changes{v2.6.2}{2006/06/20}{取消 tabular 环境,用 \cs{hangindent} 实现关键词
-% 悬挂缩进,英文摘要同。}
-% \changes{v4.4.2}{2008/06/05}{本科生格式中文关键词采用首行缩进且无悬挂缩进。}
% \begin{macrocode}
- \ifthu@doctor\vfill\else\vskip12bp\fi
- \thu@put@keywords{\textbf\thu@ckeywords@title}{\thu@ckeywords}
+ \ifthu@degree@doctor\vfill\else\vskip12bp\fi
+ \thu@put@keywords{\textbf{关键词:}}{%
+ \thu@clist@use{\thu@keywords}{;}%
+ }%
+ \thu@setdefaultlanguage
+}
% \end{macrocode}
+% \end{environment}
%
+% \begin{environment}{abstract*}
% 英文摘要部分的标题为 \textbf{Abstract},用 Arial 体三号字。研究生的英文摘要要求
-% 非常怪异:虽然正文前的封面部分为右开,但是英文摘要要跟中文摘要连
-% 续。\changes{v2.5.1}{2006/05/28}{研究生封面英文摘要连续。}
+% 非常怪异:虽然正文前的封面部分为右开,但是英文摘要要跟中文摘要连续。
+% 摘要内容用小四号 Times New Roman。
% \begin{macrocode}
+\newenvironment{abstract*}{%
\thu@setenglish
\thu@chapter*[]{\eabstractname} % no tocline
-% \end{macrocode}
-%
-% 摘要内容用小四号 Times New Roman。
-% \begin{macrocode}
- \thu@eabstract
-% \end{macrocode}
-%
-% 每个关键词之间空四个英文字符宽度。
-% \changes{v2.4}{2006/04/14}{It is \textbf{Key words}, but not \textbf{Key
-% Words}.}
-% \changes{v2.6.2}{2006/06/17}{取消最后一列的空白。}
-% \changes{v2.6.4}{2006/10/23}{\textbf{Keywords} but not \textbf{Key words}.}
-% \changes{v3.0}{2007/05/13}{\textbf{Key words} but not
-% \textbf{Keywords}. What are you doing?}
-% \changes{v4.4.2}{2008/06/05}{Bachelor English abstract format requires
-% indent and no hang-indent.}
-% \changes{v4.7}{2012/06/02}{Bachelor sample uses Keywords w/o space \texttt{-\_-}}
-% \begin{macrocode}
- \ifthu@doctor\vfill\else\vskip12bp\fi
+}{%
+ \ifthu@degree@doctor\vfill\else\vskip12bp\fi
\thu@put@keywords{%
- \textbf{\ifthu@bachelor Keywords:\else Key Words:\fi\enskip}}{\thu@ekeywords}%
+ \textbf{\ifthu@degree@bachelor Keywords:\else Key Words:\fi\enskip}%
+ }{%
+ \thu@clist@use{\thu@keywords@en}{; }%
+ }%
\thu@setdefaultlanguage
}
% \end{macrocode}
-% \end{macro}
+% \end{environment}
%
% \subsubsection{主要符号表}
% \label{sec:denotationfmt}
% \begin{environment}{denotation}
% 主要符号对照表。
-% \changes{v2.0e}{2005/12/18}{主要符号表定义为一个 list,用起来方便。}
-% \changes{v2.4}{2006/04/14}{为主要符号表环境增加一个可选参数,调节符号列的宽度。}
-% \changes{v5.2.1}{2016/01/11}{利用 \pkg{enumitem} 改造环境定义,更直观。}
% \begin{macrocode}
\newenvironment{denotation}[1][2.5cm]{%
\thu@chapter*[]{\thu@denotation@name} % no tocline
@@ -3020,9 +3019,8 @@
% \subsubsection{致谢以及声明}
% \label{sec:ackanddeclare}
%
-% \begin{environment}{acknowledgement}
+% \begin{environment}{acknowledgements}
% 支持扫描文件替换。
-% \changes{v2.4}{2006/04/14}{调整\textbf{致谢}等中间的距离。}
% \begin{macrocode}
\newcommand\thu@declarename{声\hspace{\ccwd}明}
\newcommand{\thu@declaretext}{本人郑重声明:所呈交的学位论文,是本人在导师指导下
@@ -3033,51 +3031,36 @@
\newcommand{\thu@backdate}{日\hspace{1em}期:}
% \end{macrocode}
%
-% \changes{v2.0}{2005/12/19}{将致谢定义为一个环境更合适,里面也不用像以前段首需
-% 要自己缩进。}
-% \changes{v1.5}{2005/12/16}{在那些不显示编号的章节前面先执行一次
-% \cs{cleardoublepage},使新开章节的页码到达正确的状态。否则会因为 \cs{addcontentsline}
-% 在 chapter 之前而导致目录页码错误。}
% 定义致谢与声明环境。
-% \changes{v2.5}{2006/05/16}{本科论文要求致谢声明分页,但是研究生的不分。}
-% \changes{v2.5.2}{2006/05/29}{研究生致谢右开。}
-% \changes{v2.5.2}{2006/05/30}{研究生致谢题目是致谢,目录是致谢与声明。}
-% \changes{v2.6.3}{2006/07/01}{重画双虚线,自适应页面宽度。}
-% \changes{v4.5.2}{2010/09/19}{研究生论文的致谢和声明终于分开了。}
-% \changes{v5.2.1}{2016/01/11}{用 \env{acknowledgement} 替换 \env{ack}。}
-% \begin{macrocode}
-\NewDocumentEnvironment{acknowledgement}{o}{%
- \thu@chapter*{\thu@ack@name}
- }
+% \begin{macrocode}
+\newenvironment{acknowledgements}{%
+ \thu@chapter*{\thu@ack@name}%
+}{}
% \end{macrocode}
%
% 声明部分
-% \changes{v3.0}{2007/05/12}{本科论文声明部分图片扫描取消。}
-% \changes{v5.0.0}{2015/06/05}{使用 pdfpages 宏包支持本硕博论文声明扫描版(\#36)。}
-% \begin{macrocode}
- {
- \ifthu@postdoctor\relax\else%
- \IfNoValueTF{#1}{%
- \thu@chapter*{\thu@declarename}
- \par{\xiaosi\parindent2em\thu@declaretext}\vskip2cm
- {\xiaosi\hfill\thu@signature\thu@underline[2.5cm]\relax%
- \thu@backdate\thu@underline[2.5cm]\relax}%
- }{%
- \includepdf[pagecommand={\thispagestyle{thu@empty}%
- \phantomsection\addcontentsline{toc}{chapter}{\thu@declarename}%
- }]{#1}%
- }%
- \fi
- }
+% \begin{macrocode}
+\newcommand\statement[1][]{%
+ \def\thu@@tmp{#1}%
+ \ifx\thu@@tmp\@empty
+ \thu@chapter*{\thu@declarename}%
+ \par{\xiaosi\parindent2em\thu@declaretext}\vskip2cm%
+ {\xiaosi\hfill\thu@signature\thu@underline[2.5cm]\relax
+ \thu@backdate\thu@underline[2.5cm]\relax}%
+ \else
+ \includepdf[pagecommand={\thispagestyle{thu@empty}%
+ \addcontentsline{toc}{chapter}{\thu@declarename}%
+ }]{#1}%
+ \fi
+}
% \end{macrocode}
% \end{environment}
-% \begin{environment}{ack}
-% 兼容旧版本保留 \env{ack}。
+%
+% 兼容旧版本保留 \env{acknowledgement}。
% \begin{macrocode}
-\let\ack\acknowledgement
-\let\endack\endacknowledgement
+\let\acknowledgement\acknowledgements
+\let\endacknowledgement\endacknowledgements
% \end{macrocode}
-% \end{environment}
%
% \subsubsection{图表索引}
% \label{sec:threeindex}
@@ -3086,12 +3069,6 @@
% \begin{macro}{\listoftables}
% \begin{macro}{\listoftables*}
% 定义图表以及公式目录样式。
-% \changes{v2.5}{2006/05/18}{增加插图、表格和公式索引。}
-% \changes{v2.5}{2006/05/19}{为了让索引中能出现\textbf{图 xxx},不得不修改 \LaTeX
-% 内部命令 \cs{@caption}。}
-% \changes{v2.6.4}{2006/10/23}{增加 \cs{listoffigures*},\cs{listoftables*}。}
-% \changes{v4.5.1}{2009/01/06}{更优雅的插图/表格索引,避免跟 \pkg{caption} 包冲
-% 突。\cs{thu@listof} 相应修改。}
% \begin{macrocode}
\def\thu@starttoc#1{% #1: float type, prepend type name in \listof*** entry.
\let\oldnumberline\numberline
@@ -3103,7 +3080,7 @@
{\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{\ifthu@bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}}
+\renewcommand*\l@figure{\ifthu@degree@bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}}
\renewcommand\listoftables{\thu@listof{table}}
\let\l@table\l@figure
% \end{macrocode}
@@ -3113,20 +3090,16 @@
% \end{macro}
%
% \begin{macro}{\equcaption}
-% \changes{v2.6.2}{2006/06/19}{此命令配合 \pkg{amsmath} 命令基本可以满足所有
-% 公式需要。}
-% 本命令只是为了生成公式列表,所以这个 caption 是假的。如果要编号最好用
-% equation 环境,如果是其它编号环境,请手动添加 \cs{equcaption}。
+% 本命令只是为了生成公式列表,所以这个 caption 是假的。如果要编号最好用
+% \env{equation} 环境,如果是其它编号环境,请手动添加 \cs{equcaption}。
% 用法如下:
%
% \cs{equcaption}\marg{counter}
%
% \marg{counter} 指定出现在索引中的编号,一般取 \cs{theequation},如果你是用
-% \pkg{amsmath} 的 \cs{tag},那么默认是 \cs{tag} 的参数;除此之外可能需要你
+% \pkg{amsmath} 的 \cs{tag},那么默认是 \cs{tag} 的参数;除此之外可能需要你
% 手工指定。
%
-% \changes{v2.5}{2006/05/19}{将公式编号写入临时文件以便生成公式列表。}
-% \changes{v2.5.3}{2006/06/03}{取消 \cs{equcaption} 的参数}
% \begin{macrocode}
\def\ext@equation{loe}
\def\equcaption#1{%
@@ -3137,10 +3110,7 @@
%
% \begin{macro}{\listofequations}
% \begin{macro}{\listofequations*}
-% \LaTeX\ 默认没有公式索引,此处定义自己的 \cs{listofequations}。
-% \changes{v2.5}{2006/05/19}{增加公式索引命令。}
-% \changes{v2.5.1}{2006/05/26}{公式索引项 numwidth 增加。}
-% \changes{v2.6.4}{2006/10/23}{增加 \cs{listofequations*}。}
+% \LaTeX{} 默认没有公式索引,此处定义自己的 \cs{listofequations}。
% \begin{macrocode}
\newcommand\listofequations{\thu@listof{equation}}
\let\l@equation\l@figure
@@ -3152,14 +3122,9 @@
% \subsection{参考文献}
% \label{sec:ref}
%
-% \changes{v5.4.4}{2018/04/12}{参考文献列表的页码使用 hyphen 取代 en dash。}
-%
% \begin{macro}{\inlinecite}
% 依赖于 \pkg{natbib} 宏包,修改其中的命令。 旧命令 \cs{onlinecite} 依然可用。
-% \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼
-% 容性,\cs{onlinecite} 会保留。}
% \begin{macrocode}
-\newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}}
\DeclareRobustCommand\inlinecite{\@inlinecite}
\def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup}
\let\onlinecite\inlinecite
@@ -3171,30 +3136,36 @@
% 本科生要求固定行距 17pt,段前后间距 3pt。
%
% 复用 \pkg{natbib} 的 \texttt{thebibliography} 环境,调整距离。
-% \changes{v2.4}{2006/04/15}{参考文献间距调小一点,label 长度增加一点,以便让超过
-% 100 的参考文献更好地对齐。}
-% \changes{v2.5}{2006/05/13}{参考文献序号靠左,而不是靠右。}
-% \changes{v2.6.4}{2006/10/23}{调整参考文献标签宽度,使得条目增多时仍能对齐。}
-% \changes{v5.4.0}{2017/12/03}{基于 \pkg{natbib} 的环境调整距离兼容性更好。}
-% \changes{v5.4.4}{2018/04/14}{参考文献标号左对齐。}
% \begin{macrocode}
\renewcommand\bibsection{\thu@chapter*{\bibname}}
-\renewcommand\bibfont{\ifthu@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
+\renewcommand\bibfont{\ifthu@degree@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi}
\setlength\bibhang{2\ccwd}
\addtolength{\bibsep}{-0.7em}
\setlength{\labelsep}{0.4em}
\def\@biblabel#1{[#1]\hfill}
% \end{macrocode}
%
-% 两种引用样式:
-% \changes{v5.4.0}{2017/12/3}{\cs{bibliographystyle}\marg{newbib} will cause \cs{bibstyle@newbib} to
-% be called on THE NEXT LATEX RUN (via the aux file).}
-% \changes{v5.4.1}{2017/12/04}{bst 在 ctan 上不分路径,故加前缀。}
+% 几种种引用样式:
% \begin{macrocode}
\expandafter\newcommand\csname bibstyle@thuthesis-numeric\endcsname{%
\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
\expandafter\newcommand\csname bibstyle@thuthesis-author-year\endcsname{%
\bibpunct{(}{)}{;}{a}{,}{,}}
+\expandafter\newcommand\csname bibstyle@thuthesis-bachelor\endcsname{%
+ \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}}
+% \end{macrocode}
+%
+% 设置 \option{cite-style} 的接口:
+% \begin{macrocode}
+\@namedef{bibstyle@thuthesis-inline}{\bibpunct{[}{]}{,}{n}{,}{,}}
+\thu@define@key{
+ cite-style = {
+ name = cite@style,
+ code = {
+ \@nameuse{bibstyle@thuthesis-\thu@cite@style}
+ },
+ }
+}
% \end{macrocode}
%
% 下面修改 \pkg{natbib} 的引用格式,主要是将页码写在上标位置。
@@ -3241,7 +3212,6 @@
%
% 在顺序编码制下,\pkg{natbib} 只有在三个以上连续文献引用才会使用连接号,
% 这里修改为允许两个引用使用连接号。
-% \changes{v5.4.4}{2018/04/12}{允许连续两个文献引用使用连接号。}
% \begin{macrocode}
\patchcmd{\NAT@citexnum}{%
\ifx\NAT@last@yr\relax
@@ -3256,50 +3226,97 @@
%
% \subsection{附录}
% \label{sec:appendix}
-% \begin{environment}{appendix}
-% 主要给本科做外文翻译用。
+%
+% 研究生和本科生的写作指南均未规定附录的节标题是否加入目录,
+% 但是从示例来看,目录中只出现附录的 chapter 标题,
+% 不出现附录中的 section 及 subsection 的标题。
+% 部分院系(例如自动化系)的格式审查的老师甚至一致口头如此要求。
+% (\href{https://github.com/xueruini/thuthesis/pull/425}{\#425})
+% \begin{macrocode}
+\thu@define@key{
+ toc-depth = {
+ name = toc@depth,
+ code = {\addtocontents{toc}{\protect\setcounter{tocdepth}{\thu@toc@depth}}},
+ },
+}
+\g@addto@macro\appendix{\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}}
+% \end{macrocode}
+%
+% 本科生《写作指南》有独特的要求:附录 A 为外文资料的调研阅读报告或书面翻译,
+% 并且要分别附上独立的参考文献和外文资料的原文索引。
+% 所以这里定义 \env{survey} 和 \env{translation} 专门处理这两种情况,
+% 其中参考文献使用了 \pkg{bibunits} 宏包的功能。
+%
+% \begin{environment}{survey}
+% 外文资料的调研阅读报告。
% \begin{macrocode}
-\let\thu@appendix\appendix
-\renewenvironment{appendix}{%
+\newenvironment{survey}{%
+ \chapter{外文资料的调研阅读报告}%
+ \thu@setenglish
\let\title\thu@appendix@title
- \thu@appendix}{%
- \let\title\@gobble}
+ \let\maketitle\thu@appendix@maketitle
+ \renewcommand\bibname{参考文献}%
+ \let\bibsection\thu@appendix@bibsection
+ \renewcommand\@bibunitname{main-survey}%
+ \let\bibliographystyle\defaultbibliographystyle
+ \let\bibliography\thu@appendix@bibliography
+ \begin{bibunit}%
+}{%
+ \end{bibunit}%
+}
% \end{macrocode}
% \end{environment}
%
-% \begin{macro}{\title}
-% \changes{v5.2.0}{2016/01/11}{增加 \cs{title} 排版翻译标题。}
-% 本科外文翻译文章的标题,用法:\cs{title}\marg{资料标题}。这个命令只能在附录环
-% 境下使用。
+% \begin{environment}{translation}
+% 外文资料的书面翻译。
% \begin{macrocode}
-\let\title\@gobble
-\newcommand{\thu@appendix@title}[1]{%
- \begin{center}
- \xiaosi[1.667] #1
- \end{center}}
+\newenvironment{translation}{%
+ \chapter{外文资料的书面翻译}%
+ \thu@setenglish
+ \let\title\thu@appendix@title
+ \let\maketitle\thu@appendix@maketitle
+ \renewcommand\bibname{书面翻译对应的原文索引}%
+ \let\bibsection\thu@appendix@bibsection
+ \renewcommand\@bibunitname{main-translation}%
+ \let\bibliographystyle\defaultbibliographystyle
+ \let\bibliography\thu@appendix@bibliography
+ \begin{bibunit}%
+}{%
+ \end{bibunit}%
+}
% \end{macrocode}
-% \end{macro}
+% \end{environment}
%
-% \begin{environment}{translationbib}
-% \changes{v5.2.0}{2016/01/11}{增加翻译文献环境 \env{translationbib}。}
-% 外文资料的参考文用宋体五号字,取固定行距17pt,段前后3pt。
+% 调研阅读报告需要独立的标题,这里仿照了标准文档类的用法 \cs{title}, \cs{maketitle}。
% \begin{macrocode}
-\newlist{translationbib}{enumerate}{1}
-\setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp,
- leftmargin=10mm,labelsep=!,before=\vspace{0.5\baselineskip}\wuhao[1.3]}
+\DeclareRobustCommand\thu@appendix@title[1]{\gdef\thu@appendix@@title{#1}}
+\newcommand\thu@appendix@maketitle{%
+ \par
+ \begin{center}%
+ \xiaosi[1.667]\thu@appendix@@title
+ \end{center}%
+ \par
+}
% \end{macrocode}
-% \end{environment}
+%
+% 调研阅读报告的参考文献(或书面翻译对应的外文资料的原文索引)标题用宋体小四号字,段前 20pt,段后 6pt,行距 20pt。
+% \begin{macrocode}
+\newcommand\thu@appendix@bibsection{%
+ \par
+ \vskip 20bp%
+ \begingroup
+ \centering
+ \xiaosi[1.667]\bibname\par
+ \endgroup
+ \vskip 6bp%
+}%
+\newcommand\thu@appendix@bibliography[1]{\putbib[#1]}
+% \end{macrocode}
+%
%
% \subsection{个人简历}
%
% \begin{environment}{resume}
-% \changes{v1.5}{2005/12/16}{增加个人简历章节的命令,去掉主文件中需要重新
-% 定义 \cs{cleardoublepage} 和自己写 \cs{markboth},\cs{addcontentsline} 的部分。}
-% \changes{v2.0}{2005/12/18}{最后决定将 resume 定义为环境。这样与前面的主要符号
-% 表、致谢等对应。}
-% \changes{v2.5.1}{2006/05/23}{教务处和研究生院非要搞的不一样!}
-% \changes{v2.5.2}{2006/05/29}{研究生的个人介绍要右开。}
-% \changes{v4.6}{2011/05/02}{支持可选参数,自己定义简历章节标题。}
% 个人简历发表文章等。
% \begin{macrocode}
\newenvironment{resume}[1][\thu@resume@title]{%
@@ -3329,8 +3346,6 @@
% 二者分别通过两个环境 \env{publications} 和 \env{achievements} 罗
% 列。
%
-% \changes{v5.0.0}{2015/04/18}{博士后就不提在学期间了,不合适(\#100)}
-% \changes{v5.0.0}{2015/05/17}{让简历部分更符合格式指南和示例文件(\#122)}
% \begin{macrocode}
\newlist{publications}{enumerate}{1}
\setlist[publications]{label=[\arabic*],align=left,nosep,itemsep=8bp,
@@ -3343,7 +3358,6 @@
% \end{environment}
%
% \begin{macro}{\publicationskip}
-% \changes{v5.2.0}{2016/01/11}{增加 \cs{publicationskip}。}
% \env{publications} 环境可以连续出现多次,第二类论文列表前后要空一行,使
% 用 \cs{publicationskip}。
% \begin{macrocode}
@@ -3358,9 +3372,67 @@
\newcommand\thu@atendpackage{\csname ctex_at_end_package:nn\endcsname}
% \end{macrocode}
%
+% \subsubsection{\pkg{hyperref} 宏包}
+%
+% \begin{macrocode}
+\thu@atendpackage{hyperref}{
+ \hypersetup{
+ linktoc = all,
+ bookmarksnumbered = true,
+ bookmarksopen = true,
+ bookmarksopenlevel = 1,
+ unicode = true,
+ psdextra = true,
+ breaklinks = true,
+ plainpages = false,
+ hidelinks,
+ }%
+ \newcounter{thu@bookmark}
+ \renewcommand\thu@pdfbookmark[2]{%
+ \phantomsection
+ \stepcounter{thu@bookmark}%
+ \pdfbookmark[#1]{#2}{thuchapter.\thethu@bookmark}%
+ }
+ \pdfstringdefDisableCommands{
+ \let\\\@empty
+ \let\hspace\@gobble
+ }%
+% \end{macrocode}
+%
+% \pkg{hyperref} 与 \pkg{unicode-math} 存在一些兼容性问题,见
+% \href{https://github.com/ustctug/ustcthesis/issues/223}{%
+% ustctug/ustcthesis\#223},
+% \href{https://github.com/ho-tex/hyperref/pull/90}{ho-tex/hyperref\#90} 和
+% \href{https://github.com/ustctug/ustcthesis/issues/235}{%
+% ustctug/ustcthesis/\#235}。
+% \begin{macrocode}
+ \@ifpackagelater{hyperref}{2019/04/27}{}{%
+ \g@addto@macro\psdmapshortnames{\let\mu\textmu}
+ }%
+ \AtBeginDocument{%
+ \ifthu@language@chinese
+ \hypersetup{
+ pdftitle = \thu@title,
+ pdfauthor = \thu@author,
+ pdfsubject = \thu@degree@name,
+ pdfkeywords = \thu@keywords,
+ }%
+ \else
+ \hypersetup{
+ pdftitle = \thu@title@en,
+ pdfauthor = \thu@author@en,
+ pdfsubject = \thu@degree@name@en,
+ pdfkeywords = \thu@keywords@en,
+ }%
+ \fi
+ \hypersetup{
+ pdfcreator={\thuthesis-v\version}}
+ }%
+}
+% \end{macrocode}
+%
% \subsubsection{\pkg{nomencl} 宏包}
%
-% \changes{v5.5.0}{2018/12/09}{增加 \pkg{nomencl} 宏包的支持。}
% \begin{macrocode}
\thu@atendpackage{nomencl}{
\let\nomname\thu@denotation@name
@@ -3369,14 +3441,80 @@
}
% \end{macrocode}
%
+% \subsubsection{\pkg{longtable} 宏包}
+%
+% 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号。
+% \begin{macrocode}
+\AtBeginDocument{%
+ \let\thu@LT@array\LT@array
+ \def\LT@array{\dawu[1.5]\thu@LT@array} % set default font size
+}
+% \end{macrocode}
+%
+% \subsubsection{\pkg{siunitx} 宏包}
+%
+% \begin{macrocode}
+\thu@atendpackage{siunitx}{%
+ \sisetup{
+ group-minimum-digits = 4,
+ separate-uncertainty = true,
+ inter-unit-product = \ensuremath{{}\cdot{}},
+ }
+ \newcommand\thu@set@siunitx@language{%
+ \ifthu@language@chinese
+ \sisetup{
+ list-final-separator = { 和 },
+ list-pair-separator = { 和 },
+ range-phrase = {~},
+ }%
+ \else
+ \ifthu@language@english
+ \sisetup{
+ list-final-separator = { and },
+ list-pair-separator = { and },
+ range-phrase = { to },
+ }%
+ \fi
+ \fi
+ }
+ \thu@set@siunitx@language
+ \thu@addto{language}{\thu@set@siunitx@language}
+}
+% \end{macrocode}
+%
+% \subsubsection{\pkg{ntheorem} 宏包}
+%
+% 定理标题使用黑体,正文使用宋体,冒号隔开。
+% \begin{macrocode}
+\thu@atendpackage{ntheorem}{%
+ \theorembodyfont{\normalfont}%
+ \theoremheaderfont{\normalfont\sffamily}%
+ \theoremsymbol{\ensuremath{\square}}%
+ \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]%
+}
+% \end{macrocode}
+%
% \subsection{书脊}
-% \label{sec:shuji}
-% \begin{macro}{\shuji}
+% \label{sec:spine}
+% \begin{macro}{\spine}
% 单独使用书脊命令会在新的一页产生竖排书脊。
-% \changes{v4.5}{2009/01/04}{简化代码,同时支持 \XeLaTeX。}
-% \changes{v5.0.0}{2015/12/21}{扩展 \cs{shuji}\oarg{标题}\oarg{作者}。}
% \begin{macrocode}
-\NewDocumentCommand{\shuji}{O{\thu@ctitle} O{\thu@cauthor}}{%
+\NewDocumentCommand{\spine}{O{\thu@title} O{\thu@author}}{%
\newpage\thispagestyle{empty}%
\fangsong\addCJKfontfeatures*{RawFeature={vertical:}}
\xiaosan\ziju{0.4}%
@@ -3389,7 +3527,6 @@
% \label{sec:other}
%
% 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。
-% \changes{v2.5}{2006/05/13}{不用 \cs{CJKcaption},在导言区直接引入配置文件。}
% \begin{macrocode}
\AtEndOfClass{\sloppy}
%</cls>
@@ -3402,13 +3539,15 @@
\ProvidesPackage{dtx-style}
\RequirePackage{hypdoc}
\RequirePackage{ifthen}
+\RequirePackage{fontspec}[2017/01/20]
+\RequirePackage{amsmath}
+\RequirePackage{unicode-math}
\RequirePackage[UTF8,scheme=chinese]{ctex}
-\RequirePackage{newpxtext}
-\RequirePackage{newpxmath}
\RequirePackage[
top=2.5cm, bottom=2.5cm,
left=4cm, right=2cm,
headsep=3mm]{geometry}
+\RequirePackage{hologo}
\RequirePackage{array,longtable,booktabs}
\RequirePackage{listings}
\RequirePackage{fancyhdr}
@@ -3417,9 +3556,54 @@
\RequirePackage{etoolbox}
\RequirePackage{metalogo}
-\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{%
+\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{
+ \setmainfont{Palatino}
+ \setsansfont[Scale=MatchLowercase]{Helvetica}
+ \setmonofont[Scale=MatchLowercase]{Menlo}
\xeCJKsetwidth{‘’“”}{1em}
-}{}
+}{
+ \setmainfont[
+ Extension = .otf,
+ UprightFont = *-regular,
+ BoldFont = *-bold,
+ ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic,
+ ]{texgyrepagella}
+ \setsansfont[
+ Extension = .otf,
+ UprightFont = *-regular,
+ BoldFont = *-bold,
+ ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic,
+ ]{texgyreheros}
+ \setmonofont[
+ Extension = .otf,
+ UprightFont = *-regular,
+ BoldFont = *-bold,
+ ItalicFont = *-italic,
+ BoldItalicFont = *-bolditalic,
+ Scale = MatchLowercase,
+ ]{texgyrecursor}
+}
+\unimathsetup{
+ math-style=ISO,
+ bold-style=ISO,
+}
+\IfFontExistsTF{XITSMath-Regular.otf}{
+ \setmathfont[
+ Extension = .otf,
+ BoldFont = XITSMath-Bold,
+ StylisticSet = 8,
+ ]{XITSMath-Regular}
+ \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf}
+}{
+ \setmathfont[
+ Extension = .otf,
+ BoldFont = *bold,
+ StylisticSet = 8,
+ ]{xits-math}
+ \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf}
+}
\colorlet{thu@macro}{blue!60!black}
\colorlet{thu@env}{blue!70!black}
@@ -3474,7 +3658,7 @@
breakautoindent=true,
columns=flexible,
keepspaces=true,
- gobble=2,
+ gobble=4,
framesep=3pt,
rulesep=1pt,
framerule=1pt,
diff --git a/macros/latex/contrib/thuthesis/thuthesis.ins b/macros/latex/contrib/thuthesis/thuthesis.ins
index 7912817390..bd8c34edef 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.ins
+++ b/macros/latex/contrib/thuthesis/thuthesis.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2005-2019 by Ruini Xue <xueruini@gmail.com>
+%% Copyright (C) 2005-2020 by Ruini Xue <xueruini@gmail.com>
%%
%% This file is part of the ThuThesis package project.
%% ---------------------------------------------------
@@ -57,6 +57,8 @@ through LaTeX.
\Msg{* \space\space thuthesis.cls}
\Msg{* \space\space thuthesis-author-year.bst}
\Msg{* \space\space thuthesis-numeric.bst}
+ \Msg{* \space\space thuthesis-bachelor.bst}
+ \Msg{* \space\space tsinghua.pdf}
\Msg{*}
\Msg{* To produce the documentation run the files ending with}
\Msg{* `.dtx' through LaTeX.}
diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf
index 9eb21cceea..6be654adc5 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/thuthesis.sty b/macros/latex/contrib/thuthesis/thuthesis.sty
deleted file mode 100644
index 87585f5396..0000000000
--- a/macros/latex/contrib/thuthesis/thuthesis.sty
+++ /dev/null
@@ -1,50 +0,0 @@
-\ProvidesPackage{thuthesis}[2007/11/30 4.1 put any packages you would like to use here]
-
-% 处理数学公式中的黑斜体的宏包
-% \RequirePackage{bm}
-
-% 不同于 \mathcal \mathfrak 之类的英文花体字体
-% \RequirePackage{mathrsfs}
-
-% 表格中支持跨行
-\RequirePackage{multirow}
-
-% 固定宽度的表格
-\RequirePackage{tabularx}
-
-% 表格中的反斜线
-\RequirePackage{diagbox}
-
-% 确定浮动对象的位置,可以使用 H,强制将浮动对象放到这里(可能效果很差)
-\RequirePackage{float}
-
-% 浮动图形控制宏包。
-% 允许上一个 section 的浮动图形出现在下一个 section 的开始部分
-% 该宏包提供处理浮动对象的 \FloatBarrier 命令,使所有未处
-% 理的浮动图形立即被处理。这三个宏包仅供参考,未必使用:
-% \RequirePackage[below]{placeins}
-% \RequirePackage{floatflt} % 图文混排用宏包
-% \RequirePackage{rotating} % 图形和表格的控制旋转
-
-% 给自定义的宏后面自动加空白
-% \RequirePackage{xspace}
-
-% 借用 ltxdoc 里面的几个命令。
-\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
-\def\cmd@to@cs#1#2{\char\number`#2\relax}
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-
-\newcommand*{\meta}[1]{{%
- \ensuremath{\langle}\rmfamily\itshape#1\/\ensuremath{\rangle}}}
-\providecommand\marg[1]{%
- {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
-\providecommand\oarg[1]{%
- {\ttfamily[}\meta{#1}{\ttfamily]}}
-\providecommand\parg[1]{%
- {\ttfamily(}\meta{#1}{\ttfamily)}}
-\providecommand\pkg[1]{{\sffamily#1}}
-
-% 定义自己常用的东西
-\newcommand{\china}{中华人民共和国}
-
-\endinput