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!
fonte
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.Respostas:
Primeiro, acredito que a organização pode usar
htmlize
para colorir automaticamente seus blocos de código-fonte de acordo com o seu tema.Alternativamente.
Confira http://definitelyaplug.b0.cx/post/custom-inlined-css-in-org-mode-html-export/ . Ele tem um ótimo exemplo de como usar o
org-export-before-processing-hook
para lançar CSS personalizado em um documento organizacional antes de uma exportação html.Aqui está o código caso o site seja desativado:
Aqui, em uma exportação de html, a organização procurará um arquivo chamado styles.css no diretório atual ou um arquivo padrão no diretório .emacs.d e injetará esse css no documento. Isso é bom, mas não é perfeito para o seu caso de uso.
Você pode personalizá-lo de várias maneiras para fazê-lo funcionar como você gostaria.
Uma maneira seria construir manualmente o css com base no seu tema e inseri-lo.
Aqui está uma versão modificada que define o plano de fundo
pre.src
para o valor hexadecimal das faces padrão: propriedade de plano de fundo.fonte