Recientemente probé auctex 11.88 en emacs 24.4 (win7+mac). ¡Es genial hasta ahora!
Solía tener lo siguiente en mi archivo .emacs emacs cuando usaba auctex11.87 (lo encontré en algún lugar de 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"))
Genera automáticamente una etiqueta cuando inserto un entorno recién definido, digamos, cuando ejecuto C-c C-e exercise RET
, obtengo
\begin{exercise}
\label{ex:1}
(cursor here)
\end{exercise}
ahora en auctex11.88 solo puedo obtener
\begin{exercise}
(cursor here)
\end{exercise}
Necesito correr más C-c (
para agregar \label{ex:1}
allí.
No estoy seguro de si el código Lisp que estaba usando ya no está actualizado. Intenté ejecutar la pieza corta (LaTeX-env-label "exercise")
. En auctex11.87 obtengo el resultado deseado, pero no en auctex11.88.
¡Por favor avise! ¡Muchas gracias!
Por cierto, ¿es realmente un error que se menciona al principio en el correo ¿O deberíamos ajustar algo más en auctex11.88? Alguna característica nueva + problema de compatibilidad con versiones anteriores se menciona en lista de correo No soy un experto en esto, ¿alguien podría dar más detalles? ¡muchas gracias!
Respuesta1
AUCTeX y RefTeX son dos paquetes separados e independientes, uno puede usarse sin el otro. AUCTeX tiene algunas facilidades sobre etiquetas y gestión de citas, RefTeX es mucho mejor al hacer esto.
No todo el mundo usa RefTeX y ha habido un cambio en AUCTeX 11.88 para permitir a los usuarios elegir qué etiquetas deben insertarse. Esta selección es independiente de RefTeX, pero como efecto secundario, las personas necesitan personalizar otra variable AUCTeX (no RefTeX): LaTeX-label-alist
. Aquí está su descripción en elmanual
Opción de usuario:Lista de etiquetas LaTeX
Enumere los prefijos que se utilizarán para la etiqueta de cada entorno compatible.
Se trata de una lista alista cuyo auto es el nombre del entorno y el cdr es el prefijo o un símbolo que hace referencia a uno.
Si no se encuentra el nombre, o si el cdr es nulo, no se inserta automáticamente ninguna etiqueta para ese entorno.
Si desea insertar automáticamente una etiqueta para un entorno pero con un prefijo vacío, utilice la cadena vacía
""
como cdr de la entrada correspondiente.
Por lo tanto, también deberías agregar una entrada LaTeX-label-alist
para el excercise
medio ambiente. En tu .emacs
, reemplaza el add-hook
con este.
(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:"))))
Para evitar confusiones: AUCTeX decide si la etiqueta debe insertarse o no mirar LaTeX-label-alist
, pero si RefTeX está habilitado, y en particular si LaTeX-label-function
está activado reftex-label
, la inserción de la etiqueta se transfiere a RefTeX y la etiqueta realmente insertada se elige por el valor de a Variable RefTeX, reftex-label-alist
.
Para los usuarios de RefTeX el valor del CDR de la exercise
entrada LaTeX-label-alist
es casi inútil, lo importante es que sea una cadena válida.
El objetivo de la personalización LaTeX-label-alist
es tener el mismo comportamiento para usuarios de RefTeX y no RefTeX.
Para mayor claridad, este es el mínimo .emacs
que utilicé para las pruebas:
;; 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:"))))