如何强制“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。这是文档字符串的摘录:

reftex-label-alist是在 中定义的变量reftex-vars.el

包含有关 \label-\ref 使用环境的信息的列表。

阅读手册中的配置示例后,此文档字符串更容易理解。查看常量中的内置默认值reftex-label-alist-builtin也可能很有启发。

设置此变量可定义对默认值的添加和更改。您唯一不能更改的是?s部分标签的类型指示符和any标签类型的 SPC。这些在代码中的其他地方是硬编码的。

变量的值必须是项目列表。每个项目本身都是一个列表,并具有以下结构:

(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

相关内容