在Hugo中使用org mode
@ wgjak47 | 星期五,一月 1 日,2021 年 | 2 分钟阅读 | 更新于 星期五,一月 1 日,2021 年

在Hugo中使用Org Mode书写blog

blog荒废了很久了,看看了每个月vultr寄给我的账单,觉得还是给自己找点其他事情干,不能整天玩游戏了。最近正好迷上了org mode,感觉可以用org mode写blog,于是赶紧搞一下。

选择

原生方案

hugo通过go-org 提供了对org文件的渲染,并且支持org mode的特殊的 Front Matter ,例如本文的 Front Matter 如下:

#+title: 在Hugo中使用org mode
#+subtitle: Emacs搞定一切!
#+lang: zh_CN
#+date: 2021-01-01
#+categories[]: Emacs
#+tags[]: Emacs
#+images[]: /tech/img/emacs.png
#+cover: /tech/img/emacs.png
#+summary: 用Emacs的org mode写blog

这个方案的问题是一些高级的Org mode特性go-org不支持(其实非Emacs的org mode实现多多少少有这样的问题),而另一个问题就是当你的*Front Matter*写错了的时候,提示非常奇怪:

Start building sites …
Built in 63 ms
Error: Error building site: failed to render pages: render of "page" failed: "/home/wgjak47/Code/tech/themes/dream_hugo/layouts/_default/baseof.html:5:43": execute of template failed: template: _default/single.html:9:7: executing "_default/single.html" at <partial "head.html" .>: error calling partial: "/home/wgjak47/Code/tech/themes/dream_hugo/layouts/partials/head.html:5:43": execute of template failed: template: _internal/opengraph.html:5:43: executing "_internal/opengraph.html" at <.>: range can't iterate over /tech/

这里是我的 #+images[]: xxx 写成了 #+images: xxx ,这个错误提示似乎完全无关,很容易造成困扰。

ox-hugo

ox-hugo 是另外一种选择,这个Emacs插件的作用是把org转换成hugo可以识别的markdown格式,对于org mode的特色,他会弄成复杂的html标签内嵌。目前我org mode用的不深,所以暂时没有用到。另外 doom-emacsspacemacs都有ox-hugo支持,可以非常方便的通过启用特定的配置自动安装。

Org Mode学习资源

官方提供了比较完善的org mode文档

最后插入图片测试一下

/tech/img/emacs.png

这里使用hugo的问题就是如果你把图片放到 static/img/ 下面,emacs这边就不能通过 org-toggle-inline-image 显示图片,比较可惜。