如何在输入法中添加字符?


14

我经常使用TeX输入法键入Unicode字符,例如λ,这非常方便。但是,某些类型的下标(如),脚本字符(如𝒞)和其他各种符号(如)不支持我要键入的某些字符。

如何延长TeX的输入法支持一些这些字符的自定义字符串(即_i)?


1
这EmacsWiki文章显示表明这样做:emacswiki.org/emacs/TeXInputMethod
奥古斯托

1
另外,可以将来自ac-math github.com/vitoshka/ac-math/blob/master/ac-math.el的文件轻松更改为一种新的且更加完整的TeX风格的输入法。
2014年

1
这些链接看起来都很有用。您能否将它们放入实际答案中(最好在此处引用相关的位),以便将此问题标记为已回答?谢谢!
Tikhon Jelvis

Answers:


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包含unicode数学字符和相应的TeX宏名称的列表,并且可以轻松地更改为新的,更完整的TeX式输入法(我什\gamma\dot至可以键入以获取γ̇ )


附录 使用新的软件包math-symbol-lists(在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)。我现在已切换到带有math-symbol-lists的自定义输入法,效果很好。
大约

1

我曾经insert-char用来插入Unicode字符。但是我不喜欢该命令的默认完成。所以这是一个完成的helm

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

这里是我可以插入类型的lambda表达式:λΛƛƛ。我将命令绑定到f2 u,因此插入这些命令的顺序为:

f2 u lambda RET

f2 u M-p C-n RET

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

...


2
这看似有用的技巧,但并不能真正回答我的问题。我特别想修改或扩展输入法,因为它非常适合我现有的工作流程。
Tikhon Jelvis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.