From b3cf6973881fee79b4abb0be96dcfd5330bfeeea Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 10 Jul 2020 03:02:35 +0000 Subject: CTAN sync 202007100302 --- macros/latex/contrib/thuthesis/CHANGELOG.md | 15 +- .../contrib/thuthesis/data/appendix-survey.tex | 7 +- macros/latex/contrib/thuthesis/data/chap01.tex | 18 +- macros/latex/contrib/thuthesis/math_commands.tex | 292 ------------------ macros/latex/contrib/thuthesis/spine.pdf | Bin 17265 -> 17319 bytes macros/latex/contrib/thuthesis/thusetup.tex | 42 ++- .../contrib/thuthesis/thuthesis-author-year.bst | 335 +++++++++++++++++---- .../latex/contrib/thuthesis/thuthesis-bachelor.bst | 331 ++++++++++++++++---- .../latex/contrib/thuthesis/thuthesis-example.pdf | Bin 877114 -> 875812 bytes .../latex/contrib/thuthesis/thuthesis-numeric.bst | 331 ++++++++++++++++---- macros/latex/contrib/thuthesis/thuthesis.dtx | 58 ++-- macros/latex/contrib/thuthesis/thuthesis.pdf | Bin 1075310 -> 1080107 bytes 12 files changed, 883 insertions(+), 546 deletions(-) delete mode 100644 macros/latex/contrib/thuthesis/math_commands.tex (limited to 'macros/latex/contrib/thuthesis') diff --git a/macros/latex/contrib/thuthesis/CHANGELOG.md b/macros/latex/contrib/thuthesis/CHANGELOG.md index 4ccfabe39f..336c697e0a 100644 --- a/macros/latex/contrib/thuthesis/CHANGELOG.md +++ b/macros/latex/contrib/thuthesis/CHANGELOG.md @@ -6,6 +6,18 @@ ## [Unreleased] +## [v6.1.3] - 2020-07-09 +### Added +- 新增选项 `statement-page-style = empty / plain` 同时控制声明的页眉和页脚。 + +### Fixed +- `\record` 命令中,如果 `output` 配置为 `print`,则强制进行 `\cleardoublepage`,保证记录表独立成页。 +- 修正了在导言区设置论文主要语言无效的问题(#560)。 +- 修正了研究生插入扫描版声明页时的页眉。 + +### Deprecated +- 选项 `statement-page-number` 已过时。 + ## [v6.1.2] - 2020-06-14 ### Changed - `\statement` 和 `\copyrightpage` 命令都会在 PDF 中生成相应位置的书签。 @@ -593,7 +605,8 @@ -[Unreleased]: https://github.com/tuna/thuthesis/compare/v6.1.2...HEAD +[Unreleased]: https://github.com/tuna/thuthesis/compare/v6.1.3...HEAD +[v6.1.3]: https://github.com/tuna/thuthesis/compare/v6.1.2...v6.1.3 [v6.1.2]: https://github.com/tuna/thuthesis/compare/v6.1.1...v6.1.2 [v6.1.1]: https://github.com/tuna/thuthesis/compare/v6.1.0...v6.1.1 [v6.1.0]: https://github.com/tuna/thuthesis/compare/v6.0.2...v6.1.0 diff --git a/macros/latex/contrib/thuthesis/data/appendix-survey.tex b/macros/latex/contrib/thuthesis/data/appendix-survey.tex index 5b6e24a896..a3c5ef6205 100644 --- a/macros/latex/contrib/thuthesis/data/appendix-survey.tex +++ b/macros/latex/contrib/thuthesis/data/appendix-survey.tex @@ -32,14 +32,13 @@ as follows, 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\} +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. @@ -134,8 +133,8 @@ concerned with analyzing the structure of problems. \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 +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 diff --git a/macros/latex/contrib/thuthesis/data/chap01.tex b/macros/latex/contrib/thuthesis/data/chap01.tex index 6c2e757db2..2dfbcf4ec0 100644 --- a/macros/latex/contrib/thuthesis/data/chap01.tex +++ b/macros/latex/contrib/thuthesis/data/chap01.tex @@ -58,10 +58,9 @@ \subsection{基本表格} \label{sec:basictable} -模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtable},命 -令有一个 \cs{hlinewd}。三线表可以用 \pkg{booktabs} 提供 -的 \cs{toprule}、\cs{midrule} 和 \cs{bottomrule}。它们与 \pkg{longtable} 能很好的 -配合使用。如果表格比较简单的话可以直接用命令 \cs{hlinewd}\marg{width} 控制。 +模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtable}。 +三线表可以用 \pkg{booktabs} 提供 的 \cs{toprule}、\cs{midrule} 和 \cs{bottomrule}。 +它们与 \pkg{longtable} 能很好的配合使用。 \begin{table}[htb] \centering \begin{threeparttable}[b] @@ -105,7 +104,7 @@ \begin{minipage}[t]{0.8\textwidth} \begin{tabularx}{\linewidth}{|l|X|X|X|X|} \hline - \multirow{2}*{\diagbox[width=5em]{x}{y}} & \multicolumn{2}{c|}{First Half} & \multicolumn{2}{c|}{Second Half}\\\cline{2-5} + \multirow{2}*{} & \multicolumn{2}{c|}{First Half} & \multicolumn{2}{c|}{Second Half}\\\cline{2-5} & 1st Qtr &2nd Qtr&3rd Qtr&4th Qtr \\ \hline East$^{*}$ & 20.4& 27.4& 90& 20.4 \\ West$^{**}$ & 30.6 & 38.6 & 34.6 & 31.6 \\ \hline @@ -116,9 +115,8 @@ \end{minipage} \end{table} -此外,表~\ref{tab:tabexamp1} 同时还演示了另外两个功能:1)通过 \pkg{tabularx} 的 - \texttt{|X|} 扩展实现表格自动放大;2)通过命令 \cs{diagbox} 在表头部分 -插入反斜线。 +此外,表~\ref{tab:tabexamp1} 同时还演示了通过 \pkg{tabularx} 的 + \texttt{|X|} 扩展实现表格自动放大功能。 为了使我们的例子更接近实际情况,我会在必要的时候插入一些“无关”文字,以免太多图 表同时出现,导致排版效果不太理想。第一个出场的当然是我的最爱:风流潇洒、骏马绝尘、 @@ -405,7 +403,6 @@ x&\equiv y+1\pod{m^2} 乾,反复道也。或跃在渊,进无咎也。飞龙在天,大人造也。亢龙有悔,盈不可久也。用九, 天德不可为首也。    -\newcommand\dif{\mathop{}\!\mathrm{d}} \begin{lemma} 《猫和老鼠》是我最爱看的动画片。 \begin{multline*}%\tag*{[a]} % 这个不出现在索引中 @@ -540,9 +537,8 @@ p(y|\vx) = \frac{p(\vx,y)}{p(\vx)}= \end{equation} 论文里面公式越多,\TeX{} 就越 happy。再看一个 \pkg{amsmath} 的例子: -\newcommand{\envert}[1]{\left\lvert#1\right\rvert} \begin{equation}\label{detK2} -\det\mK(t=1,t_1,\dots,t_n)=\sum_{I\in\vn}(-1)^{\envert{I}} +\det\mK(t=1,t_1,\dots,t_n)=\sum_{I\in\vn}(-1)^{\abs{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/math_commands.tex b/macros/latex/contrib/thuthesis/math_commands.tex deleted file mode 100644 index e3636b612a..0000000000 --- a/macros/latex/contrib/thuthesis/math_commands.tex +++ /dev/null @@ -1,292 +0,0 @@ -% !TeX root = ./thuthesis-example.tex - -% 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/spine.pdf b/macros/latex/contrib/thuthesis/spine.pdf index dabd941d2c..f4e9ef526e 100644 Binary files a/macros/latex/contrib/thuthesis/spine.pdf and b/macros/latex/contrib/thuthesis/spine.pdf differ diff --git a/macros/latex/contrib/thuthesis/thusetup.tex b/macros/latex/contrib/thuthesis/thusetup.tex index c1545ad811..bba4722092 100644 --- a/macros/latex/contrib/thuthesis/thusetup.tex +++ b/macros/latex/contrib/thuthesis/thusetup.tex @@ -89,11 +89,11 @@ % include-spine = false, % - % 生成的声明页是否要插入页码(默认 false) + % 生成的声明页是否要插入页眉和页脚(默认 empty) % 仅在需要进行电子签名时,才需要打开这一选项 - % 插入的扫描声明页总是会有页码,不受这一选项影响 + % 插入的扫描声明页总是会生成页眉(研究生)和页脚,不受这一选项影响 % - statement-page-number = false, + % statement-page-style = plain, % % 密级和年限 % 秘密, 机密, 绝密 @@ -126,9 +126,6 @@ \usepackage{threeparttable} \pretocmd{\TPTnoteSettings}{\footnotesize}{}{} -% 表格中的反斜线 -\usepackage{diagbox} - % 确定浮动对象的位置,可以使用 H,强制将浮动对象放到这里(可能效果很差) \usepackage{float} @@ -148,29 +145,26 @@ % 给自定义的宏后面自动加空白 % \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{薛瑞尼} +% 数学命令 +\newcommand\dif{\mathop{}\!\mathrm{d}} % 微分符号 +\newcommand\real{{\mathbf{R}}} % 实数集 +\newcommand\abs[1]{\lvert#1\rvert} +\newcommand\VECTOR{\symbf} % 向量 +\newcommand\MATRIX{\symbf} % 矩阵 +\newcommand\vn{{\VECTOR{n}}} +\newcommand\vx{{\VECTOR{x}}} +\newcommand\mA{{\MATRIX{A}}} +\newcommand\mK{{\MATRIX{K}}} + +% 借用 ltxdoc 里面的几个命令方便写文档。 +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} +\providecommand\pkg[1]{{\sffamily#1}} + % hyperref 宏包在最后调用 \usepackage{hyperref} diff --git a/macros/latex/contrib/thuthesis/thuthesis-author-year.bst b/macros/latex/contrib/thuthesis/thuthesis-author-year.bst index 370aa0520f..071d19764f 100644 --- a/macros/latex/contrib/thuthesis/thuthesis-author-year.bst +++ b/macros/latex/contrib/thuthesis/thuthesis-author-year.bst @@ -1,5 +1,5 @@ %% -%% This is file `versions/thu/thuthesis-author-year.bst', +%% This is file `variants/thu/thuthesis-author-year.bst', %% generated with the docstrip utility. %% %% The original source files were: @@ -8,9 +8,9 @@ %% ------------------------------------------------------------------- %% GB/T 7714-2015 BibTeX Style %% https://github.com/CTeX-org/gbt7714-bibtex-style -%% Version: 2019/03/21 v1.1.1 +%% Version: 2020/06/08 v2.0.2 %% ------------------------------------------------------------------- -%% Copyright (C) 2016-2019 by Zeping Lee +%% Copyright (C) 2016-2020 by Zeping Lee %% ------------------------------------------------------------------- %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -26,15 +26,23 @@ INTEGERS { period.between.author.year sentence.case.title link.title + title.in.journal show.mark + space.before.mark + show.medium.type slash.for.extraction in.booktitle - italic.jounal + abbreviate.journal + italic.journal bold.journal.volume show.missing.address.publisher + only.start.page + show.urldate show.url show.doi + show.preprint show.note + show.english.translation lang.zh.order lang.ja.order lang.en.order @@ -49,15 +57,23 @@ FUNCTION {load.config} #1 'period.between.author.year := #1 'sentence.case.title := #0 'link.title := + #1 'title.in.journal := #1 'show.mark := + #1 'space.before.mark := + #1 'show.medium.type := #1 'slash.for.extraction := #0 'in.booktitle := - #0 'italic.jounal := + #0 'abbreviate.journal := + #0 'italic.journal := #0 'bold.journal.volume := #0 'show.missing.address.publisher := + #0 'only.start.page := + #1 'show.urldate := #1 'show.url := #0 'show.doi := + #0 'show.preprint := #0 'show.note := + #0 'show.english.translation := #1 'lang.zh.order := #2 'lang.ja.order := #3 'lang.en.order := @@ -67,12 +83,14 @@ FUNCTION {load.config} ENTRY { address + archivePrefix author booktitle date doi edition editor + eprint howpublished institution journal @@ -88,13 +106,14 @@ ENTRY school series title + translation translator url urldate volume year } - { entry.lang entry.is.electronic entry.numbered } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } { label extra.label sort.label short.list entry.mark entry.url } INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } @@ -270,6 +289,12 @@ FUNCTION {output.check} FUNCTION {fin.entry} { add.period$ write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ newline$ } @@ -474,15 +499,20 @@ FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := + "" numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + nameptr #1 > + { ", " * } + 'skip$ + if$ nameptr max.num.authors > - { bbl.et.al + { bbl.et.al * #1 'namesleft := } { t "others" = - { bbl.et.al } + { bbl.et.al * } { t get.str.lang 'name.lang := name.lang lang.en = { t #1 "{vv~}{ll}{~f{~}}" format.name$ @@ -494,14 +524,11 @@ FUNCTION {format.names} } { t #1 "{ll}{ff}" format.name$ } if$ + * } if$ } if$ - nameptr #1 > - { ", " swap$ * * } - 'skip$ - if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } @@ -861,12 +888,51 @@ FUNCTION {format.series.vol.num.booktitle} if$ } -FUNCTION {format.journal} -{ journal - italic.jounal entry.lang lang.en = and - 'italicize +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } 'skip$ if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {format.journal} +{ journal empty$ not + { journal + abbreviate.journal + 'abbreviate + 'skip$ + if$ + italic.journal entry.lang lang.en = and + 'italicize + 'skip$ + if$ + } + { "" } + if$ } FUNCTION {set.entry.mark} @@ -885,15 +951,24 @@ FUNCTION {format.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 - { entry.mark "/OL" * 'entry.mark := } - 'skip$ + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } if$ } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " [" entry.mark * "]" * } + { "\allowbreak[" entry.mark * "]" * } if$ - " [" entry.mark * "]" * } { "" } if$ @@ -1075,7 +1150,9 @@ FUNCTION {format.editdate} } FUNCTION {format.urldate} -{ urldate empty$ not entry.is.electronic and +{ urldate empty$ not + show.urldate show.url and is.pure.electronic or and + url empty$ not and { "\allowbreak[" urldate * "]" * } { "" } if$ @@ -1106,6 +1183,18 @@ FUNCTION {format.pages} if$ } +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + FUNCTION {format.journal.volume} { volume empty$ not { bold.journal.volume @@ -1127,7 +1216,9 @@ FUNCTION {format.journal.number} FUNCTION {format.journal.pages} { pages empty$ { "" } - { ":\penalty0 " pages hyphenate * } + { ": " + format.extracted.pages * + } if$ } @@ -1199,9 +1290,15 @@ FUNCTION {check.url} } FUNCTION {format.url} +{ entry.url +} + +FUNCTION {output.url} { entry.url empty$ not - { new.block entry.url } - { "" } + { new.block + entry.url output + } + 'skip$ if$ } @@ -1235,7 +1332,7 @@ FUNCTION {is.in.url} FUNCTION {format.doi} { "" - doi empty$ not show.doi and + doi empty$ not { "" 's := doi 't := #0 'numnames := @@ -1263,11 +1360,16 @@ FUNCTION {format.doi} t #2 global.max$ substring$ 't := } while$ - 's := - s empty$ not - { new.block s } - { "" } - if$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output } 'skip$ if$ @@ -1292,6 +1394,27 @@ FUNCTION {check.electronic} if$ } +FUNCTION {format.eprint} +{ "" + archivePrefix empty$ not + { archivePrefix * ": " * + "\eprint{https://" * + archivePrefix "l" change.case$ * ".org/abs/" * eprint * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + FUNCTION {format.note} { note empty$ not show.note and { note } @@ -1299,6 +1422,30 @@ FUNCTION {format.note} if$ } +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + FUNCTION {empty.misc.check} { author empty$ title empty$ year empty$ @@ -1311,6 +1458,7 @@ FUNCTION {empty.misc.check} FUNCTION {monograph} { output.bibitem + output.translation author empty$ not { format.authors } { editor empty$ not @@ -1339,8 +1487,8 @@ FUNCTION {monograph} format.address.publisher output format.pages bbl.colon output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1348,6 +1496,7 @@ FUNCTION {monograph} FUNCTION {incollection} { output.bibitem + output.translation format.authors output author format.key output period.between.author.year @@ -1369,10 +1518,10 @@ FUNCTION {incollection} format.edition output new.block format.address.publisher output - format.pages bbl.colon output.after + format.extracted.pages bbl.colon output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1380,6 +1529,7 @@ FUNCTION {incollection} FUNCTION {periodical} { output.bibitem + output.translation format.authors output author format.key output period.between.author.year @@ -1396,8 +1546,8 @@ FUNCTION {periodical} new.block format.address.publisher output format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1405,6 +1555,7 @@ FUNCTION {periodical} FUNCTION {article} { output.bibitem + output.translation format.authors output author format.key output period.between.author.year @@ -1413,17 +1564,21 @@ FUNCTION {article} if$ format.year "year" output.check new.block - format.title "title" output.check - "J" set.entry.mark - format.mark "" output.after - new.block + title.in.journal + { format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ format.journal "journal" output.check format.journal.volume output format.journal.number "" output.after format.journal.pages "" output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1431,6 +1586,7 @@ FUNCTION {article} FUNCTION {patent} { output.bibitem + output.translation format.authors output author format.key output period.between.author.year @@ -1445,8 +1601,8 @@ FUNCTION {patent} new.block format.date "year" output.check format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1455,7 +1611,9 @@ FUNCTION {patent} FUNCTION {electronic} { #1 #1 check.electronic #1 'entry.is.electronic := + #1 'is.pure.electronic := output.bibitem + output.translation format.authors output author format.key output period.between.author.year @@ -1472,8 +1630,49 @@ FUNCTION {electronic} format.pages bbl.colon output.after format.editdate "" output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + bbl.anonymous + } + if$ + } + if$ + output + period.between.author.year + 'new.sentence + 'skip$ + if$ + format.year "year" output.check + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "Z" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + output.eprint + format.pages bbl.colon output.after + format.urldate "" output.after + output.url new.block format.note output fin.entry @@ -1486,10 +1685,14 @@ FUNCTION {misc} 'incollection { publisher empty$ not 'monograph - { entry.is.electronic - 'electronic - { "Z" set.entry.mark - monograph + { eprint empty$ not show.preprint and + 'preprint + { entry.is.electronic + 'electronic + { "Z" set.entry.mark + monograph + } + if$ } if$ } @@ -1589,10 +1792,7 @@ FUNCTION {techreport} misc } -FUNCTION {unpublished} -{ "Z" set.entry.mark - misc -} +FUNCTION {unpublished} { misc } FUNCTION {default.type} { misc } @@ -1918,6 +2118,7 @@ FUNCTION {presort} { set.entry.lang set.entry.numbered show.url show.doi check.electronic + #0 'is.pure.electronic := calc.label label sortify " " @@ -2007,19 +2208,25 @@ FUNCTION {begin.bib} write$ newline$ "\providecommand{\url}[1]{#1}" write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" write$ newline$ " \urlstyle{same}\fi" write$ newline$ - show.doi - { "\providecommand{\href}[2]{\url{#2}}" + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" write$ newline$ - "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}" + "\fi" write$ newline$ } - 'skip$ - if$ -} FUNCTION {end.bib} { newline$ diff --git a/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst b/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst index 412acbe2c2..bb91ba5c09 100644 --- a/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst +++ b/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst @@ -1,5 +1,5 @@ %% -%% This is file `versions/thu/thuthesis-bachelor.bst', +%% This is file `variants/thu/thuthesis-bachelor.bst', %% generated with the docstrip utility. %% %% The original source files were: @@ -8,9 +8,9 @@ %% ------------------------------------------------------------------- %% GB/T 7714-2015 BibTeX Style %% https://github.com/CTeX-org/gbt7714-bibtex-style -%% Version: 2019/03/21 v1.1.1 +%% Version: 2020/06/08 v2.0.2 %% ------------------------------------------------------------------- -%% Copyright (C) 2016-2019 by Zeping Lee +%% Copyright (C) 2016-2020 by Zeping Lee %% ------------------------------------------------------------------- %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -26,15 +26,23 @@ INTEGERS { period.between.author.year sentence.case.title link.title + title.in.journal show.mark + space.before.mark + show.medium.type slash.for.extraction in.booktitle - italic.jounal + abbreviate.journal + italic.journal bold.journal.volume show.missing.address.publisher + only.start.page + show.urldate show.url show.doi + show.preprint show.note + show.english.translation } FUNCTION {load.config} @@ -43,25 +51,35 @@ FUNCTION {load.config} #3 'max.num.authors := #1 'sentence.case.title := #0 'link.title := + #1 'title.in.journal := #1 'show.mark := + #1 'space.before.mark := + #1 'show.medium.type := #1 'slash.for.extraction := #0 'in.booktitle := - #0 'italic.jounal := + #0 'abbreviate.journal := + #0 'italic.journal := #0 'bold.journal.volume := #0 'show.missing.address.publisher := + #0 'only.start.page := + #1 'show.urldate := #1 'show.url := #1 'show.doi := + #0 'show.preprint := #0 'show.note := + #0 'show.english.translation := } ENTRY { address + archivePrefix author booktitle date doi edition editor + eprint howpublished institution journal @@ -77,13 +95,14 @@ ENTRY school series title + translation translator url urldate volume year } - { entry.lang entry.is.electronic entry.numbered } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } { label extra.label sort.label short.list entry.mark entry.url } INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } @@ -259,6 +278,12 @@ FUNCTION {output.check} FUNCTION {fin.entry} { add.period$ write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ newline$ } @@ -463,15 +488,20 @@ FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := + "" numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + nameptr #1 > + { ", " * } + 'skip$ + if$ nameptr max.num.authors > - { bbl.et.al + { bbl.et.al * #1 'namesleft := } { t "others" = - { bbl.et.al } + { bbl.et.al * } { t get.str.lang 'name.lang := name.lang lang.en = { t #1 "{vv~}{ll}{~f{~}}" format.name$ @@ -483,14 +513,11 @@ FUNCTION {format.names} } { t #1 "{ll}{ff}" format.name$ } if$ + * } if$ } if$ - nameptr #1 > - { ", " swap$ * * } - 'skip$ - if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } @@ -850,12 +877,51 @@ FUNCTION {format.series.vol.num.booktitle} if$ } -FUNCTION {format.journal} -{ journal - italic.jounal entry.lang lang.en = and - 'italicize +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } 'skip$ if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {format.journal} +{ journal empty$ not + { journal + abbreviate.journal + 'abbreviate + 'skip$ + if$ + italic.journal entry.lang lang.en = and + 'italicize + 'skip$ + if$ + } + { "" } + if$ } FUNCTION {set.entry.mark} @@ -871,15 +937,24 @@ FUNCTION {set.entry.mark} FUNCTION {format.mark} { show.mark - { medium empty$ not - { entry.mark "/" * medium * 'entry.mark := } - { entry.is.electronic - { entry.mark "/OL" * 'entry.mark := } - 'skip$ + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } if$ } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " [" entry.mark * "]" * } + { "\allowbreak[" entry.mark * "]" * } if$ - "\allowbreak[" entry.mark * "]" * } { "" } if$ @@ -1061,7 +1136,9 @@ FUNCTION {format.editdate} } FUNCTION {format.urldate} -{ urldate empty$ not entry.is.electronic and +{ urldate empty$ not + show.urldate show.url and is.pure.electronic or and + url empty$ not and { "\allowbreak[" urldate * "]" * } { "" } if$ @@ -1092,6 +1169,18 @@ FUNCTION {format.pages} if$ } +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + FUNCTION {format.journal.volume} { volume empty$ not { bold.journal.volume @@ -1113,7 +1202,9 @@ FUNCTION {format.journal.number} FUNCTION {format.journal.pages} { pages empty$ { "" } - { ":\penalty0 " pages hyphenate * } + { ": " + format.extracted.pages * + } if$ } @@ -1185,9 +1276,15 @@ FUNCTION {check.url} } FUNCTION {format.url} +{ entry.url +} + +FUNCTION {output.url} { entry.url empty$ not - { new.block entry.url } - { "" } + { new.block + entry.url output + } + 'skip$ if$ } @@ -1221,7 +1318,7 @@ FUNCTION {is.in.url} FUNCTION {format.doi} { "" - doi empty$ not show.doi and + doi empty$ not { "" 's := doi 't := #0 'numnames := @@ -1249,11 +1346,16 @@ FUNCTION {format.doi} t #2 global.max$ substring$ 't := } while$ - 's := - s empty$ not - { new.block s } - { "" } - if$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output } 'skip$ if$ @@ -1278,6 +1380,27 @@ FUNCTION {check.electronic} if$ } +FUNCTION {format.eprint} +{ "" + archivePrefix empty$ not + { archivePrefix * ": " * + "\eprint{https://" * + archivePrefix "l" change.case$ * ".org/abs/" * eprint * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + FUNCTION {format.note} { note empty$ not show.note and { note } @@ -1285,6 +1408,30 @@ FUNCTION {format.note} if$ } +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + FUNCTION {empty.misc.check} { author empty$ title empty$ year empty$ @@ -1297,6 +1444,7 @@ FUNCTION {empty.misc.check} FUNCTION {monograph} { output.bibitem + output.translation author empty$ not { format.authors } { editor empty$ not @@ -1321,8 +1469,8 @@ FUNCTION {monograph} format.year "year" output.check format.pages bbl.colon output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1330,6 +1478,7 @@ FUNCTION {monograph} FUNCTION {incollection} { output.bibitem + output.translation format.authors output author format.key output new.block @@ -1347,10 +1496,10 @@ FUNCTION {incollection} new.block format.address.publisher output format.year "year" output.check - format.pages bbl.colon output.after + format.extracted.pages bbl.colon output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1358,6 +1507,7 @@ FUNCTION {incollection} FUNCTION {periodical} { output.bibitem + output.translation format.authors output author format.key output new.block @@ -1370,8 +1520,8 @@ FUNCTION {periodical} format.address.publisher output format.date "year" output.check format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1379,21 +1529,26 @@ FUNCTION {periodical} FUNCTION {article} { output.bibitem + output.translation format.authors output author format.key output new.block - format.title "title" output.check - "J" set.entry.mark - format.mark "" output.after - new.block + title.in.journal + { format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ format.journal "journal" output.check format.date "year" output.check format.journal.volume output format.journal.number "" output.after format.journal.pages "" output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1401,6 +1556,7 @@ FUNCTION {article} FUNCTION {patent} { output.bibitem + output.translation format.authors output author format.key output new.block @@ -1410,8 +1566,8 @@ FUNCTION {patent} new.block format.date "year" output.check format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1420,7 +1576,9 @@ FUNCTION {patent} FUNCTION {electronic} { #1 #1 check.electronic #1 'entry.is.electronic := + #1 'is.pure.electronic := output.bibitem + output.translation format.authors output author format.key output new.block @@ -1436,8 +1594,45 @@ FUNCTION {electronic} format.pages bbl.colon output.after format.editdate "" output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + "" + } + if$ + } + if$ + output + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "Z" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + output.eprint + format.year "year" output.check + format.pages bbl.colon output.after + format.urldate "" output.after + output.url new.block format.note output fin.entry @@ -1450,10 +1645,14 @@ FUNCTION {misc} 'incollection { publisher empty$ not 'monograph - { entry.is.electronic - 'electronic - { "Z" set.entry.mark - monograph + { eprint empty$ not show.preprint and + 'preprint + { entry.is.electronic + 'electronic + { "Z" set.entry.mark + monograph + } + if$ } if$ } @@ -1542,10 +1741,7 @@ FUNCTION {techreport} misc } -FUNCTION {unpublished} -{ "Z" set.entry.mark - misc -} +FUNCTION {unpublished} { misc } FUNCTION {default.type} { misc } @@ -1746,6 +1942,7 @@ FUNCTION {presort} { set.entry.lang set.entry.numbered show.url show.doi check.electronic + #0 'is.pure.electronic := calc.label label sortify " " @@ -1814,19 +2011,25 @@ FUNCTION {begin.bib} write$ newline$ "\providecommand{\url}[1]{#1}" write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" write$ newline$ " \urlstyle{same}\fi" write$ newline$ - show.doi - { "\providecommand{\href}[2]{\url{#2}}" + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" write$ newline$ - "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}" + "\fi" write$ newline$ } - 'skip$ - if$ -} FUNCTION {end.bib} { newline$ diff --git a/macros/latex/contrib/thuthesis/thuthesis-example.pdf b/macros/latex/contrib/thuthesis/thuthesis-example.pdf index 5fff934faf..7b6a0b2a4c 100644 Binary files a/macros/latex/contrib/thuthesis/thuthesis-example.pdf and b/macros/latex/contrib/thuthesis/thuthesis-example.pdf differ diff --git a/macros/latex/contrib/thuthesis/thuthesis-numeric.bst b/macros/latex/contrib/thuthesis/thuthesis-numeric.bst index c8cd10f4b8..234b065a7d 100644 --- a/macros/latex/contrib/thuthesis/thuthesis-numeric.bst +++ b/macros/latex/contrib/thuthesis/thuthesis-numeric.bst @@ -1,5 +1,5 @@ %% -%% This is file `versions/thu/thuthesis-numeric.bst', +%% This is file `variants/thu/thuthesis-numeric.bst', %% generated with the docstrip utility. %% %% The original source files were: @@ -8,9 +8,9 @@ %% ------------------------------------------------------------------- %% GB/T 7714-2015 BibTeX Style %% https://github.com/CTeX-org/gbt7714-bibtex-style -%% Version: 2019/03/21 v1.1.1 +%% Version: 2020/06/08 v2.0.2 %% ------------------------------------------------------------------- -%% Copyright (C) 2016-2019 by Zeping Lee +%% Copyright (C) 2016-2020 by Zeping Lee %% ------------------------------------------------------------------- %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -26,15 +26,23 @@ INTEGERS { period.between.author.year sentence.case.title link.title + title.in.journal show.mark + space.before.mark + show.medium.type slash.for.extraction in.booktitle - italic.jounal + abbreviate.journal + italic.journal bold.journal.volume show.missing.address.publisher + only.start.page + show.urldate show.url show.doi + show.preprint show.note + show.english.translation } FUNCTION {load.config} @@ -43,25 +51,35 @@ FUNCTION {load.config} #3 'max.num.authors := #1 'sentence.case.title := #0 'link.title := + #1 'title.in.journal := #1 'show.mark := + #1 'space.before.mark := + #1 'show.medium.type := #1 'slash.for.extraction := #0 'in.booktitle := - #0 'italic.jounal := + #0 'abbreviate.journal := + #0 'italic.journal := #0 'bold.journal.volume := #0 'show.missing.address.publisher := + #0 'only.start.page := + #1 'show.urldate := #1 'show.url := #0 'show.doi := + #0 'show.preprint := #0 'show.note := + #0 'show.english.translation := } ENTRY { address + archivePrefix author booktitle date doi edition editor + eprint howpublished institution journal @@ -77,13 +95,14 @@ ENTRY school series title + translation translator url urldate volume year } - { entry.lang entry.is.electronic entry.numbered } + { entry.lang entry.is.electronic is.pure.electronic entry.numbered } { label extra.label sort.label short.list entry.mark entry.url } INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } @@ -259,6 +278,12 @@ FUNCTION {output.check} FUNCTION {fin.entry} { add.period$ write$ + show.english.translation entry.lang lang.zh = and + { ")" + write$ + } + 'skip$ + if$ newline$ } @@ -463,15 +488,20 @@ FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := + "" numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + nameptr #1 > + { ", " * } + 'skip$ + if$ nameptr max.num.authors > - { bbl.et.al + { bbl.et.al * #1 'namesleft := } { t "others" = - { bbl.et.al } + { bbl.et.al * } { t get.str.lang 'name.lang := name.lang lang.en = { t #1 "{vv~}{ll}{~f{~}}" format.name$ @@ -483,14 +513,11 @@ FUNCTION {format.names} } { t #1 "{ll}{ff}" format.name$ } if$ + * } if$ } if$ - nameptr #1 > - { ", " swap$ * * } - 'skip$ - if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } @@ -850,12 +877,51 @@ FUNCTION {format.series.vol.num.booktitle} if$ } -FUNCTION {format.journal} -{ journal - italic.jounal entry.lang lang.en = and - 'italicize +FUNCTION {remove.period} +{ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ 'tmp.str := + tmp.str "." = not + { s tmp.str * 's := } + 'skip$ + if$ + t #2 global.max$ substring$ 't := + } + while$ + s +} + +FUNCTION {abbreviate} +{ remove.period + 't := + t "l" change.case$ 's := + "" + s "physical review letters" = + { "Phys Rev Lett" } 'skip$ if$ + 's := + s empty$ + { t } + { pop$ s } + if$ +} + +FUNCTION {format.journal} +{ journal empty$ not + { journal + abbreviate.journal + 'abbreviate + 'skip$ + if$ + italic.journal entry.lang lang.en = and + 'italicize + 'skip$ + if$ + } + { "" } + if$ } FUNCTION {set.entry.mark} @@ -874,15 +940,24 @@ FUNCTION {format.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 - { entry.mark "/OL" * 'entry.mark := } - 'skip$ + { entry.mark + show.medium.type + { medium empty$ not + { "/" * medium * } + { entry.is.electronic + { "/OL" * } + 'skip$ + if$ + } if$ } + 'skip$ + if$ + 'entry.mark := + space.before.mark + { " [" entry.mark * "]" * } + { "\allowbreak[" entry.mark * "]" * } if$ - " [" entry.mark * "]" * } { "" } if$ @@ -1064,7 +1139,9 @@ FUNCTION {format.editdate} } FUNCTION {format.urldate} -{ urldate empty$ not entry.is.electronic and +{ urldate empty$ not + show.urldate show.url and is.pure.electronic or and + url empty$ not and { "\allowbreak[" urldate * "]" * } { "" } if$ @@ -1095,6 +1172,18 @@ FUNCTION {format.pages} if$ } +FUNCTION {format.extracted.pages} +{ pages empty$ + { "" } + { pages + only.start.page + 'extract.before.dash + 'hyphenate + if$ + } + if$ +} + FUNCTION {format.journal.volume} { volume empty$ not { bold.journal.volume @@ -1116,7 +1205,9 @@ FUNCTION {format.journal.number} FUNCTION {format.journal.pages} { pages empty$ { "" } - { ":\penalty0 " pages hyphenate * } + { ": " + format.extracted.pages * + } if$ } @@ -1188,9 +1279,15 @@ FUNCTION {check.url} } FUNCTION {format.url} +{ entry.url +} + +FUNCTION {output.url} { entry.url empty$ not - { new.block entry.url } - { "" } + { new.block + entry.url output + } + 'skip$ if$ } @@ -1224,7 +1321,7 @@ FUNCTION {is.in.url} FUNCTION {format.doi} { "" - doi empty$ not show.doi and + doi empty$ not { "" 's := doi 't := #0 'numnames := @@ -1252,11 +1349,16 @@ FUNCTION {format.doi} t #2 global.max$ substring$ 't := } while$ - 's := - s empty$ not - { new.block s } - { "" } - if$ + } + 'skip$ + if$ +} + +FUNCTION {output.doi} +{ doi empty$ not show.doi and + show.english.translation entry.lang lang.zh = and not and + { new.block + format.doi output } 'skip$ if$ @@ -1281,6 +1383,27 @@ FUNCTION {check.electronic} if$ } +FUNCTION {format.eprint} +{ "" + archivePrefix empty$ not + { archivePrefix * ": " * + "\eprint{https://" * + archivePrefix "l" change.case$ * ".org/abs/" * eprint * "}{" * + eprint * "}" * + } + { eprint } + if$ +} + +FUNCTION {output.eprint} +{ show.preprint eprint empty$ not and + { new.block + format.eprint output + } + 'skip$ + if$ +} + FUNCTION {format.note} { note empty$ not show.note and { note } @@ -1288,6 +1411,30 @@ FUNCTION {format.note} if$ } +FUNCTION {output.translation} +{ show.english.translation entry.lang lang.zh = and + { translation empty$ not + { translation } + { "[English translation missing!]" } + if$ + " (in Chinese)" * output + write$ + format.doi duplicate$ empty$ not + { newline$ + write$ + } + 'pop$ + if$ + " \\" write$ + newline$ + "(" write$ + "" + before.all 'output.state := + } + 'skip$ + if$ +} + FUNCTION {empty.misc.check} { author empty$ title empty$ year empty$ @@ -1300,6 +1447,7 @@ FUNCTION {empty.misc.check} FUNCTION {monograph} { output.bibitem + output.translation author empty$ not { format.authors } { editor empty$ not @@ -1324,8 +1472,8 @@ FUNCTION {monograph} format.year "year" output.check format.pages bbl.colon output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1333,6 +1481,7 @@ FUNCTION {monograph} FUNCTION {incollection} { output.bibitem + output.translation format.authors output author format.key output new.block @@ -1350,10 +1499,10 @@ FUNCTION {incollection} new.block format.address.publisher output format.year "year" output.check - format.pages bbl.colon output.after + format.extracted.pages bbl.colon output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1361,6 +1510,7 @@ FUNCTION {incollection} FUNCTION {periodical} { output.bibitem + output.translation format.authors output author format.key output new.block @@ -1373,8 +1523,8 @@ FUNCTION {periodical} format.address.publisher output format.date "year" output.check format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1382,21 +1532,26 @@ FUNCTION {periodical} FUNCTION {article} { output.bibitem + output.translation format.authors output author format.key output new.block - format.title "title" output.check - "J" set.entry.mark - format.mark "" output.after - new.block + title.in.journal + { format.title "title" output.check + "J" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ format.journal "journal" output.check format.date "year" output.check format.journal.volume output format.journal.number "" output.after format.journal.pages "" output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1404,6 +1559,7 @@ FUNCTION {article} FUNCTION {patent} { output.bibitem + output.translation format.authors output author format.key output new.block @@ -1413,8 +1569,8 @@ FUNCTION {patent} new.block format.date "year" output.check format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi new.block format.note output fin.entry @@ -1423,7 +1579,9 @@ FUNCTION {patent} FUNCTION {electronic} { #1 #1 check.electronic #1 'entry.is.electronic := + #1 'is.pure.electronic := output.bibitem + output.translation format.authors output author format.key output new.block @@ -1439,8 +1597,45 @@ FUNCTION {electronic} format.pages bbl.colon output.after format.editdate "" output.after format.urldate "" output.after - format.url output - format.doi output + output.url + output.doi + new.block + format.note output + fin.entry +} + +FUNCTION {preprint} +{ output.bibitem + output.translation + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "empty author and editor in " cite$ * warning$ + "" + } + if$ + } + if$ + output + new.block + title.in.journal + { format.series.vol.num.title "title" output.check + "Z" set.entry.mark + format.mark "" output.after + new.block + } + 'skip$ + if$ + format.translators output + new.sentence + format.edition output + new.block + output.eprint + format.year "year" output.check + format.pages bbl.colon output.after + format.urldate "" output.after + output.url new.block format.note output fin.entry @@ -1453,10 +1648,14 @@ FUNCTION {misc} 'incollection { publisher empty$ not 'monograph - { entry.is.electronic - 'electronic - { "Z" set.entry.mark - monograph + { eprint empty$ not show.preprint and + 'preprint + { entry.is.electronic + 'electronic + { "Z" set.entry.mark + monograph + } + if$ } if$ } @@ -1556,10 +1755,7 @@ FUNCTION {techreport} misc } -FUNCTION {unpublished} -{ "Z" set.entry.mark - misc -} +FUNCTION {unpublished} { misc } FUNCTION {default.type} { misc } @@ -1760,6 +1956,7 @@ FUNCTION {presort} { set.entry.lang set.entry.numbered show.url show.doi check.electronic + #0 'is.pure.electronic := calc.label label sortify " " @@ -1828,19 +2025,25 @@ FUNCTION {begin.bib} write$ newline$ "\providecommand{\url}[1]{#1}" write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" + "\expandafter\ifx\csname urlstyle\endcsname\relax\else" write$ newline$ " \urlstyle{same}\fi" write$ newline$ - show.doi - { "\providecommand{\href}[2]{\url{#2}}" + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \DeclareUrlCommand\doi{\urlstyle{rm}}" + write$ newline$ + " \def\eprint#1#2{#2}" + write$ newline$ + "\else" + write$ newline$ + " \def\doi#1{\href{https://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + " \let\eprint\href" write$ newline$ - "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}" + "\fi" write$ newline$ } - 'skip$ - if$ -} FUNCTION {end.bib} { newline$ diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx index fe1a16b6fa..f96a2d4b72 100644 --- a/macros/latex/contrib/thuthesis/thuthesis.dtx +++ b/macros/latex/contrib/thuthesis/thuthesis.dtx @@ -17,7 +17,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2020/06/14 6.1.2 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2020/07/09 6.1.3 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -798,15 +798,15 @@ % 也可以使用 \cs{inlinecite}\marg{key} 临时使用正文模式的引用标注。 % % \paragraph{著者-出版年制} -% 著者-出版年制的参考文献引用有三种模式: +% 著者-出版年制的参考文献引用有两种模式: % \begin{enumerate} % \item \cs{citep}:著者与年份均在括号中,比如“(Zhang, 2008)”, % 同默认的 \cs{cite} 命令; % \item \cs{citet}:著者姓名作为正文的一部分,比如“Zhang (2008)”; -% \item \cs{citeyear}:只插入年份,但不含括号,比如“2008”。 % \end{enumerate} % -% 关于参考文献引用的更多细节参考 \pkg{natbib} 的文档。 +% 另外还有 \cs{citeauthor}、\cs{citeyear} 等命令分别标注文献的著者姓名和年份, +% 更多的引用文献标注法参考 \pkg{natbib} 的文档。 % % \subsection{其他部分} % @@ -877,14 +877,15 @@ % \statement[scan-statement.pdf] % \end{latex} % -% 由于打印版和电子版有空白页的差别,声明的页码可能不同。所以编译声明页时默认不加页码, -% 在签字后插入扫描页时再补上页码,防止页码冲突。 +% 由于打印版和电子版有空白页的差别,声明的页码可能不同。 +% 所以编译声明页时默认不加页眉和页脚, +% 在签字后插入扫描页时再补上页眉和页脚,防止页码冲突。 % -% \DescribeOption{statement-page-number} +% \DescribeOption{statement-page-style} % 如果需要编译时也加页码(如直接对电子版进行签名而不是插入扫描页),可以使用在 \cs{statement} 前设置 % \begin{latex} % \thusetup{ -% statement-page-number = true, +% statement-page-style = plain, % } % \end{latex} % 注意,插入扫描页总是会加页码,不受该选项控制。 @@ -1082,7 +1083,7 @@ % \begin{macrocode} %\NeedsTeXFormat{LaTeX2e}[2017/04/15] %\ProvidesClass{thuthesis} -%[2020/06/14 6.1.2 Tsinghua University Thesis Template] +%[2020/07/09 6.1.3 Tsinghua University Thesis Template] % \end{macrocode} % % 报错 @@ -1090,6 +1091,9 @@ \newcommand\thu@error[1]{% \ClassError{thuthesis}{#1}{}% } +\newcommand\thu@warning[1]{% + \ClassWarning{thuthesis}{#1}% +} % \end{macrocode} % % 检查 \LaTeXe{} kernel 版本 @@ -1116,7 +1120,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{ThuThesis} -\def\version{6.1.2} +\def\version{6.1.3} \RequirePackage{kvdefinekeys} \RequirePackage{kvsetkeys} \RequirePackage{kvoptions} @@ -1779,6 +1783,7 @@ BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, + Ligatures = CommonOff, ]% } \newcommand\thu@load@font@xits{% @@ -2141,7 +2146,7 @@ % \begin{macrocode} \let\thu@main@language\thu@language \thu@option@hook{language}{% - \ifx\@begindocumenthook\@undefined + \ifx\@begindocumenthook\@undefined\else \let\thu@main@language\thu@language \fi } @@ -2203,7 +2208,7 @@ \thu@set@chapter@names \thu@option@hook{degree}{\thu@set@chapter@names} \thu@option@hook{language}{% - \ifx\@begindocumenthook\@undefined + \ifx\@begindocumenthook\@undefined\else \thu@set@chapter@names \fi } @@ -2341,13 +2346,6 @@ \pagestyle{plain} % \end{macrocode} % -% 用于声明页,不含页脚。 -% \begin{macrocode} -\fancypagestyle{nofooter}{% - \fancyfoot{}% -} -% \end{macrocode} -% % \cs{chapter} 会调用特殊的 page style。 % \begin{macrocode} \ctexset{chapter/pagestyle = plain} @@ -3823,6 +3821,14 @@ % 声明部分(支持扫描文件替换) % \begin{macrocode} \thu@define@key{ + statement-page-style = { + name = statement@page@style, + choices = { + empty, + plain, + }, + default = empty, + }, statement-page-number = { name = statement@page@number, choices = { @@ -3832,6 +3838,12 @@ default = false, }, } +\thu@option@hook{statement-page-number}{% + \thu@warning{% + The "statement-page-number" option is deprecated. + Use "statement-page-style" instead% + }% +} \newcommand\statement[1][]{% \ifthu@degree@bachelor \cleardoublepage @@ -3840,7 +3852,7 @@ \ifx\thu@@tmp\@empty \thu@chapter*{\thu@statement@name}% \ifthu@statement@page@number@false - \thispagestyle{nofooter}% + \thispagestyle{\thu@statement@page@style}% \fi \thu@statement@text\par \ifthu@degree@graduate @@ -3852,6 +3864,7 @@ \thu@backdate\thu@underline[2.5cm]\relax}% \else \includepdf[pagecommand={% + \markboth{\thu@statement@name}{}% \thu@phantomsection \addcontentsline{toc}{chapter}{\thu@statement@name}% }]{#1}% @@ -4273,7 +4286,7 @@ % % \begin{macrocode} \newcommand{\record}[1]{% - \clearpage + \cleardoublepage \thu@pdfbookmark{0}{综合论文训练记录表}% \includepdf[pages=-]{#1}% } @@ -4675,7 +4688,7 @@ \RequirePackage{fontspec}[2017/01/20] \RequirePackage{amsmath} \RequirePackage{unicode-math} -\RequirePackage[UTF8,scheme=chinese]{ctex} +\RequirePackage[UTF8,scheme=chinese,fontset=fandol]{ctex} \RequirePackage[ top=2.5cm, bottom=2.5cm, left=4cm, right=2cm, @@ -4732,6 +4745,7 @@ ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Scale = MatchLowercase, + Ligatures = CommonOff, ]{texgyrecursor} } \unimathsetup{ diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf index 1891336779..d2d3ee64d7 100644 Binary files a/macros/latex/contrib/thuthesis/thuthesis.pdf and b/macros/latex/contrib/thuthesis/thuthesis.pdf differ -- cgit v1.2.3