2010-07-18 16 views
8

AucTeX en emacs es una herramienta bastante sorprendente, pero cuando escribo un solo '$', todo el color se rompe.

Normalmente, un '$' va acompañado de otro '$' para expresar ecuaciones matemáticas, pero para el listado de fuentes solo se usa con frecuencia '$'.

\begin{Verbatim} 
(let ((buffer (url-retrieve-synchronously 
... 
    (re-search-forward "^$" nil 'move) <-- It breaks the coloring 
... 
\end{Verbatim} 

La solución fácil es la siguiente para que coincida con el '$'.

(re-search-forward "^$" nil 'move) ;; $ 

¿Hay alguna opción en AucTeX para evitar este único problema '$'?

Respuesta

9

AUCTeX sabe que $ no es especial en entornos literales, pero hay que decirle que Verbatim es un entorno verbatim disponiendo que aparezca en LaTeX-verbatim-environments-local.

Si AUCTeX está instalado de manera óptima, ya lo sabe, porque AUCTeX carga un gancho de estilo para cada archivo que carga a través de \usepackage y amigos. Es posible que deba indicarle que analice el archivo de encabezado con C-c C-n (TeX-normal-mode).

Si eso no es suficiente, significa que Verbatim se definió en un archivo de estilo para el que AUCTeX no tiene suficiente información. Puede decirle a AUCTeX que analice algunos o todos los archivos de estilo que ha instalado; vea el capítulo "Automático" en el manual de AUCTeX.

Algunas veces AUCTeX no logra analizar el archivo de estilo; entonces puedes hacer esta parte a mano. El código siguiente asume que obtiene el entorno Verbatim del paquete fancyvrb; adaptar el nombre de otra manera. Crear un archivo llamado fancyvrb.el en uno de los directorios mencionados en TeX-style-path con el siguiente contenido (puede haber otras cosas vale la pena poner allí, sólo he adaptado alltt.el):

 
(TeX-add-style-hook 
"fancyvrb" 
(lambda() 
    (LaTeX-add-environments "BVerbatim" "LVerbatim" "SaveVerbatim" "Verbatim") 
    (make-local-variable 'LaTeX-indent-environment-list) 
    (add-to-list 'LaTeX-indent-environment-list '("BVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("LVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("SaveVerbatim" current-indentation)) 
    (add-to-list 'LaTeX-indent-environment-list '("Verbatim" current-indentation)) 
    (make-local-variable 'LaTeX-verbatim-regexp) 
    (setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|\\([BL]?\\|Save\\)Verbatim")) 
    (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim") 
    (add-to-list 'LaTeX-verbatim-environments-local "Verbatim") 
    (when (and (featurep 'font-latex) 
       (eq TeX-install-font-lock 'font-latex-setup)) 
    (font-latex-set-syntactic-keywords) 
    (setq font-lock-set-defaults nil) 
    (font-lock-set-defaults)))) 

(pensé que también podría hacerlo manualmente a través de variables de archivo, pero esto no funciona, porque la configuración de bloqueo de fuentes se genera antes de que se inicialicen las variables locales del archivo, y no veo una solución.)

+0

Para el método final, ¿está bien copiarlos a la última línea del código fuente de TeX? No parece funcionar de esa manera. – prosseek

+0

@prosseek: lo siento, hice un error tipográfico en el nombre de la variable, ahora corregido. Pero incluso entonces acabo de probar y no funciona para mí. Parece que la variable está configurada después de configurar los parámetros de color y no sé cómo solucionarlo. – Gilles

+0

Ok, el uso de una variable local de archivo no funcionará, por lo que * style * .el es el camino a seguir. Edité mi respuesta para incluir el código para esto. – Gilles

4

¿Hay alguna razón para usar Verbatim vs. literal? textualmente hace que todo en la sección tenga el mismo color para mí. Como un aparte, prefiero usar el listings package. para mostrar el código del programa en látex.

Usando los listados de paquetes puede agregar texto no formateado como lo haría con \ begin {verbatim} pero su objetivo principal es incluir el código fuente de cualquier lenguaje de programación dentro de su documento.

+0

Gracias por la sugerencia, y veo esa lista es la mejor opción. Pero, en términos de emacs/AucTeX, veo el mismo problema. – prosseek