J'exporte assez souvent des fichiers en mode org, et presque tous contiennent du code. Lorsque j'exporte du code, cela finit par colorer le texte en fonction de mon thème, cependant, je bascule régulièrement entre un thème sombre et un thème clair. Dans le cas du thème clair, les <code>
blocs doivent avoir un fond clair et pour un thème sombre, ils doivent avoir un fond sombre (sinon je me retrouve avec du texte jaune clair sur fond grisâtre et c'est illisible).
Je dois ajouter cette ligne pour les fonds sombres:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
Et n'oubliez pas de le retirer chaque fois que je passe à un arrière-plan de couleur claire
Existe-t-il un moyen de détecter automatiquement la couleur d'arrière-plan du thème actuel au moment de l'exportation et de l'utiliser dans le CSS HTML exporté?
MODIFIER
Je vais avec la réponse de Jordon (merci Jordon, vous obtenez les points de karma!), Mais je voulais poster la solution que j'ai fini par ajouter à mon code, car c'était une version légèrement modifiée de sa réponse:
(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)
Cela définit non seulement la couleur d'arrière-plan, mais également la couleur de premier plan. Il ajoute également la ligne au org-html-head-extra
paramètre existant afin que tout autre code HTML ne soit pas remplacé accidentellement. J'ai testé et cela fonctionne très bien pour moi!
la source
disable-theme
), je ne veux pas avoir à redémarrer Emacs avec un thème séparé juste pour exporter du HTML, ce que je fais plusieurs fois par jour.org-html-head-extra
est ajouté à, ce qui entraîne une croissance illimitée, bien que la fonctionnalité du style ne soit pas affectée.Réponses:
Tout d'abord, je pense que l'organisation peut utiliser
htmlize
pour colorer automatiquement vos blocs de code source en fonction de votre thème.Alternativement.
Consultez http://definitelyaplug.b0.cx/post/custom-inlined-css-in-org-mode-html-export/ . Il a un excellent exemple de la façon d'utiliser le
org-export-before-processing-hook
pour lancer un CSS personnalisé sur un document d'organisation avant une exportation HTML.Voici le code en cas de panne du site:
Ici, lors d'une exportation html, org recherchera un fichier appelé styles.css dans le répertoire courant ou un fichier par défaut dans le répertoire .emacs.d et injectera ce css dans le document. C'est bien mais pas parfait pour votre cas d'utilisation.
Vous pouvez personnaliser cela de plusieurs manières pour le faire fonctionner comme vous le souhaitez.
Une façon serait de créer manuellement le CSS en fonction de votre thème et de l'insérer.
Voici une version modifiée qui définit l'arrière-plan de
pre.src
la valeur hexadécimale des faces par défaut: propriété background.la source