TikZ and PGF

Manual for Version 1.00

\tikzstyle{level 1}=[sibling angle=120]
\tikzstyle{level 2}=[sibling angle=60]
\tikzstyle{level 3}=[sibling angle=30]
\tikzstyle{every node}=[fill]
\tikzstyle{edge from parent}=[snake=expanding waves,segment length=1mm,segment angle=10,draw]
\tikz [grow cyclic,shape=circle,very thick,level distance=13mm,cap=round]
\node {} child [color=\A] foreach \A in {red,green,blue}
{ node {} child [color=\A!50!\B] foreach \B in {red,green,blue}
{ node {} child [color=\A!50!\B!50!\C] foreach \C in {black,gray,white}
{ node {} }
}
};

Für meinen Vater, damit er noch viele schöne TEX-Graphiken erschaffen kann.

The TikZ and PGF Packages
Manual for Version 1.00
http://sourceforge.net/projects/pgf

Till Tantau
mailto:tantau@users.sourceforge.net

October 23, 2005

### Contents

I Getting Started
1 Introduction
1.1 Structure of the System
1.2 Comparison with Other Graphics Packages
1.3 Utilities: Page Management
1.4 How to Read This Manual
1.5 Getting Help
2 Installation
2.1 Package and Driver Versions
2.2 Installing Prebundled Packages
2.2.1 Debian
2.2.2 MiKTeX
2.3 Installation in a texmf Tree
2.3.1 Installation that Keeps Everything Together
2.3.2 Installation that is TDS-Compliant
2.4 Updating the Installation
2.5 License: The GNU Public License, Version 2
2.5.1 Preamble
2.5.2 Terms and Conditions For Copying, Distribution and Modification
2.5.3 No Warranty
3 Tutorial: A Picture for Karl’s Students
3.1 Problem Statement
3.2 Setting up the Environment
3.2.1 Setting up the Environment in LATEX
3.2.2 Setting up the Environment in Plain TEX
3.3 Straight Path Construction
3.4 Curved Path Construction
3.5 Circle Path Construction
3.6 Rectangle Path Construction
3.7 Grid Path Construction
3.8 Adding a Touch of Style
3.9 Drawing Options
3.10 Arc Path Construction
3.11 Clipping a Path
3.12 Parabola and Sine Path Construction
3.13 Filling and Drawing
3.14 Shading
3.15 Specifying Coordinates
3.16 Adding Arrow Tips
3.17 Scoping
3.18 Transformations
3.19 Repeating Things: For-Loops
3.20 Adding Text
3.21 Nodes
4 Guidelines on Graphics
4.1 Should You Follow Guidelines?
4.2 Planning the Time Needed for the Creation of Graphics
4.3 Workflow for Creating a Graphic
4.4 Linking Graphics With the Main Text
4.5 Consistency Between Graphics and Text
4.6 Labels in Graphics
4.7 Plots and Charts
4.8 Attention and Distraction
5 Input and Output Formats
5.1 Supported Input Formats
5.1.1 Using the LATEXFormat
5.1.2 Using the Plain TEX Format
5.1.3 Using the ConTEXt Format
5.2 Supported Output Formats
5.2.1 Selecting the Backend Driver
5.2.2 Producing PDF Output
5.2.3 Producing PostScript Output
5.2.4 Producing HTML / SVG Output
II TikZ ist kein Zeichenprogramm
6 Design Principles
6.1 Special Syntax For Specifying Points
6.2 Special Syntax For Path Specifications
6.3 Actions on Paths
6.4 Key-Value Syntax for Graphic Parameters
6.5 Special Syntax for Specifying Nodes
6.6 Special Syntax for Specifying Trees
6.7 Grouping of Graphic Parameters
6.8 Coordinate Transformation System
7 Hierarchical Structures: Package, Environments, Scopes, and Styles
7.1 Loading the Package
7.2 Creating a Picture
7.2.1 Creating a Picture Using an Environment
7.2.2 Creating a Picture Using a Command
7.2.3 Adding a Background
7.3 Using Scopes to Structure a Picture
7.4 Using Scopes Inside Paths
7.5 Using Styles to Manage How Pictures Look
8 Specifying Coordinates
8.1 Coordinates and Coordinate Options
8.2 Simple Coordinates
8.3 Polar Coordinates
8.4 Xy- and Xyz-Coordinates
8.5 Node Coordinates
8.5.1 Named Anchor Coordinates
8.5.2 Angle Anchor Coordinates
8.5.3 Anchor-Free Node Coordinates
8.6 Intersection Coordinates
8.6.1 Intersection of Two Lines
8.6.2 Intersection of Horizontal and Vertical Lines
8.7 Relative and Incremental Coordinates
9 Syntax for Path Specifications
9.1 The Move-To Operation
9.2 The Line-To Operation
9.2.1 Straight Lines
9.2.2 Horizontal and Vertical Lines
9.2.3 Snaked Lines
9.3 The Curve-To Operation
9.4 The Cycle Operation
9.5 The Rectangle Operation
9.6 Rounding Corners
9.7 The Circle and Ellipse Operations
9.8 The Arc Operation
9.9 The Grid Operation
9.10 The Parabola Operation
9.11 The Sine and Cosine Operation
9.12 The Plot Operation
9.12.1 Plotting Points Given Inline
9.12.2 Plotting Points Read From an External File
9.12.3 Plotting a Function
9.12.4 Placing Marks on the Plot
9.12.5 Smooth Plots, Sharp Plots, and Comb Plots
9.13 The Scoping Operation
9.14 The Node Operation
10 Actions on Paths
10.1 Specifying a Color
10.2 Drawing a Path
10.2.1 Graphic Parameters: Line Width, Line Cap, and Line Join
10.2.2 Graphic Parameters: Dash Pattern
10.2.3 Graphic Parameters: Draw Opacity
10.2.4 Graphic Parameters: Arrow Tips
10.2.5 Graphic Parameters: Double Lines and Bordered Lines
10.3 Filling a Path
10.3.1 Graphic Parameters: Interior Rules
10.3.2 Graphic Parameters: Fill Opacity
10.4 Shading a Path
10.4.1 Choosing a Shading Type
10.4.2 Choosing a Shading Color
10.5 Establishing a Bounding Box
10.6 Using a Path For Clipping
11 Nodes
11.1 Nodes and Their Shapes
11.2 Multi-Part Nodes
11.3 Options for the Text in Nodes
11.4 Placing Nodes Using Anchors
11.5 Transformations
11.6 Placing Nodes on a Line or Curve
11.6.1 Explicit Use of the Position Option
11.6.2 Implicit Use of the Position Option
11.7 Connecting Nodes
11.8 Predefined Shapes
12 Making Trees Grow
12.1 Introduction to the Child Operation
12.2 Child Paths and the Child Nodes
12.3 Naming Child Nodes
12.4 Specifying Options for Trees and Children
12.5 Placing Child Nodes
12.6 Edges From the Parent Node
13 Transformations
13.1 The Different Coordinate Systems
13.2 The Xy- and Xyz-Coordinate Systems
13.3 Coordinate Transformations
III Libraries and Utilities
14 Libraries
14.1 Arrow Tip Library
14.1.1 Triangular Arrow Tips
14.1.2 Barbed Arrow Tips
14.1.3 Bracket-Like Arrow Tips
14.1.4 Circle and Diamond Arrow Tips
14.1.5 Partial Arrow Tips
14.1.6 Line Caps
14.2 Snake Library
14.3 Plot Handler Library
14.3.1 Curve Plot Handlers
14.3.2 Comb Plot Handlers
14.3.3 Mark Plot Handler
14.4 Plot Mark Library
14.5 Shape Library
14.6 Tree Library
14.6.1 Growth Functions
14.6.2 Edges From Parent
14.7 Background Library
14.8 Automata Drawing Library
15 Repeating Things: The Foreach Statement
16 Page Management
16.1 Basic Usage
16.2 The Predefined Layouts
16.3 Defining a Layout
16.4 Creating Logical Pages
17 Extended Color Support
IV The Basic Layer
18 Design Principles
18.1 Core and Optional Packages
18.2 Communicating with the Basic Layer via Macros
18.3 Path-Centered Approach
18.4 Coordinate Versus Canvas Transformations
19 Hierarchical Structures: Package, Environments, Scopes, and Text
19.1 Overview
19.1.1 The Hierarchical Structure of the Package
19.1.2 The Hierarchical Structure of Graphics
19.2 The Hierarchical Structure of the Package
19.2.1 The Main Package
19.2.2 The Core Package
19.2.3 The Optional Basic Layer Packages
19.3 The Hierarchical Structure of the Graphics
19.3.1 The Main Environment
19.3.2 Graphic Scope Environments
19.3.3 Inserting Text and Images
20 Specifying Coordinates
20.1 Overview
20.2 Basic Coordinate Commands
20.3 Coordinates in the Xy- and Xyz-Coordinate Systems
20.4 Building Coordinates From Other Coordinates
20.4.1 Basic Manipulations of Coordinates
20.4.2 Points Traveling along Lines and Curves
20.4.3 Points on Borders of Objects
20.4.4 Points on the Intersection of Lines
20.5 Extracting Coordinates
20.6 Internals of How Point Commands Work
21 Constructing Paths
21.1 Overview
21.2 The Move-To Path Operation
21.3 The Line-To Path Operation
21.4 The Curve-To Path Operation
21.5 The Close Path Operation
21.6 Arc, Ellipse and Circle Path Operations
21.7 Rectangle Path Operations
21.8 The Grid Path Operation
21.9 The Parabola Path Operation
21.10 Sine and Cosine Path Operations
21.11 Plot Path Operations
21.12 Rounded Corners
21.13 Internal Tracking of Bounding Boxes for Paths and Pictures
22 Snakes
22.1 Overview
22.2 Declaring a Snake
22.2.1 Segments
22.2.2 Snake Automata
22.2.3 The Snake Declaration Command
22.2.4 Predefined Snakes
22.3 Using Snakes
23 Using Paths
23.1 Overview
23.2 Stroking a Path
23.2.1 Graphic Parameter: Line Width
23.2.2 Graphic Parameter: Caps and Joins
23.2.3 Graphic Parameter: Dashing
23.2.4 Graphic Parameter: Stroke Color
23.2.5 Graphic Parameter: Stroke Opacity
23.2.6 Graphic Parameter: Arrows
23.3 Filling a Path
23.3.1 Graphic Parameter: Interior Rule
23.3.2 Graphic Parameter: Filling Color
23.3.3 Graphic Parameter: Fill Opacity
23.4 Clipping a Path
23.5 Using a Path as a Bounding Box
24 Arrow Tips
24.1 Overview
24.1.1 When Does PGF Draw Arrow Tips?
24.1.2 Meta-Arrow Tips
24.2 Declaring an Arrow Tip Kind
24.3 Declaring a Derived Arrow Tip Kind
24.4 Using an Arrow Tip Kind
24.5 Predefined Arrow Tip Kinds
25 Nodes and Shapes
25.1 Overview
25.1.1 Creating and Referencing Nodes
25.1.2 Anchors
25.1.3 Layers of a Shape
25.1.4 Node Parts
25.2 Creating Nodes
25.3 Using Anchors
25.4 Declaring New Shapes
25.4.1 What Must Be Defined For a Shape?
25.4.2 Normal Anchors Versus Saved Anchors
25.4.3 Command for Declaring New Shapes
25.5 Predefined Shapes
26 Coordinate and Canvas Transformations
26.1 Overview
26.2 Coordinate Transformations
26.2.1 How PGF Keeps Track of the Coordinate Transformation Matrix
26.2.2 Commands for Relative Coordinate Transformations
26.2.3 Commands for Absolute Coordinate Transformations
26.2.4 Saving and Restoring the Coordinate Transformation Matrix
26.3 Canvas Transformations
27 Declaring and Using Images
27.1 Overview
27.2 Declaring an Image
27.3 Using an Image
27.4 Masking an Image
28 Declaring and Using Shadings
28.1 Overview
28.2 Declaring Shadings
28.3 Using Shadings
29 Creating Plots
29.1 Overview
29.1.1 When Should One Use PGF for Generating Plots?
29.1.2 How PGF Handles Plots
29.2 Generating Plot Streams
29.2.1 Basic Building Blocks of Plot Streams
29.2.2 Commands That Generate Plot Streams
29.3 Plot Handlers
30 Layered Graphics
30.1 Overview
30.2 Declaring Layers
30.3 Using Layers
31 Quick Commands
31.1 Quick Path Construction Commands
31.2 Quick Path Usage Commands
31.3 Quick Text Box Commands
V The System Layer
32 Design of the System Layer
32.1 Driver Files
32.2 Common Definition Files
33 Commands of the System Layer
33.1 Beginning and Ending a Stream of System Commands
33.2 Path Construction System Commands
33.3 Canvas Transformation System Commands
33.4 Stroking, Filling, and Clipping System Commands
33.5 Graphic State Option System Commands
33.6 Color System Commands
33.7 Scoping System Commands
33.8 Image System Commands
33.9 Shading System Commands
33.10 Reusable Objects System Commands
33.11 Invisibility System Commands
33.12 Internal Conversion Commands
34 The Soft Path Subsystem
34.1 Path Creation Process
34.2 Starting and Ending a Soft Path
34.3 Soft Path Creation Commands
34.4 The Soft Path Data Structure
35 The Protocol Subsystem
VI References and Index

