mendex の man ドキュメントが文字化けしている

mendex の man ドキュメントが文字化けしている

- ワトソン の投稿
返信数: 24
macOS Sierra + TeX Live 2016 の環境で(通常の設定の場合)

$ man mendex

をするとドキュメントの日本語部分が文字化けするようです(添付画像).
/usr/local/texlive/2016/texmf-dist/doc/man/man1 にあるソース mendex.1
のエンコーディングは UTF-8 (BOM無), LF のようでしたので環境変数 $LANG を
ja_JP.UTF-8 に設定した状態で表示を試みるなどしましたが,文字化けは
治りませんでした.さらに

$ texdoc mendex

により表示される mendex.man1.pdf の中身も同様に文字化けしており,
現状では少なくとも macOS + TeX Live の環境を使用する一般のユーザが
mendex のドキュメントを読もうと思ってもなかなか難しい状況になっています.


一応の対処法として,私の環境では

1. Homebrew で最新の groff をインストールする
2. /etc/man.conf 94行目を次のように書き換える
NROFF /usr/local/bin/groff -Dutf8 -Tutf8 -mandoc -mja -E

という手順を踏むと正しい表示となることが確認できました.ただし,以下に示す
参考文献のように JNROFF の設定のみを変更しても(これにより vim の日本語
man ページは正しく表示されましたが)本症状は改善しませんでした.
参考:http://qiita.com/yu-ichiro/items/ea9c672e2d7488416db9
添付 SS_2016-11-07_16.01.29.png
ワトソン への返信

Re: mendex の man ドキュメントが文字化けしている

- 和田 勇 の投稿
質問者の回答にはなっていませんが、情報まで ...

2015 の mended.man1.pdf は preview でちゃんと日本語で表示されますが、2016 のは文字化けしています。サイズとチェックサムは以下の通りです。

-rw-r--r-- 1 root wheel 157081 2 4 2016 /usr/local/texlive/2015/texmf-dist/doc/man/man1/mendex.man1.pdf
-rw-r--r-- 1 root wheel 41127 4 27 2016 /usr/local/texlive/2016/texmf-dist/doc/man/man1/mendex.man1.pdf
-rw-r--r-- 1 root wheel 15872 2 2 2016 /usr/local/texlive/2015/texmf-dist/doc/man/man1/mendex.1
-rw-r--r-- 1 root wheel 15872 2 2 2016 /usr/local/texlive/2016/texmf-dist/doc/man/man1/mendex.1

15c51a35ba2efabd8739219760c6876f /usr/local/texlive/2015/texmf-dist/doc/man/man1/mendex.man1.pdf
1d31d08f227b1ec12b3751322441ef08 /usr/local/texlive/2016/texmf-dist/doc/man/man1/mendex.man1.pdf
7e5db30a96279c3178b6ce53115cf7f9 /usr/local/texlive/2015/texmf-dist/doc/man/man1/mendex.1
7e5db30a96279c3178b6ce53115cf7f9 /usr/local/texlive/2016/texmf-dist/doc/man/man1/mendex.1

ということで 2016 の mendex.man1.pdf を作成する際何かが起きたのではないのでしょうか?

和田 勇 への返信

Re: mendex の man ドキュメントが文字化けしている

- ワトソン の投稿
私の投稿はそもそも「質問」になっていないので単なる「現状報告」です.
現在の mendex メンテナもしくはその辺の事情に詳しい方がいらしたら
対処していただけると嬉しい,というような意図がありました.

私のマシンでも TeX Live 2015 の PDF は大丈夫だったので TL 2016 で新たに
発生した問題のようですね.TL 2015 の man を表示してみたいのですが私には
方法がわかりません……
(man の -M オプションを試しているのですがうまくいきません)
ワトソン への返信

Re: mendex の man ドキュメントが文字化けしている

- 前田 一貴 の投稿
TeX Live のリポジトリの履歴を見てみます.

http://www.tug.org/svn/texlive/trunk/Master/texmf-dist/doc/man/man1/mendex.1?view=log
http://www.tug.org/svn/texlive/trunk/Master/texmf-dist/doc/man/man1/mendex.man1.pdf?view=log

PDF については,mendex.1 を UTF-8 に変換して,これから make で PDF を自動生成するところで失敗しているのでしょうか.

自分の環境 (Linux + TL2016) でも man で表示してみましたが,化けることなく表示されました.
前田 一貴 への返信

Re: mendex の man ドキュメントが文字化けしている

- 和田 勇 の投稿


