Word中公式自动编号和交叉引用
1、一般硕士论文的公式都是由公式和编号组成(公式居中,编号右对齐)如图所示。编号的格式为:(章节号.序号,有的连接号是“-”)。一种常用的方法就是,先输入公式,再在公式后面添加若干个空格,然后手动输入编号,最后将该行设置为右对齐并调整编号前的空格数,使公式看似居中。但是这种方法比较麻烦,且编号非常容易出现重复、漏掉等情况。为了解决这些问题,在这里提出了一种比较好的解决办法。

1、首先需要注意的是文章的一级标题使用的是样式中的“标题一”,且该样式中含有编号,如图所示。

2、添加一个2X1的表格,再插入题注,题注设置如图所示。

3、表格设置:第一列表格列宽12.8mm,文字居中;第二列列宽1.5mm,文字右对齐。再将整个表格右对齐。
4、将表格上方的题注剪切并粘贴到第二列表格中,用括号括起来。在表格的第一列输入公式,将表格的边框全部去除。
5、最终效果图如图所示,这样就可以使公式自动编号了,当需要引用时可采用交叉引用(引用的类型为:Formula)的方式进行(类似图表的引用)。
但是按照这样的范式一步一步操作的话,实在太麻烦了。

1、方法一的步骤实在太过复杂,方法二将方法一进行自动操作,这里将用到word中的宏。
2、需要注意的是文章的一级标题使用的是样式中的“标题一”,且该样式中含有编号,如图所示。

3、首先进行预备工作(编写宏),步骤:开发工具->代码->宏,宏的位置设置为“Normal.dotm(共用模板)”,然后点击创建,弹出Microsoft Visual Basic for Applications (VBA)界面。
注:若选项卡中没有开发工具,
参见:https://jingyan.baidu.com/article/19020a0a6acc5f529c28426e.html

4、将以下代码粘贴上去(第一行“示例插入公式”为宏名,可随意更改)。
Sub 示例插入公式()
' 示例插入公式 宏 (名字可以修改)
'插入表格
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
With Selection.Tables(1)
If .Style <> "网格型" Then
.Style = "网格型"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End With
'设置表格列宽
Selection.Tables(1).Select
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Columns.PreferredWidth = CentimetersToPoints(12.8) '第一列的宽度:12.8(可修改)
Selection.Move Unit:=wdColumn, Count:=1
Selection.Columns.PreferredWidth = CentimetersToPoints(1.5) '第二列的宽度:1.5(可修改)
'设置表格上下居中
Selection.Tables(1).Select
Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
'去除表格边框
Selection.Tables(1).Rows.Alignment = wdAlignRowRight
With Selection.Tables(1)
.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
.Borders(wdBorderRight).LineStyle = wdLineStyleNone
.Borders(wdBorderTop).LineStyle = wdLineStyleNone
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
.Borders.Shadow = False
End With
Selection.Style = ActiveDocument.Styles("题注") '文字样式
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight '右对齐
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.Style = ActiveDocument.Styles("题注") '文字样式
'插入公式编号及调整位置
Selection.InsertCaption Label:="Formula", TitleAutoText:="InsertCaption2", _
Title:="", Position:=wdCaptionPositionAbove, ExcludeLabel:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.Cut
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.TypeText Text:=")"
Selection.HomeKey Unit:=wdLine
Selection.TypeText Text:="("
Selection.MoveLeft Unit:=wdCharacter, Count:=2
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub
5、在需要插入公式时,将光标放在需要插入公式处(一定要是空白行),进行以下步骤:开发工具->代码->宏,找到之前编写的宏“示例插入公式”,点击运行即可。
6、这样就可以使公式自动编号了,当需要引用时可采用交叉引用(引用的类型为:Formula)的方式进行(类似图表的引用)。
7、如果想修改章节号和序号之间的连接符,步骤如下:引用->题注->插入题注,弹出题注对话框,如图所示,标签选择“Formula”,点击“编号”,在弹出的“题注标号”对话框中的“使用分隔符”中选择所需的连接符,点击确定返回“题注编号”对话框,再点击关闭。
