¿Inserción rápida de símbolos unicode?

8

Actualmente, estoy insertando caracteres unicode (principalmente símbolos matemáticos) usando el método de entrada TeX. Esto es engorroso, ya que, para cada personaje, tengo que hacer lo siguiente:

  1. Cambie al método de entrada TeX presionando C-\
  2. escriba una expresión de látex como \Bbb{R}o\Leftrightarrow

Hay un subconjunto relativamente pequeño de caracteres Unicode (10-20) que estoy insertando todo el tiempo.

P: ¿Hay alguna forma de insertar caracteres Unicode con pocas (2-4) pulsaciones de teclas?

Mente vacía
fuente
1
Quizás valga la pena mencionar que no es necesario cambiar al método de entrada TeX cada vez. Puedes dejarlo encendido. El único inconveniente es la necesidad de escribir \\ cuando quieres una barra diagonal inversa
desuso

Respuestas:

6

Puede usar abbrev-modepara crear cadenas que se "expandan" a los caracteres unicode que desee. Por ejemplo, la siguiente abbrevtabla define abreviaturas para las primeras tres letras minúsculas del alfabeto griego:

(define-abbrev-table 'unicode-table
  '(("ualpha" "α")
    ("ubeta"  "β")
    ("ugamma" "γ"))
    "Unicode characters I use all the time.")

Luego puede indicarle text-mode(o cualquier otro modo que desee) que herede su tabla Unicode:

(define-abbrev-table 'text-mode-abbrev-table
  nil
  "Text mode abbrev table."
  :parents (list unicode-table))

Ir a un búfer en modo texto. Encienda abbrev-mode. Escriba ualphaun carácter que no sea de palabra (espacio, punto, etc.) y observe cómo se expande a α.

Dan
fuente
6

Puede definir sus propias secuencias de teclas con las funciones global-set-keyy elisp local-set-key. Por lo tanto, se recomienda usar C-cuna sola letra para las secuencias de teclas definidas por el usuario. (De lo contrario, es posible que anule las secuencias de teclas vinculadas por otras bibliotecas de emacs-lisp. Más tarde se meterá en problemas cuando descubra que la versión de biblioteca de la secuencia de teclas sería muy útil para usted).

Si desea utilizar estas secuencias independientemente del modo principal, puede vincularlas globalmente.

Por ejemplo, puedes agregar

(global-set-key (kbd "C-c a") "⇔")

a su archivo de configuración ~/.emacs.

Alternativamente, puede usar estas teclas según el modo principal.

Un ejemplo es:

(defun my-latex-hook-function () (local-set-key (kbd "C-c a") "⇔"))
(add-hook 'TeX-mode-hook 'my-latex-hook-function)

Esto funciona con auctex. Si está utilizando el nativo tex-modeo latex-modepuede ser que usted tiene que reemplazar TeX-mode-hookpor tex-mode-hook.


Tenga en cuenta que también está insert-charobligado a C-x 8 RET. Con esto puede ingresar caracteres utf8 si conoce su código. Si no conoce el código, puede ingresarlos por su descripción, pero eso se vuelve engorroso.


También hay modos especiales que apoyan al usuario con la entrada de símbolos de látex, como company-math-Mode y ac-math-mode .

Ambos son modos de finalización. companyfunciona con los menús del mouse y ac(autocompletar) funciona con la tabtecla.

Pero no estoy seguro sobre el estado actual de estos paquetes. Puedes instalar estos modos por melpa si quieres probarlos.

Tobias
fuente
FWIW: los usuarios pueden usar cualquier secuencia de teclas que deseen. La ventaja de una secuencia de teclas que comienza C-ces que puede estar bastante seguro de que no entrará en conflicto con ninguna asociación de teclas proporcionada por Emacs o una biblioteca que pueda usar.
Dibujó
@Drew Sí, lo sé. El riesgo potencial de conflictos con las secuencias de teclas de la biblioteca es el motivo de mi recomendación.
Tobias
Sí, me lo imaginé. Mi comentario fue para el beneficio de cualquier lector de su respuesta que podría tener una impresión diferente de " debería seguir la convención para usar Cc y una sola letra para las secuencias de teclas definidas por el usuario " . No existe una convención para usar las claves definidas por el usuario Cc más una carta. Estoy seguro de que estamos de acuerdo, solo quería que esto fuera claro para los lectores. Si hubiera dicho que recomienda que usen Cc más una letra (puntos de bonificación por decir por qué), entonces no habría comentado. HTH.
Dibujó
@Drew Esa fue la razón por la que agregué el enlace. El texto vinculado aclara todo. Ahora, agregué también una nota en el texto.
Tobias
3

