我最近在 emacs 24.4(win7+mac) 上嘗試 auctex 11.88。到目前為止非常棒!
當我使用 auctex11.87 時,我的 .emacs emacs 檔案中曾經有以下內容(我在 stackexchange 的某個地方遇到了它)
(setq reftex-label-alist
'(
("theorem" ?h "thm:" "~\\ref{%s}" t ("theorem" "th."))
("lemma" ?l "lem:" "~\\ref{%s}" t ("lemma" "lem." ))
("exercise" ?x "ex:" "~\\ref{%s}" t ("exercise" "ex." ))
("question" ?q "ques:" "~\\ref{%s}" t ("question" "q." ))
))
(add-hook 'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("lemma" LaTeX-env-label)
'("exercise" LaTeX-env-label)
'("theorem" LaTeX-env-label)
'("question" LaTeX-env-label)
)))
(setq reftex-insert-label-flags '("s" "ft"))
當我插入新定義的環境時,它會自動產生一個標籤,例如,當我運行時C-c C-e exercise RET
,我得到
\begin{exercise}
\label{ex:1}
(cursor here)
\end{exercise}
現在在 auctex11.88 我只能得到
\begin{exercise}
(cursor here)
\end{exercise}
我需要進一步運行C-c (
才能添加\label{ex:1}
到那裡。
我不確定我使用的 lisp 程式碼是否已經過時了。我嘗試執行這個短片(LaTeX-env-label "exercise")
。在 auctex11.87 中我得到了想要的結果,但在 auctex11.88 中卻沒有。
請指教!非常感謝!
順便說一句,這真的是一個早期提到的錯誤嗎? 郵件 或者我們應該在 auctex11.88 中調整其他內容嗎?一些新功能+向後相容性問題在 郵件清單 我不是這方面的專家,誰能詳細說明一下嗎?多謝!
答案1
AUCTeX 和 RefTeX 是兩個獨立的軟體包,一個可以單獨使用。 AUCTeX 有一些關於標籤和引文管理的功能,RefTeX 在這方面做得更好。
並非每個人都使用 RefTeX,AUCTeX 11.88 中進行了更改,允許使用者選擇應插入哪些標籤。此選擇獨立於 RefTeX,但作為副作用,人們需要自訂另一個 AUCTeX(不是 RefTeX)變數:LaTeX-label-alist
。這是它的描述手動的
使用者選項:LaTeX 標籤列表
列出要用於每個受支援環境的標籤的前綴。
這是一個 alist,其 car 是環境名稱,而 cdr 是前綴或引用環境名稱的符號。
如果未找到名稱,或 cdr 為零,則不會自動為該環境插入任何標籤。
如果要自動插入環境標籤但前綴為空,請使用空字串
""
作為對應條目的 cdr。
LaTeX-label-alist
因此,您還應該為環境新增一個條目excercise
。在你的 中.emacs
,將 替換add-hook
為這個
(add-hook
'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("lemma" LaTeX-env-label)
'("exercise" LaTeX-env-label)
'("theorem" LaTeX-env-label)
'("question" LaTeX-env-label))
(add-to-list 'LaTeX-label-alist '("exercise" . "ex:"))))
為了避免混淆:AUCTeX 決定是否應該插入標籤LaTeX-label-alist
,但如果啟用了 RefTeX,特別是如果LaTeX-label-function
是reftex-label
,則標籤的插入將轉移到 RefTeX,並且實際插入的標籤由 a 的值選擇RefTeX 變量,reftex-label-alist
.
exercise
對於 RefTeX 使用者來說,條目的 CDR 值LaTeX-label-alist
幾乎沒有用處,重要的是它是一個有效的字串。
客製化的目的LaTeX-label-alist
是讓 RefTeX 和非 RefTeX 使用者俱有相同的行為。
.emacs
為了清楚起見,這是我用於測試的最小值:
;; Enable RefTeX automatically in AUCTeX buffers.
(autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
(add-hook 'TeX-mode-hook
(lambda ()
(turn-on-reftex)))
(setq reftex-plug-into-AUCTeX t)
;; RefTeX-related settings.
(setq
reftex-label-alist
'(("theorem" ?h "thm:" "~\\ref{%s}" t ("theorem" "th."))
("lemma" ?l "lem:" "~\\ref{%s}" t ("lemma" "lem." ))
("exercise" ?x "ex:" "~\\ref{%s}" t ("exercise" "ex." ))
("question" ?q "ques:" "~\\ref{%s}" t ("question" "q." )))
reftex-insert-label-flags '("s" "ft"))
;; AUCTeX-related settings.
(add-hook
'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("lemma" LaTeX-env-label)
'("exercise" LaTeX-env-label)
'("theorem" LaTeX-env-label)
'("question" LaTeX-env-label))
(add-to-list 'LaTeX-label-alist '("exercise" . "ex:"))))