Как заставить функцию `reftex-label` вставлять метку, более зависящую от среды?

Как заставить функцию `reftex-label` вставлять метку, более зависящую от среды?

При вызове reftex-labelили с помощью горячей клавиши C-c (метка автоматически вставляется в документ. Для sectionсреды метка подходит. Но для среды типа theoremили больше подходит thmметка типа \label{thm:pythagoras-theorem-1}или . Можно ли настроить функцию так, чтобы она вела себя таким образом?\label{theorem:pythagoras-theorem-1}\label{sec:pythagoras-theorem-1}reftex-label

\documentclass{article}
\usepackage{amsthm}
\newtheorem{thm}{Theorem}
\begin{document}
\section{Pythagoras' theorem}
\label{sec:pythagoras-theorem}

\begin{thm}\label{sec:pythagoras-theorem-1}
 In a right triangle, the square of the length of the hypotenuse is equal to the sum of the squares of the lengths of the other two sides
\end{thm}
\end{document}

решение1

Вам нужно настроить переменную reftex-label-alist. Это отрывок из docstring:

reftex-label-alist— это переменная, определенная в reftex-vars.el.

Список с информацией о средах для использования \label-\ref.

Эту строку документа легче понять после прочтения примеров конфигурации в руководстве. Просмотр встроенных значений по умолчанию в константе reftex-label-alist-builtinтакже может быть поучительным.

Установите эту переменную, чтобы определить дополнения и изменения к значению по умолчанию. Единственное, что вы НЕ ДОЛЖНЫ менять, это ?sиндикатор типа для меток разделов и SPC для anyтипа метки. Они жестко закодированы в других местах кода.

Значение переменной должно быть списком элементов. Каждый элемент сам по себе является списком и имеет следующую структуру:

(ENV-OR-MACRO TYPE-KEY LABEL-PREFIX REFERENCE-FORMAT CONTEXT-METHOD
          (MAGIC-WORD ... ) TOC-LEVEL)

Каждая запись списка описывает либо среду, содержащую счетчик для использования с \label и \ref, либо макрос LaTeX, определяющий метку как (или внутри) одного из своих аргументов. Элементы каждой записи списка: ...

Короче говоря, вам, вероятно, понадобится что-то вроде этого в вашем файле инициализации:

(setq reftex-label-alist
      '(("theorem" ?T "thm:" "~ref{%s}"
         nil (regexp "[Th]heorems?") nil)))

Я предлагаю вам проверитьруководстводля того, чтобы понять добавление выше. Обратите внимание, что ?tключ предустановлен для таблиц, поэтому заглавная ?T.

Связанный контент