ローカルでメモの保存用に使ってみてるサイトジェネレータを、
Pelican から Hugo にしてみた。
150 post を越えて、速度がかなり問題だと思うようになったから。
Pelicanが遅いわけではないので、別ディレクトリに分ければよいのだが、
どうせ分けるなら、別のジェネレータでも試してみるか、ということ。
選んだのは Hugo 。
速度に関する評価が高いみたいで、
しかも emacs との連携が ox-hugo を使うと便利みたいだから。
(感謝)
hugo の 設定
Hugo 自体の設定は、いっぱい情報があるから省略。というか、細かい設定なんかは、私の理解の外。
html にして表示できれば満足だから。ただ、テーマは、
を試して、Mainroad にしてみた。
emacsでの使い方
ox-hugo をインストしただけで、これ自体の
設定は得にしてない。
こいつを使えば、org-modeで編集したものを、
org-modeの特徴を活かしつつ、
hugo の為に export をしてくれるという。
org-mode(oxとか)が使えていることが前提だが。
基本的な使い方は、公式ドキュメントや先人方の情報のおかげで、なんとかなる。あとは、
hugo用のorgファイルと、org-capture の設定を自分用に用意する。
結局以下のようにして、一応動いているようだ。
解説をちゃんと読めばよいのだが、私には十分かも、と思っている。
hugo用のorgファイル(0730up)
#-*- mode: org -*-
#+CATEGORY: blogger_hugo
#+STARTUP: contents align shrink
#+OPTIONS: AUTHOR:nil
#+HUGO_BASE_DIR: ~/Documents/mup/blogg-hugo
#+HUGO_AUTO_SET_LASTMOD: t
#+HUGO_SECTION: posts
* build [2019-07-11] 追加
#+BEGIN_SRC shell
cd ~/Documents/mup/blog_hugo
hugo
#+END_SRC
* Posts
** DONE posting test 1 :@hugo:setup:
CLOSED: [2019-07-05 金 10:40]
:PROPERTIES:
:EXPORT_FILE_NAME: 20190705_1st-post
:EXPORT_HUGO_FRONT_MATTER_FORMAT: toml
:EXPORT_HUGO_SECTION: posts
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :archives 2019/07
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :series [debian hugo setup]
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :toc 2 :num t
:END:
ここは、アブストラクトとして、記事リストに表示される部分。
<!--more-->
これ以降が、本文という位置付けだが、アブストラクト部分も本体に表示されるので、
そのような構成にする必要がある。
exportすると、posts ディレクトリに出力される。
- HUGO_BASE_DIR で、hugoのディレクトリを指定。
- HUGO_SECTION の default は ox-hugo の設定や、
orgファイルの先頭部分でも指定できる。
hugo_base_dirに無ければ、作成してくれる。
- post する時のファイル名は、タイムスタンプと名前でorg-captureで作成。
- org-mode のタグは、 @ 付きが category、他がtag。
- :toc 2 は、2レベルの目次
:num t で番号付きにできるようだが、私の環境では、記事での設定は、NG.
ox-hugo の設定で指定すればOK。
(setq org-hugo-export-with-section-numbers t)
TODO なら ドラフト。DONE にすると公開。
list や weblink は普通に使える。
画像ファイルの指定は注意が必要。
同一ディレクトリに画像ファイルがあれば、
‘static/ox-hugo’ にexport時にコピーしてくれる。
[[./rimg3576.jpg]]
file:rimg3576.jpg
サブディレクトリに画像ファイルを置く場合は、自分でコピーする必要があるようだ。例えば、src=“./imgs/rimg3576.jpg” にするなら、以下。
[[file:./imgs/rimg3576.jpg]]
file:./imgs/rimg3576.jpg
追記: ひとつのファイルにまとめようとすると、結構多きくなるのに今更気付いた。
で、org-refile のターゲットに新しいファイルを追加することにする。
org-captureの設定(0730up)
公式ドキュメントの方法を使うべきなんだろうが、理解できないので、こんな風になった。
(defun my/generate-post-name ()
(setq my-org-note--name (read-string "Name: "))
(setq my-org-note--dtime (format-time-string "%Y%m%d-%H%M"))
(format "%s_%s.md" my-org-note--dtime my-org-note--name))
;;
...
(setq org-capture-templates '(
...
...
("ph" "hugo new post" entry
(file+olp "blog_hugo.org" "Posts")
"** TODO %? \t:@debian:\n:PROPERTIES:\n\
:EXPORT_FILE_NAME: %(my/generate-post-name)\n\
:EXPORT_HUGO_FRONT_MATTER_FORMAT: toml\n\
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :archives %<%Y\/%m>\n\
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :series hugo\n\
:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :toc 2 :num t
:END:\n\n\n\nl<!--more-->\n")
...
;; (0730) archives の年月を自動、 del `+`
...
))
...
- Posts配下に作成
- 名前だけは入力するようにした。
- tag や archives なんかはデフォを指定しているだけ。
- series はhugo側で別途設定が必要みたい。
- toc をデフォで有にしおく。
- テーマによって使えなかったり使えたりがある。
一応動いているようだ。
markdown や reStructuredText を直接書いたり、
exportしてからのコピペが不要になるので、かなり楽になると思う。
あとは、使える/使えないを経験しながらでよういだろう。
とりあえず、これで良しとしよう。