.txt
文件,不是 .tex
文件)时,我使用M-x set-input-method
Ret TeX
,以便轻松访问各种Unicode字符。例如,键入\tospace会在文本中插入一个“→”,而键入x^2会使插入“x2”,因为我使用的字体支持Unicode代码点0x2192
和0x00B2
。在该方法中,特殊处理字符之一是下划线键_。然而,我在Emacs中使用的字体似乎不支持各种下标字符(例如下标零(代码点0x2080)的代码点),因此当我键入_0时,输出结果呈现为一个细小的空白。在这种情况下,我希望只有两个字符
_0
。通过尴尬的按键序列_spacedel0,我可以获得
_0
,因为序列中间的space按键使Emacs中止了TeX输入法。但这很麻烦。因此,我的问题是:当我处于TeX输入法时,如何本地自定义我的Emacs,完全不重新映射_键?或者我如何创建一个修改后的克隆(或扩展等)TeX输入法,从其神奇的符号中去掉下划线?
我迄今尝试过的事情:
- 我已经在_上执行了M-x
describe-key
; 但它只是绑定到self-insert-command
,就像许多其他文本字符一样。 我确实看到了一个post-self-insert-hook
,但我没有尝试使用它来破坏TeX输入法。
到目前为止,我还没有尝试过以下事情:
- 我还没有尝试学习有关输入法架构或其源代码的任何内容。 从我对代码和方法的快速审视中,似乎不是我可以快速掌握的东西。
(quail-defrule "\\sqrt" (decode-char 'ucs #x2713) "TeX")
添加序列。但我尚未找到相应的quail-undefrule
命令来删除它们... - Jim Paris(with-temp-buffer (set-input-method "TeX") (quail-map))
来获取映射并处理它,以重构定义自己输入法的规则。 - kdb