5

The below code produces essentially what I want but there must be a more elegant way and more automatized way. I want a circle with a cross inside it at a vertex:

\fmfv{d.sh=circle,d.f=empty,d.si=.1w,l=$\times$,label.dist=0}{v3}% v3 is the name of the vertex

But notice that if the circle becomes big, the cross will remain small. I want a circle with a cross inside it that has the same diameter as the circle no matter how big the circle is.

Is there a simple way to achieve this?

See also https://physics.stackexchange.com/questions/101761/qed-vertex-factor-rule or the figure below.

enter image description here

4
  • 2
    Could you please provide a complete MWE for the community to work with? Something like \otimes might be what you want, but without knowing the surrounding code I am unable to test. May 6, 2014 at 16:14
  • I tried \otimes, looked nice. Can one enlarge \otimes? May 6, 2014 at 16:19
  • 1
    With the graphicx package, \scalebox{scalefactor}{code} will enlarge, if scale>1. If the code is math, $ delimiters will be needed around code. May 6, 2014 at 16:32
  • That worked like a charm Steven! One solution to this problem is: \fmfv{l=\scalebox{2}{$\otimes$},label.dist=0}{v3} So a combination of what you said and what @Paul Gessler suggested. Thanks. May 6, 2014 at 16:42

1 Answer 1

13

Disclaimer: I have never used Metafont before, and I also have only ever touched feynmf once. Please comment if I did any of this completely wrong.


Since you never even provided a complete MWE, I had to just make this stuff up.

  1. I used the \fmfcmd macro to define a path, which I named otimes, to draw a shape.
    It is made by rotating four copies of a quadrant. (Thanks to egreg for the help.)

  2. I turned on \fmfwizard according to footnote on page 17 of the feynmf manual:

    If the variable feynmfwizard is true (e.g. after calling the \fmfwizard macro), it is also possible to specify [shape as] any METAFONT expression that evaluates to a path.

  3. I set the vertex shape to otimes and the fill to empty. (Surprisingly, using another value for fill does not seem to break anything.)

\documentclass{minimal}
\usepackage{feynmp-auto}

\begin{document}
\begin{fmffile}{foo}
\begin{fmfgraph*}(80,80)

\fmfcmd{
    % Please let me know if there’s a more efficient way to do this
    path quadrant, q[], otimes;
    quadrant = (0, 0) -- (0.5, 0) & quartercircle & (0, 0.5) -- (0, 0);
    for i=1 upto 4: q[i] = quadrant rotated (45 + 90*i); endfor
    otimes = q[1] & q[2] & q[3] & q[4] -- cycle;
}
\fmfwizard

\fmfleft{i1,i2}
\fmfright{r}

\fmf{fermion}{i1,c,i2}
\fmf{photon}{c,r}
\fmfdot{c}
\fmfv{d.sh=otimes,d.f=empty}{r}

\end{fmfgraph*}
\end{fmffile}

\end{document}


Notice how this scales “correctly” according to your requirements:

\fmfleft{a}
\fmfright{d}

\fmf{plain}{a,b,c,d}
\fmfv{d.sh=otimes,d.f=empty,d.si=.1w}{a}
\fmfv{d.sh=otimes,d.f=empty,d.si=.2w}{b}
\fmfv{d.sh=otimes,d.f=empty,d.si=.5w}{d}

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .