Compnet

仕事とか遊びとか、日々折々

2017-10-09(月)

Pelican の ReST 用に HTML タグを手軽に使うためのロール拡張を作った

Posted by Nakane, R. in technical   

本ブログは以前の記事で書いた通り Pelican という静的サイトジェネレーターを使って構築しています。 その中で Pelican を採用した理由として「reStructuredText で書ける」ということを挙げました。 実際に Pelican に移行してから今日までのほぼ一年に 21 本の記事を書き、それらはすべて reStructuredText で記述しています (平均して 2 週間に 1 本のペース、少ないですね)。 加えて、それ以前に Wordpress に書いた内の 11 本の記事を reStructuredText で書き直して、新しいブログの側に転載しました (まだ 200 本以上残っていますが)。

テキスト エディターだけ記事を書けるのが reStructuredText で書くことの手軽さです。 表題や箇条書きなども特別な表記法ではなく、誰もが思いつくような書き方なので、読み返したときに読みやすいという点でも手軽といえます。 もちろん reStructuredText といえども万能ではなく、使いにくい点もいくつかあります。 Pelican を使ってブログ記事を書く前提ですが、記事を reStructuredText から HTML に変換したときに、表題に ID 属性が付けられないというのも、そのひとつです。

reStructuredText で書かれた記事を HTML に変換しすると、表題は h1h2 といったタグを使った表記に変換され、その表題から始まる節が div タグで括られます。 そして表題を基にした ID が生成されて、div タグに ID 属性が付けられるます。 このため、一応は表題 (正しくは表題から始まる節) を参照するリンクが書けられそうに見えます。 しかし、表題に英数字以外が含まれていると、先頭の英数字部分だけが ID になったり、id1、id2 のような機械的に割り振られた ID になったりするため、どんな ID 属性が付くかは変換してみないと分からず、そうそう手軽だとはいえません。

また、打ち消し線を記述する方法がないというのもあります。 raw というロールを使って、reStructuredText の記述中に HTML による記述を埋め込むコトができなくはありませんが、見栄えの点からいってあまりいいとは思えません。

前者を解決するには reStructuredText を HTML などに変換する仕組み、つまり Docutils のソースコードに手を加えなくてはならないみたいなので、そうそう手を出せません。 しかし reStructuredTextdel タグ相当の記述方法を追加するだけなら、何とかなりそうです。 そこで、Pelican の拡張機能 (プラグイン) として、del タグ相当の記述方法を reStructuredText に追加しました。

Read more...