LaTeXでFeynman図を描画する:TikZ-FyenHand

この記事では，LaTeXにおいて素粒子物理学や場の理論に登場するFeynman図(ファインマンダイヤグラム)を描画することが得意なパッケージ **TikZ-FeynHand** について簡単な解説をします．TikZ-FeynHandの詳しいマニュアル[1]が存在します．

今回は，Tikz-FeynHandを使うと何ができるかということを知っていただきたいために執筆しました（筆者はこれまで Inkscape を用いて描画していたので苦労していた）．

# Tikz-FeynHandを利用する条件

Tikz-FeynHandを利用する前に，次の条件を満たしている必要があります:

- LaTeXが実行できる環境があること．
- `tikz-feynhand.sty` がインストールされ，図を使いたい`.tex`ファイルに読み込むことができていること(TeXLive2018以降でしたらすでに導入されていると思います)．

#### 以上の条件を満たしていない場合

- LaTeXを実行できない場合は，設定等を再度ご確認ください．
- `tikz-feynhand.sty`がインストールされていない場合は，次のリンクからダウンロードしてください:
[https://ctan.org/pkg/tikz-feynhand](https://ctan.org/pkg/tikz-feynhand)

 - ダウンロードの後，フォルダ内の`tikz-feynhand.sty`，`tikzfeynhand.keys.code.tex`，`tikzlibraryfeynhand.code.tex`を読み込みたいファイルと同一のディレクトリまたは然るべきディレクトリにコピーし，ターミナルやコマンドプロンプトで`mktexlsr`コマンドを必ず実行してください．
 - 然るべきディレクトリとは、`/usr/local/texlive/2018/texmf-dist/tex/latex/`のような場所のことを指します．新しいディレクトリ`/usr/local/texlive/2018/texmf-dist/tex/latex/tikz-feynhand/`を作り、そこにコピーすると良いでしょう．ただしこれはお使いの環境によって異なる場合があります．

# Introduction : Tikz-Feynhandとは
このパッケージは，LaTeX上でFeynman図を描画することに特化しています。従来（2016年）からある`Tikz-Feynman`[2]は，LuaTeXでの実行が要求されていましたが，`Tikz-FeynHand`はLaTeXで実行できます．
このパッケージはJoshua El­lis氏とMax Dohse氏によるものです．なお，マニュアルには次のように記載されています（一部，文献を示すために置換してあります）:
>Citations
If you use TikZ-FeynHand for any publication, please be so kind to
cite both Joshua Ellis' original manual [J. Ellis: TikZ-Feynman:
Feynman diagrams with TikZ, Computer Physics Comm. 210, p.103-123,
2017.] as well as this userguide.

>License
This PDF and the whole package are free: you can redistribute it
and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your
option) any later version.

（権利的にはこんな感じです...）

# How to use TikZ-FeynHand
以下の内容はマニュアルにも記載されていますが「これを読めば，何ができるかがわかる」程度のものを示します．

## パッケージのロード
Tikz-FeynHand を利用するには，プリアンブルに
`\usepackage{tikz-feynhand}`
と記述します．`tikz`をロードする必要はありません．

## 環境
ここでの環境はLaTeXにおける環境のことを指します．
`tikz-feynhand`は`tikz`と同様に`tikzpicture`環境で用いますが，さらに`feynhand`環境を内包するようにします．図として用いたい場合は`figure`環境に，数式に挿入したい場合は`align`環境や`equation`環境で記述できます．

```latex

\begin{tikzpicture}
\begin{feynhand}
%    type commands here
\end{feynhand}
\end{tikzpicture}
```

## コマンド

### 頂点
頂点は`\vertex`で記述します．頂点は何かしらの文字で命名します．`at`のうしろで，頂点の位置を指定します．この命令には次のようなオプションがあります:

`particle, dot, ringdot, squaredot, crossdot,
blob, ringblob, grayblob, NWblob, NEblob
`

また，`blue`のように色を指定できます．
ここでオプションを指定しない場合はただの頂点（後述）になります．
それぞれの`\vertex`や`\propag`（後述）の末尾にはセミコロン`;`を必ず置いてください．なお，改行の必要はありません．頂点のいくつかを以下のように示します．

#### ただの頂点
```latex

\vertex (a) at (-1,0);
```

##### 注意!
先のコマンドを

```latex

\vertex (a) at (-1,0)  {};
```
のように指定してしまうと，ダイヤグラムの頂点が白い丸のようになってしまいます．とくに，プロパゲータの交点では，線がつながっていないように見えます（これはマニュアルにも明確にありますが，大事なため記載）．

