Categorías
Cascaruja

LaTeX VIII: Cómo hacer diagramas de Feynman

Los diagramas de Feynman pueden realizarse de forma sencilla utilizando (recomendado, no obligatorio) los paquetes siguientes:

\usepackage{amssymb}

\usepackage{latexsym}

\usepackage{fancyhdr}

\usepackage{sparticles}–> Importante

\usepackage{feynmf}–> Importante

\usepackage{pstricks}

\usepackage{float}

\usepackage{graphicx}

\usepackage{graphics,psfrag}

Los paquetes importantes son los esenciales, y deben estar instalados en la distribución que uses. Usualmente MikTeX (para Windows) lleva ya incluido este paquete en la distribución completa. Pero las distribuciones para linux y otros sistemas operativos también disponen de ella. El resto de los paquetes se usan para convertir los símbolos escritos por nosotros en otros con aspecto matemático (psfrag), y para hacer dibujos en METAFONT ó METAPOST.

Para poder dibujar el diagrama de Feynman que necesitemos, es recomendable leer el manual del paquete, y así reconocer cómo usar gluones, fotones, electrones, ….

También es posible hacer dibujos artísticos, por ejemplo, para portadas. Aquí tenemos dos gluones uno dentro de otro:

El código para generar esta figura es:

\begin{fmffile}{o32y}

\fmfframe(1,7)(1,7){

\begin{fmfgraph*}(110,110)

\fmfleft{i1,i2}

\fmfright{o1,o2}

\fmfi{gluon}{fullcircle scaled 1.2w shifted (.5w,.5h)}

\fmfi{gluon}{fullcircle scaled .6w shifted (.5w,.5h)}

\end{fmfgraph*}

}

\end{fmffile}

Para usarlo en términos más serios, aquí damos un ejemplo, fácilmente modificable para uso particular,

con el código,

\begin{figure}[H]

\centering

\begin{fmffile}{feyn4}

\fmfframe(1,7)(1,7){

\begin{fmfgraph*}(110,62)

\fmfleft{i1}

\fmfright{o1,o2}

\fmflabel{$\mu^+$}{i1}

\fmflabel{$e^+$}{o2}

\fmf{fermion}{i1,v1}

\fmf{photon, label=$\gamma$}{v1,o1}

\fmf{fermion}{v1,o2}

\end{fmfgraph*}

}

\end{fmffile}

\caption{Diagrama de Feynman para el proceso $\mu^+\rightarrow

e^++\gamma$.}

\end{figure}

Una vez creado el documento .tex, debemos compilarlo, preferentemente con LaTeX, pero puede realizarse con pdfLaTeX (una sola vez). Una vez compilado se generan una serie de archivos de extensión *.mf, que debemos compilar en la ventana DOS, mediante el comando «mf *.mf», sin comillas. Posteriormente, volvemos a compilar el documento con LaTeX, o con pdfLaTeX, según hayamos elegido uno u otro en la anterior elección.

Existe un problema con el paquete feynmf y la forma en la que antiguamente se compilaba. La solución a seguir es usar el paquete feynmp. La solución paso a paso la puedes encontrar en esta web.

La nueva cabecera, editada para MikTex 2.9 (por ahora) quedaría así:

\usepackage{amssymb}

\usepackage{latexsym}

\usepackage{fancyhdr}

\usepackage{sparticles}–> Importante

\usepackage{feynmp}–> Importante

\usepackage{pstricks}

\usepackage{float}

\usepackage{graphicx}

\usepackage{graphics,psfrag}

Los pasos a seguir son:

1.- Compilar con pdflatex
2.- En la ventana DOS, compilar con metapost: mpost feyn4.mp
3.- Compilar de nuevo con pdflatex
4.- Abrir el pdf para comprobarlo

Gracias a Luis por avisar del problema.

Por fisimur

Usuario coorporativo para mensajes comunitarios

23 respuestas a «LaTeX VIII: Cómo hacer diagramas de Feynman»

No se publicó bien el mensaje original del autor. El archivo que te has descargado has de ponerlo en el mismo sitio que los archivos tex que estás procesando:

El fichero «sparticles.sty» debes colocarlo junto con el archivo «.tex» que estés editando. Lo puedes conseguir directamente de este enlace del cern.

Pero te recomiendo que visites la web original, porque puede que encuentres otras cosas interesantes.

Nos vemos.

Gracias por la ayuda, pero sigue sin salirme… No se dónde puede estar el error.

