> 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/da/fag-specifikt/03-feynman-diagrams.md).

# Feynman-diagrammer

## Introduktion

Denne hjælpeartikel udforsker LaTeX-pakker til at tegne Feynman-diagrammer, en meget kompakt og intuitiv måde at repræsentere vekselvirkninger mellem partikler på. Vi vil se nærmere på [`tikz-feynman` pakken](https://ctan.org/pkg/tikz-feynman?lang=en), som bruger TikZ til at tegne diagrammer, og [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) som ("bag kulisserne") bruger MetaPost.

## Pakken TikZ-Feynman

Den [`tikz-feynman` pakken](https://ctan.org/pkg/tikz-feynman?lang=en) blev udgivet i 2016 og bruger Ti*k*Z til at generere Feynman-diagrammer. Ti*k*Z-Feynman bygger videre på Ti*k*Z-pakken og dens graftegningsalgoritmer for at automatisere placeringen af mange hjørner. Ti*k*Z-Feynman tillader stadig finjusteret placering af hjørner, så selv komplekse diagrammer kan genereres let. De mest opdaterede oplysninger om Ti*k*Z-Feynman vil altid være på [projektsiden](http://www.jpellis.me/projects/tikz-feynman/) og på [pakkedokumentationen](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) på CTAN.

### Opdatering (9. november 2022)

**VIGTIG opdatering efter udgivelsen** (9. november 2022): På tidspunktet for opdateringen af denne side er **TikZ-Feynman-pakken stadig inkompatibel med TeX Live-versioner nyere end TeX Live 2018**—som er den TeX Live-version, der bruges i [Overleaf-projektet, der ledsager denne hjælpeartikel.](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 TikZ-Feynman-eksemplerne nedenfor skal kompileres i et Overleaf-projekt med **TeX Live-versionen** sat til `2018 (legacy)`. Se for yderligere oplysninger [denne sag rapporteret på GitHub](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Indlæsning af pakken

Efter installation af pakken kan Ti*k*Z-Feynman-pakken indlæses med `\usepackage{tikz-feynman}` i præamblen. Det anbefales, at du også angiver den version af Ti*k*Z-Feynman, der skal bruges, med `compat` pakkeindstillingen: `\usepackage[compat=1.0.0]{tikz-feynman}`. Dette sikrer, at nye versioner af Ti*k*Z-Feynman ikke uden varsel medfører uønskede ændringer.

### Et første diagram

Feynman-diagrammer kan deklareres med `\feynmandiagram` kommandoen. Den er analog med `\tikz` -kommandoen fra Ti*k*Z og kræver et afsluttende semikolon (`;`) for at afslutte miljøet. For eksempel er et simpelt *s*-kanaldiagram:

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

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

Lad os gennemgå dette eksempel linje for linje:

**Linje 1**

\feynmandiagram introducerer Feynman-diagrammet og tillader, at der gives valgfrie argumenter i klammerne \[]. I dette tilfælde orienterer horizontal=a to b algoritmens output, så linjen gennem hjørnerne a og b er vandret.

**Linje 2**

Den venstre fermionlinje tegnes ved at erklære tre hjørner (i1, a og i2) og forbinde dem med kanterne --. Ligesom med \feynmandiagram-kommandoen ovenfor tager hver kant også valgfrie argumenter angivet i klammerne \[]. I dette tilfælde ønsker vi, at disse kanter skal have pile for at angive, at de er fermionlinjer, så vi tilføjer stilen fermion til dem. Som du vil se senere, kan valgfrie argumenter også gives til hjørnerne på nøjagtig samme måde.

**Linje 3**

Denne kant forbinder hjørnerne a og b med en kant stiliseret som en foton. Da der allerede er et hjørne med navnet a, vil algoritmen forbinde det med et nyt hjørne med navnet b.

**Linje 4**

Denne linje svarer til linje 2 og introducerer to nye hjørner, f1 og f2. Den genbruger det tidligere navngivne hjørne b.

**Linje 5**

Afslut deklarationen af Feynman-diagrammet. Det afsluttende semikolon (;) er vigtigt.

Navnet givet til hvert hjørne i grafen er ligegyldigt. Så i dette eksempel, `i1`, `i2` angiver de indledende partikler; `f1`, `f2` angiver de endelige partikler; og `et`, `b` er propagatorens endepunkter. Det eneste vigtige aspekt er, at det, vi kaldte `et` i linje 2, også er `et` i linje 3, så den underliggende algoritme behandler dem som det samme hjørne.

Rækkefølgen, som hjørnerne deklareres i, er ligegyldig, da standardalgoritmen omarrangerer alt. Man kunne for eksempel foretrække at tegne fermionlinjerne på én gang, som i det følgende eksempel (bemærk også, at den måde, vi har navngivet hjørnerne på, er helt anderledes):

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

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

Som en afsluttende bemærkning sker beregningen af, hvor hjørnerne skal placeres, normalt via en algoritme skrevet i Lua. Derfor kræves LuaTeX for at kunne bruge disse algoritmer. Hvis LuaTeX ikke bruges, vil Ti*k*Z-Feynman som standard falde tilbage på en mere elementær algoritme og i stedet advare brugeren.

### Tilføjelse af stilarter

Indtil nu har eksemplerne kun brugt `photon` og `fermion` -stilarterne. Ti*k*Z-Feynman-pakken leveres med en del ekstra stilarter til kanter og hjørner, som alle er dokumenteret i [pakkedokumentationen](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf). For eksempel er det muligt at tilføje impulspile med `momentum=<text>`, og i tilfælde af endehjørner kan partiklen mærkes med `particle=<text>`. For at demonstrere, hvordan de bruges, tager vi det generiske *s*-kanaldiagram fra tidligere og gør det til en elektron-positron-annihilation til muoner:

```
\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/e105ed00d49da0284d18718d9a4dd54c3dac92b8)

Ud over de stilnøgler, der er dokumenteret nedenfor, kan stilnøgler fra Ti*k*Z også bruges:

```
\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/fe559ec453c8be4c4e76ba577bd7d83e9c8b1d43)

For en liste over alle de forskellige stilarter, som Ti*k*Z tilbyder, så kig i [Ti*k*Z-manualen](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf); den er yderst grundig og indeholder mange brugs-eksempler.

### Når algoritmen ikke er nok

Som standard sætter `\feynmandiagram` og `\diagram` -kommandoerne bruger `spring-layout-algoritmen` til at placere alle kanterne.  `spring-layout-algoritmen` Algoritmen forsøger at \`sprede' diagrammet så meget som muligt, hvilket—for de fleste enklere diagrammer—giver et tilfredsstillende resultat; men i nogle tilfælde giver dette ikke det bedste diagram, og dette afsnit ser på alternativer. Der er tre hovedalternativer:

**Tilføj usynlige kanter**

Mens man stadig bruger standardalgoritmen, er det muligt at tvinge visse hjørner tættere sammen ved at tilføje ekstra kanter og gøre dem usynlige via draw=none. Algoritmen vil behandle disse ekstra kanter på samme måde, men de bliver simpelthen ikke tegnet til sidst;

**Brug en anden algoritme**

Under visse omstændigheder kan andre algoritmer være bedre egnede. Nogle af de andre graf-layoutalgoritmer er opført i pakkedokumentationen, og en udtømmende liste over alle algoritmer og deres parametre findes i TikZ-manualen;

**Manuel placering**

Som sidste udvej kræver meget komplicerede eller usædvanlige diagrammer, at hvert hjørne placeres manuelt.

#### Usynlige kanter

Den underliggende algoritme behandler alle kanter på nøjagtig samme måde, når den beregner, hvor alle hjørnerne skal placeres, og den faktiske tegning af diagrammet (efter at placeringerne er beregnet) udføres separat. Derfor er det muligt at tilføje kanter til algoritmen, men forhindre dem i at blive tegnet ved at tilføje `draw=none` til kantstilen.

Dette er især nyttigt, hvis du vil sikre, at de indledende eller afsluttende tilstande forbliver tættere sammen, end de ellers ville have gjort, som vist i det følgende eksempel (bemærk, at `opacity=0.2` bruges i stedet for `draw=none` for at illustrere, hvor kanten præcist er placeret).

```
% Ingen usynlighed for at holde de to fotoner sammen
\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/de00daeb7607d9e0528b1e39a0261a9cafec4986)

```
% Usynlig kant sikrer, at fotonerne er parallelle
\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/8bb9aff953b6db1af0b372b9ca05884a326471ba)

#### Alternative algoritmer

Graftegningsbiblioteket fra Ti*k*Z har flere forskellige algoritmer til at placere hjørnerne. Som standard `\diagram` og `\feynmandiagram` bruges `spring-layout-algoritmen` algoritmen til at placere hjørnerne.  `spring-layout-algoritmen` forsøger at sprede alt ud så meget som muligt, hvilket i de fleste tilfælde giver et pænt diagram; der er dog visse tilfælde, hvor dette ikke virker. Et godt eksempel på, hvor `spring-layout-algoritmen` ikke virker, er henfald, hvor vi har den henfaldende partikel til venstre og alle datterpartiklerne til højre.

```
% Brug af standard spring-layout
\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/b49792cacf9085ff35f7499f132d6d6e151df9d6)

```
% Brug af det lagdelte layout
\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/bdd8a7d3efac98ad10d686bbde23394f85e96fbd)

Du vil måske bemærke, at ud over at tilføje `det lagdelte layout` -stil til `\feynmandiagram`har vi også ændret rækkefølgen, hvori vi angiver hjørnerne. Dette skyldes, at `det lagdelte layout` algoritmen faktisk tager hensyn til rækkefølgen, hvori hjørnerne deklareres (i modsætning til standard `spring-layout-algoritmen`); som følge heraf `c--f2, c--f3` har en anden betydning end `f2--c--f3`. I det første tilfælde er `f2` og `f3` begge på laget under `c` som ønsket; mens det andet tilfælde placerer `f2` på laget over `c` (dvs. det samme lag, som W-bosonet kommer fra).

#### Manuel placering

I mere komplicerede diagrammer er det meget sandsynligt, at ingen af algoritmerne virker, uanset hvor mange usynlige kanter der tilføjes. I sådanne tilfælde må hjørnerne placeres manuelt. Ti*k*Z-Feynman tillader, at hjørner placeres manuelt ved at bruge `\vertex` kommando.

Den `\vertex` -kommandoen er kun tilgængelig inden for `feynman` -miljøet (som i sig selv kun er tilgængeligt inde i en `tikzpicture`).  `feynman` Miljøet indlæser alle relevante stilarter fra Ti*k*Z-Feynman og deklarerer yderligere Ti*k*Z-Feynman-specifikke kommandoer såsom `\vertex` og `\diagram`. Dette er inspireret af PGFPlots og dets brug af `axis` -miljøet.

Den `\vertex` -kommandoen er meget analog med `\node` -kommandoen fra Ti*k*i Ti `{<text>}` i slutningen. I tilfælde hvor `{}` er angivet, får vertexen automatisk `particle` -stilen, og ellers er det en almindelig (nulstørrelses) vertex.

For at angive, hvor vertexene skal placeres, er det muligt at give eksplicitte koordinater, men det er sandsynligvis lettest at bruge `positioning` biblioteket fra Ti*k*Z, som gør det muligt at placere hjørner relativt i forhold til eksisterende hjørner. Ved at bruge relative placeringer er det let at finjustere en del af grafen, og alt vil justere sig tilsvarende—alternativet er manuelt at justere koordinaterne for hvert berørt hjørne.

Til sidst, når alle hjørnerne er angivet, bruges `\diagram*` -kommandoen til at angive alle kanterne. Dette fungerer på stort set samme måde som `\diagram` (og også `\feynmandiagram`), bortset fra at den bruger en meget grundlæggende algoritme til at placere nye noder og tillader, at eksisterende (navngivne) noder medtages. For at referere til en eksisterende node skal noden angives i parenteser.

Hele denne proces med at angive noderne og derefter tegne kanterne mellem dem vises nedenfor for muonhenfaldet:

```
\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/44b6adcda2fa9818c1e349ba0161bfe5530e5fa3)