Usted dice: hay un subconjunto relativamente pequeño de caracteres Unicode (supongo que 10-20) estoy insertando todo el tiempo.

En ese caso, como indicó @Tobias, puede vincular, para cada uno de ellos, una secuencia de teclas simple a (a) un comando que inserte ese carácter o (b) una cadena de un solo carácter con ese carácter (esto actúa como una macro de teclado, para insertar el caracter).

La biblioteca ucs-cmds.elpuede ayudarlo a definir dichos comandos. Los comandos resultantes tienen los mismos nombres que los caracteres. Puede usar macro ucsc-make-commandspara definir un conjunto completo de comandos que insertan un carácter de cierto tipo.

Por ejemplo, puede poner esto en su archivo init para definir comandos que inserten todos los símbolos matemáticos Unicode:

(require 'ucs-cmds)           ; Load the library
(ucsc-make-commands "^math")  ; Use the macro to create commands

Eso le da comandos cuyos nombres son los mismos que los caracteres matemáticos. Vincula cualquiera de estos que utilizas mucho con teclas fáciles de usar. Por ejemplo:

(global-set-key (kbd "C-c S") 'mathematical-bold-capital-sigma)

(O asocie una tecla a dicho comando solo en modo Tex, usando define-keycon su mapa de teclas).

Simplemente así de simple (ucsc-make-commands "^math"), tiene disponibles todos los comandos de inserción de caracteres que se enumeran a continuación.

También hay otros caracteres Unicode, cuyos nombres no comienzan mathpero que se usan en matemáticas, por ejemplo, el carácter PARTIAL DIFFERENTIAL. Puede crear fácilmente comandos que inserten cualquiera de esos caracteres también. (Y tenga en cuenta que los caracteres cuyos nombres comienzan mathbien podrían requerir el uso de una fuente especial; muchas fuentes no los admiten).

Por supuesto, puede usar una expresión regular más estricta que ^math, si desea definir solo caracteres que coincidan con dicho patrón. Por ejemplo, esto define comandos para todos los caracteres diferenciales parciales:

(ucsc-make-commands "^math.*partial differential")

Eso te da estos comandos:

mathematical-bold-italic-partial-differential
mathematical-bold-partial-differential
mathematical-italic-partial-differential
mathematical-sans-serif-bold-italic-partial-differential
mathematical-sans-serif-bold-partial-differential

Tenga en cuenta que los nombres de caracteres Unicode separan las palabras con caracteres de espacio, y los nombres son mayúsculas. Los comandos de inserción correspondientes utilizan guiones en lugar de espacios y minúsculas en lugar de mayúsculas.

Una ventaja de tener comandos con el nombre de caracteres que insertan, en lugar de, por ejemplo, solo vincular teclas a cadenas de caracteres simples, es que puede usar M-xpara ingresar caracteres que usa con menos frecuencia, por nombre usando terminación. En lugar de completar con el conjunto completo de nombres de caracteres Unicode, completa con los nombres de los comandos de inserción de caracteres que ha definido.


Estos son los comandos que insertan caracteres cuyos nombres comienzan con math. Son lo que obtienes al evaluar (ucsc-make-commands "^math").

mathematical-bold-capital-a
mathematical-bold-capital-alpha
mathematical-bold-capital-b
mathematical-bold-capital-beta
mathematical-bold-capital-c
mathematical-bold-capital-chi
mathematical-bold-capital-d
mathematical-bold-capital-delta

...

mathematical-bold-digit-eight
mathematical-bold-digit-five
mathematical-bold-digit-four

...

mathematical-bold-epsilon-symbol
mathematical-bold-fraktur-capital-a
mathematical-bold-fraktur-capital-b

...

mathematical-bold-fraktur-small-a
mathematical-bold-fraktur-small-b

...

mathematical-bold-italic-capital-a
mathematical-bold-italic-capital-alpha
mathematical-bold-italic-capital-b
mathematical-bold-italic-capital-beta

...

mathematical-bold-italic-nabla
mathematical-bold-italic-partial-differential
mathematical-bold-italic-phi-symbol
mathematical-bold-italic-pi-symbol
mathematical-bold-italic-rho-symbol
mathematical-bold-italic-small-a
mathematical-bold-italic-small-alpha
mathematical-bold-italic-small-b
mathematical-bold-italic-small-beta

...

mathematical-bold-nabla
mathematical-bold-partial-differential
mathematical-bold-phi-symbol
mathematical-bold-pi-symbol
mathematical-bold-rho-symbol
mathematical-bold-script-capital-a
mathematical-bold-script-capital-b

...

mathematical-bold-script-small-a
mathematical-bold-script-small-b

...

mathematical-bold-small-a
mathematical-bold-small-alpha
mathematical-bold-small-b
mathematical-bold-small-beta

...

mathematical-double-struck-capital-a
mathematical-double-struck-capital-b

...

mathematical-double-struck-digit-eight
mathematical-double-struck-digit-five
mathematical-double-struck-digit-four
mathematical-double-struck-digit-nine
mathematical-double-struck-digit-one
mathematical-double-struck-digit-seven
mathematical-double-struck-digit-six
mathematical-double-struck-digit-three
mathematical-double-struck-digit-two
mathematical-double-struck-digit-zero
mathematical-double-struck-small-a
mathematical-double-struck-small-b

...

mathematical-falling-diagonal
mathematical-fraktur-capital-a
mathematical-fraktur-capital-b

...

mathematical-fraktur-small-a
mathematical-fraktur-small-b

...

mathematical-italic-capital-a
mathematical-italic-capital-alpha
mathematical-italic-capital-b
mathematical-italic-capital-beta

...

mathematical-italic-nabla
mathematical-italic-partial-differential
mathematical-italic-phi-symbol
mathematical-italic-pi-symbol
mathematical-italic-rho-symbol
mathematical-italic-small-a
mathematical-italic-small-alpha

...

mathematical-italic-small-dotless-i
mathematical-italic-small-dotless-j
mathematical-italic-small-e
mathematical-italic-small-epsilon

...

mathematical-italic-small-final-sigma

...

mathematical-left-angle-bracket
mathematical-left-double-angle-bracket
mathematical-left-flattened-parenthesis
mathematical-left-white-square-bracket
mathematical-left-white-tortoise-shell-bracket
mathematical-monospace-capital-a
mathematical-monospace-capital-b

...

mathematical-monospace-digit-eight
mathematical-monospace-digit-five
mathematical-monospace-digit-four

...

mathematical-monospace-small-a
mathematical-monospace-small-b

...

mathematical-right-angle-bracket
mathematical-right-double-angle-bracket
mathematical-right-flattened-parenthesis
mathematical-right-white-square-bracket
mathematical-right-white-tortoise-shell-bracket
mathematical-rising-diagonal
mathematical-sans-serif-bold-capital-a
mathematical-sans-serif-bold-capital-alpha
mathematical-sans-serif-bold-capital-b
mathematical-sans-serif-bold-capital-beta

...

mathematical-sans-serif-bold-digit-eight
mathematical-sans-serif-bold-digit-five
mathematical-sans-serif-bold-digit-four

...

mathematical-sans-serif-bold-italic-capital-a
mathematical-sans-serif-bold-italic-capital-alpha
mathematical-sans-serif-bold-italic-capital-b
mathematical-sans-serif-bold-italic-capital-beta

...

mathematical-sans-serif-bold-italic-nabla
mathematical-sans-serif-bold-italic-partial-differential

...

mathematical-sans-serif-bold-italic-small-a
mathematical-sans-serif-bold-italic-small-alpha
mathematical-sans-serif-bold-italic-small-b
mathematical-sans-serif-bold-italic-small-beta

...

mathematical-sans-serif-bold-italic-small-final-sigma

...

mathematical-sans-serif-bold-nabla
mathematical-sans-serif-bold-partial-differential

...

mathematical-sans-serif-bold-small-a
mathematical-sans-serif-bold-small-alpha
mathematical-sans-serif-bold-small-b
mathematical-sans-serif-bold-small-beta

...

mathematical-sans-serif-bold-small-final-sigma

...

mathematical-sans-serif-capital-a
mathematical-sans-serif-capital-b

...

mathematical-sans-serif-digit-eight
mathematical-sans-serif-digit-five
mathematical-sans-serif-digit-four

...

mathematical-sans-serif-italic-capital-a
mathematical-sans-serif-italic-capital-b

...

mathematical-sans-serif-italic-small-a
mathematical-sans-serif-italic-small-b

...

mathematical-sans-serif-small-a
mathematical-sans-serif-small-b

...

mathematical-script-capital-a

...

mathematical-script-small-a
mathematical-script-small-b

...

Dibujó
fuente