通过调用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
。