0% found this document useful (0 votes)
76 views64 pages

Workshop Tikz

The document describes a Beamer and TikZ workshop given by Andrew Mertz and William Slough. It provides an overview of TikZ capabilities for drawing diagrams in LaTeX documents, including drawing points, lines, shapes, and curves. Examples are given throughout to demonstrate how to use TikZ commands to draw various graphics.

Uploaded by

simo geo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
76 views64 pages

Workshop Tikz

The document describes a Beamer and TikZ workshop given by Andrew Mertz and William Slough. It provides an overview of TikZ capabilities for drawing diagrams in LaTeX documents, including drawing points, lines, shapes, and curves. Examples are given throughout to demonstrate how to use TikZ commands to draw various graphics.

Uploaded by

simo geo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

Beamer and TikZ Workshop

Andrew Mertz
William Slough

Mathematics and Computer Science Department


Eastern Illinois University

July 17, 2007

TUG 2007: Practicing TEX


Afternoon overview: TikZ

I One of many drawing choices found in the TEX jungle

I PGF is the “back end” — TikZ provides a convenient interface

I TikZ shares some ideas with MetaPost and PSTricks

I Multiple input formats: plain TEX, LATEX

I Multiple output formats: PDF, PostScript, HTML/SVG

I Works well with beamer and incremental slides

I Extensive documentation (405 pages)

TUG 2007: Practicing TEX


TikZ capabilities: a laundry list

2-d points 3-d points Cartesian coordinates

Polar coordinates Relative positions Named points

Line segments Bézier curves Rectangles

Circles Ellipses Arcs

Grids Text Drawing

Clipping Filling Shading

Iteration Transformations Libraries

TUG 2007: Practicing TEX


Layout of a TikZ-based document using LATEX
\documentclass[11pt]{article}
...
\usepackage{tikz}

% Optional pgf libraries


\usepackage{pgflibraryarrows}
\usepackage{pgflibrarysnakes}
...

\begin{document}
...
\begin{tikzpicture}
...
\end{tikzpicture}
...
\end{document}
TUG 2007: Practicing TEX
Processing a TikZ-based document

sample.tex pdflatex sample.pdf

I Text and diagrams can be combined in one file

I Stand-alone graphics can be obtained with pdfcrop

TUG 2007: Practicing TEX


2-d points

P
b

a x

\path (a, b) coordinate (P);

TUG 2007: Practicing TEX


A diamond of 2-d points

\begin{tikzpicture}
\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}

TUG 2007: Practicing TEX


A diamond of 2-d points, with arrows

\begin{tikzpicture}[>=triangle 45] I >= sets arrow type


\draw[->] ( 1, 0) -- ( 0, 1); I ->, <-, and <->, sets where
\draw[->] ( 0, 1) -- (-1, 0); arrowheads are to be placed
\draw[->] (-1, 0) -- ( 0,-1);
\draw[->] ( 0,-1) -- ( 1, 0); I Arrows will be placed only
\end{tikzpicture} on the last part of a path

TUG 2007: Practicing TEX


A diamond of 2-d points, with arrows

\begin{tikzpicture}[>=triangle 45] I >= sets arrow type


\draw[->] ( 1, 0) -- ( 0, 1); I ->, <-, and <->, sets where
\draw[->] ( 0, 1) -- (-1, 0); arrowheads are to be placed
\draw[->] (-1, 0) -- ( 0,-1);
\draw[->] ( 0,-1) -- ( 1, 0); I Arrows will be placed only
\end{tikzpicture} on the last part of a path

TUG 2007: Practicing TEX


A diamond of 2-d points, with arrows

\begin{tikzpicture}[>=triangle 45] I >= sets arrow type


\draw[->] ( 1, 0) -- ( 0, 1); I ->, <-, and <->, sets where
\draw[->] ( 0, 1) -- (-1, 0); arrowheads are to be placed
\draw[->] (-1, 0) -- ( 0,-1);
\draw[->] ( 0,-1) -- ( 1, 0); I Arrows will be placed only
\end{tikzpicture} on the last part of a path

TUG 2007: Practicing TEX


A diamond of 2-d points, with arrows

\begin{tikzpicture}[>=triangle 45] I >= sets arrow type


\draw[->] ( 1, 0) -- ( 0, 1); I ->, <-, and <->, sets where
\draw[->] ( 0, 1) -- (-1, 0); arrowheads are to be placed
\draw[->] (-1, 0) -- ( 0,-1);
\draw[->] ( 0,-1) -- ( 1, 0); I Arrows will be placed only
\end{tikzpicture} on the last part of a path

