# How can I make a standard timeline?

I am looking to make a standard timeline, nothing fancy, like the one below (although, it does not have to be like that) using any library. How can I go about the achieving this in the best way?

-

Here's one possibility using TikZ:

## Update:

I made some additional improvements to the original code (older versions can be seen in the edit history of this answer):

\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{ragged2e}
\usepackage{fourier}
\usepackage{tikz}
\usetikzlibrary{chains,shapes.arrows,fit}

\definecolor{arrowcolor}{RGB}{201,216,232}% color for the arrow filling
\definecolor{circlecolor}{RGB}{79,129,189}% color for the inner circles filling
\colorlet{textcolor}{white}% color for the text inside the circles
\colorlet{bordercolor}{white}% color for the outer border of circles

\pgfdeclarelayer{background}
\pgfsetlayers{background,main}

\tikzset{
inner/.style={
on chain,
circle,
inner sep=4pt,
fill=circlecolor,
line width=1.5pt,
draw=bordercolor,
text width=1.2em,
align=center,
text height=1.25ex,
text depth=0ex
},
on grid
}

\node[inner xsep=0pt] (c1) {\phantom{A}};
\else
\fi
\node[inner,font=\footnotesize\sffamily\color{textcolor}]
}

\newcommand\drawarrow{% the arrow is placed in the background layer
% after the node for the tasks have been placed
\node[on chain] (c1) {}; % if no \Task command is used, the arrow will be drawn
\fi
\node[on chain] (f) {};
\begin{pgfonlayer}{background}
\node[
inner sep=10pt,
single arrow,
draw=none,
fill=arrowcolor,
fit= (c1) (f)
] (arrow) {};
\fill[white] % the decoration at the tail of the arrow
(arrow.before tail) -- (c1|-arrow.west) -- (arrow.after tail) -- cycle;
\end{pgfonlayer}
}

{\par\noindent\begin{tikzpicture}[start chain,#1]}
{\drawarrow\end{tikzpicture}\par}

\begin{document}

\begin{timeline}
\Task{Work on user interface and some modulation \\ 28/04/2012}
\Task{Work on and complete proposal to hand in \\ 29/04/2012}
\Task{Hand in proposal and astart working on Software planning \\ 04/05/2012}
\Task{Hand in Software planning and work on more content \\ 06/05/2012}
\Task{Complete full user UI with action listeners \\ 12/05/2012}
\Task{Complete beta testing and debug \\ May 13th to May 29th}
\end{timeline}

\vspace{1cm}

\definecolor{arrowcolor}{RGB}{144,168,65}
\colorlet{circlecolor}{white}
\definecolor{bordercolor}{RGB}{168,89,65}
\colorlet{textcolor}{bordercolor}

\begin{timeline}
\Task[W]{Zucchini muffins with cream cheese, grapes, and watermelon}
\Task[Th]{Peanut butter and banana sandwiches, popcorn, one peach}
\Task[F]{Cream cheese and cucumber sandwich, grapes, and blueberries}
\Task[Sa]{Grilled fish with lemon, grilled corn, and whole-wheat biscuits}
\end{timeline}

\end{document}


### How the code works:

Inside the timeline environment, use \Task{<description>} for each task. For example:

\begin{timeline}
\taskmark{This is the description of the second task and it is a little long}
\taskmark{This is the description of the third task and it is short}
\end{timeline}


If no \Task command is used, only the arrow will be drawn. The optional argument for \Task, allows to add a label to the inner circles (if the label is too long, the width for the inner style will have to be increased).

-
I'm getting this error "! LaTeX Error: Command \widering already defined. What could be the issue? –  Jeel Shah Apr 15 '13 at 1:40
@gekkostate that error indicates a conflict between names of commands. The only package that perhaps could be causing the name clash that in my code it's fourier; don't load it. If the error persists, it must be elsewhere in your code, not in mine. You can build a MWE illustrating the problem and add it to your question. –  Gonzalo Medina Apr 15 '13 at 1:44
I removed the fourier package it is fixed! Thanks a bunch! –  Jeel Shah Apr 15 '13 at 1:45
Can you please demonstrate how to add more tasks? I kind of have it figured out but it would be better if you could give an explanation of your code. –  Jeel Shah Apr 15 '13 at 1:47
@gekkostate yes, of course, I am improving the code. As soon as I finish, I'll update it and provide an explanation. –  Gonzalo Medina Apr 15 '13 at 1:59

With PSTricks.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{etoolbox}
\SpecialCoor
\def\Mark#1#2#3{%
\pscircle[linewidth=2pt,linecolor=white,fillstyle=solid,fillcolor=blue!75](!2.5 #1 mul 1 add 0){.5}
\ifstrequal{#2}{t}{%
\rput[b](!2.5 #1 mul 1 add  1){\parbox{2cm}{\scriptsize #3}}}{%
\rput[t](!2.5 #1 mul 1 add -1){\parbox{2cm}{\scriptsize #3}}}}

\def\Axis#1{%
\psline[linecolor=blue!50,linewidth=1.5,arrowinset=0,arrowlength=0.5]{->}(0,0)(!2.5 #1 mul 5 add 0)
\pspolygon*[linecolor=white](0,.75)(.75,0)(0,-.75)}

\begin{document}
\begin{pspicture}(0,-3)(10,3)
\Axis{2}
\Mark{0}{t}{Karl's students do not care about dashing patterns.}
\Mark{1}{b}{Karl's students do not care about arrow tips.}
\Mark{2}{t}{Karl's students, by the way, do not know what a transformation matrix is.}
\end{pspicture}
\end{document}

-