鉄は熱いうちに打て
=============================
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コミュニティーの皆様ありがとうございました!!
ブログ書いていいよ!と言っていただいたので、書きました。これからも使っていきます。