¿Cómo forzar la función `reftex-label` para insertar una etiqueta más dependiente del entorno?

¿Cómo forzar la función `reftex-label` para insertar una etiqueta más dependiente del entorno?

Al invocar reftex-labelo mediante la tecla de acceso rápido C-c (se inserta automáticamente una etiqueta en el documento. Para el sectionmedio ambiente, la etiqueta está bien. Pero para un entorno como theoremo thmuna etiqueta como \label{thm:pythagoras-theorem-1}o \label{theorem:pythagoras-theorem-1}es más adecuada que \label{sec:pythagoras-theorem-1}. ¿Se puede personalizar reftex-labella función para que se comporte de esa manera?

\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}

Respuesta1

Tienes que personalizar la variable reftex-label-alist. Este es un extracto de la cadena de documentación:

reftex-label-alistes una variable definida en reftex-vars.el.

Lista con información sobre entornos para uso \label-\ref.

Esta cadena de documentos es más fácil de entender después de leer los ejemplos de configuración en el manual. reftex-label-alist-builtinTambién puede resultar instructivo observar los valores predeterminados integrados en la constante .

Establezca esta variable para definir adiciones y cambios al valor predeterminado. Lo único que NO DEBE cambiar es ?sel indicador de tipo para las etiquetas de sección y el SPC para el anytipo de etiqueta. Estos están codificados en otros lugares del código.

El valor de la variable debe ser una lista de elementos. Cada elemento es una lista en sí misma y tiene la siguiente estructura:

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

Cada entrada de la lista describe un entorno que lleva un contador para usar con \label y \ref, o una macro LaTeX que define una etiqueta como (o dentro) de uno de sus argumentos. Los elementos de cada entrada de la lista son: ...

En resumen, probablemente quieras algo como esto en tu archivo de inicio:

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

te sugiero que revisesel manualpara entender la adición anterior. Tenga en cuenta que la ?tclave está preestablecida para tablas, por lo que la mayúscula ?T.

información relacionada