試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Pythonの日本語訳ドキュメントをDevhelpで参照する(2011年2月上旬時点・作成上の追加メモ)

Pythonの日本語訳ドキュメントをDevhelpで参照する(2011年2月上旬時点・ファイル配布)」の続きとして、ファイル作成上の追加メモを扱う。

  1. 目次が途中で切れる?
  2. .devhelp2ファイルの自動生成は可能?

目次が途中で切れる?

今回、HTMLファイルをもとにして正規表現置換を主に使用して手作業で目次の内容を.devhelp2ファイルに追加していったのだが、その中で、.devhelp2ファイルに書き込む内容(XML文書の一部)自体には問題がなくても実際にDevhelpで開いてみると目次が途中で切れるという現象が発生した。その際には(Pythonの日本語訳ドキュメント内の)目次の上下の並びが逆になっていて、一番上に表示されるべき項目が一番下に表示される状態になる。
原因が分からずに色々と試していたのだが、何故か

<!-- [適当な長さの適当な文字列] -->

のようなコメントを入れることでその場所で切れるのが改善されるということが分かった。「Pythonの日本語訳ドキュメントをDevhelpで参照する(2011年2月上旬時点・ファイル配布)」のファイルにもこのようなコメントが入れてある。

.devhelp2ファイルの自動生成は可能?

手元のUbuntuには「python2.6-doc」のような英語のドキュメントパッケージがあり、それらはDevhelpでHTMLドキュメントが参照できるものとなっていることが分かったので、このパッケージのソースを取得してみたところ、debian/pyhtml2devhelp.pyというスクリプトがHTML文書からの自動生成を行っていることが分かったのだが、何故か日本語訳ドキュメントのツリーに適用しても目次がうまく生成されなかったので、詳しく調べてみた。
すると、目次のa要素のclass属性が日本語訳で変わっていたことが分かり、他の小さな修正と合わせると

--- python2.6-2.6.6.orig/debian/pyhtml2devhelp.py
+++ python2.6-2.6.6/debian/pyhtml2devhelp.py
@@ -4,7 +4,7 @@
 import os, sys, re
 
 class PyHTMLParser(htmllib.HTMLParser):
-    pages_to_include = set(('whatsnew/index.html', 'tutorial/index.html', 'using/index.html',
+    pages_to_include = set(('whatsnew/2.6.html', 'tutorial/index.html', 'using/index.html',
                             'reference/index.html', 'library/index.html', 'howto/index.html',
                             'extending/index.html', 'c-api/index.html', 'install/index.html',
                             'distutils/index.html', 'documenting/index.html'))
@@ -75,7 +75,7 @@
         if self.link.has_key('class'):
             if self.link['class'] in ('biglink'):
                 process = True
-            if self.link['class'] in ('reference external'):
+            if self.link['class'] in ('reference internal'):
                 if self.next_link:
                     process = True
                     next_link = False
@@ -202,7 +202,7 @@
     version = sys.argv[3]
 
     parser = PyHTMLParser(formatter.NullFormatter(), base, fn, indent=0)
-    print '<?xml version="1.0" encoding="iso-8859-1"?>'
+    print '<?xml version="1.0" encoding="utf-8"?>'
     print '<book title="Python %s Documentation" name="Python" version="%s" link="index.html">' % (version, version)
     print '<chapters>'
     parser.parse_file(fn)

のような変更となったが、この修正版スクリプトで日本語訳ドキュメントをもとに自動生成をしても、部分的には正常ながらも不完全なファイルが生成されてしまう(上の変更点が不十分もしくは不適切?)。また、前述のコメントを手動で挿入しないと目次が切れる現象も起きる。
現状は「正しく目次が表示されるようにコメントで調整しつつ各HTMLファイルをもとに正規表現置換などを用いて手作業で編集」とするのが確実そうだが...

使用したバージョン:

  • Devhelp 2.30.1