Como posso adicionar caracteres a um método de entrada?

14

Costumo usar o TeXmétodo de entrada para digitar caracteres Unicode λ, o que é bastante útil. No entanto, alguns dos caracteres que quero digitar não são suportados, como vários subscritos (por exemplo ), caracteres de script (como 𝒞) e outros vários símbolos (como e ).

Como estender o método de entrada TeX para suportar alguns desses caracteres com uma string de entrada personalizada ( _ipor exemplo, para )?

Tikhon Jelvis
fonte
1
Este artigo do EmacsWiki mostra o show para fazê-lo: emacswiki.org/emacs/TeXInputMethod
Augusto
1
Além disso, esse arquivo em ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el pode ser facilmente alterado para um novo e muito mais completo método de entrada no estilo TeX.
Augusto
1
Ambos os links parecem úteis. Você poderia colocá-los em uma resposta real (idealmente com os bits relevantes citados aqui) para que esta pergunta possa ser marcada como respondida? Obrigado!
Tikhon Jelvis 11/11

Respostas:

12

Conforme explicado neste artigo do EmacsWiki , você pode anexar itens a um método de entrada como este:

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

Também acho conveniente usá-lo em ;vez do incômodo \como um prefixo para meus símbolos; portanto, faço o seguinte

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

Por fim, observe que o arquivo ac-math.el contém uma lista de caracteres matemáticos unicode e os nomes de macro TeX correspondentes, e pode ser facilmente alterado para um novo e muito mais completo método de entrada TeX-esque (posso digitar \gamma\dotpara obter γ̇ .)


ADENDO Usando o novo pacote math-symbol-lists (disponível no MELPA), é possível definir um método abrangente de entrada matemática da seguinte maneira:

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

Para ativar o método de entrada, digite C-u C-\ math RET. Em seguida, digitar \ mscrC gera 𝒞, \ lParen gera ⦅etc.

Augusto
fonte
1
O método de acrescentar à entrada não parece funcionar ( invalid Quail map nil). Eu mudei para um método de entrada personalizado com listas de símbolos matemáticos agora, que funciona muito bem.
precisa saber é o seguinte
1

Eu estava usando insert-charpara inserir caracteres Unicode. No entanto, não apreciei a conclusão padrão desse comando. Então, aqui está uma que termina com helm:

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

E aqui são os tipos de lambdas que eu possa inserir: λ, Λ, ƛ, ƛ. Eu vinculei o comando a f2 u, então a sequência para inseri-los foi:

f2 u lambda RET

f2 u M-p C-n RET

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

...

abo-abo
fonte
2
Parece um truque útil, mas na verdade não responde à minha pergunta. Quero especificamente modificar ou estender um método de entrada porque ele se encaixa muito bem no meu fluxo de trabalho existente.
Tikhon Jelvis