tikz-feynman: asymmetry between particle and antiparticle lines

The following code:

\RequirePackage{luatex85}
\documentclass{article}
\thispagestyle{empty}
\usepackage{tikz}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (it);
\vertex [right=1cm of it] (ot);
\vertex [below=0.5cm of it](ib);
\vertex [below=0.5cm of ot](ob);
\diagram*
{
(ot) -- [fermion] (it),
(ib) -- [anti fermion] (ob),
};
\end{feynman}
\end{tikzpicture}
\end{document}


gives the following output

The arrow corresponding to a particle travelling backward in time is asymmetric to the arrow corresponding to an antiparticle travelling forward in time, although it is the same physical situation.

The antiparticle line is also asymmetric relative to itself.

Long story short: possible sign error in the package, see below for discussion. Here is a possible workaround:

\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\makeatletter
\tikzset{
/tikzfeynman/with reversed arrow/.style={
/tikz/decoration={
markings,
mark=at position #1 with {
\node[
transform shape,
xshift=0.5mm,
rotate=180,
fill,
inner sep=\tikzfeynman@arrow@size,
draw=none,
isosceles triangle
] { };
},
},
/tikz/postaction={
/tikz/decorate=true,
},
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (it);
\vertex [right=1cm of it] (ot);
\vertex [below=0.5cm of it](ib);
\vertex [below=0.5cm of ot](ob);
\diagram*
{
(ot) -- [fermion] (it),
(ib) -- [anti fermion] (ob),
};
\end{feynman}
\end{tikzpicture}
\end{document}


I don't know anything about the physics, and I'm not really sure what kind of comments you were after either. If you think the package does the wrong thing here, you should make an issue at https://github.com/JP-Ellis/tikz-feynman/issues, this site is the wrong place for bug reports. (Edit: https://github.com/JP-Ellis/tikz-feynman/issues/48)

If you're wondering why this happens, a little rummaging in the package code will be enlightening. The fermion style looks like it basically adds the style with arrow=0.5, and anti fermion does with reversed arrow=0.5. Those two styles are shown in the code example below, which generates output similar to your code:

\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{
decorations.markings,
shapes.geometric
}
\begin{document}
\begin{tikzpicture}[
% the following is from the file tikzfeyman.keys.code.tex
arrow size/.store in=\tikzfeynman@arrow@size,
arrow size=1.5pt,
with arrow/.style={
/tikz/decoration={
markings,
mark=at position #1 with {
\node[
transform shape,
xshift=-0.5mm,
fill,
inner sep=\tikzfeynman@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,
rotate=180,
fill,
inner sep=\tikzfeynman@arrow@size,
draw=none,
isosceles triangle
] { };
},
},
/tikz/postaction={
/tikz/decorate=true,
},
},
]
\coordinate (a1) at (0,0);
\coordinate (b1) at (1,0);
\coordinate (a2) at (0,-.3);
\coordinate (b2) at (1,-.3);

\draw [with arrow=0.5] (b1) -- (a1);
\draw [with reversed arrow=0.5] (a2) -- (b2);
\end{tikzpicture}
\end{document}


One thing that stands out a bit is that both styles do xshift=-0.5mm, meaning that in both cases the arrow is shifted 0.5mm towards the start of the path. In this example, this means that the arrow on the top line is shifted to the right, and that on the bottom line to the left, causing the asymmetry. It might make more sense if the with reversed arrow style did xshift=0.5mm instead. With that change, the code above will generate this output: