diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx | 1189 |
1 files changed, 605 insertions, 584 deletions
diff --git a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx index b1e0dd0b123..fbabf098336 100644 --- a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx +++ b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2005-2018 by Ruini Xue <xueruini@gmail.com> +% Copyright (C) 2005-2019 by Ruini Xue <xueruini@gmail.com> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -16,7 +16,7 @@ % % \iffalse %<*driver> -\ProvidesFile{thuthesis.dtx}[2018/05/17 5.4.5 Tsinghua University Thesis Template] +\ProvidesFile{thuthesis.dtx}[2019/04/27 5.5.2 Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -30,24 +30,6 @@ %</driver> % \fi % -% \CheckSum{0} -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% % \DoNotIndex{\newenvironment,\@bsphack,\@empty,\@esphack,\sfcode} % \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter} % \DoNotIndex{\noindent,\normalfont,\par,\parskip,\phantomsection} @@ -174,9 +156,13 @@ % \begin{enumerate} % \item 本模板的发布遵守 \LaTeX\ Project Public License,使用前请认真阅读协议内 % 容。 -% \item 本模板为作者根据清华大学教务处颁发的《综合论文训练写作指南》,清华大学研 -% 究生院颁发的《研究生学位论文写作指南》,清华大学《编写“清华大学博士后研究报 -% 告”参考意见》编写而成,旨在供清华大学毕业生撰写学位论文使用。 +% \item 本模板为作者根据清华大学教务处颁发的《综合论文训练写作指南》, +% 清华大学研究生院颁发的 +% \href{http://yjsy.cic.tsinghua.edu.cn/docinfo/board/boarddetail.jsp?columnId=001050603&parentColumnId=0010506&itemSeq=5365}{《研究生学位论文写作指南》}, +% 清华大学 +% \href{http://postdoctor.tsinghua.edu.cn/info/czxz/1283}{% +% 《编写“清华大学博士后研究报告”参考意见》} +% 编写而成,旨在供清华大学毕业生撰写学位论文使用。 % \item 清华大学教务处和研究生院只提供毕业论文写作指南,不提供官方模板,也不会授 % 权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格式审查老师 % 不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。 @@ -239,11 +225,9 @@ % thuthesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\ % thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule % thuthesis.cls & 模板类文件\\ -% thuthesis.cfg & 模板配置文件\\ % thuthesis-numeric.bst & 参考文献样式文件\\ % thuthesis-author-year.bst & 参考文献样式文件\\ -% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\ -% tsinghua.eps & 同上 \\\midrule +% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\\midrule % main.tex & 示例文档主文件\\ % shuji.tex & 书脊示例文档\\ % ref/ & 示例文档参考文献目录\\ @@ -258,9 +242,9 @@ % % 几点说明: % \begin{itemize} -% \item \file{thuthesis.cls} 和 \file{thuthesis.cfg} 可由 \file{thuthesis.ins} +% \item \file{thuthesis.cls} 可由 \file{thuthesis.ins} % 和 \file{thuthesis.dtx} 生成,但为了降低新手用户的使用难度,故 -% 将 \file{thuthesis.cls} 和 \file{thuthesis.cfg} 文件一起发布。 +% 将 \file{thuthesis.cls} 文件一起发布。 % \item 使用前阅读文档:\file{thuthesis.pdf}。 % \end{itemize} % @@ -280,8 +264,8 @@ % % \begin{shell} % $ cd thuthesis-vX.Y.Z -% # 生成 thuthesis.cls 和 thuthesis.cfg -% $ latex thuthesis.ins +% # 生成 thuthesis.cls +% $ xetex thuthesis.ins % % # 下面的命令用来生成用户手册,可以不执行 % $ xelatex thuthesis.dtx @@ -312,15 +296,6 @@ % $ xelatex main # 此时生成完整的 pdf 文件 % \end{shell} % -% \subsubsection{PDF\LaTeX} -% \label{sec:pdflatex} -% 如果使用 PDF\LaTeX,按照第~\ref{sec:xelatex} 节的顺序执行即可,只是将命令中 -% \texttt{xelatex} 替换为 \texttt{pdflatex}。 -% -% 需要注意的是 PDF\LaTeX\ 不能处理常见的 EPS 图形,需要先用 \texttt{epstopdf} 将其转化 -% 成 PDF。不过 PDF\LaTeX\ 增加了对 png,jpg 等格式的支持,比较方便。\TeX Live -% 自从 2010 版本起自动调用 \texttt{epstopdf} 将 EPS 图形转化为 PDF。 -% % \subsubsection{latexmk} % \label{sec:latexmk} % \texttt{latexmk} 命令支持全自动生成 \LaTeX\ 编写的文档,并且支持使用不同的工具 @@ -341,14 +316,14 @@ % % \begin{shell} % $ make clean -% $ make cls # 生成 thuthesis.cls 和 thuthesis.cfg +% $ make cls # 生成 thuthesis.cls % $ make doc # 生成说明文档 thuthesis.pdf % $ make thesis # 生成示例文档 main.pdf % $ make shuji # 生成书脊 shuji.pdf % \end{shell} % % \thuthesis\ 的 \file{Makefile} 默认用 \texttt{latexmk} 调用\texttt{xelatex} 编 -% 译,此外还支持直接用 \texttt{xelatex} 和\texttt{pdflatex} 编译。如有需要可修 +% 译。如有需要可修 % 改 \file{Makefile} 开头的参数或通过命令行传递参数(请参看 \file{README.md}), % 进一步还可以修改 \file{latexmkrc} 进行定制。 % @@ -356,15 +331,15 @@ % \label{sec:updgrade} % \thuthesis\ 升级非常简单,可以通过 \TeX\ 发行版的包管理工具自动更新发行版,也可 % 以下载最新的开发版, -% 将 \file{thuthesis.ins},\file{thuthesis.dtx},\file{tsinghua.pdf},\file{tsinghua.eps}, +% 将 \file{thuthesis.ins},\file{thuthesis.dtx},\file{tsinghua.pdf}, % \file{thuthesis-author-year.bst} 和 \file{thuthesis-numeric.bst} 拷贝至工作目录覆盖相应 % 的文件,然后运行: % \begin{shell} -% $ latex thuthesis.ins +% $ xetex thuthesis.ins % \end{shell} % % 生成新的类文件和配置文件即可。也可以直接拷 -% 贝 \file{thuthesis.cls},\file{thuthesis.cfg},免去上面命令的执行。 +% 贝 \file{thuthesis.cls},免去上面命令的执行。 % % % \section{使用说明} @@ -384,10 +359,10 @@ % % \subsection{示例文件} % \label{sec:userguide} - +% % 模板核心文件 -% 有:\file{thuthesis.cls},\file{thuthesis.cfg},\file{thuthesis-numeric.bst}, -% \file{thuthesis-author-year.bst},\file{tsinghua.pdf} 和 \file{tsinghua.eps}, +% 有:\file{thuthesis.cls},\file{thuthesis-numeric.bst}, +% \file{thuthesis-author-year.bst} 和 \file{tsinghua.pdf}, % 但如果没有示例文档会很难下手,所以推荐从模板自带的示例文档入手,其中包括了论文 % 写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。对于不清 % 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档, @@ -410,10 +385,12 @@ % \documentclass[degree=master]{thuthesis} % \end{latex} % +% \DescribeOption{language} +% 论文的主要语言(默认:中文)。可选:\option{chinese},\option{english}。 +% % \DescribeOption{secret} -% 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置(或命 -% 令)\cs{secretlevel}\marg{级别} 和 \cs{secretyear}\marg{年数} 分别用来指定保 -% 密级别和时限。若不设置,则二者取默认值,分别为“\textbf{秘密}”和当前年份。 +% 涉秘论文开关(默认:关闭)。第 \ref{sec:setup-secret} 节两个配置分别用来指定保 +% 密级别和时限。若不设置,则二者取默认值,分别为“\textbf{秘密}”和当前年份。 % \begin{latex} % \documentclass[secret]{thuthesis} % 打开保密 % \documentclass[secret=false]{thuthesis} % 关闭保密 @@ -422,18 +399,6 @@ % secretlevel=公开, % secretyear=10 % } -% % 或者 -% \secretlevel{保密} -% \secretyear{10} -% \end{latex} -% -% \DescribeOption{pifootnote} -% 是否使用 \pkg{pifont} 的带圈字符标记脚注编号。默认关闭,即使用\cs{textcircled} -% 命令,效果不太好,但是符合学校样式要求。不管使用哪种方式,一页的脚注建议控制 -% 在 9 个以内,否则大于 10的数字带圈的效果不太好。建议使用时打开此选项,脚注编号 -% 很漂亮,如下: -% \begin{latex} -% \documentclass[pifootnote]{thuthesis} % \end{latex} % % \DescribeOption{openany} @@ -474,44 +439,46 @@ % 模式使用远比正文模式频繁,所以为了符合使用习惯,上标模式仍然用常规 % 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。 % -% 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry: -% \texttt{language},将其设置为 \texttt{chinese} 用来指示此参考文献为中文。如: +% 关于参考文献表推荐使用 \BibTeX,默认情况下可以自动识别文献语言, +% 并自动处理文献类型和载体类型标识,也可以手动指定,如: % \begin{latex} -% @INPROCEEDINGS{cnproceed, -% author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝}, -% title = {武林高手从入门到精通}, -% booktitle = {第~$N$~次华山论剑}, -% year = 2006, -% address = {西安, 中国}, -% month = sep, -% language = "chinese", -% } -% -% @ARTICLE{cnarticle, -% author = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春", -% title = "论刘姥姥食量大如牛之现实意义", -% journal = "红楼梦杂谈", -% pages = "260--266", -% volume = "224", -% year = "1800", -% language = "chinese", -% } +% @misc{citekey, +% language = {japanese}, +% mark = {Z}, +% medium = {DK}, +% ... % \end{latex} +% 可选的语言有 english, chinese, japanese, russian。 % % 注意如果不需要引用参考文献,请删除 \file{main.tex} 中 \cs{bibliography} 开头的两行, % 以避免可能的编译错误。 % +% 国标规定参考文献表采用著者-出版年制组织时,各篇文献首先按文种集中, +% 然后按著者字顺和出版年排列; +% 中文文献可以按著者汉语拼音字顺排列,也可以按著者的笔画笔顺排列。 +% 然而由于 \BibTeX{} 功能的局限性,无法自动获取著者姓名的拼音或笔画笔顺, +% 所以\emph{必须}在 bib 数据库中的 key 域手动录入著者姓名的拼音,如: +% \begin{latex} +% @book{capital, +% author = {马克思 and 恩格斯}, +% key = {ma3 ke4 si1 en1 ge2 si1}, +% ... +% \end{latex} +% +% \BibTeX{} 对自定义样式的支持比较有限, +% 所以用户只能通过修改 \file{bst} 文件来修改文献列表的格式。 +% 本宏包提供了一些接口供用户更方便地修改, +% 在 \file{bst} 文件开始处的 |load.config| 函数中, +% 有一组配置参数用来控制样式。 +% 若变量被设为 |#1| 则表示该项被启用,设为 |#0| 则不启用。 +% 默认的值是严格遵循学校规定的配置。 +% +% % \subsection{中文字体} % \label{sec:chinese-fonts} % % \subsubsection{字体配置} % \label{sec:font-config} -% 正确配置中文字体是使用模板的第一步。模板调用 \CTeX\ 宏包,提供如下字体使用方式: -% \begin{itemize} -% \item 基于传统 \pkg{CJK} 包,使用 \LaTeX、PDF\LaTeX\ 编译。 -% \item 基于 \pkg{xeCJK} 包,使用 \XeLaTeX\ 编译。(推荐方法) -% \end{itemize} -% % 模板默认使用 \CTeX\ 的字体配置。关于中文字体安装、配置的所有问题不在本模板讨论 % 范围。 % @@ -591,68 +558,44 @@ % % \subsubsection{密级} % \label{sec:setup-secret} -% \DescribeMacro{\secretlevel} -% \DescribeMacro{\secretyear} % 定义秘密级别和年限,需要打开论文的 \option{secret} 选项。 % \begin{latex} % \thusetup{ -% secretyear=10, -% secretlevel={内部}, +% secretyear = 10, +% secretlevel = {内部}, % } -% % 以下命令方式与上面的等价: -% \secretyear{10} -% \secretlevel{内部} % \end{latex} % % \subsubsection{博士后专用参数} -% \DescribeMacro{\id} -% \DescribeMacro{\udc} -% \DescribeMacro{\catalognumber} % 只见过,没用过,不知道具体是什么意思。 % \begin{latex} % \thusetup{ -% catalognumber={分类号}, -% udc={udc}, -% id={id} +% catalognumber = {分类号}, +% udc = {udc}, +% id = {id}, % } -% % 等价: -% \catalognumber{分类号} -% \udc{udc} -% \id{编号} % \end{latex} % % \subsubsection{论文标题} -% \DescribeMacro{\ctitle} -% \DescribeMacro{\etitle} % 中英文标题。可以在标题内部使用换行|\\|。 % \begin{latex} % \thusetup{ -% ctitle={论文中文题目}, -% etitle={Thesis English Title} +% ctitle = {论文中文题目}, +% etitle = {Thesis English Title}, % } -% % 等价: -% \ctitle{论文中文题目} -% \etitle{Thesis English Title} % \end{latex} % % \subsubsection{作者姓名} -% \DescribeMacro{\cauthor} -% \DescribeMacro{\eauthor} % 作者姓名。 % \begin{latex} % \thusetup{ -% cauthor={中文姓名}, -% eauthor={Name in Pinyin} +% cauthor = {中文姓名}, +% eauthor = {Name in Pinyin}, % } -% % 等价: -% \cauthor{中文姓名} -% \eauthor{Name in PinYin} % \end{latex} % % \subsubsection{申请学位名称} % \label{sec:degree} -% \DescribeMacro{\cdegree} -% \DescribeMacro{\edegree} % 学位和专业的设置比想象的要复杂一些: % % \begin{longtable}{p{2cm}p{8cm}p{4cm}} @@ -673,113 +616,75 @@ % % \begin{latex} % \thusetup{ -% cdegree={您要申请什么学位}, -% edegree={degree in English} +% cdegree = {您要申请什么学位}, +% edegree = {Degree in English}, % } -% % 等价: -% \cdegree{您要申请什么学位} -% \edegree{degree in English} % \end{latex} % % \subsubsection{院系名称} -% \DescribeMacro{\cdepartment} -% \DescribeMacro{\edepartment} % 院系名称。 % \begin{latex} % \thusetup{ -% cdepartment={系名全称}, -% edepartment={Deparment of CS} +% cdepartment = {系名全称}, +% edepartment = {Deparment of CS}, % } -% % 等价: -% \cdepartment{系名全称} -% \edepartment{Department of CS} % \end{latex} % % \subsubsection{专业名称} -% \DescribeMacro{\cmajor} -% \DescribeMacro{\emajor} % 参见第 \ref{sec:degree} 节。 % \begin{latex} % \thusetup{ -% cmajor={专业名称}, -% emajor={Major in English} +% cmajor = {专业名称}, +% emajor = {Major in English}, % } -% % 等价: -% \cmajor{专业名称} -% \emajor{Major in English} % \end{latex} % -% \DescribeMacro{\cfirstdiscipline} -% \DescribeMacro{\cseconddiscipline} % 博士后专用。 % \begin{latex} % \thusetup{ -% cfirstdiscipline={博士后一级学科}, -% cseconddiscipline={博士后二级学科} +% cfirstdiscipline = {流动站(一级学科)名称}, +% cseconddiscipline = {专业(二级学科)名称}, % } -% % 等价: -% \cfirstdiscipline{博士后一级学科} -% \cseconddiscipline{博士后二级学科} % \end{latex} % % \subsubsection{导师} % \myentry{导师} -% \DescribeMacro{\csupervisor} -% \DescribeMacro{\esupervisor} % 直接导师。 % \begin{latex} % \thusetup{ -% csupervisor={导师~教授}, -% esupervisor={Supervisor} +% csupervisor = {导师~教授}, +% esupervisor = {Supervisor}, % } -% % 等价: -% \csupervisor{导师~教授} -% \esupervisor{Supervisor} % \end{latex} % % \myentry{副导师} -% \DescribeMacro{\cassosupervisor} -% \DescribeMacro{\eassosupervisor} % 本科生的辅导教师,硕士的副指导教师。 % \begin{latex} % \thusetup{ -% cassosupervisor={副导师~副教授}, -% eassosupervisor={2nd Boss} +% cassosupervisor = {副导师~副教授}, +% eassosupervisor = {2nd Boss}, % } -% % 等价: -% \cassosupervisor{副导师~副教授} -% \eassosupervisor{2nd Boss} % \end{latex} % % \myentry{联合导师} -% \DescribeMacro{\ccosupervisor} -% \DescribeMacro{\ecosupervisor} % 硕士生联合指导教师,博士生联合导师。 % \begin{latex} % \thusetup{ -% ccosupervisor={联合导师~教授}, -% ecosupervisor={3rd Boss} +% ccosupervisor = {联合导师~教授}, +% ecosupervisor = {3rd Boss}, % } -% % 等价: -% \ccosupervisor{联合导师~教授} -% \ecosupervisor{3rd Boss} % \end{latex} % % \subsubsection{成文日期} -% \DescribeMacro{\cdate} -% \DescribeMacro{\edate} -% \DescribeMacro{\postdoctordate} % 默认为当前时间,也可以自己指定。 % \begin{latex} % \thusetup{ -% cdate={中文日期}, -% edate={English Date}, -% postdoctordate={2009年7月——2011年7月} % 博士后研究起止日期 +% cdate = {中文日期}, +% edate = {English Date}, +% postdoctordate = {2009 年 7 月——2011 年 7 月}, % 博士后工作完成日期 +% postdocstartdate = {2009 年 7 月 1 日}, % 博士后研究工作起始时间 +% postdocenddate = {2011 年 7 月 1 日}, % 博士后研究工作期满时间 % } -% % 等价: -% \cdate{中文日期} -% \edate{English Date} -% \postdoctordate{2009年7月——2011年7月} % 博士后研究起止日期 % \end{latex} % % \subsubsection{摘要} @@ -799,18 +704,13 @@ % \end{latex} % % \myentry{关键词} -% \DescribeMacro{\ckeywords} -% \DescribeMacro{\ekeywords} % 关键词用英文逗号分割写入相应的命令中,模板会解析各关键词并生成符合不同论文格式 % 要求的关键词格式。 % \begin{latex} % \thusetup{ -% ckeywords={关键词 1, 关键词 2}, -% ekeywords={keyword 1, keyword 2} +% ckeywords = {关键词 1, 关键词 2}, +% ekeywords = {keyword 1, keyword 2}, % } -% % 等价: -% \ckeywords{关键词 1, 关键词 2} -% \ekeywords{keyword 1, keyword 2} % \end{latex} % % \myentry{生成封面} @@ -846,6 +746,18 @@ % \end{denotation} % \end{latex} % +% 另外一种方法是调用 \pkg{nomencl} 宏包,需要在导言区设置: +% \begin{latex} +% \usepackage{nomencl} +% \makenomenclature +% \end{latex} +% 然后在正文中任意位置使用 \cs{nomenclature} 声明需要添加到主要符号表的符号: +% \begin{latex} +% \nomenclature{$m$}{The mass of one angel} +% \end{latex} +% 最后使用 \cs{printnomenclature} 命令生成符号表。 +% 更详细的使用方法参见 \pkg{nomencl} 宏包的文档。 +% % \subsection{目录和索引表} % 目录、插图、表格和公式等索引命令分别如下,将其插入到期望的位置即可(带星号的命令表 % 示对应的索引表不会出现在目录中): @@ -1096,10 +1008,6 @@ % 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号, % 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。 % -% \subsection{其它} -% 模板的配置文件 \file{thuthesis.cfg} 中定义了很多固定词汇,一般无须修改。如果有特殊需求, -% 推荐在导言区使用 \cs{renewcommand}。 -% % \section{致谢} % \label{sec:thanks} % 感谢这些年来一直陪伴 \thuthesis\ 成长的新老同学! @@ -1115,8 +1023,16 @@ % \begin{macrocode} %<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<cls>\ProvidesClass{thuthesis} -%<cfg>\ProvidesFile{thuthesis.cfg} -%<cls|cfg>[2018/05/17 5.4.5 Tsinghua University Thesis Template] +%<cls>[2019/04/27 5.5.2 Tsinghua University Thesis Template] +% \end{macrocode} +% +% 检查编译引擎,要求使用 XeLaTeX。 +% \begin{macrocode} +\RequirePackage{ifxetex} +\ifxetex\else + \ClassError{thuthesis}{You should use XeLaTeX}{} + \end{document} +\fi % \end{macrocode} % % \subsection{定义选项} @@ -1134,9 +1050,8 @@ % \begin{macrocode} %<*cls> \hyphenation{Thu-Thesis} -\def\thuthesis{\textsc{ThuThesis}} -\def\version{5.4.5} - +\def\thuthesis{ThuThesis} +\def\version{5.5.2} \RequirePackage{kvoptions} \SetupKeyvalOptions{ family=thu, @@ -1148,26 +1063,13 @@ % \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}{degree}{% - \thu@bachelorfalse - \thu@masterfalse - \thu@doctorfalse - \thu@postdoctorfalse - \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 '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} +\DeclareStringOption[doctor]{degree}[doctor] +% \end{macrocode} +% +% 论文是使用英文。 +% \changes{v5.5.0}{2018/12/09}{增加选项使用英文模板。} +% \begin{macrocode} +\DeclareStringOption[chinese]{language}[chinese] % \end{macrocode} % % 论文是否保密。 @@ -1187,12 +1089,7 @@ % \changes{v4.8}{2013/03/05}{增加 noraggedbottom 选项。} % \changes{v5.0.0}{2015/12/13}{norggedbottom 选项修改为 raggedbottom。} % \begin{macrocode} -\DeclareBoolOption{raggedbottom} -% \end{macrocode} -% -% 在脚注标记中使用 \pkg{pifont} 的带圈数字(默认关闭) -% \begin{macrocode} -\DeclareBoolOption{pifootnote} +\DeclareBoolOption[true]{raggedbottom} % \end{macrocode} % % 将选项传递给 \pkg{ctexbook}。 @@ -1204,38 +1101,30 @@ % \changes{v2.5.1}{2006/05/26}{本科 openright,研究生 openany。} % \changes{v3.1}{2007/10/09}{本科的目录又不要 arial 字体了。} % \changes{v4.8}{2013/05/29}{添加 nocap 选项,恢复默认标题样式,模板会进一步定制。} -% 打开默认选项。 -% \begin{macrocode} -\kvsetkeys{thu}{% - raggedbottom} -% \end{macrocode} -% % 解析用户传递过来的选项,并加载 \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} 自动调用。传递 -% 给 \pkg{fontspec} 宏包 \option{no-math} 选项,避免部分数学符号字体自动调整 -% 为 CMR。其他引擎下没有这个问题,这一行会被无视。 -% \begin{macrocode} -\PassOptionsToPackage{no-math}{fontspec} +\newcommand\thu@validate@key[1]{% + \@ifundefined{thu@\csname thu@#1\endcsname true}{% + \ClassError{thuthesis}{Invalid value '\csname thu@#1\endcsname'}{}% + }{% + \csname thu@\csname thu@#1\endcsname true\endcsname + }% +} +\newif\ifthu@bachelor +\newif\ifthu@master +\newif\ifthu@doctor +\newif\ifthu@postdoctor +\thu@validate@key{degree} +\newif\ifthu@chinese +\newif\ifthu@english +\thu@validate@key{language} % \end{macrocode} % % \changes{v5.3.1}{2016/03/20}{使用 \CTeX\ 默认中文字体配置,支持不同引擎。} % 使用 \pkg{ctexbook} 类,优于调用 \pkg{ctex} 宏包。 % \begin{macrocode} +\PassOptionsToPackage{quiet}{xeCJK} \LoadClass[a4paper,openany,UTF8,zihao=-4,scheme=plain]{ctexbook} % \end{macrocode} % @@ -1246,7 +1135,6 @@ % 引用的宏包和相应的定义。 % \begin{macrocode} \RequirePackage{etoolbox} -\RequirePackage{ifxetex} \RequirePackage{xparse} % \end{macrocode} % @@ -1256,21 +1144,13 @@ \RequirePackage{amsmath} % \end{macrocode} % -% \pkg{newtx} 设置 Times New Roman,Helvetica。 +% 使用 \pkg{unicode-math} 处理数学字体。 % \changes{v3.1}{2007/06/16}{replace \pkg{mathptmx} with \pkg{txfonts}.} % \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 替换 \pkg{txfonts}。} % \changes{v5.2.2}{2016/02/01}{不希望 \pkg{newtx} 修改 \cs{@makefnmark}。 } +% \changes{v5.5.0}{2018/07/07}{使用 \pkg{unicode-math} 处理数学字体。} % \begin{macrocode} -\RequirePackage[defaultsups]{newtxtext} -\RequirePackage{newtxmath} -% \end{macrocode} -% -% \pkg{newtx} 的 Mono 字体虽然很好看,但在论文中不常见。学校虽未要求 Mono 字体, -% 还是选择常见的 Courier 字体。由于比较新的实现 \TeX\ Gyre Cursor 会修 -% 改\cs{bfdefault},导致中文加粗出问题,所以选用标准 \pkg{courier}。 -% \changes{v5.3.2}{2016/5/24}{替换 \pkg{tgcursor} 为 \pkg{courier}。} -% \begin{macrocode} -\RequirePackage{courier} +\RequirePackage{unicode-math} % \end{macrocode} % % 图形支持宏包。 @@ -1312,11 +1192,6 @@ \fi % \end{macrocode} % -% \begin{macrocode} -\ifthu@pifootnote - \RequirePackage{pifont} -\fi -% \end{macrocode} % 利用 \pkg{CJKfntef} 实现汉字的下划线和盒子内两段对齐,并可以避免 % \cs{makebox}\oarg{width}\oarg{s} 可能产生的 underful boxes。 % \begin{macrocode} @@ -1360,32 +1235,39 @@ % \changes{v5.2.2}{2016/01/25}{目录中标题和页码都是链接。} % \begin{macrocode} \RequirePackage{hyperref} -\ifxetex - \hypersetup{% - CJKbookmarks=true} -\else - \hypersetup{% - unicode=true, - CJKbookmarks=false} -\fi -\hypersetup{% - linktoc=all, - bookmarksnumbered=true, - bookmarksopen=true, - bookmarksopenlevel=1, - breaklinks=true, - colorlinks=false, - plainpages=false, - pdfborder=0 0 0} +\hypersetup{ + linktoc = all, + bookmarksnumbered = true, + bookmarksopen = true, + bookmarksopenlevel = 1, + breaklinks = true, + plainpages = false, + hidelinks, +} +\pdfstringdefDisableCommands{ + \let\\\@empty + \let\hspace\@gobble +} % \end{macrocode} % -% dvips 模式下网址断字有问题,请手工加载 \pkg{breakurl} 宏包解决之。 -% % 设置 url 样式,与上下文一致 % \begin{macrocode} \urlstyle{same} % \end{macrocode} % +% 使用 \pkg{xurl} 的方法,增加 URL 可断行的位置。 +% \begin{macrocode} +\def\UrlBreaks{% + \do\/% + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l% + \do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z% + \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L% + \do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z% + \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:% + \do\*\do\-\do\~\do\'\do\"\do\-} +\Urlmuskip=0mu plus 0.1mu +% \end{macrocode} +% % % \subsection{页面设置} % \label{sec:layout} @@ -1433,7 +1315,6 @@ % \changes{v5.4.4}{2018/04/13}{让目录中的引用不影响正文中引用序号。} % \begin{macrocode} \RequirePackage{notoccite} -%</cls> % \end{macrocode} % % \subsection{主文档格式} @@ -1444,7 +1325,6 @@ % 对于 \textsl{openright} 选项,必须保证章首页右开,且如果前章末页无内容须 % 清空其页眉页脚。 % \begin{macrocode} -%<*cls> \let\thu@cleardoublepage\cleardoublepage \newcommand{\thu@clearemptydoublepage}{% \clearpage{\pagestyle{thu@empty}\thu@cleardoublepage}} @@ -1465,7 +1345,7 @@ \renewcommand\frontmatter{% \if@openright\cleardoublepage\else\clearpage\fi \@mainmatterfalse - \pagenumbering{Roman} + \pagenumbering{Alph} \pagestyle{thu@empty}} \renewcommand\mainmatter{% \if@openright\cleardoublepage\else\clearpage\fi @@ -1475,7 +1355,6 @@ \renewcommand\backmatter{% \if@openright\cleardoublepage\else\clearpage\fi \@mainmattertrue} -%</cls> % \end{macrocode} % \end{macro} % \end{macro} @@ -1483,18 +1362,85 @@ % % \subsubsection{字体} % \label{sec:font} -% 在使用 Windows Vista 或之后版本的系统时,\pkg{ctex} 宏包会默认使用微软雅黑字体, -% 这可能会导致审查不合格。 下面设置适合印刷的黑体,同时保持跨平台兼容性。 +% 使用 \pkg{fontspec} 配置字体。 % \begin{macrocode} -%<*cls> \newcommand\thu@fontset{\csname g__ctex_fontset_tl\endcsname} +\ifthenelse{\equal{\thu@fontset}{fandol}}{ + \setmainfont[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + ]{texgyretermes} + \setsansfont[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + ]{texgyreheros} + \setmonofont[ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + ]{texgyrecursor} +}{ + \setmainfont{Times New Roman} + \setsansfont{Arial} + \ifthenelse{\equal{\thu@fontset}{mac}}{ + \setmonofont[Scale=MatchLowercase]{Menlo} + }{ + \setmonofont[Scale=MatchLowercase]{Courier New} + } +} +% \end{macrocode} +% +% 使用 \pkg{unicode-math} 配置数学字体 +% \changes{v5.5.2}{2019/04/21}{使用 XITS 数学字体。} +% \begin{macrocode} +\unimathsetup{ + math-style = ISO, + bold-style = ISO, + nabla = upright, + partial = upright, +} +\IfFontExistsTF{XITSMath-Regular.otf}{ + \setmathfont[ + Extension = .otf, + BoldFont = XITSMath-Bold, + StylisticSet = 8, + ]{XITSMath-Regular} + \setmathfont[range={cal,bfcal},StylisticSet=1]{XITSMath-Regular.otf} +}{ + \setmathfont[ + Extension = .otf, + BoldFont = *bold, + StylisticSet = 8, + ]{xits-math} + \setmathfont[range={cal,bfcal},StylisticSet=1]{xits-math.otf} +} +% \end{macrocode} +% +% 在使用 Windows Vista 或之后版本的系统时,\pkg{ctex} 宏包会默认使用微软雅黑字体, +% 这可能会导致审查不合格。下面设置适合印刷的黑体,同时保持跨平台兼容性。 +% \changes{v5.5.0}{2019/01/06}{Windows 的中文字体开启伪粗。} +% \begin{macrocode} \ifthenelse{\equal{\thu@fontset}{windows}}{ - \ifxetex - \setCJKsansfont{SimHei} - \else - \setCJKsansfont{simhei.ttf} - \csname ctex_punct_map_family:nn\endcsname{\CJKsfdefault}{zhhei} - \fi + \xeCJKsetup{EmboldenFactor=2} + \IfFileExists{C:/bootfont.bin}{ + \setCJKmainfont[AutoFakeBold,ItalicFont=KaiTi_GB2312]{SimSun} + \setCJKfamilyfont{zhkai}[AutoFakeBold]{KaiTi_GB2312} + }{ + \setCJKmainfont[AutoFakeBold,ItalicFont=KaiTi]{SimSun} + \setCJKfamilyfont{zhkai}[AutoFakeBold]{KaiTi} + } + \setCJKsansfont[AutoFakeBold]{SimHei} + \setCJKfamilyfont{zhsong}[AutoFakeBold]{SimSun} + \setCJKfamilyfont{zhhei}[AutoFakeBold]{SimHei} }{} % \end{macrocode} % @@ -1505,15 +1451,16 @@ UprightFont = * Light, BoldFont = * Bold, ItalicFont = Kaiti SC, - BoldItalicFont = Kaiti SC Bold + BoldItalicFont = Kaiti SC Bold, ]{Songti SC} - \setCJKsansfont{Heiti SC} + \setCJKsansfont[BoldFont=* Medium]{Heiti SC} \setCJKfamilyfont{zhsong}[ UprightFont = * Light, BoldFont = * Bold, ]{Songti SC} - \setCJKfamilyfont{zhhei}{Heiti SC} - \setCJKfamilyfont{zhkai}{Kaiti SC} + \setCJKfamilyfont{zhhei}[BoldFont=* Medium]{Heiti SC} + \setCJKfamilyfont{zhkai}[BoldFont=* Bold]{Kaiti SC} + \xeCJKsetwidth{‘’“”}{1em} }{} % \end{macrocode} % @@ -1606,7 +1553,6 @@ \thu@def@fontsize{xiaoliu}{6.5bp} \thu@def@fontsize{qihao}{5.5bp} \thu@def@fontsize{bahao}{5bp} -%</cls> % \end{macrocode} % \end{macro} % \end{macro} @@ -1628,6 +1574,119 @@ % \end{macro} % % +% \subsubsection{语言设置} +% +% \newcommand\unicodechar[1]{U+#1(\symbol{"#1})} +% 由于 Unicode 的一些标点符号是中西文混用的: +% \unicodechar{00B7}、 +% \unicodechar{2013}、 +% \unicodechar{2014}、 +% \unicodechar{2018}、 +% \unicodechar{2019}、 +% \unicodechar{201C}、 +% \unicodechar{201D}、 +% \unicodechar{2025}、 +% \unicodechar{2026}、 +% \unicodechar{2E3A}, +% 所以要根据语言设置正确的字体。 +% \footnote{\url{https://github.com/CTeX-org/ctex-kit/issues/389}} +% 所以要根据语言设置正确的字体。 +% \begin{macrocode} +\newcommand\thu@setchinese{% + \xeCJKResetPunctClass +} +\newcommand\thu@setenglish{% + \xeCJKDeclareCharClass{HalfLeft}{"2018, "201C}% + \xeCJKDeclareCharClass{HalfRight}{ + "00B7, "2019, "201D, "2013, "2014, "2025, "2026, "2E3A, + }% +} +\newcommand\thu@setdefaultlanguage{% + \ifthu@chinese + \thu@setchinese + \else + \thu@setenglish + \fi +} +% \end{macrocode} +% +% 中英文翻译: +% \begin{macrocode} +\ifthu@chinese + \ctexset{ + chapter/name = {第,章}, + appendixname = 附录, + contentsname = {目\hspace{\ccwd}录}, + listfigurename = 插图索引, + listtablename = 表格索引, + figurename = 图, + tablename = 表, + bibname = 参考文献, + indexname = 索引, + } + \newcommand\thu@denotation@name{主要符号对照表} + \newcommand\listequationname{公式索引} + \newcommand\equationname{公式} + \newcommand\thu@assumption@name{假设} + \newcommand\thu@definition@name{定义} + \newcommand\thu@proposition@name{命题} + \newcommand\thu@lemma@name{引理} + \newcommand\thu@theorem@name{定理} + \newcommand\thu@axiom@name{公理} + \newcommand\thu@corollary@name{推论} + \newcommand\thu@exercise@name{练习} + \newcommand\thu@example@name{例} + \newcommand\thu@remark@name{注释} + \newcommand\thu@problem@name{问题} + \newcommand\thu@conjecture@name{猜想} + \newcommand\thu@proof@name{证明} + \newcommand\thu@theorem@separator{:} + \newcommand\thu@ack@name{致\hspace{\ccwd}谢} + \ifthu@bachelor + \newcommand\thu@resume@title{在学期间参加课题的研究成果} + \else + \ifthu@postdoctor + \newcommand\thu@resume@title{个人简历、发表的学术论文与科研成果} + \else + \newcommand\thu@resume@title{个人简历、在学期间发表的学术论文与研究成果} + \fi + \fi +\else + \newcommand\thu@denotation@name{Nomenclature} + \newcommand\listequationname{List of Equations} + \newcommand\equationname{Equation} + \newcommand\thu@assumption@name{Assumption} + \newcommand\thu@definition@name{Definition} + \newcommand\thu@proposition@name{Proposition} + \newcommand\thu@lemma@name{Lemma} + \newcommand\thu@theorem@name{Theorem} + \newcommand\thu@axiom@name{Axiom} + \newcommand\thu@corollary@name{Corollary} + \newcommand\thu@exercise@name{Exercise} + \newcommand\thu@example@name{Example} + \newcommand\thu@remark@name{Remark} + \newcommand\thu@problem@name{Problem} + \newcommand\thu@conjecture@name{Conjecture} + \newcommand\thu@proof@name{proof} + \newcommand\thu@theorem@separator{: } + \newcommand\thu@ack@name{Acknowledgments} + \ifthu@bachelor + \newcommand\thu@resume@title{Research Achievements} + \else + \ifthu@postdoctor + \newcommand\thu@resume@title{% + Resume, Publications and Research Achievements% + } + \else + \newcommand\thu@resume@title{% + Resume, Publications and Research Achievements% + } + \fi + \fi +\fi +% \end{macrocode} +% +% % \subsubsection{页眉页脚} % \label{sec:headerfooter} % @@ -1649,7 +1708,6 @@ % \item \texttt{thu@headings}:页眉页脚同时显示 % \end{itemize} % \begin{macrocode} -%<*cls> \fancypagestyle{thu@empty}{% \fancyhf{} \renewcommand{\headrulewidth}{0pt} @@ -1666,7 +1724,6 @@ \fancyfoot[C]{\wuhao\thepage} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0pt}} -%</cls> % \end{macrocode} % \end{macro} % \end{macro} @@ -1678,7 +1735,6 @@ % % 全文首行缩进 2 字符,标点符号用全角 % \begin{macrocode} -%<*cls> \ctexset{% punct=quanjiao, space=auto, @@ -1689,7 +1745,6 @@ % \changes{v2.5.2}{2006/06/01}{更改默认列表距离。} % \begin{macrocode} \setlist{nosep} -%</cls> % \end{macrocode} % % @@ -1701,19 +1756,30 @@ % \begin{macro}{\thu@textcircled} % \changes{v2.5.1}{2006/05/21}{脚注编号使用 \cs{textcircled} 命令,每页允许至多 99 个。} % \changes{v5.2.2}{2016/02/01}{脚注编号每页允许至多 9 个。} +% \changes{v5.5.0}{2018/12/10}{去掉 \option{pifootnote} 选项。} +% \changes{v5.5.1}{2019/04/16}{修复 minipage 中 footnote 编号问题。} % 生成带圈的脚注数字,最多处理到 10。 % \begin{macrocode} -%<*cls> +\ifthenelse{\equal{\thu@fontset}{mac}}{ + \newfontfamily\thu@circlefont{Songti SC Light} +}{ + \ifthenelse{\equal{\thu@fontset}{windows}}{ + \newfontfamily\thu@circlefont{SimSun} + }{ + \IfFontExistsTF{XITS-Regular.otf}{ + \newfontfamily\thu@circlefont{XITS-Regular.otf} + }{ + \newfontfamily\thu@circlefont{xits-regular.otf} + } + } +} \def\thu@textcircled#1{% - \ifnum\value{#1} >9 + \ifnum\value{#1} >9% \ClassError{thuthesis}% - {Too many footnotes in this page.}{Keep footnote less than 10.} + {Too many footnotes in this page.}{Keep footnote less than 10.}% \fi - \ifthu@pifootnote% - \ding{\the\numexpr\value{#1}+171\relax}% - \else% - \textcircled{\xiaoliu\arabic{#1}}% - \fi} + {\thu@circlefont\symbol{\the\numexpr\value{#1}+"245F\relax}}% +} \renewcommand{\thefootnote}{\thu@textcircled{footnote}} \renewcommand{\thempfootnote}{\thu@textcircled{mpfootnote}} % \end{macrocode} @@ -1737,15 +1803,92 @@ \def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}} \pretocmd{\@makefntext}{\let\@makefnmark\thu@@makefnmark}{}{} \apptocmd{\@makefntext}{\let\@makefnmark\thu@makefnmark}{}{} -%</cls> % \end{macrocode} % % % \subsubsection{数学相关} % \label{sec:equation} +% \begin{macro}{\ldots} +% 省略号一律居中,所以 \cs{ldots} 不再居于底部。 +% \begin{macrocode} +\ifthu@chinese + \def\mathellipsis{\cdots} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\le} +% \begin{macro}{\ge} +% \begin{macro}{\leq} +% \begin{macro}{\geq} +% 小于等于号要使用倾斜的形式。 +% \begin{macrocode} +\protected\def\le{\leqslant} +\protected\def\ge{\geqslant} +\AtBeginDocument{% + \renewcommand\leq{\leqslant}% + \renewcommand\geq{\geqslant}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\int} +% 积分号 \cs{int} 使用正体,并且上下限默认置于积分号上下两侧。 +% \begin{macrocode} +\removenolimits{% + \int\iint\iiint\iiiint\oint\oiint\oiiint + \intclockwise\varointclockwise\ointctrclockwise\sumint + \intbar\intBar\fint\cirfnint\awint\rppolint + \scpolint\npolint\pointint\sqint\intlarhk\intx + \intcap\intcup\upint\lowint +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Re} +% \begin{macro}{\Im} +% 实部、虚部操作符使用罗马体 $\mathrm{Re}$、$\mathrm{Im}$ 而不是 fraktur 体 +% $\Re$、$\Im$。 +% \begin{macrocode} +\AtBeginDocument{% + \renewcommand{\Re}{\operatorname{Re}}% + \renewcommand{\Im}{\operatorname{Im}}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\nabla} +% \cs{nabla} 使用粗正体。 +% \begin{macrocode} +\AtBeginDocument{% + \renewcommand\nabla{\mbfnabla}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bm} +% \begin{macro}{\boldsymbol} +% 兼容旧的粗体命令:\pkg{bm} 的 \cs{bm} 和 \pkg{amsmath} 的 \cs{boldsymbol}。 +% \begin{macrocode} +\newcommand\bm{\symbf} +\renewcommand\boldsymbol{\symbf} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\square} +% 兼容 \pkg{amssymb} 中的命令。 +% \begin{macrocode} +\newcommand\square{\mdlgwhtsquare} +% \end{macrocode} +% \end{macro} +% % 允许太长的公式断行、分页等。 % \begin{macrocode} -%<*cls> \allowdisplaybreaks[4] \renewcommand\theequation{\ifnum \c@chapter>\z@ \thechapter-\fi\@arabic\c@equation} % \end{macrocode} @@ -1787,7 +1930,6 @@ % 修改 \cs{tagform} 会影响 \cs{eqref}。 % \begin{macrocode} \renewcommand{\eqref}[1]{\textup{(\ref{#1})}} -%</cls> % \end{macrocode} % % 定理标题使用黑体,正文使用宋体,冒号隔开。 @@ -1795,39 +1937,38 @@ % \changes{v4.2}{2008/03/07}{调整证明环境的编号和结尾的方块。} % \changes{v5.0.0}{2015/04/18}{修正定理字样为黑体 (\#104)。} % \changes{v5.3.2}{2017/05/01}{定理环境格式设置(环境标题和环境正文字体设置)统一放置到 .cfg 文件中。} +% \changes{v5.5.0}{2019/01/08}{移除 cfg 文件。} % \begin{macrocode} -%<*cfg> \theorembodyfont{\normalfont} -\theoremheaderfont{\normalfont\heiti} +\theoremheaderfont{\normalfont\sffamily} \theoremsymbol{\ensuremath{\square}} -\newtheorem*{proof}{证明} +\newtheorem*{proof}{\thu@proof@name} \theoremstyle{plain} \theoremsymbol{} -\theoremseparator{:} -\newtheorem{assumption}{假设}[chapter] -\newtheorem{definition}{定义}[chapter] -\newtheorem{proposition}{命题}[chapter] -\newtheorem{lemma}{引理}[chapter] -\newtheorem{theorem}{定理}[chapter] -\newtheorem{axiom}{公理}[chapter] -\newtheorem{corollary}{推论}[chapter] -\newtheorem{exercise}{练习}[chapter] -\newtheorem{example}{例}[chapter] -\newtheorem{remark}{注释}[chapter] -\newtheorem{problem}{问题}[chapter] -\newtheorem{conjecture}{猜想}[chapter] -%</cfg> +\theoremseparator{\thu@theorem@separator} +\newtheorem{assumption}{\thu@assumption@name}[chapter] +\newtheorem{definition}{\thu@definition@name}[chapter] +\newtheorem{proposition}{\thu@proposition@name}[chapter] +\newtheorem{lemma}{\thu@lemma@name}[chapter] +\newtheorem{theorem}{\thu@theorem@name}[chapter] +\newtheorem{axiom}{\thu@axiom@name}[chapter] +\newtheorem{corollary}{\thu@corollary@name}[chapter] +\newtheorem{exercise}{\thu@exercise@name}[chapter] +\newtheorem{example}{\thu@example@name}[chapter] +\newtheorem{remark}{\thu@remark@name}[chapter] +\newtheorem{problem}{\thu@problem@name}[chapter] +\newtheorem{conjecture}{\thu@conjecture@name}[chapter] % \end{macrocode} % % \subsubsection{浮动对象以及表格} % \label{sec:float} % 设置浮动对象和文字之间的距离 % \changes{v2.6}{2006/06/09}{增加 \cs{floatsep},\cs{@fptop},\cs{@fpsep} 和 \cs{@fpbot}。} +% \changes{v5.5.0}{2019/03/15}{修正图表标题与文字之间的距离。} % \begin{macrocode} -%<*cls> -\setlength{\floatsep}{20bp \@plus4pt \@minus1pt} -\setlength{\intextsep}{20bp \@plus4pt \@minus2pt} -\setlength{\textfloatsep}{20bp \@plus4pt \@minus2pt} +\setlength{\floatsep}{12bp \@plus 2bp \@minus 4bp} +\setlength{\textfloatsep}{12bp} +\setlength{\intextsep}{12bp} \setlength{\@fptop}{0bp \@plus1.0fil} \setlength{\@fpsep}{12bp \@plus2.0fil} \setlength{\@fpbot}{0bp \@plus1.0fil} @@ -1864,12 +2005,15 @@ \fi \let\old@tabular\@tabular \def\thu@tabular{\dawu[1.5]\old@tabular} -\DeclareCaptionLabelFormat{thu}{{\dawu[1.5]\normalfont #1~#2}} -\DeclareCaptionLabelSeparator{thu}{\hspace{1em}} -\DeclareCaptionFont{thu}{\dawu[1.5]} -\captionsetup{labelformat=thu,labelsep=thu,font=thu,skip=6bp} -\captionsetup[table]{position=top} -\captionsetup[figure]{position=bottom} +\DeclareCaptionFont{thu}{\dawu[1.3]} +\DeclareCaptionLabelSeparator{thu}{\hspace{\ccwd}} +\captionsetup{ + font = thu, + labelsep = thu, + skip = 6bp, + figureposition = bottom, + tableposition = top, +} \captionsetup[sub]{font=thu} \renewcommand{\thesubfigure}{(\alph{subfigure})} \renewcommand{\thesubtable}{(\alph{subtable})} @@ -1891,7 +2035,6 @@ \def\hlinewd#1{% \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet \reserved@a\@xhline} -%</cls> % \end{macrocode} % \end{macro} % @@ -1900,20 +2043,6 @@ % \label{sec:theor} % \changes{v2.5}{2006/05/19}{增加索引名称定义。} % \begin{macrocode} -%<*cfg> -\ctexset{% - chapter/name={第,章}, - appendixname=附录, - contentsname={目\hspace{\ccwd}录}, - listfigurename=插图索引, - listtablename=表格索引, - figurename=图, - tablename=表, - bibname=参考文献, - indexname=索引, -} -\newcommand\listequationname{公式索引} -\newcommand\equationname{公式} \ifthu@bachelor \newcommand{\cabstractname}{中文摘要} \newcommand{\eabstractname}{ABSTRACT} @@ -1933,7 +2062,6 @@ \or\def\CJK@today{\CJK@todaysmall} \or\def\CJK@today{\CJK@todaybig} \fi} -%</cfg> % \end{macrocode} % % \pkg{fancyhdr} 定义页眉页脚很方便,但是有一个非常隐蔽的坑。通过 \pkg{fancyhdr} @@ -1960,7 +2088,6 @@ % 而覆盖我们的 \cs{chaptermark} 定义(后续样式再激活不会重复覆盖)。所以我们采用如下 % 方法解决: % \begin{macrocode} -%<*cls> \AtBeginDocument{% \pagestyle{thu@empty} \renewcommand{\chaptermark}[1]{\@mkboth{\CTEXthechapter\hskip\ccwd#1}{}}} @@ -2081,7 +2208,6 @@ \@mkboth{#3}{#3} } } -%</cls> % \end{macrocode} % \end{macro} % @@ -2093,7 +2219,6 @@ % \changes{v3.1}{2007/10/09}{博士论文目录只出现到第 3 级标题即可。} % \changes{v5.0.0}{2015/05/21}{硕士博士论文目录只出现到第 3 级标题即可。其他未明确要求。} % \begin{macrocode} -%<*cls> \setcounter{secnumdepth}{3} \setcounter{tocdepth}{2} % \end{macrocode} @@ -2159,7 +2284,6 @@ \@dottedtocline{2}{\ifthu@bachelor 1.5\ccwd\else 2\ccwd\fi}{3em}} \renewcommand*\l@subsubsection{% \@dottedtocline{3}{\ifthu@bachelor 2.4em\else 3.5em\fi}{3.8em}} -%</cls> % \end{macrocode} % \end{macro} % @@ -2171,7 +2295,6 @@ % \changes{v2.6.2}{2006/06/18}{引入 \cs{thu@def@term} 定义封面命令。} % \changes{v3.1}{2006/06/16}{重新定义摘要为环境,long 选项不需要了。} % \begin{macrocode} -%<*cls> \def\thu@def@term#1{% \define@key{thu}{#1}{\csname #1\endcsname{##1}} \expandafter\gdef\csname #1\endcsname##1{% @@ -2183,34 +2306,18 @@ % \changes{v2.0}{2005/12/18}{增加了封面密级,增加博士封面支持} % \changes{v4.6}{2011/04/27}{增加博士后相关指令。} % -% \begin{macro}{\secretlevel} -% \begin{macro}{\secretyear} % 定义密级参数。 % \begin{macrocode} \thu@def@term{secretlevel} \thu@def@term{secretyear} % \end{macrocode} -% \end{macro} -% \end{macro} % -% \begin{macro}{\ctitle} -% \begin{macro}{\etitle} % 论文中英文题目。 % \begin{macrocode} \thu@def@term{ctitle} \thu@def@term{etitle} % \end{macrocode} -% \end{macro} -% \end{macro} % -% \begin{macro}{\cauthor} -% \begin{macro}{\eauthor} -% \begin{macro}{\csupervisor} -% \begin{macro}{\cassosupervisor} -% \begin{macro}{\ccosupervisor} -% \begin{macro}{\esupervisor} -% \begin{macro}{\eassosupervisor} -% \begin{macro}{\ecosupervisor} % 作者、导师、副导师、联合指导老师。 % \begin{macrocode} \thu@def@term{cauthor} @@ -2222,79 +2329,33 @@ \thu@def@term{eassosupervisor} \thu@def@term{ecosupervisor} % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % -% \begin{macro}{\cdegree} -% \begin{macro}{\edegree} % 学位中英文。 % \begin{macrocode} \thu@def@term{cdegree} \thu@def@term{edegree} % \end{macrocode} -% \end{macro} -% \end{macro} % -% \begin{macro}{\cdepartment} -% \begin{macro}{\edepartment} % 院系中英文名称。 % \begin{macrocode} \thu@def@term{cdepartment} -\def\caffil{% for compatibility - \ClassWarning{thuthesis} - {'\string\caffil' is deprecated, please use '\string\cdepartment' instead.}{}% - \cdepartment} \thu@def@term{edepartment} -\def\eaffil{% for compability - \ClassWarning{thuthesis} - {'\string\eaffil' is deprecated, please use '\string\edepartment' instead.}{}% - \edepartment} % \end{macrocode} -% \end{macro} -% \end{macro} % -% \begin{macro}{\cmajor} -% \begin{macro}{\emajor} % 学位中英文名称。 % \changes{v2.5}{2006/05/20}{院系和专业分别改名用 department 和 major,代替原来 % 的 affil 和 subject。} % \begin{macrocode} \thu@def@term{cmajor} -\def\csubject{% for compatibility - \ClassWarning{thuthesis} - {'\string\csubject' is deprecated, please use '\string\cmajor' instead.}{}% - \cmajor} \thu@def@term{emajor} -\def\esubject{%for compability - \ClassWarning{thuthesis} - {'\string\esubject' is deprecated, please use '\string\emajor' instead.}{}% - \emajor} % \end{macrocode} -% \end{macro} -% \end{macro} % -% \begin{macro}{\cdate} -% \begin{macro}{\edate} % 论文成文日期。 % \begin{macrocode} \thu@def@term{cdate} \thu@def@term{edate} % \end{macrocode} -% \end{macro} -% \end{macro} % -% \begin{macro}{\id} -% \begin{macro}{\udc} -% \begin{macro}{\catalognumber} -% \begin{macro}{\cfirstdiscipline} -% \begin{macro}{\cseconddiscipline} -% \begin{macro}{\postdoctordate} % 博士后专用封面参数。 % \begin{macrocode} \thu@def@term{id} @@ -2303,16 +2364,10 @@ \thu@def@term{cfirstdiscipline} \thu@def@term{cseconddiscipline} \thu@def@term{postdoctordate} +\thu@def@term{postdocstartdate} +\thu@def@term{postdocenddate} % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % -% \begin{environment}{cabstract} -% \begin{environment}{eabstract} % 摘要最好以环境的形式出现(否则命令的形式会导致开始结束的括号距离太远,我不喜 % 欢),这就必须让环境能够自己保存内容留待以后使用。使用 \pkg{environ} 的 % \cs{Collect@Body} 来实现。 @@ -2324,8 +2379,6 @@ \newcommand{\thu@@eabstract}[1]{\long\gdef\thu@eabstract{#1}} \newenvironment{eabstract}{\Collect@Body\thu@@eabstract}{} % \end{macrocode} -% \end{environment} -% \end{environment} % % \begin{macro}{\thu@parse@keywords} % 不同论文格式关键词之间的分割不太相同,我们用 \cs{ckeywords} 和 @@ -2344,8 +2397,6 @@ \expandafter\csname thu@#1\expandafter\endcsname\expandafter{\reserved@a}}}} % \end{macrocode} % \end{macro} -% \begin{macro}{\ckeywords} -% \begin{macro}{\ekeywords} % 利用 \cs{thu@parse@keywords} 来定义,内部通过 \cs{thu@ckeywords} 和 % \cs{thu@ekeywords} 来引用。 % \changes{v3.1}{2007/06/16}{增强的关键词命令。} @@ -2353,8 +2404,6 @@ \thu@parse@keywords{ckeywords} \thu@parse@keywords{ekeywords} % \end{macrocode} -% \end{macro} -% \end{macro} % % \begin{macro}{\thusetup} % \changes{v5.1.0}{2015/12/26}{通过 \cs{thusetup} 统一设置封面信息。} @@ -2365,7 +2414,6 @@ % 调用,所以此命令需要在 \cs{makecover} 之前被调用。 % \begin{macrocode} \def\thusetup{\kvsetkeys{thu}} -%</cls> % \end{macrocode} % \end{macro} % @@ -2384,11 +2432,8 @@ % \changes{v5.3.0}{2016/03/11}{更新到研究生院 2016.3 指南。} % 定义封面用到的各种文字。 % \begin{macrocode} -%<*cfg> \def\thu@ckeywords@separator{;} \def\thu@ekeywords@separator{;} -\def\thu@catalog@number@title{分类号} -\def\thu@id@title{编号} \def\thu@title@sep{:} \ifthu@postdoctor \def\thu@secretlevel{密级} @@ -2397,7 +2442,6 @@ \fi \def\thu@secretyear{\the\year} \def\thu@schoolname{清华大学} -\def\thu@postdoctor@report@title{博士后研究报告} \def\thu@bachelor@subtitle{综合论文训练} \def\thu@bachelor@title@pre{题目} \def\thu@postdoctor@date@title{研究起止日期} @@ -2436,7 +2480,7 @@ \fi \def\thu@cosuper@title{% \ifthu@doctor 联合导师\else \ifthu@master 联合指导教师\fi\fi} -\cdate{\ifthu@bachelor\CJK@todaysmall\else\CJK@todaybig@short\fi} +\cdate{\ifthu@bachelor\CJK@todaysmall\else\ifthu@postdoctor\CJK@todaysmall@short\else\CJK@todaybig@short\fi\fi} \edate{\ifcase \month \or January\or February\or March\or April\or May% \or June\or July \or August\or September\or October\or November \or December\fi\unskip,\ \ \the\year} @@ -2465,7 +2509,6 @@ \newcommand{\thu@frontdate}{% 日\ifthu@bachelor\hspace{1em}\else\hspace{2em}\fi 期:} \newcommand{\thu@ckeywords@title}{关键词:} -%</cfg> % \end{macrocode} % % @@ -2483,67 +2526,80 @@ % \changes{v4.7}{2011/11/28}{硕士中文封面不再需要英文标题。} % \changes{v4.7}{2012/05/30}{本科生题目下划线长度自动适应字数。} % \changes{v5.1.0}{2015/12/27}{利用 \env{CJKfilltwosides} 优化封面排版。} +% \changes{v5.5.0}{2019/01/08}{修正博士后封面的格式。} % % \begin{macrocode} -%<*cls> \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}}} \newlength{\thu@title@width} -\ifxetex % todo: ugly codes - \newcommand{\thu@put@title}[2][\thu@title@width]{% +\newcommand{\thu@put@title}[2][\thu@title@width]{% \begin{CJKfilltwosides}[b]{#1}#2\end{CJKfilltwosides}} -\else - \newcommand{\thu@put@title}[2][\thu@title@width]{% - \begin{CJKfilltwosides}{#1}#2\end{CJKfilltwosides}} -\fi \def\thu@first@titlepage{% \ifthu@postdoctor\thu@first@titlepage@postdoctor\else\thu@first@titlepage@other\fi} -\newcommand{\thu@first@titlepage@postdoctor}{ - \begin{center} - \setlength{\thu@title@width}{3em} - \vspace*{0.7cm} - \begingroup\wuhao[1.5]% - \thu@put@title{\thu@catalog@number@title}\thu@underline\thu@catalognumber\hfill% - \thu@put@title{\thu@secretlevel}% - \expandafter\thu@underline\ifthu@secret\thu@secret@content\else\relax\fi\par - \thu@put@title{U D C}\thu@underline\thu@udc\hfill% - \thu@put@title{\thu@id@title}\thu@underline\thu@id\par\vskip3cm\endgroup - \begingroup\heiti - {\xiaochu\ziju{1}\thu@schoolname}\par\vskip2cm - {\xiaoyi\ziju{1}\thu@postdoctor@report@title}\par\vskip3cm - {\sanhao[1.5]\thu@ctitle}\par\vskip2cm - {\xiaoer\thu@cauthor} - \endgroup - \par\vskip3cm - {\xiaosan[1.5]\ziju{1}\thu@schoolname\par\vskip0.5em\CJK@todaysmall@short} - \end{center} +\newcommand\thu@first@titlepage@postdoctor{% + \begin{center}% + \setlength{\thu@title@width}{3.5em}% + \renewcommand\ULthickness{0.7pt}% + \vspace*{0.35cm}% + {\sihao[2.6]% + \thu@put@title{分类号}\thu@underline[3.7cm]{\thu@catalognumber}\hfill + 密级\thu@underline[3.7cm]{\ifthu@secret\thu@secret@content\fi}\par + \thu@put@title{U D C}\thu@underline[3.7cm]{\thu@udc}\hfill + 编号\thu@underline[3.7cm]{\thu@id}\par + }% + \vskip 3.15cm% + {\sffamily\bfseries\xiaoer[2.6]% + {\ziju{1.5}\thu@schoolname\par}% + {\ziju{0.5}博士后研究工作报告\par}% + }% + \vskip 0.2cm% + \parbox[t][4.0cm][c]{\textwidth}{% + \centering\sihao[3.46]\CJKunderline*[depth=1em]{\thu@ctitle}\par + }\par + \vskip 0.4cm% + {\xiaosi\thu@cauthor\par}% + \vskip 1.4cm% + {\xiaosi[1.58]\xeCJKsetup{underline/depth=0.9em}% + 工作完成日期\quad\thu@CJKunderline[5.9cm]{\thu@postdoctordate}\par + \vskip 0.55cm% + 报告提交日期\quad\thu@CJKunderline[5.9cm]{\thu@cdate}\par + }% + \vskip 0.45cm% + {\xiaosi[2]{\ziju{1}\thu@schoolname}\quad (北京)\par}% + \vskip 0.25cm% + {\xiaosi[2]\thu@cdate\par}% + \end{center}% \cleardoublepage - \begin{center} - \vspace*{2cm} - {\sihao\heiti\thu@ctitle\par\thu@etitle}\par - \parbox[t][7cm][b]{\textwidth-6cm}{\sihao[1.5]% - \setlength{\thu@title@width}{11em} - \setlength{\extrarowheight}{6pt} - \ifxetex % todo: ugly codes - \begin{tabular}{p{\thu@title@width}@{}l@{\extracolsep{8pt}}l} - \else - \begin{tabular}{p{\thu@title@width}l@{}l} - \fi - \thu@put@title{\thu@author@title} - & \thu@title@sep - & \thu@cauthor \\ - \thu@put@title{\thu@postdoctor@first@discipline@title} - & \thu@title@sep - & \thu@cfirstdiscipline\\ - \thu@put@title{\thu@postdoctor@second@discipline@title} - & \thu@title@sep - & \thu@cseconddiscipline\\ - \thu@put@title{\thu@supervisor@title} - & \thu@title@sep - & \thu@csupervisor\\ - \end{tabular}} - \vskip2cm - {\sihao\thu@postdoctor@date@title\hskip1em\underline\thu@postdoctordate} - \end{center}} + \begin{center}% + \vspace*{1.5cm}% + \parbox[t][3cm][c]{\textwidth}{% + \centering\sanhao[1.95]\thu@ctitle\par + }\par + \vskip 0.15cm% + \parbox[t][3cm][c]{\textwidth}{% + \centering\sihao[1.36]\thu@etitle\par + }\par + \vskip 0.4cm% + {\xiaosi[2.6]% + \setlength{\thu@title@width}{11em}% + \begin{tabular}{l@{\quad}l}% + \thu@put@title{博士后姓名} & \thu@cauthor \\ + \thu@put@title{流动站(一级学科)名称} & \thu@cfirstdiscipline \\ + \thu@put@title{专\quad{}业(二级学科)名称} & \thu@cseconddiscipline \\ + \end{tabular}\par + }% + \vskip 2.7cm% + {\xiaosi[2.6]% + 研究工作起始时间\quad\thu@postdocstartdate\par + \vskip 0.1cm% + 研究工作期满时间\quad\thu@postdocenddate\par + }% + \vskip 2.1cm% + {\xiaosi[2.6]\thu@schoolname{}人事部(北京)\par}% + \vskip 0.6cm% + {\wuhao\thu@cdate\par}% + \end{center}% +} \newcommand{\thu@first@titlepage@other}{ \begin{center} \vspace*{-1.6cm} @@ -2551,7 +2607,7 @@ \ifthu@secret{\heiti\sanhao\thu@secretlevel\thu@secret@content}\else\rule{1cm}{0cm}\fi} \ifthu@bachelor \vskip0.65cm - {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu@schoolname\else\includegraphics{tsinghua}\fi} + {\ifcsname lishu\endcsname\yihao\lishu\ziju{0.5}\thu@schoolname\else\includegraphics{tsinghua.pdf}\fi} \par\vskip1.5cm {\xiaochu\heiti\ziju{0.5}\textbf\thu@bachelor@subtitle} \vskip2.2cm\hskip0.8cm @@ -2560,11 +2616,7 @@ \ignorespaces\yihao[1.51]% \renewcommand{\CJKunderlinebasesep}{0.25cm}% \renewcommand{\ULthickness}{1.3pt}% - \ifxetex - \xeCJKsetup{underline/format=\color{black}}% - \else - \def\CJKunderlinecolor{\color{black}}% - \fi + \xeCJKsetup{underline/format=\color{black}}% \CJKunderline*{\thu@ctitle}}% \vskip1.3cm \else @@ -2599,11 +2651,7 @@ \hspace*{1.9cm} \setlength{\thu@title@width}{4em} \setlength{\extrarowheight}{6pt} - \ifxetex % todo: ugly codes - \begin{tabular}{p{\thu@title@width}@{}l@{\extracolsep{8pt}}l} - \else - \begin{tabular}{p{\thu@title@width}l@{}l} - \fi + \begin{tabular}{p{\thu@title@width}@{}l@{\extracolsep{8pt}}l} \thu@put@title{\thu@department@title} & \thu@title@sep & \thu@cdepartment\\ \thu@put@title{\thu@major@title} & \thu@title@sep @@ -2624,11 +2672,7 @@ \begin{center}\fangsong \setlength{\thu@title@width}{5em} \setlength{\extrarowheight}{4pt} - \ifxetex % todo: ugly codes - \begin{tabular}{p{\thu@title@width}@{}c@{\extracolsep{8pt}}l} - \else - \begin{tabular}{p{\thu@title@width}c@{\extracolsep{4pt}}l} - \fi + \begin{tabular}{p{\thu@title@width}@{}c@{\extracolsep{8pt}}l} \thu@put@title{\thu@department@title} & \thu@title@sep & {\ziju{0.1875}\thu@cdepartment}\\ \thu@put@title{\thu@major@title} & \thu@title@sep @@ -2666,7 +2710,6 @@ \songti\thu@cdate} \end{center} \end{center}} % end of titlepage -%</cls> % \end{macrocode} % \end{macro} % @@ -2676,12 +2719,9 @@ % \changes{v4.7}{2011/11/28}{硕士生新增英文封面。} % 研究生论文使用。 % \begin{macrocode} -%<*cfg> \def\thu@master@art{Master of Arts} \def\thu@master@sci{Master of Science} \def\thu@doctor@phi{Doctor of Philosophy} -%</cfg> -%<*cls> \newcommand{\thu@engcover}{% \newif\ifthu@professional\thu@professionalfalse \ifthu@master @@ -2785,11 +2825,22 @@ \def\makecover{% \thu@setup@pdfinfo\thu@makecover} \def\thu@setup@pdfinfo{% - \hypersetup{% - pdftitle={\thu@ctitle}, - pdfauthor={\thu@cauthor}, - pdfsubject={\thu@cdegree}, - pdfkeywords={\thu@ckeywords}, + \ifthu@chinese + \hypersetup{ + pdftitle = \thu@ctitle, + pdfauthor = \thu@cauthor, + pdfsubject = \thu@cdegree, + pdfkeywords = \thu@ckeywords, + }% + \else + \hypersetup{ + pdftitle = \thu@etitle, + pdfauthor = \thu@eauthor, + pdfsubject = \thu@edegree, + pdfkeywords = \thu@ekeywords, + }% + \fi + \hypersetup{ pdfcreator={\thuthesis-v\version}}} \NewDocumentCommand{\thu@makecover}{o}{ \phantomsection @@ -2849,7 +2900,6 @@ \normalsize \thu@makeabstract \let\@tabular\thu@tabular} -%</cls> % \end{macrocode} % \end{macro} % @@ -2859,7 +2909,6 @@ % \begin{macro}{\thu@put@keywords} % 排版关键字。 % \begin{macrocode} -%<*cls> \newbox\thu@kw \newcommand\thu@put@keywords[2]{% \begingroup @@ -2881,6 +2930,7 @@ % \begin{macrocode} \newcommand{\thu@makeabstract}{% \ifthu@bachelor\clearpage\else\cleardoublepage\fi + \thu@setchinese \thu@chapter*[]{\cabstractname} % no tocline \ifthu@bachelor \pagestyle{thu@plain} @@ -2910,6 +2960,7 @@ % 非常怪异:虽然正文前的封面部分为右开,但是英文摘要要跟中文摘要连 % 续。\changes{v2.5.1}{2006/05/28}{研究生封面英文摘要连续。} % \begin{macrocode} + \thu@setenglish \thu@chapter*[]{\eabstractname} % no tocline % \end{macrocode} % @@ -2931,8 +2982,9 @@ % \begin{macrocode} \ifthu@doctor\vfill\else\vskip12bp\fi \thu@put@keywords{% - \textbf{\ifthu@bachelor Keywords:\else Key Words:\fi\enskip}}{\thu@ekeywords}} -%</cls> + \textbf{\ifthu@bachelor Keywords:\else Key Words:\fi\enskip}}{\thu@ekeywords}% + \thu@setdefaultlanguage +} % \end{macrocode} % \end{macro} % @@ -2944,10 +2996,6 @@ % \changes{v2.4}{2006/04/14}{为主要符号表环境增加一个可选参数,调节符号列的宽度。} % \changes{v5.2.1}{2016/01/11}{利用 \pkg{enumitem} 改造环境定义,更直观。} % \begin{macrocode} -%<*cfg> -\newcommand{\thu@denotation@name}{主要符号对照表} -%</cfg> -%<*cls> \newenvironment{denotation}[1][2.5cm]{% \thu@chapter*[]{\thu@denotation@name} % no tocline \vskip-30bp\xiaosi[1.6]\begin{thu@denotation}[labelwidth=#1] @@ -2965,7 +3013,6 @@ labelsep*=0.5cm, itemindent=0pt, } -%</cls> % \end{macrocode} % \end{environment} % @@ -2977,16 +3024,13 @@ % 支持扫描文件替换。 % \changes{v2.4}{2006/04/14}{调整\textbf{致谢}等中间的距离。} % \begin{macrocode} -%<*cfg> -\newcommand{\thu@ackname}{致\hspace{1em}谢} -\newcommand{\thu@declarename}{声\hspace{1em}明} +\newcommand\thu@declarename{声\hspace{\ccwd}明} \newcommand{\thu@declaretext}{本人郑重声明:所呈交的学位论文,是本人在导师指导下 ,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论 文的研究成果不包含任何他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的 其他个人和集体,均已在文中以明确方式标明。} \newcommand{\thu@signature}{签\hspace{1em}名:} \newcommand{\thu@backdate}{日\hspace{1em}期:} -%</cfg> % \end{macrocode} % % \changes{v2.0}{2005/12/19}{将致谢定义为一个环境更合适,里面也不用像以前段首需 @@ -3002,9 +3046,8 @@ % \changes{v4.5.2}{2010/09/19}{研究生论文的致谢和声明终于分开了。} % \changes{v5.2.1}{2016/01/11}{用 \env{acknowledgement} 替换 \env{ack}。} % \begin{macrocode} -%<*cls> \NewDocumentEnvironment{acknowledgement}{o}{% - \thu@chapter*{\thu@ackname} + \thu@chapter*{\thu@ack@name} } % \end{macrocode} % @@ -3033,7 +3076,6 @@ % \begin{macrocode} \let\ack\acknowledgement \let\endack\endacknowledgement -%</cls> % \end{macrocode} % \end{environment} % @@ -3051,7 +3093,6 @@ % \changes{v4.5.1}{2009/01/06}{更优雅的插图/表格索引,避免跟 \pkg{caption} 包冲 % 突。\cs{thu@listof} 相应修改。} % \begin{macrocode} -%<*cls> \def\thu@starttoc#1{% #1: float type, prepend type name in \listof*** entry. \let\oldnumberline\numberline \def\numberline##1{\oldnumberline{\csname #1name\endcsname\hskip.4em ##1}} @@ -3103,7 +3144,6 @@ % \begin{macrocode} \newcommand\listofequations{\thu@listof{equation}} \let\l@equation\l@figure -%</cls> % \end{macrocode} % \end{macro} % \end{macro} @@ -3119,12 +3159,10 @@ % \changes{v5.0.0}{2015/11/23}{用 \cs{inlinecite} 替换 \cs{onlinecite}。为保证兼 % 容性,\cs{onlinecite} 会保留。} % \begin{macrocode} -%<*cls> \newcommand\bibstyle@inline{\bibpunct{[}{]}{,}{n}{,}{,}} \DeclareRobustCommand\inlinecite{\@inlinecite} \def\@inlinecite#1{\begingroup\let\@cite\NAT@citenum\citep{#1}\endgroup} \let\onlinecite\inlinecite -%</cls> % \end{macrocode} % \end{macro} % @@ -3132,25 +3170,6 @@ % 行距采用固定值 16 磅,段前空 3 磅,段后空 0 磅。 % 本科生要求固定行距 17pt,段前后间距 3pt。 % -% \begin{macro}{\thumasterbib} -% \begin{macro}{\thuphdbib} -% 本科生和研究生模板要求外文硕士论文参考文献显示``[Master Thesis]'',而博士模板 -% 则于 2007 年冬要求显示为``[M]''。对应的外文博士论文参考文献分别显示为``[Phd -% Thesis]''和``[D]''。 -% 研究生写作指南(201109)要求: -% 中文硕士学位论文标注``[硕士学位论文]'', -% 中文博士学位论文标注``[博士学位论文]'',外文学位论文标注``[D]''。 -% 本科生写作指南未指定,参考文献著录格式文档中对中外文学位论文都标注``[D]''。 -% \changes{v4.7}{2012/05/29}{修改两个宏使其对应不同的中文论文需求。} -% \begin{macrocode} -%<*cfg> -\def\thumasterbib{\ifthu@bachelor D\else 硕士学位论文\fi} -\def\thuphdbib{\ifthu@bachelor D\else 博士学位论文\fi} -%</cfg> -% \end{macrocode} -% \end{macro} -% \end{macro} -% % 复用 \pkg{natbib} 的 \texttt{thebibliography} 环境,调整距离。 % \changes{v2.4}{2006/04/15}{参考文献间距调小一点,label 长度增加一点,以便让超过 % 100 的参考文献更好地对齐。} @@ -3159,7 +3178,6 @@ % \changes{v5.4.0}{2017/12/03}{基于 \pkg{natbib} 的环境调整距离兼容性更好。} % \changes{v5.4.4}{2018/04/14}{参考文献标号左对齐。} % \begin{macrocode} -%<*cls> \renewcommand\bibsection{\thu@chapter*{\bibname}} \renewcommand\bibfont{\ifthu@bachelor\wuhao[1.619]\else\wuhao[1.5]\fi} \setlength\bibhang{2\ccwd} @@ -3234,7 +3252,6 @@ }{% \def@NAT@last@yr{-\NAT@penalty}% }{}{} -%</cls> % \end{macrocode} % % \subsection{附录} @@ -3242,7 +3259,6 @@ % \begin{environment}{appendix} % 主要给本科做外文翻译用。 % \begin{macrocode} -%<*cls> \let\thu@appendix\appendix \renewenvironment{appendix}{% \let\title\thu@appendix@title @@ -3271,7 +3287,6 @@ \newlist{translationbib}{enumerate}{1} \setlist[translationbib]{label=[\arabic*],align=left,nosep,itemsep=6bp, leftmargin=10mm,labelsep=!,before=\vspace{0.5\baselineskip}\wuhao[1.3]} -%</cls> % \end{macrocode} % \end{environment} % @@ -3287,18 +3302,6 @@ % \changes{v4.6}{2011/05/02}{支持可选参数,自己定义简历章节标题。} % 个人简历发表文章等。 % \begin{macrocode} -%<*cfg> -\ifthu@bachelor - \newcommand{\thu@resume@title}{在学期间参加课题的研究成果} -\else - \ifthu@postdoctor - \newcommand{\thu@resume@title}{个人简历、发表的学术论文与科研成果} - \else - \newcommand{\thu@resume@title}{个人简历、在学期间发表的学术论文与研究成果} - \fi -\fi -%</cfg> -%<*cls> \newenvironment{resume}[1][\thu@resume@title]{% \thu@chapter*{#1}}{} % \end{macrocode} @@ -3345,10 +3348,27 @@ % 用 \cs{publicationskip}。 % \begin{macrocode} \def\publicationskip{\bigskip\bigskip} -%</cls> % \end{macrocode} % \end{macro} % +% \subsection{其他宏包的设置} +% +% 这些宏包并非格式要求,但是为了方便同学们使用,在这里进行简单设置。 +% \begin{macrocode} +\newcommand\thu@atendpackage{\csname ctex_at_end_package:nn\endcsname} +% \end{macrocode} +% +% \subsubsection{\pkg{nomencl} 宏包} +% +% \changes{v5.5.0}{2018/12/09}{增加 \pkg{nomencl} 宏包的支持。} +% \begin{macrocode} +\thu@atendpackage{nomencl}{ + \let\nomname\thu@denotation@name + \def\thenomenclature{\begin{denotation}[\nom@tempdim]} + \def\endthenomenclature{\end{denotation}} +} +% \end{macrocode} +% % \subsection{书脊} % \label{sec:shuji} % \begin{macro}{\shuji} @@ -3356,13 +3376,11 @@ % \changes{v4.5}{2009/01/04}{简化代码,同时支持 \XeLaTeX。} % \changes{v5.0.0}{2015/12/21}{扩展 \cs{shuji}\oarg{标题}\oarg{作者}。} % \begin{macrocode} -%<*cls> \NewDocumentCommand{\shuji}{O{\thu@ctitle} O{\thu@cauthor}}{% \newpage\thispagestyle{empty}% - \fangsong\ifxetex\addCJKfontfeatures*{RawFeature={vertical:}}\fi + \fangsong\addCJKfontfeatures*{RawFeature={vertical:}} \xiaosan\ziju{0.4}% \noindent\hfill\rotatebox[origin=lt]{-90}{\makebox[\textheight]{#1\hfill#2}}} -%</cls> % \end{macrocode} % \end{macro} % @@ -3373,8 +3391,6 @@ % 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。 % \changes{v2.5}{2006/05/13}{不用 \cs{CJKcaption},在导言区直接引入配置文件。} % \begin{macrocode} -%<*cls> -\AtEndOfClass{\input{thuthesis.cfg}} \AtEndOfClass{\sloppy} %</cls> % \end{macrocode} @@ -3385,6 +3401,7 @@ %<*dtx-style> \ProvidesPackage{dtx-style} \RequirePackage{hypdoc} +\RequirePackage{ifthen} \RequirePackage[UTF8,scheme=chinese]{ctex} \RequirePackage{newpxtext} \RequirePackage{newpxmath} @@ -3400,6 +3417,10 @@ \RequirePackage{etoolbox} \RequirePackage{metalogo} +\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{% + \xeCJKsetwidth{‘’“”}{1em} +}{} + \colorlet{thu@macro}{blue!60!black} \colorlet{thu@env}{blue!70!black} \colorlet{thu@option}{purple} |