Wie kann ich einer Eingabemethode Zeichen hinzufügen?

14

Ich benutze oft die TeXEingabemethode, um Unicode-Zeichen einzugeben λ, was sehr praktisch ist. Einige der Zeichen, die ich eingeben möchte, werden jedoch nicht unterstützt, z. B. verschiedene Indizes (z. B. ), Skriptzeichen (z. B. 𝒞) und andere verschiedene Symbole (z. B. und ).

Wie kann ich die TeX-Eingabemethode erweitern, um einige dieser Zeichen mit benutzerdefinierten Eingabezeichenfolgen (z. B. _ifür ) zu unterstützen?

Tikhon Jelvis
quelle
1
Dieser EmacsWiki-Artikel zeigt, wie es geht: emacswiki.org/emacs/TeXInputMethod
Augusto
1
Außerdem kann diese Datei von ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el leicht in eine neue und viel umfassendere teX-ähnliche Eingabemethode geändert werden.
Augusto
1
Beide Links sehen nützlich aus. Könnten Sie sie in eine tatsächliche Antwort setzen (im Idealfall mit den hier angegebenen relevanten Bits), damit diese Frage als beantwortet markiert werden kann? Vielen Dank!
Tikhon Jelvis

Antworten:

12

Wie in diesem EmacsWiki-Artikel erläutert , können Sie einer Eingabemethode wie der folgenden Dinge hinzufügen :

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

Ich finde es auch bequem, ;anstelle des umständlichen \als Präfix für meine Symbole zu verwenden, so dass ich Folgendes mache

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

Beachten Sie schließlich, dass die Datei ac-math.el eine Liste von Unicode-mathematischen Zeichen und den entsprechenden TeX -Makronamen enthält und einfach in eine neue und viel umfassendere \gamma\dotteX-ähnliche Eingabemethode geändert werden kann (ich kann sogar tippen , um γ̇ zu erhalten) .)


ADDENDUM Mit dem neuen Paket math-symbol-lists (verfügbar auf MELPA) kann eine umfassende mathematische Eingabemethode wie folgt definiert werden:

(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))

Geben Sie zum Aktivieren der Eingabemethode Folgendes ein C-u C-\ math RET. Geben Sie dann \ mscrC yield 𝒞, \ lParen yield ⦅usw. ein.

Augusto
quelle
1
Das Anhängen an die Eingabemethode scheint nicht zu funktionieren ( invalid Quail map nil). Ich habe jetzt zu einer benutzerdefinierten Eingabemethode mit mathematischen Symbollisten gewechselt, die gut funktioniert.
links um ca. 8.11.15 Uhr
1

Ich habe insert-charUnicode-Zeichen eingefügt. Die Standard-Vervollständigung für diesen Befehl hat mir jedoch nicht gefallen. Also hier ist eine, die vervollständigt wird mit helm:

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

Und hier sind die Arten von Lambdas , dass ich einfügen: λ, Λ, ƛ, ƛ. Ich habe den Befehl an gebunden f2 u, daher lautete die Einfügefolge wie folgt:

f2 u lambda RET

f2 u M-p C-n RET

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

...

abo-abo
quelle
2
Das sieht nach einem nützlichen Trick aus, beantwortet aber meine Frage nicht wirklich. Ich möchte eine Eingabemethode speziell ändern oder erweitern , da sie sehr gut in meinen vorhandenen Workflow passt.
Tikhon Jelvis