TransWikia.com

Vertical alignment of feynmp-graphs in equations

TeX - LaTeX Asked on June 10, 2021

I find myself often in the situation where I have to arrange graphs generated with feynmp in equations. This works usually fine, but I have to play around with the space, i.e. I need to add some at the bottom for the text and the graph not to overlap.
Consider the following code

documentclass{article}
usepackage{lipsum}
usepackage{mathtools}
usepackage{feynman-auto}

setlength{unitlength}{.09cm}

begin{document}

lipsum[10]

begin{fmffile}{operator_2}
    begin{align*}
      (a)-(b):=
      fmfframe(2,12.5)(2,-12.5){%
        begin{fmfgraph*}(40,25)
          fmfleftn{i}{2}
          fmfrightn{o}{2}
          fmf{dashes}{i1,v,o1}
          fmf{fermion}{i2,v,o2}
          fmfblob{0.15w}{v}
          fmflabel{$p_2$}{i2} 
          fmflabel{$p_4$}{i1}
          fmflabel{$p_3$}{o1}
          fmflabel{$p_1$}{o2}
        end{fmfgraph*}%
      } 
      -
      fmfframe(2,12.5)(2,-12.5){%
      begin{fmfgraph*}(40,25)
        fmfleftn{i}{2}
        fmfrightn{o}{2}
        fmflabel{$p_2$}{i2} 
        fmflabel{$p_4$}{i1}
        fmflabel{$p_3$}{o1}
        fmflabel{$p_1$}{o2}
        fmf{photon,tension=2,fore=red}{i1,v4}
        fmf{photon,tension=2,fore=red}{o1,v1}
        fmf{dashes,tension=2}{o2,v2}
        fmf{dashes,tension=2}{i2,v3}
        fmfdotn{v}{4}
      end{fmfgraph*}%
    }
    end{align*}
end{fmffile}

lipsum[10]

end{document}

which should result in the following output:
enter image description here

The math and the graph are nicely aligned, but I would need to add something like \ after the last fmfframe{} command to make enough space for the text to fit… Also, it seems that there is unnecessary space between the upper text and the graph. Can this be reduced?

If possible I would like to apply these changes to all environments of the form

begin{fmffile}{name}
    begin{align*}
         fmfframe()(){}
         .
         .
         .
    end{align*}
end{fmffile}

I’m not sure if it would be smart to create a new environment for this (and I lack the skill to do it anyways…). Also, I am not interested in solutions that are based on tikz-feynman.

One Answer

I'd use gathered, but with a twist, because labels in Feynman diagrams are often outside the bounding box.

documentclass{article}
usepackage{lipsum}
usepackage{mathtools}
usepackage{feynmp-auto}

newcommand{eqgraph}[3]{%
  % #1 = adjustment above, #2 = adjustment below, #3 = graph
  begin{gathered}
  raisebox{0pt}[dimexprheight+#1][dimexprdepth+#2]{ignorespaces#3unskip}%
  end{gathered}
}

setlength{unitlength}{.09cm}

begin{document}

lipsum[10]

begin{fmffile}{operator_2}
[
      (a)-(b):=
mspace{30mu}
eqgraph{0ex}{2ex}{
        begin{fmfgraph*}(40,25)
          fmfleftn{i}{2}
          fmfrightn{o}{2}
          fmf{dashes}{i1,v,o1}
          fmf{fermion}{i2,v,o2}
          fmfblob{0.15w}{v}
          fmflabel{$p_2$}{i2} 
          fmflabel{$p_4$}{i1}
          fmflabel{$p_3$}{o1}
          fmflabel{$p_1$}{o2}
        end{fmfgraph*}
}
mspace{30mu}
      -
mspace{30mu}
eqgraph{0ex}{1.8ex}{
      begin{fmfgraph*}(40,25)
        fmfleftn{i}{2}
        fmfrightn{o}{2}
        fmflabel{$p_2$}{i2} 
        fmflabel{$p_4$}{i1}
        fmflabel{$p_3$}{o1}
        fmflabel{$p_1$}{o2}
        fmf{photon,tension=2,fore=red}{i1,v4}
        fmf{photon,tension=2,fore=red}{o1,v1}
        fmf{dashes,tension=2}{o2,v2}
        fmf{dashes,tension=2}{i2,v3}
        fmfdotn{v}{4}
      end{fmfgraph*}
}
]
end{fmffile}
lipsum[10]

end{document}

enter image description here

I'm afraid you need to do the adjustment by eye.

Correct answer by egreg on June 10, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP