ฉันส่งออกไฟล์โหมดองค์กรค่อนข้างบ่อยและเกือบทั้งหมดมีรหัสในนั้น เมื่อฉันทำรหัสส่งออกมันจะจบลงด้วยการระบายสีข้อความตามธีมของฉันอย่างไรก็ตามฉันสลับไปมาระหว่างธีมสีเข้มและธีมสีอ่อนเป็นประจำ ในกรณีของชุดรูปแบบแสง<code>
บล็อกต้องมีพื้นหลังสีอ่อนและสำหรับชุดรูปแบบสีเข้มที่พวกเขาจำเป็นต้องมีพื้นหลังสีเข้ม (มิฉะนั้นฉันท้ายด้วยข้อความสีเหลืองอ่อนบนพื้นหลังสีเทาและไม่สามารถอ่านได้)
ฉันต้องเพิ่มบรรทัดนี้สำหรับพื้นหลังสีเข้ม:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
และอย่าลืมลบมันทุกครั้งที่ฉันเปลี่ยนเป็นพื้นหลังสีอ่อน
มีวิธีที่ฉันสามารถตรวจจับสีพื้นหลังของชุดรูปแบบปัจจุบันในเวลาส่งออกโดยอัตโนมัติและใช้ใน CSS ของ HTML ที่ส่งออกหรือไม่
แก้ไข
ฉันจะตอบคำถามของ Jordon (ขอบคุณ Jordon คุณจะได้คะแนน karma!) อย่างไรก็ตามฉันต้องการโพสต์คำตอบที่ฉันเพิ่มลงในรหัสของฉันเนื่องจากเป็นคำตอบที่แก้ไขเล็กน้อย:
(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)
ชุดนี้ไม่เพียง แต่สีพื้นหลัง แต่ยังเป็นสีพื้นหน้า นอกจากนี้ยังเพิ่มบรรทัดต่อไปยังการorg-html-head-extra
ตั้งค่าปัจจุบันเพื่อให้ HTML อื่นไม่ถูกเขียนทับโดยไม่ตั้งใจ ฉันได้ทดสอบแล้วและนี่ใช้งานได้ดีสำหรับฉัน!
disable-theme
) ฉันไม่ต้องการรีสตาร์ท Emacs ด้วยธีมแยกต่างหากเพื่อส่งออก HTML ซึ่งฉันทำวันละหลายครั้ง
org-html-head-extra
จะถูกผนวกเข้าด้วยกันซึ่งนำไปสู่การเติบโตอย่างมากมายแม้ว่าการทำงานของสไตล์จะไม่ด้อยลง