Jak mogę dodać znaki do metody wprowadzania?

14

Często używam TeXmetody wprowadzania do wpisywania znaków Unicode, takich jak λ, co jest dość przydatne. Jednak niektóre znaki, które chcę wpisać, nie są obsługiwane, takie jak różne indeksy dolne (powiedzmy ), znaki skryptowe (jak 𝒞) i inne różne symbole (jak i ).

Jak mogę rozszerzyć metodę wprowadzania TeXa, aby obsługiwała niektóre z tych znaków za pomocą niestandardowego ciągu wejściowego (tj. _iDla )?

Tikhon Jelvis
źródło
1
W tym artykule EmacsWiki pokazano show to zrobić: emacswiki.org/emacs/TeXInputMethod
Augusto
1
Ponadto ten plik z ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el można łatwo zmienić na nową i znacznie bardziej kompletną metodę wprowadzania TeX-esque.
Augusto,
1
Oba te linki wyglądają na przydatne. Czy mógłbyś podać im prawdziwą odpowiedź (najlepiej z odpowiednimi cytowanymi tutaj bitami), aby pytanie to można było oznaczyć jako odpowiedź? Dzięki!
Tikhon Jelvis

Odpowiedzi:

12

Jak wyjaśniono w tym artykule EmacsWiki , możesz dołączyć elementy do metody wprowadzania danych takiej jak ta:

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

Uważam również, że wygodne jest używanie ;zamiast nieporęcznego \jako prefiksu dla moich symboli, więc wykonuję następujące czynności

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

Na koniec zauważ, że plik ac-math.el zawiera listę znaków matematycznych Unicode i odpowiadających im nazw makr TeX, i można go łatwo zmienić na nową i znacznie bardziej kompletną metodę wprowadzania TeX-a (mogę nawet wpisać, \gamma\dotaby uzyskać γ̇ .)


DODATEK Korzystając z nowego pakietu list symboli matematycznych (dostępnych w MELPA), można zdefiniować kompleksową metodę wprowadzania matematycznego w następujący sposób:

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

Aby aktywować metodę wprowadzania, wpisz C-u C-\ math RET. Następnie wpisanie \ mscrC daje 𝒞, \ lParen daje ⦅itd.

Augusto
źródło
1
Wydaje się, że metoda dodawania do metody wejściowej nie działa ( invalid Quail map nil). Zmieniłem teraz na niestandardową metodę wprowadzania z listami symboli matematycznych, która działa dobrze.
leftaroundabout
1

Używałem insert-chardo wstawiania znaków Unicode. Jednak nie doceniłem domyślnego zakończenia dla tego polecenia. Oto jeden z następujących elementów helm:

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

A oto typy lambdas że mogę wpisać: λ, Λ, ƛ, ƛ. Związałem polecenie z f2 u, więc sekwencja wstawienia była następująca:

f2 u lambda RET

f2 u M-p C-n RET

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

...

abo-abo
źródło
2
To wygląda na przydatną sztuczkę, ale tak naprawdę nie odpowiada na moje pytanie. W szczególności chcę zmodyfikować lub rozszerzyć metodę wprowadzania, ponieważ bardzo dobrze pasuje do mojego istniejącego przepływu pracy.
Tikhon Jelvis