张量符号作为 feynmp 中的顶点

张量符号作为 feynmp 中的顶点

考虑以下示例

\documentclass{memoir}
\usepackage[margin=0.05cm]{geometry}
\usepackage[force]{feynmp-auto}
\usepackage{amsmath}

\begin{document}
\setlength{\unitlength}{.09cm}
\begin{fmffile}{simple_labels}
  \begin{fmfgraph*}(40,25)
  \fmfleft{i}
  \fmfright{o}
  \fmf{gluon}{i,v1,o}
  \end{fmfgraph*}%
  \end{fmffile}
\end{document}

我想\otimes在顶点上绘制一个张量积符号v1,同时确保无论有多少条线进入顶点,它都能“正确”地运行(这里的“正确”是指这些线连接到-符号的正确位置\otimes)。我检查了文档我认为没有这样的选择。

基本上,我希望有一个命令来\fmfblob{<size>}{<vertex>}执行此操作...有没有简单的方法可以实现此目的?

编辑:@campa 指出我这个问题,它定义了一个绘制\otimes符号的新命令。这似乎是一个好的开始,但它只是将\otimes符号放在线上,而没有调整两条线与符号相交的点\otimes……

编辑:

\documentclass{memoir}
\usepackage[margin=0.05cm]{geometry}
\usepackage[force]{feynmp-auto}
\usepackage{amsmath}
\makeatletter
\def\fmfotimes#1#2{%
  \fmfbuf@={d.sh=otimes,d.f=empty,d.ang=45,d.si=#1}%
  \fmfcmd{vvertex ("\the\fmfbuf@", \fmfpfx{#2});}}
\makeatother
\begin{document}
\setlength{\unitlength}{.09cm}
\begin{fmffile}{simple_labels}
  \fmfframe(2,12.5)(2,-12.5){%
  \begin{fmfgraph*}(40,25)
    \fmfcmd{
    path otimes;
    otimes :=
    for i = 0 upto 4: 1/2dir 45i .. endfor
    1/2left --
    for i=right,up,left,down:
        1/2i -- origin --
    endfor
    for i = 4 upto 8: 1/2dir 45i .. endfor
    cycle;
    }
    \fmfwizard
  \fmfleft{i}
  \fmfright{o}
  \fmf{gluon}{i,v1,o}
    \fmfotimes{.15w}{v1} %Try with another size
  \end{fmfgraph*}%
  }
  \fmfframe(2,12.5)(2,-12.5){%
      \begin{fmfgraph*}(40,25)
      \fmfleft{i}
      \fmfrightn{o}{2}
      \fmf{gluon}{i,v1}
      \fmf{gluon}{o1,v1}
      \fmf{gluon}{o2,v1}
      \fmfotimes{0.15w}{v1}
      \end{fmfgraph*}%
  }
  \fmfframe(2,12.5)(2,-12.5){%
      \begin{fmfgraph*}(40,25)
      \fmfleftn{i}{2}
      \fmfrightn{o}{2}
      \fmf{gluon}{i1,v1}
      \fmf{gluon}{o1,v1}
      \fmf{gluon}{o2,v1}
      \fmf{gluon}{i2,v1}
      \fmfotimes{0.15w}{v1}
      \end{fmfgraph*}%
  }
  \end{fmffile}
\end{document}

相关内容