Schnelle Einfügung von Unicode-Symbolen?

8

Derzeit füge ich Unicode-Zeichen (hauptsächlich mathematische Symbole) mit der TeX-Eingabemethode ein. Dies ist umständlich, da ich für jeden Charakter Folgendes tun muss:

  1. Wechseln Sie zu TeX-Eingabemethode und drücken Sie C-\
  2. Typ Latex Ausdruck wie \Bbb{R}oder\Leftrightarrow

Es gibt eine relativ kleine Teilmenge von Unicode-Zeichen (10-20), die ich ständig einfüge.

F: Gibt es eine Möglichkeit, Unicode-Zeichen mit wenigen (2-4) Tastenanschlägen einzufügen?

Empty_Mind
quelle
1
Es ist vielleicht erwähnenswert, dass nicht jedes Mal auf die TeX-Eingabemethode umgeschaltet werden muss. Sie können es einfach eingeschaltet lassen. Der einzige Nachteil ist die Notwendigkeit, \\ einzugeben, wenn Sie einen wörtlichen Backslash wünschen
veraltet

Antworten:

6

Sie können abbrev-modedamit Zeichenfolgen erstellen, die auf die gewünschten Unicode-Zeichen "erweitert" werden. In der folgenden abbrevTabelle werden beispielsweise Abkürzungen für die ersten drei Kleinbuchstaben des griechischen Alphabets definiert:

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

Sie können dann anweisen text-mode(oder welche anderen Modi Sie möchten), Ihre Unicode-Tabelle zu erben:

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

Wechseln Sie im Textmodus zu einem Puffer. Einschalten abbrev-mode. Geben Sie ualphaein Nicht-Wort-Zeichen (Leerzeichen, Punkt usw.) ein und beobachten Sie, wie es auf α erweitert wird.

Dan
quelle
6

Mit den elisp-Funktionen global-set-keyund können Sie Ihre eigenen Tastenfolgen definieren local-set-key. Dabei wird empfohlen, C-ceinen einzelnen Buchstaben für benutzerdefinierte Tastenfolgen zu verwenden. (Andernfalls können Sie möglicherweise Schlüsselsequenzen überschreiben, die an andere emacs-lisp-Bibliotheken gebunden sind. Später treten Probleme auf, wenn Sie feststellen, dass die Bibliotheksversion der Schlüsselsequenz für Sie sehr nützlich ist.)

Wenn Sie diese Sequenzen unabhängig vom Hauptmodus verwenden möchten, können Sie sie global binden.

Als Beispiel können Sie hinzufügen

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

zu Ihrer Konfigurationsdatei ~/.emacs.

Alternativ können Sie diese Tasten je nach Hauptmodus verwenden.

Ein Beispiel ist:

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

Das funktioniert mit auctex. Wenn Sie die native verwenden tex-modeoder latex-modees könnte sein , dass Sie ersetzen müssen TeX-mode-hookdurch tex-mode-hook.


Beachten Sie, dass es auch insert-chargebunden ist C-x 8 RET. Damit können Sie utf8-Zeichen eingeben, wenn Sie deren Code kennen. Wenn Sie den Code nicht kennen, können Sie sie anhand ihrer Beschreibung eingeben, dies wird jedoch umständlich.


Es gibt auch spezielle Modi den Benutzer mit der Eingabe von Latex - Symbolen, wie Stütz- company-math-Mode und ac-math-Mode .

Beide sind Abschlussmodi. companyfunktioniert mit Mausmenüs und ac(Autocomplete) funktioniert mit der tab-key.

Über den aktuellen Status dieser Pakete bin ich mir jedoch nicht sicher. Sie können diese Modi per Melpa installieren, wenn Sie sie ausprobieren möchten.

