Girintiyi kırmadan LaTeX modunda [0,1) nasıl yazabilirim?


9

LaTeX'i kullanarak yazarken latex-mode, genellikle metnime "yarı açık aralıklar" yazmak istiyorum. Örneğin, [0,1)tüm sayılar kümesinin ifade eder xile 0 <= x < 1.

Ne yazık ki, bu "dengesiz sınırlayıcılar" girinti ayrıştırıcısını karıştırıyor gibi görünerek aşağıdaki metnin uygunsuz bir şekilde girintili olmasına ve genellikle sağa doğru sürüklenmesine neden oluyor.

İşte bir örnek belge. Aşağıdaki metin yapıldıktan sonraki sonuçtur C-x h M-x indent-region. Doğru davranış, her iki paragrafın da 0 boşlukla girintili olması olacaktır.

\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}

Şu anda bu konuda çirkin bir hack ile çalışıyorum: Ben hiçbir şeye genişleyen bir LaTeX makro tanımlamak ve bu makro bir çağırma içinde "eşleşen" sınırlayıcıları yazmak. Bu, giriciyi senkronize hale getirir.

\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}

Ama bu gerçekten tatsız. Daha iyi bir çözüm var mı?

GNU Emacs 24.4.1 kullanıyorum.


3
Sorunuzu cevaplamıyor, ancak AUCTeX'i denemeyi düşündünüz mü? Birincisi, bu küçük hatadan muzdarip değil.
giordano

@giordano: Baktım. Varsayılan davranışı istediğimden çok daha ağır. LaTeX kodunu düzenlemeyi tercih ediyorum ve WYSIWYG tarzı editör oluşturma işlemini gerçekten istemiyorum. Belki hepsini kapatmak ve bir metin editörü deneyimi yaşamak mümkündür, ancak yine de AUCTeX'in aşırıya kaçmasına benziyor.
Nate Eldredge

6
Hangi WYSIWYG benzeri davranışlardan bahsediyorsunuz? Yalnızca bu tür özellikler önizleme ve katlama modudur ve bunların hiçbiri varsayılan olarak etkin değildir (AUCTeX'i kullanmak için karşılık gelen paketleri yüklemenize bile gerek yoktur). AUCTeX ve vanilya * TeX modları arasındaki temel fark, makroları ve ortamları yerleştirirken çok üstün bir otomatik tamamlama mekanizmasıdır. Otomatik tamamlamaya değer veriyorsanız AUCTeX gitmenin yoludur. Buna ek olarak, AUCTeX'te her zaman * TeX kodunu düzenlemek zorundasınız, başka olasılık yok, neden bu yanlış izlenime sahip olduğunuzu bilmiyorum.
giordano

Yanıtlar:


7

Bir Emacs çözümü değil, ancak LaTeX kodum \halfopen{0}{1},

\newcommand\halfopen[2]{\ensuremath{[#1,#2)}}

Bu sözleşme, dengeleme sorununu sorun yaratmayacak bir yere itmektedir. Ve aranabilir :-)


2
Ne için kullanıyorsun (0,1]?
Andrew Swann

@ andrew-swann Belki \openhalfhehehe
Dox

@NdrewSwann\halfclosed
Norman Ramsey

2

Girinti işlevi latex-indentait latex-modekümelerine sözdizimi-tablo tex-latex-indent-syntax-tableve aramalar latex-find-indentdönüş çağrıları latex-backward-sexp-1.

Sözdizimi ?\(ve ?\)ayarlandığında ".""noktalama" anlamına gelen. Yani artık bir sınırlayıcı değil.

Bu nedenle, böyle ifadeler [0,1)bir içine sonucu scan-errorin latex-backward-sexp-1hangi beklenmedik davranışlara yol açar.

İnit dosyanıza aşağıdakileri ekleyerek bunu önleyebilirsiniz:

(eval-after-load "tex-mode"
    '(progn (modify-syntax-entry ?\( "()" tex-latex-indent-syntax-table)
             (modify-syntax-entry ?\) ")(" tex-latex-indent-syntax-table)))

Ancak, kullandığımdan beri bu ayarın olumsuz sonuçlarını bilmiyorum auctex. Yani, en kötü ;-) bekliyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.