> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/especifico-da-area/03-feynman-diagrams.md).

# Diagramas de Feynman

## Introdução

Este artigo de ajuda explora pacotes LaTeX para desenhar diagramas de Feynman, uma forma muito compacta e intuitiva de representar interações entre partículas. Exploraremos o [`tikz-feynman` pacote](https://ctan.org/pkg/tikz-feynman?lang=en), que usa o TikZ para desenhar diagramas, e [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) que ("nos bastidores") usa MetaPost.

## O pacote TikZ-Feynman

O [`tikz-feynman` pacote](https://ctan.org/pkg/tikz-feynman?lang=en) foi publicado em 2016 e usa Ti*k*Z para gerar diagramas de Feynman. Ti*k*Z-Feynman é construído sobre o pacote Ti*k*Z e seus algoritmos de desenho de grafos para automatizar o posicionamento de muitos vértices. Ti*k*Z-Feynman ainda permite um posicionamento ajustado com precisão dos vértices, de modo que até diagramas complexos possam ser gerados com facilidade. As informações mais atualizadas sobre Ti*k*Z-Feynman estarão sempre na [página do projeto](http://www.jpellis.me/projects/tikz-feynman/) e na [documentação do pacote](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) no CTAN.

### Atualização (9 de novembro de 2022)

**Atualização importante pós-publicação** (9 de novembro de 2022): No momento da atualização desta página, o **pacote TikZ-Feynman continua incompatível com versões do TeX Live posteriores ao TeX Live 2018**—que é a versão do TeX Live usada no [projeto do Overleaf que acompanha este artigo de ajuda.](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=) Todos os exemplos de TikZ-Feynman listados abaixo precisarão ser compilados em um projeto do Overleaf com o **Versão do TeX Live** definido como `2018 (legado)`. Para mais informações, veja [este problema relatado no GitHub](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Carregando o pacote

Depois de instalar o pacote, o Ti*k*Z-Feynman pode ser carregado com `\usepackage{tikz-feynman}` no preâmbulo. É recomendável que você também especifique a versão do Ti*k*Z-Feynman a ser usada com o `compat` opção de pacote: `\usepackage[compat=1.0.0]{tikz-feynman}`. Isso garante que quaisquer novas versões do Ti*k*Z-Feynman não produzam mudanças indesejáveis sem aviso.

### Um primeiro diagrama

Diagramas de Feynman podem ser declarados com o `\feynmandiagram` comando. Ele é análogo ao `\tikz` comando do Ti*k*Z e requer um ponto e vírgula final (`;`) para finalizar o ambiente. Por exemplo, um simples *lo*diagrama de -channel é:

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

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

Vamos percorrer este exemplo linha por linha:

**Linha 1**

\feynmandiagram introduz o diagrama de Feynman e permite fornecer argumentos opcionais entre colchetes \[]. Neste caso, horizontal=a to b orienta os resultados do algoritmo de forma que a linha que passa pelos vértices a e b fique horizontal.

**Linha 2**

A linha de férmion da esquerda é desenhada declarando três vértices (i1, a e i2) e conectando-os com arestas --. Assim como o comando \feynmandiagram acima, cada aresta também recebe argumentos opcionais especificados entre colchetes \[]. Neste caso, queremos que essas arestas tenham setas para indicar que são linhas de férmion, então adicionamos o estilo fermion a elas. Como você verá mais adiante, argumentos opcionais também podem ser fornecidos aos vértices exatamente da mesma maneira.

**Linha 3**

Esta aresta conecta os vértices a e b com uma aresta estilizada como um fóton. Como já existe um vértice rotulado a, o algoritmo o conectará a um novo vértice rotulado b.

**Linha 4**

Esta linha é análoga à linha 2 e introduz dois novos vértices, f1 e f2. Ela reutiliza o vértice b previamente rotulado.

**Linha 5**

Finalize a declaração do diagrama de Feynman. O ponto e vírgula final (;) é importante.

O nome dado a cada vértice no grafo não importa. Assim, neste exemplo, `i1`, `i2` denotam as partículas iniciais; `f1`, `f2` denotam as partículas finais; e `a`, `b` são os pontos finais do propagador. O único aspecto importante é que o que chamamos de `a` na linha 2 também seja `a` na linha 3, para que o algoritmo subjacente os trate como o mesmo vértice.

A ordem em que os vértices são declarados não importa, pois o algoritmo padrão reorganiza tudo. Por exemplo, pode-se preferir desenhar as linhas de férmion todas de uma vez, como no exemplo a seguir (observe também que a forma como nomeamos os vértices é completamente diferente):

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

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

Como observação final, o cálculo de onde os vértices devem ser posicionados geralmente é feito por meio de um algoritmo escrito em Lua. Como resultado, o LuaTeX é necessário para fazer uso desses algoritmos. Se o LuaTeX não for usado, o Ti*k*Z-Feynman recorrerá a um algoritmo mais rudimentar e avisará o usuário em vez disso.

### Adicionando estilos

Até agora, os exemplos usaram apenas os `photon` e `fermion` estilos. O Ti*k*Z-Feynman vem com vários estilos extras para arestas e vértices, todos documentados na [documentação do pacote](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf). Por exemplo, é possível adicionar setas de momento com `momentum=<text>`, e, no caso dos vértices finais, a partícula pode ser rotulada com `particle=<text>`. Para demonstrar como são usados, tomamos o diagrama genérico *lo*de -channel de antes e o transformamos em uma aniquilação de pares elétron-pósitron em múons:

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

Além das chaves de estilo documentadas abaixo, chaves de estilo do Ti*k*Z também podem ser usadas:

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

Para obter uma lista de todos os vários estilos que o Ti*k*Z fornece, dê uma olhada no [Ti*k*manual do TikZ](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf); ele é extremamente completo e fornece muitos exemplos de uso.

### Quando o Algoritmo Não É Suficiente

Por predefinição, o `\feynmandiagram` e `\diagram` comandos usam o `algoritmo de layout em mola` para posicionar todas as arestas. O `algoritmo de layout em mola` algoritmo tenta "espalhar" o diagrama o máximo possível, o que — na maioria dos diagramas mais simples — produz um resultado satisfatório; no entanto, em alguns casos, isso não produz o melhor diagrama e esta seção analisará alternativas. Há três alternativas principais:

**Adicionar arestas invisíveis**

Embora ainda usando o algoritmo padrão, é possível forçar certos vértices a ficarem mais próximos adicionando arestas extras e tornando-as invisíveis por meio de draw=none. O algoritmo tratará essas arestas extras da mesma forma, mas elas simplesmente não serão desenhadas no final;

**Usar um algoritmo diferente**

Em algumas circunstâncias, outros algoritmos podem ser mais adequados. Alguns dos outros algoritmos de layout de grafos estão listados na documentação do pacote, e uma lista exaustiva de todos os algoritmos e seus parâmetros é fornecida no manual do TikZ;

**Posicionamento manual**

Como último recurso, diagramas muito complicados ou incomuns exigirão que cada vértice seja posicionado manualmente.

#### Arestas invisíveis

O algoritmo subjacente trata todas as arestas exatamente da mesma maneira ao calcular onde posicionar todos os vértices, e o desenho real do diagrama (depois que os posicionamentos foram calculados) é feito separadamente. Consequentemente, é possível adicionar arestas ao algoritmo, mas impedir que sejam desenhadas adicionando `draw=none` ao estilo da aresta.

Isso é particularmente útil se você quiser garantir que os estados inicial ou final permaneçam mais próximos do que ficariam de outra forma, como ilustrado no exemplo a seguir (observe que `opacity=0.2` é usado em vez de `draw=none` para ilustrar exatamente onde a aresta está localizada).

```
% Sem aresta invisível para manter os dois fótons juntos
\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/7b1e56a5e4a912697b4f7fa0b1afc1a432b26288)

```
% A aresta invisível garante que os fótons fiquem paralelos
\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/fbbdbad556a040db25c05bd47a5a09f3a60c8776)

#### Algoritmos alternativos

A biblioteca de desenho de grafos do Ti*k*Z possui vários algoritmos diferentes para posicionar os vértices. Por padrão, `\diagram` e `\feynmandiagram` use o `algoritmo de layout em mola` algoritmo para posicionar os vértices. O `algoritmo de layout em mola` tenta espalhar tudo o máximo possível, o que, na maioria dos casos, produz um diagrama bonito; no entanto, há certos casos em que isso não funciona. Um bom exemplo em que o `algoritmo de layout em mola` não funciona são decaimentos em que temos a partícula que decai à esquerda e todas as partículas-filhas à direita.

```
% Usando o layout em mola padrão
\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/66c715982f8c00a8887cfafb926be7ba80626d69)

```
% Usando o layout em camadas
\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/faf73b808eddbd24b9e2dcedf84c343e15ad4d45)

Você pode notar que, além de adicionar o `layout em camadas` estilo a `\feynmandiagram`, também mudamos a ordem em que especificamos os vértices. Isso ocorre porque o `layout em camadas` algoritmo realmente presta atenção à ordem em que os vértices são declarados (ao contrário do `algoritmo de layout em mola`padrão); como resultado, `c--f2, c--f3` tem um significado diferente de `f2--c--f3`. No primeiro caso, `f2` e `f3` estão ambos na camada abaixo `c` como desejado; enquanto o último caso coloca `f2` na camada acima `c` (isto é, na mesma camada de onde o bóson W se origina).

#### Posicionamento manual

Em diagramas mais complicados, é bastante provável que nenhum dos algoritmos funcione, não importa quantas arestas invisíveis sejam adicionadas. Nesses casos, os vértices precisam ser posicionados manualmente. O Ti*k*Z-Feynman permite que os vértices sejam posicionados manualmente usando o `\vertex` comando.

O `\vertex` comando está disponível apenas dentro do `feynman` ambiente (que, por sua vez, só está disponível dentro de um `tikzpicture`). O `feynman` ambiente carrega todos os estilos relevantes do Ti*k*Z-Feynman e declara comandos adicionais específicos do Ti*k*Z-Feynman, como `\vertex` e `\diagram`. Isso é inspirado no PGFPlots e no uso do `axis` ambiente.

O `\vertex` comando é muito análogo ao `\node` comando do Ti*k*Z, com a exceção notável de que o conteúdo do vértice é opcional; isto é, você não precisa ter `{<text>}` no final. No caso em que `{}` é especificado, o vértice recebe automaticamente o `particle` estilo e, caso contrário, é um vértice comum (de tamanho zero).

Para especificar onde os vértices vão, é possível fornecer coordenadas explícitas, embora provavelmente seja mais fácil usar a `positioning` biblioteca do Ti*k*Z que permite que os vértices sejam posicionados em relação a vértices existentes. Ao usar posicionamentos relativos, é possível ajustar facilmente uma parte do grafo e tudo se ajustará de acordo — a alternativa seria ajustar manualmente as coordenadas de cada vértice afetado.

Por fim, depois que todos os vértices tiverem sido especificados, o `\diagram*` comando é usado para especificar todas as arestas. Isso funciona praticamente da mesma forma que `\diagram` (e também `\feynmandiagram`), exceto que usa um algoritmo muito básico para posicionar novos nós e permite que nós existentes (nomeados) sejam incluídos. Para se referir a um nó existente, o nó deve ser dado entre parênteses.

Todo esse processo de especificar os nós e depois desenhar as arestas entre eles é mostrado abaixo para o decaimento do múon:

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

## Outros pacotes para desenhar diagramas de Feynman

Há várias alternativas ao pacote TikZ-Feynman:

* [`feynmf`](https://ctan.org/pkg/feynmf): produz gráficos bitmap via [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (incluído com `feynmf`) produz gráficos vetoriais via [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): derivado de `feynmp`

O `feynmp-auto` o pacote é, na prática, uma extensão do `feynmp` pacote, projetada para automatizar a conversão do código PostScript do MetaPost em dados PDF para uso no pdfTeX, LuaTeX e XeTeX. Os exemplos a seguir usam `feynmp-auto`.

### Introdução

O `feynmf`, `feynmp` e `feynmp-auto` pacotes permitem que você desenhe diagramas de Feynman facilmente, especificando os vértices, partículas e seus rótulos, e então realizando automaticamente o layout para desenhar seu diagrama.

#### Uma visão geral do uso dos pacotes baseados em feynmf

Para criar diagramas de Feynman, você precisa:

1. criar um `fmfile` ambiente para conter um ou mais diagramas, cada um encerrado dentro de um `fmfgraph` ou `fmfgraph*` ambiente — a diferença entre a forma com asterisco e a sem asterisco é [explicado abaixo](#fmfgraph-and-fmfgraph);
2. usar cada `fmfgraph` ou `fmfgraph*` ambiente para conter as instruções de desenho necessárias para criar um diagrama de Feynman individual.

O `fmfile` ambiente tem a seguinte forma

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

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

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

\end{fmffile}
```

onde `nome-do-arquivo` é o nome de um arquivo que será usado para conter as descrições em código MetaPost dos desenhos individuais definidos dentro de `fmfgraph`/`fmfgraph*` ambientes.

Cada desenho tem a forma

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

% instruções de desenho

\end{fmfgraph}
```

ou, para a versão com asterisco (`fmfgraph*`)

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

% instruções de desenho

\end{fmfgraph*}
```

onde `(width,height)` define o tamanho do diagrama expresso em unidades de [`\unitlength`](#note-on-unitlength).

O código MetaPost em `nome-do-arquivo` é processado para criar os gráficos que representam seus diagramas de Feynman. Um `fmfile` ambiente pode conter até 256 desenhos individuais.

#### fmfgraph and fmfgraph\*

* `fmfgraph`: este ambiente contém as instruções de desenho (descrição) de um único diagrama de Feynman. Ele será colocado *na localização do ambiente*. Este ambiente não suporta rótulos, use `fmfgraph*` para incluir rótulos em seus diagramas.
* `fmfgraph*` igual a `fmfgraph`, mas encerrado em um [`picture` ambiente](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/04-picture-environment.md) do mesmo tamanho. Ele suporta o uso de rótulos LaTeX.

### Um exemplo

Vamos começar com um exemplo rápido:

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

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![](/files/070f8e248da457813b809a99b7d9d82e87310d3e)

Neste exemplo, o `fmfgraph` ambiente define a largura e a altura do desenho como 120 e 80, respectivamente:

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

usando unidades determinadas pelo valor de `\unitlength`, que tem o valor padrão de 1pt; consequentemente, este diagrama recebe uma largura de 120pt e uma altura de 80pt.

#### Nota sobre \unitlength

Porque `\unitlength` é uma dimensão do LaTeX; você pode alterar seu valor usando o `\setlength` comando; por exemplo, para definir a largura e a altura dos desenhos em unidades de cm, você pode escrever:

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

Reproduzindo o exemplo acima, o diagrama abaixo agora tem uma largura de `8cm` e uma altura de `5cm`:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(8,5)% unidades agora estão em 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}
```

[Abra este exemplo no 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)

Este exemplo agora produz um diagrama maior:

![](/files/78dcc56a1bf0713b5114ef6577ada99eeacfbad9)

### Vértices

A primeira coisa que você precisa fazer é especificar seus vértices externos e onde eles devem ser posicionados. Você pode dar aos seus vértices qualquer nome que quiser e dizer onde eles devem ser posicionados com os comandos `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Como usado nos exemplos acima:

```latex
% Cria dois vértices à esquerda chamados i1 e i2
\fmfleft{i1,i2}

% Cria dois vértices à direita chamados o1 e o2
\fmfright{o1,o2}
```

Você pode conectar vértices com o `\fmf`, que criará novos vértices se você passar nomes que ainda não tenham sido criados. Também como usado nos exemplos acima:

```latex
% Criará uma linha de férmion entre i1 e
% o recém-criado v1, e entre v1 e o1.
\fmf{fermion}{i1,v1,o1}

% Criará uma linha de fóton entre v1 e o recém-criado v2
\fmf{photon}{v1,v2}
```

### Rótulos

Como [observado acima](#fmfgraph-and-fmfgraph), para usar rótulos o desenho deve ser criado usando a forma `fmfgraph*` do ambiente de desenho.

Use a `\fmflabel` comando para colocar um rótulo em um vértice:

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

onde:

* `conteúdo do rótulo` é o rótulo a aplicar ao vértice escolhido;
* `vértice do diagrama` é o nome do vértice a rotular.

Note que `conteúdo do rótulo` pode incluir material matemático.

Podemos reutilizar o exemplo anterior para adicionar os seguintes rótulos

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

o que produz o diagrama atualizado mostrado abaixo:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %NOTA: o ambiente fmfgraph*
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % Adicionar os nossos rótulos
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz um diagrama de Feynman contendo rótulos:

![](/files/06f910fd6efb7a34ed9a104af42697e11b08f043)

### Alguns exemplos mais complexos

Os exemplos a seguir, mais avançados, utilizam funcionalidades de `feynmp` que não discutimos: veja a [`feynmp` pacote (`feynmf`) documentação](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—que também contém numerosos exemplos adicionais. Estes diagramas foram originalmente publicados num modelo do Overleaf contendo código LaTeX reproduzido de uma página web do CERN que agora só é acessível através de [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—essa página contém mais exemplos que talvez queira experimentar.

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

[Abra este exemplo no 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)

Este exemplo produz o seguinte diagrama:

![](/files/a69a145302622a5ae1e3fdb928e1bda7f5a72db8)

#### Exemplo 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % vértices inferiores e superiores
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % vértices de protão incidente para gluão
    \fmf{fermion,label=$d$}{i1,o1}
    % a tensão desloca o vértice para um lado
    \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}
    % o phantom centra o vértice 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}
```

[Abra este exemplo no 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)

Este exemplo produz o seguinte diagrama:

![](/files/7731244c407168839c2aa3d18b411e8b116b0693)

#### Exemplo 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    % vértices inferiores e superiores
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    % protões incidentes para vértices de gluão
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    % manchas nos vértices de gluão, 0.16w é o tamanho da mancha
    \fmfblob{.16w}{g1,g2}
    % gluão de P1 para o vértice1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    % gluão de P2 para o vértice2 - note a alteração da ordem!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    % o laço de quarks estava aqui
    \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}
    % protões de saída
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    % congele tudo no lugar
    \fmffreeze
    \renewcommand{\P}[3]{\fmfi{plain}{%
        vpath(__#1,__#2) shifted (thick*(#3))}}
    % linhas em P1
    \P{P1}{g1}{2,0}
    \P{P1}{g1}{-2,1}
    % linhas em p2
    \P{P2}{g2}{2,1}
    \P{P2}{g2}{-2,0}
    % linhas em P1'
    \P{g1}{P1'}{-2,-1}
    \P{g1}{P1'}{2,0}
    % linhas em P2'
    \P{g2}{P2'}{-2,0}
    \P{g2}{P2'}{2,-1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz o seguinte diagrama:

![](/files/4cf8568157e057bf8ce06d8f1b5d824860c740ab)

### Estilos de linha

Já vimos os `photon` e `fermion` estilos de linha acima, mas o `feynmp` pacote suporta muitos mais.

| Aspeto                                                                               | Nome(s)                               |
| ------------------------------------------------------------------------------------ | ------------------------------------- |
| ![Feynmf-line-curly.png](/files/a94ac026f58ed479e9b6fd212d5d16e651b2d740)            | gluão, encaracolado                   |
| ![Feynmf-line-dbl-curly.png](/files/3ce18e9b551a7a4ebc4b29e42ad7a2b91ade04e9)        | dbl\_curly                            |
| ![Feynmf-line-dashes.png](/files/ac5bc24e171cd507165f5f2044e0078e5710d7e0)           | traços                                |
| ![Feynmf-line-dashed-arrow.png](/files/3b2f8f7018ece1d6217033b33fa56d50303c9145)     | escalar, dashes\_arrow                |
| ![Feynmf-line-dbl-dashes.png](/files/c7d87eb311639187b7f1fc1a7ee991f46cbebbee)       | dbl\_dashes                           |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/08fe9805b41b8d78a8400b751b54c10b998e888e) | dbl\_dashes\_arrow                    |
| ![Feynmf-line-dots.png](/files/23db98ef0b544623eb43fd15e7c587c7d909bd20)             | pontos                                |
| ![Feynmf-line-dots-arrow.png](/files/267049362ef92a5cc7fc1a041bc2c3f15898cfd9)       | fantasma, dots\_arrow                 |
| ![Feynmf-line-dbl-dots.png](/files/e549c88e77c869e7a17b05d919c79ca5d4c3febb)         | pontos duplos                         |
| ![Feynmf-line-dbl-dots-arrow.png](/files/f5262514f84a227b1625b058dc3491ec8ad438f1)   | dbl\_dots\_arrow                      |
|                                                                                      | fantasma                              |
| ![Feynmf-line-phantom-arrow.png](/files/83bd513cfabda44097dc423de31f19b3a35b34f1)    | phantom\_arrow                        |
| ![Feynmf-line-plain.png](/files/ba5cb5859e44ec1ff08eddac6ea970a51d88b4b5)            | simples, simples                      |
| ![Feynmf-line-plain-arrow.png](/files/d8e583f2b5cb5cfe1e99cccd58405a59d34b081b)      | fármion, eletrão, quark, plain\_arrow |
| ![Feynmf-line-dbl-plain.png](/files/901a885a29bce283fbb5753336c9049d663e4b36)        | duplo, dbl\_plain                     |
| ![Feynmf-line-dbl-plain-arrow.png](/files/35dcea0a84da7851bad9615ad20c2a84efc6c402)  | seta dupla, pesado, dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/ae1e453f19599e4d06ba6735216945999a6eb7c5)           | bóson, fotão, ondulado                |
| ![Feynmf-line-dbl-wiggly.png](/files/ea577db64cd6289620f59d154c7ae671f3bf02b5)       | dbl\_wiggly                           |
| ![Feynmf-line-zigzag.png](/files/b6959510c1af847e6bcdb0f59b0f5025b088f4c9)           | ziguezague                            |
| ![Feynmf-line-dbl-zigzag.png](/files/e80206d17304454e2d7e8fdaa8b8c2b2fc4adad1)       | dbl\_zigzag                           |

## Leitura adicional

Para mais informações, consulta:

* [Fórmulas de química](/latex/overleaf-learn-latex-pt/especifico-da-area/02-chemistry-formulae.md)
* [Diagramas de orbitais moleculares](/latex/overleaf-learn-latex-pt/especifico-da-area/04-molecular-orbital-diagrams.md)
* [Pacote TikZ](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/05-tikz-package.md)
* [Desenhar diagramas diretamente em LaTeX](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/04-picture-environment.md)
* [Inserção de imagens](/latex/overleaf-learn-latex-pt/mais-topicos/27-inserting-images.md)
* [Lista de letras gregas e símbolos matemáticos](/latex/overleaf-learn-latex-pt/matematica/11-list-of-greek-letters-and-math-symbols.md)
* [O **feynmf** documentação do pacote](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://ayakaleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/especifico-da-area/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.
