% 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} \usepackage[version=latest]{pgf} \usepackage{xkeyval,calc,listings,tikz,fp} \usepackage{hyperref} \hypersetup{% colorlinks=true, % use true to enable colors below: linkcolor=blue,%red, filecolor=blue,%magenta, pagecolor=blue,%red, urlcolor=blue,%cyan, citecolor=blue, pdfborder=0 0 0, } % We need lots of libraries... \usetikzlibrary{ arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, circuits.logic.US, circuits.logic.IEC, circuits.logic.CDH, circuits.ee.IEC, datavisualization, datavisualization.formats.functions, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, shadings, spy, through, turtle, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows, lindenmayersystems, intersections, fixedpointarithmetic, fpu, svg.path, external, } \iffalse %\iftrue \tikzexternalize[ mode=list only,export=true,% simply skips EVERY picture -> good for debugging the text. ] {pgfmanual} \tikzifexternalizing{% \pgfkeys{/pdflinks/codeexample links=false}% }{}% \fi \usepackage[a4paper,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} \graphicspath{{../../images/}} % TODOsp: under windows this would go up 2 directories, but the file is only one directory up \input{../../macros/pgfmanual-en-macros} % TODOsp: same here \makeindex \makeatletter \renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.8em}} \renewcommand*\l@subsubsection{\@dottedtocline{3}{4.3em}{3.2em}} \makeatother %\includeonly{pgfmanual-en-library-profiler} % Global styles: \tikzset{ every plot/.style={prefix=plots/pgf-}, shape example/.style={ 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 and styles}} \index{Styles for graphics|see{Graphic options and styles}} \index{Options for packages|see{Package options}} \index{Handlers for keys|see{Key handlers}} \index{File|see{Packages and files}} \index{Layout|see{Page layout}} \index{Node|see{Predefined node}} \index{Data formats|see{Formats}} \begin{document} %\include{pgfmanual-en-dv-introduction} %\include{pgfmanual-en-dv-main} %\include{pgfmanual-en-dv-axes} %\include{pgfmanual-en-dv-visualizers} %\include{pgfmanual-en-dv-examples} %\include{pgfmanual-en-dv-formats} %\include{pgfmanual-en-dv-backend} %\end{document} % The titlepage \newbox\mybox { \parindent0pt \null \colorlet{mintgreen}{green!50!black!50} \thispagestyle{empty} \vskip3cm \vfill \hfil \begin{tikzpicture}[overlay] \coordinate (front) at (0,0); \coordinate (horizon) at (0,.31\paperheight); \coordinate (bottom) at (0,-.6\paperheight); \coordinate (sky) at (0,.57\paperheight); \coordinate (left) at (-.51\paperwidth,0); \coordinate (right) at (.51\paperwidth,0); \shade [bottom color=blue!30!black!10,top color=blue!30!black!50] ([yshift=-5mm]horizon -| left) rectangle (sky -| right); \shade [bottom color=black!70!green!25,top color=black!70!green!10] (front -| left) -- (horizon -| left) decorate [decoration=random steps] { -- (horizon -| right) } -- (front -| right) -- cycle; \shade [top color=black!70!green!25,bottom color=black!25] ([yshift=-5mm-1pt]front -| left) rectangle ([yshift=1pt]front -| right); \fill [black!25] (bottom -| left) rectangle ([yshift=-5mm]front -| right); \def\nodeshadowed[#1]#2;{\node[scale=2,above,#1]{\global\setbox\mybox=\hbox{#2}\copy\mybox}; \node[scale=2,above,#1,yscale=-1,scope fading=south,opacity=0.4]{\box\mybox};} \nodeshadowed [at={(-5,5 )},yslant=0.05] {\Huge Ti\textcolor{orange}{\emph{k}}Z}; \nodeshadowed [at={( 0,5.3)}] {\huge \textcolor{mintgreen}{\&}}; \nodeshadowed [at={( 5,5 )},yslant=-0.05] {\Huge \textsc{PGF}}; \nodeshadowed [at={( 0,2 )}] {Manual for Version \pgftypesetversion}; \foreach \where in {-9cm,9cm} {\nodeshadowed [at={(\where,5cm)}] { \tikz \draw [green!20!black, rotate=90] [l-system={rule set={F -> FF-[-F+F]+[+F-F]}, axiom=F, order=4, step=2pt, randomize step percent=50, angle=30, randomize angle percent=5}] lindenmayer system;};} \foreach \i in {0.5,0.6,...,2} \fill [white,decoration=Koch snowflake,opacity=.9] [shift=(horizon),shift={(rand*11,rnd*7)},scale=\i] [double copy shadow={opacity=0.2,shadow xshift=0pt,shadow yshift=3*\i pt,fill=white,draw=none}] decorate { decorate { decorate { (0,0) -- ++(60:1) -- ++(-60:1) -- cycle } } }; \node (left text) [text width=.5\paperwidth-2cm,below right,at={(-.5\paperwidth+1cm,-1.5cm)}] { \fontfamily{pcr} \def\textbraceleft{\char`\{} \def\textbraceright{\char`\}} \def\textbackslash{\char`\\} \begin{lstlisting}[basicstyle=\scriptsize\color{black}, keywordstyle=\bfseries\color{white}, identifierstyle=\bfseries\color{black}, keywords={tikzpicture,shade,fill,draw,path,node}, literate={-}{{-}}1] \begin{tikzpicture} \coordinate (front) at (0,0); \coordinate (horizon) at (0,.31\paperheight); \coordinate (bottom) at (0,-.6\paperheight); \coordinate (sky) at (0,.57\paperheight); \coordinate (left) at (-.51\paperwidth,0); \coordinate (right) at (.51\paperwidth,0); \shade [bottom color=white, top color=blue!30!black!50] ([yshift=-5mm]horizon -| left) rectangle (sky -| right); \shade [bottom color=black!70!green!25, top color=black!70!green!10] (front -| left) -- (horizon -| left) decorate [decoration=random steps] { -- (horizon -| right) } -- (front -| right) -- cycle; \shade [top color=black!70!green!25, bottom color=black!25] ([yshift=-5mm-1pt]front -| left) rectangle ([yshift=1pt]front -| right); \fill [black!25] (bottom -| left) rectangle ([yshift=-5mm]front -| right); \def\nodeshadowed[#1]#2;{ \node[scale=2,above,#1]{ \global\setbox\mybox=\hbox{#2} \copy\mybox}; \node[scale=2,above,#1,yscale=-1, scope fading=south,opacity=0.4]{\box\mybox}; } \end{lstlisting} }; \node (right text) [text width=.5\paperwidth-2cm,below right,at={(1cm,-1.5cm)}] { \fontfamily{pcr} \def\textbraceleft{\char`\{} \def\textbraceright{\char`\}} \def\textbackslash{\char`\\} \begin{lstlisting}[basicstyle=\scriptsize\color{black}, keywordstyle=\bfseries\color{white}, identifierstyle=\bfseries\color{black}, keywords={tikzpicture,shade,fill,draw,path,node}, literate={-}{{-}}1] \nodeshadowed [at={(-5,8 )},yslant=0.05] {\Huge Ti\textcolor{orange}{\emph{k}}Z}; \nodeshadowed [at={( 0,8.3)}] {\huge \textcolor{green!50!black!50}{\&}}; \nodeshadowed [at={( 5,8 )},yslant=-0.05] {\Huge \textsc{PGF}}; \nodeshadowed [at={( 0,5 )}] {Manual for Version \pgftypesetversion}; \foreach \where in {-9cm,9cm} { \nodeshadowed [at={(\where,5cm)}] { \tikz \draw [green!20!black, rotate=90, l-system={rule set={F -> FF-[-F+F]+[+F-F]}, axiom=F, order=4,step=2pt, randomize step percent=50, angle=30, randomize angle percent=5}] l-system; }} \foreach \i in {0.5,0.6,...,2} \fill [white,opacity=\i/2, decoration=Koch snowflake, shift=(horizon),shift={(rand*11,rnd*7)}, scale=\i,double copy shadow={ opacity=0.2,shadow xshift=0pt, shadow yshift=3*\i pt,fill=white,draw=none}] decorate { decorate { decorate { (0,0)- ++(60:1) -- ++(-60:1) -- cycle } } }; \node (left text) ... \node (right text) ... \fill [decorate,decoration={footprints,foot of=gnome}, opacity=.5,brown] (rand*8,-rnd*10) to [out=rand*180,in=rand*180] (rand*8,-rnd*10); \end{tikzpicture} \end{lstlisting} }; \fill [decorate,decoration=footprints, decoration={footprints,foot of=gnome}, opacity=.5,brown] (rand*8,-rnd*10) to [out=rand*180,in=rand*180] (rand*8,-rnd*10); \end{tikzpicture} \vfill \vbox{} \clearpage } { \vbox{} \vskip0pt plus 1fill Für meinen Vater, damit er noch viele schöne \TeX-Graphiken erschaffen kann. \vskip1em \hfill\emph{Till} \vskip0pt plus 3fill \parindent=0pt Copyright 2007 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\footnote{Editor of this documentation. Parts of this documentation have been written by other authors as indicated in these parts or chapters and in Section~\ref{section-authors}.}\\ \normalsize Institut f\"ur Theoretische Informatik\\[-1mm] \normalsize Universit\"at zu L\"ubeck} \maketitle \tableofcontents \clearpage \include{pgfmanual-en-introduction} \part{Tutorials and Guidelines} {\Large \emph{by Till Tantau}} \bigskip \noindent 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-tutorial-Euclid} \include{pgfmanual-en-tutorial-chains} \include{pgfmanual-en-tutorial-map} \include{pgfmanual-en-guidelines} \part{Installation and Configuration} {\Large \emph{by Till Tantau}} \bigskip \noindent 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. \vskip1cm \begin{codeexample}[graphic=white] \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,on grid,semithick, every state/.style={fill=red,draw=none,circular drop shadow,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); \node [right=1cm,text width=8cm] at (C) { The current candidate for the busy beaver for five states. It is presumed that this Turing machine writes a maximum number of $1$'s before halting among all Turing machines with five states and the tape alphabet $\{0, 1\}$. Proving this conjecture is an open research problem. }; \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} {\Large \emph{by Till Tantau}} \bigskip \noindent \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-matrices} \include{pgfmanual-en-tikz-trees} \include{pgfmanual-en-tikz-plots} \include{pgfmanual-en-tikz-transparency} \include{pgfmanual-en-tikz-decorations} \include{pgfmanual-en-tikz-transformations} \part{Libraries} \label{part-libraries} {\Large \emph{by Till Tantau}} \bigskip \noindent In this part the library packages are documented. They provide additional predefined graphic objects like new arrow heads or new plot marks, but also sometimes extensions of the basic \pgfname\ or \tikzname\ system. The libraries are not loaded by default since many users will not need them. \medskip \noindent \begin{codeexample}[graphic=white] \tikzset{ ld/.style={level distance=#1},lw/.style={line width=#1}, level 1/.style={ld=4.5mm, trunk, lw=1ex ,sibling angle=60}, level 2/.style={ld=3.5mm, trunk!80!leaf a,lw=.8ex,sibling angle=56}, level 3/.style={ld=2.75mm,trunk!60!leaf a,lw=.6ex,sibling angle=52}, level 4/.style={ld=2mm, trunk!40!leaf a,lw=.4ex,sibling angle=48}, level 5/.style={ld=1mm, trunk!20!leaf a,lw=.3ex,sibling angle=44}, level 6/.style={ld=1.75mm,leaf a, lw=.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{\logo}[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 [line 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-,line cap=butt] }; \node [align=center,below] at (0pt,-.5ex) { \textcolor{border}{T}heoretical \\ \textcolor{border}{C}omputer \\ \textcolor{border}{S}cience }; \end{tikzpicture} } \begin{minipage}{3cm} \logo{green!80!black}{green!25!black}{green}{green!80}{leaf}\\ \logo{green!50!black}{black}{green!80!black}{red!80!green}{leaf}\\ \logo{red!75!black}{red!25!black}{red!75!black}{orange}{leaf}\\ \logo{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-calc} \include{pgfmanual-en-library-calendar} \include{pgfmanual-en-library-chains} \include{pgfmanual-en-library-circuits} \include{pgfmanual-en-library-decorations} \include{pgfmanual-en-library-er} \include{pgfmanual-en-library-external} \include{pgfmanual-en-library-fadings} \include{pgfmanual-en-library-fit} \include{pgfmanual-en-library-fixedpoint} \include{pgfmanual-en-library-fpu} \include{pgfmanual-en-library-lsystems} \include{pgfmanual-en-library-matrices} \include{pgfmanual-en-library-mindmaps} \include{pgfmanual-en-library-folding} \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-profiler} \include{pgfmanual-en-library-shadings} \include{pgfmanual-en-library-shadows} \include{pgfmanual-en-library-shapes} \include{pgfmanual-en-library-spy} \include{pgfmanual-en-library-svg-path} \include{pgfmanual-en-library-edges} \include{pgfmanual-en-library-through} \include{pgfmanual-en-library-trees} \include{pgfmanual-en-library-turtle} \iffalse \part{Data Visualization} \label{part-dv} {\Large \emph{by Till Tantau}} \bigskip \noindent The documentation of the data visualization is still missing. This stuff is still ``heavily under construction.'' \include{pgfmanual-en-dv-introduction} \include{pgfmanual-en-dv-main} \include{pgfmanual-en-dv-axes} \include{pgfmanual-en-dv-visualizers} \include{pgfmanual-en-dv-examples} \include{pgfmanual-en-dv-formats} \include{pgfmanual-en-dv-backend} \fi \part{Utilities} \label{part-utilities} {\Large \emph{by Till Tantau}} \bigskip \noindent 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[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-pgfkeys} \include{pgfmanual-en-pgffor} \include{pgfmanual-en-pgfcalendar} \include{pgfmanual-en-pages} \include{pgfmanual-en-xxcolor} \include{pgfmanual-en-module-parser} \part{Mathematical and Object-Oriented Engines} {\Large \emph{by Mark Wibrow and Till Tantau}} \bigskip \noindent \pgfname\ comes with two useful engines: One for doing mathematics, one for doing object-oriented programming. Both engines can be used independently of the main \pgfname. The job of the mathematical engine is to support mathematical operations like addition, subtraction, multiplication and division, using both integers and non-integers, but also functions such as square-roots, sine, cosine, and generate pseudo-random numbers. Mostly, you will use the mathematical facilities of \pgfname\ indirectly, namely when you write a coordinate like |(5cm*3,6cm/4)|, but the mathematical engine can also be used independently of \pgfname\ and \tikzname. The job of the object-oriented engine is to support simple object-oriented programming in \TeX. It allows the definition of \emph{classes} (without inheritance), \emph{methods}, \emph{attributes} and \emph{objects}. \vskip1cm \begin{codeexample}[graphic=white] \pgfmathsetseed{1} \foreach \col in {black,red,green,blue} { \begin{tikzpicture}[x=10pt,y=10pt,ultra thick,baseline,line cap=round] \coordinate (current point) at (0,0); \coordinate (old velocity) at (0,0); \coordinate (new velocity) at (rand,rand); \foreach \i in {0,1,...,100} { \draw[\col!\i] (current point) .. controls ++([scale=-1]old velocity) and ++(new velocity) .. ++(rand,rand) coordinate (current point); \coordinate (old velocity) at (new velocity); \coordinate (new velocity) at (rand,rand); } \end{tikzpicture} } \end{codeexample} \include{pgfmanual-en-math-design} \include{pgfmanual-en-math-parsing} \include{pgfmanual-en-math-commands} \include{pgfmanual-en-math-algorithms} \include{pgfmanual-en-math-numberprinting} \include{pgfmanual-en-oo} \part{The Basic Layer} {\Large \emph{by Till Tantau}} \bigskip \noindent \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-decorations} \include{pgfmanual-en-base-actions} \include{pgfmanual-en-base-arrows} \include{pgfmanual-en-base-nodes} \include{pgfmanual-en-base-matrices} \include{pgfmanual-en-base-transformations} \include{pgfmanual-en-base-patterns} \include{pgfmanual-en-base-images} \include{pgfmanual-en-base-external} \include{pgfmanual-en-base-plots} \include{pgfmanual-en-base-layers} \include{pgfmanual-en-base-shadings} \include{pgfmanual-en-base-transparency} \include{pgfmanual-en-base-internalregisters} \include{pgfmanual-en-base-quick} \part{The System Layer} \label{part-system} {\Large \emph{by Till Tantau}} \bigskip \noindent 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,->, vertex/.style={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,line cap=round,line 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 %\typeout{Examples: \the\codeexamplecount}% \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: "~/texmf/tex/generic/pgf/doc/pgf/version-for-pdftex/en/pgfmanual" %%% End: