| ホーム >> | LaTeX >> | kpathsea |
kpathseaは他の対応したプログラムから利用される検索機能を持つライブラリです。名前の由来は、Karl Berry氏によって作られたpath searchingというところからです(参考)。LaTeXはこれを用いて設定ファイルなどを探します。またxdvikやdvipskのkもkpathseaのkです。ただしプログラム名は、xdviのままなので注意。)様々なファイルを検索する必要があるプログラムを開発するときにはこのライブラリをリンクすれば良いわけです。
kpathseaは設定ファイルに指定されたディレクトリを検索します。設定ファイルは、 $TEXMF/web2c/texmf.cnf です。この中に、
TEXINPUTS.latex = .:$TEXMF/tex/{latex:generic:latex209:}//
のように書いてあります。パスのリストは:で区切ります。また {latex:generic:latex209:} のように複数のパターンを併記することも出来ます。最後の//はそれ以下のサブディレクトリも検索することを表しています。
またTEXINPUTS.latexという書き方は、latexと言うコマンドの環境変数TEXINPUTSに=より右辺を設定することを表しています。
その他にも、
$TEXMF/fonts//tfm
のように指定すれば、fontsディレクトリ以下の tfm ディレクトリを検索することになります。
管理者でないなど$TEXMF以下をいじれない場合には、 ~/.cshrc に環境変数を定義しておきます。
setenv TEXINPUTS "~/Library/TeX//:"
最後に:を付けておけばデフォルトの設定に加えて ~/Library/TeX// を検索パスにすることになります。
BIBTeXの検索ディレクトリを追加するには、
setenv BIBINPUTS "~/Library/TeX/bib//:"
setenv BSTINPUTS "~/Library/TeX/bst//:"
書いておきます。
設定したディレクトリ以下を kpathsea は検索するのですが、ファイルやディレクトリが多くなると検索に時間がかかるようになります。そのためにあらかじめ mktexlsr を用いて、ファイルリストを作成しておくことが出来ます。
% mktexlsr
これは、ls -R $TEXMF > $TEXMF/ls-R を実行しているのと同じで、ls-R というリストファイルを作成します。これを作成しておくと検索が速くなりますが、実際にはファイルが存在してもこのリストに無いと、検索されません。新しいファイルを追加した場合には必ず mktexlsr を実行する必要があります。もし、ls-R ファイルが無ければ設定したところはすべて検索するので、mktexlsrは有害だ、と言う人もいます。
kpatheseaの検索パスにはサブディレクトリを指定する必要が無いので楽ですが、どのファイルが読み込まれているのか、探しているファイルがどこにあるのかを検索するに苦労します。
kpsewhichを用いて検索することが出来ます。
% kpsewhich article.sty
/usr/local/share/texmf/tex/latex/base/article.sty