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
也是可以的。