#### フォーマットの利用

TeX がタイプセットを行なう際には、文書のヘッダを処理しなければなりませんが、そこには \input や \includde あるいは \usepackage などの命令が数多く含まれているかもしれません。文書をタイプセットするたびに、このプロセスはくり返されます──ヘッダの大部分に変化がなかったとしてもです。

TeX にはこのプロセスを高速化するための機構が組み込まれています。それにより、ソースを処理した結果を「フォーマットファイル」に出力するよう指示することができます。そうしておいてから TeX でタイプセットを実行すると、素早くフォーマットを読み込んだ上で文書をタイプセットすることができます。LaTeX はこの方法で構築されています──TeX をコンピュータにインストールする際にフォーマットファイルが生成されますが、コマンド「latex file」が TeX に対してこのフォーマットを読み込むよう命じ、その上で「ファイル」をタイプセットするのです。

マシン速度がまだ遅かった時分には、ユーザはよく独自のフォーマットファイルを作成してタイプセットのスピードを上げていました。これは今日ではあまり行なわれないのですが、フォーマットファイルの利用は今でもなお有用なことかもしれません。たとえば、ある組織で、共通のプロジェクトに参加する各員が利用できるよう、フォーマットを作成して配布する、というように。この章では、他から提供されたフォーマットを利用する方法、およびどのようにしてフォーマットを作成するのかについて説明しましょう。

典型的なフォーマットファイルの拡張子は「fmt」です。たとえばオレゴン大学の学部がフォーマット「uo.fmt」を配布したとしましょう。このフォーマットを使用するには、以下のような手順を踏みます──

- 「uo.fmt」を ~/Library/texmf/web2c/uo.fmt へと移します。このうちのいくつかのディレクトリは新たに作成する必要があるかもしません。
- 新しい「エンジンファイル」を作成します──~/Library/TeXShop/Engines へ行き「XeLaTeX.engine」というファイルを複製してください。エンジンファイルには実行ビットセットが必要ですが、この複製の過程で自動的に備わります。
- 複製したファイルの名称を変更します。この名称をフォーマット名と同じにする必要はありません。名称は TeXShop のインターフェイスに表示されるので、ユーザにとってわかりやすいものにします。ここでは「Oregon.engine」とします。
- 「Oregon.engine」を TeXShop で開き、下記のように編集します── `
    #!/bin/tcsh
    set path= ($path /usr/local/teTeX/bin/powerpc-apple-darwin-current /usr/local/bin)
    pdflatex -fmt uo "$1"
  ` 最初の２行は既存のものですから、書き換えが必要なのは３行目だけでしょう。ただし、インテルのプロセッサーを載せたマシンでは、２行目の「powerpc」を「i386」に変えてやらねばなりません。

これで導入作業は済みました。次回 TeXShop を起動すると、ソースウインドウのツールバーにあるタイプセットボタン脇のプルダウンメニューに「Oregon」がタイプセット・オプションとして入っています。これを選択し「uo.fmt」フォーマットを使用してタイプセットします。もしもこのタイプセット方法をデフォルトにしたければ、TeXShop 環境設定を開き、「タイプセット」タブのところにある「デフォルトのコマンド」から「次のコマンドを利用」を選択し、テキストボックスに“Oregon”と書き入れておきます。

ある特定の文書用に、タイプセット・オプションを変更することなく「Oregon」フォーマットを指定することもできます。そのためには、ソースファイルの冒頭に、次のような１行を追加します──

`

  %!TEX TS-program = Oregon

`

これで、タイプセット・オプションの選択の如何に関わらず、この文書には「uo.fmt」が用いられます。

以上の解説は、ユーザが既に pdflatex 用のフォーマットを所持しているものと想定しています。ユーザが plain TeX 用のフォーマットを作成することもできます──この場合にはエンジンファイルを「pdflatex」ではなく「pdftex」としておきます。

「TeX + Ghostscript」でタイプセットする場合でも、フォーマットを利用することはできます。TeXShop では、エンジンファイルに１つないしはそれ以上のコマンドライン指定が含まれており、最終的には pdf ファイルを生成するものと想定しています。そのためエンジンファイルには、dvi ファイルを pdf ファイルに変換するためのコマンドが含まれていなければなりません。こういった場合における「uo.fmt」用の典型的なエンジンファイルは以下のようなものです──

`

  #!/bin/tcsh
  set path= ($path /usr/local/teTeX/bin/powerpc-apple-darwin-current /usr/local/bin)
  latex -fmt uolatex "$1"
  set filename = "$1"
  dvips "${filename:r}.dvi"
  pstopdf "${filename:r}.ps"

`

#### フォーマットの作成

フォーマットファイルには、ソースのタイプセットについて、内部におけるバイナリの再現性（リプリゼンテーション）が含まれています。この再現性はプロセッサと個々の TeX の実装に依存します。ですから他から提供されたフォーマットファイルが利用可能なことは滅多にありません──先方でも同じマシンを持っていて、そっくり同じように TeX をインストールしてあるのでない限りは。

しかしながら、フォーマットを生成するために必要なソースを組織で配布することは、ごく普通に行なわれています。こうした場合には「initTeX」を使ってフォーマットを作成するように、と言われることでしょう。そこで、たとえばフォーマット用のソーステキストを「uo.tex」としてみましょう。フォーマットを作るには、Apple の Terminal.app を起動し、フォーマット用のソースがあるディレクトリへ移動します。そして次のようにタイプします──

`

  pdflatex -ini

`

すると前に ** の付いたプロンプトになります。プロンプトのところで次のように打ち込みます──

`

  &pdflatex uo

`

そしてリターンキーを押します。これでフォーマットファイルが作成されます。もしフォーマットのソースに「\dump」が含まれていなかった場合には、最後に「\dump」コマンドを打ち込んでやらなければならないかもしれません。これで必要な「uo.fmt」が作られます。

以下のような「uo.tex」で試してみるのもいいかもしれません──

`

  \documentclass[11pt]{article}
  \usepackage{geometry}
  \geometry{letterpaper}
  \usepackage[parfill]{parskip}
  \usepackage{graphicx}
  \usepackage{amssymb}
  \usepackage{epstopdf}
  \DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png}
  \dump

`
上級向けのヘルプ
新規フォーマットの作成と利用