ฉันสามารถอนุญาตให้เครื่องหมายวรรคตอนเรียกใช้คอลัมน์เติมที่ผ่านมาได้หรือไม่


12

ในวิชาการพิมพ์มีการฝึกที่เรียกว่า 'การยื่นออกมา' (หรือเครื่องหมายวรรคตอนที่แขวนอยู่ ) ที่อนุญาตให้สัญลักษณ์บางอย่างแขวนอยู่ที่ส่วนท้ายของระยะขอบ:

ติ่ง

ฉันต้องการทำสิ่งเดียวกันสำหรับเอกสารข้อความของฉัน

ฉันสามารถเปลี่ยนfill-paragraph(และเพื่อน ๆ ) เพื่อละเว้นเครื่องหมายวรรคตอนท้ายบรรทัด ( .?!:;,'"-) เมื่อเติมย่อหน้าหรือไม่


ฉันไม่แน่ใจว่าคุณสามารถเรียกการยื่นออกมาได้หรือไม่ (การเปลี่ยนเครื่องหมายวรรคตอนที่ละเอียดอ่อน) ของข้อความที่ถูกต้องเทียบเคียงได้กับการละเว้นเครื่องหมายวรรคตอนต่อท้ายเมื่อข้อความที่ตัดคำยาก (ซึ่งไม่ได้ปรับข้อความเป็นค่าเริ่มต้น บางทีคุณต้องการที่จะเพิ่มว่าสิ่งนี้นำไปใช้กับตัวแปรที่เหมาะสมของfill-paragraph?
wasamasa

@wasamasa Protrusion ยังคงมีอยู่สำหรับบล็อกข้อความด้านซ้าย
ฌอน Allred

มันใช้กับขอบด้านซ้ายของข้อความหรือไม่?
wasamasa

@wasamasa เว้นเสียแต่ว่าคุณจะจัดการกับภาษา RTL และเครื่องมือแก้ไข (ซึ่งในขณะที่รองรับฉันรู้สึกว่าอยู่นอกขอบเขต) มันไม่สมเหตุสมผล หากคุณมีบล็อกด้านขวาฟลัชและ 'ห้องหมด' ที่ระยะขอบด้านซ้าย (เช่นคอลัมน์ 0) คุณจะไม่สามารถใส่เครื่องหมายวรรคตอนในคอลัมน์ -1 ได้ (ฉันคิดว่าคุณสามารถเปลี่ยนระยะขอบด้านขวาเป็น (1+ คอลัมน์เติม) แต่นั่นจะเปลี่ยนการเติมและคุณอาจถูกจับเป็นวง)
Sean Allred

1
@wasamasa ในแง่ของการใช้งาน: จนเต็ม ข้ามไปที่คอลัมน์เติม หากจุดมองที่เครื่องหมายวรรคตอนเดียวและช่องว่างให้ข้ามไปข้างหน้า มิฉะนั้นหากอยู่กลางคำให้ข้ามไปข้างหลัง ขึ้นบรรทัดใหม่ทำซ้ำ
ฌอน Allred

คำตอบ:


2

อ้าฉันมีทางออก! วางสิ่งนี้ไว้ใน.emacs/ .emacs.d/init.elไฟล์ของคุณ:

(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)))

ฉันได้ทดสอบสิ่งนี้ด้วยfill-paragraphและมันควรจะใช้ได้กับทุกฟังก์ชั่นการเติม (เพราะทั้งหมดใช้current-fill-columnเมื่อประมวลผลแต่ละบรรทัด) ฉันหวังว่าคุณจะชอบมัน! 😇

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.