Cuando escribo LaTeX usando latex-mode
, a menudo quiero escribir "intervalos medio abiertos" en mi texto. Por ejemplo, [0,1)
que se refiere al conjunto de todos los números x
con 0 <= x < 1
.
Desafortunadamente, estos "delimitadores desequilibrados" parecen confundir el analizador de sangría, lo que hace que el siguiente texto se sangra de manera inapropiada, generalmente a la derecha.
Aquí hay un documento de ejemplo. El siguiente texto es el resultado después de hacer C-x h M-x indent-region
. El comportamiento correcto sería tener todos los dos párrafos sangrados por 0 espacios.
\documentclass{article}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam volutpat
at dui et mattis. Here is a half open interval $[0,1)$. Proin
fringilla lectus nec mi tincidunt aliquet. Vestibulum fermentum eu
neque id egestas. Here is another $[1,2)$. Nullam et lectus
convallis, placerat neque non, vehicula nisi. Fusce imperdiet
dignissim ante, eget fringilla nisi.
Integer fermentum nunc eget purus molestie commodo. Integer
tristique tincidunt odio, vel rutrum diam commodo quis. Fusce a
aliquet quam. Cras suscipit est et nisl sollicitudin
iaculis. Aliquam erat volutpat. Phasellus sapien arcu, aliquet ut
hendrerit in, lobortis nec ante.
\end{document}
Actualmente estoy trabajando en esto con un truco feo: defino una macro LaTeX que se expande a nada, y escribo los delimitadores "coincidentes" dentro de una invocación de esta macro. Esto vuelve a sincronizar el penetrador.
\documentclass{article}
\newcommand{\ugh}[1]{}
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam volutpat
at dui et mattis. Here is a half open interval $[0,1)$. Proin
fringilla lectus nec mi tincidunt aliquet. Vestibulum fermentum eu
neque id egestas. \ugh{(]} Now on the next line we are back in sync.
Nullam et lectus convallis, placerat neque non, vehicula nisi. Fusce
imperdiet dignissim ante, eget fringilla nisi.
\end{document}
Pero esto es realmente desagradable. ¿Hay una mejor solución?
Estoy usando GNU Emacs 24.4.1.
fuente
Respuestas:
No es una solución de Emacs, pero mi código LaTeX escribe intervalos tales como
\halfopen{0}{1}
, dondeEsta convención lleva el problema del equilibrio a un lugar donde es poco probable que cause problemas. Y se puede buscar :-)
fuente
(0,1]
?\openhalf
jejeje\halfclosed
La función
latex-indent
de sangría delatex-mode
establece la tabla de sintaxistex-latex-indent-syntax-table
y llama a lolatex-find-indent
que a su vez llamalatex-backward-sexp-1
.La sintaxis de
?\(
y?\)
se establece en lo"."
que significa "puntuación". Entonces ya no es un delimitador.Por lo tanto, expresiones como
[0,1)
resultado en unscan-error
enlatex-backward-sexp-1
que conduce a un comportamiento inesperado.Puede evitar esto agregando lo siguiente a su archivo init:
Pero no sé las consecuencias negativas de esta configuración desde que la uso
auctex
. Entonces, espera lo peor ;-).fuente