自从用上 emacs + org + org-roam 之后,一直就想用 org 来做 blog 发布,之前尝试过 hugo 但觉得要引入比较多的 ox-hugo 自身的 meta 标签,不太喜欢,所以一直也没再去折腾。直到最近看到 20,000 Page Static Website Written In Org Mode - YouTube 里 的博主完全用 readtheorg 主题来做, 发现似乎也不错,至少配置足够简单,所以自己照着改了部分颜色就用上了。
这两天看 使用 Emacs 作为万能粘合剂 - #25,来自 twiddling 里的讨论,其中 app launcher/switcher 的部分让我想到过去折腾过的类似工具,正好 blog 也差不多了,于是整理了一篇 用 FZF 作为窗口切换工具 ,同时把以前记的用 python 实现 sicp 里画无限套娃的 picture-langage 笔记也稍微修饰了一下 sicp 中 picture language 的 matplotlib 实现
在 org publish 导出的过程中,一直有几个问题, 我是用脚本 emacs -Q --script publish.el 导出的,配置基本按官方文档里的样式:
(require 'org)
(require 'ox-html)
(require 'htmlize)
(require 'ox-publish)
(load-theme 'tango t)
(setq
org-src-fontify-natively t
python-indent-offset 4
python-indent-guess-indent-offset t
python-indent-guess-indent-offset-verbose nil
org-export-use-babel nil
org-src-preserve-indentation t)
(highlight-indentation-mode -1)
(setq org-html-htmlize-output-type 'css)
(setq org-publish-project-alist
'(("org-posts"
:base-directory "~/org/web/"
:base-extension "org"
:publishing-directory "~/site"
:recursive t
:exclude "\\(header\\|footer\\).org"
:language "zh-CN"
:publishing-function org-html-publish-to-html
:with-author nil ;; Don't include author name
:with-latex t
:html-doctype "html5"
:html-html5-fancy t
)
("org-static"
:base-directory "~/org/web"
:base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
:publishing-directory "~/site"
:recursive t
:publishing-function org-publish-attachment
)
("hugchange" :components ("org-posts" "org-static")))
)
但每次导出似乎不会去读 publish 的 cache, 而是对 web 目录下所有 org 都重新 export, 并且把 static 下的所有图片文件也要重新拷贝一遍。
我在 emacs 内部执行 org-publish 倒会去读 cache (但有的时候更新了 org 内容还是只会去读 cache ,导致不真正执行 export,这也是我换成外部脚本执行的原因)
另外,当前发布的两篇文章里, sicp 这篇大部分是 python 代码,打出的 code block 高亮很稀少,这从以上截图里也可以到,函数名没有高亮,换其他主题也一样,但是在 fzf 篇里基本是 bash 代码块,原本我以为高亮是正常的,但仔细看发现也只有关键字会高亮,只是 bash 脚本里比较多关键字和字符串,视觉上色彩更丰富,现在问题是,如何使得代码高亮能对函数名,变量名或则括号之类的起作用?
补充一下 : 代码框的样式从别的地方抄了,但这不影响内部代码高亮的部分,直接用原始 readtheorg 导出,代码高亮效果也是一样的