Schleifen und Einfügungen in Tikz-Feynman

Schleifen und Einfügungen in Tikz-Feynman

Ich möchte diese Diagramme erstellen mitTikz-Feynman.

Bildbeschreibung hier eingeben

Was ich bisher habe ist

Bildbeschreibung hier eingeben

\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}

$\feynmandiagram [horizontal=a to b, layered layout, baseline=(i1.base)] {
  i1 -- a [dot]
  -- [photon,half left,momentum'=\(q\)] b [dot]
  -- [photon,half left,momentum'=\(q\)] a,
  b -- f1
};
+
\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
  {i1,i2} -- a [dot]
  -- [photon,half left,momentum'=\(q\)] b [crossed dot]
  -- [photon,half left,momentum'=\(q\)] a,
};$

\end{document}

Es gibt ein paar offene Fragen:

  1. Wie kann ich die Impulspfeile außerhalb der Schleifen verschieben?
  2. Wie kann ich die ein- und ausgehenden Leitungen verkürzen?
  3. Wie kann ich die Mitte beider Diagramme exakt vertikal auf das Pluszeichen ausrichten?
  4. Wie kann ich den durchgestrichenen Punkt im ersten Diagramm hinzufügen?

Aktualisieren

Mit der Hilfe vonJP EllisIch konnte

Bildbeschreibung hier eingeben

\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
$\feynmandiagram [horizontal=a to c,inline=(a.base)] {
    a [dot] -- [charged boson,quarter left,edge label=\(q\)] b
    -- [photon,quarter left] c [dot]
    -- [charged boson,quarter left,edge label=\(q\)] d [crossed dot]
    -- [charged boson,quarter left,edge label=\(q\)] a,
    f1 -- c,
    i1 -- a,
};
\quad\raisebox{-0.5ex}{+}\quad
\feynmandiagram [horizontal=a to b, layered layout, inline=(a.base)] {
    {i1,i2} -- a [dot]
    -- [charged boson,half left,edge label=\(q\)] b [crossed dot]
    -- [charged boson,half left,edge label=\(q\)] a [desired at={(0, 0)}],
};$
\end{document}

Eine Frage bleibt: Gibt es eine Möglichkeit, den Pfeil weiterzubewegen charged bosonund ihn edge labelans Ende einer Linie zu bringen? Meine Absicht ist, ihn oben im oberen Bogen im ersten Diagramm zu haben (und nicht in der Mitte des ersten Viertels).

Antwort1

Die Diagramme sind schon jetzt großartig!

Lassen Sie mich also auf die Fragen eingehen:

Wie kann ich die Impulspfeile außerhalb der Schleifen verschieben?

Der momentumSchlüssel ist in zwei Formen erhältlich: momentumund momentum'. Diese unterscheiden sich nur hinsichtlich der Seite, auf der die Pfeile platziert sind. Die Verwendung von momentumlöst das Problem in Ihrem Fall also.

Wie kann ich die ein- und ausgehenden Leitungen verkürzen?

Ich habe vor Kurzem eine andere Frage auf dieser Site beantwortet, in der es um die Verwendung von ging nudge. Wenn Sie speziell nur die äußeren Linien anpassen möchten, können Sie dies verwenden. Alternativ möchten Sie vielleicht das gesamte Diagramm verkleinern (da es so aussieht, als ob Sie sie in einer Gleichung haben würden). Dies lässt sich mit erreichen small.

Wie kann ich die Mitte beider Diagramme exakt vertikal auf das Pluszeichen ausrichten?

Sie haben Recht, wenn Sie verwenden baseline; wie Sie jedoch bemerkt haben, befindet sich das „+“-Symbol nicht auf der Grundlinie, sondern etwas darüber. Die „magische Distanz“ von der Grundlinie zum horizontalen Balken im „+“ beträgt -\the\dimexpr\fontdimen22\textfont2\relax; ich weiß allerdings nicht mehr, wo ich das ursprünglich auf dieser Site herhabe.

Der baselineSchlüssel kann dann entweder einen Knoten annehmen (wie Sie es getan haben) oder eine tatsächliche Offset-Distanz. Wenn eine Distanz angegeben wird, ist diese relativ zur (0, 0)Koordinate, die, wenn keine anderen Koordinaten angegeben sind, die Position des ersten Scheitelpunkts ist. Für das erste Diagramm ist das alles gut, aber im zweiten Fall teile ich dem Algorithmus mit, dass er bei Verwendung des Schlüssels (a)sein soll .(0, 0)desired at

Wie kann ich den durchgestrichenen Punkt im ersten Diagramm hinzufügen?

Sie können zusätzliche Eckpunkte an festen Positionen hinzufügen, dies ist jedoch leider nicht innerhalb des \feynmandiagramBefehls möglich. Die folgende Lösung verwendet den \diagramBefehl innerhalb einer {feynman}Umgebung und platziert dann den durchgestrichenen Punkt manuell. Der Mittelpunkt wird mit berechnet (a)!0.5!(b)und dann einfach nach unten verschoben, bis es gut aussieht.


nudgeHier ist die Lösung, die alles implementiert. Beachten Sie, dass ich sowohl als auch verwendet habe small. Dies bedeutet, dass im zweiten Diagramm alles etwas kleiner ist (daher sehen die ausgefüllten und gekreuzten Punkte anders aus). Idealerweise würde ich nur eine der beiden Methoden verwenden, aber hier werden beide dargestellt.

\documentclass{article}

\usepackage[compat=1.1.0]{tikz-feynman}

\def\plusheight{-\the\dimexpr\fontdimen22\textfont2\relax}

\begin{document}
\begin{equation}
  \begin{tikzpicture}[baseline=\plusheight]
    \begin{feynman}
      \diagram [horizontal=a to b, layered layout] {
        i1 [nudge right=0.7cm] -- a [dot]
        -- [photon, half left, momentum=\(q\)] b [dot]
        -- [photon, half left, momentum=\(q\)] a ,
        b -- f1 [nudge left=0.7cm]
      };
      \vertex [crossed dot, fill=white] (i) at ($(a)!0.5!(b) - (0, 0.75)$) {};
    \end{feynman}
  \end{tikzpicture}
  +
  \feynmandiagram [horizontal=a to b, layered layout, small, baseline=\plusheight] {
    {i1,i2} -- a [dot]
    -- [photon, half left, momentum=\(q\)] b [crossed dot]
    -- [photon, half left, momentum=\(q\)] a [desired at={(0, 0)}],
  };
\end{equation}
\end{document}

Ausgabe


Um auf die aktualisierte Antwort einzugehen: Der charged bosonStil ist intern eine Kombination aus bosonund with arrow=0.99. Der with arrowStil ist zu diesem Zeitpunkt nicht dokumentiert, da ich nicht damit gerechnet habe, dass die Leute ihn verwenden, aber ich sollte ihn wahrscheinlich der Dokumentation hinzufügen. Aus irgendeinem Grund with arrow=1funktioniert es nicht wirklich, also 0.99ist es gut genug.

Als Ergebnis können Sie einfach durch ersetzen, charged bosonum boson, with arrow=1das gewünschte Ergebnis zu erhalten:

\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
\feynmandiagram [horizontal=a to c, small] {
    a [dot] -- [boson, with arrow=0.99, quarter left, edge label=\(q\)] b
    -- [photon, quarter left] c [dot]
    -- [charged boson, quarter left, edge label=\(q\)] d [crossed dot]
    -- [charged boson, quarter left, edge label=\(q\)] a,
    f1 -- c,
    i1 -- a,
};
\end{document}

Ausgabe

Antwort2

Für Ihr zweites Diagramm:

% !TEX TS-program = lualatex 
\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}

$\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
  {i1,i2} -- a [dot]
  -- [charged boson,half left,edge label=\(q\)] b [crossed dot]
  -- [charged boson,half left,edge label=\(q\)] a,
};$

\end{document}

Bildbeschreibung hier eingeben


Oder mit benutzerdefinierten Pfeilspitzen:

% !TEX TS-program = lualatex 
\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\tikzfeynmanset{ with arrow/.style = {
   decoration={
     markings,
     mark=at position 0.5
          with {\arrow[xshift=1mm]{Stealth[width=2mm,length=2mm]}}
     },
   postaction=decorate}
}

\begin{document}

$\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
  {i1,i2} -- a [dot]
  -- [charged boson,half left,edge label=\(q\)] b [crossed dot]
  -- [charged boson,half left,edge label=\(q\)] a,
};$

\end{document}

Bildbeschreibung hier eingeben

Dasselbe gilt für das erste Diagramm:

% !TEX TS-program = lualatex 
\RequirePackage{luatex85}
\documentclass{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\tikzfeynmanset{ with arrow/.style = {
   decoration={
     markings,
     mark=at position 0.5
          with {\arrow[xshift=1mm]{Stealth[width=1.8mm,length=1.8mm]}}
     },
   postaction=decorate}
}


\begin{document}
$\feynmandiagram [horizontal'=a to c,inline=(a.base)] {
    a [dot] -- [charged boson,half left,edge label=\(q\)] c [dot]
    -- [charged boson,quarter left,edge label=\(q\)] d [crossed dot, yshift=0.4cm]
    -- [charged boson,quarter left,edge label=\(q\)] a,
    f1[yshift=-0.465cm] -- c,
    i1[yshift=-0.465cm] -- a,
};
$
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen