Çok çizgili denklemleri ve tabloları lateks modda hizalama


12

Diyelim ki Auctex'in lateks modunda bir lateks düzenliyorum ve aşağıdaki denklem var.
Bu sadece girintili indent-region.

\begin{align}
    \phi & = a + b
    + c + d \\
    & = a + b
    + c + d + e
\end{align}

Yukarıdaki hizalama, her şeyi seçip vurursam TAB, yani sadece kullanıyorsam elde ettiğim şeydir indent-region.

Ne almak istiyorum aşağıdaki: & sonra metin ile
nasıl + c + dhizalandığını unutmayın . Aynı "sütun" un bir parçası olduğu için, bu en mantıklı olacaktır .+ c + d= a + b

\begin{align}
    \phi & = a + b
           + c + d \\
         & = a + b
           + c + d + e
\end{align}

Aşağıda ararsam alırım align-current.

\begin{align}
    \phi & = a + b
    + c + d \\
         & = a + b
         + c + d + e
\end{align}

Hangi neredeyse oraya, ama tam olarak değil. Fark açıktır.
Ayrıca, kaldırmaya karar verirseniz \phi, align-currentsadece tuhaf bir şey yapar:

\begin{align}
 & = a + b
    + c + d \\
 & = a + b
         + c + d + e
\end{align}

align-currentİstenen efekti elde etmek için özelleştirebilmemin veya başka bir şey kullanabilmemin bir yolu var mı ?


1
Şu anda bilgisayarımda uygun bir cevap yazamıyorum. Ancak o bölgeyi seçebilir ve align-regexphizalamak istediğiniz karakterlerin normal ifadesini kullanabilir ve sağlayabilirsiniz +|=. Bu karakterlerden bazılarından kaçmanız gerekebilir.
Kaushal Modi

Girdiğiniz normal ifade aslında [+=]. Ama tam olarak istediğini vermeyecek .. &ile birlikte hizalanmayacak +.
Kaushal Modi

Yanıtlar:


6

İstediğiniz sonuç Ekim 2013'ten beri zaten bir AUCTeX özelliğidir . Bu, mevcut sürümde henüz mevcut değildir (11.87). Tek yapmanız gereken bölgeyi işaretlemek ve vurmak TAB. Bkz LaTeX-hanging-ampersand-positiongirinti nasıl uygulandığını için.


Tamam, TAB gerçekten işe yarıyor! Şimdi git deposunu bir pakete nasıl dönüştürebilirim? İyi yüklemeyi başardım. Ama auctex bağlı elpa paketleri var, ve make installgit repo gelen "auctex" paketi tanımlamak gibi görünmüyor bu yüzden diğer paketler başlatmak için başarısız.
Malabarba

(require 'tex-site)make installtamamlandıktan sonra yeterli olmalıdır .
abo-abo

@ abo-abo Bu, auctex'i etkinleştirir, ancak package.el hala benim için görmüyor. Her durumda, Eluc'dan Auctex'i yükleyerek ve sadece -pkgkurulum dizininden dosya dışındaki her şeyi kaldırarak bunu hallettim .
Malabarba

4

Denklemlerinizin \ begin ve \ end arasında herhangi bir boş satıra sahip olmadığınızı varsayarsak, imleciniz \ begin- \ end bölgesinin herhangi bir yerindeyken bu işlevi çağırabilirsiniz.

(defun my/align-latex-eq ()
  "Align the & chars and then align the +/= chars."
  (interactive)
  (backward-paragraph)
  (mark-paragraph)
  ;; align-regexp syntax:  align-regexp (beg end regexp &optional group spacing repeat)
  (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)&" 1 1 nil)
  (mark-paragraph)
  (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)[+=]" 1 1 nil))
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.