【问题标题】:Redefine AUCTeX font and compile keybindings重新定义 AUCTeX 字体并编译键绑定
【发布时间】:2013-01-31 15:24:21
【问题描述】:

我想将字体绑定(例如 C-c C-f C-b)修改为更快的内容,例如 C-b。 为了获得所涉及的功能,我尝试使用C-h k,但我无法正确终止按键序列:事实上,当我输入C-c C-f 时,它会触发 TeX-font 命令的帮助页面。

其次,我想覆盖C-c C-c 中的确认。我不明白如何在一般情况下使用 OVERRIDE-CONFIRM 参数,特别是如何在不确认的情况下将所有内容关联到一个新的绑定,比如 F1。

感谢您的帮助。

【问题讨论】:

  • @wvxvw:为了澄清,我说:“为了了解所涉及的功能,我尝试使用C-h k”。为了使用绑定功能,例如:global-set-keydefine-key,您需要知道要绑定的命令的名称。 ``C-h k` 有助于键入C-h k C x 1 将显示序列C x 1 绑定到名为delete-other-windows 的命令,这允许我使用上述函数重新绑定它。如前所述,C-h k C-c C-f C-b 无法按预期工作,即您没有得到绑定到C-c C-f C-b 的命令名称。
  • @wvxvw:由于某种原因我再次看到C-c C-f,但我找不到C-c C-f C-b
  • @wvxvw:我不确定,但如果你在 LaTeX 模式下输入C-c C-f C-b,你会得到\textbf{}。无论如何,按照 Tyler 的建议检查 tex.el,显示相关函数是 (TeX-font nil ?\C-b)
  • 我找到了带有自定义前缀的C-h k 的解决方案。诀窍是C-c C-f C-h。它是一种C-h k C-c C-f C-b,相反,它可以工作。抱歉,wvxvw 系统不鼓励我与您互动。我得到“请避免在 cmets 中进行长时间的讨论。”我宁愿遵守,以免引发 SE 的愤怒。
  • @wvxvw:我添加了一个简短的解释,说明为什么您无法以通常的方式找到键绑定。

标签: emacs elisp auctex


【解决方案1】:

auctex 字体键绑定特别难以分类,因为您执行的命令使用带有“c”代码字母的interactive 函数。因此,C-c C-f 调用函数TeX-font,并且您键入的下一个字母被收集为要传递给该函数的参数。所以C-c C-f 绑定到一个函数,但它就像一个前缀。有关完整说明,请参阅链接的手册页。

这意味着作为 cmets 提供的通常建议不足以获得您想要的。您需要调用的关键代码是TeX-font。获得正确的参数需要深入研究源代码。我在我的 .emacs 中使用以下函数:

(defun TeX-typewriter()
  (interactive)
  (TeX-font nil ?\C-t))

(defun TeX-bold()
  (interactive)
  (TeX-font nil ?\C-b))

(defun TeX-emphasis()
  (interactive)
  (TeX-font nil ?\C-e))

(defun TeX-smallcaps()
  (interactive)
  (TeX-font nil ?\C-c))

定义了这些函数后,我在 LaTeX-mode-hook 中应用键绑定:

(defun my-LaTeX-hook ()
  (local-set-key "\C-ci" 'TeX-italics)
  (local-set-key "\C-cb" 'TeX-bold)
  (local-set-key "\C-ct" 'TeX-typewriter)
  (local-set-key "\C-ce" 'TeX-emphasis)
  (local-set-key "\C-cs" 'TeX-smallcaps))

(add-hook 'LaTeX-mode-hook 'my-LaTeX-hook)

这会将 TeX-bold 绑定到 C-c b,但您可以在这里使用任何您喜欢的东西(例如您要求的 C-b)。

【讨论】:

  • +1,但为什么是数字?按照你的要求,我挖了tex.el。看来我可以像(TeX-font nil ?\C-b)而不是(TeX-font nil 2)那样做,同样我可以使用?\C-e?\C-i等。
  • @antonio:我认为,在我写这篇文章的时候,TeX-font-list 的来源使用了数字,而不是更合理的字符值(例如,?\C-i 等) .为了保持一致,我保留了这些数字。自从他们切换到使用字符值后,我有时会看到这一点。我会更新我的答案(和我的代码)。
  • 好吧,TeX-italics 不见了。我编辑了答案。为了与其他功能保持一致,我使用了TeX-italic,没有's'。
【解决方案2】:

凭借我的“能力”,我无法修复 Tyler 代码中的一个小错误。在这里,我部分重写了它,并且我也为问题的第二部分提供了解决方案。

重新定义 AUCTeX 字体键绑定

假设我们要设置这些字体绑定(但你可以随意修改它们):

斜体“\C-ci” 粗体“\C-cb” 打字机“\C-ct” 强调“\C-ce” 小型大写字母 "\C-cs"

将这些行添加到您的 init.el,或您的 Emacs 初始化文件的任何名称:

(defun TeX-italic()
  (interactive)
  (TeX-font nil ?\C-i))

(defun TeX-bold()
  (interactive)
  (TeX-font nil ?\C-b))

(defun TeX-typewriter()
  (interactive)
  (TeX-font nil ?\C-t))

(defun TeX-emphasis()
  (interactive)
  (TeX-font nil ?\C-e))

(defun TeX-smallcaps()
  (interactive)
  (TeX-font nil ?\C-c))

(defun latex-font-hook ()
  (local-set-key "\C-ci" 'TeX-italic)
  (local-set-key "\C-cb" 'TeX-bold)
  (local-set-key "\C-ct" 'TeX-typewriter)
  (local-set-key "\C-ce" 'TeX-emphasis)
  (local-set-key "\C-cs" 'TeX-smallcaps))

(add-hook 'LaTeX-mode-hook 'latex-font-hook)

如果您对此处使用的键不满意,请根据需要更改local-set-key 的第一个参数,例如将(local-set-key "\C-b" 'TeX-bold) 设置为绑定到 Control-b。

重新定义AUCTeX编译键绑定

要修改C-c C-c键绑定并可能改进绑定的编译功能(TeX-command-master),请参阅我的帖子Build & view

【讨论】:

  • 刚看到这个。我的代码有什么错误?我看不出你所做的有什么不同。
  • @Tyler:在函数列表中缺少(defun TeX-italic()...,尽管有一个(local-set-key "\C-ci" 'TeX-italic)。可能我应该说一个错字。在写作中,我用“斜体”改变了拼写,使用了如下的形容词TeX-bold 和原生的facemenu-set-italic。您可以在对您的回答的评论中看到我对此进行了详细说明,并声称我也解决了这个问题。我做了,但由于我的声誉,SO 不接受编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2014-03-20
  • 2010-09-14
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多