Como forçar a função `reftex-label` a inserir um rótulo mais dependente do ambiente?

Como forçar a função `reftex-label` a inserir um rótulo mais dependente do ambiente?

Ao invocar reftex-labelou pela tecla de atalho C-c (um rótulo é inserido automaticamente no documento. Para o sectionmeio ambiente, o rótulo está bom. Mas para um ambiente como theoremou thmum rótulo como \label{thm:pythagoras-theorem-1}ou \label{theorem:pythagoras-theorem-1}é mais adequado que \label{sec:pythagoras-theorem-1}. É possível personalizar reftex-labela função para se comportar dessa maneira?

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

Responder1

Você tem que personalizar a variável reftex-label-alist. Este é um trecho da documentação:

reftex-label-alisté uma variável definida em reftex-vars.el.

Lista com informações sobre ambientes para uso de \label-\ref.

Esta sequência de documentos é mais fácil de entender depois de ler os exemplos de configuração no manual. Observar os padrões integrados na constante reftex-label-alist-builtintambém pode ser instrutivo.

Defina esta variável para definir adições e alterações ao padrão. As únicas coisas que você NÃO DEVE alterar é ?so indicador de tipo para rótulos de seção e o SPC para o anytipo de rótulo. Eles são codificados em outros locais do código.

O valor da variável deve ser uma lista de itens. Cada item é uma lista e possui a seguinte estrutura:

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

Cada entrada da lista descreve um ambiente que contém um contador para uso com \label e \ref, ou uma macro LaTeX definindo um rótulo como (ou dentro) de um de seus argumentos. Os elementos de cada entrada da lista são: ...

Resumindo, você provavelmente deseja algo assim em seu arquivo init:

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

Eu sugiro que você verifiqueo manualpara entender a adição acima. Observe que a ?tchave é predefinida para tabelas, portanto o ?T.

informação relacionada