上一篇说了一个关键结论:样式里藏着“大纲级别”,Word 靠它认出哪些段落是标题。这一篇把它落到一个最具体的场景上——自动目录。
很多人做目录还是老办法:手打一遍标题,对着屏幕数页码敲上去,再用点线连起来。代价你大概体会过:正文里改一句话,后面所有页码集体漂移,目录就得从头再数一遍。
自动目录解决的正是这件事。但它有两个容易让人困惑的地方:目录里的标题文字从哪来?页码又是从哪来? 搞清楚这两个来源,你就知道为什么它能自己更新,也知道为什么它有时候不认你的标题。
目录不是一段文字,是一个域
先把最基本的事实说清楚:Word 插入的自动目录,本质上不是一个排好版的快照,而是一段“域”(field)。
“域”可以理解成一小段指令:你写下的不是结果,而是一个让 Word 现算现填的规则。目录用的这条指令叫 TOC 域。你可以验证:把光标点进目录区域,按 Alt+F9,目录会变成类似这样一行代码:
1{ TOC \o "1-3" \h \z \u }再按一次 Alt+F9 就切回来。这行代码里,\o "1-3" 说的是“收集大纲 1 到 3 级的标题”,\u 说的是“也按段落自己设的大纲级别来收集”。
你看到的目录条目,是 Word 按这条指令现算出来的。 既然是现算的,它每次计算都要回正文里重新取一遍内容,也就不难理解了。
标题文字从哪来:按大纲级别收集,不看外观
Word 生成目录时做的事像这样:从头到尾扫一遍文档,把每一个“大纲级别是 1 到 3 级的段落”挑出来,抄下它的文字,作为一条目录条目。抄的是文字本身,不是字体字号——所以目录条目长什么样,跟正文标题的字体没关系。
那哪些段落有大纲级别?两种途径:
一种是 套用了内置标题样式。标题 1 到 标题 9 这些样式的定义里,就强制写好了对应的大纲级别 1 到 9,你不用另外设。这也是上一篇反复强调标题要套样式的原因:套上 标题 1 的那一刻,段落就带着“我是一级标题”这个身份进入文档了。
另一种是 在段落属性里直接设大纲级别。打开“开始”选项卡“段落”组右下角的小箭头,在“常规”里有一个“大纲级别”下拉框,默认是“正文文本”,可以改成 1 级到 9 级。上面代码里的 \u 开关,就是让这类段落也能进目录。
第二种途径解决了一个很实际的矛盾。你的论文或标书里可能有一批标题,格式早就定死了——黑体、三号、居中,跟内置 标题 1 的默认外观不一样,改了反而违反格式要求。这时 不必改外观,只要把它们的“大纲级别”从“正文文本”改成 1 级:格式一点没变,但它们在结构层变成了标题,导航窗格里会出现,目录也会收集到。
反过来,这也解释了最常见的故障:目录里少了几条,或者干脆是空的。 原因基本都是那些标题用加粗、加大字号、居中手工做出来的——看上去很像标题,但大纲级别仍然是“正文文本”,Word 扫描时直接跳过。修的办法不是去动目录,而是回到那几段,套上 标题 1/标题 2,或者手动把大纲级别设成对应级别,然后更新目录。
页码从哪来:一条指向隐藏书签的引用
第二个来源更隐蔽,但恰恰是理解“为什么要更新”的关键。
Word 在收集标题时,会顺手在每个被收录的标题处 插入一个隐藏书签,名字形如 _Toc123456789,你平时看不到它。目录条目末尾那个页码,实际上是一条独立的域:
1{ PAGEREF _Toc123456789 \h }PAGEREF 的意思是“查出某个书签所在位置的页码”。所以目录里的页码 不是 Word 数一遍然后写死的数字,而是一条实时查询指令:这条内容的书签现在在第几页,就填几号。
理解这一点,三件事就顺了。
第一,页码是“上次更新那一刻的结果”。你在正文前面加了半页内容,所有标题都往后挪了,但目录里的 PAGEREF 还没重算,显示的仍是旧值。这就是“目录页码对不上”的根本原因——不是 Word 算错了,是它还没被叫去重算。
第二,TOC 域和 PAGEREF 域是两层结构。TOC 负责“有哪些条目、条目文字是什么、每个条目配哪个书签”;PAGEREF 负责“这个书签现在在第几页”。这直接对应了下文两种更新方式的分工。
第三,页码查的是书签的位置。如果你绕开制度手工改页码,或者直接删掉目录内部的隐藏书签,这条链就断了。
更新:两种模式,别选错
更新目录最快的方式是把光标点进目录区域按 F9,或者右键点目录选“更新域”。弹出的对话框只有两个选项,它们的分工就来自上面那两层结构:
- 只更新页码:只把每个
PAGEREF重算一遍,条目文字和结构不动。 - 更新整个目录:扔掉现有条目,重新扫描全文,重抄标题文字、重建隐藏书签、重算页码。
什么时候用哪个,判断标准只有一句:目录里的条目内容本身有没有变?
- 只是正文段落增减、行距调整、图片大小变化,让标题位置挪动了,而标题文字和层级没变 → 用“只更新页码”,快,也不会动你已经调好的条目格式。
- 新增或删除了章节、改了标题文字、动了某个标题的级别、改了目录的“显示级别” → 必须用“更新整个目录”,否则新增的章节根本不会出现。
这里有个具体提醒:对话框上写的是“只更新页码”,它 不会 把新章节加进来,也不会把改过名的标题同步过来。很多人改了标题文字后只更新了页码,发现目录里还是旧标题,以为 Word 坏了,其实只是选错了模式。
如果你怕忘,可以让 Word 在打印前自动更新全文的域:“文件 → 选项 → 显示”,在“打印选项”里勾上“打印前更新字段”。这样最后一次打印或导出 PDF 时,它会把域重算一遍。
一次做对:顺序和设置
明白了原理,操作顺序就很清楚:
- 先把标题的样式或大纲级别定好,用导航窗格(
Ctrl+F打开,切到“标题”页)确认整棵标题树完整、层级正确。导航窗格和目录读的是同一套大纲级别,导航窗格正常,目录一定正常——但它跟有没有插入目录无关。 - 把光标放在要放目录的位置(通常单独占一页),到“引用 → 目录”,选“自动目录”那一个。注意别选“手动目录”,那是静态文字,不会更新。
- 在“自定义目录”里确认“显示级别”。它通常默认是 3 级,对应
\o "1-3"。文档里有四级五级标题也要进目录,就把这个数字调大;不需要那么细,就调小。
最后一个容易踩的坑:不要手动去改目录里某一条的文字和格式。
你可能会觉得目录第一级字号太大,就选中几行改小;或者觉得点线碍眼,用手删掉。这些改动属于“直接格式”,下一次“更新整个目录”会按 TOC 样式重建条目,你的手工改动全部消失。正确做法是改样式——目录各级分别对应内置的 TOC 1、TOC 2、TOC 3 样式,改它们的字体、缩进、段前段后距,更新之后不会被打回原形。这和上一篇的结论是同一条:格式要改在名字上,不要改在单个段落上。
还有一个边界要提一句:目录本身会占掉一到两页,插进去之后,正文所有页码都可能往后推。也就是说,你第一次更新目录得出的页码,有可能在目录把版面撑开之后就不再成立了。 处理办法很朴素:插入目录后,再更新一次,通常更新两次页码才稳定。
至于目录页要不要单独编号(正文从 1 重新开始,目录用罗马数字),那牵涉到分节符怎样断开页码的连续性,是下一篇的事。