2

Есть ли простой способ добавить перекрестную ссылку, как сочетание клавиш или метод копирования и вставки? У меня есть документ с множеством уравнений (в сотнях), и добавление перекрестных ссылок к соответствующему уравнению становится болезненным. В общем, я хочу что-то вроде следующего: например, «Alt +q», а затем «5.13» добавляет перекрестную ссылку на уравнение 5.13. Это возможно?

Я использую MS Word 2013.

4 ответа4

3

В Word 2010, по крайней мере, вы можете вызвать диалог с помощью Alt-INR (Alt Chording не является обязательным для N и R). Затем Alt-W, чтобы переключить фокус на нумерованный список элементов. Затем введите номер, который вам нужен. Только идет на верхний уровень нумерации, так что, как если бы у вас был 5.3, он идет только до 5; Вы должны использовать клавиши со стрелками для остальных.

Я понимаю, что это годичный вопрос с принятым ответом, и я даже не уверен, насколько хорошо это работает для уравнений (я использую его в документах в формате структуры), но я наткнулся на это в поиске, и оставив это дополнительная информация для кого-либо еще, это может помочь.

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
0

Вот моя отредактированная версия кода Мате Юхаса

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) = "(" & n & ")" Or i = UBound(v)
            i = i + 1
        Loop
        If v(i) = "(" & n & ")" Then
            Selection.InsertCrossReference referencetype:="Equation", ReferenceKind:= _
                wdEntireCaption, 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

0

Код Máté Juhász адаптирован для добавления перекрестных ссылок на пронумерованные элементы (номера абзацев).

Ссылку на абзац можно добавить, введя его номер следующим образом:

  • 7.8.9 или 7,8,9 или 789 для пункта 7.8.9
  • 1 для пункта 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .