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)