来看一个几乎人人遇到过的场景。报告写到一半,你把第二章里那张“图 5”删掉了。后面的图很配合,立刻变成图 5、图 6……可正文里那二十几处“见图 5”还是旧的编号,你只好一段段翻回去改。
上一篇讲的是图为什么会跑(图片为什么会跑)。这一篇的问题出在别处:你手打的“图 3”,在 Word 眼里就是三个普通字符,它从来不知道那是个编号。
文档里的字,有两种来源
一种是你敲进去的,“系统架构如下图所示”里的每个字都是。另一种是 域:文档里存的是“怎么算”,屏幕上显示算出来的结果。上一篇讲的自动目录就是域,页码也不是写死的数字,是由 PAGEREF 域查出来的(自动目录不靠手敲)。
手打的“图 3”属于第一种。Word 只知道这里有“图”和“3”,不知道这个 3 是第几张图的序号,也就没办法帮你重排、更新或引用它。所有“图号乱掉”的麻烦,根子都是把该算出来的数当成了要写下来的字。
题注:编号不是写上的,是数出来的
用“引用 → 插入题注”给图加题注,Word 做了三件事:在图的下面另起 一个段落,套上“题注”样式;在段首插入一个 SEQ 域,中文 Word 里长这样 { SEQ 图 \* ARABIC };光标停在后面,等你写说明文字。
关键在第二步。SEQ 的规则很简单:同一个标识符每出现一次,就往上加一。 所以“图 3”的含义不是“编号为 3 的图”,而是“在这条叫‘图’的序列里,我是第 3 个”。是位置决定编号,不是编号决定位置。
顺着这条规则往下想,麻烦就自己解决了:删掉第 5 个,后面每个的“第几个”都变了,重排时 Word 重算这些域,编号也跟着变;中间插一张新图同理。你从来没打过号,也就没有号要改。
顺带一句:序列是按标签分开的。题注标签一半写“图”、一半写“图表”,Word 就当成两条序列,各自从 1 数起,看着像编号错乱,其实是两套号。
交叉引用:正文那句话里存的不是 3
题注解决了图上那个号,正文里的“见图 3”还得手打。交叉引用要做的正是这一半:光标停在“见”后面,打开“引用 → 交叉引用”,引用类型选“图”,引用内容选“只有标签和编号”,选中那张图,插入。屏幕上显示“图 3”,看着和手打的一样。
但两者底下的机制完全不同。插入的那一瞬间,Word 干了两件事:在那条题注上 加一个隐藏书签,名字像 _Ref123456789,书签圈住的范围取决于你选的“引用内容”:选“整项题注”就圈住整段,选“只有标签和编号”就只圈住“图 3”2;同时在正文里插入 { REF _Ref123456789 \h } 这样的域,意思是“把那个书签现在圈着的内容抄到这里”4。
所以“见图 3”的真相是“见书签 _Ref123456789 处的内容”。更新这条引用时,Word 不看你原来打的是几,而是跑到书签现在的位置,看它圈着什么,抄过来。
由此得到一个很重要的性质:引用认的是那张图,不是那个号。 把图 3 挪到图 1 前面,它变成图 1,正文里那条引用更新后也显示图 1,因为书签一直挂在这张图上,从没换过。手打的“图 3”跟着的是字符串,图一挪,它指的就不是原来那张了。
书签默认看不见,就算开了“显示书签”也看不到,因为名字以下划线开头,属于隐藏书签;要到“插入 → 书签”里勾上“隐藏书签”才列得出来 4。这是排查错误的入口。
“错误!未找到引用源”是什么意思
它表示那个书签不见了,并非说引用写错了。
书签圈住的是实际内容。把整条题注选中删掉,书签跟着内容一起没了;只删了书签范围内的那几个字,书签同样被删。REF 域更新时找不到书签,Word 只能把错误信息当结果显示出来 1。
这条分界也划出了安全与危险:引用的是“标签和编号”,你只改后面的说明文字,书签没被碰,引用照旧有效;整条题注删掉重做,或者删掉被书签圈住的那段字,链接就断了。
这里有个容易想当然的地方:删了题注再重新插一条,看着“图 3”又回来了,其实那是 新 题注、新 隐藏书签,老引用指向的旧书签已经不存在了。位置、号、文字全一样,链接却是断的。
为什么号已经对了,引用还错着
因为两种域更新的时机不一样。题注的编号跟着重新分页一起重算,通常你删完一张图,后面的号已经变了。但 交叉引用不会自己更新,官方的说法是:题注会自动重排,引用要等你更新才变 3。
“号对了、引用还是旧的”原因是设计如此,并非矛盾。一次修好全篇的办法只有一个:Ctrl+A 全选,按 F9。
两个必须知道的细节:全选更新不到页眉页脚和文本框里的域,那两处要单独进去再按一次 F9,它们是独立区域,主文档的全选管不到;更新之后要去搜一下“错误”,因为域显示的是错误文本,不会弹窗提醒。F9 只是让问题露出来,并不负责把它修好。
如果确实已经断了,修法是重插一条正确引用,再把老引用批量指过去:Alt+F9 显示域代码,从新引用里抄出那串 _Ref 编号,Ctrl+H 查找老编号、全部替换成新编号,再按 Alt+F9 切回 2。麻烦,但比一段段找快。真正省事的做法是记住前面那条界线:别整段删题注,只改里面的字。
落到做法上,三条纪律就够
全篇所有图号、表号,一律由“插入题注”生成。 判断标准很硬:用 Alt+F9 显示域代码,每个图号的位置都该有一对花括号,没有的就是手打的。
正文里所有“见图 X”“见表 X”,一律由交叉引用生成。
交付前 Ctrl+A 再按 F9,然后检查报错。 顺序不能反。
到这里,图有了会自己变的号,正文里的引用也有了指针。但还有一半问题没解决:图在上一页页底,题注跑到下一页页首,中间隔着一整页正文。题注是独立的一段,它和图分属两个段落,凭什么一定待在一起?这是下一篇的事。