align* 环境中的 tikz-feynman 图产生错误

align* 环境中的 tikz-feynman 图产生错误

我正在尝试排版一个方程,其中有很多费曼图,我用 绘制tikz-feynman,如下面我粘贴的示例所示。当我编译时,它在第一个 处停止tikzpicture,并出现以下错误:

Runaway argument?
 &= \begin {tikzpicture}[scale=0.64,baseline=(o)] \begin {feynman}[in\ETC.
! Paragraph ended before \align* was complete.
<to be read again> 
\par 
l.17 

我尝试使用pdflatex和,两者之间没有区别。如果我使用和组合lualatex代替环境,它可以正常工作。但是我想使用因为方程很长(我在下面的 MWE 中尽可能缩短了它),这样我就可以用 在不同页面中拆分方程。align*equation*alignedalign*\allowdisplaybreaks

我也尝试使用简单的tikzpictures ,例如仅一些圆圈,不带任何内容tikz-feynman,并且它不会引发任何错误。

问题出在哪里?我可以在align环境中绘制费曼图吗?如何绘制?

\documentclass[10pt,b5paper]{article}

\usepackage{mathtools}
\usepackage{tikz-feynman}

\begin{document}
\begin{align*}
    &=
    \begin{tikzpicture}[scale=0.64,baseline=(o)]
        \begin{feynman}[inline=(o)]
            \path (-1,0) -- (3,2);
            \vertex [empty dot, minimum size=0mm] (o) at (1,1) {};
            \vertex [dot, label=180:$x$]   (x)  at (0,0) {};
            \vertex [dot, label=0:$x'$]    (y)  at (2,0) {};
            \vertex [dot, label=180:$x_1$] (x1) at (0,2) {};
            \vertex [dot, label=0:$x_2$]   (x2) at (2,2) {};

            \diagram*{
                (x1) -- [fermion, half left, out=25, in=155] (x2)
                -- [fermion, half left, out=25, in=155] (x1),
                (x1) -- [photon] (x2),
            };
            \draw (x) arc [start angle=180, end angle=-180, radius=3.5mm];
            \draw (y) arc [start angle=0, end angle=360, radius=3.5mm];
        \end{feynman}
    \end{tikzpicture}
    -
    \begin{tikzpicture}[scale=0.64,baseline=(o)]
        \begin{feynman}[inline=(o)]
            \path (-1,0) -- (3,2);
            \vertex [empty dot, minimum size=0mm] (o) at (1,1) {};
            \vertex [dot]   (x)  at (0,0) {};
            \vertex [dot]    (y)  at (2,0) {};
            \vertex [dot] (x1) at (0,2) {};
            \vertex [dot]   (x2) at (2,2) {};

            \diagram*{
                (x1) -- [fermion, half left, out=25, in=155] (x2)
                -- (o)
                -- [fermion] (x)
                -- [fermion] (y)
                -- (o)
                -- [fermion] (x1),
                (x1) -- [photon] (x2),
            };
            \draw [-, line width=2mm, white] (o)++(-2mm,-2mm) -- ++(4mm,4mm);
            \draw [-, black] (o)++(-2mm,-2mm) -- ++(4mm,4mm);

        \end{feynman}
    \end{tikzpicture}
    +\\[2mm] &
    -
    \begin{tikzpicture}[scale=0.64,baseline=(o)]
        \begin{feynman}[inline=(o)]
            \path (-1,0) -- (3,2);
            \vertex [empty dot, minimum size=0mm] (o) at (1,1) {};
            \vertex [dot]   (x)  at (0,0) {};
            \vertex [dot]    (y)  at (2,0) {};
            \vertex [dot] (x1) at (0,2) {};
            \vertex [dot]   (x2) at (2,2) {};

            \diagram*{
                (x1) -- [fermion, half left, out=25, in=155] (x2)
                -- [fermion] (y)
                -- [fermion] (x)
                -- [fermion] (x1),
                (x1) -- [photon] (x2),
            };
        \end{feynman}
    \end{tikzpicture}
    -
    \begin{tikzpicture}[scale=0.64,baseline=(o)]
        \begin{feynman}[inline=(o)]
            \path (-1,0) -- (3,2);
            \vertex [empty dot, minimum size=0mm] (o) at (1,1) {};
            \vertex [dot]   (x)  at (0,0) {};
            \vertex [dot]    (y)  at (2,0) {};
            \vertex [dot] (x1) at (0,2) {};
            \vertex [dot]   (x2) at (2,2) {};

            \diagram*{
                (x) -- [fermion, half left, out=25, in=155] (y)
                -- [fermion, half left, out=25, in=155] (x),
                (x1) -- [photon] (x2),
            };
            \draw (x1) arc [start angle=0, end angle=360, radius=3.5mm];
            \draw (x2) arc [start angle=180, end angle=-180, radius=3.5mm];
        \end{feynman}
    \end{tikzpicture}
\end{align*}
\end{document}

答案1

经过 OP 和 @Torbjørn T. 的实验,似乎tikzpicture当它嵌套在方程式中时,环境对于空行并不友好。

方程式(无论是否多行)不喜欢空行,不喜欢空行,即使它们嵌套在 中也不喜欢它们tikzpicture

但是,如果使用aligned嵌套在环境中的空行equation(*),则将要编译顺利。

相关内容