tikz-feynman: asimetría entre líneas de partículas y antipartículas

tikz-feynman: asimetría entre líneas de partículas y antipartículas

El siguiente código:

\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}

da el siguiente resultado

ingrese la descripción de la imagen aquí

La flecha correspondiente a una partícula que viaja hacia atrás en el tiempo es asimétrica a la flecha correspondiente a una antipartícula que viaja hacia adelante en el tiempo, aunque se trata de la misma situación física.

La línea de antipartículas también es asimétrica respecto de sí misma.

¿Comentarios?

Respuesta1

En pocas palabras: posible error de signo en el paquete; consulte a continuación para obtener más información. Aquí hay una posible solución:

salida del primer código

\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}

No sé nada sobre física y tampoco estoy muy seguro de qué tipo de comentarios buscabas. Si cree que el paquete hace algo incorrecto aquí, debe plantear un problema enhttps://github.com/JP-Ellis/tikz-feynman/issues, este sitio es el lugar equivocado para informes de errores. (Editar:https://github.com/JP-Ellis/tikz-feynman/issues/48)

Si se pregunta por qué sucede esto, rebuscar un poco en el código del paquete le resultará esclarecedor. El fermionestilo parece que básicamente añade estilo with arrow=0.5, y anti fermionlo hace with reversed arrow=0.5. Esos dos estilos se muestran en el ejemplo de código siguiente, que genera un resultado similar a su código:

salida de código

\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}

Una cosa que destaca un poco es queamboslos estilos lo hacen xshift=-0.5mm, lo que significa que en ambos casos la flecha se desplaza 0,5 mm hacia el inicio del trazado. En este ejemplo, esto significa que la flecha de la línea superior se desplaza hacia la derecha y la de la línea inferior hacia la izquierda, lo que provoca la asimetría. Podría tener más sentido si el with reversed arrowestilo lo hiciera xshift=0.5mm. Con ese cambio, el código anterior generará este resultado:

salida de código

información relacionada