Secara bertahap mempelajari ikatan kunci yang disediakan oleh AUCTeX

11

Jika saya melakukannya M-x forward-char, Emacs memberikan pesan yang sangat berguna

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

Mengingat fakta bahwa Emacs dapat menemukan semua keybindings LaTeX dalam file latex.eldi bawah LaTeX-math-defaultdisediakan oleh AUCTeX, adalah mungkin bahwa dalam mode LaTeX (AUCTeX) Emacs mengingatkan saya keybindings? Misalnya setelah mengetik \sigmaEmacs menunjukkan pesan itu

You can insert "\sigma" by `s .

Ini akan sangat berguna karena memungkinkan untuk secara bertahap mempelajari keybindings dalam mode LaTeX.

Nama
sumber
2
Bukan jawaban untuk pertanyaan Anda, tetapi menu harus menunjukkan pintasan keyboard jika ditetapkan. Dan, hal yang sama tersedia dengan menu popup (yang menunjukkan cara pintas) - misalnya (global-set-key [C-down-mouse-3] 'mouse-popup-menubar),. Dengan begitu, Anda tidak memiliki pesan dan mual.
hukum
@lawlist Saya akan berkomentar bahwa simbol mode matematika tidak ada dalam menu, tetapi mereka sebenarnya memiliki seluruh menu mereka sendiri! Bahkan yang tidak memiliki jalan pintas yang jelas akan ditampilkan, dengan kode yang diperlukan untuk memproduksinya. Sangat berguna!
Tyler

Jawaban:

9

Memodifikasi jawaban saya dari sini, kami cukup mengeluarkan data ini LaTeX-math-default, yang merupakan daftar 4-tupel

(CHARACTER MACRO MENU UNICODE)

di mana CHARACTERkarakter yang digunakan untuk mengikatnya (saya tahu itu terlihat seperti bilangan bulat, tapi itu karakter, gunakan (string CHARACTER)untuk melihat), MACROadalah makro Lateks tanpa garis miring, MENUadalah nama untuk menu dan UNICODEmerupakan karakter unicode yang digunakan untuk tampilan di menu. Kami ingin memeriksa elemen pertama dan kedua:

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

Mungkin ada cara yang lebih baik untuk terus menampilkan output, tetapi satu cara digunakan post-command-hookuntuk menjalankan fungsi di atas setelah setiap perintah. Kami akan menggunakan jika untuk memastikan ini hanya berjalanlatex-mode

(add-hook 'post-command-hook
          (lambda ()
            (if (bound-and-true-p LaTeX-math-mode)
                (show-latex-symbol-at-point)
              )
            ))
erikstokes
sumber
Terima kasih banyak atas jawaban ini. Kode Anda berfungsi. Setelah mengetik $ $ sigma $, sebuah pesan muncul mengatakan You can insert \sigma with s. Izinkan saya melaporkan bug yang mungkin terjadi, jika saya mengetik $ \ oplus $ m ada kesalahan memberitahu Error in post-command-hook ((lambda nil (if (eq major-mode (quote latex-mode)) (show-latex-symbol-at-point)))): (wrong-type-argument characterp nil). Saya pikir ini disebabkan oleh fakta yang auctexbelum menetapkan jalan pintas untuk oplus( oplusdapat ditemukan di bawah LaTeX-math-default). Dan dari kesalahan ini, kode tampaknya tidak berfungsi, misalnya dengan mengetik $ \ sigma $ tidak ada yang terjadi.
Nama
Nama @ Aku tetap untuk tidak mencoba untuk mencetak ketika CHARACTERadalahnil
erikstokes
Sempurna. Beberapa saran kecil: (1) Saya pikir pesannya You can insert \sigma with `slebih baik daripada You can insert sigma with s. (2) Saat ini setelah mengetik \rightarrowpesan You can insert rightarrow with ^Fmuncul. Saya pikir pesannya You can insert \rightarrow with `C-fmungkin lebih baik.
Nama
Dan, diperbaiki lagi.
erikstokes