Emacs 重新定义AUCTeX字体并编译键绑定

Emacs 重新定义AUCTeX字体并编译键绑定,emacs,elisp,auctex,Emacs,Elisp,Auctex,我想将字体绑定(如C-C-f C-b)修改为更快的,如C-b。 为了获得所涉及的功能,我尝试了C-hk,但无法正确终止键序列:事实上,当我键入C-C-f时,它会触发TeX-font命令的帮助页面 其次,我想覆盖C-C-C中的确认。我不明白如何使用OVERRIDE-CONFIRM参数,尤其是如何在没有确认的情况下将所有内容关联到新绑定,比如F1 感谢您的帮助。auctex字体键绑定的分类特别棘手,因为您正在使用的命令使用带有“c”代码字母的函数。因此,C-C-f调用函数TeX-font,然后收集您

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

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


感谢您的帮助。

auctex字体键绑定的分类特别棘手,因为您正在使用的命令使用带有“c”代码字母的函数。因此,
C-C-f
调用函数
TeX-font
,然后收集您键入的下一个字母作为参数传递给此函数。所以
C-C-f
绑定到一个函数,但其作用类似于前缀。有关完整的说明,请参阅链接的手册页面

这意味着通常作为评论提供的建议不足以满足您的需求。需要调用的关键代码是
TeX font
。获取正确的参数需要深入源代码。我在my.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模式挂钩中应用键绑定:

(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
,如您要求的)。

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

重新定义AUCTeX字体键绑定 假设我们想要设置这些字体绑定(但您可以随意修改):

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

重新定义AUCTeX编译键绑定
要修改
C-C-C
keybinding并可能改进绑定编译功能(
TeX command master
),请参阅我的帖子。

@wvxvw:为了澄清,我说:“为了实现相关功能,我尝试了
C-hk
”。要使用绑定函数,例如:
global set key
define key
,您需要知道要绑定的命令的名称``C-h k`有助于键入
C-h k C x 1
将显示序列
C x 1
绑定到名为
delete other windows
的命令,该命令允许我使用上述函数重新绑定它。如前所述,
C-hk C-C-f C-b
没有按预期工作,即您没有获得绑定到
C-C-f C-b
@wvxvw的命令名:出于某种原因,我再次看到
C-C-f
,但我无法找到
C-C-f C-b
@wvxvw:我不确定,但如果您在LaTeX模式下键入
C-C-f C-f C-b
,您将获得
\textbf{}
。无论如何,根据泰勒的建议,检查
tex.el
,发现相关函数是
(tex-font-nil?\C-b)
。我找到了一个带有自定义前缀的
C-hk
解决方案。诀窍是
C-C-f C-h
。它是一种
C-hkc-ccc-fcb
,相反,它是有效的。对不起,wvxvw系统不鼓励我与你互动。我得到“请避免在评论中进行长时间的讨论”。我宁愿遵守,以避免引起SE的愤怒。@wvxvw:我在我的答案中添加了一个简短的解释,解释了为什么您无法以通常的方式找到密钥绑定。+1,但为什么是数字?跟着你的西装我挖了
tex.el
。似乎我可以像
(TeX-font-nil?\C-b)
那样做,而不是
(TeX-font-nil 2)
,同样,我可以使用
?\C-e
?\C-I
,等等。安东尼奥:在我写这篇文章的时候,我认为,TeX字体列表的来源使用了数字,而不是更合理的字符值(例如?\C-I等等)。为了保持一致,我保留了这些数字。我看到,自从他们改用char值以来。我会更新我的答案(和我的代码)。嗯,
TeX斜体
不见了。我编辑了答案。为了与其他函数保持一致,我使用了
TeX-italic
,没有“s”。刚才看到了这个。我的代码中有什么错误?我看不出与您所做的有什么不同。@Tyler:在函数列表中
(defun TeX-italic()…
,尽管有一个
(local set key“\C-ci”'TeX-italic)
。可能我应该说是一个打字错误。在写作中,我用“italic”更改了拼写,使用一个形容词,如下面的
TeX bold
和本机的
facemenu set italic
。您可以看到我在对您的答案的评论中对此进行了详细说明,并声称我也解决了这个问题。我解决了,但由于我的声誉,SO不接受编辑。 Italic "\C-ci" Bold "\C-cb" Typewriter "\C-ct" Emphasis "\C-ce" Smallcaps "\C-cs"
(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)