Lors de l'écriture de LaTeX en utilisant latex-mode
, je veux souvent écrire des "intervalles semi-ouverts" dans mon texte. Par exemple, [0,1)
qui fait référence à l'ensemble de tous les nombres x
avec 0 <= x < 1
.
Malheureusement, ces «délimiteurs déséquilibrés» semblent confondre l'analyseur d'indentation, provoquant un retrait indu du texte suivant, généralement dérivant vers la droite.
Voici un exemple de document. Le texte ci-dessous est le résultat après avoir fait C-x h M-x indent-region
. Le comportement correct serait d'avoir tous les deux paragraphes en retrait de 0 espace.
\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}
Actuellement, je travaille autour de cela avec un hack laid: je définis une macro LaTeX qui se développe à rien, et j'écris les délimiteurs "correspondants" dans une invocation de cette macro. Cela rétablit la synchronisation du pénétrateur.
\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}
Mais c'est vraiment désagréable. Y a-t-il une meilleure solution?
J'utilise GNU Emacs 24.4.1.
la source
Réponses:
Pas une solution Emacs, mais mon code LaTeX écrit des intervalles tels que
\halfopen{0}{1}
, oùCette convention pousse le problème d'équilibrage à un endroit où il est peu probable qu'il cause des problèmes. Et c'est consultable :-)
la source
(0,1]
?\openhalf
hehehe\halfclosed
La fonction d'indentation
latex-indent
delatex-mode
définit la table de syntaxetex-latex-indent-syntax-table
et appellelatex-find-indent
qui à son tour appellelatex-backward-sexp-1
.La syntaxe de
?\(
et?\)
est définie sur"."
ce qui signifie "ponctuation". Ce n'est donc plus un délimiteur.Par conséquent, des expressions comme
[0,1)
résultent en unscan-error
danslatex-backward-sexp-1
lequel conduit au comportement inattendu.Vous pouvez éviter cela en ajoutant ce qui suit à votre fichier init:
Mais, je ne connais pas les conséquences négatives de ce paramètre depuis que je l'utilise
auctex
. Alors, attendez-vous au pire ;-).la source