Często eksportuję pliki w trybie organizacji i prawie wszystkie zawierają kod. Kiedy eksportuję kod, kolorowanie tekstu kończy się w zależności od mojego motywu, jednak regularnie przełączam między ciemnym motywem a jasnym motywem. W przypadku jasnego motywu <code>
bloki muszą mieć jasne tło, a w przypadku ciemnego motywu muszą mieć ciemne tło (w przeciwnym razie otrzymam jasnożółty tekst na szarym tle i jest nieczytelny).
Muszę dodać tę linię do ciemnego tła:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
A potem pamiętaj, aby go usunąć za każdym razem, gdy przełączam na jasne tło
Czy istnieje sposób, w jaki mogę automatycznie wykryć kolor tła bieżącego motywu podczas eksportu i użyć go w CSS wyeksportowanego HTML?
EDYTOWAĆ
Idę z odpowiedzią Jordona (dzięki Jordon, dostajesz punkty karmy!), Ale chciałem opublikować rozwiązanie, które ostatecznie dodałem do mojego kodu, ponieważ była to nieco zmodyfikowana wersja jego odpowiedzi:
(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)
To ustawia nie tylko kolor tła, ale także kolor pierwszego planu. Dołącza również linię do istniejącego org-html-head-extra
ustawienia, aby inne pliki HTML nie zostały przypadkowo zastąpione. Przetestowałem i to działa świetnie dla mnie!
disable-theme
), nie chcę ponownie uruchamiać Emacsa z osobnym motywem, aby wyeksportować HTML, co robię wiele razy dziennie.
org-html-head-extra
się do niego, co prowadzi do nieograniczonego wzrostu, chociaż funkcjonalność stylu nie zostanie naruszona.