# Part I
Getting Started

This part is intended to help you get started with the PGF package. First, the installation process is explained; however, the system will typically be already installed on your system, so this can often be skipped. Next, a short tutorial is given that explains the most often used commands and concepts of TikZ, without going into any of the glorious details. At the end of this section you will find some, hopefully useful, hints on how to create “good” graphics in general. The information in this section is not specific to PGF.

\tikz \draw[thick,rounded corners=8pt] (0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0) -- (2,0);

# Part II
TikZ ist kein Zeichenprogramm

\begin{tikzpicture}
\draw[fill=yellow] (0,0) -- (60:.75cm) arc (60:180:.75cm);
\draw(120:0.4cm) node {$\alpha$};
\draw[fill=green!30] (0,0) -- (right:.75cm) arc (0:60:.75cm);
\draw(30:0.5cm) node {$\beta$};
\begin{scope}[shift={(60:2cm)}]
\draw[fill=green!30] (0,0) -- (180:.75cm) arc (180:240:.75cm);
\draw (30:-0.5cm) node {$\gamma$};
\draw[fill=yellow] (0,0) -- (240:.75cm) arc (240:360:.75cm);
\draw (-60:0.4cm) node {$\delta$};
\end{scope}
\begin{scope}[thick]
\draw (60:-1cm) node[fill=white] {$E$} -- (60:3cm) node[fill=white] {$F$};
\draw[red] (-2,0) node[left] {$A$} -- (3,0) node[right]{$B$};
\draw[blue,shift={(60:2cm)}] (-3,0) node[left] {$C$} -- (2,0) node[right]{$D$};
\draw[shift={(60:1cm)},xshift=4cm]
node [right,text width=6cm,rounded corners,fill=red!20,inner sep=1ex]
{
When we assume that $\color{red}AB$ and $\color{blue}CD$ are
parallel, i.\,e., ${\color{red}AB} \mathbin{\|} \color{blue}CD$,
then $\alpha = \delta$ and $\beta = \gamma$.
};
\end{scope}
\end{tikzpicture}

