% Copyright (c) 2008-2009 solvethis
% Copyright (c) 2010-2016,2018 Casper Ti. Vector
% Public domain.
%
% 使用前请先仔细阅读 pkuthss 和 biblatex-caspervector 的文档，
% 特别是其中的 FAQ 部分和用红色强调的部分。
% 两者可在终端/命令提示符中用
%   texdoc pkuthss
%   texdoc biblatex-caspervector
% 调出。

% 采用了自定义的（包括大小写不同于原文件的）字体文件名，
% 并改动 ctex.cfg 等配置文件的用户请自行加入 nofonts 选项；
% 其它用户不用加入 nofonts 选项，加入之后反而会产生错误。
\documentclass[UTF8,openany]{pkuthss}
% 如果的确须要使脚注按页编号的话，可以去掉后面 footmisc 包的注释。
% 注意：在启用此设定的情况下，可能要多编译一次以产生正确的脚注编号。
%\usepackage[perpage]{footmisc}

% 使用 biblatex 排版参考文献，并规定其格式（详见 biblatex-caspervector 的文档）。
% 这里按照西文文献在前，中文文献在后排序（“sorting = ecnyt”）；
% 若须按照中文文献在前，西文文献在后排序，请设置“sorting = cenyt”；
% 若须按照引用顺序排序，请设置“sorting = none”。
% 若须在排序中实现更复杂的需求，请参考 biblatex-caspervector 的文档。
\usepackage[backend = biber, style = caspervector, utf8]{biblatex}

\usepackage{minted}
\usepackage{multirow}

\setminted{frame=single,linenos=true}
% 对于 linespread 值的计算过程有兴趣的同学可以参考 pkuthss.cls。
\renewcommand*{\bibfont}{\zihao{5}\linespread{1.27}\selectfont}
% 按学校要求设定参考文献列表的段间距。
\setlength{\bibitemsep}{3bp}

% 显示4级标题，TODO: 减少标题级数
\setcounter{secnumdepth}{3}

% 设定文档的基本信息。
\pkuthssinfo{
	cthesisname = {硕士研究生学位论文}, ethesisname = {Master Thesis},
	ctitle = {针对推测式执行侧信道攻击的微处理器的优化设计},
        etitle = {A Microprocessor Design to Defend against
          Speculative Execution Side-channel Attacks},
	cauthor = {蔡思培},
	eauthor = {Cai Sipei},
	studentid = {1601214426},
	date = {二〇一九年六月},
	school = {信息科学技术学院},
	cmajor = {计算机系统结构}, emajor = {Computer Architecture},
	direction = {指令级并行处理和线程级并行处理},
	cmentor = {程旭 教授}, ementor = {Prof.\ Cheng Xu},
	ckeywords = {侧信道攻击，推测式执行，Spectre攻击}, ekeywords = {Side-channel Attack, Speculative Execution, Spectre Attack}
}
% 载入参考文献数据库（注意不要省略“.bib”）。
\addbibresource{thesis.bib}

\newcommand{\Fault}[1]{\texttt{\#}#1}
\newcommand{\Todo}{\textbf{TODO}}
\newcommand{\Fixme}{\textbf{FIXME}}
\usepackage{caption}
\newenvironment{code}{\captionsetup{type=listing}}{}

\begin{document}
	% 以下为正文之前的部分，默认不进行章节编号。
	\frontmatter
	% 此后到下一 \pagestyle 命令之前不排版页眉或页脚。
	\pagestyle{empty}
	% 自动生成封面。
	\maketitle
	% 版权声明。封面要求单面打印，故须新开右页。
	\cleardoublepage
	\include{chap/copy}

	% 此后到下一 \pagestyle 命令之前正常排版页眉和页脚。
	\cleardoublepage
	\pagestyle{plain}
	% 重置页码计数器，用大写罗马数字排版此部分页码。
	\setcounter{page}{0}
	\pagenumbering{Roman}
	% 中西文摘要。
	\include{chap/abs}
	% 自动生成目录。
	\tableofcontents

        \renewcommand*\listfigurename{图目录}
        \listoffigures
        \renewcommand*\listtablename{表目录}
        \listoftables

	% 以下为正文部分，默认要进行章节编号。
	\mainmatter
	% 各章节。
	\include{chap/chap1}
	\include{chap/chap2}
	\include{chap/chap3}
	\include{chap/chap4}
	\include{chap/chap5}
	\include{chap/chap6}

	% 正文中的附录部分。
	\appendix
	% 排版参考文献列表。bibintoc 选项使“参考文献”出现在目录中；
	% 如果同时要使参考文献列表参与章节编号，可将“bibintoc”改为“bibnumbered”。
	\printbibliography[heading = bibintoc]
	% 各附录。
	\include{chap/encl1}

	% 以下为正文之后的部分，默认不进行章节编号。
	\backmatter
	% 致谢。
	\include{chap/ack}
	% 原创性声明和使用授权说明。
	\include{chap/origin}
\end{document}

% vim:ts=4:sw=4
