> 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/zh-tw/te-ding-ling-yu/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 年發布，並使用 Ti*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 上回報的這個問題](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` 命令。它類似於 `\tikz` 來自 Ti 的命令*k*Z，且需要以分號（`;`）結束環境。例如，一個簡單的 *s*道圖如下：

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

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

讓我們逐行看這個範例：

**第 1 行**

\feynmandiagram 會引入費曼圖，並允許在方括號 \[] 中提供可選引數。在這個例子中，horizontal=a to b 會讓演算法輸出的方向設定為讓通過頂點 a 和 b 的線保持水平。

**第 2 行**

左側的費米子線是透過宣告三個頂點（i1、a 和 i2）並以 -- 邊將它們連接起來繪製的。和上面的 \feynmandiagram 命令一樣，每條邊也可以帶有以方括號 \[] 指定的可選引數。在這個例子中，我們希望這些邊帶有箭頭以表示它們是費米子線，因此替它們加上 fermion 樣式。如您之後會看到，可選引數也可以用完全相同的方式指定給頂點。

**第 3 行**

這條邊將頂點 a 和 b 連接起來，並將其樣式設為光子。由於已經有一個標示為 a 的頂點，演算法會把它連到一個新的標示為 b 的頂點。

**第 4 行**

這一行與第 2 行類似，並引入兩個新頂點 f1 和 f2。它重複使用先前已標示的 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/3a29590a55f2846613d2d248f53e8407b3886b6a)

最後補充一點，頂點應該放在哪裡的計算通常是透過以 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/a5188c2d2c3e086ef34867987776b60ab79c3efb)

除了下方記錄的樣式鍵之外，也可以使用來自 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/f4bf6725c663e35a9bdfb84432f775b60bd456f6)

若要查看 Ti*k*Z 提供的所有樣式清單，請參考 [Ti*k*Z 手冊](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf)；內容非常詳盡，並提供許多使用範例。

### 當演算法不夠用時

預設情況下， `\feynmandiagram` 以及 `\diagram` 命令使用 `彈簧佈局` 演算法來放置所有邊。 `彈簧佈局` 演算法會盡可能把圖表「攤開」，對大多數較簡單的圖而言能得到令人滿意的結果；然而在某些情況下，這不一定會產生最佳的圖，而本節將探討替代方案。主要有三種替代方式：

**新增不可見邊**

即使仍使用預設演算法，也可以透過新增額外邊並使用 draw=none 使其不可見，來強制某些頂點彼此更靠近。演算法會以相同方式處理這些額外邊，但最後只是將它們不畫出來；

**使用不同的演算法**

在某些情況下，其他演算法可能更合適。套件文件中列出了一些其他圖形佈局演算法，而所有演算法及其參數的完整清單則收錄在 TikZ 手冊中；

**手動放置**

作為最後手段，非常複雜或不尋常的圖表會需要手動放置每個頂點。

#### 不可見邊

底層演算法在計算所有頂點應放置的位置時，會以完全相同的方式處理所有邊，而圖表的實際繪製（在位置計算完成之後）則是分開進行的。因此，可以將邊加入演算法中，但透過加入 `draw=none` 到邊的樣式中，讓它們不被繪出。

如果您希望確保初態或末態保持比原本更靠近，這點特別有用，如下例所示（請注意， `opacity=0.2` 是用來取代 `draw=none` ，以顯示邊的確切位置）。

```
% 不使用不可見邊，以讓兩個光子保持在一起
\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/88a201a17e703fc98fcaf57358712060f5350a22)

```
% 不可見邊可確保光子平行
\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/c5ece826411ffb5cae0447a1ce48ae74fdb38688)

#### 替代演算法

來自 Ti 的圖形繪製函式庫*k*Z 有數種不同的演算法可用來定位頂點。預設情況下， `\diagram` 以及 `\feynmandiagram` 使用 `彈簧佈局` 演算法來放置頂點。 `彈簧佈局` 會盡可能把所有東西攤開，這在多數情況下都能得到不錯的圖；然而，在某些情況下這並不可行。一個很好的例子是 `彈簧佈局` 不起作用的衰變圖：衰變粒子在左側，而所有子粒子在右側。

```
% 使用預設彈簧佈局
\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/81c161da51111c3b4591b9a8837a5719cf815ca4)

```
% 使用分層佈局
\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/7e4d5d903b173c3eea1e84abd95e875c3ef26ffe)

您可能會注意到，除了加入 `分層佈局` 樣式到 `\feynmandiagram`之外，我們也改變了指定頂點的順序。這是因為 `分層佈局` 演算法確實會注意頂點宣告的順序（不同於預設 `彈簧佈局`）；因此， `c--f2, c--f3` 與 `f2--c--f3`的意義不同。在前一種情況下， `f2` 以及 `f3` 都位於下方的層級 `c` ，符合預期；而後一種情況則會把 `f2` 放在上方的層級 `c` （也就是 W 玻色子起源所在的同一層）。

#### 手動放置

在更複雜的圖表中，很可能無論新增多少不可見邊，任何演算法都不管用。在這種情況下，頂點必須手動放置。Ti*k*Z-Feynman 允許使用 `\vertex` 來完成的。

該 `\vertex` 命令，但僅可在 `feynman` 環境中使用（而該環境本身也僅可在 `tikzpicture`）中使用。The `feynman` 該環境會載入來自 Ti*k*Z-Feynman 的所有相關樣式，並宣告額外的 Ti*k*Z-Feynman 專用命令，例如 `\vertex` 以及 `\diagram`。 `axis` 環境來繪製圖形。

該 `\vertex` 命令與 `\node` 來自 Ti 的命令*k*Z 的用法非常類似，唯一值得注意的例外是頂點內容是可選的；也就是說，您不必一定要有 `{<text>}` 放在最後。若 `{}` 有指定，頂點會自動套用 `particle` 樣式，否則它就是一般的（零大小）頂點。

若要指定頂點的位置，可以給出明確座標，不過最簡單的方法大概是使用 `positioning` 來自 Ti 的函式庫*k*Z，這個函式庫允許將頂點相對於既有頂點來放置。透過相對位置安排，可以很容易地微調圖中的某一部分，而其他部分也會自動對應調整——否則就得手動調整每個受影響頂點的座標。

最後，一旦所有頂點都已指定， `\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/ccdba0cbf1f954344608a33e82492940ad56a029)

## 其他繪製費曼圖的套件

除了 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` 套件，旨在自動將 MetaPost 的 PostScript 程式碼轉換為可供 pdfTeX、LuaTeX 與 XeTeX 使用的 PDF 資料。以下範例皆使用 `feynmp-auto`.

### 簡介

該 `feynmf`, `feynmp` 以及 `feynmp-auto` 這些套件讓您能透過指定頂點、粒子及其標籤來輕鬆繪製費曼圖，然後自動執行佈局以畫出您的圖表。

#### 使用基於 feynmf 的套件概覽

要建立費曼圖，您需要：

1. 建立一個 `fmfile` 環境，用來包含一個或多個圖表，每個圖都包在一個 `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).

中的 MetaPost 程式碼 `file-name` 會被處理以建立代表您的費曼圖的圖形。 `fmfile` 一個環境最多可包含 256 個單獨繪圖。

#### fmfgraph 與 fmfgraph\*

* `fmfgraph`：此環境包含單一費曼圖的繪圖指令（描述）。它將被放置在 *環境所在的位置*。此環境不支援標籤，請使用 `fmfgraph*` 來在您的圖表中加入標籤。
* `fmfgraph*` 與 `fmfgraph`相同，但包在一個 [`圖片` 環境](/latex/zh-tw/tu-biao-yu-biao-ge/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/c02caacd518ba6973c127f5bb9810f8869baec37)

在這個範例中， `fmfgraph` 該環境將繪圖的寬度和高度分別設為 120 與 80：

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

使用由 `\unitlength`所決定的單位，而其預設值為 1pt；因此，這個圖表被分配到 120pt 的寬度與 80pt 的高度。

#### \unitlength 的說明

因為 `\unitlength` 是 LaTeX 的長度單位，因此您可以使用 `\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/79927025045b3e317e710e15852139aaacb06c4c)

### 頂點

首先，您需要指定外部頂點，以及它們應該放在哪裡。您可以隨意替頂點命名，並使用以下命令指定它們的位置： `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

如上面的範例所用：

