diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx | 652 |
1 files changed, 323 insertions, 329 deletions
diff --git a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx index e2b9189567d..fe0c3556db4 100644 --- a/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx +++ b/Master/texmf-dist/source/latex/thuthesis/thuthesis.dtx @@ -17,7 +17,7 @@ % \iffalse %<*driver> \def\thudate{\the\year/\the\month/\the\day} -\def\thuversion{5.2.1} +\def\thuversion{5.2.2} \ProvidesFile{thuthesis.dtx}[{\thudate} {\thuversion} Tsinghua University Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -76,23 +76,23 @@ % \changes{v1.0}{2005/07/06}{Please refer to ``Bao--Pan'' version.} % \changes{v1.1}{2005/11/03}{Initial version, migrate from the old ``Bao--Pan'' % version. Make the template a class instead of package.} -% \changes{v1.2}{2005/11/04}{Remove \pkg*{fancyref}; Remove \pkg*{ucite} and implement -% \cs{onlinecite}; use package \pkg*{arial} or \pkg*{helvet} selectively.} -% \changes{v1.3}{2005/11/14}{Replace \pkg*{subfigure} with \pkg*{subfig}, replace \pkg*{caption2} -% with \pkg*{caption}, add details about using figure are in the example.} +% \changes{v1.2}{2005/11/04}{Remove \pkg{fancyref}; Remove \pkg{ucite} and implement +% \cs{onlinecite}; use package \pkg{arial} or \pkg{helvet} selectively.} +% \changes{v1.3}{2005/11/14}{Replace \pkg{subfigure} with \pkg{subfig}, replace \pkg{caption2} +% with \pkg{caption}, add details about using figure are in the example.} % \changes{v1.4rc1}{2005/11/20}{I do not know why \cs{thu@authorizationaddon} does not work % now for v1.3, while it's fine in v1.2. Temporarily, I remove the directive % :(. There might be better solution. Other changes: add \option{config} option to -% subfig to be compatible with subfigure. add \pkg*{courier} package for tt font.} +% subfig to be compatible with subfigure. add \pkg{courier} package for tt font.} % \changes{v1.4}{2005/12/05}{Fix the problem of \textbf{chinese}, which is % because both CJK and everysel redefine the \cs{selectfont}. So, a not so good -% workaround is merge them up. Add \file*{shuji.tex} example. Add \cs{pozhehao} command.} +% workaround is merge them up. Add \file{shuji.tex} example. Add \cs{pozhehao} command.} % \changes{v2.1}{2006/02/27}{Add support to bachelor thesis.} -% \changes{v2.1}{2006/03/01}{Remove \pkg*{fancyhdr} and \pkg*{geometry}.} +% \changes{v2.1}{2006/03/01}{Remove \pkg{fancyhdr} and \pkg{geometry}.} % \changes{v2.1}{2006/03/01}{Redefine footnote marks.} -% \changes{v2.1}{2006/03/01}{Replace \file*{thubib.bst} with \file*{chinesebst.bst}.} -% \changes{v2.1}{2006/03/02}{Merge the modification of \pkg*{ntheorem}.} -% \changes{v2.1}{2006/03/02}{Remove \pkg*{footmisc} and refine the document.} +% \changes{v2.1}{2006/03/01}{Replace \file{thubib.bst} with \file{chinesebst.bst}.} +% \changes{v2.1}{2006/03/02}{Merge the modification of \pkg{ntheorem}.} +% \changes{v2.1}{2006/03/02}{Remove \pkg{footmisc} and refine the document.} % \changes{v2.1}{2006/03/03}{Work very hard on the document.} % \changes{v2.1}{2006/03/03}{Add \cs{checklab} code to reduce ``unresolved labels'' warning} % \changes{v2.2}{2006/03/26}{Adjust margins. How bad it is to simulate MS WORD!.} @@ -114,7 +114,7 @@ % \changes{v2.4}{2006/04/14}{自动隐藏密级为内部时后面的五角星。} % \changes{v2.4}{2006/04/14}{增加“注释 (Remark)”环境。} % \changes{v2.4}{2006/04/14}{压缩 item 之间的距离。} -% \changes{v2.4}{2006/04/14}{\file*{thubib.bst} 文献标题取消自动小写。} +% \changes{v2.4}{2006/04/14}{\file{thubib.bst} 文献标题取消自动小写。} % \changes{v2.4}{2006/04/14}{中文参考文献取消 In: Proceedings。} % \changes{v2.4}{2006/04/14}{英文文参考文献调整 In: editor, Proceedings。} % \changes{v2.4}{2006/04/14}{参考文献为学位论文时,加方括号,作者后面为实心点。} @@ -128,24 +128,25 @@ % \changes{v2.4.2}{2006/04/18}{去掉参考文献第二个作者后面烦人的逗号。} % \changes{v2.5}{2006/05/19}{对本科论文进行大幅度的重写,因为教务处修改了格式要求。} % \changes{v2.5}{2006/05/19}{重新整理代码,使其布局更易读。} -% \changes{v2.5.1}{2006/05/24}{如果选项设置了 dvips,但是用 pdflatex 编译,报错。} +% \changes{v2.5.1}{2006/05/24}{如果选项设置了 dvips,但是用 PDF\LaTeX\ 编译,报错。} % \changes{v2.5.1}{2006/05/24}{根据教务处的新要求调整附录部分。} % \changes{v2.5.1}{2006/05/25}{参考文献中杂志文章如果没有卷号,那么页码直接跟在 -% 年份后面,并用句点分割。在 \file*{thubib.bst} 中增加 output.year 函数。} +% 年份后面,并用句点分割。在 \file{thubib.bst} 中增加 output.year 函数。} % \changes{v2.6}{2006/06/09}{增加 dvipdfm 选项。} -% \changes{v2.6.1}{2006/06/16}{取消 \file*{thubib.bst} 中 inbook 类 volume 后的页 +% \changes{v2.6.1}{2006/06/16}{取消 \file{thubib.bst} 中 inbook 类 volume 后的页 % 码。} +% \changes{v2.6.2}{2006/06/18}{改正 groupmembers 的拼写错误。} % \changes{v3.0}{2007/05/12}{不用专门为本科论文生成“\textbf{提交}”版本了。} % \changes{v3.0}{2007/05/12}{没有了综合论文训练页面,很多本科论文专用命令就消失了。} % \changes{v4.4}{2008/05/12}{修复网址断字。} -% \changes{v4.5}{2008/01/03}{加入 XeTeX 支持,需要 \pkg*{xeCJK}。} -% \changes{v4.5}{2008/01/04}{彻底转向 UTF-8,并支持 xelatex。} +% \changes{v4.5}{2008/01/03}{加入 \XeTeX\ 支持,需要 \pkg{xeCJK}。} +% \changes{v4.5}{2008/01/04}{彻底转向 UTF-8,并支持 \XeLaTeX。} % \changes{v4.5}{2009/01/03}{增加 xetex, pdftex 选项。} % \changes{v4.6}{2011/04/27}{增加博士后文档部分。} % \changes{v4.6}{2011/10/22}{使用手册更新。} -% \changes{v4.7}{2012/06/12}{去掉 \pkg*{hypernat} 依赖,\pkg*{hyperref} 和 \pkg*{natbib} 可以很好配合了。} -% \changes{v4.8}{2013/03/02}{no need to load \pkg*{indentfirst} directly since we use \pkg*{ctex}.} -% \changes{v4.8}{2013/03/02}{内部调用 ctex 宏包,自动检测编译引擎。} +% \changes{v4.7}{2012/06/12}{去掉 \pkg{hypernat} 依赖,\pkg{hyperref} 和 \pkg{natbib} 可以很好配合了。} +% \changes{v4.8}{2013/03/02}{no need to load \pkg{indentfirst} directly since we use \pkg{ctex}.} +% \changes{v4.8}{2013/03/02}{内部调用 \pkg{ctex} 宏包,自动检测编译引擎。} % \changes{v4.8}{2013/03/04}{dvips method is deprecated. We ask their users to load it manually.} % \changes{v4.8}{2014/11/25}{好几年累积的一些更新,最重要的是切换到 \CTeX。} % @@ -211,13 +212,13 @@ % \label{sec:installation} % % \subsection{下载} -% \thuthesis{} 已经包含在主要的 \TeX{} 发行版中,一般不需要安装,阅读文档可以使 -% 用以下命令: +% \thuthesis{} 已经包含在主要的 \TeX{} 发行版中,一般不需要安装,可以利用发行版自 +% 带更新工具自动更新。阅读文档可以使用以下命令: % \begin{shell} % $ texdoc thuthesis % \end{shell} % -% 如果要自己安装,请继续阅读。 +% 如果要使用开发版,需自己安装,请继续阅读。 % \thuthesis{} 相关链接: % \begin{itemize} % \item 主页:\href{https://github.com/xueruini/thuthesis}{GitHub} @@ -235,13 +236,13 @@ % \toprule % {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule % \endfirsthead -% \hline +% \midrule % {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule % \endhead % \endfoot % \endlastfoot -% thuthesis.ins & 模板驱动文件 \\ -% thuthesis.dtx & 模板文档代码的混合文件\\ +% thuthesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\ +% thuthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule % thuthesis.cls & 模板类文件\\ % thuthesis.cfg & 模板配置文件\\ % ctex-fontset-thuthesis.def & 中文字体配置文件\\ @@ -282,7 +283,7 @@ % \note{默认的发行包中已经包含了所有文件,可以直接使用。如果对如何生成模板文件以 % 及模板文档不感兴趣,请跳过本小节。} % -% 模板解压缩后生成文件夹 \file{thuthesis-VERSION}\footnote{VERSION 为版本号。}, +% 模板解压缩后生成文件夹 \file{thuthesis-vX.Y.Z}\footnote{\texttt{vX.Y.Z} 为版本号。}, % 其中包括:模板源文件(\file{thuthesis.ins} 和 \file{thuthesis.dtx}),参考文献 % 样式 \file{thuthesis.bst},示例文档 % (\file{main.tex},\file{shuji.tex},\file{thuthesis.sty}\footnote{可能用到的包 @@ -292,7 +293,7 @@ % 板文件和配置文件(具体命令细节请参考 \file{README.md} 和 \file{Makefile}): % % \begin{shell} -% $ cd thuthesis-VERSION +% $ cd thuthesis-vX.Y.Z % # 生成 thuthesis.cls 和 thuthesis.cfg % $ latex thuthesis.ins % @@ -304,7 +305,7 @@ % $ xelatex thuthesis.dtx % 生成说明文档 thuthesis.pdf % \end{shell} % -% \subsubsection{xelatex} +% \subsubsection{\XeLaTeX} % \label{sec:xelatex} % 很多用户对 \LaTeX{} 命令执行的次数不太清楚,一个基本的原则是多次运行 \LaTeX{}命 % 令直至不再出现警告。下面给出生成示例文档的详细过程(\texttt{\#} 开头的行为注 @@ -320,7 +321,7 @@ % $ xelatex main % $ xelatex main # 此时生成完整的 pdf 文件 % \end{shell} -% Xe\TeX 最大的优势就是不再需要繁琐的字体配置。\thuthesis{} 通过 \pkg{xeCJK} 来控 +% \XeTeX\ 最大的优势就是不再需要繁琐的字体配置。\thuthesis{} 通过 \pkg{xeCJK} 来控 % 制中文字体和标点压缩。模板里默认用的是中易的六款免费字体(宋,黑,楷,仿宋,隶 % 书和幼圆),因学位论文需求不建议替换为其他字体。如果实在必要,可以通过定 % 制 \file{ctex-fontset-thuthesis.def} 文件中的字体自行替换。研究生一般用不到隶书 @@ -341,12 +342,12 @@ % $ dvipdfmx main % \end{shell} % -% \subsubsection{pdflatex} +% \subsubsection{PDF\LaTeX} % \label{sec:pdflatex} % 如果使用 PDF\LaTeX,按照第~\ref{sec:xelatex} 节的顺序执行即可,只是将命令中 -% xelatex 替换为 pdflatex。 +% \texttt{xelatex} 替换为 \texttt{pdflatex}。 % -% 需要注意的是 PDF\LaTeX\ 不能处理常见的 EPS 图形,需要先用 epstopdf 将其转化 +% 需要注意的是 PDF\LaTeX\ 不能处理常见的 EPS 图形,需要先用 \texttt{epstopdf} 将其转化 % 成 PDF。不过 PDF\LaTeX\ 增加了对 png,jpg 等标量图形的支持,比较方便。TeX Live % 自从 2010 版本起自动调用 \texttt{epstopdf} 将 EPS 图形转化为 PDF。 % @@ -374,7 +375,7 @@ % \end{shell} % % \thuthesis{} 的 Makefile 默认用 \texttt{latexmk} 调用 -% \texttt{xelatex} 编译,此外还支持采用 \texttt{xelatex}、\texttt{pdflatex} 和 +% \texttt{xelatex} 编译,此外还支持直接用 \texttt{xelatex}、\texttt{pdflatex} 和 % \texttt{dvipdfmx} 方式编译,如有需要可以修 % 改 \file{Makefile} 开头的参数设置或通过命令行传递参数(请参看 \file{README.md}), % 进一步还可以修改 \file{latexmkrc} 进行定制。 @@ -453,14 +454,22 @@ % \secretyear{2020} % \end{latex} % +% \DescribeOption{pifootnote} +% 是否使用 \pkg{pifont} 的带圈字符标记脚注编号。默认关闭,即使用\cs{textcircled} +% 命令,效果不太好,但是符合学校样式要求。不管使用哪种方式,一页的脚注建议控制 +% 在 9 个以内,否则大于 10的数字带圈的效果不太好。建议使用时打开此选项,脚注编号 +% 很漂亮,如下: +% \begin{latex} +% \documentclass[pifootnote]{thuthesis} +% \end{latex} % % \DescribeOption{openany} % \DescribeOption{openright} % 正规出版物的章节出现在奇数页,也就是右手边的页面,这就是 \option{openright},也 % 是 \thuthesis\ 的默认选项。在这种情况下,如果前一章的最后一页也是奇数,那么模板 % 会自动生成一个纯粹的空白页,很多人不是很习惯这种方式,而且学校的格式似乎更倾向 -% 于页面连续,那就是通常所说的 \option{openany}。\footnote{目前所有论文都 -% 是 \option{openany}。}这两个选项不用设置,\thuthesis{} 会根据当前论文类型自动选 +% 于页面连续,那就是通常所说的 \option{openany}\footnote{目前所有论文都 +% 是 \option{openany}。}。这两个选项不用设置,\thuthesis{} 会根据当前论文类型自动选 % 择。 % % \DescribeOption{arial} @@ -486,14 +495,15 @@ % \label{sec:font-config} % 正确配置中文字体是使用模板的第一步。模板调用 \CTeX\ 宏包,提供如下字体使用方式: % \begin{itemize} -% \item 基于传统 \pkg{CJK} 包,使用 latex、pdflatex 编译。 -% \item 基于 \pkg{xeCJK} 包,使用 xelatex 编译。(推荐方法) +% \item 基于传统 \pkg{CJK} 包,使用 \LaTeX、PDF\LaTeX\ 编译。 +% \item 基于 \pkg{xeCJK} 包,使用 \XeLaTeX\ 编译。(推荐方法) % \end{itemize} % -% 第一种方式的字体配置比较繁琐,建议使用 \emph{donated@newsmth} 制作的中文字体包 -% (自包含安装方法),请用户自行下载安装,此处不再赘述。本模板推荐使用第二种方法, -% 只要把所需字体放入系统字体文件夹(也可以指定自定义文件夹)即可。用户可以使用 -% \file{ctex-fontset-thuthesis.def} 文件配置所需字体。使用中易六种字体的配置如下: +% 第一种方式中文字体配置比较繁琐,建议使用 \CTeX\ 套装,已经自带中文字体配置。或 +% 者使用 \CTeX-Fonts 生成中文字体包,此处不再赘述。本模板推荐使用第二种方法,只要 +% 把所需字体放入系统字体文件夹(也可以指定自定义文件夹)即可。用户可以使 +% 用\file{ctex-fontset-thuthesis.def} 文件配置所需字体。使用中易六种字体的配置如 +% 下: % % \begin{latex} % \ProvidesFile{ctex-fontset-thuthesis.def} @@ -559,8 +569,11 @@ % % \myentry{字号} % \DescribeMacro{\chuhao} +% \DescribeMacro{\xiaochu} +% \DescribeMacro{\yihao} +% \DescribeMacro{\xiaoyi} % \DescribeMacro{\bahao} -% 等命令定义一组字体大小,分别为: +% 定义字体大小,分别为: % % \begin{center} % \begin{tabular}{llllll} @@ -576,7 +589,10 @@ % 是 \cs{dawu},模板已经设置好了。 % % \begin{latex} -% {\erhao 二号 \sanhao 三号 \sihao 四号 \qihao 七号} +% {\erhao 二号} +% {\sanhao[1.5] 三号} +% {\sihao 四号} +% {\qihao[2] 七号} % \end{latex} % % 也可以使用 \CTeX\ 定义的 \cs{zihao}\marg{num} 来切换字号,具体用法参看其文 @@ -590,7 +606,7 @@ % 盖前面的)。以 \texttt{c} 开头的命令跟中文相关,\texttt{e} 开头则为对应的英文。 % % \DescribeMacro{\thusetup} -% 用法与常见 \emph{key=value} 命令相同,如下: +% \cs{thusetup} 用法与常见 \emph{key=value} 命令相同,如下: % \begin{latex} % \thusetup{ % key1 = value1, @@ -881,7 +897,7 @@ % \DescribeMacro{\listofequations} % \DescribeMacro{\listofequations*} % \begin{center} -% \begin{tabular}{ll} +% \begin{longtable}{ll} % \toprule % {\heiti 用途} & {\heiti 命令} \\\midrule % 目录 & \cs{tableofcontents} \\\midrule @@ -891,7 +907,7 @@ % & \cs{listoftables*} \\\midrule % 公式索引 & \cs{listofequations} \\ % & \cs{listofequations*}\\\bottomrule -% \end{tabular} +% \end{longtable} % \end{center} % % \LaTeX{} 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出 @@ -1037,7 +1053,7 @@ % \item 伍晓明, 杨轶, 张宁欣, 等. 基于MEMS技术的集成铁电硅微麦克风. 中国集成电路, % 2003, 53:59-61. % \end{publications} -%% \end{latex} +% \end{latex} % % \DescribeEnv{achievements} % 研究成果用 \cs{researchitem}\{研究成果\} 开启,随后用 \env{achievements} 环 @@ -1199,7 +1215,7 @@ %<*cls> \hyphenation{Thu-Thesis} \def\thuthesis{\textsc{ThuThesis}} -\def\version{5.2.1} +\def\version{5.2.2} \RequirePackage{kvoptions} \SetupKeyvalOptions{ @@ -1207,8 +1223,9 @@ prefix=thu@, setkeys=\kvsetkeys} % \end{macrocode} +% % 用 \pkg{kvoptions} 的 key=value 方式来设置论文类型。 -% \changes{v5.0.0}{2015/12/13}{使用 \pkg*{kvoptions} 简化选项 type。} +% \changes{v5.0.0}{2015/12/13}{使用 \pkg{kvoptions} 简化选项 type。} % \begin{macrocode} \newif\ifthu@bachelor \newif\ifthu@master @@ -1220,7 +1237,6 @@ \thu@doctorfalse \thu@postdoctorfalse \expandafter\csname thu@#1true\endcsname} - \def\thu@deprecated@type@option{% \kvsetkeys{thu}{type=\CurrentOption} % for compatability. \ClassError{thuthesis}{Option '\CurrentOption' is deprecated, \MessageBreak @@ -1229,38 +1245,46 @@ \DeclareVoidOption{master}{\thu@deprecated@type@option} \DeclareVoidOption{doctor}{\thu@deprecated@type@option} \DeclareVoidOption{postdoctor}{\thu@deprecated@type@option} - +% \end{macrocode} +% +% 论文是否保密。 +% \begin{macrocode} \DeclareBoolOption{secret} % \end{macrocode} % -% 如果需要使用 arial 字体,请打开 [arial] 选项 +% 正文 Sans 字体是否使用 Arial 字体(默认打开)。 % \begin{macrocode} \DeclareBoolOption{arial} % \end{macrocode} % -% 目录中英文是否用 arial +% 目录中英文是否用 Arial 字体(默认关闭)。 % \begin{macrocode} \DeclareBoolOption{arialtoc} % \end{macrocode} % -% 章节标题中的英文是否用 arial +% 章节标题中的英文是否用 Arial 字体(默认打开)。 % \begin{macrocode} \DeclareBoolOption{arialtitle} % \end{macrocode} % -% \option{raggedbottom} 选项 +% \option{raggedbottom} 选项(默认打开) % \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} +% \end{macrocode} +% % 将选项传递给 \pkg{ctexbook}。 % \begin{macrocode} \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}} % \end{macrocode} % -% \changes{v2.5.1}{2006/05/24}{ft,研究生院目录要 times,而教务处要 arial。} +% \changes{v2.5.1}{2006/05/24}{研究生院目录要 times,而教务处要 arial。} % \changes{v2.5.1}{2006/05/26}{本科 openright,研究生 openany。} % \changes{v3.1}{2007/10/09}{本科的目录又不要 arial 字体了。} % \changes{v4.8}{2013/05/29}{添加 nocap 选项,恢复默认标题样式,模板会进一步定制。} @@ -1277,7 +1301,7 @@ \ProcessKeyvalOptions* % \end{macrocode} % -% 使用 XeTeX 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动 +% 使用 \XeTeX\ 引擎时,\pkg{fontspec} 宏包会被 \pkg{xeCJK} 自动 % 调用。传递给 \pkg{fontspec} 宏包 \option{no-math} 选项,避免部分数学符号字体自动调整为 CMR。 % 其他引擎下没有这个问题,这一行会被无视。 % \begin{macrocode} @@ -1309,6 +1333,7 @@ % % 引用的宏包和相应的定义。 % \begin{macrocode} +\RequirePackage{etoolbox} \RequirePackage{ifxetex} \RequirePackage{xparse} % \end{macrocode} @@ -1320,10 +1345,11 @@ % \end{macrocode} % % \pkg{newtx} 设置 Times New Roman,Helvetica。 -% \changes{v3.1}{2007/06/16}{replace \pkg*{mathptmx} with \pkg*{txfonts}.} -% \changes{v5.2.1}{2016/01/14}{使用 \pkg*{newtx} 替换 \pkg*{txfonts}。} +% \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}。 } % \begin{macrocode} -\RequirePackage{newtxtext} +\RequirePackage[defaultsups]{newtxtext} \RequirePackage{newtxmath} % \end{macrocode} % @@ -1351,25 +1377,32 @@ % \end{macrocode} % % 更好的列表环境。 -% \changes{v2.6.2}{2006/06/18}{去掉 \pkg*{paralist} 的 \option{newitem} 和 +% \changes{v2.6.2}{2006/06/18}{去掉 \pkg{paralist} 的 \option{newitem} 和 % \option{newenum} 选项,因为默认是打开的。} % \changes{v2.6.4}{2006/10/23}{增加 \option{neverdecrease} 选项。} % \changes{v5.0.0}{2012/12/13}{删除 \pkg{paralist} 选项。} +% \changes{v5.2.2}{2016/01/31}{利用 \pkg{environ} 的 \cs{Collect@Body}。} % \begin{macrocode} \RequirePackage[shortlabels]{enumitem} +\RequirePackage{environ} % \end{macrocode} % % 禁止 \LaTeX 自动调整多余的页面底部空白,并保持脚注仍然在底部。 % 脚注按页编号。 % \begin{macrocode} \ifthu@raggedbottom - \RequirePackage[bottom,perpage]{footmisc} + \RequirePackage[bottom,perpage,hang]{footmisc} \raggedbottom \else - \RequirePackage[perpage]{footmisc} + \RequirePackage[perpage,hang]{footmisc} \fi % \end{macrocode} % +% \begin{macrocode} +\ifthu@pifootnote + \RequirePackage{pifont} +\fi +% \end{macrocode} % 利用 \pkg{CJKfntef} 实现汉字的下划线和盒子内两段对齐,并可以避免 % \cs{makebox}\oarg{width}\oarg{s} 可能产生的 underful boxes。 % \begin{macrocode} @@ -1377,24 +1410,24 @@ % \end{macrocode} % % TODO:重置 \cs{baselinestretch},这个地方太诡异了。是古老版本留下来的,会影响 -% 封面部分的排班,应该优化一下。 +% 封面部分的排版,应该优化一下。 % \changes{v4.8}{2013/03/09}{reset baselinestretch after ctex's change.} % \begin{macrocode} \renewcommand{\baselinestretch}{1.0} % todo:? % \end{macrocode} % -% XeTeX 环境下独立配置,包括零对应的圆圈符号和字体。 +% \XeTeX\ 环境下独立配置,包括零对应的圆圈符号和字体。 % \begin{macrocode} \ifxetex \def\CJK@null{\kern\CJKnullspace\Unicode{48}{7}\kern\CJKnullspace} \defaultfontfeatures{Mapping=tex-text} % \end{macrocode} % 默认采用中易的六款免费字体。缺少上述字体的用户可以通过 -% \file{ctex-fontset-thuthesis.def} 文件自定义字体。非 XeTeX 环境下利用 +% \file{ctex-fontset-thuthesis.def} 文件自定义字体。非 \XeTeX\ 环境下利用 % \pkg{CJKspace} 来控制中英文之间的间距。 -% \changes{v4.8}{2013/05/28}{在 CJK 模式下用 \pkg*{CJKspace} 保留中英文间空格。} -% \changes{v5.0.0}{2015/04/17}{固定字体设置,同时改善与 ctex 兼容性。} -% \changes{v5.2.1}{2016/01/14}{使用 \pkg*{newtx} 字体。} +% \changes{v4.8}{2013/05/28}{在 CJK 模式下用 \pkg{CJKspace} 保留中英文间空格。} +% \changes{v5.0.0}{2015/04/17}{固定字体设置,同时改善与 \pkg{ctex} 兼容性。} +% \changes{v5.2.1}{2016/01/14}{使用 \pkg{newtx} 字体。} % \begin{macrocode} \IfFileExists{ctex-fontset-thuthesis.def}% {\ctexset{fontset=thuthesis}}% @@ -1408,7 +1441,7 @@ \ifthu@arial \IfFileExists{arial.sty}% {\RequirePackage{arial}}% - {\ClassWarning{thuthesis}{no arial.sty availiable!}} + {\ClassWarning{thuthesis}{arial.sty is not availiable!}} \fi \fi % \end{macrocode} @@ -1419,7 +1452,7 @@ % \end{macrocode} % % 表格控制 -% \changes{v2.6}{2006/06/09}{增加 \pkg*{longtable}。} +% \changes{v2.6}{2006/06/09}{增加 \pkg{longtable}。} % \begin{macrocode} \RequirePackage{array} \RequirePackage{longtable} @@ -1437,6 +1470,7 @@ % % 生成有书签的 pdf 及其开关,请结合 gbk2uni 避免书签乱码。 % \changes{v2.6}{2006/06/09}{去除 hyperref 选项,等待全局传递。} +% \changes{v5.2.2}{2016/01/25}{目录中标题和页码都是链接。} % \begin{macrocode} \RequirePackage{hyperref} \ifxetex @@ -1448,6 +1482,7 @@ CJKbookmarks=false} \fi \hypersetup{% + linktoc=all, bookmarksnumbered=true, bookmarksopen=true, bookmarksopenlevel=1, @@ -1475,7 +1510,7 @@ % \changes{v4.7}{2012/05/29}{修改本科生页脚间距与样例基本一致。} % \changes{v5.0.0}{2015/03/10}{不再将页面尺寸写入 dvi,因为已不支持 dvips, % 而该方案会使得在使用 tikzexternalize 时外部 PDF 图片 BBox 不对。} -% \changes{v5.0.0}{2015/12/14}{用 \pkg*{geometry} 简化设置。} +% \changes{v5.0.0}{2015/12/14}{用 \pkg{geometry} 简化设置。} % \begin{macrocode} \RequirePackage{geometry} \geometry{ @@ -1596,97 +1631,64 @@ \thu@choosefont{##1}{#2}}} % \end{macrocode} % \end{macro} +% % \begin{macro}{\chuhao} -% 初号 -% \begin{macrocode} -\thu@def@fontsize{chuhao}{42bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaochu} -% \begin{macrocode} -\thu@def@fontsize{xiaochu}{36bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\yihao} -% \begin{macrocode} -\thu@def@fontsize{yihao}{26bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaoyi} -% \begin{macrocode} -\thu@def@fontsize{xiaoyi}{24bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\erhao} -% \begin{macrocode} -\thu@def@fontsize{erhao}{22bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaoer} -% \begin{macrocode} -\thu@def@fontsize{xiaoer}{18bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\sanhao} -% \begin{macrocode} -\thu@def@fontsize{sanhao}{16bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaosan} -% \begin{macrocode} -\thu@def@fontsize{xiaosan}{15bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\sihao} -% \begin{macrocode} -\thu@def@fontsize{sihao}{14bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\banxiaosi} -% \begin{macrocode} -\thu@def@fontsize{banxiaosi}{13bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaosi} -% \begin{macrocode} -\thu@def@fontsize{xiaosi}{12bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\dawu} -% \begin{macrocode} -\thu@def@fontsize{dawu}{11bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\wuhao} -% \begin{macrocode} -\thu@def@fontsize{wuhao}{10.5bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaowu} -% \begin{macrocode} -\thu@def@fontsize{xiaowu}{9bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\liuhao} -% \begin{macrocode} -\thu@def@fontsize{liuhao}{7.5bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\xiaoliu} -% \begin{macrocode} -\thu@def@fontsize{xiaoliu}{6.5bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\qihao} -% \begin{macrocode} -\thu@def@fontsize{qihao}{5.5bp} -% \end{macrocode} -% \end{macro} % \begin{macro}{\bahao} +% 一组字号定义。TODO:用 \cs{zihao} 替代。 % \begin{macrocode} +\thu@def@fontsize{chuhao}{42bp} +\thu@def@fontsize{xiaochu}{36bp} +\thu@def@fontsize{yihao}{26bp} +\thu@def@fontsize{xiaoyi}{24bp} +\thu@def@fontsize{erhao}{22bp} +\thu@def@fontsize{xiaoer}{18bp} +\thu@def@fontsize{sanhao}{16bp} +\thu@def@fontsize{xiaosan}{15bp} +\thu@def@fontsize{sihao}{14bp} +\thu@def@fontsize{banxiaosi}{13bp} +\thu@def@fontsize{xiaosi}{12bp} +\thu@def@fontsize{dawu}{11bp} +\thu@def@fontsize{wuhao}{10.5bp} +\thu@def@fontsize{xiaowu}{9bp} +\thu@def@fontsize{liuhao}{7.5bp} +\thu@def@fontsize{xiaoliu}{6.5bp} +\thu@def@fontsize{qihao}{5.5bp} \thu@def@fontsize{bahao}{5bp} % \end{macrocode} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}{\normalsize} % 正文小四号 (12bp) 字,行距为固定值 20 bp。 @@ -1705,8 +1707,7 @@ % \subsubsection{页眉页脚} % \label{sec:headerfooter} % -% 定义页眉和页脚。\cs{chapter} 自动调用 -% \cs{thispagestyle\{thu@plain\}},所以要重新定义 \cs{thu@plain}。 +% 定义页眉和页脚。 % \begin{macro}{\ps@thu@empty} % \begin{macro}{\ps@thu@plain} % \begin{macro}{\ps@thu@headings} @@ -1715,11 +1716,12 @@ % \changes{v2.5}{2006/05/13}{本科的奇偶页眉不同。} % \changes{v2.5}{2006/05/20}{增加 empty 页面样式。} % \changes{v4.7}{2012/05/29}{本科页码用小五号字。} -% \changes{v5.0.0}{2015/12/20}{利用 \pkg*{fancyhdr} 设置页眉页脚。} +% \changes{v5.0.0}{2015/12/20}{利用 \pkg{fancyhdr} 设置页眉页脚。} % 定义三种页眉页脚格式: % \begin{itemize} % \item \texttt{thu@empty}:页眉页脚都没有 -% \item \texttt{thu@plain}:只显示页脚的页码 +% \item \texttt{thu@plain}:只显示页脚的页码。\cs{chapter} 自动调用 +% \cs{thispagestyle\{thu@plain\}}。 % \item \texttt{thu@headings}:页眉页脚同时显示 % \end{itemize} % \begin{macrocode} @@ -1769,48 +1771,48 @@ % % \subsubsection{脚注} % \label{sec:footnote} -% 脚注字体:宋体小五,单倍行距。悬挂缩进 1.5 字符。标号在正文中是上标,在脚注中为 -% 正体。默认情况下 \cs{@makefnmark} 显示为上标,同时为脚标和正文所用,所以如果要区 -% 分,必须分别定义脚注的标号和正文的标号。 +% 脚注符合中文习惯,数字带圈。 % \changes{v2.1}{2006/03/01}{让脚注它悬挂起来,而且中文中用上标,脚注中用正体。} % \changes{v2.5}{2006/05/13}{修正 minipage 中的脚注。} -% \changes{v2.5.1}{2006/05/21}{脚注编号使用 \cs{textcircled} 命令,每页允许至多 99 个 -% 脚注条目。} % \begin{macro}{\thu@textcircled} -% 生成带圈的脚注数字。最多处理到 99,当然这个很容易扩展了。 +% \changes{v2.5.1}{2006/05/21}{脚注编号使用 \cs{textcircled} 命令,每页允许至多 99 个。} +% \changes{v5.2.2}{2016/02/01}{脚注编号每页允许至多 9 个。} +% 生成带圈的脚注数字,最多处理到 10。 % \begin{macrocode} %<*cls> \def\thu@textcircled#1{% - \ifnum \value{#1} <10 \textcircled{\xiaoliu\arabic{#1}} - \else\ifnum \value{#1} <100 \textcircled{\qihao\arabic{#1}}\fi + \ifnum\value{#1} >9 + \ClassError{thuthesis}% + {Too many footnotes in this page.}{Keep footnote less than 10.} + \fi + \ifthu@pifootnote% + \ding{\numexpr171+\value{#1}}% + \else% + \textcircled{\xiaoliu\arabic{#1}}% \fi} +\renewcommand{\thefootnote}{\thu@textcircled{footnote}} +\renewcommand{\thempfootnote}{\thu@textcircled{mpfootnote}} % \end{macrocode} % \end{macro} -% 修改脚注内部命令。 -% \changes{v2.6}{2006/06/09}{脚注改成 1.5 倍行距,漂亮。} +% +% 定义脚注分割线,字号(宋体小五),以及悬挂缩进(1.5字符)。 % \begin{macrocode} -\renewcommand{\thefootnote}{\thu@textcircled{footnote}} -\renewcommand{\thempfootnote}{\thu@textcircled{mpfootnote}} \def\footnoterule{\vskip-3\p@\hrule\@width0.3\textwidth\@height0.4\p@\vskip2.6\p@} \let\thu@footnotesize\footnotesize \renewcommand\footnotesize{\thu@footnotesize\xiaowu[1.5]} -\def\@makefnmark{\textsuperscript{\hbox{\normalfont\@thefnmark}}} -\long\def\@makefntext#1{ - \bgroup - \newbox\thu@tempboxa - \setbox\thu@tempboxa\hbox{% - \hb@xt@ 2em{\@thefnmark\hss}} - \leftmargin\wd\thu@tempboxa - \rightmargin\z@ - \linewidth \columnwidth - \advance \linewidth -\leftmargin - \parshape \@ne \leftmargin \linewidth - \footnotesize - \@setpar{{\@@par}}% - \leavevmode - \llap{\box\thu@tempboxa}% - #1 - \par\egroup} +\footnotemargin1.5em\relax +% \end{macrocode} +% +% \cs{@makefnmark} 默认是上标样式,而在脚注部分要求为正文大小。利用\cs{patchcmd} +% 动态调整 \cs{@makefnmark} 的定义。 +% \changes{v2.6}{2006/06/09}{脚注改成 1.5 倍行距,漂亮。} +% \changes{v5.2.2}{2016/02/01}{基于 \pkg{footmisc} 来设置不同位置 footnote +% marker 样式。} +% \begin{macrocode} +\let\thu@makefnmark\@makefnmark +\def\thu@@makefnmark{\hbox{{\normalfont\@thefnmark}}} +\pretocmd{\@makefntext}{\let\@makefnmark\thu@@makefnmark}{}{} +\apptocmd{\@makefntext}{\let\@makefnmark\thu@makefnmark}{}{} %</cls> % \end{macrocode} % @@ -1828,12 +1830,11 @@ % % 公式改成 (1-1) 的形式,本科还要在前面加上\textbf{公式}二字,我不知道他们是怎么想的,这 % 忒不好看了。 -% \changes{v2.5.1}{2006/05/24}{本科公式编号前添加\textbf{公式}二字。ft,这个需要修 \pkg*{amsmath} 极其深入的一个命令。} +% \changes{v2.5.1}{2006/05/24}{本科公式编号前添加\textbf{公式}二字。需要修 \pkg{amsmath} 极其深的一个命令。} % \changes{v2.5.1}{2006/05/24}{教务处居然要本科论文公式全文编号!} % \changes{v2.5.2}{2006/05/29}{上一个版本忘了把研究生的公式编号排除。} -% \changes{v3.0}{2007/05/12}{本科公式又要取消全文统一编号了,这帮家伙,早就告诉 -% 过他们,就是不听。} -% 本科的公式编号太变态了,不得不修改 \pkg{amsmath} 中很深的一个命令 \cs{tagform@}。 +% \changes{v3.0}{2007/05/12}{本科公式又要取消全文统一编号了。} +% 本科的公式编号要求很诡异,不得不修改 \pkg{amsmath} 中很深的一个命令 \cs{tagform@}。 % \changes{v2.6.2}{2006/06/19}{根据不同论文格式显示不同公式编号,并自动加入索引。} % \changes{v4.2}{2008/01/23}{\cs{eqref} 加括号。} % 同时为了让 \pkg{amsmath} 的 \cs{tag*} 命令得到正确的格式,我们必须修改这些代 @@ -1844,7 +1845,7 @@ % \def\make@df@tag@@#1{% % \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}} % \end{latex} -% \changes{v4.4}{2008/05/30}{变态的本科论文终于去掉了\textbf{公式}二字。} +% \changes{v4.4}{2008/05/30}{本科论文终于去掉了\textbf{公式}二字。} % \changes{v4.4.4}{2008/06/12}{修复了一个从 v4.3 升级到 v4.4 过程中的丢失公式索引的 bug,原修改代码保留备忘。} % \begin{macrocode} \def\make@df@tag{\@ifstar\thu@make@df@tag@@\make@df@tag@@@} @@ -1863,26 +1864,7 @@ %\fi % \end{macrocode} % -% TODO:解决证明环境中方块乱跑的问题。 -% \begin{macrocode} -\gdef\@endtrivlist#1{% % from \endtrivlist - \if@inlabel \indent\fi - \if@newlist \@noitemerr\fi - \ifhmode - \ifdim\lastskip >\z@ #1\unskip \par - \else #1\unskip \par \fi - \fi - \if@noparlist \else - \ifdim\lastskip >\z@ - \@tempskipa\lastskip \vskip -\lastskip - \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip - \vskip\@tempskipa - \fi - \@endparenv - \fi #1} -% \end{macrocode} -% -% 定理字样使用黑体,正文使用宋体,冒号隔开 +% 定理标题使用黑体,正文使用宋体,冒号隔开。 % \changes{v2.6.2}{2006/06/17}{增加问题和猜想两个数学环境。} % \changes{v4.2}{2008/03/07}{调整证明环境的编号和结尾的方块。} % \changes{v5.0.0}{2015/04/18}{修正定理字样为黑体 (\#104)。} @@ -1891,9 +1873,7 @@ \theoremheaderfont{\rmfamily\heiti} %</cls> %<*cfg> -% \theoremsymbol{\ensuremath{\blacksquare}} \theoremsymbol{\ensuremath{\square}} -%\theoremstyle{nonumberplain} \newtheorem*{proof}{证明} \theoremstyle{plain} \theoremsymbol{} @@ -1946,7 +1926,7 @@ % \changes{v2.4}{2006/04/14}{表格内容为 11 磅。} % \changes{v2.4}{2006/04/14}{图表标题左对齐,取消原先漂亮的 hang 模式。} % \changes{v2.5}{2006/05/13}{标题上下间距重调,以前没有考虑 \cs{intextsep} 的影响。} -% \changes{v2.5.1}{2006/05/23}{增加 \pkg*{subfigure} 和 \pkg*{subtable} 的 caption 配置。} +% \changes{v2.5.1}{2006/05/23}{增加 \pkg{subfigure} 和 \pkg{subtable} 的 caption 配置。} % \changes{v2.5.1}{2006/05/24}{重新定义表格默认字体。} % \changes{v2.5.3}{2006/06/07}{不管 caption 出现在什么位置,\cs{aboveskip} 总是出现在标题和浮动体之间的距离。} % \changes{v4.3}{2008/03/11}{子图引用时加括号。} @@ -1970,8 +1950,8 @@ % \renewcommand{\p@subfigure}{:} % \end{macrocode} % 我们采用 \pkg{longtable} 来处理跨页的表格。同样我们需要设置其默认字体为五号。 -% \changes{v2.5.3}{2006/06/08}{增加对 \pkg*{longtable} 的处理。} -% \changes{v4.5.1}{2009/01/06}{太好了,不用处理 \pkg*{longtable} 的 \cs{caption} +% \changes{v2.5.3}{2006/06/08}{增加对 \pkg{longtable} 的处理。} +% \changes{v4.5.1}{2009/01/06}{太好了,不用处理 \pkg{longtable} 的 \cs{caption} % 了。} % \begin{macrocode} \let\thu@LT@array\LT@array @@ -1979,7 +1959,7 @@ % \end{macrocode} % % \begin{macro}{\hlinewd} -% 简单的表格使用三线表推荐用 \cs{hlinewd}。如果表格比较复杂还是用 \pkg*{booktabs} 的命 +% 简单的表格使用三线表推荐用 \cs{hlinewd}。如果表格比较复杂还是用 \pkg{booktabs} 的命 % 令好一些。 % \begin{macrocode} \def\hlinewd#1{% @@ -2073,7 +2053,7 @@ % 前空 24 磅,段后空 18 磅。本科要求:段前段后间距 30/20 pt,行距 20pt。但正文 % 章节 30pt 的话和样例效果不一致。 % -% \changes{v2.5}{2006/05/13}{取消 \pkg*{titlesec} 宏包,用基本 \LaTeX{} 命令格式化标题。} +% \changes{v2.5}{2006/05/13}{取消 \pkg{titlesec} 宏包,用基本 \LaTeX{} 命令格式化标题。} % \changes{v2.5.1}{2006/05/23}{让 \cs{chapter*} 自动 \cs{markboth}。} % \changes{v3.1}{2006/06/16}{英文摘要标题要搞特殊化。} % \changes{v5.0.0}{2015/04/17}{修正章节间距问题(\#57)} @@ -2142,8 +2122,8 @@ % 默认的 \cs{chapter*} 很难同时满足研究生院和本科生的论文要求。本科论文要求所有 % 的章都出现在目录里,比如摘要、Abstract、主要符号表等,所以可以简单的扩展默认 % \cs{chapter*} 实现这个目的。但是研究生又不要这些出现在目录中,而且致谢和声明 -% 部分的章名、页眉和目录都不同,所以我想定义一个功能强悍的 \cs{thu@chapter*} 专 -% 门处理他们的变态要求。 +% 部分的章名、页眉和目录都不同,所以我想定义一个灵活的 \cs{thu@chapter*} 专 +% 门处理他们的这些要求。 % % \cs{thu@chapter*}\oarg{tocline}\marg{title}\oarg{header}: tocline 是出现在目录 % 中的条目,如果为空则此 chapter 不出现在目录中,如果省略表示目录出现 title; @@ -2194,8 +2174,9 @@ % % 每章标题行前空 6 磅,后空 0 磅。如果使用目录项中英文要使用 Arial,那么就加上 \cs{sffamily}。 % 章节名中英文用 Arial 字体,页码仍用 Times。 +% \begin{macro}{\tableofcontents} % \changes{v2.0}{2005/12/18}{附录的目录项需要调整一下。以及公式编号方式等等。} -% \changes{v2.5}{2006/05/13}{取消 \pkg*{titletoc} 宏包,用 \cs{dottedtocline} 调整 +% \changes{v2.5}{2006/05/13}{取消 \pkg{titletoc} 宏包,用 \cs{dottedtocline} 调整 % 目录。} % \changes{v2.5.1}{2006/05/23}{减小目录项中的导引小点跟页码之间的留白。} % \changes{v2.5.2}{2006/05/29}{用 \cs{thu@chapter*} 改写目录命令。} @@ -2204,32 +2185,23 @@ % \changes{v4.4}{2008/06/04}{本科生目录字号改回\cs{xiaosi}\oarg{1.8}。} % \changes{v4.4}{2008/06/04}{本科生目录缩进要求不同。} % \changes{v4.4}{2008/06/18}{本科章目录项一直用黑体 (Arial)。} -% \begin{macro}{\tableofcontents} -% 目录生成命令。 +% 目录生成命令。 % \begin{macrocode} \renewcommand\tableofcontents{% \thu@chapter*[]{\contentsname} \ifthu@bachelor\xiaosi[1.8]\else\xiaosi[1.65]\fi\@starttoc{toc}\normalsize} +% \end{macrocode} +% 调整目录样式,允许指定目录字体。 +% \changes{v5.2.2}{2016/01/23}{用 \cs{patchcmd} 修改 \cs{@dottedtocline}。} +% \begin{macrocode} \ifthu@arialtoc \def\thu@toc@font{\sffamily} \fi -\def\@pnumwidth{2em} % 这个参数没用了 -\def\@tocrmarg{2em} -\def\@dotsep{1} % 目录点间的距离 -\def\@dottedtocline#1#2#3#4#5{% - \ifnum #1>\c@tocdepth \else - \vskip \z@ \@plus.2\p@ - {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip - \parindent #2\relax\@afterindenttrue - \interlinepenalty\@M - \leavevmode - \@tempdima #3\relax - \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip - {\csname thu@toc@font\endcsname #4}\nobreak - \leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill - \nobreak{\normalfont \normalcolor #5}% - \par}% - \fi} +\def\@pnumwidth{2em} +\def\@tocrmarg{\@pnumwidth} +\def\@dotsep{1} +\patchcmd{\@dottedtocline}{#4}{\csname thu@toc@font\endcsname #4}{}{} +\patchcmd{\@dottedtocline}{\hb@xt@\@pnumwidth}{\hbox}{}{} \renewcommand*\l@chapter[2]{% \ifnum \c@tocdepth >\m@ne \addpenalty{-\@highpenalty}% @@ -2285,79 +2257,44 @@ % \changes{v2.0}{2005/12/18}{增加了封面密级,增加博士封面支持} % \changes{v4.6}{2011/04/27}{增加博士后相关指令。} % -% \begin{macro}{\id} -% \begin{macro}{\udc} -% \begin{macro}{\catalognumber} % \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}{\cdegree} -% \begin{macro}{\cdepartment} -% \begin{macro}{\cmajor} -% \begin{macro}{\cfirstdiscipline} -% \begin{macro}{\cseconddiscipline} +% \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}{\cdate} -% \begin{macro}{\postdoctordate} -% \begin{macro}{\etitle} -% \begin{macro}{\edegree} -% \begin{macro}{\edepartment} -% \begin{macro}{\emajor} -% \begin{macro}{\eauthor} % \begin{macro}{\esupervisor} % \begin{macro}{\eassosupervisor} % \begin{macro}{\ecosupervisor} -% \begin{macro}{\edate} -% 定义一批封面参数。 -% \changes{v2.5}{2006/05/20}{院系和专业分别改名用 department 和 major,代替原来 -% 的 affil 和 subject。} -% \changes{v2.6.2}{2006/06/18}{改正 groupmembers 的拼写错误。} +% 作者、导师、副导师、联合指导老师。 % \begin{macrocode} -\thu@def@term{id} -\thu@def@term{udc} -\thu@def@term{catalognumber} -\thu@def@term{secretlevel} -\thu@def@term{secretyear} -\thu@def@term{ctitle} -\thu@def@term{cdegree} -\thu@def@term{cdepartment} -\def\caffil{% for compatibility - \ClassWarning{thuthesis} - {'\string\caffil' is deprecated, please use '\string\cdepartment' instead.}{}% - \cdepartment} -\thu@def@term{cmajor} -\def\csubject{% for compatibility - \ClassWarning{thuthesis} - {'\string\csubject' is deprecated, please use '\string\cmajor' instead.}{}% - \cmajor} -\thu@def@term{cfirstdiscipline} -\thu@def@term{cseconddiscipline} \thu@def@term{cauthor} \thu@def@term{csupervisor} \thu@def@term{cassosupervisor} \thu@def@term{ccosupervisor} -\thu@def@term{cdate} -\thu@def@term{postdoctordate} -\thu@def@term{etitle} -\thu@def@term{edegree} -\thu@def@term{edepartment} -\def\eaffil{% for compability - \ClassWarning{thuthesis} - {'\string\eaffil' is deprecated, please use '\string\edepartment' instead.}{}% - \edepartment} -\thu@def@term{emajor} -\def\esubject{%for compability - \ClassWarning{thuthesis} - {'\string\esubject' is deprecated, please use '\string\emajor' instead.}{}% - \emajor} \thu@def@term{eauthor} \thu@def@term{esupervisor} \thu@def@term{eassosupervisor} \thu@def@term{ecosupervisor} -\thu@def@term{edate} % \end{macrocode} % \end{macro} % \end{macro} @@ -2367,18 +2304,80 @@ % \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} -% \end{macro} -% \end{macro} -% \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} +\thu@def@term{udc} +\thu@def@term{catalognumber} +\thu@def@term{cfirstdiscipline} +\thu@def@term{cseconddiscipline} +\thu@def@term{postdoctordate} +% \end{macrocode} % \end{macro} % \end{macro} % \end{macro} @@ -2389,31 +2388,15 @@ % \begin{environment}{cabstract} % \begin{environment}{eabstract} % 摘要最好以环境的形式出现(否则命令的形式会导致开始结束的括号距离太远,我不喜 -% 欢),这就必须让环境能够自己保存内容留待以后使用。ctt 上找到两种方法: -% \begin{itemize} -% \item 使用 \pkg{amsmath} 中的 \cs{collect@body},但是此宏没有定义 -% 为 \texttt{long},不能直接用。 -% \item 利用 \LaTeX{} 中环境和对应命令间的命名关系以及参数分隔符的特点非常巧妙地 -% 实现了这个功能,其不足是不能嵌套环境。 -% \end{itemize} -% 由于摘要部分经常会用到诸如 \texttt{itemize} 类似的环境,所以我们不得不选择第一 -% 种复杂的方法。以下是修改 \pkg{amsmath} 代码部分: +% 欢),这就必须让环境能够自己保存内容留待以后使用。使用 \pkg{environ} 的 +% \cs{Collect@Body} 来实现。 % \changes{v3.1}{2006/06/17}{重新定义摘要成为环境。} -% \begin{macrocode} -\long\@xp\def\@xp\collect@@body\@xp#\@xp1\@xp\end\@xp#\@xp2\@xp{% - \collect@@body{#1}\end{#2}} -\long\@xp\def\@xp\push@begins\@xp#\@xp1\@xp\begin\@xp#\@xp2\@xp{% - \push@begins{#1}\begin{#2}} -\long\@xp\def\@xp\addto@envbody\@xp#\@xp1\@xp{% - \addto@envbody{#1}} -% \end{macrocode} -% -% 使用 \cs{collect@body} 来构建摘要环境。 +% \changes{v5.2.2}{2016/01/31}{用 \pkg{environ} 封装的 \cs{Collect@Body}。} % \begin{macrocode} \newcommand{\thu@@cabstract}[1]{\long\gdef\thu@cabstract{#1}} -\newenvironment{cabstract}{\collect@body\thu@@cabstract}{} +\newenvironment{cabstract}{\Collect@Body\thu@@cabstract}{} \newcommand{\thu@@eabstract}[1]{\long\gdef\thu@eabstract{#1}} -\newenvironment{eabstract}{\collect@body\thu@@eabstract}{} +\newenvironment{eabstract}{\Collect@Body\thu@@eabstract}{} % \end{macrocode} % \end{environment} % \end{environment} @@ -2437,7 +2420,8 @@ % \end{macro} % \begin{macro}{\ckeywords} % \begin{macro}{\ekeywords} -% 利用 \cs{thu@parse@keywords} 来定义,内部通过 \cs{thu@ckeywords} 来引用。 +% 利用 \cs{thu@parse@keywords} 来定义,内部通过 \cs{thu@ckeywords} 和 +% \cs{thu@ekeywords} 来引用。 % \changes{v3.1}{2007/06/16}{增强的关键词命令。} % \begin{macrocode} \thu@parse@keywords{ckeywords} @@ -2891,7 +2875,7 @@ % \changes{v3.0}{2007/05/12}{本科论文授权图片扫描取消。} % \changes{v4.5.2}{2010/05/29}{本科封面和授权说明之间不要空白页。} % \changes{v4.6}{2011/05/29}{博士后报告无授权说明。} -% \changes{v5.0.0}{2015/06/05}{使用 \pkg*{pdfpages} 宏包支持本硕博论文授权说明扫描版(\#36)。} +% \changes{v5.0.0}{2015/06/05}{使用 \pkg{pdfpages} 宏包支持本硕博论文授权说明扫描版(\#36)。} % \begin{macrocode} \ifthu@postdoctor\relax\else% \ifthu@bachelor\clearpage\else\cleardoublepage\fi% @@ -2928,16 +2912,29 @@ % \subsubsection{摘要} % \label{sec:abstractformat} % +% \begin{macro}{\thu@put@keywords} +% 排版关键字。 +% \begin{macrocode} +%<*cls> +\newbox\thu@kw +\newcommand\thu@put@keywords[2]{% + \begingroup + \setbox\thu@kw=\hbox{#1} + \ifthu@bachelor\indent\else\noindent\hangindent\wd\thu@kw\hangafter1\fi% + \box\thu@kw#2\par + \endgroup} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\thu@makeabstract} % 中文摘要部分的标题为\textbf{摘要},用黑体三号字。 -% \changes{v2.5.1}{2006/05/24}{我靠,教务处又不要正文前的页眉了,ft!} +% \changes{v2.5.1}{2006/05/24}{教务处又不要正文前的页眉了。} % \changes{v2.5.1}{2006/05/24}{不管是哪种论文格式,摘要都要右开。} % \changes{v2.5.2}{2006/05/29}{在研究生论文中,摘要不出现在目录中,但是要在书签中出现。} % \changes{v2.5.3}{2006/06/03}{\cs{pagenumber} 会自动设置页码为 1。} % \changes{v2.6.3}{2006/06/30}{为本科正确设置目录及以后的页码。} % \changes{v4.5.2}{2010/05/29}{本科论文摘要亦无需右开。} % \begin{macrocode} -%<*cls> \newcommand{\thu@makeabstract}{% \ifthu@bachelor\clearpage\else\cleardoublepage\fi \thu@chapter*[]{\cabstractname} % no tocline @@ -2955,16 +2952,14 @@ % \begin{macrocode} \thu@cabstract % \end{macrocode} -% 每个关键词之间空两个汉字符宽度, 且为悬挂缩进 +% 每个关键词之间空两个汉字符宽度, 且为悬挂缩进。 % \changes{v2.6.2}{2006/06/17}{取消最后一列的空白。} % \changes{v2.6.2}{2006/06/20}{取消 tabular 环境,用 \cs{hangindent} 实现关键词 % 悬挂缩进,英文摘要同。} % \changes{v4.4.2}{2008/06/05}{本科生格式中文关键词采用首行缩进且无悬挂缩进。} % \begin{macrocode} \vskip12bp - \setbox0=\hbox{{\heiti\thu@ckeywords@title}} - \ifthu@bachelor\indent\else\noindent\hangindent\wd0\hangafter1\fi - \box0\thu@ckeywords + \thu@put@keywords{\heiti\thu@ckeywords@title}{\thu@ckeywords} % \end{macrocode} % % 英文摘要部分的标题为 \textbf{Abstract},用 Arial 体三号字。研究生的英文摘要要求 @@ -2979,7 +2974,7 @@ \thu@eabstract % \end{macrocode} % -% 每个关键词之间空四个英文字符宽度 +% 每个关键词之间空四个英文字符宽度。 % \changes{v2.4}{2006/04/14}{It is \textbf{Key words}, but not \textbf{Key % Words}.} % \changes{v2.6.2}{2006/06/17}{取消最后一列的空白。} @@ -2991,9 +2986,8 @@ % \changes{v4.7}{2012/06/02}{Bachelor sample uses Keywords w/o space \texttt{-\_-}} % \begin{macrocode} \vskip12bp - \setbox0=\hbox{\textbf{\ifthu@bachelor Keywords:\else Key words:\fi\enskip}} - \ifthu@bachelor\indent\else\noindent\hangindent\wd0\hangafter1\fi - \box0\thu@ekeywords} + \thu@put@keywords{% + \textbf{\ifthu@bachelor Keywords:\else Key words:\fi\enskip}}{\thu@ekeywords}} %</cls> % \end{macrocode} % \end{macro} @@ -3004,7 +2998,7 @@ % 主要符号对照表。 % \changes{v2.0e}{2005/12/18}{主要符号表定义为一个 list,用起来方便。} % \changes{v2.4}{2006/04/14}{为主要符号表环境增加一个可选参数,调节符号列的宽度。} -% \changes{v5.2.1}{2016/01/11}{利用 \pkg*{enumitem} 改造环境定义,更直观。} +% \changes{v5.2.1}{2016/01/11}{利用 \pkg{enumitem} 改造环境定义,更直观。} % \begin{macrocode} %<*cfg> \newcommand{\thu@denotation@name}{主要符号对照表} @@ -3057,7 +3051,7 @@ % \cs{cleardoublepage},使新开章节的页码到达正确的状态。否则会因为 \cs{addcontentsline} % 在 chapter 之前而导致目录页码错误。} % 定义致谢与声明环境。 -% \changes{v2.5}{2006/05/16}{ft,本科论文要求致谢声明分页,但是研究生的不分!} +% \changes{v2.5}{2006/05/16}{本科论文要求致谢声明分页,但是研究生的不分。} % \changes{v2.5.2}{2006/05/29}{研究生致谢右开。} % \changes{v2.5.2}{2006/05/30}{研究生致谢题目是致谢,目录是致谢与声明。} % \changes{v2.6.3}{2006/07/01}{重画双虚线,自适应页面宽度。} @@ -3110,7 +3104,7 @@ % \changes{v2.5}{2006/05/19}{为了让索引中能出现\textbf{图 xxx},不得不修改 \LaTeX % 内部命令 \cs{@caption}。} % \changes{v2.6.4}{2006/10/23}{增加 \cs{listoffigures*},\cs{listoftables*}。} -% \changes{v4.5.1}{2009/01/06}{更优雅的插图/表格索引,避免跟 \pkg*{caption} 包冲 +% \changes{v4.5.1}{2009/01/06}{更优雅的插图/表格索引,避免跟 \pkg{caption} 包冲 % 突。\cs{thu@listof} 相应修改。} % \begin{macrocode} %<*cls> @@ -3134,7 +3128,7 @@ % \end{macro} % % \begin{macro}{\equcaption} -% \changes{v2.6.2}{2006/06/19}{此命令配合 \pkg*{amsmath} 命令基本可以满足所有 +% \changes{v2.6.2}{2006/06/19}{此命令配合 \pkg{amsmath} 命令基本可以满足所有 % 公式需要。} % 本命令只是为了生成公式列表,所以这个 caption 是假的。如果要编号最好用 % equation 环境,如果是其它编号环境,请手动添加添加 \cs{equcaption}。 @@ -3201,7 +3195,7 @@ % 只好定义一个东西来拙劣地处理了, % 本来这个命令通过 \texttt{@preamble} 命令放到 bib 文件中是最省事的,但是那 % 样的话很多人肯定不知道该怎么做了。 -% \changes{v3.1}{2007/06/19}{引入 cs{thudot} 来自动完成参考文献最后的点。} +% \changes{v3.1}{2007/06/19}{引入 \cs{thudot} 来自动完成参考文献最后的点。} % \begin{macrocode} \def\thudot{\ifthu@bachelor\else\unskip.\fi} %</cls> @@ -3305,7 +3299,7 @@ % 定义 \cs{cleardoublepage} 和自己写 \cs{markboth},\cs{addcontentsline} 的部分。} % \changes{v2.0}{2005/12/18}{最后决定将 resume 定义为环境。这样与前面的主要符号 % 表、致谢等对应。} -% \changes{v2.5.1}{2006/05/23}{ft,教务处和研究生院非要搞的不一样!} +% \changes{v2.5.1}{2006/05/23}{教务处和研究生院非要搞的不一样!} % \changes{v2.5.2}{2006/05/29}{研究生的个人介绍要右开。} % \changes{v4.6}{2011/05/02}{支持可选参数,自己定义简历章节标题。} % 个人简历发表文章等。 @@ -3376,7 +3370,7 @@ % \label{sec:shuji} % \begin{macro}{\shuji} % 单独使用书脊命令会在新的一页产生竖排书脊。 -% \changes{v4.5}{2009/01/04}{简化代码,同时支持 xelatex。} +% \changes{v4.5}{2009/01/04}{简化代码,同时支持 \XeLaTeX。} % \changes{v5.0.0}{2015/12/21}{扩展 \cs{shuji}\oarg{标题}\oarg{作者}。} % \begin{macrocode} %<*cls> @@ -3404,8 +3398,7 @@ % \subsection{其它} % \label{sec:other} % -% 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改,否则 -% 必须在 document 开始后才能,感觉不好。 +% 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。 % \changes{v2.5}{2006/05/13}{不用 \cs{CJKcaption},在导言区直接引入配置文件。} % \begin{macrocode} %<*cls> @@ -3433,6 +3426,7 @@ \RequirePackage{xcolor} \RequirePackage{enumitem} \RequirePackage{etoolbox} +\RequirePackage{metalogo} \colorlet{thu@macro}{blue!60!black} \colorlet{thu@env}{blue!70!black} |