тикз-фейнман: асимметрия между линиями частиц и античастиц

тикз-фейнман: асимметрия между линиями частиц и античастиц

Следующий код:

\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вместо этого. С этим изменением код выше сгенерирует такой вывод:

вывод кода

Связанный контент