Inserimento rapido di simboli unicode?


8

Attualmente sto inserendo caratteri unicode (principalmente simboli matematici) usando il metodo di input TeX. Questo è ingombrante, poiché, per ogni personaggio, devo fare quanto segue:

  1. Passare al metodo di input TeX premendo C-\
  2. digitare espressione in lattice come \Bbb{R}o\Leftrightarrow

C'è un sottoinsieme relativamente piccolo di caratteri unicode (10-20) che inserisco continuamente.

D: Esiste un modo per inserire caratteri unicode con pochi (2-4) tasti?



1
Vale forse la pena ricordare che non è necessario passare ogni volta al metodo di input TeX. Puoi lasciarlo acceso. L'unico aspetto negativo è la necessità di digitare \\ quando si desidera una barra rovesciata letterale
deprecata

Risposte:


6

È possibile utilizzare abbrev-modeper creare stringhe che "si espandono" nei caratteri unicode desiderati. Ad esempio, la abbrevtabella seguente definisce gli abbreviazioni per le prime tre lettere minuscole dell'alfabeto greco:

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

Puoi quindi dire text-mode(o qualunque altra modalità desideri) di ereditare la tua tabella unicode:

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

Vai a un buffer in modalità testo. Accendi abbrev-mode. Digita ualphaun carattere non di parole (spazio, punto, ecc.) E guardalo espandersi in α.


6

È possibile definire le proprie sequenze di tasti con le funzioni elisp global-set-keye local-set-key. Pertanto, si consiglia di utilizzare C-ce una singola lettera per le sequenze di tasti definite dall'utente. (In caso contrario, è possibile che si sostituiscano le sequenze di tasti vincolate da altre librerie emacs-lisp. Successivamente si riscontrano problemi quando si scopre che la versione della libreria della sequenza di tasti sarebbe molto utile.)

Se si desidera utilizzare queste sequenze indipendentemente dalla modalità principale, è possibile associarle a livello globale.

Per un esempio puoi aggiungere

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

al tuo file di configurazione ~/.emacs.

In alternativa, è possibile utilizzare questi tasti in base alla modalità principale.

Un esempio è:

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

Questo funziona con auctex. Se stai usando il nativo tex-modeo latex-modepotrebbe essere che devi sostituirlo TeX-mode-hookcon tex-mode-hook.


Nota che anche questo è insert-charlegato C-x 8 RET. Con ciò puoi inserire caratteri utf8 se conosci il loro codice. Se non conosci il codice, puoi inserirli in base alla loro descrizione, ma diventa ingombrante.


Esistono anche modalità speciali che supportano l'utente con l'immissione di simboli in lattice, come company-math-Mode e ac-math-mode .

Entrambi sono modalità di completamento. companyfunziona con i menu del mouse e ac(completamento automatico) funziona con il tabtasto-.

Ma non sono sicuro dello stato attuale di questi pacchetti. Puoi installare queste modalità per melpa se vuoi provarle.


FWIW: gli utenti possono utilizzare qualsiasi sequenza di tasti che preferiscono. Il vantaggio di una sequenza di tasti che inizia con C-cè che puoi essere abbastanza sicuro che non entrerà in conflitto con nessun legame chiave fornito da Emacs o da una biblioteca che potresti usare.
Estratto il

@Drew Sì, lo so. Il potenziale rischio di conflitti con le sequenze chiave delle biblioteche è il motivo della mia raccomandazione.
Tobias,

Sì, l'ho capito. Il mio commento è stato a beneficio di tutti i lettori della tua risposta che potrebbero avere un'impressione diversa da " dovresti seguire la convenzione per usare Cc e una sola lettera per le sequenze di tasti definite dall'utente " . Non esiste una convenzione per le chiavi definite dall'utente da usare Cc più una lettera. Sono sicuro che siamo d'accordo - volevo solo che questo fosse chiaro ai lettori. Se avessi detto di raccomandare di usare Cc più una lettera (punti bonus per dire il perché), non avrei commentato. HTH.
Estratto il

@Drew Questo è stato il motivo per cui ho aggiunto il link. Il testo collegato chiarisce tutto. Ora ho aggiunto anche una nota nel testo.
Tobias,

3

Dici: c'è un sottoinsieme relativamente piccolo di caratteri unicode (suppongo 10-20) che inserisco continuamente.

In tal caso, come indicato da @Tobias, puoi semplicemente associare, per ciascuno di essi, una semplice sequenza di tasti a (a) un comando che inserisce quel carattere o (b) una stringa a singolo carattere con quel carattere (questo si comporta come una macro di tastiera, per inserire il carattere).

La libreria ucs-cmds.elpuò aiutarti a definire tali comandi. I comandi risultanti hanno gli stessi nomi dei caratteri. Puoi usare la macro ucsc-make-commandsper definire un intero set di comandi che inseriscono un carattere di un certo tipo.

Ad esempio, puoi inserirlo nel file init per definire i comandi che inseriscono tutti i simboli matematici Unicode:

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

Questo ti dà comandi i cui nomi sono gli stessi dei personaggi matematici. Associa uno di questi che usi molto ai tasti facili da usare. Per esempio:

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

(O associare una chiave a tale comando solo in modalità Tex, usando define-keycon la sua mappa dei tasti .)

Con questo semplice (ucsc-make-commands "^math")hai a disposizione tutti i comandi per l'inserimento dei caratteri elencati di seguito.

Esistono anche altri caratteri Unicode, i cui nomi non iniziano con mathma che vengono utilizzati in matematica, ad esempio il personaggio PARTIAL DIFFERENTIAL. Puoi facilmente creare comandi che inseriscano anche uno di questi caratteri. (E nota che i personaggi i cui nomi iniziano con mathpotrebbe richiedere l'uso di un carattere speciale - molti caratteri non li supportano.)

Ovviamente puoi usare un'espressione regolare più stretta di ^math, se vuoi definire solo caratteri che corrispondono a un tale schema. Ad esempio, questo definisce i comandi per tutti i caratteri a differenza parziale:

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

Questo ti dà questi comandi:

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

Si noti che i nomi dei caratteri Unicode separano le parole con caratteri spaziali e i nomi sono maiuscoli. I comandi di inserimento corrispondenti utilizzano trattini anziché spazi e lettere minuscole anziché maiuscole.

Un vantaggio di avere comandi che prendono il nome da caratteri che inseriscono, invece di, per esempio, solo legando le chiavi alle stringhe singleton dei caratteri, è che puoi usare M-xper inserire caratteri che usi meno spesso, per nome usando il completamento. Invece di completare l'intero set di nomi di caratteri Unicode, completi i nomi dei comandi di inserimento caratteri che hai definito.


Questi sono i comandi che inseriscono caratteri i cui nomi iniziano con math. Sono ciò che ottieni valutando (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

...

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.