What is the best way to make a timeline like this?
Can I make this more systematic, maybe with tcolorbox etc.?

enter image description here

\usepackage[margin=2cm, showframe=true]{geometry}

%\draw[red] (0,0) circle(1pt); % Origin
\foreach[count=\n from 0, 
] \t in {1800,1801,...,1950}{%%
% Years, Coordinates
\path[draw=brown, %draw=none, 
xshift=\x*\xShift+1*\xGap,  yshift=\y*\yShift 
] circle(1pt) coordinate[label=] (y\t) node[anchor=south west, font=\tiny, rotate=45] {%
\ifnum\ShowValues=1 t:\t, n:\n %, X:\X, x:\x, y:\y, T:\T
% Horicontals
\ifnum\x=0 \draw[blue, yshift=\y*\yShift ] (0,0) -- (\linewidth-\LwGap,0);\fi
% Decades
\draw[xshift=\x*\xShift,   yshift=\y*\yShift 
] (\xGap,2pt) -- (\xGap,-2pt) node[below]{%
\ifnum\T=0 \textbf{\t} \else \T \fi 
\ifnum\ShowValues=1 \\ t:\t \\ T:\T \\ n:\n \\ x:\x \\ y:\y \fi

% Dates
\fill[] (y1803) circle(1pt); 
\draw[] (y1803)  -- ++(0,10mm) -- ++(135:5mm) node[anchor=east, draw, text width=1cm, inner sep=1pt, align=left]{An important happening in 1803.};

\fill[] (y1811) circle(1pt); 
\draw[] (y1811)  -- ++(0,10mm) node[anchor=south, draw, text width=1.5cm, inner sep=1pt, align=left]{Something in the year 1811.};

\draw[brown] (y1863)  -- ++(0,10mm) node[anchor=south, draw, text width=1.5cm, inner sep=1pt, align=left]{The brown circles where not show normally.};

\fill[] (y1922) circle(1pt); 
\draw[] (y1922)  -- ++(0,10mm) -- ++(135:5mm) node[anchor=east, draw, text width=2cm, inner sep=1pt, align=left]{The half centuries can contain different numbers of events.};

1 Answer 1


I suggest taking a look at \usepackage{pgfgantt}, which helps you to produce different styles of timelines.

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.