Diese Frage stellt sich tatsächlich, weil ich nicht-monospaced Schriftarten (Sabon, Minion, Garamond, etc.) verwenden möchte. Dies verursacht ein Problem, wenn der org-indent-Modus verwendet wird, da der Text unter den Überschriften jetzt nicht mit den Überschriften ausgerichtet ist. Beispiel:
Die Schriftart ist Georgia. Nun, wenn ich zu Konsolen wechsle:
Ich denke, das Problem ist, dass in nicht-monospaced Schriftarten das "Leerzeichen" und das * nicht den gleichen Platz einnehmen. Obwohl ich nicht weiß, wie ich das lösen soll. Ich habe im Internet gesucht und konnte kein Tutorial finden, um den Einzug selbst zu optimieren. Ich habe versucht, org-indent.el zu lesen, aber es ist ein langer Weg für mich zu verstehen. Hilfe wird sehr geschätzt!
quelle
org-indent
sind nicht wirklich vorhanden, sondern nurline-prefix
Eigenschaften. Sie können also durch jedes andere Zeichen ersetzt werden, solange es unsichtbar ist.SPC
Zeichen, jedoch mit einer Texteigenschaft (oder Überlagerung), die eine Fläche mit (standardmäßig) monospaced Schriftart auferlegt. Möglicherweise ist eine Org-Erweiterungsanfrage angebracht. ;-)Antworten:
Eine Lösung besteht darin
org-indent-strings
, Sternchen anstelle von Leerzeichen als Einrückungszeichen zu verwenden. Dies bedeutet, dass die Breite der Einrückung auch bei Verwendung einer proportionalen Schriftart immer korrekt ist. Der Trick besteht dann darin, die Vordergrundfarbe der Einrückung auf die gleiche Farbe wie die Hintergrundfarbe festzulegen, sodass die Sterne unsichtbar werden.Wir können dies mit dem folgenden Code erreichen, der die Funktion empfiehlt
org-indent-initialize
:Das Ergebnis sieht für mich unter Mac OS X mit
emacs -Q
und so aus(set-face-font 'default :family "Gill Sans")
:quelle
(concat (make-string (1- i) ?\ )
dem(concat (make-string (1- i) ?*)
bei der Definition ,org-indent-initialize
dh(defun org-indent-initialize...
dann Mx Byte-Kompilierung - Datei verwenden Kompilierung org-indent.el zu org-indent.elc. Dann starte emacs neu.Die Antwort von deprecated ist sehr gut, hat aber bei mir nicht ganz funktioniert. Ich bin derzeit auf Emacs 24.4 und org 8.2.4, und Beratung
org-indent-initialize
hat nichts getan. Ich musste die Funktion mit dem geänderten Einrückungszeichen neu definieren, und das funktionierte. Vielleicht funktioniert die Beratung, wenn ich auf Emacs 24.5 und org 8.3 aktualisiere.Ich musste aber auch einige andere Anpassungen vornehmen, da ich Schriftarten mit variabler Breite und unterschiedlicher Größe für verschiedene Überschriftenebenen verwende, was bedeutet, dass eine Überschrift der Ebene 1
*
nicht die gleiche Breite hat wie eine Überschrift der Ebene 2 und so weiter.Also musste ich das auch machen:
org-hide
(zum Einrücken von Überschriften) undorg-indent
(zum Einrücken von Nicht-Überschriften) so ein, dass sie dieselbe Schriftart mit derselben Größe verwenden.org-indent-boundary-character
auf*
anstelle der Standardeinstellung(ein Leerzeichen). Dies ist das Zeichen, das nach den Einrückungszeichen, jedoch vor dem Inhalt eingefügt wird. Ich bin mir nicht sicher, ob es notwendig ist, dies zu ändern, aber es scheint die Konsistenz zu verbessern. Dies kann von der verwendeten Schriftart, den Größen usw. abhängen.
Diese Dinge zusätzlich dazu zu tun, die Änderung
org-indent-initialize
als veraltet vorausgesetzt vorzunehmen, scheint es getan zu haben. Am Ende habe ich einen Puffer, der so aussieht:Sie können sehen, dass der Einzug mit abnehmender Überschriftenebene nicht perfekt zum Überschriften-Text passt. Ich denke, das liegt an der Verwendung kleinerer Schriftarten für Überschriften auf niedrigerer Ebene, und ich glaube, es gibt keinen einfachen Weg, dies zu beheben. Es könnte möglich sein, etwas mit Texteigenschaften wie
line-prefix
und zu tunwrap-prefix
, da diese auf Bilder und Sonderzeichen gesetzt werden können, aber das wäre wahrscheinlich kompliziert und langsam. Wenn Sie für alle Überschriftenebenen dieselbe Schriftgröße verwenden, ist dies wahrscheinlich kein Problem.Jedenfalls ist das wahrscheinlich gut genug. :)
PS Wie gewünscht, hier sind meine
org-level
Gesichter. Diese werden von kopiertcustom-set-faces
, aber wenn Sie sie nicht verwendencustomize
, können Sie sie außerhalb davon einstellen.quelle
solarized-dark
Theme, das Teil dessolarized-theme
Pakets ist, das Sie von ELPA installieren können. Dieorg-level-*
Gesichter füge ich der obigen Antwort hinzu.org-bullets
Paket. Führenpackage-list-packages
Sie alle Pakete aus, die mit beginnen, und überprüfen Sie sieorg-
. :)Irgendwie konnte ich keine anderen Antworten für mein Setup erhalten, aber die schnellste und einfachste Lösung, die für mich funktioniert hat, war:
Ändern Sie dann einfach das
Font Family
Attribut in Ihre Monospace-Schriftart (in meinem FallIosevka
).Und das ist buchstäblich alles, was Sie tun müssen , da
org-indent
(Fläche für Kontureinzug) automatisch vonorg-hide
(Fläche, die verwendet wird, um führende Sterne in Überschriften auszublenden ) erbt.quelle
Eine viel einfachere Lösung: Drücken Sie im Organisationsmodus
M-:
und führen Sie Folgendes ausMöglicherweise müssen Sie
M-x font-lock-fontify-buffer
danach. Diese Lösung erzwingt einfach die Verwendung einer Monospace-Schriftart für führende Zeichen (Leerzeichen und Sterne).Außerdem möchten Sie "Ubuntu Mono" durch eine Monospace-Schriftart Ihrer Wahl ersetzen.
quelle