Bagaimana saya bisa menambahkan karakter ke metode input?

14

Saya sering menggunakan TeXmetode input untuk mengetik seperti karakter Unicode λ, yang cukup berguna. Namun, beberapa karakter yang ingin saya ketik tidak didukung seperti berbagai subskrip (katakanlah ), karakter skrip (seperti 𝒞) dan berbagai simbol lainnya (seperti dan ).

Bagaimana saya bisa memperluas metode input TeX untuk mendukung beberapa karakter ini dengan string input khusus (yaitu _iuntuk )?

Tikhon Jelvis
sumber
1
Artikel EmacsWiki ini menunjukkan tunjukkan untuk melakukannya: emacswiki.org/emacs/TeXInputMethod
Augusto
1
Juga, file ini dari ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el dapat dengan mudah diubah menjadi metode input TeX-esque yang baru dan jauh lebih lengkap.
Augusto
1
Kedua tautan tersebut terlihat bermanfaat. Bisakah Anda memasukkannya ke dalam jawaban aktual (idealnya dengan bit relevan yang dikutip di sini) sehingga pertanyaan ini dapat ditandai sebagai dijawab? Terima kasih!
Tikhon Jelvis

Jawaban:

12

Seperti yang dijelaskan dalam artikel EmacsWiki ini , Anda dapat menambahkan item ke metode input seperti ini:

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

Saya juga merasa nyaman untuk menggunakan ;alih-alih rumit \untuk simbol saya, jadi saya melakukan yang berikut

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

Akhirnya, perhatikan bahwa file ac-math.el berisi daftar karakter matematika unicode dan nama makro TeX yang sesuai, dan dapat dengan mudah diubah menjadi metode input esque TeX-esque yang baru dan lebih lengkap (saya bahkan dapat mengetik \gamma\dotuntuk mendapatkan γ̇ .)


ADDENDUM Menggunakan daftar simbol-matematika paket baru (tersedia di MELPA) orang dapat mendefinisikan metode input matematika yang komprehensif sebagai berikut:

(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))

Untuk mengaktifkan metode input, ketik C-u C-\ math RET. Kemudian, mengetik \ mscrC menghasilkan 𝒞, \ lParen menghasilkan ⦅, dll.

Augusto
sumber
1
Hal menambahkan-ke-metode input tampaknya tidak berfungsi ( invalid Quail map nil). Saya telah beralih ke metode input khusus dengan daftar simbol-matematika sekarang, yang berfungsi dengan baik.
leftaroundabout
1

Saya menggunakan insert-charuntuk memasukkan karakter Unicode. Namun saya tidak menghargai penyelesaian default untuk perintah itu. Jadi, inilah yang dilengkapi dengan helm:

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

Dan di sini adalah jenis lambdas yang saya dapat memasukkan: λ, Λ, ƛ, ƛ. Saya sudah terikat perintah f2 u, jadi urutan untuk memasukkan ini adalah:

f2 u lambda RET

f2 u M-p C-n RET

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

...

abo-abo
sumber
2
Itu terlihat seperti trik yang berguna, tetapi itu tidak benar-benar menjawab pertanyaan saya. Saya secara khusus ingin memodifikasi atau memperluas metode input karena sangat cocok dengan alur kerja saya yang ada.
Tikhon Jelvis