% Copyright 2006 by Till Tantau
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Free Documentation License.
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.


% pgf version is defined in \pgfversion in file
% generic/pgf/utilities/pgfrcs.code.tex 

\def\xcolorversion{2.00}
\def\xkeyvalversion{1.8}

\usepackage[version=0.96]{pgf}
\usepackage{tikz}

\usetikzlibrary{arrows,patterns,plotmarks,shapes,snakes,er,3d,automata,backgrounds,topaths,trees,petri,mindmap}

\usepackage[left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{xxcolor}
\usepackage{pifont}
\usepackage{makeidx}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}

\input{../../macros/pgfmanual-en-macros}

\makeindex

\makeatletter
\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.8em}}
\renewcommand*\l@subsubsection{\@dottedtocline{3}{4.3em}{3.2em}}
\makeatother

%\includeonly{pgfmanual-en-tutorial-nodes}

% Global styles:
\tikzstyle{every plot}=[prefix=plots/pgf-]
\tikzstyle{shape example}=[color=black!30,draw,fill=yellow!30,line width=.5cm,inner xsep=2.5cm,inner ysep=0.5cm]

\index{Options for graphics|see{Graphic options}}
\index{Options for packages|see{Package options}}
\index{File|see{Packages and files}}
\index{Layout|see{Page layout}}
\index{Node|see{Predefined node}}

\begin{document}

%\include{pgfmanual-en-license}
%\end{document}

{
  \parindent0pt
\vbox{}
\vskip 3.5cm
\Huge
\tikzname\ and \pgfname

\Large
Manual for version \pgfversion

\vskip 3cm 

\begin{codeexample}[graphic=white]
\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 {} }
      }
    };
\end{codeexample}
\vskip 0cm plus 1.5fill
\vbox{}         
\clearpage
}

{
  \vbox{}
  \vskip0pt plus 1fill
  Für meinen Vater, damit er noch viele schöne \TeX-Graphiken erschaffen kann.
  \vskip0pt plus 3fill

  \parindent=0pt
  Copyright 2006 by Till Tantau

  \medskip  
  Permission is granted to copy, distribute and/or modify \emph{the documentation}
  under the terms of the \textsc{gnu} Free Documentation License, Version 1.2
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
  A copy of the license is included in the section entitled \textsc{gnu}
  Free Documentation License.

  \medskip  
  Permission is granted to copy, distribute and/or modify \emph{the
    code of the package} under the terms of the \textsc{gnu} Public License, Version 2
  or any later version published by the Free Software Foundation.
  A copy of the license is included in the section entitled \textsc{gnu}
  Public License.

  \medskip  
  Permission is also granted to distribute and/or modify \emph{both
    the documentation and the code} under the conditions of the LaTeX
  Project Public License, either version 1.3 of this license or (at
  your option) any later version. A copy of the license is included in
  the section entitled \LaTeX\ Project Public License. 

  \vbox{}
  \clearpage
}


