Posso acionar a AutoCorreção de Matemática no Word 2007 sem mover o cursor?

2

Eu uso a AutoCorreção de Matemática no Word 2007, inclusive no corpo do texto. Eu tenho "usar regras de AutoCorreção de matemática fora de regiões matemáticas" verificadas nas opções de AutoCorreção. Existe alguma maneira de acionar a AutoCorreção sem mover o cursor?

Caso de uso: Estou tentando digitar, por exemplo, 50±10% . Se eu digitar 50\pm5% e clicar em Espaço, nada acontece. Para obter o ± , tenho que digitar 50\pm<space><backspace>5% . O backspace é para se livrar do espaço que acionou o AutoCompletar de \pm . Da mesma forma, se eu atingir Enter em vez de space , o cursor se moverá para a próxima linha. Eu estou tentando não ter que retroceder sobre o espaço em branco adicionado.

Eu tentei pressionar F3, usando TypeText em uma macro VBA e inserir um espaço não-separável de largura zero; nenhum ativou o recurso Preenchimento Automático. Também pesquisei no Google e no MSDN, incluindo o objeto OMathAutoCorrect , sem sorte.

Eu posso pensar em duas opções, nenhuma das quais eu gosto.

  1. Use Autohotkey para enviar <space><backspace> . Eu não uso o AHK para mais nada e gostaria de evitar que outro processo seja executado, se possível.

  2. Pesquise a coleção OMathAutoCorrect.Entries e substitua a mão. Estou preocupado com a velocidade, no entanto.

Obrigado por qualquer ideia!

    
por cxw 06.11.2013 / 18:30

1 resposta

0

Bem, descobri que OMathAutoCorrect.Entries será indexado pelo texto inserido, para que você possa procurar itens rapidamente. Eu escrevi a macro a seguir e atribuí a ito a um atalho de teclado. Aqui está, no caso de ajudar alguém!

Public Sub ConvertMathAutoCorrectEntryStartingWithBackslash()
' Convert an autocorrect entry beginning with a backslash, and don't move the cursor.
    Dim st As Long, en As Long
    Dim needle As String
    Dim fontname As String

    ' Find the text to replace
    st = Selection.Start
    en = Selection.End
    If st = en Then
        'Nothing selected.  Assume we're at the end of a just-typed abbreviation.
        Selection.MoveStartUntil "\", wdBackward    'leaves the cursor just before the \
        Selection.MoveStart wdCharacter, -1         'grab the \, too
    End If
    needle = Selection.Text
    fontname = Selection.Characters(1).Font.Name

    ' Find the replacement
    Dim entry As OMathAutoCorrectEntry

    Set entry = Nothing
    On Error Resume Next
    Set entry = Application.OMathAutoCorrect.entries.Item(needle)
    On Error GoTo 0

    If Not (entry Is Nothing) Then
        ' A match - make the replacement
        Selection.Delete
        Selection.InsertAfter entry.Value
        Selection.Collapse wdCollapseEnd
        Selection.Font.Name = fontname  ' So the font doesn't carry over from the math
        Exit Sub
    End If

    ' We didn't find it - put the cursor back
    Selection.Start = st
    Selection.End = en
End Sub 'ConvertMathAutoCorrectEntryStartingWithBackslash
    
por 06.11.2013 / 23:02