Linux の man は OK ということなので MANPATH に mendex.1 のあるディレクトリを MANPATH=$MANPATH:. などと調整すると Linux では man は OK ですね。
mended.1 自体は utf8 なので linux であればできそうだとは予想していたのですが。なお MacOS ではダメでした。man コマンド自体が OS ので man マクロ見ているところ違いだろうしな...


それから、こちらで linux で groff -man mendex.1 > mendex.ps したものを gs で見ると文字化けします。TL2016 で配られている mendex.man1.pdf を firefox で見ても同じような文字化けですね...

そうそう pdf ファイルには作成時の情報が入っていますよね
TL2015 の方は

/Creator(groff version 1.10 \(jversion 0.99\))/ModDate(D:20160204224521+09'00')/Producer(Acrobat Distiller 11.0 \(Windows\))


で、TL2016 の方は /Creator(groff version 1.22.3) となっています。多分 pstopdf とか使ってるのかな?


groff のバージョンが違いますね ... こっちのせんで追っかけて見ますが、久々の roff 系のコマンドなので四苦八苦しそうです。


ログの方、あまり精通していないので追っかけられません ...
前田 一貴 への返信

Re: mendex の man ドキュメントが文字化けしている

- 前田 一貴 の投稿
PDF については,履歴をよく見ると1年前,2年前もKarlさんが自動生成して文字化け→角藤先生が手動で生成し直し
となっているので,この自動生成プロセス自体をなんとかしてもらわないと,今回手動で直したとしても
また同じ事が繰り返されるのではと思います.

英語で書き直せればよいのかもしれませんが,内容的に日本語が避けられなさそうなので難しいですね.
前田 一貴 への返信

Re: mendex の man ドキュメントが文字化けしている

- aminophen の投稿
> この自動生成プロセス自体をなんとかしてもらわないと,

というのは本当にその通りだと思います。ただ、プロセスを変えようにも
日本語 groff は標準では提供されておらず
http://www.yansite.jp/jman.html
等を見るとパッチをあてて日本語用にビルドしないといけないようです。

自動生成するには、この日本語 groff を TeX Live に含めるところから、
ということにもなりかねないので(可能ならそれでもよいのでしょうけど)、
わざわざ man 形式でなくても、もうむしろ pLaTeX 文書として書きなおす
という選択肢はないのでしょうか。texjporg で ptex-base のドキュメントを
提供しているのと同様に、mendex のドキュメントを用意するというのは悪く
ないと思います。
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- ワトソン の投稿
私も mendex の「日本語」ドキュメントは pLaTeX 文書で書き直しても
いいように思いました.

一方で,mendex はコマンドラインから呼び出す通常のプログラム
(TeX 的には外部プログラム)なので,man を完全に廃止してしまうのも
個人的には微妙な気がします.

そこで折衷案として(日本語が必要な部分を除いた)簡易的な英語版 man を
用意して,その中でより詳しい記述は pLaTeX 文書の中にあると言及する
ような形態をとるのはどうでしょうか.
ワトソン への返信

Re: mendex の man ドキュメントが文字化けしている

- aminophen の投稿
> (日本語が必要な部分を除いた)簡易的な英語版 man を用意して,
> その中でより詳しい記述は pLaTeX 文書の中にあると言及する

英語版 man が現在は存在しないので、そのこと自体を解消するという
意味でも私は賛成です。

もっと話を詰めるならば:
英語版 mendex.1 を作ってしまうと、自動的に mendex.man1.pdf も作られ
るのでしょうか。その場合、pLaTeX 版の mendex.pdf と比較して
texdoc mendex
で表示されるのは二つのうちどちらになるのでしょうか?
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- 和田 勇 の投稿
■英語版 mendex に関して

mendex のマニュアルに関して 2012 に netbsd で話題に上がっていたようです。それによると英語版 mended man マニュアルは、debian の方にあるかもしれません。

http://www.jp.netbsd.org/ja/JP/ml/tech-pkg-ja/201203/msg00004.html

この内容の中のリンク先が途絶えているので debian の方を追跡すると良いかもしれませんね。

aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- Akira Kakuto の投稿
実験してみないと確実ではありませんが,
texmf-dist/doc/support/mendex/mendex.pdf
があれば
texdoc mendex
では mendex.pdf が
texdoc mendex.man1
では mendex.man1.pdf
が読めるのではないかと思います。
Akira Kakuto への返信

Re: mendex の man ドキュメントが文字化けしている

- aminophen の投稿
和田さん

