저는 최근 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 라벨 목록
지원되는 각 환경의 레이블에 사용할 접두사를 나열합니다.
이것은 car가 환경 이름이고 cdr이 접두사 또는 이를 참조하는 기호인 alist입니다.
이름을 찾을 수 없거나 cdr이 nil인 경우 해당 환경에 대한 레이블이 자동으로 삽입되지 않습니다.
환경에 대한 레이블을 자동으로 삽입하지만 접두사가 비어 있는 경우 빈 문자열을
""
해당 항목의 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:"))))