\title{\bfseries The \tikzname\ and {\Large PGF} Packages\\
  \large Manual for version \pgfversion\\[1mm]
\large\href{http://sourceforge.net/projects/pgf}{\texttt{http://sourceforge.net/projects/pgf}}}
\author{Till Tantau\\
  \normalsize Institut f\"ur Theoretische Informatik\\[-1mm]
  \normalsize Universit\"at zu L\"ubeck}

\maketitle

\tableofcontents

\clearpage


\include{pgfmanual-en-introduction}


\part{Tutorials and Guidelines}

To help you get started with \tikzname, instead of a long installation
and configuration section, this manual starts with tutorials. They
explain all the basic and some of the more advanced features of the
system, without going into all the details. This part also contains
some guidelines on how you should proceed when creating graphics using
\tikzname. 

\vskip3cm

\begin{codeexample}[graphic=white,width=0pt]
\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);
\end{codeexample}

\include{pgfmanual-en-tutorial}
\include{pgfmanual-en-tutorial-nodes}
\include{pgfmanual-en-guidelines}



\part{Installation and Configuration}

This part explains how the system is installed. Typically, someone has
already done so for your system, so this part can be skipped; but if
this is not the case and you are the poor fellow who has to do the
installation, read the present part. 


\vskip2cm

\begin{codeexample}[graphic=white]
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,semithick]
  \tikzstyle{every state}=[fill=red,draw=none,text=white]

  \node[initial,state] (A)                    {$q_a$};
  \node[state]         (B) [above right of=A] {$q_b$};
  \node[state]         (D) [below right of=A] {$q_d$};
  \node[state]         (C) [below right of=B] {$q_c$};
  \node[state]         (E) [below of=D]       {$q_e$};

  \path (A) edge              node {0,1,L} (B)
            edge              node {1,1,R} (C)
        (B) edge [loop above] node {1,1,L} (B)  
            edge              node {0,1,L} (C)
        (C) edge              node {0,1,L} (D)
            edge [bend left]  node {1,0,R} (E)    
        (D) edge [loop below] node {1,1,R} (D)
            edge              node {0,1,R} (A)
        (E) edge [bend left]  node {1,0,R} (A);
\end{tikzpicture}
\end{codeexample}

\include{pgfmanual-en-installation}
\include{pgfmanual-en-license}
\include{pgfmanual-en-drivers}


\part{Ti\emph{k}Z ist \emph{kein} Zeichenprogramm}
\label{part-tikz}

\vskip3cm
\begin{codeexample}[graphic=white]
\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}
\end{codeexample}



\include{pgfmanual-en-tikz-design}
\include{pgfmanual-en-tikz-scopes}
\include{pgfmanual-en-tikz-coordinates}
\include{pgfmanual-en-tikz-paths}
\include{pgfmanual-en-tikz-actions}
\include{pgfmanual-en-tikz-shapes}
\include{pgfmanual-en-tikz-trees}
\include{pgfmanual-en-tikz-transformations}



\part{Libraries}
\label{part-libraries}

In this part the library packages are documented. They
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. 

\medskip
\noindent
\begin{codeexample}[graphic=white]
\tikzstyle{level 1}=
  [level distance=4.5mm,   trunk,        line width=1ex ,sibling angle=60]
\tikzstyle{level 2}=
  [level distance=3.5mm, trunk!80!leaf a,line width=.8ex,sibling angle=56]
\tikzstyle{level 3}=
  [level distance=2.75mm,trunk!60!leaf a,line width=.6ex,sibling angle=52]
\tikzstyle{level 4}=
  [level distance=2mm,   trunk!40!leaf a,line width=.4ex,sibling angle=48]
\tikzstyle{level 5}=
  [level distance=1mm,   trunk!20!leaf a,line width=.3ex,sibling angle=44]
\tikzstyle{level 6}=
  [level distance=1.75mm,leaf a,         line width=.2ex,sibling angle=40]

\pgfarrowsdeclare{leaf}{leaf}
{\pgfarrowsleftextend{-2pt} \pgfarrowsrightextend{1pt}}
{
  \pgfpathmoveto{\pgfpoint{-2pt}{0pt}}
  \pgfpatharc{150}{30}{1.8pt}
  \pgfpatharc{-30}{-150}{1.8pt}    
  \pgfusepathqfill
}


