Я експортую файли org-mode досить часто, і майже всі вони мають код у них. Коли я роблю експортний код, він закінчується фарбуванням тексту залежно від моєї теми, однак я регулярно перемикаюся між темною та світлою темою. Що стосується світлої теми, у <code>
блоків має бути світлий фон, а для темної теми - темний фон (інакше я закінчую світло-жовтим текстом на сіруватим тлі, і це не читається).
Мені потрібно додати цей рядок для темних фонів:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
І тоді не забудьте видалити його будь-коли, коли я перейду на світлий колір фону
Чи є спосіб я автоматично визначити колір тла поточної теми під час експорту та використовувати його в експортованому HTML-коді HTML?
EDIT
Я збираюся відповісти Джордону (дякую Джордону, ви отримуєте бали карми!), Однак я хотів опублікувати рішення, яке я в кінцевому підсумку додав до свого коду, оскільки це була трохи змінена версія його відповіді:
(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)
Це встановлює не тільки колір тла, але і колір переднього плану. Він також додає рядок до існуючих org-html-head-extra
налаштувань, щоб інший HTML не був перезаписаний випадково. Я тестував, і це чудово працює для мене!
disable-theme
), я не хочу перезапускати Emacs окремою темою лише для експорту HTML, що я роблю багато разів на день.
org-html-head-extra
додається додавання, що призводить до необмеженого зростання, хоча функціональність стилю не буде порушена.