[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:54771] Re: 日本語 man ページのテキストファイル変換について



椎谷です。

On Tue, 4 Jan 2011 21:05:59 +0900
Shinichi Yamanaka <qgb00026@xxxxxxxxx> wrote:

> 英語のmanは綺麗に整形されて保存されたのですが、残念ながら日本語manについ
> ては、添付したファイルのように文字が化けてしまいました。
> 
> いままで椎谷さんが使っておられたスクリプトなので、文字化けするのが不思議
> だと思います。

すみません。先日添付した私のスクリプトは動作テストが不十分でした。
山中さんがおっしゃるとおり、一部の日本語manの変換(山中さんが添付された
newgrpのmanなど)では内容が文字化けすることがこちらでも確認できました。

そこで、[debian-users:54761]で寺崎さんが紹介されている方法がベストなのか
なと思って私も試してみたのですが、いくつか問題がありそうです。

例えば、ascii(7)のようにテーブルが含まれているmanページの変換ではwarning
がたくさん表示され、日本語を含むテーブル部分が正しく変換されませんでした。
(これは私のスクリプトにも同じことが言えたのですが。)

  $ lv /usr/share/man/ja/man7/ascii.7.gz
  $ man --recode=utf8 7 ascii | groff -man -T nippon -P -o -P -b -P -c -P -u - > ascii.7.txt
  <standard input>:94: warning [p 1, 8.0i]: cannot adjust line
  (中略)
  <standard input>:120: warning [p 2, 1.3i]: cannot adjust line
  $ lv ascii.7.txt

また、bunzip2(1)のように他のmanページの内容をそのまま読み込む作りになっ
ているmanページの変換ではエラーが表示され、結果が0バイトファイルになって
しまいました。

  $ lv /usr/share/man/ja/man1/bunzip2.1.gz
  $ man --recode=utf8 1 bunzip2 | groff -man -T nippon -P -o -P -b -P -c -P -u - > bunzip2.1.txt
  <standard input>:1: can't open `man1/bzip2.1': そのようなファイルやディレクトリはありません
  $ ls -al bunzip2.1.txt

まあ、「man1/bzip2.1 がないよ」と言われた時点で通常は「man 1 bzip2」し
直せばよいわけですが、バッチ処理させる場合はこれだとあまりうれしくないの
ではないかと思います。

こちらで試行錯誤した結果、以下のようにすると少なくともこれらの問題は解決
できるようです。

  $ (export LANG=ja_JP.EUC-JP; man -Tnippon -Z 7 ascii | grotty -cbuo | iconv -f EUC-JP-MS -t UTF-8) > ascii.7.txt
  $ lv ascii.7.txt

  $ (export LANG=ja_JP.EUC-JP; man -Tnippon -Z 1 bunzip2 | grotty -cbuo | iconv -f EUC-JP-MS -t UTF-8) > bunzip2.1.txt
  $ lv bunzip2.1.txt

以上、ご参考まで。

--
椎谷 幸生 <shiiya @ sky.email.ne.jp>