¿Cómo puedo agregar caracteres a un método de entrada?

14

A menudo uso el TeXmétodo de entrada para escribir caracteres Unicode como λ, lo cual es bastante útil. Sin embargo, algunos de los caracteres que quiero escribir no son compatibles como varios subíndices (digamos ), caracteres de guión (como 𝒞) y otros símbolos diferentes (como y ).

¿Cómo puedo extender el método de entrada TeX para admitir algunos de estos caracteres con una cadena de entrada personalizada (es decir, _ipara )?

Tikhon Jelvis
fuente
1
Este artículo de EmacsWiki muestra cómo hacerlo: emacswiki.org/emacs/TeXInputMethod
Augusto
1
Además, este archivo de ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el se puede cambiar fácilmente a un método de entrada TeX-esque nuevo y mucho más completo.
Augusto
1
Ambos enlaces parecen útiles. ¿Podría ponerlos en una respuesta real (idealmente con los bits relevantes citados aquí) para que esta pregunta pueda marcarse como respondida? ¡Gracias!
Tikhon Jelvis

Respuestas:

12

Como se explica en este artículo de EmacsWiki , puede agregar cosas a un método de entrada como este:

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

También me parece conveniente usarlo en ;lugar de lo engorroso \como prefijo para mis símbolos, así que hago lo siguiente

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

Finalmente, tenga en cuenta que el archivo ac-math.el contiene una lista de caracteres matemáticos unicode y los nombres de macro TeX correspondientes, y puede cambiarse fácilmente a un método de entrada TeX-esque nuevo y mucho más completo (incluso puedo escribir \gamma\dotpara obtener γ̇ .)


APÉNDICE Usando el nuevo paquete math-symbol-lists (disponible en MELPA) se puede definir un método matemático de entrada de la siguiente manera:

(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 activar el método de entrada, escriba C-u C-\ math RET. Luego, al escribir \ mscrC se obtiene 𝒞, \ lParen se obtiene ⦅, etc.

Augusto
fuente
1
La cosa de agregar al método de entrada no parece funcionar ( invalid Quail map nil). He cambiado a un método de entrada personalizado con listas de símbolos matemáticos ahora, que funciona muy bien.
Leftaroundabout
1

Estaba usando insert-charpara insertar caracteres Unicode. Sin embargo, no aprecié la finalización predeterminada para ese comando. Así que aquí hay uno que se completa con helm:

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

Y aquí están los tipos de lambdas que puedo insertar: λ, Λ, ƛ, ƛ. He vinculado el comando a f2 u, por lo que la secuencia para insertar estos fue:

f2 u lambda RET

f2 u M-p C-n RET

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

...

abo-abo
fuente
2
Parece un truco útil, pero en realidad no responde a mi pregunta. Específicamente quiero modificar o extender un método de entrada porque se adapta muy bien a mi flujo de trabajo existente.
Tikhon Jelvis el