08 March 2014

github page的默认支持markdown作为轻量级标记语言,但是作为已经使用org mode的emacs用户来说,如果能直接将自己的org文件生成github page无疑是最方便的。幸运的是,想要这样做并不复杂。

使用jekyllbootstrap

我选择 jekyllbootstrap 作为基础模板,主要是因为两个原因

  1. 我不需要太了解jekyll(我几乎完全不了解)
  2. 集成了bootstrap模板和一些评论组件,甚至google analysis接口也可以方便地配置,自己只需要写org文件就行了!

配置emacs和org-mode

首先我们需要配置你的 .emacs 文件,主要作用是

  • 使得从org文件导出的html符合github page的规范
  • 指定org文件存放的地址和生成html的地址
  • 其他个人偏好(例如是否需要段落编号和toc等)
;; org-mode for github-page
(require 'ox-html)
(setq org-publish-project-alist
      '(("org-github"
         ;; Path to your org files.
         :base-directory "/home/zhichu/Github_Page/org_files/_posts/"
         :base-extension "org"
         ;; Path to your Jekyll project.
         :publishing-directory "/home/zhichu/Github_Page/linzhichu.github.io/_posts/"
         :recursive t
         ;; this is for org-mode version 8 and on
         :publishing-function org-html-publish-to-html
         :headline-levels 4
         :section-numbers nil
         :with-toc nil
         :html-extension "html"
         :body-only t ;; Only export section between <body> </body> (body-only)
         )
        ("org-static-github"
         :base-directory "/home/zhichu/Github_Page/org_files/"
         :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|php"
         :publishing-directory "/home/zhichu/Github_Page/linzhichu.github.io/"
         :recursive t
         :publishing-function org-publish-attachment)

        ("blog" :components ("org-github" "org-static-github"))
        ))

从org文件生成可以发布于github page的html文件

现在 C-x C-e X p blog 导出html,然后 git push 到你的 username.github.io 的repo,应该就能看到你的github page了。

如果想让你的代码块更加好看,也非常简单,在你的 .emacs 文件中做如下修改

(require 'htmlize)
(setq org-publish-project-alist
      '(("org-github"
;; add this
:htmlized-source t


blog comments powered by Disqus