LaTeX 标准文档类提供了 \section 和 \section* 等两组命令,用于排版章节标题。其中不带星号的版本有章节编号,会列入目录,同时修改章节标记。带星号的版本只有章节标题格式而不编号,不列入目录,也不会修改章节标记。
注意的是\chapter 和 \section的处理方法是相同的。
有时,我们会希望将不编号的章节标题列入目录。这种情况使用 \section 或 \section* 都不大合适。本文将对这些问题做出分析,并给出解决方案。
举个例子:有时候我们直接从Sphinx生成LaTeX的文档很多都是已经带章节编号了,若再自动编号单个除去的工作量很大,也不便于日后维护。
LaTeX 标准文档类的 \section 命令做四件事情:
编号自增 1
输出章节标题
处理目录(和 PDF 书签)
做页眉的章节标记
相应地,\section* 命令只做上述第二件事情,其余三件都不做。
因此,我们的思路很简单,有两个方向。第一,使用 \section*,手工做目录的处理;第二,使用 \section,但是抑制编号。
思路一
LaTeX 处理目录需要编译两次。在第一次编译的过程中,\section 命令将目录信息写入 .aux 文件。随后,在第二次编译的过程中,LaTeX 读取 .aux 文件中的相应信息,形成目录。因此,我们只需要模仿 \section 写入 .aux 文件的过程就可以了。
LaTeX 提供了 \addcontentsline{}{}{名字} 命令来做这样的工作。我们来看一个例子。
\