優雅な生活の設計と実装

The Design and Implementation of the Gracious Days


LAST MODIFIED: 2004/07/24 19:43:13 UTC

新しい秩序の確立は、他の何にも増して難しく、
成功する可能性が低く、危険な事業である。
改革者は旧秩序から利益を得ている
全ての者を敵にまわし、
新秩序から利益を受けるはずの者からは
及び腰の支持しか集められない。
--- Niccolo Machiavelli, The Prince

この種の「保護」は初心者を保護するかも知れないが、
熟練ユーザを窮地に追い込むことになる。
というのは、何が親切であり、何が適切でないかかという
オペレーティングシステムの考え方の裏をかくことばかりに
かなりの労力を費やさなければならないからである。
--- A.S.Tannenbaum, Modern Operating Systems


不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。

July 2004

感想はこちらまで (内容は匿名のメールで送られます)

コメント:

注: お返事が必要な場合は直接メールください。 ただし、確実にお返事するかどうかはわかりませんのであしからず。

Sunday, July 25

* dvipsk and dvipsk-vflib

「japanese/teTeX でインストールされる xdvi は VFlib 版ですが、dvips が VFlib 版でないのはなぜでしょうか」という質問をいただきました。

まず、xdvi と dvips の現状について説明します。 japanese/xdvik-vflib は、 xdvik-22.40y1 をベースに、 http://www.nn.iij4u.or.jp/‾tutimura/tex/xdvi.html で公開されている日本語化パッチを追加したものです。 このパッチは、日本語フォントを表示するために VFlib、もしくは FreeType を使います。現在の ports ツリーに入っている日本語対応 xdvi は、これが唯一です。

一方、dvips は japanese/dvipsk と japanese/dvipsk-vflib があります。 前者は teTeX に含まれている dvipsk 5.92b に ASCII が配布している日本語化パッチを追加したもの、 後者は dvipsk 5.78 を日本語化し、さらに VFlib 対応パッチを加えたものです。 ただし、dvipsk-vflib はバージョン番号から予想できるように、 まともに保守されていません。VFlib 対応パッチが更新されていないため、 pTeX のバージョンアップからだいぶ取り残されてしまっています。

次に「VFlib 対応」とは何なのかを説明します。VFlib は、 日本語のアウトラインフォントを操作するライブラリのひとつです。

xdvi の場合、日本語フォントを使って画面に表示しなければなりませんから、 日本語対応させるには、VFlib のようなライブラリが必須です。 japanese/xdvik-vflib があるのに、japanese/xdvik がない、というのは そういう理由です。もっとも、現在 xdvik-vflib は、VFlib ではなく デフォルトで FreeType を使うように変更してあります。 port 名も japanese/xdvik に変更する予定です。

一方 dvips は、ちょっと事情が異なります。誤解されている方も多いかと思うのですが、 日本語 TeX を使う上で、dvips の VFlib 対応が必須というわけではありません。

dvips は、ASCII の日本語化パッチを追加すると Ryumin-Light や GothicBBB-Medium などのフォントの使用を認識して、PostScript ファイルにフォント名を書き込みます。正確な対応表は (japanese/teTeX をインストールしているなら) share/texmf/dvips/ptex/ptex-kanji.map にあります。

一方 VFlib に対応した dvips は、フォント名ではなく、 フォントを展開した画像データとして、PostScript ファイルを生成します。 つまり日本語の部分は画像になるわけです。

これは利点と欠点があります。フォント名だけを埋め込んで生成した PostScript ファイルはサイズが小さくなりますが、そのフォントを持っていないプリンタでは印刷できません。 Ryumin-Light や GothicBBB-Medium は日本語 PostScript プリンタなら大抵持っていますが、 欧文専用の PostScript プリンタでは出力できないファイルになります。 反対に、VFlib 対応版で生成したものは、欧文専用 PS プリンタでも出力できますが、 サイズが非常に大きくなります。

さて、japanese/teTeX でインストールされるものですが、 原則的に VFlib を使わない方を標準にしています。 こう判断した理由は、以下のとおりです。

よく使われているフォントを使っている限り、通常の利用において VFlib 対応のあるなしを意識することは稀だと思います。 PostScript プリンタを使っていて、プリンタが対応していないような 特殊な日本語フォントを使っている場合でも、Ghostscript を使ってフォントを展開することが可能ですので、 どうしても困るということはないでしょう。 PostScript プリンタを使っていないなら、どちらを使っても同じです。

