FreeBSD QandA 1544

FreeBSD QandA

Q. man の文書をテキスト化するにはどのようにすれば良いのでしょうか。

A. 単純に
      % man man > man.txt
   として plain text ファイルを作成すると、cat や more、less などで
   見る分にはよいのですが、vi や emacs などのエディタで見ようとすると

      LS(1)          FreeBSD General Commands Manual             LS(1)

      N^HNA^HAM^HME^HE
            l^Hls^Hs - list directory contents

      S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS

   のように、太字や下線の部分がおかしくなってしまいます。これは
   NAME の太字を表現するのに、
      N(^Hで一文字戻る)NA(^Hで一文字戻る)AM(^Hで一文字戻る)ME(^Hで一文字戻る)E
   のように、コントロールコード ^H を使っているからです。同様に
   下線付きの `ABC' は A^H_B^H_C^H_ となります。

   これを plain text にするには、以下のような方法があります。

   (1) colcrt(1) を使用する
         % man man | colcrt > man.txt
       これが一番簡単でしょう。
         % jman jman | colcrt > jman.txt
       jman も OK です。

   (2) col(1) を使用する。
         % man man | col -b > man.txt
       man ならよいのですが、日本語に対応していないため、jman では
       うまくいきません。
       FreeBSD(98) の col は、3.5.1 以前は日本語が通るようにパッチがあてられて
       いましたが、4.0 以降は日本語化パッチが配布物の中に含まれています。

       <URL:http://www.jp.freebsd.org/pc98/releases/4.0R/Relnot98.txt>

   (3) colcrt や col の行なっていることを sed や perl で行なうと
         % jman jman | sed 's/.^H//g; s/.^H//g' > man.txt
         % jman jman | perl -pe 's/..\x08\x08|.\x08//g' > man.txt
       のようになります。なお、^H は Ctrl-v BackSpace や Ctrl-v h として
       入力します。

   (4) emacs (mule) 上で man を見て、ファイルに保存する。
         M-x man [ENTER] マニュアル名 [ENTER] 
       とすると、emacs 上にマニュアルが表示されます。それをファイル名を
       指定して書き出せばいいでしょう。~/.emacs に
         (defvar manual-program "jman")
       としておくと、日本語マニュアルが表示されます。

   おまけ。

   (5) plain text ではありませんが、
         % gzcat /usr/share/man/man1/ls.1.gz | groff -man > ls.ps
       とすると、マニュアルを Postscript 形式に変換できます。日本語マニュアルは
       ja-groff (/usr/local/bin/groff にインストールされる) を使って
         % gzcat /usr/share/man/man1/ls.1.gz | /usr/local/bin/groff -man > ls.ps
       とします。そのまま Postscript プリンタに出力したり、gs コマンド
       (ghostscript に含まれています) で見ることができます。

同一グループへのリンク

グループ名: man


間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。