From 38d375437b826702ea546b343fd89c45e8df8070 Mon Sep 17 00:00:00 2001 From: Xavier Yao Date: Wed, 12 Apr 2017 20:16:58 +0800 Subject: [PATCH 01/25] fix a typo in the example of exercise MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the example of exercise, "请列出" is written as "清列出". --- data/chap01.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/chap01.tex b/data/chap01.tex index 87a1c168..dcb5fafd 100644 --- a/data/chap01.tex +++ b/data/chap01.tex @@ -476,7 +476,7 @@ \section{定理环境} \end{example} \begin{exercise} - 清列出 Andrew S. Tanenbaum 和 W. Richard Stevens 的所有著作。 + 请列出 Andrew S. Tanenbaum 和 W. Richard Stevens 的所有著作。 \end{exercise} \begin{conjecture} \textit{Poincare Conjecture} If in a closed three-dimensional From 3e142062595cd032e71c7b06a64492705565f4d6 Mon Sep 17 00:00:00 2001 From: abuccts Date: Tue, 18 Apr 2017 23:58:15 +0800 Subject: [PATCH 02/25] fix typo in chap01 --- data/chap01.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/chap01.tex b/data/chap01.tex index dcb5fafd..2b255aac 100644 --- a/data/chap01.tex +++ b/data/chap01.tex @@ -13,7 +13,7 @@ \chapter{带 English 的标题} \section{封面相关} 封面的例子请参看 cover.tex。主要符号表参看 denation.tex,附录和个人简历分别参看 appendix01.tex -和 resume.tex。里面的命令都很只管,一看即会\footnote{你说还是看不懂?怎么会呢?}。 +和 resume.tex。里面的命令都很直观,一看即会\footnote{你说还是看不懂?怎么会呢?}。 \section{字体命令} \label{sec:first} From f7afb42258ce4146a9429dcb4fdfc26b5b7769ed Mon Sep 17 00:00:00 2001 From: mengfl05 <1mfl1@163.com> Date: Mon, 1 May 2017 14:18:16 +0800 Subject: [PATCH 03/25] 1. move the font configuration of theorem headers and bodies to the .cfg file 2. revise some font configurations, for the CJK family macros like \songti change the font families to a simple CJK families and only change the families of CJK characters. Signed-off-by: mengfl05 <1mfl1@163.com> --- thuthesis.dtx | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index ff55cee2..0a93ab4f 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1609,7 +1609,7 @@ \renewcommand{\footrulewidth}{0pt}} \fancypagestyle{thu@headings}{% \fancyhead{} - \fancyhead[C]{\wuhao\songti\leftmark} + \fancyhead[C]{\wuhao\normalfont\leftmark} \fancyfoot{} \fancyfoot[C]{\wuhao\thepage} \renewcommand{\headrulewidth}{0.4pt} @@ -1735,17 +1735,18 @@ % 修改 \cs{tagform} 会影响 \cs{eqref}。 % \begin{macrocode} \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 文件中。} % \begin{macrocode} -\theorembodyfont{\rmfamily\songti} -\theoremheaderfont{\rmfamily\heiti} -% %<*cfg> +\theorembodyfont{\normalfont} +\theoremheaderfont{\normalfont\heiti} \theoremsymbol{\ensuremath{\square}} \newtheorem*{proof}{证明} \theoremstyle{plain} @@ -1811,7 +1812,7 @@ \fi \let\old@tabular\@tabular \def\thu@tabular{\dawu[1.5]\old@tabular} -\DeclareCaptionLabelFormat{thu}{{\dawu[1.5]\songti #1~\rmfamily #2}} +\DeclareCaptionLabelFormat{thu}{{\dawu[1.5]\normalfont #1~#2}} \DeclareCaptionLabelSeparator{thu}{\hspace{1em}} \DeclareCaptionFont{thu}{\dawu[1.5]} \captionsetup{labelformat=thu,labelsep=thu,font=thu} @@ -1887,7 +1888,7 @@ % \begin{macrocode} %<*cls> \def\thu@title@font{% - \ifthu@arialtitle\sffamily\else\relax\fi} + \ifthu@arialtitle\sffamily\else\heiti\fi} % \end{macrocode} % % \pkg{fancyhdr} 定义页眉页脚很方便,但是有一个非常隐蔽的坑。通过 \pkg{fancyhdr} @@ -1963,7 +1964,7 @@ beforeskip={\ifthu@bachelor 13bp\else 9bp\fi}, aftername=\hskip\ccwd, afterskip={\ifthu@bachelor 20bp\else 24bp\fi}, - format={\centering\thu@title@font\heiti\ifthu@bachelor\xiaosan\else\sanhao[1]\fi}, + format={\centering\thu@title@font\ifthu@bachelor\xiaosan\else\sanhao[1]\fi}, nameformat=\relax, numberformat=\relax, titleformat=\thu@chapter@titleformat, @@ -1972,19 +1973,19 @@ afterindent=true, beforeskip={\ifthu@bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex}, afterskip={\ifthu@bachelor 12bp\else 6bp\fi \@plus .2ex}, - format={\thu@title@font\heiti\sihao[1.429]}, + format={\thu@title@font\sihao[1.429]}, }, subsection={ afterindent=true, beforeskip={\ifthu@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex}, afterskip={6bp \@plus .2ex}, - format={\thu@title@font\heiti\ifthu@bachelor\xiaosi[1.667]\else\banxiaosi[1.538]\fi}, + format={\thu@title@font\ifthu@bachelor\xiaosi[1.667]\else\banxiaosi[1.538]\fi}, }, subsubsection={ afterindent=true, beforeskip={\ifthu@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex}, afterskip={6bp \@plus .2ex}, - format={\csname thu@title@font\endcsname\heiti\xiaosi[1.667]}, + format={\thu@title@font\xiaosi[1.667]}, }, paragraph/afterindent=true, subparagraph/afterindent=true} @@ -2514,7 +2515,7 @@ \parbox[t][9cm][t]{\paperwidth-8cm}{ \renewcommand{\baselinestretch}{1.3} \begin{center} - \yihao[1.2]{\sffamily\heiti\thu@ctitle}\par% + \yihao[1.2]{\sffamily\thu@ctitle}\par% \par\vskip 18bp% \xiaoer[1]\textrm{\thu@apply}% \end{center}} From 0f0e2501398f383d50f63292aaf1a5f2e0eb33a5 Mon Sep 17 00:00:00 2001 From: Zeping Lee Date: Tue, 9 May 2017 22:05:20 +0800 Subject: [PATCH 04/25] add author-year bibtex style --- main.tex | 2 +- thuthesis-author-year.bst | 1749 +++++++++++++++++++++++++++++++++++++ thuthesis-numerical.bst | 1608 ++++++++++++++++++++++++++++++++++ thuthesis.bst | 1210 ------------------------- thuthesis.dtx | 75 +- 5 files changed, 3411 insertions(+), 1233 deletions(-) create mode 100644 thuthesis-author-year.bst create mode 100644 thuthesis-numerical.bst delete mode 100644 thuthesis.bst diff --git a/main.tex b/main.tex index 6327130d..ed6f0b2c 100644 --- a/main.tex +++ b/main.tex @@ -54,7 +54,7 @@ %% 参考文献 % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。 % 如果不需要参考文献,请将下面两行删除或注释掉。 -\bibliographystyle{thuthesis} +\bibliographystyle{thuthesis-numerical} \bibliography{ref/refs} diff --git a/thuthesis-author-year.bst b/thuthesis-author-year.bst new file mode 100644 index 00000000..9f1c7eaa --- /dev/null +++ b/thuthesis-author-year.bst @@ -0,0 +1,1749 @@ +%% Copyright (C) 2016-2017 by Zeping Lee +%% +%% 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 +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of +%% LaTeX version 1999/12/01 or later. +%% +%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly, +%% which was designed for use with the `natbib.sty' package. +%% +ENTRY + { address + author + booktitle + chapter + doi + eid + edition + editor + howpublished + institution + isbn + issn + journal + key + language + mark + media + month + note + number + organization + pages + pinyin + publisher + school + series + title + translator + type + url + urldate + volume + year + } + { lang } + { mark_ label extra.label sort.label short.list } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.default } + +INTEGERS { charptr stringlength } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #4 'lang.zh := + #5 'lang.ja := + #1 'lang.en := + #3 'lang.ru := + #0 'lang.default := +} + +STRINGS { s t } + +FUNCTION {debug} +{ 's := + duplicate$ + "DEBUG: " s * " -> `" * + swap$ * "'" * + top$ +} + +FUNCTION {debug.int} +{ 's := + duplicate$ int.to.str$ + "DEBUG: " s * " == " * + swap$ * + top$ +} + +FUNCTION {punct.colon} +{ ": " +} + +FUNCTION {punct.slash} +{ "//\allowbreak{}" +} + +FUNCTION {punct.space} +{ " " +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ type$ "book" = + type$ "inbook" = or + type$ "incollection" = or + type$ "collection" = or + 'skip$ + 'add.period$ + if$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { after.slash 'output.state := } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {is.in.chinese} +{ lang lang.zh = +} + +FUNCTION {format.et.al} +{ is.in.chinese + { "等"} + { "et~al." } + if$ +} + +FUNCTION {format.anonymous} +{ is.in.chinese + { "佚名" } + { "Anon" } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > nameptr #4 < and } + { s nameptr "{vv~}{ll}{ f{ }}" format.name$ + s nameptr "{, jj}" format.name$ * + 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { t "others" = + { ", " * format.et.al * } + { ", " * t * } + if$ + } + if$ + nameptr #3 = namesleft #1 > and + { ", " * format.et.al * } + 'skip$ + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { format.anonymous } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + is.in.chinese + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { new.block "\url{" url * "}" * } + if$ +} + +FUNCTION {format.doi} +{ "" +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {set.mark} +{ mark_ empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'mark_ := } + { 'mark_ := } + if$ + media empty$ not + { mark_ "/" * media * 'mark_ := } + { url empty$ not + { mark_ "/OL" * 'mark_ := } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ "\allowbreak[" mark_ * "]" * } + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year duplicate$ empty$ + { "empty year in " cite$ * warning$ + pop$ "" } + 'skip$ + if$ + extra.label * +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr stringlength < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {contains.dash} +{ duplicate$ empty$ + { pop$ #0 } + { 's := + { s empty$ not + s #1 #1 substring$ "-" = not + and + } + { s #2 global.max$ substring$ 's := } + while$ + s empty$ not + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year } + { urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "empty year in " cite$ * warning$ "" } + if$ + } + if$ + extract.before.dash + extra.label * +} + +FUNCTION {format.editdate} +{ year contains.dash + { "\allowbreak(" year * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ urldate empty$ + { "" } + { "\allowbreak[" urldate * "]" * } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ + { "" } + { volume is.number + { is.in.chinese + { "第" volume * "卷" * } + { "volume" volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + if$ +} + +FUNCTION {format.number} +{ number empty$ + { "" } + { number is.number + { is.in.chinese + { "第" volume * "册" * } + { "number" number tie.or.space.connect } + if$ + } + { number } + if$ + } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ type$ "report" = type$ "standard" = or + { format.title + number empty$ not + { ": " * number } + 'skip$ + if$ + } + { format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + title field.or.null * + } + { title field.or.null + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ + "t" change.case$ + } + if$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ type$ "report" = type$ "standard" = or + { format.volume.number } + { format.volume } + if$ + 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + booktitle field.or.null * + } + { booktitle field.or.null + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { is.in.chinese + { edition "版" * } + { edition num.to.ordinal " ed." * } + if$ + } + { edition "t" change.case$ 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco} +{ is.in.chinese + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {format.address} +{ address } + +FUNCTION {format.sine.nomine} +{ is.in.chinese + { "[出版地不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco.sine.nomine} +{ is.in.chinese + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address + format.publisher empty$ not + { ": " * format.publisher * } + { url empty$ doi empty$ and + { ": " * format.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { url empty$ doi empty$ and + { format.publisher empty$ not + { format.sine.loco ": " * format.publisher * } + { format.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.journal.volume} +{ volume } + +FUNCTION {format.journal.number} +{ number empty$ not + { "\penalty0 (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.dash } + { "No year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.before.dash * ")" * } + 'skip$ + if$ + year contains.dash + { "--" * + year extract.after.dash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.dash empty$ not + { year extract.after.dash * } + { year extract.before.dash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In \emph{" journal * "}" * } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "\emph{" * series * "}" * } + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In \emph{" booktitle * "}" * } + if$ + } + { "In " } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {monograph} +{ output.bibitem + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { format.anonymous } + if$ + } + if$ + output + new.block + format.year "year" output.check + new.block + format.series.vol.num.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.year "year" output.check + new.block + format.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.year "year" output.check + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {article.in.journal} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.year "year" output.check + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + journal "journal" output.check + volume output + format.journal.number "" output.after + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + format.authors output + author format.key output + new.block + format.year "year" output.check + new.block + format.title + number empty$ not + { punct.colon * number * } + 'skip$ + if$ + "title" output.check + "P" set.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {online} +{ output.bibitem + format.authors output + author format.key output + new.block + format.year "year" output.check + new.block + format.series.vol.num.title "title" output.check + "EB" set.mark + format.mark "" output.after + new.block + format.address.publisher output + format.pages punct.colon output.after + format.editdate "" output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {misc} +{ journal empty$ not + { article.in.journal } + { booktitle empty$ not + { incollection } + { url empty$ not + { online } + { monograph } + if$ + } + if$ + } + if$ +} + +FUNCTION {archive} +{ "A" set.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {collection} +{ "G" set.mark + monograph } + +FUNCTION {database} +{ "DB" set.mark + misc +} + +FUNCTION {dataset} +{ "DS" set.mark + misc +} + +FUNCTION {inbook} { book } + +FUNCTION {inproceedings} +{ "C" set.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {map} +{ "CM" set.mark + misc +} + +FUNCTION {mastersthesis} +{ is.in.chinese + { "\thumasterbib{}" } + { "D" } + if$ + set.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.mark + article.in.journal +} + +FUNCTION {phdthesis} +{ is.in.chinese + { "\thuphdbib{}" } + { "D" } + if$ + set.mark + monograph +} + +FUNCTION {proceedings} +{ "C" set.mark + monograph +} + +FUNCTION {program} +{ "CP" set.mark + misc +} + +FUNCTION {standard} +{ "S" set.mark + misc +} + +FUNCTION {techreport} +{ "R" set.mark + misc +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +EXECUTE {init.state.consts} + +INTEGERS { ascii } + +FUNCTION {char.lang} +{ chr.to.int$ 'ascii := + ascii #31 > ascii #128 < and + { lang.en } + { ascii #227 > ascii #234 < and + { lang.zh } + { ascii #227 = + { lang.ja } + { ascii #207 > ascii #212 < and + { lang.ru } + { lang.default } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {set.language} +{ language empty$ + { lang.default 'lang := + author field.or.null title field.or.null * 's := + s empty$ + 'skip$ + { #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < } + { s charptr #1 substring$ char.lang + duplicate$ #3 > + { charptr #2 + 'charptr := } + 'skip$ + if$ + duplicate$ lang > + { 'lang := } + 'pop$ + if$ + charptr #1 + 'charptr := + } + while$ + } + if$ + } + { language "en" = + { lang.en } + { language "zh" = + { lang.zh } + { language "ja" = + { lang.ja } + { language "ru" = + { lang.ru } + { lang.default } + if$ + } + if$ + } + if$ + } + if$ + 'lang := + } + if$ +} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ #1 > + { "\ " * format.et.al * } + 'skip$ + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + type$ "collection" = + or + 'author.editor.key.label + { type$ "proceedings" = + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + 'extract.before.dash + if$ + * + 'label := +} + +FUNCTION {sort.language.label} +{ lang lang.zh = + { "a " + pinyin empty$ + 'skip$ + { pinyin * " " * } + if$ + } + { lang lang.ja = + { "b " } + { lang lang.en = + { "c " } + { lang lang.ru = + { "d " } + { "e " } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + sort.language.label + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * } + 'skip$ + if$ + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { format.anonymous } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ set.language + calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + cite$ + * + #1 entry.max$ substring$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\bibpunct{(}{)}{;}{a}{,}{,}" + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\expandafter\ifx\csname thumasterbib\endcsname\relax" + write$ newline$ + " \providecommand\thumasterbib{D}\fi" + write$ newline$ + "\expandafter\ifx\csname thuphdbib\endcsname\relax" + write$ newline$ + " \providecommand\thuphdbib{D}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/thuthesis-numerical.bst b/thuthesis-numerical.bst new file mode 100644 index 00000000..1c3d27a5 --- /dev/null +++ b/thuthesis-numerical.bst @@ -0,0 +1,1608 @@ +%% Copyright (C) 2016-2017 by Zeping Lee +%% +%% 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 +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of +%% LaTeX version 1999/12/01 or later. +%% +%% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly, +%% which was designed for use with the `natbib.sty' package. +%% +ENTRY + { address + author + booktitle + chapter + doi + eid + edition + editor + howpublished + institution + isbn + issn + journal + key + language + mark + media + month + note + number + organization + pages + publisher + school + series + title + translator + type + url + urldate + volume + year + } + { lang } + { mark_ label extra.label sort.label short.list } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } + +INTEGERS { lang.zh lang.ja lang.en lang.ru lang.default } + +INTEGERS { charptr stringlength } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.slash := + #4 'lang.zh := + #5 'lang.ja := + #1 'lang.en := + #3 'lang.ru := + #0 'lang.default := +} + +STRINGS { s t } + +FUNCTION {debug} +{ 's := + duplicate$ + "DEBUG: " s * " -> `" * + swap$ * "'" * + top$ +} + +FUNCTION {debug.int} +{ 's := + duplicate$ int.to.str$ + "DEBUG: " s * " == " * + swap$ * + top$ +} + +FUNCTION {punct.colon} +{ ": " +} + +FUNCTION {punct.slash} +{ "//\allowbreak{}" +} + +FUNCTION {punct.space} +{ " " +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.after} +{ 't := + duplicate$ empty$ + 'pop$ + { 's := + output.state mid.sentence = + { t * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state after.slash = + { punct.slash * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s + } + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ type$ "book" = + type$ "inbook" = or + type$ "incollection" = or + type$ "collection" = or + 'skip$ + 'add.period$ + if$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.block 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { output.state after.slash = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ + } + if$ +} + +FUNCTION {new.slash} +{ output.state before.all = + 'skip$ + { after.slash 'output.state := } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {is.in.chinese} +{ lang lang.zh = +} + +FUNCTION {format.et.al} +{ is.in.chinese + { "等"} + { "et~al." } + if$ +} + +FUNCTION {format.anonymous} +{ is.in.chinese + { "佚名" } + { "Anon" } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > nameptr #4 < and } + { s nameptr "{vv~}{ll}{ f{ }}" format.name$ + s nameptr "{, jj}" format.name$ * + 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { t "others" = + { ", " * format.et.al * } + { ", " * t * } + if$ + } + if$ + nameptr #3 = namesleft #1 > and + { ", " * format.et.al * } + 'skip$ + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names } + if$ +} + +FUNCTION {format.translators} +{ translator empty$ + { "" } + { translator format.names + is.in.chinese + { translator num.names$ #3 > + { "译" * } + { ", 译" * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { new.block "\url{" url * "}" * } + if$ +} + +FUNCTION {format.doi} +{ "" +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {set.mark} +{ mark_ empty$ not + 'pop$ + { mark empty$ not + { pop$ mark 'mark_ := } + { 'mark_ := } + if$ + media empty$ not + { mark_ "/" * media * 'mark_ := } + { url empty$ not + { mark_ "/OL" * 'mark_ := } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.mark} +{ "\allowbreak[" mark_ * "]" * } + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.full} +{ author empty$ + { editor empty$ + { "" } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.full} +{ author empty$ + { "" } + { author format.full.names } + if$ +} + +FUNCTION {editor.full} +{ editor empty$ + { "" } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.full + { type$ "proceedings" = + 'editor.full + 'author.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem[" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year duplicate$ empty$ + { "empty year in " cite$ * warning$ + pop$ "" } + 'skip$ + if$ + extra.label * +} + +FUNCTION {extract.before.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + s #1 charptr #1 - substring$ + } + if$ +} + +FUNCTION {extract.after.dash} +{ duplicate$ empty$ + { pop$ "" } + { 's := + #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < + s charptr #1 substring$ "-" = not + and + } + { charptr #1 + 'charptr := } + while$ + { charptr stringlength < + s charptr #1 substring$ "-" = + and + } + { charptr #1 + 'charptr := } + while$ + s charptr global.max$ substring$ + } + if$ +} + +FUNCTION {contains.dash} +{ duplicate$ empty$ + { pop$ #0 } + { 's := + { s empty$ not + s #1 #1 substring$ "-" = not + and + } + { s #2 global.max$ substring$ 's := } + while$ + s empty$ not + } + if$ +} + +FUNCTION {format.year} +{ year empty$ not + { year } + { urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "empty year in " cite$ * warning$ "" } + if$ + } + if$ + extract.before.dash + extra.label * +} + +FUNCTION {format.editdate} +{ year contains.dash + { "\allowbreak(" year * ")" * } + { "" } + if$ +} + +FUNCTION {format.urldate} +{ urldate empty$ + { "" } + { "\allowbreak[" urldate * "]" * } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {is.digit} +{ duplicate$ empty$ + { pop$ #0 } + { chr.to.int$ + duplicate$ "0" chr.to.int$ < + { pop$ #0 } + { "9" chr.to.int$ > + { #0 } + { #1 } + if$ + } + if$ + } + if$ +} + +FUNCTION {is.number} +{ 's := + s empty$ + { #0 } + { s text.length$ 'charptr := + { charptr #0 > + s charptr #1 substring$ is.digit + and + } + { charptr #1 - 'charptr := } + while$ + charptr not + } + if$ +} + +FUNCTION {format.volume} +{ volume empty$ + { "" } + { volume is.number + { is.in.chinese + { "第" volume * "卷" * } + { "volume" volume tie.or.space.connect } + if$ + } + { volume } + if$ + } + if$ +} + +FUNCTION {format.number} +{ number empty$ + { "" } + { number is.number + { is.in.chinese + { "第" volume * "册" * } + { "number" number tie.or.space.connect } + if$ + } + { number } + if$ + } + if$ +} + +FUNCTION {format.volume.number} +{ volume empty$ not + { format.volume } + { format.number } + if$ +} + +FUNCTION {format.series.vol.num.title} +{ type$ "report" = type$ "standard" = or + { format.title + number empty$ not + { ": " * number } + 'skip$ + if$ + } + { format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + title field.or.null * + } + { title field.or.null + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ + "t" change.case$ + } + if$ +} + +FUNCTION {format.series.vol.num.booktitle} +{ type$ "report" = type$ "standard" = or + { format.volume.number } + { format.volume } + if$ + 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } + 'skip$ + if$ + booktitle field.or.null * + } + { booktitle field.or.null + s empty$ not + { ": " * s * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {num.to.ordinal} +{ duplicate$ text.length$ 'charptr := + duplicate$ charptr #1 substring$ 's := + s "1" = + { "st" * } + { s "2" = + { "nd" * } + { s "3" = + { "rd" * } + { "th" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { edition is.number + { is.in.chinese + { edition "版" * } + { edition num.to.ordinal " ed." * } + if$ + } + { edition "t" change.case$ 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco} +{ is.in.chinese + { "[出版地不详]" } + { "[S.l.]" } + if$ +} + +FUNCTION {format.address} +{ address } + +FUNCTION {format.sine.nomine} +{ is.in.chinese + { "[出版地不详]" } + { "[s.n.]" } + if$ +} + +FUNCTION {format.publisher} +{ publisher empty$ not + { publisher } + { school empty$ not + { school } + { organization empty$ not + { organization } + { institution empty$ not + { institution } + { "" } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.sine.loco.sine.nomine} +{ is.in.chinese + { "[出版地不详: 出版者不详]" } + { "[S.l.: s.n.]" } + if$ +} + +FUNCTION {format.address.publisher} +{ address empty$ not + { address + format.publisher empty$ not + { ": " * format.publisher * } + { url empty$ doi empty$ and + { ": " * format.sine.nomine * } + 'skip$ + if$ + } + if$ + } + { url empty$ doi empty$ and + { format.publisher empty$ not + { format.sine.loco ": " * format.publisher * } + { format.sine.loco.sine.nomine } + if$ + } + { format.publisher empty$ not + { format.publisher } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages n.dashify } + if$ +} + +FUNCTION {format.journal.volume} +{ volume } + +FUNCTION {format.journal.number} +{ number empty$ not + { "\penalty0 (" number * ")" * } + { "" } + if$ +} + +FUNCTION {format.periodical.year.volume.number} +{ year empty$ not + { year extract.before.dash } + { "No year in periodical " cite$ * warning$ } + if$ + volume empty$ not + { ", " * volume extract.before.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.before.dash * ")" * } + 'skip$ + if$ + year contains.dash + { "--" * + year extract.after.dash empty$ + volume extract.after.dash empty$ and + number extract.after.dash empty$ and not + { year extract.after.dash empty$ not + { year extract.after.dash * } + { year extract.before.dash * } + if$ + volume empty$ not + { ", " * volume extract.after.dash * } + 'skip$ + if$ + number empty$ not + { "\penalty0 (" * number extract.after.dash * ")" * } + 'skip$ + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In \emph{" journal * "}" * } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "\emph{" * series * "}" * } + if$ + } + 'skip$ + if$ + } + 'skip$ + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In \emph{" booktitle * "}" * } + if$ + } + { "In " } + if$ + } + { "In " } + if$ + " \citet{" * crossref * "}" * +} + +FUNCTION {monograph} +{ output.bibitem + author empty$ not + { format.authors } + { editor empty$ not + { format.editors } + { "" } + if$ + } + if$ + output + new.block + format.series.vol.num.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.sentence + format.edition output + new.block + format.address.publisher output + format.year "year" output.check + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "M" set.mark + format.mark "" output.after + new.block + format.translators output + new.slash + format.editors output + new.block + format.series.vol.num.booktitle "booktitle" output.check + new.block + format.edition output + new.block + format.address.publisher output + format.year "year" output.check + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + format.periodical.year.volume.number output + new.block + format.address.publisher output + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {article.in.journal} +{ output.bibitem + format.authors "author" output.check + author format.key output + new.block + format.title "title" output.check + "J" set.mark + format.mark "" output.after + new.block + journal "journal" output.check + format.year "year" output.check + volume output + format.journal.number "" output.after + format.pages punct.colon output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {patent} +{ output.bibitem + format.authors output + author format.key output + new.block + format.title + number empty$ not + { punct.colon * number * } + 'skip$ + if$ + "title" output.check + "P" set.mark + format.mark "" output.after + new.block + format.date "year" output.check + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {online} +{ output.bibitem + format.authors output + author format.key output + new.block + format.series.vol.num.title "title" output.check + "EB" set.mark + format.mark "" output.after + new.block + format.address.publisher output + year empty$ year contains.dash or + 'skip$ + { format.year output } + if$ + format.pages punct.colon output.after + format.editdate "" output.after + format.urldate "" output.after + format.url output + format.doi output + fin.entry +} + +FUNCTION {misc} +{ journal empty$ not + { article.in.journal } + { booktitle empty$ not + { incollection } + { url empty$ not + { online } + { monograph } + if$ + } + if$ + } + if$ +} + +FUNCTION {archive} +{ "A" set.mark + misc +} + +FUNCTION {article} { misc } + +FUNCTION {book} { monograph } + +FUNCTION {collection} +{ "G" set.mark + monograph } + +FUNCTION {database} +{ "DB" set.mark + misc +} + +FUNCTION {dataset} +{ "DS" set.mark + misc +} + +FUNCTION {inbook} { book } + +FUNCTION {inproceedings} +{ "C" set.mark + incollection +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {map} +{ "CM" set.mark + misc +} + +FUNCTION {mastersthesis} +{ is.in.chinese + { "\thumasterbib{}" } + { "D" } + if$ + set.mark + monograph +} + +FUNCTION {newspaper} +{ "N" set.mark + article.in.journal +} + +FUNCTION {phdthesis} +{ is.in.chinese + { "\thuphdbib{}" } + { "D" } + if$ + set.mark + monograph +} + +FUNCTION {proceedings} +{ "C" set.mark + monograph +} + +FUNCTION {program} +{ "CP" set.mark + misc +} + +FUNCTION {standard} +{ "S" set.mark + misc +} + +FUNCTION {techreport} +{ "R" set.mark + misc +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +EXECUTE {init.state.consts} + +INTEGERS { ascii } + +FUNCTION {char.lang} +{ chr.to.int$ 'ascii := + ascii #31 > ascii #128 < and + { lang.en } + { ascii #227 > ascii #234 < and + { lang.zh } + { ascii #227 = + { lang.ja } + { ascii #207 > ascii #212 < and + { lang.ru } + { lang.default } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {set.language} +{ language empty$ + { lang.default 'lang := + author field.or.null title field.or.null * 's := + s empty$ + 'skip$ + { #1 'charptr := + s text.length$ #1 + 'stringlength := + { charptr stringlength < } + { s charptr #1 substring$ char.lang + duplicate$ #3 > + { charptr #2 + 'charptr := } + 'skip$ + if$ + duplicate$ lang > + { 'lang := } + 'pop$ + if$ + charptr #1 + 'charptr := + } + while$ + } + if$ + } + { language "en" = + { lang.en } + { language "zh" = + { lang.zh } + { language "ja" = + { lang.ja } + { language "ru" = + { lang.ru } + { lang.default } + if$ + } + if$ + } + if$ + } + if$ + 'lang := + } + if$ +} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.lab.names} +{ 's := + s #1 "{vv~}{ll}" format.name$ + s num.names$ #1 > + { "\ " * format.et.al * } + 'skip$ + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + type$ "collection" = + or + 'author.editor.key.label + { type$ "proceedings" = + { editor empty$ not + 'editor.key.organization.label + 'author.key.organization.label + if$ + } + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + short.list key field.or.null = or + { pop$ + urldate empty$ not + { "[" urldate extract.before.dash * "]" * } + { "" } + if$ + } + 'extract.before.dash + if$ + * + 'label := +} + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +EXECUTE {init.seq} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +FUNCTION {presort} +{ set.language + calc.label + label sortify + " " + * + seq.num #1 + 'seq.num := + seq.num int.to.fix + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label last.label next.extra } + +INTEGERS { longest.label.width last.extra.num number.label } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" number.label int.to.str$ * "}" * + write$ newline$ + "\bibpunct{[}{]}{,}{s}{,}{,}" + write$ newline$ + "\providecommand{\natexlab}[1]{#1}" + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\expandafter\ifx\csname thumasterbib\endcsname\relax" + write$ newline$ + " \providecommand\thumasterbib{D}\fi" + write$ newline$ + "\expandafter\ifx\csname thuphdbib\endcsname\relax" + write$ newline$ + " \providecommand\thuphdbib{D}\fi" + write$ newline$ +} + +EXECUTE {begin.bib} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/thuthesis.bst b/thuthesis.bst deleted file mode 100644 index ae6d5cd0..00000000 --- a/thuthesis.bst +++ /dev/null @@ -1,1210 +0,0 @@ -% BibTeX standard bibliography style `thuthesis.bst' derived from `unsrt' -% This file is part of `thuthesis' package. - -ENTRY - { address - author - booktitle - chapter - citedate - edition - editor - howpublished - institution - journal - key - lang - modifydate - month - note - number - organization - pages - publisher - school - series - title - type - volume - year - url - } - {} - { label } - -INTEGERS { output.state before.all mid.sentence after.sentence after.block } - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} - -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} - -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} - -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} - -STRINGS { s t } - -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { add.period$ write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} - -FUNCTION {output.year} -{ 't := - number empty$ - volume empty$ - and - { add.period$ write$ } - { ", " * write$ } - if$ - t -} - -STRINGS {z} -FUNCTION {remove.dots} -{ 'z := - "" - { z empty$ not} - { z #1 #1 substring$ - z #2 global.max$ substring$ 'z := - duplicate$ "." = 'pop$ - { * } - if$ - } - while$ - %z -} - -FUNCTION {bibinfo.check} -{ swap$ - duplicate$ missing$ - { - pop$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ pop$ - } - { swap$ - pop$ - } - if$ - } - if$ -} - -FUNCTION {format.note} -{ - note empty$ - { "" } - { note #1 #1 substring$ - duplicate$ "{" = - 'skip$ - { output.state mid.sentence = - { "l" } - { "u" } - if$ - change.case$ - } - if$ - note #2 global.max$ substring$ * "note" bibinfo.check - } - if$ -} - -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} - -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} - -FUNCTION {output.bibitem} -{ newline$ - "\bibitem{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {fin.entry} -{ duplicate$ empty$ - 'pop$ - 'write$ - if$ - newline$ - "\thudot" write$ - newline$ -} - -% FUNCTION {fin.entry} -% { add.period$ -% write$ -% %remove.dots -% newline$ -% } - -% FUNCTION {fin.entry} -% { duplicate$ empty$ -% 'pop$ -% 'write$ -% if$ -% newline$ -% } - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} - -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} - - -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} - -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "{\em " swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - -FUNCTION {bbl.etal} -{ "et~al." } - -FUNCTION {bbl.cn.etal} -{ "等." } - -FUNCTION {format.lang} -{ lang empty$ - 'skip$ - 'skip$ - if$ - } - -FUNCTION {format.names} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - %"{ff }{ll}" - "{ll }{f{~}}" - format.name$ - remove.dots - %bibinfo bibinfo.check - 't := - nameptr #1 > - { - nameptr #3 - #1 + = - numnames #3 - > and - { "others" 't := - #1 'namesleft := } - 'skip$ - if$ - namesleft #1 > - { ", " * t * } - { numnames #2 > - { "" * } - 'skip$ - if$ - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - lang empty$ - { ", " * bbl.etal * } - { lang "zh" = - { ", " * bbl.cn.etal * } - 'skip$ - if$ - } - if$ - } - { - lang empty$ - { ", " * t * } - { lang "zh" = - { ", " * t * } - 'skip$ - if$ - } - if$ - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {format.authors} -{ author empty$ - { "" } - { author format.names } - if$ -} - -FUNCTION {editors.names} -{ lang empty$ - { ", (eds.)" } - { ", 编" } - if$ -} - - -FUNCTION {format.editors} -{ editor empty$ - { "" } - { editor format.names - % editor num.names$ #1 > - %{ ", editors" * } - %{ ", editor" * } - % if$ - editors.names * - } - if$ -} - -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} - -FUNCTION {n.dashify} -{ 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month ", " * year * } - if$ - } - if$ -} - -FUNCTION {format.btitle} -{ title %emphasize -} - -FUNCTION {tie.or.space.connect} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ * * -} - -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} - -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { "volume" volume tie.or.space.connect - series empty$ - 'skip$ - { " of " * series emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} - -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { output.state mid.sentence = - { "number" } - { "Number" } - if$ - number tie.or.space.connect - series empty$ - { "there's a number but no series in " cite$ * warning$ } - { " in " * series * } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { edition "l" change.case$ " ed." * } - { edition "t" change.case$ " ed." * } - if$ - } - if$ -} - - -FUNCTION {format.url} -{ url empty$ - { "" } - { new.block " {\url{" url * "}}" * } - if$ -} - -FUNCTION {format.modifydate} -{ modifydate empty$ - { "" } - { new.block "(" modifydate * ")" * } - if$ -} - -FUNCTION {format.citedate} -{ new.block "[" citedate * "]" * } - -FUNCTION {format.onlinemark} -{ "[EB/OL]" } - - -INTEGERS { multiresult } - -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} - -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { "" pages n.dashify tie.or.space.connect } - { "" pages tie.or.space.connect } - if$ - } - if$ -} - -FUNCTION {format.vol.num.pages} -{ volume field.or.null - number empty$ - 'skip$ - { "(" number * ")" * * - volume empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - } - if$ - pages empty$ - 'skip$ - { duplicate$ empty$ - { pop$ format.pages } - { ":" * pages n.dashify * } - if$ - } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - { "" } - { type empty$ - { "chapter" } - { type "l" change.case$ } - if$ - chapter tie.or.space.connect - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {collection.in} -{ lang empty$ - { "In: " } - { "见: " } - if$ -} - -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { lang empty$ -% { "Proceedings of " booktitle * } - { " " booktitle * } - { " " booktitle * } - if$ - } - { lang empty$ -% { collection.in format.editors * ". Proceedings of " * booktitle * } - { collection.in format.editors * ". " * booktitle * } - { collection.in format.editors * ". " * booktitle * } - if$ - } - if$ - } - if$ -} - -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} - -FUNCTION {format.thesis.type} -{ type empty$ - 'skip$ - { pop$ - type "t" change.case$ - } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - 'type - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -FUNCTION {format.article.crossref} -{ key empty$ - { journal empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * - warning$ - "" - } - { "In {\em " journal * "\/}" * } - if$ - } - { "In " key * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.crossref.editor} -{ editor #1 "{ll }{f{~}}" format.name$ - editor num.names$ duplicate$ - #2 > - { pop$ " et~al." * } - { #2 < - 'skip$ - { editor #2 "{ll }{f{~}}" format.name$ "others" = - { " et~al." * } - { " and " * editor #2 "{ll }{f{~}}" format.name$ * } - if$ - } - if$ - } - if$ -} - -FUNCTION {format.book.crossref} -{ volume empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - "In " - } - { "Volume" volume tie.or.space.connect - " of " * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { "{\em " * series * "\/}" * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.incoll.inproc.crossref} -{ editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { booktitle empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - "" - } - { "In {\em " booktitle * "\/}" * } - if$ - } - { "In " key * } - if$ - } - { "In " format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} - -FUNCTION {format.address.publisher} -{ address empty$ - { publisher empty$ - { "" } - { "there's a publisher but no address in " cite$ * warning$ - publisher - } - if$ - } - { publisher empty$ - 'address - { address ": " * publisher * } - if$ - } - if$ -} - -FUNCTION {format.address.school} -{ address empty$ - { school empty$ - { "" } - { "there's a school but no address in " cite$ * warning$ - school - } - if$ - } - { school empty$ - 'address - { address ": " * school * } - if$ - } - if$ -} - - -FUNCTION {format.title.type} -{ title empty$ - { type empty$ - { "" } - { "there's a type but no title in " cite$ * warning$ - type - } - if$ - } - { type empty$ - 'title - { title ": " * type * } - if$ - } - if$ -} - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - %new.sentence - %format.address.publisher output - } - { new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.address.publisher output - pages empty$ - { format.date "year" output.check - % new.sentence - % format.pages output - } - { format.date ":" * format.pages * output } - if$ - fin.entry -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { %journal emphasize "journal" output.check - journal "journal" output.check - %format.date "year" output.check - %new.block - year output - format.vol.num.pages output.year - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - new.block - format.note output - fin.entry -} - -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - howpublished address new.block.checkb - howpublished output - address output - format.date output - new.block - note output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - %format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - publisher "publisher" output.check - address output - } - { format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - pages empty$ - { format.date output } - { format.date ":" * format.pages * output } - if$ - % format.date "." * format.pages * output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - %format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - format.address.publisher output - %address output - %publisher "publisher" output.check - %format.edition output - % format.date "year" output.check - % format.date ". " * format.pages * output - format.date ":" * format.pages * output - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - % new.block - % note output - fin.entry -} - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - %format.number.series output - %format.pages output - address empty$ - { organization publisher new.sentence.checkb - organization output - publisher output - %format.date "year" output.check - year output - } - { %address output.nonnull - format.address.publisher output - %format.date "year" output.check - year output - new.sentence - organization output - %publisher output - } - if$ - new.block - format.pages output - %remove.dots - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - new.block - note output - fin.entry -} - -FUNCTION {conference} { inproceedings } - -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull - address output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { address new.block.checka - address output - } - 'skip$ - if$ - } - { organization address new.block.checkb - organization output - address output - } - if$ - format.edition output - format.date output - new.block - note output - fin.entry -} - -FUNCTION {masterthesis.type} -{ lang empty$ - { "[D]" } - { "\thumasterbib" } - if$ -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" add.period$ output.check - new.block - % format.title remove.dots ": " * masterthesis.type * output - format.title remove.dots masterthesis.type * output - new.block - format.address.school output - %format.madd "address" output.check - %school "school" output.check - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {bachelorthesis.type} -{ lang empty$ - { "[D]" } - { "本科学位论文" } - if$ -} - -FUNCTION {bachelorthesis} -{ output.bibitem - format.authors "author" add.period$ output.check - new.block - % format.title remove.dots ": " * bachelorthesis.type * output - format.title remove.dots bachelorthesis.type * output - new.block - format.address.school output - %format.madd "address" output.check - %school "school" output.check - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished output - format.date output - format.url output - new.block - note output - fin.entry - empty.misc.check -} - -FUNCTION {online} -{ output.bibitem - format.authors output - new.block - format.title remove.dots format.onlinemark * output - format.modifydate remove.dots format.citedate * output - format.url output - fin.entry -} - -FUNCTION {phdthesis.type} -{ lang empty$ - { "[D]" } - { "\thuphdbib" } - if$ -} - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" add.period$ output.check - new.block - % format.title remove.dots ": " * phdthesis.type * output - format.title remove.dots phdthesis.type * output - new.block - format.address.school output - %address output - %school "school" output.check - format.date "year" output.check - new.block - note output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - address empty$ - { editor empty$ - { publisher new.sentence.checka } - { organization publisher new.sentence.checkb - organization output - } - if$ - publisher output - format.date "year" output.check - } - { address output.nonnull - format.date "year" output.check - new.sentence - editor empty$ - 'skip$ - { organization output } - if$ - publisher output - } - if$ - new.block - note output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" output.check - address output - format.date "year" output.check - format.url output - new.block - note output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - note "note" output.check - format.date output - fin.entry -} - -FUNCTION {default.type} { misc } - -MACRO {jan} {"January"} - -MACRO {feb} {"February"} - -MACRO {mar} {"March"} - -MACRO {apr} {"April"} - -MACRO {may} {"May"} - -MACRO {jun} {"June"} - -MACRO {jul} {"July"} - -MACRO {aug} {"August"} - -MACRO {sep} {"September"} - -MACRO {oct} {"October"} - -MACRO {nov} {"November"} - -MACRO {dec} {"December"} - -READ - -STRINGS { longest.label } - -INTEGERS { number.label longest.label.width } - -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} - -FUNCTION {longest.label.pass} -{ number.label int.to.str$ 'label := - number.label #1 + 'number.label := - label width$ longest.label.width > - { label 'longest.label := - label width$ 'longest.label.width := - } - 'skip$ - if$ -} - -EXECUTE {initialize.longest.label} - -ITERATE {longest.label.pass} - -FUNCTION {begin.bib} -{ preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * write$ newline$ -} - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} - -EXECUTE {end.bib} diff --git a/thuthesis.dtx b/thuthesis.dtx index 0a93ab4f..b6c0d4c7 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1334,7 +1334,7 @@ % % 参考文献引用宏包。 % \begin{macrocode} -\RequirePackage[numbers,super,sort&compress]{natbib} +\RequirePackage[sort&compress]{natbib} % \end{macrocode} % % 删除默认模板(\file{book.cls})在章之间引入的垂直间隔。要放在 \pkg{hyperref} @@ -3050,19 +3050,21 @@ % \label{sec:ref} % % \begin{macro}{\inlinecite} -% 正文引用模式。依赖于 \pkg{natbib} 宏包,修改其中的命令。旧命令 \cs{onlinecite} -% 依然可用。 +% 定义正文引用模式,可用 \cs{citestyle} 调用 \texttt{numerical} 或 +% \texttt{authoryear},默认 \texttt{numerical}。 +% 依赖于 \pkg{natbib} 宏包,修改其中的命令。 旧命令 \cs{onlinecite} 依然可用。 % \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼 % 容性,\cs{onlinecite} 会保留。} % \begin{macrocode} %<*cls> -\bibpunct{[}{]}{,}{s}{}{,} -\renewcommand\NAT@citesuper[3]{\ifNAT@swa% - \unskip\kern\p@\textsuperscript{\NAT@@open #1\NAT@@close}% - \if*#3*\else\ (#3)\fi\else #1\fi\endgroup} +\newcommand\bibstyle@numerical{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} +\newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} +\citestyle{numerical} \DeclareRobustCommand\inlinecite{\@inlinecite} \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \let\onlinecite\inlinecite +% % \end{macrocode} % \end{macro} % @@ -3070,18 +3072,6 @@ % 行距采用固定值 16 磅,段前空 3 磅,段后空 0 磅。 % 本科生要求固定行距 17pt,段前后间距 3pt。 % -% \begin{macro}{\thudot} -% 研究生参考文献条目最后可加点,图书文献一般不加。 -% 本科生未作说明。 -% 只好定义一个东西来拙劣地处理了, -% 本来这个命令通过 \texttt{@preamble} 命令放到 bib 文件中是最省事的,但是那 -% 样的话很多人肯定不知道该怎么做了。 -% \changes{v3.1}{2007/06/19}{引入 \cs{thudot} 来自动完成参考文献最后的点。} -% \begin{macrocode} -\def\thudot{\ifthu@bachelor\else\unskip.\fi} -% -% \end{macrocode} -% \end{macro} % \begin{macro}{\thumasterbib} % \begin{macro}{\thuphdbib} % 本科生和研究生模板要求外文硕士论文参考文献显示``[Master Thesis]'',而博士模板 @@ -3094,8 +3084,8 @@ % \changes{v4.7}{2012/05/29}{修改两个宏使其对应不同的中文论文需求。} % \begin{macrocode} %<*cfg> -\def\thumasterbib{\ifthu@bachelor [D]\else [硕士学位论文]\fi} -\def\thuphdbib{\ifthu@bachelor [D]\else [博士学位论文]\fi} +\def\thumasterbib{\ifthu@bachelor D\else 硕士学位论文\fi} +\def\thuphdbib{\ifthu@bachelor D\else 博士学位论文\fi} % % \end{macrocode} % \end{macro} @@ -3130,10 +3120,51 @@ {\def\@noitemerr {\@latex@warning{Empty `thebibliography' environment}}% \endlist\frenchspacing} -% % \end{macrocode} % \end{environment} % +% 下面修改 \pkg{natbib} 的引用格式,主要是将页码写在上标位置。 +% Numerical 模式的 \cs{citet} 的页码: +% \begin{macrocode} +\patchcmd\NAT@citexnum{% + \@ifnum{\NAT@ctype=\z@}{% + \if*#2*\else\NAT@cmt#2\fi + }{}% + \NAT@mbox{\NAT@@close}% +}{% + \NAT@mbox{\NAT@@close}% + \@ifnum{\NAT@ctype=\z@}{% + \if*#2*\else\textsuperscript{#2}\fi + }{}% +}{}{} +% \end{macrocode} +% +% Numerical 模式的 \cs{citep} 的页码: +% \begin{macrocode} +\renewcommand\NAT@citesuper[3]{\ifNAT@swa + \if*#2*\else#2\NAT@spacechar\fi +\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close\if*#3*\else#3\fi}% + \else #1\fi\endgroup} +% \end{macrocode} +% +% Author-year 模式的 \cs{citet} 的页码: +% \begin{macrocode} +\patchcmd{\NAT@citex}{% + \if*#2*\else\NAT@cmt#2\fi + \if\relax\NAT@date\relax\else\NAT@@close\fi +}{% + \if\relax\NAT@date\relax\else\NAT@@close\fi + \if*#2*\else\textsuperscript{#2}\fi +}{}{} +% \end{macrocode} +% +% Author-year 模式的 \cs{citep} 的页码: +% \begin{macrocode} +\renewcommand\NAT@cite% + [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi + #1\NAT@@close\if*#3*\else\textsuperscript{#3}\fi\else#1\fi\endgroup} +% +% \end{macrocode} % % \subsection{附录} % \label{sec:appendix} From 5793647ce2d317bd889367e1b143128adaac35ab Mon Sep 17 00:00:00 2001 From: pingplug Date: Tue, 30 May 2017 19:51:58 +0800 Subject: [PATCH 05/25] =?UTF-8?q?=E8=B0=83=E8=8A=82=E6=9C=AC=E7=A7=91?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E6=AE=B5=E9=97=B4=E8=B7=9D=E5=92=8C=E8=A1=8C?= =?UTF-8?q?=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thuthesis.dtx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) mode change 100644 => 100755 thuthesis.dtx diff --git a/thuthesis.dtx b/thuthesis.dtx old mode 100644 new mode 100755 index b6c0d4c7..e76144b4 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1938,8 +1938,9 @@ % % \changes{v4.4}{2008/06/04}{调整段前距为 -20bp 而不是原来的 -24bp。} % -% \item[subsection] 二级节标题,例如:\fbox{2.1.1 实验装置}。采用黑体 13pt (本科 -% 生是 14pt) 字居左书写,行距为固定值 20 磅,段前空 12 磅,段后空 6 磅。 +% \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。} @@ -1961,10 +1962,10 @@ chapter={ afterindent=true, pagestyle={\ifthu@bachelor thu@plain\else thu@headings\fi}, - beforeskip={\ifthu@bachelor 13bp\else 9bp\fi}, + beforeskip={\ifthu@bachelor 8bp\else 9bp\fi}, aftername=\hskip\ccwd, - afterskip={\ifthu@bachelor 20bp\else 24bp\fi}, - format={\centering\thu@title@font\ifthu@bachelor\xiaosan\else\sanhao[1]\fi}, + afterskip={\ifthu@bachelor 25bp\else 24bp\fi}, + format={\centering\thu@title@font\ifthu@bachelor\xiaosan[1.333]\else\sanhao[1]\fi}, nameformat=\relax, numberformat=\relax, titleformat=\thu@chapter@titleformat, @@ -1973,19 +1974,20 @@ afterindent=true, beforeskip={\ifthu@bachelor 25bp\else 24bp\fi\@plus 1ex \@minus .2ex}, afterskip={\ifthu@bachelor 12bp\else 6bp\fi \@plus .2ex}, - format={\thu@title@font\sihao[1.429]}, + format={\thu@title@font\ifthu@bachelor\sihao[1.286]\else\sihao[1.429]\fi}, }, subsection={ afterindent=true, beforeskip={\ifthu@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex}, afterskip={6bp \@plus .2ex}, - format={\thu@title@font\ifthu@bachelor\xiaosi[1.667]\else\banxiaosi[1.538]\fi}, + format={\thu@title@font\ifthu@bachelor\xiaosi[1.25]\else\banxiaosi[1.538]\fi}, + numberformat={\thu@title@font\ifthu@bachelor\banxiaosi[1.154]\else\banxiaosi[1.538]\fi}, }, subsubsection={ afterindent=true, beforeskip={\ifthu@bachelor 12bp\else 16bp\fi\@plus 1ex \@minus .2ex}, afterskip={6bp \@plus .2ex}, - format={\thu@title@font\xiaosi[1.667]}, + format={\thu@title@font\ifthu@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi}, }, paragraph/afterindent=true, subparagraph/afterindent=true} From 6fb6393a39b2c536a56bbf8a669423e8ed4d0c02 Mon Sep 17 00:00:00 2001 From: pingplug Date: Mon, 5 Jun 2017 16:19:31 +0800 Subject: [PATCH 06/25] =?UTF-8?q?=E7=BB=86=E8=8A=82=E4=BF=AE=E6=94=B9=201.?= =?UTF-8?q?=20=E9=A1=B5=E8=BE=B9=E8=B7=9D=E4=BF=AE=E6=94=B9=EF=BC=8C?= =?UTF-8?q?=E7=AB=A0=E7=9A=84=E6=AE=B5=E9=97=B4=E8=B7=9D=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=202.=20=E7=9B=AE=E5=BD=95=E8=A1=8C=E8=B7=9D?= =?UTF-8?q?=E5=92=8C=E9=97=B4=E8=B7=9D=E7=9A=84=E4=BF=AE=E6=94=B9=203.=20?= =?UTF-8?q?=E6=96=87=E7=8C=AE=E7=BF=BB=E8=AF=91=E7=9A=84=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E8=A6=81=E6=B1=82=E5=AE=8B=E4=BD=93=E8=80=8C=E4=B8=8D=E6=98=AF?= =?UTF-8?q?=E9=BB=91=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thuthesis.dtx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index e76144b4..1087d967 100755 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1398,9 +1398,9 @@ left=32mm, headheight=5mm, headsep=5mm, - textheight=220mm, - bottom=37mm, - footskip=17mm} + textheight=227mm, + bottom=32mm, + footskip=12mm} \else \geometry{ left=30mm, @@ -1962,9 +1962,9 @@ chapter={ afterindent=true, pagestyle={\ifthu@bachelor thu@plain\else thu@headings\fi}, - beforeskip={\ifthu@bachelor 8bp\else 9bp\fi}, + beforeskip={\ifthu@bachelor 15bp\else 9bp\fi}, aftername=\hskip\ccwd, - afterskip={\ifthu@bachelor 25bp\else 24bp\fi}, + afterskip={\ifthu@bachelor 20bp\else 24bp\fi}, format={\centering\thu@title@font\ifthu@bachelor\xiaosan[1.333]\else\sanhao[1]\fi}, nameformat=\relax, numberformat=\relax, @@ -2065,7 +2065,7 @@ % \begin{macrocode} \renewcommand\tableofcontents{% \thu@chapter*[]{\contentsname} - \ifthu@bachelor\xiaosi[1.8]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize} + \ifthu@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}。} @@ -2081,7 +2081,7 @@ \renewcommand*\l@chapter[2]{% \ifnum \c@tocdepth >\m@ne \addpenalty{-\@highpenalty}% - \vskip 4bp \@plus\p@ + \ifthu@bachelor \vskip 6bp \else \vskip 4bp \fi \@plus\p@ \setlength\@tempdima{4em}% \begingroup \parindent \z@ \rightskip \@pnumwidth @@ -3102,7 +3102,7 @@ %<*cls> \renewenvironment{thebibliography}[1]{% \thu@chapter*{\bibname}% - \wuhao[1.5] + \ifthu@bachelor \wuhao[1.619]\else \wuhao[1.5]\fi \list{\@biblabel{\@arabic\c@enumiv}}% {\renewcommand{\makelabel}[1]{##1\hfill} \settowidth\labelwidth{1.1cm} @@ -3190,7 +3190,7 @@ \let\title\@gobble \newcommand{\thu@appendix@title}[1]{% \begin{center} - \bfseries\xiaosi #1 + \xiaosi[1.667] #1 \end{center}} % \end{macrocode} % \end{macro} From bf1d82f4b69e7bc8dadde07542d9990cd7d59697 Mon Sep 17 00:00:00 2001 From: pingplug Date: Mon, 5 Jun 2017 17:24:22 +0800 Subject: [PATCH 07/25] =?UTF-8?q?=E8=B0=83=E8=8A=82=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=AE=B5=E5=89=8D=E9=97=B4=E8=B7=9D=20=E6=9C=AC=E7=A7=91?= =?UTF-8?q?=E7=94=9F=E8=A6=81=E6=B1=82=E6=91=98=E8=A6=81=E3=80=81=E4=B8=BB?= =?UTF-8?q?=E8=A6=81=E7=AC=A6=E5=8F=B7=E8=A1=A8=E3=80=81=E6=8F=92=E5=9B=BE?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E3=80=81=E8=A1=A8=E6=A0=BC=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E3=80=81=E8=87=B4=E8=B0=A2=E3=80=81=20=E5=9C=A8=E5=AD=A6?= =?UTF-8?q?=E6=9C=9F=E9=97=B4=E5=8F=82=E5=8A=A0=E8=AF=BE=E9=A2=98=E7=9A=84?= =?UTF-8?q?=E7=A0=94=E7=A9=B6=E6=88=90=E6=9E=9C=E7=9A=84=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=AE=B5=E5=89=8D=E9=97=B4=E8=B7=9D=E4=B8=BA40pt=20=E4=BC=9A?= =?UTF-8?q?=E5=BD=B1=E5=93=8D=E7=9B=AE=E5=BD=95=E6=A0=87=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E4=BD=86=E7=9B=AE=E5=BD=95=E6=A0=87=E9=A2=98=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E6=9C=AA=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thuthesis.dtx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/thuthesis.dtx b/thuthesis.dtx index 1087d967..b74f88f3 100755 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -2022,7 +2022,9 @@ }{% \addcontentsline{toc}{chapter}{#3} }% + \ifthu@bachelor \ctexset{chapter/beforeskip=25bp} \fi \chapter*{#3}% + \ifthu@bachelor \ctexset{chapter/beforeskip=15bp} \fi \IfValueTF{#4}{% \ifthenelse{\equal{#4}{}} {\@mkboth{}{}} From cd466515ecb0d7b012c388483f280c4256ce5caf Mon Sep 17 00:00:00 2001 From: pingplug Date: Mon, 5 Jun 2017 22:35:26 +0800 Subject: [PATCH 08/25] =?UTF-8?q?=E7=B4=A2=E5=BC=95=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E4=B9=8B=E9=97=B4=E7=9A=84=E9=97=B4=E9=9A=94=E9=80=9A=E8=BF=87?= =?UTF-8?q?CTeX=E8=AE=BE=E7=BD=AE=20=E5=8E=9F=E6=9C=89=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=B7=B2=E7=BB=8F=E5=A4=B1=E6=95=88=20=E6=9C=AC?= =?UTF-8?q?=E7=A7=91=E7=B4=A2=E5=BC=95=E9=97=B4=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?6bp=E9=97=B4=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thuthesis.dtx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index b74f88f3..1433dae5 100755 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1340,8 +1340,6 @@ % 删除默认模板(\file{book.cls})在章之间引入的垂直间隔。要放在 \pkg{hyperref} % 之前。 % \begin{macrocode} -\patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{} % lof -\patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{} % lot % \end{macrocode} % 生成有书签的 pdf 及其开关,请结合 gbk2uni 避免书签乱码。 % \changes{v2.6}{2006/06/09}{去除 hyperref 选项,等待全局传递。} @@ -1969,6 +1967,8 @@ nameformat=\relax, numberformat=\relax, titleformat=\thu@chapter@titleformat, + lofskip=0pt, + lotskip=0pt, }, section={ afterindent=true, @@ -3003,7 +3003,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{\addvspace{6bp}\@dottedtocline{1}{0em}{4em}} +\renewcommand*\l@figure{\ifthu@bachelor\relax\else\addvspace{6bp}\fi\@dottedtocline{1}{0em}{4em}} \renewcommand\listoftables{\thu@listof{table}} \let\l@table\l@figure % \end{macrocode} From b68b6b4e92387fda2a676cd600f7d5ba8dcfb31a Mon Sep 17 00:00:00 2001 From: nero19960329 Date: Wed, 7 Jun 2017 23:00:35 +0800 Subject: [PATCH 09/25] bachelor cover [b] problem fixed --- thuthesis.dtx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index e76144b4..2458aa60 100755 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -2438,8 +2438,13 @@ %<*cls> \newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt} \newlength{\thu@title@width} -\newcommand{\thu@put@title}[2][\thu@title@width]{% +\ifxetex % todo: ugly codes + \newcommand{\thu@put@title}[2][\thu@title@width]{% \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}} +\else + \newcommand{\thu@put@title}[2][\thu@title@width]{% + \begin{CJKfilltwosides}{#1}#2\end{CJKfilltwosides}} +\fi \def\thu@first@titlepage{% \ifthu@postdoctor\thu@first@titlepage@postdoctor\else\thu@first@titlepage@other\fi} \newcommand{\thu@first@titlepage@postdoctor}{ From 3d06bdfe586a84517b327c9c8ccac318941b8069 Mon Sep 17 00:00:00 2001 From: pingplug Date: Tue, 20 Jun 2017 17:38:09 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E5=B0=81=E9=9D=A2=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=B3=A8=E6=84=8F=EF=BC=9A=E9=9C=80=E8=A6=81=E9=9A=B6=E4=B9=A6?= =?UTF-8?q?=E5=AD=97=E4=BD=93=20=E5=BB=BA=E8=AE=AE=E4=BD=BF=E7=94=A8CTeX?= =?UTF-8?q?=E9=87=8C=E7=9A=84windowsold?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- thuthesis.dtx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index 1433dae5..e303d216 100755 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -2497,14 +2497,14 @@ \parbox[b][2.4cm][t]{\textwidth}{% \ifthu@secret{\heiti\sanhao\thu@secretlevel\thu@secret@content}\else\rule{1cm}{0cm}\fi} \ifthu@bachelor - \vskip0.45cm - {\includegraphics{tsinghua}} + \vskip0.65cm + {\yihao\lishu\ziju{0.5}\thu@schoolname} \par\vskip1.5cm - {\xiaochu\heiti\ziju{0.5}\thu@bachelor@subtitle} - \vskip2.2cm + {\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.55]% + \ignorespaces\yihao[1.51]% \renewcommand{\CJKunderlinebasesep}{0.25cm}% \renewcommand{\ULthickness}{1.3pt}% \ifxetex @@ -2535,15 +2535,15 @@ % \changes{v5.1.0}{2015/12/27}{修改联合指导教师显示问题。} % \begin{macrocode} \ifthu@bachelor - \vskip1cm + \vskip0.75cm \ifx\thu@cassosupervisor\@empty% - \def\thu@tempa{7.0cm} + \def\thu@tempa{7.15cm} \else% - \def\thu@tempa{8.0cm} + \def\thu@tempa{8.15cm} \fi% \parbox[t][\thu@tempa][t]{\textwidth}{% - {\fangsong\sanhao[1.8]% - \hspace*{1.65cm} + {\fangsong\sanhao[1.95]% + \hspace*{1.9cm} \setlength{\thu@title@width}{4em} \setlength{\extrarowheight}{6pt} \ifxetex % todo: ugly codes @@ -2602,7 +2602,7 @@ % \changes{v4.4.3}{2008/06/09}{修改本科生论文封面日期格式以符合新样例。} % \begin{macrocode} \begin{center} - {\ifthu@bachelor\vskip-1.0cm\hskip-1.2cm\xiaosi\else% + {\ifthu@bachelor\vskip-1.0cm\xiaosi\else% \vskip-0.5cm\sanhao\fi% \songti\thu@cdate} \end{center} @@ -2844,7 +2844,7 @@ % \changes{v4.4.2}{2008/06/05}{本科生格式中文关键词采用首行缩进且无悬挂缩进。} % \begin{macrocode} \vskip12bp - \thu@put@keywords{\heiti\thu@ckeywords@title}{\thu@ckeywords} + \thu@put@keywords{\textbf\thu@ckeywords@title}{\thu@ckeywords} % \end{macrocode} % % 英文摘要部分的标题为 \textbf{Abstract},用 Arial 体三号字。研究生的英文摘要要求 From e6c0ff9989035f4e4670a8f70f4eb1213698d2fd Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Mon, 17 Jul 2017 12:28:37 +0800 Subject: [PATCH 11/25] Use simfonts in example. --- main.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main.tex b/main.tex index ed6f0b2c..1cb66a68 100644 --- a/main.tex +++ b/main.tex @@ -1,4 +1,4 @@ -\documentclass[type=master]{thuthesis} +\documentclass[type=bachelor,fontset=windowsold]{thuthesis} % 选项: % type=[bachelor|master|doctor|postdoctor], % 必选 % secret, % 可选 @@ -55,6 +55,8 @@ % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。 % 如果不需要参考文献,请将下面两行删除或注释掉。 \bibliographystyle{thuthesis-numerical} +% \citestyle{authoryear} +% \bibliographystyle{thuthesis-author-year} \bibliography{ref/refs} From b2dda8ac68d944155ada898847292afae8311bab Mon Sep 17 00:00:00 2001 From: Zeping Lee Date: Fri, 8 Sep 2017 18:44:48 +0800 Subject: [PATCH 12/25] add ci --- .travis.yml | 41 +++++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..982434af --- /dev/null +++ b/.travis.yml @@ -0,0 +1,41 @@ +os: + - linux + +sudo: required + +install: + - REMOTE="http://mirror.ctan.org/systems/texlive/tlnet" + - INSTALL="/tmp/install-texlive" + - mkdir -p $INSTALL + - curl -sSL $REMOTE/install-tl-unx.tar.gz | tar -xzv -C $INSTALL --strip-components=1 + + - echo "selected_scheme scheme-basic" >> $INSTALL/tl.profile + - echo "collection-basic 1" >> $INSTALL/tl.profile + - echo "collection-fontsrecommended 1" >> $INSTALL/tl.profile + - echo "collection-langchinese 1" >> $INSTALL/tl.profile + - echo "collection-latex 1" >> $INSTALL/tl.profile + - echo "collection-latexextra 1" >> $INSTALL/tl.profile + - echo "collection-latexrecommended 1" >> $INSTALL/tl.profile + - echo "collection-xetex 1" >> $INSTALL/tl.profile + - echo "tlpdbopt_autobackup 0" >> $INSTALL/tl.profile + - echo "tlpdbopt_install_docfiles 0" >> $INSTALL/tl.profile + - echo "tlpdbopt_install_srcfiles 0" >> $INSTALL/tl.profile + + - sudo $INSTALL/install-tl -profile $INSTALL/tl.profile + + - VERSION=$($INSTALL/install-tl --version | grep 'version' | grep -o '[0-9]\{4\}') + - PLATFORM=$($INSTALL/install-tl --print-platform) + - TEXBIN="/usr/local/texlive/${VERSION}/bin/${PLATFORM}" + - export "PATH=$TEXBIN:$PATH" + + - sudo $TEXBIN/tlmgr install boondox latexmk ulem newpx newtx + +before_script: + - sed -i 's/type=bachelor/type=doctor/' main.tex + - sed -i 's/,fontset=windowsold//' main.tex + - sed -i 's/\[RawFeature={vertical:}\]{FangSong}/\[Extension=.otf,RawFeature={vertical:}\]{FandolFang-Regular}/' shuji.tex + +script: + - make thesis + - make shuji + - make doc diff --git a/Makefile b/Makefile index aecc2c7b..50b6d6f2 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # Compiling method: latexmk/xelatex/pdflatex METHOD = latexmk # Set opts for latexmk if you use it -LATEXMKOPTS = -xelatex +LATEXMKOPTS = -xelatex -halt-on-error -interaction=nonstopmode # Basename of thesis THESISMAIN = main # Basename of shuji From 0e07d95b55d3f43e83bf9236b042e4808c9b88dc Mon Sep 17 00:00:00 2001 From: Zeping Lee Date: Fri, 8 Sep 2017 21:08:00 +0800 Subject: [PATCH 13/25] enhance cross platform compatibility --- main.tex | 2 +- shuji.tex | 4 +--- thuthesis.dtx | 10 +++++++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/main.tex b/main.tex index 1cb66a68..e2fde505 100644 --- a/main.tex +++ b/main.tex @@ -1,4 +1,4 @@ -\documentclass[type=bachelor,fontset=windowsold]{thuthesis} +\documentclass[type=master]{thuthesis} % 选项: % type=[bachelor|master|doctor|postdoctor], % 必选 % secret, % 可选 diff --git a/shuji.tex b/shuji.tex index 7454ab27..e073e1e5 100644 --- a/shuji.tex +++ b/shuji.tex @@ -1,8 +1,6 @@ \documentclass[type=master]{thuthesis} -\ifxetex - \setCJKfamilyfont{zhfs}[RawFeature={vertical:}]{FangSong} -\else % for latex/pdflatex +\ifxetex\relax\else % for latex/pdflatex \usepackage{CJKvert} \fi diff --git a/thuthesis.dtx b/thuthesis.dtx index f9bd45a1..eb183da8 100755 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1165,6 +1165,12 @@ \DeclareBoolOption{arialtitle} % \end{macrocode} % +% 在 Windows Vista 或之后系统下时,默认使用微软雅黑,这可能会导致审查不合格。 +% 下面设置默认不使用微软雅黑,同时保持跨平台兼容性。 +% \begin{macrocode} +\IfFileExists{/dev/null}{}{\PassOptionsToClass{fontset=windowsold}{ctexbook}} +% \end{macrocode} +% % \option{raggedbottom} 选项(默认打开) % \changes{v4.8}{2013/03/05}{增加 noraggedbottom 选项。} % \changes{v5.0.0}{2015/12/13}{norggedbottom 选项修改为 raggedbottom。} @@ -3296,7 +3302,9 @@ % \begin{macrocode} %<*cls> \NewDocumentCommand{\shuji}{O{\thu@ctitle} O{\thu@cauthor}}{% - \newpage\thispagestyle{empty}\fangsong\xiaosan\ziju{0.4}% + \newpage\thispagestyle{empty}% + \fangsong\ifxetex\addCJKfontfeatures*{RawFeature={vertical:}}\fi + \xiaosan\ziju{0.4}% \noindent\hfill\rotatebox[origin=lt]{-90}{\makebox[\textheight]{#1\hfill#2}}} % % \end{macrocode} From 846e9f84e7d6b31298976d822c16963b45ca3995 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Mon, 11 Sep 2017 11:55:06 +0800 Subject: [PATCH 14/25] Remove execute bits. --- thuthesis.dtx | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 thuthesis.dtx diff --git a/thuthesis.dtx b/thuthesis.dtx old mode 100755 new mode 100644 From 2d9bab665e77614de36ca42be6b6e73ceb41df3c Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Mon, 9 Oct 2017 14:12:48 +0800 Subject: [PATCH 15/25] Update pkg. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2c4edc8f..6d506a8a 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "homepage": "https://github.com/xueruini/thuthesis#readme", "devDependencies": { - "del": "^2.2.2", + "del": "^3.0.0", "gulp": "^3.9.1", "gulp-util": "^3.0.8", "gulp-zip": "^4.0.0" From 9841a0c827a05546bc3a7205c4127183a6961c33 Mon Sep 17 00:00:00 2001 From: YANG Zheng Date: Fri, 24 Nov 2017 10:43:13 +0800 Subject: [PATCH 16/25] add .xdv to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1a5426cf..5f0516b1 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ dist *.hd *.fdb_latexmk *.fls +*.xdv dtx-style.sty thuthesis.cls thuthesis.cfg From 979ec3b83151d913d5bc9a423fe5e73d9aadf6f9 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Fri, 1 Dec 2017 23:06:39 +0800 Subject: [PATCH 17/25] Support author-year citation. --- main.tex | 4 +- thuthesis.dtx | 117 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 78 insertions(+), 43 deletions(-) diff --git a/main.tex b/main.tex index e2fde505..61e6a8d5 100644 --- a/main.tex +++ b/main.tex @@ -1,6 +1,7 @@ -\documentclass[type=master]{thuthesis} +\documentclass[type=master,citestyle=numerical]{thuthesis} % 选项: % type=[bachelor|master|doctor|postdoctor], % 必选 +% citestyle=[numerical|authoryear], % 可选 % secret, % 可选 % pifootnote, % 可选(建议打开) % openany|openright, % 可选,基本不用 @@ -35,6 +36,7 @@ %%% 正文部分 \mainmatter +\textit{what}\textbf{shit} \include{data/chap01} \include{data/chap02} diff --git a/thuthesis.dtx b/thuthesis.dtx index eb183da8..7680ec4f 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -1,16 +1,16 @@ % \iffalse meta-comment % -% Copyright (C) 2005-2016 by Ruini Xue +% Copyright (C) 2005-2017 by Ruini Xue % -% This file may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3a +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. -% The latest version of this license is in: +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. % -% http://www.latex-project.org/lppl.txt -% -% and version 1.3a or later is part of all distributions of LaTeX -% version 2004/10/01 or later. +% This work has the LPPL maintenance status `maintained'. % % \fi % @@ -403,6 +403,14 @@ % \documentclass[type=master]{thuthesis} % \end{latex} % +% +% \DescribeOption{citestyle} +% 选择引用风格类型,当前支持:\option{numerical}(默认值),\option{authoryear}。 +% \begin{latex} +% % 理工科一般用 numerical;文科一般用 authoryear。 +% \documentclass[citestyle=authoryear]{thuthesis} +% \end{latex} +% % \DescribeOption{secret} % 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置(或命 % 令)\cs{secretlevel}\marg{级别} 和 \cs{secretyear}\marg{年数} 分别用来指定保 @@ -853,12 +861,11 @@ % % \subsubsection{致谢声明} % \DescribeEnv{acknowledgement} -% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦!下面是数学系一位同 -% 学致谢里的话,拿过来做个广告。希望每个人都能写这么一句 :) +% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦。 % \begin{latex} % \begin{acknowledgement} % … -% 还要特别感谢计算机系薛瑞尼同学在论文格式和 \LaTeX\ 编译等方面给我的很多帮助! +% 还要特别感谢 \thuthesis\ 节省了论文排版时间! % \end{acknowledgement} % \end{latex} % @@ -1099,7 +1106,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{thuthesis} %\ProvidesFile{thuthesis.cfg} -%[2017/03/26 5.3.2 Tsinghua University Thesis Template] +%[2017/12/1 5.4.0 Tsinghua University Thesis Template] % \end{macrocode} % % \subsection{定义选项} @@ -1118,7 +1125,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} -\def\version{5.3.2} +\def\version{5.4.0} \RequirePackage{kvoptions} \SetupKeyvalOptions{ @@ -1127,7 +1134,7 @@ setkeys=\kvsetkeys} % \end{macrocode} % -% 用 \pkg{kvoptions} 的 key=value 方式来设置论文类型。 +% 用 \pkg{kvoptions} 的 \texttt{key=value} 方式来设置论文类型。 % \changes{v5.0.0}{2015/12/13}{使用 \pkg{kvoptions} 简化选项 type。} % \begin{macrocode} \newif\ifthu@bachelor @@ -1139,7 +1146,18 @@ \thu@masterfalse \thu@doctorfalse \thu@postdoctorfalse - \expandafter\csname thu@#1true\endcsname} + \expandafter\csname thu@#1true\endcsname + \ifthu@bachelor\relax\else + \ifthu@master\relax\else + \ifthu@doctor\relax\else + \ifthu@postdoctor\relax\else + \ClassError{thuthesis}% + {Please specify thesis type in option: \MessageBreak + type=[bachelor | master | doctor | postdoctor]}{} + \fi + \fi + \fi + \fi} \def\thu@deprecated@type@option{% \kvsetkeys{thu}{type=\CurrentOption} % for compatability. \ClassError{thuthesis}{Option '\CurrentOption' is deprecated, \MessageBreak @@ -1150,6 +1168,26 @@ \DeclareVoidOption{postdoctor}{\thu@deprecated@type@option} % \end{macrocode} % +% 通过 citestyle 控制引用文献显示方式。 +% \changes{v5.4.0}{2017/12/1}{支持不同引用类型。} +% \begin{macrocode} +\newif\ifthu@cite@numerical +\newif\ifthu@cite@authoryear +\define@key{thu}{citestyle}{% + \thu@cite@numericalfalse + \thu@cite@authoryearfalse + \expandafter\csname thu@cite@#1true\endcsname + \ifthu@cite@numerical\relax\else + \ifthu@cite@authoryear\relax\else + \ClassError{thuthesis}% + {Allowed cite style: \MessageBreak + citestyle=[numberical | authoryear]}{} + + \fi + \fi + \gdef\thu@citestyle{#1}} +% \end{macrocode} +% % 论文是否保密。 % \begin{macrocode} \DeclareBoolOption{secret} @@ -1195,6 +1233,7 @@ % 打开默认选项。 % \begin{macrocode} \kvsetkeys{thu}{% + citestyle=numerical, raggedbottom, arialtitle} % \end{macrocode} @@ -1217,20 +1256,6 @@ \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook} % \end{macrocode} % -% 用户至少要提供一个选项,指定论文类型。 -% \begin{macrocode} -\ifthu@bachelor\relax\else - \ifthu@master\relax\else - \ifthu@doctor\relax\else - \ifthu@postdoctor\relax\else - \ClassError{thuthesis}% - {Please specify thesis type in option: \MessageBreak - type=[bachelor | master | doctor | postdoctor]}{} - \fi - \fi - \fi -\fi -% \end{macrocode} % % \subsection{装载宏包} % \label{sec:loadpackage} @@ -3065,8 +3090,6 @@ % \label{sec:ref} % % \begin{macro}{\inlinecite} -% 定义正文引用模式,可用 \cs{citestyle} 调用 \texttt{numerical} 或 -% \texttt{authoryear},默认 \texttt{numerical}。 % 依赖于 \pkg{natbib} 宏包,修改其中的命令。 旧命令 \cs{onlinecite} 依然可用。 % \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼 % 容性,\cs{onlinecite} 会保留。} @@ -3075,7 +3098,7 @@ \newcommand\bibstyle@numerical{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} \newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} \newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} -\citestyle{numerical} +\citestyle{\thu@citestyle} \DeclareRobustCommand\inlinecite{\@inlinecite} \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \let\onlinecite\inlinecite @@ -3115,17 +3138,27 @@ %<*cls> \renewenvironment{thebibliography}[1]{% \thu@chapter*{\bibname}% - \ifthu@bachelor \wuhao[1.619]\else \wuhao[1.5]\fi - \list{\@biblabel{\@arabic\c@enumiv}}% - {\renewcommand{\makelabel}[1]{##1\hfill} - \settowidth\labelwidth{1.1cm} - \setlength{\labelsep}{0.4em} - \setlength{\itemindent}{0pt} + \ifthu@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi + \list{\ifthu@cite@numerical\@biblabel{\@arabic\c@enumiv}\else\@empty\fi}% + {\ifthu@cite@numerical + \renewcommand{\makelabel}[1]{##1\hfil} + \settowidth\labelwidth{1.1cm} + \setlength{\labelsep}{0.4em} + \setlength{\itemindent}{0pt} + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv} + \else % author year + \newsavebox\thu@label + \renewcommand{\makelabel}[1]{% + \sbox\thu@label{##1}% TODO: too dirty... + \usebox\thu@label\llap{\textcolor{white}{\rule[-0.2em]{\wd\thu@label}{1.2em}}}} + \settowidth\labelwidth{0cm} + \setlength{\labelsep}{0em} + \setlength{\itemindent}{-2\ccwd} + \fi \setlength{\leftmargin}{\labelwidth+\labelsep} - \addtolength{\itemsep}{-0.7em} - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \addtolength{\itemsep}{-0.7em}}% \sloppy\frenchspacing \clubpenalty4000 \@clubpenalty \clubpenalty From 9ca292f94fc8f312c1c375b8596cd11f0ea1340d Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sat, 2 Dec 2017 11:00:00 +0800 Subject: [PATCH 18/25] Update doc. --- main.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.tex b/main.tex index 61e6a8d5..5d5b774d 100644 --- a/main.tex +++ b/main.tex @@ -56,8 +56,8 @@ %% 参考文献 % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。 % 如果不需要参考文献,请将下面两行删除或注释掉。 +% style 要配合 citestyle \bibliographystyle{thuthesis-numerical} -% \citestyle{authoryear} % \bibliographystyle{thuthesis-author-year} \bibliography{ref/refs} From 8fc8d76277e5b59388d4f38ccc37eb90b40634f7 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sat, 2 Dec 2017 11:03:57 +0800 Subject: [PATCH 19/25] Update. --- main.tex | 2 +- thuthesis-author-year.bst => thuthesis-authoryear.bst | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename thuthesis-author-year.bst => thuthesis-authoryear.bst (100%) diff --git a/main.tex b/main.tex index 5d5b774d..01a8bf2c 100644 --- a/main.tex +++ b/main.tex @@ -58,7 +58,7 @@ % 如果不需要参考文献,请将下面两行删除或注释掉。 % style 要配合 citestyle \bibliographystyle{thuthesis-numerical} -% \bibliographystyle{thuthesis-author-year} +% \bibliographystyle{thuthesis-authoryear} \bibliography{ref/refs} diff --git a/thuthesis-author-year.bst b/thuthesis-authoryear.bst similarity index 100% rename from thuthesis-author-year.bst rename to thuthesis-authoryear.bst From 4d7c5f78ccd7a20ec38e9b1ad730ded598dce72b Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sat, 2 Dec 2017 11:09:26 +0800 Subject: [PATCH 20/25] Update doc. --- thuthesis.dtx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index 7680ec4f..e7c38143 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -238,7 +238,8 @@ % thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule % thuthesis.cls & 模板类文件\\ % thuthesis.cfg & 模板配置文件\\ -% thuthesis.bst & 参考文献样式文件\\\midrule +% thuthesis-numerical.bst & 参考文献样式文件\\ +% thuthesis-authoryear.bst & 参考文献样式文件\\\midrule % main.tex & 示例文档主文件\\ % shuji.tex & 书脊示例文档\\ % ref/ & 示例文档参考文献目录\\ @@ -1091,10 +1092,9 @@ % % \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} % \clearpage From d56f56e00f6bb8285d73a227db1d7c7bf9df0e88 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sat, 2 Dec 2017 11:30:55 +0800 Subject: [PATCH 21/25] Update doc. --- data/ack.tex | 3 +-- data/chap01.tex | 31 +++++++++++++++++-------------- data/chap02.tex | 10 +++++----- ref/refs.bib | 9 +++++++++ 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/data/ack.tex b/data/ack.tex index 84e4ed1a..bdab98fb 100644 --- a/data/ack.tex +++ b/data/ack.tex @@ -8,6 +8,5 @@ 胜感激。感谢 xx 实验室主任 xx 教授,以及实验室全体老师和同学们的热情帮助和支 持!本课题承蒙国家自然科学基金资助,特此致谢。 - 感谢 \thuthesis,它的存在让我的论文写作轻松自在了许多,让我的论文格式规整漂亮了 - 许多。 + 感谢 \LaTeX 和 \thuthesis\cite{thuthesis},帮我节省了不少时间。 \end{acknowledgement} diff --git a/data/chap01.tex b/data/chap01.tex index 2b255aac..89f28880 100644 --- a/data/chap01.tex +++ b/data/chap01.tex @@ -1,8 +1,9 @@ \chapter{带 English 的标题} \label{cha:intro} -这是 \thuthesis{} 的示例文档,基本上覆盖了模板中所有格式的设置。建议大家在使用模 -板之前,除了阅读《\thuthesis{}用户手册》,这个示例文档也最好能看一看。 +这是 \thuthesis\cite{thuthesis} 的示例文档,基本上覆盖了模板中所有格式的设置。建 +议大家在使用模板之前,除了阅读《\thuthesis{}用户手册》,这个示例文档也最好能看一 +看。 小老鼠偷吃热凉粉;短长虫环绕矮高粱\footnote{韩愈(768-824),字退之,河南河阳( 今河南孟县)人,自称郡望昌黎,世称韩昌黎。幼孤贫刻苦好学,德宗贞元八年进士。曾 @@ -12,8 +13,9 @@ \chapter{带 English 的标题} \section{封面相关} -封面的例子请参看 cover.tex。主要符号表参看 denation.tex,附录和个人简历分别参看 appendix01.tex -和 resume.tex。里面的命令都很直观,一看即会\footnote{你说还是看不懂?怎么会呢?}。 +封面的例子请参看 \texttt{cover.tex}。主要符号表参看 \texttt{denation.tex},附录和 +个人简历分别参看 \texttt{appendix01.tex} 和 \texttt{resume.tex}。里面的命令都很直 +观,一看即会\footnote{你说还是看不懂?怎么会呢?}。 \section{字体命令} \label{sec:first} @@ -66,11 +68,10 @@ \section{表格样本} \subsection{基本表格} \label{sec:basictable} -模板中关于表格的宏包有三个: \pkg{booktabs}、\pkg{array} 和 -\pkg{longtabular},命令有一个 \cs{hlinewd}。三线表可以用 \pkg{booktabs} -提供的 \cs{toprule}、\cs{midrule} 和 \cs{bottomrule}。它们与 -\pkg{longtable} 能很好的配合使用。如果表格比较简单的话可以直接用命令 -\cs{hlinewd}\marg{width} 控制。 +模板中关于表格的宏包有三个:\pkg{booktabs}、\pkg{array} 和 \pkg{longtabular},命 +令有一个 \cs{hlinewd}。三线表可以用 \pkg{booktabs} 提供 +的 \cs{toprule}、\cs{midrule} 和 \cs{bottomrule}。它们与 \pkg{longtable} 能很好的 +配合使用。如果表格比较简单的话可以直接用命令 \cs{hlinewd}\marg{width} 控制。 \begin{table}[htb] \centering \begin{minipage}[t]{0.8\linewidth} % 如果想在表格中使用脚注,minipage是个不错的办法 @@ -109,7 +110,7 @@ \subsection{复杂表格} \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}*{\diagbox[width=5em]{x}{y}} & \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 @@ -140,8 +141,9 @@ \subsection{复杂表格} 张旭草书为三绝云。集三十卷。今编诗二十五卷。\hfill —— 《全唐诗》诗人小传 浮动体的并排放置一般有两种情况:1)二者没有关系,为两个独立的浮动体;2)二者隶属 -于同一个浮动体。对表格来说并排表格既可以像图~\ref{tab:parallel1}、图~\ref{tab:parallel2} -使用小页环境,也可以如图~\ref{tab:subtable} 使用子表格来做。图的例子参见第~\ref{sec:multifig} 节。 +于同一个浮动体。对表格来说并排表格既可以像图~\ref{tab:parallel1}、 +图~\ref{tab:parallel2} 使用小页环境,也可以如图~\ref{tab:subtable} 使用子表格来做。 +图的例子参见第~\ref{sec:multifig} 节。 \begin{table}[htbp] \noindent\begin{minipage}{0.5\textwidth} @@ -499,8 +501,9 @@ \section{参考文献} 当然参考文献可以直接写 \cs{bibitem},虽然费点功夫,但是好控制,各种格式可以自己随意改 写。 -本模板推荐使用 BIB\TeX,样式文件为 \texttt{thuthesis.bst},基本符合学校的参考文献格 -式(如专利等引用未加详细测试)。看看这个例子,关于书的~\cite{tex, companion, +本模板推荐使用 BIB\TeX,分别提供数字引用(\texttt{thuthesis-numerical.bst})和作 +者年份引用(\texttt{thuthesis-authoryear.bst})样式,基本符合学校的参考文献格式 +(如专利等引用未加详细测试)。看看这个例子,关于书的~\cite{tex, companion, ColdSources},还有这些~\cite{Krasnogor2004e, clzs, zjsw},关于杂志 的~\cite{ELIDRISSI94, MELLINGER96, SHELL02},硕士论文~\cite{zhubajie, metamori2004},博士论文~\cite{shaheshang, FistSystem01},标准文 diff --git a/data/chap02.tex b/data/chap02.tex index e3baefc9..635a958a 100644 --- a/data/chap02.tex +++ b/data/chap02.tex @@ -55,11 +55,11 @@ \subsubsection{多个图形} 如果多个图形相互独立,并不共用一个图形计数器,那么 用 \texttt{minipage} 或者\texttt{parbox} 就可以。否则,请参看 图~\ref{fig:big1-subcaptionbox},它包含两个小图,分别是图~\ref{fig:subfig1}和 -图~\ref{fig:subfig2}。推荐使用\cs{subcaptionbox},因为可以像 -图~\ref{fig:big1-subcaptionbox} 那样对齐子图的标题,也可以使 -用\pkg{subcaption}宏包的\cs{subcaption}(放在 minipage中,用法同\cs{caption}) -或是 \pkg{subfigure} 、 \pkg{subtable}环境,像图~\ref{fig:big1-subfigure}, -不要再用 \cs{subfloat}、\cs{subfigure} 和 \cs{subtable}。 +图~\ref{fig:subfig2}。推荐使用 \cs{subcaptionbox},因为可以像 +图~\ref{fig:big1-subcaptionbox} 那样对齐子图的标题,也可以使用 \pkg{subcaption} +宏包的 \cs{subcaption}(放在 minipage中,用法同\cs{caption})或 +是 \pkg{subfigure} 、\pkg{subtable}环境,像图~\ref{fig:big1-subfigure},不要再 +用 \cs{subfloat}、\cs{subfigure} 和 \cs{subtable}。 \begin{figure}[h] \centering% diff --git a/ref/refs.bib b/ref/refs.bib index 5505a9e9..299955fe 100644 --- a/ref/refs.bib +++ b/ref/refs.bib @@ -212,3 +212,12 @@ @online{oclc2000 citedate = {2000-01-08}, url = {http://www.oclc.org/about/history/default.htm}, } + + +@online{thuthesis, + author = {薛瑞尼}, + title = {\thuthesis: 清华大学学位论文模板}, + citedate = {2017-12-02}, + url = {https://github.com/xueruini/thuthesis}, + lang = {zh}, +} From e0ee1cced9b819cd1ff3b7f23961de3e27149bc8 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sat, 2 Dec 2017 12:03:53 +0800 Subject: [PATCH 22/25] Update version. --- Makefile | 2 +- package.json | 6 +++--- thuthesis.dtx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 50b6d6f2..4ddfe92a 100644 --- a/Makefile +++ b/Makefile @@ -100,7 +100,7 @@ distclean: cleanall -@$(RM) -r dist check: FORCE_MAKE - ag 'Tsinghua University Thesis Template|\\def\\version|"version":' thuthesis.dtx package.json + @ag 'Tsinghua University Thesis Template|\\def\\version|"version":' thuthesis.dtx package.json dist: all @if [ -z "$(version)" ]; then \ diff --git a/package.json b/package.json index 6d506a8a..bb228e96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "thuthesis", - "version": "5.3.2", + "version": "5.4.0", "description": "Tsinghua University Thesis LaTex Template", "main": "gulpfile.js", "scripts": { @@ -15,11 +15,11 @@ "ThuThesis" ], "author": "Ruini Xue", - "license": "MIT", + "license": "LPPL", "bugs": { "url": "https://github.com/xueruini/thuthesis/issues" }, - "homepage": "https://github.com/xueruini/thuthesis#readme", + "homepage": "https://github.com/xueruini/thuthesis", "devDependencies": { "del": "^3.0.0", "gulp": "^3.9.1", diff --git a/thuthesis.dtx b/thuthesis.dtx index e7c38143..14317a6c 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -16,7 +16,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2017/03/26 5.3.2 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2017/12/2 5.4.0 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -1106,7 +1106,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{thuthesis} %\ProvidesFile{thuthesis.cfg} -%[2017/12/1 5.4.0 Tsinghua University Thesis Template] +%[2017/12/2 5.4.0 Tsinghua University Thesis Template] % \end{macrocode} % % \subsection{定义选项} From 6bcfbc5f42bfcaa54d4616992c54b3268064126b Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sat, 2 Dec 2017 15:28:05 +0800 Subject: [PATCH 23/25] Use numeric. --- Makefile | 9 ++++--- data/chap01.tex | 2 +- gulpfile.js | 5 ++-- main.tex | 6 ++--- ...sis-numerical.bst => thuthesis-numeric.bst | 0 thuthesis.dtx | 26 +++++++++---------- 6 files changed, 25 insertions(+), 23 deletions(-) rename thuthesis-numerical.bst => thuthesis-numeric.bst (100%) diff --git a/Makefile b/Makefile index 4ddfe92a..2237a9d9 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ THESISCONTENTS=$(THESISMAIN).tex data/*.tex $(FIGURES) # NOTE: update this to reflect your local file types. FIGURES=$(wildcard figures/*.eps figures/*.pdf) BIBFILE=ref/*.bib +BSTFILE=*.bst SHUJICONTENTS=$(SHUJIMAIN).tex CLSFILES=dtx-style.sty $(PACKAGE).cls $(PACKAGE).cfg @@ -53,10 +54,10 @@ shuji: $(SHUJIMAIN).pdf ifeq ($(METHOD),latexmk) -$(PACKAGE).pdf: $(CLSFILES) FORCE_MAKE +$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex FORCE_MAKE $(METHOD) $(LATEXMKOPTS) $(PACKAGE).dtx -$(THESISMAIN).pdf: $(CLSFILES) FORCE_MAKE +$(THESISMAIN).pdf: $(CLSFILES) $(BSTFILE) FORCE_MAKE $(METHOD) $(LATEXMKOPTS) $(THESISMAIN) $(SHUJIMAIN).pdf: $(CLSFILES) FORCE_MAKE @@ -64,7 +65,7 @@ $(SHUJIMAIN).pdf: $(CLSFILES) FORCE_MAKE else ifneq (,$(filter $(METHOD),xelatex pdflatex)) -$(PACKAGE).pdf: $(CLSFILES) +$(PACKAGE).pdf: $(CLSFILES) $(THESISMAIN).tex $(METHOD) $(PACKAGE).dtx makeindex -s gind.ist -o $(PACKAGE).ind $(PACKAGE).idx makeindex -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo @@ -75,7 +76,7 @@ $(THESISMAIN).pdf: $(CLSFILES) $(THESISCONTENTS) $(THESISMAIN).bbl $(METHOD) $(THESISMAIN) $(METHOD) $(THESISMAIN) -$(THESISMAIN).bbl: $(BIBFILE) +$(THESISMAIN).bbl: $(BIBFILE) $(BSTFILE) $(METHOD) $(THESISMAIN) -bibtex $(THESISMAIN) $(RM) $(THESISMAIN).pdf diff --git a/data/chap01.tex b/data/chap01.tex index 89f28880..d96b6347 100644 --- a/data/chap01.tex +++ b/data/chap01.tex @@ -501,7 +501,7 @@ \section{参考文献} 当然参考文献可以直接写 \cs{bibitem},虽然费点功夫,但是好控制,各种格式可以自己随意改 写。 -本模板推荐使用 BIB\TeX,分别提供数字引用(\texttt{thuthesis-numerical.bst})和作 +本模板推荐使用 BIB\TeX,分别提供数字引用(\texttt{thuthesis-numeric.bst})和作 者年份引用(\texttt{thuthesis-authoryear.bst})样式,基本符合学校的参考文献格式 (如专利等引用未加详细测试)。看看这个例子,关于书的~\cite{tex, companion, ColdSources},还有这些~\cite{Krasnogor2004e, clzs, zjsw},关于杂志 diff --git a/gulpfile.js b/gulpfile.js index d6d3534d..c22c6f8b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,8 +10,8 @@ const config = { template: { files: ['thuthesis.ins', 'thuthesis.dtx', - 'thuthesis.bst', - 'thuthesis.sty', + 'thuthesis-numeric.bst', + 'thuthesis-authoryear.bst', 'Makefile', 'latexmkrc', 'README.md', @@ -25,6 +25,7 @@ const config = { 'shuji.tex', 'main.pdf', 'shuji.pdf', + 'thuthesis.sty', 'data/*.tex', 'figures/*.*', 'ref/*.bib'] diff --git a/main.tex b/main.tex index 01a8bf2c..81911d50 100644 --- a/main.tex +++ b/main.tex @@ -1,7 +1,7 @@ -\documentclass[type=master,citestyle=numerical]{thuthesis} +\documentclass[type=master,citestyle=numeric]{thuthesis} % 选项: % type=[bachelor|master|doctor|postdoctor], % 必选 -% citestyle=[numerical|authoryear], % 可选 +% citestyle=[numeric|authoryear], % 可选 % secret, % 可选 % pifootnote, % 可选(建议打开) % openany|openright, % 可选,基本不用 @@ -57,7 +57,7 @@ % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。 % 如果不需要参考文献,请将下面两行删除或注释掉。 % style 要配合 citestyle -\bibliographystyle{thuthesis-numerical} +\bibliographystyle{thuthesis-numeric} % \bibliographystyle{thuthesis-authoryear} \bibliography{ref/refs} diff --git a/thuthesis-numerical.bst b/thuthesis-numeric.bst similarity index 100% rename from thuthesis-numerical.bst rename to thuthesis-numeric.bst diff --git a/thuthesis.dtx b/thuthesis.dtx index 14317a6c..bee0f98a 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -238,7 +238,7 @@ % thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule % thuthesis.cls & 模板类文件\\ % thuthesis.cfg & 模板配置文件\\ -% thuthesis-numerical.bst & 参考文献样式文件\\ +% thuthesis-numeric.bst & 参考文献样式文件\\ % thuthesis-authoryear.bst & 参考文献样式文件\\\midrule % main.tex & 示例文档主文件\\ % shuji.tex & 书脊示例文档\\ @@ -406,9 +406,9 @@ % % % \DescribeOption{citestyle} -% 选择引用风格类型,当前支持:\option{numerical}(默认值),\option{authoryear}。 +% 选择引用风格类型,当前支持:\option{numeric}(默认值),\option{authoryear}。 % \begin{latex} -% % 理工科一般用 numerical;文科一般用 authoryear。 +% % 理工科一般用 numeric;文科一般用 authoryear。 % \documentclass[citestyle=authoryear]{thuthesis} % \end{latex} % @@ -1171,17 +1171,17 @@ % 通过 citestyle 控制引用文献显示方式。 % \changes{v5.4.0}{2017/12/1}{支持不同引用类型。} % \begin{macrocode} -\newif\ifthu@cite@numerical +\newif\ifthu@cite@numeric \newif\ifthu@cite@authoryear \define@key{thu}{citestyle}{% - \thu@cite@numericalfalse + \thu@cite@numericfalse \thu@cite@authoryearfalse \expandafter\csname thu@cite@#1true\endcsname - \ifthu@cite@numerical\relax\else + \ifthu@cite@numeric\relax\else \ifthu@cite@authoryear\relax\else \ClassError{thuthesis}% {Allowed cite style: \MessageBreak - citestyle=[numberical | authoryear]}{} + citestyle=[numeric | authoryear]}{} \fi \fi @@ -1233,7 +1233,7 @@ % 打开默认选项。 % \begin{macrocode} \kvsetkeys{thu}{% - citestyle=numerical, + citestyle=numeric, raggedbottom, arialtitle} % \end{macrocode} @@ -3095,7 +3095,7 @@ % 容性,\cs{onlinecite} 会保留。} % \begin{macrocode} %<*cls> -\newcommand\bibstyle@numerical{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\newcommand\bibstyle@numeric{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} \newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} \newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} \citestyle{\thu@citestyle} @@ -3139,8 +3139,8 @@ \renewenvironment{thebibliography}[1]{% \thu@chapter*{\bibname}% \ifthu@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi - \list{\ifthu@cite@numerical\@biblabel{\@arabic\c@enumiv}\else\@empty\fi}% - {\ifthu@cite@numerical + \list{\ifthu@cite@numeric\@biblabel{\@arabic\c@enumiv}\else\@empty\fi}% + {\ifthu@cite@numeric \renewcommand{\makelabel}[1]{##1\hfil} \settowidth\labelwidth{1.1cm} \setlength{\labelsep}{0.4em} @@ -3172,7 +3172,7 @@ % \end{environment} % % 下面修改 \pkg{natbib} 的引用格式,主要是将页码写在上标位置。 -% Numerical 模式的 \cs{citet} 的页码: +% numeric 模式的 \cs{citet} 的页码: % \begin{macrocode} \patchcmd\NAT@citexnum{% \@ifnum{\NAT@ctype=\z@}{% @@ -3187,7 +3187,7 @@ }{}{} % \end{macrocode} % -% Numerical 模式的 \cs{citep} 的页码: +% numeric 模式的 \cs{citep} 的页码: % \begin{macrocode} \renewcommand\NAT@citesuper[3]{\ifNAT@swa \if*#2*\else#2\NAT@spacechar\fi From 050d1a7cc20b3eede1fe564f6ffb327fc1b46943 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sun, 3 Dec 2017 11:36:58 +0800 Subject: [PATCH 24/25] Refactor thebibliography. --- Makefile | 2 +- .../author-year.bst | 0 thuthesis-numeric.bst => bst/numeric.bst | 0 data/chap01.tex | 3 +- gulpfile.js | 4 +- main.tex | 11 +- ref/refs.bib | 1 + thuthesis.dtx | 250 ++++++++---------- 8 files changed, 116 insertions(+), 155 deletions(-) rename thuthesis-authoryear.bst => bst/author-year.bst (100%) rename thuthesis-numeric.bst => bst/numeric.bst (100%) diff --git a/Makefile b/Makefile index 2237a9d9..ec0fc536 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ THESISCONTENTS=$(THESISMAIN).tex data/*.tex $(FIGURES) # NOTE: update this to reflect your local file types. FIGURES=$(wildcard figures/*.eps figures/*.pdf) BIBFILE=ref/*.bib -BSTFILE=*.bst +BSTFILE=bst/*.bst SHUJICONTENTS=$(SHUJIMAIN).tex CLSFILES=dtx-style.sty $(PACKAGE).cls $(PACKAGE).cfg diff --git a/thuthesis-authoryear.bst b/bst/author-year.bst similarity index 100% rename from thuthesis-authoryear.bst rename to bst/author-year.bst diff --git a/thuthesis-numeric.bst b/bst/numeric.bst similarity index 100% rename from thuthesis-numeric.bst rename to bst/numeric.bst diff --git a/data/chap01.tex b/data/chap01.tex index d96b6347..99ca5483 100644 --- a/data/chap01.tex +++ b/data/chap01.tex @@ -86,7 +86,8 @@ \subsection{基本表格} thuthesis.dtx & 所有的一切都在这里面\footnote{再来一个}。\\ thuthesis.cls & 模板类文件。\\ thuthesis.cfg & 模板配置文。cls 和 cfg 由前两个文件生成。\\ - thuthesis.bst & 参考文献 BIB\TeX\ 样式文件。\\ + bst/numeric.bst & 参考文献 BIB\TeX\ 样式文件。\\ + bst/author-year.bst & 参考文献 BIB\TeX\ 样式文件。\\ thuthesis.sty & 常用的包和命令写在这里,减轻主文件的负担。\\ \bottomrule[1.5pt] \end{tabularx} diff --git a/gulpfile.js b/gulpfile.js index c22c6f8b..5a18336c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,8 +10,8 @@ const config = { template: { files: ['thuthesis.ins', 'thuthesis.dtx', - 'thuthesis-numeric.bst', - 'thuthesis-authoryear.bst', + 'bst/numeric.bst', + 'bst/author-year.bst', 'Makefile', 'latexmkrc', 'README.md', diff --git a/main.tex b/main.tex index 81911d50..cb6f8574 100644 --- a/main.tex +++ b/main.tex @@ -1,7 +1,6 @@ -\documentclass[type=master,citestyle=numeric]{thuthesis} +\documentclass[type=master]{thuthesis} % 选项: % type=[bachelor|master|doctor|postdoctor], % 必选 -% citestyle=[numeric|authoryear], % 可选 % secret, % 可选 % pifootnote, % 可选(建议打开) % openany|openright, % 可选,基本不用 @@ -36,7 +35,6 @@ %%% 正文部分 \mainmatter -\textit{what}\textbf{shit} \include{data/chap01} \include{data/chap02} @@ -56,9 +54,10 @@ %% 参考文献 % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。 % 如果不需要参考文献,请将下面两行删除或注释掉。 -% style 要配合 citestyle -\bibliographystyle{thuthesis-numeric} -% \bibliographystyle{thuthesis-authoryear} +% 数字式引用 +\bibliographystyle{bst/numeric} +% 作者-年份式引用 +% \bibliographystyle{bst/author-year} \bibliography{ref/refs} diff --git a/ref/refs.bib b/ref/refs.bib index 299955fe..46f4ebf8 100644 --- a/ref/refs.bib +++ b/ref/refs.bib @@ -220,4 +220,5 @@ @online{thuthesis citedate = {2017-12-02}, url = {https://github.com/xueruini/thuthesis}, lang = {zh}, + year = 2017, } diff --git a/thuthesis.dtx b/thuthesis.dtx index bee0f98a..9fadb95c 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -238,8 +238,8 @@ % thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule % thuthesis.cls & 模板类文件\\ % thuthesis.cfg & 模板配置文件\\ -% thuthesis-numeric.bst & 参考文献样式文件\\ -% thuthesis-authoryear.bst & 参考文献样式文件\\\midrule +% bst/numeric.bst & 参考文献样式文件\\ +% bst/author-year.bst & 参考文献样式文件\\\midrule % main.tex & 示例文档主文件\\ % shuji.tex & 书脊示例文档\\ % ref/ & 示例文档参考文献目录\\ @@ -266,9 +266,9 @@ % 略此节,直接阅读第~\ref{sec:generate-thesis} 节。若下载 CTAN 包或者 Github 开发 % 代码,请阅读本节了解生成模板文件的步骤。} % -% 模板解压缩后生成文件夹 \file{thuthesis-vX.Y.Z}\footnote{\texttt{vX.Y.Z} 为版本号。}, -% 其中包括:模板源文件(\file{thuthesis.ins} 和 \file{thuthesis.dtx}),参考文献 -% 样式 \file{thuthesis.bst},示例文档 +% 模板解压缩后生成文件夹 \file{thuthesis-vX.Y.Z}\footnote{\texttt{vX.Y.Z} 为版本 +% 号。},其中包括:模板源文件(\file{thuthesis.ins} 和 \file{thuthesis.dtx}),参 +% 考文献样式 \file{bst/numeric.bst} 和 \file{bst/author-year.bst},示例文档 % (\file{main.tex},\file{shuji.tex},\file{thuthesis.sty}\footnote{可能用到的包 % 以及一些命令定义都放在这里,以免 \file{thuthesis.cls} 过分臃 % 肿。},\file{data/} 和 \file{figures/} 和 \file{ref/})。在使用之前需要先生成模 @@ -352,15 +352,15 @@ % \label{sec:updgrade} % \thuthesis\ 升级非常简单,可以通过 \TeX 发行版的包管理工具自动更新发行版,也可 % 以下载最新的开发版, -% 将 \file{thuthesis.ins},\file{thuthesis.dtx} 和 \file{thuthesis.bst} 拷贝至工作目 -% 录覆盖相应的文件,然后运行: +% 将 \file{thuthesis.ins},\file{thuthesis.dtx} 和 \file{bst/} 拷贝至工作目录覆盖 +% 相应的文件,然后运行: % \begin{shell} % $ latex thuthesis.ins % \end{shell} % % 生成新的类文件和配置文件即可。也可以直接拷 -% 贝 \file{thuthesis.cls},\file{thuthesis.cfg} 和 \file{thuthesis.bst},免去上面命令 -% 的执行。 +% 贝 \file{thuthesis.cls},\file{thuthesis.cfg} 和 \file{bst/},免去上面命令的执 +% 行。 % % % \section{使用说明} @@ -380,12 +380,11 @@ % % \subsection{示例文件} % \label{sec:userguide} -% 模板核心文件有三 -% 个:\file{thuthesis.cls},\file{thuthesis.cfg} 和\file{thuthesis.bst},但是如果 -% 没有示例文档用户会发现很难下手。所以推荐新用户从模板自带的示例文档入手,里面包 -% 括了论文写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。 -% 对于不清楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示 -% 例文档,具体内容可以参考模板附带的 \file{main.tex} 和 \file{data/}。 +% 模板核心文件有:\file{thuthesis.cls},\file{thuthesis.cfg} 和 \file{bst/},但是 +% 如果没有示例文档用户会发现很难下手。所以推荐新用户从模板自带的示例文档入手,里 +% 面包括了论文写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可 +% 以。对于不清楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自 +% 于示例文档,具体内容可以参考模板附带的 \file{main.tex} 和 \file{data/}。 % % \lstinputlisting[style=lstStyleLaTeX]{main.tex} % @@ -404,14 +403,6 @@ % \documentclass[type=master]{thuthesis} % \end{latex} % -% -% \DescribeOption{citestyle} -% 选择引用风格类型,当前支持:\option{numeric}(默认值),\option{authoryear}。 -% \begin{latex} -% % 理工科一般用 numeric;文科一般用 authoryear。 -% \documentclass[citestyle=authoryear]{thuthesis} -% \end{latex} -% % \DescribeOption{secret} % 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置(或命 % 令)\cs{secretlevel}\marg{级别} 和 \cs{secretyear}\marg{年数} 分别用来指定保 @@ -454,6 +445,52 @@ % \DescribeOption{arialtitle} % 章节标题中英文是否用 \emph{Arial} 字体(默认打开)。 % +% \subsection{引用方式} +% \label{sec:citestyle} +% 模板支持两种引用方式,分别为理工科常用的“数字式 [1]”和文科常用 +% 的“作者-年份 (Zhang, 2008)”。使用者可通过 \cs{bibliographystyle} 来选择: +% \begin{latex} +% % 两个样式文件都置于 bst/,故引用时许注意路径。 +% % 数字式 +% \bibliographystyle{bst/numeric} +% +% % 作者-年份 +% \bibliographystyle{bst/author-year} +% \end{latex} +% +% \DescribeMacro{\inlinecite} +% 学校要求的参考文献引用有两种模式:(1)上标模式。比如``同样的工作有很 +% 多$^{[1,2]}$\ldots''。(2)正文模式。比如``文[3] 中详细说明了\ldots''。其中上标 +% 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规 +% 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。 +% +% 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry: +% \texttt{lang},将其设置为 \texttt{zh} 用来指示此参考文献为中文。如: +% \begin{latex} +% @INPROCEEDINGS{cnproceed, +% author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝}, +% title = {武林高手从入门到精通}, +% booktitle = {第~$N$~次华山论剑}, +% year = 2006, +% address = {西安, 中国}, +% month = sep, +% lang = "zh", +% } +% +% @ARTICLE{cnarticle, +% AUTHOR = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春", +% TITLE = "论刘姥姥食量大如牛之现实意义", +% JOURNAL = "红楼梦杂谈", +% PAGES = "260--266", +% VOLUME = "224", +% YEAR = "1800", +% LANG = "zh", +% } +% \end{latex} +% +% 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行, +% 以避免可能的编译错误。 +% % \subsection{中文字体} % \label{sec:chinese-fonts} % @@ -972,6 +1009,32 @@ % % 具体用法请参看示例文档 \file{data/resume.tex}。 % +% \subsection{书脊} +% \DescribeMacro{\shuji} +% 生成装订的书脊,为竖排格式,命令格式:\cs{shuji}\oarg{标题}\oarg{作者}。默认参 +% 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。 +% 否则,就要像例子里面那样做一些微调(参看模板自带的 \file{shuji.tex})。下面是一 +% 个例子: +% \begin{latex} +% \documentclass[type=master]{thuthesis} +% % 此处 type 无所谓 +% +% \begin{document} +% \thuset{ +% ctitle={论文中文题目}, +% cauthor={中文姓名}} +% +% \shuji % 使用默认标题和默认作者 +% +% \shuji[使用默认作者的标题] +% +% \shuji[同时修改标题和作者的标题][尼瑞薛] +% +% % 如果标题中有英文,那可以参考如下方法进行微调: +% \shuji[清华大学 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例] +% \end{document} +% \end{latex} +% % \subsection{自定义} % \label{sec:othercmd} % @@ -1016,42 +1079,6 @@ % \medskip % \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}} % -% \subsubsection{引用方式} -% -% \DescribeMacro{\inlinecite} -% 学校要求的参考文献引用有两种模式:(1)上标模式。比如``同样的工作有很 -% 多$^{[1,2]}$\ldots''。(2)正文模式。比如``文[3] 中详细说明了\ldots''。其中上标 -% 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规 -% 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。 -% -% 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry: -% \texttt{lang},将其设置为 \texttt{zh} 用来指示此参考文献为中文,以 -% 便 \file{thuthesis.bst} 处理。如: -% \begin{latex} -% @INPROCEEDINGS{cnproceed, -% author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝}, -% title = {武林高手从入门到精通}, -% booktitle = {第~$N$~次华山论剑}, -% year = 2006, -% address = {西安, 中国}, -% month = sep, -% lang = "zh", -% } -% -% @ARTICLE{cnarticle, -% AUTHOR = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春", -% TITLE = "论刘姥姥食量大如牛之现实意义", -% JOURNAL = "红楼梦杂谈", -% PAGES = "260--266", -% VOLUME = "224", -% YEAR = "1800", -% LANG = "zh", -% } -% \end{latex} -% -% 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行, -% 以避免可能的编译错误。 -% % \subsubsection{列表环境} % \DescribeEnv{itemize} % \DescribeEnv{enumerate} @@ -1060,32 +1087,6 @@ % 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号, % 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。 % -% \subsubsection{书脊} -% \DescribeMacro{\shuji} -% 生成装订的书脊,为竖排格式,命令格式:\cs{shuji}\oarg{标题}\oarg{作者}。默认参 -% 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。 -% 否则,就要像例子里面那样做一些微调(参看模板自带的 \file{shuji.tex})。下面是一 -% 个例子: -% \begin{latex} -% \documentclass[type=master]{thuthesis} -% % 此处 type 无所谓 -% -% \begin{document} -% \thuset{ -% ctitle={论文中文题目}, -% cauthor={中文姓名}} -% -% \shuji % 使用默认标题和默认作者 -% -% \shuji[使用默认作者的标题] -% -% \shuji[同时修改标题和作者的标题][尼瑞薛] -% -% % 如果标题中有英文,那可以参考如下方法进行微调: -% \shuji[清华大学 \raisebox{-5pt}{\LaTeX} 论文模板 \raisebox{-5pt}{v\version} 样例] -% \end{document} -% \end{latex} -% % \subsection{其它} % 模板的配置文件 \file{thuthesis.cfg} 中定义了很多固定词汇,一般无须修改。如果有特殊需求, % 推荐在导言区使用 \cs{renewcommand}。 @@ -1168,26 +1169,6 @@ \DeclareVoidOption{postdoctor}{\thu@deprecated@type@option} % \end{macrocode} % -% 通过 citestyle 控制引用文献显示方式。 -% \changes{v5.4.0}{2017/12/1}{支持不同引用类型。} -% \begin{macrocode} -\newif\ifthu@cite@numeric -\newif\ifthu@cite@authoryear -\define@key{thu}{citestyle}{% - \thu@cite@numericfalse - \thu@cite@authoryearfalse - \expandafter\csname thu@cite@#1true\endcsname - \ifthu@cite@numeric\relax\else - \ifthu@cite@authoryear\relax\else - \ClassError{thuthesis}% - {Allowed cite style: \MessageBreak - citestyle=[numeric | authoryear]}{} - - \fi - \fi - \gdef\thu@citestyle{#1}} -% \end{macrocode} -% % 论文是否保密。 % \begin{macrocode} \DeclareBoolOption{secret} @@ -1233,7 +1214,6 @@ % 打开默认选项。 % \begin{macrocode} \kvsetkeys{thu}{% - citestyle=numeric, raggedbottom, arialtitle} % \end{macrocode} @@ -3093,12 +3073,11 @@ % 依赖于 \pkg{natbib} 宏包,修改其中的命令。 旧命令 \cs{onlinecite} 依然可用。 % \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼 % 容性,\cs{onlinecite} 会保留。} +% \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).} % \begin{macrocode} %<*cls> -\newcommand\bibstyle@numeric{\bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} -\newcommand\bibstyle@authoryear{\bibpunct{(}{)}{;}{a}{,}{,}} \newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} -\citestyle{\thu@citestyle} \DeclareRobustCommand\inlinecite{\@inlinecite} \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \let\onlinecite\inlinecite @@ -3128,48 +3107,29 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \begin{environment}{thebibliography} -% 修改默认的 thebibliography 环境,增加一些调整代码。 +% +% 复用 \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} 的环境调整距离兼容性更好。} % \begin{macrocode} %<*cls> -\renewenvironment{thebibliography}[1]{% - \thu@chapter*{\bibname}% - \ifthu@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi - \list{\ifthu@cite@numeric\@biblabel{\@arabic\c@enumiv}\else\@empty\fi}% - {\ifthu@cite@numeric - \renewcommand{\makelabel}[1]{##1\hfil} - \settowidth\labelwidth{1.1cm} - \setlength{\labelsep}{0.4em} - \setlength{\itemindent}{0pt} - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv} - \else % author year - \newsavebox\thu@label - \renewcommand{\makelabel}[1]{% - \sbox\thu@label{##1}% TODO: too dirty... - \usebox\thu@label\llap{\textcolor{white}{\rule[-0.2em]{\wd\thu@label}{1.2em}}}} - \settowidth\labelwidth{0cm} - \setlength{\labelsep}{0em} - \setlength{\itemindent}{-2\ccwd} - \fi - \setlength{\leftmargin}{\labelwidth+\labelsep} - \addtolength{\itemsep}{-0.7em}}% - \sloppy\frenchspacing - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \interlinepenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist\frenchspacing} +\renewcommand\bibsection{\thu@chapter*{\bibname}} +\renewcommand\bibfont{\ifthu@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi} +\setlength\bibhang{2\ccwd} +\addtolength{\bibsep}{-0.7em} +\setlength{\labelsep}{0.4em} +% \end{macrocode} +% +% 两种引用样式: +% \begin{macrocode} +\expandafter\newcommand\csname bibstyle@numeric\endcsname{% + \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\expandafter\newcommand\csname bibstyle@author-year\endcsname{% + \bibpunct{(}{)}{;}{a}{,}{,}} % \end{macrocode} -% \end{environment} % % 下面修改 \pkg{natbib} 的引用格式,主要是将页码写在上标位置。 % numeric 模式的 \cs{citet} 的页码: @@ -3187,7 +3147,7 @@ }{}{} % \end{macrocode} % -% numeric 模式的 \cs{citep} 的页码: +% Numeric 模式的 \cs{citep} 的页码: % \begin{macrocode} \renewcommand\NAT@citesuper[3]{\ifNAT@swa \if*#2*\else#2\NAT@spacechar\fi From 54a2dfa785aa7dc4c130262ecc1fcdb82ad21c7f Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Sun, 3 Dec 2017 11:55:11 +0800 Subject: [PATCH 25/25] Bump v5.4.0. --- thuthesis.dtx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index 9fadb95c..8e9cb1c6 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -16,7 +16,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2017/12/2 5.4.0 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2017/12/3 5.4.0 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -1107,7 +1107,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{thuthesis} %\ProvidesFile{thuthesis.cfg} -%[2017/12/2 5.4.0 Tsinghua University Thesis Template] +%[2017/12/3 5.4.0 Tsinghua University Thesis Template] % \end{macrocode} % % \subsection{定义选项}