# Part III
Libraries and Utilities

In this part the library and utility packages are documented. The library packages provide additional predefined graphic objects like new arrow heads, or new plot marks. These are not loaded by default since many users will not need them.

The utility packages are not directly involved in creating graphics, but you may find them useful nonetheless. All of them either directly depend on PGF or they are designed to work well together with PGF even though they can be used in a stand-alone way.

\begin{tikzpicture}[scale=2]
\shade[top color=blue,bottom color=gray!50] (0,0) parabola (1.5,2.25) |- (0,0);
\draw (1.05cm,2pt) node[above] {$\displaystyle\int_0^{3/2} \!\!x^2\mathrm{d}x$};
\draw[style=help lines] (0,0) grid (3.9,3.9)
[step=0.25cm] (1,2) grid +(1,1);
\draw[->] (-0.2,0) -- (4,0) node[right] {$x$};
\draw[->] (0,-0.2) -- (0,4) node[above] {$f(x)$};
\foreach \x/\xtext in {1/1, 1.5/1\frac{1}{2}, 2/2, 3/3}
\draw[shift={(\x,0)}] (0pt,2pt) -- (0pt,-2pt) node[below] {$\xtext$};
\foreach \y/\ytext in {1/1, 2/2, 2.25/2\frac{1}{4}, 3/3}
\draw[shift={(0,\y)}] (2pt,0pt) -- (-2pt,0pt) node[left] {$\ytext$};
\draw (-.5,.25) parabola bend (0,0) (2,4) node[below right] {$x^2$};
\end{tikzpicture}

# Part IV
The Basic Layer

\begin{tikzpicture}
\draw[gray,very thin] (-1.9,-1.9) grid (2.9,3.9)
[step=0.25cm] (-1,-1) grid (1,1);
\draw[blue] (1,-2.1) -- (1,4.1); % asymptote
\draw[->] (-2,0) -- (3,0) node[right] {$x(t)$};
\draw[->] (0,-2) -- (0,4) node[above] {$y(t)$};
\foreach \pos in {-1,2}
\draw[shift={(\pos,0)}] (0pt,2pt) -- (0pt,-2pt) node[below] {$\pos$};
\foreach \pos in {-1,1,2,3}
\draw[shift={(0,\pos)}] (2pt,0pt) -- (-2pt,0pt) node[left] {$\pos$};
\fill (0,0) circle (0.064cm);
\draw[thick,parametric,domain=0.4:1.5,samples=200]
% The plot is reparameterised such that there are more samples
% near the center.
plot[id=asymptotic-example] function{(t*t*t)*sin(1/(t*t*t)),(t*t*t)*cos(1/(t*t*t))}
node[right] {$\bigl(x(t),y(t)\bigr) = (t\sin \frac{1}{t}, t\cos \frac{1}{t})$};
\fill[red] (0.63662,0) circle (2pt)
node [below right,fill=white,yshift=-4pt] {$(\frac{2}{\pi},0)$};
\end{tikzpicture}

# Part V
The System Layer

This part describes the low-level interface of PGF, called the system layer. This interface provides a complete abstraction of the internals of the underlying drivers.

Unless you intend to port PGF to another driver or unless you intend to write your own optimized frontend, you need not read this part.

In the following it is assumed that you are familiar with the basic workings of the graphics package and that you know what TEX-drivers are and how they work.

