インラインマークアップ前後にスペースを入れたくない

Sphinxが使っているreSturucturedTextでは、インラインマークアップの前後にスペースが必要でした。スペースなしでは単語の区切りを認識しないため、インラインマークアップが無視されます。

OKな例
SphinxでHTMLファイルをビルドするときは ``make html`` とタイプします。
NGな例
SphinxでHTMLファイルをビルドするときは``make html``とタイプします。

このスペースを除外する方法がいくつかあります。

エスケープ + スペース

前後のスペースの前にバックスラッシュを置いて、スペースをエスケープします。

OKな例
SphinxでHTMLファイルをビルドするときは\ ``make html``\ とタイプします。

Docutilsのcharacter-level-inline-markupオプション

Python.jpの世話人をしてくださっている石本さんがパッチを送り、マージしてもらったオプションがDocutilsの0.13に入りました。このオプションを有効化すると、スペースなしでもインラインマークアップが解釈されるようになります。

Sphinxから使うには、docutils.confというファイルを作り、conf.pyと同じ場所において普段通り実行します。

docutils.conf
[restructuredtext parser]

character_level_inline_markup: yes

これで、最初に紹介したNGの例のときに正しく解釈されるようになります。ただし、注意点としては、多くのエディタなどがこの形式をサポートしていない点です。下記のハイライトもそうですが、多くのツールがまだ解釈できないため、ソースのハイライトがおかしくなることがあります。

NGだったけどOKになった例
SphinxでHTMLファイルをビルドするときは``make html``とタイプします。

なお、このオプションはパーサーの動作に影響を与える強い副作用をともないます。インラインマークアップで使用する各文字をエスケープしなければなりません。

注意点
http://rST_for_all.html URLではなく、rST_for_に対するハイパーリンクとして解釈される
x_2, inline_markup x_inline_へのハイパーリンクとして解釈される
2*x 強調テキストの開始として解釈される
a|b 置換の参照の開始として解釈される

参考

この項目はreSturucturedTextを書く際の空白を入れたくない場合に関するものです。

不自然な空白が表示されるに書かれているjapanesesupportを使うと、HTML出力時に不自然なスペースを削除できます。