조직 모드 파일을 자주 내보내고 거의 모든 파일에 코드가 있습니다. 코드를 내 보내면 테마에 따라 텍스트가 색칠되지만 어두운 테마와 밝은 테마를 정기적으로 전환합니다. 밝은 테마의 경우 <code>
블록에 밝은 배경이 필요하고 어두운 테마의 경우 어두운 배경이 있어야합니다 (그렇지 않으면 회색 배경에 밝은 노란색 텍스트가 표시되어 읽을 수 없습니다).
어두운 배경에는이 줄을 추가해야합니다.
#+HTML_HEAD: <style>pre.src {background-color: #303030; color: #e5e5e5;}</style>
밝은 색상의 배경으로 전환 할 때마다 제거해야합니다.
내보낼 때 현재 테마의 배경색을 자동으로 감지하여 내 보낸 HTML의 CSS에서 사용할 수있는 방법이 있습니까?
편집하다
나는 Jordon의 대답으로 가고 있습니다 (Jordon, 당신은 카르마 포인트를 얻습니다!). 그러나 나는 그의 대답의 약간 수정 된 버전이기 때문에 코드에 추가 한 솔루션을 게시하고 싶었습니다.
(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
하루에 여러 번 HTML을 내보내기 위해 별도의 테마로 Emacs를 다시 시작하고 싶지 않습니다.
org-html-head-extra
스타일의 기능이 손상되지는 않지만 무한한 성장으로 이어집니다.