理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> LaTeX関連 >> kpathsea
このエントリーをはてなブックマークに追加

kpathseaの利用法

  1. kpathseaについて
  2. 設定ファイル
  3. ホームディレクトリ置いたcls, sty, bib, bst等も検索させるためには
  4. mktexlsrであらかじめデータベースを作成する
  5. kpsewhichを用いてTeXで読まれているファイルを調べる

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 ディレクトリを検索することになります。

ホームディレクトリ置いたcls, sty, bib, bst等も検索させるためには

管理者でないなど$TEXMF以下をいじれない場合には、 ~/.cshrc に環境変数を定義しておきます。

setenv TEXINPUTS "~/Library/TeX//:"

最後に:を付けておけばデフォルトの設定に加えて ~/Library/TeX//を検索パスにすることになります。

BIBTeXの検索ディレクトリを追加するには、

setenv BIBINPUTS "~/Library/TeX/bib//:"
setenv BSTINPUTS "~/Library/TeX/bst//:"
書いておきます。

mktexlsrであらかじめデータベースを作成する

設定したディレクトリ以下を kpathsea は検索するのですが、ファイルやディレクトリが多くなると検索に時間がかかるようになります。そのためにあらかじめ mktexlsr を用いて、ファイルリストを作成しておくことが出来ます。

% mktexlsr

これは、ls -R $TEXMF > $TEXMF/ls-R を実行しているのと同じで、ls-R というリストファイルを作成します。これを作成しておくと検索が速くなりますが、実際にはファイルが存在してもこのリストに無いと、検索されません。新しいファイルを追加した場合には必ず mktexlsr を実行する必要があります。もし、ls-R ファイルが無ければ設定したところはすべて検索するので、mktexlsrは有害だ、と言う人もいます。

kpsewhichを用いてTeXで読まれているファイルを調べる

kpatheseaの検索パスにはサブディレクトリを指定する必要が無いので楽ですが、どのファイルが読み込まれているのか、探しているファイルがどこにあるのかを検索するに苦労します。

kpsewhichを用いて検索することが出来ます。

% kpsewhich article.sty
/usr/local/share/texmf/tex/latex/base/article.sty