Alignement du texte dans les listes numérotées en mode organisation?


13

Q: Existe - t-il un moyen d'ajouter des zéros aux org-modelistes numérotées?

L'alignement du texte dans les listes numérotées commence à paraître désagréable lorsque les nombres entrent dans les deux chiffres:

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

Le org-modemanuel sur les listes simples indique que:

Les éléments appartenant à la même liste doivent avoir la même indentation sur la première ligne. En particulier, si une liste ordonnée atteint le numéro «10», les numéros à 2 chiffres doivent être écrits alignés à gauche avec les autres numéros de la liste. Un élément se termine avant la ligne suivante qui est moins ou également en retrait que sa puce / numéro.

Il semble donc que org-modeles chiffres doivent être alignés à gauche. En tant que tel, je me demande s'il est possible d'ajouter des zéros aux éléments à un chiffre afin que le texte s'aligne bien:

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

Par curiosité, j'ai essayé d'entrer manuellement les zéros dans une liste et de les frapper C-c C-c, ce qui les a simplement supprimés à nouveau.

Donc: existe-t-il un moyen de convaincre org-moded'ajouter des zéros dans les listes numérotées?

(Remarque: question inspirée de ce fil SO .)

Réponses:


10

Le diff suivant org-list.elfait l'affaire!

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

Les premiers patchs fonctionnels org-list-inc-bullet-maybeconservent le rembourrage utilisé sur le premier élément. La seconde fonction de patchs de blocs permet org-list-struct-fix-bulde calculer le remplissage en fonction du nombre d'éléments dans la liste.


2
Agréable! Ce serait formidable si vous pouviez soumettre cela (de préférence avec une option pour le basculer) aux développeurs en mode org.
Saint Aardvark le Moquette
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.