En el .tex tengo lo siguiente

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amssymb}
\usepackage{latexsym}
\usepackage{fancyhdr}
\usepackage{sparticles}
\usepackage{feynmf}
\usepackage{pstricks}
\usepackage{float}
\usepackage{graphicx}
\usepackage{graphics,psfrag}

\begin{document}

\begin{figure}[H]
{…el segundo ejemplo que habéis puesto}
\end{figure}
\end{document}

Y me aparece lo siguiente:

Process started

Running miktex-makemf.exe…

miktex-makemf: The ejemplodiagrama source file could not be found. Running hbf2gf.exe…

hbf2gf (CJK ver. 4.8.0) Couldn’t find `ejemplodiagra.cfg’ miktex-maketfm: No creation rule for font ejemplodiagrama.

Gracias por la ayuda, pero sigue sin salirme… No se dónde puede estar el error.

En el .tex tengo lo siguiente

\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amssymb}
\usepackage{latexsym}
\usepackage{fancyhdr}
\usepackage{sparticles}
\usepackage{feynmf}
\usepackage{pstricks}
\usepackage{float}
\usepackage{graphicx}
\usepackage{graphics,psfrag}

\begin{document}

\begin{figure}[H]
{…el segundo ejemplo que habéis puesto}
\end{figure}
\end{document}

Compilo en Latex y me aparece lo siguiente:

Process started

Running miktex-makemf.exe…

miktex-makemf: The ejemplodiagrama source file could not be found. Running hbf2gf.exe…

hbf2gf (CJK ver. 4.8.0) Couldn’t find `dia.cfg’ miktex-maketfm: No creation rule for font diag1.

A continuación en MS-DOS hago:

C:\Users\nombredeusuario\ Documents\latex>mf diag1.mf
This is METAFONT, Version 2.718281 (MiKTeX 2.9)
(C:\Users\nombredeusuario\ Documents\latex\diag1.mf)
! Emergency stop.
diag1.mf

Transcript written on diag1.log.

C:\Users\nombredeusuario\ Documents\latex>

Y por último compilo en Latex de nuevo y me aparece:

Process started

Making diag1.tfm from C:\Users\nombredeusuario\ Documents\latex\diag1.mf… Running miktex- mf.exe…

