TeX がタイプセットを行なう際には、文書のヘッダを処理しなければなりませんが、そこには \input や \includde あるいは \usepackage などの命令が数多く含まれているかもしれません。文書をタイプセットするたびに、このプロセスはくり返されます──ヘッダの大部分に変化がなかったとしてもです。
TeX にはこのプロセスを高速化するための機構が組み込まれています。それにより、ソースを処理した結果を「フォーマットファイル」に出力するよう指示することができます。そうしておいてから TeX でタイプセットを実行すると、素早くフォーマットを読み込んだ上で文書をタイプセットすることができます。LaTeX はこの方法で構築されています──TeX をコンピュータにインストールする際にフォーマットファイルが生成されますが、コマンド「latex file」が TeX に対してこのフォーマットを読み込むよう命じ、その上で「ファイル」をタイプセットするのです。
マシン速度がまだ遅かった時分には、ユーザはよく独自のフォーマットファイルを作成してタイプセットのスピードを上げていました。これは今日ではあまり行なわれないのですが、フォーマットファイルの利用は今でもなお有用なことかもしれません。たとえば、ある組織で、共通のプロジェクトに参加する各員が利用できるよう、フォーマットを作成して配布する、というように。この章では、他から提供されたフォーマットを利用する方法、およびどのようにしてフォーマットを作成するのかについて説明しましょう。
典型的なフォーマットファイルの拡張子は「fmt」です。たとえばオレゴン大学の学部がフォーマット「uo.fmt」を配布したとしましょう。このフォーマットを使用するには、以下のような手順を踏みます──
これで導入作業は済みました。次回 TeXShop を起動すると、ソースウインドウのツールバーにあるタイプセットボタン脇のプルダウンメニューに「Oregon」がタイプセット・オプションとして入っています。これを選択し「uo.fmt」フォーマットを使用してタイプセットします。もしもこのタイプセット方法をデフォルトにしたければ、TeXShop 環境設定を開き、「タイプセット」タブのところにある「デフォルトのコマンド」から「次のコマンドを利用」を選択し、テキストボックスに“Oregon”と書き入れておきます。
ある特定の文書用に、タイプセット・オプションを変更することなく「Oregon」フォーマットを指定することもできます。そのためには、ソースファイルの冒頭に、次のような1行を追加します──
これで、タイプセット・オプションの選択の如何に関わらず、この文書には「uo.fmt」が用いられます。
以上の解説は、ユーザが既に pdflatex 用のフォーマットを所持しているものと想定しています。ユーザが plain TeX 用のフォーマットを作成することもできます──この場合にはエンジンファイルを「pdflatex」ではなく「pdftex」としておきます。
「TeX + Ghostscript」でタイプセットする場合でも、フォーマットを利用することはできます。TeXShop では、エンジンファイルに1つないしはそれ以上のコマンドライン指定が含まれており、最終的には pdf ファイルを生成するものと想定しています。そのためエンジンファイルには、dvi ファイルを pdf ファイルに変換するためのコマンドが含まれていなければなりません。こういった場合における「uo.fmt」用の典型的なエンジンファイルは以下のようなものです──
フォーマットファイルには、ソースのタイプセットについて、内部におけるバイナリの再現性(リプリゼンテーション)が含まれています。この再現性はプロセッサと個々の TeX の実装に依存します。ですから他から提供されたフォーマットファイルが利用可能なことは滅多にありません──先方でも同じマシンを持っていて、そっくり同じように TeX をインストールしてあるのでない限りは。
しかしながら、フォーマットを生成するために必要なソースを組織で配布することは、ごく普通に行なわれています。こうした場合には「initTeX」を使ってフォーマットを作成するように、と言われることでしょう。そこで、たとえばフォーマット用のソーステキストを「uo.tex」としてみましょう。フォーマットを作るには、Apple の Terminal.app を起動し、フォーマット用のソースがあるディレクトリへ移動します。そして次のようにタイプします──
すると前に ** の付いたプロンプトになります。プロンプトのところで次のように打ち込みます──
そしてリターンキーを押します。これでフォーマットファイルが作成されます。もしフォーマットのソースに「\dump」が含まれていなかった場合には、最後に「\dump」コマンドを打ち込んでやらなければならないかもしれません。これで必要な「uo.fmt」が作られます。
以下のような「uo.tex」で試してみるのもいいかもしれません──