目录
使用 Orgmode 写博客
最近又重回到 emacs 了,试过 Hexo 和 hugo 这两个静态博客,也比较主流。但在尝试各种 GTD 工具后,最后还是觉得 emacs 的 orgmode 最好。所以,索性将写博客的习惯也改为用 orgmode 来写了
使用 org-publish-project
将下面的配置写到 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
- 作者
- 邮箱
- 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 发布博客时得到不少帮助。
- kuqin
- tuhaihe github
- guidao 我的CSS内容也是使用该网站的,表示感谢
- houye
- yuyang0 github