TL;DR

掲題のプラグインを作ってgemとして公開しました。

jekyll-numbered-headings

解決したかった課題

このブログは現在markdownで書いてjekyllでコンパイルしているんですが、最近書いたMacのセットアップの記事とかは番号付き見出しを多様しています。

markdownは標準で番号付きリストをサポートしているので、

1. 最初の項目
1. 次の項目
1. その次の項目

のように書いておくと、

  1. 最初の項目
  2. 次の項目
  3. その次の項目

というように自動でナンバリングしてくれるので、途中に項目を挿入したり削除したりしても手動で番号を振り直す必要はありません。

ところが、この機能は見出しには対応していないので、見出し番号は自分でナンバリングする必要がありました。

さすがにそれぐらい誰かプラグイン作ってくれてるやろうと思ったんですが、調べてもちょうどいいのが出てこなかったので自分で作ることにしました。

Perlスクリプトを書いている方はいて、やりたかったのは完全にこれです。

Markdownの見出しにアウトライン番号を付ける独自仕様を追加する。(独自仕様のMarkdownファイルを通常のMarkdownファイルに変換するperlスクリプトを作成する)

他にもtxt2tagsというpythonツールを実行するだけのプラグインもあったんですが、こちらはtoo muchな感じもあって見送りました。

仕様

Jekyllのpre-render hookという機能を使っていて、markdownをhtmlに変換する前に呼ばれるので、独自仕様を純正仕様のmarkdownに変換するだけのシンプルなプラグインです。

##1. At first

###1. One thing

###1. Another thing

##1. Second

##1. Third

というように見出しの########まで)に1.をつけておくと、自動で階層ごとにカウントして

## 1. At first

### 1.1. One thing

### 1.2. Another thing

## 2. Second

## 3. Third

という形に変換してくれます。

見出し番号に悩んでいた方はぜひご利用ください。

jekyll-numbered-headings

こぼれ話

アップデートがめんどくさくてずっとjekyll2系で運用してたので、プラグイン本体よりhook使うために3系に上げる方が大変やった・・・