gpt4 book ai didi

emacs - 如何在 Emacs、TeX 输入法中禁用下划线 (_) 下标

转载 作者:行者123 更新时间:2023-12-03 23:53:31 25 4
gpt4 key购买 nike

在 Emacs 上,我在为自己编辑注释的文本文档(.txt 文档,而不是 .tex 文档)时,我正在使用 M-x set-input-method回复 TeX ,以便轻松访问各种 Unicode 字符。例如,输入\tospace 会导致在文本中插入“→”,输入 x^2 会导致插入“x2”,因为我使用的字体支持 Unicode 代码点 0x21920x00B2 , 分别。

该方法中特殊处理的字符之一是下划线键_。但是,我用于 Emacs 的字体似乎不支持各种下标字符的代码点,例如下标零(代码点 0x2080),因此当我键入 _0 时,我的输出。我宁愿只有两个字符 _0在这种情况下。

我可以得到_0由笨拙的击键序列 _spacedel0,因为序列中间的空格键击导致 Emacs 中止 TeX 输入法。但这很尴尬。

所以,我的问题是:当我在 TeX 输入法中时,如何在本地自定义我的 Emacs 以完全不重新映射 _ 键?或者我怎样才能创建一个修改过的 TeX 输入法的克隆(或扩展等),它的魔力没有下划线?

到目前为止我尝试过的事情:

  • 我已经做了 M-x describe-key在 _;但它只是绑定(bind)到 self-insert-command ,就像许多其他文本字符一样。我确实看到了 post-self-insert-hook那里,但我还没有探索尝试使用它来颠覆 TeX 输入法。

  • 到目前为止我还没有尝试过的事情:
  • 我没有尝试学习有关输入法架构或其源代码的任何内容。根据我对代码和方法的快速了解。这似乎不是我可以快速跳入的东西。
  • 最佳答案

    所以这是我刚刚找到的解决方案:制作一份 TeX 输入法的个性化副本,删除所有不需要的条目。那么当使用M-x set-input-method ,选择个性化版本而不是TeX .

    我会早点尝试过,但是 set-input-mode 的内置文档并且它的同类并没有为我找到它的输入方法的实际来源提供足够的指导。只是在对 SO 进行另一次搜索并找到以下内容后:Emacs: Can't activate input method我能够获得足够的信息来自己做这件事。

    细节:

  • 在 Emacs 中,打开 /usr/share/emacs/22.1/leim/leim-list.el并找到您要自定义的输入法的条目。该条目将类似于以下形式:
    (register-input-method
    "TeX" "UTF-8" 'quail-use-package
    "\\" "LaTeX-like input method for many characters."
    "quail/latin-ltx")
  • 请注意上面表格中最后一个元素中引用的文件名前缀。找到对应的Elisp源文件;在这种情况下,它是文件 quail/latin-ltx.el[.gz] 的相对路径。 .在 Emacs 中打开该文件,然后检查它;它应该具有方法重新映射的条目,包括期望的和不期望的。
  • 在您的其他 Emacs 自定义项中制作该 Elisp 源文件的用户本地副本。在 Emacs 中打开该本地副本。
  • 在您的本地副本中,找到 (quail-define-package ...)文件中的表格,并更改包的名称;我用了FSK-TeX作为我的新名字,像这样:
    (quail-define-package
    "FSK-TeX" "UTF-8" "\\" t ;; <-- The first argument here is the important bit to change.
    "LaTeX-like input method for many characters but not as many as you might think.
    ...)
  • 浏览您的本地副本,并删除您不想要的映射的所有 S 表达式。
  • 在您的 .emacs 配置文件中,注册您的自定义输入法,使用类似于您在查看 leim-list.el 时看到的格式。在第 1 步中:
    (register-input-method
    "FSK-TeX" "UTF-8" 'quail-use-package
    "\\" "FSK-customized LaTeX-like input method for many characters."
    "~/ConfigFiles/Elisp/leim/latin-ltx")
  • 重启 Emacs 并测试你的新输入法;在我的情况下,通过执行 M-x set-input-method FSK-TeX ,输入 a_0,并确认 a_0出现在缓冲区中。


  • 因此,一旦安装了它,至少有一个答案比问题中列出的一些解决方法更尴尬(事实证明,Emacs 22 手册中也正式记录了作为切断输入法处理的一种方式)。

    但是,我对这个解决方案并不满意,因为我更愿意继承 future 对 TeX 模式的更改,并且只使用我的 .emacs在启动时删除不需要的条目。

    所以我会等着看是否有人提出比这更好的答案。

    关于emacs - 如何在 Emacs、TeX 输入法中禁用下划线 (_) 下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15180175/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com