\begin{tikzpicture}[shorten >=1pt,->]
\tikzstyle{vertex}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
\foreach \name/\x in {s/1, 2/2, 3/3, 4/4, 15/11, 16/12, 17/13, 18/14, 19/15, t/16}
\node[vertex] (G-\name) at (\x,0) {$\name$};
\foreach \name/\angle/\text in {P-1/234/5, P-2/162/6, P-3/90/7, P-4/18/8, P-5/-54/9}
\node[vertex,xshift=6cm,yshift=.5cm] (\name) at (\angle:1cm) {$\text$};
\foreach \name/\angle/\text in {Q-1/234/10, Q-2/162/11, Q-3/90/12, Q-4/18/13, Q-5/-54/14}
\node[vertex,xshift=9cm,yshift=.5cm] (\name) at (\angle:1cm) {$\text$};
\foreach \from/\to in {s/2,2/3,3/4,3/4,15/16,16/17,17/18,18/19,19/t}
\draw (G-\from) -- (G-\to);
\foreach \from/\to in {1/2,2/3,3/4,4/5,5/1,1/3,2/4,3/5,4/1,5/2}
{ \draw (P-\from) -- (P-\to); \draw (Q-\from) -- (Q-\to); }
\draw (G-3) .. controls +(-30:2cm) and +(-150:1cm) .. (Q-1);
\draw (Q-5) -- (G-15);
\end{tikzpicture}

# Part VI
References and Index

\begin{tikzpicture}
\draw[line width=0.3cm,color=red!30,cap=round,join=round] (0,0)--(2,0)--(2,5);
\draw[help lines] (-2.5,-2.5) grid (5.5,7.5);
\draw[very thick] (1,-1)--(-1,-1)--(-1,1)--(0,1)--(0,0)--
(1,0)--(1,-1)--(3,-1)--(3,2)--(2,2)--(2,3)--(3,3)--
(3,5)--(1,5)--(1,4)--(0,4)--(0,6)--(1,6)--(1,5)
(3,3)--(4,3)--(4,5)--(3,5)--(3,6)
(3,-1)--(4,-1);
\draw[below left] (0,0) node(s){$s$};
\draw[below left] (2,5) node(t){$t$};
\fill (0,0) circle (0.06cm) (2,5) circle (0.06cm);
\draw[->,rounded corners=0.2cm,shorten >=2pt]
(1.5,0.5)-- ++(0,-1)-- ++(1,0)-- ++(0,2)-- ++(-1,0)-- ++(0,2)-- ++(1,0)--
++(0,1)-- ++(-1,0)-- ++(0,-1)-- ++(-2,0)-- ++(0,3)-- ++(2,0)-- ++(0,-1)--
++(1,0)-- ++(0,1)-- ++(1,0)-- ++(0,-1)-- ++(1,0)-- ++(0,-3)-- ++(-2,0)--
++(1,0)-- ++(0,-3)-- ++(1,0)-- ++(0,-1)-- ++(-6,0)-- ++(0,3)-- ++(2,0)--
++(0,-1)-- ++(1,0);
\end{tikzpicture}

### Index

( arrow tip, 177
) arrow tip, 177
* arrow tip, 177
* plot mark, 187
| arrow tip, 295
| plot mark, 187
+ plot mark, 187
- plot mark, 187
-- path operation, 93
-| path operation, 93
|- path operation, 94
--cycle path operation, 99
--plot path operation, 105
.. path operation, 99
> option, 123
[ arrow tip, 177
<shape name> option, 136
] arrow tip, 177
16 on 1 layout, 211
2 on 1 layout, 211
4 on 1 layout, 211
8 on 1 layout, 211

above option, 141
above left option, 142
above right option, 142
\anchor, 308
anchor option, 141
\anchorborder, 309
angle 45 arrow tip, 176
angle 45 reversed arrow tip, 176
angle 60 arrow tip, 176
angle 60 reversed arrow tip, 176
angle 90 arrow tip, 176
angle 90 reversed arrow tip, 176
arc path operation, 101
Arrow tips
(, 177
), 177
*, 177
|, 295
[, 177
], 177
angle 45, 176
angle 45 reversed, 176
angle 60, 176
angle 60 reversed, 176
angle 90, 176
angle 90 reversed, 176
butt cap, 177
diamond, 177
fast cap, 177
fast cap reversed, 177
hooks, 176
hooks reversed, 176
latex, 295
latex reversed, 295
latex', 176
latex' reversed, 176
left hook, 177
left hook reversed, 177
left to, 177
left to reversed, 177
o, 177
open diamond, 177
open triangle 45, 176
open triangle 45 reversed, 176
open triangle 60, 176
open triangle 60 reversed, 176
open triangle 90, 176
open triangle 90 reversed, 176
right hook, 177
right hook reversed, 177
right to, 177
right to reversed, 177
round cap, 177
stealth, 295
stealth reversed, 295
stealth', 176
stealth' reversed, 176
to, 295
to reversed, 295
triangle 45, 176
triangle 45 reversed, 176
triangle 60, 176
triangle 60 reversed, 176
triangle 90, 176
triangle 90 cap, 177
triangle 90 cap reversed, 177
triangle 90 reversed, 176
arrows option, 122
asterisk plot mark, 187
at option, 238
at end style, 145
at start style, 145

background grid style, 195
background rectangle style, 195
background top style, 196
\backgroundpath, 310
ball plot mark, 109
ball color option, 130
base option, 238
baseline option, 76
\beforebackgroundpath, 310
\beforeforegroundpath, 311
\behindbackgroundpath, 310
\behindforegroundpath, 310
below option, 142
below left option, 142
below right option, 142
bend option, 103
bend at end style, 104
bend at start style, 104
bend pos option, 104
border snake, 178
bottom option, 237
bottom color option, 129
brace snake, 178
\breakforeach, 205
bumps snake, 178
butt cap arrow tip, 177

cap option, 119
child path operation, 152
child anchor option, 163
circle path operation, 101
circle shape, 313
\clip, 116
clip option, 131
cm option, 173
coil snake, 179
color option, 116
color option option, 116
\colorcurrentmixin, 221
colormixin environment, 220
\coordinate, 116
coordinate path operation, 137
coordinate shape, 313
cos path operation, 105
cross out shape, 188

