Saya cukup sering mengekspor file mode-org, dan hampir semuanya memiliki kode di dalamnya. Ketika saya melakukan kode ekspor, akhirnya mewarnai teks tergantung pada tema saya, namun, saya beralih antara tema gelap dan tema terang secara teratur. Dalam hal tema terang, <code>
blok harus memiliki latar belakang terang, dan untuk tema gelap mereka harus memiliki latar belakang gelap (jika tidak saya berakhir dengan teks kuning muda pada latar belakang keabu-abuan dan tidak dapat dibaca).
Saya harus menambahkan baris ini untuk latar belakang gelap:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
Dan kemudian ingat untuk menghapusnya setiap kali saya beralih ke latar belakang berwarna terang
Apakah ada cara saya dapat secara otomatis mendeteksi warna latar belakang tema saat ini pada waktu ekspor dan menggunakannya dalam CSS HTML yang diekspor?
EDIT
Saya setuju dengan jawaban Jordon (terima kasih Jordon, Anda mendapatkan poin karma!), Namun saya ingin memposting solusi yang akhirnya saya tambahkan ke kode saya, karena itu adalah versi modifikasi dari jawabannya:
(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)
Ini tidak hanya mengatur warna latar belakang, tetapi juga warna latar depan. Itu juga menambahkan baris ke org-html-head-extra
pengaturan yang ada sehingga HTML lain tidak ditimpa secara tidak sengaja. Saya sudah menguji dan ini bekerja bagus untuk saya!
sumber
disable-theme
), saya tidak ingin harus me-restart Emacs dengan tema terpisah hanya untuk mengekspor HTML, yang saya lakukan berkali-kali sehari.org-html-head-extra
akan ditambahkan ke, menyebabkan pertumbuhan tanpa batas, meskipun fungsi gaya tidak akan terganggu.Jawaban:
Pertama, saya percaya org dapat digunakan
htmlize
untuk secara otomatis mewarnai blok kode sumber Anda sesuai dengan tema Anda.Kalau tidak.
Lihat http://definitelyaplug.b0.cx/post/custom-inlined-css-in-org-mode-html-export/ . Ini memiliki contoh yang bagus tentang bagaimana menggunakan
org-export-before-processing-hook
untuk melemparkan css kustom ke dokumen org sebelum ekspor html.Berikut kode jika situs turun:
Di sini, pada ekspor html, org akan mencari file bernama styles.css di direktori saat ini atau file default di direktori .emacs.d dan menyuntikkan css ke dalam dokumen. Ini bagus tetapi tidak sempurna untuk kasus penggunaan Anda.
Anda dapat menyesuaikan ini dengan beberapa cara untuk membuatnya berfungsi seperti yang Anda inginkan.
Salah satu caranya adalah dengan membangun css secara manual berdasarkan tema Anda dan menyisipkannya.
Berikut adalah versi yang dimodifikasi yang mengatur latar belakang
pre.src
ke nilai hex dari wajah default: properti background.sumber