不赞成使用的答案非常好,但是对我来说效果不佳。我目前使用的是Emacs 24.4和org 8.2.4,建议org-indent-initialize
没有做任何事情。我必须使用更改的缩进字符重新定义该函数,并且可以正常工作。也许当我升级到Emacs 24.5和org 8.3时,建议会起作用。
但是我还必须进行其他一些调整,因为我对不同的标题级别使用了不同大小的可变宽度字体,这意味着1级标题的*
宽度与2级标题的宽度不同,依此类推。
所以我也必须这样做:
- 设置面
org-hide
(用于使标题线缩进)和org-indent
(用于使非标题线缩进)以确保其使用相同字体且具有相同大小。
- 将变量设置
org-indent-boundary-character
为*
而不是默认值
(空格)。这是在缩进字符之后但在内容之前插入的字符。我不确定是否需要更改,但这似乎有助于保持一致性。这可能取决于您使用的字体,大小等。
除了将更改更改org-indent-initialize
为不推荐使用之外,还可以执行这些操作。我最终得到一个看起来像这样的缓冲区:
您会看到,随着标题级别的降低,缩进与标题文本的排列不完全一致。我认为这是因为在较低级别的标题中使用了较小的字体,而且我认为没有简单的方法可以解决此问题。可以使用诸如line-prefix
和的文本属性来执行某些操作wrap-prefix
,因为可以将它们设置为图像和特殊字符,但这可能很复杂且缓慢。如果您对所有标题级别使用相同的字体大小,则可能不会有问题。
无论如何,这可能已经足够了。:)
PS按要求,这是我的org-level
脸。这些是从复制的custom-set-faces
,但是如果您不使用customize
它们,可以在它们之外进行设置。
'(org-level-1 ((t (:inherit variable-pitch :foreground "#cb4b16" :weight bold :height 1.3))))
'(org-level-2 ((t (:inherit variable-pitch :foreground "#859900" :weight bold :height 1.2))))
'(org-level-3 ((t (:inherit variable-pitch :foreground "#268bd2" :weight bold :height 1.15))))
'(org-level-4 ((t (:inherit variable-pitch :foreground "#b58900" :weight bold :height 1.1))))
'(org-level-5 ((t (:inherit variable-pitch :foreground "#2aa198" :weight bold))))
'(org-level-6 ((t (:inherit variable-pitch :foreground "#6c71c4" :weight bold))))
'(org-level-7 ((t (:inherit variable-pitch :foreground "#d33682" :weight bold))))
'(org-level-8 ((t (:inherit variable-pitch :foreground "#dc322f" :weight bold))))