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!
źródło
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.Odpowiedzi:
Po pierwsze, wierzę, że org może użyć
htmlize
do automatycznego pokolorowania bloków kodu źródłowego zgodnie z twoim motywem.Alternatywnie.
Sprawdź http://definitelyaplug.b0.cx/post/custom-inlined-css-in-org-mode-html-export/ . Ma świetny przykład użycia w
org-export-before-processing-hook
celu rzucenia niestandardowego css na dokument organizacji przed eksportem HTML.Oto kod na wypadek awarii strony:
Podczas eksportu html organizacja szuka pliku o nazwie styles.css w bieżącym katalogu lub pliku domyślnego w katalogu .emacs.d i wstrzykuje ten plik css do dokumentu. To jest miłe, ale nie idealne do twojego przypadku użycia.
Możesz to dostosować na kilka sposobów, aby działało tak, jak chcesz.
Jednym ze sposobów byłoby ręczne zbudowanie css na podstawie motywu i wstawienie go.
Oto zmodyfikowana wersja, która ustawia tło
pre.src
wartości szesnastkowej domyślnych właściwości face: background.źródło