为什么使用 \tableofcontents 生成的 Contents 部分下没有内容?

为什么使用 \tableofcontents 生成的 Contents 部分下没有内容?

我写了下面的 TeX 程序。这是直接从第 8 页(图 1.2)复制而来的。lshort.pdf

\documentclass[a4paper,11pt]{article}
% define the title
\author{H.~Partl}
\title{Minimalism}
\begin{document}
% generates the title
\maketitle
% insert the table of contents
\tableofcontents
\section{Some Interesting Words}
Well, and here begins my lovely article.
\section{Good Bye World}
\ldots{} and here it ends.
\end{document}

但是当我使用命令将其转换为 pdf 时pdflatex foo.tex,我在 PDF 中看到以下输出。

TeX 输出的屏幕截图,显示“内容”部分下没有任何内容

为什么该命令没有\tableofcontents在“内容”标题下生成任何内容?

答案1

由于 LaTeX 无法猜测随后文档中会出现哪些章节、部分、图表或表格,因此\tableofcontents如果在文档的某处使用它,则要显示的内容为空,即需要运行两次 LaTeX(至少),所以\tableofcontents如果只运行一次 LaTeX,即使将其放在文档末尾也不会起作用!

由等生成的信息用(或)\chapter写入.aux文件,并在第 2 次运行 LaTeX 时再次读取该文件,从而生成真正的或或等文件(除非声明了 `\nofiles)。\addcontentsline\addtocontents.aux.toc.lof.lot

因此:至少编译两次以获取 ToC 的信息和排版。

关于 ToC 生成等的详细信息可以在这里找到: 模仿 LaTeX 的“目录”功能

答案2

要获取内容,您需要在编译后保留*.aux和*.toc。您可以检查您的设置是否自动清除它们。

答案3

简短回答一下:

当您第一次在 .tex 源上运行 pdflatex 时,生成的 pdf 不包含目录。

当您第二次运行它时,pdflatex 将根据它第一次生成的工作文件生成内容表。

解决方法:再运行一次。

相关内容