Come posso aggiungere caratteri a un metodo di input?


14

Uso spesso il TeXmetodo di input per digitare caratteri Unicode λ, il che è abbastanza utile. Tuttavia, alcuni dei caratteri che voglio digitare non sono supportati come vari pedici (diciamo ), caratteri (come 𝒞) script e altri vari simboli (come e ).

Come posso estendere il metodo di input TeX per supportare alcuni di questi caratteri con una stringa di input personalizzata (ovvero _iper )?


1
Questo articolo di EmacsWiki mostra lo spettacolo per farlo: emacswiki.org/emacs/TeXInputMethod
Augusto,

1
Inoltre, questo file da ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el può essere facilmente modificato in un nuovo metodo di input TeX molto più completo.
Augusto,

1
Entrambi questi collegamenti sembrano utili. Potresti metterli in una risposta effettiva (idealmente con i bit pertinenti citati qui) in modo che questa domanda possa essere contrassegnata come risposta? Grazie!
Tikhon Jelvis,

Risposte:


12

Come spiegato in questo articolo di EmacsWiki , puoi aggiungere elementi a un metodo di input come questo:

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

Trovo anche conveniente usare al ;posto dell'ingombrante \come prefisso per i miei simboli, quindi faccio quanto segue

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

Infine, nota che il file ac-math.el contiene un elenco di caratteri matematici unicode e i corrispondenti nomi di macro TeX e può essere facilmente modificato in un nuovo e molto più completo metodo di input in stile TeX (posso anche digitare \gamma\dotper ottenere γ̇ .)


ADDENDUM Utilizzando il nuovo pacchetto math-symbol-lists (disponibile su MELPA) è possibile definire un metodo di input matematico completo come segue:

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

Per attivare il metodo di input, digitare C-u C-\ math RET. Quindi, digitando \ mscrC rendimenti 𝒞, \ lParen rendimenti ⦅, ecc.


1
La cosa che aggiunge il metodo di input non sembra funzionare ( invalid Quail map nil). Sono passato a un metodo di input personalizzato con liste di simboli matematici ora, che funziona bene.
lasciato circa l'

1

Stavo usando insert-charper inserire caratteri Unicode. Tuttavia non ho apprezzato il completamento predefinito per quel comando. Quindi eccone uno che si completa con helm:

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

E qui sono i tipi di lambda che posso inserire: λ, Λ, ƛ, ƛ. Ho associato il comando f2 u, quindi la sequenza per inserire questi era:

f2 u lambda RET

f2 u M-p C-n RET

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

...


2
Sembra un trucco utile, ma in realtà non risponde alla mia domanda. Voglio specificamente modificare o estendere un metodo di input perché si adatta molto bene al mio flusso di lavoro esistente.
Tikhon Jelvis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.