Debian の man page はどうやらこれのようです
https://sources.debian.net/src/mendexk/2.6e-3.2/debian/mendex.1/
だいぶ古いので、これをベースに書き換えればよいかも
しれませんね。

角藤さん

mendex.man1.pdf のアップデートありがとうございます。

年度ごとにリビルドされるということでしょうから、
2017 年になる前に
「mendex.1 を英語化して、別途 pLaTeX 文書も作成する」
という方向で進める、ということでいきましょうか。
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- 和田 勇 の投稿
アセト アミノフェンさんへ、英語版の件お任せします。

できるかどうか確証もてないですが man.conf の調整を試みようと思っています。(こうなると texlive の話ではなくなってしまいますし)

角藤さんへ、どうしたら groff で出力される ps ファイルの文字コードを読めるようにするか教えて頂けると助かります。
和田 勇 への返信

Re: mendex の man ドキュメントが文字化けしている

- Akira Kakuto の投稿
> どうしたら groff で出力される ps ファイルの文字コードを
> 読めるようにするか教えて頂けると助かります。

大昔,非常に古い groff に 日本語パッチがあたった
ものを make したことがあり,mendex.1 はその古い
groff でも大丈夫だったというだけです。
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- Akira Kakuto の投稿
> 「mendex.1 を英語化して、別途 pLaTeX 文書も作成する」
> という方向で進める、ということでいきましょうか。

そうしてもらうと,見落としが無くて有難いと思います。
日本語が読めない人にとっても便利でしょう。
Akira Kakuto への返信

Re: mendex の man ドキュメントが文字化けしている

- aminophen の投稿
とりあえず mendex のドキュメントを管理するリポジトリを
立てました。texlive svn から取ってきたドキュメント類と
Debian の相当古い mendex.1 を置いただけになっています。
https://github.com/texjporg/mendex
ここで英語版 mendex.1 のアップデートと、mendex.1.ja の
pLaTeX 文書への変換を行うこととします。

GitHub アカウントを持っていらっしゃる方は、どんどん
pull request してください。
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- Akira Kakuto の投稿
完成した mendex.1 は,メンテナの ttk さんに
TL source tree 等にインストールして戴き,
mendex.tex と mendex.pdf は
doc/support/mendex
にインストールされるよう,例えば
CTAN/info/mendexdoc
にアプロードすると良いのではないかと思います。
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- t tk の投稿
みなさん、ご無沙汰しております。
英語版 mendex.1 という方向について賛同します。

確か、 upmendex 用に作りかけたまま中断したものが手元にあったと思います。
通じるレベルの英語になっているかどうかの自信が今一つのものですが、
たたき台にご提供できるかもしれません。

makeindex と mendex は共通のオプションなども多いのですが、
確か、ライセンスが異なっており、マニュアルもそのままコピペしてもいいものか、
気になった記憶があります。

時間が出来たらpull request出そうかと思います。

t tk への返信

Re: mendex の man ドキュメントが文字化けしている

- aminophen の投稿
> 確か、 upmendex 用に作りかけたまま中断したものが手元にあったと思います。
> 通じるレベルの英語になっているかどうかの自信が今一つのものですが、
> たたき台にご提供できるかもしれません。

あれば非常にありがたいです!

> 確か、ライセンスが異なっており、マニュアルもそのままコピペしてもいいものか、
> 気になった記憶があります。

確かにライセンスが異なっていて、mendex のほうが緩い内容になっていると思います。
とはいえ「mendex は makeindex をベースにしたプログラムである」こと自体には問題が
ないとする判断が TeX Live でなされているのだと私は推測していました。もしそうならば
マニュアルの流用も大きな問題ではない気がするのですが…
どのようになっているのでしょう?
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- t tk の投稿
mendexとmakeindexのソースをざざっと比べてみたところ、
public domainと明記されている qsort.c, qsort.h 以外は全く別物のようです。
mendexは、makeindexの仕様をエミュレートしているものの
スクラッチから書き起こした独立のソフトである、
というのが私の理解です。

ライセンスが共通(例えばBSDライセンス同士とか)ならば、流用も許容されるかもしれませんが、
そうではなさそうなので私としては慎みたいと思いました。
そのため、私の訳した英語版mendex.1 は makeindex のものを見ずに訳しました。
英語の得意な方にチェックしていただけるとありがたいです。

ワトソン への返信

Re: mendex の man ドキュメントが文字化けしている

- 和田 勇 の投稿
元の記事にぶら下げます。

内容的には macos の man groff な話題ですが、mendex の man 表示ができないということで ギリギリ texlive な話題になるとは思います。

さて

