cette question se pose en fait parce que j'aime utiliser des polices non espacées, (Sabon, Minion, Garamond, etc.) Cela cause un problème lors de l'utilisation du mode indentation d'organisation, car le texte sous les titres n'est plus aligné avec les titres. Exemple:
La police est Georgia. Maintenant, si je passe aux consoles:
Je pense que le problème est que dans les polices non espacées, "l'espace" et le * ne prennent pas le même espace. Bien que je ne sache pas comment résoudre ce problème. J'ai cherché sur Internet et je n'ai pas trouvé de tutoriel pour affiner moi-même l'indentation. J'ai essayé de lire org-indent.el mais c'est long à comprendre pour moi. L'aide est grandement appréciée!
indentation
fonts
Alex
la source
la source
org-indent
ne sont pas vraiment là, ce ne sont que desline-prefix
propriétés, ils peuvent donc être remplacés par n'importe quel autre caractère tant qu'il est invisible.SPC
caractères mais avec une propriété de texte (ou superposition) qui impose un visage qui (par défaut) a une police à espacement fixe. Peut-être qu'une demande d'amélioration de l'organisation est en règle. ;-)Réponses:
Une solution consiste à modifier
org-indent-strings
pour utiliser des étoiles au lieu d'espaces comme caractère d'indentation. Cela signifie que la largeur de l'indentation sera toujours correcte, même lorsque vous utilisez une police proportionnelle. L'astuce consiste alors à définir la couleur de premier plan de l'indentation pour qu'elle soit la même que la couleur d'arrière-plan, afin que les étoiles deviennent invisibles.Nous pouvons y parvenir avec le code suivant, qui conseille la fonction
org-indent-initialize
:Le résultat ressemble à ceci pour moi sur Mac OS X en utilisant
emacs -Q
et(set-face-font 'default :family "Gill Sans")
:la source
(concat (make-string (1- i) ?\ )
to(concat (make-string (1- i) ?*)
dans la définition deorg-indent-initialize
ie,(defun org-indent-initialize...
puis d'utiliser Mx byte-compile-file pour compiler org-indent.el en org-indent.elc. Redémarrez ensuite emacs.la réponse de obsolète est très bonne, mais cela n'a pas tout à fait fonctionné pour moi. Je suis actuellement sur Emacs 24.4 et org 8.2.4, et conseiller
org-indent-initialize
n'a rien fait. J'ai dû redéfinir la fonction avec le caractère de retrait modifié, et cela a fonctionné. Peut-être que lorsque je passerai à Emacs 24.5 et org 8.3, le conseil fonctionnera.Mais j'ai également dû faire quelques autres ajustements, car j'utilise des polices de taille variable de largeur différente pour différents niveaux de titre, ce qui signifie qu'un titre de niveau 1
*
n'est pas de la même largeur qu'un niveau 2, etc.J'ai donc dû aussi faire ceci:
org-hide
(utilisées pour mettre en retrait les lignes de titre) etorg-indent
(utilisées pour mettre en retrait les lignes sans titre) pour vous assurer qu'elles utilisent la même police à la même taille.org-indent-boundary-character
à la*
place de la valeur par défaut(un espace). Il s'agit du caractère inséré après les caractères d'indentation mais avant le contenu. Je ne sais pas si changer cela est une nécessité, mais cela semble aider à la cohérence. Cela peut dépendre de la police que vous utilisez, des tailles, etc.
Faire ces choses en plus de faire le changement
org-indent-initialize
comme déprécié fourni semble l'avoir fait. Je me retrouve avec un tampon ressemblant à ceci:Vous pouvez voir que, lorsque le niveau du titre diminue, l'indentation ne s'aligne pas parfaitement avec le texte du titre. Je pense que c'est à cause de l'utilisation de polices plus petites pour les titres de bas niveau, et je ne pense pas qu'il existe un moyen facile de résoudre ce problème. Il pourrait être possible de faire quelque chose avec des propriétés de texte comme
line-prefix
etwrap-prefix
, car celles-ci peuvent être définies sur des images et des caractères spéciaux, mais cela serait probablement compliqué et lent. Si vous utilisez la même taille de police pour tous les niveaux de titre, ce ne sera probablement pas un problème.Quoi qu'il en soit, c'est probablement assez bon. :)
PS Comme demandé, voici mes
org-level
visages. Celles-ci sont copiéescustom-set-faces
, mais si vous ne les utilisez pas,customize
vous pouvez les définir en dehors.la source
solarized-dark
thème, qui fait partie dusolarized-theme
package que vous pouvez installer à partir d'ELPA. Quant auxorg-level-*
visages, je les ajouterai à la réponse ci-dessus.org-bullets
paquet. Exécutezpackage-list-packages
et vérifiez tous les packages commençant parorg-
. :)D'une manière ou d'une autre, je n'ai pas pu obtenir les autres réponses pour ma configuration, mais la solution la plus rapide et la plus simple qui a fonctionné pour moi était:
Ensuite, changez simplement l'
Font Family
attribut en votre police monospace (dans mon cas,Iosevka
).Et c'est littéralement tout ce que vous avez à faire , car
org-indent
(face pour l'indentation du contour) hérite automatiquement deorg-hide
(face utilisée pour masquer les étoiles principales dans les titres)la source
Une solution beaucoup plus simple: en mode org, appuyez sur
M-:
et exécutez ce qui suitVous devrez peut-être
M-x font-lock-fontify-buffer
après cela. Cette solution oblige simplement les personnages principaux (espaces et étoiles) à utiliser une police monospace.De plus, vous voudrez remplacer "Ubuntu Mono" par une police monospace de votre choix,
la source