ฉันสามารถทริกเกอร์แก้ไขอัตโนมัติทางคณิตศาสตร์ใน Word 2007 โดยไม่เลื่อนเคอร์เซอร์ได้หรือไม่


2

ฉันใช้การแก้ไขอัตโนมัติทางคณิตศาสตร์ใน Word 2007 รวมถึงเนื้อความด้วย ฉันได้เลือก "ใช้กฎการแก้ไขอัตโนมัติคณิตศาสตร์นอกขอบเขตคณิตศาสตร์" ในตัวเลือกการแก้ไขอัตโนมัติ มีวิธีใดบ้างที่จะทริกเกอร์การแก้ไขอัตโนมัติโดยไม่เลื่อนเคอร์เซอร์?

ใช้กรณี:ฉันกำลังพยายามพิมพ์เช่น50±10%. หากฉันป้อน50\pm5%และกด Space ไม่มีอะไรเกิดขึ้น เพื่อให้ได้ผมต้องพิมพ์± คือการกำจัดของพื้นที่ที่เรียกการทำให้สมบูรณ์อัตโนมัติของ ถ้าฉันกดแทนเคอร์เซอร์ก็จะเลื่อนไปที่บรรทัดถัดไป ฉันพยายามที่จะไม่ต้องถอยกลับไปที่ช่องว่างที่เพิ่ม 50\pm<space><backspace>5%backspace\pmEnterspace

ฉันพยายามกดปุ่ม F3 โดยใช้TypeTextในมาโคร VBA และแทรกพื้นที่ที่ไม่มีการแบ่งความกว้างเป็นศูนย์ ไม่มีการเรียกการทำให้สมบูรณ์อัตโนมัติ ฉันค้นหา Google และ MSDN รวมถึงOMathAutoCorrectวัตถุด้วยโชคไม่ดี

ฉันสามารถนึกถึงสองตัวเลือกซึ่งไม่ชอบ

  1. ใช้ Autohotkey <space><backspace>ที่จะส่ง ฉันไม่ได้ใช้ AHK สำหรับสิ่งอื่นและต้องการหลีกเลี่ยงที่จะมีกระบวนการอื่นทำงานถ้าเป็นไปได้

  2. ค้นหาOMathAutoCorrect.Entriesคอลเล็กชันและแทนที่ด้วยมือ ฉันกังวลเกี่ยวกับความเร็ว

ขอบคุณสำหรับความคิดใด ๆ !


50\pm5%ไร้สาระแม้ในบริบททางคณิตศาสตร์และจะไม่เรียกใช้การแทนที่ คุณสามารถใช้+-หากคุณต้องการ±(ซึ่งจะถูกแทนที่ทันทีเพราะไม่ใช่ตัวอักษรและตัวเลข) ไม่ว่าในกรณีใดตัวอย่างของคุณจะต้องมีการเว้นวรรคที่เหมาะสมซึ่งจะทำให้ปัญหาไม่มีอยู่จริงเช่นกัน
Joey

@Joey - +-ฉันขอขอบคุณข้อเสนอแนะเกี่ยวกับ นั่นจะเป็นประโยชน์มาก ปัญหานี้ไม่ได้ไร้สาระสำหรับฉันและสิ่งที่ฉันกำลังพิมพ์ไม่จำเป็นต้องเว้นวรรคในบริบทเฉพาะของฉัน ฉันมาจาก TeX ซึ่ง50\pm5\%จะทำสิ่งที่ถูกต้องโดยไม่มีช่องว่างจากฉัน (เนื่องจาก5ไม่ใช่ตัวระบุที่ถูกต้อง) ฉันหวังว่า Word สามารถทำสิ่งที่คล้ายกันได้
cxw

Word มีกฎอื่นนอกเหนือจาก TeX ความแตกต่างที่สำคัญอย่างหนึ่งคือโทเค็น ในขณะที่x^21จะให้ผลx  ² 1 ใน TeX มันจะให้x  ²¹ใน Word โทเค็น TeX ตามอักขระแมโครหรือบล็อกด้วยเครื่องหมายปีกกา Word สร้างความแตกต่างด้วยช่องว่าง มันอาจฟังดูบ้าเล็กน้อย แต่ฉันคิดว่ามันมีประโยชน์มากกว่าในทางปฏิบัติ unicode.org/notes/tn28มีคำอธิบายของรูปแบบ ฉันคิดว่ามันง่ายที่จะเขียนไม่ใช่เรื่องง่ายที่จะเล่นกอล์ฟ ;-)
Joey

คำตอบ:


0

ฉันพบว่า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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.