> 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/sv/faltspecifikt/03-feynman-diagrams.md).

# Feynmandiagram

## Introduktion

Denna hjälpartikel utforskar LaTeX-paket för att rita Feynmandiagram, ett mycket kompakt och intuitivt sätt att representera växelverkan mellan partiklar. Vi kommer att utforska [`tikz-feynman` paketet](https://ctan.org/pkg/tikz-feynman?lang=en), som använder TikZ för att rita diagram, och [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) som ("under huven") använder MetaPost.

## Paketet TikZ-Feynman

Den [`tikz-feynman` paketet](https://ctan.org/pkg/tikz-feynman?lang=en) publicerades 2016 och använder Ti*k*Z för att generera Feynmandiagram. Ti*k*Z-Feynman bygger vidare på Ti*k*Z-paketet och dess grafritningsalgoritmer för att automatisera placeringen av många vertiklar. Ti*k*Z-Feynman tillåter fortfarande finjusterad placering av vertiklar så att även komplexa diagram kan genereras utan problem. Den mest aktuella informationen om Ti*k*Z-Feynman kommer alltid att finnas på [projektsidan](http://www.jpellis.me/projects/tikz-feynman/) och i [paketdokumentation](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) på CTAN.

### Uppdatering (9 november 2022)

**VIKTIG uppdatering efter publicering** (9 november 2022): När den här sidan uppdateras är **Paketet TikZ-Feynman fortfarande inkompatibelt med TeX Live-versioner senare än TeX Live 2018**—vilket är den TeX Live-version som används i [Overleaf-projektet som följer med denna hjälpartikel.](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=) Alla TikZ-Feynman-exempel nedan måste kompileras i ett Overleaf-projekt med **TeX Live-version** inställd på `2018 (äldre)`. För mer information, se [detta problem rapporterat på GitHub](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Laddar paketet

Efter att paketet har installerats kan Ti*k*Z-Feynman-paketet laddas med `\usepackage{tikz-feynman}` i preambeln. Det rekommenderas att du också anger vilken version av Ti*k*Z-Feynman som ska användas med `compat` paketalternativet: `\usepackage[compat=1.0.0]{tikz-feynman}`. Detta säkerställer att nya versioner av Ti*k*Z-Feynman inte ger några oönskade ändringar utan förvarning.

### Ett första diagram

Feynmandiagram kan deklareras med `\feynmandiagram` kommandot. Det är analogt med `\tikz` kommandot från Ti*k*Z och kräver ett avslutande semikolon (`;`) för att avsluta miljön. Till exempel är ett enkelt *s*-kanaldiagram:

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

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

Låt oss gå igenom detta exempel rad för rad:

**Rad 1**

\feynmandiagram introducerar Feynmandiagrammet och tillåter att valfria argument anges i hakparenteserna \[]. I det här fallet orienterar horizontal=a to b algoritmens utdata så att linjen genom vertiklarna a och b är horisontell.

**Rad 2**

Den vänstra fermionlinjen ritas genom att deklarera tre vertiklar (i1, a och i2) och koppla dem med kanter --. Precis som kommandot \feynmandiagram ovan tar varje kant också valfria argument som anges i hakparenteser \[]. I det här fallet vill vi att dessa kanter ska ha pilar för att visa att de är fermionlinjer, så vi lägger till stilen fermion till dem. Som du kommer att se senare kan valfria argument också anges för vertiklarna på exakt samma sätt.

**Rad 3**

Denna kant kopplar vertiklarna a och b med en kant som är stiliserad som en foton. Eftersom det redan finns en vertikel som heter a kommer algoritmen att koppla den till en ny vertikel som heter b.

**Rad 4**

Denna rad är analog med rad 2 och introducerar två nya vertiklar, f1 och f2. Den återanvänder den tidigare namngivna vertikeln b.

**Rad 5**

Avsluta deklarationen av Feynmandiagrammet. Det avslutande semikolonet (;) är viktigt.

Namnet som ges till varje vertikel i grafen spelar ingen roll. Så i det här exemplet, `i1`, `i2` betecknar de initiala partiklarna; `f1`, `f2` betecknar de slutliga partiklarna; och `a`, `b` är propagatorns ändpunkter. Det enda viktiga är att det vi kallade `a` i rad 2 också är `a` i rad 3 så att den underliggande algoritmen behandlar dem som samma vertikel.

Ordningen i vilken vertiklar deklareras spelar ingen roll eftersom standardalgoritmen omarrangerar allt. Till exempel kanske man föredrar att rita fermionlinjerna på en gång, som i följande exempel (lägg också märke till att sättet vi namngav vertiklarna är helt annorlunda):

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

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

Som en sista anmärkning görs beräkningen av var vertiklar ska placeras vanligtvis via en algoritm skriven i Lua. Därför krävs LuaTeX för att kunna använda dessa algoritmer. Om LuaTeX inte används kommer Ti*k*Z-Feynman som standard att använda en mer rudimentär algoritm och i stället varna användaren.

### Lägga till stilar

Hittills har exemplen bara använt stilarna `photon` och `fermion` . Ti*k*Z-Feynman-paketet levereras med ganska många extra stilar för kanter och vertiklar som alla dokumenteras i [paketdokumentation](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf)dokumentationen. `momentum=<text>`, och i fallet med slutvertiklar kan partikeln märkas med `particle=<text>`. För att demonstrera hur de används tar vi det generiska *s*-kanaldiagrammet från tidigare och gör det till en elektron-positronannihilation som ger myoner:

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

Förutom de stilnycklar som dokumenteras nedan kan stilnycklar från Ti*k*Z också användas:

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

För en lista över alla de olika stilar som Ti*k*Z tillhandahåller, titta i [Ti*k*Z-manualen](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf); den är extremt grundlig och innehåller många användningsexempel.

### När algoritmen inte räcker till

Som standard används `\feynmandiagram` och `\diagram` kommandona använder `fjäderlayout` algoritmen för att placera alla kanter.  `fjäderlayout` Algoritmen försöker "sprida ut" diagrammet så mycket som möjligt vilket — för de flesta enklare diagram — ger ett tillfredsställande resultat; men i vissa fall ger detta inte det bästa diagrammet och det här avsnittet tittar på alternativ. Det finns tre huvudsakliga alternativ:

**Lägg till osynliga kanter**

Medan standardalgoritmen fortfarande används är det möjligt att tvinga vissa vertiklar att ligga närmare varandra genom att lägga till extra kanter och göra dem osynliga med draw=none. Algoritmen kommer att behandla dessa extra kanter på samma sätt, men de ritas helt enkelt inte ut i slutet;

**Använd en annan algoritm**

I vissa sammanhang kan andra algoritmer passa bättre. Några av de andra algoritmerna för graflayout listas i paketdokumentationen, och en fullständig lista över alla algoritmer och deras parametrar finns i TikZ-manualen;

**Manuell placering**

Som en sista utväg kräver mycket komplicerade eller ovanliga diagram att varje vertikel placeras manuellt.

#### Osynliga kanter

Den underliggande algoritmen behandlar alla kanter på exakt samma sätt när den beräknar var alla vertiklar ska placeras, och den faktiska ritningen av diagrammet (efter att placeringarna har beräknats) görs separat. Därför är det möjligt att lägga till kanter till algoritmen, men förhindra att de ritas genom att lägga till `draw=none` i kantstilen.

Detta är särskilt användbart om du vill säkerställa att de initiala eller slutliga tillstånden förblir närmare varandra än de annars skulle ha varit, som illustreras i följande exempel (observera att `opacity=0.2` används i stället för `draw=none` för att illustrera var kanten exakt är placerad).

```
% Ingen osynlig kant för att hålla de två fotonerna tillsammans
\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/21ac33f926dc239eb0af0e2e4a5e7ecf2e557970)

```
% Osynlig kant säkerställer att fotonerna är parallella
\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/90a14a1e52fbc7e02b37185e6b29a18da97bf7ef)

#### Alternativa algoritmer

Grafritningsbiblioteket från Ti*k*Z har flera olika algoritmer för att positionera vertiklarna. Som standard, `\diagram` och `\feynmandiagram` använd `fjäderlayout` algoritmen för att placera vertiklarna.  `fjäderlayout` försöker sprida ut allt så mycket som möjligt vilket i de flesta fall ger ett snyggt diagram; men det finns vissa fall där detta inte fungerar. Ett bra exempel där `fjäderlayout` det inte fungerar är sönderfall där vi har den sönderfallande partikeln till vänster och alla dotterpartiklar till höger.

```
% Med standardens fjäderlayout
\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/c958c46a11392967e6714ec83332c5426a370ca9)

```
% Med lagerlayouten
\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/7787a10a2cf498741ac863e57d4558d1a4fe0556)

Du kanske märker att vi utöver att lägga till `lagerlayouten` stilen till `\feynmandiagram`, ändrade vi också ordningen i vilken vi anger vertiklarna. Detta beror på att `lagerlayouten` algoritmen faktiskt tar hänsyn till ordningen i vilken vertiklarna deklareras (till skillnad från standard `fjäderlayout`); som ett resultat, `c--f2, c--f3` har en annan betydelse än `f2--c--f3`. I det första fallet är `f2` och `f3` båda på lagret nedan `c` som önskat; medan det senare fallet placerar `f2` på lagret ovanför `c` (det vill säga samma lager som där W-bosonen har sitt ursprung).

#### Manuell placering

I mer komplicerade diagram är det ganska sannolikt att ingen av algoritmerna fungerar, oavsett hur många osynliga kanter som läggs till. I sådana fall måste vertiklarna placeras manuellt. Ti*k*Z-Feynman låter vertiklar placeras manuellt genom att använda `\vertex` kommandot.

Den `\vertex` kommandot är tillgängligt endast inom `feynman` -miljön (som i sig endast är tillgänglig inuti en `tikzpicture`).  `feynman` Miljön laddar alla relevanta stilar från Ti*k*Z-Feynman och deklarerar ytterligare Ti*k*Z-Feynman-specifika kommandon såsom `\vertex` och `\diagram`. Detta är inspirerat av PGFPlots och dess användning av `axis` miljön.

Den `\vertex` kommandot är mycket analogt med `\node` kommandot från Ti*k*Z, med den märkbara skillnaden att vertikelinnehållet är valfritt; det vill säga du behöver inte ha `{<text>}` i slutet. I det fall där `{}` anges får vertikeln automatiskt `partikel` stilen, och annars är det en vanlig (nollstor) vertikel.

För att ange var vertiklarna ska hamna går det att ange explicita koordinater, men det är förmodligen enklast att använda `positionerings` biblioteket från Ti*k*Z som gör det möjligt att placera vertiklar relativt befintliga vertiklar. Genom att använda relativa placeringar går det lätt att justera en del av grafen och allt kommer att anpassa sig därefter—alternativet skulle vara att manuellt justera koordinaterna för varje påverkad vertikel.

Slutligen, när alla vertiklar har specificerats, används `\diagram*` kommandot för att specificera alla kanter. Det fungerar på ungefär samma sätt som `\diagram` (och även `\feynmandiagram`), förutom att det använder en mycket grundläggande algoritm för att placera nya noder och tillåter att befintliga (namngivna) noder inkluderas. För att hänvisa till en befintlig nod måste noden anges inom parenteser.

Hela denna process med att specificera noderna och sedan rita kanterna mellan dem visas nedan för myonsönderfallet:

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

## Andra paket för att rita Feynmandiagram

Det finns flera alternativ till paketet TikZ-Feynman:

* [`feynmf`](https://ctan.org/pkg/feynmf): producerar bitmapgrafik via [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (paketerat med `feynmf`) producerar vektorgrafik via [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): härledd från `feynmp`

Den `feynmp-auto` paketet är i praktiken en utvidgning av `feynmp` paketet utformat för att automatisera konverteringen av MetaPosts PostScript-kod till PDF-data för användning i pdfTeX, LuaTeX och XeTeX. Följande exempel använder alla `feynmp-auto`.

### Introduktion

Den `feynmf`, `feynmp` och `feynmp-auto` paket som låter dig enkelt rita Feynmandiagram genom att specificera vertiklarna, partiklarna och deras etiketter, och därefter automatiskt utföra layouten för att rita ditt diagram.

#### En översikt över hur man använder feynmf-baserade paket

För att skapa Feynmandiagram behöver du:

1. skapa en `fmfile` miljö för att innehålla ett eller flera diagram, där varje diagram omges av en `fmfgraph` eller `fmfgraph*` miljö—skillnaden mellan den stjärnmärkta och den icke stjärnmärkta formen är [förklaras nedan](#fmfgraph-and-fmfgraph);
2. använd varje `fmfgraph` eller `fmfgraph*` miljö för att innehålla de ritningsinstruktioner som krävs för att skapa ett enskilt Feynmandiagram.

Den `fmfile` miljön har följande form

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

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

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

\end{fmffile}
```

där `file-name` är namnet på en fil som kommer att användas för att innehålla MetaPost-kodbeskrivningarna för de enskilda ritningarna som definieras inom `fmfgraph`/`fmfgraph*` miljöer.

Varje ritning har formen

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

% ritningsinstruktioner

\end{fmfgraph}
```

eller, för den stjärnmärkta versionen (`fmfgraph*`)

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

% ritningsinstruktioner

\end{fmfgraph*}
```

där `(width,height)` definierar diagrammets storlek uttryckt i enheter av [`\unitlength`](#note-on-unitlength).

MetaPost-koden i `file-name` bearbetas för att skapa den/de grafik(er) som representerar dina Feynmandiagram. En `fmfile` miljö kan innehålla upp till 256 enskilda ritningar.

#### fmfgraph och fmfgraph\*

* `fmfgraph`: denna miljö innehåller ritningsinstruktionerna (beskrivningen) av ett enda Feynmandiagram. Det kommer att placeras *på platsen för miljön*. Denna miljö stöder inte etiketter, använd `fmfgraph*` för att inkludera etiketter i dina diagram.
* `fmfgraph*` samma som `fmfgraph`, men innesluten i en [`bild` miljön](/latex/sv/figurer-och-tabeller/04-picture-environment.md) av samma storlek. Den stöder användning av LaTeX-etiketter.

### Ett exempel

Låt oss börja med ett snabbt exempel:

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

[Öppna detta exempel 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)

Det här exemplet ger följande utdata:

![](/files/b0f2783ecda6a2ec46be06639db5b0ad01acf731)

I det här exemplet sätter miljön ritningens bredd och höjd till 120 respektive 80: `fmfgraph` med enheter som bestäms av värdet på

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

som har standardvärdet 1pt; följaktligen tilldelas detta diagram en bredd på 120pt och en höjd på 80pt. `\unitlength`Anmärkning om \unitlength

#### \unitlength

Eftersom `\unitlength` är en LaTeX-dimension; du kan ändra dess värde med kommandot `\setlength` ; till exempel, för att definiera ritningars bredd och höjd i enheter av cm kan du skriva:

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

Om vi återger exemplet ovan har diagrammet nedan nu en bredd på `8cm` och en höjd på `5cm`:

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

[Öppna detta exempel 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)

Detta exempel ger nu ett större diagram:

![](/files/10b2faa57ecd37bdf58268cfca720429e641c6cf)

### Vertiklar

Det första du behöver göra är att ange dina externa vertiklar och var de ska placeras. Du kan namnge dina vertiklar hur du vill, och ange var de ska placeras med kommandona `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Som används i exemplen ovan:

```latex
% Skapar två vertiklar till vänster som heter i1 och i2
\fmfleft{i1,i2}

% Skapar två vertiklar till höger som heter o1 och o2
\fmfright{o1,o2}
```

Du kan koppla ihop vertiklar med `\fmf`, vilket skapar nya vertiklar om du skickar in namn som ännu inte har skapats. Även som i exemplen ovan:

```latex
% Skapar en fermionlinje mellan i1 och
% den nyskapade v1, och mellan v1 och o1.
\fmf{fermion}{i1,v1,o1}

% Skapar en fotonlinje mellan v1 och den nyskapade v2
\fmf{photon}{v1,v2}
```

### Etiketter

Som [nämnt ovan](#fmfgraph-and-fmfgraph), för att använda etiketter måste ritningen skapas med `fmfgraph*` formen av ritningsmiljön.

Använd `\fmflabel` kommandot för att placera en etikett på en vertikel:

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

där:

* `etikettinnehåll` är etiketten som ska tillämpas på det valda hörnet;
* `diagramhörn` är namnet på hörnet som ska märkas.

Observera att `etikettinnehåll` kan innehålla matematiskt material.

Vi kan återanvända föregående exempel för att lägga till följande etiketter

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

vilket ger det uppdaterade diagrammet som visas nedan:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %OBS fmfgraph*-miljön
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % Lägg till våra etiketter
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Öppna detta exempel 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)

Det här exemplet ger ett Feynmandiagram som innehåller etiketter:

![](/files/69a51f9f3e90b40ef75f146530b4374869649c80)

### Några mer komplexa exempel

Följande, mer avancerade, exempel använder funktioner i `feynmp` som vi inte har diskuterat: se [`feynmp` (`feynmf`) dokumentationen](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—som också innehåller många ytterligare exempel. Dessa diagram publicerades ursprungligen i en Overleaf-mall som innehöll LaTeX-kod reproducerad från en CERN-webbsida som nu bara är tillgänglig via [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—den sidan innehåller fler exempel som du kanske vill prova.

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

[Öppna detta exempel 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)

Det här exemplet ger följande diagram:

![](/files/35650f75d9d08c0e50aa5c7403122accf9c7042d)

#### Exempel 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % nedre och övre hörn
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % inkommande proton till gluonhörnen
    \fmf{fermion,label=$d$}{i1,o1}
    % spänningen förskjuter hörnet åt ena sidan
    \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 centrerar W->cs-hörnet
    \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}
```

[Öppna detta exempel 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)

Det här exemplet ger följande diagram:

![](/files/a5a448d0fab28475f052938cdcd8c3ad3c954c8d)

#### Exempel 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    % nedre och övre hörn
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    % inkommande protoner till gluonhörnen
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    % klumpar vid gluonhörnen, 0.16w är klumpens storlek
    \fmfblob{.16w}{g1,g2}
    % gluon från P1 till vertex1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    % gluon från P2 till vertex2 - notera ordningsändringen!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    % kvarkloop fanns här
    \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}
    % utgående protoner
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    % frys allt på plats
    \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}
```

[Öppna detta exempel 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)

Det här exemplet ger följande diagram:

![](/files/e43134a8a2c46f6e4aaeff53793bb7fe2efb104d)

### Linjestilar

Vi har sett `photon` och `fermion` linjestilarna ovan, men `feynmp` paketet stöder många fler.

| Utseende                                                                             | Namn                                   |
| ------------------------------------------------------------------------------------ | -------------------------------------- |
| ![Feynmf-line-curly.png](/files/271fbb6dc3792316d696f9a30725eb04c6ef5cc4)            | gluon, krusig                          |
| ![Feynmf-line-dbl-curly.png](/files/4010cc1c3a5c6b0cc05bae726a892f148b16f0b6)        | dbl\_curly                             |
| ![Feynmf-line-dashes.png](/files/980e27b2363ff957d78695fe0ba4f77cf7199461)           | streck                                 |
| ![Feynmf-line-dashed-arrow.png](/files/4bab3a78668808a55f41f24e142c85068740d9fd)     | skalär, dashes\_arrow                  |
| ![Feynmf-line-dbl-dashes.png](/files/ed64a0c3d2b256a2939e28a8857326ada30d1985)       | dbl\_dashes                            |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/57871126a53b9dd4c04d3545dfb125f949fe8291) | dbl\_dashes\_arrow                     |
| ![Feynmf-line-dots.png](/files/44f309cb0ec2b9f9764e8924d59eb4ae43c5d46a)             | prickar                                |
| ![Feynmf-line-dots-arrow.png](/files/2dfe9e5208624a968820bc33f49b3a6087115472)       | spöke, dots\_arrow                     |
| ![Feynmf-line-dbl-dots.png](/files/5a43d9edea52a1afa9fd1cf4ac085fdaee44ea75)         | dbl\_dots                              |
| ![Feynmf-line-dbl-dots-arrow.png](/files/16b45c8b3c0240b2a78b50e2b23bb2758ee016e1)   | dbl\_dots\_arrow                       |
|                                                                                      | fantom                                 |
| ![Feynmf-line-phantom-arrow.png](/files/469e36135f64569e98868918a1c5f26e5d9fe63c)    | phantom\_arrow                         |
| ![Feynmf-line-plain.png](/files/cc37bab5eae4bf6e0dafb55022ccce1dd938c06e)            | vanilj, enkel                          |
| ![Feynmf-line-plain-arrow.png](/files/7ca523b910c374410846f907574f08e7a99f3483)      | fermion, elektron, kvark, plain\_arrow |
| ![Feynmf-line-dbl-plain.png](/files/b2c3dde604dfda6e1d764a339f45162c008b9f5b)        | dubbel, dbl\_plain                     |
| ![Feynmf-line-dbl-plain-arrow.png](/files/f9f68b5e114e70d1ed79f1bf2bbbe543650474d0)  | double\_arrow, tung, dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/b672b3b3cc1085ef82f027cac8b99be36ebf4e59)           | boson, foton, vågig                    |
| ![Feynmf-line-dbl-wiggly.png](/files/de384bef111e5a24165133d397014e0f1f5c381c)       | dbl\_wiggly                            |
| ![Feynmf-line-zigzag.png](/files/b5be4b40c78ac9f994e5b17759dcb1893bfedc13)           | sicksack                               |
| ![Feynmf-line-dbl-zigzag.png](/files/c07e2be6fc2d054fe5a073a5b882bb5ee2fd7594)       | dbl\_zigzag                            |

## Vidare läsning

För mer information, se:

* [Kemiska formler](/latex/sv/faltspecifikt/02-chemistry-formulae.md)
* [Molekylorbitaldiagram](/latex/sv/faltspecifikt/04-molecular-orbital-diagrams.md)
* [TikZ-paketet](/latex/sv/figurer-och-tabeller/05-tikz-package.md)
* [Rita diagram direkt i LaTeX](/latex/sv/figurer-och-tabeller/04-picture-environment.md)
* [Infoga bilder](/latex/sv/fler-amnen/27-inserting-images.md)
* [Lista över grekiska bokstäver och matematiska symboler](/latex/sv/matematik/11-list-of-greek-letters-and-math-symbols.md)
* [Den **feynmf** paketdokumentation](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/sv/faltspecifikt/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.
