恢徳堂のイオシフさんのブログ

recommonmarkを使ってSphinxで日本語のMarkdownを使うとHTML生成時に見出しのIDが効かない

June 10, 2016

SphinxとMarkdown

recommonmarkプラグインの登場により、SphinxでもMarkdownで記事が書けるようになりましたが、見出しに日本語を含んだMarkdown文書をパースしようとすると、ASCII文字列しかIDに含まれない状態になります。

たとえば、「hoge」というh1見出しを作った場合はh1#hogeになるのですが、「ほげ」だった場合はh1#になってしまい、アンカーが効きません。

なので、SphinxのHTMLでの目次のリンクがうまく作動しない状況です。

場渡り的な解決策

現状の解決策として、Pandocを使用してMarkdownを一回reStructuredTextにしてしまう方法があります。こうすると、表や注釈などPHP Markdown Extraの書式が使える上、日本語だけの見出しでもIDが振られ、HTMLドキュメントの目次が作用するようになります。

できれば……

KramdownがPythonに移植されて組み込めるようになってくれるとありがたいです。

欠点

この方法の欠点は、Markdownの他にreStructuredTextも覚えなければいけない点です。なにせBlockdiagとか使う場合はMarkdownだとディレクティブ埋め込めないので。