LaTeX and Xfig

## LaTeX と Xfig

- xfig の図を LaTeX ファイルに取り込む
  by Eric Masson (ericm@kirk.ee.mcgill.ca)

- `pstex_t` での図の大きさの変更
  by Stephen Eglen (stephene@cogs.susx.ac.uk)

- xfig と PDFLaTeX
  by Josselin Mouette (jmouette@ens-lyon.fr)

- Miscellaneous Notes

### xfig の図を LaTeX ファイルに取り込む

xfig の起動に際して、次のようなコマンドを用います：

      xfig -specialtext -latexfonts -startlatexFont default

もし常に Special フラグ と LaTeX フォント を選択して開始したいのであれば、`.Xresources` ファイルか あなたが使っているリソース・ファイルで次のように指定します：

      Fig.latexfonts: true
      Fig.specialtext: true

xfig が生成でき、LaTeX が読むことのできる、 いくつかのフォーマットがあります。 ここでは3つのケースのみをカバーします：

1. 直接 LaTeX 形式で出力する
2. Encapsulated PostScript (EPS) で出力し、それを LaTeX で取り込む
3. 図の一部を PostScript で、一部を LaTeX で出力し、 それらを文書の上で重ね合わせる

これらの方法にはそれぞれの利点があり、同程度に容易に扱うことができます。 方法 (A) の利点は、全てが TeX 形式に含まれており、 DVI ファイルが必要な情報全てを保持することです。 (B) では出力に際して PostScript の全ての機能とフォントを使用できます。 (C) では PostScript の描画機能と、 LaTeX のテキストのタイプセット機能を用いることができます。

LaTeX 文書のプリアンブル (`\begin{document}` よりも前の部分) に、次の行を置きます：

            \input{psfig}

プリアンプルは次のようなものとなるかも知れません：

      \documentstyle[12pt,bezier,amstex]{article}  % include bezier curves
      \renewcommand\baselinestretch{1.0}           % single space
      \pagestyle{empty}                            % no headers and page numbers
      \oddsidemargin -10 true pt      % Left margin on odd-numbered pages.
      \evensidemargin 10 true pt      % Left margin on even-numbered pages.
      \marginparwidth 0.75 true in    % Width of marginal notes.
      \oddsidemargin  0 true in       % Note that \oddsidemargin=\evensidemargin
      \evensidemargin 0 true in
      \topmargin -0.75 true in        % Nominal distance from top of page to top of
      \textheight 9.5 true in         % Height of text (including footnotes and figures)
      \textwidth 6.375 true in        % Width of text line.
      \parindent=0pt                  % Do not indent paragraphs
      \parskip=0.15 true in

      \input{psfig}           % Capability to place postscript drawings

      \begin{document}
      \end{document}

### Type A ― 直接 LaTeX 形式で出力する

描画能力の点では、これは最も非力です。 LaTeX では、いくつかの特定の角度の線のみを描画することができます。 線に矢印が付いている場合、この制限はさらに厳しくなります。 楕円、スプラインなどの、いくつかの機能はサポートされていません。 (xfig は `bezier` などの LaTeX マクロ・パッケージによる利点を用いていません。)

この方法で線を描画する場合には、 xfig 上での線の角度を 適切なものに制限するようにしなければなりません。 さもなくば、図を LaTeX フォーマットでエクスポートした際に、 xfig はそれを LaTeX が扱える最も近い角度で近似し、 通常は望ましくない結果が生じます。

このモードではテキストに LaTeX のコマンドを含めることができ、 LaTeX に取り込まれた際にそのコマンドは適切に解釈されます。 例えば：

            $\int_0^9 f(x) dx$

は関数 f(x) の 0 から 9 の積分となります。 LaTeX ファイルを生成するためには、xfig の File メニュー から Export... を選択し、 エクスポートする Language として LaTeX picture を選択します。 これによって `.latex` というサフィックスを持つファイルを生成し、 直接 LaTeX 文書に取り込むことができます。

例えば、次のコードはファイル `yourfile.latex` を 直接 LaTeX 文書に取り込みます：

      \begin{figure}[htbp]
      \begin{center}

      \input{yourfile.latex}

      \caption{The caption on your figure}
      \label{figure:yourreferencename}
      \end{center}
      \end{figure}

### Type B ― Encapsulated PostScript での出力

この方法では図の描画についての制限はありません。 ただし、このフォーマットにおいては LaTeX のコマンドは使用できません。 しかし、このフォーマットが選択された場合には 多数の PostScript フォント全てが使用可能となります。

