> 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/es/especifico-de-un-campo/03-feynman-diagrams.md).

# Diagramas de Feynman

## Introducción

Este artículo de ayuda explora paquetes de LaTeX para dibujar diagramas de Feynman, una forma muy compacta e intuitiva de representar interacciones entre partículas. Exploraremos el [`tikz-feynman` paquete](https://ctan.org/pkg/tikz-feynman?lang=en), que usa TikZ para dibujar diagramas, y [`feynmp-auto`](#other-packages-for-drawing-feynman-diagrams) que ("entre bastidores") usa MetaPost.

## El paquete TikZ-Feynman

El [`tikz-feynman` paquete](https://ctan.org/pkg/tikz-feynman?lang=en) fue publicado en 2016 y usa Ti*k*Z para generar diagramas de Feynman. Ti*k*Z-Feynman se basa en el paquete Ti*k*Z y sus algoritmos de dibujo de grafos para automatizar la colocación de muchos vértices. Ti*k*Z-Feynman sigue permitiendo una colocación afinada de los vértices, de modo que incluso los diagramas complejos pueden generarse con facilidad. La información más actualizada sobre Ti*k*Z-Feynman siempre estará en la [página del proyecto](http://www.jpellis.me/projects/tikz-feynman/) y en el [documentación del paquete](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf) en CTAN.

### Actualización (9 de noviembre de 2022)

**IMPORTANTE: actualización posterior a la publicación** (9 de noviembre de 2022): En el momento de actualizar esta página, el **paquete TikZ-Feynman sigue siendo incompatible con versiones de TeX Live posteriores a TeX Live 2018**—que es la versión de TeX Live utilizada en el [proyecto de Overleaf que acompaña a este artículo de ayuda.](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 los ejemplos de TikZ-Feynman que se enumeran a continuación deberán compilarse en un proyecto de Overleaf con la **Versión de TeX Live** establecida en `2018 (heredado)`. Para más información, véase [este problema informado en GitHub](https://github.com/JP-Ellis/tikz-feynman/issues/73#issue-942615833).

### Carga del paquete

Después de instalar el paquete, el paquete Ti*k*Z-Feynman puede cargarse con `\usepackage{tikz-feynman}` en el preámbulo. Se recomienda que también especifiques la versión de Ti*k*Z-Feynman que se usará con la `compat` opción de paquete: `\usepackage[compat=1.0.0]{tikz-feynman}`. Esto garantiza que las nuevas versiones de Ti*k*Z-Feynman no produzcan cambios indeseables sin previo aviso.

### Un primer diagrama

Los diagramas de Feynman pueden declararse con el `\feynmandiagram` comando. Es análogo al `\tikz` comando de Ti*k*Z y requiere un punto y coma final (`;`) para terminar el entorno. Por ejemplo, un sencillo diagrama de *s*canal s es:

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

![S-channel.png](/files/3e3a83b71d9c3397b507c839acae7a1ea82f7a63)

Repasemos este ejemplo línea por línea:

**Línea 1**

\feynmandiagram introduce el diagrama de Feynman y permite proporcionar argumentos opcionales entre corchetes \[]. En este caso, horizontal=a to b orienta las salidas del algoritmo de modo que la línea que pasa por los vértices a y b sea horizontal.

**Línea 2**

La línea de fermión de la izquierda se dibuja declarando tres vértices (i1, a e i2) y conectándolos con aristas --. Igual que el comando \feynmandiagram anterior, cada arista también toma argumentos opcionales especificados entre corchetes \[]. En este caso, queremos que estas aristas tengan flechas para indicar que son líneas de fermión, así que les añadimos el estilo fermion. Como verás más adelante, los argumentos opcionales también pueden darse a los vértices exactamente de la misma manera.

**Línea 3**

Esta arista conecta los vértices a y b con una arista estilizada como fotón. Como ya existe un vértice etiquetado a, el algoritmo lo conectará con un nuevo vértice etiquetado b.

**Línea 4**

Esta línea es análoga a la línea 2 e introduce dos nuevos vértices, f1 y f2. Reutiliza el vértice b previamente etiquetado.

**Línea 5**

Termina la declaración del diagrama de Feynman. El punto y coma final (;) es importante.

El nombre dado a cada vértice del grafo no importa. Así que en este ejemplo, `i1`, `i2` denotan las partículas iniciales; `f1`, `f2` denotan las partículas finales; y `a`, `b` son los puntos finales del propagador. El único aspecto importante es que lo que llamamos `a` en la línea 2 también es `a` en la línea 3, de modo que el algoritmo subyacente los trate como el mismo vértice.

El orden en que se declaran los vértices no importa, ya que el algoritmo predeterminado reorganiza todo. Por ejemplo, uno podría preferir dibujar todas las líneas de fermión de una sola vez, como en el siguiente ejemplo (obsérvese también que la forma en que nombramos los vértices es completamente diferente):

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

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

Como observación final, el cálculo de dónde deben colocarse los vértices suele hacerse mediante un algoritmo escrito en Lua. Como resultado, se requiere LuaTeX para poder aprovechar estos algoritmos. Si no se usa LuaTeX, Ti*k*Z-Feynman recurrirá por defecto a un algoritmo más rudimentario y, en su lugar, mostrará una advertencia al usuario.

### Añadiendo estilos

Hasta ahora, los ejemplos solo han usado los estilos `photon` y `fermion` . El paquete Ti*k*Z-Feynman incluye bastantes estilos adicionales para aristas y vértices, todos documentados en la [documentación del paquete](http://mirrors.ctan.org/graphics/pgf/contrib/tikz-feynman/tikz-feynman.pdf)documentación. Por ejemplo, es posible añadir flechas de momento con `momentum=<text>`, y en el caso de los vértices finales, la partícula puede etiquetarse con `particle=<text>`. Para demostrar cómo se usan, tomamos el diagrama genérico *s*de canal anterior y lo convertimos en una aniquilación de pares electrón-positrón en muones:

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

Además de las claves de estilo documentadas a continuación, también pueden usarse claves de estilo de 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/96e4b04b5bdddb7a7179badf6f64af9859918f80)

Para obtener una lista de todos los distintos estilos que proporciona Ti*k*Z, consulta el [Ti*k*manual de Ti](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf)Z; es extremadamente completo y ofrece muchos ejemplos de uso.

### Cuando el algoritmo no es suficiente

De forma predeterminada, se usa el `\feynmandiagram` y `\diagram` comandos usan el `algoritmo de disposición de resorte` para colocar todas las aristas. El `algoritmo de disposición de resorte` algoritmo intenta "dispersar" el diagrama tanto como sea posible, lo que —para la mayoría de los diagramas más sencillos— da un resultado satisfactorio; sin embargo, en algunos casos esto no produce el mejor diagrama y esta sección examinará alternativas. Hay tres alternativas principales:

**Añadir aristas invisibles**

Aunque se siga usando el algoritmo predeterminado, es posible forzar que ciertos vértices estén más cerca entre sí añadiendo aristas extra y haciéndolas invisibles mediante draw=none. El algoritmo tratará estas aristas extra de la misma manera, pero simplemente no se dibujan al final;

**Usar un algoritmo diferente**

En algunas circunstancias, otros algoritmos pueden ser más adecuados. Algunos de los otros algoritmos de disposición de grafos se enumeran en la documentación del paquete, y una lista exhaustiva de todos los algoritmos y sus parámetros se proporciona en el manual de TikZ;

**Colocación manual**

Como último recurso, los diagramas muy complicados o inusuales requerirán que cada vértice se coloque manualmente.

#### Aristas invisibles

El algoritmo subyacente trata todas las aristas exactamente de la misma manera al calcular dónde colocar todos los vértices, y el dibujo real del diagrama (una vez calculadas las posiciones) se hace por separado. En consecuencia, es posible añadir aristas al algoritmo, pero impedir que se dibujen añadiendo `draw=none` al estilo de la arista.

Esto es particularmente útil si quieres asegurarte de que los estados inicial o final permanezcan más juntos de lo que lo harían de otro modo, como se ilustra en el siguiente ejemplo (obsérvese que `opacity=0.2` se usa en lugar de `draw=none` para ilustrar exactamente dónde está ubicada la arista).

```
% Sin invisibilidad para mantener juntos los dos fotones
\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/055943eaf26c18d8dc98ac36263245ca91285a0b)

```
% La arista invisible asegura que los fotones sean 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/2a2b27ef9313144df1f6216df4aba9d687f03ee6)

#### Algoritmos alternativos

La biblioteca de dibujo de grafos de Ti*k*Z tiene varios algoritmos distintos para posicionar los vértices. De forma predeterminada, `\diagram` y `\feynmandiagram` usa el `algoritmo de disposición de resorte` algoritmo para colocar los vértices. El `algoritmo de disposición de resorte` intenta expandir todo al máximo posible, lo que, en la mayoría de los casos, da un diagrama bonito; sin embargo, hay ciertos casos en los que esto no funciona. Un buen ejemplo de cuando el `algoritmo de disposición de resorte` no funciona son desintegraciones en las que tenemos la partícula que se desintegra a la izquierda y todas las partículas hijas a la derecha.

```
% Usando la disposición de resorte predeterminada
\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/f5c511147c7fcf5924915fd6a21c365bdf2f3577)

```
% Usando la disposición en capas
\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/46c015adb70bc4f9ab50dba56f69a6000e049c57)

Quizás notes que, además de añadir el `estilo de disposición en capas` a `\feynmandiagram`, también cambiamos el orden en que especificamos los vértices. Esto se debe a que el `estilo de disposición en capas` algoritmo sí tiene en cuenta el orden en que se declaran los vértices (a diferencia del `algoritmo de disposición de resorte`predeterminado); como resultado, `c--f2, c--f3` tiene un significado diferente de `f2--c--f3`. En el primer caso, `f2` y `f3` están ambos en la capa inferior `c` como se desea; mientras que en el segundo caso coloca `f2` en la capa superior `c` (es decir, en la misma capa de donde surge el bosón W).

#### Colocación manual

En diagramas más complicados, es bastante probable que ninguno de los algoritmos funcione, sin importar cuántas aristas invisibles se añadan. En tales casos, los vértices deben colocarse manualmente. Ti*k*Z-Feynman permite colocar manualmente los vértices usando el `\vertex` comando.

El `\vertex` comando solo está disponible dentro del entorno `feynman` (que, a su vez, solo está disponible dentro de un `tikzpicture`). El `feynman` entorno carga todos los estilos relevantes de Ti*k*Z-Feynman y declara comandos adicionales específicos de Ti*k*Z-Feynman como `\vertex` y `\diagram`. Esto se inspira en PGFPlots y su uso del `axis` entorno.

El `\vertex` comando es muy análogo al `\node` comando de Ti*k*Z, con la notable excepción de que el contenido del vértice es opcional; es decir, no es necesario tener `{<text>}` al final. En el caso en que `{}` se especifique, al vértice se le asigna automáticamente el `particle` estilo, y en caso contrario es un vértice normal (de tamaño cero).

Para especificar dónde van los vértices, es posible dar coordenadas explícitas, aunque probablemente lo más fácil sea usar la `posicionamiento` biblioteca de Ti*k*Z, que permite colocar vértices en relación con otros vértices existentes. Usando colocaciones relativas, es posible ajustar fácilmente una parte del grafo y todo se adaptará en consecuencia; la alternativa sería ajustar manualmente las coordenadas de cada vértice afectado.

Por último, una vez que todos los vértices han sido especificados, el `\diagram*` comando se usa para especificar todas las aristas. Esto funciona de forma muy parecida a `\diagram` (y también `\feynmandiagram`), excepto que usa un algoritmo muy básico para colocar nuevos nodos y permite incluir nodos existentes (nombrados). Para referirse a un nodo existente, el nodo debe darse entre paréntesis.

Todo este proceso de especificar los nodos y luego dibujar las aristas entre ellos se muestra a continuación para la desintegración del muón:

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

## Otros paquetes para dibujar diagramas de Feynman

Hay varias alternativas al paquete TikZ-Feynman:

* [`feynmf`](https://ctan.org/pkg/feynmf): produce gráficos de mapa de bits mediante [MetaFont](https://ctan.org/pkg/metafont)
* [`feynmp`](https://ctan.org/pkg/feynmf) (incluido con `feynmf`) produce gráficos vectoriales mediante [MetaPost](https://ctan.org/pkg/metapost)
* [`feynmp-auto`](https://ctan.org/pkg/feynmp-auto?lang=en): derivado de `feynmp`

El `feynmp-auto` el paquete es, en efecto, una extensión del `feynmp` paquete diseñado para automatizar la conversión del código PostScript de MetaPost a datos PDF para su uso en pdfTeX, LuaTeX y XeTeX. Todos los siguientes ejemplos usan `feynmp-auto`.

### Introducción

El `feynmf`, `feynmp` y `feynmp-auto` los paquetes te permiten dibujar fácilmente diagramas de Feynman especificando los vértices, las partículas y sus etiquetas, y luego realizando automáticamente el diseño para dibujar tu diagrama.

#### Resumen del uso de los paquetes basados en feynmf

Para crear diagramas de Feynman necesitas:

1. crear un `fmfile` entorno para contener uno o más diagramas, cada uno encerrado dentro de un `fmfgraph` o `fmfgraph*` entorno; la diferencia entre la forma con asterisco y la sin asterisco es [explicado más abajo](#fmfgraph-and-fmfgraph);
2. usar cada `fmfgraph` o `fmfgraph*` entorno para contener las instrucciones de dibujo necesarias para crear un diagrama de Feynman individual.

El `fmfile` el entorno tiene la siguiente forma

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

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

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

\end{fmffile}
```

donde `es el nombre de un archivo que se utilizará para contener las descripciones en código MetaPost de los dibujos individuales definidos dentro de` cada dibujo toma la forma `fmfgraph`/`fmfgraph*` entornos.

% instrucciones de dibujo

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

o, para la versión con asterisco (

\end{fmfgraph}
```

(width,height)`fmfgraph*`)

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

o, para la versión con asterisco (

\end{fmfgraph*}
```

donde `define el tamaño del diagrama expresado en unidades de` \unitlength [`El código MetaPost en`](#note-on-unitlength).

se procesa para crear los gráficos que representan tu(s) diagrama(s) de Feynman. Un `es el nombre de un archivo que se utilizará para contener las descripciones en código MetaPost de los dibujos individuales definidos dentro de` entorno puede contener hasta 256 dibujos individuales. `fmfile` entorno puede contener hasta 256 dibujos individuales.

#### fmfgraph and fmfgraph\*

* `fmfgraph`: este entorno contiene las instrucciones de dibujo (descripción) de un único diagrama de Feynman. Se colocará *en la ubicación del entorno*. Este entorno no admite etiquetas, usa `fmfgraph*` para incluir etiquetas en tus diagramas.
* `fmfgraph*` igual que `fmfgraph`, pero encerrado en un [`picture` entorno](/latex/es/figuras-y-tablas/04-picture-environment.md) del mismo tamaño. Admite el uso de etiquetas LaTeX.

### Un ejemplo

Empecemos con un ejemplo 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}
```

[Abre este ejemplo en 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 ejemplo produce la siguiente salida:

![](/files/9e9d3531d8ae3cc71c3adfe152e19a9ba03a46bc)

En este ejemplo, el `fmfgraph` entorno establece el ancho y la altura del dibujo en 120 y 80, respectivamente:

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

usando unidades determinadas por el valor de `El código MetaPost en`, que tiene un valor predeterminado de 1pt; en consecuencia, a este diagrama se le asigna un ancho de 120pt y una altura de 80pt.

#### Nota sobre \unitlength

Porque `El código MetaPost en` es una dimensión de LaTeX; puedes cambiar su valor usando el `\setlength` comando; por ejemplo, para definir el ancho y la altura de los dibujos en unidades de cm puedes escribir:

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

Reproduciendo el ejemplo anterior, el diagrama de abajo ahora tiene un ancho de `8cm` y altura de `5cm`:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph}(8,5)% las unidades ahora están en 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 ejemplo en 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 ejemplo ahora produce un diagrama más grande:

![](/files/fd8332ef1eedd6f89933948b8720f8dd07db688a)

### Vértices

Lo primero que debes hacer es especificar tus vértices externos y dónde deben colocarse. Puedes nombrar tus vértices como quieras y decir dónde deben colocarse con los comandos `\fmfleft`, `\fmfright`, `\fmftop`, `\fmfbottom`.

Como se usa en los ejemplos anteriores:

```latex
% Crea dos vértices a la izquierda llamados i1 e i2
\fmfleft{i1,i2}

% Crea dos vértices a la derecha llamados o1 y o2
\fmfright{o1,o2}
```

Puedes conectar vértices con el `\fmf`, que creará nuevos vértices si pasas nombres que aún no se han creado. También, como se usa en los ejemplos anteriores:

```latex
% Creará una línea de fermión entre i1 y
% el v1 recién creado, y entre v1 y o1.
\fmf{fermion}{i1,v1,o1}

% Creará una línea de fotón entre v1 y el v2 recién creado
\fmf{photon}{v1,v2}
```

### Etiquetas

Como [se señaló arriba](#fmfgraph-and-fmfgraph), para usar etiquetas el dibujo debe crearse usando la `fmfgraph*` forma del entorno de dibujo.

Use el `\fmflabel` comando para colocar una etiqueta en un vértice:

```latex
\fmflabel{contenido-de-la-etiqueta}{vértice-del-diagrama}
```

donde:

* `contenido-de-la-etiqueta` es la etiqueta que se aplicará al vértice elegido;
* `vértice-del-diagrama` es el nombre del vértice a etiquetar.

Tenga en cuenta que `contenido-de-la-etiqueta` puede incluir material matemático.

Podemos reutilizar el ejemplo anterior para añadir las siguientes etiquetas

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

lo que produce el diagrama actualizado que se muestra a continuación:

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{first-diagram}
 \begin{fmfgraph*}(120,80) %NOTA el entorno fmfgraph*
   \fmfleft{i1,i2}
   \fmfright{o1,o2}
   \fmf{fermion}{i1,v1,o1}
   \fmf{fermion}{i2,v2,o2}
   \fmf{photon}{v1,v2}
   % Añadimos nuestras etiquetas
   \fmflabel{$v_1$}{v1}
   \fmflabel{$v_2$}{v2}
 \end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Abra este ejemplo en 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 ejemplo produce un diagrama de Feynman que contiene etiquetas:

![](/files/24c3e96457998acef81378a56f9dc6235d01b7c1)

### Algunos ejemplos más complejos

Los siguientes ejemplos, más avanzados, usan funciones de `feynmp` que no hemos comentado: consulte la [`feynmp` paquete (`feynmf`) documentación](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/feynmf/fmfman.pdf)—que también contiene numerosos ejemplos adicionales. Estos diagramas se publicaron originalmente en una plantilla de Overleaf que contiene código LaTeX reproducido de una página web del CERN que ahora solo es accesible a través de [Wayback Machine](https://web.archive.org/web/20141015023615/http://szczypka.web.cern.ch:80/szczypka/guides/latex/feynmp.html)—esa página contiene más ejemplos que quizá desee probar.

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

[Abre este ejemplo en 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 ejemplo produce el siguiente diagrama:

![](/files/15cfa908dfd11ad34dc58706cc2762364ef0de05)

#### Ejemplo 2

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-b}
\begin{fmfgraph*}(200,200)
    % vértices inferiores y superiores
    \fmfstraight
    \fmfleft{i0,i1,i2,id1,id2,i3,i4,i5}
    \fmfright{o0,o1,o2,od1,od2,o3,o4,o5}
    % protones entrantes a los vértices de gluones
    \fmf{fermion,label=$d$}{i1,o1}
    % la tensión desplaza el vértice hacia un 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}
    % el fantasma centra el 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}
```

[Abre este ejemplo en 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 ejemplo produce el siguiente diagrama:

![](/files/519898c82716148a9cc5781ff4347d0dd669a5f2)

#### Ejemplo 3

```latex
\documentclass{article}
\usepackage{feynmp-auto}
\begin{document}
\begin{fmffile}{complex-c}
\begin{fmfgraph*}(200,200)
    %vértices inferiores y superiores
    \fmfbottom{P1,P2}
    \fmftop{P1',b,bbar,P2'}
    %protones entrantes a los vértices de gluones
    \fmf{fermion,tension=2,lab=$P_1$}{P1,g1}
    \fmf{fermion,tension=2,lab=$P_2$}{P2,g2}
    %manchas en los vértices de gluones, 0.16w es el tamaño de la mancha
    \fmfblob{.16w}{g1,g2}
    %gluón de P1 al vértice 1
    \fmf{gluon,lab.side=right,lab=$x_{1}P_{1}$}{g1,v1}
    %gluón de P2 al vértice 2 - ¡observe el cambio de orden!
    \fmf{gluon,lab.side=right,lab=$x_{2}P_{2}$}{v2,g2}
    %aquí había un bucle de quark
    \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}
    %protones salientes
    \fmf{fermion}{g1,P1'}
    \fmf{fermion}{g2,P2'}
    %congelar todo en su lugar
    \fmffreeze
    \renewcommand{\P}[3]{\fmfi{plain}{%
        vpath(__#1,__#2) shifted (thick*(#3))}}
    %líneas en P1
    \P{P1}{g1}{2,0}
    \P{P1}{g1}{-2,1}
    %líneas en p2
    \P{P2}{g2}{2,1}
    \P{P2}{g2}{-2,0}
    %líneas en P1'
    \P{g1}{P1'}{-2,-1}
    \P{g1}{P1'}{2,0}
    %líneas en P2'
    \P{g2}{P2'}{-2,0}
    \P{g2}{P2'}{2,-1}
\end{fmfgraph*}
\end{fmffile}
\end{document}
```

[Abre este ejemplo en 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 ejemplo produce el siguiente diagrama:

![](/files/6d0c9e838f72f9dbeeefbc901cee1f56450b466c)

### Estilos de línea

Hemos visto los `photon` y `fermion` estilos de línea anteriores, pero el `feynmp` paquete admite muchos más.

| Apariencia                                                                           | Nombre(s)                                |
| ------------------------------------------------------------------------------------ | ---------------------------------------- |
| ![Feynmf-line-curly.png](/files/893e0dbd76b96832089254169d96a1f0d78d0eff)            | gluón, rizado                            |
| ![Feynmf-line-dbl-curly.png](/files/5e2a5e2191c6c1e8223fd9fcf055428a7cb3f5d2)        | dbl\_curly                               |
| ![Feynmf-line-dashes.png](/files/8b02fc4708dc723f4cedc521daaad2c9f840ab7c)           | guiones                                  |
| ![Feynmf-line-dashed-arrow.png](/files/aef8de14b1b6dafded08fd7322747ba5caf94d64)     | escalar, dashes\_arrow                   |
| ![Feynmf-line-dbl-dashes.png](/files/3f8cbc6e0d987de95e26c770a2e2e0e572fc1ad7)       | dbl\_dashes                              |
| ![Feynmf-line-dbl-dashes-arrow.png](/files/29d15d97460ddf5dce63951f8eb2dccae6794148) | dbl\_dashes\_arrow                       |
| ![Feynmf-line-dots.png](/files/d3517f47e04d5d787913bc3e6731668f5ec95960)             | puntos                                   |
| ![Feynmf-line-dots-arrow.png](/files/369c8cd6391a5b72b0fa49098457b2bf9f6b6b5e)       | fantasma, dots\_arrow                    |
| ![Feynmf-line-dbl-dots.png](/files/82f57bb89d35894c1e7b3f10ac0ec66d5a799b07)         | dbl\_dots                                |
| ![Feynmf-line-dbl-dots-arrow.png](/files/ebf4fa956084373a9a3e73ab3ddd2b8da262b8f7)   | dbl\_dots\_arrow                         |
|                                                                                      | fantasma                                 |
| ![Feynmf-line-phantom-arrow.png](/files/2723d0ed38359b04d65eadbcec3b73032dfaa904)    | phantom\_arrow                           |
| ![Feynmf-line-plain.png](/files/94ca268a7a77dca314b31466fb168fe1c7372f9e)            | vainilla, liso                           |
| ![Feynmf-line-plain-arrow.png](/files/16e426eea41536fa366ffdac13a778f29c84c84f)      | fermión, electrón, quark, plain\_arrow   |
| ![Feynmf-line-dbl-plain.png](/files/145bd403d011040a289d89f7fa541724ba14a54f)        | doble, dbl\_plain                        |
| ![Feynmf-line-dbl-plain-arrow.png](/files/bc1cf36dbdeae57704c5d4c922f6c3a9bc4dd26a)  | double\_arrow, pesado, dbl\_plain\_arrow |
| ![Feynmf-line-wiggly.png](/files/5c61b420bfcc53892ad18cd6aca41511f6a4dfa3)           | bosón, fotón, ondulado                   |
| ![Feynmf-line-dbl-wiggly.png](/files/8e3778ed47b425c05a376eddbbb650247f37e276)       | dbl\_wiggly                              |
| ![Feynmf-line-zigzag.png](/files/f9a4f31c4ac089f6a521adec167068da94808faa)           | zigzag                                   |
| ![Feynmf-line-dbl-zigzag.png](/files/093a54c7194a47469422af0333f740b72c023e54)       | dbl\_zigzag                              |

## Lectura adicional

Para más información, consulte:

* [Fórmulas químicas](/latex/es/especifico-de-un-campo/02-chemistry-formulae.md)
* [Diagramas de orbitales moleculares](/latex/es/especifico-de-un-campo/04-molecular-orbital-diagrams.md)
* [Paquete TikZ](/latex/es/figuras-y-tablas/05-tikz-package.md)
* [Dibujar diagramas directamente en LaTeX](/latex/es/figuras-y-tablas/04-picture-environment.md)
* [Inserción de imágenes](/latex/es/mas-temas/27-inserting-images.md)
* [Lista de letras griegas y símbolos matemáticos](/latex/es/matematicas/11-list-of-greek-letters-and-math-symbols.md)
* [El **feynmf** documentación del paquete](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/es/especifico-de-un-campo/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.