TUG 2007: Practicing TEX


A diamond of 2-d points, with grid

\draw[step=0.25cm,color=blue!30] (-1,-1) grid (1,1);


\draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;

TUG 2007: Practicing TEX


A few path options

I Fill path
I Change pen color
I Change pen width
I Adjust transparency
TUG 2007: Practicing TEX
A few path options: details

\begin{tikzpicture}
\draw[step=0.25cm,color=blue!30]
(-1,-1) grid (1,1);
\draw[fill,color=blue!30,draw=red,
line width=2pt,opacity=0.5]
(1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle;
\end{tikzpicture}

TUG 2007: Practicing TEX


Points specified with polar coordinates

(α : r dim)
r

α
x

dim: A dimensional unit (cm, pt, mm, in, . . . )

TUG 2007: Practicing TEX


Specifying points with named coordinates

TUG 2007: Practicing TEX


Specifying points with named coordinates: details
\begin{tikzpicture}
\path (0,0) coordinate (origin);
\path (0:1cm) coordinate (P0);
\path (1*72:1cm) coordinate (P1);
\path (2*72:1cm) coordinate (P2);
\path (3*72:1cm) coordinate (P3);
\path (4*72:1cm) coordinate (P4);

% Pentagon edges
\draw (P0) -- (P1) -- (P2) -- (P3) -- (P4) -- cycle;

% Spokes
\draw (origin) -- (P0) (origin) -- (P1)
(origin) -- (P2) (origin) -- (P3)
(origin) -- (P4);
\end{tikzpicture}
TUG 2007: Practicing TEX
Specifying points with relative coordinates

∆y

∆x

Given coordinate P and offsets ∆x and ∆y , we can establish Q:


\path (P) ++ (∆x, ∆y ) coordinate (Q);

TUG 2007: Practicing TEX


Example with relative offsets

\draw (0,0) --
++(1,0) --
++(1,1) --
++(1,-1) --
++(1,0.5);

TUG 2007: Practicing TEX


Example with relative offsets: ++ vs. +

\draw (0,0) -- ++ specifies a point and updates the


+(1,0) -- current location
+(0,-1) --
+(-1,0) -- + only specifies a point
+(0,1);
TUG 2007: Practicing TEX
Specifying points as intersections

\fill (intersection of 0,2--4,0 and 0,-3--4,5) circle (2pt);

TUG 2007: Practicing TEX


Intersections of horizontal and vertical lines

\fill[red] (1,2 |- 4,3) circle (2pt);


\fill[red] (4,3 -| 1,2) circle (2pt);

Both (p |- q) and (q -| p) specify the intersection of the


vertical line through p and the horizontal line through q.
TUG 2007: Practicing TEX
Rectangles

a c x

\draw (a, b) rectangle (c, d);

TUG 2007: Practicing TEX


Rectangles: examples

\draw (0,0) rectangle (1,1)


rectangle (3,2)
rectangle (4,3);

\draw (0,0) rectangle (1,1)


rectangle (2,0)
rectangle (3,1);

TUG 2007: Practicing TEX


Circles

r
b

a x

\draw (a, b) circle (r dim);

TUG 2007: Practicing TEX


Circles: examples

\draw (0,0) circle (1cm) circle (0.6cm) circle (0.2cm);

\draw (0,0) circle (1cm);


\draw (0.5,0) circle (0.5cm);
\draw (0,0.5) circle (0.5cm);
\draw (-0.5,0) circle (0.5cm);
\draw (0, -0.5) circle (0.5cm);

TUG 2007: Practicing TEX


Ellipses

r2
r1
b

a x

\draw (a, b) ellipse (r1 dim and r2 dim);

TUG 2007: Practicing TEX


Ellipses: examples

\draw (0,0) ellipse (2cm and 1cm);


\draw (0,0) ellipse (0.5cm and 1cm);
\draw (0,0) ellipse (0.5cm and 0.25cm);

\draw[fill,color=blue] (0,0) ellipse (2cm and 1cm);


\draw[fill,color=white] (0,0) ellipse (1cm and 0.5cm);
\draw[fill,color=red] (0,0) ellipse (0.5cm and 0.25cm);

TUG 2007: Practicing TEX


Circular arcs

P
β
r

\draw (P) arc (α : β : r dim);

TUG 2007: Practicing TEX


Circular arcs: examples

\draw[fill, color=red] (0:0.4cm) -- (0:1cm)


arc (0:60:1cm) -- (60:0.4cm)
arc (60:0:0.4cm) -- cycle;

\draw[fill, color=yellow]
(0,0) -- (30:1cm) arc (30:330:1cm) -- cycle;

\draw (0.25,0) arc (0:180:0.25cm)


(0.5,0) arc (0:180:0.5cm)
(0.75,0) arc (0:180:0.75cm)
(1,0) arc (0:180:1cm);
TUG 2007: Practicing TEX
Bézier curves with named coordinates
y

C D

P Q
x

\draw (P) .. controls (C) and (D) .. (Q);

TUG 2007: Practicing TEX


Bézier curves: examples

C D C

P Q P D Q

C D D C

P Q P Q

TUG 2007: Practicing TEX


Bézier curves with relative coordinates

r2

r1

α β
P Q

\draw (P) .. controls +(α : r1 dim)


and +(β : r2 dim) .. (Q);

TUG 2007: Practicing TEX


Using nodes

v2

v3

v0 v1

v4

v5

\path (0:0cm) node[draw,shape=circle] (v0) {$v_0$};

TUG 2007: Practicing TEX


Using nodes: details

\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\path (0:0cm) node (v0) {$v_0$};
\path (0:1cm) node (v1) {$v_1$};
\path (72:1cm) node (v2) {$v_2$};
\path (2*72:1cm) node (v3) {$v_3$};
\path (3*72:1cm) node (v4) {$v_4$};
\path (4*72:1cm) node (v5) {$v_5$};

\draw (v0) -- (v1)


(v0) -- (v2)
(v0) -- (v3)
(v0) -- (v4)
(v0) -- (v5);
\end{tikzpicture}

TUG 2007: Practicing TEX


Nodes on a line or curve

1
2

\draw[blue] (0,0) -- (2,3) node[black, pos=0.5]{$\frac{1}{2}$};

1
2

\draw[blue] (0,0) .. controls (1,2) and (4,2) .. (3,0)


node[black, pos=0.5]{$\frac{1}{2}$};
TUG 2007: Practicing TEX
Using nodes to draw automata

0,1

q0 q1 0

TUG 2007: Practicing TEX


Using nodes to draw automata: details
\begin{tikzpicture}[>=triangle 45]
% Nodes
\path (0,0) node[draw,shape=circle] (q0) {$q 0$};
\path (1,0) node[draw,double,shape=circle] (q1) {$q 1$};

% Initial state
\draw[->] (-0.3,0) -- (q0);

% Edges
\draw[->, shorten >=1mm]
(q0.north) .. controls +(30:0.5cm) and +(150:0.5cm)
.. (q1.north) node[pos=0.5,above] {0,1};
\draw[->, shorten >=1mm]
(q1.south) .. controls +(210:0.5cm) and +(330:0.5cm)
.. (q0.south) node[pos=0.5,below] {1};
\draw[->, shorten >=1mm]
(q1.east) .. controls +(60:0.4cm) and +(-60:0.4cm)
.. (q1.east) node[pos=0.5,right] {0};
\end{tikzpicture}
TUG 2007: Practicing TEX
Using nodes to draw automata: details
\begin{tikzpicture}[>=triangle 45]
% Nodes
\path (0,0) node[draw,shape=circle] (q0) {$q 0$};
\path (1,0) node[draw,double,shape=circle] (q1) {$q 1$};

% Initial state
\draw[->] (-0.3,0) -- (q0);

% Edges
\draw[->, shorten >=1mm]
(q0.north) .. controls +(30:0.5cm) and +(150:0.5cm)
.. (q1.north) node[pos=0.5,above] {0,1};
\draw[->, shorten >=1mm]
(q1.south) .. controls +(210:0.5cm) and +(330:0.5cm)
.. (q0.south) node[pos=0.5,below] {1};
\draw[->, shorten >=1mm]
(q1.east) .. controls +(60:0.4cm) and +(-60:0.4cm)
.. (q1.east) node[pos=0.5,right] {0};
\end{tikzpicture}
TUG 2007: Practicing TEX
Using nodes to draw automata: details
\begin{tikzpicture}[>=triangle 45]
% Nodes
\path (0,0) node[draw,shape=circle] (q0) {$q 0$};
\path (1,0) node[draw,double,shape=circle] (q1) {$q 1$};

% Initial state
\draw[->] (-0.3,0) -- (q0);

% Edges
\draw[->, shorten >=1mm]
(q0.north) .. controls +(30:0.5cm) and +(150:0.5cm)
.. (q1.north) node[pos=0.5,above] {0,1};
\draw[->, shorten >=1mm]
(q1.south) .. controls +(210:0.5cm) and +(330:0.5cm)
.. (q0.south) node[pos=0.5,below] {1};
\draw[->, shorten >=1mm]
(q1.east) .. controls +(60:0.4cm) and +(-60:0.4cm)
.. (q1.east) node[pos=0.5,right] {0};
\end{tikzpicture}
TUG 2007: Practicing TEX
Using nodes to draw automata: details
\begin{tikzpicture}[>=triangle 45]
% Nodes
\path (0,0) node[draw,shape=circle] (q0) {$q 0$};
\path (1,0) node[draw,double,shape=circle] (q1) {$q 1$};

% Initial state
\draw[->] (-0.3,0) -- (q0);

% Edges
\draw[->, shorten >=1mm]
(q0.north) .. controls +(30:0.5cm) and +(150:0.5cm)
.. (q1.north) node[pos=0.5,above] {0,1};
\draw[->, shorten >=1mm]
(q1.south) .. controls +(210:0.5cm) and +(330:0.5cm)
.. (q0.south) node[pos=0.5,below] {1};
\draw[->, shorten >=1mm]
(q1.east) .. controls +(60:0.4cm) and +(-60:0.4cm)
.. (q1.east) node[pos=0.5,right] {0};
\end{tikzpicture}
TUG 2007: Practicing TEX
Using loops

TUG 2007: Practicing TEX


Using loops: details

\begin{tikzpicture}
\foreach \i in {1,...,4} {
\path (\i,0) coordinate (X\i);
\fill (X\i) circle (1pt);
}
\foreach \j in {1,...,3} {
\path (\j,1) coordinate (Y\j);
\fill (Y\j) circle (1pt);
}
\foreach \i in {1,...,4} {
\foreach \j in {1,...,3} {
\draw (X\i) -- (Y\j);
}
}
\end{tikzpicture}

TUG 2007: Practicing TEX


Spiral

TUG 2007: Practicing TEX


Spiral: details
% Define the orginal triangle
\path ( 0 , 0) node[shape=coordinate](lastA){}
++( 60:1cm) node[shape=coordinate](lastB){}
++(-60:1cm) node[shape=coordinate](lastC){};

% Draw the orginal triangle


\draw (lastA) -- (lastB) -- (lastC) -- cycle;

\foreach \x in {1,...,60}{ % Draw 60 "sub-triangles"


% Move A toward C, B towards A, and C towards B
\path (lastA) -- (lastC) node[shape=coordinate,pos=.166](A){};
\path (lastB) -- (lastA) node[shape=coordinate,pos=.166](B){};
\path (lastC) -- (lastB) node[shape=coordinate,pos=.166](C){};

\draw (A) -- (B) -- (C) -- cycle; % Draw sub-triangle

\path (A) node[shape=coordinate](lastA){}; % Update positions


\path (B) node[shape=coordinate](lastB){};
\path (C) node[shape=coordinate](lastC){};
}
TUG 2007: Practicing TEX
Rotation

\foreach \alpha in {0,60,...,300} {


\draw[rotate=\alpha] (0,0) -- (0.5,1) --
(0,2) -- (-0.5,1) -- cycle;
}
TUG 2007: Practicing TEX
Rotation

\foreach \alpha / \c in {0/red,120/green,240/blue} {


\fill[rotate=\alpha,color=\c]
(0,0) -- (0.5,1) -- (0,2) -- (-0.5,1) -- cycle;
}

TUG 2007: Practicing TEX


Function plots

\draw[smooth,domain=0:6.28,color=red]
plot function{sin(2*x)*exp(-x/4)};

TUG 2007: Practicing TEX


Plot Types

\draw plot coordinates {point sequence};


\draw plot file {filename};
\draw plot function {gnuplot formula};

Useful options:
I mark: places a given mark at each point of the plot.
I smooth, smooth cycle: points are connected by a (closed)
smooth curve.
I xcomb, ycomb: makes a horizontal or vertical bar diagram.
I line width: sets the size of line to use.

TUG 2007: Practicing TEX


Rising Together
Change in Family Income, 1947–1979

120%
116% 114%
111%
100%
100% 99%
80% 86%

60%

40%

20%

0%
Bottom 20% Second 20% Middle 20% Fourth 20% Top 20% Top 5%

Original graph from www.faireconomy.org/research/income_charts.html

TUG 2007: Practicing TEX


Plot: details

\begin{tikzpicture}[x=1.8cm,y=1pt]
% Bars
\draw[ycomb, color=blue!50, line width=1.4cm]
plot coordinates {(0,116) (1,100) (2,111)
(3, 114) (4,99) (5,86)};
% Axes
\draw (-0.5,0) -- (-0.5,125);
\draw (-0.5,0) -- (5.5,0);
...
\end{tikzpicture}

TUG 2007: Practicing TEX


Clipping

\clip (-0.5,0.2) circle (1cm);


\clip (0.5,-0.2) circle (1cm);
\fill[color=blue!50] (-2,1.5) rectangle (2,-1.5);

TUG 2007: Practicing TEX


Yin-Yang

TUG 2007: Practicing TEX


Yin-Yang: details

\draw (0,0) circle (1cm);


\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}
\fill[black] (90:0.5cm) circle (0.5cm);
\fill[white] (270:0.5cm) circle (0.5cm);
\fill[white] (90:0.5cm) circle (0.1cm);
\fill[black] (270:0.5cm) circle (0.1cm);
TUG 2007: Practicing TEX
Yin-Yang: details

