答案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}