kpathsea と xdvik と dvipsk

TeX 環境の構築 をして、 なにごともなく xdvik と dvipsk が使えていれば問題ないのですが、 何かしら引っかかることがあるかも知れません。 こんな時は、kpathsea の設定を疑って見ましょう。

ついでに、dvips の解像度の変更方法も述べておきます。

ただし、このページに書いてあることは いまいち自信がありません。 やったらできた、という程度のものですので、充分気を付けて下さい。


kpathsea とは

TeX 関係のライブラリを管理するもの、らしいです。 ライブラリのありかなどを記した kpathsea の設定ファイルは $TEXMF/web2c/texmf.cnf です。以後、
$TEXMF=/usr/local/share/texmf 
として話をします。

参考ページ

http://www.ascii.co.jp/pb/ptex/base/kpathsea.html

ls-R

kpathsea が $TEXMF の下をすべて検索するのは大変なので、 あらかじめどこになにがあるかを記した $TEXMF/ls-R というファイルがあります。 どうも、このファイルの記載と現状のディレクトリ構造が違うと、 特に目的とするディレクトリが記載されていないと、 texmf.cnf で何をやっても無駄のようでした。

というわけで、 $TEXMF 以下で何かをやったときにはls-R を更新しておきましょう。 更新には root になって mktexlsr を使います。

# cd $TEXMF
# cp ls-R ls-R.bak
# mktexlsr

xdvik について

xdvik も kpathsea を使っている(らしい)のですが、 こちらはあまり深く考えなくてもうまくいくようです。 xdvi のウィンドウを起ち上げてもすぐに消える、 という症状もありましたが、ghostscript を入れたら治りました。

dvipsk の動作(理解度20%)

dvipsk(コマンド名は dvips) は、 $TEXMF/dvips/base/config.ps に書かれた設定で、dvi を ps に変換します。 その際、PK フォントが見つからなかったら、 kpathsea 経由でライブラリパスを検索し、 mktexpk を使って .mf ファイルから pk フォントを作ります。 作られた pk フォントは /var/tmp/texfonts/pk あたりに格納されます。 ベクトルフォントを使う場合は、.vf ファイルを読みに行きます。

というわけで、dvipsk を正しく動作させるためには、

  1. $TEXMF/web2c/texmf.cnf (kpathsea の設定ファイル)
  2. $TEXMF/dvips/base/config.ps (dvipsk の設定ファイル)
の二つを設定する必要があります。

$TEXMF/web2c/texmf.cnf

texmf.cnf で設定する項目はいろいろありますが、ここでは 上の説明で使っているとおぼしき について触れておきます。

例えばベクトルフォントライブラリは
$TEXMF/web2c/texmf.cnf
VFFONTS = .:$TEXMF/fonts/vf//
などとそのありかが書かれています。 // はサブディレクトリ以下すべてを表します。この場合、

  1. カレントディレクトリ
  2. $TEXMF/fonts の下のどこかにある vf の下すべて
の順番で検索し、見つけたライブラリが使われます。 ベクトルフォントライブラリのファイルの名前は min10.vf のように拡張子 .vf が付いています。

格納場所がいっぱいあるときは、: で区切って続けられますし、 {A,B}/vf (=A/vf:B/vf) などと省略して書くこともできます。

TFMFONTS や PKFONTS についても同様です。

トラブルシューティング

dvipsk がうまく PS ファイルを作ってくれない原因の一つに、 ベクトルフォントを見つけられない場合があります。 「min10 がない」といって怒られる場合は、 まずどこかにないか探します。
% find /usr/local/share -name 'min10.vf' -ls
検索パスの /usr/local/share はおそらくこのへんだろうと言う 推測に基づいています。もっと検索範囲を広げても構いません。

さて、見つかったら texmf.cnf の VFFONTS にパスを足しておきます。 例えば、/usr/local/share/fonts/makejvf/vf/min10.vf が見つかったら、 次のように書いておきます。
$TEXMF/web2c/texmf.cnf
VFFONTS = .:$TEXMF/fonts/vf//:/usr/local/share/fonts/makejvf/vf//

代りに、今あるパスの中にリンクを作っておくのでもよいです。 この場合は、
# ln -s /usr/local/share/fonts/makejvf/vf /usr/local/share/fonts/vf/makejvf
とかなんとか。この後、mktexlsr で ls-R を更新しておきましょう。

$TEXMF/dvips/base/config.ps

dvipsk の設定は、このファイルで行います。 デフォルトではパーミッションが 444 になってますので、 変更する時は、まず書き込み許可を出して、 終わったらその書き込み許可を削っておきます。

# cd $TEXMF/dvips/base
# cp config.ps config.ps.orig
# chmod +w config.ps

dvips の解像度の変更

$TEXMF/dvips/base/config.ps
D 300
→ D 600
# chmod -w config.ps

FreeBSD の部屋


Jun. 30, 2000