方程环境中的费曼图

方程环境中的费曼图

我需要输入下面的表达式在此处输入图片描述 我正在考虑在环境tikzpicture内部使用eqnarray。虽然我不太确定哪种方法最好。有人可以对此提供一些反馈吗?谢谢!

答案1

对于这些简单的图表来说,这个tikz-feynman包可能有点过度了。

您只有三种具有不同节点的图表类型:

  • .没有节点,
  • o白色带边框,
  • *填满了,也许,
  • +表示环底部的菱形。

这三个标签可能始终位于同一位置。

通过一些样式,这些可以通过普通的 TikZ 实现。

amsmath\text宏有助于缩放上标的字体大小,\mathchoice只要我们根据字体相关单位定义长度(em 和 ex,参见 的定义every diagram),就避免实现我们自己的 r。

每个命令中的第三个参数(即第二个必需参数)是标签的内容。
第二个参数描述节点列表。对于线图,这些需要包含两个标记,对于循环,需要三个标记,对于交叉,需要五个标记。它们从左到右从上到下描述节点。

这意味着

\tfCross{.+o*o}{X}

导致
在此处输入图片描述

代码

\documentclass[varwidth]{standalone}
\usepackage{mathtools}
\DeclarePairedDelimiter\p()
\DeclarePairedDelimiter\brak[]
\usepackage{tikz}
\tikzset{
  feynman/.cd,
  every diagram/.style={x=+1.3em, y=+1.3em, baseline=+-.5ex},
  label/.style={anchor=north west,inner sep=+.2em, scale=.707,
    node font=\everymath\expandafter{\the\everymath\scriptstyle}},
  node/.style={shape=circle, inner sep=+0pt, minimum size=+2pt, node contents=},
  node ./.style={feynman/node, shape=coordinate},
  node o/.style={feynman/node, fill=white, draw},
  node */.style={feynman/node, fill,       draw},
  node +/.style={
    feynman/node, fill, draw, shape=rectangle, rotate=45, minimum size=+1pt},
  loop/.style n args={4}{insert path={
      (0,0) node[feynman/label]{$#4$} node[feynman/node #1] -- ++(right:1)
      arc[start angle=-90, delta angle=360, radius=.5] node[feynman/node #2]
      -- ++(right:1) node[feynman/node #3]}},
  cross diagram/.style={
    /tikz/feynman/label/.append style={anchor=south east, inner sep=+.2pt}},
  cross/.style n args={6}{insert path={
    (225:.707) node[feynman/label]{$#6$} node[feynman/node #4]
    -- (45:.707) node[midway,feynman/node #3] node[feynman/node #2]
    (135:.707) node[feynman/node #1] -- (-45:.707) node[feynman/node #5]}},
  line/.style n args={3}{insert path={
    (0,0) node[feynman/label]{$#3$} node[feynman/node #1]
    -- (right:.8) node[feynman/node #2]}}}
\newcommand*\tfInt[4]{%
  \text{\tikz[feynman/every diagram,feynman/#1 diagram/.try,#2]
    \draw[feynman/#1={#3{#4}}];}}
\newcommand*\tfLoop[1][]{\tfInt{loop}{#1}}
\newcommand*\tfCross[1][]{\tfInt{cross}{#1}}
\newcommand*\tfLine[1][]{\tfInt{line}{#1}}
\begin{document}
\begin{multline}
\frac{\hbar}{i} \frac{\delta}{\delta J(x_1)} W\brak J
 = \frac{\hbar}{i} \frac{\delta}{\delta J(x_1)}
     \brak[\bigg]{1+\frac{g}{4!}
       \p[\bigg] { 6             \,\tfLoop{o+o}{x_1} +     \tfCross{oo*oo}{} }}
     e^{\frac 12 \tfLine{oo}{}} \\
 = \brak[\bigg]{
     \frac{g}{4!}
       \p[\bigg] {     6 \cdot 2 \,\tfLoop{.+o}{x_1} + 4 \,\tfCross{oo*.o}{x_1}}
     + \p[\bigg] {1 + \frac{g}{4!}
                     \p[\bigg]{6 \,\tfLoop{o+o}{x_1} +     \tfCross{oo*oo}{}}}
     \tfLine{.*}{x_1}
    } e^{\frac 12 \tfLine{oo}{}} \\
 = \brak[\bigg]{
     \tfLine{.o}{x_1} + \frac{g}{4!} \p[\bigg]{
       12 \,\tfLoop{.+o}{x_1} + 4 \,\tfCross{oo*.o}{x_1}
      + 6 \,\tfLoop{o+o}{} \, \tfLine{.*}{x_1}
      + \tfCross{oo*oo}{} \, \tfLine{.*}{x_1}
     }
   } e^{\frac 12 \tfLine{oo}{}}
\end{multline}
\end{document}

输出

在此处输入图片描述

相关内容