Căn chỉnh văn bản trong danh sách đánh số chế độ org?


13

Q: Có cách nào để thêm số không vào org-modedanh sách được đánh số không?

Căn chỉnh văn bản trong danh sách được đánh số bắt đầu trông khó chịu khi số được nhập vào hai chữ số:

* A numbered list

  1. Item 1
  2. Item 2
  3. Item 3
  4. Item 4
  5. Item 5
  6. Item 6
  7. Item 7
  8. Item 8
  9. Item 9
  10. Item 10   # ah, my eyes!

Các org-modehướng dẫn về danh sách đơn giản nói rằng:

Các mục thuộc cùng một danh sách phải có cùng một vết lõm trên dòng đầu tiên. Cụ thể, nếu danh sách theo thứ tự đạt đến số '10. ', Thì các số 2 chữ số phải được viết trái với các số khác trong danh sách. Một mục kết thúc trước dòng tiếp theo ít hơn hoặc bằng nhau so với dấu / số của nó.

Vì vậy, có vẻ như org-modecần các chữ số để căn trái. Do đó, tôi tự hỏi liệu có thể thêm số không vào các mục có một chữ số để văn bản được căn chỉnh độc đáo không:

* A zero-padded numbered list

  01. Item 1
  02. Item 2
  03. Item 3
  04. Item 4
  05. Item 5
  06. Item 6
  07. Item 7
  08. Item 8
  09. Item 9
  10. Item 10   # much better!

Vì tò mò, tôi đã thử nhập số không vào một danh sách và đánh C-c C-c, chỉ đơn giản là loại bỏ chúng một lần nữa.

Vậy: có cách nào để thuyết phục org-modetrả trước các số không trong danh sách được đánh số không?

(Lưu ý: câu hỏi lấy cảm hứng từ chủ đề SO này .)

Câu trả lời:


10

Các khác biệt sau đây trên org-list.ellừa!

diff --git a/lisp/org-list.el b/lisp/org-list.el
index b1d47c9..509e79f 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -1641,7 +1641,8 @@ as returned by `org-list-prevs-alist'."
      ;; Num bullet: increment it.
      ((string-match "[0-9]+" bullet)
       (replace-match
-       (number-to-string (1+ (string-to-number (match-string 0 bullet))))
+       (format (format "%%0%dd" (length (match-string 0 bullet)))
+          (1+ (string-to-number (match-string 0 bullet))))
        nil nil bullet))
      ;; Alpha bullet: increment it.
      ((string-match "[A-Za-z]" bullet)
@@ -1715,7 +1716,7 @@ This function modifies STRUCT."
          (replace-match "a" nil nil bullet))
         ;; First bullet is num: use "1".
         ((string-match "\\([0-9]+\\|[A-Za-z]\\)" bullet)
-         (replace-match "1" nil nil bullet))
+         (replace-match (format (format "%%0%dd" (1+ (log (length struct) 10))) 1) nil nil bullet))
         ;; Not an ordered list: keep bullet.
         (t bullet)))))))))
     (mapc fix-bul (mapcar 'car struct))))

Các miếng vá chunk đầu tiên có chức năng org-list-inc-bullet-maybegiữ cho phần đệm được sử dụng trên mục đầu tiên. Hàm chunk patch thứ hai có chức năng org-list-struct-fix-bultính toán phần đệm dựa trên số phần tử trong danh sách.


2
Đẹp! Sẽ thật tuyệt nếu bạn có thể gửi nó (tốt nhất là với tùy chọn chuyển đổi nó) cho các nhà phát triển chế độ org.
Saint Aardvark trải thảm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.