Відповіді:
Ось проста функція elisp для цього:
(defun labelnameref (string)
"Insert \label{ARG} \index{\nameref{ARG}} at point"
(interactive "sString for \\label and \\nameref: ")
(insert "\\label{" string "} \\index{\\nameref{" string "}}"))
Ця функція запитує в minibuffer для рядка, а потім вставляє його в точку. Щоб використовувати його, ви можете помістити його у свій .emacs, а потім викликати його через M-x labelnameref
або прив'язати до ключа.
Якщо ви хочете використовувати багато подібних конструкцій, може бути простіше записати їх як ясніппети. За допомогою YASnippet ви можете легко створити фрагмент із подібною поведінкою, як описано вище. Наприклад, ви можете скористатись наступним (ви замінили "прив'язку клавіш" на належне введення клавіш, якщо ви хочете, щоб це було пов'язане з клавіатурою):
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
За допомогою цього ви пишете foo та натискаєте Tabбезпосередньо після цього, щоб розгорнути його \label{$1} \index{\nameref{$1}}
та запитувати $1
.