Drawing Feynman Diagrams Using the Application at feynman.aivazis.com

The web application at feynman.aivazis.com is an attempt to provide the quality of diagrams that is producible in similar packages with the ease of use and portability that is found only on the web. By allowing the user to create diagrams at any Internet-connected device, feynman aims to be a complete solution for producing and exporting production-ready diagrams with as little effort by the user as possible. The only prerequisite in order to fully benefit from the application is to download the LaTeX drawing package that is used by the system if the diagram is to be exported to LaTeX. 1

  1. This package is available for download at feynman.aivazis.com/package as well as when the diagram is successfully exported to LaTeX.


Since they were first introduced in 1948, Feynman diagrams have been the go to representation of mathematical expressions commonly found in high energy physics. For a while, high quality diagrams were only necessary for publications and due to the popularity of latex as a typesetting tool, the most commonly used tools to create these diagrams were packages written for the LaTeX environment.1 While this did allow for an extremely portable representation, the description of these drawings can be rather cryptic to someone who is not intimately familiar with the package. To combat this, Lukas Theussl developed a standalone application known as JaxoDraw which provides a graphical interface for constructing the diagrams and exporting it to various formats, including LaTeX. The major drawback to JaxoDraw is that it requires the user to download the application onto their computer and have a version of Java installed on their computer which is compatible with the one the application was compiled with.

  1. The UK List of TeX Frequently Asked Questions provides four possibilities for drawing Feynman diagrams in LaTeX: feynman, axodraw, feynmf, and feyn.



As shown in figure \ref{fig:mainLayout}, the main layout of the application is divided into three parts. The left most area is reserved for diagram wide settings and actions. These include changing the diagram title and grid size as well as exporting to various file types. The middle area is where the diagram is drawn and the right area is for element specific creation and configuration.

Each of these areas has specific behaviors outlined below.

Diagram Configuration and Tools

The left-most area of the application is reserved for diagram wide settings such as the title and grid size, as well as for performing various actions on the grid as a whole. These actions fall into three categories: exporting the diagram to various file types1, toggle the visibility of the anchors and grid, and navigating the undo stack which allows for the ability to revert the diagram to older versions. There is also a description of the various shortcuts implemented in the application as described in section \ref{sect:shortcuts}.

The Canvas

The middle section is the primary interaction area and displays the current diagram and its title. The user can add elements to the diagram in two ways: using the shortcuts described in section \ref{sect:shortcuts}, or by dragging and element from the toolbar on the right and dropping it on somewhere on the grid.

It is important to note that the user can hold the spacebar down while dragging in order to pan around the canvas and can scroll with his/her wheel in order to zoom in/out accordingly.

Item Palette / Element Configuration

When no element is selected, the right most area shows the item palette which provides a way for the user to add various elements to the diagram by dragging them from the buttons on the right and dropping them on the canvas. When the element is placed, the application first looks for overlapping anchors and performs a merge if necessary, then it looks for overlapping lines, and finally shapes which would act as a constraint to the anchor. There is also a button to draw pre-defined patterns onto the diagram (overwritting anything that was previously present).

When an element is selected, the right most area shows the various configuration parameters for the selected element(s) as described in section \ref{sect:configuration}.

  1. Currently only png, svg, and LaTeX are supported but there are more file types to come as well as the ability to export to a Mathematica package for further calculations.