Tobias
quelle
FWIW: Benutzer können beliebige Tastenfolgen verwenden. Der Vorteil einer Schlüsselsequenz, die mit beginnt, C-cbesteht darin, dass Sie ziemlich sicher sein können, dass sie nicht mit Schlüsselbindungen von Emacs oder einer von Ihnen verwendeten Bibliothek in Konflikt steht.
Drew
@ Draw Ja, das weiß ich. Das potenzielle Risiko von Konflikten mit Bibliotheksschlüsselsequenzen ist der Grund für meine Empfehlung.
Tobias
Ja, das habe ich mir gedacht. Mein Kommentar war zum Nutzen aller Leser Ihrer Antwort, die möglicherweise einen anderen Eindruck haben als " Sie sollten die Konvention befolgen, um Cc und einen einzelnen Buchstaben für benutzerdefinierte Schlüsselsequenzen zu verwenden. " Es gibt keine Konvention für benutzerdefinierte Schlüssel CC plus einen Brief. Ich bin sicher, wir sind uns einig - ich wollte nur, dass dies den Lesern klar wird. Wenn Sie gesagt hätten, dass Sie empfehlen , Cc plus einen Buchstaben zu verwenden (Bonuspunkte, um zu sagen, warum), hätte ich dies nicht kommentiert. HTH.
Drew
@Drew Das war der Grund, warum ich den Link hinzugefügt habe. Der verlinkte Text macht alles klar. Jetzt habe ich auch eine Notiz in den Text eingefügt.
Tobias
3

Sie sagen: Es gibt eine relativ kleine Teilmenge von Unicode-Zeichen (ich schätze 10-20), die ich ständig einfüge.

In diesem Fall können Sie, wie @Tobias angibt, für jeden von ihnen einfach eine einfache Tastenfolge an (a) einen Befehl binden, der dieses Zeichen einfügt, oder (b) eine einzelne Zeichenfolge mit diesem Zeichen (dies verhält sich wie folgt) ein Tastaturmakro zum Einfügen des Zeichens).

Die Bibliothek ucs-cmds.elkann Ihnen beim Definieren solcher Befehle helfen. Die resultierenden Befehle haben dieselben Namen wie die Zeichen. Sie können ein Makro verwenden ucsc-make-commands, um eine ganze Reihe von Befehlen zu definieren, die ein Zeichen einer bestimmten Art einfügen.

Sie können dies beispielsweise in Ihre Init-Datei einfügen, um Befehle zu definieren, die alle mathematischen Unicode-Symbole einfügen:

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

Das gibt Ihnen Befehle, deren Namen mit den mathematischen Zeichen übereinstimmen. Binden Sie alle diese Tasten, die Sie häufig verwenden, an benutzerfreundliche Schlüssel. Zum Beispiel:

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

(Oder binden Sie einen Schlüssel nur im Tex-Modus an einen solchen Befehl, indem Sie ihn define-keymit seiner Keymap verwenden.)

Mit diesem einfachen (ucsc-make-commands "^math")Befehl stehen Ihnen alle unten aufgeführten Befehle zum Einfügen von Zeichen zur Verfügung.

Es gibt auch andere Unicode-Zeichen, deren Namen nicht mit beginnen math, die aber in der Mathematik verwendet werden - zum Beispiel Zeichen PARTIAL DIFFERENTIAL. Sie können problemlos Befehle erstellen, die auch eines dieser Zeichen einfügen. (Beachten Sie, dass für die Zeichen, deren Namen beginnen, mathmöglicherweise eine spezielle Schriftart erforderlich ist. Viele Schriftarten unterstützen sie nicht.)

Sie können natürlich einen engeren regulären Ausdruck verwenden als ^math, wenn Sie nur Zeichen definieren möchten, die einem solchen Muster entsprechen. Dies definiert beispielsweise Befehle für alle partiellen Differentialzeichen:

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

Das gibt Ihnen diese Befehle:

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

Beachten Sie, dass die Unicode-Zeichennamen Wörter durch Leerzeichen trennen und die Namen in Großbuchstaben geschrieben sind. Die entsprechenden Einfügebefehle verwenden Bindestriche anstelle von Leerzeichen und Kleinbuchstaben anstelle von Großbuchstaben.

Ein Vorteil von Befehlen, die nach Zeichen benannt sind, die sie einfügen, anstatt beispielsweise nur Schlüssel an einzelne Zeichenfolgen der Zeichen zu binden, besteht darin, dass Sie M-xZeichen, die Sie weniger häufig verwenden, nach Namen eingeben und vervollständigen können. Anstatt den gesamten Satz von Unicode-Zeichennamen zu vervollständigen, vervollständigen Sie die Namen der von Ihnen definierten Befehle zum Einfügen von Zeichen.


Dies sind die Befehle, die Zeichen einfügen, deren Namen mit beginnen math. Sie sind das, was Sie durch die Bewertung erhalten (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

...

Drew
quelle