下面的代码基本上可以实现我想要的效果,但肯定有更优雅、更自动化的方法。我想要一个圆,圆里面有一个十字,顶点是:
\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,所以我只能编造这些东西。
我使用
\fmfcmd
宏来定义一个path
,我将其命名为otimes
,以绘制一个⊗
形状。
它由旋转一个象限的四个副本组成⌔
。(感谢 egreg 提供帮助。我
\fmfwizard
按照feynmf 手册第 17 页的脚注:如果变量
feynmfwizard
是true
(例如在调用\fmfwizard
宏之后),那么也可以将 [ 指定shape
为] 任何计算结果为 的 METAFONT 表达式path
。我将顶点形状设置为 ,
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}