示例

示例

我需要为我的研究论文绘制一些费曼图。虽然我有一些使用 PSTricks 绘图的经验,但绘制费曼图仍然不是一件容易的事。有人可以提供一些技巧让它更容易吗?提前谢谢!

答案1

评论

这是使用包\pssin中的命令pst-coil和包ArrowInside中的选项的最小工作示例pstricks-add

这种实现方式有一个很大的缺点:缩短线时无法保留正弦的频率。无论线的实际长度如何,该命令始终会绘制与参数中给出的周期数相同的周期数。比较:\pssin[periods=5](0,0)(2,0)\pssin[periods=5](0,0)(8,0)

样本

示例

用 编译xelatex

1.)

受到 g.kov 的回答的启发,我添加了一些标签。

执行

\documentclass[border=3mm]{standalone}
\usepackage{pstricks-add}
\usepackage{pst-coil}
\begin{document}
\psset{arrowscale=2}
\begin{pspicture}(-1.5,-1.5)(4.5,1.5)
    % Particles
    \psline[ArrowInside=->](-1,-1)(0,0)
    \psline[ArrowInside=->](0,0)(-1,1)
    \pssin[periods=9,amplitude=0.1,coilarm=0](0,0)(3,0)
    \psline[ArrowInside=->](4,-1)(3,0)
    \psline[ArrowInside=->](3,0)(4,1)
    % Labels
    \uput[45](-0.5,0.5){$k'$}
    \uput[-45](-0.5,-0.5){$k$}
    \uput[135](-1,1){$e^+$}
    \uput[225](-1,-1){$e^-$}
    \uput[-90](1.5,0){$q$}
    \uput[135](3.5,0.5){$q'$}
    \uput[225](3.5,-0.5){$q$}
    \uput[45](4,1){$\mu^+$}
    \uput[-45](4,-1){$\mu^-$}
    % Arrows
    \psline{->}(-1,0.6)(-0.5,0.1)
    \psline{->}(3.5,-0.1)(4,-0.6)
    \psline{->}(1,0.3)(2,0.3)
\end{pspicture}
\end{document}

输出

费曼1

2.)

执行

\documentclass[border=3mm]{standalone}
\usepackage{pstricks-add}
\usepackage{pst-coil}
\begin{document}
\psset{arrowscale=2}
\begin{pspicture}(-1,-1)(4,1)
    \psline[ArrowInside=->](-1,-1)(0,0)
    \psline[ArrowInside=->](0,0)(-1,1)
    \pssin[periods=3,amplitude=0.1,coilarm=0](0,0)(1,0)
    %No ArrowInside for \psarc :(
    \psarc(1.5,0){0.5}{0}{180}\psarc{->}(1.5,0){0.5}{0}{100}
    \psarc(1.5,0){0.5}{180}{360}\psarc{->}(1.5,0){0.5}{180}{280}
    \pssin[periods=3,amplitude=0.1,coilarm=0](2,0)(3,0)
    \psline[ArrowInside=->](4,-1)(3,0)
    \psline[ArrowInside=->](3,0)(4,1)
\end{pspicture}
\end{document}

输出

费曼2

3.)

执行

正如您在屏幕截图中看到的,\pscoil事情有点棘手。

\documentclass[border=3mm]{standalone}
\usepackage{pstricks-add}
\usepackage{pst-coil}
\begin{document}
\psset{arrowscale=2}
\begin{pspicture}(0,0)(3,-4)
    \psline[ArrowInside=->](0,0)(1,-1)
    \psline[ArrowInside=->](2,-1)(3,0)
    \pssin[periods=3.5,amplitude=0.1,coilarm=0](1,-1)(2,-1)
    \psline[ArrowInside=->](1,-1)(1.5,-2)
    \psline[ArrowInside=->](1.5,-2)(2,-1)
    \pscoil[coilwidth=0.2,coilarm=0](1.5,-2)(1.5,-3)
    \psline[ArrowInside=->](0,-4)(1.5,-3)
    \psline[ArrowInside=->](1.5,-3)(3,-4)
\end{pspicture}
\end{document}

输出

费曼3

答案2

还有一个Asymptote模块feynman可能很有趣。这是eetomumu.asy发行版中的一个示例演示:

import feynman;

// set default line width to 0.8bp
currentpen = linewidth(0.8);

// scale all other defaults of the feynman module appropriately
fmdefaults();

// define vertex and external points

real L = 50;

pair zl = (-0.75*L,0);
pair zr = (+0.75*L,0);

pair xu = zl + L*dir(+120);
pair xl = zl + L*dir(-120);

pair yu = zr + L*dir(+60);
pair yl = zr + L*dir(-60);

// draw propagators and vertices

drawFermion(xu--zl);
drawFermion(zl--xl);

drawPhoton(zl--zr);

drawFermion(yu--zr);
drawFermion(zr--yl);

drawVertex(zl);
drawVertex(zr);

// draw momentum arrows and momentum labels

drawMomArrow(xl--zl, Relative(left));
label(Label("$k'$",2RightSide), xl--zl);

label(Label("$k$",2LeftSide), xu--zl);

drawMomArrow(zl--zr, Relative(left));
label(Label("$q$",2RightSide), zl--zr);

drawMomArrow(zr--yu, Relative(right));
label(Label("$p'$",2LeftSide), zr--yu);

label(Label("$p$",2RightSide), zr--yl);

// draw particle labels

label("$e^-$", xu, left);
label("$e^+$", xl, left);

label("$\mu^+$", yu, right);
label("$\mu^-$", yl, right);

在此处输入图片描述

相关内容