分享个人用 org 发布的 blog ,同时有几个关于 ox-publish 的问题

自从用上 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 导出,代码高亮效果也是一样的

1 个赞