Elisp
Aqui está uma função elisp simples para isso:
(defun labelnameref (string)
"Insert \label{ARG} \index{\nameref{ARG}} at point"
(interactive "sString for \label and \nameref: ")
(insert "\label{" string "} \index{\nameref{" string "}}"))
Esta função consulta no minibuffer a string e depois a insere no ponto. Para usá-lo, você pode colocá-lo em seus .emacs e invocá-lo via M-x labelnameref
ou vinculá-lo a uma chave.
YASnippet
Se você quiser usar muitas construções similares, pode ser mais fácil escrevê-las como yasnippets. Com o YASnippet , você pode criar facilmente um snippet com comportamento semelhante ao descrito acima. Por exemplo, você pode usar o seguinte (você tem que substituir "atalhos de teclado" por uma atadura de teclado apropriada se você quiser um atalho de teclado para ele):
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
Com isso você escreve foo e pressiona Tab diretamente para expandi-lo para \label{$1} \index{\nameref{$1}}
e consultar $1
.