利用Word域代码实现将形如“图一-1”的题注修改为“图1-1”
问题描述
在用word编写毕业论文时,遇到了这样一个问题:通过多级列表的设置将一级标题设置为汉字数字之后,若需要设置包含章节号的题注(形如“图1-1”)时,则会变成“图一-1”的形式。本篇文章解决的就是将形如“图一-1”的题注通过设置域代码,在不修改一级标题格式的情况下改为“图1-1”。
参考链接
- word里面,如何在章节编号为第一章、第二章这种情况,实现图根据章节编号并且形式为图1.1、图2.1?
- Word 自动更改题注章节编号格式“图一.1”为“图1.1”
- [word技巧]把标题、图表题注编号由“一.1”改为”1.1”
- 一篇文章教会你使用word域代码(seq field code ) :这个方法也是可以的,不过本文没有采用。
- 设置域显示格式的开关-微软官方
- word将“图一.x”修改为“图1.x”-Bilibili
- 域代码:Quote 域-微软官方
- STYLEREF域代码官方文档链接
什么是域代码
使用组合键 Alt+F9
,可以显示或隐藏文档中所有域代码 :
从上图中可以看到,原本的“图 一-1”已经变成了“图 { STYLEREF 1 \s }-{SEQ 图 * ARABIC \s 1}”,如果你此时直接复制它们,会发现粘贴出来的仍然是“图 一-1”,而将光标放在花括号中,则会将花括号括住的内容选中成为一个整体。其中花括号括住的部分就是“域代码” 。
你使用“添加题注”的对话框为图片添加题注时,插入的实际上就是这些“域代码”,你使用 Ctrl+F9
组合键(会生成域代码的花括号,手动输入花括号是不行的)插入题注效果是一样的。
在这里 {STYLEREF 1 \s}
代表了章节号,也就是汉字数字“一”和“二”, {SEQ 图 \* ARABIC \s 1}
代表了图的题注编号。
其中 STYLEREF
和SEQ
是“域”的名字,而后面的内容则是“域”的参数与“格式开关”(即域的格式选项)。
{STYLEREF 1 \s}
代表“插入具有样式名为‘1’的文本,并在指定标题级别下面重新开始(\s
,此处未指定标题级别)”。{SEQ 图 \* ARABIC \s 1}
代表“插入名为’图’的序列的下一个编号,将结果显示为阿拉伯基数(\* ARABIC
),并在一级标题下面重新开始编号(\s
,此处标题级别为1,即若是到了下一个一级标题下,则会重新从1开始编号)”。
得知了word题注是用“域代码”实现的事实后,现在我们要做的事情就是将{STYLEREF 1 \s}
的输出结果从汉字数字转变为阿拉伯数字,尝试将\* ARABIC
开关加入其中,似乎并没有效果。
我在网上搜索到了另一个解决方案,利用迂回的方式将其转化,见:[word技巧]把标题、图表题注编号由“一.1”改为”1.1”
解决方案
将{STYLEREF 1 \s}
修改为 { QUOTE "一九一一年一月{ STYLEREF 1 \s }日" \@"D" }
就可以了,注意花括号仍然得是使用 Ctrl+F9
组合键生成的花括号。
我找到的文章并未说明其原理,但了解了域代码相关知识后,也不难理解原理。
首先找到 QUOTE
域的相关说明:域代码:Quote 域-微软官方
1 | { QUOTE "LiteralText" } |
“LiteralText”:插入的文本,必须加引号。它可以包含除 AutoNum、AutoNumLgl、AutoNumOut 或 Symbol 以外的所有其他域。
也就是说,QUOTE "一九一一年一月{ STYLEREF 1 \s }日"
这一部分是将“一九一一年一月{ STYLEREF 1 \s }日
”插入到域代码所在位置,如果是第一章,那么最终结果就是一九一一年一月一日
。
看到这里,也许你已经猜到后面那个\@"D"
开关是在干什么了:
设置域结果格式-微软官方
日期-时间格式开关 (\ @) 指定如何显示日期或时间。例如, switch \ @ “dddd, mmmm d, yyyy” 字段{ DATE \ @ “dddd, MMMM d, yyyy” }显示 “星期五, 2019 年11月23日”。结合以下日期和时间说明: day (d)、month (M) 和 year (y);小时 (h) 和分钟 (m)-生成日期时间格式。你还可以包含文本、标点和空格。
字母 d 显示月份中的日期或一个星期中的某一天。 字母 d 可以大写或小写。此格式项目将某个星期或月份的某一天显示为数字;对于单位数日子,数字前面不加 0(零)。 例如,某月的第 6 天显示为 6 。
所以该开关的意思是,将最终结果中的“天”给显示出来,而我们前面的内容得到的是一九一一年一月一日
,那么输出结果就是 1
,这样就通过日期转换将汉字数字转换为阿拉伯数字了。
这个日期无关紧要,只要格式是中文日期即可,例如我改为 {QUOTE “二零二一年四月{ STYLEREF 1 \s }日” \@”D”}
也没有关系。
之后再使用组合键 Alt+F9
,就可以隐藏域代码,只显示域代码的结果了。
优化
虽然问题解决了,但是每次都要输入这样的域代码非常费劲。我在B站找到了一个视频,up主的解决方案很好:word将“图一.x”修改为“图1.x”-Bilibili。
他使用了word的另一个好用的功能——构建基块。
选中刚刚写好的题注
使用组合键
Alt+F3
,会弹出一个名为“新建构建基块”的对话框,修改构建基块的名称。例如修改为“图注”。点击“确定”保存
之后如果想要插入这样的题注,那么直接输入该构建基块的名称(此处为“图注”二字),word就会在你输入的地方显示一个提示“按Enter插入”,此时按下Enter键,就可以插入这一个构建基块了。
利用Word域代码实现将形如“图一-1”的题注修改为“图1-1”