Когда я пишу с использованием LaTeX latex-mode
, я часто хочу написать «полуоткрытые интервалы» в моем тексте. Например, [0,1)
который относится к набору всех чисел x
с 0 <= x < 1
.
К сожалению, эти «несбалансированные разделители», похоже, сбивают с толку синтаксический анализатор, вызывая неправильный отступ следующего текста, обычно смещаясь вправо.
Вот пример документа. Текст ниже - результат после выполнения C-x h M-x indent-region
. Правильное поведение будет иметь все два абзаца с отступом в 0 пробелов.
\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}
В настоящее время я работаю над этим с безобразным хаком: я определяю макрос LaTeX, который ничего не раскрывает, и записываю «совпадающие» разделители внутри вызова этого макроса. Это возвращает индентора обратно в синхронизацию.
\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}
Но это действительно неприятно. Есть ли лучшее решение?
Я использую GNU Emacs 24.4.1.