如何在emacs缩略模式下用非反斜杠字符串替换\ string?

时间:2013-08-14 12:57:32

标签: emacs macros substitution tex

我的问题是在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的缩写的正确形式是什么?

2 个答案:

答案 0 :(得分:5)

您需要更改缩写表的属性:regexp

(abbrev-table-put <your-abbrev-table> :regexp "\\(\\\\[a-z0-9@]+\\)")

唯一的问题是,在向后看的匹配的正则表达式中,您不能在开头有可选字符。因此,要么更改\的语法类别(但是您不需要对缩写表进行任何特殊处理),要么必须选择让此表中的所有缩写以反斜杠开头还是不反斜杠。

但为什么不使用输入法插入unicode字符?

答案 1 :(得分:2)

这已经存在。使用功能set-input-method并选择TeX