Tikz-Feynman におけるループと挿入

Tikz-Feynman におけるループと挿入

これらの図表を作成するにはTikz-Feynman

ここに画像の説明を入力してください

今のところ私が持っているのは

ここに画像の説明を入力してください

\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}

$\feynmandiagram [horizontal=a to b, layered layout, baseline=(i1.base)] {
  i1 -- a [dot]
  -- [photon,half left,momentum'=\(q\)] b [dot]
  -- [photon,half left,momentum'=\(q\)] a,
  b -- f1
};
+
\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
  {i1,i2} -- a [dot]
  -- [photon,half left,momentum'=\(q\)] b [crossed dot]
  -- [photon,half left,momentum'=\(q\)] a,
};$

\end{document}

未解決の質問がいくつかあります:

  1. 運動量矢印をループの外側に移動するにはどうすればいいでしょうか?
  2. 入力行と出力行を短くするにはどうすればいいですか?
  3. 両方の図の中心をプラス記号と正確に垂直に揃えるにはどうすればよいですか?
  4. 最初の図に交差した点を追加するにはどうすればよいですか?

アップデート

の助けを借りてJP-エリス私は得ることができた

ここに画像の説明を入力してください

\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
$\feynmandiagram [horizontal=a to c,inline=(a.base)] {
    a [dot] -- [charged boson,quarter left,edge label=\(q\)] b
    -- [photon,quarter left] c [dot]
    -- [charged boson,quarter left,edge label=\(q\)] d [crossed dot]
    -- [charged boson,quarter left,edge label=\(q\)] a,
    f1 -- c,
    i1 -- a,
};
\quad\raisebox{-0.5ex}{+}\quad
\feynmandiagram [horizontal=a to b, layered layout, inline=(a.base)] {
    {i1,i2} -- a [dot]
    -- [charged boson,half left,edge label=\(q\)] b [crossed dot]
    -- [charged boson,half left,edge label=\(q\)] a [desired at={(0, 0)}],
};$
\end{document}

1 つの疑問が残ります。矢印を移動してcharged boson、それをedge label線の終わりまで移動させる方法はあるのでしょうか。私の意図は、最初の図の上部のアーチの上部 (最初の 4 分の 1 の中央ではなく) に矢印を配置することです。

答え1

すでに図表は素晴らしい出来ですね!

それでは、次の質問に答えたいと思います。

運動量矢印をループの外側に移動するにはどうすればいいでしょうか?

キーmomentumには と の 2 つの形式があります。momentumこれらmomentum'は矢印が配置される側が異なるだけなので、 を使用するとmomentum問題は解決します。

入力行と出力行を短くするにはどうすればいいですか?

私は最近このサイトで の使用法について検討した別の質問に回答しましたnudge。特に外側の線だけを調整したい場合は、これを使用できます。あるいは、図全体を小さく調整したい場合もあるでしょう (方程式内に線があるように見えるため)。これは で実現できますsmall

両方の図の中心をプラス記号と正確に垂直に揃えるにはどうすればよいですか?

を使用することは正しいですbaselineが、お気づきのとおり、「+」記号は実際にはベースライン上になく、実際は少し上にあります。ベースラインから「+」の水平バーまでの「魔法の距離」は です-\the\dimexpr\fontdimen22\textfont2\relax。ただし、このサイトのどこから最初にこれを得たのかは覚えていません。

キーbaselineは、ノード (あなたが行ったように) または実際のオフセット距離のいずれかを取ることができます。距離が指定されている場合、これは座標に相対的であり(0, 0)、他の座標が指定されていない場合は最初の頂点の位置になります。最初の図ではこれですべて問題ありませんが、2 番目のケースでは、キーを使用して、アルゴリズム(a)にどこにあるべきかを伝えます。(0, 0)desired at

最初の図に交差した点を追加するにはどうすればよいですか?

固定された位置に頂点を追加することもできますが、残念ながら、\feynmandiagramコマンド内でこれを行うことはできません。以下のソリューションでは、環境\diagram内で コマンドを使用し{feynman}、交差した点を手動で配置します。中間点は を使用して計算され(a)!0.5!(b)、見栄えが良くなるまで下に移動します。


nudgeすべてを実装するソリューションは次のとおりです。との両方を使用していることに注意してくださいsmall。つまり、2 番目の図ではすべてがわずかに小さくなっています (したがって、塗りつぶされた点と交差した点が異なって見えます)。理想的には、2 つの方法のうち 1 つだけを使用しますが、ここでは両方を示しています。

\documentclass{article}

\usepackage[compat=1.1.0]{tikz-feynman}

\def\plusheight{-\the\dimexpr\fontdimen22\textfont2\relax}

\begin{document}
\begin{equation}
  \begin{tikzpicture}[baseline=\plusheight]
    \begin{feynman}
      \diagram [horizontal=a to b, layered layout] {
        i1 [nudge right=0.7cm] -- a [dot]
        -- [photon, half left, momentum=\(q\)] b [dot]
        -- [photon, half left, momentum=\(q\)] a ,
        b -- f1 [nudge left=0.7cm]
      };
      \vertex [crossed dot, fill=white] (i) at ($(a)!0.5!(b) - (0, 0.75)$) {};
    \end{feynman}
  \end{tikzpicture}
  +
  \feynmandiagram [horizontal=a to b, layered layout, small, baseline=\plusheight] {
    {i1,i2} -- a [dot]
    -- [photon, half left, momentum=\(q\)] b [crossed dot]
    -- [photon, half left, momentum=\(q\)] a [desired at={(0, 0)}],
  };
\end{equation}
\end{document}

出力


更新された回答に対処するには、スタイルは、内部的には、とcharged bosonの組み合わせです。このスタイルは、人々が使用するとは想定していなかったため、現時点では文書化されていませんが、おそらくドキュメントに追加する必要があります。何らかの理由で、は実際には機能しないので、十分です。bosonwith arrow=0.99with arrowwith arrow=10.99

結果として、単に を に置き換えるcharged bosonだけで、boson, with arrow=1目的の結果を得ることができます。

\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
\feynmandiagram [horizontal=a to c, small] {
    a [dot] -- [boson, with arrow=0.99, quarter left, edge label=\(q\)] b
    -- [photon, quarter left] c [dot]
    -- [charged boson, quarter left, edge label=\(q\)] d [crossed dot]
    -- [charged boson, quarter left, edge label=\(q\)] a,
    f1 -- c,
    i1 -- a,
};
\end{document}

出力

答え2

2 番目の図の場合:

% !TEX TS-program = lualatex 
\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}

$\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
  {i1,i2} -- a [dot]
  -- [charged boson,half left,edge label=\(q\)] b [crossed dot]
  -- [charged boson,half left,edge label=\(q\)] a,
};$

\end{document}

ここに画像の説明を入力してください


または、カスタム矢印ヒントを使用します。

% !TEX TS-program = lualatex 
\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\tikzfeynmanset{ with arrow/.style = {
   decoration={
     markings,
     mark=at position 0.5
          with {\arrow[xshift=1mm]{Stealth[width=2mm,length=2mm]}}
     },
   postaction=decorate}
}

\begin{document}

$\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
  {i1,i2} -- a [dot]
  -- [charged boson,half left,edge label=\(q\)] b [crossed dot]
  -- [charged boson,half left,edge label=\(q\)] a,
};$

\end{document}

ここに画像の説明を入力してください

最初の図も同様です:

% !TEX TS-program = lualatex 
\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\tikzfeynmanset{ with arrow/.style = {
   decoration={
     markings,
     mark=at position 0.5
          with {\arrow[xshift=1mm]{Stealth[width=1.8mm,length=1.8mm]}}
     },
   postaction=decorate}
}


\begin{document}
$\feynmandiagram [horizontal'=a to c,inline=(a.base)] {
    a [dot] -- [charged boson,half left,edge label=\(q\)] c [dot]
    -- [charged boson,quarter left,edge label=\(q\)] d [crossed dot, yshift=0.4cm]
    -- [charged boson,quarter left,edge label=\(q\)] a,
    f1[yshift=-0.465cm] -- c,
    i1[yshift=-0.465cm] -- a,
};
$
\end{document}

ここに画像の説明を入力してください

関連情報