%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % TikZ-FeynHand, Version 1.1.0 of 2019/08/19 % Feynhand Diagrams with TikZ (LaTex manual version) % Copyright (C) 2019 Max Dohse % Copyright (C) 2016 Joshua Ellis % % % This LaTeX file and the whole package are free: % you can redistribute it and/or modify it under the % terms of the GNU General Public License as published by the Free Software Foundation, % either version 3 of the License, or (at your option) any later version. % % This file is a modification of the file tikzfeynman.keys.code.tex % of the package tikz-feynman (version 1.1.0 of 2016/02/05) % which is available online at https://ctan.org/pkg/tikz-feynman % for a list of changes, see the file CHANGES.TXT % % available at https://ctan.org/pkg/tikz-feynhand % The Current Maintainer of this work is Max Dohse. % % This program is distributed in the hope that it will be useful, but WITHOUT % ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS % FOR A PARTICULAR PURPOSE. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Lengths %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newlength{\feynhanddotsize} \setlength{\feynhanddotsize}{1.5mm} \newlength{\feynhandblobsize} \setlength{\feynhandblobsize}{7.5mm} \newlength{\feynhandlinesize} \setlength{\feynhandlinesize}{0.5pt} \newlength{\feynhandarrowsize} \setlength{\feynhandarrowsize}{6pt} \newlength{\feynhandtopsep} \setlength{\feynhandtopsep}{18\feynhandlinesize} %% Colors \newcommand{\feynhandtopsepcolor}{white} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Shapes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Crossed Circle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pgfdeclareshape{crossed circle} { \inheritsavedanchors[from=circle] \inheritanchorborder[from=circle] \inheritanchor[from=circle]{north} \inheritanchor[from=circle]{north west} \inheritanchor[from=circle]{north east} \inheritanchor[from=circle]{center} \inheritanchor[from=circle]{west} \inheritanchor[from=circle]{east} \inheritanchor[from=circle]{mid} \inheritanchor[from=circle]{mid west} \inheritanchor[from=circle]{mid east} \inheritanchor[from=circle]{base} \inheritanchor[from=circle]{base west} \inheritanchor[from=circle]{base east} \inheritanchor[from=circle]{south} \inheritanchor[from=circle]{south west} \inheritanchor[from=circle]{south east} \inheritbackgroundpath[from=circle] \foregroundpath{ % Compute south west \centerpoint \pgf@xc=\radius \advance\pgf@x by-0.707107\pgf@xc \advance\pgf@y by-0.707107\pgf@xc \pgf@xa=\pgf@x \pgf@ya=\pgf@y % Store coordinates % Compute north east point \centerpoint \pgf@xc=\radius \advance\pgf@x by0.707107\pgf@xc \advance\pgf@y by0.707107\pgf@xc \pgf@xb=\pgf@x \pgf@yb=\pgf@y % Store coordinates \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}} \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}} \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yb}} \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}} \pgfsetarrowsstart{} \pgfsetarrowsend{} } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Decorations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Complete Sines %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Complete sines replaces the path with a whole number of sine waves. %% Thanks to http://tex.stackexchange.com/a/134516/26980 \pgfdeclaredecoration{complete sines}{initial} { %% Begin by computing the overall path length and find how many sine waves we %% can fit in. Nothing happens beyond the computation. \state{initial}[ width=+0pt, next state=move, persistent precomputation={ \def\tikzfeynhand@cs@angle@step{30} \def\tikzfeynhand@cs@current@angle{0} \pgfmathsetlengthmacro{\tikzfeynhand@cs@points@per@step}{ \pgfdecoratedinputsegmentlength / int(\pgfdecoratedinputsegmentlength / \pgfdecorationsegmentlength) / 360 * \tikzfeynhand@cs@angle@step} }, ]{} %% Move to the origin to the path \state{move}[ width=+\tikzfeynhand@cs@points@per@step, next state=draw ]{ \pgfpathmoveto{\pgfpointorigin} } %% Draw the sine wave itself. This computes the value every 20 degrees and draws straight edges. \state{draw}[ width=+\tikzfeynhand@cs@points@per@step, switch if less than=1.25*\tikzfeynhand@cs@points@per@step to final, % <- bit of a hack persistent postcomputation={ \pgfmathparse{mod(\tikzfeynhand@cs@current@angle+\tikzfeynhand@cs@angle@step, 360)} \let\tikzfeynhand@cs@current@angle=\pgfmathresult% }, ]{ % \pgfmathparse{sin(\tikzfeynhand@cs@current@angle) * \pgfmetadecorationsegmentamplitude / 2} \pgfmathparse{sin(\tikzfeynhand@cs@current@angle) * 3 * \feynhandlinesize / 2} \tikz@decoratepathfalse \pgfpathlineto{\pgfqpoint{0pt}{\pgfmathresult pt}}% } \state{final}{ \ifdim\pgfdecoratedremainingdistance>0pt\relax \pgfpathlineto{\pgfpointdecoratedpathlast} \fi } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \tikzfeynhandset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Hooks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% execute at begin feynhand/.code={}, execute at end feynhand/.code={}, every feynhand/.style={/tikzfeynhand/every feynhand@@/.append style={#1}}, every feynhand@@/.style={ /tikzfeynhand/.cd, }, execute at begin feynhand@@/.code={} %% Internal version execute at end feynhand@@/.code={}, %% Internal version %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Vertices %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% every vertex@@/.style={ /tikz/shape=coordinate, }, every vertex/.style={/tikzfeynhand/every vertex@@/.append style={#1}}, vertex/.style={ /tikzfeynhand/every vertex@@, }, %% DOTS + friends every dot@@/.style={ /tikz/shape=circle, /tikz/draw, /tikz/fill, /tikz/inner sep=0pt, /tikz/outer sep=0pt, /tikz/minimum size=\feynhanddotsize, /tikz/line width = \feynhandlinesize, }, every dot/.style={/tikzfeynhand/every dot@@/.append style={#1}}, dot/.style={ /tikzfeynhand/every dot@@, }, every squaredot@@/.style={ /tikz/shape=rectangle, }, every squaredot/.style={/tikzfeynhand/every squaredot@@/.append style={#1}}, squaredot/.style={ /tikzfeynhand/every dot@@, /tikzfeynhand/every squaredot@@, }, every ringdot@@/.style={ /tikz/fill=none, }, every ringdot/.style={/tikzfeynhand/every ringdot@@/.append style={#1}}, ringdot/.style={ /tikzfeynhand/every dot@@, /tikzfeynhand/every ringdot@@, }, every crossdot@@/.style={ /tikz/fill=none, /tikz/shape=crossed circle, /tikz/minimum size=2\feynhanddotsize, }, every crossdot/.style={/tikzfeynhand/every crossdot@@/.append style={#1}}, crossdot/.style={ /tikzfeynhand/every dot@@, /tikzfeynhand/every crossdot@@, }, %% BLOBS ------------------------------------------------- every blob@@/.style={ /tikz/shape=circle, /tikz/draw, /tikz/fill, /tikz/outer sep={0.5*\the\feynhandlinesize}, /tikz/inner sep=0pt, /tikz/minimum size=\feynhandblobsize, /tikz/line width = \feynhandlinesize, }, every blob/.style={/tikzfeynhand/every blob@@/.append style={#1}}, blob/.style={ /tikzfeynhand/every blob@@, /tikz/fill=black, }, every ringblob@@/.style={ }, every ringblob/.style={/tikzfeynhand/every ringblob@@/.append style={#1}}, ringblob/.style={ /tikzfeynhand/every blob@@, /tikzfeynhand/every ringblob@@, /tikz/fill=white, }, every NWblob@@/.style={ }, every NWblob/.style={/tikzfeynhand/every NWblob@@/.append style={#1}}, NWblob/.style={ /tikzfeynhand/every blob@@, /tikzfeynhand/every NWblob@@, /tikz/fill=none, /tikz/pattern=north west lines, }, every NEblob@@/.style={ }, every NEblob/.style={/tikzfeynhand/every NEblob@@/.append style={#1}}, NEblob/.style={ /tikzfeynhand/every blob@@, /tikzfeynhand/every NEblob@@, /tikz/fill=none, /tikz/pattern=north east lines, }, every grayblob@@/.style={ }, every grayblob/.style={/tikzfeynhand/every grayblob@@/.append style={#1}}, grayblob/.style={ /tikzfeynhand/every blob@@, /tikzfeynhand/every grayblob@@, /tikz/fill=gray!50!white, }, %% PARTICLES every particle@@/.style={ /tikz/shape=rectangle, /tikz/draw=none, /tikz/fill=none, /tikz/inner sep=0.3333em, /tikz/outer sep={0.5*\the\feynhandlinesize}, }, every particle/.style={/tikzfeynhand/every particle@@/.append style={#1}}, particle/.style args={#1}{ /tikzfeynhand/every particle@@, }, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Edge styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Arrow Style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% arrow size/.store in=\tikzfeynhand@arrow@size, arrow size=\feynhandarrowsize, with arrow/.style={ /tikz/decoration={ markings, mark=at position #1 with { \node[ transform shape, %xshift=0.5mm, xshift=-0.166666\feynhandarrowsize, fill, inner sep=0mm, minimum width = \tikzfeynhand@arrow@size, draw=none, isosceles triangle ] { }; }, }, /tikz/postaction={ /tikz/decorate=true, }, }, with reversed arrow/.style={ /tikz/decoration={ markings, mark=at position #1 with { \node[ transform shape, %xshift=0.5mm, xshift=0.166666\feynhandarrowsize, rotate=180, fill, inner sep=0mm, minimum width = \tikzfeynhand@arrow@size, draw=none, isosceles triangle ] { }; }, }, /tikz/postaction={ /tikz/decorate=true, }, }, %% Base Edge Styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% every edge@@/.style={}, every edge/.style={/tikzfeynhand/every edge@@/.append style={#1}}, %% Specific Styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% every plain@@/.style={ /tikz/draw=none, /tikz/line width = \feynhandlinesize, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, }, }, every plain/.style={/tikzfeynhand/every plain@@/.append style={#1}}, plain/.style={ /tikzfeynhand/every plain@@, }, every top@@/.style={ /tikz/preaction={draw=\feynhandtopsepcolor,line width=\feynhandtopsep} }, every top/.style={/tikzfeynhand/every top@@/.append style={#1}}, top/.style={ /tikzfeynhand/every top@@, }, every boson@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/line width = \feynhandlinesize, /tikz/decoration={ complete sines, amplitude=3\feynhandlinesize, segment length=7.5\feynhandlinesize, }, /tikz/decorate=true, }, }, every boson/.style={/tikzfeynhand/every boson@@/.append style={#1}}, boson/.style={ /tikzfeynhand/every boson@@, }, every charged boson@@/.style={ /tikzfeynhand/with arrow=0.5, }, every charged boson/.style={/tikzfeynhand/every charged boson@@/.append style={#1}}, charged boson/.style={ /tikzfeynhand/boson, /tikzfeynhand/every charged boson@@, }, every anti charged boson@@/.style={ /tikzfeynhand/with reversed arrow=0.5, }, every anti charged boson/.style={/tikzfeynhand/every anti charged boson@@/.append style={#1}}, anti charged boson/.style={ /tikzfeynhand/boson, /tikzfeynhand/every anti charged boson@@, }, every photon@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/line width = \feynhandlinesize, /tikz/decoration={ complete sines, amplitude=3\feynhandlinesize, segment length=7.5\feynhandlinesize, }, /tikz/decorate=true, }, }, every photon/.style={/tikzfeynhand/every photon@@/.append style={#1}}, photon/.style={ /tikzfeynhand/every photon@@, }, every scalar@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/dashed, /tikz/line width = \feynhandlinesize, }, }, every scalar/.style={/tikzfeynhand/every scalar@@/.append style={#1}}, scalar/.style={ /tikzfeynhand/every scalar@@, }, every charged scalar@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikzfeynhand/with arrow=0.5, }, }, every charged scalar/.style={/tikzfeynhand/every charged scalar@@/.append style={#1}}, charged scalar/.style={ /tikzfeynhand/scalar, /tikzfeynhand/every charged scalar@@, }, every anti charged scalar@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikzfeynhand/with reversed arrow=0.5, }, }, every anti charged scalar/.style={/tikzfeynhand/every anti charged scalar@@/.append style={#1}}, anti charged scalar/.style={ /tikzfeynhand/scalar, /tikzfeynhand/every anti charged scalar@@, }, every ghost@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/dotted, /tikz/line width = 2\feynhandlinesize, }, }, every ghost/.style={/tikzfeynhand/every ghost@@/.append style={#1}}, ghost/.style={ /tikzfeynhand/every ghost@@, }, every charged ghost@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikzfeynhand/with arrow=0.5, }, }, every charged ghost/.style={/tikzfeynhand/every charged ghost@@/.append style={#1}}, charged ghost/.style={ /tikzfeynhand/ghost, /tikzfeynhand/every charged ghost@@, }, every anti charged ghost@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikzfeynhand/with reversed arrow=0.5, }, }, every anti charged ghost/.style={/tikzfeynhand/every anti charged ghost@@/.append style={#1}}, anti charged ghost/.style={ /tikzfeynhand/ghost, /tikzfeynhand/every anti charged scalar@@, }, every fermion@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/line width = \feynhandlinesize, /tikzfeynhand/with arrow=0.5, }, }, every fermion/.style={/tikzfeynhand/every fermion@@/.append style={#1}}, fermion/.style={ /tikzfeynhand/every fermion@@, }, every anti fermion@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/line width = \feynhandlinesize, /tikzfeynhand/with reversed arrow=0.5, }, }, every anti fermion/.style={/tikzfeynhand/every anti fermion@@/.append style={#1}}, anti fermion/.style={ /tikzfeynhand/every anti fermion@@, }, every majorana@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikzfeynhand/with arrow=0.33, /tikzfeynhand/with reversed arrow=0.73, /tikz/line width = \feynhandlinesize, }, }, every majorana/.style={/tikzfeynhand/every majorana@@/.append style={#1}}, majorana/.style={ /tikzfeynhand/every majorana@@, }, every anti majorana@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikzfeynhand/with reversed arrow=0.33, /tikzfeynhand/with arrow=0.73, /tikz/line width = \feynhandlinesize, }, }, every anti majorana/.style={/tikzfeynhand/every anti majorana@@/.append style={#1}}, anti majorana/.style={ /tikzfeynhand/every anti majorana@@, }, every gluon@@/.style={ /tikz/draw=none, /tikz/decoration={name=none}, /tikz/postaction={ /tikz/draw, /tikz/line width = \feynhandlinesize, /tikz/decoration={ coil, aspect=1.2, mirror, amplitude=3\feynhandlinesize, segment length=8\feynhandlinesize, }, /tikz/decorate=true, }, }, every gluon/.style={/tikzfeynhand/every gluon@@/.append style={#1}}, gluon/.style={ /tikzfeynhand/every gluon@@, }, % short versions of style names pho/.style={ /tikzfeynhand/photon, }, bos/.style={ /tikzfeynhand/boson, }, antbos/.style={ /tikzfeynhand/anti charged boson, }, chabos/.style={ /tikzfeynhand/charged boson, }, sca/.style={ /tikzfeynhand/scalar, }, chasca/.style={ /tikzfeynhand/charged scalar, }, antsca/.style={ /tikzfeynhand/anti charged scalar, }, fer/.style={ /tikzfeynhand/fermion, }, antfer/.style={ /tikzfeynhand/anti fermion, }, gho/.style={ /tikzfeynhand/ghost, }, chagho/.style={ /tikzfeynhand/charged ghost, }, antgho/.style={ /tikzfeynhand/anti charged ghost, }, glu/.style={ /tikzfeynhand/gluon, }, maj/.style={ /tikzfeynhand/majorana, }, antmaj/.style={ /tikzfeynhand/anti majorana, }, %% Insertions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% insertion/.search also={/tikzfeynhand,/tikz}, %% Parameters insertion/size/.store in=\tikzfeynhand@insertion@size, insertion/size=5\feynhandlinesize, insertion/style/.store in=\tikzfeynhand@insertion@style, insertion/style={}, %% Styles insertion@@/.style args={[#1]#2}{ /tikz/line width = \feynhandlinesize, /tikz/decoration={ markings, mark=at position #2 with { \tikzfeynhandset{insertion/.cd,#1} \draw [\tikzfeynhand@insertion@style] (-\tikzfeynhand@insertion@size, -\tikzfeynhand@insertion@size) -- (\tikzfeynhand@insertion@size, \tikzfeynhand@insertion@size); \draw [\tikzfeynhand@insertion@style] (-\tikzfeynhand@insertion@size, \tikzfeynhand@insertion@size) -- (\tikzfeynhand@insertion@size, -\tikzfeynhand@insertion@size); }, }, /tikz/postaction={ /tikz/decorate=true, }, }, insertion@@/.default={[]0.5}, %% %% Slashes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% slash/.search also={/tikzfeynhand,/tikz}, %% Parameters slash/size/.store in=\tikzfeynhand@slash@size, slash/size=5\feynhandlinesize, slash/style/.store in=\tikzfeynhand@slash@style, slash/style={}, %% Styles slash@@/.style args={[#1]#2}{ /tikz/line width = \feynhandlinesize, /tikz/decoration={ markings, mark=at position #2 with { \tikzfeynhandset{slash/.cd,#1} \draw [\tikzfeynhand@slash@style] (-\tikzfeynhand@slash@size, -2*\tikzfeynhand@slash@size) -- (\tikzfeynhand@slash@size, 2*\tikzfeynhand@slash@size); }, }, /tikz/postaction={ /tikz/decorate=true, }, }, slash@@/.default={[]0.5}, %% %% Backslashes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% backslash/.search also={/tikzfeynhand,/tikz}, %% Parameters backslash/size/.store in=\tikzfeynhand@backslash@size, backslash/size=5\feynhandlinesize, backslash/style/.store in=\tikzfeynhand@backslash@style, backslash/style={}, %% Styles backslash@@/.style args={[#1]#2}{ /tikz/line width = \feynhandlinesize, /tikz/decoration={ markings, mark=at position #2 with { \tikzfeynhandset{backslash/.cd,#1} \draw [\tikzfeynhand@backslash@style] (-\tikzfeynhand@backslash@size, 2*\tikzfeynhand@backslash@size) -- (\tikzfeynhand@backslash@size, -2*\tikzfeynhand@backslash@size); }, }, /tikz/postaction={ /tikz/decorate=true, }, }, backslash@@/.default={[]0.5}, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Momentum arrows %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% momentum/.search also={/tikzfeynhand,/tikz}, %% Parameters momentum/label distance/.store in=\tikzfeynhand@momentum@label@distance, momentum/label distance=0pt, momentum/arrow distance/.store in=\tikzfeynhand@momentum@arrow@distance, momentum/arrow distance={\the\feynhandarrowsize}, momentum/arrow shorten/.store in=\tikzfeynhand@momentum@arrow@shorten, momentum/arrow shorten=0.2, momentum/label style/.store in=\tikzfeynhand@momentum@label@style, momentum/label style={}, momentum/arrow style/.store in=\tikzfeynhand@momentum@arrow@style, momentum/arrow style={}, momentum/arrow thickness/.store in=\tikzfeynhand@momentum@arrow@thickness, momentum/arrow thickness={0.64*\the\feynhandlinesize}, momentum/arrow size/.store in=\tikzfeynhand@momentum@arrow@size, momentum/arrow size={0.8*\the\feynhandarrowsize}, %% Styles momentum@@/.style args={[#1]#2}{ /tikz/preaction={ /tikz/decoration={ show path construction, moveto code={}, lineto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@1)$) node [pos=0.5, auto, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, curveto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentfirst) .. controls (\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb) .. (\tikzinputsegmentlast) { \foreach \i in {1, ..., 50} { coordinate [pos=\tikzfeynhand@momentum@arrow@shorten + (1-2 * \tikzfeynhand@momentum@arrow@shorten)*\i/50] (tf@m@\i) } }; \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@2)$) foreach \i [count=\j from 3] in {2, ..., 24} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@\j)$) } -- ($(tf@m@25)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@26)$) node [pos=0.5, auto, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@arrow@style] {#2} foreach \i [count=\j from 27] in {26, ..., 49} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@\j)$) } -- ($(tf@m@50)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@49)$); }, closepath code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@1)$) node [pos=0.5, auto, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, }, /tikz/decorate=true, }, }, momentum'@@/.style args={[#1]#2}{ /tikz/preaction={ /tikz/decoration={ show path construction, moveto code={}, lineto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@1)$) node [pos=0.5, auto, swap, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, curveto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentfirst) .. controls (\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb) .. (\tikzinputsegmentlast) { \foreach \i in {1, ..., 50} { coordinate [pos=\tikzfeynhand@momentum@arrow@shorten + (1-2 * \tikzfeynhand@momentum@arrow@shorten)*\i/50] (tf@m@\i) } }; \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@2)$) foreach \i [count=\j from 3] in {2, ..., 24} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@\j)$) } -- ($(tf@m@25)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@26)$) node [pos=0.5, auto, swap, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@arrow@style] {#2} foreach \i [count=\j from 27] in {26, ..., 49} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@\j)$) } -- ($(tf@m@50)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@49)$); }, closepath code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@1)$) node [pos=0.5, auto, swap, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, }, /tikz/decorate=true, }, }, reversed momentum@@/.style args={[#1]#2}{ /tikz/preaction={ /tikz/decoration={ show path construction, moveto code={}, lineto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentlast) -- (\tikzinputsegmentfirst) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@1)$) node [pos=0.5, auto, swap, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, curveto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentlast) .. controls (\tikzinputsegmentsupportb) and (\tikzinputsegmentsupporta) .. (\tikzinputsegmentfirst) { \foreach \i in {1, ..., 50} { coordinate [pos=\tikzfeynhand@momentum@arrow@shorten + (1-2 * \tikzfeynhand@momentum@arrow@shorten)*\i/50] (tf@m@\i) } }; \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@2)$) foreach \i [count=\j from 3] in {2, ..., 24} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@\j)$) } -- ($(tf@m@25)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@26)$) node [pos=0.5, auto, swap, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@arrow@style] {#2} foreach \i [count=\j from 27] in {26, ..., 49} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@\j)$) } -- ($(tf@m@50)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@49)$); }, closepath code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentlast) -- (\tikzinputsegmentfirst) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@1)$) node [pos=0.5, auto, swap, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, }, /tikz/decorate=true, }, }, reversed momentum'@@/.style args={[#1]#2}{ /tikz/preaction={ /tikz/decoration={ show path construction, moveto code={}, lineto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentlast) -- (\tikzinputsegmentfirst) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@1)$) node [pos=0.5, auto, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, curveto code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentlast) .. controls (\tikzinputsegmentsupportb) and (\tikzinputsegmentsupporta) .. (\tikzinputsegmentfirst) { \foreach \i in {1, ..., 50} { coordinate [pos=\tikzfeynhand@momentum@arrow@shorten + (1-2 * \tikzfeynhand@momentum@arrow@shorten)*\i/50] (tf@m@\i) } }; \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@2)$) foreach \i [count=\j from 3] in {2, ..., 24} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@\j)$) } -- ($(tf@m@25)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@26)$) node [pos=0.5, auto, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@arrow@style] {#2} foreach \i [count=\j from 27] in {26, ..., 49} { -- ($(tf@m@\i)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@\j)$) } -- ($(tf@m@50)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@49)$); }, closepath code={ \tikzfeynhandset{momentum/.cd,#1} \path (\tikzinputsegmentlast) -- (\tikzinputsegmentfirst) coordinate [pos=\tikzfeynhand@momentum@arrow@shorten] (tf@m@1) coordinate [pos=1 - \tikzfeynhand@momentum@arrow@shorten] (tf@m@2); \draw [-{Stealth[length=\tikzfeynhand@momentum@arrow@size]}, line width=\tikzfeynhand@momentum@arrow@thickness, \tikzfeynhand@momentum@arrow@style] ($(tf@m@1)!\tikzfeynhand@momentum@arrow@distance!90:(tf@m@2)$) -- ($(tf@m@2)!\tikzfeynhand@momentum@arrow@distance!-90:(tf@m@1)$) node [pos=0.5, auto, outer sep=\tikzfeynhand@momentum@label@distance, \tikzfeynhand@momentum@label@style] {#2}; }, }, /tikz/decorate=true, }, }, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Modifiers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% half left/.style={ /tikz/bend left=90, }, half right/.style={ /tikz/bend right=90, }, quarter left/.style={ /tikz/bend left=45, }, quarter right/.style={ /tikz/bend right=45, }, } \endinput