\newcommand{\tcslogo}[5]
{
  \colorlet{border}{#1}
  \colorlet{trunk}{#2}
  \colorlet{leaf a}{#3}
  \colorlet{leaf b}{#4}
  \begin{tikzpicture}
    \scriptsize\scshape
    \draw[border,line width=1ex,yshift=.3cm,
          yscale=1.45,xscale=1.05,looseness=1.42]
      (1,0) to [out=90, in=0]    (0,1)  to [out=180,in=90]  (-1,0)
            to [out=-90,in=-180] (0,-1) to [out=0,  in=-90] (1,0) -- cycle;

    \coordinate (root) [grow cyclic,rotate=90]
    child {
      child [cap=round] foreach \a in {0,1} {
        child foreach \b in {0,1} {
          child foreach \c in {0,1} {
            child foreach \d in {0,1} {
              child foreach \leafcolor in {leaf a,leaf b}
                { edge from parent [color=\leafcolor,-#5] }
            }
          }
        }
      } edge from parent [shorten >=-1pt,serif cm-,cap=butt]
    };

    \node [text centered,text width=2cm,below] at (0pt,-.5ex)
    { \textcolor{border}{T}heoretical \\
      \textcolor{border}{C}omputer \\
      \textcolor{border}{S}cience };
  \end{tikzpicture}
}
\begin{minipage}{3cm}
  \tcslogo{green!80!black}{green!25!black}{green}{green!80}{leaf}\\
  \tcslogo{green!50!black}{black}{green!80!black}{red!80!green}{leaf}\\
  \tcslogo{red!75!black}{red!25!black}{red!75!black}{orange}{leaf}\\
  \tcslogo{black!50}{black}{black!50}{black!25}{}
\end{minipage}
\end{codeexample}

\include{pgfmanual-en-library-arrows}
\include{pgfmanual-en-library-automata}
\include{pgfmanual-en-library-backgrounds}
\include{pgfmanual-en-library-er}
\include{pgfmanual-en-library-mindmaps}
\include{pgfmanual-en-library-patterns}
\include{pgfmanual-en-library-petri}
\include{pgfmanual-en-library-plot-handlers}
\include{pgfmanual-en-library-plot-marks}
\include{pgfmanual-en-library-shapes}
\include{pgfmanual-en-library-snakes}
%\include{pgfmanual-en-library-3d}
\include{pgfmanual-en-library-edges}
\include{pgfmanual-en-library-trees}




\part{Utilities}
\label{part-utilities}

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

\vskip2cm
\medskip
\noindent
\begin{codeexample}[graphic=white]
\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}
\end{codeexample}

\include{pgfmanual-en-pgffor}
\include{pgfmanual-en-pages}
\include{pgfmanual-en-xxcolor}



\part{The Basic Layer}

\vskip1cm
\begin{codeexample}[graphic=white]
\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}
\end{codeexample}


\include{pgfmanual-en-base-design}
\include{pgfmanual-en-base-scopes}
\include{pgfmanual-en-base-points}
\include{pgfmanual-en-base-paths}
\include{pgfmanual-en-base-snakes}
\include{pgfmanual-en-base-actions}
\include{pgfmanual-en-base-arrows}
\include{pgfmanual-en-base-nodes}
\include{pgfmanual-en-base-transformations}
\include{pgfmanual-en-base-patterns}
\include{pgfmanual-en-base-images}
\include{pgfmanual-en-base-shadings}
\include{pgfmanual-en-base-plots}
\include{pgfmanual-en-base-layers}
\include{pgfmanual-en-base-quick}




\part{The System Layer}
\label{part-system}

This part describes the low-level interface of \pgfname, called the
\emph{system layer}. This interface provides a complete abstraction of
the internals of the underlying drivers. 

Unless you intend to port \pgfname\ 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.

\vskip1cm
\begin{codeexample}[graphic=white]
\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}
\end{codeexample}

\include{pgfmanual-en-pgfsys-overview}
\include{pgfmanual-en-pgfsys-commands}
\include{pgfmanual-en-pgfsys-paths}
\include{pgfmanual-en-pgfsys-protocol}



\part{References and Index}

\vskip1cm
\begin{codeexample}[graphic=white]
\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}
\end{codeexample}

\printindex

\end{document}



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "~/texmf/tex/generic/pgf/doc/pgf/version-for-pdftex/en/pgfmanual"
%%% End: 