\draw (0,0) circle (1cm);


\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}
\fill[black] (90:0.5cm) circle (0.5cm);
\fill[white] (270:0.5cm) circle (0.5cm);
\fill[white] (90:0.5cm) circle (0.1cm);
\fill[black] (270:0.5cm) circle (0.1cm);
TUG 2007: Practicing TEX
Yin-Yang: details

\draw (0,0) circle (1cm);


\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}
\fill[black] (90:0.5cm) circle (0.5cm);
\fill[white] (270:0.5cm) circle (0.5cm);
\fill[white] (90:0.5cm) circle (0.1cm);
\fill[black] (270:0.5cm) circle (0.1cm);
TUG 2007: Practicing TEX
Yin-Yang: details

\draw (0,0) circle (1cm);


\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}
\fill[black] (90:0.5cm) circle (0.5cm);
\fill[white] (270:0.5cm) circle (0.5cm);
\fill[white] (90:0.5cm) circle (0.1cm);
\fill[black] (270:0.5cm) circle (0.1cm);
TUG 2007: Practicing TEX
Yin-Yang: details

\draw (0,0) circle (1cm);


\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}
\fill[black] (90:0.5cm) circle (0.5cm);
\fill[white] (270:0.5cm) circle (0.5cm);
\fill[white] (90:0.5cm) circle (0.1cm);
\fill[black] (270:0.5cm) circle (0.1cm);
TUG 2007: Practicing TEX
Yin-Yang: details