1) macports homebrew などで groff をインストール
2) /etc/man.conf の NROFF のタグを /usr/local/bin/groff -Dutf8 -Tutf8 -mandoc -mja -E に変更
3) mendex.1 を man で探せるように MANPATH (環境変数や /etc/man.conf の同タグ)に設定する。あるいは /etc/manpaths に追加する。


ここまでは実施されているとは思いますが ... 1) でインストールした groff は LANG を元に情報を探し出して言語対応して表示するらしいので ...
(ここの部分に関しては 標準の groff の日本語対応を分析中です)

4) 日本語マニュアルディレクトリを作成
mkdir -p ~/.texlive2016/texmf-dist/doc/man/ja/man1

5) オリジナルから link をはる
ln -s /usr/local/texlive/2016/texmf-dist/doc/man/ja/man1/mendex.1 ~/.texlive2016/texmf-dist/doc/man/ja/man1

6) 環境変数で 4) で作成した場所の情報を先に見るよう調整
export MANPATH=$HOME/.texlive2016/texmf-dist/doc/man:$MANPATH

この方法で 2) の部分を /etc/man.conf から ~/man.conf に作成し修正して
man -C ~/man.conf mendex
として表示できるようになりました。~/man.conf で問題がなければ /etc に上書きするなり alias するなり対処できると思います。

#まだ ps 経由 pdf 作成は未完 :-(

※遠い過去の記憶を元に最近の roff 環境をあれこれ想定しつつ試行錯誤したものなので、文中不適切な表現、不正確な表現があるかと思いますのでご指摘いただければ幸いです。

和田 勇 への返信

Re: mendex の man ドキュメントが文字化けしている

- ワトソン の投稿
日本語 man を表示する方法を検討してくださっているようでありがとうございます.

> macos の man groff な話題

上記の点について補足ですが,前田さんが Linux 環境で正しく表示できたという
情報を提供してくださっています.しかし,例えば Ubuntu などは man を含む
コマンドライン環境全般がほぼ完全に日本語化可能なよう整備されている一方で
そうでない UNIX 系環境も多いはずです.したがって macOS 以外の UNIX 系環境
(前田さんがお使いのもの以外の Linux 環境を含む)で同様の問題が発生している
可能性は大いにあり得るのではないでしょうか.
和田 勇 への返信

Re: mendex の man ドキュメントが文字化けしている

- aminophen の投稿
> ps 経由 pdf 作成

私が既にコメントしていたように、「日本語 groff」をビルドすれば文字化けしない ps を作れました。

具体的に私が試した方法は以下です(Mac OS X 10.7.5 Lion)。
https://answers.launchpad.net/ubuntu/+source/groff/1.18.1.1-12 からソースを入手
* groff_1.18.1.1.orig.tar.gz
* groff_1.18.1.1-12.diff.gz
展開してパッチをあてる
$ patch -p1 <groff_1.18.1.1-12.diff
$ LDFLAGS=-liconv ./configure --enable-multibyte
$ make; make install

これで /usr/local/bin/groff が日本語 groff になるので
$ /usr/local/bin/groff -man mendex.1 >mendex.man1.ps
$ ps2pdf mendex.man1.ps
こうすると文字化けしません。

# Cygwin で make しようとしたらエラーで落ちた…
aminophen への返信

Re: mendex の man ドキュメントが文字化けしている

- t tk の投稿
もう本件の課題の解決策としては、日本語roff形式の入力ファイルを使わない方に進んでいて今更ではありますが、最新の本家groff 1.22.4に対して日本語PostScript(フォント非埋め込み)が出力できるようになるパッチを書きましたのでお知らせします。


ご興味があればこちらにお越しください。

やったこと
  1. PostScript出力用ポストプロセッサ grops にて、psname に "-UTF16-" があるとき UTF16 の HEX codeを出力するようにした。フォント非埋め込みの CJK のフォントが扱えるようになる。
  2. フォントの定義で、Unicode code point の範囲で指定できるようにした。この機能は jgroff 系に存在したもの。jgroffのソースから該当部分を切り出して最新の本家 groff に合うようにした。
もう少し検討して、本家 GNU にプルリクエストを出そうと思っています。

CJKの組版品質にかかわる機能で jgroff にあって、今回のものに無いものが沢山あります。また、本家groffにCJK向けに jgroff とは別の実装で取り込まれている機能もあります。
現状の品質は、最低限としてはまあ許せるけどもう少し何とかならないかなと思うレベルだと思います。
議論してくださる方がいらっしゃれば歓迎します。