Saat menulis LaTeX menggunakan latex-mode
, saya sering ingin menulis "interval setengah terbuka" dalam teks saya. Misalnya,, [0,1)
yang mengacu pada himpunan semua angka x
dengan 0 <= x < 1
.
Sayangnya, "pembatas tidak seimbang" ini tampaknya membingungkan pengurai indentasi, menyebabkan teks berikut ini indentasi tidak tepat, biasanya melayang ke kanan.
Ini contoh dokumen. Teks di bawah ini adalah hasil setelah melakukan C-x h M-x indent-region
. Perilaku yang benar adalah memiliki semua paragraf kedua indentasi dengan 0 spasi.
\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}
Saat ini saya sedang mengatasinya dengan hack jelek: Saya mendefinisikan makro LaTeX yang tidak berkembang, dan menulis pembatas "cocok" di dalam doa makro ini. Ini membuat indentor kembali sinkron.
\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}
Tetapi ini benar-benar tidak menyenangkan. Apakah ada solusi yang lebih baik?
Saya menggunakan GNU Emacs 24.4.1.
sumber
Jawaban:
Bukan solusi Emacs, tetapi kode LaTeX saya menulis interval seperti di
\halfopen{0}{1}
manaKonvensi ini mendorong masalah keseimbangan ke tempat yang tidak mungkin menimbulkan masalah. Dan itu bisa dicari :-)
sumber
(0,1]
?\openhalf
hehehe\halfclosed
Fungsi lekukan
latex-indent
darilatex-mode
set sintaks-meja ketex-latex-indent-syntax-table
dan panggilanlatex-find-indent
yang pada panggilan gilirannyalatex-backward-sexp-1
.Sintaksis
?\(
dan?\)
diatur ke"."
yang merupakan singkatan dari "tanda baca". Jadi tidak lagi pembatas.Oleh karena itu, ekspresi seperti
[0,1)
hasil kescan-error
dalamlatex-backward-sexp-1
yang mengarah pada perilaku yang tidak terduga.Anda dapat menghindari ini dengan menambahkan berikut ini ke file init Anda:
Tapi, saya tidak tahu konsekuensi negatif dari pengaturan ini sejak saya gunakan
auctex
. Jadi, harapkan yang terburuk ;-).sumber