[JM:00459] Re: SIGNAL(7)の内容に関しまして

アーカイブの一覧に戻る

Akihiro MOTOKI amoto****@gmail*****
2011年 10月 20日 (木) 08:01:25 JST


元木です。

> > と、SIGHUP の行の前に空行を入れると表示されました。
> > signal.7 には他にも .TS の部分がありますが、よく見ると
> > SIGBUS や SIGIOT の部分も消えてました。
> > SIGHUP と同様に前に空行を入れると表示されるようになります。
> > 
> > 標題部分(l c c l)と各項目(lB c c l.) の間に区切り(____)があるような
> > .TS がうまく man2html は処理できないようです。
> 
> 確かに、先頭行が全部消えてしまっていますね。
> man2html/man2html.c の scan_table() が該当部分なのですが、
> 結構長いので、落ち着いてみたいと思います。
> 修正するのは難しくなさそうですが、tbl の機能に追従するのは大変ですね。

man2html.c を修正して、先頭行の内容も表示されるようになりました。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/signal.7.html
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/suffixes.7.html

原因ですが、scan_table() では、書式を最初にスキャンしてから、
テーブルの各行を読み込んでいくのですが、区切り (____) に対応する場所
についても、テーブルの行を対応づけてしまっていました。
出力時には区切り文字が出力されるので、ちょうど区切りに合致した行が
失われる結果になっていました。
空行を入れると表示されるようになるという現象も説明がつきます。

# man2html.c がグローバル変数を使いまくりの前近代的なプログラムで参りました。
# 論理を追うのが面倒で、gdb で変数ダンプで追いかけて、対処しました。
# ddd を使った方がよかったかな。

> suffixes.7 の方も現状の man2html だと、表の左側と右側で行が
> ずれているので、ここも何とかしたいところです。

こちらも修正しました。
こちらはアドホックな対処で、表の各アイテムの先頭にスペースがあると、
改行の <BR> が出力されるようになっていたので、表の中では各アイテムの
先頭の空白はスキップして HTML 変換を行うようにしました。

あと、groff の方の話ですが、

> 私が作成した JM-man-view.el も初代は Emacs の woman を使っていますが、
> 2代目では groff 出力に色付けをするアプローチを取りました。
> JM もこの方法の方が採用できればよいのですが、そのためには groff 1.20 以降
> で発生する ja_JP.UTF-8 環境での整形の乱れ (マルチバイト文字の幅を適切に
> 扱えない問題) が解決される必要があります。

groff 1.21 以降では、この問題は修正されているようです。
確認したのは Ubuntu 11.10 に含まれる groff 1.21-6 ですが、
Changelog によると New upstream release でこの問題が修正されているので、
他の環境でも同様だと思います。

# JM-man-view.el の新しい方をリリースしようかな。

それでは。

At Tue, 18 Oct 2011 15:02:48 +0900,
Akihiro MOTOKI wrote:
> 
> 元木です。
> 
> この件すっかり忘却の彼方でした。調査ありがとうございます。
> チケットに入れておいた方がいいですね。
> 
> >>>>> Date: Tue, 18 Oct 2011 05:14:01 +0900 (JST)
> >>>>> From: "R4000 2.2" <tati****@kc5*****>
> >>>>> Subject: [JM:00453] Re:SIGNAL(7)の内容に関しまして
> > 
> > こんばんは、立花@鎌ヶ谷市です。
> > #解決策ではありませんが、、、
> > 
> > In <BANLkTim5LSx3ZaQjs_ZpXau****@mail*****>,
> >  at Date: Mon, 13 Jun 2011 12:50:06 +0900,
> >   on Subject: [JM:00295] Re: SIGNAL(7)の内容に関しまして ,
> >    Akihiro MOTOKI <amoto****@gmail*****> writes:
> > 
> > | 翻訳されたマニュアルには SIGHUP の記載もあり、HTML への変換時に落ちてしまっているようです。
> > | 
> > | 変換プログラムとの相性のように見えますので、うまく変換できる場合がないか探ってみたいと思います。
> > 
> > と、SIGHUP の行の前に空行を入れると表示されました。
> > signal.7 には他にも .TS の部分がありますが、よく見ると
> > SIGBUS や SIGIOT の部分も消えてました。
> > SIGHUP と同様に前に空行を入れると表示されるようになります。
> > 
> > 標題部分(l c c l)と各項目(lB c c l.) の間に区切り(____)があるような
> > .TS がうまく man2html は処理できないようです。
> 
> 確かに、先頭行が全部消えてしまっていますね。
> man2html/man2html.c の scan_table() が該当部分なのですが、
> 結構長いので、落ち着いてみたいと思います。
> 修正するのは難しくなさそうですが、tbl の機能に追従するのは大変ですね。
> 
> suffixes.7 の方も現状の man2html だと、表の左側と右側で行が
> ずれているので、ここも何とかしたいところです。
> 
> > うーんと思って signal.7, suffixes.7 のオリジナルの英文を
> > http://linuxjm.sourceforge.jp/manual/LDP_man-pages/original/man7/
> > から取ってきて、手元で make した man-1.6g同梱の man2html で
> > 処理させてみましたが、期待どおりに表示されません。
> > 
> > | > 原文(Kernel.org):signal(7)
> > | > http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html
> > 
> > これ、該当ページを作成するときに roffページをいじってるのかもしれませんね。
> 
> この変換プログラムは全く別物のようです。
> 
> man-1.6g 付属の man2html では、.TS セクション (というのかな) は
> HTML のテーブルに変換されます。
> 一方、上記の kernel.org のページだと、.TS の部分は <PRE> で囲まれた
> テキスト文書になっています。全体的に、groff で整形したテキストに
> 色付けをしているように見えます。
> 
> 私が作成した JM-man-view.el も初代は Emacs の woman を使っていますが、
> 2代目では groff 出力に色付けをするアプローチを取りました。
> JM もこの方法の方が採用できればよいのですが、そのためには groff 1.20 以降
> で発生する ja_JP.UTF-8 環境での整形の乱れ (マルチバイト文字の幅を適切に
> 扱えない問題) が解決される必要があります。
> 
> 当面は man2html.c を修正する方向で考えるのがよさそうです。
-- 
Akihiro MOTOKI <amoto****@gmail*****>




linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る