
Следующий код:
\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}
дает следующий вывод
Стрелка, соответствующая частице, движущейся назад во времени, асимметрична стрелке, соответствующей античастице, движущейся вперед во времени, хотя это та же самая физическая ситуация.
Линия античастицы также асимметрична относительно самой себя.
Комментарии?
решение1
Короче говоря: возможная ошибка знака в пакете, см. ниже для обсуждения. Вот возможный обходной путь:
\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}
Я ничего не знаю о физике, и я не совсем уверен, какие комментарии вы хотели получить. Если вы считаете, что пакет делает что-то неправильно, вам следует создать проблему наhttps://github.com/JP-Ellis/tikz-feynman/issues, этот сайт — неподходящее место для сообщений об ошибках. (Ред.:https://github.com/JP-Ellis/tikz-feynman/issues/48)
Если вам интересно, почему это происходит, немного покопавшись в коде пакета, вы поймете. Стиль fermion
выглядит так, будто он в основном добавляет стиль with arrow=0.5
, и anti fermion
делает with reversed arrow=0.5
. Эти два стиля показаны в примере кода ниже, который генерирует вывод, похожий на ваш код:
\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}
Одна вещь, которая немного выделяется, это то, чтообаstyles do xshift=-0.5mm
, что означает, что в обоих случаях стрелка смещена на 0,5 мм к началу пути. В этом примере это означает, что стрелка на верхней линии смещена вправо, а на нижней линии — влево, что приводит к асимметрии. Было бы разумнее, если бы style with reversed arrow
сделал это xshift=0.5mm
вместо этого. С этим изменением код выше сгенерирует такой вывод: