> 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/cs/pro-konkretni-obor/03-feynman-diagrams.md).

# Feynmanovy diagramy

## Úvod

Tento článek nápovědy se věnuje balíčkům LaTeXu pro kreslení Feynmanových diagramů, velmi kompaktnímu a intuitivnímu způsobu reprezentace interakcí mezi částicemi. Prozkoumáme [`tikz-feynman` accents](https://ctan.org/pkg/tikz-feynman?lang=en), který používá TikZ ke kreslení diagramů, a [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) který („v zákulisí“) používá MetaPost.

## Balíček TikZ-Feynman

Ta [`tikz-feynman` accents](https://ctan.org/pkg/tikz-feynman?lang=en) byl vydán v roce 2016 a používá Ti*k*Z k vytváření Feynmanových diagramů. Ti*k*Z-Feynman staví na balíčku Ti*k*Z a jeho algoritmech pro kreslení grafů, aby automatizoval umístění mnoha vrcholů. Ti*k*Z-Feynman stále umožňuje jemně doladěné umístění vrcholů, takže i složité diagramy lze vytvářet snadno. Nejaktuálnější informace o Ti*k*Z-Feynman budou vždy na [stránce projektu](http://www.jpellis.me/projects/tikz-feynman/) a v [dokumentace balíčku](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) na CTANu.

### Aktualizace (9. listopadu 2022)

**DŮLEŽITÁ dodatečná aktualizace po vydání** (9. listopadu 2022): V době aktualizace této stránky je **balíček TikZ-Feynman stále nekompatibilní s verzemi TeX Live novějšími než TeX Live 2018**—což je verze TeX Live použitá v [projektu Overleaf doprovázejícím tento článek nápovědy.](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=) Všechny níže uvedené příklady TikZ-Feynman bude nutné překládat v projektu Overleaf s **Verze TeX Live** nastaveným na `2018 (starší)`. Další informace viz [tento problém nahlášený na GitHubu](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Načtení balíčku

Po instalaci balíčku lze balíček Ti*k*Z-Feynman načíst pomocí `\usepackage{tikz-feynman}` v preambuli. Doporučuje se také určit verzi Ti*k*Z-Feynman, kterou budete používat, pomocí `compat` volbu balíčku: `\usepackage[compat=1.0.0]{tikz-feynman}`. Tím zajistíte, že žádné nové verze Ti*k*Z-Feynman nezpůsobí bez varování žádné nežádoucí změny.

### První diagram

Feynmanovy diagramy lze deklarovat pomocí `\feynmandiagram` příkazu. Je obdobný příkazu `\tikz` z balíčku Ti*k*Z a vyžaduje na konci středník (`;`) k ukončení prostředí. Například jednoduchý *s*-kanálový diagram je:

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

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

Projděme si tento příklad řádek po řádku:

**Řádek 1**

\feynmandiagram zavádí Feynmanův diagram a umožňuje zadat volitelné argumenty v hranatých závorkách \[]. V tomto případě horizontal=a to b nastavuje výstupy algoritmu tak, aby byla přímka procházející vrcholy a a b vodorovná.

**Řádek 2**

Levá fermionová linie se kreslí deklarováním tří vrcholů (i1, a a i2) a jejich propojením hranami --. Stejně jako výše uvedený příkaz \feynmandiagram má i každá hrana volitelné argumenty zadané v hranatých závorkách \[]. V tomto případě chceme, aby tyto hrany měly šipky naznačující, že jde o fermionové linie, takže k nim přidáme styl fermion. Jak uvidíte později, volitelné argumenty lze stejným způsobem zadat i vrcholům.

**Řádek 3**

Tato hrana spojuje vrcholy a a b hranou stylizovanou jako foton. Protože už existuje vrchol označený a, algoritmus jej připojí k novému vrcholu označenému b.

**Řádek 4**

Tento řádek je obdobný řádku 2 a zavádí dva nové vrcholy, f1 a f2. Znovu používá dříve označený vrchol b.

**Řádek 5**

Dokončete deklaraci Feynmanova diagramu. Poslední středník (;) je důležitý.

Název přidělený každému vrcholu v grafu není důležitý. Takže v tomto příkladu, `i1`, `i2` označují počáteční částice; `f1`, `f2` označují konečné částice; a `a`, `b` jsou koncové body propagátoru. Jediný důležitý aspekt je, že to, co jsme nazvali `a` v řádku 2, je také `a` v řádku 3, takže je podkladový algoritmus považuje za tentýž vrchol.

Pořadí, v jakém jsou vrcholy deklarovány, není důležité, protože výchozí algoritmus vše přeuspořádá. Například můžete dát přednost kreslení fermionových linií najednou, jak ukazuje následující příklad (všimněte si také, že způsob, jakým jsme pojmenovali vrcholy, je zcela odlišný):

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

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

Na závěr: výpočet toho, kam mají být vrcholy umístěny, se obvykle provádí pomocí algoritmu napsaného v Luě. Proto je k využití těchto algoritmů vyžadován LuaTeX. Pokud LuaTeX není použit, Ti*k*Z-Feynman se přepne na primitivnější algoritmus a místo toho uživatele upozorní.

### Přidávání stylů

Dosud příklady používaly pouze styly `photon` a `fermion` stylů. Balíček Ti*k*Z-Feynman obsahuje poměrně dost dalších stylů pro hrany a vrcholy, které jsou všechny zdokumentovány v [dokumentace balíčku](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf). Například je možné přidat šipky hybnosti pomocí `momentum=<text>`, a v případě koncových vrcholů lze částici označit pomocí `particle=<text>`. Pro ukázku jejich použití vezmeme obecný *s*-kanálový diagram z dřívějška a upravíme jej na anihilaci elektron-pozitronových párů na miony:

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

Kromě níže zdokumentovaných klíčů stylů lze použít i klíče stylů z Ti*k*Z:

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

Seznam všech různých stylů, které Ti*k*Z poskytuje, najdete v [Ti*k*manuálu Ti](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf); je mimořádně podrobný a uvádí mnoho příkladů použití.

### Když algoritmus nestačí

Ve výchozím nastavení se používá `\feynmandiagram` a `\diagram` příkazy používají `algoritmus rozložení s pružinami` k umístění všech hran.  `algoritmus rozložení s pružinami` Algoritmus se snaží diagram co nejvíce „rozprostřít“, což u většiny jednodušších diagramů dává uspokojivý výsledek; v některých případech však nevytvoří nejlepší diagram a tato část se podívá na alternativy. Existují tři hlavní alternativy:

**Přidat neviditelné hrany**

Při stále použití výchozího algoritmu je možné vynutit, aby některé vrcholy byly blíže u sebe, přidáním dalších hran a jejich zneviditelněním pomocí draw=none. Algoritmus bude s těmito dodatečnými hranami zacházet stejně, ale nakonec se jednoduše nevykreslí;

**Použít jiný algoritmus**

V některých situacích mohou být vhodnější jiné algoritmy. Některé další algoritmy pro rozložení grafů jsou uvedeny v dokumentaci balíčku a úplný seznam všech algoritmů a jejich parametrů je v manuálu TikZ;

**Ruční umístění**

Jako poslední možnost budou velmi složité nebo neobvyklé diagramy vyžadovat ruční umístění každého vrcholu.

#### Neviditelné hrany

Podkladový algoritmus zachází se všemi hranami při výpočtu umístění všech vrcholů naprosto stejně a vlastní kreslení diagramu (po vypočtení umístění) se provádí odděleně. V důsledku toho je možné algoritmu přidat hrany, ale zabránit jejich vykreslení přidáním `draw=none` do stylu hrany.

To je obzvlášť užitečné, pokud chcete zajistit, aby počáteční nebo konečné stavy zůstaly blíže u sebe, než by jinak byly, jak ukazuje následující příklad (všimněte si, že `opacity=0.2` se používá místo `draw=none` k ilustraci toho, kde přesně se hrana nachází).

```
% Žádná neviditelná hrana, aby oba fotony zůstaly pohromadě
\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/210795d1b21b55cd7eb6449a8d13a39aa705057f)

```
% Neviditelná hrana zajišťuje, že jsou fotony rovnoběžné
\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/2f49eae68ae7fedaa125b5ab90a4e6fa93aa4452)

#### Alternativní algoritmy

Knihovna pro kreslení grafů z Ti*k*Z má několik různých algoritmů pro umístění vrcholů. Ve výchozím nastavení, `\diagram` a `\feynmandiagram` použijte `algoritmus rozložení s pružinami` algoritmus k umístění vrcholů.  `algoritmus rozložení s pružinami` se snaží vše co nejvíce rozprostřít, což ve většině případů dává pěkný diagram; existují však určité případy, kdy to nefunguje. Dobrým příkladem, kde `algoritmus rozložení s pružinami` to nefunguje, jsou rozpady, kde je rozpadová částice vlevo a všechny dceřiné částice vpravo.

```
% Použití výchozího rozložení s pružinami
\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/6959054ac12284c3a445d2d13689755e23213e93)

```
% Použití vrstveného rozložení
\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/88e8c4bbd1fe4bec7d077728e6e7cee3e36fffeb)

Můžete si všimnout, že kromě přidání stylu `vrstveného rozložení` k `\feynmandiagram`, jsme také změnili pořadí, v jakém specifikujeme vrcholy. Je to proto, že `vrstveného rozložení` algoritmus skutečně bere v úvahu pořadí, v jakém jsou vrcholy deklarovány (na rozdíl od výchozího `algoritmus rozložení s pružinami`); v důsledku toho, `c--f2, c--f3` má jiný význam než `f2--c--f3`. V prvním případě `f2` a `f3` jsou oba na vrstvě pod `c` tak, jak je žádoucí; zatímco druhý případ umisťuje `f2` na vrstvu nad `c` (tedy na stejnou vrstvu, odkud W boson vychází).

#### Ruční umístění

U složitějších diagramů je dost pravděpodobné, že nebude fungovat žádný z algoritmů, bez ohledu na to, kolik neviditelných hran se přidá. V takových případech musí být vrcholy umístěny ručně. Ti*k*Z-Feynman umožňuje ruční umisťování vrcholů pomocí `\vertex` příkaz.

Ta `\vertex` příkazu, který je dostupný pouze v rámci `feynman` prostředí (které samo o sobě je dostupné pouze uvnitř `tikzpicture`).  `feynman` prostředí načítá všechny relevantní styly z Ti*k*Z-Feynman a deklaruje další příkazy specifické pro Ti*k*Z-Feynman, jako například `\vertex` a `\diagram`. To je inspirováno PGFPlots a jeho používáním `prostředí` prostředí.

Ta `\vertex` příkaz je velmi podobný `\node` z balíčku Ti*k*Z, s výraznou výjimkou, že obsah vrcholu je volitelný; to znamená, že nemusíte mít `{<text>}` na konci. V případě, že `{}` je zadán, je vrcholu automaticky přiřazen `particle` styl particle, a jinak jde o běžný (nulové velikosti) vrchol.

Pro určení toho, kam mají vrcholy přijít, je možné zadat explicitní souřadnice, i když je pravděpodobně nejjednodušší použít `positioning` knihovnu z Ti*k*Z, která umožňuje umisťovat vrcholy relativně vůči existujícím vrcholům. Pomocí relativního umístění lze snadno upravit jednu část grafu a vše se podle toho přizpůsobí—alternativou je ručně upravit souřadnice každého dotčeného vrcholu.

Nakonec, jakmile jsou všechny vrcholy zadány, se `\diagram*` příkaz používá k určení všech hran. Funguje to v podstatě stejně jako `\diagram` (a také `\feynmandiagram`), jenže používá velmi základní algoritmus k umisťování nových uzlů a umožňuje zahrnout i existující (pojmenované) uzly. Aby bylo možné odkazovat na existující uzel, musí být uzel uveden v závorkách.

Celý tento proces zadávání uzlů a následného kreslení hran mezi nimi je níže ukázán na rozpadu mionu:

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

## Další balíčky pro kreslení Feynmanových diagramů

Existuje několik alternativ k balíčku TikZ-Feynman:

* [`feynmf`](https://ctan.org/pkg/feynmf): vytváří bitmapovou grafiku pomocí [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (dodávaný s `feynmf`) vytváří vektorovou grafiku pomocí [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): odvozený z `feynmp`

Ta `feynmp-auto` balíček je ve skutečnosti rozšířením `feynmp` balíčku navrženého k automatizaci převodu PostScriptového kódu MetaPostu na PDF data pro použití v pdfTeXu, LuaTeXu a XeTeXu. Následující příklady všechny používají `feynmp-auto`.

### Úvod

Ta `feynmf`, `feynmp` a `feynmp-auto` balíčky vám umožní snadno kreslit Feynmanovy diagramy zadáním vrcholů, částic a jejich popisků a poté automaticky provést rozložení pro vykreslení diagramu.

#### Přehled používání balíčků založených na feynmf

Pro vytvoření Feynmanových diagramů je třeba:

1. vytvořit `fmfile` prostředí pro jeden nebo více diagramů, z nichž každý je obsažen v prostředí `fmfgraph` nebo `fmfgraph*` prostředí—rozdíl mezi hvězdičkovou a nehvezdičkovou formou je [vysvětleno níže](#fmfgraph-and-fmfgraph);
2. použít každé `fmfgraph` nebo `fmfgraph*` prostředí k uložení kreslicích pokynů potřebných k vytvoření jednoho Feynmanova diagramu.

Ta `fmfile` prostředí má následující podobu

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

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

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

\end{fmffile}
```

kde `file-name` je název souboru, který bude použit k uložení popisů kódu MetaPostu jednotlivých kreseb definovaných v rámci `fmfgraph`/`fmfgraph*` prostředími.

Každá kresba má podobu

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

% kreslicí pokyny

\end{fmfgraph}
```

nebo, pro hvězdičkovou verzi (`fmfgraph*`)

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

% kreslicí pokyny

\end{fmfgraph*}
```

kde `(width,height)` určuje velikost diagramu vyjádřenou v jednotkách [`\unitlength`](#note-on-unitlength).

Kód MetaPostu v `file-name` je zpracován a vytvoří grafiku reprezentující vaše Feynmanovy diagramy.  `fmfile` prostředí může obsahovat až 256 jednotlivých kreseb.

#### fmfgraph a fmfgraph\*

* `fmfgraph`: toto prostředí obsahuje kreslicí pokyny (popis) jednoho Feynmanova diagramu. Bude umístěno *na místě prostředí*. Toto prostředí nepodporuje popisky, k jejich zahrnutí použijte `fmfgraph*` pro zahrnutí popisků do vašich diagramů.
* `fmfgraph*` stejné jako `fmfgraph`, ale uzavřené v [`picture` prostředí](/latex/cs/obrazky-a-tabulky/04-picture-environment.md) o stejné velikosti. Podporuje použití popisků LaTeXu.

### Příklad

Začněme rychlým příkladem:

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

[Otevřete tento příklad v Overleafu](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)

Tento příklad vytvoří následující výstup:

![](/files/d0d4496976dff81944d42b70dd9791cd660104f0)

V tomto příkladu `fmfgraph` prostředí nastavuje šířku a výšku kresby na 120 a 80:

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

při použití jednotek určených hodnotou `\unitlength`, která má výchozí hodnotu 1pt; v důsledku toho je tomuto diagramu přidělena šířka 120pt a výška 80pt.

#### Poznámka k \unitlength

Protože `\unitlength` je rozměr LaTeXu, jehož hodnotu můžete změnit pomocí `\setlength` příkazu; například chcete-li definovat šířku a výšku kreseb v jednotkách cm, můžete napsat:

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

Po zopakování výše uvedeného příkladu má nyní diagram níže šířku `8 cm` a výšku `5 cm`:

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

[Otevřít tento příklad v Overleafu.](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)

Tento příklad nyní vytváří větší diagram:

![](/files/82dda87e65e5686accdddd9afc79c20ae88a63d5)

### Vrcholy

První věc, kterou musíte udělat, je určit své vnější vrcholy a jejich umístění. Vrcholy můžete pojmenovat libovolně a jejich umístění zadat pomocí příkazů `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Jak je použito ve výše uvedených příkladech:

```latex
% Vytvoří dva vrcholy vlevo nazvané i1 a i2
\fmfleft{i1,i2}

% Vytvoří dva vrcholy vpravo nazvané o1 a o2
\fmfright{o1,o2}
```

Vrcholy můžete propojit pomocí `\fmf`, který vytvoří nové vrcholy, pokud předáte názvy, které dosud nebyly vytvořeny. Také jak je použito ve výše uvedených příkladech:

```latex
% Vytvoří fermionovou linku mezi i1 a
% nově vytvořeným v1 a mezi v1 a o1.
\fmf{fermion}{i1,v1,o1}

% Vytvoří fotonovou linku mezi v1 a nově vytvořeným v2
\fmf{photon}{v1,v2}
```

### Popisky

Jak [bylo uvedeno výše](#fmfgraph-and-fmfgraph), pro použití popisků musí být kresba vytvořena pomocí `fmfgraph*` varianty prostředí pro kreslení.

Použijte `\fmflabel` příkazu pro umístění popisku na vrchol:

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

kde:

* `obsah popisku` je popisek, který se má přiřadit zvolenému vrcholu;
* `vrchol diagramu` je název vrcholu, který se má popsat.

Všimněte si, že `obsah popisku` může zahrnovat matematický materiál.

Můžeme znovu použít předchozí příklad a přidat následující popisky

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

což vytvoří aktualizovaný diagram zobrazený níže:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %POZNÁMKA: prostředí fmfgraph*
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % Přidáme naše popisky
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Otevřít tento příklad v Overleafu.](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)

Tento příklad vytváří Feynmanův diagram obsahující popisky:

![](/files/e5ac5107cc55f1314c4adbcb8eab56daa6f70103)

### Některé další složitější příklady

Následující, pokročilejší příklady využívají funkce `feynmp` které jsme neprobírali: viz [`feynmp` balíček (`feynmf`) dokumentace](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—která také obsahuje četné další příklady. Tyto diagramy byly původně zveřejněny v šabloně Overleaf obsahující kód LaTeX převzatý z webové stránky CERNu, která je nyní přístupná pouze přes [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—tato stránka obsahuje další příklady, které si možná budete chtít vyzkoušet.

#### Příklad 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}
```

[Otevřete tento příklad v Overleafu](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)

Tento příklad vytváří následující diagram:

![](/files/e55bdce367e8cc6e871d0e977c4db342b237e8dd)

#### Příklad 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % spodní a horní vrcholy
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % příchozí proton do gluonových vrcholů
    \fmf{fermion,label=$d$}{i1,o1}
    % napětí posune vrchol na jednu stranu
    \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 vystředí vrchol W->cs
    \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}
```

[Otevřete tento příklad v Overleafu](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)

Tento příklad vytváří následující diagram:

![](/files/7c6f8d3d1501f8b4c4ff89f376c1449711e2f2b0)

#### Příklad 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    %spodní a horní vrcholy
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    %příchozí protony ke gluonovým vrcholům
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    %blobů na gluonových vrcholech, 0.16w je velikost blobu
    \fmfblob{.16w}{g1,g2}
    %gluon z P1 do vrcholu1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    %gluon z P2 do vrcholu2 - všimněte si změny pořadí!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    %kvarková smyčka byla zde
    \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}
    %odchozí protony
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    %zafixujte vše na místě
    \fmffreeze
    \renewcommand{\P}[3]{\fmfi{plain}{%
        vpath(__#1,__#2) shifted (thick*(#3))}}
    %čáry na P1
    \P{P1}{g1}{2,0}
    \P{P1}{g1}{-2,1}
    %čáry na p2
    \P{P2}{g2}{2,1}
    \P{P2}{g2}{-2,0}
    %čáry na P1'
    \P{g1}{P1'}{-2,-1}
    \P{g1}{P1'}{2,0}
    %čáry na P2'
    \P{g2}{P2'}{-2,0}
    \P{g2}{P2'}{2,-1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Otevřete tento příklad v Overleafu](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)

Tento příklad vytváří následující diagram:

![](/files/1b0484685cf9921c115c41d05dd4a7a9a9e1a7ff)

### Styly čar

Viděli jsme výše `photon` a `fermion` styly čar, ale `feynmp` balíček podporuje mnohem více.

| Vzhled                                                                               | Název(y)                                |
| ------------------------------------------------------------------------------------ | --------------------------------------- |
| ![Feynmf-line-curly.png](/files/f5d433e9ec4a91488c76bb8dcfffcb5d1cd1a962)            | gluon, curly                            |
| ![Feynmf-line-dbl-curly.png](/files/b32d4de56727020285f48e17296a5b015ab15b49)        | dbl\_curly                              |
| ![Feynmf-line-dashes.png](/files/8583244e65bf219078679908ccd6e1ffe7b72a86)           | dashes                                  |
| ![Feynmf-line-dashed-arrow.png](/files/f63ecd0a8114d534625505f24e57502b61fb1d3a)     | scalar, dashes\_arrow                   |
| ![Feynmf-line-dbl-dashes.png](/files/e5f0074a0a562b568384b657319edb2187bd9edd)       | dbl\_dashes                             |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/4ebeb63892ee1d9e8d5dbf3d18a0cdd98f0ca663) | dbl\_dashes\_arrow                      |
| ![Feynmf-line-dots.png](/files/b0c3772eb3c3993a75b256e1e94095201364fb50)             | dots                                    |
| ![Feynmf-line-dots-arrow.png](/files/379197cb1ded3e4e70745f646cd359be21f2661d)       | ghost, dots\_arrow                      |
| ![Feynmf-line-dbl-dots.png](/files/4ef37f9682111f7f99de8d4a9164fcd7f2d77c50)         | dbl\_dots                               |
| ![Feynmf-line-dbl-dots-arrow.png](/files/ccb12f216834cd521ace981880ca464aef685d52)   | dbl\_dots\_arrow                        |
|                                                                                      | phantom                                 |
| ![Feynmf-line-phantom-arrow.png](/files/80f7a18c1d2953bdabc58c324647409a1a657988)    | phantom\_arrow                          |
| ![Feynmf-line-plain.png](/files/018e570355c07bb6b04cae4363b48c500d5f31bd)            | vanilla, plain                          |
| ![Feynmf-line-plain-arrow.png](/files/83ccc878b14e61322204155fe7e3c95bcc9d8fc1)      | fermion, electron, quark, plain\_arrow  |
| ![Feynmf-line-dbl-plain.png](/files/9896fcd2ace3b904e46d8869e5f3a30137ad9e92)        | double, dbl\_plain                      |
| ![Feynmf-line-dbl-plain-arrow.png](/files/131531e837c0667c7664fb46588d21dc36f37c13)  | double\_arrow, heavy, dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/a72d61be14a00dd579a5df6708fea3fbc8aac3af)           | boson, photon, wiggly                   |
| ![Feynmf-line-dbl-wiggly.png](/files/c27b611cb23b19199e2e0bc33d58ef9e4f07a0e9)       | dbl\_wiggly                             |
| ![Feynmf-line-zigzag.png](/files/f84830af9e7ca6019c329b49375bb87a37a735be)           | zigzag                                  |
| ![Feynmf-line-dbl-zigzag.png](/files/adeec0caf527e0235ec883d11119e7826ff95f82)       | dbl\_zigzag                             |

## Další čtení

Více informací viz:

* [Chemické vzorce](/latex/cs/pro-konkretni-obor/02-chemistry-formulae.md)
* [Diagramy molekulových orbitálů](/latex/cs/pro-konkretni-obor/04-molecular-orbital-diagrams.md)
* [Balíček TikZ](/latex/cs/obrazky-a-tabulky/05-tikz-package.md)
* [Kreslení diagramů přímo v LaTeXu](/latex/cs/obrazky-a-tabulky/04-picture-environment.md)
* [Vkládání obrázků](/latex/cs/dalsi-temata/27-inserting-images.md)
* [Seznam řeckých písmen a matematických symbolů](/latex/cs/matematika/11-list-of-greek-letters-and-math-symbols.md)
* [Ta **feynmf** dokumentace balíčku](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/cs/pro-konkretni-obor/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.
