つれづれなる備忘録

日々の発見をあるがままに綴る

Texによる文書作成24 ~TikZ-FeynHand 3

 ファインマンダイアグラムをLaTeXで表記するパッケージとしてTikz-Feynhandの使い方について前回に引き続き紹介する。

atatat.hatenablog.com

1. propagatorの変形

 前回はvertex同士を結ぶpropagatorの種類を指定したが、今回は直線を変形して円弧にする方法を紹介する。直線を変形するにはpropagのオプションでvertexに接続する角度を指定する。 例えば上向きの円弧であれば角度をそれぞれ90度に指定するため\propag[fer] (a) to [in=90, out=90] (b);とする。また下向きの円弧では角度を270度とするため\propag[fer] (a) to [in=90, out=90] (b);とする。 円弧の曲がり方はlosenessで指定する。

\begin{figure}[htpb]
\centering
\begin{tikzpicture}
\begin{feynhand}
\vertex (a) at (0,0); \vertex (b) at (2,0);
\vertex (a1) at (0,-1); \vertex (b1) at (2,-1);
\vertex (a2) at (0,-2); \vertex (b2) at (2,-2);
\vertex (a3) at (0,-3); \vertex (b3) at (2,-3);
\propag[fer] (a) to [in=90, out=90] (b);
\propag[fer] (a1) to [in=90, out=90, looseness=1] (b1);
\propag[fer] (a2) to [in=90, out=90, looseness=1.5] (b2);
\propag[fer] (a3) to [in=270, out=270] (b3);
\end{feynhand}
\end{tikzpicture}
\caption{円弧}
\end{figure} 

実行すると以下のようになる。

"円弧の描画"
円弧の描画

in/outを角度で指定するほかに、キーで指定することができる。上向きの円弧であればhalf left または quarter left、下向きであればhalf right または quarter rightとするとin=90,out=90またはin=270,out=270のオプションと等価になる。曲がり方はlosenessで指定することができる。

\begin{figure}[htpb]
\centering
\begin{tikzpicture}
\begin{feynhand}
\vertex (a) at (0,0); \vertex (b) at (2,0);
\vertex (a1) at (0,-1); \vertex (b1) at (2,-1);
\vertex (a2) at (0,-2); \vertex (b2) at (2,-2);
\vertex (a3) at (0,-3); \vertex (b3) at (2,-3);
\vertex (a4) at (0,-4); \vertex (b4) at (2,-4);
\propag[fer] (a) to [half left] (b);
\propag[fer] (a1) to [half left, looseness=1.5] (b1);
\propag[fer] (a2) to [quarter left] (b2);
\propag[fer] (a3) to [half right] (b3);
\propag[fer] (a4) to [quarter right] (b4);
\end{feynhand}
\end{tikzpicture}
\caption{円弧,キー指定}
\end{figure} 

"円弧の描画(キー指定)"
円弧の描画(キー指定)

inとoutの角度指定により円弧以外に直線を変形することもできる。

\begin{figure}[htpb]
\centering
\begin{tikzpicture}
\begin{feynhand}
\vertex (a) at (0,0); \vertex (b) at (2,1);
\propag[glu] (a) to [out=0, in=180] (b);
\vertex (a1) at (0,-1); \vertex (b1) at (2,-2);
\propag[bos] (a1) to [out=0, in=90] (b1);
\end{feynhand}
\end{tikzpicture}
\caption{その他変形}
\end{figure} 

"その他の変形"
その他の変形

2. ラベルと着色

 propagatorによる線の上にラベルを表示するには\porpagのオプションで[edge label = $k$]とする。ラベル名は$ $で囲うとpropagatorの上にラベル名を表示できる。また[edge label' = $k$]とするとラベル位置をpropagatorの反対側にすることができる。propagatorの色は\propag [fer,orange]とすることで指定できる。 なお公式マニュアルhttps://arxiv.org/abs/1802.00689 には\propag [fer,Orange]など最初が大文字で記載されているが、実行するとエラーになる。tikzの公式マニュアル8ページ目,3.6 Colorsに正しいカラーコードの記載がある。http://cremeronline.com/LaTeX/minimaltikz.pdf

\begin{figure}[htpb]
\centering
\begin{tikzpicture}
\begin{feynhand}
\vertex (a1) at (0,0); \vertex (a2) at (1,1.5);
\vertex (b1) at (1.5,1.5); \vertex (b2) at (2.5,0);
\propag [fer,orange] (a1) to [edge label = $k$] (a2);
\propag [fer,blue] (b1) to [edge label'= $p'$] (b2);
\end{feynhand}
\end{tikzpicture}
\caption{ラベルと着色}
\end{figure} 

"ラベルと色指定"
ラベルと色指定

 次にpropagatorが重なった場合、上層に表示するpropagatorはオプションでtopを指定するとともに最後に描画するようにする。下層のpropagatorはwith arrow=0.25とすることで矢印の位置が上層のpropagatorと重ならないように退避させる。

\begin{figure}[htpb]
\centering
\begin{tikzpicture}
\begin{feynhand}
\vertex (a) at (0,0); \vertex (b) at (2,1);
\vertex (c) at (0,1); \vertex (d) at (2,0);
\propag [fer, blue,with arrow=0.25] (a) to (b);
\propag [chabos, orange,top] (c) to (d);
\end{feynhand}
\end{tikzpicture}
\caption{着色と重なり}
\end{figure} 

"着色と重なり"
着色と重なり

3. まとめ

 今回はpropagatorの変形、ラベル、着色、重なりなどの処理について紹介した。