Yamamoto's Laboratory
 
基本事項
 
 
 

どのような知識が必要か?

デフォルトの設定で使うならば,ここで示す知識は不要です.LaTeX のデフォルトの設定は良くできており,十分美しい文書に仕上がります.

設定に関すること

TeX のディレクトリーについて

TeX は様々なファイルから構成されます.

TeX ディレクトリー構造(TeX Directory Structure: TDSと略す)は,TeX Users Group (TUG) のメンバーによって提案された,TeX の標準的なディレクトリー構造です.

パスについて

スタイルファイルは,ドキュメントのソースファイル(*.tex)と同じディレクトリーに置くこともできます.一度しか使わないスタイルファイルならば,それでも良いです.しかし,使い回す場合には所定のデレクとリーにスタイルファイルを保存し,プリアンブルで呼び出す方が便利です.TeX は kpathsea ライブラリーを使いスタイルファイル等を捜します.TeX の Web2C の実装では,kpsepath はより強力な kpsewhich を呼び出します.パス検索では,クラスファイル (*.cls) とスタイルファイル (*.sty) は,TeX ファイルと見なされます.具体的には,次のコマンドでパスが分かります.

$ kpsepath tex | tr : '\n'

パスの最後が「//」で終わっているものは,再帰的にサブディレクトリーも検索対象になります.一方,先頭が「!!」の場合,ディスクは捜さないで ls-R のデータベースのみを捜します.

kpathsea

kpathsea は,指定したディレクトリーからファイルを検索のためのライブラリーです.シェルが実行ファイルを検索するときにも使われます.k は作成者の Karl Berry の頭文字です.残りは,path searching です.LaTeX の関わりの深い Dviljk や Dvipsk, GNU font utilities,Web2c,Xdvik は,このライブラリーと平行して,開発が進められています.kpathsea は,TeX Live の一部です.このライブラリーの動作を理解すると,難解な LaTeX の設定が分かります.

検索するパスは,少しばかりの飾り (オプション) がついたディレクトリー名を指定します.複数のパスを指定する場合には,コロン区切りのリストにします.たとえば,ファイル「hoge」を検索パス「.:/dir」とした場合,最初に「./hoge」,次に「/dir/hoge」を探索します.最初のマッチあるいはすべてのマッチを返します.非 Unix システムの場合,コロンやスラッシュの代わりに他の記号が使われることもあります.kpathsea は,OS の規則にできるだけ従います.

変数 TEXMF は,コマンド「kpsewhich -var-value TEXMF」で調べることができます.

読み込まれるファイルの検索には,コマンド「kpsewhich」を使います.たとえば 「amsmath.sty」の場所を捜す場合には,

$ kpsewhich amsmath.sty

とします.

設定ファイル (texmf.cnf)

texmf.cnf とは

TeX 関係の設定は,ファイルtexmf.cnf で管理されています.このファイルのパスは,以下のコマンドでわかります.

$ kpsewhich -all texmf.cnf

表示されたすべてのファイルの設定が反映されます.異なる設定がある場合,先に表示されたファイルの設定が反映されます.

ディレクトリー

LaTeX が読み込むフィルの検索には,kpathsea ライブラリが使われます.その標準的な検索パスは,設定ファイル「texmf.cnf」に書かれます.このファイルのパスは,「kpsewhich -var-value TEXMFCNF」で調べることができます.このコマンドを実行すると,コロンで区切られた複数のディレクトリーが表示されます.最初のファイルのみならず,そこにある全ての texmf.cnf が読み込まれます.同じ定義がある場合,先に読み込まれた定義の方が優先されます.

検索パスファイル「texmf.cnf」では「環境変数名[.プログラム名] = 検索パス」というように書かれます,プログラム(コマンド)が使う環境変数を定義しています.プログラム名が無い場合,すべてのプログラム,共通になります.変数が示す検索パスは,texmf.cnf のファイルを見るか,コマンド「kpsewhich -var-value 環境変数名[.プログラム名]」で調べることができます.

texmf.cnf で定義されている環境変数を基に,kpathsea は検索します.以下,texmf.cnf に記載されている代表的な環境変数の内容を示します.

