% -*- coding=utf-8 -*-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 陕西师范大学理工科本科生毕业论文LaTeX模板
% 使用要求:
% 编译器:XeLatex(2019+),建议关闭拼写检查
% 使用方法:
% 编辑/tex目录下的各个tex文件的文件内容
% 最后编译main.tex
% 警告:需要修改配置就编辑main.tex的内容,编辑内容去/tex目录下的各个文件
% 创建日期:2023/01/25
% 最后修改日期:2023/04/21(叶凯帆 改)
% 内容结构:
% 文档类型,宏包管理,页面边距,页眉页脚,章节标题,目录设置,参考文献,定理环境,
% 图表环境,代码环境,引用工具,其余设定,正文内容
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%=================================文档类型=====================================================
% 毕业论文选取ctexbook比较合适
% twoside命令,设置为双面排版,左右页边距会根据奇偶页自动调整
% 12pt,字体大小,默认为10pt
% openright命令,默认openright,即为新的一章在右手边开始
\documentclass[twoside, 12pt, openright,AutoFakeBold]{ctexbook} % 文档类型
% AutoFakeBold(它会传递给 xeCJK 和 fontspec)来打开全局的伪粗体功能,从而可以使用加粗的宋体。因为TeX本就没有粗体形式的宋体,伪粗体可以模仿得很像。
%=================================宏包管理=====================================================
% 和配置有关的宏包在具体的配置区引用,这里只引用正文区用到的宏包
\usepackage{wallpaper} % 封面背景包
\usepackage{amsmath,mathtools,amsthm,amsfonts,amssymb,bm} % AMS包
\usepackage{color} %字体背景颜色包
%=================================页面边距=====================================================
% geometry宏包使用教程:http://www.ctex.org/documents/packages/layout/geometry.htm
% A4纸宽210mm,长297mm
% left + right + textwidth = 210
% top + bottom + textheight = 297
% headheight:页眉文字高度,应当小于等于top
\usepackage{geometry} % 页面边距包
\geometry{%
a4paper,
left=30mm,
right=25mm,
top=28mm,
bottom=25mm,
%textheight=244mm,
%textwidth=155mm,
headheight=21.7mm
}
%=================================页眉页脚=====================================================
% fancy宏包使用教程:http://www.ctex.org/documents/packages/layout/fancyhdr.htm
% fancypagestyle{样式名}可以自定义样式,并通过\pagestyle{样式名}和\thispagestyle{样式名}来使用
% \leftmark可以获取不带星号的chapter标题内容,\rightmark可以获取到不带星号的section标题内容
% L, C, R分别表示左中右,
% E, O分别表示偶数页和奇数页
\usepackage{fancyhdr} % 页眉页脚包
\usepackage{fontspec}
\setmainfont{Times New Roman} % 设置英文字体
\usepackage{setspace} % 段落行距包
\setstretch{1.5} % 设置行距为1.5倍行距
\raggedbottom
\usepackage{indentfirst} %段落首行缩进命令包
\setlength{\parindent}{2em}
\fancypagestyle{myfancy}{%
\fancyhf{} % 清空所有定义
\fancyfoot[CE,CO]{\thepage} % 设置页脚为当前页码
\fancyhead[CE]{陕西师范大学本科毕业论文(设计)} % 设置偶数页居中的页眉为陕西师范大学本科毕业论文(设计)
\fancyhead[CO]{陕西师范大学本科毕业论文(设计)}
%\fancyhead[CO]{\nouppercase{\leftmark}} % 设置奇数页居中的页眉为当前章节名
\renewcommand{\headrule}{% % 重定义headrule来实现双页眉装饰线效果
\makebox[0pt][l]{\rule[.7\baselineskip]{\headwidth}{3pt}}%
\rule[.6\baselineskip]{\headwidth}{0.4pt}\vskip-.8\baselineskip
}
}
%=================================章节标题=====================================================
\usepackage{ctex}
\ctexset{ % 用来定制正文里的标题格式
chapter = {%
name = {},
number = \arabic{chapter}, % 用阿拉伯数字显示章节号
format += {\bfseries\zihao{3} \centering}, % 设置章节标题为3号黑体且居中
beforeskip = 36pt, % 设置章节标题前的垂直间距为36pt,默认为50pt
afterskip = 24pt, % 设置章节标题后的垂直间距为24pt,默认为40pt
fixskip = true % 设置固定间距为true,抑制标题前后的多余间距
},
section = {%
format += {\bfseries\zihao{-3}\raggedright}, % section格式添加一条:左对齐
beforeskip = 18pt,
afterskip = 18pt
},
subsection = {%
format += {\bfseries\zihao{4}\raggedright}, % subsection格式添加一条:左对齐
beforeskip = 12pt,
afterskip = 12pt
}
}
%=================================目录设置=====================================================
% titletoc宏包使用教程:https://blog.csdn.net/golden1314521/article/details/39926135
% https://blog.csdn.net/l_changyun/article/details/87431805
%
\usepackage{titletoc} % 目录定制包
\renewcommand{\contentsname}{目\quad 录} % 通过重新定义目录页的标题使得目录中间加上了空格
% \titlecontents 用来定制目录里的标题格式
\titlecontents% 章
{chapter}[3em]
{\bfseries\vspace*{7pt}}
{\contentslabel{2em}}
{\hspace*{-4em}}
{~\titlerule*[0.6pc]{$.$}~\contentspage}
\titlecontents% 节
{section}[4em]
{}
{\contentslabel{2em}}
{\hspace*{-2em}}
{~\titlerule*[0.6pc]{$.$}~\contentspage}
\titlecontents% 小节
{subsection}[6em]
{}
{\contentslabel{3em}}
{\hspace*{-2em}}
{~\titlerule*[0.6pc]{$.$}~\contentspage}
%=================================参考文献=====================================================
% biblatex宏包使用教程:
% https://www.overleaf.com/learn/latex/Bibliography_management_with_biblatex
%
\usepackage[%
backend=biber, % 设置使用biber进行编译,也可以使用bibtex,但是功能更少
style=gb7714-2015, % 设置风格样式为国家标准gb7714-2015
sorting=none % 设置排序按照年份,名字,标题进行排序,若想按照引用顺序排序,将其设置为none即可
]{biblatex} % 参考文献包
\addbibresource{bib/ref.bib} % 加载参考文献的文件
%=================================定理环境=====================================================
% 自定义定理类环境(定义,引理,定理,推论,例,注)
% 定理环境命令:\newtheorem{name}[counter]{text}[section]
% name: 标识这个环境的关键字(用于编程)
% counter: (可选)编号计数器,默认使用自己的计数器,可以传入其他环境的name来共享计数器
% text: 真正在文档中打印出来的定理环境的名字
% section: (可选)定理编号依赖的某个章节层次,默认不依赖。
%
\newtheorem{theorem}{\hskip 2em{定理}}[section]
\newtheorem{definition}[theorem]{\hskip 2em{定义}}
\newtheorem{lemma}[theorem]{\hskip 2em{引理}}
\newtheorem{corollary}[theorem]{\hskip 2em{推论}}
% 例,注各自独立编号,无需考虑编号共享的问题,直接创建。证明关键词加粗
\newtheorem{example}{\hskip 2em{例}}[chapter]
\newtheorem{remark}{\hskip 2em{注}}[chapter]
\renewcommand{\proofname}{\hskip 2em \bf 证明}
% 去掉定理后面的小点,不建议使用(默认注释掉)
% \usepackage{xpatch}
% \makeatletter
% \AtBeginDocument{\xpatchcmd{\@thm}{\thm@headpunct{.}}{\thm@headpunct{}}{}{}}
% \makeatother
% 公式按section编号,若想按chapter编号,注释掉这条即可
%\numberwithin{equation}{section}
%=================================图表环境=====================================================
% enumitem宏包设置参考自中南大学学位论文模板
\usepackage[inline]{enumitem} % 列表工具包
\usepackage{graphicx,ragged2e} % 插图工具包
\usepackage{subcaption} % 子图标题包
\usepackage{bicaption} % 图片标题包
\setlist{% 设置列表样式
topsep=0.3em, % 列表顶端的垂直空白
partopsep=0pt, % 列表环境前面紧接着一个空白行时其顶端的额外垂直空白
itemsep=0ex plus 0.1ex, % 列表项之间的额外垂直空白
parsep=0pt, % 列表项内的段落之间的垂直空白
leftmargin=1.5em, % 环境的左边界和列表之间的水平距离
rightmargin=0em, % 环境的右边界和列表之间的水平距离
labelsep=0.5em, % 包含标签的盒子与列表项的第一行文本之间的间隔
labelwidth=2em % 包含标签的盒子的正常宽度;若实际宽度更宽,则使用实际宽度。
}
\graphicspath{figure/} % 设置图片存放目录
\usepackage{longtable,booktabs} % 跨页长表格
%=================================代码环境=====================================================
% 使用listings宏包来插入代码
\usepackage{listings} % 代码环境包
\renewcommand{\lstlistingname}{算法} % 重命名代码块标题为算法,例如:算法1.2
\lstset{% 设置算法样式
keywordstyle=\bfseries, % 设置关键词加粗
basicstyle=\ttfamily, % 设置基础样式字体为等宽
commentstyle=\ttfamily, % 基本和注释的字体都使用默认的等宽,而非texlive调用的中文字体
showstringspaces=false, % 不显示中间的空格
breaklines=true, % 对过长的代码自动换行
frame=single % 边框
}
%=================================引用工具=====================================================
% hyperref宏包教程https://www.jianshu.com/p/58e7d0a6d97a
% 实现超链接功能
\usepackage{hyperref} % 交叉引用包
\hypersetup{% 设置交叉引用属性
colorlinks=true, % 设置可跳转的链接为颜色,而不是方框
urlcolor=black, % 设置各种链接的颜色均为黑色
linkcolor=black,
anchorcolor=black,
citecolor=black
}
%=================================其余设定=====================================================
% 重新定义一些常用的数学符号
\renewcommand{\Re}{\operatorname{Re}}
\renewcommand{\Im}{\operatorname{Im}}
\newcommand{\mi}{\mathrm{i}}
\newcommand{\md}{\mathrm{d}}
\newcommand{\me}{\mathrm{e}}
%=================================正文内容=====================================================
\begin{document}
\frontmatter % 关闭章节序号, 页码默认使用小写罗马数字
\pagestyle{empty} % 设置封面和原创性声明的页面样式为空
\include{tex/1_cover} % 载入封面
\include{tex/2_statement} % 载入原创性声明
\pagestyle{plain}
\pagenumbering{Roman} % 切换页码至大写罗马数字显示
\let\cleardoublepage\clearpage
\include{tex/3_abstract_cn} % 载入中文摘要
\include{tex/4_abstract_en} % 载入英文摘要
\pagestyle{plain}
\setcounter{page}{1}
\pagenumbering{Roman}
\tableofcontents % 载入目录
\clearpage % 跳到目录下一页
\thispagestyle{plain} % 显示最后一页的页码
\mainmatter % 开启章节序号计数,重置页码,页码使用阿拉伯数字
\fancypagestyle{plain}{\pagestyle{myfancy}} % 设置默认的页面类型plain为自定义样式fancy
\pagestyle{myfancy} % 设置页面布局为自定义的myfancy
\include{tex/5_chapters} % 载入章节内容
\backmatter % 关闭章节序号,对页码没有影响
\include{tex/6_conclusion} % 载入总结
\include{tex/7_reference} % 载入参考文献
\include{tex/8_Appendix} % 载入致谢
\include{tex/9_thanks} % 载入研究成果
\end{document}