如何強制“reftex-label”函數插入更依賴環境的標籤?

如何強制“reftex-label”函數插入更依賴環境的標籤?

透過呼叫reftex-label或透過熱鍵,C-c (標籤會自動插入文件中。對於section環境來說,標籤很好。但對於像 or 這樣的環境theorem,像or 這樣的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.

相關內容