этот вопрос на самом деле возникает, потому что мне нравится использовать немоноширинные шрифты (Sabon, Minion, Garamond и т. д.). Это вызывает проблему при использовании org-indent-mode, поскольку текст под заголовками теперь не выравнивается по заголовкам. Пример:
Шрифт Грузия. Теперь, если я перейду на консоль
Я думаю, что проблема заключается в том, что в немонокальных шрифтах «пробел» и «*» не занимают одно и то же место. Хотя я не знаю, как это решить. Я искал в Интернете и не мог найти учебник, чтобы точно настроить отступы самостоятельно. Я пытался прочитать org-indent.el, но мне еще далеко до понимания. Помощь очень ценится!
indentation
fonts
Alex
источник
источник
org-indent
самом деле не существуют, это простоline-prefix
свойства, поэтому их можно заменить любым другим символом, если он невидим.SPC
символы, но со свойством text (или overlay), которое накладывает грань, которая (по умолчанию) имеет моноширинный шрифт. Может быть, запрос на улучшение Org в порядке. ;-)Ответы:
Одно из решений состоит в том,
org-indent-strings
чтобы использовать символы звездочки вместо пробелов в качестве отступа. Это означает, что ширина отступа всегда будет правильной, даже при использовании пропорционального шрифта. Хитрость заключается в том, чтобы установить цвет переднего плана отступа таким же, как цвет фона, чтобы звезды стали невидимыми.Мы можем достичь этого с помощью следующего кода, который рекомендует функцию
org-indent-initialize
:Результат выглядит так для меня на Mac OS X с использованием
emacs -Q
и(set-face-font 'default :family "Gill Sans")
:источник
(concat (make-string (1- i) ?\ )
чтобы(concat (make-string (1- i) ?*)
в определенииorg-indent-initialize
т.е.(defun org-indent-initialize...
используйте Mx байты-компиляцию файл компиляция орг-indent.el к орг-indent.elc. Затем перезапустите Emacs.Отрицательный ответ очень хорош, но у меня это не сработало. Я в настоящее время на 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
вы можете установить их за ее пределами.источник
solarized-dark
тему, которая является частьюsolarized-theme
пакета, который вы можете установить из ELPA. Что касаетсяorg-level-*
лиц, я добавлю их в ответ выше.org-bullets
пакета. Запуститеpackage-list-packages
и проверьте все пакеты, начиная сorg-
. :)Каким-то образом я не мог заставить другие ответы работать для моей установки, но самое быстрое и простое исправление, которое сработало для меня, было:
Затем просто измените
Font Family
атрибут на ваш моноширинный шрифт (в моем случае,Iosevka
).И это буквально все, что вам нужно сделать , поскольку
org-indent
(лицо для отступа в плане) автоматически наследуется отorg-hide
(лицо, используемое для скрытия ведущих звезд в заголовках)источник
Гораздо более простое решение: в режиме org нажмите
M-:
и запуститеВам может понадобиться
M-x font-lock-fontify-buffer
после этого. Это решение просто заставляет ведущих персонажей (пробелы и звезды) использовать моноширинный шрифт.Кроме того, вы захотите заменить «Ubuntu Mono» моноширинным шрифтом на ваш выбор,
источник