dash pattern option, 119
dash phase option, 120
dashed style, 120
densely dashed style, 120
densely dotted style, 120
diamond arrow tip, 177
diamond plot mark, 187
diamond* plot mark, 187
domain option, 108
dotted style, 120
double option, 124
double distance option, 124
draft package option, 231, 330
\draw, 115
draw option, 117
draw opacity option, 121

edge from parent path operation, 162
edge from parent style, 163
edge from parent fork down style, 193
edge from parent fork left style, 194
edge from parent fork right style, 193
edge from parent fork up style, 194
edge from parent path option, 162
ellipse path operation, 101
ellipse shape, 189
<empty> path operation, 92
Environments
colormixin, 220
pgfinterruptpath, 236
pgfinterruptpicture, 236
pgflowlevelscope, 327
pgfonlayer, 354, 355
pgfpicture, 233, 234
pgfscope, 234, 235
scope, 78, 79
tikzpicture, 76, 77
even odd rule option, 126
every <part name> node part style, 138
every <shape> node style, 137
every child style, 156
every child node style, 156
every node style, 136
every path style, 92
every picture style, 77
every plot style, 109
every scope style, 78
execute at begin picture option, 76
execute at begin scope option, 79
execute at end picture option, 76
execute at end scope option, 79
expanding waves snake, 179

fast cap arrow tip, 177
fast cap reversed arrow tip, 177
File, see Packages and files
\fill, 115
fill option, 125
fill opacity option, 127
\filldraw, 115
font option, 138
forbidden sign shape, 189
\foreach, 201
\foregroundpath, 310
framed style, 195

gap after snake option, 95
gap around snake option, 95
gap before snakes option, 95
Graphic options
>, 123
<shape name>, 136
above, 141
above left, 142
above right, 142
anchor, 141
arrows, 122
at, 238
ball color, 130
base, 238
baseline, 76
below, 142
below left, 142
below right, 142
bend, 103
bend pos, 104
bottom, 237
bottom color, 129
cap, 119
child anchor, 163
clip, 131
cm, 173
color, 116
color option, 116
dash pattern, 119
dash phase, 120
domain, 108
double, 124
double distance, 124
draw, 117
draw opacity, 121
edge from parent path, 162
even odd rule, 126
execute at begin picture, 76
execute at begin scope, 79
execute at end picture, 76
execute at end scope, 79
fill, 125
fill opacity, 127
font, 138
gap after snake, 95
gap around snake, 95
gap before snakes, 95
grow, 160
grow via three points, 191
grow', 161
growth function, 161
id, 109
inner color, 129
inner frame sep, 194
inner frame xsep, 194
inner frame ysep, 194
inner sep, 147
inner xsep, 147
inner ysep, 147
join, 119
left, 142, 237
left color, 129
level distance, 158
line after snake, 96
line around snake, 96
line before snake, 95
line width, 118
mark, 109
mark options, 110
mark size, 110
middle color, 129
minimum height, 148
minimum size, 148
minimum width, 148
mirror snake, 96
miter limit, 119
name, 135
next state, 269
nonzero rule, 125
only marks, 112
opacity, 121
outer color, 130
outer frame sep, 196
outer frame xsep, 196
outer frame ysep, 196
outer sep, 147
outer xsep, 147
outer ysep, 147
parabola height, 104
parametric, 108
parent anchor, 163
polar comb, 112
pos, 143
prefix, 109
raise snake, 96
raw gnuplot, 109
reset cm, 173
right, 142, 237
right color, 129
rotate, 172, 238
rotate around, 173
rounded corners, 100
samples, 108
scale, 171
segment amplitude, 96
segment angle, 97
segment aspect, 98
segment length, 97
segment object length, 97
set style, 80
shade, 127
shading, 128
shading angle, 128
shape, 136
sharp corners, 101
sharp plot, 110
shift, 171
shorten <, 124
shorten >, 123
sibling angle, 192
sibling distance, 159
sloped, 144
smooth, 110
smooth cycle, 111
snake, 95
step, 102, 259
stepx, 259
stepy, 259
style, 79
switch if less than, 269
tension, 110
text, 138
text badly centered, 140
text badly ragged, 140
text centered, 140
text justified, 139
text ragged, 139
text width, 139
top, 237
top color, 129
transform shape, 142
use as bounding box, 130
width, 269
x, 169, 238
xcomb, 111
xscale, 171
xshift, 171
xslant, 172
xstep, 102
y, 169, 238
ycomb, 111
yscale, 172
yshift, 171
yslant, 172
ystep, 102
z, 169
grid path operation, 102
gridded style, 196
grow option, 160
grow cyclic style, 192
grow via three points option, 191
grow' option, 161
growth function option, 161

help lines style, 103
hooks arrow tip, 176
hooks reversed arrow tip, 176

id option, 109
\ifpgfresetnontranslationsattime, 323
\ifpgfslopedattime, 323
\ifpgfsys@eorule, 374
\inheritanchor, 312
\inheritanchorborder, 312
\inheritbackgroundpath, 311
\inheritbeforebackgroundpath, 311
\inheritbeforeforegroundpath, 311
\inheritbehindbackgroundpath, 311
\inheritbehindforegroundpath, 311
\inheritforegroundpath, 311
\inheritsavedanchors, 311
inner color option, 129
inner frame sep option, 194
inner frame xsep option, 194
inner frame ysep option, 194
inner sep option, 147
inner xsep option, 147
inner ysep option, 147

join option, 119

latex arrow tip, 295
latex reversed arrow tip, 295
latex' arrow tip, 176
latex' reversed arrow tip, 176
Layout, see Page layout
left option, 142, 237
left color option, 129
left hook arrow tip, 177
left hook reversed arrow tip, 177
left to arrow tip, 177
left to reversed arrow tip, 177
level <number> style, 156
level distance option, 158
line after snake option, 96
line around snake option, 96
line before snake option, 95
line width option, 118
lineto snake, 272
loose background style, 194
loosely dashed style, 120
loosely dotted style, 120

mark option, 109
mark options option, 110
mark size option, 110
middle color option, 129
midway style, 144
minimum height option, 148
minimum size option, 148
minimum width option, 148
mirror snake option, 96
miter limit option, 119
moveto snake, 272

