summaryrefslogtreecommitdiff
path: root/macros/xetex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-08-05 03:01:59 +0000
committerNorbert Preining <norbert@preining.info>2023-08-05 03:01:59 +0000
commitd40e7963c06e1302f226c67f32c143dcc5fa958a (patch)
treeb2a2f6f21f5f15e9e8b1c538a094131b87bbc29b /macros/xetex
parent319c90e45fc96ba6f15edcf00b24e484d9d92f2b (diff)
CTAN sync 202308050301
Diffstat (limited to 'macros/xetex')
-rw-r--r--macros/xetex/latex/buctthesis/README.md9
-rw-r--r--macros/xetex/latex/buctthesis/buctthesis.pdfbin462539 -> 0 bytes
-rw-r--r--macros/xetex/latex/buctthesis/doc/buctthesis.pdfbin0 -> 468603 bytes
-rw-r--r--macros/xetex/latex/buctthesis/source/buctthesis.dtx (renamed from macros/xetex/latex/buctthesis/buctthesis.dtx)1096
-rw-r--r--macros/xetex/latex/buctthesis/source/buctthesis.ins (renamed from macros/xetex/latex/buctthesis/buctthesis.ins)12
5 files changed, 544 insertions, 573 deletions
diff --git a/macros/xetex/latex/buctthesis/README.md b/macros/xetex/latex/buctthesis/README.md
index b019dd7dba..055a50f047 100644
--- a/macros/xetex/latex/buctthesis/README.md
+++ b/macros/xetex/latex/buctthesis/README.md
@@ -40,13 +40,14 @@ BUCTthesis (**B**eijing **U**niversity of **C**hemical **T**echnology LaTeX **
- `chapter` 文件夹用于存放各部分内容,并在 `main.tex` 调用;
- `figure` 和 `code` 文件夹下分别保存插图和源代码,以方便写作时调用;
6. 对 `main.tex` 文件执行 `latexmk` 或 `xelatex -> bibtex -> xelatex -> xelatex` 的全编译。
-7. 在 `cover` 文件夹中可生成硕博论文的封面,使用方法请阅读说明文档 `buctthesis.pdf`。(本科可直接删除该文件夹)
## 注意事项
- 北京化工大学教务处与研究生院仅提供了写作规范(见下)而**未对本模板做任何测试或授权**。模板作者自当尽力,但限于软件等各种因素,由本模板生成的文档可能仍与要求有所出入。所以使用本模板类造成(包括但不限于)论文审核不通过等问题作者不负责,请使用时慎酌。
- 模板在 TeX Live 2020 及更新版本、[Overleaf](https://www.overleaf.com/) 上可顺利编译,可能不兼容于低版本。**不支持** CTeX 套装。
-- 学校会统一印制论文封面,而其中包括标题和作者的内容需要用笔填写。为保证论文的完整性,本模板仿制了研究生论文的封面,且与实物相比有少许差别。
+- 论文封面相关:
+ - 学校会统一印制论文封面,而其中包括标题和作者等的内容需要用笔填写。但为保证论文的完整性,本模板对其进行了仿制,故与实际相比可能有少许差别;
+ - 封面使用的方正系列字体需要自行安装,字体清单参见说明文档 `buctthesis.pdf`。
## 写作规范
@@ -77,3 +78,7 @@ BUCTthesis (**B**eijing **U**niversity of **C**hemical **T**echnology LaTeX **
## 开源许可
本项目的代码部分基于 [LaTeX Project Public License](http://www.latex-project.org/lppl.txt)(版本 1.3c 或更高)开源于 [GitHub](https://github.com/Miracle0565/BUCTthesis) 。同时为了方便国内用户,在 [Gitee](https://gitee.com/Miracle0565/BUCTthesis) 建有代码的镜像。
+
+## 迁移
+
+原有的 [本科开题报告模板](https://github.com/the-ccsn/buct-proposal) 目前暂存于本仓库根目录下文件夹内。
diff --git a/macros/xetex/latex/buctthesis/buctthesis.pdf b/macros/xetex/latex/buctthesis/buctthesis.pdf
deleted file mode 100644
index 6d2e2d8416..0000000000
--- a/macros/xetex/latex/buctthesis/buctthesis.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/xetex/latex/buctthesis/doc/buctthesis.pdf b/macros/xetex/latex/buctthesis/doc/buctthesis.pdf
new file mode 100644
index 0000000000..53834afea8
--- /dev/null
+++ b/macros/xetex/latex/buctthesis/doc/buctthesis.pdf
Binary files differ
diff --git a/macros/xetex/latex/buctthesis/buctthesis.dtx b/macros/xetex/latex/buctthesis/source/buctthesis.dtx
index 42a8290981..26d42f82af 100644
--- a/macros/xetex/latex/buctthesis/buctthesis.dtx
+++ b/macros/xetex/latex/buctthesis/source/buctthesis.dtx
@@ -1,8 +1,9 @@
% \iffalse meta-comment
%
% Copyright (C) 2019-2022 by Miracle0565
+% Copyright (C) 2022-2023 by The-CCSN
%
-% https://github.com/Miracle0565/BUCTthesis
+% https://github.com/the-ccsn/BUCTthesis
% -------------------------------------------------------
%
% This file may be distributed and/or modified under
@@ -20,7 +21,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \iffalse
%<*driver>
-\ProvidesFile{buctthesis.dtx}[2022/07/29 v1.4.1 BUCT Thesis Template]
+\ProvidesFile{buctthesis.dtx}[2023/05/20 v2.0 BUCT Thesis Template]
\documentclass{ltxdoc}
\usepackage{manual}
\begin{document}
@@ -58,7 +59,7 @@
% \GetFileInfo{buctthesis.dtx}
%
% \title{\textsf{BUCTthesis}:北京化工大学学位论文模板}
-% \author{Miracle0565\\ \texttt{https://github.com/Miracle0565}}
+% \author{长城学生网络 \\ \texttt{https://github.com/the-ccsn}}
% \date{\fileversion (\filedate)}
%
% \newgeometry{hcentering}
@@ -68,25 +69,25 @@
% \section{欢迎!}
% BUCTthesis是北京化工大学本科与硕士、博士研究生毕业论文的 \LaTeX\ 写作模板,版本号~\fileversion。
% 本文是模板的使用指南,旨在帮助北化毕业生掌握此模板的使用方法,从而写出符合北化
-% \href{https://jiaowuchu.buct.edu.cn/2018/1009/c515a22046/page.htm}{《本科生毕业设计(论文)撰写规范》}(以下称《本科规范》)
+% \href{https://jiaowuchu.buct.edu.cn/2018/1009/c515a22046/page.htm}{《本科生毕业设计(论文)撰写规范》}(以下称《本科生规范》)
% 和 \href{https://xxgk.buct.edu.cn/2017/1107/c2835a39437/page.htm}{《北京化工大学研究生学位论文撰写规范(修订)》}(以下称《研究生规范》)
% 要求的毕业论文。
%
% \subsection{模板内容}
% 本模板为中文论文模板,暂不支持英语专业的论文写作。以下是完整论文的书序,其中划线部分为模板未完成的部分。
% \begin{description}
-% \item[本科] \without{开题报告} \footnote{格式未指定。}、\without{中期进展情况检查表} \footnote{由学校提供 Word,可转换为 PDF 文件插入。}、\without{论文封面} \footnote{学校统一印制,论文题目等信息需手写,可使用扫描件插入。}、诚信声明、任务书、摘要、目录、前言、正文、结论、参考文献、符号说明、致谢和附录;
-% \item[研究生] 论文封面、版权页(独创性声明和授权书)、\without{学位论文数据集} \footnotemark[2]、中英文摘要、中英文目录、符号和缩略词说明、正文、参考文献、附录、致谢、作者攻读学位期间发表的学术论文及科研成果目录、作者和导师简介和\without{答辩委员会决议} \footnote{使用扫描件插入。}。
+% \item[本科] 开题报告 \footnote{目前处于实验性质,参见根目录下的 \file{buct-proposal} 文件夹。}、\CJKsout{中期进展情况检查表} \footnote{由学校提供 Word,可转换为 PDF 文件插入。}、论文封面、诚信声明、任务书、摘要、目录、前言、正文、结论、参考文献、符号说明、致谢和附录;
+% \item[研究生] 论文封面、版权页(独创性声明和授权书)、\CJKsout{学位论文数据集} \footnotemark[2]、中英文摘要、中英文目录、符号和缩略词说明、正文、参考文献、附录、致谢、作者攻读学位期间发表的学术论文及科研成果目录、作者和导师简介和\CJKsout{答辩委员会决议} \footnote{使用扫描件插入。}。
% \end{description}
%
% \subsection{免责声明}
-% 请您注意,至本文档编译时,北京化工大学教务处仅提供《本科规范》和《研究生规范》而未对本模板做任何测试或授权。
+% 请您注意,至本文档编译时,北京化工大学教务处仅提供《本科生规范》和《研究生规范》而未对本模板做任何测试或授权。
% 模板作者自当尽力,但限于软件等各种因素,由本模板生成的文档可能仍与要求有所出入,
% 故不保证审查老师对格式不提意见。在开始使用之前,您需要同意:
% 任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。
%
% \subsection{开源说明}
-% 本模板开源于 \href{https://github.com/Miracle0565/BUCTthesis}{GitHub},代码部分遵循
+% 本模板开源于 \href{https://github.com/the-ccsn/BUCTthesis}{GitHub},代码部分遵循
% \href{https://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License 1.3c} 及以上协议。
% 模板文件夹中有关学校校徽和校名的插图,其版权归北京化工大学所有。
%
@@ -112,8 +113,8 @@
% \begin{enumerate}
% \item \TeX\ 发行版:
% \begin{description}
-% \item[本地编译] 建议完整安装 \TeX\ Live 2020 或更新版本。模板\emph{不支持} \CTeX\ 套装。安装 \TeX 发行版的详细步骤可参考\href{https://github.com/OsbertWang/install-latex-guide-zh-cn}{《一份简短的关于 \LaTeX 安装的介绍》}。此外,该文档简要地介绍了几款常见的文本编辑器,可根据喜好自行选择。
-% \item[在线编译] 推荐 \href{https://www.overleaf.com/}{Overleaf},它提供了 Ubuntu 系统下的 \TeX\ Live,目前为 2021 版。免费版本足以应对模板的正常编译,至于完整的文档历史和协作编辑等功能则需付费订阅。
+% \item[本地编译] 建议完整安装 \TeX\ Live 2022 或更新版本。模板\emph{不支持} \CTeX\ 套装。安装 \TeX 发行版的详细步骤可参考\href{https://github.com/OsbertWang/install-latex-guide-zh-cn}{《一份简短的关于 \LaTeX 安装的介绍》}。此外,该文档简要地介绍了几款常见的文本编辑器,可根据喜好自行选择。
+% \item[在线编译] 推荐 \href{https://www.overleaf.com/}{Overleaf},它提供了 Ubuntu 系统下的 \TeX\ Live,目前为 2022 版。免费版本足以应对模板的正常编译,至于完整的文档历史和协作编辑等功能则需付费订阅。
% \end{description}
% \item \TeX\ 技能:本文档不是一份 \LaTeX\ 零基础教程,使用本模板需要对 \LaTeX\ 和参考文献管理工具 \BibTeX 有一定的熟练度。若您是新手,我们建议您先阅读一些入门文档,如\href{http://mirror.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf}{《一份不太简短的 \LaTeXe 介绍》}。
% \end{enumerate}
@@ -180,7 +181,7 @@
% 示例文件会随模板一同发布。建议在写作开始前对示例文件执行一次全编译,以检查编程环境是否合适。
%
% \subsection{提问}
-% 对于模板的任何问题或新功能需求请提交至 \href{https://github.com/Miracle0565/BUCTthesis/issues}{GitHub Issues}。
+% 对于模板的任何问题或新功能需求请提交至 \href{https://github.com/the-ccsn/BUCTthesis/issues}{GitHub Issues}。
% 以下步骤可能对排除与精简问题有所帮助:
% \begin{enumerate}
% \item 将 \file{buctthesis.cls} 和 \file{main.tex} 文件复制到一空白文件夹;
@@ -201,7 +202,7 @@
% \subsubsection{文档类选项}
% 主文件 \file{main.tex} 以
% \begin{latex}
-% \documentclass[
+% \documentclass [
% type = doctor, % bachelor | master | doctor
% fontset = windows, % fandol | windows | ...
% submit,
@@ -212,18 +213,18 @@
%
% 以下逐一简述各个选项:
%
-% \DescribeOpt{type = }
+% \DescribeOpt{type}
% \emph{必须指定一种类型}:本科 \opt{bachelor},硕士 \opt{master},以及博士 \opt{doctor}。
% 如:
% \begin{latex}
% % 博士论文
-% \documentclass[type = doctor,]{buctthesis}
+% \documentclass[type = doctor]{buctthesis}
% % 或:
% % 本科论文
-% \documentclass[type = bachelor,]{buctthesis}
+% \documentclass[type = bachelor]{buctthesis}
% \end{latex}
%
-% \DescribeOpt{fontset = }
+% \DescribeOpt{fontset}
% 该选项会传递至 \pkg{ctex} 宏集,从而指定全文的字体。模板的设置如表~\ref{tab:fontset}~所示。
%
% 其中选项 \opt{fandol} 或使用 \opt{\meta{others}} 选项 \footnote{参见\pkg{ctex}宏集第 4.3 小节。}是为了一些不方便安装字体的系统或平台(如 Overleaf)所采取的\emph{临时解决方案}。
@@ -243,6 +244,8 @@
% \end{tabular}
% \end{table}
%
+% \emph{此外,论文封面使用的字体比较特殊,因此需要做另外设置。参见~\ref{subsec:cover}~中对封面相关字体的说明。}
+%
% \DescribeOpt{submit}
% 是否为提交版本。如果启用则会将文章超链接和代码块的文字颜色全部设置为黑色,适合论文最终提交与付梓。
% 需要提醒的是,它不能转换插图的颜色。
@@ -257,15 +260,19 @@
%
% \subsubsection{论文信息}\label{subsec:buctsetup}
% \DescribeMacro{\buctsetup}
-% \DescribeOpt{ctitle}
-% \DescribeOpt{etitle}
-% \DescribeOpt{cauthor}
+% \DescribeOpt{ChineseTitle}
+% \DescribeOpt{ChineseTitleLineA}
+% \DescribeOpt{ChineseTitleLineB}
+% \DescribeOpt{EnglishTitle}
+% \DescribeOpt{author}
% \DescribeOpt{class}
% \DescribeOpt{studentid}
% \DescribeOpt{school}
% \DescribeOpt{major}
% \DescribeOpt{supervisor}
% \DescribeOpt{msupervisor}
+% \DescribeOpt{ChineseKeywords}
+% \DescribeOpt{EnglishKeywords}
% \begin{syntax}{buctsetup}
% \marg{键值列表}
% \end{syntax}
@@ -275,26 +282,35 @@
% \begin{latex}
% \buctsetup{
% % 论文的中文标题
-% ctitle = {基于 \LaTeX\ 的北京化工大学毕业论文写作模板},
+% ChineseTitle = {基于 \LaTeX\ 的北京化工大学本硕博毕业论文写作模板},
+% % 封面上的标题。总字数不要超过 36 个汉字长度。
+% % 本科:可以一行或分两行写,如无第二行将 ChineseTitleLineB 留空或注释掉;
+% % 硕博:封面的标题有两行,每一行控制在 18 个汉字长度以内。
+% % 封面标题首行
+% ChineseTitleLineA = {基于 \LaTeX\ 的北京化工大学本硕博},
+% % 封面标题次行
+% ChineseTitleLineB = {毕业论文写作模板},
% % 论文的英文标题,一般需要大写
-% etitle = {BUCTthesis: A \LaTeX\ WRITING TEMPLATE FOR BUCT},
+% EnglishTitle = {BUCTthesis: A \LaTeX\ WRITING TEMPLATE FOR BUCT},
% % 作者的中文姓名
-% cauthor = {张三},
+% author = {张三},
% % 班级(仅本科)
% class = {某某1024},
-% % 学号(仅本科)
+% % 学号
% studentid = {2018020999},
% % 学院(仅本科)
% school = {材料科学与工程学院},
-% % 专业名称(仅本科)
+% % 专业名称
% major = {高分子材料与工程},
-% % 导师的姓名与职称(仅本科)
+% % 导师的姓名与职称
% supervisor = {李四教授},
% % 专业负责人姓名(仅本科)
% msupervisor = {王五},
% % 中文、英文关键词,各关键词间以西文逗号“,”分隔
-% ckeywords = {论文,\LaTeX{},模板},
-% ekeywords = {thesis,\LaTeX{},template},
+% ChineseKeywords = {论文,\LaTeX{},模板},
+% EnglishKeywords = {thesis,\LaTeX{},template},
+% % 日期,请注意务必使用形如“YYYY-MM-DD”的格式
+% date = {2021-12-23},
% }
% \end{latex}
%
@@ -303,15 +319,48 @@
% 此外,\cs{buctsetup}\marg{键值列表} 与下列命令等价:
% \begin{latex}
% % 于导言区
-% \ctitle{基于 \LaTeX\ 的北京化工大学毕业论文写作模板}
-% \etitle{BUCTthesis: A \LaTeX\ WRITING TEMPLATE FOR BUCT}
+% \ChineseTitle{基于 \LaTeX\ 的北京化工大学本硕博毕业论文写作模板}
+% \EnglishTitle{BUCTthesis: A \LaTeX\ WRITING TEMPLATE FOR BUCT}
% % ...(下同)
% \end{latex}
%
+% \subsection{封面}\label{subsec:cover}
+% \DescribeMacro{\makecover}
+% \begin{syntax}{makecover}
+% \oarg{文件路径}
+% \end{syntax}
+%
+% \emph{注意:从2.0版本起,模板将封面集成至论文中而不再单独使用一个文档类文件。}
+%
+% BUCTthesis 对学校印刷的纸质封面进行了仿制,
+% 直接使用而不带任何参数的 \cs{makecover} 会根据所选 \opt{type} 生成对应的封面,封面上的各项信息从前述的 \cs{buctsetup} 处定义。
+% 需要注意的是,这里的“仿制”仅是实现封面的效果,学校印制的封面需要手写内容,故不能在纸本上替代学校统一印制的封面;
+% 若无特殊说明,可以在提交电子版时使用此封面。但,仍请以教务处最新通告为准。
+%
+% 此外,学校封面使用的方正系列字体未预装于一些操作系统上,
+% 可访问\href{https://www.foundertype.com}{方正字库官网}下载和安装,具体步骤从略。
+%
+% 封面所使用的中文字体清单如下:
+% \begin{enumerate}
+% \item SimSun,中易宋体
+% \item SimHei,中易黑体
+% \item KaiTi,中易楷体
+% \item STXingkai,华文行楷
+% \item FZXiaoBiaoSong-B05S,方正小标宋简体
+% \item FZDaBiaoSong-B06S,方正大标宋简体(仅硕博封面需要)
+% \end{enumerate}
+%
+% 当且仅当存在上述字体文件时模板才会输出电子版的封面。
+% 当然,考虑到有时需要插入扫描页,所以该命令可跟一个可选参数,如:
+% \begin{latex}
+% \makecover[figure/mycover.pdf]
+% \end{latex}
+% 即可插入位于 \file{figure/mycover.pdf} 的图片来代替。
+%
% \subsection{前置部分}\label{subsec:frontmatter}
%
-% 在“目录”之前的几个部分,包括“诚信声明”\footnote{根据《现代汉语词典》对“申明”与“声明”二词的释义,%
-% 《本科规范》中的“诚信申明”应作“诚信声明”;模板以后者作为标题。}(仅本科)、
+% 在封面之后、“目录”之前的几个部分,包括“诚信声明”\footnote{根据《现代汉语词典》对“申明”与“声明”二词的释义,%
+% 《本科生规范》中的“诚信申明”应作“诚信声明”;模板以后者作为标题。}(仅本科)、
% 版权页(仅硕博)、“任务书”(仅本科)、“摘要”和“Abstract”,
% 分别对应于 \file{chapter/frontmatter.tex} 中的不同命令或环境。
%
@@ -323,7 +372,7 @@
%
% 直接使用而不带任何参数的 \cs{makedeclare} 会根据所选 \opt{type} 生成对应内容。
%
-% 此外,考虑到有时需要插入扫描页,所以该命令可跟一个可选参数,如:
+% 和 \cs{makecover} 一样,该命令也可跟一个可选参数来插入扫描页,如:
% \begin{latex}
% \makedeclare[figure/declare.png]
% \end{latex}
@@ -352,9 +401,21 @@
% 该环境仅适用于本科论文中。
%
% “本科生毕业设计(论文)任务书”部分使用 \env{taskbook} 环境。
-% 主文件中所定义的部分信息会作用于“任务书”的开头部分;
-% 该部分以 \cs{taskinfo} 或 \cs{taskinfo*} 命令来插入,
-% 二者的区别在于后者比前者少了一次换行,是《本科规范》中示例的实现,但不适合文字较多时使用。
+% 此环境后可跟一个 \texttt{*}(注意不是 \env{taskbook*}),
+% 它会使得生成的任务书页不带任何页眉和页脚,以适合某些特殊情况下使用。
+% \begin{latex}
+% \begin{taskbook}
+% ……“任务书”内容(带页眉页脚)
+% \end{taskbook}
+% % 或者:
+% \begin{taskbook}*
+% ……“任务书”内容(不带页眉页脚)
+% \end{taskbook}
+% \end{latex}
+%
+% \cs{buctsetup} 中定义的信息会作用于“任务书”的开头部分,该部分以 \cs{taskinfo} 命令来插入。
+% 这个命令同样有一个带星号的版本即 \cs{taskinfo*},
+% 二者的区别在于后者比前者少了一次换行,是《本科生规范》中示例的实现,但不适合文字较多时使用。
%
% 除此之外,可以选择使用 \env{bibenumerate} 环境来排版有序文献列表,
% 序号已经设置为带方括号的数字。
@@ -373,14 +434,14 @@
% \end{latex}
%
% 三者是互相独立的。
-% 英文目录通过 \cs{echapter} 等命令指定某一标题的英文标题,参见~\ref{subsubsec:bitoc}。
-% 设计图纸目录通过 \env{dfigure} 环境指定插图为“设计图纸”并计数编号,参见~\ref{subsubsec:dfigure}。
+% 为生成英文目录,需要在正文中以 \cs{echapter} 等命令指定各级标题的对应英文,参见~\ref{subsubsec:bitoc};
+% 为生成设计图纸目录,需要在正文中以 \env{dfigure} 环境指定插图为“设计图纸”并计数编号,参见~\ref{subsubsec:dfigure}。
%
% \subsubsection{符号说明表}\label{subsubsec:deno}
% \DescribeEnv{denotation}
% 符号说明表的源文件位于 \file{chapter/denotation.tex},
% 使用 \env{denotation} 环境。
-% 《本科规范》和《研究生规范》中都未详细规定符号说明表的格式,
+% 《本科生规范》和《研究生规范》中都未详细规定符号说明表的格式,
% 模板设计了一个无框线、可跨页的长表格,直接在环境里填入内容即可。
% 环境接受一个可选参数 \meta{width} ,代表“说明”一列的宽度,用于在必要时调整。
% \begin{latex}
@@ -436,7 +497,7 @@
% 我们只需在正文章节标题命令后加上对应标签即可。
% 如:
% \begin{latex}
-% \chapter{绪论}\echapter{Intorduciton}
+% \chapter{绪论}\echapter{Introduciton}
% \section{基本概念}\esection{Basic Conceptions}
% \section{本章小结}\esection{Chapter Summary}
% \chapter{实验}\echapter{The Experiments}
@@ -452,7 +513,7 @@
% \oarg{中文目录标题}\marg{中文正文标题}\marg{英文目录标题}
% \end{syntax}
%
-% 可见与 \cs{chapter} 相比,它多了一个参数用于接受 \meta{英文目录的标题}。
+% 可见与 \cs{chapter} 相比,它多了一个必选参数用于接受 \meta{英文目录的标题}。
% 于是,上面这个例子可以这样简化:
% \begin{latex}
% \bichapter{绪论}{Intorduciton}
@@ -477,11 +538,13 @@
%
% 该命令仅适用于硕博论文中。
%
-% 具体的用法很简单:使用 \cs{bicaption} 代替 \cs{caption} 命令即可,如:
+% 具体的用法很简单:在 \env{figure} 环境中使用 \cs{bicaption} 代替 \cs{caption},如:
% \begin{latex}
% \begin{figure}
-% \centering \includegraphics[]{file}
+% \centering
+% \includegraphics[<options>]{My-Fig}
% \bicaption{中文标题}{English Title}
+% \label{fig:my-fig}
% \end{figure}
% \end{latex}
%
@@ -490,24 +553,29 @@
%
% 关于一般的插图请看示例文件,这里介绍关于“设计图纸”及编目的方法。
%
-% 由于《本科规范》未对所谓“设计图纸”详细说明,因此模板设计了两种编目方式:
+% 由于《本科生规范》未对所谓“设计图纸”详细说明,因此模板设计了两种编目方式:
% 一是加入主目录,另一种是单独生成目录。
%
% \DescribeEnv{dfigure}
-% 设计图纸的计数器是独立于一般插图的,故需要使用 \env{dfigure} 环境来代替 \env{figure}。
-
+% 设计图纸的计数器是独立于一般插图的。
+% 因此,无论编目方式如何,
+% 都需要使用 \env{dfigure} 而非 \env{figure} 环境,来为一张插图指定为“设计图纸”。
+%
% \DescribeMacro{\dcaption}
-% 先来看编入主目录的方式,在正文内插入插图的代码处,
-% 除了使用 \cs{dcaption} 代替 \cs{caption}外都一样。
+% 如果需要编入主目录,需要使用 \cs{dcaption} 代替 \cs{caption},如:
% \begin{latex}
-% \begin{dfigure}[htbp]
-% \centering\includegraphics[]{file}
+% \begin{dfigure}
+% \centering
+% \includegraphics[<options>]{My-Fig}
% \dcaption{设计图纸示例}
% \end{dfigure}
% \end{latex}
+% 也就是说,\cs{dcaption} 命令用于添加编号与标题的同时将它编入主目录。
%
% \DescribeMacro{\listofdesignfigures}
-% 而独立目录也很简单,一个 \cs{listofdesignfigures} 即可。参见~\ref{subsubsec:content}。
+% 而独立目录也很简单:只需要 \env{dfigure} 指定为“设计图纸”,
+% 并在主目录(\cs{tableofcontents})后跟一个 \cs{listofdesignfigures} 即可。参见~\ref{subsubsec:content}。
+%
% \subsubsection{结论}
% \DescribeEnv{conclusion}
% 该环境仅适用于本科论文中。
@@ -533,18 +601,23 @@
% \marg{CiteKey}
% \end{syntax}
%
-% 模板使用 \cs{cite} 实现上标、方括号按“顺序编码制”引用参考文献;
-% \cs{inlinecite} 可实现行间引用,适合某些特殊情况使用;
-% 而 \cs{nocite}\marg{CiteKey} 则指明不引用但需要列出的参考文献。
+% 模板使用 \BibTeX 来实现参考文献的引用。
+% 一般情况下,使用 \cs{cite} 实现上标、方括号按“顺序编码制”引用参考文献;
+% 而 \cs{inlinecite} 可实现行间引用,适合某些特殊情况使用;
+% 此外,\cs{nocite}\marg{CiteKey} 则指明不在正文中引用但仍需要列出的参考文献,一般不使用。
% 在同一处引用多个文献时,应将各篇文献的引用标签一同写在参数里,
-% 并以西文逗号“,”分隔每个 \meta{CiteKey}。
+% 并以西文逗号“,”分隔每个 \meta{CiteKey},如:
+% \begin{latex}
+% ……多喝热水。\cite{bib1, bib2}
+% \end{latex}
%
-% 主文件中以
+% 至于参考文献列表,主文件中以下列命令来生成符合格式要求的参考文献章节:
% \begin{latex}
% \bibliographystyle{gbt7714-numerical}
% \bibliography{thesisbib.bib}
% \end{latex}
-% 来增加符合格式要求的参考文献章节。为罗列各条参考文献,
+%
+% 为罗列各条参考文献,
% 需要在 \file{thesisbib.bib} 文件中增删需引用的文献数据。
% 在文章中相应位置引用文献后,需执行一次全编译以确保正确显示。
%
@@ -558,12 +631,14 @@
%
% 文献翻译的源文件位于 \file{chapter/translation.tex},
% 使用 \env{translation} 环境,原文和翻译都要有。
+%
+% \emph{注意:部分学院要求该部分作为单独的一份文件,此时可直接删除该文件并删除主文件的插入代码。}
% \begin{latex}
-% \begin{translations}
+% \begin{translation}
% English.
%
% 汉语。
-% \end{translations}
+% \end{translation}
% \end{latex}
%
% \subsubsection{附录}\label{subsubsec:app}
@@ -611,68 +686,6 @@
% \end{resume}
% \end{latex}
%
-% \subsection{封面}\label{subsec:cover}
-% \DescribeMacro{\makecover}
-% BUCTthesis 对学校印刷的纸质封面进行了仿制,本小节将简单介绍相关代码与编译方法。
-%
-% 由于字体的原因,BUCTthesis 将封面模板另置于 \file{cover} 文件夹,可根据需要使用。
-% 在该文件夹中的三个文件都与封面有关,编译时请确保它们位于同一路径之下。
-%
-% \emph{注意:这里的“仿制”仅是实现封面的效果,学校印制的封面需要手写内容,故不能在纸本上替代学校统一印制的封面;
-% 若无特殊说明,可以在提交电子版时使用此封面。但,仍请以教务处最新通告为准。}
-% \begin{enumerate}
-% \item \file{buctcover.tex}:源文档。在 \cs{documentclass} 后定义封面所属学位,在 \cs{coversetup} 中定义论文相关信息。除导言区外无需修改。
-% \begin{latex}
-% \documentclass[
-% type = bachelor % type = [ bechelor | master | doctor ]
-% ]{buctcover}
-% \coversetup{
-% %班级,位于右上角,仅本科
-% class = {计科1024},
-% % 学号,位于右上角
-% studentid = {2021010234},
-% % 标题。总字数不要超过 36 个汉字长度。
-% % 本科:可以一行或分两行写,如果无第二行将 titleB 留空或注释掉;
-% % 硕博:封面的标题有两行,每一行控制在 18 个汉字长度以内。
-% titleA = {甲乙丙丁戊己庚辛壬癸一二三},
-% titleB = {四五六七八九十甲乙丙丁戊己},
-% % 作者
-% author = {张三},
-% % 专业
-% major = {计算机科学与技术},
-% % 导师
-% supervisor = {某某某教授},
-% % 日期,不填为当日。请注意:务必使用形如“YYYY-MM-DD”的格式
-% date = {2021-12-23},
-% }
-% \end{latex}
-%
-% 至于编译,只需一遍 xelatex 即可,扩展名可省略。
-% \begin{shell}
-% xelatex buctcover.tex
-% \end{shell}
-% 如果编译两遍,还会生成封面的 PDF 书签。
-% 此时可以用其他 PDF 工具将封面整合到论文中,同时还能保留封面书签以便于跳转。
-%
-% \item \file{buctcover.cls}:格式控制文件。类似 \file{buctthesis.cls},亦可由 \file{buctthesis.ins} 和 \file{buctthesis.dtx} 生成:
-% \begin{shell}
-% xelatex buctthesis.ins
-% \end{shell}
-% 请注意执行以上命令时会同时生成 \file{buctcover.cls} 和 \file{buctthesis.cls},只有前者是用于控制封面的。
-% \end{enumerate}
-%
-% 除此之外,封面使用的方正系列字体未预装于一些操作系统上,
-% 可访问\href{https://www.foundertype.com}{方正字库官网}下载和安装,具体步骤从略。
-%
-% 封面所使用的中文字体清单:
-% \begin{enumerate}
-% \item SimSun,中易宋体
-% \item SimHei,中易黑体
-% \item KaiTi,中易楷体
-% \item STXingkai,华文行楷
-% \item FZXiaoBiaoSong-B05S,方正小标宋简体
-% \item FZDaBiaoSong-B06S,方正大标宋简体(仅硕博封面需要)
-% \end{enumerate}
%
%
% \StopEventually{\PrintChanges\PrintIndex}
@@ -681,9 +694,9 @@
% \section{实现细节}\label{sec:implementation}
% \subsection{文档类信息与选项}
% \begin{macrocode}
-%<class|cover>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<*class>
-\ProvidesClass{buctthesis}[2022/07/29 v1.4.1 BUCT Thesis Template]
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesClass{buctthesis}[2023/05/20 v2.0 BUCT Thesis Template]
% \end{macrocode}
%
% 装载 \pkg{ifxetex} 宏包,并通过 \cs{RequireXeTeX} 命令检查编译命令。
@@ -759,18 +772,19 @@
% \begin{macro}{\buct@def@key}
% 定义用于定义论文相关信息的内部命令。例如:
% \begin{latex}
-% \buct@def@key{ctitle}
+% \buct@def@key{ChineseTitle}
% \end{latex}
% 相当于:
% \begin{latex}
-% \newcommand{\ctitle}[1]{\newcommand{\buct@ctitle}{#1}}
-% \define@key{buct}{ctitle}{\ctitle{#1}}
+% \newcommand{\ChineseTitle}[1]{\newcommand{\buct@ChineseTitle}{#1}}
+% \define@key{buct}{ChineseTitle}{\ChineseTitle{#1}}
% \end{latex}
%
+% 这个命令我们让它能接受两个参数,其中第一个必选参数为选项的键名称,后一个可选参数则是选项的默认值。
% \begin{macrocode}
-\newcommand{\buct@def@key}[1]{
+\NewDocumentCommand{\buct@def@key}{ m o }{
\@namedef{#1}##1{\@namedef{buct@#1}{##1}}
- \define@key{buct}{#1}{\@nameuse{#1}{##1}}
+ \define@key{buct}{#1}[#2]{\@nameuse{#1}{##1}}
}
% \end{macrocode}
% \end{macro}
@@ -779,21 +793,27 @@
% 定义 \cs{buctsetup} 命令作为接口,方便在主文件中设置。
% \begin{macrocode}
\newcommand{\buctsetup}[1]{\kvsetkeys{buct}{#1}}
-\buct@def@key{ctitle}
-\buct@def@key{etitle}
-\buct@def@key{cauthor}
-\buct@def@key{class}
+\buct@def@key{ChineseTitle}
+\buct@def@key{EnglishTitle}
+\buct@def@key{ChineseTitleLineA}
+\buct@def@key{ChineseTitleLineB}
+\buct@def@key{ChineseTitle}
+\buct@def@key{author}
\buct@def@key{studentid}
-\buct@def@key{school}
-\buct@def@key{major}
\buct@def@key{supervisor}
-\buct@def@key{msupervisor}
+\buct@def@key{major}
+\buct@def@key{date}[\the\year-\two@digits{\month}-\two@digits{\day}]
+\ifbuct@bachelor
+ \buct@def@key{school}
+ \buct@def@key{class}
+ \buct@def@key{msupervisor}
+\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\buct@def@sep@key}
-% 对于 \opt{ckeywords} 等键接受的是以西文逗号“,”分隔的值,上面的定义就不合适了。
-% 所以要对值做分隔。相比 \cs{buct@def@key} 这里多一个参数,即为在论文中的分隔符。
+% 对于 \opt{ChineseKeywords} 等键接受的是以西文逗号“,”分隔的值,上面的定义就不合适了。
+% 所以要对值做分隔。相比 \cs{buct@def@key} 这里的后一个参数为必选项,即为在论文中的分隔符。
% 此处的宏展开可参考\href{https://www.zhihu.com/question/26916597}{这篇讨论}。
% \begin{macrocode}
\newcommand{\buct@def@sep@key}[2]{%
@@ -809,8 +829,8 @@
}
\define@key{buct}{#1}{\@nameuse{#1}{##1}}%
}
-\buct@def@sep@key{ckeywords}{\buct@ckeywords@sep}
-\buct@def@sep@key{ekeywords}{\buct@ekeywords@sep}
+\buct@def@sep@key{ChineseKeywords}{\buct@ChineseKeywords@sep}
+\buct@def@sep@key{EnglishKeywords}{\buct@EnglishKeywords@sep}
% \end{macrocode}
% \end{macro}
% \subsection{载入宏包}
@@ -868,6 +888,15 @@
\RequirePackage{tikz}
% \end{macrocode}
%
+% 绘制封面的一些宏包。\pkg{calc} 能够方便地计算文本长度;
+% \pkg{textpos} 配合 \pkg{tikz},这样就能在页面的任何地方作画了。
+% 另外, 在 ctex 宏集 2.5 版本之后需要手动载入\pkg{xeCJKfntef} 。
+% \begin{macrocode}
+\RequirePackage{calc}
+\RequirePackage[absolute,overlay]{textpos}
+\RequirePackage{xeCJKfntef}
+% \end{macrocode}
+%
% 代码块环境。
% \begin{macrocode}
\RequirePackage{listings}
@@ -899,6 +928,11 @@
\RequirePackage{xpatch}
% \end{macrocode}
%
+% 判断语句。
+% \begin{macrocode}
+\RequirePackage{xifthen}
+% \end{macrocode}
+%
% 在页面画上标尺、边框线,和标注行号。仅当开启调试时。
% \begin{macrocode}
\ifbuct@debugger
@@ -959,7 +993,7 @@
% \end{macrocode}
% \end{macro}
%
-% 对于西文正文,全部统一设置为Times New Roman,以尽可能避免格式审查问题。
+% 其次,对于西文,全部统一设置为 Times New Roman,以尽可能避免格式审查问题。
% \begin{macrocode}
\setmainfont{Times New Roman}
\setsansfont{Times New Roman}
@@ -1099,7 +1133,7 @@
\newcommand\buct@dcl@sign{本人签名:\hspace{14em}年\hspace{2.5em}月\hspace{2.5em}日}
\newcommand\buct@task@title{本科生毕业设计(论文)任务书}
\newcommand\buct@task@pdf{任务书}
- \newcommand\buct@task@ctitle{设计(论文)题目:}
+ \newcommand\buct@task@ChineseTitle{设计(论文)题目:}
\newcommand\buct@task@school{学院:}
\newcommand\buct@task@major{专业:}
\newcommand\buct@task@class{班级:}
@@ -1112,10 +1146,10 @@
\newcommand\buct@task@itemd{4.进度安排}
\newcommand\buct@cabstract@title{摘要}
\newcommand\buct@eabstract@title{ABSTRACT}
- \newcommand\buct@ckeywords@title{关键词:}
- \newcommand\buct@ekeywords@title{Keywords:~}
- \newcommand\buct@ckeywords@sep{\quad}
- \newcommand\buct@ekeywords@sep{; }
+ \newcommand\buct@ChineseKeywords@title{关键词:}
+ \newcommand\buct@EnglishKeywords@title{Keywords:~}
+ \newcommand\buct@ChineseKeywords@sep{\quad}
+ \newcommand\buct@EnglishKeywords@sep{; }
\newcommand\buct@supervisor@title{指导教师:}
\newcommand\buct@content@title{目\hspace{\ccwd}录}
\newcommand\buct@dfigurename{设计图纸}
@@ -1156,13 +1190,13 @@
\newcommand\buct@sign@supervisor{导师签名:\rule{7em}{.4pt}\qquad{日期:}\rule{7em}{.4pt}}
\newcommand\buct@cabstract@title{摘\hspace{\ccwd}要}
\newcommand\buct@eabstract@title{ABSTRACT}
- \newcommand\buct@ckeywords@title{关键词:}
- \newcommand\buct@ekeywords@title{KEY WORDS:~}
- \newcommand\buct@ckeywords@sep{,}
- \newcommand\buct@ekeywords@sep{,~}
+ \newcommand\buct@ChineseKeywords@title{关键词:}
+ \newcommand\buct@EnglishKeywords@title{KEY WORDS:~}
+ \newcommand\buct@ChineseKeywords@sep{,}
+ \newcommand\buct@EnglishKeywords@sep{,~}
\newcommand\buct@content@title{目\hspace{\ccwd}录}
\newcommand\buct@econtent@chapter{Chapter~}
- \newcommand\econtentsname{Contents}
+ \newcommand\buct@econtentsname{Contents}
\newcommand\buct@deno@title{符号和缩略词说明}
\newcommand\buct@ack@title{致谢}
\newcommand\buct@eack@title{Acknowledgement}
@@ -1224,6 +1258,312 @@
% \end{macrocode}
% \end{macro}
%
+%% \subsection{封面}
+% 由于学校会统一印制封面,这里仅提供本科和硕博的一个参考实现。
+% 并且由于学校所给的参考封面每年都有细微的变动,由本模板所生成的封面上文字间距不能保证与参考一致。
+% 还请留心。
+%
+% 标尺,用于调试。手动取消注释来开启。
+% \begin{macrocode}
+% \usepackage[unit=cm,type=upperleft,hshift=0cm,vshift=0cm]{fgruler}
+% \end{macrocode}
+%
+% \begin{macro}{\buct@title@ul}
+% 定义下划线命令,这里利用了 \pkg{calc} 宏包的 \cs{widthof} 命令,
+% 取 \cs{buct@ChineseTitleLineA} (即首行标题)的长度,用以固定下划线的长度。
+% 文本末尾加一个 \cs{enspace} 会让横线右端稍长于最后一个文字,显得更美观一些。
+% \begin{macrocode}
+\newcommand\buct@title@ul[1]{%
+ \CJKunderline{\makebox[\widthof{\buct@ChineseTitleLineA\enspace}][l]{#1}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buct@major@ul}
+% 但是对于本科封面而言,“专业”“学生”“指导教师”与“题目”之间有一大段空白,
+% 可以看做相互独立的表格。因此,这里我们让横线的宽度取所填入专业文本的宽度。
+% 使用 \cs{quad} 会让横线右端长于最后一个文字更多一点,更贴合封面的参考样例。
+% \begin{macrocode}
+\newcommand\buct@major@ul[1]{%
+ \CJKunderline{\makebox[\widthof{\buct@major\quad}][c]{#1}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\buct@format@date}
+% 日期格式处理,将输入的 \cs{buct@date} 拆分。
+% \begin{macrocode}
+\newcommand\buct@format@date[1]{%
+ \edef\buct@@date{\buct@date}%
+ \def\buct@@process@date##1-##2-##3\@nil{%
+ #1{##1}{##2}{##3}%
+ }%
+ \expandafter\buct@@process@date\buct@@date\@nil
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \cs{@zhdate} 命令接受三个数字。
+% 本科的日期要求比较简单,直接输出对应的数字即可。
+% 但是样例所给的数字前后有一些空白,我们用 \cs{makebox} 来定格它。
+% \begin{macrocode}
+\newcommand\@zhdate[3]{%
+ \bfseries\zhkai
+ \ifbuct@bachelor
+ \zihao{4}
+ #1年\makebox[1.5em]{#2}月\makebox[1.5em]{#3}日
+% \end{macrocode}
+%
+% 如果是硕博,则将“年”转换为中文数字串,“月”和“日”转换为中文数字;其中“年”中的 0 映射为“〇”而非“零”。
+% \begin{macrocode}
+ \else
+ \Large\ziju{.1}%
+ 日\hspace{1.5\ccwd}期:\zhdigits{#1}年\zhnumber{#2}月\zhnumber{#3}日%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macro}{\buct@makecover}
+% 接下来是重头戏:定义 \cs{buct@makecover} 命令来生成封面。
+% \begin{macrocode}
+\newcommand{\buct@makecover}{%
+% \end{macrocode}
+%
+% 首先是页边距和页眉页脚。
+% 经过测量,各边距值比正文部分都要小;本科暂与硕博设置一致。
+% \begin{macrocode}
+ \newgeometry{
+ top = 2.1cm, bottom = 2.2cm,
+ left = 2cm, right = 2cm,
+ headheight = 0cm, footskip = 0cm
+ }
+% \end{macrocode}
+% 清空页眉、页脚。
+% \begin{macrocode}
+ \thispagestyle{empty}
+% \end{macrocode}
+%
+% 其次是字体。关于字体的检查和定义放在了文档命令 \cs{makecover} 的定义中。(见本节末尾)
+% 在这里,我们只开启伪粗体,并且应设置得比正文更粗一些。
+% \begin{macrocode}
+ \xeCJKsetup{EmboldenFactor=2.3}
+% \end{macrocode}
+%
+% 封面右上角的“单位代码”和“学号”,先分别设置格式。
+% \begin{macrocode}
+ \begin{table}[h]
+ \raggedleft
+ \ifbuct@bachelor
+ \songti\zihao{5}
+ \else
+ \renewcommand{\arraystretch}{1.3}\large
+ \fi
+% \end{macrocode}
+%
+% 用一个无线表格来排版文字。需要注意二者都要以中文字体来书写数字。
+% 注意本科封面的表格右端并不是严格顶头,所以这里空开两个字符的宽度。
+% \begin{macrocode}
+ \begin{tabular}{l@{}l}
+ \ifbuct@bachelor%
+ 班\hspace{2\ccwd}级&:\CJKfamily+{zhsong}\buct@class\hspace*{2\ccwd}\\
+ 学\hspace{2\ccwd}号&:\CJKfamily+{zhsong}\buct@studentid\hspace*{2\ccwd}\\
+ \else%
+ \xbsong 单位代码 & :\CJKfamily+{zhsong}\mbox{10010}\\
+ \xbsong 学\hspace{2\ccwd}号 & :\CJKfamily+{zhsong}\mbox{\buct@studentid}\\
+ \fi
+ \end{tabular}
+ \end{table}
+ \ifbuct@bachelor\vspace{3bp}\else\vspace{26bp}\fi
+% \end{macrocode}
+%
+% 校徽与校名。前者是插图,后者是文字。
+% 需要注意,本科和硕博封面的“北京化工大学”几个字的字距是有差别的。
+% 由于并未设置居中,所以本科还需要手动空一点距离让文本近似居于页面中央。
+% \begin{macrocode}
+ \begin{minipage}[c][][c]{2.35cm}
+ \includegraphics[width = 2.35cm]{figure/BUCT-badge.pdf}
+ \end{minipage}
+ \qquad
+ \begin{minipage}[c][2.35cm][c]{9cm}
+ \xingkai
+ \ifbuct@bachelor
+ \ziju{0.1}\hspace*{0.8\ccwd}\zihao{-0}
+ \else
+ \ziju{-0.02}\zihao{0}
+ \fi
+ {北京化工大学}
+ \end{minipage}
+ \ifbuct@bachelor\vspace{12bp}\else\vspace{18bp}\fi
+% \end{macrocode}
+%
+% 标题。本科的标题中的“(论文)”使用了半角括号,字体使用 Times New Roman Bold。
+% 但按照排版规范,模板使用全角标点和对应的中文字体。
+% 对于这项更改,我们使用 \pkg{xeCJK} 里的命令来吃掉一点括号的空白。
+%
+% 注:\cs{punctstyle\{banjiao\}} 和 \cs{xeCJKsetup\{PunctStyle = banjiao\}} 和 \cs{ctexset\{punct = banjiao\}}是一样的。
+% \begin{macrocode}
+ \begin{center}
+ \ifbuct@bachelor
+ \ziju{0.15}\xbsong\zihao{-0}\CJKfamily+{}{%
+ \punctstyle{banjiao}毕业设计(论文)% (论文)
+ }
+ \else%
+ %\ziju{-0.05}
+ \dbsong\fontsize{38bp}{60bp}\selectfont
+ \ifbuct@master{硕}\else{博}\fi{}士研究生学位论文
+ \fi
+ \end{center}
+% \end{macrocode}
+%
+% 对于论文标题之下的部分,我们将本科和硕博分开设置。
+%
+% 本科封面有两条横贯页面的横线,位于纸张顶部向下 \SI{10}{\centi\metre} 左右,
+% 我们用 \pkg{textpos} 的 \env{textblock} 环境定位,用 \pkg{tikz} 将它们画出来。
+% 两条线的间距取 \SI{0.2}{\centi\metre}。
+% \begin{macrocode}
+ \ifbuct@bachelor
+ \setlength{\TPHorizModule}{1cm}
+ \setlength{\TPVertModule}{1cm}
+ \begin{textblock}{0}(0,10)
+ \noindent%
+ \tikz[line width=1.2pt] \draw (0,0) -- (21,0) (0,0.2) -- (21,0.2);
+ \end{textblock}
+ \vspace{72bp}
+% \end{macrocode}
+%
+% 接下来书写题目。先使用 \pkg{xeCJK} 的功能来禁用下划线的断点,并调整其粗细。
+% \begin{macrocode}
+ \begin{center}
+ \xeCJKsetup{
+ underline = {
+ skip = false,
+ thickness = 1.4pt,
+ }
+ }
+% \end{macrocode}
+%
+% 然后是“题目”及其内容。
+% 题目需要手动断行,且长度控制在 \SI{36}{em} 以内。
+% 因表格本身的横线与文字间距较大,这里采用下划线的方式来划线。
+% 注意这里我们要判断题目是否有第二行(即 \cs{buct@ChineseTitleLineB} 是否有值)
+% 来输出一行还是两行题目。
+% \begin{macrocode}
+ \renewcommand{\arraystretch}{2}
+ \begin{tabular}{%
+ >{\zihao{-2}\xbsong}l
+ >{\zihao{3}\bfseries}l
+ }
+ 题\hspace{\ccwd}目 & \buct@title@ul{\buct@ChineseTitleLineA}\\
+ \ifthenelse{\equal{\buct@ChineseTitleLineB}{}}{\relax}{
+ & \buct@title@ul{\buct@ChineseTitleLineB}\\
+ }
+ \end{tabular}
+ \vskip144bp\zihao{3}
+% \end{macrocode}
+%
+% 使用一个表格来排版论文的信息,如前定义 \cs{buct@major@ul} 所述,这里横线的宽度取“专业”内容的宽度。
+% \begin{macrocode}
+ \begin{tabular}{
+ >{\begin{CJKfilltwosides}[b]{4\ccwd}\xbsong}r%
+ <{\end{CJKfilltwosides}}%
+ @{}>{\enspace\zihao{4}\bfseries}l%
+ <{\vspace{.2em}}%
+ }
+ 专业 & \buct@major@ul{\buct@major}\\
+ 学生 & \buct@major@ul{\buct@author}\\
+ 指导教师 & \buct@major@ul{\buct@supervisor}\\
+ \end{tabular}
+ \end{center}
+% \end{macrocode}
+%
+% 在页面底部书写日期。
+% \begin{macrocode}
+ \vfill{%
+ \begin{center}%
+ \buct@format@date{\@zhdate}%
+ \end{center}%
+ }
+% \end{macrocode}
+%
+% 硕博论文的处理方式与本科相似。
+% \begin{macrocode}
+ \else
+ \vspace{76bp}
+ \begin{center}
+ \xeCJKsetup{
+ underline = {
+ skip = false,
+ thickness = 1.2pt,
+ }
+ }
+ \renewcommand{\arraystretch}{2.7}
+ \begin{tabular}{
+ >{\fontsize{20}{36}\selectfont\begin{CJKfilltwosides}[b]{4\ccwd}\sffamily\bfseries}r%
+ <{\end{CJKfilltwosides}}%
+ @{}>{\enspace\zihao{3}\bfseries}l%
+ <{\vspace{.2em}}%
+ }
+ 题目 & \buct@title@ul{\buct@ChineseTitleLineA}\\
+ \ifthenelse{\equal{\buct@ChineseTitleLineB}{}}{\relax}{
+ & \buct@title@ul{\buct@ChineseTitleLineB}\\
+ }
+ 专业 & \buct@title@ul{\zihao{4}\buct@major}\\
+ 研究生 & \buct@title@ul{\zihao{4}\buct@author}\\
+ 指导教师 & \buct@title@ul{\zihao{4}\buct@supervisor}\\
+ \end{tabular}
+ \end{center}
+ \vfill{%
+ \begin{center}%
+ \buct@format@date{\@zhdate}%
+ \end{center}%
+ }
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makecover}
+% 这里定义文档命令 \cs{makecover},接受一个可选参数用于插入扫描页,否则调用 \cs{buct@makecover} 生成封面。
+% \begin{macrocode}
+\NewDocumentCommand{\makecover}{ o }{%
+ \hypertarget{cover}{}
+ \pdfbookmark{封面}{cover}
+ \IfNoValueTF{#1}{
+% \end{macrocode}
+% 在不插入扫描页的情况下调用时,需要先检查字体存在情况。
+% 因为只有硕博论文封面才会用到方正大标宋,为简单起见,这里只检查方正小标宋。
+% 如果存在方正小标宋,则默认也存在方正大标宋、华文行楷和中易楷体,并定义上述所有字体。
+% 至于西文字体则不做设置,也就是说沿用模板默认的 Times New Roman。
+% 事实上该字体只会作用于本科封面的数字日期,除此之外的数字(如学号)使用中文字体。
+% \begin{macrocode}
+ \IfFontExistsTF{FZXiaoBiaoSong-B05S}{%
+ \newCJKfontfamily[xbsong] \xbsong {FZXiaoBiaoSong-B05S}
+ \newCJKfontfamily[dbsong] \dbsong {FZDaBiaoSong-B06S}
+ \newCJKfontfamily[xingkai]\xingkai{STXingkai}
+ \newCJKfontfamily[zhkai] \zhkai {KaiTi} [AutoFakeBold]
+% \end{macrocode}
+% 只有当存在方正小标宋时,令 \cs{makecover} 调用 \cs{buct@makecover},否则输出空白页。
+% \begin{macrocode}
+ \buct@makecover
+ }{
+ \cleardoublepage
+ }
+
+ }{%
+% \end{macrocode}
+% 在选择插入扫描页的情况下(命令后跟了一个可选参数)则无需检查和设置字体,直接插入 PDF 文件即可。
+% \begin{macrocode}
+ \includepdf[pages=-]{#1}
+ }
+% \end{macrocode}
+% 输出封面完成后,页边距从封面中恢复。
+% \begin{macrocode}
+\restoregeometry
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsection{前置部分}
% \begin{macro}{\buct@pdfmark}
% 为了方便查看,模板将前置部分编入PDF书签,实现跳转。
@@ -1280,12 +1620,17 @@
% \subsubsection{任务书}
% \begin{environment}{taskbook}
% 环境 \env{taskbook} 用于插入任务书部分,该部分排在诚信声明之后。
+% 如果环境后带星号,则生成的任务书清空页眉和页脚。
+%
+% 留意 \pkg{xparse} 宏包的 \cs{NewDocumentEnvironment} 还没法一次性定义带或不带星号的环境
+% ——比如 \env{tabular} 和 \env{tabular*}。
% \begin{macrocode}
\ifbuct@bachelor
- \newenvironment{taskbook}{%
+ \NewDocumentEnvironment{taskbook}{ s }{%
\cleardoublepage%
\buct@pdfmark{\buct@task@pdf}{taskbook}%
\section*{\buct@task@title}%
+ \IfBooleanTF{#1}{\pagestyle{empty}}{}%
}{\clearpage}
% \end{macrocode}
% \end{environment}
@@ -1307,12 +1652,12 @@
\noindent%
\begin{minipage}{\textwidth}%
\punctstyle{plain}\linespread{1.94}%
- \buct@task@ctitle\buct@ul[27em]{\buct@ctitle}\\[3pt]
+ \buct@task@ChineseTitle\buct@ul[27em]{\buct@ChineseTitle}\\[3pt]
\IfBooleanTF{#1}{% less lines break
\buct@task@school\buct@ul[10em]{\buct@school}\quad
\buct@task@major\buct@ul[10em]{\buct@major}\quad
\buct@task@class\buct@ul[5em]{\buct@class}\\[3pt]
- \buct@task@student\buct@ul[5em]{\buct@cauthor}\quad
+ \buct@task@student\buct@ul[5em]{\buct@author}\quad
\buct@task@supervisor\buct@ul[6em]{\buct@supervisor}\quad
\buct@task@msupervisor\buct@ul[4em]{\buct@msupervisor}%
}{% more lines break
@@ -1324,7 +1669,7 @@
\buct@task@school\buct@ul[15em]{\buct@school}\qquad
\buct@task@major\buct@ul[13em]{\buct@major}\\[3pt]
\buct@task@class\buct@ul[15em]{\buct@class}\qquad
- \buct@task@student\buct@ul[13em]{\buct@cauthor}\\[3pt]
+ \buct@task@student\buct@ul[13em]{\buct@author}\\[3pt]
\buct@task@supervisor\buct@ul[8em]{\buct@supervisor}\qquad
\buct@task@msupervisor\buct@ul[10em]{\buct@msupervisor}%
}
@@ -1377,27 +1722,27 @@
\cleardoublepage
\buct@pdfmark{\buct@cabstract@title}{cabstract}
\begin{center}
- \buct@abs@titfont\buct@ctitle
+ \buct@abs@titfont\buct@ChineseTitle
\vskip22pt
- \buct@abs@infofont\buct@cauthor\quad%
+ \buct@abs@infofont\buct@author\quad%
\buct@class\quad\buct@studentid\quad%
\buct@supervisor@title\buct@supervisor%
\vskip22pt
\buct@abs@absfont\buct@cabstract@title
\end{center}\par\vspace{18pt}
- }{\vskip1em\noindent\buct@keywordsfont\buct@ckeywords@title\buct@ckeywords}
+ }{\vskip1em\noindent\buct@keywordsfont\buct@ChineseKeywords@title\buct@ChineseKeywords}
\else
\newenvironment{cabstract}{%
\cleardoublepage
- \buct@pdfmark{\buct@cabstract@title}{cabstract}\markboth{\buct@cabstract@title}{}
+ \buct@pdfmark{\buct@cabstract@title}{cabstract}\markboth{\buct@cabstract@title}{\buct@cabstract@title}
\begin{center}
- \buct@abs@titfont\buct@ctitle
+ \buct@abs@titfont\buct@ChineseTitle
\vskip24pt
\buct@abs@absfont\buct@cabstract@title
\end{center}\par\vspace{12pt}
\buct@abs@textfont
}{\vskip24pt%
- \noindent\buct@keywords@titfont\buct@ckeywords@title\buct@keywords@font\buct@ckeywords}
+ \noindent\buct@keywords@titfont\buct@ChineseKeywords@title\buct@keywords@font\buct@ChineseKeywords}
\fi
% \end{macrocode}
% \end{environment}
@@ -1410,24 +1755,24 @@
\cleardoublepage%
\buct@pdfmark{\buct@eabstract@title}{abstracten}
\begin{center}
- \buct@abs@titfonten\buct@etitle\vskip22pt
+ \buct@abs@titfonten\buct@EnglishTitle\vskip22pt
\buct@abs@absfonten\buct@eabstract@title
\end{center}
\par\vspace{22pt}
- }{\vskip1em\noindent\buct@keywordsfonten \buct@ekeywords@title\buct@ekeywords}
+ }{\vskip1em\noindent\buct@keywordsfonten \buct@EnglishKeywords@title\buct@EnglishKeywords}
\else
\newenvironment{eabstract}{%
\cleardoublepage%
- \buct@pdfmark{\buct@eabstract@title}{eabstract}\markboth{\buct@eabstract@title}{}
+ \buct@pdfmark{\buct@eabstract@title}{eabstract}\markboth{\buct@eabstract@title}{\buct@eabstract@title}
\begin{center}
\setlength{\leftskip}{3em plus 1em minus .5em}
\setlength{\rightskip}{3em plus 1em minus .5em}
- \buct@abs@titfonten\buct@etitle\vskip76pt
+ \buct@abs@titfonten\buct@EnglishTitle\vskip76pt
\buct@abs@absfonten\buct@eabstract@title
\end{center}\par\vspace{40pt}
\buct@abs@textfont
}{\vskip48pt%
- \noindent\buct@keywords@titfonten\buct@ekeywords@title\buct@keywords@fonten\buct@ekeywords}
+ \noindent\buct@keywords@titfonten\buct@EnglishKeywords@title\buct@keywords@fonten\buct@EnglishKeywords}
\fi
% \end{macrocode}
% \end{environment}
@@ -1451,7 +1796,7 @@
\cleardoublepage
\pdfbookmark{\contentsname}{toc}%
\chapter*{\buct@toc@tocfont\buct@content@title}%
- \ifbuct@bachelor\relax\else\markboth{\buct@content@title}\fi
+ \ifbuct@bachelor\relax\else\markboth{\buct@content@title}{\buct@content@title}\fi
\@starttoc{toc}
}
% \end{macrocode}
@@ -1464,10 +1809,10 @@
\ifbuct@bachelor\relax\else
\newcommand\tableofcontentsEN{%
\cleardoublepage
- \pdfbookmark{\econtentsname}{toce}%
+ \pdfbookmark{\buct@econtentsname}{toce}%
\chapter*{%
- \em\econtentsname%
- \ifbuct@bachelor\relax\else\markboth{\econtentsname}\fi%
+ \em\buct@econtentsname%
+ \ifbuct@bachelor\relax\else\markboth{\buct@econtentsname}{\buct@econtentsname}\fi%
}%
\@starttoc{toce}
}
@@ -1533,11 +1878,11 @@
{\buct@toc@chapfont\vspace{3pt}}
{\thecontentslabel\quad}{}
{\titlerule*[.4em]{$\cdot$}\bfseries\contentspage}
- \titlecontents{section}[2em]
+ \titlecontents{section}[2.5em]
{\buct@toc@secfont\vspace{-3pt}}
{\thecontentslabel\quad}{}
{\titlerule*[.5em]{$\cdot$}\contentspage}
- \titlecontents{subsection}[5em]
+ \titlecontents{subsection}[4em]
{\buct@toc@ssecfont\vspace{-3pt}}
{\thecontentslabel\quad}{}
{\titlerule*[1em]{$\cdot$}\contentspage}
@@ -1568,7 +1913,7 @@
\addcontentsline{toc}{chapter}{\bibname}
\ifbuct@bachelor\relax\else
\addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@ebib@title}
- \markboth{\bibname}
+ \markboth{\bibname}{\bibname}
\fi
}
% \end{macrocode}
@@ -1722,7 +2067,7 @@
% 使用 \pkg{enumitem} 宏包分别设置编号列表、无编号列表、描述列表环境的间距。
% 这里将三种列表默认增加的垂直间距全部清除,即各行间距与正文行间距相同,以符合中文习惯。
%
-% 如果一级列表环境作为标题(对应《本科规范》中的五级标题,即带圈序号),
+% 如果一级列表环境作为标题(对应《本科生规范》中的五级标题,即带圈序号),
% 则不设置加粗、不增加段间距。由于列表间的垂直间距减小了,所以
% 相应地稍微调小列表序号和文字之间的距离,使得文字更紧凑。
%
@@ -1855,12 +2200,10 @@
% 在“符号说明表”中我们嵌套了 \env{longtable} 环境,但其中的字号仍应为小四号。
% 因此这里需要保留原先的定义。
% \begin{macrocode}
-\ifbuct@bachelor\relax\else
- \let\oldlongtable\longtable
- \let\endoldlongtable\endlongtable
- \def\longtable{\zihao{5}\oldlongtable}
- \AtEndEnvironment{longtable}{\normalsize}
-\fi
+\let\oldlongtable\longtable
+\let\endoldlongtable\endlongtable
+\def\longtable{\zihao{5}\oldlongtable}
+\AtEndEnvironment{longtable}{\normalsize}
% \end{macrocode}
%
% 设置插图的文件路径。
@@ -2005,7 +2348,7 @@
\newenvironment{achievements}{%
\cleardoublepage
\chapter*{\buct@achi@title}
- \markboth{\buct@achi@title}{}
+ \markboth{\buct@achi@title}{\buct@achi@title}
\addcontentsline{toc}{chapter}{\buct@achi@title}
\addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@eachi@title}
}{}
@@ -2018,7 +2361,7 @@
\newenvironment{resume}{%
\cleardoublepage
\chapter*{\buct@resu@title}
- \markboth{\buct@resu@title}{}
+ \markboth{\buct@resu@title}{\buct@resu@title}
\addcontentsline{toc}{chapter}{\buct@resu@title}
\addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@eresu@title}
}{}
@@ -2032,7 +2375,7 @@
\newenvironment{acknowledgement}{%
\chapter*{\buct@ack@title}
\ifbuct@bachelor\relax\else
- \markboth{\buct@ack@title}{}
+ \markboth{\buct@ack@title}{\buct@ack@title}
\addcontentsline{toce}{chapter}{\buct@toce@chapfont\buct@eack@title}
\fi
\addcontentsline{toc}{chapter}{\buct@ack@title}
@@ -2052,7 +2395,7 @@
\addcontentsline{toc}{chapter}{\buct@deno@title}
\else
\buct@pdfmark{\buct@deno@title}{denotation}
- \markboth{\buct@deno@title}{}
+ \markboth{\buct@deno@title}{\buct@deno@title}
\fi
\vspace{-1em}%
\begin{oldlongtable}[c]{l@{\extracolsep{3em}}p{#1}}
@@ -2135,374 +2478,16 @@
% \end{macrocode}
%
%
-% \subsection{封面}
-% 由于学校会统一印制封面,这里仅提供本科和硕博的一个参考实现。
-% 并且由于学校所给的参考封面每年都有细微的变动,由本模板所生成的封面上文字间距不能保证与参考一致。
-% 还请留心。
-% \begin{macrocode}
-%<*cover>
-\ProvidesClass{buctcover}[2022/06/21 Cover Maker for BUCTthesis]
-% \end{macrocode}
-% 和论文本体一样,目前只支持 \XeLaTeX\ 引擎编译封面,其余设置基本一致。
-% \begin{macrocode}
-\RequirePackage{ifxetex}
-\RequireXeTeX
-\RequirePackage{kvoptions}
-\SetupKeyvalOptions{
- family = buct,
- prefix = buct@,
- setkeys = \kvsetkeys,
-}
-\newif\ifbuct@bachelor\buct@bachelorfalse
-\newif\ifbuct@master\buct@masterfalse
-\newif\ifbuct@doctor\buct@doctorfalse
-\define@key{buct}{type}{\expandafter\csname buct@#1true\endcsname}
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}}
-\ProcessKeyvalOptions*
-\PassOptionsToPackage{quiet}{xeCJK}
-\LoadClass[zihao=-4]{ctexbook}
-% \end{macrocode}
-%
-% 封面的 \opt{type} 对于三种学位类型都能支持,但是必须选择其中的一项。
-% \begin{macrocode}
-\ifbuct@bachelor\relax\else
- \ifbuct@master\relax\else
- \ifbuct@doctor\relax\else
- \ClassError{buctthesis}{%
- Specified thesis type is obligatory: \MessageBreak%
- type = [ bachelor | master | doctor ]%
- }{}
-\fi\fi\fi
-% \end{macrocode}
-%
-% 定义用于定义论文相关信息的内部命令。
-% 与 \cls{buctthesis} 不同的是:这里仅能通过 \cs{coversetup} 定义论文信息。
-% 其中 \opt{titleA} 和 \opt{titleB} 分别用于封面标题的第一行与第二行。
-% 由于可能存在只用一行就能写完标题的情况,所以这里不设置后者的默认文本。
-% \begin{macrocode}
-\newcommand{\coversetup}[1]{\kvsetkeys{buct}{#1}}
-\DeclareStringOption[班级未定义]{class}
-\DeclareStringOption[学号未定义]{studentid}
-\DeclareStringOption[题目首行未定义]{titleA}
-\DeclareStringOption{titleB}
-\DeclareStringOption[专业未定义]{major}
-\DeclareStringOption[作者未定义]{author}
-\DeclareStringOption[导师未定义]{supervisor}
-\DeclareStringOption[\the\year-\two@digits{\month}-\two@digits{\day}]{date}
-% \end{macrocode}
-%
-% 页边距设置。经过测量,各边距值比正文部分都要小;本科暂与硕博设置一致。
-% \begin{macrocode}
-\RequirePackage[a4paper,nomarginpar,
- top = 2.1cm, bottom = 2.2cm, left = 2cm, right = 2cm,
- headheight = 0cm, footskip = 0cm
-]{geometry}
-% \end{macrocode}
-%
-% 载入 \pkg{xeCJKfntef} 宏包。在 \pkg{ctex} 宏集 2.5 版本之后需要手动载入。
-% \begin{macrocode}
-\RequirePackage{xeCJKfntef}
-% \end{macrocode}
-%
-% 以下宏包分别用于排版表格、插图,计算标题文本长度,划本科封面线条,
-% 判断语句和添加封面的 PDF 书签。
-% \pkg{textpos} 配合 \pkg{tikz},这样就能在页面的任何地方作画了。
-% \begin{macrocode}
-\RequirePackage{array,graphicx,calc,tikz,xifthen,hyperref}
-\RequirePackage[absolute,overlay]{textpos}
-% \end{macrocode}
-%
-% 清空页眉页脚。
-% \begin{macrocode}
-\pagestyle{empty}
-% \end{macrocode}
-%
-% 字体配置。
-%
-% 开启伪粗体,并且应比正文更粗一些。
-% \begin{macrocode}
-\xeCJKsetup{EmboldenFactor=2.3}
-% \end{macrocode}
-%
-% 各种字体的声明与设置。分别是:中易宋体、中易黑体、华文行楷、中易楷体、方正小标宋和方正大标宋。
-% 后二者需前往方正字库网站下载。
-% \begin{macrocode}
-\setCJKmainfont{SimSun}[AutoFakeBold]
-\setCJKsansfont{SimHei}[AutoFakeBold]
-\newCJKfontfamily[xingkai]\xingkai{STXingkai}
-\newCJKfontfamily[zhkai] \zhkai {KaiTi} [AutoFakeBold]
-\newCJKfontfamily[xbsong] \xbsong {FZXiaoBiaoSong-B05S}
-\newCJKfontfamily[dbsong] \dbsong {FZDaBiaoSong-B06S}
-% \end{macrocode}
-% 设置西文字体。事实上该字体这只会作用于本科封面的数字日期,除此之外的数字(如学号)使用中文字体。
-% \begin{macrocode}
-\setmainfont{Times New Roman}
-% \end{macrocode}
-%
-% 标尺,用于调试。手动取消注释来开启。
-% \begin{macrocode}
-% \usepackage[unit=cm,type=upperleft,hshift=0cm,vshift=0cm]{fgruler}
-% \end{macrocode}
-%
-% \begin{macro}{\buct@title@ul}
-% 定义下划线命令,这里利用了 \pkg{calc} 宏包的 \cs{widthof} 命令,
-% 取 \cs{buct@titleA} (即首行标题)的长度,用以固定下划线的长度。
-% 文本末尾加一个 \cs{enspace} 会让横线右端稍长于最后一个文字,显得更美观一些。
-% \begin{macrocode}
-\newcommand\buct@title@ul[1]{%
- \CJKunderline{\makebox[\widthof{\buct@titleA\enspace}][l]{#1}}
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\buct@major@ul}
-% 但是对于本科封面而言,“专业”“学生”“指导教师”与“题目”之间有一大段空白,
-% 可以看做相互独立的表格。因此,这里我们让横线的宽度取所填入专业文本的宽度。
-% 使用 \cs{quad} 会让横线右端长于最后一个文字更多一点,更贴合封面的参考样例。
-% \begin{macrocode}
-\newcommand\buct@major@ul[1]{%
- \CJKunderline{\makebox[\widthof{\buct@major\quad}][c]{#1}}
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\buct@format@date}
-% 日期格式处理,将输入的 \cs{buct@date} 拆分。
-% \begin{macrocode}
-\newcommand\buct@format@date[1]{%
- \edef\buct@@date{\buct@date}%
- \def\buct@@process@date##1-##2-##3\@nil{%
- #1{##1}{##2}{##3}%
- }%
- \expandafter\buct@@process@date\buct@@date\@nil
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \cs{@zhdate} 命令接受三个数字。
-% 本科的日期要求比较简单,直接输出对应的数字即可。
-% 但是样例所给的数字前后有一些空白,我们用 \cs{makebox} 来定格它。
-% \begin{macrocode}
-\newcommand\@zhdate[3]{%
- \bfseries\zhkai
- \ifbuct@bachelor
- \zihao{4}
- #1年\makebox[1.5em]{#2}月\makebox[1.5em]{#3}日
-% \end{macrocode}
-%
-% 如果是硕博,则将“年”转换为中文数字串,“月”和“日”转换为中文数字;其中“年”中的 0 映射为“〇”而非“零”。
-% \begin{macrocode}
- \else
- \Large\ziju{.1}%
- 日\hspace{1.5\ccwd}期:\zhdigits{#1}年\zhnumber{#2}月\zhnumber{#3}日%
- \fi
-}
-% \end{macrocode}
-%
-% \begin{macro}{\buct@makecover}
-% 接下来是重头戏:定义 \cs{buct@makecover} 命令来生成封面。
-% \begin{macrocode}
-\newcommand{\buct@makecover}{%
-% \end{macrocode}
-%
-% 封面右上角的“单位代码”和“学号”,先分别设置格式。
-% \begin{macrocode}
- \begin{table}[h]
- \raggedleft
- \ifbuct@bachelor
- \songti\zihao{5}
- \else
- \renewcommand{\arraystretch}{1.3}\large
- \fi
-% \end{macrocode}
-%
-% 用一个无线表格来排版文字。需要注意二者都要以中文字体来书写数字。
-% 注意本科封面的表格右端并不是严格顶头,所以这里空开两个字符的宽度。
-% \begin{macrocode}
- \begin{tabular}{l@{}l}
- \ifbuct@bachelor%
- 班\hspace{2\ccwd}级&:\CJKfamily+{zhsong}\buct@class\hspace*{2\ccwd}\\
- 学\hspace{2\ccwd}号&:\CJKfamily+{zhsong}\buct@studentid\hspace*{2\ccwd}\\
- \else%
- \xbsong 单位代码 & :\CJKfamily+{zhsong}\mbox{10010}\\
- \xbsong 学\hspace{2\ccwd}号 & :\CJKfamily+{zhsong}\mbox{\buct@studentid}\\
- \fi
- \end{tabular}
- \end{table}
- \ifbuct@bachelor\vspace{3bp}\else\vspace{26bp}\fi
-% \end{macrocode}
-%
-% 校徽与校名。前者是插图,后者是文字。
-% 需要注意,本科和硕博封面的“北京化工大学”几个字的字距是有差别的。
-% 由于并未设置居中,所以本科还需要手动空一点距离让文本近似居于页面中央。
-% \begin{macrocode}
- \begin{minipage}[c][][c]{2.35cm}
- \includegraphics[width = 2.35cm]{BUCT-badge.pdf}
- \end{minipage}
- \qquad
- \begin{minipage}[c][2.35cm][c]{9cm}
- \xingkai
- \ifbuct@bachelor
- \ziju{0.1}\hspace*{0.8\ccwd}\zihao{-0}
- \else
- \ziju{-0.02}\zihao{0}
- \fi
- {北京化工大学}
- \end{minipage}
- \ifbuct@bachelor\vspace{12bp}\else\vspace{18bp}\fi
-% \end{macrocode}
-%
-% 标题。本科的标题中的“(论文)”使用了半角括号,字体使用 Times New Roman Bold。
-% 按照排版规范,但模板使用全角和对应的中文字体。
-% 对于这项更改,我们使用 \pkg{xeCJK} 里的命令来吃掉一点括号的空白。
-%
-% 注:\cs{punctstyle\{banjiao\}} 和 \cs{xeCJKsetup\{PunctStyle = banjiao\}} 和 \cs{ctexset\{punct = banjiao\}}是一样的。
-% \begin{macrocode}
- \begin{center}
- \ifbuct@bachelor
- \ziju{0.15}\xbsong\zihao{-0}\CJKfamily+{}{%
- \punctstyle{banjiao}毕业设计(论文)% (论文)
- }
- \else%
- %\ziju{-0.05}
- \dbsong\fontsize{38bp}{60bp}\selectfont
- \ifbuct@master{硕}\else{博}\fi{}士研究生学位论文
- \fi
- \end{center}
-% \end{macrocode}
-%
-% 对于论文标题之下的部分,我们将本科和硕博分开设置。
-%
-% 本科封面有两条横贯页面的横线,位于纸张顶部向下 \SI{10}{\centi\metre} 左右,
-% 我们用 \pkg{textpos} 的 \env{textblock} 环境定位,用 \pkg{tikz} 将它们画出来。
-% 两条线的间距取 \SI{0.2}{\centi\metre}。
-% \begin{macrocode}
- \ifbuct@bachelor
- \setlength{\TPHorizModule}{1cm}
- \setlength{\TPVertModule}{1cm}
- \begin{textblock}{0}(0,10)
- \noindent%
- \tikz[line width=1.2pt] \draw (0,0) -- (21,0) (0,0.2) -- (21,0.2);
- \end{textblock}
- \vspace{72bp}
-% \end{macrocode}
-%
-% 接下来书写题目。先使用 \pkg{xeCJK} 的功能来禁用下划线的断点,并调整其粗细。
-% \begin{macrocode}
- \begin{center}
- \xeCJKsetup{
- underline = {
- skip = false,
- thickness = 1.4pt,
- }
- }
-% \end{macrocode}
-%
-% 然后是“题目”及其内容。
-% 题目需要手动断行,且长度控制在 \SI{36}{em} 以内。
-% 因表格本身的横线与文字间距较大,这里采用下划线的方式来划线。
-% 注意这里我们要判断题目是否有第二行(即 \cs{buct@titleB} 是否有值)
-% 来输出一行还是两行题目。
-% \begin{macrocode}
- \renewcommand{\arraystretch}{2}
- \begin{tabular}{%
- >{\zihao{-2}\xbsong}l
- >{\zihao{3}\bfseries}l
- }
- 题\hspace{\ccwd}目 & \buct@title@ul{\buct@titleA}\\
- \ifthenelse{\equal{\buct@titleB}{}}{\relax}{
- & \buct@title@ul{\buct@titleB}\\
- }
- \end{tabular}
- \vskip144bp\zihao{3}
-% \end{macrocode}
-%
-% 使用一个表格来排版论文的信息,如前定义 \cs{buct@major@ul} 所述,这里横线的宽度取“专业”内容的宽度。
-% \begin{macrocode}
- \begin{tabular}{
- >{\begin{CJKfilltwosides}[b]{4\ccwd}\xbsong}r%
- <{\end{CJKfilltwosides}}%
- @{}>{\enspace\zihao{4}\bfseries}l%
- <{\vspace{.2em}}%
- }
- 专业 & \buct@major@ul{\buct@major}\\
- 学生 & \buct@major@ul{\buct@author}\\
- 指导教师 & \buct@major@ul{\buct@supervisor}\\
- \end{tabular}
- \end{center}
-% \end{macrocode}
-%
-% 在页面底部书写日期。
-% \begin{macrocode}
- \vfill{%
- \begin{center}%
- \buct@format@date{\@zhdate}%
- \end{center}%
- }
-% \end{macrocode}
-%
-% 硕博论文的处理方式与本科相似。
-% \begin{macrocode}
- \else
- \vspace{76bp}
- \begin{center}
- \fontsize{20}{36}\selectfont
- \xeCJKsetup{
- underline = {
- skip = false,
- thickness = 1.2pt,
- }
- }
- \begin{tabular}{
- >{\begin{CJKfilltwosides}[b]{4\ccwd}\sffamily\bfseries}r%
- <{\end{CJKfilltwosides}}%
- @{}>{\enspace\zihao{3}\bfseries}l%
- <{\vspace{.2em}}%
- }
- 题目 & \buct@title@ul{\buct@titleA}\\
- \ifthenelse{\equal{\buct@titleB}{}}{\relax}{
- & \buct@title@ul{\buct@titleB}\\
- }
- 专业 & \buct@title@ul{\zihao{4}\buct@major}\\
- 研究生 & \buct@title@ul{\zihao{4}\buct@author}\\
- 指导教师 & \buct@title@ul{\zihao{4}\buct@supervisor}\\
- \end{tabular}
- \end{center}
- \vfill{%
- \begin{center}%
- \buct@format@date{\@zhdate}%
- \end{center}%
- }
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\makecover}
-% 文档命令 \cs{makecover} 类似 \cs{makedeclare},
-% 接受一个可选参数用于插入扫描页,否则调用 \cs{buct@makecover} 生成封面。
-% \begin{macrocode}
-\NewDocumentCommand{\makecover}{ o }{%
- \hypertarget{cover}{}
- \pdfbookmark{封面}{cover}
- \IfNoValueTF{#1}{\buct@makecover}{%
- \includepdf[pages=-]{#1}
- }
-}
-%</cover>
-% \end{macrocode}
-% \end{macro}
-%
-%
% \iffalse
% \begin{macrocode}
%<*manual>
-\ProvidesPackage{manual}[2021/09/25 document style for BUCTthesis]
+\ProvidesPackage{manual}[2023/05/20 document style for BUCTthesis]
\RequirePackage{hypdoc}
\PassOptionsToPackage{AutoFakeSlant}{xeCJK}
\RequirePackage[UTF8, heading, fontset = none, linespread = 1.2,]{ctex}
\RequirePackage[toc]{multitoc}
\RequirePackage{
+ xeCJKfntef,
listings,
float,
tabularx,
@@ -2586,7 +2571,6 @@
\setlist[enumerate]{%
itemindent = 2em,
}
-\newcommand\without\CJKsout
\newcommand\Arg[1]{ \texttt{\char`\{} \meta{#1} \texttt{\char`\}} }
\providecommand\marg[1]{ \Arg{#1} }
\providecommand\oarg[1]{ \texttt[ \meta{#1} \texttt] }
@@ -2596,25 +2580,11 @@
\DeclareRobustCommand{\pkg}{\textsf}
\DeclareRobustCommand{\cls}{\textsf}
\DeclareRobustCommand{\file}{\textsf}
-\def\DescribeOpt{\leavevmode\@bsphack%
- \begingroup\MakePrivateLetters\Describe@Opt}
-\def\Describe@Opt#1{\endgroup%
- \marginpar{\raggedleft\PrintDescribeOpt{#1}}%
- \SpecialOptIndex{#1}\@esphack\ignorespaces}
-\def\PrintDescribeOpt#1{\strut \MacroFont #1\ }
-\def\SpecialOptIndex#1{\@bsphack%
- \begingroup%
- \HD@target%
- \let\HDorg@encapchar\encapchar%
- \edef\encapchar usage{%
- \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}%
- }%
- \@bsphack
- \index{#1\actualchar{\protect\ttfamily#1}
- (option)\encapchar usage}%
- \index{options:\levelchar#1\actualchar%
- {\protect\ttfamily#1}\encapchar usage}\@esphack%
- \endgroup\@esphack}
+\NewDocElement[macrolike = false ,
+ idxtype = opt. ,
+ idxgroup = options ,
+ printtype = \textit{opt.}
+ ]{Opt}{option}
\NewDocumentEnvironment{syntax}{ m }{%
\linespread{1}\xeCJKsetup{PunctStyle=plain}\xeCJKsetup{CJKecglue}%
\cs{#1}\ignorespaces%
@@ -2634,7 +2604,7 @@
}
\hypersetup{
pdftitle = {BUCTthesis:北京化工大学学位论文模板},
- pdfauthor = {Miracle0565},
+ pdfauthor = {The-CCSN},
}
\CodelineIndex
\EnableCrossrefs
diff --git a/macros/xetex/latex/buctthesis/buctthesis.ins b/macros/xetex/latex/buctthesis/source/buctthesis.ins
index 4396724f77..f91d20dd39 100644
--- a/macros/xetex/latex/buctthesis/buctthesis.ins
+++ b/macros/xetex/latex/buctthesis/source/buctthesis.ins
@@ -1,7 +1,8 @@
%%
%% Copyright (C) 2019-2022 by Miracle0565
+%% Copyright (C) 2022-2023 by The-CCSN
%%
-%% https://github.com/Miracle0565/BUCTthesis
+%% https://github.com/the-ccsn/BUCTthesis
%%
%% This file may be distributed and/or modified under
%% the conditions of the LaTeX Project Public License,
@@ -25,7 +26,8 @@
This is a generated file.
-Copyright (C) 2019-\the\year by Miracle0565
+Copyright (C) 2019-2022 by Miracle0565
+Copyright (C) 2022-\the\year by The-CCSN
https://github.com/Miracle0565/BUCTthesis
@@ -48,11 +50,6 @@ of LaTeX version 1999/12/01 or later.
\file{manual.sty} {\from{\jobname.dtx}{manual}}
}
-\generate{
- \usedir{tex/latex/buctthesis/cover}
- \file{buctcover.cls}{\from{\jobname.dtx}{cover}}
-}
-
\obeyspaces
\Msg{*************************************************************}
\Msg{* *}
@@ -61,7 +58,6 @@ of LaTeX version 1999/12/01 or later.
\Msg{* *}
\Msg{* buctthesis.cls *}
\Msg{* munual.sty *}
-\Msg{* buctcover.cls *}
\Msg{* *}
\Msg{* To produce the documentation run the file buctthesis.dtx *}
\Msg{* through LaTeX. *}