UP | HOME

为什么用 org-mode 写 blog?

why

最早的时候在自己的机器上搭了个 wordpress 写些乱七八糟的,后来在自己的机器上毕竟不方便,就放弃了。今年初的时候,从阳志平 那里了解到 github、Jekyll、markdown等等,对于用 markdown 写作,用 Jekyll 发布到 github 上面的 blog 产生了兴趣。因此决定一试,其打动我的是:

  • markdown 写作,直接文本写作,不需要管格式,专注内容。和 TeX、wiki 的思想接近
  • github 托管。有版本管理,速度快、时髦

但试了一段时间后又放下了,原因如下:

  • 没有找到好的模版,自己写 css 太费劲,找的几个现成的又不满意
  • 不支持数学公式。本来 Jekyll 是支持的,但 github 上的 Jekyll 不支持
  • 对 markdown 也还是不太满意

为什么转到 org-mode 上了呢?用 emacs 发布 html 的功能早就用过 emacswiki、muse,后来也都放弃掉。org-mode 也早就听说过,但一直没有兴趣用。直到暑假期间,心血来潮,觉得用 emacs 写文档很爽,尤其是文字显式很漂亮。因此就尝试了 org-mode。orgmode 的 GTD 很出色,但我的主要目标是用来写文档。与 markdown 相比,orgmode 的优点有:

  • 与 emacs 集成度高,支持好,开发活跃。能够在 emacs 内输出 html、pdf 等格式
  • 制作 table 方便
  • 能够在 emacs 内显式图片
  • 对 latex 公式支持的好
  • 支持 “文学编程” (orgmode 中叫 Bable),可以直接在文档内部运行程序片段,将结果(文字、图像、表格)嵌入到文档中

既然有这些优点,自然就想把它用到 blog 上。github 上有个 o-blog 是基于 orgmode 的,做得也很漂亮。但试用时总有错误,加上它还是复杂了点,就放弃了,转而直接利用 orgmode 的 publish html 的功能发布 blog。图的就是上面给出的相比markdown的几个优点。

how

参考 worg 的 publishing org-mode files to html 写出我的发布配置:

(require 'org-publish)
(setq org-publish-project-alist
      '(
        ("blog-notes"
         :base-directory "~/org/blog/"
         :base-extension "org"
         :publishing-directory "~/org/dayigu.github.com/"
         :recursive t
         :publishing-function org-publish-org-to-html
         :headline-levels 4
         :section-numbers nil
         :auto-preamble t
         :auto-sitemap t                ; Generate sitemap.org automagically...
         :sitemap-filename "sitemap.org"  ; ... call it sitemap.org (it's the default)...
         :sitemap-title "Sitemap"         ; ... with title 'Sitemap'.
         :author "dayigu"
         :email "dayigu at gmail dot com"
         :style    "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/worg.css\"/>"
         )
        ("blog-static"
         :base-directory "~/org/blog/"
         :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
         :publishing-directory "~/org/dayigu.github.com/"
         :recursive t
         :publishing-function org-publish-attachment
         )
        ("blog" :components ("blog-notes" "blog-static"))
        ;;
        ))

评论直接采用 disqus, 将 disqus 给出的评论代码设置给 html-postamble 。

写的blog post 都放在 ~/org/blog 下,以 ".org" 为文件后缀,图片放在 img 目录下。运行 M-x org-publish-projects, blog, 生成的 html 文件都输出到 ~/org/dayigu.github.com/ 下。

首先要 建立一个 index, 它会生成 blog 的首页,所有的 post list 也放在这里面。post 的链接形式为:

[[file:WhyUseOrgModeToWriteBlog][为什么用 org-mode 写blog?]]

另外直接偷懒用了 worg 的 css .

发布到 github 上,也就是 add、commit 再 push

git add .
git commit -m 'org blog commit'
git push -u origin master
comments powered by Disqus