решение1
Вот коллекция диаграмм для теории свободного поля, представленная как phinman.sty
(код в конце этого ответа). Для экономии места есть две версии каждой команды, одна с метками и одна без.
Код для демонстрации выше:
\documentclass{article}
\usepackage{phinman} % pronounce like Feynman
\usepackage{amsmath}
\usepackage{lipsum}
\begin{document}
\begin{center}
\begin{tabular}{lc@{\quad}lc}
\verb"\PM{-}" & \PM{-} & \verb"\PMl{-}{x}{y}" & \PMl{-}{x}{y} \\
\verb"\PM{x}" & \PM{x} & \verb"\PMl{x}{x}" & \PMl{x}{x} \\
\verb"\PM{||}" & \PM{||} & \verb"\PMl{||}{u}{v}{x}{y}" & \PMl{||}{u}{v}{x}{y} \\
\verb"\PM{=}" & \PM{=} & \verb"\PMl{=}{u}{v}{x}{y}" & \PMl{=}{u}{v}{x}{y} \\
\verb"\PM{X}" & \PM{X} & \verb"\PMl{X}{u}{v}{x}{y}" & \PMl{X}{u}{v}{x}{y} \\
\verb"\PM{--}" & \PM{--} & \verb"\PMl{--}{x}{y}" & \PMl{--}{x}{y} \\
\verb"\PM{-o-}" & \PM{-o-} & \verb"\PMl{-o-}{x}{y}{z}" & \PMl{-o-}{x}{y}{z} \\
\verb"\PM{8}" & \PM{8} & \verb"\PMl{8}{x}" & \PMl{8}{x} \\
\verb"\PM{88}" & \PM{88} & \verb"\PMl{88}{x}{y}" & \PMl{88}{x}{y} \\
\verb"\PM{ooo}" & \PM{ooo} & \verb"\PMl{ooo}{x}{y}" & \PMl{ooo}{x}{y} \\
\verb"\PM{-8-}" & \PM{-8-} & \verb"\PMl{-8-}{x}{y}{z}" & \PMl{-8-}{x}{y}{z} \\
\verb"\PM{-88-}" & \PM{-88-} & \verb"\PMl{-88-}{x}{u}{v}{y}" & \PMl{-88-}{x}{u}{v}{y} \\
\verb"\PM{-ooo-}"& \PM{-ooo-}& \verb"\PMl{-ooo-}{x}{u}{v}{y}"& \PMl{-ooo-}{x}{u}{v}{y}\\
\verb"\PM{-o8-}" & \PM{-o8-} & \verb"\PMl{-o8-}{x}{u}{v}{y}" & \PMl{-o8-}{x}{u}{v}{y}
\end{tabular}
\end{center}
\clearpage
\lipsum[1]
\begin{align*}
\PMl{-}{x}{y} & = i\Delta(x,y)\\
\PMl{x}{y} & = -i\lambda\\
\langle\phi(x_1)\phi(x_2)\phi(x_3)\phi(x_4)\rangle_0
&= \PMl{||}{x_1}{x_2}{x_3}{x_4} + \PMl{=}{x_1}{x_2}{x_3}{x_4}
+ \PMl{X}{x_1}{x_2}{x_3}{x_4}\\
\PMl{-o-}{x_1}{x_2}{y}&=\frac{-i\lambda}2\int\cdots\\
\PMl{-8-}{x_1}{y}{x_2}&=\frac{-i\lambda}6i\Delta(x_1,x_2)\int\cdots\\
\PMl{8}{y} &=\frac{-i\lambda}6\int\cdots\\
\text{denominator} &=1+\PM{8}+\PM{88}+\PM{ooo}+\cdots\\
\text{numerator} &=\PM{--}+\PM{-8-}+\PM{-88-}+\PM{-ooo-}+\cdots\\
&\quad+\PM{-o-}+\PM{-o8-}+\cdots
\end{align*}
\lipsum[2]
\end{document}
Код пакета phinman.sty
(произносится как Фейнман):
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{phinman}[2017/04/14 Diagrams for the free field theory]
\RequirePackage{tikz}
\newcommand\PMset{\pgfqkeys{/PM}}
\newcommand\PMldef[1]{\expandafter\def\csname PMl:#1\endcsname}
\newcommand\PMl[1]{\csname PMl:#1\endcsname}
\newcommand\PMdef[1]{\expandafter\def\csname PM:#1\endcsname}
\newcommand\PM[1]{\csname PM:#1\endcsname}
\newlength\PMu
\PMu=2ex
\PMset
{dot/.style={circle,fill,draw,inner sep=0pt,outer sep=0pt,minimum size=2.5pt},
line/.style={line width=0.6pt},
ghostline/.style={line width=2pt,color=white}
}
\newcommand\PMdot{node[/PM/dot]{}}
\newcommand\PMdotx[1]{node[/PM/dot,label={#1}]{}}
\newcommand\PMdota[1]{\PMdotx{[yshift=-0.5ex]above:{$#1$}}}
\newcommand\PMdotb[1]{\PMdotx{[yshift=0.5ex]below:{$#1$}}}
\newcommand\PMdotl[1]{\PMdotx{[xshift=0.5ex]left:{$#1$}}}
\newcommand\PMdotr[1]{\PMdotx{[xshift=-0.5ex]right:{$#1$}}}
\PMdef{-}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot -- (2\PMu,0)\PMdot;%
}
\PMldef{-}#1#2%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdotb{#1} -- (2\PMu,0)\PMdotb{#2};%
}
\PMdef{--}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot -- (4\PMu,0)\PMdot;%
}
\PMldef{--}#1#2%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdotb{#1} -- (4\PMu,0)\PMdotb{#2};%
}
\PMdef{x}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot
(\PMu,\PMu) -- (-\PMu,-\PMu)
(\PMu,-\PMu) -- (-\PMu,\PMu);%
}
\PMldef{x}#1%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdotx{below:{$#1$}}
(\PMu,\PMu) -- (-\PMu,-\PMu)
(\PMu,-\PMu) -- (-\PMu,\PMu);%
}
\PMdef{||}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,\PMu) \PMdot -- (0,-\PMu) \PMdot
(2\PMu,\PMu) \PMdot -- (2\PMu,-\PMu)\PMdot;%
}
\PMldef{||}#1#2#3#4%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,\PMu) \PMdotl{#3} -- (0,-\PMu) \PMdotl{#4}
(2\PMu,\PMu) \PMdotr{#1} -- (2\PMu,-\PMu)\PMdotr{#2};%
}
\PMdef{=}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,\PMu) \PMdot -- (2\PMu,\PMu) \PMdot
(0,-\PMu) \PMdot -- (2\PMu,-\PMu)\PMdot;%
}
\PMldef{=}#1#2#3#4%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,\PMu) \PMdotl{#3} -- (2\PMu,\PMu) \PMdotr{#1}
(0,-\PMu) \PMdotl{#4} -- (2\PMu,-\PMu)\PMdotr{#2};%
}
\PMdef{X}%
{\tikz[baseline={(0,-0.5ex)}]%
{\draw[/PM/line] (0,\PMu) \PMdot -- (2\PMu,-\PMu)\PMdot;
\draw[/PM/ghostline] (0,-\PMu)-- (2\PMu,\PMu);
\draw[/PM/line](0,-\PMu)\PMdot -- (2\PMu,\PMu) \PMdot;
}%
}
\PMldef{X}#1#2#3#4%
{\tikz[baseline={(0,-0.5ex)}]%
{\draw[/PM/line] (0,\PMu) \PMdotl{#3} -- (2\PMu,-\PMu)\PMdotr{#2};
\draw[/PM/ghostline] (0,-\PMu)-- (2\PMu,\PMu);
\draw[/PM/line](0,-\PMu)\PMdotl{#4}-- (2\PMu,\PMu) \PMdotr{#1};
}%
}
\PMdef{-o-}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot -- ++(2\PMu,0)\PMdot
arc(-90:270:0.6\PMu) -- ++(2\PMu,0)\PMdot;%
}
\PMldef{-o-}#1#2#3%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdotb{#1} -- ++(2\PMu,0)\PMdotb{#2}
arc(-90:270:0.6\PMu) -- ++(2\PMu,0)\PMdotb{#3};%
}
\PMdef{-8-}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot -- ++(4\PMu,0)\PMdot
(2\PMu,0.8\PMu)\PMdot arc (0:360:0.6\PMu)
arc (180:540:0.6\PMu);%
}
\PMldef{-8-}#1#2#3%
{\tikz[baseline={(0,0.5ex)}]\draw[/PM/line]
(0,0) \PMdotb{#1} -- ++(4\PMu,0)\PMdotb{#3}
(2\PMu,0.8\PMu)\PMdotx{above:{$#2$}} arc (0:360:0.6\PMu)
arc (180:540:0.6\PMu);%
}
\PMdef{-ooo-}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot -- ++(4\PMu,0)\PMdot
(1.3\PMu,0.8\PMu)\PMdot arc (0:360:0.6\PMu)
arc (180:360:0.6\PMu) \PMdot
arc (180:540:0.6\PMu) arc (0:180:0.6\PMu);%
}
\PMldef{-ooo-}#1#2#3#4%
{\tikz[baseline={(0,0.5ex)}]\draw[/PM/line]
(0,0) \PMdotb{#1} -- ++(4\PMu,0)\PMdotb{#4}
(1.3\PMu,0.8\PMu)\PMdotx{above:{$#2$}} arc (0:360:0.6\PMu)
arc (180:360:0.6\PMu) \PMdotx{above:{$#3$}}
arc (180:540:0.6\PMu) arc (0:180:0.6\PMu);%
}
\PMdef{8}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot arc (0:360:0.6\PMu)
arc (180:540:0.6\PMu);%
}
\PMldef{8}#1%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdotx{below:{$#1$}} arc (0:360:0.6\PMu)
arc (180:540:0.6\PMu);%
}
\PMdef{88}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,-0.7\PMu) \PMdot arc (0:360:0.6\PMu) arc (180:540:0.6\PMu)
(0,0.7\PMu) \PMdot arc (0:360:0.6\PMu) arc (180:540:0.6\PMu);%
}
\PMldef{88}#1#2%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,-0.7\PMu) \PMdotx{below:{$#2$}} arc (0:360:0.6\PMu) arc (180:540:0.6\PMu)
(0,0.7\PMu) \PMdotx{above:{$#1$}} arc (0:360:0.6\PMu) arc (180:540:0.6\PMu);%
}
\PMdef{ooo}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdot arc (0:360:0.6\PMu)
arc (180:360:0.6\PMu) \PMdot
arc (180:540:0.6\PMu) arc (0:180:0.6\PMu);%
}
\PMldef{ooo}#1#2%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,0) \PMdotx{below:{$#1$}} arc (0:360:0.6\PMu)
arc (180:360:0.6\PMu) \PMdotx{below:{$#2$}}
arc (180:540:0.6\PMu) arc (0:180:0.6\PMu);%
}
\PMdef{-88-}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,-0.8\PMu) \PMdot arc (0:360:0.6\PMu) arc (180:540:0.6\PMu)
(-2\PMu,0) \PMdot -- (2\PMu,0)\PMdot
(0,0.8\PMu) \PMdot arc (0:360:0.6\PMu) arc (180:540:0.6\PMu);%
}
\PMldef{-88-}#1#2#3#4%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,-0.8\PMu) \PMdotx{below:{$#3$}} arc (0:360:0.6\PMu) arc (180:540:0.6\PMu)
(-2\PMu,0) \PMdotb{#1} -- (2\PMu,0)\PMdotb{#4}
(0,0.8\PMu) \PMdotx{above:{$#2$}} arc (0:360:0.6\PMu) arc (180:540:0.6\PMu);%
}
\PMdef{-o8-}%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,-0.8\PMu) \PMdot arc (0:360:0.6\PMu) arc (180:540:0.6\PMu)
(-2\PMu,0) \PMdot -- (0,0) \PMdot
arc (-90:270:0.6\PMu) -- (2\PMu,0)\PMdot;%
}
\PMldef{-o8-}#1#2#3#4%
{\tikz[baseline={(0,-0.5ex)}]\draw[/PM/line]
(0,-1.5\PMu) \PMdotx{below:{$#3$}} arc (0:360:0.6\PMu) arc (180:540:0.6\PMu)
(-2\PMu,0) \PMdotb{#1} -- (0,0) \PMdotb{#2}
arc (-90:270:0.6\PMu) -- (2\PMu,0)\PMdotb{#4};%
}
\endinput
решение2
Вы можете нарисовать его с помощью Tikz. Ниже я создал пару команд для символов на вашем рисунке (вы, вероятно, найдете для них более подходящие названия). Мне пришлось 2pt
вручную отрегулировать высоту, чтобы линии были выровнены со +
знаками. Буквы lipsum
s нужны только для того, чтобы видеть вертикальный интервал. Вы можете отрегулировать длину линий и размер кругов.
\documentclass{article}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{calc,arrows}
\newcommand\SajadLineLength{15mm}
\newcommand\SajadCircleRadii{3mm}
\newcommand\SajadLine[2]{\tikz[baseline=-2pt]{%
\draw[*-*](0,0) -- (\SajadLineLength,0)node[pos=0,below]{$#1$}node[pos=1,below]{$#2$};
}}
\newcommand\SajadLineCircleMid[2]{\tikz[baseline=-2pt]{%
\draw[*-*](0,0) -- (\SajadLineLength,0)node[pos=0,below]{$#1$}node[pos=1,below]{$#2$};
\draw (0.5*\SajadLineLength,0) circle (\SajadCircleRadii);
}}
\newcommand\SajadLineCircle[2]{\tikz[baseline=-2pt]{%
\draw[*-*](0,0) -- (\SajadLineLength,0)node[pos=0,below]{$#1$}node[pos=1,below]{$#2$};
\draw (0.5*\SajadLineLength,\SajadCircleRadii) circle (\SajadCircleRadii);
}}
\newcommand\SajadLineDoubleCircle[2]{\tikz[baseline=-2pt]{%
\draw[*-*](0,0) -- (\SajadLineLength,0)node[pos=0,below]{$#1$}node[pos=1,below]{$#2$};
\draw (0.5*\SajadLineLength,\SajadCircleRadii) circle (\SajadCircleRadii);
\draw (0.5*\SajadLineLength,3*\SajadCircleRadii) circle (\SajadCircleRadii);
}}
\begin{document}
\lipsum[1]
\begin{displaymath}
A=
\SajadLine{x_1}{x_2}
+\SajadLineCircle{x_1}{x_2}
+\SajadLineCircleMid{x_1}{x_2}
+\SajadLineDoubleCircle{x_1}{x_2}
\end{displaymath}
\lipsum[2]
\end{document}