name option, 135
near end style, 145
near start style, 145
nearly opaque style, 122
nearly transparent style, 121
next state option, 269
\node, 116
node path operation, 135
\nodepart, 137
\nodeparts, 306
nonzero rule option, 125

o arrow tip, 177
o plot mark, 187
only marks option, 112
opacity option, 121
opaque style, 122
open diamond arrow tip, 177
open triangle 45 arrow tip, 176
open triangle 45 reversed arrow tip, 176
open triangle 60 arrow tip, 176
open triangle 60 reversed arrow tip, 176
open triangle 90 arrow tip, 176
open triangle 90 reversed arrow tip, 176
oplus plot mark, 187
oplus* plot mark, 187
Options for graphics, see Graphic options
Options for packages, see Package options
otimes plot mark, 187
otimes* plot mark, 187
outer color option, 130
outer frame sep option, 196
outer frame xsep option, 196
outer frame ysep option, 196
outer sep option, 147
outer xsep option, 147
outer ysep option, 147

Package options for PGF
draft, 231, 330
version=<version>, 231
Packages and files
pgf, 231
pgf.cfg, 363
pgfbaseimage, 330
pgfbaselayers, 353
pgfbaseplot, 345
pgfbaseshapes, 298
pgfcore, 232
pgflibraryarrows, 176
pgflibraryautomata, 197
pgflibraryplothandlers, 182
pgflibraryplotmarks, 187
pgflibraryshapes, 188
pgflibrarysnakes, 177
pgflibrarytikzbackgrounds, 194
pgflibrarytikztrees, 190
pgfsys, 363
pgfsys-common-pdf, 364
pgfsys-common-postscript, 364
pgfsys-dvipdfm.def, 64
pgfsys-dvips.def, 65
pgfsys-pdftex.def, 64
pgfsys-tex4ht.def, 65
pgfsys-vtex.def, 64
tikz, 75
Page layouts
16 on 1, 211
2 on 1, 211
4 on 1, 211
8 on 1, 211
resize to, 210
rounded corners, 211
two screens with lagging second, 212
two screens with optional second, 212
parabola path operation, 103
parabola height option, 104
parametric option, 108
parent anchor option, 163
\path, 91
Path operations
--, 93
-|, 93
|-, 94
--cycle, 99
--plot, 105
.., 99
arc, 101
child, 152
circle, 101
coordinate, 137
cos, 105
edge from parent, 162
ellipse, 101
<empty>, 92
grid, 102
node, 135
parabola, 103
plot, 106
rectangle, 100
sin, 105
pentagon plot mark, 187
pentagon* plot mark, 187
pgf package, 231
pgf.cfg file, 363
\pgf@pathmaxx, 263
\pgf@pathmaxy, 263
\pgf@pathminx, 263
\pgf@pathminy, 263
\pgf@picmaxx, 263
\pgf@picmaxy, 264
\pgf@picminx, 263
\pgf@picminy, 263
\pgf@process, 249
\pgf@protocolsizes, 264
\pgf@relevantforpicturesizefalse, 264
\pgf@relevantforpicturesizetrue, 264
\pgf@sys@bp, 380
\pgfaliasimage, 331
\pgfalternateextension, 333
\pgfarrowsdeclare, 288
\pgfarrowsdeclarealias, 292
\pgfarrowsdeclarecombine, 292
\pgfarrowsdeclaredouble, 293
\pgfarrowsdeclarereversed, 292
\pgfarrowsdeclaretriple, 294
pgfbaseimage package, 330
pgfbaselayers package, 353
pgfbaseplot package, 345
pgfbaseshapes package, 298
pgfcore package, 232
\pgfdeclarehorizontalshading, 338
\pgfdeclareimage, 331
\pgfdeclarelayer, 353
\pgfdeclaremask, 334
\pgfdeclareplotmark, 186
\pgfdeclareradialshading, 339
\pgfdeclareshape, 306
\pgfdeclaresnake, 268
\pgfdeclareverticalshading, 339
\pgfextractx, 249
\pgfextracty, 249
\pgfgettransform, 325
\pgfimage, 333
pgfinterruptpath environment, 236
pgfinterruptpicture environment, 236
pgflibraryarrows package, 176
pgflibraryautomata package, 197
pgflibraryplothandlers package, 182
pgflibraryplotmarks package, 187
pgflibraryshapes package, 188
pgflibrarysnakes package, 177
pgflibrarytikzbackgrounds package, 194
pgflibrarytikztrees package, 190
\pgflinewidth, 278
\pgflowlevel, 326
\pgflowlevelobj, 326
pgflowlevelscope environment, 327
\pgflowlevelsynccm, 326
\pgfmultipartnode, 301
\pgfnode, 300
pgfonlayer environment, 354, 355
\pgfpagescurrentpagewillbelogicalpage, 217
\pgfpagesdeclarelayout, 212
\pgfpageslogicalpageoptions, 214
\pgfpagesphysicalpageoptions, 213
\pgfpagesshipoutlogicalpage, 216
\pgfpagesuselayout, 210
\pgfpatharc, 256
\pgfpathcirlce, 258
\pgfpathclose, 255
\pgfpathcosine, 261
\pgfpathcurveto, 255
\pgfpathellipse, 257
\pgfpathgrid, 259
\pgfpathlineto, 254
\pgfpathmoveto, 254
\pgfpathparabola, 260
\pgfpathqcircle, 359
\pgfpathqcurveto, 359
\pgfpathqlineto, 358
\pgfpathqmoveto, 358
\pgfpathrectangle, 258
\pgfpathrectanglecorners, 258
\pgfpathsine, 260
\pgfpathsnakealongvector, 272
\pgfpathsnakesto, 272
\pgfpathsnaketo, 273
pgfpicture environment, 233, 234
\pgfplotgnuplot, 348
\pgfplothandlerclosedcurve, 183
\pgfplothandlercurveto, 182
\pgfplothandlerdiscard, 350
\pgfplothandlerlineto, 349
\pgfplothandlermark, 185
\pgfplothandlerpolarcomb, 184
\pgfplothandlerrecord, 350
\pgfplothandlerxcomb, 184
\pgfplothandlerycomb, 184
\pgfplotmarksize, 187
\pgfplotstreamend, 347
\pgfplotstreampoint, 347
\pgfplotstreamstart, 347
\pgfplotxyfile, 347
\pgfplotxyzfile, 348
\pgfpoint, 241
\pgfpointadd, 244
\pgfpointanchor, 303
\pgfpointborderellipse, 248
\pgfpointborderrectangle, 247
\pgfpointcurveattime, 246
\pgfpointdiff, 244
\pgfpointintersectionoflines, 248
\pgfpointlineatdistance, 246
\pgfpointlineattime, 245
\pgfpointnormalised, 245
\pgfpointorigin, 241
\pgfpointpolar, 241
\pgfpointscale, 244
\pgfpointshapeborder, 304
\pgfpointxy, 242
\pgfpointxyz, 242
\pgfqbox, 360
\pgfqboxsynced, 360
pgfscope environment, 234, 235
\pgfsetarrows, 281, 295
\pgfsetarrowsend, 281, 294
\pgfsetarrowsstart, 281, 294
\pgfsetbaseline, 234
\pgfsetbeveljoin, 278
\pgfsetbuttcap, 278
\pgfsetcolor, 280
\pgfsetcornersarced, 262
\pgfsetdash, 279
\pgfseteorule, 282
\pgfsetfillcolor, 283
\pgfsetfillopacity, 283
\pgfsetlayers, 354
\pgfsetlinetofirstplotpoint, 349
\pgfsetlinewidth, 277
\pgfsetmiterjoin, 279
\pgfsetmiterlimit, 279
\pgfsetmovetofirstplotpoint, 349
\pgfsetnonzerorule, 282
\pgfsetplotmarksize, 186
\pgfsetplottension, 183
\pgfsetrectcap, 278
\pgfsetroundcap, 278
\pgfsetroundjoin, 278
\pgfsetshapeinnerxsep, 302
\pgfsetshapeinnerysep, 303
\pgfsetshapeminheight, 302
\pgfsetshapeminwidth, 302
\pgfsetshapeouterxsep, 303
\pgfsetshapeouterysep, 303
\pgfsetshortenend, 282
\pgfsetshortenstart, 281
\pgfsetsnakesegmenttransformation, 273
\pgfsetstrokecolor, 279
\pgfsetstrokeopacity, 280
\pgfsettransform, 325
\pgfsetxvec, 243
\pgfsetyvec, 243
\pgfsetzvec, 243
\pgfshadepath, 340
\pgfsnakecompleteddistance, 270
\pgfsnakeremainingdistance, 270
pgfsys package, 363
pgfsys-common-pdf file, 364
pgfsys-common-postscript file, 364
pgfsys-dvipdfm.def file, 64
pgfsys-dvips.def file, 65
pgfsys-pdftex.def file, 64
pgfsys-tex4ht.def file, 65
pgfsys-vtex.def file, 64
\pgfsys@begininvisible, 380
\pgfsys@beginpicture, 367
\pgfsys@beginpurepicture, 367
\pgfsys@beginscope, 377
\pgfsys@beveljoin, 373
\pgfsys@buttcap, 372
\pgfsys@clipnext, 372
\pgfsys@closepath, 369
\pgfsys@closestroke, 371
\pgfsys@color@cmy, 375
\pgfsys@color@cmy@fill, 375
\pgfsys@color@cmy@stroke, 375
\pgfsys@color@cmyk, 375
\pgfsys@color@cmyk@fill, 375
\pgfsys@color@cmyk@stroke, 375
\pgfsys@color@gray, 376
\pgfsys@color@gray@fill, 376
\pgfsys@color@gray@stroke, 376
\pgfsys@color@reset, 376
\pgfsys@color@reset@inorderfalse, 376
\pgfsys@color@reset@inordertrue, 376
\pgfsys@color@rgb, 374
\pgfsys@color@rgb@fill, 375
\pgfsys@color@rgb@stroke, 374
\pgfsys@color@unstacked, 377
\pgfsys@curveto, 369
\pgfsys@defineimage, 377
\pgfsys@definemask, 378
\pgfsys@defobject, 379
\pgfsys@discardpath, 372
\pgfsys@endinvisible, 380
\pgfsys@endpicture, 367
\pgfsys@endpurepicture, 368
\pgfsys@endscope, 377
\pgfsys@fill, 371
\pgfsys@fill@opacity, 374
\pgfsys@fillstroke, 372
\pgfsys@hbox, 368
\pgfsys@hboxsynced, 368
\pgfsys@horishading, 378
\pgfsys@imagesuffixlist, 377
\pgfsys@invoke, 379
\pgfsys@lineto, 368
\pgfsys@miterjoin, 373
\pgfsys@moveto, 368
\pgfsys@radialshading, 379
\pgfsys@rect, 369
\pgfsys@rectcap, 373
\pgfsys@roundcap, 372
\pgfsys@roundjoin, 373
\pgfsys@setdash, 373
\pgfsys@setlinewidth, 372
\pgfsys@setmiterlimit, 373
\pgfsys@stroke, 370
\pgfsys@stroke@opacity, 374
\pgfsys@transformcm, 370
\pgfsys@transformshift, 370
\pgfsys@transformxyscale, 370
\pgfsys@typesetpicturebox, 367
\pgfsys@useobject, 379
\pgfsys@vertshading, 379
\pgfsysdriver, 363
\pgfsysprotocol@bufferedfalse, 389
\pgfsysprotocol@bufferedtrue, 389
\pgfsysprotocol@flushcurrentprotocol, 390
\pgfsysprotocol@getcurrentprotocol, 390
\pgfsysprotocol@invokecurrentprotocol, 390
\pgfsysprotocol@literal, 389
\pgfsysprotocol@literalbuffered, 389
\pgfsysprotocol@setcurrentprotocol, 390
\pgfsyssoftpath@closepath, 385
\pgfsyssoftpath@curveto, 385
\pgfsyssoftpath@flushcurrentpath, 384
\pgfsyssoftpath@getcurrentpath, 384
\pgfsyssoftpath@invokecurrentpath, 384
\pgfsyssoftpath@lineto, 385
\pgfsyssoftpath@moveto, 384
\pgfsyssoftpath@rect, 385
\pgfsyssoftpath@setcurrentpath, 384
\pgftext, 237
\pgftransformarrow, 321
\pgftransformcm, 320
\pgftransformcurveattime, 322
\pgftransforminvert, 324
\pgftransformlineattime, 321
\pgftransformreset, 323
\pgftransformresetnontranslations, 324
\pgftransformrotate, 320
\pgftransformscale, 319
\pgftransformshift, 318
\pgftransformxscale, 319
\pgftransformxshift, 318
\pgftransformxslant, 319
\pgftransformyscale, 319
\pgftransformyshift, 318
\pgftransformyslant, 320
\pgfuseimage, 332
\pgfusepath, 276
\pgfusepathqclip, 360
\pgfusepathqfill, 360
\pgfusepathqfillstroke, 360
\pgfusepathqstroke, 360
\pgfuseplotmark, 185
\pgfuseshading, 340
plot path operation, 106
Plot marks
*, 187
|, 187
+, 187
-, 187
asterisk, 187
ball, 109
diamond, 187
diamond*, 187
o, 187
oplus, 187
oplus*, 187
otimes, 187
otimes*, 187
pentagon, 187
pentagon*, 187
square, 187
square*, 187
star, 187
triangle, 187
triangle*, 187
x, 187
polar comb option, 112
pos option, 143
prefix option, 109

