LaTeX 目录学习笔记

说明:由于许多学校毕业设计所使用的 LaTeX 模板采用的文档类是 ctexbook,因此本教程针对该文档类进行说明,方便日后同学们自行设计模板。需要使用到的宏包:tocloft

测试 Tex 代码以下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
\documentclass[12pt]{ctexbook}
\usepackage{tocloft}

\begin{document}
\tableofcontents
\chapter{引言}
\chapter{这是第一章}
\section{北京}
\section{方法}
\section{结果}
\section{结论}
\chapter{这是第二章}
\section{北京}
\section{方法}
\section{结果}
\section{结论}
\chapter{这是第三章}
\section{北京}
\section{方法}
\section{结果}
\section{结论}
\chapter{结论}
\end{document}

注意:每次编译生成 PDF 之后,若对目录进行了修改,需要清理编译过程中生成的辅助文件(即以下进行的每一步需求操作均需要清理清理一遍辅助文件)。如下图以 TeXstudio 为例:
清理辅助文件

需求 1:修改章节标题格式样式

ctexbook 文档类在生成目录时,自动将 Chater 的章节名设置为 “第某章”,而如果只需要阿拉伯数字就行,如何设置,需求如图所示

\usepackage{tocloft} 的下方添加如下代码

1
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}

以上代码中,name={,} 表示在章节前后插入文本,表如 name={第,章} 就是 ctexbook 章节标题(Chapter)默认的格式
01-修改章节标题格式样式.png

需求 2:设置导引符为垂直居中的小圆点

导引符(标题与页码之间的点点)为什么不能垂直居中显示呢?可不可以设置为垂直居中?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}

\cdot 表示垂直居中的小圆点符号,左右两旁添加 $ 表示位于公式的环境中
02-设置导引符为垂直居中的小圆点.png

需求 3:设置导引符符号间距

这些导引符的间隔太稀疏了,能不能紧密一点?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
3
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}%设置垂直居中的小圆点
\renewcommand{\cftdotsep}{1.5}%设置点间距

03-设置导引符符号间距.png

需求 4:设置章节与页码之间的导引符

为什么章节标题与页码之间没有导引符(小圆点),能不能也加上?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
3
4
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}%设置垂直居中的小圆点
\renewcommand{\cftdotsep}{1.5}%设置点间距
\renewcommand\cftchapdotsep{2}%设置章节标题与页码间的导引符

04-设置章节与页码之间的导引符.png

需求 5:设置各章节之间的间距

为什么章节标题与二级标题之间间隔比二级标题与二级标题之间的间隔要宽呢,能不能将这几者之间的间隔设为一致?
继续在 \usepackage{tocloft} 的下方添加如下代码

1
2
3
4
5
6
\CTEXsetup[name={,},number={\arabic{chapter}}]{chapter}
\renewcommand{\cftdot}{$\cdot$}%设置垂直居中的小圆点
\renewcommand{\cftdotsep}{1.5}%设置点间距
\renewcommand\cftchapdotsep{2}%设置章节标题与页码间的导引符
\setlength{\cftbeforechapskip}{0pt}%一级标题(章节标题)间隔
\setlength{\cftbeforesecskip}{0pt}%二级标题间隔

当然,这里只设置了 1,2 级标题之间的间距,若想设置 3 级标题之间的间距,可以设置 \setlength{\cftbeforesubsecskip}{0pt}
05-设置各章节之间的间距.png

需求 6:设置章节标题前后间距

目录当中如何设置显示到几级标题呢?比如我想设置只显示到三级标题就不显示了,可以设置吗?

1
\setcounter{secnumdepth}{3}%设置目录深度至三级标题

除此之外,如何将目录的布局设置得更好看一些,比如将一级标题和二级标题之间的层次更加清晰,可以在章节标题段前段后添加些间隔,如下所示

1
2
\setlength{\cftbeforechapskip}{5pt}%一级标题(章节标题)前间隔
\renewcommand{\cftchapafterpnum}{\vspace{5pt}} %一级标题(章节标题)后间隔

\vspace{5pt} 表示垂直间距 5pt
06-设置章节标题前后间距.png

需求 7:待续

怎么会有那么多需求呢?这里有一些相关资料,或许可以帮助到你 q (≧▽≦q)。