```latex
% 在左側建立兩個名為 i1 和 i2 的頂點
\fmfleft{i1,i2}

% 在右側建立兩個名為 o1 和 o2 的頂點
\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) %NOTE the fmfgraph* environment
   \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/be3f857d79a62af93aa9a17547d52280bdfea356)

### 一些更複雜的範例

以下較進階的範例使用了 `feynmp` 我們尚未討論過的功能：請參閱 [`feynmp` 套件（`feynmf`) 文件](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—其中也包含許多額外範例。這些圖形最初發表於一個 Overleaf 範本中，該範本包含從 CERN 網頁複製的 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/c4dec9065af186c3f87d792e99f94bf9eb468031)

#### 範例 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/d28cf8a33daae110c1ef0bdcf6327cb3bc06571c)

#### 範例 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/1f4d9fb5070a9a813998916f630a64bdb9432c1e)

### 線條樣式

我們已經看過 `photon` 以及 `fermion` 上方的線條樣式，但 `feynmp` 此套件支援更多樣式。

| 外觀                                                                                   | 名稱                                 |
| ------------------------------------------------------------------------------------ | ---------------------------------- |
| ![Feynmf-line-curly.png](/files/564a48819abbea9410e05c9b5c16766c3ca1f10e)            | 膠子、curly                           |
| ![Feynmf-line-dbl-curly.png](/files/5070f4dc9373338ba22d16b10183a043dd02f66d)        | dbl\_curly                         |
| ![Feynmf-line-dashes.png](/files/cd59224c926c89345d33d99efdb69732d4b3b767)           | 虛線                                 |
| ![Feynmf-line-dashed-arrow.png](/files/d3f94a2fbee1073cb471eab66f651db5497ff1fa)     | scalar、虛線箭頭                        |
| ![Feynmf-line-dbl-dashes.png](/files/adf53834d16853fb769150800a5517ed4ff37da3)       | dbl\_dashes                        |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/347b47f3ea85225106518c11c3bf3f1762ea9a44) | dbl\_dashes\_arrow                 |
| ![Feynmf-line-dots.png](/files/451d1561b61977a63c717a89106263fc5961e202)             | 點線                                 |
| ![Feynmf-line-dots-arrow.png](/files/e942fc778ff1981b983f99a65f2b54ac1aaac743)       | ghost、點線箭頭                         |
| ![Feynmf-line-dbl-dots.png](/files/2ae7e6bea583941ff1dd5a9ea2e971c5e0fd395b)         | dbl\_dots                          |
| ![Feynmf-line-dbl-dots-arrow.png](/files/0e69a99d1971925baf72739deb8dc98c000fb8ff)   | dbl\_dots\_arrow                   |
|                                                                                      | 幻影線                                |
| ![Feynmf-line-phantom-arrow.png](/files/87a3f956c19451891b3acdfd43209580ac1ebcd2)    | 幻影箭頭                               |
| ![Feynmf-line-plain.png](/files/94a78b99b42d5228b6432745b4c50994dd404fa4)            | vanilla、plain                      |
| ![Feynmf-line-plain-arrow.png](/files/f18fc4cca08fa2a8f619be5a8443c8310ce4f26c)      | 費米子、電子、夸克、plain\_arrow             |
| ![Feynmf-line-dbl-plain.png](/files/8bc5cca8f98e8c8071741c741b5afb24147de55c)        | double、dbl\_plain                  |
| ![Feynmf-line-dbl-plain-arrow.png](/files/277e3a3922f9e760cf42dbbcc67c787dbff2ce4e)  | double\_arrow、粗線、dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/cc8f462f09d9a88769e7a40ce4c58af9d095dfdd)           | 玻色子、光子、波浪線                         |
| ![Feynmf-line-dbl-wiggly.png](/files/87dff9b2dc16500e1d20d2c67e0485165f084c9d)       | dbl\_wiggly                        |
| ![Feynmf-line-zigzag.png](/files/5872b4a0afba138c795a3e6130745d4ceefabeb5)           | 折線                                 |
| ![Feynmf-line-dbl-zigzag.png](/files/b756184b22b20f07dd5b56b37606337181651007)       | dbl\_zigzag                        |

## 延伸閱讀

更多資訊請參見：

* [化學公式](/latex/zh-tw/te-ding-ling-yu/02-chemistry-formulae.md)
* [分子軌域圖](/latex/zh-tw/te-ding-ling-yu/04-molecular-orbital-diagrams.md)
* [TikZ 套件](/latex/zh-tw/tu-biao-yu-biao-ge/05-tikz-package.md)
* [在 LaTeX 中直接繪製圖形](/latex/zh-tw/tu-biao-yu-biao-ge/04-picture-environment.md)
* [插入圖片](/latex/zh-tw/geng-duo-zhu-ti/27-inserting-images.md)
* [希臘字母與數學符號清單](/latex/zh-tw/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/zh-tw/te-ding-ling-yu/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.
