LaTeX VIII: Cómo hacer diagramas de Feynman

Por fisimur
En Cascaruja
30 de Marzo de 2009
23 Comentarios
4376 Visitas

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.

Share

Suscríbete a nuestro boletín mensual
Recibe cada mes los últimos artículos de Un cacho de ciencia

Acerca de "" tiene 44 Artículos

Usuario coorporativo para mensajes comunitarios

23 Comentarios a “LaTeX VIII: Cómo hacer diagramas de Feynman”

  1. María dice:

    Hola,
    Al copiar el código del ejemplo que has puesto me da error: ‘File sparticles.sty not found.’ ¿Qué ocurre?

    Gracias!

  2. Hola María. El autor del post me pide que te haga llegar esta respuesta.

    < en esta web del cern

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

    Nos vemos.>>

    Gracias por tu comentario.

  3. María dice:

    Hola Miguel.

    He guardado el paquete en una carpeta (que he llamado sparticles) y la he puesto junto con el resto de paquetes. Pero me sigue dando el mismo error =(

  4. 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.

  5. María dice:

    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.

  6. María dice:

    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

  7. 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.

  8. María dice:

    Con eso parece que todo va bien hasta que compilo por segunda vez. Me dice: Unknown graphics exdtension: .1

  9. ¿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.

  10. María dice:

    No. De hecho la consola no me da ningún error. Sólo me da el error al compilar por segunda vez.

  11. Juan dice:

    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.

  12. Juan dice:

    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.

  13. María dice:

    Ya lo he solucionado.

    Simplemente me faltaba esto: \DeclareGraphicsRule{.1}{mps}{*}{}
    Latex ya me reconoce la extensión .1

    Gracias por vuestra ayuda!

  14. María dice:

    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.

  15. Juan dice:

    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.

  16. María dice:

    Hola Juan.
    Ese diagrama sí se hacerlo. El problema es que sólo quiero dibujar un vértice, es decir, un par electrón positrón y el fotón con un extremo suelto.

  17. ¿En el PDF que te ha enlazado no viene la forma de hacer lo que solicitas?

  18. Juan dice:

    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.

  19. María dice:

    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.

  20. Gracias a ti por la participación. Para que esta sea más fluida y se informé a uno y a otro de las respuestas por correo te recomiendo usar el foro que puedes encontrar en http://foro.fisimur.org 😉

  21. Juan dice:

    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.

  22. María dice:

    Sí, así es! 🙂 Muchas gracias, Juan.

    Un saludo.

  23. Juan dice:

    De nada 😉

Deja un comentario

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