
Ich möchte diese Diagramme erstellen mitTikz-Feynman
.
Was ich bisher habe ist
\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:
- Wie kann ich die Impulspfeile außerhalb der Schleifen verschieben?
- Wie kann ich die ein- und ausgehenden Leitungen verkürzen?
- Wie kann ich die Mitte beider Diagramme exakt vertikal auf das Pluszeichen ausrichten?
- Wie kann ich den durchgestrichenen Punkt im ersten Diagramm hinzufügen?
Aktualisieren
Mit der Hilfe vonJP EllisIch konnte
\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 boson
und ihn edge label
ans 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 momentum
Schlüssel ist in zwei Formen erhältlich: momentum
und momentum'
. Diese unterscheiden sich nur hinsichtlich der Seite, auf der die Pfeile platziert sind. Die Verwendung von momentum
lö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 baseline
Schlü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 \feynmandiagram
Befehls möglich. Die folgende Lösung verwendet den \diagram
Befehl 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.
nudge
Hier 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}
Um auf die aktualisierte Antwort einzugehen: Der charged boson
Stil ist intern eine Kombination aus boson
und with arrow=0.99
. Der with arrow
Stil 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=1
funktioniert es nicht wirklich, also 0.99
ist es gut genug.
Als Ergebnis können Sie einfach durch ersetzen, charged boson
um boson, with arrow=1
das 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}
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}
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}
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}