光子的动量和 feynmp-auto 的气泡

光子的动量和 feynmp-auto 的气泡

我喜欢这幅画,我想回答这个问题:tikz-feynman 中的循环更加圆形经过多次尝试,我发现,在这个关联,如何把动量放上去。有这个newcommand叫做\marrow

\newcommand{\marrow}[5]{%
        \fmfcmd{style_def marrow#1
        expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
        label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
        enddef;}
    \fmf{marrow#1,tension=0}{#5}}

字体没有给我eulervm动力。如何解决这个问题?

我的 MWE:

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{feynmp-auto}
\usepackage{eulervm}
\newcommand{\marrow}[5]{%
    \fmfcmd{style_def marrow#1
    expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
    label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
    enddef;}
\fmf{marrow#1,tension=0}{#5}}

\begin{document}
\begin{fmffile}
 \begin{fmfgraph*}(100,80)
       \fmfleft{i}
       \fmfright{o}
       \fmflabel{$\mu$}{i}
       \fmflabel{$\nu$}{o}
       \marrow{fi}{up}{top}{$p$}{i,v1}
       \marrow{se}{up}{top}{$p$}{v2,o}
       \fmf{photon,tension=1}{i,v1}
       \fmf{photon,tension=1}{v2,o}
       \fmf{fermion,left,tension=0.4,label=$k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k-p$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}   
    
\end{document}

H

答案1

要获得匹配的外部字体,您需要使用宏feynmpLaTeX_text不是普通btex .. etex机制。

我对您的宏做了以下更改:

\newcommand{\marrow}[5]{%
    \fmfcmd{style_def marrow#1
    expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
    % label.#3(btex #4 etex, point 0.5 of p shifted 6 #2); <- removed
    LaTeX_text(point 0.5 of p shifted 8 #2, #3, "#4");
    enddef;}
\fmf{marrow#1,tension=0}{#5}}

第一个参数LaTeX_text是标签的点,第二个参数是角度,第三个参数是字符串形式的文本。所以我需要将对宏的调用更改为如下形式:

   \marrow{fi}{up}{90}{$p$}{i,v1}
   \marrow{se}{up}{90}{$p$}{v2,o}

这里90的意思是“向上”,“-90”表示向下等等......

我还必须在后面添加一个缺失的文件名fmffile才能进行编译。所以我编译了这个:

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath,amssymb}
\usepackage{feynmp-auto}
\usepackage{eulervm}
\newcommand{\marrow}[5]{%
    \fmfcmd{style_def marrow#1
    expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
    % label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
    LaTeX_text(point 0.5 of p shifted 8 #2, #3, "#4");
    enddef;}
\fmf{marrow#1,tension=0}{#5}}

\begin{document}
\begin{fmffile}{first}
\begin{fmfgraph*}(100,80)
       \fmfleft{i}
       \fmfright{o}
       \fmflabel{$\mu$}{i}
       \fmflabel{$\nu$}{o}
       \marrow{fi}{up}{90}{$p$}{i,v1}
       \marrow{se}{up}{90}{$p$}{v2,o}
       \fmf{photon,tension=1}{i,v1}
       \fmf{photon,tension=1}{v2,o}
       \fmf{fermion,left,tension=0.4,label=$k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k-p$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}   
\end{document}

我将其保存为seb.tex并使用其进行编译xelatex seb && mpost first && xelatex seb以获得:

在此处输入图片描述

我认为这正是我们想要的。

但是,我认为您真的不需要费尽心思定义宏——您只需将动量标签直接添加到光子上,如下所示:

\documentclass[border=5mm]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{feynmp-auto}
\usepackage{eulervm}
\begin{document}
\begin{fmffile}{first}
\begin{fmfgraph*}(100,80)
       \fmfleft{i}
       \fmfright{o}
       \fmflabel{$\mu$}{i}
       \fmflabel{$\nu$}{o}
       \fmf{photon,tension=1,label=$\underrightarrow{p}$}{v1,i}
       \fmf{photon,tension=1,label=$\underrightarrow{p}$}{o,v2}
       \fmf{fermion,left,tension=0.4,label=$k$}{v1,v2}
       \fmf{fermion,left,tension=0.4,label=$k-p$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}   
\end{document}

结果是:

在此处输入图片描述

相关内容