UP | HOME

目录

使用 Orgmode 写博客

最近又重回到 emacs 了,试过 Hexohugo 这两个静态博客,也比较主流。但在尝试各种 GTD 工具后,最后还是觉得 emacsorgmode 最好。所以,索性将写博客的习惯也改为用 orgmode 来写了

使用 org-publish-project

我使用的是 spacemacs 1 + orgmode 2

将下面的配置写到 spacemacs 的配置文件中 ~/.spacemacs(defun dotspacemacs/user-config () 代码块里。例如下面:

;;Org publish
(setq org-publish-project-alist
    '(
      ("blog-notes"
       :base-directory "~/git/org-blog/org-sources/"
       :base-extension "org"
       :publishing-directory "~/git/org-blog/publish/"
       :recursive t
       :publishing-function org-html-publish-to-html
       :headline-levels 4
       :section-numbers nil
       :auto-preamble t
       :with-toc t

       :sitemap-file-entry-format "%d ====> %t"
       :sitemap-sort-files anti-chronologically
       :sitemap-filename "index.org"
       :sitemap-title "Emacsist"
       :auto-sitemap t

       :html-doctype "html5"
       :html-validation-link nil
       :html-link-home "/emacsist/index.html"
       :html-link-up "/emacsist/index.html"

       :author "emacsist"
       :email "emacsist@.qq.com"
       :html-head "<link rel=\"stylesheet\" type=\"text/css\" href=\"/emacsist/css/org-mode.css\"/>"
       :language "zh-CN"
       )
      ("blog-static"
       :base-directory "~/git/org-blog/asserts/"
       :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
       :publishing-directory "~/git/org-blog/publish/"
       :recursive t
       :publishing-function org-publish-attachment
       )
      ("blog" :components ("blog-notes" "blog-static"))
      ;;
      ))

选项说明

常用选项

base-directory
这个是你用 org 写博客的文件所存放的目录
base-extension
这个是只处理以该后缀的文件
recursive
是否递归处理
publishing-function
使用发布的函数,这个在新版的 orgmode 中与以前名字不太一样了,这点要注意。
headline-levels
处理的标题的最大层级(这个用在 toc 决定显示的层数)
section-numbers
toc 和内容的节点中,是否用数字来表示。比如 * 标题 标题,如果该选项为 t 的话,那它就会显示为 1. 标题 ,否则就显示为 标题
with-toc
是否显示目录(table of content)

与 sitemap 相关的选项

sitemap 类似首页里的导航。这可以利用它来生成博客的首页。

sitemap-file-entry-format
首页里导航入口显示的格式
sitemap-sort-files
每个入口排序的方式
sitemap-filename
sitemap 的文件名。因为我们想用它来作为首页,所以这一般为 index.org
sitemap-titile
sitemap内容的标题。填写你的博客名咯
auto-sitemap
是否自动生成 sitemap

与 HTML 相关的选项

html-doctype
使用的 HTML 文档类型。那肯定用最流行的 HTML5 啦
html-validation-link
是否显示 validation 的链接。看你自己喜欢了。我这不显示。
html-link-home
首页的链接
html-link-up
上一级的链接
html-head
在HTML文件里,插入这些内容。这里使用了自定义的CSS,所以可以在这里加上。

元数据选项

author
作者
email
邮箱
language
使用的语言

组成

可以看到,该配置分成两部分:

blog
我们的项目名
blog-notes
这些是负责处理你博客内容的,所以使用的函数为 org-html-publish-to-html
blog-static
这些是负责处理你的静态文件的,比如 CSS, JS,图片等。所以使用的函数为 org-publish-attachment

完整的目录结例子

这个结构是基于上面的配置的,所以自己再根据上面的说明再作小修改即可:

[12:48:24] emacsist:org-blog $ tree -N
.
├── asserts
│   └── css
│       └── org-mode.css
├── org-sources
│   ├── index.org
│   ├── orgmode
│   │   ├── Org-mode发布项目缓存说明.org
│   │   ├── orgmode杂项.org
│   │   ├── orgmode手册学习笔记.org
│   │   └── 使用Orgmode写博客.org
│   └── spacemacs
│       └── spacemacs学习笔记.org
└── publish
    ├── css
    │   └── org-mode.css
    ├── index.html
    ├── orgmode
    │   ├── Org-mode发布项目缓存说明.html
    │   ├── orgmode杂项.html
    │   ├── orgmode手册学习笔记.html
    │   └── 使用Orgmode写博客.html
    └── spacemacs
        └── spacemacs学习笔记.html

9 directories, 14 files
publish
该目录的内容是自动生成的。
asserts
该目录是用来存放博客的静态文件的,比如 CSS, JS,图片等。
org-sources
该目录是用来存放博客的 org 源文件的。

参考资料

在这学习的过程中,还是比较艰苦的,苦于资料太少,而且使用起来云里雾里的,所以自己就记录下这个详细的过程了。 非常感谢下面这些资料,使自己在使用 orgmode 发布博客时得到不少帮助。

脚注:

2

版本为 9.0.5

作者: emacsist

Created: 2017-03-11 Sat 12:59