Как я могу добавить символы в метод ввода?


14

Я часто использую TeXметод ввода для ввода символов Unicode, например λ, что очень удобно. Однако некоторые символы, которые я хочу набрать, не поддерживаются, например, различные подписки (скажем ), символы сценария (например 𝒞) и другие различные символы (например, и ).

Как я могу расширить метод ввода TeX для поддержки некоторых из этих символов с пользовательской строкой ввода (например, _iдля )?


1
В этой статье EmacsWiki показано, как это сделать: emacswiki.org/emacs/TeXInputMethod
Augusto

1
Кроме того, этот файл с ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el можно легко превратить в новый и гораздо более полный метод ввода в стиле TeX.
Августо

1
Обе эти ссылки выглядят полезными. Не могли бы вы поместить их в реальный ответ (в идеале с соответствующими битами, приведенными здесь), чтобы этот вопрос можно было пометить как ответивший? Благодарность!
Тихон Джелвис

Ответы:


12

Как объясняется в этой статье EmacsWiki , вы можете добавить материал к методу ввода следующим образом:

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

Я также считаю удобным использовать ;вместо громоздких \в качестве префикса для моих символов, поэтому я делаю следующее

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

Наконец, обратите внимание, что файл ac-math.el содержит список математических символов Юникода и соответствующие имена макросов TeX и может быть легко заменен на новый и гораздо более полный метод ввода в стиле TeX (я могу даже напечатать, \gamma\dotчтобы получить γ̇ .)


ДОБАВЛЕНИЕ Используя новый пакет математических символов-списков (доступно на MELPA), можно определить всесторонний математический метод ввода следующим образом:

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

Чтобы активировать метод ввода, введите C-u C-\ math RET. Затем, набрав \ mscrC, вы получите 𝒞, \ lParen - ⦅и т. Д.


1
Похоже, что метод добавления к методу ввода не работает ( invalid Quail map nil). Теперь я переключился на пользовательский метод ввода со списками математических символов, который прекрасно работает.
оставлено около

1

Я использовал insert-char для вставки символов Unicode. Однако я не оценил завершение по умолчанию для этой команды. Итак, вот тот, который завершается с helm:

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

А вот типы лямбды , что я могу вставить: λ, Λ, ƛ, ƛ. Я привязал команду к f2 u, поэтому последовательность для вставки была такой:

f2 u lambda RET

f2 u M-p C-n RET

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

...


2
Это выглядит как полезный трюк, но на самом деле он не отвечает на мой вопрос. Я специально хочу изменить или расширить метод ввода, потому что он очень хорошо вписывается в мой существующий рабочий процесс.
Тихон Джелвис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.