Câu trả lời:
Đây là một chức năng elisp đơn giản cho nó:
(defun labelnameref (string)
"Insert \label{ARG} \index{\nameref{ARG}} at point"
(interactive "sString for \\label and \\nameref: ")
(insert "\\label{" string "} \\index{\\nameref{" string "}}"))
Hàm này truy vấn trong chuỗi nhỏ cho chuỗi và sau đó chèn tất cả tại điểm. Để sử dụng nó, bạn có thể đặt nó vào .emacs của bạn và sau đó gọi nó thông qua M-x labelnameref
hoặc liên kết nó với một khóa.
Nếu bạn muốn sử dụng nhiều cấu trúc tương tự, có thể dễ dàng viết chúng dưới dạng yasnippets. Với YASnippet, bạn có thể dễ dàng tạo một đoạn mã với hành vi tương tự như trên. Ví dụ: bạn có thể sử dụng cách sau (bạn đã thay thế "keybinding" bằng một keybinding thích hợp nếu bạn muốn có keybinding cho nó):
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
Với điều này, bạn viết foo và nhấn Tabtrực tiếp sau đó để mở rộng nó \label{$1} \index{\nameref{$1}}
và truy vấn $1
.