10

Я хотел бы написать команду elisp emacs, которая вставляет фиксированную строку, содержащую переменную часть в текущей позиции курсора:

\label{$STRING} \index{\nameref{$STRING}}

где команда должна запросить $STRING и вставить весь текст.

1 ответ1

11

Elisp

Вот простая функция 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, а затем вызвать его через Mx labelnameref или связать с ключом.

YASnippet

Если вы хотите использовать много подобных конструкций, может быть проще написать их как yasnippets. С YASnippet вы можете легко создать фрагмент с поведением, аналогичным описанному выше. Например, вы можете использовать следующее (вы должны заменить "связывание клавиш" на правильное связывание клавиш, если вы хотите связывание клавиш для него):

# -*- mode: snippet -*-
# name: foo
# key: foo
# binding: "keybinding"
# --
\label{$1} \index{\nameref{$1}}

При этом вы пишете foo и сразу после этого нажимаете Tab, чтобы развернуть его до \label{$1} \index{\nameref{$1}} и запросить $1 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .