このBlogは移転しました。今後は aish.dev を御覧ください。

日本語でreStructuredText

実のところ、私はあんまり reStructuredText /Shinx が好きではない。Markdown と比べるとシンプルさで劣り、TeXと比べると印字品質で劣る。この辺の中途半端さが、restを愛せない大きな理由だが、もう一点、日本語の文章を書くのに適切なマークアップ言語ではない、というのも大きい。英語などの、単語と単語の間にスペースがある言語向けに設定されており、日本語で書こうとするとイライラが溜まってどうしょうもないのだ。

とはいえ、SphinxPythonの公式ドキュメントで使われているツールでもあり、ちょっと複雑なドキュメントを書くには Pandoc を使うよりは便利なことも多いので、ある程度は使えるようにしてみたい。ということで、私が使っていて一番イライラする、インラインマークアップの改善に取り組んでみた。

通常のrestでは、インラインマークアップの前後に空白や区切り文字が必要なため、

restは*うざい*!

とは書けない。

restは\ *うざい*\ !

などと書かなければならない。実にうざいので、スペース無しでもマークアップとして認識できるようにしてみた。

https://sourceforge.net/p/docutils/patches/103/

このパッチでは、前後のスペースや区切り文字などのチェックをいっさいチェックせず、`*` などの記号は全てマークアップとなる --no-inline-delimiters オプションを追加している。

$ rst2html.py --no-inline-delimiters sample.rst 

ディレクティブでも指定できる。

.. no-inline-delimiters yes

ここでは*普通に*マークアップを書ける

.. no-inline-delimiters no

ここでは\ *書けない*\ !

この方式で日本語環境でも使いやすくなったのではないかと思うが、どうだろうか?現在わかっている問題点として、アンダーラインを含んだ英単語がマークアップとして認識されてしまう、という点がある。

mod_wsgi

とすると、これは mod へのリンクと解釈されてしまうので

mod\_wsgi

と書かなければならない。許容範囲といえば許容範囲な気もするが、できれば治したい気もする。他にもなにか落とし穴があるかもしれない。気がついた点があれば、こちら で議論に参加していただきたい。

知らなかったが、Docutilsの開発者 David Goodger さんの奥様は日本人だそうで、Davidさんも日本語の知識がおありだそうだ。このパッチについても前向きに検討して頂いてる雰囲気なので、興味や意見があれば、ぜひともご協力いただきたい。