鉄は熱いうちに打て
=============================

Markdownにmetaタグを入れる

2018-03-03

Sphinx使ってますか?私は結構使っています。

今日はHTMLの全ページにmetaタグを入れた話です。

HTMLには目に見えている以外にその文書の情報を持たせられます。それがmetaタグです。 前ページに その文書の説明(description) をもたせようと思いました。

同僚に聞いたら、 rst_prolog というのがあるみたいです。ファイルの先頭に指定した文字列を追加してくれます。 しかし、実行しても reSturucturedText ファイルにしか追加されません。

調べると、 Use rst_prolog and rst_epilog only for rst files? #2445 で、reSturucturedText にしか追加されないように修正されている。

終わった。

そんなわけで、テンプレートでhead部分を修正する方法もわからなかったので、Sphinxユーザー会のSlackに聞きに行きました。

Sphinx-Users.jp から、誰でも参加できます。 みなさんとてもいい人です。なに言っているかわからないこともたくさんありますが、オープンソースってこーやって話し合われているのねーと参考にもなります。

相談したら、そもそも私は、MarkDownを利用するために recommonmark.parser.CommonMarkParser というSphinxの標準じゃないライブラリを使っていたのです!!

ガッテム!

そんなの相談されても困りますね。とほほ。と思っていたら、 @tk0miya さんがスクリプトを書いてくださいました。

これを conf.py に追加しました。

def on_source_read(app, docname, source):
    filename = app.env.doc2path(docname)
    if filename.endswith('.md'):
        source[0] = app.config.md_prolog + "\n   \n" + source[0]


def setup(app):
    app.add_config_value('md_prolog', '', 'env')
    app.connect('source-read', on_source_read)

ありがたや〜。

これで、さらに conf.py にこんな感じで追加しました。

md_prolog="""
```eval_rst
.. meta::
   :description: 説明
```
"""

親切なSphinxコミュニティーの皆様ありがとうございました!!

ブログ書いていいよ!と言っていただいたので、書きました。これからも使っていきます。