簡単にまとめます。

ちなみに、昔の VFlib 対応版とはフォントの設定場所が異なります。 dvips は share/texmf/dvips/ptex/ptex-kanji.map を xdvi は share/texmf/xdvi/vfontmap を、日本語フォントの対応表として使います。

おそらく dvips の方を変更しなければならないケースはほとんどないでしょう。 xdvi は東風フォントを標準にしていますが、 vfontmap ファイルを書き換えれば、画面表示に使う日本語フォントを変更することができます。 これは画面表示のみに影響するもので、印刷とは無関係です。

* japanese/teTeX (continued)

「japanese/ptex は japanese/ptex-tetex に置き換えられる」とか 「japanese/ptex-tetex は texmf.cnf を書き換える必要がある」とか「dvips や xdvi が動かない」とかいうのは、根拠のない噂です。 japanese/teTeX が信用できない人は、 japanese/ptex 使うとか、自分でインストールするとかしましょう。

古い dvips や xdvi を入れたままにしている、 $TEXMFCNF とか $TEXMFMAIN とか $TEXMFLOCAL とかの環境変数を自分で定義している、 share/texmf に古いファイルが残っている、 あたりがインストールに失敗する典型例のようです。

Saturday, July 24

* japanese/teTeX (continued)

teTeX の設定を理解している人向けの説明。

japanese/ptex-tetex は、texmf.cnf を $TEXMF/web2c-ptex にインストールします。 「$TEXMF/web2c にコピーしなきゃいけないんじゃないか」と考える人がいるかも知れませんが、 ptex-tetex はデフォルトの TEXMFCNF に手を入れてあって、 $TEXMF/web2c-ptex → $TEXMF/web2c の順に texmf.cnf を探すようになっています。 つまり、teTeX と pTeX とで、使っている kpathsea のデフォルト値 (ハードコードされている) が違っているわけです。 print/teTeX-base でインストールされる kpsepath などは、 $TEXMF/web2c を最初に見に行きますので、pTeX の場合のファイル検索順を 調べたい場合には、$TEXMFCNF を適切に設定しましょう。

NTT JTeX も同様に、$TEXMF/web2c-jtex を先に見に行くようにしてあります。 最初は統合しようと思っていたのですが、分離しておかないとアップグレードが難しくなりますし、 texmf.cnf がひとつだと、dvips を 2 個入れるというような芸当ができなくなるので、 今のような形になっています。

share/texmf-* がどう使われるかについては、texmf.cnf を読めば理解できると思います。

Friday, July 23

* in the meanwhile

気づいたら半年くらいほったらかし。

* japanese/teTeX

users-jp 80203 でざっと説明してみる。 まあ ports が複雑なのも悪いんですが、maintainer がバラバラなのでなかなか難しいところです。 いろいろな人に問い合わせて、maintainer 変わってもらえる場合は引き受けて、 ダメって言われたものは別 ports を作ってます。 print/xdvi と print/xdvik とか、print/dvips と print/dvipsk-tetex とか、 似たようなものがぽこぽこあるのは、そんな理由。 日本語関係のは、これでもだいぶ数減らしましたけどね。

最近の (teTeX ベースになった) TeX 環境の設定は解説している資料が少ないような気がするので、 ハンドブックにでも入れようかと考え中。 「日本語 TeX って何を入れたらいいのか良くわかりません」っていう人は、 今入っている TeX 関連の package を全部消して、 念のため /usr/local/share/texmf も全部消して、 japanese/teTeX を入れましょう。 何も悩まなくても、日本語が使える xdvi と dvips が入るようになってます。 クラスファイルとかフォントとかいじっているなら、share/texmf のバックアップをとって、必要な部分だけ share/texmf-var にコピーしてください。

"ptex-tetex FreeBSD" とかで検索すると、japanese/ptex はもう使えなくなるとか、 入れ換えようとしてハマりましたとかいうのが引っかかるみたい。 得られる環境はほぼ同じですが、両者は (ports レベルの) 構造が根本的に違うものなので、 中途半端に入れ換えても動きません。そもそも、昔の print/teTeX や japanese/ptex は、構成要素を中途半端に入れ換えると不整合をおこしやすい構造を持っていて、 今回の ptex-tetex やら何やらは、それが嫌でつくったものなのです。