LaTeX论文目录怎么生成:指令与常见问题

说明在 LaTeX 中用 \tableofcontents 生成论文目录的指令、需要编译几次,以及目录为空、出现问号、章节缺失等常见问题的处理办法。

写论文时,目录通常是最后才被注意到的部分。很多人第一次使用 LaTeX,照着模板写完正文,目录页却是空的,或者页码对不上。LaTeX 论文目录生成指令本身并不复杂,但它依赖标题命令、编译次数和导言区设置,任何一环出错,目录都会异常。

这篇只讲目录这一项功能:用什么指令生成、要编译几次、出现问题时该检查什么。读完你应该能在自己的文档里加上目录,并判断异常是由编译次数、标题写法还是设置造成的。模板选择和整体写作流程不在这里展开。

生成 LaTeX 论文目录用哪条指令?一句话结论

在正文起始处、标题命令之前写入 \tableofcontents,然后至少编译两次,目录会根据已有的章节标题自动生成。

你的情况推荐做法原因
普通文章,只用节和小节使用 article 类,在正文前写 \tableofcontents,层级由 section 和 subsection 决定目录只收集标题命令写下的条目,无需手动录入
书籍或学位论文,需要分章使用 book 或 report 类,用 chapter 分章,目录会同时显示章与节这两类文档类把 chapter 作为高层标题
中文论文使用 ctexart 等中文文档类,用 xelatex 或 lualatex 编译中文字体和断行依赖支持 Unicode 的编译引擎
有附录、图表清单附录用 appendix 命令,图表清单另用 listoffigures 和 listoftables这些是独立列表,各自收集对应的环境
目录页码或条目总不对连续编译,直到输出结果不再变化页码要在一次编译结束后才写入辅助文件,下一次编译才能读回

开始之前:先确认这几点

  • 文档类是否支持分章。 article 类没有 chapter 命令,写了会报错;学校模板通常已经指定了文档类,先按模板来。
  • 标题是否用标准命令写出。 目录只认 section、subsection 等命令。用加粗或放大字号的普通段落不会进入目录,这是常见的漏项原因。
  • 编译引擎是否匹配。 文中有中文时,pdflatex 容易出现报错或乱码,应改用 xelatex 或 lualatex。
  • 是否已有模板的目录设置。 很多模板在导言区已经定义了目录格式。重复定义可能导致冲突,先阅读模板说明再改动。
  • 辅助文件是否残留。 旧的 .toc 文件会让目录显示过时内容。清理后重新编译,能排除很多看似奇怪的问题。

在 LaTeX 中生成目录的步骤

  1. 在导言区选定文档类,例如 article,或学校提供的中文类,并加载所需的中文支持包。
  2. 在导言区确认目录标题和层级设置,若模板已经定义,就不要重复设置。
  3. 在 \begin{document} 之后,标题页之后、第一条章节标题之前,写入 \tableofcontents。
  4. 用 section、subsection 等命令为各级标题编号,并确保标题文字写在命令的花括号内。
  5. 用 xelatex 或模板指定的引擎完成第一次编译,此时目录可能为空,或只有部分条目。
  6. 再编译一到两次,让辅助文件中的条目和页码被读入目录。
  7. 如需限制收录层级,在导言区用 \setcounter{tocdepth}{2},数字 2 表示收录到小节。
  8. 打开 PDF 检查目录页,若仍有问题,按下一节的表格逐项排查。

做完后逐项核对

检查项怎么看有问题怎么办
目录是否有条目目录页列出了各级标题为空则再编译一次;仍为空则确认标题使用了标准命令
标题文字与正文标题逐字一致不一致时检查是否修改后未重新编译
页码与正文页脚的页码对应对不上则多编译几次,并清理辅助文件后重编
层级与缩进章、节、小节层次清楚调整 tocdepth,或检查是否误用了层级更低的命令
问号目录中没有 ??出现问号说明引用尚未解析,继续编译直到消失
中文显示无乱码、无方框确认使用 xelatex 或 lualatex,并检查中文类是否加载

如果手头有 UniDoc 网页编辑器(app.unidoc.top),它支持与 LaTeX 互相转换,可以把源文件的内容放到可视化界面里,对照标题层级是否与你的预期一致。这只是辅助核对,最终仍以本地编译结果为准。

📊 核心对比:不进目录的标题怎么处理

论文里常有摘要、致谢、声明这类不需要编号的标题。它们是否进入目录,取决于标题命令的写法。

写法是否编号是否进入目录适用场景
标准命令,如 section是是正文的常规章节
带星号的命令,如 section*否否致谢、声明等不需要出现在目录中的页面
带星号命令加 addcontentsline否是摘要、参考文献等不编号但需要出现在目录中的标题

第三种写法要把 addcontentsline 写在带星号的标题之后,并指定目录层级和标题文字。这样既保持了版式,又让条目出现在目录中。

❓ 常见问题(FAQ)

1. 目录一直是空的,为什么?

通常是只编译了一次,或正文中没有使用标准标题命令。先再编译一两次,仍然为空时,检查章节标题是否真的写成了 section 之类的命令。

2. 目录里为什么出现两个问号?

两个问号表示该条目的页码还没有写入辅助文件,多数情况是编译次数不够。连续编译直到它消失;如果删改内容后仍然出现,先清理辅助文件再重新编译。

3. 目录标题为什么显示 Contents?

使用英文 article 等类时,默认标题就是 Contents。中文论文可以改用中文文档类,或在导言区用 \renewcommand 把 contentsname 改为“目录”,具体写法以模板要求为准。

4. 某个章节没有出现在目录里,怎么办?

先看它是否用了带星号的标题命令,再看 tocdepth 的数值是否低于该层级。去掉星号或调高 tocdepth,再编译即可。

📝 总结

LaTeX 论文目录生成指令的核心是:在正文起始处写入 \tableofcontents,标题使用标准命令,并编译两到三次。遇到问题时,先看编译次数,再看标题写法和导言区设置,大多数异常都能定位。

打开 OmniDoc,编辑、转换或翻译你的 LaTeX 文档

更新于 2026-11-05