From d2ce88d73b5923b144961ab22dbb9198bcc761ce Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 19 Dec 2017 00:05:45 +0000 Subject: thuthesis (18dec17) git-svn-id: svn://tug.org/texlive/trunk@46093 c570f23f-e606-0410-a88d-b1316a301751 --- .../bibtex/bst/thuthesis/thuthesis-author-year.bst | 331 +++++++++++--------- .../bibtex/bst/thuthesis/thuthesis-numeric.bst | 337 ++++++++++++--------- .../texmf-dist/doc/latex/thuthesis/dtx-style.sty | 14 +- Master/texmf-dist/doc/latex/thuthesis/latexmkrc | 2 +- Master/texmf-dist/doc/latex/thuthesis/main.pdf | Bin 938267 -> 938275 bytes Master/texmf-dist/doc/latex/thuthesis/main.tex | 16 +- Master/texmf-dist/doc/latex/thuthesis/shuji.pdf | Bin 4364 -> 4383 bytes Master/texmf-dist/doc/latex/thuthesis/shuji.tex | 2 +- .../texmf-dist/doc/latex/thuthesis/thuthesis.pdf | Bin 563928 -> 563268 bytes .../source/latex/thuthesis/thuthesis.dtx | 74 ++--- .../source/latex/thuthesis/thuthesis.ins | 49 ++- .../texmf-dist/tex/latex/thuthesis/thuthesis.cfg | 19 +- .../texmf-dist/tex/latex/thuthesis/thuthesis.cls | 60 ++-- 13 files changed, 482 insertions(+), 422 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst index 9f1c7eaa6c9..8d9428f3ec0 100644 --- a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst +++ b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst @@ -1,23 +1,32 @@ -%% Copyright (C) 2016-2017 by Zeping Lee %% +%% This is file `gbt-7714-2015-author-year.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt-7714-2015.dtx (with options: `authoryear') +%% +%% Copyright (C) 2016-2017 by Zeping Lee +%% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.2 of this license or (at your option) any later %% version. The latest version of this license is in: -%% +%% %% http://www.latex-project.org/lppl.txt -%% +%% %% and version 1.2 or later is part of all distributions of %% LaTeX version 1999/12/01 or later. -%% +%% %% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly, %% which was designed for use with the `natbib.sty' package. -%% +%% ENTRY { address author booktitle chapter + date doi eid edition @@ -48,12 +57,12 @@ ENTRY volume year } - { lang } - { mark_ label extra.label sort.label short.list } + { entry.lang } + { label extra.label sort.label short.list entry.mark } 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 { lang.zh lang.ja lang.en lang.ru } INTEGERS { charptr stringlength } @@ -63,11 +72,10 @@ FUNCTION {init.state.consts} #2 'after.sentence := #3 'after.block := #4 'after.slash := - #4 'lang.zh := - #5 'lang.ja := - #1 'lang.en := - #3 'lang.ru := - #0 'lang.default := + #2 'lang.zh := + #3 'lang.ja := + #0 'lang.en := + #1 'lang.ru := } STRINGS { s t } @@ -279,8 +287,59 @@ FUNCTION {emphasize} if$ } +INTEGERS { ascii } + +FUNCTION {get.char.lang} +{ chr.to.int$ 'ascii := + ascii #227 > ascii #234 < and + { lang.zh } + { ascii #227 = + { lang.ja } + { ascii #207 > ascii #212 < and + { lang.ru } + { lang.en } + if$ + } + if$ + } + if$ +} + +INTEGERS { char.lang lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.en 'lang := + tmp.str empty$ + { "Empty string!" warning$ } + { #1 'charptr := + tmp.str text.length$ #1 + 'stringlength := + { charptr stringlength < } + { tmp.str charptr #1 substring$ get.char.lang 'char.lang := + char.lang lang > + { char.lang 'lang := } + 'skip$ + if$ + + char.lang lang.zh = char.lang lang.ja = or + { charptr #3 + 'charptr := } + { char.lang lang.ru = + { charptr #2 + 'charptr := } + { charptr #1 + 'charptr := } + if$ + } + if$ + } + while$ + } + if$ + lang +} + FUNCTION {is.in.chinese} -{ lang lang.zh = +{ entry.lang lang.zh = } FUNCTION {format.et.al} @@ -297,7 +356,7 @@ FUNCTION {format.anonymous} if$ } -INTEGERS { nameptr namesleft numnames } +INTEGERS { nameptr namesleft numnames name.lang} FUNCTION {format.names} { 's := @@ -305,9 +364,12 @@ FUNCTION {format.names} s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > nameptr #4 < and } - { s nameptr "{vv~}{ll}{ f{ }}" format.name$ - s nameptr "{, jj}" format.name$ * - 't := + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}{, jj}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ nameptr #1 > { namesleft #1 > { ", " * t * } @@ -374,8 +436,31 @@ FUNCTION {format.url} if$ } +FUNCTION {is.doi.in.url} +{ url empty$ + { #0 } + { doi text.length$ 'stringlength := + url text.length$ 'charptr := + { url charptr stringlength substring$ doi = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ +} + FUNCTION {format.doi} -{ "" +{ doi empty$ + { "" } + { is.doi.in.url + { "" } + { new.block "\doi{" doi * "}" * } + if$ + } + if$ } FUNCTION {format.title} @@ -386,16 +471,16 @@ FUNCTION {format.title} } FUNCTION {set.mark} -{ mark_ empty$ not +{ entry.mark empty$ not 'pop$ { mark empty$ not - { pop$ mark 'mark_ := } - { 'mark_ := } + { pop$ mark 'entry.mark := } + { 'entry.mark := } if$ media empty$ not - { mark_ "/" * media * 'mark_ := } + { entry.mark "/" * media * 'entry.mark := } { url empty$ not - { mark_ "/OL" * 'mark_ := } + { entry.mark "/OL" * 'entry.mark := } 'skip$ if$ } @@ -405,7 +490,7 @@ FUNCTION {set.mark} } FUNCTION {format.mark} -{ "\allowbreak[" mark_ * "]" * } +{ "\allowbreak[" entry.mark * "]" * } FUNCTION {format.full.names} {'s := @@ -413,8 +498,12 @@ FUNCTION {format.full.names} s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } - { s nameptr - "{vv~}{ll}" format.name$ 't := + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ nameptr #1 > { namesleft #1 > @@ -519,15 +608,6 @@ FUNCTION {n.dashify} while$ } -FUNCTION {format.date} -{ year duplicate$ empty$ - { "empty year in " cite$ * warning$ - pop$ "" } - 'skip$ - if$ - extra.label * -} - FUNCTION {extract.before.dash} { duplicate$ empty$ { pop$ "" } @@ -585,28 +665,40 @@ FUNCTION {contains.dash} FUNCTION {format.year} { year empty$ not - { year } - { urldate empty$ not - { "[" urldate extract.before.dash * "]" * } - { "empty year in " cite$ * warning$ "" } + { year extract.before.dash } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + "" + } if$ } if$ - extract.before.dash extra.label * } +FUNCTION {format.date} +{ type$ "patent" = type$ "newspaper" = or + date empty$ not and + { date } + { year } + if$ +} + FUNCTION {format.editdate} -{ year contains.dash - { "\allowbreak(" year * ")" * } +{ date empty$ not + type$ "newspaper" = not and + url empty$ not doi empty$ not or + and + { "\allowbreak(" date * ")" * } { "" } if$ } FUNCTION {format.urldate} -{ urldate empty$ - { "" } +{ urldate empty$ not { "\allowbreak[" urldate * "]" * } + { "" } if$ } @@ -681,7 +773,7 @@ FUNCTION {format.number} { "" } { number is.number { is.in.chinese - { "第" volume * "册" * } + { "第" number * "册" * } { "number" number tie.or.space.connect } if$ } @@ -699,49 +791,36 @@ FUNCTION {format.volume.number} } FUNCTION {format.series.vol.num.title} -{ type$ "report" = type$ "standard" = or - { format.title - number empty$ not - { ": " * number } +{ format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } 'skip$ if$ + title * } - { 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$ - } + { title + s empty$ not + { ": " * s * } + 'skip$ if$ - "t" change.case$ } if$ + "t" change.case$ } FUNCTION {format.series.vol.num.booktitle} -{ type$ "report" = type$ "standard" = or - { format.volume.number } - { format.volume } - if$ - 's := +{ format.volume.number 's := series empty$ not { series ": " * s empty$ not { s * "\quad " * } 'skip$ if$ - booktitle field.or.null * + booktitle * } - { booktitle field.or.null + { booktitle s empty$ not { ": " * s * } 'skip$ @@ -776,12 +855,16 @@ FUNCTION {format.edition} { edition num.to.ordinal " ed." * } if$ } - { edition "t" change.case$ 's := - s "Revised" = s "Revised edition" = or - { "Rev. ed." } - { s " ed." * } + { entry.lang lang.en = + { edition "t" change.case$ 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." *} + if$ + } + { edition } if$ - } + } if$ } if$ @@ -1091,6 +1174,7 @@ FUNCTION {article.in.journal} volume output format.journal.number "" output.after format.pages punct.colon output.after + format.editdate "" output.after format.urldate "" output.after format.url output format.doi output @@ -1306,61 +1390,18 @@ 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} +FUNCTION {set.entry.lang} { 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" = + { author field.or.null title field.or.null * get.str.lang } + { language "english" = { lang.en } - { language "zh" = + { language "chinese" = { lang.zh } - { language "ja" = + { language "japanese" = { lang.ja } - { language "ru" = + { language "russian" = { lang.ru } - { lang.default } + { lang.en } if$ } if$ @@ -1368,9 +1409,9 @@ FUNCTION {set.language} if$ } if$ - 'lang := } if$ + 'entry.lang := } FUNCTION {sortify} @@ -1391,7 +1432,12 @@ FUNCTION {chop.word} FUNCTION {format.lab.names} { 's := - s #1 "{vv~}{ll}" format.name$ + s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$} + { t #1 "{ll}{ff}" format.name$} + if$ s num.names$ #1 > { "\ " * format.et.al * } 'skip$ @@ -1479,15 +1525,10 @@ FUNCTION {calc.label} short.list "(" * - year duplicate$ empty$ + format.year extract.before.dash duplicate$ empty$ short.list key field.or.null = or - { pop$ - urldate empty$ not - { "[" urldate extract.before.dash * "]" * } - { "" } - if$ - } - 'extract.before.dash + { pop$ "" } + 'skip$ if$ * 'label := @@ -1621,7 +1662,7 @@ FUNCTION {editor.organization.sort} } FUNCTION {presort} -{ set.language +{ set.entry.lang calc.label label sortify " " @@ -1721,19 +1762,17 @@ FUNCTION {begin.bib} 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}}" + "\providecommand{\url}[1]{#1}" write$ newline$ - "\expandafter\ifx\csname thumasterbib\endcsname\relax" + "\providecommand{\href}[2]{\url{#2}}" write$ newline$ - " \providecommand\thumasterbib{D}\fi" + "\providecommand{\doi}[1]{DOI: \href{http://dx.doi.org/#1}{#1}}" write$ newline$ - "\expandafter\ifx\csname thuphdbib\endcsname\relax" + "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" write$ newline$ - " \providecommand\thuphdbib{D}\fi" + " \urlstyle{same}\fi" write$ newline$ } diff --git a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst index 1c3d27a5c18..3b9f761670b 100644 --- a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst +++ b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst @@ -1,23 +1,32 @@ -%% Copyright (C) 2016-2017 by Zeping Lee %% +%% This is file `gbt-7714-2015-numerical.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gbt-7714-2015.dtx (with options: `numerical') +%% +%% Copyright (C) 2016-2017 by Zeping Lee +%% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.2 of this license or (at your option) any later %% version. The latest version of this license is in: -%% +%% %% http://www.latex-project.org/lppl.txt -%% +%% %% and version 1.2 or later is part of all distributions of %% LaTeX version 1999/12/01 or later. -%% +%% %% This BibTeX style file is derived from `plainnat.bst' by Patrick W Daly, %% which was designed for use with the `natbib.sty' package. -%% +%% ENTRY { address author booktitle chapter + date doi eid edition @@ -47,12 +56,12 @@ ENTRY volume year } - { lang } - { mark_ label extra.label sort.label short.list } + { entry.lang } + { label extra.label sort.label short.list entry.mark } 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 { lang.zh lang.ja lang.en lang.ru } INTEGERS { charptr stringlength } @@ -62,11 +71,10 @@ FUNCTION {init.state.consts} #2 'after.sentence := #3 'after.block := #4 'after.slash := - #4 'lang.zh := - #5 'lang.ja := - #1 'lang.en := - #3 'lang.ru := - #0 'lang.default := + #2 'lang.zh := + #3 'lang.ja := + #0 'lang.en := + #1 'lang.ru := } STRINGS { s t } @@ -278,8 +286,59 @@ FUNCTION {emphasize} if$ } +INTEGERS { ascii } + +FUNCTION {get.char.lang} +{ chr.to.int$ 'ascii := + ascii #227 > ascii #234 < and + { lang.zh } + { ascii #227 = + { lang.ja } + { ascii #207 > ascii #212 < and + { lang.ru } + { lang.en } + if$ + } + if$ + } + if$ +} + +INTEGERS { char.lang lang } + +STRINGS { tmp.str } + +FUNCTION {get.str.lang} +{ 'tmp.str := + lang.en 'lang := + tmp.str empty$ + { "Empty string!" warning$ } + { #1 'charptr := + tmp.str text.length$ #1 + 'stringlength := + { charptr stringlength < } + { tmp.str charptr #1 substring$ get.char.lang 'char.lang := + char.lang lang > + { char.lang 'lang := } + 'skip$ + if$ + + char.lang lang.zh = char.lang lang.ja = or + { charptr #3 + 'charptr := } + { char.lang lang.ru = + { charptr #2 + 'charptr := } + { charptr #1 + 'charptr := } + if$ + } + if$ + } + while$ + } + if$ + lang +} + FUNCTION {is.in.chinese} -{ lang lang.zh = +{ entry.lang lang.zh = } FUNCTION {format.et.al} @@ -296,7 +355,7 @@ FUNCTION {format.anonymous} if$ } -INTEGERS { nameptr namesleft numnames } +INTEGERS { nameptr namesleft numnames name.lang} FUNCTION {format.names} { 's := @@ -304,9 +363,12 @@ FUNCTION {format.names} s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > nameptr #4 < and } - { s nameptr "{vv~}{ll}{ f{ }}" format.name$ - s nameptr "{, jj}" format.name$ * - 't := + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}{ f{~}}{, jj}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ nameptr #1 > { namesleft #1 > { ", " * t * } @@ -373,8 +435,31 @@ FUNCTION {format.url} if$ } +FUNCTION {is.doi.in.url} +{ url empty$ + { #0 } + { doi text.length$ 'stringlength := + url text.length$ 'charptr := + { url charptr stringlength substring$ doi = not + charptr #0 > + and + } + { charptr #1 - 'charptr := } + while$ + charptr + } + if$ +} + FUNCTION {format.doi} -{ "" +{ doi empty$ + { "" } + { is.doi.in.url + { "" } + { new.block "\doi{" doi * "}" * } + if$ + } + if$ } FUNCTION {format.title} @@ -385,16 +470,16 @@ FUNCTION {format.title} } FUNCTION {set.mark} -{ mark_ empty$ not +{ entry.mark empty$ not 'pop$ { mark empty$ not - { pop$ mark 'mark_ := } - { 'mark_ := } + { pop$ mark 'entry.mark := } + { 'entry.mark := } if$ media empty$ not - { mark_ "/" * media * 'mark_ := } + { entry.mark "/" * media * 'entry.mark := } { url empty$ not - { mark_ "/OL" * 'mark_ := } + { entry.mark "/OL" * 'entry.mark := } 'skip$ if$ } @@ -404,7 +489,7 @@ FUNCTION {set.mark} } FUNCTION {format.mark} -{ "\allowbreak[" mark_ * "]" * } +{ "\allowbreak[" entry.mark * "]" * } FUNCTION {format.full.names} {'s := @@ -412,8 +497,12 @@ FUNCTION {format.full.names} s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } - { s nameptr - "{vv~}{ll}" format.name$ 't := + { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$ 't := } + { t #1 "{ll}{ff}" format.name$ 't := } + if$ nameptr #1 > { namesleft #1 > @@ -518,15 +607,6 @@ FUNCTION {n.dashify} while$ } -FUNCTION {format.date} -{ year duplicate$ empty$ - { "empty year in " cite$ * warning$ - pop$ "" } - 'skip$ - if$ - extra.label * -} - FUNCTION {extract.before.dash} { duplicate$ empty$ { pop$ "" } @@ -584,28 +664,40 @@ FUNCTION {contains.dash} FUNCTION {format.year} { year empty$ not - { year } - { urldate empty$ not - { "[" urldate extract.before.dash * "]" * } - { "empty year in " cite$ * warning$ "" } + { year extract.before.dash } + { date empty$ not + { date extract.before.dash } + { "empty year in " cite$ * warning$ + "" + } if$ } if$ - extract.before.dash extra.label * } +FUNCTION {format.date} +{ type$ "patent" = type$ "newspaper" = or + date empty$ not and + { date } + { year } + if$ +} + FUNCTION {format.editdate} -{ year contains.dash - { "\allowbreak(" year * ")" * } +{ date empty$ not + type$ "newspaper" = not and + url empty$ not doi empty$ not or + and + { "\allowbreak(" date * ")" * } { "" } if$ } FUNCTION {format.urldate} -{ urldate empty$ - { "" } +{ urldate empty$ not { "\allowbreak[" urldate * "]" * } + { "" } if$ } @@ -680,7 +772,7 @@ FUNCTION {format.number} { "" } { number is.number { is.in.chinese - { "第" volume * "册" * } + { "第" number * "册" * } { "number" number tie.or.space.connect } if$ } @@ -698,49 +790,36 @@ FUNCTION {format.volume.number} } FUNCTION {format.series.vol.num.title} -{ type$ "report" = type$ "standard" = or - { format.title - number empty$ not - { ": " * number } +{ format.volume.number 's := + series empty$ not + { series ": " * + s empty$ not + { s * "\quad " * } 'skip$ if$ + title * } - { 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$ - } + { title + s empty$ not + { ": " * s * } + 'skip$ if$ - "t" change.case$ } if$ + "t" change.case$ } FUNCTION {format.series.vol.num.booktitle} -{ type$ "report" = type$ "standard" = or - { format.volume.number } - { format.volume } - if$ - 's := +{ format.volume.number 's := series empty$ not { series ": " * s empty$ not { s * "\quad " * } 'skip$ if$ - booktitle field.or.null * + booktitle * } - { booktitle field.or.null + { booktitle s empty$ not { ": " * s * } 'skip$ @@ -775,12 +854,16 @@ FUNCTION {format.edition} { edition num.to.ordinal " ed." * } if$ } - { edition "t" change.case$ 's := - s "Revised" = s "Revised edition" = or - { "Rev. ed." } - { s " ed." * } + { entry.lang lang.en = + { edition "t" change.case$ 's := + s "Revised" = s "Revised edition" = or + { "Rev. ed." } + { s " ed." *} + if$ + } + { edition } if$ - } + } if$ } if$ @@ -1082,10 +1165,11 @@ FUNCTION {article.in.journal} format.mark "" output.after new.block journal "journal" output.check - format.year "year" output.check + format.date "year" output.check volume output format.journal.number "" output.after format.pages punct.colon output.after + format.editdate "" output.after format.urldate "" output.after format.url output format.doi output @@ -1123,9 +1207,9 @@ FUNCTION {online} format.mark "" output.after new.block format.address.publisher output - year empty$ year contains.dash or + date empty$ + { format.date output } 'skip$ - { format.year output } if$ format.pages punct.colon output.after format.editdate "" output.after @@ -1301,61 +1385,18 @@ 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} +FUNCTION {set.entry.lang} { 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" = + { author field.or.null title field.or.null * get.str.lang } + { language "english" = { lang.en } - { language "zh" = + { language "chinese" = { lang.zh } - { language "ja" = + { language "japanese" = { lang.ja } - { language "ru" = + { language "russian" = { lang.ru } - { lang.default } + { lang.en } if$ } if$ @@ -1363,9 +1404,9 @@ FUNCTION {set.language} if$ } if$ - 'lang := } if$ + 'entry.lang := } FUNCTION {sortify} @@ -1386,7 +1427,12 @@ FUNCTION {chop.word} FUNCTION {format.lab.names} { 's := - s #1 "{vv~}{ll}" format.name$ + s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := + t get.str.lang 'name.lang := + name.lang lang.en = + { t #1 "{vv~}{ll}" format.name$} + { t #1 "{ll}{ff}" format.name$} + if$ s num.names$ #1 > { "\ " * format.et.al * } 'skip$ @@ -1474,15 +1520,10 @@ FUNCTION {calc.label} short.list "(" * - year duplicate$ empty$ + format.year extract.before.dash duplicate$ empty$ short.list key field.or.null = or - { pop$ - urldate empty$ not - { "[" urldate extract.before.dash * "]" * } - { "" } - if$ - } - 'extract.before.dash + { pop$ "" } + 'skip$ if$ * 'label := @@ -1501,7 +1542,7 @@ FUNCTION {int.to.fix} } FUNCTION {presort} -{ set.language +{ set.entry.lang calc.label label sortify " " @@ -1580,19 +1621,17 @@ FUNCTION {begin.bib} 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}}" + "\providecommand{\url}[1]{#1}" write$ newline$ - "\expandafter\ifx\csname thumasterbib\endcsname\relax" + "\providecommand{\href}[2]{\url{#2}}" write$ newline$ - " \providecommand\thumasterbib{D}\fi" + "\providecommand{\doi}[1]{DOI: \href{http://dx.doi.org/#1}{#1}}" write$ newline$ - "\expandafter\ifx\csname thuphdbib\endcsname\relax" + "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" write$ newline$ - " \providecommand\thuphdbib{D}\fi" + " \urlstyle{same}\fi" write$ newline$ } diff --git a/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty b/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty index 2bf9b1397e3..30fdc674f12 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty +++ b/Master/texmf-dist/doc/latex/thuthesis/dtx-style.sty @@ -10,15 +10,13 @@ %% %% Copyright (C) 2005-2017 by Ruini Xue %% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3a +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. -%% The latest version of this license is in: -%% -%% 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. +%% 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. %% %% To produce the documentation run the original source files ending with `.dtx' %% through LaTeX. diff --git a/Master/texmf-dist/doc/latex/thuthesis/latexmkrc b/Master/texmf-dist/doc/latex/thuthesis/latexmkrc index f28a2e2394f..60e98be092c 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/latexmkrc +++ b/Master/texmf-dist/doc/latex/thuthesis/latexmkrc @@ -1,5 +1,5 @@ # vim: set ft=perl: -$clean_ext = 'thm glo gls bbl hd loe'; +$clean_ext = 'thm glo gls bbl hd loe xdv'; $makeindex = 'makeindex -s gind.ist %O -o %D %S'; add_cus_dep('glo', 'gls', 0, 'makeglo2gls'); sub makeglo2gls { diff --git a/Master/texmf-dist/doc/latex/thuthesis/main.pdf b/Master/texmf-dist/doc/latex/thuthesis/main.pdf index 3769a377238..0a9a26d94ae 100644 Binary files a/Master/texmf-dist/doc/latex/thuthesis/main.pdf and b/Master/texmf-dist/doc/latex/thuthesis/main.pdf differ diff --git a/Master/texmf-dist/doc/latex/thuthesis/main.tex b/Master/texmf-dist/doc/latex/thuthesis/main.tex index 051d05acb4e..ec795a13359 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/main.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/main.tex @@ -1,12 +1,12 @@ -\documentclass[type=master]{thuthesis} +\documentclass[degree=master]{thuthesis} % 选项: -% type=[bachelor|master|doctor|postdoctor], % 必选 -% secret, % 可选 -% pifootnote, % 可选(建议打开) -% openany|openright, % 可选,基本不用 -% arial, % 可选,基本不用 -% arialtoc, % 可选,基本不用 -% arialtitle % 可选,基本不用 +% degree=[bachelor|master|doctor|postdoctor], % 必选 +% secret, % 可选 +% pifootnote, % 可选(建议打开) +% openany|openright, % 可选,基本不用 +% arial, % 可选,基本不用 +% arialtoc, % 可选,基本不用 +% arialtitle % 可选,基本不用 % 所有其它可能用到的包都统一放到这里了,可以根据自己的实际添加或者删除。 \usepackage{thuthesis} diff --git a/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf b/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf index 936dba266f7..544ef76c4ba 100644 Binary files a/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf and b/Master/texmf-dist/doc/latex/thuthesis/shuji.pdf differ diff --git a/Master/texmf-dist/doc/latex/thuthesis/shuji.tex b/Master/texmf-dist/doc/latex/thuthesis/shuji.tex index e073e1e543f..94a98394079 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/shuji.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/shuji.tex @@ -1,4 +1,4 @@ -\documentclass[type=master]{thuthesis} +\documentclass[degree=master]{thuthesis} \ifxetex\relax\else % for latex/pdflatex \usepackage{CJKvert} diff --git a/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf b/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf index ceb9923e798..aa05c68b723 100644 Binary files a/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf and b/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf differ diff --git a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx index 0c54176cb0b..9d33a81f578 100644 --- a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx +++ b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx @@ -16,7 +16,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2017/12/4 5.4.1 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2017/12/18 5.4.2 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -84,7 +84,7 @@ % subfig to be compatible with subfigure. add \pkg{courier} package for tt font.} % \changes{v1.4}{2005/12/05}{Fix the problem of \textbf{chinese}, which is % because both CJK and everysel redefine the \cs{selectfont}. So, a not so good -% workaround is merge them up. Add \file{shuji.tex} example. Add \cs{pozhehao} command.} +% workaround is to merge them up. Add \file{shuji.tex} example. Add \cs{pozhehao} command.} % \changes{v2.1}{2006/02/27}{Add support to bachelor thesis.} % \changes{v2.1}{2006/03/01}{Remove \pkg{fancyhdr} and \pkg{geometry}.} % \changes{v2.1}{2006/03/01}{Redefine footnote marks.} @@ -148,6 +148,7 @@ % \changes{v4.8}{2013/03/04}{dvips method is deprecated. We ask their users to load it manually.} % \changes{v4.8}{2013/03/09}{reset baselinestretch after ctex's change.} % \changes{v4.8}{2014/11/25}{好几年累积的一些更新,最重要的是切换到 \CTeX。} +% \changes{v5.4.2}{2017/12/16}{删除 \cs{pozhehao}。} % % \def\indexname{索引} % \def\glossaryname{修改记录} @@ -391,16 +392,16 @@ % \subsection{论文选项} % \label{sec:option} % -% \DescribeOption{type} +% \DescribeOption{degree} % 选择论文类型,当前支 % 持:\option{bachelor},\option{master},\option{doctor},\option{postdoctor}。 % 为必选项。 % \begin{latex} % % 博士论文 -% \documentclass[type=doctor]{thuthesis} +% \documentclass[degree=doctor]{thuthesis} % % % 硕士论文 -% \documentclass[type=master]{thuthesis} +% \documentclass[degree=master]{thuthesis} % \end{latex} % % \DescribeOption{secret} @@ -1016,8 +1017,7 @@ % 否则,就要像例子里面那样做一些微调(参看模板自带的 \file{shuji.tex})。下面是一 % 个例子: % \begin{latex} -% \documentclass[type=master]{thuthesis} -% % 此处 type 无所谓 +% \documentclass[degree=master]{thuthesis} % % \begin{document} % \thuset{ @@ -1107,7 +1107,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{thuthesis} %\ProvidesFile{thuthesis.cfg} -%[2017/12/4 5.4.1 Tsinghua University Thesis Template] +%[2017/12/18 5.4.2 Tsinghua University Thesis Template] % \end{macrocode} % % \subsection{定义选项} @@ -1126,7 +1126,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} -\def\version{5.4.1} +\def\version{5.4.2} \RequirePackage{kvoptions} \SetupKeyvalOptions{ @@ -1137,36 +1137,28 @@ % % 用 \pkg{kvoptions} 的 \texttt{key=value} 方式来设置论文类型。 % \changes{v5.0.0}{2015/12/13}{使用 \pkg{kvoptions} 简化选项 type。} +% \changes{v5.4.2}{2017/12/18}{使用 degree 取代 type 选项。} % \begin{macrocode} \newif\ifthu@bachelor \newif\ifthu@master \newif\ifthu@doctor \newif\ifthu@postdoctor -\define@key{thu}{type}{% +\define@key{thu}{degree}{% \thu@bachelorfalse \thu@masterfalse \thu@doctorfalse \thu@postdoctorfalse - \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. + \expandafter\csname thu@#1true\endcsname} +\define@key{thu}{type}{% + \ClassError{thuthesis}{'type' is deprecated, \MessageBreak + please use 'degree=#1' instead}{}} +\def\thu@deprecated@degree@option{% \ClassError{thuthesis}{Option '\CurrentOption' is deprecated, \MessageBreak - please use 'type=\CurrentOption' instead}{}} -\DeclareVoidOption{bachelor}{\thu@deprecated@type@option} -\DeclareVoidOption{master}{\thu@deprecated@type@option} -\DeclareVoidOption{doctor}{\thu@deprecated@type@option} -\DeclareVoidOption{postdoctor}{\thu@deprecated@type@option} + please use 'degree=\CurrentOption' instead}{}} +\DeclareVoidOption{bachelor}{\thu@deprecated@degree@option} +\DeclareVoidOption{master}{\thu@deprecated@degree@option} +\DeclareVoidOption{doctor}{\thu@deprecated@degree@option} +\DeclareVoidOption{postdoctor}{\thu@deprecated@degree@option} % \end{macrocode} % % 论文是否保密。 @@ -1221,6 +1213,17 @@ % 解析用户传递过来的选项,并加载 \pkg{ctexbook}。 % \begin{macrocode} \ProcessKeyvalOptions* +\ifthu@bachelor\relax\else + \ifthu@master\relax\else + \ifthu@doctor\relax\else + \ifthu@postdoctor\relax\else + \ClassError{thuthesis}% + {Please specify thesis degree in option: \MessageBreak + degree=[bachelor | master | doctor | postdoctor]}{} + \fi + \fi + \fi +\fi % \end{macrocode} % % 使用 \XeTeX\ 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动调用。传递 @@ -3304,19 +3307,6 @@ % \end{macrocode} % \end{macro} % -% \subsection{自定义命令和环境} -% \label{sec:userdefine} -% -% \begin{macro}{\pozhehao} -% 为了兼容性保留之,推荐直接输入“——”。 -% \changes{v2.1}{2006/01/12}{稍微加宽一点。同时把名字改为\textbf{破折号}:\cs{pozhehao}} -% \begin{macrocode} -%<*cfg> -\newcommand{\pozhehao}{——} -% -% \end{macrocode} -% \end{macro} -% % % \subsection{其它} % \label{sec:other} diff --git a/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins b/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins index d9eccdcc136..7d8890c78a5 100644 --- a/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins +++ b/Master/texmf-dist/source/latex/thuthesis/thuthesis.ins @@ -1,19 +1,18 @@ %% -%% Copyright (C) 2005-2016 by Ruini Xue +%% Copyright (C) 2005-2017 by Ruini Xue %% %% This file is part of the ThuThesis package project. %% --------------------------------------------------- %% -%% 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: -%% -%% 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. +%% 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. %% +%% This work has the LPPL maintenance status `maintained'. \input docstrip @@ -30,15 +29,13 @@ This is a generated file. Copyright (C) 2005-\the\year by Ruini Xue -This file may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3a +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version. -The latest version of this license is in: - -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. +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. To produce the documentation run the original source files ending with `.dtx' through LaTeX. @@ -51,17 +48,15 @@ This is a generated file. Copyright (C) 2005-\the\year by Xue Ruini -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: - -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. +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. -This is the configuration file of the thuthesis package with LaTeX2e. +This is the configuration file of the ThuThesis package with LaTeX2e. \endpreamble @@ -81,6 +76,8 @@ This is the configuration file of the thuthesis package with LaTeX2e. \Msg{*} \Msg{* \space\space thuthesis.cls} \Msg{* \space\space thuthesis.cfg} + \Msg{* \space\space thuthesis-author-year.bst} + \Msg{* \space\space thuthesis-numeric.bst} \Msg{*} \Msg{* To produce the documentation run the files ending with} \Msg{* `.dtx' through LaTeX.} diff --git a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg index 57f517655df..68c2d55d4a3 100644 --- a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg +++ b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cfg @@ -10,20 +10,18 @@ %% %% Copyright (C) 2005-2017 by Xue Ruini %% -%% 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 is the configuration file of the thuthesis package with LaTeX2e. +%% This is the configuration file of the ThuThesis package with LaTeX2e. %% \ProvidesFile{thuthesis.cfg} -[2017/12/4 5.4.1 Tsinghua University Thesis Template] +[2017/12/18 5.4.2 Tsinghua University Thesis Template] \theorembodyfont{\normalfont} \theoremheaderfont{\normalfont\heiti} \theoremsymbol{\ensuremath{\square}} @@ -178,7 +176,6 @@ \newcommand{\thu@resume@title}{个人简历、在学期间发表的学术论文与研究成果} \fi \fi -\newcommand{\pozhehao}{——} \endinput %% %% End of file `thuthesis.cfg'. diff --git a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls index 791cc50f1ea..988f662a226 100644 --- a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls +++ b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls @@ -10,25 +10,23 @@ %% %% Copyright (C) 2005-2017 by Ruini Xue %% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3a +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. -%% The latest version of this license is in: -%% -%% 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. +%% 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. %% %% To produce the documentation run the original source files ending with `.dtx' %% through LaTeX. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesClass{thuthesis} -[2017/12/4 5.4.1 Tsinghua University Thesis Template] +[2017/12/18 5.4.2 Tsinghua University Thesis Template] \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} -\def\version{5.4.1} +\def\version{5.4.2} \RequirePackage{kvoptions} \SetupKeyvalOptions{ @@ -39,31 +37,22 @@ \newif\ifthu@master \newif\ifthu@doctor \newif\ifthu@postdoctor -\define@key{thu}{type}{% +\define@key{thu}{degree}{% \thu@bachelorfalse \thu@masterfalse \thu@doctorfalse \thu@postdoctorfalse - \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. + \expandafter\csname thu@#1true\endcsname} +\define@key{thu}{type}{% + \ClassError{thuthesis}{'type' is deprecated, \MessageBreak + please use 'degree=#1' instead}{}} +\def\thu@deprecated@degree@option{% \ClassError{thuthesis}{Option '\CurrentOption' is deprecated, \MessageBreak - please use 'type=\CurrentOption' instead}{}} -\DeclareVoidOption{bachelor}{\thu@deprecated@type@option} -\DeclareVoidOption{master}{\thu@deprecated@type@option} -\DeclareVoidOption{doctor}{\thu@deprecated@type@option} -\DeclareVoidOption{postdoctor}{\thu@deprecated@type@option} + please use 'degree=\CurrentOption' instead}{}} +\DeclareVoidOption{bachelor}{\thu@deprecated@degree@option} +\DeclareVoidOption{master}{\thu@deprecated@degree@option} +\DeclareVoidOption{doctor}{\thu@deprecated@degree@option} +\DeclareVoidOption{postdoctor}{\thu@deprecated@degree@option} \DeclareBoolOption{secret} \DeclareBoolOption{arialtoc} \DeclareBoolOption{arialtitle} @@ -75,6 +64,17 @@ raggedbottom, arialtitle} \ProcessKeyvalOptions* +\ifthu@bachelor\relax\else + \ifthu@master\relax\else + \ifthu@doctor\relax\else + \ifthu@postdoctor\relax\else + \ClassError{thuthesis}% + {Please specify thesis degree in option: \MessageBreak + degree=[bachelor | master | doctor | postdoctor]}{} + \fi + \fi + \fi +\fi \PassOptionsToPackage{no-math}{fontspec} \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook} \RequirePackage{etoolbox} -- cgit v1.2.3