ฉันจะเพิ่มตัวละครในวิธีป้อนข้อมูลได้อย่างไร


14

ฉันมักจะใช้TeXวิธีการป้อนข้อมูลเพื่อพิมพ์อักขระ Unicode เช่นλซึ่งค่อนข้างมีประโยชน์ อย่างไรก็ตามอักขระบางตัวที่ฉันต้องการพิมพ์ไม่รองรับเช่นตัวห้อยต่าง ๆตัวอักษรสคริปต์ (เช่น𝒞) และสัญลักษณ์อื่น ๆ (เช่นและ)

ฉันจะขยายวิธีการป้อนข้อมูล TeX เพื่อสนับสนุนอักขระบางตัวด้วยสตริงอินพุตที่กำหนดเองได้ (เช่น_iเพื่อ) ได้อย่างไร


1
บทความ EmacsWiki นี้แสดงให้เห็นว่าทำได้: emacswiki.org/emacs/TeXInputMethod
Augusto

1
นอกจากนี้ไฟล์นี้จากac-math github.com/vitoshka/ac-math/blob/master/ac-math.elสามารถเปลี่ยนเป็นวิธีป้อนข้อมูล TeX-esque แบบใหม่และสมบูรณ์มากขึ้นได้อย่างง่ายดาย
Augusto

1
ลิงก์ทั้งสองมีประโยชน์ คุณสามารถใส่คำตอบเหล่านั้นลงไปในคำตอบจริง ๆ (โดยคำนึงถึงบิตที่เกี่ยวข้องที่ยกมาที่นี่) เพื่อให้คำถามนี้สามารถทำเครื่องหมายเป็นคำตอบได้หรือไม่? ขอบคุณ!
Tikhon Jelvis

คำตอบ:


12

ตามที่อธิบายไว้ในบทความ EmacsWiki นี้คุณสามารถผนวกสิ่งต่าง ๆ เข้ากับวิธีการป้อนข้อมูลดังนี้:

(let ((quail-current-package (assoc "TeX" quail-package-alist)))
  (quail-define-rules ((append . t))
                      ("_i" ?ᵢ)
                      ("^\\alpha" ?ᵅ)))

ฉันยังพบว่ามันสะดวกที่จะใช้;แทนที่จะ\เป็นคำนำหน้าสำหรับสัญลักษณ์ของฉันดังนั้นฉันจึงทำสิ่งต่อไปนี้

(let ((quail-current-package (assoc "TeX" quail-package-alist)))
   (quail-defrule ";" (quail-lookup-key "\\")))

ท้ายที่สุดโปรดทราบว่าไฟล์ac-math.elมีรายการอักขระทางคณิตศาสตร์ของยูนิโค้ดและชื่อแมโคร TeX ที่สอดคล้องกันและสามารถเปลี่ยนเป็นวิธีป้อนข้อมูล TeX-esque ใหม่ได้อย่างสมบูรณ์และง่ายดายยิ่งขึ้น (ฉันสามารถพิมพ์\gamma\dotเพื่อรับ get ได้ .)


ADDENDUM การใช้รายการคณิตศาสตร์ - สัญลักษณ์ - รายการใหม่ (มีให้ใน MELPA) สามารถกำหนดวิธีการป้อนข้อมูลทางคณิตศาสตร์แบบครอบคลุมดังนี้:

(package-initialize)
(require 'math-symbol-lists)
(quail-define-package "math" "UTF-8" "Ω" t)
(quail-define-rules ; whatever extra rules you want to define...
 ("\\from"    #X2190)
 ("\\to"      #X2192)
 ("\\lhd"     #X22B2)
 ("\\rhd"     #X22B3)
 ("\\unlhd"   #X22B4)
 ("\\unrhd"   #X22B5))
(mapc (lambda (x)
        (if (cddr x)
            (quail-defrule (cadr x) (car (cddr x)))))
      (append math-symbol-list-basic math-symbol-list-extended))

C-u C-\ math RETเพื่อเปิดใช้งานวิธีการป้อนข้อมูลประเภท จากนั้นพิมพ์ \ mscrC ให้ผลตอบแทน𝒞, \ lParen ให้ผลตอบแทน⦅เป็นต้น


1
สิ่งที่ผนวกเข้ากับวิธีการป้อนข้อมูลดูเหมือนจะไม่ทำงาน ( invalid Quail map nil) ฉันได้เปลี่ยนไปใช้วิธีป้อนข้อมูลแบบกำหนดเองด้วยรายการสัญลักษณ์ทางคณิตศาสตร์ในขณะนี้ซึ่งใช้งานได้ดี
leftaroundabout

1

ฉันใช้insert-charเพื่อแทรกตัวอักษร Unicode อย่างไรก็ตามฉันไม่ได้ชื่นชมความสมบูรณ์เริ่มต้นของคำสั่งนั้น ดังนั้นนี่คือสิ่งหนึ่งที่เสร็จสมบูรณ์ด้วยhelm:

(defun helm-insert-char ()
  (interactive)
  (helm :sources
      `((name . "Unicode char name")
        (candidates . ,(ucs-names))
        (action . insert))))

และนี่คือประเภทของ lambdas λที่ฉันสามารถแทรก: Λ, ƛ, ƛ, ฉันได้ผูกคำสั่งเพื่อf2 uดังนั้นลำดับการแทรกเหล่านี้คือ

f2 u lambda RET

f2 u M-p C-n RET

f2 u M-p C-n C-n RET

...


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