#### 粒子を示す頂点
粒子の頂点を表す場合はオプションとして`[particle]`を置きます．また，粒子の名前を下記のように記述します．以下に例を示します．

```latex

\vertex [particle] (f) at (1,0) {$\gamma$};
```

#### Blobな頂点
場の量子論の教科書で見かける場合がある頂点（として記述）です（画像は適当に外線を付け加えました）．

```latex

\vertex [NEblob] (a) at (0,0) {};
```

<img width="212" alt="スクリーンショット 2019-05-28 23.47.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425475/59c1b25e-2e42-f30d-89ba-364d41b138b6.png">


### プロパゲータ
Feynman図の線を描くためには`\propag`を用います．あらかじめ頂点を定義しておき，どの頂点からどの頂点に向かって結ぶかを指定します．これには線種（フェルミオンやボソンなど）や半円にしたり、ラベルを付加するオプションがあります:

##### 線種
`photon, fermion, anti fermion, boson, charged boson, anti charged
boson, gluon, scalar, charged scalar, anti charged scalar, ghost,
charged ghost, anti charged ghost, majorana, anti majorana
`

##### エッジスタイル
`out, in, looseness, half left, half right, quarter left,quarter right, edge label
`

また，`blue`のように色を指定することができます．プロパゲータのいくつかを以下のように示します．

#### ただのプロパゲータ（線だけを表す場合）

```latex

\propag [plain, blue] (i1) to (f);
```

#### フェルミオンのプロパゲータ

```latex

\propag [fermion] (i1) to [edge label = $p$] (f);
```

# Sample
ここでは実際の例を示します．先ほどまでに登場したコマンド例がいくつか使われています．下記のソースをそのまま実行するとPDFファイルが作成されます（そうなるように仕込んでいます，環境によって異なる場合があります）．図の部分のみをここに掲載します．

###### 実行例

```latex

\documentclass{report}
\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz-feynhand}

\begin{document}
$\beta$ 崩壊のクォークレベルでのダイヤグラムをサンプルとして示す:
\begin{figure}[htpb]	%figure環境
\begin{center}		%中央揃え
\begin{tikzpicture}	%tikzpicture環境
\begin{feynhand}	%feynhand環境
	\vertex [particle] (i1) at (-3,4) {$u$};
	\vertex [particle] (i2) at (-3,3.5) {$d$};
	\vertex [particle] (i3) at (-3,3) {$d$};
	\vertex [particle] (f1) at (3,4) {$u$};
	\vertex [particle] (f2) at (3,3.5) {$d$};
	\vertex [particle] (f3) at (3,3) {$u$};
	\vertex (w1) at (0,3);
	\vertex (w2) at (0,2.5);
	\vertex (w3) at (0,2);
	\vertex (w4) at (1.5,1);
	\vertex [particle] (e) at (3,1.5) {$e^{-}$};
	\vertex [particle] (an) at (3,0.5) {$\bar{\nu}_{e}$};
	\propag [fermion] (i1) to (w1);
	\propag [fermion] (i2) to (w2);
	\propag [fermion] (i3) to (w3);
	\propag [fermion] (w1) to (f1);
	\propag [fermion] (w2) to (f2);
	\propag [fermion] (w3) to (f3);
	\propag [charged boson] (w3) to [edge label=$W^{-}$] (w4);
	\propag [fermion] (w4) to (e);
	\propag [anti fermion] (w4) to (an);
\end{feynhand}
\end{tikzpicture}
\caption{サンプル}
\label{fig:sample}
\end{center}
\end{figure}

\end{document}
```

###### 実行結果

<img width="559" alt="スクリーンショット 2019-05-29 15.50.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425475/dab4cb59-ea80-c507-e141-2a5bbde8ea8e.png">


# その他
実際にはここまでに示した例よりも複雑な図も描画できますし，文章を図の上に書くこともできます．その際には TikZ のマニュアルも参考にされると助けになるかと思います．

# Reference
[1]   Max Dohse : *TikZ-FeynHand: Basic User Guide*, [[arXiv:1802.00689]](https://arxiv.org/abs/1802.00689)
[2]   J. Ellis : *TikZ-Feynman: Feynman diagrams with TikZ*, Computer
Physics Comm. 210, p.103-123, 2017.
[[doi.org/10.1016/j.cpc.2016.08.019]](https://www.sciencedirect.com/science/article/pii/S0010465516302521?via%3Dihub) [[arXiv:1601.05437]](https://arxiv.org/abs/1601.05437)