LaTeX教程(003)- LaTeX \LaTeX LATEX文档结构(03)
2.2 章节划分命令
在前面的内容中,我们讨论了文档的最顶层的区块划分,即front matter、main matter和back matter。这一节中,我们讨论如何在这些区块内部,使用章节划分命令对文档进行更进一步的划分。
标准的 LaTeX \LaTeX LATEX文档类(article、report和book)中,包含了若干划分命令,这些命令可以定义不同层次的结构单位,如章(chapter)、节(section)、子节(subsection)等。不同的命令定义了这个结构中不同的嵌套级别,在使用时应当正确地嵌套它们。
我们用下表展示这些命令以及它们在不同类型的文档中所处的级别:
命令 | 级别 | 注释 |
---|---|---|
\part | 最高级 | 部分,在book和report类中是-1级,在article类中是0级 |
\chapter | 0级 | 章,只在book和report类中有定义 |
\section | 1级 | 节 |
\subsection | 2级 | 子节 |
\subsubsection | 3级 | 子子节 |
\paragraph | 4级 | 段 |
\subparagraph | 5级 | 子段 |
并不是每一个命令都能在所有文档类中使用,例如\chapter
命令不能在article类中使用,而letter类根本不支持章节划分。但是,使用一些包可以定义其它的划分命令,增加一些额外的级别,或者为已有的级别提供一些变体。
我们用一个例子演示一下它们的作用:
\documentclass{book}
\usepackage{ctex}
\usepackage[a5paper]{geometry} %可以调整页面的包,为了使演示效果更显著,我们将页面设置为A5大小。
\usepackage{kantlipsum}
\title{测试文档} %设置文档的标题
\author{方鸿渐} %设置文档的作者
\begin{document}
\maketitle %输出标题页
\tableofcontents %输出目录
\chapter{这是第一章}
\section{这是第一章的第一节}
\subsection{这是第一章第一节的第一个子节}
\kant[1]
\section{这是第一章的第二节}
\kant[2]
\chapter{这是第二章}
\section{这是第二章的第一节}
\subsubsection{这是一个子子节}
\kant[3]
\kant[4]
\kant[5]
\end{document}
成功编译后,得到如下结果:
我们前面讲过关与标题页面的内容,这里我们在导言区使用
\title{测试文档} %设置文档的标题
\author{方鸿渐} %设置文档的作者
来设置文档的标题页的信息,然后在正文中使用\maketitle
命令将这些信息输出在文档中,在这个例子中是文档的第一页。
\tableofcontents
用来输出文档的目录,目录不需要我们手动去排版,用了这个命令之后,系统会自动整理出目录。当然,我们也有很多的方法设置目录,这些方法在后面会讲。
需要注意的是,\maketitle
和\tableofcontents
命令也可以放在正文中的其他位置,你将它放在什么位置,标题页或者目录就会输出在什么位置。但是任意放置的标题页和目录并不符合文档的排版规范,所以我们一般只将他们放在文档正文的最前面,并且标题页放在目录前面。
你可能会发现,一章的未尾与下一章的开头之间有时会有一个空白页,有时候又没有。这是因为,每一章都要从新的一页纸开始,基于这一特性,不管前面的内容在何处结束,下一章都要从下一个奇数页码开始。因为对于一本实体书来说,每一张纸有两面(两个页码),第一面都是奇数页码。不仅是章,标题页和目录等,都有这一特性。
另外,观察7、8、9页,一章开始的那一页没有页眉,偶数页显示章(chapter)标题的页眉,奇数页显示节(section)标题的页眉。
最后,在你编译的文件所在的同一文件夹中,会多出一个.toc
文件,它是用来记录目录信息的,toc即是table of contents的缩写。对于我们前面编译的代码,生成的.toc
文件打开后内容是:
\contentsline {chapter}{\numberline {1}这是第一章}{5}{}%
\contentsline {section}{\numberline {1.1}这是第一章的第一节}{5}{}%
\contentsline {subsection}{\numberline {1.1.1}这是第一章第一节的第一个子节}{5}{}%
\contentsline {section}{\numberline {1.2}这是第一章的第二节}{6}{}%
\contentsline {chapter}{\numberline {2}这是第二章}{7}{}%
\contentsline {section}{\numberline {2.1}这是第二章的第一节}{7}{}%
\contentsline {subsubsection}{这是一个子子节}{7}{}%
仔细观察第7页的一个子子节(subsubsection),它没有被编号(事实上,比它更低级的结构单元,如paragraph等,默认也都不编号),也没有出现在目录中,但是在.toc
文件中有记录。因此我们可以通过一些方法让它出现在目录中,并且给它编号。这些会在后面的内容中讲解。
所有标准的章节划分命令都有同样的语法,正如我们在前面的例子中演示的那样。当我们使用一个划分命令后,系统会自动执行以下过程:
- 生成各级别的标题编号;
- 将标题存储到目录条目中(
.toc
文件中); - 保存标题内容以备在页眉/页脚中使用;
- 格式化标题。
章节划分命令还有一个选项(可选参数),我们以section
为例,带有选项的命令形式是\section[toc-entry]{title}
。
如果不设置这个选项,那么正文中的标题,与页眉以及目录中的条目都是相同的,这也是我们通常想要的。但有时候我们想要它们不同,就需要用到这个选项,它可以将页眉和目录条目设置成toc-entry
,而正文中的标题不变。例如,我们将上面的例子中的16、17行改成:
\chapter[这是为第二章定制的页眉和目录条目]{这是第二章}
\section[这是为第二章的第一节定制的页眉和目录条目]{这是第二章的第一节}
再次编译(注意要编译两遍,先不要管为什么),观察输出内容:
- 观察第7页,可以发现第二章和2.1节的标题都没有变化。
- 观察目录:
可以发现第2章和2.1节的目录条目都变成了我们输入的可选参数。
- 再观察
.toc
文件,可以发现关于这两个目录条目的记录也发生了变化,变成了:
\contentsline {chapter}{\numberline {2}这是为第二章定制的页眉和目录条目}{7}{}%
\contentsline {section}{\numberline {2.1}这是为第二章的第一节定制的页眉和目录条目}{7}{}%
- 最后,观察第8、9页的页眉,第8页的页眉变成了"CHAPTER 2. 这是为第二章定制的页眉和目录条目",第9页的页眉变成了"2.1. 这是为第二章的第一节定制的页眉和目录条目"。
这就是这个选项的作用。
划分命令还有一个变体,我们以section为例,它的形式是\section*{title}
。这种形式的划分命令会生成一个没有编号的标题,并且也不会出现在目录和页眉中。例如,我们将上面的例子中的
\chapter{这是第二章}
\section{这是第二章的第一节}
改成
\chapter*{这是第二章}
\section*{这是第二章的第一节}
那么输出结果又会有几处不同(注意编译两遍):
- 首先是目录,关于这它们的目录条目消失了:
- 其次,
.toc
文件也没有记录关于这它们的信息。因此,它们并不是被目录隐藏了,而是根本没有记录。 - 正文中的标题没有了编号:
- 最后,第8页的页眉是"CHAPTER 1. 这是第一章",第9页的页眉是"1.2. 这是第一章的第二节",也就是说,这两个命令并不生成页眉,页眉依旧沿用第一章的标题。
另外需要注意的是,如果我们在这段代码的后面在加一个划分命令,如\chapter{这是第三章}
,那么会生成一个新章,它的标题是
可以发现,计数器依旧是从前面有编号的标题(基于第1章)延续的,这说明,划分命令的星号形式变体生成的标题并不参与计数器的递进。
那么,如果我们输入
\chapter*{这是第二章}
\section{这是第二张的第一节}
会发生什么?实际上会输出:
这和标题命令的计数器的定义结构有关,我们将在后面的内容中讲解。
星号形式的标题,我们通常在front matter中或者back matter中使用。当然,也可以在任何其他的地方使用,但不建议这样做,除非你明白自己在做什么。
在标准的文档类中,\tableofcontents
,\listoftables
,\listoffigures
命令,以及theindex
和 thebibliography
环境,都在系统底层调用了划分命令(\chapter
或\section
)的星号变体。比如前面的例子中,目录页的标题"目录"就是如此生成的。
关注【年轻人 你渴望力量么】