Ich habe vor Kurzem Auctex 11.88 auf Emacs 24.4 (Win7+Mac) ausprobiert. Bisher ist es großartig!
Als ich auctex11.87 verwendet habe, hatte ich Folgendes in meiner .emacs-Emacs-Datei (ich bin irgendwo bei Stackexchange darauf gestoßen):
(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"))
Es generiert automatisch ein Label, wenn ich eine neu definierte Umgebung einfüge, z. B. wenn ich ausführe C-c C-e exercise RET
, erhalte ich
\begin{exercise}
\label{ex:1}
(cursor here)
\end{exercise}
jetzt in auctex11.88 kann ich nur
\begin{exercise}
(cursor here)
\end{exercise}
Ich muss weiter laufen, C-c (
um es dort hinzuzufügen \label{ex:1}
.
Ich bin nicht sicher, ob der von mir verwendete Lisp-Code veraltet. Ich habe versucht, das kurze Stück auszuführen (LaTeX-env-label "exercise")
. In auctex11.87 erhalte ich das gewünschte Ergebnis, in auctex11.88 jedoch nicht.
Bitte um Rat! Vielen Dank!
BTW, ist es wirklich ein Fehler, der früh erwähnt wird in die Post oder sollten wir in auctex11.88 noch etwas anpassen? Einige neue Funktionen + Abwärtskompatibilitätsprobleme werden erwähnt in Mailingliste Ich bin kein Experte auf diesem Gebiet. Kann das jemand näher erläutern? Vielen Dank!
Antwort1
AUCTeX und RefTeX sind zwei getrennte und unabhängige Pakete, eines kann ohne das andere verwendet werden. AUCTeX bietet einige Funktionen für die Verwaltung von Beschriftungen und Zitaten, RefTeX ist hier viel besser.
Nicht jeder verwendet RefTeX und es gab eine Änderung in AUCTeX 11.88, die es Benutzern ermöglicht, auszuwählen, welche Beschriftungen eingefügt werden sollen. Diese Auswahl ist unabhängig von RefTeX, aber als Nebeneffekt müssen Benutzer eine weitere AUCTeX-Variable (nicht RefTeX-Variable) anpassen: LaTeX-label-alist
. Hier ist ihre Beschreibung in derHandbuch
Benutzeroption:LaTeX-Label-Alist
Listen Sie die Präfixe auf, die für die Bezeichnung jeder unterstützten Umgebung verwendet werden sollen.
Dies ist eine Alist, deren Car der Umgebungsname und deren CDR entweder das Präfix oder ein darauf verweisendes Symbol ist.
Wenn der Name nicht gefunden wird oder der CDR Null ist, wird für diese Umgebung automatisch kein Label eingefügt.
Wenn Sie automatisch eine Bezeichnung für eine Umgebung mit einem leeren Präfix einfügen möchten, verwenden Sie die leere Zeichenfolge
""
als CDR des entsprechenden Eintrags.
LaTeX-label-alist
Sie sollten daher auch einen Eintrag für die Umgebung hinzufügen excercise
. .emacs
Ersetzen Sie in Ihrem add-hook
durch diesen
(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:"))))
Um Verwirrung zu vermeiden: AUCTeX entscheidet anhand von , ob das Etikett eingefügt werden soll oder nicht. LaTeX-label-alist
Wenn RefTeX jedoch aktiviert ist, und insbesondere wenn LaTeX-label-function
, reftex-label
wird das Einfügen des Etiketts an RefTeX übertragen und das tatsächlich eingefügte Etikett wird durch den Wert einer RefTeX-Variablen ausgewählt, reftex-label-alist
.
Für RefTeX-Benutzer ist der CDR-Wert des exercise
Eintrags LaTeX-label-alist
nahezu nutzlos, wichtig ist, dass es sich um einen gültigen String handelt.
Der Sinn der Anpassung LaTeX-label-alist
besteht darin, für RefTeX- und Nicht-RefTeX-Benutzer das gleiche Verhalten zu erreichen.
Der Übersichtlichkeit halber ist dies das Minimum, das .emacs
ich zum Testen verwendet habe:
;; 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:"))))