เรียนรู้การโยงคีย์ที่จัดทำโดย AUCTeX ค่อยๆ


11

ถ้าฉันทำได้M-x forward-charEmacs จะให้ข้อความที่มีประโยชน์มาก

You can run the command "forward-char" with C-f.

เมื่อพิจารณาถึงความจริงที่ว่า Emacs สามารถค้นหา LaTeX keybindings ทั้งหมดในไฟล์latex.elภายใต้LaTeX-math-defaultAUCTeX เป็นไปได้หรือไม่ว่าในโหมด LaTeX (AUCTeX) Emacs จำฉันได้ไหมว่า Keybindings? ตัวอย่างเช่นหลังจากพิมพ์\sigmaEmacs จะแสดงข้อความว่า

You can insert "\sigma" by `s .

สิ่งนี้จะมีประโยชน์มากเพราะจะช่วยให้เรียนรู้การกดปุ่มในโหมด LaTeX ได้


2
ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่แถบเมนูควรแสดงแป้นพิมพ์ลัดหากมีการกำหนดไว้ และสิ่งเดียวกันสามารถใช้ได้กับเมนูป๊อปอัพ (ซึ่งแสดงให้เห็นทางลัด) - (global-set-key [C-down-mouse-3] 'mouse-popup-menubar)เช่น ด้วยวิธีนี้คุณไม่มีข้อความโฆษณาคลื่นไส้
ฏหมาย

@lawlist ฉันจะแสดงความคิดเห็นว่าสัญลักษณ์โหมดคณิตศาสตร์ไม่ได้อยู่ในเมนู แต่จริง ๆ แล้วพวกเขามีทั้งเมนูของตัวเอง! แม้กระทั่งรายการที่ไม่มีการตัดสั้นที่กำหนดจะแสดงพร้อมกับรหัสที่จำเป็นในการผลิตพวกเขา มีประโยชน์มาก!
ไทเลอร์

คำตอบ:


9

การแก้ไขคำตอบของฉันจากที่นี่เราสามารถดึงข้อมูลนี้ออกจากLaTeX-math-defaultซึ่งเป็นรายการของ tuples 4 รายการ

(CHARACTER MACRO MENU UNICODE)

ที่CHARACTERเป็นตัวละครที่ใช้ในการผูกมัน (ฉันรู้ว่ามันดูเหมือนว่าจำนวนเต็ม แต่มันเป็นตัวอักษรที่ใช้(string CHARACTER)ในการดู) MACROเป็นมาโครลาเท็กซ์ที่ไม่มีเครื่องหมายทับMENUเป็นชื่อเมนูและUNICODEเป็นอักขระยูนิโค้ดที่ใช้สำหรับแสดงใน เมนู. เราต้องการตรวจสอบองค์ประกอบที่หนึ่งและสอง:

(defun show-latex-symbol-at-point ()
  (interactive)
  (let* ((sym (symbol-at-point))
         (latex-symbol (TeX-member sym LaTeX-math-default
                                   (lambda (a b)
                                     (string= a (nth 1 b)))))
         (shortcut (nth 0 latex-symbol))
         )
    (if (and latex-symbol shortcut)
        (message "You can insert \\%s with `%s"
                 (nth 1 latex-symbol)
                 (key-description (string shortcut))))))

อาจมีวิธีที่ดีกว่าในการแสดงเอาต์พุตอย่างต่อเนื่อง แต่วิธีหนึ่งในการใช้post-command-hookเพื่อเรียกใช้ฟังก์ชันข้างต้นหลังจากทุกคำสั่ง เราจะใช้การถ้าเพื่อให้แน่ใจว่าสิ่งนี้จะทำงานเฉพาะในlatex-mode

(add-hook 'post-command-hook
          (lambda ()
            (if (bound-and-true-p LaTeX-math-mode)
                (show-latex-symbol-at-point)
              )
            ))

ขอบคุณมากสำหรับคำตอบนี้ รหัสของคุณใช้งานได้ หลังจากพิมพ์ $ \ sigma $ ข้อความจะปรากฏขึ้นแจ้งให้You can insert \sigma with sทราบ ผมขอรายงานข้อบกพร่องที่เป็นไปได้ถ้าผมพิมพ์ $ \ oplus $ Error in post-command-hook ((lambda nil (if (eq major-mode (quote latex-mode)) (show-latex-symbol-at-point)))): (wrong-type-argument characterp nil)เมตรมีการบอกข้อผิดพลาด ฉันคิดว่าสิ่งนี้เกิดจากความจริงที่auctexยังไม่ได้ตั้งค่าทางลัดสำหรับoplus( oplusสามารถพบได้ภายใต้LaTeX-math-default) และจากข้อผิดพลาดนี้รหัสดูเหมือนจะไม่ทำงานเช่นโดยพิมพ์ $ \ sigma $ ไม่มีอะไรเกิดขึ้น
ชื่อ

@Name ฉันแก้ไขไม่ให้พยายามพิมพ์เมื่อCHARACTERเป็นnil
erikstokes

สมบูรณ์ ไม่กี่คำแนะนำเล็ก ๆ น้อย ๆ (1) ผมคิดว่าข้อความจะดีกว่าYou can insert \sigma with `s You can insert sigma with s(2) ปัจจุบันหลังจากพิมพ์\rightarrowข้อความYou can insert rightarrow with ^Fจะปรากฏขึ้น ฉันคิดว่าข้อความYou can insert \rightarrow with `C-fอาจจะดีกว่า
ชื่อ

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