背景

このブログは org-mode の機能を使って生成されています。 HTML テンプレートは esxml で書いて、 SSG としては org-publish を使っています。

日記の追加に伴って、 index.html の生成をテコ入れしました。また原稿ファイルで使える便利構文を追加しました。

改造機能

diary/ ディレクトリの追加

サブディレクトリに日記ファイルを置けるようにしました:

.
├── build.el
├── out
├── src        # devlog
│   └── diary  # diary
└── x

index.htmldevlogdiary 毎に <h2> タグで区切られるようになりました。日記では、主に ABC (毎週開催の競技プログラミングのコンテスト) の感想を書く予定です。

#+BEGIN_DETAILS

org-mode の文書では #+BEGIN_*, #+END_* で囲ったテキストを『ブロック』とみなして変換できます。

今回 #+BEGIN_DETAILS という special block (custom block) を追加しました。 <details> タグを簡単に記述できるようになりました。

#+BEGIN_DETAILS ここにタイトル
折りたたみ表示
#+END_DETAILS
<details>
<summary>ここにタイトル</summary>
折りたたみ表示
</details>

実演:

ここにタイトル

折りたたみ表示

今後追加したい block があれば、同様に対応できます。

絶対パスを使って .org ファイルにリンクできるように

[[/index.html][トップページ]] のようにリンクを書くと <a href="file:///index.html">トップページ</a> が出力される悲劇を修正しました。

その他に #+BEGIN_CENTER の html 出力を調整するなど、ツギハギしています。

まとめ

相変わらず手のかかるブログですが、 org-publish が異常に柔軟なおかげで何とかなっています。