$ 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
...