Noktalama işaretlerinin dolgu sütunundan geçmesine izin verebilir miyim?


12

Tipografide, belirli sembollerin kenar boşluğunun sonundan çıkmasına izin veren 'çıkıntı' (veya asılı noktalama işaretleri ) adı verilen bir uygulama vardır :

çıkıntı

Aynı şeyi metin belgelerim için de yapmak istiyorum.

Paragrafı doldururken fill-paragraphsatır sonu noktalama işaretlerini ( .?!:;,'"-) yok saymak için değiştirebilir miyim (ve arkadaşlarım?) ?


Gerçekten metin kaydırırken (varsayılan olarak metni haklı göstermez, efekti görünmez kılar) sondaki noktalama işaretlerini yoksaymaya benzer bir haklı metnin çıkıntısını (son noktalama işaretlerinin hafifçe kayması) çağırabileceğinizden emin değilim. Belki de bunun gerekçeli varyantı için geçerli olduğunu eklemek ister misiniz fill-paragraph?
wasamasa

@wasamasa Sol hizalı metin blokları için hala çıkıntı var.
Sean Allred

O zaman metnin sol kenarı için geçerli mi?
wasamasa

@wasamasa Bir RTL dili ve editörü ile uğraşmadıkça (desteklenirken kapsam dışında olduğumu hissediyorum), bu mantıklı değil. Gömme sağ bloğunuz varsa ve sol kenar boşluğunda (yani sütun 0) 'oda kalmadıysa', noktalama işaretini tam olarak -1 sütununa koyamazsınız. (Sanırım doğru marjı (1+ dolgu sütunu) olarak değiştirebilirsin, ancak bu dolguyu değiştirir ve bir döngüye yakalanabilirsin.)
Sean Allred

1
@wasamasa Uygulama açısından: doldurun. dolgu sütununa atla. nokta tek bir noktalama işaretine ve sonra boşluk karakterine bakıyorsa, ileri atlayın. başka bir kelimenin ortasındaysa, geriye atlayın. yeni satır, tekrar.
Sean Allred

Yanıtlar:


2

Aha, benim çözümüm var! Bunu .emacs/ .emacs.d/init.eldosyanıza bir yere koyun :

(define-advice current-fill-column (:filter-return (rtn) protrusion)
  "Advice to allow hanging punctuation when filling text."
  ;; Get the character after the proposed cutoff point
  (let ((end-char (char-after (1+ rtn))))
    (if (and end-char
             ;; Check if character is in the “punctuation” syntax table…
             (or (eq (char-syntax end-char) ?.)
                 ;; …or is any of these characters (feel free to add more)
                 (memq end-char (string-to-list ".,!?;:-"))))
        ;; If so, return the original value, plus one.
        (1+ rtn)
      ;; Otherwise, do nothing and return the original value.
      rtn)))

Bunu ile test ettim fill-paragraphve tüm doldurma işlevleri için çalışmalıdır (çünkü current-fill-columnher bir satırı işlerken hepsi kullanılır ). Umarım beğenmişsindir! 😇

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.