## Andre pakker til at tegne Feynman-diagrammer

Der findes flere alternativer til TikZ-Feynman-pakken:

* [`feynmf`](https://ctan.org/pkg/feynmf): producerer bitmap-grafik via [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (medfølger med `feynmf`) producerer vektorgrafik via [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): afledt af `feynmp`

Den `feynmp-auto` pakken er i praksis en udvidelse af `feynmp` pakken, der er designet til at automatisere konverteringen af MetaPosts PostScript-kode til PDF-data til brug i pdfTeX, LuaTeX og XeTeX. Følgende eksempler bruger alle `feynmp-auto`.

### Introduktion

Den `feynmf`, `feynmp` og `feynmp-auto` pakker lader dig nemt tegne Feynman-diagrammer ved at angive hjørnerne, partiklerne og deres etiketter og derefter automatisk udføre layoutet for at tegne dit diagram.

#### Et overblik over brugen af feynmf-baserede pakker

For at lave Feynman-diagrammer skal du:

1. oprette en `fmfile` -miljø til at indeholde et eller flere diagrammer, hver omsluttet af et `fmfgraph` eller `fmfgraph*` -miljø—forskellen mellem den stjernede og den ikke-stjernede form er [forklaret nedenfor](#fmfgraph-and-fmfgraph);
2. brug hvert `fmfgraph` eller `fmfgraph*` -miljø til at indeholde de tegningsinstruktioner, der kræves for at lave et enkelt Feynman-diagram.

Den `fmfile` -miljøet har følgende form

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

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

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

\end{fmffile}
```

hvor `file-name` er navnet på en fil, der vil blive brugt til at indeholde MetaPost-kodebeskrivelserne af de enkelte tegninger, der er defineret inden i `fmfgraph`/`fmfgraph*` omgivelserne.

Hver tegning har formen

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

% tegningsinstruktioner

\end{fmfgraph}
```

eller for den stjernede version (`fmfgraph*`)

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

% tegningsinstruktioner

\end{fmfgraph*}
```

hvor `(width,height)` definerer diagrammets størrelse udtrykt i enheder af [`\unitlength`](#note-on-unitlength).

MetaPost-koden i `file-name` behandles for at skabe den eller de grafikfiler, der repræsenterer dine Feynman-diagrammer. Et `fmfile` -miljø kan indeholde op til 256 enkelte tegninger.

#### fmfgraph og fmfgraph\*

* `fmfgraph`: dette miljø indeholder tegningsinstruktionerne (beskrivelsen) af et enkelt Feynman-diagram. Det vil blive placeret *på placeringen af miljøet*. Dette miljø understøtter ikke etiketter, brug `fmfgraph*` til at inkludere etiketter i dine diagrammer.
* `fmfgraph*` det samme som `fmfgraph`, men omsluttet af en [`picture` miljø](/latex/da/figurer-og-tabeller/04-picture-environment.md) af samme størrelse. Det understøtter brugen af LaTeX-etiketter.

### Et eksempel

Lad os starte med et hurtigt eksempel:

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

[Åbn dette eksempel i 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)

Dette eksempel giver følgende output:

![](/files/f80a2f4664b9f951d369dd93584ba86e3ef5d9ce)

I dette eksempel sætter `fmfgraph` -miljøet tegningens bredde og højde til henholdsvis 120 og 80:

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

ved hjælp af enheder bestemt af værdien af `\unitlength`som har standardværdien 1pt; derfor tildeles dette diagram en bredde på 120pt og en højde på 80pt.

#### Bemærkning om \unitlength

Fordi `\unitlength` er en LaTeX-dimension, kan du ændre dens værdi ved hjælp af `\setlength` -kommandoen; for eksempel kan du, for at definere tegningers bredde og højde i enheder af cm, skrive:

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

Hvis vi genskaber eksemplet ovenfor, har diagrammet nedenfor nu en bredde på `8cm` og en højde på `5cm`:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(8,5)% enhederne er nu i 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}
```

[Åbn dette eksempel i 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)

Dette eksempel giver nu et større diagram:

![](/files/1bfc0c92fec456210157327a1a584a1a3c2dd644)

### Hjørner

Det første, du skal gøre, er at angive dine ydre hjørner og hvor de skal placeres. Du kan kalde dine hjørner hvad som helst, og angive, hvor de skal placeres, med kommandoerne `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Som brugt i eksemplerne ovenfor:

```latex
% Opretter to knuder til venstre kaldet i1 og i2
\fmfleft{i1,i2}

% Opretter to knuder til højre kaldet o1 og o2
\fmfright{o1,o2}
```

Du kan forbinde knuder med `\fmf`, som vil oprette nye knuder, hvis du sender navne ind, der endnu ikke er oprettet. Også som brugt i eksemplerne ovenfor:

```latex
% Vil oprette en fermionlinje mellem i1 og
% den nyoprettede v1, og mellem v1 og o1.
\fmf{fermion}{i1,v1,o1}

% Vil oprette en fotonlinje mellem v1 og den nyoprettede v2
\fmf{photon}{v1,v2}
```

### Etiketter

Som [nævnt ovenfor](#fmfgraph-and-fmfgraph), for at bruge etiketter skal tegningen oprettes ved hjælp af `fmfgraph*` formen af tegningsmiljøet.

Brug `\fmflabel` kommandoen til at placere en etiket på en knude:

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

hvor:

* `label-content` er etiketten, der skal anvendes på den valgte knude;
* `diagram-vertex` er navnet på knuden, der skal have en etiket.

Bemærk, at `label-content` kan indeholde matematisk materiale.

Vi kan genbruge det foregående eksempel til at tilføje følgende etiketter

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

hvilket giver det opdaterede diagram vist nedenfor:

```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}
   % Tilføj vores etiketter
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Åbn dette eksempel i 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)

Dette eksempel producerer et Feynman-diagram med etiketter:

![](/files/8a2af344bf232a251151427e6a6906936fb8a40a)

### Nogle mere komplekse eksempler

De følgende, mere avancerede, eksempler bruger funktioner i `feynmp` som vi ikke har gennemgået: se [`feynmp` -pakken (`feynmf`) dokumentationen](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—som også indeholder adskillige yderligere eksempler. Disse diagrammer blev oprindeligt publiceret i en Overleaf-skabelon med LaTeX-kode gengivet fra en CERN-webside, som nu kun er tilgængelig via [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—den side indeholder flere eksempler, som du måske vil prøve.

#### Eksempel 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}
```

[Åbn dette eksempel i 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)

Dette eksempel producerer følgende diagram:

![](/files/9b21dd60870afef1798663ea68dc6ccb6ee1f822)

#### Eksempel 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % bund- og topknuder
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % indgående proton til gluon-knuder
    \fmf{fermion,label=$d$}{i1,o1}
    % spænding forskyder knuden til den ene side
    \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 centrerer W->cs-knuden
    \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}
```

[Åbn dette eksempel i 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)

Dette eksempel producerer følgende diagram:

![](/files/6479ed578735ab1e6712468863110b2fa8cff688)

#### Eksempel 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    %bund- og topknuder
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    %indgående protoner til gluon-knuder
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    %klatter ved gluon-knuder, 0.16w er størrelsen på klatten
    \fmfblob{.16w}{g1,g2}
    %gluon fra P1 til knude1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    %gluon fra P2 til knude2 - bemærk ændring i rækkefølgen!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    %kvark-loop var her
    \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}
    %udgående protoner
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    %frys alt på plads
    \fmffreeze
    \renewcommand{\P}[3]{\fmfi{plain}{%
        vpath(__#1,__#2) shifted (thick*(#3))}}
    %linjer på P1
    \P{P1}{g1}{2,0}
    \P{P1}{g1}{-2,1}
    %linjer på p2
    \P{P2}{g2}{2,1}
    \P{P2}{g2}{-2,0}
    %linjer på P1'
    \P{g1}{P1'}{-2,-1}
    \P{g1}{P1'}{2,0}
    %linjer på P2'
    \P{g2}{P2'}{-2,0}
    \P{g2}{P2'}{2,-1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Åbn dette eksempel i 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)

Dette eksempel producerer følgende diagram:

![](/files/16320e2a85adb50abe904c57590b55ec480b3360)

### Linjestile

Vi har set `photon` og `fermion` linjestilene ovenfor, men `feynmp` pakken understøtter mange flere.

| Udseende                                                                             | Navn(e)                                |
| ------------------------------------------------------------------------------------ | -------------------------------------- |
| ![Feynmf-line-curly.png](/files/adedd3fc602b5c21163e9a93590599fabab70587)            | gluon, krøllet                         |
| ![Feynmf-line-dbl-curly.png](/files/cccdd4b1ca7fdf29fd0ca086082923e8dd28ea2e)        | dbl\_curly                             |
| ![Feynmf-line-dashes.png](/files/975093129dad4ec4635f6fdca7872955fa8ddc00)           | streger                                |
| ![Feynmf-line-dashed-arrow.png](/files/63f000fd2e6a89f8ebdd3a99b0219ad84a663ea0)     | skalar, dashes\_arrow                  |
| ![Feynmf-line-dbl-dashes.png](/files/ad50bee33808c44986c9d5784a7bf941ebbd1239)       | dbl\_dashes                            |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/8cb215b73a1bd847dd0d62c33c6b4d49ccf34ec6) | dbl\_dashes\_arrow                     |
| ![Feynmf-line-dots.png](/files/a35ad6c9a77680aca44d3fcc13befc1204bf48d4)             | prikker                                |
| ![Feynmf-line-dots-arrow.png](/files/dba82406b802494d3cd46ac9ec45b3ff02c19876)       | spøgelse, dots\_arrow                  |
| ![Feynmf-line-dbl-dots.png](/files/860b14f667b17476fe8468e1619f4640846dfcac)         | dbl\_dots                              |
| ![Feynmf-line-dbl-dots-arrow.png](/files/1df7bc7266e5379fd469ab20a28f830d49dcb4a2)   | dbl\_dots\_arrow                       |
|                                                                                      | fantom                                 |
| ![Feynmf-line-phantom-arrow.png](/files/9737bbf1cbdc97bf43ab80d39866ad08de984acc)    | fantom\_arrow                          |
| ![Feynmf-line-plain.png](/files/1bc50c15c30b969503aaeb8a107fd70a1f372b29)            | vanilje, plain                         |
| ![Feynmf-line-plain-arrow.png](/files/212c7ace67ca1f68b610ecaf6f90b7e04f0913a3)      | fermion, elektron, kvark, plain\_arrow |
| ![Feynmf-line-dbl-plain.png](/files/a5e1e2763888f7e5a412ef45a6a21f05a69090f5)        | dobbelt, dbl\_plain                    |
| ![Feynmf-line-dbl-plain-arrow.png](/files/9a0fa90702d4e70aefd2f71e1c2bf1fea92fcb0c)  | dobbeltpil, tung, dbl\_plain\_arrow    |
| ![Feynmf-line-wiggly.png](/files/faf5631ea3b60a65173c9fedec5187c76224cbff)           | boson, foton, bølget                   |
| ![Feynmf-line-dbl-wiggly.png](/files/f31162e109ae79cde3bf6775373444ad2d3c1b7d)       | dbl\_wiggly                            |
| ![Feynmf-line-zigzag.png](/files/e0849bde3022247ecdb60632871f14a214dc1c60)           | zigzag                                 |
| ![Feynmf-line-dbl-zigzag.png](/files/ea066e5896a90374e742cac7832c47693ca22f34)       | dbl\_zigzag                            |

## Yderligere læsning

For mere information se:

* [Kemiske formler](/latex/da/fag-specifikt/02-chemistry-formulae.md)
* [Molekylorbitaldiagrammer](/latex/da/fag-specifikt/04-molecular-orbital-diagrams.md)
* [TikZ-pakken](/latex/da/figurer-og-tabeller/05-tikz-package.md)
* [Tegning af diagrammer direkte i LaTeX](/latex/da/figurer-og-tabeller/04-picture-environment.md)
* [Indsættelse af billeder](/latex/da/flere-emner/27-inserting-images.md)
* [Liste over græske bogstaver og matematiske symboler](/latex/da/matematik/11-list-of-greek-letters-and-math-symbols.md)
* [Den **feynmf** pakkedokumentationen](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/da/fag-specifikt/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.
