From 905fbaa9cf31d5e79a8ad885abae9604045ac1ed Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 17 May 2022 20:11:18 +0000 Subject: thuthesis (17may22) git-svn-id: svn://tug.org/texlive/trunk@63324 c570f23f-e606-0410-a88d-b1316a301751 --- .../bibtex/bst/thuthesis/thuthesis-author-year.bst | 76 ++-- .../bibtex/bst/thuthesis/thuthesis-bachelor.bst | 76 ++-- .../bibtex/bst/thuthesis/thuthesis-numeric.bst | 76 ++-- Master/texmf-dist/doc/latex/thuthesis/CHANGELOG.md | 21 +- Master/texmf-dist/doc/latex/thuthesis/README.md | 4 + .../texmf-dist/doc/latex/thuthesis/data/chap02.tex | 5 +- .../texmf-dist/doc/latex/thuthesis/data/chap03.tex | 10 +- Master/texmf-dist/doc/latex/thuthesis/latexmkrc | 1 + Master/texmf-dist/doc/latex/thuthesis/spine.pdf | Bin 18789 -> 18834 bytes .../doc/latex/thuthesis/thuthesis-example.pdf | Bin 378207 -> 377654 bytes .../texmf-dist/doc/latex/thuthesis/thuthesis.pdf | Bin 1008818 -> 1017096 bytes .../source/latex/thuthesis/thuthesis.dtx | 401 ++++++++++++++------- .../texmf-dist/tex/latex/thuthesis/thuthesis.cls | 370 ++++++++++++------- 13 files changed, 709 insertions(+), 331 deletions(-) (limited to 'Master') 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 514368e842d..fe7e0d20dde 100644 --- a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst +++ b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-author-year.bst @@ -6,11 +6,11 @@ %% %% gbt7714.dtx (with options: `2015,thu,author-year') %% ------------------------------------------------------------------- -%% GB/T 7714—2015 BibTeX Style +%% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2021/12/08 v2.1.3 +%% Version: 2022/03/21 v2.1.4 %% ------------------------------------------------------------------- -%% Copyright (C) 2016—2021 by Zeping Lee +%% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -37,8 +37,6 @@ INTEGERS { show.mark space.before.mark show.medium.type - slash.for.extraction - in.booktitle short.journal italic.journal bold.journal.volume @@ -60,6 +58,10 @@ INTEGERS { lang.other.order } +STRINGS { + component.part.label +} + FUNCTION {load.config} { #2 'citation.et.al.min := @@ -78,8 +80,7 @@ FUNCTION {load.config} #1 'show.mark := #0 'space.before.mark := #1 'show.medium.type := - #1 'slash.for.extraction := - #0 'in.booktitle := + "slash" 'component.part.label := #0 'short.journal := #0 'italic.journal := #0 'bold.journal.volume := @@ -112,6 +113,7 @@ ENTRY editor eprint eprinttype + entrysubtype howpublished institution journal @@ -392,9 +394,22 @@ FUNCTION {new.sentence} FUNCTION {new.slash} { output.state before.all = 'skip$ - { slash.for.extraction + { component.part.label "slash" = { after.slash 'output.state := } - { after.block 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } if$ } if$ @@ -987,14 +1002,6 @@ FUNCTION {format.series.vol.num.booktitle} { format.booktitle.vol.num } if$ format.btitle - in.booktitle - { duplicate$ empty$ not entry.lang lang.en = and - { "In: " swap$ * } - 'skip$ - if$ - } - 'skip$ - if$ } FUNCTION {remove.period} @@ -1136,9 +1143,13 @@ FUNCTION {format.edition} { edition empty$ { "" } { edition is.number - { entry.lang lang.zh = - { edition " 版" * } - { edition num.to.ordinal " ed." * } + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ if$ } { entry.lang lang.en = @@ -1300,7 +1311,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } @@ -1338,7 +1352,15 @@ FUNCTION {format.date} { date empty$ not { type$ "patent" = type$ "newspaper" = or { date } - { format.year } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } if$ } { year empty$ not @@ -1806,7 +1828,15 @@ FUNCTION {journal.article} new.block title.in.journal { format.title "title" output.check - "J" set.entry.mark + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ format.mark "" output.after new.block } diff --git a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst index 78c81e628be..e7d7b7d85e7 100644 --- a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst +++ b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-bachelor.bst @@ -6,11 +6,11 @@ %% %% gbt7714.dtx (with options: `2015,numerical') %% ------------------------------------------------------------------- -%% GB/T 7714—2015 BibTeX Style +%% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2021/12/08 v2.1.3 +%% Version: 2022/03/21 v2.1.4 %% ------------------------------------------------------------------- -%% Copyright (C) 2016—2021 by Zeping Lee +%% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -37,8 +37,6 @@ INTEGERS { show.mark space.before.mark show.medium.type - slash.for.extraction - in.booktitle short.journal italic.journal bold.journal.volume @@ -55,6 +53,10 @@ INTEGERS { end.with.period } +STRINGS { + component.part.label +} + FUNCTION {load.config} { #2 'citation.et.al.min := @@ -73,8 +75,7 @@ FUNCTION {load.config} #1 'show.mark := #0 'space.before.mark := #1 'show.medium.type := - #1 'slash.for.extraction := - #0 'in.booktitle := + "slash" 'component.part.label := #0 'short.journal := #0 'italic.journal := #0 'bold.journal.volume := @@ -102,6 +103,7 @@ ENTRY editor eprint eprinttype + entrysubtype howpublished institution journal @@ -382,9 +384,22 @@ FUNCTION {new.sentence} FUNCTION {new.slash} { output.state before.all = 'skip$ - { slash.for.extraction + { component.part.label "slash" = { after.slash 'output.state := } - { after.block 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } if$ } if$ @@ -977,14 +992,6 @@ FUNCTION {format.series.vol.num.booktitle} { format.booktitle.vol.num } if$ format.btitle - in.booktitle - { duplicate$ empty$ not entry.lang lang.en = and - { "In: " swap$ * } - 'skip$ - if$ - } - 'skip$ - if$ } FUNCTION {remove.period} @@ -1126,9 +1133,13 @@ FUNCTION {format.edition} { edition empty$ { "" } { edition is.number - { entry.lang lang.zh = - { edition " 版" * } - { edition num.to.ordinal " ed." * } + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ if$ } { entry.lang lang.en = @@ -1290,7 +1301,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } @@ -1328,7 +1342,15 @@ FUNCTION {format.date} { date empty$ not { type$ "patent" = type$ "newspaper" = or { date } - { format.year } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } if$ } { year empty$ not @@ -1796,7 +1818,15 @@ FUNCTION {journal.article} new.block title.in.journal { format.title "title" output.check - "J" set.entry.mark + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ format.mark "" output.after new.block } diff --git a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst index 0b41d731401..f6679070958 100644 --- a/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst +++ b/Master/texmf-dist/bibtex/bst/thuthesis/thuthesis-numeric.bst @@ -6,11 +6,11 @@ %% %% gbt7714.dtx (with options: `2015,thu,numerical') %% ------------------------------------------------------------------- -%% GB/T 7714—2015 BibTeX Style +%% GB/T 7714 BibTeX Style %% https://github.com/zepinglee/gbt7714-bibtex-style -%% Version: 2021/12/08 v2.1.3 +%% Version: 2022/03/21 v2.1.4 %% ------------------------------------------------------------------- -%% Copyright (C) 2016—2021 by Zeping Lee +%% Copyright (C) 2016--2022 by Zeping Lee %% ------------------------------------------------------------------- %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -37,8 +37,6 @@ INTEGERS { show.mark space.before.mark show.medium.type - slash.for.extraction - in.booktitle short.journal italic.journal bold.journal.volume @@ -55,6 +53,10 @@ INTEGERS { end.with.period } +STRINGS { + component.part.label +} + FUNCTION {load.config} { #2 'citation.et.al.min := @@ -73,8 +75,7 @@ FUNCTION {load.config} #1 'show.mark := #0 'space.before.mark := #1 'show.medium.type := - #1 'slash.for.extraction := - #0 'in.booktitle := + "slash" 'component.part.label := #0 'short.journal := #0 'italic.journal := #0 'bold.journal.volume := @@ -102,6 +103,7 @@ ENTRY editor eprint eprinttype + entrysubtype howpublished institution journal @@ -382,9 +384,22 @@ FUNCTION {new.sentence} FUNCTION {new.slash} { output.state before.all = 'skip$ - { slash.for.extraction + { component.part.label "slash" = { after.slash 'output.state := } - { after.block 'output.state := } + { new.block + component.part.label "in" = + { entry.lang lang.en = + { "In: " output + write$ + "" + before.all 'output.state := + } + 'skip$ + if$ + } + 'skip$ + if$ + } if$ } if$ @@ -977,14 +992,6 @@ FUNCTION {format.series.vol.num.booktitle} { format.booktitle.vol.num } if$ format.btitle - in.booktitle - { duplicate$ empty$ not entry.lang lang.en = and - { "In: " swap$ * } - 'skip$ - if$ - } - 'skip$ - if$ } FUNCTION {remove.period} @@ -1126,9 +1133,13 @@ FUNCTION {format.edition} { edition empty$ { "" } { edition is.number - { entry.lang lang.zh = - { edition " 版" * } - { edition num.to.ordinal " ed." * } + { edition "1" = not + { entry.lang lang.zh = + { edition " 版" * } + { edition num.to.ordinal " ed." * } + if$ + } + 'skip$ if$ } { entry.lang lang.en = @@ -1290,7 +1301,10 @@ FUNCTION {format.year} { year extract.before.slash extra.label * } { date empty$ not { date extract.before.dash extra.label * } - { "empty year in " cite$ * warning$ + { entry.is.electronic not + { "empty year in " cite$ * warning$ } + 'skip$ + if$ urldate empty$ not { "[" urldate extract.before.dash * extra.label * "]" * } { "" } @@ -1328,7 +1342,15 @@ FUNCTION {format.date} { date empty$ not { type$ "patent" = type$ "newspaper" = or { date } - { format.year } + { entrysubtype empty$ not + { type$ "article" = entrysubtype "newspaper" = and + { date } + { format.year } + if$ + } + { format.year } + if$ + } if$ } { year empty$ not @@ -1796,7 +1818,15 @@ FUNCTION {journal.article} new.block title.in.journal { format.title "title" output.check - "J" set.entry.mark + entrysubtype empty$ not + { + entrysubtype "newspaper" = + { "N" set.entry.mark } + { "J" set.entry.mark } + if$ + } + { "J" set.entry.mark } + if$ format.mark "" output.after new.block } diff --git a/Master/texmf-dist/doc/latex/thuthesis/CHANGELOG.md b/Master/texmf-dist/doc/latex/thuthesis/CHANGELOG.md index 086fa411a54..e7883b5e175 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/thuthesis/CHANGELOG.md @@ -6,6 +6,24 @@ ## [Unreleased] +## [v7.3.0] - 2022-05-17 + +### Added + +- 新增 LuaTeX 支持(试验性)([#771](https://github.com/tuna/thuthesis/issues/771))。 + +### Changed + +- 研究生英文版目录中的标签分隔符由 `\quad` 改为空格([#759](https://github.com/tuna/thuthesis/discussions/759))。 +- 研究生英文版章节标题的标签分隔符由 `\quad` 改为空格([#759](https://github.com/tuna/thuthesis/discussions/759))。 +- 研究生英文封面的“Submitted”改为小写,同步《指南》2022 年 5 月版的修改。 +- 更改示例文档中 `longtable` 的“续表”标题格式,同步《指南》2021 年 6 月版的修改([#766](https://github.com/tuna/thuthesis/issues/766))。 + +### Fixed + +- 修正英文版研究成果的格式([#755](https://github.com/tuna/thuthesis/issues/755))。 +- 修复脚注内容可能跨页的问题([#778](https://github.com/tuna/thuthesis/issues/778))。 + ## [v7.2.4] - 2022-03-19 ### Added @@ -884,7 +902,8 @@ -[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.2.4...HEAD +[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.3.0...HEAD +[v7.3.0]: https://github.com/tuna/thuthesis/compare/v7.2.4...v7.3.0 [v7.2.4]: https://github.com/tuna/thuthesis/compare/v7.2.3...v7.2.4 [v7.2.3]: https://github.com/tuna/thuthesis/compare/v7.2.2...v7.2.3 [v7.2.2]: https://github.com/tuna/thuthesis/compare/v7.2.1...v7.2.2 diff --git a/Master/texmf-dist/doc/latex/thuthesis/README.md b/Master/texmf-dist/doc/latex/thuthesis/README.md index c84c7f409f8..024a28e77a5 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/README.md +++ b/Master/texmf-dist/doc/latex/thuthesis/README.md @@ -15,6 +15,8 @@ Scroll down for the English version of README. **由于模板升级频繁,在开始使用和提问前,请确保您已经认真完整地阅读了使用说明文档和示例代码。** +任何违反 [LaTeX项目公共许可证 v1.3c](https://www.latex-project.org/lppl/lppl-1-3c/) 使用 ThuThesis 的行为将被记录在 [耻辱柱](https://github.com/tuna/thuthesis/issues/754) 页面中,以示警告。 + ## 下载 推荐下载**发布版**模板,里面包括具体使用说明以及示例文档: @@ -90,6 +92,8 @@ This package establishes a simple and easy-to-use LaTeX template for Tsinghua di **This template is subject to frequent changes. Please make sure you have read the usage documentation and example code completely and carefully before using and asking questions.** +Any use of ThuThesis in violation of [The LaTeX project public license v1.3c](https://www.latex-project.org/lppl/lppl-1-3c/) will be recorded in the [Hall of Shame](https://github.com/tuna/thuthesis/issues/754). + ## Downloads **Published versions** are recommended. Specific usage documentation and examples can be found in the archive. At present, these documents are only available in Chinese: diff --git a/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex b/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex index 65630cb5d40..57ec26cf09c 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/data/chap02.tex @@ -85,12 +85,13 @@ 编号后跟表题(可省略)和“(续)”,置于表上方。续表均应重复表头。 \begin{longtable}{cccc} - \caption{跨页长表格的表题} \\ + \caption{跨页长表格的表题} + \label{tab:longtable} \\ \toprule 表头 1 & 表头 2 & 表头 3 & 表头 4 \\ \midrule \endfirsthead - \caption[]{跨页长表格的表题(续)} \\ + \caption*{续表~\thetable\quad 跨页长表格的表题} \\ \toprule 表头 1 & 表头 2 & 表头 3 & 表头 4 \\ \midrule diff --git a/Master/texmf-dist/doc/latex/thuthesis/data/chap03.tex b/Master/texmf-dist/doc/latex/thuthesis/data/chap03.tex index 2efdc1db96c..8cd4344fbba 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/data/chap03.tex +++ b/Master/texmf-dist/doc/latex/thuthesis/data/chap03.tex @@ -17,11 +17,6 @@ 注意有限增量符号 $\increment$ 固定使用正体,模板提供了 \cs{increment} 命令。 \item 小于等于号和大于等于号使用倾斜的字形 $\le$、$\ge$。 \item 积分号使用正体,比如 $\int$、$\oint$。 - \item 行间公式积分号的上下限位于积分号的上下两端,比如 - \begin{equation*} - \int_a^b f(x) \dif x. - \end{equation*} - 行内公式为了版面的美观,统一居右侧,如 $\int_a^b f(x) \dif x$ 。 \item 偏微分符号 $\partial$ 使用正体。 \item @@ -66,12 +61,11 @@ \section{数学公式} 数学公式可以使用 \env{equation} 和 \env{equation*} 环境。 -注意数学公式的引用应前后带括号,建议使用 \cs{eqref} 命令,比如式\eqref{eq:example}。 +注意数学公式的引用应前后带括号,通常使用 \cs{eqref} 命令,比如式\eqref{eq:example}。 \begin{equation} - \frac{1}{2 \uppi \symup{i}} \int_\gamma f = \sum_{k=1}^m n(\gamma; a_k) \mathscr{R}(f; a_k) + \frac{1}{2 \uppi \symup{i}} \int_\gamma f = \sum_{k=1}^m n(\gamma; a_k) \mathscr{R}(f; a_k). \label{eq:example} \end{equation} -注意公式编号的引用应含有圆括号,可以使用 \cs{eqref} 命令。 多行公式尽可能在“=”处对齐,推荐使用 \env{align} 环境。 \begin{align} diff --git a/Master/texmf-dist/doc/latex/thuthesis/latexmkrc b/Master/texmf-dist/doc/latex/thuthesis/latexmkrc index 17e9557a5e6..848fd1312fc 100644 --- a/Master/texmf-dist/doc/latex/thuthesis/latexmkrc +++ b/Master/texmf-dist/doc/latex/thuthesis/latexmkrc @@ -3,6 +3,7 @@ $pdf_mode = 5; $xelatex = "xelatex -shell-escape -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S"; +$lualatex = "lualatex -shell-escape -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1 %O %S"; $xdvipdfmx = "xdvipdfmx -q -E -o %D %O %S"; $bibtex_use = 1.5; diff --git a/Master/texmf-dist/doc/latex/thuthesis/spine.pdf b/Master/texmf-dist/doc/latex/thuthesis/spine.pdf index 6f9d37e2ed5..de169dda9be 100644 Binary files a/Master/texmf-dist/doc/latex/thuthesis/spine.pdf and b/Master/texmf-dist/doc/latex/thuthesis/spine.pdf differ diff --git a/Master/texmf-dist/doc/latex/thuthesis/thuthesis-example.pdf b/Master/texmf-dist/doc/latex/thuthesis/thuthesis-example.pdf index b25df293c9f..4345c0a1cc5 100644 Binary files a/Master/texmf-dist/doc/latex/thuthesis/thuthesis-example.pdf and b/Master/texmf-dist/doc/latex/thuthesis/thuthesis-example.pdf differ diff --git a/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf b/Master/texmf-dist/doc/latex/thuthesis/thuthesis.pdf index ad3acc14f29..57cc881d947 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 f2a48c8a13d..d273a1add84 100644 --- a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx +++ b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx @@ -14,7 +14,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2022/03/19 7.2.4 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2022/05/17 7.3.0 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -74,7 +74,7 @@ % \item 本模板为作者根据 % 清华大学研究生院颁发的《 % \href{http://yjsy.cic.tsinghua.edu.cn/docinfo/board/boarddetail.jsp?columnId=001050603&parentColumnId=0010506&itemSeq=5365}{% -% 研究生学位论文写作指南}》(2021年6月版本,限校内网络访问)、 +% 研究生学位论文写作指南}》(更新到2022年5月版本,限校内网络访问)、 % 英文版《Guide to Thesis Writing for Graduate Students》、 % 清华大学教务处颁发的《 % \href{https://lib.tsinghua.edu.cn/info/1073/1978.htm}{% @@ -379,8 +379,8 @@ % \subsubsection{输出格式} % \DescribeOption{output} % 选择输出的格式是打印版还是电子版(用于提交),可选:\option{print}(默认)、\option{electronic}。 -% 一些院系要求提交的电子版不含空白页,但是这对打印并不友好, -% 比如正文第一页可能会在左侧;以及一些部分需要单面打印,需要插入空白页。 +% 打印版 \option{print} 自动在单面打印的部分插入空白页(比如封面),并且保证正文第 1 页在右侧。 +% 电子版 \option{electronic} 选项会去掉空白页,这是因为一些院系要求提交的电子版不含空白页。 % 注意在不同选项下,生成的声明页码很可能不同。为了避免页码错误, % \thuthesis{}将会在插入扫描的 PDF 文件时自动生成页码,因此\textbf{扫描声明页时请移除底部的页码},以防重叠。 % @@ -670,9 +670,7 @@ % \DescribeOption{toc-chapter-style} % 本科生《写作指南》关于目录章标题要求“目录从第 1 章开始,每章标题用黑体小四号字”, % 所以其中的西文和数字默认使用 Arial 字体,跟正文的章标题一致。 -% 但是论文样例\footnote{ -% \url{http://www.law.tsinghua.edu.cn/publish/law/7024/2012/20120216153516317135347/20120216153516317135347_.html} -% }的目录章标题的西文和数字却使用了 Times。 +% 但是论文样例\footnote{此前发布在法学院网站,目前已经无公开可获得的链接。}的目录章标题的西文和数字却使用了 Times。 % 如果审查老师这样要求,需要在生成目录前设置 % \begin{latex} % \thusetup{ @@ -822,7 +820,7 @@ % uppercase-greek = italic, % less-than-or-equal = slanted, % integral = upright, -% integral-limits = true, +% integral-limits = false, % partial = upright, % math-ellipsis = centered, % real-part = roman, @@ -1250,7 +1248,7 @@ % \begin{macrocode} %\NeedsTeXFormat{LaTeX2e}[2017/04/15] %\ProvidesClass{thuthesis} -%[2022/03/19 7.2.4 Tsinghua University Thesis Template] +%[2022/05/17 7.3.0 Tsinghua University Thesis Template] % \end{macrocode} % % 报错 @@ -1288,7 +1286,9 @@ % \begin{macrocode} \RequirePackage{iftex} \ifXeTeX\else - \thu@error{XeLaTeX is required to compile this document} + \ifLuaTeX\else + \thu@error{XeLaTeX or LuaLaTeX is required to compile this document} + \fi \fi % \end{macrocode} % @@ -1306,7 +1306,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{ThuThesis} -\def\version{7.2.4} +\def\version{7.3.0} \RequirePackage{kvdefinekeys} \RequirePackage{kvsetkeys} \RequirePackage{kvoptions} @@ -1541,6 +1541,7 @@ auto, windows, mac, + mac-word, noto, fandol, none, @@ -1767,8 +1768,11 @@ % 利用 \pkg{xeCJKfntef} 实现汉字的下划线和盒子内两段对齐,并可以避免 % \cs{makebox}\oarg{width}\oarg{s} 可能产生的 underful boxes。 % \begin{macrocode} -\RequirePackage{xeCJKfntef} -\RequirePackage{soul} +\ifXeTeX + \RequirePackage{xeCJKfntef} +\else + \RequirePackage{ulem} +\fi % \end{macrocode} % % 表格控制 @@ -2061,8 +2065,20 @@ % % 带圈数字和星号使用中文字体。 % \begin{macrocode} -\xeCJKDeclareCharClass{CJK}{"2460 -> "2473} -\xeCJKDeclareCharClass{CJK}{"2605} +\ifLuaTeX + % ctex 将带圈数字 U+2460–U+24FF 归入字符范围 3(ALchar),这里改回范围 6(JAchar) + \ltjdefcharrange{3}{% + "2000-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF} + \ltjdefcharrange{6}{% + "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF, + "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF, + "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF} +\else + \ifXeTeX + \xeCJKDeclareCharClass{CJK}{"2460 -> "2473} + \xeCJKDeclareCharClass{CJK}{"2605} + \fi +\fi % \end{macrocode} % % \newcommand\unicodechar[1]{U+#1(\symbol{"#1})} @@ -2083,16 +2099,28 @@ % \begin{macrocode} \newcommand\thu@set@punctuations{% \ifthu@language@chinese - \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}% - \xeCJKDeclareCharClass{FullRight}{ - "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, - }% + \ifLuaTeX + \ltjsetparameter{jacharrange={+9}} + \else + \ifXeTeX + \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{FullRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% + \fi + \fi \else \ifthu@language@english - \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% - \xeCJKDeclareCharClass{HalfRight}{ - "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, - }% + \ifLuaTeX + \ltjsetparameter{jacharrange={-9}} + \else + \ifXeTeX + \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{HalfRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% + \fi + \fi \fi \fi } @@ -2208,6 +2236,9 @@ % % 使用 \pkg{fontspec} 配置字体。 % \begin{macrocode} +\newcommand\thu@mac@word@font@path{% + /Applications/Microsoft Word.app/Contents/Resources/DFonts/% +} \ifthu@fontset@auto \ifthu@system@windows \thusetup{fontset = windows} @@ -2215,15 +2246,19 @@ \IfFontExistsTF{SimSun}{ \thusetup{fontset = windows} }{ - \ifthu@system@mac - \thusetup{fontset = mac} - \else - \IfFontExistsTF{Noto Serif CJK SC}{ - \thusetup{fontset = ubuntu} - }{ - \thusetup{fontset = fandol} - } - \fi + \IfFileExists{\thu@mac@word@font@path/SimSun.ttf}{ + \thusetup{fontset = windows} + }{ + \ifthu@system@mac + \thusetup{fontset = mac} + \else + \IfFontExistsTF{Noto Serif CJK SC}{ + \thusetup{fontset = ubuntu} + }{ + \thusetup{fontset = fandol} + } + \fi + } } \fi \fi @@ -2487,13 +2522,30 @@ % % \subsubsection{中文字体} % +% 去掉“no requested script”警告。 +% \begin{macrocode} +\ExplSyntaxOn +\@ifpackageloaded { xeCJK } + { \msg_redirect_name:nnn { fontspec } { no-script } { info } } + { } +\ExplSyntaxOff +% \end{macrocode} +% % \begin{macrocode} \ifthu@cjk@font@auto \ifthu@fontset@mac \thusetup{cjk-font = mac} \else \ifthu@fontset@windows - \thusetup{cjk-font = windows} + \IfFontExistsTF{SimSun}{ + \thusetup{cjk-font = windows} + }{ + \IfFileExists{\thu@mac@word@font@path/SimSun.ttf}{ + \thusetup{cjk-font = mac-word} + }{ + \thu@error{Cannot find "SimSun" font} + } + } \else \ifthu@fontset@ubuntu \thusetup{cjk-font = noto} @@ -2508,24 +2560,48 @@ % Windows 的中易字体。 % \begin{macrocode} \newcommand\thu@set@cjk@font@windows{% - \xeCJKsetup{EmboldenFactor=3}% \setCJKmainfont{SimSun}[ - AutoFakeBold = true, + AutoFakeBold = 3, ItalicFont = KaiTi, ]% - \setCJKsansfont{SimHei}[AutoFakeBold]% + \setCJKsansfont{SimHei}[AutoFakeBold = 3]% \setCJKmonofont{FangSong}% - \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold]% - \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold]% + \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold = 3]% + \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold = 3]% \setCJKfamilyfont{zhkai}{KaiTi}% \setCJKfamilyfont{zhfs}{FangSong}% } % \end{macrocode} % +% macOS 的 Microsoft Word 字体。 +% \begin{macrocode} +\@namedef{thu@set@cjk@font@mac-word}{% + \setCJKmainfont{SimSun}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ItalicFont = KaiTi, + ]% + \setCJKsansfont{SimHei}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ]% + \setCJKmonofont{FangSong}[Path=\thu@mac@word@font@path]% + \setCJKfamilyfont{zhsong}{SimSun}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ]% + \setCJKfamilyfont{zhhei}{SimHei}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ]% + \setCJKfamilyfont{zhkai}{KaiTi}[Path = \thu@mac@word@font@path]% + \setCJKfamilyfont{zhfs}{FangSong}[Path = \thu@mac@word@font@path]% +} +% \end{macrocode} +% % macOS 的华文字体。 % \begin{macrocode} \newcommand\thu@set@cjk@font@mac{% - \defaultCJKfontfeatures{}% \setCJKmainfont{Songti SC}[ UprightFont = * Light, BoldFont = * Bold, @@ -2562,30 +2638,19 @@ % 注意 Noto CJK 的 regular 字重名字不带“Regular”。 % \begin{macrocode} \newcommand\thu@set@cjk@font@noto{% - \defaultCJKfontfeatures{}% \setCJKmainfont{Noto Serif CJK SC}[ UprightFont = * Light, BoldFont = * Bold, ItalicFont = FandolKai-Regular, ItalicFeatures = {Extension = .otf}, - Script = CJK, - ]% - \setCJKsansfont{Noto Sans CJK SC}[ - BoldFont = * Medium, - Script = CJK, - ]% - \setCJKmonofont{Noto Sans Mono CJK SC}[ - Script = CJK, ]% + \setCJKsansfont{Noto Sans CJK SC}[BoldFont = * Medium]% + \setCJKmonofont{Noto Sans Mono CJK SC}% \setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[ UprightFont = * Light, UprightFont = * Bold, - Script = CJK, - ]% - \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[ - BoldFont = * Medium, - Script = CJK, ]% + \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[BoldFont * Medium]% \setCJKfamilyfont{zhfs}{FandolFang}[ Extension = .otf, UprightFont = *-Regular, @@ -2600,7 +2665,6 @@ % Fandol 字体。 % \begin{macrocode} \newcommand\thu@set@cjk@font@fandol{% - \defaultCJKfontfeatures{}% \setCJKmainfont{FandolSong}[ Extension = .otf, UprightFont = *-Regular, @@ -2668,19 +2732,20 @@ \thusetup{ uppercase-greek = italic, integral = upright, - integral-limits = true, partial = upright, real-part = roman, }% \ifthu@math@style@ISO \thusetup{ less-than-or-equal = horizontal, + integral-limits = true, math-ellipsis = lower, }% \else \ifthu@math@style@GB \thusetup{ less-than-or-equal = slanted, + integral-limits = false, math-ellipsis = centered, }% \fi @@ -3187,7 +3252,6 @@ % \begin{macrocode} \ctexset{% punct=quanjiao, - space=auto, } \newcommand\thu@set@indent{% \ifthu@main@language@chinese @@ -3254,6 +3318,13 @@ % % \subsubsection{脚注} % \label{sec:footnote} +% +% 严格禁止脚注跨页,参考 \href{https://github.com/tuna/thuthesis/issues/778}{\#778} +% 和 \url{https://texfaq.org/FAQ-splitfoot}。 +% \begin{macrocode} +\interfootnotelinepenalty=10000 +% \end{macrocode} +% % 脚注内容采用小五号字,中文用宋体,英文和数字用 Times New Roman 体按两端对齐格式书写, % 单倍行距,段前段后均空 0 磅。 % 脚注的序号按页编排,不同页的脚注序号不需要连续。 @@ -3593,21 +3664,17 @@ numberformat = {}, titleformat = {}, fixskip = true, - aftername = \quad, afterindent = true, lofskip = 0pt, lotskip = 0pt, }, section = { - aftername = \quad, afterindent = true, }, subsection = { - aftername = \quad, afterindent = true, }, subsubsection = { - aftername = \quad, afterindent = true, }, paragraph/afterindent = true, @@ -3636,21 +3703,25 @@ \ctexset{% chapter = { format = \centering\sffamily\fontsize{15bp}{20bp}\selectfont, + aftername = \quad, beforeskip = 30bp, afterskip = 20bp, }, section = { format = \sffamily\fontsize{14bp}{18bp}\selectfont, + aftername = \quad, beforeskip = 25bp, afterskip = 12bp, }, subsection = { format = \sffamily\fontsize{13bp}{15bp}\selectfont, + aftername = \quad, beforeskip = 12bp, afterskip = 6bp, }, subsubsection = { format = \sffamily\fontsize{12bp}{14bp}\selectfont, + aftername = \quad, beforeskip = 12bp, afterskip = 6bp, }, @@ -3700,6 +3771,25 @@ % 由于 Word 的行距算法不同,这里进行了一些调整使得视觉上更接近。 % \begin{macrocode} \else + \ctexset{% + chapter = { + beforeskip = 27bp, + afterskip = 27bp, + number = \thechapter, + }, + section = { + beforeskip = 24bp, + afterskip = 6bp, + }, + subsection = { + beforeskip = 12bp, + afterskip = 6bp, + }, + subsubsection = { + beforeskip = 12bp, + afterskip = 6bp, + }, + }% \ifthu@main@language@chinese \ctexset{% chapter = { @@ -3707,15 +3797,19 @@ nameformat = {}, titleformat = {}, name = {第,章}, + aftername = \quad, }, section = { format = \sffamily\fontsize{14bp}{20bp}\selectfont, + aftername = \quad, }, subsection = { format = \sffamily\fontsize{13bp}{20bp}\selectfont, + aftername = \quad, }, subsubsection = { format = \sffamily\fontsize{12bp}{20bp}\selectfont, + aftername = \quad, }, }% \else @@ -3725,37 +3819,22 @@ nameformat = \MakeUppercase, titleformat = \MakeUppercase, name = \chaptername\space, + aftername = \space, }, section = { format = \sffamily\bfseries\fontsize{14bp}{20bp}\selectfont, + aftername = \space, }, subsection = { format = \sffamily\bfseries\fontsize{13bp}{20bp}\selectfont, + aftername = \space, }, subsubsection = { format = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont, + aftername = \space, }, }% \fi - \ctexset{% - chapter = { - beforeskip = 27bp, - afterskip = 27bp, - number = \thechapter, - }, - section = { - beforeskip = 24bp, - afterskip = 6bp, - }, - subsection = { - beforeskip = 12bp, - afterskip = 6bp, - }, - subsubsection = { - beforeskip = 12bp, - afterskip = 6bp, - }, - }% \fi } \thu@set@section@format @@ -3953,7 +4032,7 @@ \else \titlecontents{chapter} [\z@]{\addvspace{6bp}\heiti} - {\contentspush{\MakeUppercase{\thecontentslabel}\quad}\MakeUppercase}{\MakeUppercase} + {\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase} {\rmfamily\thu@leaders\thecontentspage}% \titlecontents{section} [1em]{} @@ -4133,17 +4212,22 @@ \newcommand\thu@date@en@short[3]{\thu@date@month{#2}, #1} % \end{macrocode} % -% 下划线命令 +% 下划线命令。 +% \pkg{ulem} 的下划线 \cs{uline} 可以控制粗细和深度。 % \begin{macrocode} \newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt} -\newcommand\thu@CJKunderline[2][6em]{\CJKunderline*{\hb@xt@ #1{\hss#2\hss}}} +\newcommand\thu@uline[2][6em]{\uline{\hb@xt@ #1{\hss#2\hss}}} % \end{macrocode} % % 将内容拉伸或压缩到固定宽度。 % \begin{macrocode} \newcommand\thu@fixed@box[2]{% \begingroup - \def\CJKglue{\hskip 0pt plus 2filll minus 1filll}% + \ifLuaTeX + \ltjsetparameter{kanjiskip = {0pt plus 2filll minus 1filll}}% + \else + \renewcommand\CJKglue{\hspace{0pt plus 2filll minus 1filll}}% + \fi \makebox[#1][l]{#2}% \endgroup } @@ -4156,7 +4240,11 @@ \sbox\thu@stretch@box{#2}% \ifdim \wd\thu@stretch@box < #1\relax \begingroup - \def\CJKglue{\hskip 0pt plus 2filll}% + \ifLuaTeX + \ltjsetparameter{kanjiskip = {0pt plus 2filll}}% + \else + \renewcommand\CJKglue{\hspace{0pt plus 2filll}}% + \fi \makebox[#1][l]{#2}% \endgroup \else @@ -4379,8 +4467,14 @@ \thu@titlepage@degree \vfill \parbox[t][8.5cm][t]{\textwidth}{% - \centering\CJKfamily+{}% - \centering\fangsong\sanhao[1.95]% + \centering + \fangsong + \ifLuaTeX + \fontspec{\CJK@family}% + \else + \CJKfamily+{}% + \fi + \sanhao[1.95]% \thu@titlepage@info }\par \parbox[t][2.5cm][t]{\textwidth}{\centering\thu@titlepage@date}\par @@ -4415,8 +4509,14 @@ % \begin{macrocode} \newcommand\thu@titlepage@degree{% \begingroup - \CJKfamily+{}\xiaoer - \def\CJKglue{\hskip 1bp}% + \xiaoer + \ifLuaTeX + \fontspec{\CJK@family}% + \ltjsetparameter{kanjiskip = {1bp}}% + \else + \CJKfamily+{}% + \renewcommand\CJKglue{\hspace{1bp}}% + \fi \ifthu@thesis@type@thesis (申请清华大学\thu@degree@name \ifthu@degree@type@professional @@ -4540,7 +4640,11 @@ \newcommand\thu@titlepage@date{% \begingroup \sanhao - \def\CJKglue{\hskip 1bp}% + \ifLuaTeX + \ltjsetparameter{kanjiskip = {1bp}}% + \else + \renewcommand\CJKglue{\hspace{1bp}}% + \fi \thu@format@date{\thu@date@zh@short}{\thu@date}\par \endgroup } @@ -4632,7 +4736,7 @@ \fi } \newcommand\thu@titlepage@en@degree{% - \thu@thesis@name@en{} Submitted to\par + \thu@thesis@name@en{} submitted to\par {\bfseries Tsinghua University\par}% in partial fulfillment of the requirement\par for the @@ -4700,22 +4804,23 @@ \vskip 1.8cm% \begingroup \heiti - \ifthu@main@language@chinese - \yihao[1.56]% - \else - \fontsize{26bp}{32bp}\selectfont - \fi - \parindent=18bp% - \hangindent=72bp% - \makebox[54bp]{\xiaoer[1.2]题目:}% - \CJKunderline*[skip=false, thickness=0.05em, depth=0.12em]{\thu@title}% - \ifthu@main@language@english - \\ - \thusetup{language=english}% - \ul\thu@title@en - \thusetup{language=chinese}% - \fi - \par + % 21.0cm - 0.2cm - 3cm * 2 - 18bp * 4 = 347bp + \noindent\hspace{1em}\makebox[54bp]{\xiaoer[1.2]题目:}% + \parbox[t]{347bp}{% + \ifthu@main@language@chinese + \yihao[1.56]% + \else + \fontsize{26bp}{32bp}\selectfont + \fi + \renewcommand\ULthickness{0.05em}% + \renewcommand\ULdepth{0.17em}% + \expandafter\uline\expandafter{\thu@title}\par + \ifthu@main@language@english + \thusetup{language=english}% + \expandafter\uline\expandafter{\thu@title@en}\par + \thusetup{language=chinese}% + \fi + }\par \endgroup \vskip 1.9cm% \begingroup @@ -4746,7 +4851,12 @@ \vskip 1.4cm% \begingroup \centering - {\CJKfamily+{}\xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par}% + \ifLuaTeX + \fontspec{\CJK@family}% + \else + \CJKfamily+{}% + \fi + \xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par \endgroup \vfill \clearpage @@ -4774,20 +4884,23 @@ }% \vskip 0.2cm% \parbox[t][4.0cm][c]{\textwidth}{% - \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu@title}\par + \centering\sihao[3.46]% + \renewcommand\ULdepth{1em}% + \expandafter\uline\expandafter{\thu@title}\par }\par \vskip 0.4cm% {\xiaosi\thu@author\par}% \vskip 1.4cm% - {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}% + {\xiaosi[1.58]% + \renewcommand\ULdepth{0.9em}% 工作完成日期\quad - \thu@CJKunderline[5.9cm]{% + \thu@uline[5.9cm]{% \thu@format@date{\thu@date@zh@digit@short}{\thu@start@date}—% \thu@format@date{\thu@date@zh@digit@short}{\thu@end@date} }\par \vskip 0.55cm% 报告提交日期\quad - \thu@CJKunderline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par + \thu@uline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par }% \vskip 0.45cm% {\xiaosi[2]{\ziju{1}清华大学}\quad (北京)\par}% @@ -6047,16 +6160,49 @@ format += \centering, numbering = false, }, - subsection = { - format = \sffamily\fontsize{14bp}{20bp}\selectfont, - numbering = false, - aftertitle = \ifthu@language@chinese :\else :\fi, - }, }% - \ifthu@degree@bachelor - \ifthu@language@english - \sffamily\fontsize{15bp}{20bp}\selectfont, + \ifthu@language@chinese + \ctexset{ + subsection = { + format = \sffamily\fontsize{14bp}{20bp}\selectfont, + numbering = false, + aftertitle = :, + }, + }% + \ifthu@degree@graduate + \fontsize{12bp}{16bp}\selectfont + \fi + \setlist[achievements]{ + topsep = 6bp, + itemsep = 6bp, + leftmargin = 1cm, + labelwidth = 1cm, + labelsep = 0pt, + align = left, + label = [\arabic*], + }% + \else + \ctexset{ + subsection = { + beforeskip = 0pt, + afterskip = 0pt, + format = \bfseries\normalsize, + indent = \parindent, + numbering = false, + }, + }% + \ifthu@degree@bachelor + % 内容部分用Arial字体,字号15pt,行距采用固定值20pt, 段前后 0pt。 + \sffamily\fontsize{15bp}{20bp}\selectfont \fi + \setlist[achievements]{ + topsep = 0bp, + itemsep = 0bp, + leftmargin = 1.75cm, + labelsep = 0.5cm, + align = right, + label = [\arabic*], + }% \fi }{} % \end{macrocode} @@ -6077,19 +6223,14 @@ % \begin{macrocode} \newlist{achievements}{enumerate}{1} \setlist[achievements]{ - label = [\arabic*], - align = left, - leftmargin = 10mm, topsep = 6bp, - parsep = 0bp, partopsep = 0bp, itemsep = 6bp, - labelsep = !, - before = { - \ifthu@degree@graduate - \fontsize{12bp}{16bp}\selectfont - \fi - }, + parsep = 0bp, + leftmargin = 10mm, + itemindent = 0pt, + align = left, + label = [\arabic*], resume = achievements, } % \end{macrocode} @@ -6332,7 +6473,7 @@ % \itshape % #1\@addpunct{.}]\ignorespaces \sffamily - #1\@addpunct{\thu@theorem@separator}]\ignorespaces + #1]\ignorespaces }{% \popQED\endtrivlist\@endpefalse } diff --git a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls index 23b11b5cc73..5bcd3074a8d 100644 --- a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls +++ b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls @@ -23,7 +23,7 @@ %% \NeedsTeXFormat{LaTeX2e}[2017/04/15] \ProvidesClass{thuthesis} -[2022/03/19 7.2.4 Tsinghua University Thesis Template] +[2022/05/17 7.3.0 Tsinghua University Thesis Template] \newcommand\thu@error[1]{% \ClassError{thuthesis}{#1}{}% } @@ -49,14 +49,16 @@ } \RequirePackage{iftex} \ifXeTeX\else - \thu@error{XeLaTeX is required to compile this document} + \ifLuaTeX\else + \thu@error{XeLaTeX or LuaLaTeX is required to compile this document} + \fi \fi \InputIfFileExists{thuthesis-pdf-test-config.tex}{}{ \InputIfFileExists{thuthesis-log-test-config.tex}{}{} } \hyphenation{Thu-Thesis} \def\thuthesis{ThuThesis} -\def\version{7.2.4} +\def\version{7.3.0} \RequirePackage{kvdefinekeys} \RequirePackage{kvsetkeys} \RequirePackage{kvoptions} @@ -202,6 +204,7 @@ auto, windows, mac, + mac-word, noto, fandol, none, @@ -339,8 +342,11 @@ \else \RequirePackage[perpage,hang]{footmisc} \fi -\RequirePackage{xeCJKfntef} -\RequirePackage{soul} +\ifXeTeX + \RequirePackage{xeCJKfntef} +\else + \RequirePackage{ulem} +\fi \RequirePackage{array} \RequirePackage{booktabs} \RequirePackage{url} @@ -567,20 +573,44 @@ } \thu@set@names \thu@option@hook{language}{\thu@set@names} -\xeCJKDeclareCharClass{CJK}{"2460 -> "2473} -\xeCJKDeclareCharClass{CJK}{"2605} +\ifLuaTeX + % ctex 将带圈数字 U+2460–U+24FF 归入字符范围 3(ALchar),这里改回范围 6(JAchar) + \ltjdefcharrange{3}{% + "2000-"243F, "2500-"27BF, "2900-"29FF, "2B00-"2BFF} + \ltjdefcharrange{6}{% + "2460-"24FF, "2E80-"2EFF, "3000-"30FF, "3190-"319F, "31F0-"4DBF, + "4E00-"9FFF, "F900-"FAFF, "FE10-"FE1F, "FE30-"FE6F, "FF00-"FFEF, + "1B000-"1B16F, "1F100-"1F2FF, "20000-"3FFFF, "E0100-"E01EF} +\else + \ifXeTeX + \xeCJKDeclareCharClass{CJK}{"2460 -> "2473} + \xeCJKDeclareCharClass{CJK}{"2605} + \fi +\fi \newcommand\thu@set@punctuations{% \ifthu@language@chinese - \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}% - \xeCJKDeclareCharClass{FullRight}{ - "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, - }% + \ifLuaTeX + \ltjsetparameter{jacharrange={+9}} + \else + \ifXeTeX + \xeCJKDeclareCharClass{FullLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{FullRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% + \fi + \fi \else \ifthu@language@english - \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% - \xeCJKDeclareCharClass{HalfRight}{ - "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, - }% + \ifLuaTeX + \ltjsetparameter{jacharrange={-9}} + \else + \ifXeTeX + \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{HalfRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% + \fi + \fi \fi \fi } @@ -631,6 +661,9 @@ } } \fi +\newcommand\thu@mac@word@font@path{% + /Applications/Microsoft Word.app/Contents/Resources/DFonts/% +} \ifthu@fontset@auto \ifthu@system@windows \thusetup{fontset = windows} @@ -638,15 +671,19 @@ \IfFontExistsTF{SimSun}{ \thusetup{fontset = windows} }{ - \ifthu@system@mac - \thusetup{fontset = mac} - \else - \IfFontExistsTF{Noto Serif CJK SC}{ - \thusetup{fontset = ubuntu} - }{ - \thusetup{fontset = fandol} - } - \fi + \IfFileExists{\thu@mac@word@font@path/SimSun.ttf}{ + \thusetup{fontset = windows} + }{ + \ifthu@system@mac + \thusetup{fontset = mac} + \else + \IfFontExistsTF{Noto Serif CJK SC}{ + \thusetup{fontset = ubuntu} + }{ + \thusetup{fontset = fandol} + } + \fi + } } \fi \fi @@ -855,12 +892,25 @@ \newcommand\thu@set@font@newtx{% \RequirePackage{newtxtext}% } +\ExplSyntaxOn +\@ifpackageloaded { xeCJK } + { \msg_redirect_name:nnn { fontspec } { no-script } { info } } + { } +\ExplSyntaxOff \ifthu@cjk@font@auto \ifthu@fontset@mac \thusetup{cjk-font = mac} \else \ifthu@fontset@windows - \thusetup{cjk-font = windows} + \IfFontExistsTF{SimSun}{ + \thusetup{cjk-font = windows} + }{ + \IfFileExists{\thu@mac@word@font@path/SimSun.ttf}{ + \thusetup{cjk-font = mac-word} + }{ + \thu@error{Cannot find "SimSun" font} + } + } \else \ifthu@fontset@ubuntu \thusetup{cjk-font = noto} @@ -871,20 +921,40 @@ \fi \fi \newcommand\thu@set@cjk@font@windows{% - \xeCJKsetup{EmboldenFactor=3}% \setCJKmainfont{SimSun}[ - AutoFakeBold = true, + AutoFakeBold = 3, ItalicFont = KaiTi, ]% - \setCJKsansfont{SimHei}[AutoFakeBold]% + \setCJKsansfont{SimHei}[AutoFakeBold = 3]% \setCJKmonofont{FangSong}% - \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold]% - \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold]% + \setCJKfamilyfont{zhsong}{SimSun}[AutoFakeBold = 3]% + \setCJKfamilyfont{zhhei}{SimHei}[AutoFakeBold = 3]% \setCJKfamilyfont{zhkai}{KaiTi}% \setCJKfamilyfont{zhfs}{FangSong}% } +\@namedef{thu@set@cjk@font@mac-word}{% + \setCJKmainfont{SimSun}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ItalicFont = KaiTi, + ]% + \setCJKsansfont{SimHei}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ]% + \setCJKmonofont{FangSong}[Path=\thu@mac@word@font@path]% + \setCJKfamilyfont{zhsong}{SimSun}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ]% + \setCJKfamilyfont{zhhei}{SimHei}[% + Path = \thu@mac@word@font@path, + AutoFakeBold = 3, + ]% + \setCJKfamilyfont{zhkai}{KaiTi}[Path = \thu@mac@word@font@path]% + \setCJKfamilyfont{zhfs}{FangSong}[Path = \thu@mac@word@font@path]% +} \newcommand\thu@set@cjk@font@mac{% - \defaultCJKfontfeatures{}% \setCJKmainfont{Songti SC}[ UprightFont = * Light, BoldFont = * Bold, @@ -916,30 +986,19 @@ ]% } \newcommand\thu@set@cjk@font@noto{% - \defaultCJKfontfeatures{}% \setCJKmainfont{Noto Serif CJK SC}[ UprightFont = * Light, BoldFont = * Bold, ItalicFont = FandolKai-Regular, ItalicFeatures = {Extension = .otf}, - Script = CJK, - ]% - \setCJKsansfont{Noto Sans CJK SC}[ - BoldFont = * Medium, - Script = CJK, - ]% - \setCJKmonofont{Noto Sans Mono CJK SC}[ - Script = CJK, ]% + \setCJKsansfont{Noto Sans CJK SC}[BoldFont = * Medium]% + \setCJKmonofont{Noto Sans Mono CJK SC}% \setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[ UprightFont = * Light, UprightFont = * Bold, - Script = CJK, - ]% - \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[ - BoldFont = * Medium, - Script = CJK, ]% + \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[BoldFont * Medium]% \setCJKfamilyfont{zhfs}{FandolFang}[ Extension = .otf, UprightFont = *-Regular, @@ -950,7 +1009,6 @@ ]% } \newcommand\thu@set@cjk@font@fandol{% - \defaultCJKfontfeatures{}% \setCJKmainfont{FandolSong}[ Extension = .otf, UprightFont = *-Regular, @@ -1012,19 +1070,20 @@ \thusetup{ uppercase-greek = italic, integral = upright, - integral-limits = true, partial = upright, real-part = roman, }% \ifthu@math@style@ISO \thusetup{ less-than-or-equal = horizontal, + integral-limits = true, math-ellipsis = lower, }% \else \ifthu@math@style@GB \thusetup{ less-than-or-equal = slanted, + integral-limits = false, math-ellipsis = centered, }% \fi @@ -1427,7 +1486,6 @@ \ctexset{chapter/pagestyle = chapter} \ctexset{% punct=quanjiao, - space=auto, } \newcommand\thu@set@indent{% \ifthu@main@language@chinese @@ -1473,6 +1531,7 @@ \partopsep \z@skip \itemsep \z@skip} \setlist{nosep} +\interfootnotelinepenalty=10000 \newcommand\thu@circled[1]{% \ifnum#1 >10\relax \thu@warning{% @@ -1695,21 +1754,17 @@ numberformat = {}, titleformat = {}, fixskip = true, - aftername = \quad, afterindent = true, lofskip = 0pt, lotskip = 0pt, }, section = { - aftername = \quad, afterindent = true, }, subsection = { - aftername = \quad, afterindent = true, }, subsubsection = { - aftername = \quad, afterindent = true, }, paragraph/afterindent = true, @@ -1720,21 +1775,25 @@ \ctexset{% chapter = { format = \centering\sffamily\fontsize{15bp}{20bp}\selectfont, + aftername = \quad, beforeskip = 30bp, afterskip = 20bp, }, section = { format = \sffamily\fontsize{14bp}{18bp}\selectfont, + aftername = \quad, beforeskip = 25bp, afterskip = 12bp, }, subsection = { format = \sffamily\fontsize{13bp}{15bp}\selectfont, + aftername = \quad, beforeskip = 12bp, afterskip = 6bp, }, subsubsection = { format = \sffamily\fontsize{12bp}{14bp}\selectfont, + aftername = \quad, beforeskip = 12bp, afterskip = 6bp, }, @@ -1755,6 +1814,25 @@ }% \fi \else + \ctexset{% + chapter = { + beforeskip = 27bp, + afterskip = 27bp, + number = \thechapter, + }, + section = { + beforeskip = 24bp, + afterskip = 6bp, + }, + subsection = { + beforeskip = 12bp, + afterskip = 6bp, + }, + subsubsection = { + beforeskip = 12bp, + afterskip = 6bp, + }, + }% \ifthu@main@language@chinese \ctexset{% chapter = { @@ -1762,15 +1840,19 @@ nameformat = {}, titleformat = {}, name = {第,章}, + aftername = \quad, }, section = { format = \sffamily\fontsize{14bp}{20bp}\selectfont, + aftername = \quad, }, subsection = { format = \sffamily\fontsize{13bp}{20bp}\selectfont, + aftername = \quad, }, subsubsection = { format = \sffamily\fontsize{12bp}{20bp}\selectfont, + aftername = \quad, }, }% \else @@ -1780,37 +1862,22 @@ nameformat = \MakeUppercase, titleformat = \MakeUppercase, name = \chaptername\space, + aftername = \space, }, section = { format = \sffamily\bfseries\fontsize{14bp}{20bp}\selectfont, + aftername = \space, }, subsection = { format = \sffamily\bfseries\fontsize{13bp}{20bp}\selectfont, + aftername = \space, }, subsubsection = { format = \sffamily\bfseries\fontsize{12bp}{20bp}\selectfont, + aftername = \space, }, }% \fi - \ctexset{% - chapter = { - beforeskip = 27bp, - afterskip = 27bp, - number = \thechapter, - }, - section = { - beforeskip = 24bp, - afterskip = 6bp, - }, - subsection = { - beforeskip = 12bp, - afterskip = 6bp, - }, - subsubsection = { - beforeskip = 12bp, - afterskip = 6bp, - }, - }% \fi } \thu@set@section@format @@ -1949,7 +2016,7 @@ \else \titlecontents{chapter} [\z@]{\addvspace{6bp}\heiti} - {\contentspush{\MakeUppercase{\thecontentslabel}\quad}\MakeUppercase}{\MakeUppercase} + {\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase} {\rmfamily\thu@leaders\thecontentspage}% \titlecontents{section} [1em]{} @@ -2082,10 +2149,14 @@ } \newcommand\thu@date@en@short[3]{\thu@date@month{#2}, #1} \newcommand\thu@underline[2][6em]{\hskip1pt\underline{\hb@xt@ #1{\hss#2\hss}}\hskip3pt} -\newcommand\thu@CJKunderline[2][6em]{\CJKunderline*{\hb@xt@ #1{\hss#2\hss}}} +\newcommand\thu@uline[2][6em]{\uline{\hb@xt@ #1{\hss#2\hss}}} \newcommand\thu@fixed@box[2]{% \begingroup - \def\CJKglue{\hskip 0pt plus 2filll minus 1filll}% + \ifLuaTeX + \ltjsetparameter{kanjiskip = {0pt plus 2filll minus 1filll}}% + \else + \renewcommand\CJKglue{\hspace{0pt plus 2filll minus 1filll}}% + \fi \makebox[#1][l]{#2}% \endgroup } @@ -2094,7 +2165,11 @@ \sbox\thu@stretch@box{#2}% \ifdim \wd\thu@stretch@box < #1\relax \begingroup - \def\CJKglue{\hskip 0pt plus 2filll}% + \ifLuaTeX + \ltjsetparameter{kanjiskip = {0pt plus 2filll}}% + \else + \renewcommand\CJKglue{\hspace{0pt plus 2filll}}% + \fi \makebox[#1][l]{#2}% \endgroup \else @@ -2277,8 +2352,14 @@ \thu@titlepage@degree \vfill \parbox[t][8.5cm][t]{\textwidth}{% - \centering\CJKfamily+{}% - \centering\fangsong\sanhao[1.95]% + \centering + \fangsong + \ifLuaTeX + \fontspec{\CJK@family}% + \else + \CJKfamily+{}% + \fi + \sanhao[1.95]% \thu@titlepage@info }\par \parbox[t][2.5cm][t]{\textwidth}{\centering\thu@titlepage@date}\par @@ -2305,8 +2386,14 @@ } \newcommand\thu@titlepage@degree{% \begingroup - \CJKfamily+{}\xiaoer - \def\CJKglue{\hskip 1bp}% + \xiaoer + \ifLuaTeX + \fontspec{\CJK@family}% + \ltjsetparameter{kanjiskip = {1bp}}% + \else + \CJKfamily+{}% + \renewcommand\CJKglue{\hspace{1bp}}% + \fi \ifthu@thesis@type@thesis (申请清华大学\thu@degree@name \ifthu@degree@type@professional @@ -2417,7 +2504,11 @@ \newcommand\thu@titlepage@date{% \begingroup \sanhao - \def\CJKglue{\hskip 1bp}% + \ifLuaTeX + \ltjsetparameter{kanjiskip = {1bp}}% + \else + \renewcommand\CJKglue{\hspace{1bp}}% + \fi \thu@format@date{\thu@date@zh@short}{\thu@date}\par \endgroup } @@ -2504,7 +2595,7 @@ \fi } \newcommand\thu@titlepage@en@degree{% - \thu@thesis@name@en{} Submitted to\par + \thu@thesis@name@en{} submitted to\par {\bfseries Tsinghua University\par}% in partial fulfillment of the requirement\par for the @@ -2558,22 +2649,23 @@ \vskip 1.8cm% \begingroup \heiti - \ifthu@main@language@chinese - \yihao[1.56]% - \else - \fontsize{26bp}{32bp}\selectfont - \fi - \parindent=18bp% - \hangindent=72bp% - \makebox[54bp]{\xiaoer[1.2]题目:}% - \CJKunderline*[skip=false, thickness=0.05em, depth=0.12em]{\thu@title}% - \ifthu@main@language@english - \\ - \thusetup{language=english}% - \ul\thu@title@en - \thusetup{language=chinese}% - \fi - \par + % 21.0cm - 0.2cm - 3cm * 2 - 18bp * 4 = 347bp + \noindent\hspace{1em}\makebox[54bp]{\xiaoer[1.2]题目:}% + \parbox[t]{347bp}{% + \ifthu@main@language@chinese + \yihao[1.56]% + \else + \fontsize{26bp}{32bp}\selectfont + \fi + \renewcommand\ULthickness{0.05em}% + \renewcommand\ULdepth{0.17em}% + \expandafter\uline\expandafter{\thu@title}\par + \ifthu@main@language@english + \thusetup{language=english}% + \expandafter\uline\expandafter{\thu@title@en}\par + \thusetup{language=chinese}% + \fi + }\par \endgroup \vskip 1.9cm% \begingroup @@ -2604,7 +2696,12 @@ \vskip 1.4cm% \begingroup \centering - {\CJKfamily+{}\xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par}% + \ifLuaTeX + \fontspec{\CJK@family}% + \else + \CJKfamily+{}% + \fi + \xiaosi\thu@format@date{\thu@date@zh@digit}{\thu@date}\par \endgroup \vfill \clearpage @@ -2628,20 +2725,23 @@ }% \vskip 0.2cm% \parbox[t][4.0cm][c]{\textwidth}{% - \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu@title}\par + \centering\sihao[3.46]% + \renewcommand\ULdepth{1em}% + \expandafter\uline\expandafter{\thu@title}\par }\par \vskip 0.4cm% {\xiaosi\thu@author\par}% \vskip 1.4cm% - {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}% + {\xiaosi[1.58]% + \renewcommand\ULdepth{0.9em}% 工作完成日期\quad - \thu@CJKunderline[5.9cm]{% + \thu@uline[5.9cm]{% \thu@format@date{\thu@date@zh@digit@short}{\thu@start@date}—% \thu@format@date{\thu@date@zh@digit@short}{\thu@end@date} }\par \vskip 0.55cm% 报告提交日期\quad - \thu@CJKunderline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par + \thu@uline[5.9cm]{\thu@format@date{\thu@date@zh@digit@short}{\thu@date}}\par }% \vskip 0.45cm% {\xiaosi[2]{\ziju{1}清华大学}\quad (北京)\par}% @@ -3589,16 +3689,49 @@ format += \centering, numbering = false, }, - subsection = { - format = \sffamily\fontsize{14bp}{20bp}\selectfont, - numbering = false, - aftertitle = \ifthu@language@chinese :\else :\fi, - }, }% - \ifthu@degree@bachelor - \ifthu@language@english - \sffamily\fontsize{15bp}{20bp}\selectfont, + \ifthu@language@chinese + \ctexset{ + subsection = { + format = \sffamily\fontsize{14bp}{20bp}\selectfont, + numbering = false, + aftertitle = :, + }, + }% + \ifthu@degree@graduate + \fontsize{12bp}{16bp}\selectfont + \fi + \setlist[achievements]{ + topsep = 6bp, + itemsep = 6bp, + leftmargin = 1cm, + labelwidth = 1cm, + labelsep = 0pt, + align = left, + label = [\arabic*], + }% + \else + \ctexset{ + subsection = { + beforeskip = 0pt, + afterskip = 0pt, + format = \bfseries\normalsize, + indent = \parindent, + numbering = false, + }, + }% + \ifthu@degree@bachelor + % 内容部分用Arial字体,字号15pt,行距采用固定值20pt, 段前后 0pt。 + \sffamily\fontsize{15bp}{20bp}\selectfont \fi + \setlist[achievements]{ + topsep = 0bp, + itemsep = 0bp, + leftmargin = 1.75cm, + labelsep = 0.5cm, + align = right, + label = [\arabic*], + }% \fi }{} \newcommand\resumeitem[1]{% @@ -3609,19 +3742,14 @@ } \newlist{achievements}{enumerate}{1} \setlist[achievements]{ - label = [\arabic*], - align = left, - leftmargin = 10mm, topsep = 6bp, - parsep = 0bp, partopsep = 0bp, itemsep = 6bp, - labelsep = !, - before = { - \ifthu@degree@graduate - \fontsize{12bp}{16bp}\selectfont - \fi - }, + parsep = 0bp, + leftmargin = 10mm, + itemindent = 0pt, + align = left, + label = [\arabic*], resume = achievements, } \newenvironment{publications}{% @@ -3796,7 +3924,7 @@ % \itshape % #1\@addpunct{.}]\ignorespaces \sffamily - #1\@addpunct{\thu@theorem@separator}]\ignorespaces + #1]\ignorespaces }{% \popQED\endtrivlist\@endpefalse } -- cgit v1.2.3