自 org-mode 导出 HTML 代码高亮难看 继续讨论:
Org 默认的导出 HTML 方案采用 htmlize
提供代码高亮,优缺点都有。好在有别的办法获得代码高亮,即使不打算自己实现代码高亮的话,可以用现成的,比如 Pygmentize,Highlight.js 等等。
下面介绍一个刚想到的办法,采用的是 Org 自带的 HTML 导出 (C-c C-e h
) 结合上 Pygmentiz:
-
禁用
htmlize
(setq org-html-htmlize-output-type nil)
-
修改
org-html-src-block
(define-advice org-html-src-block (:override (src-block _contents info) pygmentize) "Highlight src-block via Pygmentize." (let ((lang (org-element-property :language src-block)) (code (org-html-format-code src-block info))) (with-temp-buffer (call-process-region code nil "pygmentize" nil t nil "-l" lang "-f" "html") (buffer-string))))
-
在 Org 中加入 Pygmentize 的 CSS
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://rawgit.com/richleland/pygments-css/master/default.css" />
Pygmentize 也支持 LaTeX,估计用类似的方法在 PDF 中得到高亮。