[Tex/LaTex] Best package for drawing dance charts

charts

I want to draw dance step chart.
Something similar to

this
(source: community.ca.com)

I was wondering if maybe dedicated package exists or is my only option to use "normal" drawing tools. Maybe something like Tikz?

Does anyone have any experience with something like this?. What would you recommend?

Best Answer

I would use TikZ; here's a little initial code that could be highly improved, but the idea is to define one basic shape (for the right foot, the other, for the left one is a simple reflection) and then it seems simple to place the shapes in the desired positions using nodes:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{graphicx}

\newcommand\rifoot{%
\begin{tikzpicture}[scale=0.4]
  \path[fill=black] (0,0) -- (3,0) -- (2,-5) -- (0,-5) -- cycle;
  \fill (1.5,0) circle (1.5); 
  \fill (1,-5.5) circle (1); 
  \fill[white] (0,-5) rectangle (2,-5.5); 
\end{tikzpicture}}

\newcommand\lefoot{\scalebox{-1}[1]{\rifoot}}

\begin{document}

\begin{tikzpicture}
% the feet
\node (l1) at (0,0) {\lefoot};
\node (r1) at (2,-2) {\rifoot};
\node (l2) at (0,-5) {\lefoot};
\node (r2) at (2,-7) {\rifoot};
\node[rotate=-80] (l3) at (7,1) {\lefoot};
\node[rotate=-120] (r3) at (5.5,-2) {\rifoot};
\node[rotate=-120]  (r4) at (5.5,-6) {\rifoot};

% the arrows
\draw[ultra thick,->,dashed] (l1.north) to[out=90,in=135] (l3);
\draw[ultra thick,->] ([xshift=-1cm,yshift=0.5cm]r3.east) -- +(0,-2);

% the labels
\node[font=\LARGE\sffamily\bfseries] at ([xshift=-1cm]l2.west) {1.};
\node[font=\LARGE\sffamily\bfseries] at ([xshift=-1cm]l1.west) {2.};
\node[font=\LARGE\sffamily\bfseries] at ([xshift=3.5cm,yshift=2cm]r3.east) {3.};
\node[font=\LARGE\sffamily\bfseries] at ([xshift=3.5cm,yshift=1cm]r4.east) {4.};
\end{tikzpicture}

\end{document}

enter image description here

Paulo Cereda has kinly provided me with some nicer shapes for the feet and now the overall aspect improves:

\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}

\newcommand\rifoot{\includegraphics[scale=0.7]{rifoot}}
\newcommand\lefoot{\includegraphics[scale=0.7]{lefoot}}

\begin{document}

\begin{tikzpicture}
% the feet
\node (l1) at (0,0) {\lefoot};
\node (r1) at (0.7,-0.7) {\rifoot};
\node (l2) at (0,-2) {\lefoot};
\node (r2) at (0.7,-2.7) {\rifoot};
\node[rotate=-60] (l3) at (2.8,-0) {\lefoot};
\node[rotate=-120] (r3) at (2,-0.8) {\rifoot};
\node[rotate=-120]  (r4) at (2,-2.5) {\rifoot};

% the arrows
\draw[ultra thick,->,dashed] (l1.north) to[out=90,in=90] (l3.west);
\draw[ultra thick,->] ([xshift=-10pt,yshift=0pt]r3.east) -- +(0,-1);

% the labels
\node[font=\LARGE\sffamily\bfseries] at ([xshift=-1cm]l2.west) {1.};
\node[font=\LARGE\sffamily\bfseries] at ([xshift=-1cm]l1.west) {2.};
\node[font=\LARGE\sffamily\bfseries] at ([xshift=1.7cm,yshift=0.5cm]r3.east) {3.};
\node[font=\LARGE\sffamily\bfseries] at ([xshift=1.7cm]r4.east) {4.};
\end{tikzpicture}

\end{document}

enter image description here

And here are the PNG images:

enter image description here

enter image description here