図を描き終ったならば、xfig の File メニュー から Export... を選択し、 エクスポートする Language として Encapsulated PostScript を選択します。 これによって、次のような方法によって LaTeX 文書に取り込むことができる、 `.eps` というサフィックスを持つファイルを生成することができます。

      \begin{figure}[htbp]
      \begin{center}
        \psfig{file=yourfile.eps}
      \end{center}
      \caption{Your caption}
      \label{figure:yourreference}
      \end{figure}

注意： 環境によってはこの方法は使用できないかも知れません。 また、この方法で生成される DVI ファイルは ポータブルではないものとなることがあります。

### Type C ― Postscript/LaTeX の組み合わせ

この方法ではどのような線や曲線を使うこともできます。 また、LaTeX のコマンドの使用も許され、 かつ PostScript フォントを使用することもできます。 従って、テキストの中に

            $\int_0^9 f(x) dx$

のように入力すれば、それは LaTeX で処理されます。 LaTeX で出力したいテキストについては Special フラグ を ON にし、 PostScript で出力したいテキストについては OFF にする必要があることに注意して下さい。

この方法を用いる場合には、 File メニュー から Export... を選択し、 エクスポートする Language として Combined PostScript/LaTeX (both part) を選択します。 これによって、次のような方法によって LaTeX 文書に取り込むことができる `.pstex_t` というサフィックスを持つファイルと、 PostScript のコードを含む `.pstex` というサフィックスを持つファイル を生成することができます。 `.pstex_t` ファイルは自動的に `.pstex` ファイルを取り込むので、 これを明示的に TeX ファイルに含める必要はありません。 図を取り込むためには、次のようなものを用います：

      \begin{figure}[htbp]
      \begin{center}

      \input{yourfigure.pstex_t}

      \caption{Your figure}
      \label{figure:example}
      \end{center}
      \end{figure}

注意： xfig が生成した `.pstex_t` ファイルを 編集したいと思うことがあるかも知れません。 それは `.pstex` ファイルを完全なパスで参照することがありますが、 これはそれらのファイルを他のディレクトリに動かした場合に問題を生じます。 個人的には、完全なパス指定を削除し、 ファイル名のみを残しておくことを好んでいます。

### `pstex_t` での図の大きさの変更

図を `\input{file.psttext_t}` によって取り込む場合には、 図の大きさを指定する方法はありません。

これに対する、2つの解決方法があります：

1. 最初から xfig で正しい大きさで図を作成する。 あるいは、図をエクスポートする際に、 Export パネル の Magnification での設定を変更することによって図の大きさを変更する。 いずれの方法でも、LaTeX 文書上での図の大きさが気に入らなかった場合には xfig に戻らなければならない。

2. `\scalebox`、あるいは `\resizebox` を用いて、 LaTeX に図の大きさを変更させる。 これはグラフィック・パッケージからのテキストや図をスケーリングするための 一般的な機能です。

              \scalebox{factor}{object}

   は、任意の比率でオブジェクトをスケーリングします。 比率は単純な数値 (1よりも小さければ縮小、1よりも大きければ拡大) です。 オブジェクトは、通常はいくつかのテキストやグラフィックです。

   例えば：

              \scalebox{2}{ \input{file.pstex_t} }

   は、ドライバに依存して、図を2倍に拡大します。 ビットマップ・フォントをスケーリングすると醜い結果が得られるので避けること。

              \resizebox{width}{ht} {stuff}

   は "`stuff`" を `width` × `ht` の大きさにリサイズします。 パラメータとして "`!`" を用いるとボックスのアスペクト比が保存されます。 例えば：

              \resizebox{5cm}{!}{fat cat}

   は "`fat cat`" の幅を 5cm に、高さを適切に設定します。 (Lamport の本の 129ページより)

## xfig と PDFLaTeX

written by Josselin Mouette (jmouette@ens-lyon.fr)

### 普通の PDF ファイル

xfig で出力フォーマットとして PDF を選択し、 `foo.pdf` ファイルを生成します。 文書のプリアンブルに `\usepackage[pdftex]{graphicx}` を書き、 図を `\includegraphics{foo.pdf}` で挿入します。 includegraphics の任意のオプションも使えます。

利点： 使用が非常に容易。

欠点： 図の中のテキストは 文書にもそのまま PostScript フォントを用いて現れることになります； その中で TeX コードを用いることはできません。

### Combined PDF/LaTeX ファイル

これが私が大抵の場合にお薦めする方法です。 初心者にとっては最初は難しいかも知れませんが、それは実に強力です。 この方法を選択するならば、 xfig でのフォントを LaTeX のもので設定し、 テキストの Special 属性 を設定することが必要となるでしょう。 これを自動的に行なうためには、あなたの `.Xresources` や `.Xdefaults` (システムに依存する) に：

      Fig.latexfonts: true
      Fig.specialtext: true

の2行を追加すれば良いでしょう。 そして、エクスポートに際して、 Combined PDF/LaTeX フォーマットを選択します。 そして、LaTeX ファイルのプリアンブルに次の行を追加します：

      \usepackage[pdftex]{graphicx,color}

color パッケージは、テキストをカラーで出力する場合に必要です。 そして、図を次のようにして取り込みます：

      \input foo.pdftex

リサイズも可能です：

      \resizebox{3cm}{!}{\input foo.pdftex} % sets the width to 3cm

利点： テキストとして書いたものが、文書中のコードと全く同様に扱われます。 これは自前のマクロも使えることを意味し、これは実にクールです。

欠点： テキストが印刷されない LaTeX 命令を含んでおり、 xfig や fig2dev がテキストの大きさを知らないことから、 図の中に大きな数式を入れる際にそれが占める領域を予測することは困難です。

### METAPOST

MetaPost を使うためには、xfig では何も特別なことはありません。 入力したテキストは普通の TeX コードとして扱われます ―― 注意： これはあなたの文書中ではコンパイルされないので、 AMS-TeX などのパッケージへはアクセスできず、 また自前のマクロを使うこともできません。 xfig では、`foo.mp` を生成する MetaPost フィルタを用いてエクスポートします。 その後、`mpost foo.mp` を実行し、 これは `foo.0` (場合によっては `foo.1`) を生成します。 文書中では、プリアンブルに次のように書きます：

      \input supp-pdf.tex
      \usepackage[pdftex]{graphicx}

そして、図を取り込むために、次のように書きます：

      \convertMPtoPDF{foo.0}

それだけです。 実に単純であり、中に TeX も入れられます。

利点： PDF／DVI のデュアル出力のファイルに容易に取り込めます； PS として取り込むためには、その文書に 単に `\includegraphics{foo.0}` と書きます。

欠点： AMS-LaTeX は受け付けられず、大きな数式には適当ではありません。 文書が英語以外である場合には、 長いフレーズも酷いことになるかも知れません (bebel パッケージは使えません)。

### MULTI-METAPOST

この方法は PDF プレゼンテーションの中で使うように設計されています。 `\pause` コマンドを用いて、 ボタンのクリックに応じてレイヤを順番に表示することができ、 これは有用なものとなり得ます。 MetaPost の取り込みについて言ったことは全て当てはまりますが、 知っておくべきいくつかの点があります：

1. 図の作成に際しては、 オブジェクトの深さに注意して下さい。 図を MultiMetapost フォーマットでエクスポートする際、 transfig はオブジェクトが存在している連続した深さを単一のレイヤとして扱います。 例えば：

          深さ 51 に Circle ┐＿ 表示される最初のレイヤ
          深さ 50 に Text   ┘
          *** 深さ 49 には何もない
          深さ 48 に Square ┐
          深さ 48 に Text   │─ 表示される2番目のレイヤ
          深さ 47 に Curve  ┘
          ... 以下同様

2. エクスポートの後で、`mpost foo.mmp` は `foo.0`、`foo.1` … という名前の 一連のファイルを作成します。 それらを文書に取り込むために、 PPower4 の最新版 (現時点ではまだベータ段階) とともに提供されている `mpmulti.sty` が必要となります。 文書のプリアンブルは、次のようになるでしょう：

         \input supp-pdf.tex
         \usepackage[pdftex]{graphicx}
         \usepackage{pause,mpmulti}

   そして、アニメーションを取り込むためには、単に次のように書きます：

         \multiinclude{foo}

   次のようにして、指定した大きさに調整することが可能です：

         \multiinclude[graphics={width=5cm}]{foo}

   その文書をコンパイルし、それを `ppower4` に掛けます。 洒落ているでしょ？

利点： アニメーションを取り込む唯一の方法。 xfig の既存の深さの体系の恩恵。

欠点： 何か？

### その他

LaTeX テキストで ``mn'' と出力されることがあるかも知れません。 ここで示すのは、あるユーザーがこの問題を回避するために行なったことです：

この問題は、エクスポート出力の LaTeX 部に生成された `\smash` コマンドにあります。 もしあなたのシステムで `\mddefault` と `\updefault` が正しく設定されていないならば、 それらを何もしないように定義することが必要です。

[ Contents | Introduction | Credits ]