Exporte archivos de modo org con bastante frecuencia, y casi todos tienen código. Cuando exporto código, termina coloreando el texto dependiendo de mi tema, sin embargo, cambio regularmente entre un tema oscuro y uno claro. En el caso del tema claro, los <code>
bloques deben tener un fondo claro, y para un tema oscuro deben tener un fondo oscuro (de lo contrario, termino con un texto amarillo claro sobre un fondo grisáceo y es ilegible).
Tengo que agregar esta línea para fondos oscuros:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
Y luego recuerde eliminarlo cada vez que cambie a un fondo de color claro
¿Hay alguna forma en que pueda detectar automáticamente el color de fondo del tema actual en el momento de la exportación y usarlo en el CSS del HTML exportado?
EDITAR
Voy con la respuesta de Jordon (¡gracias Jordon, obtienes los puntos de karma!), Sin embargo, quería publicar la solución que terminé agregando a mi código, ya que era una versión ligeramente modificada de su respuesta:
(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)
Esto establece no solo el color de fondo, sino también el color de primer plano. También agrega la línea a la org-html-head-extra
configuración existente para que otro HTML no se sobrescriba accidentalmente. ¡Lo he probado y esto funciona muy bien para mí!
disable-theme
), no quiero tener que reiniciar Emacs con un tema separado solo para exportar HTML, lo que hago muchas veces al día.
org-html-head-extra
se agrega, lo que lleva a un crecimiento ilimitado, aunque la funcionalidad del estilo no se verá afectada.