我可以在不移动光标的情况下触发 Word 2007 中的数学自动更正功能吗?

我可以在不移动光标的情况下触发 Word 2007 中的数学自动更正功能吗?

我在 Word 2007 中使用数学自动更正功能,包括正文。我在自动更正选项中选中了“在数学区域之外使用数学自动更正规则”。有没有办法在不移动光标的情况下触发自动更正?

用例:我正在尝试输入,例如50±10%。如果我输入50\pm5%并按下空格键,什么也不会发生。要获得±我必须输入50\pm<space><backspace>5%backspace是为了摆脱触发自动完成的空格\pm。同样,如果我点击Enter而不是space,光标会移动到下一行。我试图不必退格覆盖添加的空格。

我尝试按 F3、使用TypeTextVBA 宏并插入零宽度不间断空格;但都没有触发自动完成功能。我还搜索了 Google 和 MSDN,包括该OMathAutoCorrect对象,但毫无收获。

我能想到两个选择,但我都不喜欢。

  1. 使用 Autohotkey 发送<space><backspace>。我不会将 AHK 用于其他任何用途,并且如果可能的话,我想避免再运行另一个进程。

  2. 搜索OMathAutoCorrect.Entries集合并手动替换。不过我担心速度。

感谢您的任何想法!

答案1

好吧,我发现OMathAutoCorrect.Entries它会根据您输入的文本进行索引,这样您就可以快速查找项目。我编写了以下宏并将其分配给键盘快捷键。这里是它,以防它对其他人有帮助!

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

相关内容