在 Feynmp 中集体标记几条传出/传入线路?

在 Feynmp 中集体标记几条传出/传入线路?

假设我在 Feynmp 中有两条外线,o1 和 o2。我知道如何标记每一条线。但假设我想画一个从 o1 到 o2 的大括号,然后标记该括号。只使用 Feynmp 可以做到这一点吗,还是我需要使用 Tikz?

示例(摘自第 28 页):

\begin{fmfgraph}(40,25)
\fmfpen{thick}
\fmfleft{ip,il}
\fmfright{oq1,oq2,d1,oq3,d2,d3,ol}
\fmf{fermion,tension=2}{ip,vp}
\fmf{fermion}{vp,vq,oq3}
\fmf{fermion}{vp,oq1}
\fmf{fermion}{vp,oq2}
\fmf{photon}{vl,vq}
\fmf{fermion,tension=2}{il,vl}
\fmf{fermion}{vl,ol}
\fmfblob{.15w}{vp}
\fmfdot{vq,vl}
\fmffreeze
\fmfi{plain}{vpath (__ip,__vp) shifted (thick*(0,2))}
\fmfi{plain}{vpath (__ip,__vp) shifted (thick*(1,-2))}
\end{fmfgraph}

假设我想集体标记传出/传入线路,如何在 中进行操作feynmp?还是必须使用tikz

答案1

已编辑,允许定制标签支架的垂直偏移和范围。再次已编辑,添加前标签和后​​标签。

首先请注意,图表上的边界框似乎只包围了“节点”,但没有包围箭头。提供给新宏的前两个参数\prefeynlabel\postfeynlabel是该框高度的分数。这些宏的语法是

\prefeynlabel{v-offset fraction}{v-extent fraction}{boxname}{label}

\postfeynlabel{v-offset fraction}{v-extent fraction}{boxname}{label}

注意:由于此包使用了 metapost,因此必须先使用 进行编译pdflatex,然后运行 ​​(在本例中为 )mpost x.mp,最后重新运行pdflatex

已修改以改善支架和标签的相对位置。

\documentclass{article}
\usepackage{scalerel}
\usepackage{feynmp-auto}
\newsavebox\feynbox
\newlength\tmplength
\parskip 2em
\newcommand\prefeynlabel[4]{%
  \setlength{\tmplength}{#2\ht#3}%
  \raisebox{#1\tmplength}{%
  \raisebox{\dimexpr.5\tmplength-.35\ht\strutbox}{#4}%
  \scaleto[1.7ex]{\raisebox{2.33pt}{\{}}{\tmplength}}%
}
\newcommand\postfeynlabel[4]{%
  \setlength{\tmplength}{#2\ht#3}%
  \raisebox{#1\tmplength}{%
  \scaleto[1.7ex]{\raisebox{2.33pt}{\}}}{\tmplength}%
  \raisebox{\dimexpr.5\tmplength-.35\ht\strutbox}{#4}}%
}
\begin{document}
\savebox\feynbox{%
\begin{fmffile}{x}
\begin{fmfgraph}(40,25)
\fmfpen{thick}
\fmfleft{ip,il}
\fmfright{oq1,oq2,d1,oq3,d2,d3,ol}
\fmf{fermion,tension=2}{ip,vp}
\fmf{fermion}{vp,vq,oq3}
\fmf{fermion}{vp,oq1}
\fmf{fermion}{vp,oq2}
\fmf{photon}{vl,vq}
\fmf{fermion,tension=2}{il,vl}
\fmf{fermion}{vl,ol}
\fmfblob{.15w}{vp}
\fmfdot{vq,vl}
\fmffreeze
\fmfi{plain}{vpath (__ip,__vp) shifted (thick*(0,2))}
\fmfi{plain}{vpath (__ip,__vp) shifted (thick*(1,-2))}
\end{fmfgraph}
\end{fmffile}%
}
Note diagram extends past bounding box:

\fboxsep=0pt
\fbox{\usebox{\feynbox}}

Label a portion of the diagram

\usebox{\feynbox}\postfeynlabel{0}{1}{\feynbox}{\{See, the brace centers match}

\usebox{\feynbox}\postfeynlabel{-.15}{.7}{\feynbox}{\{for big and small braces.}

\prefeynlabel{-.45}{.6}{\feynbox}{\textbackslash prefeynlabel}%
\usebox{\feynbox}%
\postfeynlabel{.42}{.8}{\feynbox}{\textbackslash postfeynlabel}
\end{document}

在此处输入图片描述

相关内容