Eu exporto arquivos no modo organizacional com bastante frequência e quase todos eles possuem código. Quando exporto código, ele acaba colorindo o texto, dependendo do meu tema, no entanto, alterno regularmente entre um tema escuro e um claro. No caso do tema claro, os <code>
blocos precisam ter um fundo claro e, para um tema escuro, precisam ter um fundo escuro (caso contrário, acabo com texto amarelo claro em um fundo acinzentado e é ilegível).
Eu tenho que adicionar esta linha para fundos escuros:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
E lembre-se de removê-lo sempre que eu mudar para um fundo de cor clara
Existe uma maneira de detectar automaticamente a cor de fundo do tema atual no momento da exportação e usá-la no CSS do HTML exportado?
EDITAR
Eu vou com a resposta de Jordon (obrigado Jordon, você recebe os pontos de karma!), No entanto, eu queria postar a solução que acabei adicionando ao meu código, pois era uma versão ligeiramente modificada de sua resposta:
(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)
Isso define não apenas a cor do plano de fundo, mas também a cor do primeiro plano. Ele também anexa a linha à org-html-head-extra
configuração existente para que outro HTML não seja substituído acidentalmente. Eu testei e isso funciona muito bem para mim!
disable-theme
), não quero ter que reiniciar o Emacs com um tema separado apenas para exportar HTML, o que faço muitas vezes por dia.
org-html-head-extra
é anexada, levando a um crescimento ilimitado, embora a funcionalidade do estilo não seja prejudicada.