组织模式编号列表中的文本对齐方式?


13

问:有没有一种方法可以在org-mode数字列表前添加零?

当数字进入两位数时,编号列表中的文本对齐开始显得不愉快:

* 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!

普通列表org-mode上的手册指出:

属于同一列表的项目的第一行必须具有相同的缩进。特别是,如果有序列表达到数字“ 10.”,则必须将2位数字与列表中的其他数字左对齐。小于或等于缩进其项目符号/编号的下一行之前的项目结束。

因此,看起来org-mode需要数字左对齐。因此,我想知道是否可以在数字项的前面加上零,以使文本很好地对齐:

* 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!

出于好奇,我尝试手动输入列表中的零并点击C-c C-c,从而再次将它们剥离。

因此:有什么方法可以说服org-mode在编号列表中添加零?

(注意:此SO线程启发的问题。)

Answers:


10

以下差异可以解决org-list.el问题!

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

第一个块修补程序的功能org-list-inc-bullet-maybe是保留在第一个项目上使用的填充。第二个块修补程序 org-list-struct-fix-bul用于根据列表中元素的数量来计算填充。


2
真好!如果您可以(最好将其切换)提交给组织模式开发人员,那就太好了。
地毯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.