Error de auctex 11.88 (?) en LaTeX-env-label, no se puede insertar la etiqueta automáticamente

Error de auctex 11.88 (?) en LaTeX-env-label, no se puede insertar la etiqueta automáticamente

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-alistpara el excercisemedio ambiente. En tu .emacs, reemplaza el add-hookcon 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-functionestá 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 exerciseentrada LaTeX-label-alistes casi inútil, lo importante es que sea una cadena válida.

El objetivo de la personalización LaTeX-label-alistes tener el mismo comportamiento para usuarios de RefTeX y no RefTeX.


Para mayor claridad, este es el mínimo .emacsque 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:"))))

información relacionada