Ich exportiere sehr oft Dateien im Organisationsmodus und fast alle enthalten Code. Wenn ich Code exportiere, färbt er den Text in Abhängigkeit von meinem Thema. Ich wechsle jedoch regelmäßig zwischen einem dunklen und einem hellen Thema. Im Fall des hellen Themas müssen die <code>
Blöcke einen hellen Hintergrund haben, und für ein dunkles Thema müssen sie einen dunklen Hintergrund haben (andernfalls erhalte ich hellgelben Text auf einem grauen Hintergrund und er ist nicht lesbar).
Ich muss diese Zeile für dunkle Hintergründe hinzufügen:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
Und denken Sie daran, es zu entfernen, wenn ich auf einen hellen Hintergrund wechsle
Gibt es eine Möglichkeit, die Hintergrundfarbe des aktuellen Designs beim Export automatisch zu erkennen und im CSS des exportierten HTML zu verwenden?
BEARBEITEN
Ich gehe mit Jordons Antwort (danke Jordon, du bekommst die Karma-Punkte!), Aber ich wollte die Lösung posten, die ich meinem Code hinzugefügt habe, da es sich um eine leicht modifizierte Version seiner Antwort handelte:
(defun my/org-inline-css-hook (exporter)
"Insert custom inline css to automatically set the
background of code to whatever theme I'm using's background"
(when (eq exporter 'html)
(let* ((my-pre-bg (face-background 'default))
(my-pre-fg (face-foreground 'default)))
(setq
org-html-head-extra
(concat
org-html-head-extra
(format "<style type=\"text/css\">\n pre.src {background-color: %s; color: %s;}</style>\n"
my-pre-bg my-pre-fg))))))
(add-hook 'org-export-before-processing-hook 'my/org-inline-css-hook)
Dies legt nicht nur die Hintergrundfarbe, sondern auch die Vordergrundfarbe fest. Außerdem wird die Zeile an die vorhandene org-html-head-extra
Einstellung angehängt , damit kein anderer HTML- Code versehentlich überschrieben wird. Ich habe getestet und das funktioniert großartig für mich!
quelle
disable-theme
), möchte ich Emacs nicht mit einem separaten Thema neu starten müssen, nur um HTML zu exportieren, was ich mehrmals am Tag mache.org-html-head-extra
angehängt, was zu einem unbegrenzten Wachstum führt, obwohl die Funktionalität des Stils nicht beeinträchtigt wird.Antworten:
Erstens glaube ich, dass org verwenden kann,
htmlize
um Ihre Quellcodeblöcke automatisch gemäß Ihrem Thema einzufärben.Alternative.
Schauen Sie sich http://definitelyaplug.b0.cx/post/custom-inlined-css-in-org-mode-html-export/ an . Es enthält ein hervorragendes Beispiel für die Verwendung
org-export-before-processing-hook
von, um benutzerdefiniertes CSS vor einem HTML-Export auf ein Organisationsdokument zu werfen.Hier ist der Code für den Fall, dass die Website ausfällt:
Hier sucht org bei einem HTML-Export nach einer Datei namens styles.css im aktuellen Verzeichnis oder nach einer Standarddatei im Verzeichnis .emacs.d und fügt diese CSS in das Dokument ein. Das ist schön, aber nicht perfekt für Ihren Anwendungsfall.
Sie können dies auf verschiedene Arten anpassen, damit es nach Ihren Wünschen funktioniert.
Eine Möglichkeit wäre, die CSS manuell basierend auf Ihrem Thema zu erstellen und diese einzufügen.
Hier ist eine modifizierte Version, die den Hintergrund
pre.src
auf den Hexadezimalwert der Standardgesichter einstellt : background-Eigenschaft.quelle