![在 Feynmp 上说明森林公式](https://linux22.com/image/433530/%E5%9C%A8%20Feynmp%20%E4%B8%8A%E8%AF%B4%E6%98%8E%E6%A3%AE%E6%9E%97%E5%85%AC%E5%BC%8F.png)
我正在尝试说明森林公式如何证明可重正化性,这是我正在学习的一门课程的期末项目。我需要找到一种方法来在子图周围放置一个带虚线的矩形(我可以不用虚线)。
\begin{fmfgraph*}(60,15)
\fmfleft{i1,i2}
\fmfright{f1,f2}
\fmf{vanilla}{i1,v1}
\fmf{vanilla}{i2,v1}
\fmf{vanilla,left=0.6,tension=0.4}{v1,v2}
\fmf{vanilla,left=0.6,tension=0.4}{v2,v1}
\fmf{vanilla,left=0.6,tension=0.4}{v2,v3}
\fmf{vanilla,left=0.6,tension=0.4}{v3,v2}
\fmf{vanilla,left=0.6,tension=0.4}{v3,v4}
\fmf{vanilla,left=0.6,tension=0.4}{v4,v3}
\fmf{vanilla}{v4,f1}
\fmf{vanilla}{v4,f2}
\fmffreeze
\fmf{phantom}{v1,v,v2}
\fmfv{decor.shape=square,decor.filled=empty,decor.size=0.3w}{v}
\end{fmfgraph*}
这是我迄今为止最好的尝试。问题是:
a) 形状是正方形,有没有办法得到一个可以紧密贴合子图的矩形?b) 形状不透明,您应该能够看到下面的子图。
这是运行我的代码的结果:
理想情况下我正在寻找这样的东西:
我可以像这次一样手动将这些内容添加到报告末尾,但直接在 LaTeX 中进行添加会更好。
答案1
这可以通过使用 feynmf 中的功能来实现,但它确实使用了一些更奇怪/复杂的功能。
诀窍是使用\fmfforce
命令手动指定框的角相对于图表中其他点和方向的位置。
具体来说,每个角都设置为与其中一个顶点偏移,偏移量为两个输入之间的垂直间隙的指定分数(0.3*)和我们希望框围绕的两个顶点之间的水平间隙的指定分数(+/-0.1*)。
vloc 函数是获取图中节点坐标的底层函数,在 vloc 命令中引用任何顶点名称时,必须在其前面添加 __。fmfforce 命令中还可以执行许多其他函数和操作,但这里不需要它们。
\begin{fmfgraph*}(200,60)
\fmfleft{i1,i2}
\fmfright{f1,f2}
\fmf{vanilla}{i1,v1}
\fmf{vanilla}{i2,v1}
\fmf{vanilla,left=0.6,tension=0.4}{v1,v2}
\fmf{vanilla,left=0.6,tension=0.4}{v2,v1}
\fmf{vanilla,left=0.6,tension=0.4}{v2,v3}
\fmf{vanilla,left=0.6,tension=0.4}{v3,v2}
\fmf{vanilla,left=0.6,tension=0.4}{v3,v4}
\fmf{vanilla,left=0.6,tension=0.4}{v4,v3}
\fmf{vanilla}{v4,f1}
\fmf{vanilla}{v4,f2}
\fmffreeze
\fmfforce{vloc(__v1)+0.3*(vloc(__i2)-vloc(__i1))+0.1*(vloc(__v1)-vloc(__v2))}{b1}
\fmfforce{vloc(__v1)-0.3*(vloc(__i2)-vloc(__i1))+0.1*(vloc(__v1)-vloc(__v2))}{b2}
\fmfforce{vloc(__v2)-0.3*(vloc(__i2)-vloc(__i1))-0.1*(vloc(__v1)-vloc(__v2))}{b3}
\fmfforce{vloc(__v2)+0.3*(vloc(__i2)-vloc(__i1))-0.1*(vloc(__v1)-vloc(__v2))}{b4}
\fmf{dashes}{b1,b2,b3,b4,b1}
\end{fmfgraph*}