> 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/no/fagspesifikt/03-feynman-diagrams.md).

# Feynman-diagrammer

## Innledning

Denne hjelpeartikkelen utforsker LaTeX-pakker for å tegne Feynman-diagrammer, en veldig kompakt og intuitiv måte å representere interaksjoner mellom partikler på. Vi skal se på [`tikz-feynman` pakken](https://ctan.org/pkg/tikz-feynman?lang=en), som bruker TikZ til å tegne diagrammer, og [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) som ("bak kulissene") bruker MetaPost.

## Pakken TikZ-Feynman

Den [`tikz-feynman` pakken](https://ctan.org/pkg/tikz-feynman?lang=en) ble publisert i 2016 og bruker Ti*k*Z for å generere Feynman-diagrammer. Ti*k*Z-Feynman bygger på Ti*k*Z-pakken og dens graftegnealgoritmer for å automatisere plasseringen av mange hjørner. Ti*k*Z-Feynman tillater fortsatt finjustert plassering av hjørner, slik at selv komplekse diagrammer kan genereres med letthet. Den mest oppdaterte informasjonen om Ti*k*Z-Feynman vil alltid finnes på [prosjektsiden](http://www.jpellis.me/projects/tikz-feynman/) og i [pakkedokumentasjon](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) på CTAN.

### Oppdatering (9. november 2022)

**VIKTIG oppdatering etter publisering** (9. november 2022): På tidspunktet for oppdatering av denne siden er **TikZ-Feynman-pakken fortsatt inkompatibel med TeX Live-versjoner senere enn TeX Live 2018**—som er TeX Live-versjonen som brukes i [Overleaf-prosjektet som følger denne hjelpeartikkelen.](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-eksemplene nedenfor må kompileres i et Overleaf-prosjekt med **TeX Live-versjon** satt til `2018 (legacy)`. For mer informasjon, se [denne saken rapportert på GitHub](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Laster inn pakken

Etter at pakken er installert, kan Ti*k*Z-Feynman-pakken lastes inn med `\usepackage{tikz-feynman}` i preambelet. Det anbefales at du også angir hvilken versjon av Ti*k*Z-Feynman som skal brukes med `compat` pakkealternativet: `\usepackage[compat=1.0.0]{tikz-feynman}`. Dette sikrer at nye versjoner av Ti*k*Z-Feynman ikke gjør uønskede endringer uten varsel.

### Et første diagram

Feynman-diagrammer kan deklareres med `\feynmandiagram` -kommandoen. Den er analog med `\tikz` -kommandoen fra Ti*k*Z og krever et avsluttende semikolon (`;`) for å avslutte miljøet. For eksempel er et enkelt *s*s-kanal-diagram:

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

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

La oss gå gjennom dette eksemplet linje for linje:

**Linje 1**

\feynmandiagram introduserer Feynman-diagrammet og tillater valgfrie argumenter i hakeparentesene \[]. I dette tilfellet vil horizontal=a to b orientere algoritmens utdata slik at linjen gjennom hjørnene a og b er horisontal.

**Linje 2**

Den venstre fermionlinjen tegnes ved å deklarere tre hjørner (i1, a og i2) og koble dem med kantene --. Akkurat som \feynmandiagram-kommandoen ovenfor tar hver kant også valgfrie argumenter angitt i hakeparentesene \[]. I dette tilfellet vil vi at disse kantene skal ha piler for å indikere at de er fermionlinjer, så vi legger til fermion-stilen på dem. Som du vil se senere, kan valgfrie argumenter også gis til hjørnene på nøyaktig samme måte.

**Linje 3**

Denne kanten forbinder hjørnene a og b med en kant stilisert som et foton. Siden det allerede finnes et hjørne merket a, vil algoritmen koble det til et nytt hjørne merket b.

**Linje 4**

Denne linjen er analog med linje 2 og introduserer to nye hjørner, f1 og f2. Den gjenbruker det tidligere merkede hjørnet b.

**Linje 5**

Avslutt deklarasjonen av Feynman-diagrammet. Det avsluttende semikolonet (;) er viktig.

Navnet som gis til hvert hjørne i grafen spiller ingen rolle. Så i dette eksemplet, `i1`, `i2` betegner de innledende partiklene; `f1`, `f2` betegner de avsluttende partiklene; og `a`, `b` er endepunktene til propagatoren. Det eneste viktige er at det vi kalte `a` i linje 2 også er `a` i linje 3, slik at den underliggende algoritmen behandler dem som det samme hjørnet.

Rekkefølgen hjørnene deklareres i spiller ingen rolle, siden standardalgoritmen omorganiserer alt. For eksempel kan man foretrekke å tegne fermionlinjene på én gang, som i følgende eksempel (merk også at måten vi navnga hjørnene på er helt annerledes):

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

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

Som en siste bemerkning gjøres beregningen av hvor hjørnene skal plasseres vanligvis gjennom en algoritme skrevet i Lua. Som et resultat kreves LuaTeX for å kunne bruke disse algoritmene. Hvis LuaTeX ikke brukes, vil Ti*k*Z-Feynman i stedet falle tilbake på en mer rudimentær algoritme og advare brukeren.

### Legge til stiler

Så langt har eksemplene bare brukt `photon` og `fermion` -stilene. Ti*k*Z-Feynman-pakken kommer med ganske mange ekstra stiler for kanter og hjørner, som alle er dokumentert i [pakkedokumentasjon](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf). For eksempel er det mulig å legge til momentumpiler med `momentum=<text>`, og når det gjelder endehjørner, kan partikkelen merkes med `particle=<text>`. For å demonstrere hvordan de brukes, tar vi det generiske *s*-kanal-diagrammet fra tidligere og gjør det til et elektron-positronpar som annihilerer 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/8ea59097ed8f55dbf78564b4db0b6dce50c2f986)

I tillegg til stilnøklene som er dokumentert nedenfor, kan stilnøkler fra Ti*k*Z også brukes:

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

For en liste over alle de ulike stilene som Ti*k*Z tilbyr, ta en titt i [Ti*k*Z-manualen](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf); den er svært grundig og gir mange brukseksempler.

### Når algoritmen ikke er nok

Som standard brukes `\feynmandiagram` og `\diagram` -kommandoene bruker `spring layout` -algoritmen for å plassere alle kantene.  `spring layout` Algoritmen prøver å «spre» diagrammet så mye som mulig, noe som—for de fleste enklere diagrammer—gir et tilfredsstillende resultat; i noen tilfeller gir dette imidlertid ikke det beste diagrammet, og denne delen ser på alternativer. Det finnes tre hovedalternativer:

**Legg til usynlige kanter**

Selv om den fortsatt bruker standardalgoritmen, er det mulig å tvinge visse hjørner nærmere hverandre ved å legge til ekstra kanter og gjøre dem usynlige med draw=none. Algoritmen vil behandle disse ekstra kantene på samme måte, men de tegnes ganske enkelt ikke til slutt;

**Bruk en annen algoritme**

Under visse omstendigheter kan andre algoritmer være bedre egnet. Noen av de andre algoritmene for grafoppsett er सूचीført i pakke-dokumentasjonen, og en fullstendig liste over alle algoritmene og parameterne deres finnes i TikZ-manualen;

**Manuell plassering**

Som en siste utvei vil svært kompliserte eller uvanlige diagrammer kreve at hvert hjørne plasseres manuelt.

#### Usynlige kanter

Den underliggende algoritmen behandler alle kanter på nøyaktig samme måte når den beregner hvor alle hjørnene skal plasseres, og selve tegningen av diagrammet (etter at plasseringene er beregnet) gjøres separat. Derfor er det mulig å legge til kanter i algoritmen, men hindre dem i å bli tegnet ved å legge til `draw=none` i kantstilen.

Dette er særlig nyttig hvis du vil sikre at start- eller slutt-tilstandene forblir nærmere hverandre enn de ellers ville gjort, slik det er illustrert i følgende eksempel (merk at `opacity=0.2` brukes i stedet for `draw=none` for å vise nøyaktig hvor kanten er plassert).

```
% Ingen usynlig kant for å holde de to fotonene 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/c92eaed49e95100689ee1fe709e77ac4193f945e)

```
% Usynlig kant sikrer at fotonene 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/76de3c870478c523fb9b9a4aaeaadf57143bf158)

#### Alternative algoritmer

Graftegnebiblioteket fra Ti*k*Z har flere forskjellige algoritmer for å plassere hjørnene. Som standard, `\diagram` og `\feynmandiagram` bruk `spring layout` algoritmen for å plassere hjørnene.  `spring layout` prøver å spre alt ut så mye som mulig, noe som i de fleste tilfeller gir et fint diagram; det finnes imidlertid visse tilfeller der dette ikke fungerer. Et godt eksempel der `spring layout` ikke fungerer, er henfall der vi har den henfallende partikkelen til venstre og alle datterpartiklene til høyre.

```
% Bruker 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/ad3dc93e9f1444bb4d1910f19181468b45624687)

```
% Bruker den lagdelte layouten
\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/a298c70f98e9d84a2675fe4878656ee98a4de460)

Du vil kanskje merke at vi i tillegg til å legge til `lagdelt layout` -stilen til `\feynmandiagram`, endret vi også rekkefølgen vi spesifiserer hjørnene i. Dette er fordi `lagdelt layout` algoritmen faktisk tar hensyn til rekkefølgen hjørnene deklareres i (i motsetning til standard- `spring layout`); som et resultat, `c--f2, c--f3` har en annen betydning enn `f2--c--f3`. I det første tilfellet er `f2` og `f3` begge på laget nedenfor `c` som ønsket; mens det siste tilfellet plasserer `f2` på laget over `c` (det samme laget som W-bosonen starter fra).

#### Manuell plassering

I mer kompliserte diagrammer er det ganske sannsynlig at ingen av algoritmene fungerer, uansett hvor mange usynlige kanter som legges til. I slike tilfeller må hjørnene plasseres manuelt. Ti*k*Z-Feynman tillater at hjørner plasseres manuelt ved å bruke `\vertex` kommandoen.

Den `\vertex` -kommandoen er bare tilgjengelig innenfor `feynman` -miljøet (som i seg selv bare er tilgjengelig inne i et `tikzpicture`). `feynman` Miljøet laster inn alle relevante stiler fra Ti*k*Z-Feynman og deklarerer ekstra Ti*k*Z-Feynman-spesifikke kommandoer som `\vertex` og `\diagram`. Dette er inspirert av PGFPlots og bruken av `axis` -miljøet.

Den `\vertex` -kommandoen er svært analog med `\node` -kommandoen fra Ti*k*Z, med det bemerkelsesverdige unntaket at hjørneinnholdet er valgfritt; det vil si at du ikke trenger å ha `{<text>}` på slutten. I tilfelle der `{}` er angitt, får hjørnet automatisk `particle` -stilen, og ellers er det et vanlig hjørne (med størrelse null).

For å angi hvor hjørnene skal plasseres, er det mulig å oppgi eksplisitte koordinater, selv om det sannsynligvis er enklest å bruke `posisjonering` biblioteket fra Ti*k*Z, som lar hjørner plasseres relativt til eksisterende hjørner. Ved å bruke relative plasseringer er det mulig å enkelt justere én del av grafen, og alt vil tilpasse seg deretter—alternativet er å manuelt justere koordinatene til hvert berørte hjørne.

Til slutt, når alle hjørnene er spesifisert, brukes `\diagram*` -kommandoen til å spesifisere alle kantene. Dette fungerer på omtrent samme måte som `\diagram` (og også `\feynmandiagram`), bortsett fra at den bruker en veldig enkel algoritme for å plassere nye noder og tillater at eksisterende (navngitte) noder inkluderes. For å referere til en eksisterende node må noden angis i parentes.

Hele denne prosessen med å spesifisere nodene og deretter tegne kantene mellom dem vises nedenfor for muonhenfallet:

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

## Andre pakker for å tegne Feynman-diagrammer

Det finnes flere alternativer til TikZ-Feynman-pakken:

* [`feynmf`](https://ctan.org/pkg/feynmf): lager bitmapgrafikk via [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (inkludert med `feynmf`) lager vektorgrafikk via [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): avledet fra `feynmp`

Den `feynmp-auto` pakken er i praksis en utvidelse av `feynmp` pakken, utviklet for å automatisere konverteringen av MetaPosts PostScript-kode til PDF-data for bruk i pdfTeX, LuaTeX og XeTeX. Følgende eksempler bruker alle `feynmp-auto`.

### Innledning

Den `feynmf`, `feynmp` og `feynmp-auto` pakker lar deg enkelt tegne Feynman-diagrammer ved å spesifisere hjørnene, partiklene og etikettene deres, og deretter automatisk utføre layouten for å tegne diagrammet ditt.

#### En oversikt over bruk av feynmf-baserte pakker

For å lage Feynman-diagrammer må du:

1. opprette en `fmfile` -miljø for å inneholde ett eller flere diagrammer, der hvert av dem er omsluttet av et `fmfgraph` eller `fmfgraph*` -miljø—forskjellen mellom den stjernede og ikke-stjernede formen er [forklart nedenfor](#fmfgraph-and-fmfgraph);
2. bruk hvert `fmfgraph` eller `fmfgraph*` -miljø til å inneholde tegneinstruksjonene som kreves for å lage 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}
```

der `file-name` er navnet på en fil som vil bli brukt til å inneholde MetaPost-kodebeskrivelsene av de individuelle tegningene definert i `fmfgraph`/`fmfgraph*` miljøer.

Hver tegning har formen

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

% tegneinstruksjoner

\end{fmfgraph}
```

eller, for den stjernede versjonen (`fmfgraph*`)

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

% tegneinstruksjoner

\end{fmfgraph*}
```

der `(width,height)` definerer størrelsen på diagrammet uttrykt i enheter av [`\unitlength`](#note-on-unitlength).

MetaPost-koden i `file-name` behandles for å lage grafikken(e) som representerer Feynman-diagrammet/dine. Et `fmfile` -miljø kan inneholde opptil 256 individuelle tegninger.

#### fmfgraph og fmfgraph\*

* `fmfgraph`: dette miljøet inneholder tegneinstruksjonene (beskrivelsen) av et enkelt Feynman-diagram. Det vil bli plassert *på stedet til miljøet*. Dette miljøet støtter ikke etiketter, bruk `fmfgraph*` for å inkludere etiketter i diagrammene dine.
* `fmfgraph*` samme som `fmfgraph`, men omsluttet av en [`picture` miljøet](/latex/no/figurer-og-tabeller/04-picture-environment.md) av samme størrelse. Det støtter bruk av LaTeX-etiketter.

### Et eksempel

La oss starte med et raskt 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}
```

[Åpne dette eksemplet 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 eksemplet gir følgende resultat:

![](/files/48dd6f34535864225d8a349e68c21ccf08803976)

I dette eksemplet setter `fmfgraph` -miljøet tegningens bredde og høyde til henholdsvis 120 og 80:

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

ved bruk av enheter bestemt av verdien til `\unitlength`, som har standardverdien 1pt; følgelig tildeles dette diagrammet en bredde på 120pt og en høyde på 80pt.

#### Merknad om \unitlength

Siden `\unitlength` er en LaTeX-dimensjon; du kan endre verdien ved å bruke `\setlength` -kommandoen; for eksempel kan du skrive dette for å definere bredden og høyden på tegninger i cm-enheter:

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

Ved å gjenskape eksemplet ovenfor har diagrammet nedenfor nå en bredde på `8cm` og en høyde på `5cm`:

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

[Åpne dette eksemplet 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 eksemplet gir nå et større diagram:

![](/files/10b3f39d8bf045ed5a8f0d116f4208c4b38a0ffd)

### Hjørner

Det første du må gjøre er å spesifisere de ytre hjørnene dine, og hvor de skal plasseres. Du kan navngi hjørnene dine akkurat som du vil, og angi hvor de skal plasseres med kommandoene `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Som brukt i eksemplene ovenfor:

```latex
% Oppretter to hjørner til venstre kalt i1 og i2
\fmfleft{i1,i2}

% Oppretter to hjørner til høyre kalt o1 og o2
\fmfright{o1,o2}
```

Du kan koble hjørner med `\fmf`, som vil opprette nye hjørner hvis du sender inn navn som ennå ikke er opprettet. Også som brukt i eksemplene ovenfor:

```latex
% Vil opprette en fermionlinje mellom i1 og
% den nylig opprettede v1, og mellom v1 og o1.
\fmf{fermion}{i1,v1,o1}

% Vil opprette en fotonlinje mellom v1 og den nylig opprettede v2
\fmf{photon}{v1,v2}
```

### Etiketter

Som [nevnt ovenfor](#fmfgraph-and-fmfgraph), for å bruke etiketter må tegningen opprettes ved hjelp av `fmfgraph*` -formen av tegnemiljøet.

Bruk `\fmflabel` -kommandoen for å plassere en etikett på et hjørne:

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

der:

* `etikett-innhold` er etiketten som skal brukes på den valgte vertexen;
* `diagram-vertex` er navnet på vertexen som skal merkes.

Merk at `etikett-innhold` kan inneholde matematisk materiale.

Vi kan gjenbruke det forrige eksemplet for å legge til følgende etiketter

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

som gir det oppdaterte diagrammet vist nedenfor:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %NOTE fmfgraph*-miljøet
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % Legg til etikettene våre
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Åpne dette eksemplet 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 eksemplet produserer et Feynman-diagram som inneholder etiketter:

![](/files/09ab7dc723e129e397f4f7a31e0e34eb8a996b04)

### Noen mer komplekse eksempler

De følgende, mer avanserte, eksemplene bruker funksjoner i `feynmp` som vi ikke har diskutert: se [`feynmp` pakken (`feynmf`) dokumentasjon](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—som også inneholder en rekke अतिरिक्त eksempler. Disse diagrammene ble opprinnelig publisert i en Overleaf-mal som inneholder LaTeX-kode gjengitt fra en CERN-nettside som nå bare er tilgjengelig via [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—den siden inneholder flere eksempler du kanskje 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}
```

[Åpne dette eksemplet 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 eksemplet produserer følgende diagram:

![](/files/a58b655f94f6d7877b2d2d8b524c92f90b2391b1)

#### Eksempel 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % bunn- og toppnoder
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % innkommende proton til gluon-vertexer
    \fmf{fermion,label=$d$}{i1,o1}
    % spenning skyver vertexen til den ene siden
    \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 sentrerer W->cs-vertexen
    \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}
```

[Åpne dette eksemplet 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 eksemplet produserer følgende diagram:

![](/files/e1630e4c223e7958eaba1433ea02858b752d6364)

#### Eksempel 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    % bunn- og toppnoder
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    % innkommende protoner til gluon-vertexer
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    % klatter ved gluon-vertexene, 0.16w er størrelsen på klatten
    \fmfblob{.16w}{g1,g2}
    % gluon fra P1 til vertex1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    % gluon fra P2 til vertex2 - merk rekkefølgeendringen!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    % kvarksløyfen 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}
    % utgående protoner
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    % frys alt på plass
    \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}
```

[Åpne dette eksemplet 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 eksemplet produserer følgende diagram:

![](/files/9a53b9d7a9267404bef0fd375d9e11dc76446b09)

### Linjestiler

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

| Utseende                                                                             | Navn                                    |
| ------------------------------------------------------------------------------------ | --------------------------------------- |
| ![Feynmf-line-curly.png](/files/515de35166f54780b9a6edbdc8ff7b6dd900fbee)            | gluon, curly                            |
| ![Feynmf-line-dbl-curly.png](/files/1650811da67afd641a683217c5363bbfb2583260)        | dbl\_curly                              |
| ![Feynmf-line-dashes.png](/files/68f7e5c35a545e1d0fd6e4775acf8f7de7f7f704)           | dashes                                  |
| ![Feynmf-line-dashed-arrow.png](/files/68f9c260897751381df84286a8a11f7c26ce2a70)     | scalar, dashes\_arrow                   |
| ![Feynmf-line-dbl-dashes.png](/files/f4c8fb15efbb736c0e3b6179fbe738e34041964b)       | dbl\_dashes                             |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/d88fb4577ab63acb981e50a9b20b818fe3912b78) | dbl\_dashes\_arrow                      |
| ![Feynmf-line-dots.png](/files/7cfc3b397a534602e657162d0d5bde81a0ffc4a7)             | dots                                    |
| ![Feynmf-line-dots-arrow.png](/files/9fee695bbd9cc775a12e5c39e288b979bb9b3fbc)       | ghost, dots\_arrow                      |
| ![Feynmf-line-dbl-dots.png](/files/ff502339962e9402a61bf51e8e8e7e856834f0bb)         | dbl\_dots                               |
| ![Feynmf-line-dbl-dots-arrow.png](/files/bff9b4f01aa9975dc273206f00960b1680976e9e)   | dbl\_dots\_arrow                        |
|                                                                                      | phantom                                 |
| ![Feynmf-line-phantom-arrow.png](/files/2f29833faa415b8f90da53b91361c1697977c5eb)    | phantom\_arrow                          |
| ![Feynmf-line-plain.png](/files/7ed39d2ad20bc2c2feacea34b6cb62fefe775ee9)            | vanilla, plain                          |
| ![Feynmf-line-plain-arrow.png](/files/827b4ef68fdeffad9a04f9ceaa8755c6629e1727)      | fermion, electron, quark, plain\_arrow  |
| ![Feynmf-line-dbl-plain.png](/files/e47a72c8dc4f743ddb424212821c76c564b5de09)        | double, dbl\_plain                      |
| ![Feynmf-line-dbl-plain-arrow.png](/files/3285120e2e5ca87d7988fa99654a8ef3d4f38d5c)  | double\_arrow, heavy, dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/90917cc0822712fc0189f226213d415ef4d2e212)           | boson, photon, wiggly                   |
| ![Feynmf-line-dbl-wiggly.png](/files/84427b4e34fbee09cb9373842ae65d5bb9f4338e)       | dbl\_wiggly                             |
| ![Feynmf-line-zigzag.png](/files/13ad35862442b752ccfec2099094c3d39fda7528)           | zigzag                                  |
| ![Feynmf-line-dbl-zigzag.png](/files/a44999be06791b2f8674bd40c59dde1eb41c26a6)       | dbl\_zigzag                             |

## Videre lesning

For mer informasjon, se:

* [Kjemiske formler](/latex/no/fagspesifikt/02-chemistry-formulae.md)
* [Molekylorbitaldiagrammer](/latex/no/fagspesifikt/04-molecular-orbital-diagrams.md)
* [TikZ-pakke](/latex/no/figurer-og-tabeller/05-tikz-package.md)
* [Tegn diagrammer direkte i LaTeX](/latex/no/figurer-og-tabeller/04-picture-environment.md)
* [Sette inn bilder](/latex/no/flere-emner/27-inserting-images.md)
* [Liste over greske bokstaver og matematiske symboler](/latex/no/matematikk/11-list-of-greek-letters-and-math-symbols.md)
* [Den **feynmf** pakkedokumentasjon](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/no/fagspesifikt/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.
