2013-06-11 12 views
7

$'u kullanarak çok sayıda satır içi matematiği el ile düzenlemek için Emacs'i AUCTeX ile birlikte kullanıyorum. Otomatik dolum yaparken (örneğin, M-q ile), Emac'ler genellikle bu matematiksel ortamları okuma akıcılığını bozan konumlarda (ör., Aboneliklerde veya benzerlerinde) kırar.Emacs in TeX inline matematiğinde linebreaking yapmasını önleme

Emacs'e, tüm $…$ ortamını yeni bir satıra koymayı tercih etmenin bir yolu var mı? Daha spesifik olarak, eğer matematikte kırılma olursa, tüm çevre parçalanmayacak yeni bir hatta taşınmalıdır.

Bir örnek:

(add-hook 'LaTeX-mode-hook 
      (lambda() 
      (add-hook 'fill-nobreak-predicate 'my-latex-fill-nobreak))) 

ve sonra eğer olmayan nil döndüren bir işlev my-latex-fill-nobreak tanımlayın:

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed $a^2 + b^2 = c^2$ eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam. 

Sen gibi bir şey yapabilirsiniz

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed 
$a^2 + b^2 = c^2$ eiusmod tempor incidunt ut labore et dolore magna 
aliqua. Ut enim ad minim veniam. 

cevap

5

deneyin: En .emacs ve yeniden emacs'taki

(add-hook 'LaTeX-mode-hook 
      (lambda() 
      (add-to-list 'fill-nobreak-predicate 'texmathp))) 

Yeri onu.

+0

Teşekkürler, bu kadar yakın! Birden çok satıra yayılmış kısa matematik ortamları toplaması güzel bir şey. Bununla birlikte, bu maliyet çok uzun hatların _explicitely_ (yani "M-q" 'a basıldığında açık kırılmaların silinmesi anlamına gelir) kırılamaz. Bunu nasıl dahil edeceğini biliyor musun? (Bu zor olsa da; daha kesin bir şekilde daha kesin bir şekilde ifade edemiyorum.) – Xlea

+1

"Açık molalar" ile ne demek istediğini anladığımdan emin değilim. Eğer sadece 'RET' tuşuna bastığınız metnin konumlarını kastediyorsanız, bunları emacs doldurma işlevleriyle yapılan otomatik satır sonlarından ayırmanın bir yolu yoktur. Ancak, bu satır aralığının 'M-q' ile değiştirilmesini önlemek için bir satırın sonunda '%' yorum sembolünü ekleyebilirsiniz. – mk1

+0

Demek istediğim, eğer uzun matematik (bir satırdan daha uzun) zaten ayrı bir satırda ve (kim tarafından) kesilmişse, o zaman Emacs'i sonraki satırları yukarı çekmek istemiyorum (yani, eğer bir satır soygunu çıkarsa) çok uzun bir çizgi yol açacaktır). Zaten '%' kullanıyorum ama çok uygun değil. – Xlea

1

sonuçlanması gerekiyor Örneğin kısa bir matematik ortamı içinde gibi bir şey:

(defun my-latex-fill-nobreak() 
    (save-excursion 
    (when (search-backward "$" (- (point) 20) t) 
     ;; We found a nearby $. Now let's see if it's an opening $ 
     ;; rather than a closing one. Using font-lock properties is 
     ;; a hack, but it might be good enough. Apparently (texmathp) 
     ;; could be a better choice. 
     (eq (get-text-property (point) 'face) 'font-latex-math-face)))) 
+1

Noktanın matematik modunda olup olmadığını algılamak için 'texmathp' kullanabilirsiniz. – mk1

+0

Bunu ~/.emacs dosyasına eklemeyi denedim, ancak bunun bir etkisi yok gibi görünüyor. – Xlea

+0

Muhtemelen regexp aramada bulunmayan $ nedeniyle. Bunun yerine, regexp olmayan bir arama kullanmak için değiştirdim, bu da sorununuzu çözebilir. – Stefan