BIBINPUTS 参照文献ファイル(*.bib)とそのスタイルファイル(*.bst)を格納するディレクトリーを示します.
TEXMFMAIN この変数は,実行ファイルを格納するディレクトリーを示します.しかし,Ubuntu のようにきちんとしたパッケージシステム (apt-get) がある場合には,このディレクトリーは不要です.
TEXMFDIST これは,TEXMFMAIN に入れない様々な TeX ファイルを格納するディレクトリーを示す変数です.これもまた,OS にパッケージシステムがある場合は不要です.代わりに,このディレクトリーにはTeX の基本パッケージのファイルが格納されます.
TEXMFDEBIAN Debian パッケージの検索ツリー(ディレクトリー)です.
TEXMFLOCAL 追加のファイルを入れるディレクトリーです.
TEXMFSYSVAR 実行時のデータがストアーされるディレクトリーです.
TEXMFSYSCONFIG 設定データの保管ディレクトリーです.
TEXMFHOME ユーザー毎の texmf ツリーを作るためのディレクトリーです.
TEXMFVAR 実行時のキャッシュデータを保管するファイルのようですが,詳細は不明です.
TEXMFCONFIG ユーザー毎の設定ファイルです.

これらの他にも,texmf.cnf には様々な環境変数があります.

ローカルディレクトリー

ユーザーがスタイルファイルを追加する場合には,環境変数「TEXMFLOCAL」が示すディレクトリーに必要なファイルを保存します.このディレクトリーは,「kpsewhich -var-value TEXMFLOCAL」で調べることができます.私の環境では,「/usr/local/share/texmf」でした.

TDS (TeX Directory Structure) に従いTEXMFLOCALのサブディレクトリーに,ファイルを入れます.具体的には,以下のようにします.

サブディレクトリー 内容
$TEXMFLOCAL/doc/latex/packagename/ 説明書類 (README, *.pdf, *.txt, *.doc, *.tex, …)
$TEXMFLOCAL/source/latex/packagename/ ソース (*.dtx, *.ins)
$TEXMFLOCAL/tex/latex/packagename/ 本体 (*.sty, *.cls, *.fd, *.def, *.cfg, …)

ユーザーがファイルを追加する場合,まずは次節を読むことを勧めます.

ユーザーファイル

ユーザー毎に,texmf ツリー を作成することができます.ユーザーのディレクトリーにファイルを置くことができるのでお勧めの方法です.ユーザーが作成しドキュメントで共用するファイルは,スタイルファイル (*.sty) と文献データベースファイル (*.bib) です.これらを作成した場合,保存先が問題になります.ソースファイルと同じディレクトリーに保存することもできますが,スマートではありません.これらのファイルは使い回ししますで,ソースファイルとは独立のディレクトリーに置くことを勧めます.ここでは,これらのファイルを個人で使う場合とグループで使う場合に分けて説明します.

個人

スタイルファイル(*.sty)

スタイルファイルの検索パスは,次のコマンドでわかります.

$ kpsewhich -var-value TEXINPUTS.platex

この結果を見るとスタイルファイル (*.sty) の保管場所がわかります.私の環境では,個人のスタイルファイルの保管場所のパスは次のとおりでした.

スタイルファイル(*.sty)を格納するディレクトリー
Linux の場合
 ~/.texlive2015/texmf-config/{platex,latex,generic,}/
 ~/.texlive2015/texmf-var/{platex,latex,generic,}/
 ~/texmf/{platex,latex,generic,}/
Windows の場合
 C:/Users/ユーザー名/.texlive2015/texmf-config/{platex,latex,generic,}/
 C:/Users/ユーザー名/.texlive2015/texmf-var/{platex,latex,generic,}/
 C:/Users/ユーザー名/texmf/{platex,latex,generic,}/

{platex,latex,generic,}」は,pbibtex あるいは bibtex,generic (これは何だ?) のいずれか,あるいはサブディレクトリー無しを表します.generic が何を表すか不明です.これらのディレクトリーは再帰的に検索されるので,サブディレクトリーを作ることもできます.

texlive のバージョンが上がると厄介なので,Linux では「~/texmf/platex/」,Windows では「C:/Users/ユーザー名/texmf/platex/」がお勧めです.

文献データベースファイル(*.bib)

先ほど同様の方法で,次は文献データベースファイルの検索パスを調べます.

$ kpsewhich -var-value BIBINPUTS.pbibtex

この結果から,私の場合の文献データベースファイル (*.bib) の保管場所は以下のとおりです.

文献データファイル(*.bib)を格納するディレクトリー
Linux の場合
 ~/.texlive2015/texmf-config/{pbibtex, bibtex}/bib/
 ~/.texlive2015/texmf-var/{pbibtex, bibtex}/bib/
 ~/texmf/{pbibtex, bibtex}/bib/
Windows の場合
 C:/Users/ユーザー名/.texlive2015/texmf-config/{pbibtex, bibtex}/bib/
 C:/Users/ユーザー名/.texlive2015/texmf-var/{pbibtex, bibtex}/bib/
 C:/Users/ユーザー名/texmf/{pbibtex, bibtex}/bib/

{pbibtex, bibtex}」は,pbibtex と bibtex のいずれか一方を表します.これらのディレクトリーは再帰的に検索されるので,サブディレクトリーを作ることもできます.

