Ok, so probably you have heard about LaTeX before. Possibly you have used it for writing your neatly typeset, formula-crowded thesis. Eventually you may have heard about Beamer too, the LaTeX package for presentations.

I take it as a near-impossibility that you have actually *used* Beamer for creating a presentation, what with Office-like products being so easy and convenient, or Prezi being so astonishing and cool. But keep reading! For by the end of this article you will be wondering why you haven’t tried it *yet*.

Contrary to LaTeX, which is extremely well documented and easy to find help about, Beamer is much more obscure and can be at times thoroughly frustrating, since doing things that should be easy-peasy such as moving an image a teensy bit to the right can occasionally turn out an impossible hurdle.

Nonetheless, Beamer has two unparalleled strenghts. The first is, obviously, enabling you to leverage the terrific power of LaTeX for delivering neat, aesthetically pleasing presentations. The second strenght lies with a further TeX library, TikZ. TikZ/pgf is, strictly speaking, a graphic library, and therefore can be used for creating all sorts of complex scientific plots. Used inside Beamer, TikZ allows you to create all sorts of drawings, diagrams and graphics. Combine it with Beamer’s overlay feature – the possibility of piecewise uncovering text and other elements in the slide – and you have the possibility of creating completely custom *animations* for your slides. Furthermore, since you are writing the instructions for the graphic library directly inside the LaTeX source file, these are animations that you can *code yourself*. Cool, isn’t it?

But enough with the talk. I have prepared a short example to give you a taste of working with Beamer/TikZ and of the nice tricks you can figure out. Our problem will be to write words in an acronym. The acronym is written normally (horizontal, left-to-right), but we want to have the defining words written *vertically*, one letter below the other.

The acronym we will be using is the Agile mnemonic for the characteristics of a good User Story, INVEST (Independent, Negotiable, Valuable, Estimable, Small, Testable).

We start with a plain `.tex`

file, all the dependencies we need are taken care of by specifying that the `documentclass`

is `beamer`

; we only need to explicitely include TikZ with `usepackage{tikz}`

.

Inside the LaTeX `document`

we create a `frame`

which will host our `tikzpicture`

, wrapped inside a `figure`

for proper positioning.

Now we will write the acronym by putting each letter inside a TikZ `node`

. We will exploit the possibility of referring to a node that has been already drawn using its identifier, and the possibility of positioning TikZ elements *relative* to one another using commands such as `right of`

and `below of`

. The resulting code is really pretty obvious:

```
documentclass[xcolor=dvipsnames]{beamer}
usepackage{tikz}
begin{document}
begin{frame}{}
begin{figure}
begin{tikzpicture}[node distance=1em] %here we specify the distance between nodes for the whole picture
node [SeaGreen!80!black] (I) at (0,0) {Large{I}};
begin{scope}[node distance=3em] %here we define a sub-scope with a different value of the distance
foreach x [remember=x as lastx (initially I)] in {N,V,E,S,T}
node (x) [right of=lastx,SeaGreen!80!black] {Large{x}};
end{scope}
foreach x [remember=x as lastx (initially I)] in {n,d,e,p,e,n,d,e,n,t}
node (x) [below of=lastx] {x};
foreach x [remember=x as lastx (initially N)] in {e,g,o,t,i,a,b,l,e}
node (x) [below of=lastx] {x};
foreach x [remember=x as lastx (initially V)] in {a,l,u,a,b,l,e}
node (x) [below of=lastx] {x};
foreach x [remember=x as lastx (initially E)] in {s,t,i,m,a,b,l,e}
node (x) [below of=lastx] {x};
foreach x [remember=x as lastx (initially S)] in {m,a,l,l}
node (x) [below of=lastx] {x};
foreach x [remember=x as lastx (initially T)] in {e,s,t,a,b,l,e}
node (x) [below of=lastx] {x};
end{tikzpicture}
end{figure}
end{frame}
end{document}
```

This produces our nice acronym with the definitions placed below vertically:

But what if we wanted to show the definitions one by one? That’s super-easy, since the Beamer `pause`

command is recognized inside the `tikzpicture`

environment! So we have:

```
begin{tikzpicture}[node distance=1em]
node [SeaGreen!80!black] (I) at (0,0) {Large{I}};
begin{scope}[node distance=3em]
foreach x [remember=x as lastx (initially I)] in {N,V,E,S,T}
node (x) [right of=lastx,SeaGreen!80!black] {Large{x}};
end{scope}
pause %here we pause after writing the capital letters
foreach x [remember=x as lastx (initially I)] in {n,d,e,p,e,n,d,e,n,t}
node (x) [below of=lastx] {x};
pause %then we have a pause after each word
foreach x [remember=x as lastx (initially N)] in {e,g,o,t,i,a,b,l,e}
node (x) [below of=lastx] {x};
pause
foreach x [remember=x as lastx (initially V)] in {a,l,u,a,b,l,e}
node (x) [below of=lastx] {x};
pause
foreach x [remember=x as lastx (initially E)] in {s,t,i,m,a,b,l,e}
node (x) [below of=lastx] {x};
pause
foreach x [remember=x as lastx (initially S)] in {m,a,l,l}
node (x) [below of=lastx] {x};
pause
foreach x [remember=x as lastx (initially T)] in {e,s,t,a,b,l,e}
node (x) [below of=lastx] {x};
end{tikzpicture}
```

which produces:

And what if we want to uncover single *letters* piecewise? That’s neatly obtained by wrapping the argument of the corresponding `foreach`

statement inside curly braces, so we can add a pause after drawing each node:

```
foreach x [remember=x as lastx (initially I)] in {n,d,e,p,e,n,d,e,n,t}{
node (x) [below of=lastx] {x};
pause
}
```

…though I cannot guarantee your audience will not have dozed off at this point.

That’s it, I hope you had fun and above all that you decided to give Beamer a try 😉

## Leave a Reply