2012/04/23

python 2.7の日本語ヘルプを構築する

ウチの環境(Windows 7 SP1 x64)では、Pythonドキュメント日本語翻訳プロジェクトで配布されている htmlhelp(.chm) はエラーが表示されて正常に動作しない。
エラーの原因は、ヘルプの html が jquery.js を使うように書かれているのに、jquery.js を読み込んでないため。
他の方はエラーが出てないんだろうか?
そもそも htmlhelp を利用してないんかな?

という訳で、エラーが出ない htmlhelp を構築しなおしてみた。

準備

  1. sphinxが必要。
  2. Mercurialが必要。
  3. HTML Help Workshopが必要。

python-doc-ja からソースを取得する

コマンドプロンプトから
hg clone https://code.google.com/p/python-doc-ja/
でカレントディレクトリに python-doc-ja が作成され、ドキュメントソースがダウンロードされる。

ドキュメント作成に必要なユーティリティを取得する

cd python-doc-ja
make checkout
を実行すると必要なユーティリティが python-doc-ja\tools にダウンロードされる。

設定を変更する

ヘルプファイルの表示で出るエラーを回避する

既存のヘルプファイルは copybutton.js を実行しようとしてエラーが発生する。
ヘルプファイルではあまり意味がないので、copybutton.js を読み込まないように変更する。 python-doc-ja\tools\sphinxext\layout.html{% block extrahead %} ブロックを以下のように変更する。
{% block extrahead %}
    <link rel="shortcut icon" type="image/png" href="{{ pathto('_static/py.png', 1) }}" />
    {% if not embedded %}
    script type="text/javascript" src="{{ pathto('_static/copybutton.js', 1) }}"></script>
    <script type="text/javascript" src="{{ pathto('_static/_jp.js', 1) }}"></script>
    {% endif %}
{{ super() }}
{% endblock %}

インデックスからの表示が失敗するエラーを回避する

インデックスからページを選択すると、ページがないという表示になる。
.hhk ファイル生成の問題を修正する。
python-doc-ja\tools\sphinx\sphinx\builders\htmlhelp.pyを変更する。

268~270 行目
                elif len(refs) == 1:
                    write_param('Local', refs[0])
                else:
                elif len(refs) == 1:
# modify begin
#                    write_param('Local', refs[0])
# modify change
                    ref = refs[0]
                    if isinstance(ref, tuple):
                        ref = ref[1]
                    write_param('Local', ref)
# modify end
                else:
271 ~ 274 行目
                    for i, ref in enumerate(refs):
                        # XXX: better title?
                        write_param('Name', '[%d] %s' % (i, ref))
                        write_param('Local', ref)
                    for i, ref in enumerate(refs):
                        # XXX: better title?
# add begin
                        if isinstance(ref, tuple):
                            ref = ref[1]
# add end
                        write_param('Name', '[%d] %s' % (i, ref))
                        write_param('Local', ref)

htmlhelp を作成する

コマンドプロンプトから
make htmlhelp
を実行する。

しばらくすると、python-doc-ja\build\htmlhelpに python27ja1.chm が作成される。

エラーなく完了すれば、これで作業はおしまい。

0 件のコメント:

コメントを投稿