tikz-feynman 的图形和子图形不在适当的位置

tikz-feynman 的图形和子图形不在适当的位置

我正在使用 tikz-feynman 绘制与 2x2 子图对齐的费曼图。

然而,图和子图与标题相比的位置非常奇怪,如图所示

我的结果

这是我的代码的一部分

\documentclass[12pt,a4paper,titlepage]{book}
\usepackage{tikz-feynman}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\begin{subfigure}{0.5\textwidth}
\centering
\begin{tikzpicture}
\feynmandiagram[large, horizontal=a to b]{
i1[particle=\(\overline d\)]--[fermion]a--[fermion, edge label'=\(\alpha\),momentum=\(p+k\)]b--[fermion, momentum=\(p\)]f1[particle=\(s\)],
i2[particle=\(\overline s\)]--[anti fermion, momentum'=\(p\)]c--[anti fermion, edge label=\(\beta\), rmomentum'=\(k\)]d--[anti fermion]f2[particle=\(d\)],
{[same layer]a--[photon, edge label=\(W\), rmomentum'=\(p+k\)]c},
{[same layer]b--[photon, edge label'=\(W\), momentum=\(k\)]d},
};
\end{tikzpicture}
\caption{}
\end{subfigure}%
\begin{subfigure}{.5\textwidth}
\centering
  \begin{tikzpicture}
\feynmandiagram[large, horizontal=a to b]{
i1[particle=\(\overline d\)]--[fermion]a--[fermion, edge label'=\(\alpha\),momentum=\(p+k\)]b--[fermion, momentum=\(p\)]f1[particle=\(s\)],
i2[particle=\(\overline s\)]--[anti fermion, momentum'=\(p\)]c--[anti fermion, edge label=\(\beta\), rmomentum'=\(k\)]d--[anti fermion]f2[particle=\(d\)],
{[same layer]a--[photon, edge label=\(W\), rmomentum'=\(p+k\)]c},
{[same layer]b--[scalar, edge label'=\(H\), momentum=\(k\)]d},
};
\end{tikzpicture}
\caption{}
\end{subfigure}\\
\begin{subfigure}{.5\textwidth}
  \fbox{
\begin{tikzpicture}
\feynmandiagram[large, horizontal=a to b]{
i1[particle=\(\overline d\)]--[fermion]a--[fermion, edge label'=\(\alpha\),momentum=\(p+k\)]b--[fermion, momentum=\(p\)]f1[particle=\(s\)],
i2[particle=\(\overline s\)]--[anti fermion, momentum'=\(p\)]c--[anti fermion, edge label=\(\beta\), rmomentum'=\(k\)]d--[anti fermion]f2[particle=\(d\)],
{[same layer]a--[scalar, edge label=\(H\), rmomentum'=\(p+k\)]c},
{[same layer]b--[scalar, edge label'=\(H\), momentum=\(k\)]d},
};
\end{tikzpicture}}
\caption{}
\end{subfigure}%
\begin{subfigure}{.5\textwidth}
  \begin{tikzpicture}
\feynmandiagram[large, horizontal=a to b]{
i1[particle=\(\overline d\)]--[fermion]a--[fermion, edge label'=\(\alpha\),momentum=\(p+k\)]b--[fermion, momentum=\(p\)]f1[particle=\(s\)],
i2[particle=\(\overline s\)]--[anti fermion, momentum'=\(p\)]c--[anti fermion, edge label=\(\beta\), rmomentum'=\(k\)]d--[anti fermion]f2[particle=\(d\)],
{[same layer]a--[scalar, edge label=\(H\), rmomentum'=\(p+k\)]c},
{[same layer]b--[photon, edge label'=\(W\), momentum=\(k\)]d},
};
\end{tikzpicture}
\caption{}
\end{subfigure}
\caption{Box diagram}
\end{figure}
\end{document}

怎么解决这个问题?

谢谢。

答案1

首先,我想说,看到我创建的包得到充分利用真是太棒了!这些图表看起来很棒:D

现在,关于您遇到的问题,这是因为您有:

\begin{tikzpicture}
  \feynmandiagram {...};
\end{tikzpicture}

\feynmandiagram命令实际上创建了自己的 TiZ 环境,因此应该不是可以在{tikzpicture}。您正在创建 TiTi内的Z图片Z 图片通常不是一个好主意。 的目的\feynmandiagram是它是一个仅用于费曼图的独立命令。

如果你想在 Ti 中添加更多花哨的注释Z,或者将费曼图作为更大的 Ti 的一个组成部分Z图片,甚至需要手动放置顶点,那么流程是:

\begin{tikzpicture}
  <other TikZ commands>
  \begin{feynman}
    \diagram {...};
    <other Feynman and/or TikZ commands>
  \end{feynman}
  <other TikZ commands>
\end{tikzpicture}

{feynman}请注意,里面有一个附加环境{tikzpicture},并且图表的命令是\diagram而不是\feynmandiagram

因此,这是您的固定 MWE:

\documentclass[12pt,a4paper,titlepage]{book}

\usepackage{tikz-feynman}
\usepackage{subcaption}

\begin{document}
\begin{figure}
  \centering
  \begin{subfigure}[t]{0.49\textwidth}
    \centering
    \feynmandiagram [large, horizontal=a to b] {
      i1 [particle=\(\overline d\)]
        -- [fermion] a
        -- [fermion, edge label'=\(\alpha\), momentum=\(p+k\)] b
        -- [fermion, momentum=\(p\)] f1[particle=\(s\)],
      i2 [particle=\(\overline s\)]
        -- [anti fermion, momentum'=\(p\)] c
        -- [anti fermion, edge label=\(\beta\), rmomentum'=\(k\)] d
        -- [anti fermion] f2 [particle=\(d\)],
      {[same layer]
        a -- [photon, edge label=\(W\), rmomentum'=\(p+k\)] c
      },
      {[same layer]
        b -- [photon, edge label'=\(W\), momentum=\(k\)] d
      },
    };
    \caption{\(WW\) box diagram}
  \end{subfigure}
  \begin{subfigure}[t]{0.49\textwidth}
    \centering
    \feynmandiagram [large, horizontal=a to b] {
      i1 [particle=\(\overline d\)]
        -- [fermion]a--[fermion, edge label'=\(\alpha\), momentum=\(p+k\)] b
        -- [fermion, momentum=\(p\)]f1[particle=\(s\)],
      i2 [particle=\(\overline s\)]
        -- [anti fermion, momentum'=\(p\)] c
        -- [anti fermion, edge label=\(\beta\), rmomentum'=\(k\)] d
        -- [anti fermion] f2 [particle=\(d\)],
      {[same layer]
        a -- [photon, edge label=\(W\), rmomentum'=\(p+k\)] c
      },
      {[same layer]
        b -- [scalar, edge label'=\(H\), momentum=\(k\)] d
      },
    };
    \caption{\(WH\) box diagram}
  \end{subfigure}
  \newline
  \begin{subfigure}{0.49\textwidth}
    \feynmandiagram [large, horizontal=a to b] {
      i1 [particle=\(\overline d\)]
        -- [fermion]a--[fermion, edge label'=\(\alpha\),momentum=\(p+k\)] b
        -- [fermion, momentum=\(p\)]f1[particle=\(s\)],
      i2 [particle=\(\overline s\)]
        -- [anti fermion, momentum'=\(p\)] c
        -- [anti fermion, edge label=\(\beta\), rmomentum'=\(k\)] d
        -- [anti fermion]f2[particle=\(d\)],
      {[same layer]
        a -- [scalar, edge label=\(H\), rmomentum'=\(p+k\)] c
      },
      {[same layer]
        b -- [scalar, edge label'=\(H\), momentum=\(k\)] d
      },
    };
    \caption{\(HH\) box diagram}
  \end{subfigure}
  \begin{subfigure}{0.49\textwidth}
    \feynmandiagram [large, horizontal=a to b] {
      i1 [particle=\(\overline d\)]
        -- [fermion] a
        -- [fermion, edge label'=\(\alpha\), momentum=\(p+k\)] b
        -- [fermion, momentum=\(p\)] f1 [particle=\(s\)],
      i2[particle=\(\overline s\)]
        -- [anti fermion, momentum'=\(p\)] c
        -- [anti fermion, edge label=\(\beta\), rmomentum'=\(k\)] d
        -- [anti fermion] f2 [particle=\(d\)],
      {[same layer]
        a -- [scalar, edge label=\(H\), rmomentum'=\(p+k\)] c
      },
      {[same layer]
        b -- [photon, edge label'=\(W\), momentum=\(k\)] d
      },
    };
    \caption{\(HW\) box diagram}
  \end{subfigure}
  \caption{Box diagram}
\end{figure}
\end{document}

输出

只需一点小建议,您可以使用空格和换行符使代码更易读;TiZ-Feynman(和 TiZ) 不太在意。

相关内容