This is METAFONT, Version 2.718281 (MiKTeX 2.9) ! I can’t find file `diag1′. \mode:=cx;nonstopmode;input diag1 Please type another input file name ! Emergency stop. \mode:=cx;nonstopmode;input diag1 Transcript written on mfput.log. miktex- maketfm.exe: Windows API error 2: El sistema no puede encontrar el archivo especificado. miktex-maketfm.exe: Data: diag1.tfm

Con miktex 2.9 cambian un poco las cosas. Te pongo por aquí el mensaje que me han dicho que te pase:

Efectivamente, como he podido comprobar, con el Miktex 2.9, las cosas han cambiado. El ejemplo de la web era válido para el Miktex 2.7, pero no para el actual. En este caso, para que el diagrama salga de forma adecuada es necesario usar MetaPost en lugar de MetaFont.

El proceso entonces es el siguiente. Se compila el documento correspondiente con LaTeX (preferentemente) una vez. Dará los avisos correspondientes de que no existen los ficheros. Se abre la consola (en el directorio donde estés editando el archivo, claro) y se ejecuta esta vez,

> mpost feyn4.mp

Vuelves a ejecutar LaTeX y listo. Es posible que la consola aún suelte errores, pero el diagrama estará visible, como puedes comprobar con el visor dvi que viene por defecto en la distribución MikTeX 2.9.

Debo añadir que el nombre del fichero sobre el que ejecutamos metapost es el que ponemos en

\begin{fmffile}{feyn4}

Nos vemos.

¿No estás dentro de este caso? «Es posible que la consola aún suelte errores, pero el diagrama estará visible, como puedes comprobar con el visor dvi que viene por defecto en la distribución MikTeX 2.9.»

Un saludo.

Hola María. Parece que el problema se complica. Sin embargo, es muy probable que sea algún detalle pequeño el que nos estamos saltando. Si es posible te agradecería que copiaras el ejemplo completo que tienes en «.tex» en tu mensaje, tal y como lo tengas escrito tú (con tus paquetes, etc,…), sin modificaciones, y probamos a compilarlo nosotros. De esta forma podremos vislumbrar hacia donde apunta el error.

Debo añadir algo más. Estaba repasando las respuestas y he visto que al compilar con metafont hacías «mf diag1.mf». Hay un problema, y es que no podemos darle el nombre que queramos. Es decir, cuando escribimos,

\begin{fmffile}{feyn4}

estamos especificando la fuente (feyn4) para el tipo de diagrama que queremos (en este caso, para fermiones). Para especificar otras partículas (es decir, para poder cambiar las palabras «feyn4») es necesario leer el manual del paquete feynmf.

Recuerda, eso sí, que el fichero «.tex» puede tener otro nombre, por ejemplo «diag1.tex», pero después de pasar el compilador latex, debes hacer

>mpost feyn4.mf

porque el tipo de fuente que has especificado es el que se corresponde con feyn4.mf. Y luego, una vez hecho esto, volve a compilar el documento con el botón de latex. Observa que el documento «diag1.tex» y la imagen que compilas con metapost (mpost) «feyn4.mf», tienen nombres diferentes.

Hola, me ha surgido una duda, la comento aquí por si me podéis ayudar.
Quiero dibujar un diagrama de emisión formado por tres ramas. Dos de ellas son fermiones y la otra un fotón. Querría dibujar los dos fermiones como una línea horizontal (con las dos flechas correspondientes) y el fotón como una rama vertical hacia arriba que empieza en el vértice.

Un saludo.

Aunque puedes encontrar fácilmente la solución en el manual del paquete fmfman, el código sería,

\begin{figure}
\begin{fmffile}{box}
\begin{fmfgraph*}(160,80)
\fmfbottom{i1,d1,o1}
\fmftop{i2,d2,o2}
\fmflabel{$e^-$}{i1}
\fmflabel{$e^-$}{o2}
\fmf{fermion}{i1,v1,o1}
\fmf{fermion}{o2,v2,i2}
\fmf{photon,label=$\gamma$,tension=0}{v1,v2}
\end{fmfgraph*}
\end{fmffile}
\end{figure}

Observa que puedes pasar al diagrama habitual entre dos electrones quitando el comando «tension=0»,

\begin{figure}
\begin{fmffile}{simple}
\begin{fmfgraph*}(160,100)
\fmfleft{i1,i2}
\fmfright{o1,o2}
\fmflabel{$e^-$}{i1}
\fmflabel{$e^-$}{o1}
\fmflabel{$e^-$}{i2}
\fmflabel{$e^-$}{o2}
\fmf{fermion}{i1,v1,o1}
\fmf{fermion}{i2,v2,o2}
\fmf{photon,label=$\gamma$}{v1,v2}
\end{fmfgraph*}
\end{fmffile}
\end{figure}

Espero que te sirva de ayuda.

Bueno, como dice Miguel, hurgando un poco en el pdf, y variando algún ejemplillo del mismo, se puede encontrar la solución. Aquí te la paso,

\begin{figure}[H]
\begin{fmffile}{simple}
\begin{fmfgraph*}(160,100)
\fmfleft{i1,i2}
\fmfright{o1}
\fmflabel{$e^-$}{i1}
\fmflabel{$e^+$}{i2}
\fmf{fermion,tension=1/3}{i1,v1}
\fmf{plain}{v1,v2}
\fmf{fermion}{v2,v3}
\fmf{plain}{v3,i2}
\fmf{photon,label=$\gamma$}{v1,o1}
\end{fmfgraph*}
\end{fmffile}
\end{figure}

Se pueden modificar más cosas, pero ya lo dejo a tu gusto. Espero que te sirva de ayuda.

Lo primero, gracias de nuevo a ambos dos por contestar. Justamente quiero representar ese diagrama pero con los fermiones en una misma línea horizontal y el fotón en vertical. Me parece más bonito cómo queda al representarlo de esta última forma. No consigo que se me quede como digo.

Hola María. Ya veo cómo quieres el diagrama,

\begin{figure}
\begin{fmffile}{box}
\begin{fmfgraph*}(160,80)
\fmfbottom{i2,d2,o2}
\fmftop{v1}
\fmf{plain}{v1}
\fmflabel{$e^-$}{o2}
\fmflabel{$e^+$}{i2}
\fmf{fermion}{v2,o2}
\fmf{fermion}{v2,i2}
\fmf{photon,label=$\gamma$,tension=0}{v1,v2}
\end{fmfgraph*}
\end{fmffile}
\end{figure}

Creo que es así, espero que te sirva.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.