Photon bez strzałek za pomocą feynmp-auto
Mam ten MWE utworzony za pomocą feynmp-auto,
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{photon,tension=1,l.side=right}{i,v1}
\fmf{photon,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
Ale foton nie ma strzałek jak na tym obrazku?
Muszę przeczytać dokumentacje: fmfman, fmfsamplesa latex_feynman [CMS Wiki Pages]jednak wszystkie fotony są bez strzałki (lewy lub prawy).
Odpowiedzi
Dodanie wiggly_arrowstylu jest dość łatwe, ale (a) wygląda okropnie, i (b) nie sądzę, aby miało to jakiekolwiek znaczenie w diagramie Feynmana ....
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\fmfcmd{style_def wiggly_arrow expr p =
cdraw wiggly p;
cfill (arrow wiggly p);
enddef;}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{wiggly_arrow,tension=1}{i,v1}
\fmf{wiggly_arrow,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
Drugie podejście
Wygląda to ładniej, ale nadal martwię się, że to nic „nie znaczy” na diagramie Feynmana.
\documentclass[border=5mm]{standalone}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\fmfcmd{style_def wiggly_arrow expr p =
draw wiggly p withcolor 3/4 [foreground, background];
cfill (arrow wiggly p);
enddef;}
\fmfcmd{style_def directed_photon expr p =
interim ahangle := 30;
drawarrow (wiggly subpath (0, arctime arclength p - 2.4 ahlength of p) of p)
.. {direction infinity of p} point infinity of p
cutafter fullcircle scaled 2 shifted point infinity of p
withcolor foreground;
enddef;}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{directed_photon,tension=1}{i,v1}
\fmf{directed_photon,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
Uwagi
Co tu się dzieje?
feynmppakiet zawiera\fmfcmdsekwencję sterowania, który pozwala na wstawianie dowolnych fragmentów kodu MetaPosta do swojej diagramów.Użyłem an
\fmfcmddo zdefiniowania kilku nowych makr „stylowych”.Możemy zdefiniować makra „stylowe” za pomocą
style_defmakra dostarczonego wfeynmppakiecie.style_defdziała podobnie do a,vardefale także konfiguruje niektóre polecenia rysowania i definicje, które pozwalają na użycie nazwy stylu z\fmfsekwencją sterującą.Mój pierwszy nazywał się „wiggly_arrow” i korzystał z dwóch poleceń dostarczonych przez
feynmp:cdraworazcfilldo narysowania ścieżki i umieszczenia grotu strzałki na jej środku. Ścieżka do narysowania jest reprezentowana przez parametr,pa definicja modyfikuje ją za pomocą znajdującego sięwigglyprzed nim makra, które zwraca, er, falistą wersję ścieżki.Drugi porzuca próba dostarczony
cdrawicfillpolecenia i opada na prostym MPdrawarrowmakroProblem w tym, że staram się, aby strzała ładnie wyglądała. Aby to zrobić, zamierzam tylko nałożyć ruchy na główną część ścieżki, a ostatnie kilka milimetrów staram się pozostawić prosto, aby strzałka wyglądała lepiej.
Długość ścieżki
pw punktach wynosiarclength pDługość zwykłego grotu strzały MP wynosi
ahlengthZatem długość ścieżki, którą chcę się poruszać, wynosi
arclength p - 2.4 ahlengthWięc chcemy się poruszać,
subpath (0, arctime a of p) of pgdzieajest długość powyżej.i chcemy płynnie łączyć się z normalnym końcem
p, więc łączymy wiggly podścieżkę do.. {direction infinity of p} point infinity of pale w końcu chcemy zatrzymać się trochę na krótko, aby czubek grotu strzały był lepiej widoczny, przecinamy ścieżkę, aby narysować za krawędzią pełnego koła przeskalowanego do 2pkt i przesuniętego do końca
p.Zrozumiałeś?
Za każdym razem, gdy widziałem strzałkę przymocowaną do linii fotonu (lub gluonu), strzałka jest rysowana z przesunięciem, jak pokazano na zielono na twoim przykładzie.
Do mojego doktoratu dodałem kilka stylów strzał do feynmp i umieściłem je poniżej. Istnieją 3 typy strzałek i dwie strony linii, co daje łącznie 6 nowych stylów linii. Style „arrow” i „far_arrow” po prostu rysują grot strzałki, ale odsunięte od oryginalnej linii, styl „line_arrow” rysuje pełną strzałkę z rdzeniem pokrywającym środkową połowę linii, na której jest oparty (od 1/4 do 3/4), ale ponownie przesunięty.
Będziesz chciał użyć albo \ fmffreeze, albo naciągu = 0, ponieważ będą one chciały być narysowane, a także linii fotonu lub gluonu.
Oto kod zawierający przykłady trzech typów (w różnych kolorach, aby było jasne).
\documentclass[class=minimal,border=20pt]{standalone}
\usepackage{mathtools,amssymb}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{draw}
\fmfcmd{
vardef middir(expr p,ang) =
dir(angle direction length(p)/2 of p + ang)
enddef;
style_def arrow_left expr p =
shrink(.7);
cfill(arrow p
shifted(4thick*middir(p,90)));
endshrink
enddef;
style_def arrow_right expr p =
shrink(.7);
cfill(arrow p
shifted(4thick*middir(p,-90)));
endshrink
enddef;
style_def far_arrow_left expr p =
shrink(.7);
cfill(arrow p
shifted(8thick*middir(p,90)));
endshrink
enddef;
style_def far_arrow_right expr p =
shrink(.7);
cfill(arrow p
shifted(8thick*middir(p,-90)));
endshrink
enddef;
style_def line_arrow_right expr p =
drawarrow subpath (1/4, 3/4) of p shifted 6 middir(p,-90) withpen pencircle scaled 0.4;
enddef;
style_def line_arrow_left expr p =
drawarrow subpath (1/4, 3/4) of p shifted 6 middir(p,90) withpen pencircle scaled 0.4;
enddef;}
\begin{fmfgraph*}(100,100)
\fmfleft{i}
\fmfright{o}
\fmfv{label=$p$,l.a=60}{i}
\fmfv{label=$p$,l.a=120}{o}
\fmf{wiggly,tension=1}{i,v1}
\fmf{wiggly,tension=1}{v2,o}
\fmf{fermion,left,tension=0.4,label=$p-k$}{v1,v2}
\fmf{fermion,left,tension=0.4,label=$k$}{v2,v1}
\fmf{arrow_right,tension=0,foreground=green}{i,v1}
\fmf{far_arrow_right,tension=0,foreground=red}{i,v1}
\fmf{line_arrow_right,tension=0}{v2,o}
\end{fmfgraph*}
\end{fmffile}
\end{document}