FeynMF:TeXによるファインマン・ダイアグラムの書き方
Last updated 2004/7/25



Windows上でTeXを用いている人が、ファインマン・ダイアグラム(Feynman Diagram)をTeXで書くための方法を解説していきます。ここでは、角藤版のTeXがインストールされていて、dviファイルの出力用ソフトウェアとして、dvioutを使っているとします。(その他のOSでも原理的には同じなので、その環境に応じて応用してください。また、この解説ページを2004/1/25に大幅に更新しました。乙部さんの本からTeXをインストールしている場合などで、古い情報が必要な方はこちらを参照してください)

TeXでファインマン・ダイアグラムを書くには、パッケージが必要です。角藤版のTeXを標準インストールでインストールした場合には、デフォルトで入っています。もし、FeynMFがインストールされていないならば、pLaTeX2eならここから、LaTeX2.09ならここからinsファイルを、さらに、ここから、dtxファイルをダウンロード(DL)してください。DL先は、

c:\usr\local\share\texmf\tex\latex\feynmf

というディレクトリを作って、そこに保存しましょう。次に、「feynmf.ins」というファイルをTeXでコンパイルします。コマンドプロンプト上で、

c:\"insファイルをDLしたフォルダ">ptex feynmf.ins

のように実行します。出来るファイルは
「feynmf.log」「feynmf.aux」「feynmf.mf」「feynmf.sty」「feynmf.drv」「feynmp.mp」「feynmp.sty」「feynmp.drv」「fmfman.drv」「fmfman.drv」
です。

ここで、「feynmf.mf」というファイルはmetafontのソースファイルなので

c:\usr\local\share\texmf\fonts\source\feynmf  (ディレクトリ構成は私の設定です)

というディレクトリを作って、そこにコピーしておきましょう。なお、mktexlsr.exeを実行することを忘れずに。

では、feynmfを実際に使ってみることにしましょう。ここでは、LaTeX2eの形式で説明していくことにします。まず、「sample.tex」というファイルを作り、テキストエディタで次のように編集しましょう。

\documentclass{article}
\usepackage{feynmf}
\unitlength=1mm
\begin{document}

\begin{figure}
\begin{fmffile}{feyngraph}
\begin{fmfgraph*}(40,30)

%%%%% external vertexを指定 %%%%%
\fmfleft{ei,ef}
\fmfright{hi,hf}

%%%%% external vertexにlabel付け %%%%%
\fmflabel{$e^-(p')$}{ef}
\fmflabel{$e^-(p)$}{ei}
\fmflabel{h$(P)$}{hi}
\fmflabel{h$(P')$}{hf}

%%%%% internal vertexを指定してlineを描く %%%%%
\fmf{fermion}{ei,gee,ef}
\fmf{photon,label=$\gamma$}{gee,ghh}
\fmf{heavy}{hi,ghh,hf}

%%%%% vertexを描く %%%%%
\fmfdot{gee,ghh}

\end{fmfgraph*}
\end{fmffile}
\end{figure}

\end{document}

というような形式で書くことになります。ここで、斜体の部分は自由に変えてもらって構いません。具体的には、{feyngraph}の部分は、生成されるMETAFONTファイルの名前になる部分で、この部分を変更して、hogehogeにしたとすると、hogehoge.mfというMETAFONTファイルを生成します。また、(40,30)の部分は、図の大きさをピクセル数で指定するパラメータです。ここで、ピクセル数以外の単位は使えないことに注意する必要があります。

では、この「sample.tex」をコンパイルして、ファインマングラフを表示させてみましょう。コンパイルするには、

c:\"sample.texがあるフォルダ">platex sample.tex
c:\"sample.texがあるフォルダ">mf "\mode=localfont; \input feyngraph"
c:\"sample.texがあるフォルダ">platex sample.tex

の順にコマンドを実行します。出力されるMETAFONTファイル名を変えている場合は、「feyngraph」の部分をそのファイル名に置き換えてください。コマンドを実行すると、「sample.dvi」というファイルが作られます。これを、dvioutという出力ソフトで出力します。

c:\"sample.texがあるフォルダ">dviout sample.dvi

このコマンドを実行する、または、dvioutから開こうとすると、エラーが出るはずです。これは、上の「sample.tex」ファイルからファインマングラフを描くために必要なtfmファイルや、pkフォントなどが、dvioutが指定するフォルダに見つからないことから生じるエラーです。

このエラーを解決するには、dvioutの「Option」->「Setup Parameter」から、「Font」タブをクリックし、「TEXPK」の欄に

;.\^s.^dpk

というパラメーターを追加しておくと、エラーは発生しなくなります(山川さん、不祥の器さんに感謝)。 そうすると、



のようにグラフが表示されると思います。(ちなみに、Linuxなどのdviビューアーであるxdviだと、設定をいじることなくちゃんと表示してくれます)。

一方で、パッケージとして、feynmfではなく、feynmpを使うという方法もあります。こちらだと、dvioutの設定をいじる必要はありません。このパッケージを使うためには、\usepackage{feynmf}の部分を

\usepackage{feynmp}

と書き直せばよいです。dviファイルは、

c:\"sample.texがあるフォルダ">platex sample.tex
c:\"sample.texがあるフォルダ">mpost feyngraph.mp
c:\"sample.texがあるフォルダ">platex sample.tex

と実行すると、feynmfのときと同様に表示されます、もちろん、mpostを実行する際に指定するファイル名は、例えば、texファイルの中で、{feyngraph}の部分をhogehogeにしたとすると、hogehoge.mpというファイルができますので、そのファイル名に変更する必要があります。

以下、書式の解説などの、詳しい話は、まだ工事中です。その代わりに、英語によるマニュアルを置いておきます。あとは試行錯誤ですね。皆さん頑張ってください。