我在 Word 2007 中使用数学自动更正功能,包括正文。我在自动更正选项中选中了“在数学区域之外使用数学自动更正规则”。有没有办法在不移动光标的情况下触发自动更正?
用例:我正在尝试输入,例如50±10%
。如果我输入50\pm5%
并按下空格键,什么也不会发生。要获得±
我必须输入50\pm<space><backspace>5%
。backspace
是为了摆脱触发自动完成的空格\pm
。同样,如果我点击Enter
而不是space
,光标会移动到下一行。我试图不必退格覆盖添加的空格。
我尝试按 F3、使用TypeText
VBA 宏并插入零宽度不间断空格;但都没有触发自动完成功能。我还搜索了 Google 和 MSDN,包括该OMathAutoCorrect
对象,但毫无收获。
我能想到两个选择,但我都不喜欢。
使用 Autohotkey 发送
<space><backspace>
。我不会将 AHK 用于其他任何用途,并且如果可能的话,我想避免再运行另一个进程。搜索
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