> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ja/fen-ye-bie/03-feynman-diagrams.md).

# ファインマン図

## はじめに

このヘルプ記事では、粒子間の相互作用を表現する非常にコンパクトで直感的な方法であるファインマン図を描くための LaTeX パッケージを紹介します。以下では [`tikz-feynman` パッケージ](https://ctan.org/pkg/tikz-feynman?lang=en)、TikZ を使って図を描く [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) （「内部では」）MetaPost を使います。

## TikZ-Feynman パッケージ

その [`tikz-feynman` パッケージ](https://ctan.org/pkg/tikz-feynman?lang=en) は2016年に公開され、ファ*k*Z を用いてファインマン図を生成します。Ti*k*Z-Feynman は Ti*k*Z パッケージとそのグラフ描画アルゴリズムの上に構築され、多くの頂点の配置を自動化します。Ti*k*Z-Feynman では頂点を微調整して配置することもできるため、複雑な図でも簡単に生成できます。Ti*k*Z-Feynman の最新情報は常に [プロジェクトページ](http://www.jpellis.me/projects/tikz-feynman/) と [パッケージドキュメントに記載されているオプションがあります](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) CTAN にあります。

### 更新（2022年11月9日）

**公開後の重要な更新** （2022年11月9日）：このページを更新した時点では、 **TikZ-Feynman パッケージは TeX Live 2018 より後の TeX Live バージョンとは互換性がありません**。これは、このヘルプ記事に付随する [Overleaf プロジェクトで使用されている TeX Live のバージョンです。](https://www.overleaf.com/project/new/template/26607?id=114366276\&templateName=Examples+using+the+TikZ-Feynman+package\&latexEngine=lualatex\&texImage=texlive-full%3A2018.1\&mainFile=) 以下に挙げる TikZ-Feynman のすべての例は、Overleaf プロジェクト内で次の設定にしてコンパイルする必要があります。 **TeX Live のバージョン** を `2018（レガシー）`に設定してください。詳細は [GitHub で報告されたこの issue](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### パッケージの読み込み

パッケージをインストールした後、Ti*k*Z-Feynman パッケージは `\usepackage{tikz-feynman}` をプリアンブルに記述して読み込めます。また、Ti*k*Z-Feynman の使用バージョンを `compat` パッケージオプションを指定しているかどうかによって異なります： `\usepackage[compat=1.0.0]{tikz-feynman}`で指定することも推奨します。これにより、新しいバージョンの Ti*k*Z-Feynman が予告なしに望ましくない変更を生じさせるのを防げます。

### 最初の図

ファインマン図は `\feynmandiagram` コマンドで宣言できます。これは Ti `\tikz` コマンドに類似しており、*k* を終了するために最後にセミコロン（`;`）が必要です。例えば、単純な *s*-チャネル図は次のようになります：

```
\feynmandiagram [horizontal=a to b] {
  i1 -- [fermion] a -- [fermion] i2,
  a -- [photon] b,
  f1 -- [fermion] b -- [fermion] f2,
};
```

![S-channel.png](/files/925ca33284c9f4e43a408f3d9819b95ebdcc9f55)

この例を1行ずつ見ていきましょう：

**1行目**

\feynmandiagram はファインマン図を導入し、角括弧 \[] 内で任意の引数を指定できます。この場合、horizontal=a to b により、頂点 a と b を結ぶ線が水平になるようにアルゴリズムの出力が調整されます。

**2行目**

左側のフェルミオン線は、3つの頂点（i1、a、i2）を宣言し、辺 -- で結ぶことで描かれます。上の \feynmandiagram コマンドと同様に、各辺にも角括弧 \[] で指定する任意の引数を付けられます。この例では、これらの辺に矢印を付けてフェルミオン線であることを示したいので、fermion スタイルを追加します。後で見るように、任意の引数は頂点にもまったく同じ方法で指定できます。

**3行目**

この辺は頂点 a と b を photon スタイルの辺で結んでいます。すでに a というラベルの頂点があるため、アルゴリズムはそれを b とラベル付けされた新しい頂点に接続します。

**4行目**

この行は2行目に類似しており、f1 と f2 の2つの新しい頂点を導入します。これは以前にラベル付けされた b 頂点を再利用しています。

**5行目**

ファインマン図の宣言を終了します。最後のセミコロン（;）は重要です。

グラフ内の各頂点に付ける名前は重要ではありません。したがって、この例では、 `i1`, `i2` は初期粒子を表し、 `f1`, `f2` は最終粒子を表し、 `ある`, `b` は伝播子の端点です。唯一重要なのは、2行目で呼んだ `ある` が3行目でも `ある` であることです。そうすることで、基礎アルゴリズムはそれらを同じ頂点として扱います。

頂点を宣言する順序は、デフォルトのアルゴリズムがすべてを並べ替えるため重要ではありません。例えば、次の例のようにフェルミオン線をまとめて描く方がよい場合があります（頂点の名前の付け方も完全に異なっていることに注意してください）：

```
\feynmandiagram [horizontal=f2 to f3] {
  f1 -- [fermion] f2 -- [fermion] f3 -- [fermion] f4,
  f2 -- [photon] p1,
  f3 -- [photon] p2,
};
```

![Photon-scattering.png](/files/bee4033bff4ba6b9c784967c6e09807b6dc78ae1)

最後に補足すると、頂点をどこに配置するかの計算は通常 Lua で書かれたアルゴリズムによって行われます。そのため、これらのアルゴリズムを利用するには LuaTeX が必要です。LuaTeX を使わない場合、Ti*k*Z-Feynman はより基本的なアルゴリズムを既定で使用し、代わりにユーザーに警告します。

### スタイルの追加

これまでの例では、 `photon` と `fermion` のスタイルしか使っていません。Ti*k*Z-Feynman パッケージには、辺や頂点用の追加スタイルがかなり用意されており、それらはすべて [パッケージドキュメントに記載されているオプションがあります](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf)に文書化されています。例えば、 `momentum=<text>`で運動量矢印を追加できますし、終点の頂点では `particle=<text>`で粒子名を付けられます。使い方を示すため、先ほどの一般的な *s*-チャネル図を、電子・陽電子対がミューオンに消滅する図へと変えてみましょう：

```
\feynmandiagram [horizontal=a to b] {
  i1 [particle=\(e^{-}\)] -- [fermion] a -- [fermion] i2 [particle=\(e^{+}\)],
  a -- [photon, edge label=\(\gamma\), momentum'=\(k\)] b,
  f1 [particle=\(\mu^{+}\)] -- [fermion] b -- [fermion] f2 [particle=\(\mu^{-}\)],
};
```

![S-channel-labelled.png](/files/acc0ec0a31636b4cc205aede6f45d7ecac48e989)

以下で文書化されているスタイルキーに加えて、Ti*k*Z のスタイルキーも使用できます：

```
\feynmandiagram [horizontal=a to b] {
  i1 [particle=\(e^{-}\)] -- [fermion, very thick] a -- [fermion, opacity=0.2] i2 [particle=\(e^{+}\)],
  a -- [red, photon, edge label=\(\gamma\), momentum'={[arrow style=red]\(k\)}] b,
  f1 [particle=\(\mu^{+}\)] -- [fermion, opacity=0.2] b -- [fermion, very thick] f2 [particle=\(\mu^{-}\)],
};
```

![S-channel-labelled-styled.png](/files/fcacef559bdfd70d2aeb500a130b0360e262f5ec)

Ti*k*Z が提供する各種スタイルの一覧は、 [Ti*k*Z マニュアル](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf)を参照してください。非常に詳しく、多くの使用例が掲載されています。

### アルゴリズムだけでは不十分な場合

デフォルトでは、 `\feynmandiagram` と `\diagram` コマンドは `spring layout` アルゴリズムを使ってすべての辺を配置します。 `spring layout` このアルゴリズムは図をできるだけ「広げる」ことを試み、ほとんどのより単純な図では満足のいく結果になります。しかし場合によっては最良の図にならないことがあり、この節では代替手段を見ていきます。主な代替手段は3つあります：

**不可視の辺を追加する**

デフォルトのアルゴリズムを使ったままでも、追加の辺を加えて draw=none により不可視にすることで、特定の頂点をより近づけることができます。アルゴリズムはこれらの追加辺も同じように扱いますが、最後に単に描画されないだけです；

**別のアルゴリズムを使う**

状況によっては、他のアルゴリズムの方が適していることがあります。他のグラフ配置アルゴリズムの一部はパッケージ文書に一覧されており、すべてのアルゴリズムとその引数の完全な一覧は TikZ マニュアルにあります；

**手動配置**

最後の手段として、非常に複雑または珍しい図では、各頂点を手動で配置する必要があります。

#### 不可視の辺

基礎となるアルゴリズムは、すべての頂点をどこに配置するかを計算する際、すべての辺をまったく同じように扱います。そして、図の実際の描画（配置が計算された後）は別に行われます。したがって、辺をアルゴリズムに追加しつつ、 `draw=none` を辺のスタイルに追加することで描画を防ぐことができます。

これは、次の例で示すように、初期状態や最終状態を本来よりも近く保ちたい場合に特に便利です（ `opacity=0.2` の代わりに `draw=none` を使って、辺がちょうどどこにあるかを示していることに注意してください）。

```
% 2つの光子を近くに保つために不可視辺を使わない
\feynmandiagram [small, horizontal=a to t1] {
  a [particle=\(\pi^{0}\)] -- [scalar] t1 -- t2 -- t3 -- t1,
  t2 -- [photon] p1 [particle=\(\gamma\)],
  t3 -- [photon] p2 [particle=\(\gamma\)],
};
```

![Invisible-edge-before.png](/files/5e6277881c645e7ea45c207b06aa8b38573c59dc)

```
% 不可視辺によって光子が平行になる
\feynmandiagram [small, horizontal=a to t1] {
  a [particle=\(\pi^{0}\)] -- [scalar] t1 -- t2 -- t3 -- t1,
  t2 -- [photon] p1 [particle=\(\gamma\)],
  t3 -- [photon] p2 [particle=\(\gamma\)],
  p1 -- [opacity=0.2] p2,
};
```

![Invisible-edge-after.png](/files/85f7387ad96ef2b8ccd9c8b2558c824947f1cc70)

#### ファインマン図を描くための他のパッケージ

TikZ-Feynman パッケージの代替はいくつかあります：*k*Z には、頂点を配置するためのいくつかの異なるアルゴリズムがあります。既定では、 `\diagram` と `\feynmandiagram` を使用する `spring layout` アルゴリズムで頂点を配置します。 `spring layout` この `spring layout` がうまくいかない良い例は、左に崩壊する粒子があり、すべての娘粒子が右にある崩壊です。

```
% 既定の spring layout を使用
\feynmandiagram [horizontal=a to b] {
  a [particle=\(\mu^{-}\)] -- [fermion] b -- [fermion] f1 [particle=\(\nu_{\mu}\)],
  b -- [boson, edge label=\(W^{-}\)] c,
  f2 [particle=\(\overline \nu_{e}\)] -- [fermion] c -- [fermion] f3 [particle=\(e^{-}\)],
};
```

![Spring-layout.png](/files/83b78be72cd058f06323b508a345e316405797ba)

```
% レイヤー配置を使用
\feynmandiagram [layered layout, horizontal=a to b] {
  a [particle=\(\mu^{-}\)] -- [fermion] b -- [fermion] f1 [particle=\(\nu_{\mu}\)],
  b -- [boson, edge label'=\(W^{-}\)] c,
  c -- [anti fermion] f2 [particle=\(\overline \nu_{e}\)],
  c -- [fermion] f3 [particle=\(e^{-}\)],
};
```

![Layered-layout.png](/files/7e23344bccfc87c83e7eb225c8a414778cac487f)

追加しただけでなく `layered layout` スタイルを `\feynmandiagram`に追加したことに加えて、頂点を指定する順序も変更したことに気付くかもしれません。これは、 `layered layout` アルゴリズムは頂点を宣言する順序に注意を払うからです（既定の `spring layout`とは異なり）；その結果、 `c--f2, c--f3` は `f2--c--f3`とは異なる意味になります。前者の場合、 `f2` と `f3` はどちらも `c` の下の層にあり、意図どおりです。一方、後者の場合、 `f2` は `c` の上の層に配置されます（つまり、W ボソンが始まるのと同じ層です）。

#### 手動配置

より複雑な図では、どれだけ多くの不可視辺を追加しても、どのアルゴリズムも機能しない可能性が高いです。そのような場合、頂点は手動で配置しなければなりません。Ti*k*Z-Feynman では `\vertex` コマンドで囲めるようになります。

その `\vertex` コマンドを使って頂点を手動配置できます。 `feynman` 環境内でのみ使用可能です（この環境自体は `tikzpicture`内でのみ使用できます）。 `feynman` 環境は Ti*k*Z-Feynman から関連するスタイルをすべて読み込み、*k*Z-Feynman 固有のコマンドを追加で宣言します。たとえば `\vertex` と `\diagram`などです。これは PGFPlots に着想を得ており、その `axis` 環境です。

その `\vertex` コマンドの使い方は Ti `\node` コマンドに類似しており、*k*に非常に類似していますが、頂点の内容が任意である点が特筆されます。つまり、末尾に `{<text>}` が必須ではありません。 `{}` が指定された場合、頂点には自動的に `particle` スタイルが付与され、そうでない場合は通常の（サイズ0の）頂点になります。

頂点をどこに置くかを指定するには、明示的な座標を与えることもできますが、既存の頂点に対して相対的に配置できる Ti `positioning` ライブラリを使うのがたぶん最も簡単です。*k*これにより、相対配置を使ってグラフの一部を簡単に調整でき、他のすべてはそれに応じて自動調整されます。対照的に、影響を受けるすべての頂点の座標を手動で調整する必要があります。

最後に、すべての頂点を指定し終えたら、 `\diagram*` コマンドを使ってすべての辺を指定します。これは `\diagram` とほぼ同じ方法で動作し（さらに `\feynmandiagram`も）、非常に基本的なアルゴリズムで新しいノードを配置し、既存の（名前付きの）ノードも含めることができます。既存のノードを参照するには、そのノードを括弧で囲んで与える必要があります。

ノードを指定してからそれらの間に辺を描くこの一連の流れを、ミューオン崩壊の例で以下に示します：

```
\begin{tikzpicture}
  \begin{feynman}
    \vertex (a) {\(\mu^{-}\)};
    \vertex [right=of a] (b);
    \vertex [above right=of b] (f1) {\(\nu_{\mu}\)};
    \vertex [below right=of b] (c);
    \vertex [above right=of c] (f2) {\(\overline \nu_{e}\)};
    \vertex [below right=of c] (f3) {\(e^{-}\)};

    \diagram* {
      (a) -- [fermion] (b) -- [fermion] (f1),
      (b) -- [boson, edge label'=\(W^{-}\)] (c),
      (c) -- [anti fermion] (f2),
      (c) -- [fermion] (f3),
    };
  \end{feynman}
\end{tikzpicture}
```

![Manual-positioning.png](/files/49ca11d32d1d635f0dbf2334b576865d5908b29d)

## ファインマン図を描くための他のパッケージ

TikZ-Feynman パッケージの代替はいくつかあります：

* [`feynmf`](https://ctan.org/pkg/feynmf): は [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) （ `feynmf`と同梱） は [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): から派生した `feynmp`

その `feynmp-auto` パッケージは、実質的には `feynmp` パッケージの拡張版であり、pdfTeX、LuaTeX、XeTeX で使用するために MetaPost の PostScript コードを PDF データへ自動変換するよう設計されています。以下の例ではすべて `feynmp-auto`.

### はじめに

その `feynmf`, `feynmp` と `feynmp-auto` パッケージでは、頂点・粒子・そのラベルを指定してファインマン図を簡単に描け、レイアウトも自動で行われます。

#### feynmf ベースのパッケージの概要

ファインマン図を作成するには、次のことが必要です：

1. 作成する `fmfile` 環境。中に1つ以上の図を含め、それぞれを `fmfgraph` または `fmfgraph*` 環境で囲みます。星付き形式と非星付き形式の違いは [以下で説明します](#fmfgraph-and-fmfgraph);
2. 各 `fmfgraph` または `fmfgraph*` 環境を使って、個々のファインマン図を作成するのに必要な描画命令を含めることです。

その `fmfile` 環境は次の形式をとります

```latex
\begin{fmffile}{file-name}

% 図1
\begin{fmfgraph}(width,height)
...
\end{fmfgraph}

% 図2
\begin{fmfgraph*}(width,height)
...
\end{fmfgraph*}

\end{fmffile}
```

ここで `file-name` は、各描画の MetaPost コードの説明を格納するために使われるファイル名です。 `fmfgraph`/`fmfgraph*` 環境によって生成される異なる間隔を示します。

各図は次の形式をとります

```latex
\begin{fmfgraph}(width,height)

% 描画命令

\end{fmfgraph}
```

または、星付き版（`fmfgraph*`)

```latex
\begin{fmfgraph*}(width,height)

% 描画命令

\end{fmfgraph*}
```

ここで `(width,height)` の場合は、図のサイズを [`\unitlength`](#note-on-unitlength).

の単位で表したものを定義します。 `file-name` にある MetaPost コードは、ファインマン図を表す図を生成するために処理されます。 `fmfile` 環境には最大256個の個別の描画を含められます。

#### fmfgraph と fmfgraph\*

* `fmfgraph`: この環境には単一のファインマン図の描画命令（説明）が含まれます。これは *の位置に配置されます*。この環境はラベルをサポートしません。図にラベルを含めるには `fmfgraph*` を使ってください。
* `fmfgraph*` は `fmfgraph`と同じですが、同じサイズの [`picture` 環境](/latex/ja/to/04-picture-environment.md) に囲まれています。LaTeX ラベルの使用をサポートします。

### 例

まずは簡単な例から始めましょう：

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(120,80)
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
 \end{fmfgraph}
\end{fmffile}
\end{document}
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bfirst-diagram%7D%0A+%5Cbegin%7Bfmfgraph%7D%28120%2C80%29%0A+++%5Cfmfleft%7Bi1%2Ci2%7D%0A+++%5Cfmfright%7Bo1%2Co2%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi1%2Cv1%2Co1%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi2%2Cv2%2Co2%7D%0A+++%5Cfmf%7Bphoton%7D%7Bv1%2Cv2%7D%0A+%5Cend%7Bfmfgraph%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

この例では、次の出力が生成されます:

![](/files/6b997d7a2156fd21b1f4022842aa5bad38ed0cd9)

この例では、 `fmfgraph` 環境が描画の幅と高さをそれぞれ120と80に設定します：

```latex
\begin{fmfgraph}(120,80)
```

の値によって決まる単位を使い、 `\unitlength`は既定値 1pt を持ちます。その結果、この図には120ptの幅と80ptの高さが割り当てられます。

#### \unitlength に関する注意

が LaTeX の寸法であるため、 `\unitlength` の値は `\\setlength` コマンドで変更できます。たとえば、描画の幅と高さを cm 単位で定義するには、次のように書けます：

```latex
\setlength{\unitlength}{1cm}
```

上の例を再現すると、以下の図の幅は `8cm` で、高さは `5cm`:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(8,5)% 単位は cm になりました
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
 \end{fmfgraph}
\end{fmffile}
\end{document}
```

[この例を Overleaf で開く。](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Setting+units+to+draw+Feynman+diagrams\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Cbegin%7Bfmffile%7D%7Bfirst-diagram%7D%0A+%5Cbegin%7Bfmfgraph%7D%288%2C5%29%25+units+are+now+in+cm%0A+++%5Cfmfleft%7Bi1%2Ci2%7D%0A+++%5Cfmfright%7Bo1%2Co2%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi1%2Cv1%2Co1%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi2%2Cv2%2Co2%7D%0A+++%5Cfmf%7Bphoton%7D%7Bv1%2Cv2%7D%0A+%5Cend%7Bfmfgraph%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

この例では、より大きな図が生成されます：

![](/files/81340efde720482b0413f8d57d942810cd075745)

### 頂点

最初に行う必要があるのは、外部頂点とその配置場所を指定することです。頂点には好きな名前を付けられ、次のコマンドで配置場所を指定できます： `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

上の例で使用したように：

```latex
% 左側に i1 と i2 という 2 つの頂点を作成します
\fmfleft{i1,i2}

% 右側に o1 と o2 という 2 つの頂点を作成します
\fmfright{o1,o2}
```

頂点は次のコマンドで接続できます `\fmf`。これは、まだ作成されていない名前を渡すと新しい頂点を作成します。また、上の例で使用したように：

```latex
% i1 と
% 新たに作成された v1 の間、および v1 と o1 の間にフェルミオン線を作成します。
\fmf{fermion}{i1,v1,o1}

% v1 と新たに作成された v2 の間に光子線を作成します
\fmf{photon}{v1,v2}
```

### ラベル

前述の [とおり](#fmfgraph-and-fmfgraph)、ラベルを使用するには描画を次の `fmfgraph*` 描画環境の形式で作成する必要があります。

次の `\fmflabel` コマンドを使って頂点にラベルを配置します：

```latex
\fmflabel{label-content}{diagram-vertex}
```

その内訳は次のとおりです：

* `ラベル内容` は、選択した頂点に適用するラベルです；
* `図の頂点` は、ラベルを付ける頂点の名前です。

注意: `ラベル内容` 数式要素を含めることができます。

前の例を再利用して、次のラベルを追加できます

```latex
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
```

これにより、下に示す更新された図が生成されます：

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %注: fmfgraph* 環境
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % ラベルを追加
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[この例を Overleaf で開く。](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Adding+labels+to+Feynman+diagrams\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bfirst-diagram%7D%0A+%5Cbegin%7Bfmfgraph%2A%7D%28120%2C80%29+%25NOTE+the+fmfgraph%2A+environment%0A+++%5Cfmfleft%7Bi1%2Ci2%7D%0A+++%5Cfmfright%7Bo1%2Co2%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi1%2Cv1%2Co1%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi2%2Cv2%2Co2%7D%0A+++%5Cfmf%7Bphoton%7D%7Bv1%2Cv2%7D%0A+++%25+Add+our+labels%0A+++%5Cfmflabel%7B%24v_1%24%7D%7Bv1%7D%0A+++%5Cfmflabel%7B%24v_2%24%7D%7Bv2%7D%0A+%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

この例では、ラベルを含むファインマン図が生成されます：

![](/files/b2c52d148c68b5320ffb1ac944b3801fcd6b6b1e)

### さらにいくつかの複雑な例

以下の、より高度な例では、次の機能を使用します `feynmp` ここでは説明していないもの： [`feynmp` パッケージ（`feynmf`) のドキュメントを参照してください](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—そこには、さらに多くの追加例も含まれています。これらの図は、元々 Overleaf のテンプレートで公開されており、そのテンプレートには CERN の Web ページから再現された LaTeX コードが含まれていましたが、そのページは現在、次の方法でのみアクセスできます [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—そのページには、試してみたくなるさらに多くの例があります。

#### 例 1

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-a}
\begin{fmfgraph*}(100,100)
    \fmfleft{i1}
    \fmfright{o1,o2}
    \fmf{fermion,label=$u$}{i1,w1}
    \fmf{fermion,label=$d$}{w1,o1}
    \fmf{photon,label=$W^{+}$}{w1,o2}
    \fmfv{lab=$V^{\ast}_{ud}$,lab.dist=0.05w}{w1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bcomplex-a%7D%0A%5Cbegin%7Bfmfgraph%2A%7D%28100%2C100%29%0A++++%5Cfmfleft%7Bi1%7D%0A++++%5Cfmfright%7Bo1%2Co2%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24u%24%7D%7Bi1%2Cw1%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24d%24%7D%7Bw1%2Co1%7D%0A++++%5Cfmf%7Bphoton%2Clabel%3D%24W%5E%7B%2B%7D%24%7D%7Bw1%2Co2%7D%0A++++%5Cfmfv%7Blab%3D%24V%5E%7B%5Cast%7D_%7Bud%7D%24%2Clab.dist%3D0.05w%7D%7Bw1%7D%0A%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

この例では次の図が生成されます：

![](/files/d60cdf137d9ab2fbf4fa9464fde2df70bbc9fe03)

#### 例 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % 下側と上側の頂点
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % 入射陽子からグルオン頂点へ
    \fmf{fermion,label=$d$}{i1,o1}
    % 張力により頂点が片側へずれる
    \fmf{fermion,tension=1.5,label=$\overline{b}$}{v2,i4}
    \fmf{fermion,label=$\overline{c}$}{o4,v2}
    \fmffreeze
    \fmf{fermion}{o2,v3,o3}
    \fmf{fermion,label=$\overline{s}$}{o2,v3}
    \fmf{fermion,label=$c$}{v3,o3}
    \fmf{photon, tension=2,label=$W^{+}$}{v2,v3}
    % ファントムにより W->cs 頂点が中央に配置されます
    \fmf{phantom,tension=1.5}{i1,v3}

    \fmfv{lab=$V_{cb}^{\ast}$}{v2}
    \fmfv{lab=$V_{cs}$,lab.dist=-.1w}{v3}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bcomplex-b%7D%0A%5Cbegin%7Bfmfgraph%2A%7D%28200%2C200%29%0A++++%25+bottom+and+top+verticies%0A++++%5Cfmfstraight%0A++++%5Cfmfleft%7Bi0%2Ci1%2Ci2%2Cid1%2Cid2%2Ci3%2Ci4%2Ci5%7D%0A++++%5Cfmfright%7Bo0%2Co1%2Co2%2Cod1%2Cod2%2Co3%2Co4%2Co5%7D%0A++++%25+incoming+proton+to+gluon+vertices%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24d%24%7D%7Bi1%2Co1%7D%0A++++%25+tension+shifts+vertex+to+one+side%0A++++%5Cfmf%7Bfermion%2Ctension%3D1.5%2Clabel%3D%24%5Coverline%7Bb%7D%24%7D%7Bv2%2Ci4%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24%5Coverline%7Bc%7D%24%7D%7Bo4%2Cv2%7D%0A++++%5Cfmffreeze%0A++++%5Cfmf%7Bfermion%7D%7Bo2%2Cv3%2Co3%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24%5Coverline%7Bs%7D%24%7D%7Bo2%2Cv3%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24c%24%7D%7Bv3%2Co3%7D%0A++++%5Cfmf%7Bphoton%2C+tension%3D2%2Clabel%3D%24W%5E%7B%2B%7D%24%7D%7Bv2%2Cv3%7D%0A++++%25+phantom+centres+the+W-%3Ecs+vertex%0A++++%5Cfmf%7Bphantom%2Ctension%3D1.5%7D%7Bi1%2Cv3%7D%0A%0A++++%5Cfmfv%7Blab%3D%24V_%7Bcb%7D%5E%7B%5Cast%7D%24%7D%7Bv2%7D%0A++++%5Cfmfv%7Blab%3D%24V_%7Bcs%7D%24%2Clab.dist%3D-.1w%7D%7Bv3%7D%0A%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

この例では次の図が生成されます：

![](/files/e5099cb92fbd4dff6c77150434542b126feb3ba9)

#### 例 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    %下側と上側の頂点
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    %入射陽子からグルオン頂点へ
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    %グルオン頂点のブロブ。0.16w はブロブの大きさです
    \fmfblob{.16w}{g1,g2}
    % P1 から頂点1へのグルオン
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    % P2 から頂点2へのグルオン - 順序の変更に注意！
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    % ここにはクォークループがありました
    \fmf{fermion, tension=.6, lab.side=right,lab=$b$}{v1,b}
    \fmf{fermion, tension=1.2}{v2,v1}
    \fmf{fermion, tension=.6, lab.side=right,lab=$\overline{b}$}{bbar,v2}
    % 出射陽子
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    % すべてをその場で固定します
    \fmffreeze
    \renewcommand{\P}[3]{\fmfi{plain}{%
        vpath(__#1,__#2) shifted (thick*(#3))}}
    % P1 上の線
    \P{P1}{g1}{2,0}
    \P{P1}{g1}{-2,1}
    % p2 上の線
    \P{P2}{g2}{2,1}
    \P{P2}{g2}{-2,0}
    % P1' 上の線
    \P{g1}{P1'}{-2,-1}
    \P{g1}{P1'}{2,0}
    % P2' 上の線
    \P{g2}{P2'}{-2,0}
    \P{g2}{P2'}{2,-1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[この例をOverleafで開く](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bcomplex-c%7D%0A%5Cbegin%7Bfmfgraph%2A%7D%28200%2C200%29%0A++++%25bottom+and+top+verticies%0A++++%5Cfmfbottom%7BP1%2CP2%7D%0A++++%5Cfmftop%7BP1%27%2Cb%2Cbbar%2CP2%27%7D%0A++++%25incoming+protons+to+gluon+vertices%0A++++%5Cfmf%7Bfermion%2Ctension%3D2%2Clab%3D%24P_1%24%7D%7BP1%2Cg1%7D%0A++++%5Cfmf%7Bfermion%2Ctension%3D2%2Clab%3D%24P_2%24%7D%7BP2%2Cg2%7D%0A++++%25blobs+at+gluon+vertices%2C+0.16w+is+the+size+of+blob%0A++++%5Cfmfblob%7B.16w%7D%7Bg1%2Cg2%7D%0A++++%25gluon+from+P1+to+vertex1%0A++++%5Cfmf%7Bgluon%2Clab.side%3Dright%2Clab%3D%24x_%7B1%7DP_%7B1%7D%24%7D%7Bg1%2Cv1%7D%0A++++%25gluon+from+P2+to+vertex2+-+note+change+of+order%21%0A++++%5Cfmf%7Bgluon%2Clab.side%3Dright%2Clab%3D%24x_%7B2%7DP_%7B2%7D%24%7D%7Bv2%2Cg2%7D%0A++++%25quark+loop+was+here%0A++++%5Cfmf%7Bfermion%2C+tension%3D.6%2C+lab.side%3Dright%2Clab%3D%24b%24%7D%7Bv1%2Cb%7D%0A++++%5Cfmf%7Bfermion%2C+tension%3D1.2%7D%7Bv2%2Cv1%7D%0A++++%5Cfmf%7Bfermion%2C+tension%3D.6%2C+lab.side%3Dright%2Clab%3D%24%5Coverline%7Bb%7D%24%7D%7Bbbar%2Cv2%7D%0A++++%25outgoing+protons%0A++++%5Cfmf%7Bfermion%7D%7Bg1%2CP1%27%7D%0A++++%5Cfmf%7Bfermion%7D%7Bg2%2CP2%27%7D%0A++++%25freeze+everything+in+place%0A++++%5Cfmffreeze%0A++++%5Crenewcommand%7B%5CP%7D%5B3%5D%7B%5Cfmfi%7Bplain%7D%7B%25%0A++++++++vpath%28__%231%2C__%232%29+shifted+%28thick%2A%28%233%29%29%7D%7D%0A++++%25lines+on+P1%0A++++%5CP%7BP1%7D%7Bg1%7D%7B2%2C0%7D%0A++++%5CP%7BP1%7D%7Bg1%7D%7B-2%2C1%7D%0A++++%25lines+on+p2%0A++++%5CP%7BP2%7D%7Bg2%7D%7B2%2C1%7D%0A++++%5CP%7BP2%7D%7Bg2%7D%7B-2%2C0%7D%0A++++%25lines+on+P1%27%0A++++%5CP%7Bg1%7D%7BP1%27%7D%7B-2%2C-1%7D%0A++++%5CP%7Bg1%7D%7BP1%27%7D%7B2%2C0%7D%0A++++%25lines+on+P2%27%0A++++%5CP%7Bg2%7D%7BP2%27%7D%7B-2%2C0%7D%0A++++%5CP%7Bg2%7D%7BP2%27%7D%7B2%2C-1%7D%0A%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

この例では次の図が生成されます：

![](/files/818d92aed65fac0802a7a46ab09ff74c69fba179)

### 線のスタイル

これまでに `photon` と `fermion` 上記の線のスタイルを見てきましたが、 `feynmp` このパッケージはさらに多くをサポートしています。

| 見た目                                                                                  | 名前                      |
| ------------------------------------------------------------------------------------ | ----------------------- |
| ![Feynmf-line-curly.png](/files/cdabb3552e6b0c5547c310905d122324a9242162)            | グルオン、カール                |
| ![Feynmf-line-dbl-curly.png](/files/525df4a526e5763d3fe0a52a7ef198ef4d5f16df)        | 二重カール                   |
| ![Feynmf-line-dashes.png](/files/fb0248bded87b3c1c267df983bf3c10cabcf7453)           | 破線                      |
| ![Feynmf-line-dashed-arrow.png](/files/f353bc29503dddaf752a0c548363bccd48591120)     | スカラー、矢印付き破線             |
| ![Feynmf-line-dbl-dashes.png](/files/83911390957aa2e13b51396dac432c6ddb1957b8)       | 二重破線                    |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/6bbf01d3c67dca47a5db0779ad7ac030783c5d7a) | 二重破線、矢印付き               |
| ![Feynmf-line-dots.png](/files/a792408f79b64cd1518614b5d443237f13bcd13d)             | 点線                      |
| ![Feynmf-line-dots-arrow.png](/files/06e9c5bae81a84891d12872cb0b355c886577241)       | ゴースト、矢印付き点線             |
| ![Feynmf-line-dbl-dots.png](/files/fea0af897786971c643cef61d20fb3885d0afaad)         | 二重点線                    |
| ![Feynmf-line-dbl-dots-arrow.png](/files/c574db37e5d3506e30f71357b1f3e9c7d52c01f0)   | 二重点線、矢印付き               |
|                                                                                      | ファントム                   |
| ![Feynmf-line-phantom-arrow.png](/files/1b114e55955d097f35ef7e427aea2425369d5c1c)    | ファントム、矢印付き              |
| ![Feynmf-line-plain.png](/files/44eec73e82addeba7ae3ab207cd0f0431b9aaf70)            | 通常、プレーン                 |
| ![Feynmf-line-plain-arrow.png](/files/621a289628437be51d49f653e287f2196ca0175f)      | フェルミオン、電子、クォーク、矢印付きプレーン |
| ![Feynmf-line-dbl-plain.png](/files/ede2d3e1a5efadc9be6c40a11086b63bbdc62f06)        | 二重、二重プレーン               |
| ![Feynmf-line-dbl-plain-arrow.png](/files/90d082bbd2fb9912078fae6a2eec9a4b06295f45)  | 二重矢印、太線、矢印付き二重プレーン      |
| ![Feynmf-line-wiggly.png](/files/1d251c1c4dc9126779fc9c7a4616ba1a263720ad)           | ボソン、光子、波線               |
| ![Feynmf-line-dbl-wiggly.png](/files/9681f59934d43a370df636d3726e6e57897ee7c8)       | 二重波線                    |
| ![Feynmf-line-zigzag.png](/files/8c28a05c2dfa64427d407868fd2de53e0ea69cd0)           | ジグザグ                    |
| ![Feynmf-line-dbl-zigzag.png](/files/e17b1538c199d125e1c19b0b4b509748311404d2)       | 二重ジグザグ                  |

## この行を追加した後、「Word count」をクリックする前に、まず再コンパイルする必要があることに注意してください。

詳細は以下を参照してください:

* [化学式](/latex/ja/fen-ye-bie/02-chemistry-formulae.md)
* [分子軌道図](/latex/ja/fen-ye-bie/04-molecular-orbital-diagrams.md)
* [TikZ パッケージ](/latex/ja/to/05-tikz-package.md)
* [LaTeX で直接図を描く](/latex/ja/to/04-picture-environment.md)
* [画像の挿入](/latex/ja/sononotopikku/27-inserting-images.md)
* [ギリシャ文字と数式記号の一覧](/latex/ja/shu-xue/11-list-of-greek-letters-and-math-symbols.md)
* [その **feynmf** パッケージドキュメントに記載されているオプションがあります](http://mirrors.ctan.org/macros/latex/contrib/feynmf/fmfman.pdf).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ja/fen-ye-bie/03-feynman-diagrams.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