raise snake option, 96
raw gnuplot option, 109
rectangle path operation, 100
rectangle shape, 313
reset cm option, 173
resize to layout, 210
right option, 142, 237
right color option, 129
right hook arrow tip, 177
right hook reversed arrow tip, 177
right to arrow tip, 177
right to reversed arrow tip, 177
rotate option, 172, 238
rotate around option, 173
round cap arrow tip, 177
rounded corners layout, 211
rounded corners option, 100

samples option, 108
\savedanchor, 307
\saveddimen, 308
saw snake, 180
scale option, 171
scope environment, 78, 79
segment amplitude option, 96
segment angle option, 97
segment aspect option, 98
segment length option, 97
segment object length option, 97
semithick style, 118
semitransparent style, 122
set style option, 80
\shade, 116
shade option, 127
\shadedraw, 116
shading option, 128
shading angle option, 128
shape option, 136
Shapes
circle, 313
coordinate, 313
cross out, 188
ellipse, 189
forbidden sign, 189
rectangle, 313
state, 197
state with output, 197
strike out, 190
sharp corners option, 101
sharp plot option, 110
shift option, 171
shorten < option, 124
shorten > option, 123
show background bottom style, 197
show background grid style, 195
show background left style, 197
show background rectangle style, 194
show background right style, 197
show background top style, 196
sibling angle option, 192
sibling distance option, 159
sin path operation, 105
sloped option, 144
smooth option, 110
smooth cycle option, 111
snake option, 95
snake snake, 180
snake triangles 45 style, 98
snake triangles 60 style, 98
snake triangles 90 style, 98
Snakes
border, 178
brace, 178
bumps, 178
coil, 179
expanding waves, 179
lineto, 272
moveto, 272
saw, 180
snake, 180
ticks, 180
triangles, 181
waves, 181
zigzag, 181
solid style, 120
square plot mark, 187
square* plot mark, 187
star plot mark, 187
\state, 269
state shape, 197
state with output shape, 197
stealth arrow tip, 295
stealth reversed arrow tip, 295
stealth' arrow tip, 176
stealth' reversed arrow tip, 176
step option, 102, 259
stepx option, 259
stepy option, 259
strike out shape, 190
style option, 79
Styles
at end, 145
at start, 145
background grid, 195
background rectangle, 195
background top, 196
bend at end, 104
bend at start, 104
dashed, 120
densely dashed, 120
densely dotted, 120
dotted, 120
edge from parent, 163
edge from parent fork down, 193
edge from parent fork left, 194
edge from parent fork right, 193
edge from parent fork up, 194
every <part name> node part, 138
every <shape> node, 137
every child, 156
every child node, 156
every node, 136
every path, 92
every picture, 77
every plot, 109
every scope, 78
framed, 195
gridded, 196
grow cyclic, 192
help lines, 103
level <number>, 156
loose background, 194
loosely dashed, 120
loosely dotted, 120
midway, 144
near end, 145
near start, 145
nearly opaque, 122
nearly transparent, 121
opaque, 122
semithick, 118
semitransparent, 122
show background bottom, 197
show background grid, 195
show background left, 197
show background rectangle, 194
show background right, 197
show background top, 196
snake triangles 45, 98
snake triangles 60, 98
snake triangles 90, 98
solid, 120
thick, 118
thin, 118
tight background, 194
transparent, 121
ultra nearly opaque, 122
ultra nearly transparent, 121
ultra thick, 118
ultra thin, 118
very near end, 145
very near start, 145
very nearly opaque, 122
very nearly transparent, 121
very thick, 118
very thin, 118
switch if less than option, 269

