Allmähliches Lernen der von AUCTeX bereitgestellten Tastenkombinationen

11

Wenn ich das tue M-x forward-char, gibt Emacs eine sehr nützliche Nachricht

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

In Anbetracht der Tatsache , dass Emacs alle LaTeX keybindings in der Datei können latex.elunter LaTeX-math-defaultvon AUCTeX vorgesehen ist , ist es möglich , dass im LaTeX - Modus (AUCTeX) Emacs erinnert mich die Keybindings? Zum Beispiel \sigmazeigt Emacs nach der Eingabe eine Meldung an, die

You can insert "\sigma" by `s .

Dies wäre sehr nützlich, da hiermit die Tastenkombinationen im LaTeX-Modus schrittweise erlernt werden können.

Name
quelle
2
Keine Antwort auf Ihre Frage, aber die Menüleiste sollte die Tastaturkürzel anzeigen, wenn sie definiert sind. Das Gleiche gilt für ein Popup-Menü (das die Verknüpfungen anzeigt) - z (global-set-key [C-down-mouse-3] 'mouse-popup-menubar). Auf diese Weise haben Sie keine Nachrichten ad nauseam.
Lawlist
@lawlist Ich wollte kommentieren, dass die Symbole für den Mathematikmodus nicht im Menü enthalten sind, aber sie haben tatsächlich ein eigenes Menü! Sogar diejenigen, die keine definierte Verknüpfung haben, werden mit dem Code angezeigt, der für ihre Erstellung erforderlich ist. Sehr praktisch!
Tyler

Antworten:

9

Wenn wir meine Antwort von hier aus ändern, können wir diese Daten einfach herausziehen. Dies LaTeX-math-defaultist eine Liste von 4 Tupeln

(CHARACTER MACRO MENU UNICODE)

Wo CHARACTERist das Zeichen, das zum Binden verwendet wird (ich weiß, es sieht aus wie eine Ganzzahl, aber es ist ein Zeichen, das zum Anzeigen verwendet wird (string CHARACTER)), MACROist das Latex-Makro ohne Schrägstrich, MENUist der Name für die Menüs und UNICODEist ein Unicode-Zeichen, das für die Anzeige in verwendet wird das Menü. Wir wollen das erste und zweite Element überprüfen:

(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))))))

Es gibt wahrscheinlich bessere Möglichkeiten, die Ausgabe kontinuierlich anzuzeigen, aber eine Möglichkeit, post-command-hookdie obige Funktion nach jedem Befehl auszuführen. Wir werden ein if verwenden, um sicherzustellen, dass dies nur in läuftlatex-mode

(add-hook 'post-command-hook
          (lambda ()
            (if (bound-and-true-p LaTeX-math-mode)
                (show-latex-symbol-at-point)
              )
            ))
erikstokes
quelle
Vielen Dank für diese Antwort. Ihr Code funktioniert. Nach der Eingabe von $ \ sigma $ wird eine Meldung angezeigt You can insert \sigma with s. Lassen Sie mich einen möglichen Fehler melden. Wenn ich $ \ oplus $ m eingebe, liegt ein Fehler vor Error in post-command-hook ((lambda nil (if (eq major-mode (quote latex-mode)) (show-latex-symbol-at-point)))): (wrong-type-argument characterp nil). Ich denke, dies wird durch die Tatsache verursacht, dass auctexkeine Verknüpfung für festgelegt wurde oplus( oplusfinden Sie unter LaTeX-math-default). Und ab diesem Fehler scheint der Code nicht mehr zu funktionieren, z. B. durch Eingabe von $ \ sigma $ passiert nichts.
Name
@Name Ich reparierte es nicht zu drucken , um zu versuchen , wenn CHARACTERistnil
erikstokes
Perfekt. Einige kleinere Vorschläge: (1) Ich denke, die Nachricht You can insert \sigma with `sist besser als You can insert sigma with s. (2) Derzeit wird nach der Eingabe \rightarrowdie Nachricht You can insert rightarrow with ^Fangezeigt. Ich denke, die Botschaft You can insert \rightarrow with `C-fist vielleicht besser.
Name
Und wieder behoben.
Erikstokes