最もお勧めな文献データベースファイルの保管場所は,Linux では「~/texmf/pbibtex/bib/」,Windows では「C:/Users/ユーザー名/texmf/pbibtex/bib/」です.

グループ

PCを共用し同じ環境で TeX を使う場合は,次に述べる場所にスタイルファイルと文献データベースファイルを保管すると良いです.

スタイルファイル(*.sty)

これまで同様に,スタイルファイルの検索パスを調べます.

$ kpsewhich -var-value TEXINPUTS.platex

この結果を見るとスタイルファイル (*.sty) の保管場所がわかります.私の環境では,グループのスタイルファイルの保管場所のパスは次のとおりでした.

スタイルファイル(*.sty)を格納するディレクトリー
Linux の場合
 /usr/local/texlive/2015/texmf-config/tex/{platex,latex,generic,}/
 /usr/local/texlive/2015/texmf-var/tex/{platex,latex,generic,}/
 /usr/local/texlive/texmf-local/tex/{platex,latex,generic,}/
 /usr/local/texlive/2015/texmf-dist/tex/{platex,latex,generic,}/
Windows の場合
 C:/texlive/2015/texmf-config/tex/{platex,latex,generic,}/
 C:/texlive/2015/texmf-var/tex/{platex,latex,generic,}/
 C:/texlive/texmf-local/tex/{platex,latex,generic,}/
 C:/texlive/2015/texmf-dist/tex/{platex,latex,generic,}/

{platex,latex,generic,}」は,pbibtex あるいは bibtex,generic (これは何だ?) のいずれか,あるいはサブディレクトリー無しを表します.generic が何を表すか不明です.これらのディレクトリーは再帰的に検索されるので,サブディレクトリーを作ることもできます.

検索パスを調べるコマンドで,これらのパスの前にビックリマーク(exclamation mark)「!!」が二つ付いています.これは kpathsea の守備範囲ではなく,ls-R が処理することを表しています.したがって,スタイルファイルを保存した後に,以下のコマンドを実行して,ls-R のデータベースを再構築する必要が有ります.

Linux の場合
$ sudo su
# mktexlsr

Windows の場合
> mktexlsr

お勧めの保管場所は,Linux では「/usr/local/texlive/texmf-local/tex/platex/」,Windows では「C:/texlive/texmf-local/tex/platex/」です.このディレクトリーだと,TeX Live のバージョンが上がっても使うことができます.

文献データベースファイル(*.bib)

先ほど同様の方法で,次は文献データベースファイルの検索パスを調べます.

$ kpsewhich -var-value BIBINPUTS.pbibtex

この結果から,私の場合の文献データベースファイル (*.bib) の保管場所は以下のとおりです.

文献データファイル(*.bib)を格納するディレクトリー
Linux の場合
 /usr/local/texlive/2015/texmf-config/{pbibtex,bibtex}/bib/
 /usr/local/texlive/2015/texmf-var/{pbibtex,bibtex}/bib/
 /usr/local/texlive/texmf-local/{pbibtex,bibtex}/bib/
 /usr/local/texlive/2015/texmf-dist/{pbibtex,bibtex}/bib/
Windows の場合
 C:/texlive/2015/texmf-config/{pbibtex,bibtex}/bib/
 C:/texlive/2015/texmf-var/{pbibtex,bibtex}/bib/
 C:/texlive/texmf-local/{pbibtex,bibtex}/bib/
 C:/texlive/2015/texmf-dist/{pbibtex,bibtex}/bib/

{pbibtex, bibtex}」は,pbibtex と bibtex のいずれか一方を表します.これらのディレクトリーは再帰的に検索されるので,サブディレクトリーを作ることもできます.

ここでもまた,これらのパスの前にビックリマーク(exclamation mark)「!!」が二つ付いています.スタイルファイルを保存した後に,以下のコマンドを実行する必要が有ります.

Linux の場合
$ sudo su
# mktexlsr

Windows の場合
> mktexlsr

最もお勧めな文献データベースファイルの保管場所は,Linux では「/usr/local/texlive/texmf-local/pbibtex/bib/」,Windows では「/texlive/texmf-local/pbibtex/bib/」です.

ページ作成情報

参考資料

  1. パスについては,「Installing LaTeX packages」を参考にしました.
  2. kpathseaの利用法」が参考になります.
  3. texmf.cnf のディレクトリーの設定については,「多重TEXMFツリー」が参考になります.
  4. kpathser のマニュアル Kpathsea: A library for path searching を参考にしました.
  5. texmf.cnf の説明は,TeX Wiki の texmf.cnfファイル にわかりやすく書かれています.

更新履歴

2016年01月28日 ページの新規作成


no counter