在 MS Word 中交叉引用的简单方法?

在 MS Word 中交叉引用的简单方法?

有没有简单的方法来添加交叉引用,比如键盘快捷键或复制粘贴方法?我有一个文档,里面有很多方程式(数百个),添加对相应方程式的交叉引用变得越来越麻烦。所以基本上我想要类似以下内容:例如,'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

我编写了另一个宏,它应该能提供更舒适的解决方案。您无需输入任何内容,只需将光标移动到要交叉引用的元素即可:

  1. 将光标定位到应插入交叉引用的位置
  2. 按下热键 => 插入临时书签(如果您已配置显示灰色方括号)
  3. 导航到要插入交叉引用的元素,例如图形标签或标题。我发现使用导航窗格/标题快速导航到目的地特别方便。
  4. 再次按下热键。光标跳回到原始位置并在那里插入交叉引用。

您可以从以下位置访问代码和一些更详细的说明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

相关内容