> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/nl/vakspecifiek/03-feynman-diagrams.md).

# Feynman-diagrammen

## Inleiding

Dit helpartikel verkent LaTeX-pakketten voor het tekenen van Feynman-diagrammen, een zeer compacte en intuïtieve manier om interacties tussen deeltjes weer te geven. We zullen de [`tikz-feynman` pakket](https://ctan.org/pkg/tikz-feynman?lang=en), dat TikZ gebruikt om diagrammen te tekenen, en [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) dat ("achter de schermen") MetaPost gebruikt.

## Het TikZ-Feynman-pakket

De [`tikz-feynman` pakket](https://ctan.org/pkg/tikz-feynman?lang=en) werd gepubliceerd in 2016 en gebruikt Ti*k*Z om Feynman-diagrammen te genereren. Ti*k*Z-Feynman bouwt voort op het Ti*k*Z-pakket en de bijbehorende grafiek-tekenalgoritmen om de plaatsing van veel knooppunten te automatiseren. Ti*k*Z-Feynman maakt nog steeds fijn afgestelde plaatsing van knooppunten mogelijk, zodat zelfs complexe diagrammen eenvoudig kunnen worden gegenereerd. De meest actuele informatie voor Ti*k*Z-Feynman staat altijd op de [projectpagina](http://www.jpellis.me/projects/tikz-feynman/) en in de [pakkettendocumentatie](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) op CTAN.

### Update (9 november 2022)

**BELANGRIJKE update na publicatie** (9 november 2022): Op het moment dat deze pagina werd bijgewerkt, was het **TikZ-Feynman-pakket nog steeds incompatibel met TeX Live-versies later dan TeX Live 2018**—wat de TeX Live-versie is die wordt gebruikt in het [Overleaf-project bij dit helpartikel.](https://www.overleaf.com/project/new/template/26607?id=114366276\&templateName=Examples+using+the+TikZ-Feynman+package\&latexEngine=lualatex\&texImage=texlive-full%3A2018.1\&mainFile=) Alle hieronder vermelde TikZ-Feynman-voorbeelden moeten worden gecompileerd in een Overleaf-project met de **TeX Live-versie** ingesteld op `2018 (legacy)`. Voor meer informatie, zie [dit op GitHub gemelde issue](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Het pakket laden

Na installatie van het pakket kan het Ti*k*Z-Feynman-pakket worden geladen met `\usepackage{tikz-feynman}` in de preambule. Het wordt aanbevolen dat je ook de versie van Ti*k*Z-Feynman opgeeft met de `compat` pakketoptie hebt opgegeven: `\usepackage[compat=1.0.0]{tikz-feynman}`. Dit zorgt ervoor dat nieuwe versies van Ti*k*Z-Feynman geen ongewenste wijzigingen veroorzaken zonder waarschuwing.

### Een eerste diagram

Feynman-diagrammen kunnen worden gedeclareerd met het `\feynmandiagram` commando. Het is analoog aan het `\tikz` commando uit Ti*k*Z en vereist een afsluitende puntkomma (`;`) om de omgeving af te sluiten. Bijvoorbeeld, een eenvoudig *s*-kanaaldiagram is:

```
\feynmandiagram [horizontal=a to b] {
  i1 -- [fermion] a -- [fermion] i2,
  a -- [photon] b,
  f1 -- [fermion] b -- [fermion] f2,
};
```

![S-channel.png](/files/aabdfc7c4a1cfc8311834e178a50c1b46b19a162)

Laten we dit voorbeeld regel voor regel doornemen:

**Regel 1**

\feynmandiagram introduceert het Feynman-diagram en laat toe dat optionele argumenten tussen de blokhaken \[] worden gegeven. In dit geval zorgt horizontal=a to b ervoor dat de uitvoer van het algoritme zo wordt georiënteerd dat de lijn door knooppunten a en b horizontaal is.

**Regel 2**

De linker fermionlijn wordt getekend door drie knooppunten (i1, a en i2) te declareren en ze met randen -- te verbinden. Net als het \feynmandiagram-commando hierboven, kunnen aan elke rand ook optionele argumenten tussen blokhaken \[] worden meegegeven. In dit geval willen we dat deze randen pijlen hebben om aan te geven dat het fermionlijnen zijn, dus voegen we de stijl fermion toe. Zoals je later zult zien, kunnen optionele argumenten op precies dezelfde manier ook aan de knooppunten worden gegeven.

**Regel 3**

Deze rand verbindt knooppunten a en b met een rand in de stijl photon. Aangezien er al een knooppunt met label a bestaat, zal het algoritme dit verbinden met een nieuw knooppunt met label b.

**Regel 4**

Deze regel is analoog aan regel 2 en introduceert twee nieuwe knooppunten, f1 en f2. Het hergebruikt het eerder gelabelde knooppunt b.

**Regel 5**

Rond de declaratie van het Feynman-diagram af. De afsluitende puntkomma (;) is belangrijk.

De naam die aan elk knooppunt in de grafiek wordt gegeven, doet er niet toe. Dus in dit voorbeeld, `i1`, `i2` duiden de begindeeltjes aan; `f1`, `f2` duiden de einddeeltjes aan; en `een`, `b` zijn de eindpunten van de propagator. Het enige belangrijke is dat wat we in regel 2 `een` in regel 2 hebben genoemd ook `een` in regel 3 zo heet, zodat het onderliggende algoritme ze als hetzelfde knooppunt behandelt.

De volgorde waarin knooppunten worden gedeclareerd, maakt niet uit, omdat het standaardalgoritme alles herschikt. Men kan er bijvoorbeeld de voorkeur aan geven om de fermionlijnen in één keer te tekenen, zoals in het volgende voorbeeld (let er ook op dat de manier waarop we de knooppunten hebben genoemd compleet anders is):

```
\feynmandiagram [horizontal=f2 to f3] {
  f1 -- [fermion] f2 -- [fermion] f3 -- [fermion] f4,
  f2 -- [photon] p1,
  f3 -- [photon] p2,
};
```

![Photon-scattering.png](/files/272b6168c2e925e03926a4ee4c1f669b07da70a7)

Als laatste opmerking: de berekening van waar knooppunten moeten worden geplaatst, gebeurt meestal via een algoritme dat in Lua is geschreven. Daardoor is LuaTeX vereist om van deze algoritmen gebruik te maken. Als LuaTeX niet wordt gebruikt, zal Ti*k*Z-Feynman terugvallen op een eenvoudiger algoritme en zal de gebruiker in plaats daarvan waarschuwen.

### Stijlen toevoegen

Tot nu toe hebben de voorbeelden alleen de `photon` en `fermion` stijlen gebruikt. Het Ti*k*Z-Feynman-pakket bevat nogal wat extra stijlen voor randen en knooppunten, die allemaal gedocumenteerd zijn in de [pakkettendocumentatie](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf). Bijvoorbeeld, het is mogelijk om impulspijlen toe te voegen met `momentum=<text>`, en in het geval van eindknooppunten kan het deeltje worden gelabeld met `particle=<text>`. Om te laten zien hoe ze worden gebruikt, nemen we het algemene *s*-kanaaldiagram van eerder en maken er een elektron-positronpaar van dat annichileert tot muonen:

```
\feynmandiagram [horizontal=a to b] {
  i1 [particle=\(e^{-}\)] -- [fermion] a -- [fermion] i2 [particle=\(e^{+}\)],
  a -- [photon, edge label=\(\gamma\), momentum'=\(k\)] b,
  f1 [particle=\(\mu^{+}\)] -- [fermion] b -- [fermion] f2 [particle=\(\mu^{-}\)],
};
```

![S-channel-labelled.png](/files/21db4562018c11673ef6f8b9600b1474a20bd239)

Naast de hieronder gedocumenteerde stijlsleutels kunnen ook stijlsleutels uit Ti*k*Z worden gebruikt:

```
\feynmandiagram [horizontal=a to b] {
  i1 [particle=\(e^{-}\)] -- [fermion, very thick] a -- [fermion, opacity=0.2] i2 [particle=\(e^{+}\)],
  a -- [red, photon, edge label=\(\gamma\), momentum'={[arrow style=red]\(k\)}] b,
  f1 [particle=\(\mu^{+}\)] -- [fermion, opacity=0.2] b -- [fermion, very thick] f2 [particle=\(\mu^{-}\)],
};
```

![S-channel-labelled-styled.png](/files/7b4c1b69b926053e6a2f9300b720bd59effbf06c)

Voor een lijst van alle verschillende stijlen die Ti*k*Z biedt, kijk eens in de [Ti*k*Z-handleiding](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf); die is uiterst grondig en biedt veel gebruiksvoorbeelden.

### Wanneer het algoritme niet voldoende is

Standaard wordt de `\feynmandiagram` en `\diagram` commando's gebruiken het `spring layout` algoritme om alle randen te plaatsen. Het `spring layout` algoritme probeert het diagram zo veel mogelijk uit te \`spreiden', wat — voor de meeste eenvoudigere diagrammen — een bevredigend resultaat geeft; in sommige gevallen levert dit echter niet het beste diagram op en in deze sectie bekijken we alternatieven. Er zijn drie belangrijke alternatieven:

**Onzichtbare randen toevoegen**

Hoewel nog steeds het standaardalgoritme wordt gebruikt, is het mogelijk om bepaalde knooppunten dichter bij elkaar te dwingen door extra randen toe te voegen en ze onzichtbaar te maken via draw=none. Het algoritme behandelt deze extra randen op dezelfde manier, maar ze worden aan het einde gewoonweg niet getekend;

**Gebruik een ander algoritme**

In sommige gevallen kunnen andere algoritmen beter geschikt zijn. Enkele van de andere grafische lay-outalgoritmen worden vermeld in de pakketdocumentatie, en een volledige lijst van alle algoritmen en hun parameters staat in de TikZ-handleiding;

**Handmatige plaatsing**

Als laatste redmiddel moeten bij zeer ingewikkelde of ongewone diagrammen alle knooppunten handmatig worden geplaatst.

#### Onzichtbare randen

Het onderliggende algoritme behandelt alle randen precies op dezelfde manier bij het berekenen waar alle knooppunten moeten komen, en het daadwerkelijke tekenen van het diagram (nadat de posities zijn berekend) gebeurt afzonderlijk. Daarom is het mogelijk om randen aan het algoritme toe te voegen, maar te voorkomen dat ze worden getekend door `draw=none` toe te voegen aan de randstijl.

Dit is vooral handig als je wilt zorgen dat de begin- of eindtoestanden dichter bij elkaar blijven dan anders het geval zou zijn, zoals geïllustreerd in het volgende voorbeeld (let op dat `opacity=0.2` wordt gebruikt in plaats van `draw=none` om precies aan te geven waar de rand zich bevindt).

```
% Geen onzichtbare rand om de twee fotonen samen te houden
\feynmandiagram [small, horizontal=a to t1] {
  a [particle=\(\pi^{0}\)] -- [scalar] t1 -- t2 -- t3 -- t1,
  t2 -- [photon] p1 [particle=\(\gamma\)],
  t3 -- [photon] p2 [particle=\(\gamma\)],
};
```

![Invisible-edge-before.png](/files/26a39f48e494338f3c70ae1bc73575c186e94ff3)

```
% Onzichtbare rand zorgt ervoor dat fotonen parallel lopen
\feynmandiagram [small, horizontal=a to t1] {
  a [particle=\(\pi^{0}\)] -- [scalar] t1 -- t2 -- t3 -- t1,
  t2 -- [photon] p1 [particle=\(\gamma\)],
  t3 -- [photon] p2 [particle=\(\gamma\)],
  p1 -- [opacity=0.2] p2,
};
```

![Invisible-edge-after.png](/files/d9f4324f759bd631dd45960ade8620b4aa925790)

#### Alternatieve algoritmen

De bibliotheek voor grafiektekenen van Ti*k*Z heeft verschillende algoritmen om de knooppunten te positioneren. Standaard, `\diagram` en `\feynmandiagram` gebruik het `spring layout` algoritme om de knooppunten te plaatsen. Het `spring layout` probeert alles zo veel mogelijk uit te spreiden, wat in de meeste gevallen een mooi diagram oplevert; er zijn echter bepaalde gevallen waarin dit niet werkt. Een goed voorbeeld waarbij het `spring layout` niet werkt, zijn vervalprocessen waarbij we het vervallende deeltje links hebben en alle dochterdeeltjes rechts.

```
% De standaard spring layout gebruiken
\feynmandiagram [horizontal=a to b] {
  a [particle=\(\mu^{-}\)] -- [fermion] b -- [fermion] f1 [particle=\(\nu_{\mu}\)],
  b -- [boson, edge label=\(W^{-}\)] c,
  f2 [particle=\(\overline \nu_{e}\)] -- [fermion] c -- [fermion] f3 [particle=\(e^{-}\)],
};
```

![Spring-layout.png](/files/d76d559163177ee92972f0a1d90d722626071621)

```
% De gelaagde lay-out gebruiken
\feynmandiagram [layered layout, horizontal=a to b] {
  a [particle=\(\mu^{-}\)] -- [fermion] b -- [fermion] f1 [particle=\(\nu_{\mu}\)],
  b -- [boson, edge label'=\(W^{-}\)] c,
  c -- [anti fermion] f2 [particle=\(\overline \nu_{e}\)],
  c -- [fermion] f3 [particle=\(e^{-}\)],
};
```

![Layered-layout.png](/files/03576901f816e9cc8e1643c50ff7a1063c035dbf)

Je zult misschien opmerken dat, naast het toevoegen van de `gelaagde lay-out` stijl aan `\feynmandiagram`, we ook de volgorde hebben veranderd waarin we de knooppunten specificeren. Dit komt doordat het `gelaagde lay-out` algoritme wel degelijk aandacht besteedt aan de volgorde waarin knooppunten worden gedeclareerd (in tegenstelling tot het standaard `spring layout`); daardoor, `c--f2, c--f3` een andere betekenis heeft dan `f2--c--f3`. In het eerste geval, `f2` en `f3` beide op de laag onder `c` zoals gewenst; terwijl in het laatste geval `f2` op de laag boven `c` (dus op dezelfde laag als waar het W-boson ontstaat).

#### Handmatige plaatsing

In ingewikkelder diagrammen is de kans groot dat geen van de algoritmen werkt, hoeveel onzichtbare randen er ook worden toegevoegd. In zulke gevallen moeten de knooppunten handmatig worden geplaatst. Ti*k*Z-Feynman maakt handmatige plaatsing van knooppunten mogelijk door gebruik te maken van het `\vertex` commando.

De `\vertex` commando, dat alleen beschikbaar is binnen de `feynman` omgeving (die zelf alleen beschikbaar is binnen een `tikzpicture`). De `feynman` omgeving laadt alle relevante stijlen uit Ti*k*Z-Feynman en declareert aanvullende Ti*k*Z-Feynman-specifieke commando's zoals `\vertex` en `\diagram`. Dit is geïnspireerd op PGFPlots en het gebruik van het `axis` omgeving te starten.

De `\vertex` commando is sterk analoog aan het `\node` commando uit Ti*k*Z, met de opmerkelijke uitzondering dat de inhoud van het knooppunt optioneel is; dat wil zeggen, je hoeft niet `{<text>}` aan het einde te hebben. In het geval dat `{}` is opgegeven, krijgt het knooppunt automatisch de `particle` stijl, en anders is het een gewoon knooppunt (van nul grootte).

Om aan te geven waar de knooppunten moeten komen, is het mogelijk om expliciete coördinaten op te geven, al is het waarschijnlijk het makkelijkst om de `positioning` bibliotheek uit Ti*k*Z te gebruiken, waarmee knooppunten relatief ten opzichte van bestaande knooppunten kunnen worden geplaatst. Door relatieve plaatsing te gebruiken, kun je eenvoudig één deel van de grafiek aanpassen en zal alles zich dienovereenkomstig aanpassen—het alternatief is om de coördinaten van elk getroffen knooppunt handmatig aan te passen.

Ten slotte, zodra alle knooppunten zijn gespecificeerd, wordt het `\diagram*` commando gebruikt om alle randen te specificeren. Dit werkt vrijwel op dezelfde manier als `\diagram` (en ook `\feynmandiagram`), behalve dat het een zeer eenvoudig algoritme gebruikt om nieuwe knooppunten te plaatsen en bestaande (benoemde) knooppunten kan opnemen. Om naar een bestaand knooppunt te verwijzen, moet het knooppunt tussen haakjes worden gegeven.

Dit hele proces van het specificeren van de knooppunten en vervolgens het tekenen van de randen ertussen wordt hieronder getoond voor het muonverval:

```
\begin{tikzpicture}
  \begin{feynman}
    \vertex (a) {\(\mu^{-}\)};
    \vertex [right=of a] (b);
    \vertex [above right=of b] (f1) {\(\nu_{\mu}\)};
    \vertex [below right=of b] (c);
    \vertex [above right=of c] (f2) {\(\overline \nu_{e}\)};
    \vertex [below right=of c] (f3) {\(e^{-}\)};

    \diagram* {
      (a) -- [fermion] (b) -- [fermion] (f1),
      (b) -- [boson, edge label'=\(W^{-}\)] (c),
      (c) -- [anti fermion] (f2),
      (c) -- [fermion] (f3),
    };
  \end{feynman}
\end{tikzpicture}
```

![Manual-positioning.png](/files/6d6251a614b449344b051d176697fce1aee83903)

## Andere pakketten voor het tekenen van Feynman-diagrammen

Er zijn verschillende alternatieven voor het TikZ-Feynman-pakket:

* [`feynmf`](https://ctan.org/pkg/feynmf): produceert bitmapafbeeldingen via [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (meegeleverd met `feynmf`) produceert vectorafbeeldingen via [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): afgeleid van `feynmp`

De `feynmp-auto` pakket is in feite een uitbreiding van het `feynmp` pakket, ontworpen om de conversie van MetaPosts PostScript-code naar PDF-gegevens te automatiseren voor gebruik in pdfTeX, LuaTeX en XeTeX. De volgende voorbeelden gebruiken allemaal `feynmp-auto`.

### Inleiding

De `feynmf`, `feynmp` en `feynmp-auto` pakketten laten je eenvoudig Feynman-diagrammen tekenen door de knooppunten, deeltjes en hun labels te specificeren en vervolgens automatisch de lay-out uit te voeren om je diagram te tekenen.

#### Een overzicht van het gebruik van de op feynmf gebaseerde pakketten

Om Feynman-diagrammen te maken, moet je:

1. een `fmfile` omgeving aanmaken die een of meer diagrammen bevat, elk ingesloten in een `fmfgraph` of `fmfgraph*` omgeving—het verschil tussen de stervorm en de niet-ster-vorm is [hieronder uitgelegd](#fmfgraph-and-fmfgraph);
2. gebruik elke `fmfgraph` of `fmfgraph*` omgeving om de tekeninstructies te bevatten die nodig zijn om een afzonderlijk Feynman-diagram te maken.

De `fmfile` omgeving heeft de volgende vorm

```latex
\begin{fmffile}{file-name}

% Diagram 1
\begin{fmfgraph}(width,height)
...
\end{fmfgraph}

% Diagram 2
\begin{fmfgraph*}(width,height)
...
\end{fmfgraph*}

\end{fmffile}
```

waar `file-name` is de naam van een bestand dat zal worden gebruikt om de MetaPost-codebeschrijvingen van de afzonderlijke tekeningen te bevatten die binnenin zijn gedefinieerd `fmfgraph`/`fmfgraph*` omgevingen gebruiken.

Elke tekening heeft de vorm

```latex
\begin{fmfgraph}(width,height)

% tekeninstructies

\end{fmfgraph}
```

of, voor de stervorm (`fmfgraph*`)

```latex
\begin{fmfgraph*}(width,height)

% tekeninstructies

\end{fmfgraph*}
```

waar `(width,height)` bepaalt de grootte van het diagram, uitgedrukt in eenheden van [`\unitlength`](#note-on-unitlength).

De MetaPost-code in `file-name` wordt verwerkt om de afbeelding(en) te maken die je Feynman-diagram(men) voorstellen. Een `fmfile` omgeving kan maximaal 256 afzonderlijke tekeningen bevatten.

#### fmfgraph en fmfgraph\*

* `fmfgraph`: deze omgeving bevat de tekeninstructies (beschrijving) van een enkel Feynman-diagram. Het wordt geplaatst *op de locatie van de omgeving*. Deze omgeving ondersteunt geen labels, gebruik `fmfgraph*` om labels in je diagrammen op te nemen.
* `fmfgraph*` hetzelfde als `fmfgraph`, maar ingesloten in een [`picture` omgeving](/latex/nl/afbeeldingen-en-tabellen/04-picture-environment.md) van dezelfde grootte. Het ondersteunt het gebruik van LaTeX-labels.

### Een voorbeeld

Laten we beginnen met een snel voorbeeld:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(120,80)
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
 \end{fmfgraph}
\end{fmffile}
\end{document}
```

[Open dit voorbeeld in Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bfirst-diagram%7D%0A+%5Cbegin%7Bfmfgraph%7D%28120%2C80%29%0A+++%5Cfmfleft%7Bi1%2Ci2%7D%0A+++%5Cfmfright%7Bo1%2Co2%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi1%2Cv1%2Co1%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi2%2Cv2%2Co2%7D%0A+++%5Cfmf%7Bphoton%7D%7Bv1%2Cv2%7D%0A+%5Cend%7Bfmfgraph%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

Dit voorbeeld levert de volgende uitvoer op:

![](/files/cd871406b15ae3deda1fcde22cc9884ae7143713)

In dit voorbeeld stelt de `fmfgraph` omgeving de breedte en hoogte van de tekening respectievelijk in op 120 en 80:

```latex
\begin{fmfgraph}(120,80)
```

met eenheden bepaald door de waarde van `\unitlength`, die standaard de waarde 1pt heeft; bijgevolg krijgt dit diagram een breedte van 120pt en een hoogte van 80pt.

#### Opmerking over \unitlength

Omdat `\unitlength` is een LaTeX-afmeting; je kunt de waarde ervan wijzigen met het `\setlength` commando; om bijvoorbeeld de breedte en hoogte van tekeningen in eenheden van cm te definiëren, kun je schrijven:

```latex
\setlength{\unitlength}{1cm}
```

Als we het bovenstaande voorbeeld reproduceren, heeft het onderstaande diagram nu een breedte van `8cm` en een hoogte van `5cm`:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(8,5)% units are now in cm
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
 \end{fmfgraph}
\end{fmffile}
\end{document}
```

[Open dit voorbeeld in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Setting+units+to+draw+Feynman+diagrams\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Cbegin%7Bfmffile%7D%7Bfirst-diagram%7D%0A+%5Cbegin%7Bfmfgraph%7D%288%2C5%29%25+units+are+now+in+cm%0A+++%5Cfmfleft%7Bi1%2Ci2%7D%0A+++%5Cfmfright%7Bo1%2Co2%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi1%2Cv1%2Co1%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi2%2Cv2%2Co2%7D%0A+++%5Cfmf%7Bphoton%7D%7Bv1%2Cv2%7D%0A+%5Cend%7Bfmfgraph%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

Dit voorbeeld levert nu een groter diagram op:

![](/files/b87be23acc04f4e5ecc3752f52e8caf5032fa2ca)

### Knooppunten

Het eerste wat je moet doen, is je externe knooppunten specificeren en aangeven waar ze moeten worden geplaatst. Je `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Zoals gebruikt in de bovenstaande voorbeelden:

```latex
% Maakt twee knooppunten aan de linkerkant met de namen i1 en i2
\fmfleft{i1,i2}

% Maakt twee knooppunten aan de rechterkant met de namen o1 en o2
\fmfright{o1,o2}
```

Je kunt knooppunten verbinden met de `\fmf`, waarmee nieuwe knooppunten worden gemaakt als je namen doorgeeft die nog niet zijn aangemaakt. Ook zoals gebruikt in de bovenstaande voorbeelden:

```latex
% Zal een fermionlijn maken tussen i1 en
% het nieuw aangemaakte v1, en tussen v1 en o1.
\fmf{fermion}{i1,v1,o1}

% Zal een photonlijn maken tussen v1 en het nieuw aangemaakte v2
\fmf{photon}{v1,v2}
```

### Labels

Zoals [hierboven vermeld](#fmfgraph-and-fmfgraph), om labels te gebruiken moet de tekening worden gemaakt met de `fmfgraph*` vorm van de tekenomgeving.

Gebruik de `\fmflabel` commando om een label op een knooppunt te plaatsen:

```latex
\fmflabel{label-content}{diagram-vertex}
```

waarbij:

* `label-content` is het label dat op het gekozen hoekpunt moet worden toegepast;
* `diagram-vertex` is de naam van het hoekpunt dat gelabeld moet worden.

Merk op dat `label-content` kan wiskundige inhoud bevatten.

We kunnen het vorige voorbeeld opnieuw gebruiken om de volgende labels toe te voegen

```latex
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
```

waarmee het bijgewerkte diagram hieronder wordt verkregen:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %NOTE the fmfgraph* environment
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % Voeg onze labels toe
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Open dit voorbeeld in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Adding+labels+to+Feynman+diagrams\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bfirst-diagram%7D%0A+%5Cbegin%7Bfmfgraph%2A%7D%28120%2C80%29+%25NOTE+the+fmfgraph%2A+environment%0A+++%5Cfmfleft%7Bi1%2Ci2%7D%0A+++%5Cfmfright%7Bo1%2Co2%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi1%2Cv1%2Co1%7D%0A+++%5Cfmf%7Bfermion%7D%7Bi2%2Cv2%2Co2%7D%0A+++%5Cfmf%7Bphoton%7D%7Bv1%2Cv2%7D%0A+++%25+Add+our+labels%0A+++%5Cfmflabel%7B%24v_1%24%7D%7Bv1%7D%0A+++%5Cfmflabel%7B%24v_2%24%7D%7Bv2%7D%0A+%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

Dit voorbeeld levert een Feynman-diagram op met labels:

![](/files/374b293d8724bce0761c2fe7bb489c412d798342)

### Enkele complexere voorbeelden

De volgende, meer geavanceerde voorbeelden gebruiken functies van `feynmp` die we niet hebben besproken: zie de [`feynmp` pakket (`feynmf`) documentatie](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—die ook talrijke extra voorbeelden bevat. Deze diagrammen werden oorspronkelijk gepubliceerd in een Overleaf-sjabloon met LaTeX-code die is overgenomen van een CERN-webpagina die nu alleen nog toegankelijk is via [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—die pagina bevat nog meer voorbeelden die je misschien wilt uitproberen.

#### Voorbeeld 1

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-a}
\begin{fmfgraph*}(100,100)
    \fmfleft{i1}
    \fmfright{o1,o2}
    \fmf{fermion,label=$u$}{i1,w1}
    \fmf{fermion,label=$d$}{w1,o1}
    \fmf{photon,label=$W^{+}$}{w1,o2}
    \fmfv{lab=$V^{\ast}_{ud}$,lab.dist=0.05w}{w1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Open dit voorbeeld in Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bcomplex-a%7D%0A%5Cbegin%7Bfmfgraph%2A%7D%28100%2C100%29%0A++++%5Cfmfleft%7Bi1%7D%0A++++%5Cfmfright%7Bo1%2Co2%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24u%24%7D%7Bi1%2Cw1%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24d%24%7D%7Bw1%2Co1%7D%0A++++%5Cfmf%7Bphoton%2Clabel%3D%24W%5E%7B%2B%7D%24%7D%7Bw1%2Co2%7D%0A++++%5Cfmfv%7Blab%3D%24V%5E%7B%5Cast%7D_%7Bud%7D%24%2Clab.dist%3D0.05w%7D%7Bw1%7D%0A%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

Dit voorbeeld levert het volgende diagram op:

![](/files/84eca75c11b06a00452e9fbc232ee44a39e14a7f)

#### Voorbeeld 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % onderste en bovenste hoekpunten
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % inkomende protonen naar gluon-hoekpunten
    \fmf{fermion,label=$d$}{i1,o1}
    % spanning verschuift het hoekpunt naar één kant
    \fmf{fermion,tension=1.5,label=$\overline{b}$}{v2,i4}
    \fmf{fermion,label=$\overline{c}$}{o4,v2}
    \fmffreeze
    \fmf{fermion}{o2,v3,o3}
    \fmf{fermion,label=$\overline{s}$}{o2,v3}
    \fmf{fermion,label=$c$}{v3,o3}
    \fmf{photon, tension=2,label=$W^{+}$}{v2,v3}
    % phantom centreert het W->cs-hoekpunt
    \fmf{phantom,tension=1.5}{i1,v3}

    \fmfv{lab=$V_{cb}^{\ast}$}{v2}
    \fmfv{lab=$V_{cs}$,lab.dist=-.1w}{v3}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Open dit voorbeeld in Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bcomplex-b%7D%0A%5Cbegin%7Bfmfgraph%2A%7D%28200%2C200%29%0A++++%25+bottom+and+top+verticies%0A++++%5Cfmfstraight%0A++++%5Cfmfleft%7Bi0%2Ci1%2Ci2%2Cid1%2Cid2%2Ci3%2Ci4%2Ci5%7D%0A++++%5Cfmfright%7Bo0%2Co1%2Co2%2Cod1%2Cod2%2Co3%2Co4%2Co5%7D%0A++++%25+incoming+proton+to+gluon+vertices%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24d%24%7D%7Bi1%2Co1%7D%0A++++%25+tension+shifts+vertex+to+one+side%0A++++%5Cfmf%7Bfermion%2Ctension%3D1.5%2Clabel%3D%24%5Coverline%7Bb%7D%24%7D%7Bv2%2Ci4%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24%5Coverline%7Bc%7D%24%7D%7Bo4%2Cv2%7D%0A++++%5Cfmffreeze%0A++++%5Cfmf%7Bfermion%7D%7Bo2%2Cv3%2Co3%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24%5Coverline%7Bs%7D%24%7D%7Bo2%2Cv3%7D%0A++++%5Cfmf%7Bfermion%2Clabel%3D%24c%24%7D%7Bv3%2Co3%7D%0A++++%5Cfmf%7Bphoton%2C+tension%3D2%2Clabel%3D%24W%5E%7B%2B%7D%24%7D%7Bv2%2Cv3%7D%0A++++%25+phantom+centres+the+W-%3Ecs+vertex%0A++++%5Cfmf%7Bphantom%2Ctension%3D1.5%7D%7Bi1%2Cv3%7D%0A%0A++++%5Cfmfv%7Blab%3D%24V_%7Bcb%7D%5E%7B%5Cast%7D%24%7D%7Bv2%7D%0A++++%5Cfmfv%7Blab%3D%24V_%7Bcs%7D%24%2Clab.dist%3D-.1w%7D%7Bv3%7D%0A%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

Dit voorbeeld levert het volgende diagram op:

![](/files/5bfc5fe831616194db06f685889422d46da86d59)

#### Voorbeeld 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    %onderste en bovenste hoekpunten
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    %inkomende protonen naar gluon-hoekpunten
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    % blobs bij gluon-hoekpunten, 0.16w is de grootte van de blob
    \fmfblob{.16w}{g1,g2}
    %gluon van P1 naar vertex1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    %gluon van P2 naar vertex2 - let op de wijziging van de volgorde!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    %quarklus zat hier
    \fmf{fermion, tension=.6, lab.side=right,lab=$b$}{v1,b}
    \fmf{fermion, tension=1.2}{v2,v1}
    \fmf{fermion, tension=.6, lab.side=right,lab=$\overline{b}$}{bbar,v2}
    %uitgaande protonen
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    %bevries alles op zijn plaats
    \fmffreeze
    \renewcommand{\P}[3]{\fmfi{plain}{%
        vpath(__#1,__#2) shifted (thick*(#3))}}
    %lijnen op P1
    \P{P1}{g1}{2,0}
    \P{P1}{g1}{-2,1}
    %lijnen op p2
    \P{P2}{g2}{2,1}
    \P{P2}{g2}{-2,0}
    %lijnen op P1'
    \P{g1}{P1'}{-2,-1}
    \P{g1}{P1'}{2,0}
    %lijnen op P2'
    \P{g2}{P2'}{-2,0}
    \P{g2}{P2'}{2,-1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Open dit voorbeeld in Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=feynmf+package+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfeynmp-auto%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfmffile%7D%7Bcomplex-c%7D%0A%5Cbegin%7Bfmfgraph%2A%7D%28200%2C200%29%0A++++%25bottom+and+top+verticies%0A++++%5Cfmfbottom%7BP1%2CP2%7D%0A++++%5Cfmftop%7BP1%27%2Cb%2Cbbar%2CP2%27%7D%0A++++%25incoming+protons+to+gluon+vertices%0A++++%5Cfmf%7Bfermion%2Ctension%3D2%2Clab%3D%24P_1%24%7D%7BP1%2Cg1%7D%0A++++%5Cfmf%7Bfermion%2Ctension%3D2%2Clab%3D%24P_2%24%7D%7BP2%2Cg2%7D%0A++++%25blobs+at+gluon+vertices%2C+0.16w+is+the+size+of+blob%0A++++%5Cfmfblob%7B.16w%7D%7Bg1%2Cg2%7D%0A++++%25gluon+from+P1+to+vertex1%0A++++%5Cfmf%7Bgluon%2Clab.side%3Dright%2Clab%3D%24x_%7B1%7DP_%7B1%7D%24%7D%7Bg1%2Cv1%7D%0A++++%25gluon+from+P2+to+vertex2+-+note+change+of+order%21%0A++++%5Cfmf%7Bgluon%2Clab.side%3Dright%2Clab%3D%24x_%7B2%7DP_%7B2%7D%24%7D%7Bv2%2Cg2%7D%0A++++%25quark+loop+was+here%0A++++%5Cfmf%7Bfermion%2C+tension%3D.6%2C+lab.side%3Dright%2Clab%3D%24b%24%7D%7Bv1%2Cb%7D%0A++++%5Cfmf%7Bfermion%2C+tension%3D1.2%7D%7Bv2%2Cv1%7D%0A++++%5Cfmf%7Bfermion%2C+tension%3D.6%2C+lab.side%3Dright%2Clab%3D%24%5Coverline%7Bb%7D%24%7D%7Bbbar%2Cv2%7D%0A++++%25outgoing+protons%0A++++%5Cfmf%7Bfermion%7D%7Bg1%2CP1%27%7D%0A++++%5Cfmf%7Bfermion%7D%7Bg2%2CP2%27%7D%0A++++%25freeze+everything+in+place%0A++++%5Cfmffreeze%0A++++%5Crenewcommand%7B%5CP%7D%5B3%5D%7B%5Cfmfi%7Bplain%7D%7B%25%0A++++++++vpath%28__%231%2C__%232%29+shifted+%28thick%2A%28%233%29%29%7D%7D%0A++++%25lines+on+P1%0A++++%5CP%7BP1%7D%7Bg1%7D%7B2%2C0%7D%0A++++%5CP%7BP1%7D%7Bg1%7D%7B-2%2C1%7D%0A++++%25lines+on+p2%0A++++%5CP%7BP2%7D%7Bg2%7D%7B2%2C1%7D%0A++++%5CP%7BP2%7D%7Bg2%7D%7B-2%2C0%7D%0A++++%25lines+on+P1%27%0A++++%5CP%7Bg1%7D%7BP1%27%7D%7B-2%2C-1%7D%0A++++%5CP%7Bg1%7D%7BP1%27%7D%7B2%2C0%7D%0A++++%25lines+on+P2%27%0A++++%5CP%7Bg2%7D%7BP2%27%7D%7B-2%2C0%7D%0A++++%5CP%7Bg2%7D%7BP2%27%7D%7B2%2C-1%7D%0A%5Cend%7Bfmfgraph%2A%7D%0A%5Cend%7Bfmffile%7D%0A%5Cend%7Bdocument%7D)

Dit voorbeeld levert het volgende diagram op:

![](/files/785c3702ad179d3fc07bb00c361714c4a33238a3)

### Lijnstijlen

We hebben de `photon` en `fermion` lijnstijlen hierboven gezien, maar het `feynmp` pakket ondersteunt er nog veel meer.

| Uiterlijk                                                                            | Naam(namen)                             |
| ------------------------------------------------------------------------------------ | --------------------------------------- |
| ![Feynmf-line-curly.png](/files/dfa3aefc3a028b3fc9112dbf1204912f2fafc3fe)            | gluon, curly                            |
| ![Feynmf-line-dbl-curly.png](/files/ac5cd1fc1862da109270a5d57fabf94855484603)        | dbl\_curly                              |
| ![Feynmf-line-dashes.png](/files/da1853f27ece7ff23b26b286f6acd4730547fb89)           | dashes                                  |
| ![Feynmf-line-dashed-arrow.png](/files/6acbc29718e80187a1828677218c18ab8f71332a)     | scalar, dashes\_arrow                   |
| ![Feynmf-line-dbl-dashes.png](/files/0c524a1f825ef777927d7e8150c223caa47732f2)       | dbl\_dashes                             |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/63c3d52bc1bcd070ad2c42d4ea4b8610e716e289) | dbl\_dashes\_arrow                      |
| ![Feynmf-line-dots.png](/files/8dcde0e2942b74e7083f61af8bd08eaefc428445)             | dots                                    |
| ![Feynmf-line-dots-arrow.png](/files/2ddd8625281089d65621f2477eb2d7391e003dce)       | ghost, dots\_arrow                      |
| ![Feynmf-line-dbl-dots.png](/files/6f054f77bbab47f53de3848214d1fe9cb1b45e6d)         | dbl\_dots                               |
| ![Feynmf-line-dbl-dots-arrow.png](/files/f0f6ae8676fe83ec570676b9a9e8fb8c5bcd5b36)   | dbl\_dots\_arrow                        |
|                                                                                      | phantom                                 |
| ![Feynmf-line-phantom-arrow.png](/files/bd6fa208768ebabb2fe0117c891dd6eae282886b)    | phantom\_arrow                          |
| ![Feynmf-line-plain.png](/files/bf78068bde125494fabe0bd87254eabace6f1904)            | vanilla, plain                          |
| ![Feynmf-line-plain-arrow.png](/files/6f3d0c6b9972691d644119462c5584086498fded)      | fermion, electron, quark, plain\_arrow  |
| ![Feynmf-line-dbl-plain.png](/files/bb8cbf2ba2ae9da1cd3d0187b9becbc041dbcd73)        | double, dbl\_plain                      |
| ![Feynmf-line-dbl-plain-arrow.png](/files/d02ea2d6621166326e8f485db2e5a040b5eef516)  | double\_arrow, heavy, dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/81d4389f72152226366e9f792635ec996c63a760)           | boson, photon, wiggly                   |
| ![Feynmf-line-dbl-wiggly.png](/files/883a4483ea917b7f8f4b9c78dfaac29dbb7fcea2)       | dbl\_wiggly                             |
| ![Feynmf-line-zigzag.png](/files/76cc574246dd3a8ec4e916b25645ed685e5bdddc)           | zigzag                                  |
| ![Feynmf-line-dbl-zigzag.png](/files/c39dcec3c7d1c0d929ee1c146797fa48e68cb688)       | dbl\_zigzag                             |

## Verder lezen

Zie voor meer informatie:

* [Scheikundeformules](/latex/nl/vakspecifiek/02-chemistry-formulae.md)
* [Moleculaire orbitaaldiagrammen](/latex/nl/vakspecifiek/04-molecular-orbital-diagrams.md)
* [TikZ-pakket](/latex/nl/afbeeldingen-en-tabellen/05-tikz-package.md)
* [Diagrammen rechtstreeks in LaTeX tekenen](/latex/nl/afbeeldingen-en-tabellen/04-picture-environment.md)
* [Afbeeldingen invoegen](/latex/nl/meer-onderwerpen/27-inserting-images.md)
* [Lijst van Griekse letters en wiskundige symbolen](/latex/nl/wiskunde/11-list-of-greek-letters-and-math-symbols.md)
* [De **feynmf** pakkettendocumentatie](http://mirrors.ctan.org/macros/latex/contrib/feynmf/fmfman.pdf).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/nl/vakspecifiek/03-feynman-diagrams.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
