Risposte:
Ecco una semplice funzione elisp per questo:
(defun labelnameref (string)
"Insert \label{ARG} \index{\nameref{ARG}} at point"
(interactive "sString for \\label and \\nameref: ")
(insert "\\label{" string "} \\index{\\nameref{" string "}}"))
Questa funzione esegue una query nel minibuffer per la stringa e quindi inserisce tutto nel punto. Per usarlo puoi inserirlo nel tuo .emacs e quindi invocarlo tramite M-x labelnameref
o associarlo a una chiave.
Se vuoi usare molti costrutti simili, potrebbe essere più semplice scriverli come yasnippet. Con YASnippet puoi creare facilmente uno snippet con un comportamento simile a quello sopra. Ad esempio, è possibile utilizzare quanto segue (è necessario sostituire "keybinding" con un keybinding appropriato se si desidera un keybinding per esso):
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
Con questo scrivi pippo e premi Tabsubito dopo per espanderlo \label{$1} \index{\nameref{$1}}
e fare una query $1
.