\draw (0,0) circle (1cm);


\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}
\fill[black] (90:0.5cm) circle (0.5cm);
\fill[white] (270:0.5cm) circle (0.5cm);
\fill[white] (90:0.5cm) circle (0.1cm);
\fill[black] (270:0.5cm) circle (0.1cm);
TUG 2007: Practicing TEX
Scope
The scope environment limits which paths are subject to a
clipping region or applies options to a list of paths.

\begin{scope}
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\end{scope}

\begin{scope}[font=\scriptsize, anchor=base]
\path (0,-10) node {Bottom 20\%};
\path (1,-10) node {Second 20\%};
\path (2,-10) node {Middle 20\%};
\path (3,-10) node {Fourth 20\%};
\path (4,-10) node {Top 20\%};
\path (5,-10) node {Top 5\%};
\end{scope}
TUG 2007: Practicing TEX
Summary

I TikZ is a language for specifying graphics

I Specifying graphics with a language provides exactness

I Familiar graphics-related concepts: points, lines, etc.

I Meshes well with pdfLATEX and beamer

I Reasonably comfortable learning curve

TUG 2007: Practicing TEX


Acknowledgments

Thanks to Till Tantau for developing TikZ!

TUG 2007: Practicing TEX


Questions?

\begin{tikzpicture}
\fill[color=blue!10] (-5,-2.5) rectangle (5,2.5);
\path (0,0) node {{\Huge \color{blue} Questions?}};
\end{tikzpicture}

TUG 2007: Practicing TEX


References

I Beamer: latex-beamer.sourceforge.net

I PGF/TikZ: www.sourceforge.net/projects/pgf/

I Animate package: www.ctan.org/tex-archive/macros/


latex/contrib/animate/

I pdfcrop: www.ctan.org/tex-archive/support/pdfcrop/

TUG 2007: Practicing TEX

You might also like