* TeX のディレクトリ構成 (TDS) [#u528ce3e]

// こういう内容,美文書には(付録に)記載されていますが,Web ではほとんど解説されていないので
// 有用そうです.

TDS (TeX Directory Structure) とは,TeX の標準的なディレクトリ構成です。
[[TeX Live]] や [[W32TeX]] はこの TDS に従っています。

-http://www.tug.org/texinfohtml/tds.html
-http://www.ctan.org/tex-archive/tds

実際にどのように TeX に関するファイルやディレクトリを配置したらよいのか考えます。
[[パッケージ]]や[[フォント]]を追加する際,あるいは使用しているパッケージの置き場を探す際に参考になるはずです。

[TODO] TDS のバージョンによる違いはどの程度でしょうか?

----
#contents
----


** TEXMF ツリー・多重 TEXMF ツリーとは [#ae6fe566]

現在の TeX ディストリビューションのほとんどは TEXMF ツリー((TEXMF とは,'''TeX''' と '''M'''ETA'''F'''ONT という意味です。))を採用しています。
TEXMF ツリーには,パッケージやクラスファイル・フォント・スクリプト・説明文書などが規則に従って分類され,収録されています。

TeX Live や W32TeX では複数の TEXMF ツリーを使い分ける「多重 TEXMF ツリー」が採用されています。
これにより,ディストリビューションが用意したファイルとユーザが追加したローカルなファイルなどを明確に区別できます。

TeX Live では例えば(以下の YYYY には年が入ります)
- C:\texlive\YYYY\texmf-dist や C:\texlive\texmf-local(Windows での典型的な例)
- /usr/local/texlive/YYYY/texmf-dist や /usr/local/texlive/texmf-local(Unix 系での典型的な例)

W32TeX では
- C:\w32tex\share\texmf-dist や C:\w32tex\share\texmf-local(典型的な例)

などのディレクトリがそれにあたります。

//
// ほかに,以下のような例があるようです。
// - C:\w32tex\share\texmf(2013年4月7日以前の W32TeX の典型的な例)
// - /usr/local/share/texlive/YYYY/texmf-dist
// - /opt/local/share/texlive/YYYY/texmf-dist
// - /usr/share/texmf
// - /opt/share/texmf
// - ~/Library/texmf
//

以下では,これらのディレクトリを一般に ''texmf'' とします。


** TEXMF ツリーの中身 [#y056dcf8]

''texmf'' ルートディレクトリの下位には,主に次のようなディレクトリがあります:
-tex:TeX の動作に必要なテキストファイルが入ります。
-fonts:[[フォント]]に関するファイルが入ります。
-metafont:[[METAFONT]] の動作に必要なテキストファイルが入ります。
-metapost:[[MetaPost]] の動作に必要なテキストファイルが入ります。
-dvipdfmx:[[dvipdfmx]] 用の設定ファイルが入ります。
-dvips:[[dvips]] 用の設定ファイルが入ります。
-bibtex:BibTeX に関するファイルが入ります。
-scripts:プラットフォームに依存しないスクリプト (Perl, Lua, etc.) が入ります。
-doc:説明文書が入ります。
-source:ソースファイル(LaTeX パッケージの元になる dtx や ins なども含む)が入ります。

TeX でファイル検索を行う kpathsea ライブラリは,このディレクトリ構成に従って必要なファイルを検索します。
kpathsea ライブラリは多重 TEXMF ツリーにも対応しています。


** TeX のマクロ,LaTeX のパッケージなど:texmf/tex [#edefb928]

LaTeX のパッケージなどのファイルは,「TeX のフォーマット→パッケージの名前」に従って配置します。
-''texmf''/tex/<format>/<package>/

まず,<format> とはフォーマットの名前です(例:latex, context, plain, amstex, texinfo)。
次のフォーマット名は TDS によって予約されています。
-generic:複数のフォーマットに渡って使われるファイル(plain TeX で記述されていて,他のフォーマットに依存しないもの)。
-local:ユーザがローカルに追加したファイル(多重 TEXMF ツリーに対応していない場合によく使われる方法です)。
-generic:複数のフォーマットに渡って使われるファイル(plain TeX で記述されていて,他のフォーマットに依存しないもの)
-local:ユーザがローカルに追加したファイル(多重 TEXMF ツリーに対応していない場合によく使われる)

次に,<package> は TeX のパッケージ名です(例:babel, hyperref)。
次のパッケージ名は TDS によって予約されています。
-base:それぞれのフォーマットの基本的なファイル(例えば .ltx や .ini など)。
-hyphen:ハイフネーション・パターンを記述したファイル。
-images:PostScript ファイルなどの画像ファイル。
-local:ユーザが「ローカル」に追加したファイル(多重 TEXMF ツリーを使う場合は使わない方がよい)。
-misc:単一のファイルからなるパッケージ(ただし,メンテナンス上,個別にディレクトリを作ることを推奨)。
-base:それぞれのフォーマットの基本的なファイル(例えば .ltx や .ini など)
-hyphen:ハイフネーション・パターンを記述したファイル
-images:PostScript ファイルなどの画像ファイル
-local:ユーザが「ローカル」に追加したファイル(多重 TEXMF ツリーを使う場合は使わない方がよい)
-misc:単一のファイルからなるパッケージ(ただし,メンテナンス上,個別にディレクトリを作ることを推奨)

例えば,[[hyperref]] パッケージは ''texmf''/tex/latex/hyperref/ 以下に置かれているはずです。
これは hyperref パッケージが LaTeX フォーマットを必要とすることに由来します。


** フォント:texmf/fonts [#o1f2354d]

フォントに関するファイルは,大きく分けて2種類あります。

***フォントファイル本体の配置 [#y073dd9a]

多くのファイルは「ファイルの種類→メーカー→書体名」の順で分類します。
-''texmf''/fonts/<type>/<supplier>/<typeface>/

一般ユーザが良く使う,または目にするファイルの種類 <type> は以下の6つでしょう。
-opentype:OpenType フォント
-truetype:TrueType フォント
-type1:PostScript Type 1 フォント(pfb, pfa など)
-source:METAFONT のソース(フォントのアウトラインを METAFONT 言語で記述したもの)
-tfm:TFM ファイル(TeX フォントメトリックといい,フォントの寸法を記したもの)
-vf:仮想フォントファイル

以上6つのほかに TDS によって予約されているものは5つです:
-afm:Adobe フォントメトリックファイル
-gf:Generic Font bitmap files
-pk:PacKed bitmap fonts
-type3:PostScript Type 3 フォント

次に,<supplier> はメーカーの名前,<typeface> は書体ファミリの名前です(例:cm, euler, times)。
次のメーカーは TDS によって予約されています。
-ams:American Mathematical Society の AMS-fonts collection 用
-local:「ローカル」のフォント(多重 TEXMF ツリーを使う場合は使わない方がよい)
-public:フリーとして配布されているもの(ただし,ams などの独自のディレクトリを要求していない,かつ adobe のように所有権を有するフォント (proprietary fonts) を作っていない)
-tmp:一時的に生成されるフォントを置くため

次の書体名は TDS によって予約されています。
-cm(public 内):Computers and Typesetting, Volume E(Appendix D 参照)で定義されている75フォント
-latex(public 内):LaTeX ディストリビューションと一緒に配布されているフォント
-local:「ローカル」

上を使い,例えば次のような配置にします。
-texmf/fonts/source/public/pandora/pnr10.mf
-texmf/fonts/tfm/public/cm/cmr10.tfm
-texmf/fonts/type1/adobe/utopia/putr.pfa

***フォント関連ファイルの配置 [#n5f4bd62]

以下の3つは他の種類のファイルとは性質が違います。
これらも TDS によって予約されています。
-enc:エンコーディング用のファイル
-lig:リガチャ用のファイル
-map:MAP ファイル(TFM の名称と実フォントとの対応関係を記述したファイル)

これらのファイルは「ファイルの種類→シンタックス→パッケージ」
-''texmf''/fonts/{enc,lig,map}/<syntax>/<package>

ここで,<syntax> には dvips, dvipdfm などのフォントを扱うプログラムの種類が入ります。
ただし,updmap(-sys) プログラムを使うようにすれば,ほとんどの場合 dvips のみを使えば済みます。
lig ファイルは afm2pl というプログラムによって使われます。


** ドキュメント [#f44c25a3]
** ドキュメント:texmf/doc [#f44c25a3]

ほとんどのパッケージには,解説書や見本といったドキュメントが付属しています。
ドキュメントには,テキストファイル,TeX のソースファイル,PDF ファイル,PostScript ファイル,DVI ファイルなどが含まれます。
これらはファイルの種類によらず,以下のように分類されて収録されます。
-''texmf''/doc/<category>/...

ここで,<category> には次のようなものが入ります。
-TeX フォーマットの名前
--latex
-プログラムの名前
--bibtex
--tex
-言語
--french
--german
-ファイルのフォーマット
--info
--man
-他のシステムに関わるもの
--web
--fonts

TDS は次の <category> を予約しています。
-general:特定のプログラムに限定されないドキュメント
-help:FAQ, TeX Catalogue などのファイル
-info:Texinfo ファイル
-local:「ローカル」なファイル(多重 TEXMF ツリーを使う場合は使わない方がよい)

それぞれの <category> の中では base というディレクトリが TDS によって予約されています。

% 少しずつ作業を進めていきたいと思います.

% mktexlsr に関する話のリンク(整理前)
-TeX Forum での話題(賛否両論):[[forum:454]], [[forum:700]], [[forum:1467]]
-[[mktexlsr は有害だ (mktexlsr Considered Harmful):http://0xcc.net/misc/mktexlsr.html]]
-[[texmf の ls-R の必要性:http://d.hatena.ne.jp/lugia/20110923/1316736886]]