答案1
tikz-feynman
如果手动指定顶点的坐标,那么这也相当简单。
\documentclass{article}
\usepackage{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (a) at (-2,2);
\vertex (b) at (2,2);
\vertex (c) at (0,0);
\vertex (d1) at (-0.4,-0.4);
\vertex (d2) at (-1.6,-1.6);
\vertex (d3) at (-2,-2);
\vertex (e) at (2,-2);
\diagram*{
(a) -- [fermion] (c),
(b) -- [anti fermion] (c),
(c) -- [scalar] (d1),
(d1) -- [anti charged scalar] (d2),
(d1) -- [fermion, half left] (d2),
(d1) -- [anti fermion, half right] (d2),
(d2) -- [scalar] (d3),
(c) -- [charged scalar] (e)
};
\end{feynman}
\end{tikzpicture}
\end{document}
答案2
它非常简单pstricks
:我使用极坐标将顶点定义为空节点,然后\psline
使用键将它们与 s 连接,ArrowInside
然后添加两个互补的椭圆弧。
\documentclass[x11names, 12pt, border=6pt]{standalone}
\usepackage{pst-node, pst-plot}
\usepackage{pst-arrow}
\begin{document}
\psset{plotstyle=curve, linejoin=1, arrowinset=0, arrowsize=6pt, ArrowInside=->}
\begin{pspicture}(-3,-3)(3,3)
\pnodes(0,0){O}(4;135){A}(4;45){B}(4;-45){C}(4;-135){D}(2;-135){I}
\psline(A)(O)(B)
\psline[linestyle=dashed, dash=5pt 5pt](D)(O)(C)
\pscustom{\rotate{45}%
\psellipticarcn[arrows=->](I)(1.2,0.7){90}{-105}%\psellipse(I)(1.2,0.6)
\psellipticarcn[arrows=->](I)(1.2,0.7){270}{435}
}%
\end{pspicture}
\end{document}
答案3
为了比较目的。
使用以下方式编译渐近线。
unitsize(1.5cm);
size(300);
draw((0,0)--(1,1),MidArrow(5bp));
draw((-1,1)--(0,0),MidArrow(5bp));
draw((-1,-1)--(0,0),dashed,MidArrow(5bp));
draw((0,0)--(1,-1),dashed,MidArrow(5bp));
pair M=relpoint((-1,-1)--(0,0),.5);
path Ellipse=rotate(degrees(dir((-1,-1)--(0,0))),M)*ellipse(M,.4,.2);
draw(reverse(Ellipse),Arrow(5bp,FillDraw(),reltime(Ellipse,.3)));
draw(reverse(Ellipse),p=invisible,Arrow(5bp,FillDraw(black,black),reltime(Ellipse,.79)));