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

M. *_* B. 4 emacs macros tex substitution

我的问题是通过在emacs中编写TeX来实现的,但与TeX系统本身无关.

我的目标是在emacs中设置缩写以用其unicode字符替换某些(TeX)宏,例如在我在emacs中键入TeX时自动将α与α一起使用.

我计划使用缩写系统实现这一目标.虽然以下缩写可以正常工作(用\ test替换测试):

("test" "\\test" nil 0)
Run Code Online (Sandbox Code Playgroud)

可以做我想要的缩写,即:

("\\alpha" "A" nil 0)
Run Code Online (Sandbox Code Playgroud)

要么

("\\\\beta" "B" nil 0)
Run Code Online (Sandbox Code Playgroud)

我输入\ alpha或\ beta时没有应用.

(我可以通过替换"alpha"本身并删除一个前面的字符来回避这个问题,但我想保留在没有反斜杠的情况下键入alpha并且不应用此缩写规则的选项.)

用α替换\ alpha的缩写的正确形式是什么?

ang*_*gus 5

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

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

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

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