回答:
簡単なelisp関数を次に示します。
(defun labelnameref (string)
"Insert \label{ARG} \index{\nameref{ARG}} at point"
(interactive "sString for \\label and \\nameref: ")
(insert "\\label{" string "} \\index{\\nameref{" string "}}"))
この関数は、ミニバッファーで文字列を照会し、そのすべてをポイントに挿入します。それを使用するには、それを.emacsに入れてから、それを呼び出すM-x labelnameref
か、キーにバインドします。
似たような構造をたくさん使いたい場合は、yasnippetsとして書く方が簡単かもしれません。ではYASnippet簡単に上記と同様の動作とスニペットを作成することができます。たとえば、以下を使用できます(「キーバインディング」をキーバインディングが必要な場合は、適切なキーバインディングに置き換えます)。
# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}
これを使用してfooを記述し、Tab直後に押して展開して\label{$1} \index{\nameref{$1}}
を照会し$1
ます。