ox-Hugo插件的使用

源起

因为对于orgmode的折叠功能过于好用,所以在使用了markdown作为hugo的编辑格式一段时间后,发现长的文章没有折叠就不方便。因为hugo默认也支持org,所以使用了org作为了日志的编辑格式。在网上交流时,有人提到了hugo对org的支持有一定限制博客写作流程之工具篇: emacs, orgmode, hugo & ox-hugo。之前还没有感受到,但是在使用了插入图片后,就明显地感受到了问题。

下载和安装

官方网站:https://ox-hugo.netlify.com/ melpha安装,安装后在配置中加入

(with-eval-after-load 'ox
  (require 'ox-hugo))

安装激活后,最显著的区别是,在 C-c C-e 之后会出现 Export to Hugo compatible markdown

使用

ox-hugo支持两种形式,1是将所有的文章放在一个org文件中,每篇文章是一个子树,这种方式也是ox-hugo推荐的,本文也只讨论这种模式。2是每一篇文章是一个org文件。

创建org文件并初步配置

在hugo所在的网站的根目录,创建一个org文件。在文件头中加入以下内容:

#+STARTUP: overview indent # 启动时默认显示overview级别,将星号改为缩进显示。非必须,只是为了好看。

#+HUGO_BASE_DIR: ./blog/  # 这个表示这个hugo网站的目录在当前org文件同一目录的blog目录下。必须

#+HUGO_SECTION: post/   # 这个表示在hugo的content文件夹下,md文件都会生成到这个目录下。非必须,但推荐要有,具体含义可查看hugo相关说明

#+seq_todo: TODO DRAFT DONE # 所有的文章在这三种状态下切换。非必须,推荐。

在每个子树中的配置

nil:END:

在每个子树,也就是每篇文章中加入一个 :PROPERTIES: 需要注意的是这个 :PROPERTIES: 与标题之间不要有空行,否则设置会无效。

#+begin_src org :PROPERTIES: :EXPORT_FILE_NAME: insert-image-in-org-mode (生成markdown文件时的文件名)

#+end_src

如果存在多个section

参考文档:Using ox-hugo To Build Websites with Emacs

转换成markdown

转换使用 C-c C-e 命令

front matter的转换

官方参考

官方说明的内容很多,其实用到的也就几个

  • 子树的标题->文章的标题
  • CLOSED的时间->文章的时间
  • 子树标题的tag->文章的tag
  • 子树标题的以@开头的tag->文章的category
  • 子树标题TODO状态->Draft=true
  • 子树标题DONE状态->Draft=false

格式的转换

格式转换官方说明

more的问题

很奇怪的是,如果使用org mode作为编辑格式的话,more的代码是 #more ,但是在转换markdown的时候,ox-hugo不会把它转换成: <!--more--> 。所以在org格式中需要直接使用 <!--more--> 。查看了官方文档后,用 #+hugo: more 也是可以的。

海上一民工

Related