tension option, 110
text option, 138
text badly centered option, 140
text badly ragged option, 140
text centered option, 140
text justified option, 139
text ragged option, 139
text width option, 139
thick style, 118
thin style, 118
ticks snake, 180
tight background style, 194
\tikz, 77, 78
tikz package, 75
tikzpicture environment, 76, 77
\tikzstyle, 80
to arrow tip, 295
to reversed arrow tip, 295
top option, 237
top color option, 129
transform shape option, 142
transparent style, 121
triangle plot mark, 187
triangle 45 arrow tip, 176
triangle 45 reversed arrow tip, 176
triangle 60 arrow tip, 176
triangle 60 reversed arrow tip, 176
triangle 90 arrow tip, 176
triangle 90 cap arrow tip, 177
triangle 90 cap reversed arrow tip, 177
triangle 90 reversed arrow tip, 176
triangle* plot mark, 187
triangles snake, 181
two screens with lagging second layout, 212
two screens with optional second layout, 212

ultra nearly opaque style, 122
ultra nearly transparent style, 121
ultra thick style, 118
ultra thin style, 118
use as bounding box option, 130
\useasboundingbox, 116

version=<version> package option, 231
very near end style, 145
very near start style, 145
very nearly opaque style, 122
very nearly transparent style, 121
very thick style, 118
very thin style, 118

waves snake, 181
width option, 269

x option, 169, 238
x plot mark, 187
xcomb option, 111
xscale option, 171
xshift option, 171
xslant option, 172
xstep option, 102

y option, 169, 238
ycomb option, 111
yscale option, 172
yshift option, 171
yslant option, 172
ystep option, 102

z option, 169
zigzag snake, 181