-->

2010-10-23

sys-apps/groff-1.20.1-r1 の設定

http://d.hatena.ne.jp/kei10in/20091019/1255980903

$ eix -I groff
[I] sys-apps/groff
Available versions:  1.20.1-r1 ~1.20.1-r2 ~1.20.1-r3 {X examples linguas_ja}
Installed versions:  1.20.1-r1(23時28分43秒 2010年10月22日)(-X -examples -linguas_ja)
Homepage:            http://www.gnu.org/software/groff/groff.html
Description:         Text formatter used for man pages

$ man groff 2>&1 | grep -nPi "utf8|\\-[TD]"
10:             [ -Fdir ] [ -Idir ] [ -Tdev ] [ -ffam ] [ -Mdir ] [ -dcs ]
33:       utf8   UTF-8    エンコーディングの     Unicode     (ISO     10646)     文字集合を利用する
59:       -t     tbl を使って前処理を行います。
93:       -Tdev  デバイス dev 用に出力します。デフォルトのデバイスは ps です。
97:              Print アクションを実行させます。 -Tps 以外が指定されている場合は、よい結果が得られません。
115:       -dcs
155:       EBCDIC ホストにおいては、出力デバイス ascii, latin1, utf8 は使用不可です。 同様に、 cp1047 は ASCII
162:              groff -mandoc -Tlatin1 foo.1 | less
166:              groff -m mandoc -Tlatin1 foo.1 | less
$ groff -h | grep -Pi "^\\-[DkT]|encoding"
-k      preprocess with preconv
-t      preprocess with tbl
-Tdev   use device dev
-dcs    define a string c as s
-Karg   use arg as input encoding.  Implies -k
-Darg   use arg as default input encoding.  Implies -k
$ man preconv 2>&1 | grep -ni euc
108:              big5, cp1047, euc-jp, euc-kr, gb2312, iso-8859-1, iso-8859-2,
115:              ascii, chinese-big5, chinese-euc, chinese-iso-8bit, cn-big5,
117:              cyrillic-iso-8bit, cyrillic-koi8, euc-china, euc-cn, euc-japan,
118:              euc-japan-1990, euc-korea, greek-iso-8bit, iso-10646/utf8,
120:              iso-latin-7, iso-latin-9, japanese-euc, japanese-iso-8bit, jis8,
121:              koi8, korean-euc, korean-iso-8bit, latin-0, latin1, latin-1,
$ grep ^JNROFF /etc/man.conf
JNROFF          /usr/bin/nkf -e | /usr/bin/groff -Deuc-jp -Tutf8 -mandoc
$ man ls 2>&1 | nkf -g
UTF-8
$ man useradd 2>&1 | nkf -g
UTF-8

よく見ると横幅がオーバーしているのに、文字の間に隙間があります。
groff を新しくして groff-1.19 の設定にしたところ、動きました。
cjk => linguas_ja になっていて groff-1.20.1-r1 の時には設定をしても off でした。
$ sudo ACCEPT_KEYWORDS="~x86" emerge -av sys-apps/groff
...
$ eix groff
[D] sys-apps/groff
     Available versions:  1.20.1-r1 ~1.20.1-r2 ~1.20.1-r3 {X examples linguas_ja}
     Installed versions:  1.20.1-r3(15時18分07秒 2010年10月23日)(linguas_ja -X -examples)
     Homepage:            http://www.gnu.org/software/groff/groff.html
     Description:         Text formatter used for man pages

$ grep ^JNROFF /etc/man.conf
JNROFF          /usr/bin/nkf -e | LANG=ja_JP.EUC-JP LC_ALL=ja_JP.EUC-JP /usr/bin/groff -Tnippon -mandocj | /usr/bin/nkf -w

$ grep -i linguas /etc/make.conf
LINGUAS="ja"

manコマンド自体の日本語がEUC-JPの場合の修正の例1。英語にする。
$ echo "sys-apps/man -nls" >> /etc/portage/package.use

manコマンド自体の日本語がEUC-JPの場合の修正の例2。エラー出力をutf8にする。
$ alias man='LANG=C LC_ALL=C /usr/bin/man'
$ cat /usr/local/bin/jaman
#!/bin/sh
# http://www.netfort.gr.jp/~tomokuni/lms/shell/text/shell3.txt
# 1.2  標準エラー出力のみをパイプ => (例 3) => を適用

BUF="`LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 /usr/bin/man $@ 3>&1 1>&2 2>&3 3>&-`"
RET="$?"
if [ -n "$BUF" ]; then
    echo "$BUF" | nkf -w 1>&2
    if [ "$RET" -eq 0 ]; then
        echo
    fi
fi
exit "$RET"
$ jaman
どのマニュアルを表示しますか?
$ jaman xxx
xxx のマニュアルはありません。
$ jaman -h
man, バージョン 1.6f
...

0 件のコメント: