diff options
Diffstat (limited to 'Master/texmf-dist')
16 files changed, 3738 insertions, 1515 deletions
diff --git a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis.bst b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis.bst deleted file mode 100644 index ae6d5cd0647..00000000000 --- a/Master/texmf-dist/bibtex/bst/thuthesis/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/Master/texmf-dist/doc/latex/thuthesis/Makefile b/Master/texmf-dist/doc/latex/thuthesis/Makefile index aecc2c7b414..ec0fc5362a6 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/Makefile +++ b/Master/texmf-dist/doc/latex/thuthesis/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 @@ -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/*.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 @@ -100,7 +101,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/Master/texmf-dist/doc/latex/thuthesis/bst/author-year.bst b/Master/texmf-dist/doc/latex/thuthesis/bst/author-year.bst new file mode 100644 index 00000000000..9f1c7eaa6c9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/thuthesis/bst/author-year.bst @@ -0,0 +1,1749 @@ +%% Copyright (C) 2016-2017 by Zeping Lee <zepinglee AT gmail.com> +%% +%% 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/Master/texmf-dist/doc/latex/thuthesis/bst/numeric.bst b/Master/texmf-dist/doc/latex/thuthesis/bst/numeric.bst new file mode 100644 index 00000000000..1c3d27a5c18 --- /dev/null +++ b/Master/texmf-dist/doc/latex/thuthesis/bst/numeric.bst @@ -0,0 +1,1608 @@ +%% Copyright (C) 2016-2017 by Zeping Lee <zepinglee AT gmail.com> +%% +%% 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/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex b/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex index 84e4ed1a5cf..bdab98fb983 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/data/ack.tex @@ -8,6 +8,5 @@ 胜感激。感谢 xx 实验室主任 xx 教授,以及实验室全体老师和同学们的热情帮助和支 持!本课题承蒙国家自然科学基金资助,特此致谢。 - 感谢 \thuthesis,它的存在让我的论文写作轻松自在了许多,让我的论文格式规整漂亮了 - 许多。 + 感谢 \LaTeX 和 \thuthesis\cite{thuthesis},帮我节省了不少时间。 \end{acknowledgement} diff --git a/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex b/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex index 87a1c168602..99ca5483b55 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/data/chap01.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/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 @@ \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 @@ \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是个不错的办法 @@ -85,7 +86,8 @@ 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} @@ -109,7 +111,7 @@ \begin{minipage}[t]{0.8\textwidth} \begin{tabularx}{\linewidth}{|l|X|X|X|X|} \hline - \multirow{2}*{\diagbox[width=5em]{x}{y}} & \multicolumn{2}{c|}{First Half} & \multicolumn{2}{c|}{Second Half}\\\cline{2-5} + \multirow{2}*{\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 +142,9 @@ 张旭草书为三绝云。集三十卷。今编诗二十五卷。\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} @@ -476,7 +479,7 @@ V_j & = v_j, & \qquad X_j & = x_j, \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 @@ -499,8 +502,9 @@ V_j & = v_j, & \qquad X_j & = x_j, 当然参考文献可以直接写 \cs{bibitem},虽然费点功夫,但是好控制,各种格式可以自己随意改 写。 -本模板推荐使用 BIB\TeX,样式文件为 \texttt{thuthesis.bst},基本符合学校的参考文献格 -式(如专利等引用未加详细测试)。看看这个例子,关于书的~\cite{tex, companion, +本模板推荐使用 BIB\TeX,分别提供数字引用(\texttt{thuthesis-numeric.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/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex b/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex index e3baefc9187..635a958a84c 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex @@ -55,11 +55,11 @@ jPicEdt, jaxdraw 等等。 如果多个图形相互独立,并不共用一个图形计数器,那么 用 \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/Master/texmf-dist/doc/latex/thuthesis/main.pdf b/Master/texmf-dist/doc/latex/thuthesis/main.pdf Binary files differindex ebe67ab6480..a8b4b14588d 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/main.pdf +++ b/Master/texmf-dist/doc/latex/thuthesis/main.pdf diff --git a/Master/texmf-dist/doc/latex/thuthesis/main.tex b/Master/texmf-dist/doc/latex/thuthesis/main.tex index 6327130d409..cb6f8574a02 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/main.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/main.tex @@ -54,7 +54,10 @@ %% 参考文献 % 注意:至少需要引用一篇参考文献,否则下面两行可能引起编译错误。 % 如果不需要参考文献,请将下面两行删除或注释掉。 -\bibliographystyle{thuthesis} +% 数字式引用 +\bibliographystyle{bst/numeric} +% 作者-年份式引用 +% \bibliographystyle{bst/author-year} \bibliography{ref/refs} diff --git a/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib b/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib index 5505a9e98fa..46f4ebf8a0c 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib +++ b/Master/texmf-dist/doc/latex/thuthesis/ref/refs.bib @@ -212,3 +212,13 @@ 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}, + year = 2017, +} diff --git a/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf b/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf Binary files differindex fbb75eb0836..972e17729cc 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf +++ b/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf diff --git a/Master/texmf-dist/doc/latex/thuthesis/shuji.tex b/Master/texmf-dist/doc/latex/thuthesis/shuji.tex index 7454ab27395..e073e1e543f 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/shuji.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/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/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf b/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf Binary files differindex 5684aca0836..ed29da92b2c 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf +++ b/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf diff --git a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx index ff55cee271e..8e9cb1c6bd8 100644 --- a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx +++ b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx @@ -1,22 +1,22 @@ % \iffalse meta-comment % -% Copyright (C) 2005-2016 by Ruini Xue <xueruini@gmail.com> +% Copyright (C) 2005-2017 by Ruini Xue <xueruini@gmail.com> % -% 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 % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2017/03/26 5.3.2 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2017/12/3 5.4.0 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -238,7 +238,8 @@ % thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule % thuthesis.cls & 模板类文件\\ % thuthesis.cfg & 模板配置文件\\ -% thuthesis.bst & 参考文献样式文件\\\midrule +% bst/numeric.bst & 参考文献样式文件\\ +% bst/author-year.bst & 参考文献样式文件\\\midrule % main.tex & 示例文档主文件\\ % shuji.tex & 书脊示例文档\\ % ref/ & 示例文档参考文献目录\\ @@ -265,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/})。在使用之前需要先生成模 @@ -351,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{使用说明} @@ -379,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} % @@ -445,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} % @@ -853,12 +899,11 @@ % % \subsubsection{致谢声明} % \DescribeEnv{acknowledgement} -% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦!下面是数学系一位同 -% 学致谢里的话,拿过来做个广告。希望每个人都能写这么一句 :) +% 把致谢做成一个环境更好一些,直接往里面写感谢的话就可以啦。 % \begin{latex} % \begin{acknowledgement} % … -% 还要特别感谢计算机系薛瑞尼同学在论文格式和 \LaTeX\ 编译等方面给我的很多帮助! +% 还要特别感谢 \thuthesis\ 节省了论文排版时间! % \end{acknowledgement} % \end{latex} % @@ -964,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} % @@ -1008,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} @@ -1052,42 +1087,15 @@ % 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号, % 缩进等)。细节请参看 \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}。 % % \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 @@ -1099,7 +1107,7 @@ %<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<cls>\ProvidesClass{thuthesis} %<cfg>\ProvidesFile{thuthesis.cfg} -%<cls|cfg>[2017/03/26 5.3.2 Tsinghua University Thesis Template] +%<cls|cfg>[2017/12/3 5.4.0 Tsinghua University Thesis Template] % \end{macrocode} % % \subsection{定义选项} @@ -1118,7 +1126,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} -\def\version{5.3.2} +\def\version{5.4.0} \RequirePackage{kvoptions} \SetupKeyvalOptions{ @@ -1127,7 +1135,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 +1147,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 @@ -1165,6 +1184,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。} @@ -1211,20 +1236,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} @@ -1334,14 +1345,12 @@ % % 参考文献引用宏包。 % \begin{macrocode} -\RequirePackage[numbers,super,sort&compress]{natbib} +\RequirePackage[sort&compress]{natbib} % \end{macrocode} % % 删除默认模板(\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 选项,等待全局传递。} @@ -1398,9 +1407,9 @@ left=32mm, headheight=5mm, headsep=5mm, - textheight=220mm, - bottom=37mm, - footskip=17mm} + textheight=227mm, + bottom=32mm, + footskip=12mm} \else \geometry{ left=30mm, @@ -1609,7 +1618,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 +1744,18 @@ % 修改 \cs{tagform} 会影响 \cs{eqref}。 % \begin{macrocode} \renewcommand{\eqref}[1]{\textup{(\ref{#1})}} +%</cls> % \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} -%</cls> %<*cfg> +\theorembodyfont{\normalfont} +\theoremheaderfont{\normalfont\heiti} \theoremsymbol{\ensuremath{\square}} \newtheorem*{proof}{证明} \theoremstyle{plain} @@ -1811,7 +1821,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 +1897,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} @@ -1937,8 +1947,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。} @@ -1960,31 +1971,34 @@ chapter={ afterindent=true, pagestyle={\ifthu@bachelor thu@plain\else thu@headings\fi}, - beforeskip={\ifthu@bachelor 13bp\else 9bp\fi}, + beforeskip={\ifthu@bachelor 15bp\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[1.333]\else\sanhao[1]\fi}, nameformat=\relax, numberformat=\relax, titleformat=\thu@chapter@titleformat, + lofskip=0pt, + lotskip=0pt, }, section={ 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\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\heiti\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={\csname thu@title@font\endcsname\heiti\xiaosi[1.667]}, + format={\thu@title@font\ifthu@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi}, }, paragraph/afterindent=true, subparagraph/afterindent=true} @@ -2019,7 +2033,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{}{}} @@ -2062,7 +2078,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}。} @@ -2078,7 +2094,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 @@ -2435,8 +2451,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}{ @@ -2492,14 +2513,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 @@ -2514,7 +2535,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}} @@ -2530,15 +2551,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 @@ -2597,7 +2618,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} @@ -2839,7 +2860,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 体三号字。研究生的英文摘要要求 @@ -2998,7 +3019,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} @@ -3049,19 +3070,18 @@ % \label{sec:ref} % % \begin{macro}{\inlinecite} -% 正文引用模式。依赖于 \pkg{natbib} 宏包,修改其中的命令。旧命令 \cs{onlinecite} -% 依然可用。 +% 依赖于 \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> -\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@inline{\bibpunct{[}{]}{,}{n}{,}{,}} \DeclareRobustCommand\inlinecite{\@inlinecite} \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \let\onlinecite\inlinecite +%</cls> % \end{macrocode} % \end{macro} % @@ -3069,18 +3089,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} -%</cls> -% \end{macrocode} -% \end{macro} % \begin{macro}{\thumasterbib} % \begin{macro}{\thuphdbib} % 本科生和研究生模板要求外文硕士论文参考文献显示``[Master Thesis]'',而博士模板 @@ -3093,46 +3101,78 @@ % \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} %</cfg> % \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}% - \wuhao[1.5] - \list{\@biblabel{\@arabic\c@enumiv}}% - {\renewcommand{\makelabel}[1]{##1\hfill} - \settowidth\labelwidth{1.1cm} - \setlength{\labelsep}{0.4em} - \setlength{\itemindent}{0pt} - \setlength{\leftmargin}{\labelwidth+\labelsep} - \addtolength{\itemsep}{-0.7em} - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy\frenchspacing - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \interlinepenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist\frenchspacing} -%</cls> +\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} +% +% 下面修改 \pkg{natbib} 的引用格式,主要是将页码写在上标位置。 +% numeric 模式的 \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} -% \end{environment} % +% Numeric 模式的 \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} +%</cls> +% \end{macrocode} % % \subsection{附录} % \label{sec:appendix} @@ -3156,7 +3196,7 @@ \let\title\@gobble \newcommand{\thu@appendix@title}[1]{% \begin{center} - \bfseries\xiaosi #1 + \xiaosi[1.667] #1 \end{center}} % \end{macrocode} % \end{macro} @@ -3255,7 +3295,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}}} %</cls> % \end{macrocode} diff --git a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg index 1749d21b188..48412d43d45 100644 --- a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg +++ b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg @@ -23,7 +23,9 @@ %% This is the configuration file of the thuthesis package with LaTeX2e. %% \ProvidesFile{thuthesis.cfg} -[2017/03/26 5.3.2 Tsinghua University Thesis Template] +[2017/12/3 5.4.0 Tsinghua University Thesis Template] +\theorembodyfont{\normalfont} +\theoremheaderfont{\normalfont\heiti} \theoremsymbol{\ensuremath{\square}} \newtheorem*{proof}{证明} \theoremstyle{plain} @@ -165,8 +167,8 @@ 其他个人和集体,均已在文中以明确方式标明。} \newcommand{\thu@signature}{签\hspace{1em}名:} \newcommand{\thu@backdate}{日\hspace{1em}期:} -\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} \ifthu@bachelor \newcommand{\thu@resume@title}{在学期间参加课题的研究成果} \else diff --git a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls index 48d4cb72131..dd9e397ed41 100644 --- a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls +++ b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls @@ -25,10 +25,10 @@ %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesClass{thuthesis} -[2017/03/26 5.3.2 Tsinghua University Thesis Template] +[2017/12/3 5.4.0 Tsinghua University Thesis Template] \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} -\def\version{5.3.2} +\def\version{5.4.0} \RequirePackage{kvoptions} \SetupKeyvalOptions{ @@ -44,7 +44,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 @@ -56,6 +67,7 @@ \DeclareBoolOption{secret} \DeclareBoolOption{arialtoc} \DeclareBoolOption{arialtitle} +\IfFileExists{/dev/null}{}{\PassOptionsToClass{fontset=windowsold}{ctexbook}} \DeclareBoolOption{raggedbottom} \DeclareBoolOption{pifootnote} \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}} @@ -65,17 +77,6 @@ \ProcessKeyvalOptions* \PassOptionsToPackage{no-math}{fontspec} \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook} -\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 \RequirePackage{etoolbox} \RequirePackage{ifxetex} \RequirePackage{xparse} @@ -103,9 +104,7 @@ \RequirePackage{array} \RequirePackage{longtable} \RequirePackage{booktabs} -\RequirePackage[numbers,super,sort&compress]{natbib} -\patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{} % lof -\patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{} % lot +\RequirePackage[sort&compress]{natbib} \RequirePackage{hyperref} \ifxetex \hypersetup{% @@ -136,9 +135,9 @@ left=32mm, headheight=5mm, headsep=5mm, - textheight=220mm, - bottom=37mm, - footskip=17mm} + textheight=227mm, + bottom=32mm, + footskip=12mm} \else \geometry{ left=30mm, @@ -204,7 +203,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} @@ -249,8 +248,6 @@ \def\thu@maketag#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)}} \def\tagform@#1{\maketag@@@{(\ignorespaces #1\unskip\@@italiccorr)\equcaption{#1}}} \renewcommand{\eqref}[1]{\textup{(\ref{#1})}} -\theorembodyfont{\rmfamily\songti} -\theoremheaderfont{\rmfamily\heiti} \setlength{\floatsep}{20bp \@plus4pt \@minus1pt} \setlength{\intextsep}{20bp \@plus4pt \@minus2pt} \setlength{\textfloatsep}{20bp \@plus4pt \@minus2pt} @@ -267,7 +264,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} @@ -282,7 +279,7 @@ \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet \reserved@a\@xhline} \def\thu@title@font{% - \ifthu@arialtitle\sffamily\else\relax\fi} + \ifthu@arialtitle\sffamily\else\heiti\fi} \AtBeginDocument{% \pagestyle{thu@empty} \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}} @@ -297,31 +294,34 @@ chapter={ afterindent=true, pagestyle={\ifthu@bachelor thu@plain\else thu@headings\fi}, - beforeskip={\ifthu@bachelor 13bp\else 9bp\fi}, + beforeskip={\ifthu@bachelor 15bp\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[1.333]\else\sanhao[1]\fi}, nameformat=\relax, numberformat=\relax, titleformat=\thu@chapter@titleformat, + lofskip=0pt, + lotskip=0pt, }, section={ 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\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\heiti\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={\csname thu@title@font\endcsname\heiti\xiaosi[1.667]}, + format={\thu@title@font\ifthu@bachelor\xiaosi[1.25]\else\xiaosi[1.667]\fi}, }, paragraph/afterindent=true, subparagraph/afterindent=true} @@ -341,7 +341,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{}{}} @@ -354,7 +356,7 @@ \setcounter{tocdepth}{2} \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} \ifthu@arialtoc \def\thu@toc@font{\sffamily} \fi @@ -366,7 +368,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 @@ -454,8 +456,13 @@ \def\thusetup{\kvsetkeys{thu}} \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}{ @@ -511,14 +518,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 @@ -533,21 +540,21 @@ \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}} \fi \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 @@ -600,7 +607,7 @@ \end{center}}} \fi \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} @@ -746,7 +753,7 @@ \pagenumbering{Roman} \thu@cabstract \vskip12bp - \thu@put@keywords{\heiti\thu@ckeywords@title}{\thu@ckeywords} + \thu@put@keywords{\textbf\thu@ckeywords@title}{\thu@ckeywords} \thu@chapter*[]{\eabstractname} % no tocline \thu@eabstract \vskip12bp @@ -798,7 +805,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 \def\ext@equation{loe} @@ -807,36 +814,44 @@ {\protect\numberline{#1}}} \newcommand\listofequations{\thu@listof{equation}} \let\l@equation\l@figure -\bibpunct{[}{]}{,}{s}{}{,} -\renewcommand\NAT@citesuper[3]{\ifNAT@swa% - \unskip\kern\p@\textsuperscript{\NAT@@open #1\NAT@@close}% - \if*#3*\else\ (#3)\fi\else #1\fi\endgroup} +\newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} \DeclareRobustCommand\inlinecite{\@inlinecite} \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \let\onlinecite\inlinecite -\def\thudot{\ifthu@bachelor\else\unskip.\fi} -\renewenvironment{thebibliography}[1]{% - \thu@chapter*{\bibname}% - \wuhao[1.5] - \list{\@biblabel{\@arabic\c@enumiv}}% - {\renewcommand{\makelabel}[1]{##1\hfill} - \settowidth\labelwidth{1.1cm} - \setlength{\labelsep}{0.4em} - \setlength{\itemindent}{0pt} - \setlength{\leftmargin}{\labelwidth+\labelsep} - \addtolength{\itemsep}{-0.7em} - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy\frenchspacing - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \interlinepenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist\frenchspacing} +\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} +\expandafter\newcommand\csname bibstyle@numeric\endcsname{% + \bibpunct{[}{]}{,}{s}{,}{\textsuperscript{,}}} +\expandafter\newcommand\csname bibstyle@author-year\endcsname{% + \bibpunct{(}{)}{;}{a}{,}{,}} +\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 + }{}% +}{}{} +\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} +\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 +}{}{} +\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} \let\thu@appendix\appendix \renewenvironment{appendix}{% \let\title\thu@appendix@title @@ -845,7 +860,7 @@ \let\title\@gobble \newcommand{\thu@appendix@title}[1]{% \begin{center} - \bfseries\xiaosi #1 + \xiaosi[1.667] #1 \end{center}} \newlist{translationbib}{enumerate}{1} \setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp, @@ -864,7 +879,9 @@ leftmargin=10mm,labelsep=!,before=\xiaosi[1.26]} \def\publicationskip{\bigskip\bigskip} \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}}} \AtEndOfClass{\input{thuthesis.cfg}} \AtEndOfClass{\sloppy} |