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


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.


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

...


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.