圆圈内带十字 feynmp

圆圈内带十字 feynmp

下面的代码基本上可以实现我想要的效果,但肯定有更优雅、更自动化的方法。我想要一个圆,圆里面有一个十字,顶点是:

\fmfv{d.sh=circle,d.f=empty,d.si=.1w,l=$\times$,label.dist=0}{v3}% v3 is the name of the vertex

但请注意,如果圆圈变大,十字将保持较小。我想要一个圆圈内有一个十字,无论圆圈有多大,它的直径都与圆圈相同。

有没有简单的方法可以实现这一点?

也可以看看https://physics.stackexchange.com/questions/101761/qed-vertex-factor-rule或下图。

在此处输入图片描述

答案1

免责声明:我以前从未使用过 Metafont,而且我也只碰过 feynmf 一次。如果我做错了什么,请评论。


由于您从未提供完整的 MWE,所以我只能编造这些东西。

  1. 我使用\fmfcmd宏来定义一个path,我将其命名为otimes,以绘制一个形状。
    它由旋转一个象限的四个副本组成。(感谢 egreg 提供帮助

  2. \fmfwizard按照feynmf 手册第 17 页的脚注

    如果变量feynmfwizardtrue(例如在调用\fmfwizard宏之后),那么也可以将 [ 指定shape为] 任何计算结果为 的 METAFONT 表达式path

  3. 我将顶点形状设置为 ,otimes将填充设置为empty。(令人惊讶的是,使用其他填充值似乎不会破坏任何东西。)

\documentclass{minimal}
\usepackage{feynmp-auto}

\begin{document}
\begin{fmffile}{foo}
\begin{fmfgraph*}(80,80)

\fmfcmd{
    % Please let me know if there’s a more efficient way to do this
    path quadrant, q[], otimes;
    quadrant = (0, 0) -- (0.5, 0) & quartercircle & (0, 0.5) -- (0, 0);
    for i=1 upto 4: q[i] = quadrant rotated (45 + 90*i); endfor
    otimes = q[1] & q[2] & q[3] & q[4] -- cycle;
}
\fmfwizard

\fmfleft{i1,i2}
\fmfright{r}

\fmf{fermion}{i1,c,i2}
\fmf{photon}{c,r}
\fmfdot{c}
\fmfv{d.sh=otimes,d.f=empty}{r}

\end{fmfgraph*}
\end{fmffile}

\end{document}


请注意它如何根据您的要求“正确”地扩展:

\fmfleft{a}
\fmfright{d}

\fmf{plain}{a,b,c,d}
\fmfv{d.sh=otimes,d.f=empty,d.si=.1w}{a}
\fmfv{d.sh=otimes,d.f=empty,d.si=.2w}{b}
\fmfv{d.sh=otimes,d.f=empty,d.si=.5w}{d}

相关内容