Tôi xuất các tệp chế độ org khá thường xuyên và hầu như tất cả chúng đều có mã trong đó. Khi tôi thực hiện xuất mã, nó sẽ tô màu văn bản tùy thuộc vào chủ đề của tôi, tuy nhiên, tôi thường xuyên chuyển đổi giữa một chủ đề tối và một chủ đề sáng. Trong trường hợp chủ đề ánh sáng, các <code>
khối cần phải có nền sáng và đối với chủ đề tối, chúng cần có nền tối (nếu không, tôi kết thúc bằng văn bản màu vàng nhạt trên nền màu xám và không thể đọc được).
Tôi phải thêm dòng này cho nền tối:
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
Và sau đó nhớ xóa nó bất cứ khi nào tôi chuyển sang nền màu sáng
Có cách nào để tôi có thể tự động phát hiện màu nền của chủ đề hiện tại khi xuất và sử dụng nó trong CSS của HTML đã xuất không?
CHỈNH SỬA
Tôi đang đi với câu trả lời của Jordon (cảm ơn Jordon, bạn sẽ nhận được điểm nghiệp chướng!), Tuy nhiên tôi muốn đăng giải pháp mà cuối cùng tôi đã thêm vào mã của mình, vì đó là phiên bản sửa đổi một chút của câu trả lời của anh ấy:
(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)
Bộ này không chỉ đặt màu nền mà còn cả màu nền trước. Nó cũng nối thêm dòng vào org-html-head-extra
cài đặt hiện có để các HTML khác không bị ghi đè một cách tình cờ. Tôi đã thử nghiệm và điều này làm việc rất tốt cho tôi!
disable-theme
), tôi không muốn phải khởi động lại Emacs với một chủ đề riêng chỉ để xuất HTML, mà tôi làm nhiều lần trong ngày.
org-html-head-extra
sẽ được thêm vào, dẫn đến tăng trưởng không giới hạn, mặc dù chức năng của phong cách sẽ không bị suy giảm.