17

I'm trying to write a code for Feynman diagrams with TikZ (I know it is a common subject in the forum). I found very useful posts. However, I would like to draw a curved waved line

\documentclass{beamer}

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,decorations.markings,snakes}

\begin{document}

\begin{tikzpicture}[thick]
  \path [draw=blue]
    (-4,0) -- (-2,0) -- (2,0) -- (4,0);
  \draw[draw=blue,snake=coil, segment aspect=0] (2,0) arc (0:180:2cm);
\end{tikzpicture}

\end{document}

The above code just draw a solid line, no waved.

Can anyone help me solve this weird behaviour?

  • 2
    You aren't invoking the decorations. A decoration needs to be defined (usually via the decoration key) and invoked, via the decorate key. – Loop Space Jan 2 '13 at 14:56
21

Actually the library snakes has been superseded by decorations, but for your need I think you are just looking for decorations.pathmorphing.

Thus, your code revised, is like:

\documentclass{beamer}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}

\tikzset{snake it/.style={decorate, decoration=snake}}

\begin{document}
\vspace*{2cm}
\begin{center}
\begin{tikzpicture}[thick]
  \path [draw=blue,snake it]
    (-4,0) -- (-2,0) -- (2,0) -- (4,0);
  \draw[draw=blue, snake it] (2,0) arc (0:180:2cm);
\end{tikzpicture}
\end{center}
\end{document}

Notice that I grouped in a single style snake it the keys that really set up the decoration decorate and the one that sets the type of decoration decoration=snake.

For further details, you can have a look to section 72 Decorations and more specifically to section 30.2 Path Morphing Decorations on the pgfmanual. (section 48.2 in pgfmanual 3.0)

  • 1
    Thank you @claudio, your answer was very helpful!! Cheers – Dox Jan 2 '13 at 15:26
10

The new TikZ-Feynman package (see also the project page) makes it easy to create Feynman diagrams.

The following is just an example to show its capabilities. The relevant key to produce the half circle is half left. You have to compile with lualatex in order to exploit the automatic positioning of vertices.

\documentclass[tikz]{standalone}
\usepackage{tikz-feynman}
\begin{document}
\feynmandiagram [layered layout, horizontal=a to d] {
  a -- [scalar,red] b -- [fermion,blue] c -- [gluon,orange] d,
  b -- [photon, half left] c, % this produces the curved photon line
};
\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.