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}

还有一个问题:有没有办法将箭头移到charged boson线edge label的末端?我的目的是将它们放在第一个图中上拱的顶部(而不是第一季度的中间)。

答案1

图表方面已经做得很好了!

因此,让我来回答这些问题:

我怎样才能将动量箭头移到循环之外?

momentum有两种形式:momentummomentum'。它们仅在箭头所在的一侧有所不同;因此使用momentum可以解决您的问题。

如何才能缩短进出线路?

我最近回答了此网站上的另一个问题,该问题探讨了 的使用nudge。如果您只想调整外部线条,可以使用它。或者,也许您想将整个图表调整得更小(因为看起来您将在方程式中拥有它们)。这可以通过 来实现small

我怎样才能精确地将两个图的中心与加号垂直对齐?

您使用 是正确的baseline;但是正如您所注意到的,“+”符号实际上不在基线上,实际上略高于基线。从基线到“+”中水平线的“魔法距离”是-\the\dimexpr\fontdimen22\textfont2\relax;虽然我不记得我最初从这个网站的哪个地方得到这个信息。

然后,密钥baseline可以采用节点(如您所做的那样)或实际偏移距离。在指定距离的情况下,这是相对于坐标的(0, 0),如果没有指定其他坐标,则该坐标将是第一个顶点的位置。对于第一个图,这一切都很好,但在第二种情况下,我告诉算法应该(a)使用(0, 0)密钥desired at

我如何在第一个图上添加交叉点?

您可以在固定位置添加额外的顶点,但不幸的是您无法在命令中执行此操作\feynmandiagram。下面的解决方案\diagram{feynman}环境中使用命令,然后手动放置交叉点。中间点用计算(a)!0.5!(b),然后向下移动直到看起来不错。


这是实现一切的解决方案。请注意,我同时使用了nudgesmall。这意味着第二个图表的所有内容都略小一些(因此实心点和交叉点看起来不同)。理想情况下,我只会使用这两种方法中的一种,但这里说明了这两种方法。

\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 bosonboson, 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

对于第二张图:

% !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}

在此处输入图片描述

相关内容