Wenn latex-mode
ich LaTeX mit schreibe , möchte ich oft "halboffene Intervalle" in meinen Text schreiben. Zum Beispiel, [0,1)
das sich auf die Menge aller Zahlen x
mit bezieht 0 <= x < 1
.
Leider scheinen diese "unausgeglichenen Trennzeichen" den Einrückungsparser zu verwirren, was dazu führt, dass der folgende Text unangemessen eingerückt wird und normalerweise nach rechts driftet.
Hier ist ein Beispieldokument. Der folgende Text ist das Ergebnis nach dem Ausführen C-x h M-x indent-region
. Das richtige Verhalten wäre, alle Absätze durch 0 Leerzeichen eingerückt zu haben.
\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}
Derzeit arbeite ich mit einem hässlichen Hack daran: Ich definiere ein LaTeX-Makro, das sich zu nichts erweitert, und schreibe die "passenden" Trennzeichen in einen Aufruf dieses Makros. Dadurch wird der Eindringkörper wieder synchronisiert.
\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}
Das ist aber wirklich unangenehm. Gibt es eine bessere Lösung?
Ich benutze GNU Emacs 24.4.1.
quelle
Antworten:
Keine Emacs-Lösung, aber mein LaTeX-Code schreibt Intervalle wie
\halfopen{0}{1}
, woDiese Konvention bringt das Ausgleichsproblem an einen Ort, an dem es unwahrscheinlich ist, dass es Probleme verursacht. Und es ist durchsuchbar :-)
quelle
(0,1]
?\openhalf
hehehe\halfclosed
Die Einrückungsfunktion
latex-indent
vonlatex-mode
setzt die Syntaxtabelle auftex-latex-indent-syntax-table
und ruft auf,latex-find-indent
was wiederum aufruftlatex-backward-sexp-1
.Die Syntax von
?\(
und?\)
ist festgelegt,"."
die für "Interpunktion" steht. Es ist also kein Trennzeichen mehr.Ausdrücke wie
[0,1)
führen daher zu einem,scan-error
inlatex-backward-sexp-1
dem das unerwartete Verhalten auftritt.Sie können dies vermeiden, indem Sie Ihrer Init-Datei Folgendes hinzufügen:
Aber ich kenne die negativen Konsequenzen dieser Einstellung nicht, da ich sie benutze
auctex
. Erwarten Sie also das Schlimmste ;-).quelle