パッケージやクラスを定義する方法はわかったけど、それを(自分が)いつでも使えるようにするにはどうすればいいの?
例えば、パッケージ・ファイル commonstuff.sty
(または myprettyclass.cls
) があって、自分のコンピュータで作成した .tex
ファイルに含めることができるようにしたいとします。どこに置けばいいのでしょうか?何かインストーラーを走らせる必要があるのでしょうか、それとも特定のフォルダに入れておけば十分なのでしょうか?
注:.tex
ファイルと同じフォルダに入れればいいのはわかっていますが、それは私がここで求めているものではありません。私が探しているのは、パッケージを自分のコンピュータに集中的にインストールする方法です。
TeXのホームディレクトリの下にフォルダを作り、その中に.sty
ファイルを置くことができます。その場所を知るには、コマンドプロンプトでこのコマンドを使います。
kpsewhich -var-value=TEXMFHOME
私のコンピュータでは
C:/Users/stefan/texmf
と表示されますが、LinuxやUnixのコンピュータでは「~/texmf/`」と表示されることもあります。
TeXのディレクトリ構造に従って、下記のArthur'氏のコメントによれば、~/texmf/tex/latex/commonstuff/
のようなサブディレクトリにファイルを置くべきです。これには、TeX が個人の texmf
ツリーを直接検索するので、 パッケージデータベースを更新する必要がない という利点があります。もし、あなたの個人的な texmf
ツリーの中に ls-R
ファイルがあったとしても、TeX はそのファイルを使わないので、安全に削除することができます。(注意: これは、個人のツリーがローカルファイルシステム上にあることを前提としています。ホームフォルダがリモートマウントされているユーザは、ハッシュ化が必要になるかもしれません)
MiKTeXについては、How can I manually install a package on MikTex (Windows)の回答の中の "Installing sty or cls files" の項を参照してください。
その上で、どのファイルを使用するのかを確認してください。
kpsewhich filename.sty
これで、TeXの実装でピックアップされたファイルのパスが表示されます。
.styファイルは、texmf ツリーの
tex/latex` のサブディレクトリに置かれる必要があります。 ツリーの構造はある程度決まっていますが、その場所は OS や TeX のディストリビューションによって異なります。 Unix(Mac OSを含む)とTeX Liveを使用している場合は、デフォルトで次のような階層になっています。
/usr/local/texlive/2009/texmf
/usr/local/texlive/2009/texmf-dist
/usr/local/texlive/texmf-local
や他のディレクトリがあります。 TeX Liveをアップグレードしたときに、パッケージが上書きされる可能性があるので、TeXmf-localディレクトリに置くようにしてください。 texmf-local
の階層は、その名の通り、あなたが管理するローカルパッケージのためのもので、アップデートでは触れられません(例えば、texlive/2009
ではなく、texlive
ディレクトリの直下にあるのもそのためです)。
また、ホームディレクトリに texmf
というディレクトリを作成することもできます。この場合、パッケージはあなただけが見ることができ、あなたのコンピュータの他のユーザは見ることができません。
MiKTeXがインストールされているWindowsでは、ローカルインストール用のディレクトリは、デフォルトでは C:Localtexmf
になると思います。
いずれにしても、どのようなディストリビューションであっても、.sty
ファイルは、ルートディレクトリに直接置くのではなく、.../texmf-local/tex/latex
の中に置かなければなりません。
そうしないと動作しないからです。パッケージをホームディレクトリにインストールした場合は、何もする必要はありません。 一方、texmf-local
を入れた場合には、mktexlsr
(またはtexhash
、これはエイリアスです)というユーティリティを実行する必要があります。
Linuxでは、好きなディレクトリを選んで、次のような行を追加します。
export TEXINPUTS=".:~/latex:"
のような行を.bashrcファイルに追加することができます(複数のディレクトリをコロンで区切って追加することができます。冒頭の '.' は必要だと思います)。)Windowsにも似たようなものがあるかもしれません。私はこの方が簡単だと思います。というのも、自分のものとtexmfのツリーを分離できるからです。大きなパッケージを書いている人には向かないかもしれませんが、すべてのプロジェクトで共有したいような小さなものには便利です。