有没有简单的方法来添加交叉引用,比如键盘快捷键或复制粘贴方法?我有一个文档,里面有很多方程式(数百个),添加对相应方程式的交叉引用变得越来越麻烦。所以基本上我想要类似以下内容:例如,'Alt+q' 然后 '5.13' 添加对方程式 5.13 的交叉引用。这可能吗?
我正在使用 MS Word 2013。
答案1
我不知道有任何内置解决方案,您可以使用 VBA 来实现。下面是一个例子,它要求输入数字并插入交叉引用,将其放入您的 normal.dotm 中,以便能够从任何文档访问并为其分配快捷方式,这样您就有了解决方案。
更新代码
Sub addCrossRefernce()
Dim n As String
Dim v As Variant
Dim i As Integer
Dim referenceAdded As Boolean
referenceAdded = True
v = ActiveDocument.GetCrossReferenceItems("Equation")
Do
n = InputBox("enter number of equation to refer!")
If n <> "" Then
i = LBound(v)
Do Until v(i) = "Equation " & n Or i = UBound(v)
i = i + 1
Loop
If v(i) = "Equation " & n Then
Selection.InsertCrossReference referencetype:="Equation", ReferenceKind:= _
wdOnlyLabelAndNumber, ReferenceItem:=i, InsertAsHyperlink:=True, _
IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
Else
referenceAdded = False
End If
End If
If Not referenceAdded Then referenceAdded = MsgBox("There is no ""Equation " & n & _
""" in the document, do you want to enter another number?", vbYesNo) = vbNo
Loop Until referenceAdded
End Sub
答案2
在 Word 2010 中,至少您可以使用 Alt-INR 调出对话框(对于 N 和 R,Alt 和弦是可选的)。然后按 Alt-W 将焦点切换到编号项目列表。然后输入所需的数字。只会转到编号的顶层,因此,如果您有 5.3,它只会转到 5;您必须使用箭头键来输入其余内容。
我意识到这是一个已有一年历史的问题,有一个公认的答案,我甚至不确定它对于方程式有多有效(我在大纲格式的文档中使用它),但我在搜索中遇到了它,因此将这些附加信息留给其他人可能会有所帮助。
答案3
我编写了另一个宏,它应该能提供更舒适的解决方案。您无需输入任何内容,只需将光标移动到要交叉引用的元素即可:
- 将光标定位到应插入交叉引用的位置
- 按下热键 => 插入临时书签(如果您已配置显示灰色方括号)
- 导航到要插入交叉引用的元素,例如图形标签或标题。我发现使用导航窗格/标题快速导航到目的地特别方便。
- 再次按下热键。光标跳回到原始位置并在那里插入交叉引用。
您可以从以下位置访问代码和一些更详细的说明GitHub。
答案4
马特·尤哈斯适合添加交叉引用的代码编号项目(段落编号)。
可以通过以下方式输入段落编号来添加段落引用:
- 7.8.9或者7,8,9或者789针对第 7.8.9 段
- 1第一段
- 11对于第1.1款
- 11.对于第 11 段(如果还有 1.1)
宏代码:
Sub AddNumberedReferenceDialog()
Dim tit As String
Dim chId As String
Dim refItems As Variant
Dim idx As Integer
Dim refAdded As Boolean
Dim chName As String
tit = "Add cross-reference"
refAdded = False
refItems = ActiveDocument.GetCrossReferenceItems(wdRefTypeNumberedItem)
chId = ""
Do
chId = InputBox("Enter paragraph number in a.b.c form (use . or , as a separator or no separator 'abc'; if you need to search '11' instead '1.1' enter '11.')", _
tit, chId)
If chId <> "" Then
chId = Replace(chId, ",", ".")
For idx = LBound(refItems) To UBound(refItems)
chName = Trim(refItems(idx))
If InStr(1, chId, ".") = 0 Then chName = Replace(chName, ".", "")
If InStr(1, chName, chId) = 1 Then
If MsgBox("Paragraph [" & Trim(refItems(idx)) & "] was found. Do you like to insert cross-reference?", vbYesNo, tit) = vbYes Then
Selection.InsertCrossReference referencetype:=wdRefTypeNumberedItem, ReferenceKind:=wdNumberNoContext, ReferenceItem:=idx, _
InsertAsHyperlink:=True, IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
refAdded = True
Else
Exit Sub
End If
Exit For
End If
Next idx
If Not refAdded Then refAdded = MsgBox("Paragraph [" & chId & "] was not found in the document. Do you like to enter another paragraph number?", vbYesNo, tit) = vbNo
Else
Exit Sub
End If
Loop Until refAdded
End Sub