TEXMFHOMEの利用

TEXMFHOMEの意味と使い方を理解しておこう

LaTeXシステムをコンピュータにインストールする際、さまざまなファイル群(パッケージやクラスファイル、フォント、スクリプトや説明文書など)は特定の場所に階層的に収録されます。 これをTEXMFツリーといい、その場所(ディレクトリ/フォルダ)は texmfと呼び、複数の場所が設定されています。 LaTeXシステムで組版しようとするとき、処理に必要なファイルをこのtexmf内を検索して読み込みます。

texmfにはユーザ個人が自由に設定できるホーム領域内の検索ツリーTEXMFHOMEが含まれています。 LaTeXシステムはユーザのTEXMFHOMEから優先して検索します。

ただし、以下で具体的に説明するように、TEXMFHOMEとする場所(ディレクトリ/フォルダ)はユーザ自身が作成しなければなりません。 さらに、TEXMFHOME内に正しい名称のディレクトリ/フォルダを作って利用したい目的ファイルを配置しなければなりません。

面倒なことのように思われるかもしれませんが、TEXMFHOMEはユーザ管理に任される場所ですのでシステムインストールでは導入されないような追加パッケージなどのファイルを置いたり、アップデートで上書きされることもないため、LaTeXシステムを自分用にいっそう便利に利用することができるようになります。

TEXMFHOMEの場所

LaTeXシステムがどの場所をTEXMFとして検索するのかを確認し、ユーザ自身のTEXMFHOMEがどこなのか知りましょう。 ターミナルウィンドウからコマンド kpsewhich をオプションを付けて次のように使います。

$ kpsewhich -var-value TEXMF

TEXMFHOMEの場所は、コンピュータのOSやTeXシステムの配布形態によって異なります。 次は、ユーザ hoge がTeXLiveをWindowsにインストールした場合のコマンド結果です。

C:\> kpsewhich -var-value TEXMF
\{C:\Users/hoge/texmf, 以下あとから追記

macOSにMacTeXをインストールした場合の結果は次のようになります。

$ kpsewhich -var-value TEXMF
{{}/Users/hoge/Library/texlive/2018/texmf-config,
/Users/hoge/Library/texlive/2018/texmf-var,/Users/hoge/Library/texmf,
!!/usr/local/texlive/texmf-local,!!/usr/local/texlive/2018/texmf-config,
!!/usr/local/texlive/2018/texmf-var,!!/usr/local/texlive/2018/texmf-dist}

この結果から、ユーザhogeがTEXMFHOMEとして利用するためにユーザの責任として作成すべきディレクトリ/フォルダは次のようになります。

Windows
  • WindowsのTeXLiveでのTEXMFHOMEの場所: C:\Users\hoge\texmf
Mac
  • MacTeXでのTEXMFHOMEの場所: /Users/hoge/Library/texmf
    ただし、MacOS 7(Lion)から初期状態で/Users/hoge/Libraryは不可視になっています。 これを可視化するように設定しておくとよいでしょう。

TEXMFHOMEの使い方

TEXMFHOME]で取得したTEXMFHOMEに設定されている場所に実際にフォルダtexmfを作成します。 ただし、TEXMFHOMEは次のような構造となっていなければなりません。 TEXMFHOME内のフォルダfonts、bibtexなどは任意で、必要に応じて作成します。

TEXHOME(texmf ←インストール環境に応じて場所が決まってます)
    |--texmf
      |--tex
      |   |-- 直接パッケージを置いてもよい
      |   |--platex <-- 日本語に関わるパッケージ(フォルダごとでもよい)
      |   |--latex  <-- 一般のパッケージパッケージ(フォルダごとでもよい)
      |   |--misc   <-- 何か他のパッケージ
      |
      |--fonts フォントに関するファイルを置く
      |
      |--bibtex BibTeX に関するファイルを置く
      |
      |--    ....

システム標準でインストールされてないパッケージを利用したい場合、CTAN(The Comprehensive TEX Archive Network) などから別途入手したパーケージファイル(またはパッケージファイルを含むフォルダ)やマクロなどLaTeXの動作に必要なファイル群はTEXMFHOME(texmf)内に作成したフォルダtex内に配置します。 さらに、このtex内にサブフォルダlatexやmiscなどを作成し、目的別にパッケージやマクロを配置しても構いません。

このとき、LaTeXファイルで \usepackage{...} で宣言したパッケージをLaTeXシステムが組版しようとするとき、システムは ユーザの TEXMFHOME/tex/ を含む TEXMFツリー内を検索して、それを見つけて読み込んで組版処理を行います。

教室に用意されたパソコンのように,ユーザが自分のホーム以外に自由にパッケージを追加できない場合でも、TEXMFHOME/texを作成して追加パッケージが利用できるようになります (組版対象の LATEX ファイルが格納されている同一フォルダ内に目的パッケージ群を置いても、\usepackage{...} で宣言したパッケージはシステムによって読み込まれます。

しかしながら、作成するたびに必要なパッケージファイルを同じフォルダに置くことになり、ファイル管理上望ましくありません)。 追加パッケージはTEXMFHOME/tex内に置かないとシステムは探すことができないことに注意してください。

LaTeXシステム内のパッケージファイルを探す

LaTeXファイルの組版を試みパッケケージの読み込み失敗に起因するエラーが発生すると、システムに目的とするパッケージが存在していないか、あるいはパッケージ名の誤記のせいだとわかります。

必要なパッケージ名があらかじめわかっているときに、 現在のTeXシステムにそのパッケージが存在しているかどうかを知るには、コマンド kpsewhich に検索したいパッケージファイル名を指定して使います。

次は、MacTeXでパッケージファイル fourier.sty がTeXシステムのTEXMFツリー内にあるかを調べた例です。

$ kpsewhich fourier.sty
/usr/local/texlive/2018/texmf-dist/tex/latex/fourier/fourier.sty