我的问题是在emacs中编写TeX,但与TeX系统本身无关。
我的目标是在emacs中设置缩写以使用unicode字符替换某些(TeX)宏,例如,当我在emacs中键入TeX时,自动将α与alpha一起使用。
我计划使用缩写系统实现这一目标。虽然以下缩写可以正常工作(用\ test替换测试):
("test" "\\test" nil 0)
可以做我想要的缩写,即:
("\\alpha" "A" nil 0)
或
("\\\\beta" "B" nil 0)
键入\ alpha或\ beta时不适用。
(我可以通过替换“alpha”本身并删除一个前面的字符来回避这个问题,但是我想保留在没有反斜杠的情况下键入alpha并且不应用此缩写规则的选项。)
用α替换\ alpha的缩写的正确形式是什么?
答案 0 :(得分:5)
您需要更改缩写表的属性:regexp
。
(abbrev-table-put <your-abbrev-table> :regexp "\\(\\\\[a-z0-9@]+\\)")
唯一的问题是,在向后看的匹配的正则表达式中,您不能在开头有可选字符。因此,要么更改\
的语法类别(但是您不需要对缩写表进行任何特殊处理),要么必须选择让此表中的所有缩写以反斜杠开头还是不反斜杠。
但为什么不使用输入法插入unicode字符?
答案 1 :(得分:2)
这已经存在。使用功能set-input-method
并选择TeX
。