Inserção rápida de símbolo unicode?

8

Atualmente, estou inserindo caracteres unicode (principalmente símbolos matemáticos) usando o método de entrada TeX. Isso é complicado, pois, para cada personagem, eu tenho que fazer o seguinte:

  1. Alterne para o método de entrada TeX pressionando C-\
  2. digite a expressão látex como \Bbb{R}ou\Leftrightarrow

Há relativamente pequeno subconjunto de caracteres unicode (10-20) que estou inserindo o tempo todo.

P: Existe maneira de inserir caracteres unicode com poucas teclas (2-4)?

Mente vazia
fonte
11
Talvez valha a pena mencionar que não há necessidade de alternar para o método de entrada TeX a cada vez. Você pode simplesmente deixá-lo ligado. A única desvantagem é a necessidade de digitar \\ quando você quer uma barra invertida literal
obsoleta

Respostas:

6

Você pode usar abbrev-modepara criar seqüências que "se expandem" para os caracteres unicode desejados. Por exemplo, a abbrevtabela a seguir define abreviações para as três primeiras letras minúsculas do alfabeto grego:

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

Você pode então dizer text-mode(ou qualquer outro modo que desejar) para herdar sua tabela unicode:

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

Vá para um buffer no modo de texto. Ligue abbrev-mode. Digite ualphaum caractere que não seja uma palavra (espaço, ponto final etc.) e observe-o expandir para α.

Dan
fonte
6

Você pode definir suas próprias seqüências de teclas com as funções elisp global-set-keye local-set-key. Portanto, é recomendável usar C-cuma única letra para as seqüências de teclas definidas pelo usuário. (Caso contrário, pode ser que você substitua as seqüências de teclas vinculadas por outras bibliotecas do emacs-lisp. Mais tarde, você terá problemas ao descobrir que a versão da biblioteca da sequência de teclas seria muito útil para você.)

Se você quiser usar essas seqüências independentemente do modo principal, poderá vinculá-las globalmente.

Por exemplo, você pode adicionar

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

para o seu arquivo de configuração ~/.emacs.

Como alternativa, você pode usar essas teclas dependendo do modo principal.

Um exemplo é:

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

Isso funciona com auctex. Se você estiver usando o nativo tex-modeou latex-modetalvez seja necessário substituí-lo TeX-mode-hookpor tex-mode-hook.


Observe que isso também está insert-charvinculado a C-x 8 RET. Com isso, você pode inserir caracteres utf8 se souber o código deles. Se você não conhece o código, pode inseri-lo pela descrição, mas isso se torna complicado.


Existem também modos especiais que company-mathdão suporte ao usuário com a entrada de símbolos de látex, como -Mode e ac-math-mode .

Ambos são modos de conclusão. companytrabalha com menus do mouse e ac(preenchimento automático) trabalha com a tabtecla-

Mas não tenho certeza sobre o status atual desses pacotes. Você pode instalar esses modos por melpa, se quiser experimentá-los.

Tobias
fonte
FWIW: Os usuários podem usar as seqüências de teclas que quiserem. A vantagem de uma sequência de teclas iniciada C-cé que você pode ter certeza de que não entrará em conflito com nenhuma ligação de teclas fornecida pelo Emacs ou por uma biblioteca que você possa usar.
21416 Drew
@ Drew Sim, eu sei disso. O risco potencial de conflitos com as sequências principais da biblioteca é o motivo da minha recomendação.
Tobias
Sim, eu percebi isso. Meu comentário foi para o benefício de qualquer leitor de sua resposta que possa ter uma impressão diferente de " você deve seguir a convenção para usar Cc e uma única letra para sequências de teclas definidas pelo usuário " . Não há convenção para que as chaves definidas pelo usuário sejam usadas. Cc mais uma carta. Tenho certeza de que concordamos - eu só queria que isso ficasse claro para os leitores. Se você tivesse dito que recomenda que usem Cc mais uma carta (pontos extras por dizer o porquê), então eu não teria comentado. HTH.
21416 Drew
@ Drew Essa foi a razão pela qual eu adicionei o link. O texto vinculado deixa tudo claro. Agora, adicionei também uma nota no texto.
Tobias
3

Você diz: Há um subconjunto relativamente pequeno de caracteres unicode (suponho que 10 a 20) esteja inserindo o tempo todo.

Nesse caso, como @Tobias indicou, você pode simplesmente vincular, para cada um deles, uma sequência de teclas simples a (a) um comando que insere esse caractere ou (b) uma string de caractere único com esse caractere (isso age como uma macro do teclado para inserir o caractere).

A biblioteca ucs-cmds.elpode ajudá-lo a definir esses comandos. Os comandos resultantes têm os mesmos nomes que os caracteres. Você pode usar macro ucsc-make-commandspara definir um conjunto inteiro de comandos que inserem um caractere de um determinado tipo.

Por exemplo, você pode colocar isso em seu arquivo init para definir comandos que inserem todos os símbolos matemáticos Unicode:

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

Isso fornece comandos cujos nomes são iguais aos caracteres matemáticos. Vincule qualquer um dos que você usa muito às teclas fáceis de usar. Por exemplo:

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

(Ou vincule uma chave a esse comando apenas no modo Tex, usando define-keycom seu mapa de teclas.)

Com essa simplicidade, (ucsc-make-commands "^math")você tem disponível todos os comandos de inserção de caracteres listados abaixo.

Existem também outros caracteres Unicode, cujos nomes não começam, mathmas são usados ​​em matemática - por exemplo, caractere PARTIAL DIFFERENTIAL. Você pode criar facilmente comandos que também inserem esses caracteres. (Observe que os caracteres cujos nomes começam com mathpodem exigir o uso de uma fonte especial - muitas fontes não os suportam.)

Obviamente, você pode usar uma expressão regular mais rígida do que ^math, se desejar definir apenas caracteres que correspondam a esse padrão. Por exemplo, isso define comandos para todos os caracteres diferenciais parciais:

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

Isso fornece os seguintes 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

Observe que os nomes de caracteres Unicode separam as palavras com caracteres de espaço e os nomes estão em maiúsculas. Os comandos de inserção correspondentes usam hífens em vez de espaços e minúsculas em vez de maiúsculas.

Uma vantagem de ter comandos com o nome de caracteres que eles inserem, em vez de, digamos, apenas vincular chaves a seqüências de caracteres singleton dos caracteres, é que você pode usar M-xpara inserir caracteres que você usa com menos frequência, por nome usando a conclusão. Em vez de concluir com relação ao conjunto inteiro de nomes de caracteres Unicode, você conclui com os nomes dos comandos de inserção de caracteres que você definiu.


Estes são os comandos que inserem caracteres cujos nomes começam math. Eles são o que você obtém ao avaliar (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

...

Desenhou
fonte