Maneira fácil de cruzar referência no MS Word?

2

Existe uma maneira fácil de adicionar uma referência cruzada, como um atalho de teclado ou um método de copiar e colar? Eu tenho um documento com muitas equações (às centenas), e está se tornando uma dor adicionar referências cruzadas à equação apropriada. Então, basicamente, eu quero algo como o seguinte: por exemplo, 'Alt + q', em seguida, '5.13' adiciona uma referência cruzada para a equação 5.13. Isso é possível?

Estou usando o MS Word 2013.

    
por Quantum spaghettification 30.04.2015 / 08:17

4 respostas

1

Não conheço nenhuma solução incorporada como essa, você pode fazer isso com o VBA. Abaixo há um exemplo, ele pede o número e insere a referência cruzada, coloca no seu normal.dotm para poder acessar de qualquer documento e atribuir um atalho para ele e você tem a sua solução.

Código atualizado

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
    
por 06.05.2015 / 09:24
3

No Word 2010, pelo menos, você pode abrir a caixa de diálogo com Alt-I-N-R (o Alt Chording é opcional para N e R). Em seguida, Alt-W para mudar o foco para a lista de itens numerados. Em seguida, digite o número desejado. Só vai para o nível superior da numeração, então, como se você tivesse 5.3, ele só iria para 5; você tem que usar as setas para o resto.

Eu percebo que esta é uma pergunta de um ano com uma resposta aceita, e eu nem tenho certeza do quão bem este trabalho para equações (eu uso em documentos em formato de contorno), mas eu encontrei isso em uma pesquisa e deixar esta informação adicional para qualquer outra pessoa pode ajudar.

    
por 02.04.2016 / 20:26
0

Aqui está a minha versão editada do código de Máté Juhász

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

    
por 07.05.2015 / 14:47
0

Código de Máté Juhász adaptado para adicionar referências cruzadas para itens numerados ( números de parágrafos ).

A referência do parágrafo pode ser adicionada inserindo seu número das seguintes formas:

  • 7.8.9 ou 7,8,9 ou 789 para o parágrafo 7.8.9
  • 1 para o parágrafo 1
  • 11 para o parágrafo 1.1
  • 11. para o parágrafo 11 (se houver também 1,1)

Código de macro:

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
    
por 23.02.2018 / 20:00