逐步学习AUCTeX提供的键绑定


11

如果我这样做M-x forward-char,Emacs会给出一个非常有用的信息

You can run the command "forward-char" with C-f.

考虑到Emacs可以在AUCTeX提供的文件latex.el下找到文件中的所有LaTeX绑定,事实上,LaTeX-math-default在LaTeX模式(AUCTeX)下,Emacs可以使我想起这些绑定吗?例如,输入\sigmaEmacs后显示一条消息,

You can insert "\sigma" by `s .

这将非常有用,因为它允许逐步学习LaTeX模式下的键绑定。


2
不是您的问题的答案,但是如果定义了快捷键,菜单栏应显示键盘快捷键。并且,弹出菜单(显示快捷方式)也可以使用相同的功能-例如,(global-set-key [C-down-mouse-3] 'mouse-popup-menubar)。这样,您就不会发恶心的消息。
法律列表

@lawlist我要评论的是数学模式符号不在菜单中,但实际上它们有自己的整个菜单!甚至会显示没有定义快捷方式的代码,并附带生成它们所需的代码。非常便利!
泰勒

Answers:


9

这里修改我的答案,我们可以从中提取数据LaTeX-math-default,这是一个四元组的列表

(CHARACTER MACRO MENU UNICODE)

CHARACTER用于绑定它的字符在哪里(我知道它看起来像整数,但它是一个字符,(string CHARACTER)经常使用),MACRO是不带斜杠的Latex宏,MENU是菜单的名称,并且UNICODE是用于在其中显示的Unicode字符菜单。我们要检查第一个和第二个元素:

(defun show-latex-symbol-at-point ()
  (interactive)
  (let* ((sym (symbol-at-point))
         (latex-symbol (TeX-member sym LaTeX-math-default
                                   (lambda (a b)
                                     (string= a (nth 1 b)))))
         (shortcut (nth 0 latex-symbol))
         )
    (if (and latex-symbol shortcut)
        (message "You can insert \\%s with `%s"
                 (nth 1 latex-symbol)
                 (key-description (string shortcut))))))

可能有更好的方法来连续显示输出,但是有一种方法可以post-command-hook在每个命令后运行上述功能。我们将使用if来确保它仅在latex-mode

(add-hook 'post-command-hook
          (lambda ()
            (if (bound-and-true-p LaTeX-math-mode)
                (show-latex-symbol-at-point)
              )
            ))

非常感谢您的回答。您的代码有效。输入$ \ sigma $后,将显示一条消息,提示You can insert \sigma with s。让我报告一个可能的错误,如果我输入$ \ oplus $ m,则会提示错误Error in post-command-hook ((lambda nil (if (eq major-mode (quote latex-mode)) (show-latex-symbol-at-point)))): (wrong-type-argument characterp nil)。我认为这是由于auctex尚未设置快捷方式oplusoplus可以在下方找到LaTeX-math-default)引起的。从此错误开始,代码似乎无法正常工作,例如,键入$ \ sigma $不会发生任何事情。
命名

@Name我固定它不尝试打印时CHARACTERnil
erikstokes

完善。很少有次要建议:(1)我认为信息You can insert \sigma with `s比更好You can insert sigma with s。(2)当前在键入\rightarrow消息后You can insert rightarrow with ^F出现。我认为信息You can insert \rightarrow with `C-f可能更好。
命名

并且,再次修复。
erikstokes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.