summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/text-en
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en')
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-actions.tex11
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-arrows.tex11
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-design.tex14
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex44
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-layers.tex16
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-nodes.tex164
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-paths.tex45
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-patterns.tex188
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-plots.tex11
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex152
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-quick.tex18
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-scopes.tex127
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-shadings.tex24
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-snakes.tex12
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transformations.tex56
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-drivers.tex89
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-guidelines.tex34
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-installation.tex19
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-introduction.tex81
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-libraries.tex1094
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-3d.tex81
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-arrows.tex115
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-automata.tex289
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-backgrounds.tex187
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-edges.tex260
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-er.tex142
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-mindmaps.tex489
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-patterns.tex38
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-petri.tex264
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-handlers.tex319
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-marks.tex53
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-shapes.tex185
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-snakes.tex270
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-trees.tex179
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-license.tex1021
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main.tex225
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pages.tex11
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex12
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-commands.tex133
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-overview.tex13
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-paths.tex13
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-protocol.tex11
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-actions.tex96
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex531
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-design.tex12
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-paths.tex340
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-scopes.tex74
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-shapes.tex688
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex15
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-trees.tex12
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-nodes.tex1084
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial.tex112
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-xxcolor.tex12
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-main.tex11
54 files changed, 7838 insertions, 1669 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-actions.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-actions.tex
index f0e0f45c061..57da67015f5 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-actions.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-actions.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Using Paths}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-arrows.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-arrows.tex
index 078a929d4e3..f47e5d09558 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-arrows.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-arrows.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Arrow Tips}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-design.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-design.tex
index 1318c780235..ef4315b9172 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-design.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-design.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Design Principles}
@@ -47,6 +50,9 @@ The following optional packages are provided by the basic layer:
|pgfbaseshapes| provides commands for drawing shapes and
nodes.
\item
+ |pgfbasepatterns| provides commands for declaring and using tiling
+ patterns.
+\item
|pgfbaseimage| provides commands for including external
images. The |graphicx| package does a much better job at this than
the |pgfbaseimage| package does, so you should normally use
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex
index ebadb54e5ff..f4c81db9c75 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-images.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Declaring and Using Images}
@@ -111,9 +114,9 @@ option:
\end{itemize}
\begin{codeexample}[code only]
-\pgfdeclareimage[interpolate=true,height=1cm]{image1}{pgf-tu-logo}
-\pgfdeclareimage[interpolate=true,width=1cm,height=1cm]{image2}{pgf-tu-logo}
-\pgfdeclareimage[interpolate=true,height=1cm]{image3}{pgf-tu-logo}
+\pgfdeclareimage[interpolate=true,height=1cm]{image1}{brave-gnu-world-logo}
+\pgfdeclareimage[interpolate=true,width=1cm,height=1cm]{image2}{brave-gnu-world-logo}
+\pgfdeclareimage[interpolate=true,height=1cm]{image3}{brave-gnu-world-logo}
\end{codeexample}
\end{command}
@@ -150,9 +153,10 @@ option:
color mixin.
\begin{codeexample}[]
-\pgfdeclareimage[interpolate=true,width=1cm,height=1cm]{image1}{pgf-tu-logo}
-\pgfdeclareimage[interpolate=true,width=1cm]{image2}{pgf-tu-logo}
-\pgfdeclareimage[interpolate=true,height=1cm]{image3}{pgf-tu-logo}
+\pgfdeclareimage[interpolate=true,width=1cm,height=1cm]
+ {image1}{brave-gnu-world-logo}
+\pgfdeclareimage[interpolate=true,width=1cm]{image2}{brave-gnu-world-logo}
+\pgfdeclareimage[interpolate=true,height=1cm]{image3}{brave-gnu-world-logo}
\begin{pgfpicture}
\pgftext[at=\pgfpoint{1cm}{5cm},left,base]{\pgfuseimage{image1}}
\pgftext[at=\pgfpoint{1cm}{3cm},left,base]{\pgfuseimage{image2}}
@@ -170,11 +174,11 @@ option:
\begin{codeexample}[]
\pgfdeclareimage[interpolate=true,width=1cm,height=1cm]
- {image1.!25!white}{pgf-tu-logo.25}
+ {image1.!25!white}{brave-gnu-world-logo.25}
\pgfdeclareimage[interpolate=true,width=1cm]
- {image2.25!white}{pgf-tu-logo.25}
+ {image2.25!white}{brave-gnu-world-logo.25}
\pgfdeclareimage[interpolate=true,height=1cm]
- {image3.white}{pgf-tu-logo.25}
+ {image3.white}{brave-gnu-world-logo.25}
\begin{colormixin}{25!white}
\begin{pgfpicture}
\pgftext[at=\pgfpoint{1cm}{5cm},left,base]{\pgfuseimage{image1}}
@@ -207,11 +211,11 @@ option:
\begin{colormixin}{25!white}
\begin{pgfpicture}
\pgftext[at=\pgfpoint{1cm}{5cm},left,base]
- {\pgfimage[interpolate=true,width=1cm,height=1cm]{pgf-tu-logo}}
+ {\pgfimage[interpolate=true,width=1cm,height=1cm]{brave-gnu-world-logo}}
\pgftext[at=\pgfpoint{1cm}{3cm},left,base]
- {\pgfimage[interpolate=true,width=1cm]{pgf-tu-logo}}
+ {\pgfimage[interpolate=true,width=1cm]{brave-gnu-world-logo}}
\pgftext[at=\pgfpoint{1cm}{1cm},left,base]
- {\pgfimage[interpolate=true,height=1cm]{pgf-tu-logo}}
+ {\pgfimage[interpolate=true,height=1cm]{brave-gnu-world-logo}}
\pgfpathrectangle{\pgfpoint{1cm}{5cm}}{\pgfpoint{1cm}{1cm}}
\pgfpathrectangle{\pgfpoint{1cm}{3cm}}{\pgfpoint{1cm}{1cm}}
@@ -265,10 +269,10 @@ color(2cm)=(green); color(4cm)=(blue); color(6cm)=(red);
color(8cm)=(green); color(10cm)=(blue); color(12cm)=(red);
color(14cm)=(green)}
\hbox{\pgfuseshading{colorful}\hskip-14cm\hskip1cm
-\pgfimage[height=4cm]{pgf-apple}\hskip1cm
-\pgfimage[height=4cm]{pgf-apple.mask}\hskip1cm
-\pgfdeclaremask{mymask}{pgf-apple.mask}
-\pgfimage[mask=mymask,height=4cm,interpolate=true]{pgf-apple}}
+\pgfimage[height=4cm]{brave-gnu-world-logo}\hskip1cm
+\pgfimage[height=4cm]{brave-gnu-world-logo-mask}\hskip1cm
+\pgfdeclaremask{mymask}{brave-gnu-world-logo-mask}
+\pgfimage[mask=mymask,height=4cm,interpolate=true]{brave-gnu-world-logo}}
\end{codeexample}
\end{command}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-layers.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-layers.tex
index db8136e87de..fc242cc809b 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-layers.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-layers.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Layered Graphics}
@@ -132,6 +135,11 @@ the given layer.
This is the plain \TeX\ version of the environment.
\end{plainenvironment}
+\begin{contextenvironment}{{pgfonlayer}\marg{layer name}}
+ This is the Con\TeX t version of the environment.
+\end{contextenvironment}
+
+
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-nodes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-nodes.tex
index c2231219113..891cfeef345 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-nodes.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-nodes.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Nodes and Shapes}
@@ -218,19 +221,19 @@ You create a node using on of the following commands:
When this command is called, for each node part of the node you must
have setup one \TeX-box. Suppose the shape has two parts: The |text|
- part and the |output| part. Then, prior to calling
+ part and the |lower| part. Then, prior to calling
|\pgfmultipartnode|, you must have setup the boxes
- |\pgfnodeparttextbox| and |\pgfnodepartoutputbox|. These boxes may
+ |\pgfnodeparttextbox| and |\pgfnodepartlowerbox|. These boxes may
contain any \TeX-text. The shape code will then compute the
positions of the shape's anchors based on the sizes of the these
shapes. Finally, when the node is drawn, the boxes are placed at the
- anchor positions |text| and |output|.
+ anchor positions |text| and |lower|.
\begin{codeexample}[]
\setbox\pgfnodeparttextbox=\hbox{$q_1$}
-\setbox\pgfnodepartoutputbox=\hbox{01}
+\setbox\pgfnodepartlowerbox=\hbox{01}
\begin{pgfpicture}
- \pgfmultipartnode{state with output}{center}{my state}{\pgfusepath{stroke}}
+ \pgfmultipartnode{circle split}{center}{my state}{\pgfusepath{stroke}}
\end{pgfpicture}
\end{codeexample}
@@ -245,12 +248,12 @@ You create a node using on of the following commands:
part name. Although you need a different box for each part of a
single shape, two different shapes may very well use the same box
even when the names of the parts are different. Suppose you have a
- |state with output| shape that has an |output| part and you have a
+ |circle split| shape that has an |lower| part and you have a
|uml class| shape that has a |methods| part. Then, in order to avoid
exhausting \TeX's limited number of box registers, you can say
\begin{codeexample}[code only]
-\newbox\pgfnodepartoutputbox
-\let\pgfnodepartmethodsbox=\pgfnodepartoutputbox
+\newbox\pgfnodepartlowerbox
+\let\pgfnodepartmethodsbox=\pgfnodepartlowerbox
\end{codeexample}
Also, when you have a node part name with spaces like |class name|,
it may be useful to create an alias:
@@ -342,6 +345,13 @@ node. These parameters can be changed using the following commands:
Works like |\pgfsetshapeouterysep|.
\end{command}
+\begin{command}{\pgfsetshapeaspect\marg{value}}
+ This command sets the macro \declare{|\pgfshapeaspect|} to
+ \meta{value}. Furthermore, \declare{|\pgfshapeaspectinverse|} is set
+ to the reciprocal of \meta{value}. The aspect is a recommendation
+ for the quotient of the width and the height of a shape.
+\end{command}
+
\subsection{Using Anchors}
@@ -355,6 +365,9 @@ One has to look up the set of anchors of each shape, there is no
should always be present. Also, most shapes will declare anchors like
|north| or |east|, but this is not guaranteed.
+
+\subsubsection{Referencing Anchors of Nodes in the Same Picture}
+
Once a node has been defined, you can refer to its anchors using the
following commands:
@@ -411,6 +424,20 @@ following commands:
\pgfusepath{fill}
\end{pgfpicture}
\end{codeexample}
+
+ A special situation arises when the \meta{node} lies in a picture
+ different from the current picture. In this case, if you have not
+ told \pgfname\ that the picture should be ``remembered,'' the
+ \meta{node} will be treated as if it lied in the current
+ picture. For example, if the \meta{node} was at position $(3,2)$ in
+ the original picture, it is treated as if it lied at position
+ $(3,2)$ in the current picture. However, if you have told \pgfname\
+ to remember the picture position of the node's picture and also of
+ the current picture,
+ then |\pgfpointanchor| will return a coordinate that corresponds to
+ the position of the node's anchor on the page, transformed into the
+ current coordinate system. For examples and more details see
+ Section~\ref{section-cross-pictures-pgf}.
\end{command}
\begin{command}{\pgfpointshapeborder\marg{node}\marg{point}}
@@ -436,6 +463,110 @@ following commands:
\end{command}
+\subsubsection{Referencing Anchors of Nodes in Different Pictures}
+\label{section-cross-pictures-pgf}
+
+As a picture is typeset, \pgfname\ keeps track of the positions of all
+nodes inside the picture. What \pgfname\ does not remember is the
+position of the picture \emph{itself} on the page. Thus, if you define
+a node in one picture and then try to reference this node while
+another picture is typeset, \pgfname\ will only know the position of
+the nodes that you try to typeset inside the original picture, but it
+will not know where this picture lies. What is missing is the relative
+positioning of the two pictures.
+
+To overcome this problem, you need to tell \pgfname\ that it should
+remember the position of pictures on a page. If these positions are
+remembered, then \pgfname\ can compute the offset between the pictures
+and make nodes in different pictures accessible.
+
+Determining the positions of pictures on the page is, alas,
+not-so-easy. Because of this, \pgfname\ does not do so
+automatically. Rather, you have to proceed as follows:
+\begin{enumerate}
+\item You have to use a backend driver that supports position
+ tracking. pdf\TeX\ is one such drivers, |dvips| currently is not.
+\item You have to say |\pgfrememberpicturepositiononpagetrue|
+ somewhere before or inside every picture
+ \begin{itemize}
+ \item in which you wish to reference a node and
+ \item from which you wish to reference a node in another picture.
+ \end{itemize}
+ The second item is important since \pgfname\ does not only need to
+ know the position of the picture in which the node you wish to
+ reference lies, but it also needs to know where the current picture
+ lies.
+\item You typically have to run \TeX\ twice (depending on the backend
+ driver) since the position information typically gets written into
+ an external file on the first run and is available only on the
+ second run.
+\item You have to switch off automatic bounding bound
+ computations. The reason is that the node in the other picture
+ should not influence the size of the bouding box of the current
+ picture. You should say |\pgfusepath{use as bounding box}| before
+ using a coordinate in another picture.
+\end{enumerate}
+
+
+
+\subsection{Predefined Nodes}
+
+There are several special nodes that are always defined and which you
+should not attempt to redefine.
+
+\begin{predefinednode}{current bounding box}
+ This node is of shape |rectangle|. Unlike normal nodes, its size
+ changes constantly and always reflects the size of the bounding box
+ of the current picture. This means that, for instance, that
+\begin{codeexample}[code only]
+\pgfpointanchor{current bounding box}{south east}
+\end{codeexample}
+ returns the lower left corner of the bounding box of the current
+ picture.
+\end{predefinednode}
+
+\begin{predefinednode}{current path bounding box}
+ This node is also of shape |rectangle|. Its size is the size of the
+ bounding box of the current path.
+\end{predefinednode}
+
+\begin{predefinednode}{current page}
+ This node is inside a virtual remembered picture. The size of this
+ node is the size of the current page. This means that if you create
+ a remembered picture and inside this picture you reference an anchor
+ of this node, you reference an absolute position on the page. To
+ demonstrate the effect, the following code puts some text in the
+ lower left corner of the current page. Note that this works only if
+ the backend driver supports it, otherwise the text is inserted right
+ here.%
+{%
+\pgfrememberpicturepositiononpagetrue%
+\begin{pgfpicture}
+ \pgfusepath{use as bounding box}
+ \pgftransformshift{\pgfpointanchor{current page}{south west}}
+ \pgftransformshift{\pgfpoint{1cm}{1cm}}
+ \pgftext[left,base]{
+ \textcolor{red}{
+ Text absolutely positioned in
+ the lower left corner.}
+ }
+\end{pgfpicture}
+}%
+\begin{codeexample}[code only]
+\pgfrememberpicturepositiononpagetrue
+\begin{pgfpicture}
+ \pgfusepath{use as bounding box}
+ \pgftransformshift{\pgfpointanchor{current page}{south west}}
+ \pgftransformshift{\pgfpoint{1cm}{1cm}}
+ \pgftext[left,base]{
+ \textcolor{red}{
+ Text absolutely positioned in
+ the lower left corner.}
+ }
+\end{pgfpicture}
+\end{codeexample}
+\end{predefinednode}
+
\subsection{Declaring New Shapes}
@@ -557,11 +688,10 @@ The following command declares a new shape:
By default, a shape has just one node part called |text|. However,
there can be several node parts. For example, the
- |state with output| shape has two parts: the |text| part, which
- shows that state's name, and an |output| part, which shows the
- output produced when the state is reached. For the
- |state with output| shape the |\nodeparts| command was called with
- the argument |{text,output}|.
+ |circle split| shape has two parts: the |text| part, which
+ shows that upper text, and a |lower| part, which shows the
+ lower text. For the |circle split| shape the |\nodeparts| command
+ was called with the argument |{text,lower}|.
When a multipart node is created, the text labels are drawn in the
sequences listed in the \meta{list of node parts}. For each node
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-paths.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-paths.tex
index 4117a63eff7..15ba36946b9 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-paths.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-paths.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Constructing Paths}
@@ -202,7 +205,7 @@ In the following, the commands for adding (parts of) (transformed)
circles to a path are described.
\begin{command}{\pgfpatharc\marg{start angle}\marg{end
- angle}\marg{radius}}
+ angle}{\ttfamily\char`\{}\meta{radius}\opt{|/|\meta{y-radius}}{\ttfamily\char`\}}}
This command appends a part of a circle (or an ellipse) to the current
path. Imaging the curve between \meta{start angle} and \meta{end
angle} on a circle of radius \meta{radius} (if $\meta{start angle}
@@ -228,11 +231,9 @@ circles to a path are described.
circle. The ``nearly'' refers to the fact that the circle will not
be closed. You can close it using |\pgfpathclose|.
- The \meta{radius} need not always be a single \TeX\
- dimension. Instead, it can also contain a slash, in which case it
- must consist of two dimensions separated by this slash. In this
- case the first dimension is the $x$-radius and the second the
- $y$-radius of the ellipse from which the curve is taken:
+ If the optional \meta{y-radius} is given, the \meta{radius} is the
+ $x$-radius and the \meta{y-radius} the $y$-radius of the ellipse
+ from which the curve is taken:
\begin{codeexample}[]
\begin{tikzpicture}
@@ -263,6 +264,30 @@ circles to a path are described.
are applied, the bounding box will be tight.
\end{command}
+\begin{command}{\pgfpatharcaxes\marg{start angle}\marg{end
+ angle}\marg{first axis}\marg{second axis}}
+ This command is similar to |\pgfpatharc|. The main difference is how
+ the ellipse or circle is specified from which the arc is taken. The
+ two parameters \meta{first axis} and \meta{second axis} are the
+ $0^\circ$-axis and the $90^\circ$-axis of the ellipse from which the
+ path is taken. Thus, |\pgfpatharc{0}{90}{1cm/2cm}| has the same effect
+ as
+\begin{verbatim}
+\pgfpatharcaxes{0}{90}{\pgfpoint{1cm}{0cm}}{\pgfpoint{0cm}{2cm}}
+\end{verbatim}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+ \draw (0,0) -- (2cm,5mm) (0,0) -- (0cm,1cm);
+
+ \pgfpathmoveto{\pgfpoint{2cm}{5mm}}
+ \pgfpatharcaxes{0}{90}{\pgfpoint{2cm}{5mm}}{\pgfpoint{0cm}{1cm}}
+ \pgfusepath{draw}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
\begin{command}{\pgfpathellipse\marg{center}\marg{first
axis}\marg{second axis}}
The effect of this command is to append an ellipse to the current
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-patterns.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-patterns.tex
new file mode 100644
index 00000000000..93d04c31039
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-patterns.tex
@@ -0,0 +1,188 @@
+% 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.
+
+
+\section{Patterns}
+
+\label{section-patterns}
+
+\begin{package}{pgfbasepattterns}
+ This package provides commands for declaring and using patterns. The
+ package is loaded automatically by
+ |pgf|, but you can load it manually if you have only included
+ |pgfcore|.
+\end{package}
+
+
+
+\subsection{Overview}
+
+There are many ways of filling a path. First, you can fill it using a
+solid color and this is also the fasted method. Second, you can also
+fill it using a shading, which means that the color changes smoothly
+between two (or more) different colors. Third, you can fill it using a
+tiling pattern and it is explained in the following how this is done.
+
+A tiling pattern can be imagined as a rectangular tile (hence the
+name) on which a small picture is painted. There is not a single tile,
+but (conceptually) an infinite number of tiles, all showing the same
+picture, and these tiles are arranged horizontally and vertically to
+fill the plane. When you use a tiling pattern to fill a path, what
+happens is that the path clips out a ``window'' through which we see
+part of this infinite plane.
+
+Patterns come in two versions: \emph{inherently colored patterns} and
+\emph{form-only patterns}. (These are often called ``color patterns''
+and ``uncolored patterns,'' but these names are misleading since
+uncolored patterns do have a color and the color changes. As I said,
+the name is misleading\dots) An inherently colored pattern is just a
+colored tile like, say, a red star with a black outline. A form-only
+pattern can be imagined as a tile that is a kind of rubber stamp. When
+this pattern is used, the stamp is used to print copies of the stamp
+picture onto the plane, but we can use a different stamp color each
+time we use a form-only pattern.
+
+\pgfname\ provides a special support for patterns. You can declare a
+pattern and then use it very much like a fill color. \pgfname\
+directly maps patterns to the pattern facilities of the underlying
+graphic languages (PostScript, \textsc{pdf}, and \textsc{svg}). This
+means that filling a path using a pattern will be nearly as fast as if
+you used a uniform color.
+
+There are a number of pitfalls and restrictions when using
+patterns. First, once a pattern has been declared, you cannot change
+it anymore. In particular, it is not possible to enlarge it or change
+the line width. Such flexibility would require that the repeating of
+the pattern were not done by the graphic language, but on the
+\pgfname\ level. This would make patterns orders of magnitude slower
+to produce and to render.
+
+Second, the phase of patterns is not well-defined, that is, it is not
+clear where origin of the ``first'' tile is. To be more precise,
+PostScript and \textsc{pdf} on the one hand and \textsc{svg} on the
+other hand define the origin differently. PostScript and \textsc{pdf}
+define a fixed origin that is independent of where the path lies. This
+has the highly desirable effect that if you use the same pattern to
+fill multiple paths, this has the same effect as if you used the
+pattern to will a single path that is the union of all the paths. By
+comparison, \textsc{svg} uses the upper-left (?) corner of the path to
+be filled as the origin. However, the \textsc{svg} specification is a
+bit vague on this question.
+
+
+\subsection{Declaring a Pattern}
+
+Before a pattern can be used, it must be declared. The following
+command is used for this:
+
+\begin{command}{\pgfdeclarepatternformonly%
+ \marg{name}%
+ \marg{lower left}%
+ \marg{upper right}%
+ \marg{tile size}%
+ \marg{code}}
+ This command declares a new form-only pattern. The \marg{name} is a
+ name for later reference. The two parameters \marg{lower left} and
+ \marg{upper right} must describe a bounding box that is large enough
+ to encompass the complete tile.
+
+ The size of a tile is given by \meta{tile size}, that is, a tile is
+ a rectangle whose lower left corner is the origin and whose upper
+ right corner is given by \meta{tile size}. This might make you
+ wonder why the second and third parameters are needed. First, the
+ bounding box might be smaller than the tile size if the tile is
+ larger than the picture on the tile. Second, the bounding box might
+ be bigger, in which case the picture will ``bleed'' over the tile.
+
+ The \meta{code} should be \pgfname\ code than can be protocolled. It
+ should not contain any color code.
+
+
+\begin{codeexample}[]
+\pgfdeclarepatternformonly{stars}
+{\pgfpointorigin}{\pgfpoint{1cm}{1cm}}
+{\pgfpoint{1cm}{1cm}}
+{
+ \pgftransformshift{\pgfpoint{.5cm}{.5cm}}
+ \pgfpathmoveto{\pgfpointpolar{0}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{144}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{288}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{72}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{216}{4mm}}
+ \pgfpathclose%
+ \pgfusepath{fill}
+}
+\begin{tikzpicture}
+ \filldraw[pattern=stars] (0,0) rectangle (1.5,2);
+ \filldraw[pattern=stars,pattern color=red]
+ (1.5,0) rectangle (3,2);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfdeclarepatterninherentlycolored
+ \marg{name}
+ \marg{lower left}
+ \marg{upper right}
+ \marg{tile size}
+ \marg{code}}
+ This command works like |\pgfdeclarepatternuncolored|, only the
+ pattern will have an inherent color. To set the color, you should
+ use \pgfname's color commands, not the |\color| command, since this
+ fill not be protocolled.
+
+\begin{codeexample}[]
+\pgfdeclarepatterninherentlycolored{green stars}
+{\pgfpointorigin}{\pgfpoint{1cm}{1cm}}
+{\pgfpoint{1cm}{1cm}}
+{
+ \pgfsetfillcolor{green!50!black}
+ \pgftransformshift{\pgfpoint{.5cm}{.5cm}}
+ \pgfpathmoveto{\pgfpointpolar{0}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{144}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{288}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{72}{4mm}}
+ \pgfpathlineto{\pgfpointpolar{216}{4mm}}
+ \pgfpathclose%
+ \pgfusepath{stroke,fill}
+}
+\begin{tikzpicture}
+ \filldraw[pattern=green stars] (0,0) rectangle (3,2);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+\subsection{Setting a Pattern}
+
+Once a pattern has been declared, it can be used.
+
+\begin{command}{\pgfsetfillpattern\marg{name}\marg{color}}
+ This command specifies that paths that are filled should be filled
+ with the ``color'' by the pattern \meta{name}. For an inherently
+ colored pattern, the \meta{color} parameter is ignored. For
+ form-only patterns, the \meta{color} parameter specified the color
+ to be used for the pattern.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \pgfsetfillpattern{stars}{red}
+ \filldraw (0,0) rectangle (1.5,2);
+
+ \pgfsetfillpattern{green stars}{red}
+ \filldraw (1.5,0) rectangle (3,2);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-plots.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-plots.tex
index 5c5a1738bc8..95b59642c19 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-plots.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-plots.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Creating Plots}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex
index 9c1a821e26c..c8a38014dba 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-points.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Specifying Coordinates}
@@ -18,6 +21,7 @@ never refer to an absolute position on the page, but to a position
inside the current |{pgfpicture}| environment. To specify a coordinate
you can use commands that start with |\pgfpoint|.
+
\subsection{Basic Coordinate Commands}
The following commands are the most basic for specifying a
@@ -42,9 +46,13 @@ coordinate.
Yields the origin. Same as |\pgfpoint{0pt}{0pt}|.
\end{command}
-\begin{command}{\pgfpointpolar\marg{degree}\marg{radius}}
+\begin{command}{\pgfpointpolar\marg{degree}{\ttfamily\char`\{}\meta{radius}\opt{|/|\meta{y-radius}}{\ttfamily\char`\}}}
Yields a point location given in polar coordinates. You can specify
the angle only in degrees, radians are not supported, currently.
+
+ If the optional \meta{y-radius} is given, the polar coordinate is
+ actually a coordinate on an ellipse whose $x$-radius is given by
+ \meta{radius} and whose $y$-radius is given by \meta{y-radius}.
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -52,13 +60,22 @@ coordinate.
\foreach \angle in {0,10,...,90}
{\pgfpathcircle{\pgfpointpolar{\angle}{1cm}}{2pt}}
\pgfusepath{fill}
+\end{tikzpicture}
+\end{codeexample}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+
+ \foreach \angle in {0,10,...,90}
+ {\pgfpathcircle{\pgfpointpolar{\angle}{1cm/2cm}}{2pt}}
+ \pgfusepath{fill}
\end{tikzpicture}
\end{codeexample}
\end{command}
-\subsection{Coordinates in the Xy- and Xyz-Coordinate Systems}
+\subsection{Coordinates in the XY-Coordinate System}
Coordinates can also be specified as multiples of an $x$-vector and a
$y$-vector. Normally, the $x$-vector points one centimeter in the
@@ -68,10 +85,6 @@ $y$-direction, but using the commands |\pgfsetxvec| and
$y$-vector do not necessarily point ``horizontally'' and
``vertically.''
-It is also possible to specify a point as a multiple of three vectors,
-the $x$-, $y$-, and $z$-vector. This is useful for creating simple
-three dimensional graphics.
-
\begin{command}{\pgfpointxy\marg{$s_x$}\marg{$s_y$}}
Yields a point that is situated at $s_x$ times the
$x$-vector plus $s_y$ times the $y$-vector.
@@ -85,27 +98,6 @@ three dimensional graphics.
\end{codeexample}
\end{command}
-\begin{command}{\pgfpointxyz\marg{$s_x$}\marg{$s_y$}\marg{$s_z$}}
- Yields a point that is situated at $s_x$ times the
- $x$-vector plus $s_y$ times the $y$-vector plus $s_z$ times the
- $z$-vector.
-\begin{codeexample}[]
-\begin{pgfpicture}
- \pgfsetarrowsend{to}
-
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointxyz{0}{0}{1}}
- \pgfusepath{stroke}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointxyz{0}{1}{0}}
- \pgfusepath{stroke}
- \pgfpathmoveto{\pgfpointorigin}
- \pgfpathlineto{\pgfpointxyz{1}{0}{0}}
- \pgfusepath{stroke}
-\end{pgfpicture}
-\end{codeexample}
-\end{command}
-
\begin{command}{\pgfsetxvec\marg{point}}
Sets that current $x$-vector for usage in the $xyz$-coordinate
@@ -132,10 +124,108 @@ three dimensional graphics.
Works like |\pgfsetyvec|.
\end{command}
+
+
+\begin{command}{\pgfpointpolarxy\marg{degree}{\ttfamily\char`\{}\meta{radius}\opt{|/|\meta{y-radius}}{\ttfamily\char`\}}}
+ This command is similar to the |\pgfpointpolar| command, but the
+ \meta{radius} is now a factor to be interpreted in the
+ $xy$-coordinate system. This means that a degree of |0| is the same
+ as the $x$-vector of the $xy$-coordinate system times \meta{radius}
+ and a degree of |90| is the $y$-vecotr times \meta{radius}. As for
+ |\pgfpointpolar|, a \meta{radius} can also be a pair separated by a
+ slash. In this case, the $x$- and $y$-vectors are multiplied by
+ different factors.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+
+ \begin{scope}[x={(1cm,-5mm)},y=1.5cm]
+ \foreach \angle in {0,10,...,90}
+ {\pgfpathcircle{\pgfpointpolarxy{\angle}{1}}{2pt}}
+ \pgfusepath{fill}
+ \end{scope}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+
+\subsection{Three Dimensional Coordinates}
+
+It is also possible to specify a point as a multiple of three vectors,
+the $x$-, $y$-, and $z$-vector. This is useful for creating simple
+three dimensional graphics.
+
+\begin{command}{\pgfpointxyz\marg{$s_x$}\marg{$s_y$}\marg{$s_z$}}
+ Yields a point that is situated at $s_x$ times the
+ $x$-vector plus $s_y$ times the $y$-vector plus $s_z$ times the
+ $z$-vector.
+\begin{codeexample}[]
+\begin{pgfpicture}
+ \pgfsetarrowsend{to}
+
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointxyz{0}{0}{1}}
+ \pgfusepath{stroke}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointxyz{0}{1}{0}}
+ \pgfusepath{stroke}
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfpathlineto{\pgfpointxyz{1}{0}{0}}
+ \pgfusepath{stroke}
+\end{pgfpicture}
+\end{codeexample}
+\end{command}
+
\begin{command}{\pgfsetzvec\marg{point}}
Works like |\pgfsetzvec|.
\end{command}
+Inside the $xyz$-coordinate system, you can also specify points
+using spherical and cylindrical coordinates.
+
+
+\begin{command}{\pgfpointcylindrical\marg{degree}\marg{radius}\marg{height}}
+ This command yields the same as
+\begin{verbatim}
+\pgfpointadd{\pgfpointpolarxy{degree}{radius}}{\pgfpointxyz{0}{0}{height}}
+\end{verbatim}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw [->] (0,0) -- (1,0,0) node [right] {$x$};
+ \draw [->] (0,0) -- (0,1,0) node [above] {$y$};
+ \draw [->] (0,0) -- (0,0,1) node [below left] {$z$};
+
+ \pgfpathcircle{\pgfpointcylindrical{80}{1}{.5}}{2pt}
+ \pgfusepath{fill}
+
+ \draw[red] (0,0) -- (0,0,.5) -- +(80:1);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfpointspherical\marg{longitude}\marg{latitude}\marg{radius}}
+ This command yields a point ``on the surface of the earth''
+ specified by the \meta{longitude} and the \marg{latitude}. The
+ radius of the earth is given by \meta{radius}. The equator lies in
+ the $xy$-plane.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw [->] (0,0) -- (1,0,0) node [right] {$x$};
+ \draw [->] (0,0) -- (0,1,0) node [above] {$y$};
+ \draw [->] (0,0) -- (0,0,1) node [below left] {$z$};
+
+ \foreach \angle in {0,10,...,90}
+ {\pgfpathcircle{\pgfpointspherical{\angle}{0}{1}}{2pt}}
+ \pgfusepath{fill}
+
+ \pgfsetcolor{red}
+ \foreach \angle in {0,10,...,90}
+ {\pgfpathcircle{\pgfpointspherical{80}{\angle}{1}}{2pt}}
+ \pgfusepath{fill}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-quick.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-quick.tex
index 8f773b5df24..fbc3bdae870 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-quick.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-quick.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Quick Commands}
@@ -14,6 +17,13 @@ only if you either have a very large number of commands that need to
be processed or if you expect your commands to be executed very often.
+\subsection{Quick Coordiante Commands}
+
+\begin{command}{\pgfqpoint\marg{x}\marg{y}}
+ This command does the same as |\pgfpoint|, but \meta{x} and \meta{y}
+ must be simple dimensions like |1pt| or |1cm|. Things like |2ex| or
+ |2cm+1pt| are not allowed.
+\end{command}
\subsection{Quick Path Construction Commands}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-scopes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-scopes.tex
index c527b42415e..d6841908568 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-scopes.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-scopes.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section[Hierarchical Structures: Package, Environments, Scopes, and Text]
@@ -244,6 +247,29 @@ core):
+\subsubsection{The Library Packages}
+
+There is a special command for loading library packages.
+
+\begin{command}{\usepgflibrary\marg{list of libraries}}
+ Use this command to load further libraries. The list of libraries
+ should contain the names of libraries separated by commas. Instead
+ of curly braces, you can also use square brackets. If you try to
+ load a library a second time, nothing will happen.
+
+ \example |\usepgflibrary{arrows}|
+
+ This command causes the the file
+ |pgflibrary|\meta{library}|.code.tex| to be loaded for each \meta{library} in
+ the \meta{list of libraries}. This means that in order to write your
+ own library file, place a file of the appropriate name somewhere
+ where \TeX\ can find it. \LaTeX, plain \TeX, and Con\TeX t
+ users can then use your library.
+
+ You should also consider adding a \tikzname\ library that simply
+ includes your \pgfname\ library.
+\end{command}
+
\subsection{The Hierarchical Structure of the Graphics}
@@ -335,6 +361,33 @@ Rectangles \begin{pgfpicture}
cases, you need to place the text inside a |\pgftext| command. This
will ``escape back'' to normal \TeX\ mode, see
Section~\ref{section-text-command} for details.
+
+ \medskip
+ \textbf{Remembering a picture position for later reference.}
+ After a picture has been typset, its position on the page is
+ normally forgotten by \pgfname\ and also by \TeX. This means that is
+ not possible to reference a node in this picture later on. In
+ particular, it is normally impossible to draw lines between nodes in
+ different pictures automatically.
+
+ In order to make \pgfname\ ``remember'' a picture, the \TeX-\if
+ |\||ifpgfrememberpicturepositiononpage| should be set to |true|. It
+ is only important that this \TeX-if is |true| at the end of the
+ |{pgfpicture}|-environment, so you can switch it on inside the
+ environment. However, you can also just switch it on globally, then
+ the positions of all pictures are remembered.
+
+ There are several reasons why the remembering is not switched on by
+ default. First, it does not work for all backend drivers (currently, it
+ works only for pdf\TeX). Second, it requires two passes of \TeX\
+ over the file; on the first pass all positions will be wrong. Third,
+ for every remembered picture a line is added to the |.aux|-file,
+ which may result in a large number of extra lines.
+
+ Despite all these ``problems,'' for documents that are processed
+ with pdf\TeX\ and in which there is only a small number of pictures
+ (less than a hundred or so), you can switch on this option globally,
+ it will not cause any significant slowing of \TeX.
\end{environment}
\begin{plainenvironment}{{pgfpicture}}
@@ -342,6 +395,28 @@ Rectangles \begin{pgfpicture}
version, also, a \TeX\ group is created around the environment.
\end{plainenvironment}
+\begin{contextenvironment}{{pgfpicture}}
+ This is the Con\TeX t version of the environment.
+\end{contextenvironment}
+
+
+{\let\ifpgfrememberpicturepositiononpage=\relax
+\begin{command}{\ifpgfrememberpicturepositiononpage}
+ Determines whether the position of pictures on the page should be
+ recorded. The value of this \TeX-if at the end of a |{pgfpicture}|
+ environment is important, not the value at the beginning.
+
+ If this option is set to true of a picture, \pgfname\ will attempt
+ to record the position of the picture on the page. (This attempt
+ will fail with most drivers and when it works it typically requires
+ two runs of \TeX.) The position is not directly accessible. Rather,
+ the nodes mechanism will use this position if you access a node from
+ another picture. See Sections~\ref{section-cross-pictures-pgf}
+ and~\ref{section-cross-picture-tikz} for more details.
+\end{command}
+}
+
+
\makeatletter
\begin{command}{\pgfsetbaseline\marg{dimension}}
This command specifies a $y$-coordinate of the picture that should
@@ -362,6 +437,29 @@ Text \tikz{\pgfpathcircle{\pgfpointorigin}{1ex}\pgfusepath{stroke}},
\end{codeexample}
\end{command}
+\begin{command}{\pgfsetbaselinepointnow\marg{point}}
+ This command specifies the baseline indirectly, namely as the
+ $y$-coordinate that the given \meta{point} has when the command is
+ called.
+\end{command}
+
+\begin{command}{\pgfsetbaselinepointlater\marg{point}}
+ This command also specifies the baseline indirectly, but the
+ $y$-coordinate of the given \meta{point} is only computed at the end
+ of the picture.
+
+\begin{codeexample}[]
+Hello
+\tikz{
+ \pgfsetbaselinepointlater{\pgfpointanchor{X}{base}}
+ % Note: no shape X, yet
+ \node [cross out,draw] (X) {world.};
+}
+\end{codeexample}
+\end{command}
+
+
+
\subsubsection{Graphic Scope Environments}
Inside a |{pgfpicture}| environment you can substructure your picture
@@ -437,6 +535,10 @@ using the following environment:
Plain \TeX\ version of the |{pgfscope}| environment.
\end{plainenvironment}
+\begin{contextenvironment}{{pgfscope}}
+ This is the Con\TeX t version of the environment.
+\end{contextenvironment}
+
The following scopes also encapsulate certain properties of the
graphic state. However, they are typically not used directly by the
@@ -463,6 +565,15 @@ user.
indeed, be dangerous in the middle of a path construction.
\end{environment}
+\begin{plainenvironment}{{pgfinterruptpath}}
+ Plain \TeX\ version of the environment.
+\end{plainenvironment}
+
+\begin{contextenvironment}{{pgfinterruptpath}}
+ Con\TeX t version of the environment.
+\end{contextenvironment}
+
+
\begin{environment}{{pgfinterruptpicture}}
This environment can be used to temporarily interrupt a
|{pgfpicture}|. However, the environment is intended only to be used
@@ -490,6 +601,14 @@ user.
\end{codeexample}
\end{environment}
+\begin{plainenvironment}{{pgfinterruptpicture}}
+ Plain \TeX\ version of the environment.
+\end{plainenvironment}
+
+\begin{contextenvironment}{{pgfinterruptpicture}}
+ Con\TeX t version of the environment.
+\end{contextenvironment}
+
\subsubsection{Inserting Text and Images}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-shadings.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-shadings.tex
index 873d9a823ff..74b555a40e9 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-shadings.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-shadings.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Declaring and Using Shadings}
@@ -181,8 +184,10 @@ in increasing order.
The center of the shading is translated (moved) such that it lies on
the center of the bounding box of the path. The low-level coordinate
system is also scaled such that the shading ``covers'' the shading (the
- details are a bit more complex, see below). Finally, the coordinate
- system is rotated by \meta{angle}.
+ details are a bit more complex, see below). Then, the coordinate
+ system is rotated by \meta{angle}. Finally, if the macro
+ |\pgfsetadditionalshadetransform| has been used, an additional
+ transformation is applied.
After everything has been set up, the shading is inserted. Due to
the transformations and clippings, the effect will be that the
@@ -320,6 +325,13 @@ in increasing order.
applications.
\end{command}
+\begin{command}{\pgfsetadditionalshadetransform\marg{transformation}}
+ This command allows you to specify an additional transformation
+ that should be applied to shadings when the |\pgfshadepath|
+ command is used. The \meta{transformation} should be
+ transformation code like |\pgftransformrotate{20}|.
+\end{command}
+
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "pgfmanual"
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-snakes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-snakes.tex
index 6c23140fbe7..64f70f8a687 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-snakes.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-snakes.tex
@@ -1,8 +1,12 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
+
\section{Snakes}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transformations.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transformations.tex
index 991c7edfc45..738158f2348 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transformations.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-base-transformations.tex
@@ -1,9 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Coordinate and Canvas Transformations}
@@ -198,6 +200,26 @@ coordinate transformations.
\end{command}
+
+\begin{command}{\pgftransformtriangle\marg{a}\marg{b}\marg{c}}
+ This command transforms the coordinate system in such a way that the
+ triangle given by the points \meta{a}, \meta{b} and \meta{c} lies at
+ the coordinates $(0,0)$, $(1\mathrm{pt},0\mathrm{pt})$ and
+ $(0\mathrm{pt},1\mathrm{pt})$.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+ \pgftransformtriangle
+ {\pgfpoint{1cm}{0cm}}
+ {\pgfpoint{0cm}{2cm}}
+ {\pgfpoint{3cm}{1cm}}
+
+ \draw (0,0) -- (1pt,0pt) -- (0pt,1pt) -- cycle;
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
\begin{command}{\pgftransformcm\marg{a}\marg{b}\marg{c}\marg{d}\marg{point}}
Applies the transformation matrix given by $a$, $b$, $c$, and $d$
and the shift \meta{point} to coordinates (in addition to any
@@ -253,6 +275,10 @@ coordinate transformations.
\pgftext{Hi!}
\end{tikzpicture}
\end{codeexample}
+ If |\ifpgfslopedattime| is true, another \TeX\ |\if| is important:
+ |\ifpgfallowupsidedowattime|. If this is false, \pgfname\ will
+ ensure that the rotation is done in such a way that text is never
+ ``upside down.''
There is another \TeX\ if that influences this command. If you set
|\ifpgfresetnontranslationattime| to true, then, between
@@ -290,7 +316,8 @@ coordinate transformations.
time, see Section~\ref{section-pointsattime} once more.
As for the line-at-time transformation command, |\ifpgfslopedattime|
- decides whether an additional rotation should be applied.
+ decides whether an additional rotation should be applied. Again, the
+ value of |\ifpgfallowupsidedowattime| is also considered.
\begin{codeexample}[]
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,2);
@@ -322,6 +349,14 @@ coordinate transformations.
\end{textoken}
}
{
+ \let\ifpgfallowupsidedowattime=\relax
+ \begin{textoken}{\ifpgfallowupsidedowattime}
+ Decides whether the ``at time'' transformation commands should
+ allow the rotation be down in such a way that ``upside-down text''
+ can result.
+ \end{textoken}
+}
+{
\let\ifpgfresetnontranslationsattime=\relax
\begin{textoken}{\ifpgfresetnontranslationsattime}
Decides whether the ``at time'' transformation commands should
@@ -529,6 +564,15 @@ a coordinate transformation, see the previous section).
\end{environment}
+\begin{plainenvironment}{{pgflowlevelscope}\marg{transformation code}}
+ Plain \TeX\ version of the environment.
+\end{plainenvironment}
+
+\begin{contextenvironment}{{pgflowlevelscope}\marg{transformation code}}
+ Con\TeX t version of the environment.
+\end{contextenvironment}
+
+
%%% Local Variables:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-drivers.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-drivers.tex
index e4d12ab2392..15201b087aa 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-drivers.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-drivers.tex
@@ -1,8 +1,11 @@
-% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Input and Output Formats}
@@ -65,8 +68,8 @@ The files in the |generic/pgf| directory do the actual work.
\subsubsection{Using the Plain \TeX\ Format}
When using the plain \TeX\ format, you say |\input{pgf.tex}| or
-|\input{tikz.tex}|. Instead of |\begin{pgfpicture}| and
- |\end{pgfpicture}| you use |\pgfpicture| and |\endpicture|.
+|\input{tikz.tex}|. Then, instead of |\begin{pgfpicture}| and
+ |\end{pgfpicture}| you use |\pgfpicture| and |\endpgfpicture|.
Unlike for the \LaTeX\ format, \pgfname\ is not as good at discerning
the appropriate configuration for the plain \TeX\ format. In
@@ -86,10 +89,27 @@ also just include the correct |tikz.code.tex| file.
\subsubsection{Using the Con\TeX t Format}
-Currently, there is no special support for the Con\TeX t
-format. Rather, you have to use \pgfname\ and \tikzname\ as if you
-were using the plain \TeX\ format when using Con\TeX t. This may
-change in the future.
+When using the Con\TeX t format, you say |\usemodule[pgf]| or
+|\usemodule[tikz]|. As for the plain \TeX\ format you also have
+to replace the start- and end-of-environment tags as follows: Instead
+of |\begin{pgfpicture}| and |\end{pgfpicture}| you use
+|\startpgfpicture| and |\stoppgfpicture|; similarly, instead of
+|\begin{tikzpicture}| and |\end{tikzpicture}| you use must now use
+|\starttikzpicture| and |\stoptikzpicture|; and so on for other
+environments.
+
+The Con\TeX t support is very similar to the plain \TeX\ support, so
+the same restrictions apply: You may have to set the output
+format directly and graphics inclusion may be a problem.
+
+In addition to |pgf| and |tikz| there also exist modules like
+|pgfcore|, |pgfbaseimage|, |pgflibrarysnakes| and so on. To
+use them, you may need to include the module |pgfmod| first (the
+modules |pgf| and |tikz| both include |pgfmod| for you, so typically
+you can skip this). This special module is necessary since Con\TeX t
+satanically restricts the length of module names to 6 characters
+and \pgfname's long names are mapped
+to cryptic 6-letter-names for you by the module |pgfmod|.
@@ -130,7 +150,7 @@ the intermediate |.dvi|-stage. However, from the programmer's point of
view they behave exactly as if there where an intermediate stage.
Normally, \TeX\ only produces letter--coordinate pairs as its
-``output.'' This obviously makes is difficult tho draw, say, a
+``output.'' This obviously makes is difficult to draw, say, a
curve. For this, ``special'' commands can be used. Unfortunately,
these special commands are not the same for the different programs
that process the |.dvi|-file. Indeed, every program that takes a
@@ -195,12 +215,15 @@ exactly the same.
inclusion and does not support masking.
\item
In plain \TeX\ mode it does not support image inclusion.
+ \item
+ Remembering of pictures (inter-picture connections) is not
+ supported.
\end{enumerate}
\end{filedescription}
\begin{filedescription}{pgfsys-vtex.def}
This is the driver file for use with the commercial \textsc{vtex}
- program. Even though is will produce \textsc{pdf} output, it
+ program. Even though it produces \textsc{pdf} output, it
includes |pgfsys-common-postscript.def|. Note that the
\textsc{vtex} program can produce \emph{both} Postscript and
\textsc{pdf} output, depending on the command line
@@ -220,7 +243,10 @@ exactly the same.
Shading is fully implemented, but yields the same quality as the
implementation for |dvips|.
\item
- Opacity is not implemented at all.
+ Opacity is not supported.
+ \item
+ Remembering of pictures (inter-picture connections) is not
+ supported.
\end{enumerate}
\end{filedescription}
@@ -249,6 +275,9 @@ conversion program like |ps2pdf| or the Acrobat Distiller.
\item
Opacity works only in conjunction with newer versions of
GhostScript.
+ \item
+ Remembering of pictures (inter-picture connections) is not
+ supported.
\end{enumerate}
\end{filedescription}
@@ -286,6 +315,9 @@ graphic in your text.
\item
In plain \TeX\ mode it does not support image inclusion.
\item
+ Remembering of pictures (inter-picture connections) is not
+ supported.
+ \item
Text inside |pgfpicture|s is not supported very well. The reason
is that the \textsc{svg} specification currently does not support
text very well and it is also not possible to correctly ``escape
@@ -311,7 +343,7 @@ graphic in your text.
output of |tex4ht| to a new file called |\jobname-xxx.svg|, where
|xxx| is a number that is increased for each graphic. Then, till the
end of the picture, each (system layer) graphic command creates a
- specials that insert appropriate \textsc{svg} literal text into the
+ special that inserts appropriate \textsc{svg} literal text into the
output file. The exact details are a bit complicated since the
imaging model and the processing model of PostScript/\pdf\ and
\textsc{svg} are not quite the same; but they are ``close enough''
@@ -319,3 +351,32 @@ graphic in your text.
\end{filedescription}
+\subsubsection{Producing Perfectly Portable DVI Output}
+
+\begin{filedescription}{pgfsys-dvi.def}
+ This is a driver file that can be used with any output driver,
+ except for |tex4ht|.
+
+ The driver will produce perfectly portable |.dvi| files by composing
+ all pictures entirely of black rectangles, the basic and only graphic
+ shape supported by the \TeX\ core. Even straight, but slanted lines
+ are tricky to get right in this model (they need to be composed of
+ lots of little squares).
+
+ Naturally, \emph{very little} is possible with this driver. In fact,
+ so little is possible that it is easier to list what is possible:
+ \begin{itemize}
+ \item Text boxes can be placed in the normal way.
+ \item Lines and curves can be drawn (stroked). If they are not
+ horizontal or vertical, they are composed of hundred of small
+ rectangles.
+ \item Lines of different width are supported.
+ \item Transformations are supported.
+ \end{itemize}
+ Note that, say, even filling is not supported! (Let alone color or
+ anything fancy.)
+
+ This driver has only one real applications: It might be useful when
+ you only need horizontal or vertical lines in a picture. Then, the
+ results are quite satisfactory.
+\end{filedescription}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-guidelines.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-guidelines.tex
index 667603494c6..1b032e95779 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-guidelines.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-guidelines.tex
@@ -1,10 +1,11 @@
-% $Header: /cvsroot/pgf/pgf/doc/generic/pgf/text-en/pgfmanual-en-guidelines.tex,v 1.1 2005/11/14 17:37:50 tantau Exp $
-
-% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the GNU Public License, version 2.
-
+% 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.
\section{Guidelines on Graphics}
@@ -23,11 +24,6 @@ by Edward Tufte. While I do not agree with everything written in these
books, many of Tufte's arguments are so convincing that I decided to
repeat them in the following guidelines.
-
-
-
-\subsection{Should You Follow Guidelines?}
-
The first thing you should ask yourself when someone presents a bunch of
guidelines is: Should I really follow these guidelines? This is an
important questions, because there are good reasons not to follow
@@ -53,22 +49,6 @@ general guidelines.
When you are aware of a rule and when you decide that breaking the
rule has a desirable effect, break the rule.
-\item
- Some guidelines are simply \emph{wrong}, but everyone follows them
- out of tradition or is forced to do so. My favorite example is a
- guideline a software company I used to work for has set in a big
- project: All programmers had to declare the parameters of functions
- in \emph{increasing order of size}. So, one-byte
- parameters should come first, then two-byte parameters, and so on.
-
- This guideline is total nonsense. An (arguably) sensible guideline
- is ``parameters must be declared alphabetically'' so that parameters
- are easier to find. Another (arguably) sensible guideline is
- ``parameters must be declared in decreasing order of size'' so that
- less byte-alignment cache misses occur when the stack is
- accessed. The guideline the company used maximized cache misses and
- resulted in a more or less random ordering so that programmers
- constantly had to look up the parameter ordering.
\end{itemize}
So, before you apply a guideline or choose not to apply it, ask
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-installation.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-installation.tex
index dee300f358f..f54eb47ea26 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-installation.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-installation.tex
@@ -1,16 +1,18 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Installation}
There are different ways of installing \pgfname, depending
on your system and needs, and you may need to install other
packages as well as, see below. Before installing, you may wish to
-review the \textsc{gpl} license under which the package is
+review the licenses under which the package is
distributed, see Section~\ref{section-license}.
Typically, the package will already be installed on your
@@ -58,7 +60,8 @@ Currently, \pgfname\ supports the following formats:
|plain| with complete functionality, except for graphics inclusion,
which works only for pdf\TeX.
\item
- |context| should work as |plain|, but I have not tried it.
+ |context| with complete functionality, except for graphics inclusion,
+ which works only for pdf\TeX.
\end{itemize}
For more details, see Section~\ref{section-formats}.
@@ -180,5 +183,3 @@ changes in the syntax of certain command from version to version. If
things no longer work that used to work, you may wish to have a look
at the release notes and at the change log.
-
-\input{pgfmanual-en-license}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-introduction.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-introduction.tex
index fd67dafc38c..826648cb9ec 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-introduction.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-introduction.tex
@@ -1,9 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Introduction}
@@ -11,15 +13,15 @@
The \pgfname\ package, where ``\pgfname'' is supposed to mean ``portable
graphics format'' (or ``pretty, good, functional'' if you
prefer\dots), is a package for creating graphics in an ``inline''
-manner. The package defines a number of \TeX\ commands that draw
+manner. It defines a number of \TeX\ commands that draw
graphics. For example, the code |\tikz \draw (0pt,0pt) -- (20pt,6pt);|
yields the line \tikz \draw (0pt,0pt) -- (20pt,6pt); and the code
|\tikz \fill[orange] (1ex,1ex) circle (1ex);| yields \tikz
\fill[orange] (1ex,1ex) circle (1ex);.
-In a sense, when using \pgfname\ you ``program'' your graphics, just as you
-``program'' your document when using \TeX. This means that you get
-the advantages of the ``\TeX-approach to typesetting'' also for your
+In a sense, when you use \pgfname\ you ``program'' your graphics, just
+as you ``program'' your document when you use \TeX. You get all
+the advantages of the ``\TeX-approach to typesetting'' for your
graphics: quick creation of simple graphics, precise positioning, the
use of macros, often superior typography. You also inherit all the
disadvantages: steep learning curve, no \textsc{wysiwyg}, small
@@ -47,21 +49,14 @@ The \pgfname\ system consists of different layers:
|{pgfpicture}|. Depending on whether |dvips|,
|dvipdfm|, or |pdftex| is used to process the document, the system
command will be converted to different |\special| commands.
-
The system layer is as ``minimalistic'' as possible since each
additional command makes it more work to port \pgfname\ to a new
- driver. Currently, only drivers that produce PostScript or
- \textsc{pdf} output are supported and only few of these (hence the
- name \emph{portable} graphics format is currently a bit
- boastful). However, in principle, the system layer could be ported
- to many different drivers quite easily. It should even be possible
- to produce, say, \textsc{svg} output in conjunction with
- \textsc{tex4ht}.
+ driver.
As a user, you will not use the system layer directly.
\item[Basic layer:]
The basic layer provides a set of basic commands that allow
- you to produce complex graphics in a much easier way than by using
+ you to produce complex graphics in a much easier manner than by using
the system layer directly. For example, the system layer provides
no commands for creating circles since circles can be composed from
the more basic Bézier curves (well, almost). However, as a user you
@@ -130,26 +125,60 @@ layer, and finally the system layer.
\subsection{Comparison with Other Graphics Packages}
-There were two main motivations for creating \pgfname:
+\pgfname\ is not the only graphics package for \TeX. In the following,
+I try to give a reasonably fair comparison of the \pgfname-system and
+other packages.
\begin{enumerate}
\item
- The standard \LaTeX\ |{picture}| environment is not powerful enough to
- create anything but really simple graphics. This is certainly not
+ The standard \LaTeX\ |{picture}| environment allows you to create
+ simple graphics, but little more. This is certainly not
due to a lack of knowledge or imagination on the part of
\LaTeX's designer(s). Rather, this is the price paid for the
|{picture}| environment's portability: It works together with all
backend drivers.
\item
- The |{pstricks}| package is certainly powerful enough to create
+ The |pstricks| package is certainly powerful enough to create
any conceivable kind of graphic, but it is not portable at all. Most
importantly, it does not work with |pdftex| nor with any other
driver that produces anything but PostScript code.
+
+ Compared to \pgfname, |pstricks| has a broader support base. There
+ are many nice extra packages for special purpose sitations that have
+ been contributed by users over the last decade.
+
+ The \tikzname\ syntax is more consistent than the |pstricks| syntax
+ as \tikzname\ was developed ``in a more centralized manner'' and
+ also ``with the shortcomings on |pstricks| in mind.''
+
+ Note that a number of neat tricks that |pstricks| can do are
+ impossible in \pgfname. In particular, |pstricks| has access to the
+ powerful PostScript programming language, which allows trickery
+ such as inline function plotting.
+\item
+ The |xypic| package is an older package for creating
+ graphics. However, it is more difficult to use and to learn because
+ the syntax and the documentation are a bit cryptic.
+\item
+ The |dratex| package is a small graphic package for creating a
+ graphics. Compared to the other package, including \pgfname, it is
+ very small, which may or may not be an advantage.
+\item
+ The |metapost| program is a very powerful alternative to
+ \pgfname. However, it is an external program, which entails a whole
+ bunch on problems. The time needed both to create a small graphics
+ and also to compile it is much greater than in \pgfname.
+ The main problem with |metapost|, however, is the inclusion of
+ labels. This is \emph{much} easier to achieve using \pgfname.
+\item
+ The |xfig| program is an important alternative to \tikzname\ for
+ users who do not wish to ``program'' their graphics as is necessary
+ with \tikzname\ and the other packages above. Their is a conversion
+ program that will convert |xfig| graphics to both \tikzname\ and
+ for \pgfname, but it is still under construction.
\end{enumerate}
-The \pgfname\ package is a trade-off between portability and expressive
-power. It is not as portable as |{picture}| and perhaps not quite as
-powerful as |{pspicture}|. However, it is more powerful than
-|{picture}| and more portable than |{pspicture}|.
+
+
\subsection{Utilities: Page Management}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-libraries.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-libraries.tex
deleted file mode 100644
index 3d9b4564c5d..00000000000
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-libraries.tex
+++ /dev/null
@@ -1,1094 +0,0 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
-%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
-
-\section{Libraries}
-
-\subsection{Arrow Tip Library}
-\label{section-library-arrows}
-
-\begin{package}{pgflibraryarrows}
- The package defines additional arrow tips, which are described
- below. See page~\pageref{standard-arrows} for the arrows tips that
- are defined by default. Note that neither the standard packages nor
- this package defines an arrow name containing |>| or |<|. These are
- left for the user to defined as he or she sees fit.
-\end{package}
-
-\subsubsection{Triangular Arrow Tips}
-
-\begin{tabular}{ll}
- \symarrow{latex'} \\
- \symarrow{latex' reversed} \\
- \symarrow{stealth'} \\
- \symarrow{stealth' reversed}\\
- \symarrow{triangle 90} \\
- \symarrow{triangle 90 reversed} \\
- \symarrow{triangle 60} \\
- \symarrow{triangle 60 reversed} \\
- \symarrow{triangle 45} \\
- \symarrow{triangle 45 reversed} \\
- \symarrow{open triangle 90} \\
- \symarrow{open triangle 90 reversed} \\
- \symarrow{open triangle 60} \\
- \symarrow{open triangle 60 reversed} \\
- \symarrow{open triangle 45} \\
- \symarrow{open triangle 45 reversed} \\
-\end{tabular}
-
-\subsubsection{Barbed Arrow Tips}
-
-\begin{tabular}{ll}
- \symarrow{angle 90} \\
- \symarrow{angle 90 reversed} \\
- \symarrow{angle 60} \\
- \symarrow{angle 60 reversed} \\
- \symarrow{angle 45} \\
- \symarrow{angle 45 reversed} \\
- \symarrow{hooks} \\
- \symarrow{hooks reversed} \\
-\end{tabular}
-
-
-\subsubsection{Bracket-Like Arrow Tips}
-
-\begin{tabular}{ll}
- \sarrow{[}{]} \\
- \sarrow{]}{[} \\
- \sarrow{(}{)} \\
- \sarrow{)}{(}
-\end{tabular}
-
-\subsubsection{Circle and Diamond Arrow Tips}
-
-
-\begin{tabular}{ll}
- \symarrow{o} \\
- \symarrow{*} \\
- \symarrow{diamond} \\
- \symarrow{open diamond} \\
-\end{tabular}
-
-
-\subsubsection{Partial Arrow Tips}
-
-\begin{tabular}{ll}
- \symarrow{left to} \\
- \symarrow{left to reversed} \\
- \symarrow{right to} \\
- \symarrow{right to reversed} \\
- \symarrow{left hook} \\
- \symarrow{left hook reversed} \\
- \symarrow{right hook} \\
- \symarrow{right hook reversed}
-\end{tabular}
-
-
-\subsubsection{Line Caps}
-
-\begin{tabular}{ll}
- \carrow{round cap} \\
- \carrow{butt cap} \\
- \carrow{triangle 90 cap} \\
- \carrow{triangle 90 cap reversed} \\
- \carrow{fast cap} \\
- \carrow{fast cap reversed} \\
-\end{tabular}
-
-
-\subsection{Snake Library}
-
-\label{section-library-snakes}
-
-\begin{package}{pgflibrarysnakes}
- This library package defines basic
- snakes. Section~\ref{section-tikz-snakes} explains how snakes are
- used in \tikzname, Section~\ref{section-base-snakes} explains how
- new snakes can be defined.
-
- The snakes are influenced by the current values of parameters like
- |\pgfsnakesegmentamplitude|. Only this parameter and
- |\pgfsnakesegmentlength| are proper \TeX\ dimensions, all other
- parameters are \TeX\ macros.
-
- In \tikzname, each parameter can be set using an option having the
- parameters name minus the |\pgfsnake| part.
-\end{package}
-
-
-\begin{snake}{border}
- This snake adds straight lines the path that are at a specific angle
- to the line toward the target. The idea is to add these little lines
- to indicate the ``border'' or an area. The following parameters
- influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentlength|
- determines the distance between consecutive ticks.
- \item |\pgfsnakesegmentamplitude|
- determines the length of the ticks.
- \item |\pgfsnakesegmentangle|
- determines the angle between the ticks and the line toward the
- target.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw (0,0) rectangle (3,1)
- [snake=border,segment angle=-45] (0,0) rectangle (3,1);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{brace}
- This snake adds a long brace to the path. The left and right end of
- the brace will be exactly on the start and endpoint of the
- snake. The following parameters influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentamplitude|
- determines how much the brace rises above the path.
- \item |\pgfsnakesegmentaspect|
- determines the fraction of the total length where the ``middle
- part'' of the brace will be.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=brace,segment aspect=0.25] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-\begin{snake}{bumps}
- This snake consists of little half ellipses. The following parameters
- influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentamplitude|
- determines the height of the half ellipse.
- \item |\pgfsnakesegmentlength|
- determines the width of the half ellipse.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=bumps] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{coil}
- This snake adds a coil to the path. To understand how this works,
- imagine a three-dimensional spring. The spring's axis points along
- the line toward the target. Then, we ``view'' the spring from a
- certain angle. If we look ``straight from the side'' we will see a
- perfect sine curve, if we look ``more from the front'' we will see a
- coil. The following parameters influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentamplitude|
- determines how much the coil rises above the path and falls below
- it. Thus, this is the radius of the coil.
- \item |\pgfsnakesegmentlength|
- determines the distance between two consecutive ``curls.'' Thus,
- when the spring is see ``from the side'' this will be the wave
- length of the sine curve.
- \item |\pgfsnakesegmentaspect|
- determines the ``viewing direction.'' A value of |0| means
- ``looking from the side'' and a value of |0.5|, which is the
- default, means ``look more from the front.''
- \end{itemize}
-\begin{codeexample}[]
-\begin{tikzpicture}[segment amplitude=10pt]
- \draw[snake=coil] (0,1) -- (3,1);
- \draw[snake=coil,segment aspect=0] (0,0) -- (3,0);
-\end{tikzpicture}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{expanding waves}
- This snake adds arcs to the path that get bigger along the line
- towards the target. The following parameters influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentlength|
- determines the distance between consecutive arcs.
- \item |\pgfsnakesegmentangle|
- determines the opening angle below and above the path. Thus, the
- total opening angle is twice this angle.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=expanding waves] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{saw}
- This snake looks like the blade of a saw. The following parameters
- influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentamplitude|
- determines how much each spike raises above the straight line.
- \item |\pgfsnakesegmentlength|
- determines the length each spike.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=saw] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{snake}
- This snake is the ``architypical'' snake: It looks like a snake seen
- from above. More precisely, the snake is a sine wave with a
- ``softened'' start and ending. The following parameters influence
- the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentamplitude|
- determines the sine wave's amplitude.
- \item |\pgfsnakesegmentlength|
- determines the sine wave's wave length.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=snake] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{ticks}
- This snake adds straight lines the path that are orthogonal to the
- line toward the target. The following parameters influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentlength|
- determines the distance between consecutive ticks.
- \item |\pgfsnakesegmentamplitude|
- determines half the length of the ticks.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=ticks] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-\begin{snake}{triangles}
- This snake adds triangles to the path that point toward the
- target. The following parameters influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentlength|
- determines the distance between consecutive triangles.
- \item |\pgfsnakesegmentamplitude|
- determines half the length of the triangle side that is orthogonal
- to the path.
- \item |\pgfsnakesegmentobjectlength|
- determines the height of the triangle.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=triangles] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{waves}
- This snake adds arcs to the path that have a constant size. The
- following parameters influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentlength|
- determines the distance between consecutive arcs.
- \item |\pgfsnakesegmentangle|
- determines the opening angle below and above the path. Thus, the
- total opening angle is twice this angle.
- \item |\pgfsnakesegmentamplitude|
- determines the radius of each arc.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=waves] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-\begin{snake}{zigzag}
- This snake looks like a zig-zag line. The following parameters
- influence the snake:
- \begin{itemize}
- \item |\pgfsnakesegmentamplitude|
- determines how much the zig-zag lines raises above and falls below
- a straight line to the target point.
- \item |\pgfsnakesegmentlength|
- determines the length of a complete ``up-down'' cycle.
- \end{itemize}
-\begin{codeexample}[]
-\tikz{\draw[snake=zigzag] (0,0) -- (3,0);}
-\end{codeexample}
-\end{snake}
-
-
-
-\subsection{Plot Handler Library}
-\label{section-library-plothandlers}
-
-\begin{package}{pgflibraryplothandlers}
- This library packages defines additional plot handlers, see
- Section~\ref{section-plot-handlers} for an introduction to plot
- handlers. The additional handlers are described in the following.
-\end{package}
-
-
-\subsubsection{Curve Plot Handlers}
-
-\begin{command}{\pgfplothandlercurveto}
- This handler will issue a |\pgfpathcurveto| command for each point of
- the plot, \emph{except} possibly for the first. As for the line-to
- handler, what happens with the first point can be specified using
- |\pgfsetmovetofirstplotpoint| or |\pgfsetlinetofirstplotpoint|.
-
- Obviously, the |\pgfpathcurveto| command needs, in addition to the
- points on the path, some control points. These are generated
- automatically using a somewhat ``dumb'' algorithm: Suppose you have
- three points $x$, $y$, and $z$ on the curve such that $y$ is between
- $x$ and $z$:
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlercurveto
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-
- In order to determine the control points of the curve at the point
- $y$, the handler computes the vector $z-x$ and scales it by the
- tension factor (see below). Let us call the resulting vector
- $s$. Then $y+s$ and $y-s$ will be the control points around $y$. The
- first control point at the beginning of the curve will be the
- beginning itself, once more; likewise the last control point is the
- end itself.
-\end{command}
-
-\begin{command}{\pgfsetplottension\marg{value}}
- Sets the factor used by the curve plot handlers to determine the
- distance of the control points from the points they control. The
- higher the curvature of the curve points, the higher this value
- should be. A value of $1$ will cause four points at quarter
- positions of a circle to be connected using a circle. The default is
- $0.5$.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfsetplottension{0.75}
- \pgfplothandlercurveto
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-
-\begin{command}{\pgfplothandlerclosedcurve}
- This handler works like the curve-to plot handler, only it will
- add a new part to the current path that is a closed curve through
- the plot points.
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlerclosedcurve
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-
-\subsubsection{Comb Plot Handlers}
-
-There are three ``comb'' plot handlers. There name stems from the fact
-that the plots they produce look like ``combs'' (more or less).
-
-\begin{command}{\pgfplothandlerxcomb}
- This handler converts each point in the plot stream into a line from
- the $y$-axis to the point's coordinate, resulting in a ``horizontal
- comb.''
-
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlerxcomb
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-
-\begin{command}{\pgfplothandlerycomb}
- This handler converts each point in the plot stream into a line from
- the $x$-axis to the point's coordinate, resulting in a ``vertical
- comb.''
-
- This handler is useful for creating ``bar diagrams.''
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlerycomb
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-\begin{command}{\pgfplothandlerpolarcomb}
- This handler converts each point in the plot stream into a line from
- the origin to the point's coordinate.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlerpolarcomb
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-\subsubsection{Mark Plot Handler}
-
-\label{section-plot-marks}
-
-\begin{command}{\pgfplothandlermark\marg{mark code}}
- This command will execute the \meta{mark code} for each point of the
- plot, but each time the coordinate transformation matrix will be
- setup such that the origin is at the position of the point to be
- plotted. This way, if the \meta{mark code} draws a little circle
- around the origin, little circles will be drawn at each point of the
- plot.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlermark{\pgfpathcircle{\pgfpointorigin}{4pt}\pgfusepath{stroke}}
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-
- Typically, the \meta{code} will be |\pgfuseplotmark{|\meta{plot mark
- name}|}|, where \meta{plot mark name} is the name of a
- predefined plot mark.
-\end{command}
-
-\begin{command}{\pgfuseplotmark\marg{plot mark name}}
- Draws the given \meta{plot mark name} at the origin. The \meta{plot
- mark name} must previously have been declared using
- |\pgfdeclareplotmark|.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlermark{\pgfuseplotmark{pentagon}}
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-\begin{command}{\pgfdeclareplotmark\marg{plot mark name}\marg{code}}
- Declares a plot mark for later used with the |\pgfuseplotmark|
- command.
-
-\begin{codeexample}[]
-\pgfdeclareplotmark{my plot mark}
- {\pgfpathcircle{\pgfpoint{0cm}{1ex}}{1ex}\pgfusepathqstroke}
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfplothandlermark{\pgfuseplotmark{my plot mark}}
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-
-\begin{command}{\pgfsetplotmarksize\marg{dimension}}
- This command sets the \TeX\ dimension |\pgfplotmarksize| to
- \meta{dimension}. This dimension is a ``recommendation'' for plot
- mark code at which size the plot mark should be drawn; plot mark
- code may choose to ignore this \meta{dimension} altogether. For
- circles, \meta{dimension} should be the radius, for other shapes it
- should be about half the width/height.
-
- The predefined plot marks all take this dimension into account.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
- \pgfsetplotmarksize{1ex}
- \pgfplothandlermark{\pgfuseplotmark{*}}
- \pgfplotstreamstart
- \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
- \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
- \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
- \pgfplotstreamend
- \pgfusepath{stroke}
-\end{tikzpicture}
-\end{codeexample}
-\end{command}
-
-\begin{textoken}{\pgfplotmarksize}
- A \TeX\ dimension that is a ``recommendation'' for the size of plot
- marks.
-\end{textoken}
-
-The following plot marks are predefined (the filling color has been
-set to yellow):
-
-\medskip
-\begin{tabular}{lc}
- \plotmarkentry{*}
- \plotmarkentry{x}
- \plotmarkentry{+}
-\end{tabular}
-
-
-\subsection{Plot Mark Library}
-
-\begin{package}{pgflibraryplotmarks}
- When this package is loaded, the following plot marks are defined in
- addition to |*|, |x|, and |+| (the filling color has been set to a
- dark yellow):
-
- \catcode`\|=12
- \medskip
- \begin{tabular}{lc}
- \plotmarkentry{-}
- \index{*vbar@\protect\texttt{\protect\myvbar} plot mark}%
- \index{Plot marks!*vbar@\protect\texttt{\protect\myvbar}}
- \texttt{\char`\\pgfuseplotmark\char`\{\declare{|}\char`\}} &
- \tikz\draw[color=black!25] plot[mark=|,mark options={fill=yellow,draw=black}]
- coordinates {(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
- \plotmarkentry{o}
- \plotmarkentry{asterisk}
- \plotmarkentry{star}
- \plotmarkentry{oplus}
- \plotmarkentry{oplus*}
- \plotmarkentry{otimes}
- \plotmarkentry{otimes*}
- \plotmarkentry{square}
- \plotmarkentry{square*}
- \plotmarkentry{triangle}
- \plotmarkentry{triangle*}
- \plotmarkentry{diamond}
- \plotmarkentry{diamond*}
- \plotmarkentry{pentagon}
- \plotmarkentry{pentagon*}
- \end{tabular}
-\end{package}
-
-
-
-\subsection{Shape Library}
-
-\begin{package}{pgflibraryshapes}
- This library packages defines additional shapes, which are
- described in the following.
-\end{package}
-
-\begin{shape}{cross out}
- This shape ``crosses out'' the node. Its foreground path are simply
- two diagonal lines that between the corners of the node's bounding
- box. Here is an example:
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \draw[help lines] (0,0) grid (3,2);
- \node [cross out,draw=red] at (1.5,1) {cross out};
-\end{tikzpicture}
-\end{codeexample}
-
- A useful application is inside text as in the following example:
-\begin{codeexample}[]
-Cross \tikz[baseline] \node [cross out,draw,anchor=text] {me}; out!
-\end{codeexample}
-
- This shape inherits all anchors from the |rectangle| shape, see also
- the following figure:
-\begin{codeexample}[]
-\Huge
-\begin{tikzpicture}
- \node[name=s,shape=cross out,style=shape example] {cross out\vrule width 1pt height 2cm};
- \foreach \anchor/\placement in
- {north west/above left, north/above, north east/above right,
- west/left, center/above, east/right,
- mid west/right, mid/above, mid east/left,
- base west/left, base/below, base east/right,
- south west/below left, south/below, south east/below right,
- text/left, 10/right, 130/above}
- \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
- node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-\end{shape}
-
-\begin{shape}{ellipse}
- This shape is an ellipse tightly fitting the text box, if no inner
- separation is given. The following figure shows the anchors this
- shape defines; the anchors |10| and |130| are example of border anchors.
-\begin{codeexample}[]
-\Huge
-\begin{tikzpicture}
- \node[name=s,shape=ellipse,style=shape example] {Ellipse\vrule width 1pt height 2cm};
- \foreach \anchor/\placement in
- {north west/above left, north/above, north east/above right,
- west/left, center/above, east/right,
- mid west/right, mid/above, mid east/left,
- base west/left, base/below, base east/right,
- south west/below left, south/below, south east/below right,
- text/left, 10/right, 130/above}
- \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
- node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-\end{shape}
-
-\begin{shape}{forbidden sign}
- This shape places the node inside a circle with a diagonal from the
- lower left to the upper right added. The circle is part of the
- background, the diagonal line part of the foreground path; thus, the
- diagonal line is on top of the text.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \node [forbidden sign,line width=1ex,draw=red,fill=white] {Smoking};
-\end{tikzpicture}
-\end{codeexample}
-
- The shape inherits all anchors from the |circle| shape, see also the
- following figure:
-\begin{codeexample}[]
-\Huge
-\begin{tikzpicture}
- \node[name=s,shape=forbidden sign,style=shape example] {Forbidden\vrule width 1pt height 2cm};
- \foreach \anchor/\placement in
- {north west/above left, north/above, north east/above right,
- west/left, center/above, east/right,
- mid west/right, mid/above, mid east/left,
- base west/left, base/below, base east/right,
- south west/below left, south/below, south east/below right,
- text/left, 10/right, 130/above}
- \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
- node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-\end{shape}
-
-
-\begin{shape}{strike out}
- This shape is idential to the |cross out| shape, only its foreground
- path consists of a single line from the lower left to the upper
- right.
-
-\begin{codeexample}[]
-Strike \tikz[baseline] \node [strike out,draw,anchor=text] {me}; out!
-\end{codeexample}
-
- See the |cross out| shape for the anchors.
-\end{shape}
-
-
-
-\subsection{Tree Library}
-
-\label{section-tree-library}
-
-
-\begin{package}{pgflibrarytikztrees}
- This packages defines styles to be used when drawing trees.
-\end{package}
-
-\subsubsection{Growth Functions}
-
-The package |pgflibrarytikztrees| defines two new growth
-functions. They are installed using the following options:
-
-\begin{itemize}
- \itemoption{grow via three points}|=one child at (|\meta{x}%
- |) and two children at (|\meta{y}|) and (|\meta{z}|)|
- This option installs a growth function that works as follows: If a
- parent node has just one child, this child is placed at \meta{x}. If
- the parent node has two children, these are placed at \meta{y} and
- \meta{z}. If the parent node has more than two children, the
- children are placed at points that are linearly extrapolated from
- the three points \meta{x}, \meta{y}, and \meta{z}. In detail, the
- position is $x + \frac{n-1}{2}(y-x) + (c-1)(z-y)$, where $n$ is the
- number of children and $c$ is the number of the current child
- (starting with~$1$).
-
- The net effect of all this is that if you have a certain ``linear
- arrangement'' in mind and use this option to specify the placement
- of a single child and of two children, then any number of children
- will be placed correctly.
-
- Here are some arrangements based on this growth function. We start
- with a simple ``above'' arrangement:
-\begin{codeexample}[]
-\begin{tikzpicture}[grow via three points={%
- one child at (0,1) and two children at (-.5,1) and (.5,1)}]
- \node at (0,0) {one} child;
- \node at (0,-1.5) {two} child child;
- \node at (0,-3) {three} child child child;
- \node at (0,-4.5) {four} child child child child;
-\end{tikzpicture}
-\end{codeexample}
-
- The next arrangement places children above, but ``grows only to the
- right.''
-\begin{codeexample}[]
-\begin{tikzpicture}[grow via three points={%
- one child at (0,1) and two children at (0,1) and (1,1)}]
- \node at (0,0) {one} child;
- \node at (0,-1.5) {two} child child;
- \node at (0,-3) {three} child child child;
- \node at (0,-4.5) {four} child child child child;
-\end{tikzpicture}
-\end{codeexample}
-
- In the final arrangement, the children are placed along a line going
- down and right.
-\begin{codeexample}[]
-\begin{tikzpicture}[grow via three points={%
- one child at (-1,-.5) and two children at (-1,-.5) and (0,-.75)}]
- \node at (0,0) {one} child;
- \node at (0,-1.5) {two} child child;
- \node at (0,-3) {three} child child child;
- \node at (0,-4.5) {four} child child child child;
-\end{tikzpicture}
-\end{codeexample}
-
- These examples should make it clear how you can create new styles to
- arrange your children along a line.
-
- \itemstyle{grow cyclic}
- This style causes the children to be arranged ``on a circle.'' For
- this, the children are placed at distance |\tikzleveldistance| from
- the parent node, but not on a straight line, but points on a
- circle. Instead of a sibling distance, there is a |sibling angle|
- that denotes the angle between two given children.
- \begin{itemize}
- \itemoption{sibling angle}|=|\meta{angle}
- Sets the angle between siblings in the |grow cyclic| style.
- \end{itemize}
- Note that this function will rotate the coordinate system of the
- children to ensure that the grandchildren will grow in the right
- direction.
-\begin{codeexample}[]
-\begin{tikzpicture}[grow cyclic]
- \tikzstyle{level 1}=[level distance=8mm,sibling angle=60]
- \tikzstyle{level 2}=[level distance=4mm,sibling angle=45]
- \tikzstyle{level 3}=[level distance=2mm,sibling angle=30]
- \coordinate [rotate=-90] % going down
- child foreach \x in {1,2,3}
- {child foreach \x in {1,2,3}
- {child foreach \x in {1,2,3}}};
-\end{tikzpicture}
-\end{codeexample}
-\end{itemize}
-
-\subsubsection{Edges From Parent}
-
-The following styles can be used to modify how the edges from parents
-are drawn:
-
-\begin{itemize}
- \itemstyle{edge from parent fork down}
- This style will draw a line from the parent downwards (for half the
- level distance) and then on to the child using only horizontal and
- vertical lines.
-\begin{codeexample}[]
-\begin{tikzpicture}
- \node {root}
- [edge from parent fork down]
- child {node {left}}
- child {node {right}
- child[child anchor=north east] {node {child}}
- child {node {child}}
- };
-\end{tikzpicture}
-\end{codeexample}
- \itemstyle{edge from parent fork right}
- This style behaves similarly, only it will first draw its edge to
- the right.
-\begin{codeexample}[]
-\begin{tikzpicture}
- \node {root}
- [edge from parent fork right,grow=right]
- child {node {left}}
- child {node {right}
- child {node {child}}
- child {node {child}}
- };
-\end{tikzpicture}
-\end{codeexample}
- \itemstyle{edge from parent fork left}
- behaves similary.
- \itemstyle{edge from parent fork up}
- behaves similary.
-\end{itemize}
-
-
-
-\subsection{Background Library}
-
-\label{section-tikz-backgrounds}
-
-\begin{package}{pgflibrarytikzbackgrounds}
- This packages defines ``backgrounds'' for pictures. This does not
- refer to background pictures, but rather to frames drawn around and
- behind pictures. For example, this package allows you to just add
- the |framed| option to a picture to get a rectangular box around
- your picture or |gridded| to put a grid behind your picture.
-\end{package}
-
-When this package is loaded, the following styles become available:
-\begin{itemize}
- \itemstyle{show background rectangle}
- This style causes a rectangle to be drawn behind your graphic. This
- style option must be given to the |{tikzpicture}| environment or to
- the |\tikz| command.
-\begin{codeexample}[]
-\begin{tikzpicture}[show background rectangle]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- The size of the background rectangle is determined as follows:
- We start with the bounding box of the picture. Then, a certain
- separator distance is added on the sides. This distance can be
- different for the $x$- and $y$-directions and can be set using the
- following options:
- \begin{itemize}
- \itemoption{inner frame xsep}|=|\meta{dimension}
- Sets the additional horizontal separator distance for the
- background rectangle. The default is |1ex|.
- \itemoption{inner frame ysep}|=|\meta{dimension}
- Same for the vertical separator distance.
- \itemoption{inner frame sep}|=|\meta{dimension}
- sets the horizontal and vertical separator distances
- simultaneously.
- \end{itemize}
- The following two styles make setting the inner separator a bit
- easier to remember:
- \begin{itemize}
- \itemstyle{tight background} Sets the inner frame separator to
- 0pt. The background rectangle will have the size of the bounding
- box.
- \itemstyle{loose background} Sets the inner frame separator to 2ex.
- \end{itemize}
-
- You can influence how the background rectangle is rendered by setting
- the following style:
- \begin{itemize}
- \itemstyle{background rectangle}
- This style dictates how the background rectangle is drawn or
- filled. By default this style is set to |draw|, which causes the
- path of the background rectangle to be drawn in the usual
- way. Setting this style to, say, |fill=blue!20| causes a light
- blue background to be added to the picture. You can also use more
- fancy settings as shown in the following example:
-\begin{codeexample}[]
-\tikzstyle{background rectangle}=
- [double,ultra thick,draw=red,top color=blue,rounded corners]
-\begin{tikzpicture}[show background rectangle]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- Naturally, no one in their right mind would use the above, but
- here is a nice background:
-\begin{codeexample}[]
-\tikzstyle{background rectangle}=
- [draw=blue!50,fill=blue!20,rounded corners=1ex]
-\begin{tikzpicture}[show background rectangle]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
-\end{itemize}
- \itemstyle{framed}
- This is a shorthand for |show background rectangle|.
- \itemstyle{show background grid}
- This style behaves similarly to the |show background rectangle|
- style, but it will not use a rectangle path, but a grid. The lower
- left and upper right corner of the grid is computed in the same way
- as for the background rectangle:
-\begin{codeexample}[]
-\begin{tikzpicture}[show background grid]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- You can influence the background grid by setting
- the following style:
- \begin{itemize}
- \itemstyle{background grid}
- This style dictates how the background grid path is drawn. The
- default is |draw,help lines|.
-\begin{codeexample}[]
-\tikzstyle{background grid}=[thick,draw=red,step=.5cm]
-\begin{tikzpicture}[show background grid]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- This option can be combined with the |framed| option (use the
- |framed| option first):
-\begin{codeexample}[]
-\tikzstyle{background grid}=[thick,draw=red,step=.5cm]
-\tikzstyle{background rectangle}=[rounded corners,fill=yellow]
-\begin{tikzpicture}[framed,gridded]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- \itemstyle{gridded}
- This is a shorthand for |show background grid|.
- \end{itemize}
- \itemstyle{show background top}
- This style causes a single line to be drawn at the top of the
- background rectangle. Normally, the line coincides exactly with the
- top line of the background rectangle:
-\begin{codeexample}[]
-\tikzstyle{background rectangle}=[fill=yellow]
-\begin{tikzpicture}[framed,show background top]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- The following option allows you to lengthen (or shorten) the line:
- \begin{itemize}
- \itemoption{outer frame xsep}|=|\meta{dimension}
- The \meta{dimension} is added at the left and right side of the
- line.
-\begin{codeexample}[]
-\tikzstyle{background rectangle}=[fill=yellow]
-\begin{tikzpicture}
- [framed,show background top,outer frame xsep=1ex]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- \itemoption{outer frame ysep}|=|\meta{dimension}
- This option does not apply to the top line, but to the left and
- right lines, see below.
- \itemoption{outer frame sep}|=|\meta{dimension}
- Sets both the $x$- and $y$-separation.
-\begin{codeexample}[]
-\tikzstyle{background rectangle}=[fill=blue!20]
-\begin{tikzpicture}
- [outer frame sep=1ex,%
- show background top,%
- show background bottom,%
- show background left,%
- show background right]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- \end{itemize}
- You can influence how the line is drawn grid by setting
- the following style:
- \begin{itemize}
- \itemstyle{background top}
- Default is |draw|.
-\begin{codeexample}[]
-\tikzstyle{background rectangle}=[fill=blue!20]
-\tikzstyle{background top}=[draw=blue!50,line width=1ex]
-\begin{tikzpicture}[framed,show background top]
- \draw (0,0) ellipse (10mm and 5mm);
-\end{tikzpicture}
-\end{codeexample}
- \end{itemize}
- \itemstyle{show background bottom}
- works like the style for the top line.
- \itemstyle{show background left}
- works like the style for the top line.
- \itemstyle{show background right}
- works like the style for the top line.
-\end{itemize}
-
-
-\subsection{Automata Drawing Library}
-
-\begin{package}{pgflibraryautomata}
- This packages, which is still under construction, provides shapes
- and styles for drawing automata.
-\end{package}
-
-
-\begin{shape}{state}
- This shape is currently just an alias for the |circle|
- shape. However, it is useful to have another shape |state| since one
- can then say, for example, the the style |every state shape| should
- be set to some special value.
-\end{shape}
-
-\begin{shape}{state with output}
- This shape is a multi-part shape. The main part (the text part) is
- the name of the state as in the |state| shape. The second part is
- called |output|. This node part is drawn in the lower part of the
- node, separated from the upper part by a line.
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \node [state with output,draw,double,fill=red!20]
- {
- $q_1$
- \nodepart{output}
- $00$
- };
-\end{tikzpicture}
-\end{codeexample}
-
- The shape inherits all anchors from the |circle| shape and defines
- the |output| anchor in addition. See also the
- following figure:
-\begin{codeexample}[]
-\Huge
-\begin{tikzpicture}
- \node[name=s,shape=state with output,style=shape example] {state name\nodepart{output}output};
- \foreach \anchor/\placement in
- {north west/above left, north/above, north east/above right,
- west/left, center/below, east/right,
- mid west/right, mid/above, mid east/left,
- base west/left, base/below, base east/right,
- south west/below left, south/below, south east/below right,
- text/left, output/left, 130/above}
- \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
- node[\placement] {\scriptsize\texttt{(s.\anchor)}};
-\end{tikzpicture}
-\end{codeexample}
-\end{shape}
-
-
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "pgfmanual-pdftex-version"
-%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-3d.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-3d.tex
new file mode 100644
index 00000000000..d1b8b0e0c63
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-3d.tex
@@ -0,0 +1,81 @@
+% 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.
+
+
+\section{Three Dimensional Drawing Library}
+
+\begin{tikzlibrary}{3d}
+ This packages, which is still under construction, provides some
+ styles and options for drawing three dimensional shapes.
+
+ \textbf{This package is not officially released and commands may
+ change or disappear without backward compatibility support.}
+\end{tikzlibrary}
+
+This package is not yet documented. Here is, at least, an example of
+where this whole thing is supposed to head.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[z={(10:10mm)},x={(-45:5mm)}]
+ \def\wave{
+ \draw[fill,thick,fill opacity=.2]
+ (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0)
+ sin (5,1) cos (6,0) sin (7,-1) cos (8,0)
+ sin (9,1) cos (10,0)sin (11,-1)cos (12,0);
+ \foreach \shift in {0,4,8}
+ {
+ \begin{scope}[xshift=\shift cm,thin]
+ \draw (.5,0) -- (0.5,0 |- 45:1cm);
+ \draw (1,0) -- (1,1);
+ \draw (1.5,0) -- (1.5,0 |- 45:1cm);
+ \draw (2.5,0) -- (2.5,0 |- -45:1cm);
+ \draw (3,0) -- (3,-1);
+ \draw (3.5,0) -- (3.5,0 |- -45:1cm);
+ \end{scope}
+ }
+ }
+ \begin{scope}[canvas is zy plane at x=0,fill=blue]
+ \wave
+ \node at (6,-1.5) [transform shape] {magnetic field};
+ \end{scope}
+ \begin{scope}[canvas is zx plane at y=0,fill=red]
+ \draw[help lines] (0,-2) grid (12,2);
+ \wave
+ \node at (6,1.5) [rotate=180,xscale=-1,transform shape] {electric field};
+ \end{scope}
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \begin{scope}[canvas is zy plane at x=0]
+ \draw (0,0) circle (1cm);
+ \draw (-1,0) -- (1,0) (0,-1) -- (0,1);
+ \end{scope}
+
+ \begin{scope}[canvas is zx plane at y=0]
+ \draw (0,0) circle (1cm);
+ \draw (-1,0) -- (1,0) (0,-1) -- (0,1);
+ \end{scope}
+
+ \begin{scope}[canvas is xy plane at z=0]
+ \draw (0,0) circle (1cm);
+ \draw (-1,0) -- (1,0) (0,-1) -- (0,1);
+ \end{scope}
+\end{tikzpicture}
+\end{codeexample}
+
+
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-arrows.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-arrows.tex
new file mode 100644
index 00000000000..8e8f4649ce3
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-arrows.tex
@@ -0,0 +1,115 @@
+% 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.
+
+
+\section{Arrow Tip Library}
+\label{section-library-arrows}
+
+\begin{pgflibrary}{arrows}
+ The package defines additional arrow tips, which are described
+ below. See page~\pageref{standard-arrows} for the arrows tips that
+ are defined by default. Note that neither the standard packages nor
+ this package defines an arrow name containing |>| or |<|. These are
+ left for the user to defined as he or she sees fit.
+\end{pgflibrary}
+
+\subsection{Triangular Arrow Tips}
+
+\begin{tabular}{ll}
+ \symarrow{latex'} \\
+ \symarrow{latex' reversed} \\
+ \symarrow{stealth'} \\
+ \symarrow{stealth' reversed}\\
+ \symarrow{triangle 90} \\
+ \symarrow{triangle 90 reversed} \\
+ \symarrow{triangle 60} \\
+ \symarrow{triangle 60 reversed} \\
+ \symarrow{triangle 45} \\
+ \symarrow{triangle 45 reversed} \\
+ \symarrow{open triangle 90} \\
+ \symarrow{open triangle 90 reversed} \\
+ \symarrow{open triangle 60} \\
+ \symarrow{open triangle 60 reversed} \\
+ \symarrow{open triangle 45} \\
+ \symarrow{open triangle 45 reversed} \\
+\end{tabular}
+
+\subsection{Barbed Arrow Tips}
+
+\begin{tabular}{ll}
+ \symarrow{angle 90} \\
+ \symarrow{angle 90 reversed} \\
+ \symarrow{angle 60} \\
+ \symarrow{angle 60 reversed} \\
+ \symarrow{angle 45} \\
+ \symarrow{angle 45 reversed} \\
+ \symarrow{hooks} \\
+ \symarrow{hooks reversed} \\
+\end{tabular}
+
+
+\subsection{Bracket-Like Arrow Tips}
+
+\begin{tabular}{ll}
+ \sarrow{[}{]} \\
+ \sarrow{]}{[} \\
+ \sarrow{(}{)} \\
+ \sarrow{)}{(}
+\end{tabular}
+
+\subsection{Circle and Diamond Arrow Tips}
+
+
+\begin{tabular}{ll}
+ \symarrow{o} \\
+ \symarrow{*} \\
+ \symarrow{diamond} \\
+ \symarrow{open diamond} \\
+\end{tabular}
+
+
+
+\subsection{Serif-Like Arrow Tips}
+
+\begin{tabular}{ll}
+ \symarrow{serif cm}
+\end{tabular}
+
+
+\subsection{Partial Arrow Tips}
+
+\begin{tabular}{ll}
+ \symarrow{left to} \\
+ \symarrow{left to reversed} \\
+ \symarrow{right to} \\
+ \symarrow{right to reversed} \\
+ \symarrow{left hook} \\
+ \symarrow{left hook reversed} \\
+ \symarrow{right hook} \\
+ \symarrow{right hook reversed}
+\end{tabular}
+
+
+
+\subsection{Line Caps}
+
+\begin{tabular}{ll}
+ \carrow{round cap} \\
+ \carrow{butt cap} \\
+ \carrow{triangle 90 cap} \\
+ \carrow{triangle 90 cap reversed} \\
+ \carrow{fast cap} \\
+ \carrow{fast cap reversed} \\
+\end{tabular}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-automata.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-automata.tex
new file mode 100644
index 00000000000..4f587a8bbab
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-automata.tex
@@ -0,0 +1,289 @@
+% 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.
+
+
+\section{Automata Drawing Library}
+
+\begin{tikzlibrary}{automata}
+ This packages provides shapes and styles for drawing finite state
+ automata and Turing machines.
+\end{tikzlibrary}
+
+
+\subsection{Drawing Automata}
+
+The automata drawing library is intended to make it easy to draw
+finite automata and Turing machines. It does not cover every
+situation imaginable, but most finite automata and Turing machines
+found in text books can be drawn in a nice and convenient fashion
+using this library.
+
+To draw an automaton, proceed as follows:
+\begin{enumerate}
+\item For each state of the automaton, there should be one node with
+ the option |state|.
+\item To place the states, you can either use absolute positions or
+ relative positions, using options like |above of| or |right of|.
+\item Give a unique name to each state node.
+\item Accepting and initial states are indicated by adding the
+ options |accepting| and |initial|, respectively, to the state
+ nodes.
+\item Once the states are fixed, the edges can be added. For this, the
+ |edge| operation is most useful. It is, however, also possible to
+ add edges after each node has been placed.
+\item For loops, use the |edge [loop]| operation.
+\end{enumerate}
+
+Let us now see how this works for a real example. Let us consider a
+nondeterminsitic four state automaton that checks whether an contains
+the sequence $0^*1$ or the sequence $1^*0$.
+\begin{codeexample}[]
+\begin{tikzpicture}[shorten >=1pt,node distance=2cm,auto]
+ \draw[help lines] (0,0) grid (3,2);
+
+ \node[state,initial] (q_0) {$q_0$};
+ \node[state] (q_1) [above right of=q_0] {$q_1$};
+ \node[state] (q_2) [below right of=q_0] {$q_2$};
+ \node[state,accepting](q_3) [below right of=q_1] {$q_3$};
+
+ \path[->] (q_0) edge node {0} (q_1)
+ edge node [swap] {1} (q_2)
+ (q_1) edge node {1} (q_3)
+ edge [loop above] node {0} ()
+ (q_2) edge node [swap] {0} (q_3)
+ edge [loop below] node {1} ();
+\end{tikzpicture}
+\end{codeexample}
+
+
+\subsection{States With and Without Output}
+
+The |state| style actually just ``selects'' a default underlying
+style. Thus, you can define multiple new complicated state style and
+then simply set the |state| style to your given style to get the
+desired kind of styles.
+
+By default, the following state styles are defined:
+\begin{itemize}
+ \itemstyle{state without output}
+ This node style causes nodes to be drawn circles. Also, this style
+ calls |every state|.
+ \itemstyle{state with output}
+ This node style causes nodes to be drawn as split circles, that is,
+ using the |circle split| shape. In the upper part of the shape you
+ have the name of the style, in the lower part the output is
+ placed. To specify the output, use the command |\nodepart{lower}|
+ inside the node. This style also calls |every state|.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+
+ \node[state without output] {$q_0$};
+
+ \node[state with output] at (2,0) {$q_1$ \nodepart{lower} $00$};
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemstyle{state}
+ This style is set to |state without output| by default. You should
+ redefine it to something else, if you wish to use states of a
+ different nature.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{state}=[state with output]
+ \node[state] {$q_0$ \nodepart{lower} $11$};
+ \node[state] at (2,0) {$q_1$ \nodepart{lower} $00$};
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemstyle{every state}
+ This style is used by |state with output| and also by
+ |state without output|. By default, it does nothing, but you can use
+ it to make your state look more fancy:
+\begin{codeexample}[]
+\begin{tikzpicture}[shorten >=1pt,node distance=2cm,>=stealth']
+ \tikzstyle{every state}=[draw=blue!50,very thick,fill=blue!20]
+
+ \node[state,initial] (q_0) {$q_0$};
+ \node[state] (q_1) [above right of=q_0] {$q_1$};
+ \node[state] (q_2) [below right of=q_0] {$q_2$};
+
+ \path[->] (q_0) edge node [above left] {0} (q_1)
+ edge node [below left] {1} (q_2)
+ (q_1) edge [loop above] node {0} ()
+ (q_2) edge [loop below] node {1} ();
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+\subsection{Initial and Accepting States}
+
+The styles |initial| and |accepting| are similar to the |state| style
+as they also just select an ``underlying'' style, which installs the
+actual settings for initial and accepting states.
+
+For initial states, there is only one predefined way of drawing them,
+so the two-stage mechanism is not really necessary, but, perhaps,
+I will find another way of drawing them in the literature some time.
+
+Let us start with the initial states.
+\begin{itemize}
+ \itemstyle{initial}
+ This style simply selects |initial by arrow|.
+ \itemstyle{initial by arrow}
+ This style causes an arrow and, possibly, some text to be added to
+ the node. The arrow points from the text to the node. The node text
+ and the direction and the distance can be set using the following
+ options:
+ \begin{itemize}
+ \itemoption{initial text}|=|\meta{text} sets the text to be
+ used. Use an empty text to suppress all text. The default is
+ |start|.
+ \itemoption{initial where}|=|\meta{direction} set the place where
+ the text should be shown. Allowed values are |above|, |below|,
+ |left|, and |right|.
+ \itemoption{intial distance}|=|\meta{distance} is the length of the
+ arrow leading from the text to the state node.
+ \end{itemize}
+ \itemstyle{every initial by arrow}
+ This style is executed at the beginning of every path that contains
+ the arrow and the text. You can use it to, say, make the text red or
+ whatever.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every initial by arrow}=[text=red,->>]
+ \node[state,initial,initial distance=2cm] {$q_0$};
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{initial above} is a shorthand for
+ |initial by arrow,initial where=above|
+ \itemstyle{initial below} works similarly to the previous option.
+ \itemstyle{initial left} works similarly to the previous option.
+ \itemstyle{initial right} works similarly to the previous option.
+\end{itemize}
+
+For the accepting states, the sitation is similar: There is also an
+|accepting| style that selects the way accepting states are
+rendered. However, there are now two options: First,
+|accepting by arrow|, which works the same way as |initial by arrow|,
+only with the direction of arrow reversed, and |accepting by double|,
+where accepting states get a double line around them.
+
+\begin{itemize}
+ \itemstyle{accepting}
+ This style selects |accepting by double| by default. You can replace
+ this by the style |accepting by arrow| to get accepting states with
+ an arrow leaving them.
+ \itemstyle{accepting by double}
+ Specifies that the node should get a double line around it.
+ \itemstyle{accepting by arrow}
+ This style causes an arrow and, possibly, some text to be added to
+ the node. The arrow points to the text from the node.
+ \begin{itemize}
+ \itemoption{accepting text}|=|\meta{text} sets the text to be
+ used. Use an empty text to suppress all text. This is the default.
+ \itemoption{accepting where}|=|\meta{direction} set the place where
+ the text should be shown. Allowed values are |above|, |below|,
+ |left|, and |right|.
+ \itemoption{intial distance}|=|\meta{distance} is the length of the
+ arrow.
+ \end{itemize}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ [shorten >=1pt,node distance=2cm,>=stealth',initial text=]
+
+ \tikzstyle{every state}=[draw=blue!50,very thick,fill=blue!20]
+ \tikzstyle{accepting}=[accepting by arrow]
+
+ \node[state,initial] (q_0) {$q_0$};
+ \node[state] (q_1) [above right of=q_0] {$q_1$};
+ \node[state] (q_2) [below right of=q_0] {$q_2$};
+ \node[state,accepting](q_3) [below right of=q_1] {$q_3$};
+
+ \path[->] (q_0) edge node [above left] {0} (q_1)
+ edge node [below left] {1} (q_2)
+ (q_1) edge node [above right] {1} (q_3)
+ edge [loop above] node {0} ()
+ (q_2) edge node [below right] {0} (q_3)
+ edge [loop below] node {1} ();
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{every accepting by arrow}
+ This style is executed at the beginning of every path that contains
+ the arrow and the text.
+ \itemstyle{accepting above} is a shorthand for
+ |accepting by arrow,accepting where=above|
+ \itemstyle{accepting below} works similarly to the previous option.
+ \itemstyle{accepting left} works similarly to the previous option.
+ \itemstyle{accepting right} works similarly to the previous option.
+\end{itemize}
+
+
+
+\subsection{Examples}
+
+In the following example, we once more typeset the automaton presented
+in the previous sections. This time, we use the following rule for
+accepting/initial state: Initial states are red, accepting states are
+green, and normal states are orange. Then, we must find a path from a
+red state to a green state.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[shorten >=1pt,node distance=2cm,>=stealth',thick]
+ \tikzstyle{every state}=[fill,draw=none,orange,text=white]
+ \tikzstyle{accepting}=[green!50!black,text=white]
+ \tikzstyle{initial}= [red,text=white]
+
+ \node[state,initial] (q_0) {$q_0$};
+ \node[state] (q_1) [above right of=q_0] {$q_1$};
+ \node[state] (q_2) [below right of=q_0] {$q_2$};
+ \node[state,accepting](q_3) [below right of=q_1] {$q_3$};
+
+ \path[->] (q_0) edge node [above left] {0} (q_1)
+ edge node [below left] {1} (q_2)
+ (q_1) edge node [above right] {1} (q_3)
+ edge [loop above] node {0} ()
+ (q_2) edge node [below right] {0} (q_3)
+ edge [loop below] node {1} ();
+\end{tikzpicture}
+\end{codeexample}
+
+The next example is the current candidate for the five-state busiest
+beaver:
+
+\begin{codeexample}[]
+\begin{tikzpicture}[->,>=stealth',shorten >=1pt,%
+ auto,node distance=2cm,semithick,
+ inner sep=2pt,bend angle=45]
+ \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$};
+
+ \tikzstyle{every node}=[font=\footnotesize]
+
+ \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}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-backgrounds.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-backgrounds.tex
new file mode 100644
index 00000000000..30440107846
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-backgrounds.tex
@@ -0,0 +1,187 @@
+% 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.
+
+
+
+\section{Background Library}
+
+\label{section-tikz-backgrounds}
+
+\begin{tikzlibrary}{backgrounds}
+ This library defines ``backgrounds'' for pictures. This does not
+ refer to background pictures, but rather to frames drawn around and
+ behind pictures. For example, this package allows you to just add
+ the |framed| option to a picture to get a rectangular box around
+ your picture or |gridded| to put a grid behind your picture.
+\end{tikzlibrary}
+
+When this package is loaded, the following styles become available:
+\begin{itemize}
+ \itemstyle{show background rectangle}
+ This style causes a rectangle to be drawn behind your graphic. This
+ style option must be given to the |{tikzpicture}| environment or to
+ the |\tikz| command.
+\begin{codeexample}[]
+\begin{tikzpicture}[show background rectangle]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ The size of the background rectangle is determined as follows:
+ We start with the bounding box of the picture. Then, a certain
+ separator distance is added on the sides. This distance can be
+ different for the $x$- and $y$-directions and can be set using the
+ following options:
+ \begin{itemize}
+ \itemoption{inner frame xsep}|=|\meta{dimension}
+ Sets the additional horizontal separator distance for the
+ background rectangle. The default is |1ex|.
+ \itemoption{inner frame ysep}|=|\meta{dimension}
+ Same for the vertical separator distance.
+ \itemoption{inner frame sep}|=|\meta{dimension}
+ sets the horizontal and vertical separator distances
+ simultaneously.
+ \end{itemize}
+ The following two styles make setting the inner separator a bit
+ easier to remember:
+ \begin{itemize}
+ \itemstyle{tight background} Sets the inner frame separator to
+ 0pt. The background rectangle will have the size of the bounding
+ box.
+ \itemstyle{loose background} Sets the inner frame separator to 2ex.
+ \end{itemize}
+
+ You can influence how the background rectangle is rendered by setting
+ the following style:
+ \begin{itemize}
+ \itemstyle{background rectangle}
+ This style dictates how the background rectangle is drawn or
+ filled. By default this style is set to |draw|, which causes the
+ path of the background rectangle to be drawn in the usual
+ way. Setting this style to, say, |fill=blue!20| causes a light
+ blue background to be added to the picture. You can also use more
+ fancy settings as shown in the following example:
+\begin{codeexample}[]
+\tikzstyle{background rectangle}=
+ [double,ultra thick,draw=red,top color=blue,rounded corners]
+\begin{tikzpicture}[show background rectangle]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ Naturally, no one in their right mind would use the above, but
+ here is a nice background:
+\begin{codeexample}[]
+\tikzstyle{background rectangle}=
+ [draw=blue!50,fill=blue!20,rounded corners=1ex]
+\begin{tikzpicture}[show background rectangle]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+ \itemstyle{framed}
+ This is a shorthand for |show background rectangle|.
+ \itemstyle{show background grid}
+ This style behaves similarly to the |show background rectangle|
+ style, but it will not use a rectangle path, but a grid. The lower
+ left and upper right corner of the grid is computed in the same way
+ as for the background rectangle:
+\begin{codeexample}[]
+\begin{tikzpicture}[show background grid]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ You can influence the background grid by setting
+ the following style:
+ \begin{itemize}
+ \itemstyle{background grid}
+ This style dictates how the background grid path is drawn. The
+ default is |draw,help lines|.
+\begin{codeexample}[]
+\tikzstyle{background grid}=[thick,draw=red,step=.5cm]
+\begin{tikzpicture}[show background grid]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ This option can be combined with the |framed| option (use the
+ |framed| option first):
+\begin{codeexample}[]
+\tikzstyle{background grid}=[thick,draw=red,step=.5cm]
+\tikzstyle{background rectangle}=[rounded corners,fill=yellow]
+\begin{tikzpicture}[framed,gridded]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{gridded}
+ This is a shorthand for |show background grid|.
+ \end{itemize}
+ \itemstyle{show background top}
+ This style causes a single line to be drawn at the top of the
+ background rectangle. Normally, the line coincides exactly with the
+ top line of the background rectangle:
+\begin{codeexample}[]
+\tikzstyle{background rectangle}=[fill=yellow]
+\begin{tikzpicture}[framed,show background top]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ The following option allows you to lengthen (or shorten) the line:
+ \begin{itemize}
+ \itemoption{outer frame xsep}|=|\meta{dimension}
+ The \meta{dimension} is added at the left and right side of the
+ line.
+\begin{codeexample}[]
+\tikzstyle{background rectangle}=[fill=yellow]
+\begin{tikzpicture}
+ [framed,show background top,outer frame xsep=1ex]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{outer frame ysep}|=|\meta{dimension}
+ This option does not apply to the top line, but to the left and
+ right lines, see below.
+ \itemoption{outer frame sep}|=|\meta{dimension}
+ Sets both the $x$- and $y$-separation.
+\begin{codeexample}[]
+\tikzstyle{background rectangle}=[fill=blue!20]
+\begin{tikzpicture}
+ [outer frame sep=1ex,%
+ show background top,%
+ show background bottom,%
+ show background left,%
+ show background right]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ \end{itemize}
+ You can influence how the line is drawn grid by setting
+ the following style:
+ \begin{itemize}
+ \itemstyle{background top}
+ Default is |draw|.
+\begin{codeexample}[]
+\tikzstyle{background rectangle}=[fill=blue!20]
+\tikzstyle{background top}=[draw=blue!50,line width=1ex]
+\begin{tikzpicture}[framed,show background top]
+ \draw (0,0) ellipse (10mm and 5mm);
+\end{tikzpicture}
+\end{codeexample}
+ \end{itemize}
+ \itemstyle{show background bottom}
+ works like the style for the top line.
+ \itemstyle{show background left}
+ works like the style for the top line.
+ \itemstyle{show background right}
+ works like the style for the top line.
+\end{itemize}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-edges.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-edges.tex
new file mode 100644
index 00000000000..7b4491774c0
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-edges.tex
@@ -0,0 +1,260 @@
+% 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.
+
+\section{To Path Library}
+
+\label{library-to-paths}
+
+\begin{tikzlibrary}{topaths}
+ This library provides predefined to paths for use with the |to|
+ path operation. After loading this package, you can say for instance
+ |to [loop]| to add a loop to a node.
+
+ This library is loaded automatically by \tikzname, so you do not
+ need to load it yourself.
+\end{tikzlibrary}
+
+
+\subsection{Straight Lines}
+
+The following style installs a to path that is simply a straight line
+from the start coordinate to the target coordinate.
+
+\begin{itemize}
+ \itemstyle{line to}
+ causes a straight line to be added to the path upon a |to| or an
+ |edge| operation.
+\begin{codeexample}[]
+\tikz {\draw (0,0) to[line to] (1,0);}
+\end{codeexample}
+\end{itemize}
+
+
+\subsection{Curves}
+
+The |curve to| style causes the to path to be set to a curve. The
+exact way this curve looks can be influenced via a number of options.
+
+\begin{itemize}
+ \itemstyle{curve to}
+ Specifies that the |to path| should be a curve. This curve will
+ leave the start coordinate at a certain angle, which can be
+ specified using the |out| option. It reaches the target coordinate
+ also at a certain angle, which is specified using the |in|
+ option. The control points of the curve are at a certain distance
+ that is computed in different ways, depending on which options are
+ set.
+
+ All of the following options implictly cause the |curve to| style to
+ be installed.
+ \itemoption{out}|=|\meta{angle}
+ The angle at which the curve leaves the start coordinate. If the
+ start coordinate is a node, the start coordinate is the point on the
+ border of the node at the given \meta{angle}. The control point
+ will, thus, lie at a certain distance in the direction \meta{angle}
+ from the start coordinate.
+\begin{codeexample}[]
+\begin{tikzpicture}[out=45,in=135]
+ \draw (0,0) to (1,0)
+ (0,0) to (2,0)
+ (0,0) to (3,0);
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{in}|=|\meta{angle}
+ The angle at which the curve reaches the target coordinate.
+
+ \itemoption{relative}\opt{|=|\meta{true or false}}
+ This option tells \tikzname\ whether the |in| and |out| angles
+ should be considered absolute or relative. Absolute means that an
+ |out| angle of 30$^\circ$ means that the curve leaves the start
+ coordinate at an angle of 30$^\circ$ relative to the paper (unless,
+ of course, further transformations have been installed). A
+ \emph{relative} angle is, by comparison, measured relative to a
+ straight line from the start coordinate to the target
+ coordinate. Thus, a relative angle of 30$^\circ$ means that the
+ curve will bend to the left from the line going straight from the
+ start to the target. For the target, the relative coordinate is
+ measured in the same manner, namely relative to the line going from
+ the start to the target. Thus, an angle of 150$^\circ$ means that
+ the curve will reach target coming slightly from the left.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[out=45,in=135,relative]
+ \draw (0,0) to (1,0)
+ to (2,1)
+ to (2,2);
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{codeexample}[]
+\begin{tikzpicture}[out=90,in=90,relative]
+ \node [circle,draw] (a) at (0,0) {a};
+ \node [circle,draw] (b) at (1,1) {b};
+ \node [circle,draw] (c) at (2,2) {c};
+
+ \path (a) edge (b)
+ edge (c);
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemoption{bend left}\opt{|=|\meta{angle}}
+ This option sets |out=|\meta{angle}|,in=|$180-\meta{angle}$|,relative|. If no
+ \meta{angle} is given, the last given |bend left| or |bend right|
+ angle is used.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[shorten >=1pt,node distance=2cm]
+ \node[state,initial] (q_0) {$q_0$};
+ \node[state] (q_1) [right of=q_0] {$q_1$};
+ \node[state,accepting](q_2) [right of=q_1] {$q_2$};
+
+ \path[->] (q_0) edge node [above] {0} (q_1)
+ edge [loop above] node {1} ()
+ edge [bend left] node [above] {1} (q_2)
+ edge [bend right] node [below] {0} (q_2)
+ (q_1) edge node [above] {1} (q_2);
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \foreach \angle in {0,45,...,315}
+ \node[rectangle,draw=black!50] (\angle) at (\angle:2) {\angle};
+
+ \foreach \from/\to in {0/45,45/90,90/135,135/180,
+ 180/225,225/270,270/315,315/0}
+ \path (\from) edge [->,bend right=22,looseness=0.8] (\to)
+ edge [<-,bend left=22,looseness=0.8] (\to);
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemoption{bend right}\opt{|=|\meta{angle}}
+ Works like the |bend left| option, only the bend is to the other side.
+
+ \itemoption{bend angle}|=|\meta{angle}
+ Sets the angle to be used by the |bend left| or |bend right|, but
+ without actually selecting the |curve to| or the |relative|
+ option. This is useful for globally specifying a |bend angle| for a
+ whole picture.
+
+ \itemoption{looseness}|=|\meta{number}
+ This number specifies how ``loose'' the curve will be. In detail,
+ the following happens: \tikzname\ computes the distance between the
+ start and the target coordinate (if the start and/or target
+ coordinate are nodes, the distance is computed between the points on
+ their border). This distance is then multiplied by a fixed factor
+ and also by the factor \meta{number}. The resulting distance, let us
+ call it $d$, is then used as the distance of the control points from
+ the start and target coordinates.
+
+ The fixed factor has been chosen in such a way that if \meta{number}
+ is |1|, which is the default, if the |in| and |out| angles differ by
+ 90$\circ$, then a quarter circle results:
+ \begin{codeexample}[]
+\tikz \draw (0,0) to [out=0,in=-90] (1,1);
+\tikz \draw (0,0) to [out=0,in=-90,looseness=0.5] (1,1);
+ \end{codeexample}
+
+ \itemoption{out looseness}|=|\meta{number}
+ specifies the looseness factor for the out distance only.
+ \itemoption{in looseness}|=|\meta{number}
+ specifies the looseness factor for the in distance only.
+ \itemoption{min distance}|=|\meta{distance}
+ If the computed distance for the start and target coordinates are
+ below \meta{distance}, then \meta{distance} is used instead.
+ \itemoption{max distance}|=|\meta{distance}
+ If the computed distance for the start and target coordinates are
+ above \meta{distance}, then \meta{distance} is used instead.
+ \itemoption{out min distance}|=|\meta{distance}
+ The min distance set only for the start coordinate.
+ \itemoption{out max distance}|=|\meta{distance}
+ The max distance set only for the start coordinate.
+ \itemoption{in min distance}|=|\meta{distance}
+ The min distance set only for the target coordinate.
+ \itemoption{in max distance}|=|\meta{distance}
+ The max distance set only for the target coordinate.
+ \itemoption{distance}|=|\meta{distance}
+ Set the min and max distance to the same value \meta{distance}. Note
+ that this causes any computed distance $d$ to be ignored and
+ \meta{distance} to be used instead.
+\begin{codeexample}[]
+\begin{tikzpicture}[out=45,in=135,distance=1cm]
+ \draw (0,0) to (1,0)
+ (0,0) to (2,0)
+ (0,0) to (3,0);
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{out distance}|=|\meta{distance}
+ sets the min and max out distance.
+ \itemoption{in distance}|=|\meta{distance}
+ sets the min and max in distance.
+ \itemoption{out control}|=|\meta{coordinate}
+ This option causes the \meta{coordinate} to be used as the start
+ control point. All computations of $d$ are ignored. You can use a
+ coordinate like |+(1,0)| to specify a point relative to the start
+ coordinate.
+ \itemoption{in control}|=|\meta{coordinate}
+ This option causes the \meta{coordinate} to be used as the target
+ control point.
+ \itemoption{controls}|=|\meta{coordinate}| and |\meta{coordinate}
+ This option causes the \meta{coordinate}s to be used as control
+ points.
+\begin{codeexample}[]
+\tikz \draw (0,0) to [controls=+(90:1) and +(90:1)] (3,0);
+\end{codeexample}
+\end{itemize}
+
+
+\subsection{Loops}
+
+\begin{itemize}
+ \itemstyle{loop}
+ This style is similar to the |curve to| style, but differs in the
+ following ways: First, the actual target coordinate is ignored and the
+ start coordiante is used as the target coordinate. Thus, it is
+ allowed not to provide any target coordinate, which can be useful
+ with unnamed nodes. Second, the |looseness| is set to |8| and the
+ |min distance| to |5mm|. These settings result in rather nice loops
+ when the opening angle (difference between |in| and |out|) is
+ 30$^\circ$.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node [circle,draw] {a} edge [in=30,out=60,loop] ();
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{loop above}
+ Sets the |loop| style and sets in and out angles such that
+ loop is above the node. Furthermore, the |above| option is set,
+ which causes a node label to be placed at the correct position.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node [circle,draw] {a} edge [loop above] node {x} ();
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{loop below} works like the previous option.
+ \itemstyle{loop left} works like the previous option.
+ \itemstyle{loop right} works like the previous option.
+ \itemstyle{every loop} This style is installed at the beginning of
+ every loop. By default, it is set to |->,shorten >=1pt|, but feel
+ free to change this.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every loop}=[]
+ \draw (0,0) to [loop above] () to [loop right] ()
+ to [loop below] () to [loop left] ();
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-er.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-er.tex
new file mode 100644
index 00000000000..174bfd98d13
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-er.tex
@@ -0,0 +1,142 @@
+% 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.
+
+
+\section{Entity-Relationship Diagram Drawing Library}
+
+\begin{tikzlibrary}{er}
+ This packages provides styles for drawing entity-relationship
+ diagrams.
+\end{tikzlibrary}
+
+This library is intended to help you in creating E/R-diagrams. It defines
+only very little new styles, but using these style |entity| instead of
+saying |rectangle,draw| makes the code more expressive.
+
+
+\subsection{Entities}
+
+The package defines a simple style for drawing entities:
+
+\begin{itemize}
+ \itemstyle{entity}
+ This style is to be used with nodes that represent entity types. It
+ causes the node's shape to be set to a rectangle that is drawn and
+ whose minimum size and width are set to sensible values.
+
+ Note that this style is called |entity| despite the fact that it is
+ to be used for nodes representing entity \emph{types} (the
+ difference between an entity and an entity type is the same as the
+ difference between an object and a class in object-oriented
+ programming). If this bothers you, feel free to define a style
+ |entity type| instead.
+\begin{codeexample}[]
+\begin{tikzpicture}[node distance=2cm]
+ \node[entity] (sheep) {Sheep};
+ \node[entity] (genome) [right of=sheep] {Genome};
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemstyle{every entity}
+ This stype is envoked by the style |entity|. To change the
+ appearance of entities, you can change this style.
+\begin{codeexample}[]
+\begin{tikzpicture}[node distance=2cm]
+ \tikzstyle{every entity}=[draw=blue!50,fill=blue!20,thick]
+ \node[entity] (sheep) {Sheep};
+ \node[entity] (genome) [right of=sheep] {Genome};
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+
+\subsection{Relationships}
+
+Relationships are drawn using styles that are very similar to the
+styles for entities.
+
+\begin{itemize}
+ \itemstyle{relationship}
+ This style works like |entity|, only it is to be used for
+ relationships. Again, |relationship|s are actually relationship types.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[entity] (sheep) at (0,0) {Sheep};
+ \node[entity] (genome) at (2,0) {Genome};
+ \node[relationship] at (1,1.5) {has}
+ edge (sheep)
+ edge (genome);
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{every relationship}
+ works like |every entity|
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every entity}=[fill=blue!20,draw=blue,thick]
+ \tikzstyle{every relationship}=[fill=orange!20,draw=orange,thick,aspect=1.5]
+ \node[entity] (sheep) at (0,0) {Sheep};
+ \node[entity] (genome) at (2,0) {Genome};
+ \node[relationship] at (1,1.5) {has}
+ edge (sheep)
+ edge (genome);
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+
+\subsection{Attributes}
+
+\begin{itemize}
+ \itemstyle{attribuate}
+ This style is used to indicate that a node is an attribute. To
+ connect an attribute to its entity, you can use, for example, the
+ |child| command or the |pin| option.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[entity] (sheep) {Sheep}
+ child {node[attribute] {name}}
+ child {node[attribute] {color}};
+\end{tikzpicture}
+\end{codeexample}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every pin edge}=[draw]
+ \node[entity,pin={[attribute]60:name},pin={[attribute]120:color}] {Sheep};
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{key attribute}
+ This style is intended for key attributes. By default, the will
+ cause the attribute to be typeset in italics. Typcially, underlining
+ is used instead, but that looks ugly and it is difficult to
+ implement in \TeX.
+ \itemstyle{every attribute}
+ This style is used with every (key) attribute.
+\begin{codeexample}[]
+\begin{tikzpicture}[text depth=1pt]
+ \tikzstyle{every attribute}=[fill=black!20,draw=black]
+ \tikzstyle{every entity}=[fill=blue!20,draw=blue,thick]
+ \tikzstyle{every relationship}=[fill=orange!20,draw=orange,thick,aspect=1.5]
+ \node[entity] (sheep) at (0,0) {Sheep}
+ child {node [key attribute] {name}};
+ \node[entity] (genome) at (2,0) {Genome};
+ \node[relationship] at (1,1.5) {has}
+ edge (sheep)
+ edge (genome);
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-mindmaps.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-mindmaps.tex
new file mode 100644
index 00000000000..102fd8b41e5
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-mindmaps.tex
@@ -0,0 +1,489 @@
+% 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.
+
+\section{Mindmap Drawing Library}
+
+\begin{tikzlibrary}{mindmap}
+ This packages provides styles for drawing mindmap diagrams.
+\end{tikzlibrary}
+
+\subsection{Overview}
+
+This library is intended to make the creation of mindmaps easier. A
+\emph{mindmap} is a graphical representation of a concept together
+with related concepts and annotations. Mindmaps are, essentially,
+trees, possibly with a few extra edges added, but they are usually
+drawn in a special way: The root concept is placed in the middle of
+the page and is drawn as a huge circle, ellipse, or cloud. The related
+concepts then ``leave'' this root concept in branch-like tendrils.
+
+The mindmap library of \tikzname\ produces mindmaps that look a bit
+different from the standard mindmaps: While the big root concept is
+still a circle, related concepts are also depicted as (smaller)
+circles. The related concepts are linked to the root concept via
+organic-looking connections. The overall effect is visually rather
+pleasing, but readers may not immediately think of a mindmap when they
+see a picture created with this library.
+
+Although it is not strictly necessary, you will usually create
+mindmaps using \tikzname's tree mechanism and some of the styles and
+macros of the package work best when used inside trees. However, it is
+still possible and sometimes necessary to treat parts of a mindmap as
+a graph with arbitrary edges and this is also possible.
+
+
+\subsection{The Mindmap Style}
+
+Every mindmap should be put in a scope or a picture where the
+|mindmap| style is used. This style installs some internal settings.
+
+\begin{itemize}
+ \itemstyle{mindmap}
+ Use this style with all pictures or at least scopes that contain a
+ mindmap. It installs a whole bunch of settings that are useful for
+ drawing mindmaps.
+\begin{codeexample}[]
+\tikz[mindmap,concept color=red!50]
+ \node [concept] {Root concept}
+ child[grow=right] {node[concept] {Child concept}};
+\end{codeexample}
+ The sizes of concepts are predefined in such a way that a
+ medium-size mindmap will fit on an A4 page (more or less).
+ \itemstyle{every mindmap}
+ This style is included by the |mindmap| style. Change this style to
+ add special settings to your mindmaps.
+\begin{codeexample}[]
+\tikz[large mindmap,concept color=red!50]
+ \node [concept] {Root concept}
+ child[grow=right] {node[concept] {Child concept}};
+\end{codeexample}
+ \itemstyle{large mindmap}
+ This style includes the |mindmap| style, but additionally changes
+ the default size of concepts and of distances so that a medium-sized
+ mindmap will fit on an A3 page (A3 pages are twice as large as A4
+ pages).
+ \itemstyle{huge mindmap}
+ This style causes conepts to be even bigger and it is best used with
+ A2 paper and above.
+\end{itemize}
+
+\subsection{Concepts Nodes}
+
+The basic entities of mindmaps are called \emph{concepts} in
+\tikzname. A concept is a node of style |concept| and it must be
+circular for some of the connection macros to work.
+
+
+\subsubsection{Isolated Concepts}
+
+The following styles influence how isolated concepts are rendered:
+
+\begin{itemize}
+ \itemstyle{concept}
+ This style should be used with all nodes that are concepts, although
+ some styles like |extra concept| install this style automatically.
+
+ Bascially, this style makes the concept node circular and installs a
+ uniform color called |concept color|, see below. Additionally, the
+ style |every concept| is called.
+\begin{codeexample}[]
+\tikz[mindmap,concept color=red!50] \node [concept] {Some concept};
+\end{codeexample}
+ \itemstyle{every concept}
+ In order to change the appearance of concept nodes, you should
+ change this style. Note, however, that the color of a concept should
+ be uniform for some of the connection bar stuff to work, so you
+ should not change the color or the draw/fill state of concepts using
+ this option. It is mostly useful for changing the text color and
+ font.
+ \itemoption{concept color}|=|\meta{color}
+ This option tells \tikzname\ which color should be used for filling
+ and stroking concepts. The difference between this option and just
+ setting |every concept| to the desired color is that this option
+ allows \tikzname\ to keep track of the colors used for
+ concepts. This is important when you \emph{change} the color between
+ two connected concepts. In this case, \tikzname\ can automatically
+ create a shading that provides a smooth transition between the old
+ and the new concept color; we will come back to this in the next
+ section.
+ \itemstyle{extra concept}
+ This style is intended for concepts that are not part of the
+ ``mindmap tree,'' but stand beside it. Typically, they will have a
+ subdued color are be smaller. In order to have these concepts appear
+ in a uniform way and in order to indicate in the code that these
+ concepts are extra, you can use this style.
+\begin{codeexample}[]
+\begin{tikzpicture}[mindmap,concept color=blue!80]
+ \node [concept] {Root concept};
+ \node [extra concept] at (10,0) {extra concept};
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{every extra concept}
+ Change this style to change the appearance of extra concepts.
+\end{itemize}
+
+
+\subsubsection{Concepts in Trees}
+
+As pointed out earlier, \tikzname\ assumes that your mindmap is build
+using the |child| facilities of \tikzname. There are numerous options
+that influence how concepts are rendered at the different levels of a
+tree.
+
+\begin{itemize}
+ \itemstyle{root concept}
+ This style is used for the roots of mindmap trees. More precisely,
+ this style is included by the |mindmap| style. Thus, by adding
+ something to this, you can change how the root of a mindmap will be
+ rendered.
+\begin{codeexample}[]
+\tikzstyle{root concept}+=[concept color=blue!80,minimum size=3.5cm]
+\tikz[mindmap] \node [concept] {Root concept};
+\end{codeexample}
+
+ Note that styles like |large mindmap| redefine these styles, so you
+ should add something to this style only inside the picture.
+ \itemstyle{level 1 concept}
+ The |mindmap| style adds this style to the |level 1| style. This
+ means that the first level children of a mindmap tree will use this
+ style.
+\begin{codeexample}[]
+\tikzstyle{root concept}+=[concept color=blue!80]
+\tikzstyle{level 1 concept}+=[concept color=red!50]
+\tikz[mindmap]
+ \node [concept] {Root concept}
+ child[grow=30] {node[concept] {child}}
+ child[grow=0 ] {node[concept] {child}};
+\end{codeexample}
+ \itemstyle{level 2 concept}
+ works like |level 1 concept|, only for second level children.
+ \itemstyle{level 3 concept}
+ works like |level 1 concept|.
+ \itemstyle{level 4 concept}
+ works like |level 1 concept|. Note that there are not fifth and
+ higher level styles, you need to modify |level 5| directly in such
+ cases.
+
+ \itemoption{concept color}|=|\meta{color}
+ We saw already that this option is used to change the color of
+ concepts. We now have a look at its effect when used on child nodes
+ of a concept. Normally, this option simply changes the color of the
+ children. However, when the option is given as an option to the
+ |child| operation (and not to the |node| operation and also not as
+ an option to all children via the |level 1| style), \tikzname\ will
+ smoothly change the concept color from the parent's color to the
+ color of the child concept.
+
+ Here is an example:
+\begin{codeexample}[]
+\tikz[mindmap,concept color=blue!80]
+ \node [concept] {Root concept}
+ child[concept color=red,grow=30] {node[concept] {Child concept}}
+ child[concept color=orange,grow=0] {node[concept] {Child concept}};
+\end{codeexample}
+
+ In order to have all children of a certain level have a different
+ concept color, a tiny bit of magic is needed:
+\begin{codeexample}[]
+\tikzstyle{root concept}+=[concept color=blue]
+\tikzstyle{level 1 concept}+=[set style={{every child}=[concept color=blue!50]}]
+\tikz[mindmap,text=white]
+ \node [concept] {Root concept}
+ child[grow=30] {node[concept] {child}}
+ child[grow=0 ] {node[concept] {child}};
+\end{codeexample}
+\end{itemize}
+
+\subsection{Connecting Concepts}
+
+\subsubsection{Simple Connections}
+
+The easiest way to connect two concepts is to draw a line between
+them. In order to give such lines a consistent appearance, it is
+recommendable to use the following style when drawing such lines:
+
+\begin{itemize}
+ \itemstyle{concept connection}
+ This style can be used for lines between two concepts. Feel free to
+ redefine this style.
+\end{itemize}
+
+A problem arises when you need to connect concepts after the main
+mindmap has been drawn. In this case you will want the connection
+lines to lie \emph{behind} the main mindmap. However, you can draw the
+lines only after the coordinates of the concepts have been
+determined. In this case you should place the connecting lines on a
+background layer as in the following example:
+
+\begin{codeexample}[]
+\tikzstyle{root concept}+=[concept color=blue!20,minimum size=2cm]
+\tikzstyle{level 1 concept}+=[sibling angle=45]
+\begin{tikzpicture}[mindmap]
+ \node [concept] {Root concept}
+ [clockwise from=45]
+ child { node[concept] (c1) {child}}
+ child { node[concept] (c2) {child}}
+ child { node[concept] (c3) {child}};
+ \begin{pgfonlayer}{background}
+ \draw [concept connection] (c1) edge (c2)
+ edge (c3)
+ (c2) edge (c3);
+ \end{pgfonlayer}
+\end{tikzpicture}
+\end{codeexample}
+
+
+\subsubsection{The Circle Connection Bar Snake}
+
+Instead of a simple line between two concepts, you can also add a bar
+between the two nodes that has slightly organic ends. These bars are
+also used by default as the edges from parents in the mindmap tree.
+
+For the drawing of the bars a special snake is used, which is defined
+in the mindmap library:
+
+\begin{snake}{circle connection bar}
+ This snake can be used to connect two circles. The start of the
+ snake should lie on the border of the first circle, the end should
+ lie on the border of the second circle. The following two macros should be
+ initialized with the sizes of the circles:
+ \begin{itemize}
+ \item |\pgfsnakecirclestartradius|
+ \item |\pgfsnakecircleendradius|
+ \end{itemize}
+ Furthermore, the following two macros influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ \item |\pgfsnakesegmentangle|
+ \end{itemize}
+ The snake itself will be a path that starts on the border of the
+ first circle at the specified angle relative to the line connecting
+ the centers of the circles. The path then changes into a rectangle
+ whose thickness is given by the amplitude. Finally, the path ends
+ with the same angles on the second circle.
+
+ Here is an example that should make this clearer:
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \fill[blue!20] (0,0) circle (1cm);
+ \fill[red!20] (2.5,0) circle (.5cm);
+
+ \def\pgfsnakecirclestartradius{1cm}
+ \def\pgfsnakecircleendradius{.5cm}
+ \def\pgfsnakesegmentamplitude{2mm}
+ \def\pgfsnakesegmentangle{30}
+
+ \filldraw [draw=red,fill=black,snake=circle connection bar] (1,0) -- (2,0);
+\end{tikzpicture}
+\end{codeexample}
+
+ As can be seen, the snake consists of three parts and is not really
+ useful for drawing. However, if you fill the snake only and if you
+ use the same color as for the circles, the result is better.
+\begin{codeexample}[]
+\begin{tikzpicture}[blue!50]
+ \fill (0,0) circle (1cm);
+ \fill (2.5,0) circle (.5cm);
+
+ \def\pgfsnakecirclestartradius{1cm}
+ \def\pgfsnakecircleendradius{.5cm}
+ \def\pgfsnakesegmentamplitude{2mm}
+ \def\pgfsnakesegmentangle{30}
+
+ \fill [snake=circle connection bar] (1,0) -- (2,0);
+\end{tikzpicture}
+\end{codeexample}
+
+ In the above example you may notice the small white line between the
+ circles and the snake. This is due to rounding
+ errors. Unfortunately, for larger distances, there errors can
+ accumulate quite strongly, especially since \tikzname\ and \TeX\ are
+ not very good at computing square roots. For this reason, it is a
+ good idea to make the circles slightly larger to cover up such
+ problems. When using nodes of shape |circle|, you can just add the
+ |draw| option with a |line width| or one or two points (for very
+ large distances you may need line width up to 4pt).
+\begin{codeexample}[]
+\begin{tikzpicture}[blue!50]
+ \fill (0,0) circle (1cm+1pt);
+ \fill (2.4,0) circle (.5cm+1pt);
+
+ \def\pgfsnakecirclestartradius{1cm}
+ \def\pgfsnakecircleendradius{.5cm}
+ \def\pgfsnakesegmentamplitude{2mm}
+ \def\pgfsnakesegmentangle{30}
+
+ \fill [snake=circle connection bar] (1,0) -- (1.9,0);
+\end{tikzpicture}
+\end{codeexample}
+
+ Note the slightly strange |outer sep=0pt|. This is needed so that
+ the snakes being on the border of the filled circle, not on the
+ border of the stroked circle (which is slightly larger and this
+ slightly larger size is exactly what we wish to use to cover up the
+ rounding errors).
+\end{snake}
+
+
+
+\subsubsection{The Circle Connection Bar To-Path}
+
+The circle connection bar snake is a bit complicated to
+use. Especially specifying the radii is quite bothersome (the
+amplitude and the angle can be set once and for all). For this reason,
+the mindmap library defines a special to-path, that performs the
+necessary computations for you.
+
+\begin{itemize}
+ \itemstyle{circle connection bar}
+ This style installs a rather involved to-path. Unlike normal
+ to-paths, this path requires that the start and the target of the
+ to-path are named nodes of shape |circle| -- if this is not the case,
+ this path will produce errors.
+
+ Assuming that the start and the target are circles, the to-path will
+ first compute the radii of these circles (by measuring the distance
+ from the |center| anchor to some anchor on the border) and will set
+ the |\pgfsnakecirlce...| macros accordingly. Next, the |fill| option
+ is set to the |concept color| while |draw=none| is set. The snake is
+ set to |circle conncetion bar|. Finally, the following style is
+ included:
+ \begin{itemize}
+ \itemstyle{every circle connection bar}
+ Redefine this sytle to change the appearance of circle connection
+ bar to-paths.
+ \end{itemize}
+\begin{codeexample}[]
+\begin{tikzpicture}[concept color=blue!50,blue!50,outer sep=0pt]
+ \node (n1) at (0,0) [circle,minimum size=2cm,fill,draw,thick] {};
+ \node (n2) at (2.5,0) [circle,minimum size=1cm,fill,draw,thick] {};
+
+ \path (n1) to[circle connection bar] (n2);
+\end{tikzpicture}
+\end{codeexample}
+ Note that it is not a good idea to have more than one |to| operation
+ together this the option |circle connection bar| in a single
+ |\path|. Use the |edge| operation, instead, for creating multiple
+ connections and this operation creates a new scope for each edge.
+\end{itemize}
+
+In a mindmap we sometimes want colors to change from one concept color
+to another. Then, the connection bar should, ideally, consist of a
+smooth transition between these two colors. Getting this right using
+shadings is a bit tricky if you try this ``by hand,'' so the mindmap
+library provides a special option for facilitating this procedure.
+
+\begin{itemize}
+ \itemoption{circle connection bar switch color}|=from (|\meta{first
+ color}|) to (|\meta{second color}|)|
+ This style works similarly to the |circle connection bar|. The only
+ difference is that instead of filling the path with a single color a
+ shading is used.
+\begin{codeexample}[]
+\begin{tikzpicture}[outer sep=0pt]
+ \node (n1) at (0,0) [circle,minimum size=2cm,fill,draw,thick,red] {};
+ \node (n2) at (30:2.5) [circle,minimum size=1cm,fill,draw,thick,blue] {};
+
+ \path (n1) to[circle connection bar switch color=from (red) to (blue)] (n2);
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+\subsubsection{Tree Edges}
+
+Most of the time, concepts in a mindmap are connected automatically
+when the mindmap is build as a tree. The reason is that the |mindmap|
+installs a |circle connection bar| path as the edge from parent
+path. Also, the |mindmap| option takes care of things like setting the
+correct |draw| and |outer sep| settings and some other stuff.
+
+In detail, the |mindmap| option sets the |edge from parent path| to a
+path that uses the to-path |circle connection bar| to connect the parent node
+and the child node. The |concept color| option (locally) changes this
+by using |circle connection bar switch color| instead with the
+from-color set to the old (parent's) concept color and the to-color
+set to the new (child's) concept color. This menas that when you
+provide the |concept color| option to a |child| command, the color
+will change from the parent's concept color to the specified color.
+
+Here is an example of a tree build in this way:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \path[mindmap,concept color=black,text=white]
+ node[concept] {Computer Science}
+ [clockwise from=0]
+ child[concept color=green!50!black] {
+ node[concept] {practical}
+ [clockwise from=90]
+ child { node[concept] {algorithms} }
+ child { node[concept] {data structures} }
+ child { node[concept] {pro\-gramming languages} }
+ child { node[concept] {software engineer\-ing} }
+ }
+ child[concept color=blue] {
+ node[concept] {applied}
+ [clockwise from=-30]
+ child { node[concept] {databases} }
+ child { node[concept] {WWW} }
+ }
+ child[concept color=red] { node[concept] {technical} }
+ child[concept color=orange] { node[concept] {theoretical} };
+\end{tikzpicture}
+\end{codeexample}
+
+
+
+\subsection{Adding Annotations}
+
+An \emph{annotation} is some text outside a mindmap that, unlike an
+extra concept, simply explains something in the mindmap. The following
+style is mainly intended to help readers of the code see that a node
+in an annotation node.
+
+\begin{itemize}
+ \itemstyle{annotation}
+ This style indicates that a node is an annotation node. It includes
+ the style |every annotation|, which allows you to change this style
+ in a convenient fashion.
+\begin{codeexample}[]
+\tikzstyle{every annotation}=[fill=red!20]
+\begin{tikzpicture}[mindmap,concept color=blue!80]
+ \node [concept] (root) {Root concept};
+
+ \node [annotation,right] at (root.east)
+ {The root concept is, in general, the most important concept.};
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{every annotation}
+ This style is included by |annotation|.
+\end{itemize}
+
+
+\subsection{Examples}
+
+The following pictures show examples of more complicated mindmaps that
+have been created using the mindmap library. Note that these mindmaps
+should be printed on A1 paper.
+
+\medskip
+\noindent
+\pgfimage[width=\textwidth]{pgfmanual-mindmap-1}
+
+\medskip
+\noindent
+\pgfimage[width=\textwidth]{pgfmanual-mindmap-2}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-patterns.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-patterns.tex
new file mode 100644
index 00000000000..2f1d4eb16de
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-patterns.tex
@@ -0,0 +1,38 @@
+% 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.
+
+
+\section{Pattern Library}
+\label{section-library-patterns}
+
+\begin{pgflibrary}{patterns}
+ The package defines patterns for filling areas.
+\end{pgflibrary}
+
+\begin{tabular}{ll}
+ \emph{Pattern name} & \emph{Example} \\
+ \patternindex{horizontal lines} \\
+ \patternindex{vertical lines} \\
+ \patternindex{north east lines} \\
+ \patternindex{north west lines} \\
+ \patternindex{grid} \\
+ \patternindex{crosshatch} \\
+ \patternindex{dots} \\
+ \patternindex{crosshatch dots} \\
+ \patternindex{fivepointed stars} \\
+ \patternindex{sixpointed stars} \\
+ \patternindex{bricks}
+\end{tabular}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-petri.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-petri.tex
new file mode 100644
index 00000000000..14f7165a3ff
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-petri.tex
@@ -0,0 +1,264 @@
+% 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.
+
+
+\section{Petri-Net Drawing Library}
+
+\begin{tikzlibrary}{petri}
+ This packages provides shapes and styles for drawing Petri nets.
+\end{tikzlibrary}
+
+
+
+\subsection{Places}
+
+The package defines a style for drawing places of Petri nets.
+
+\begin{itemize}
+ \itemstyle{place}
+ This style indicates that a node is a place of a Petri net. Usually,
+ the text of the node should be empty since places do not contain any
+ text. You should use the |label| option to add text outside the node
+ like its name or its capacity. You should use the |tokens| options,
+ explained in Section~\ref{section-tokens}, to add tokens inside the
+ place.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place,label=above:$p_1$,tokens=2] (p1) {};
+ \node[place,label=below:$p_2\ge1$,right of=p1] (p2) {};
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemstyle{every place}
+ This stype is envoked by the style |place|. To change the
+ appearance of places, you can change this style.
+\begin{codeexample}[]
+\tikzstyle{every place}=[draw=blue,fill=blue!20,thick,minimum size=9mm]
+\begin{tikzpicture}
+ \node[place,tokens=7,label=above:$p_1$] (p1) {};
+ \node[place,structured tokens={3,2,9},
+ label=below:$p_2\ge1$,right of=p1] (p2) {};
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
+
+\subsection{Transitions}
+
+Transitions are also nodes. They should be drawn using the following
+style:
+
+\begin{itemize}
+ \itemstyle{transition}
+ This style indicates that a node is a transition. As for places, the
+ text of a transition should be empty and the |label| option should
+ be used for adding labels.
+
+ To connect a transition to places, you can use the |edge| command as
+ in the following example:
+
+\begin{codeexample}[]
+\begin{tikzpicture}[node distance=2cm]
+ \node[place,tokens=2,label=above:$p_1$] (p1) {};
+ \node[place,label=above:$p_2\ge1$,right of=p1] (p2) {};
+
+ \node[transition,below right of=p1,label=below:$t_1$] {}
+ edge[pre] (p1)
+ edge[post] node[auto] {2} (p2);
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemstyle{every transition}
+ This style is envoked by the style |transition|.
+
+ \itemstyle{pre}
+ This style can be used with paths leading \emph{from} a transition
+ \emph{to} a place to indicate that the place is in the pre-set of
+ the transition. By default, this style is |<-,shorten <=1pt|, but
+ feel free to redefine it.
+
+ \itemstyle{post}
+ This style is also used with paths leading \emph{from} a transition
+ \emph{to} a place, but this time the place is in the post-set of
+ the transition. Again, feel free to redefine it.
+
+ \itemstyle{pre and post}
+ This style is to be used to indicate that a place is both in the
+ pre- and post-set of a transition.
+\end{itemize}
+
+
+\subsection{Tokens}
+\label{section-tokens}
+
+Interestingly, the most complicated aspect of drawing Petri nets in
+\tikzname\ turns out to be the placement of tokens.
+
+Let us start with a single token. They are also nodes and there is a
+simple style for typesetting them.
+
+
+\begin{itemize}
+ \itemstyle{token}
+ This style indicates that a node is a token. By default, this causes
+ the node to be a small black circle. Unlike places and transitions,
+ it \emph{does} make sense to provide text for the token node. Such
+ text will be typeset in a tiny font and in white on black
+ (naturally, you can easily change this by setting the style
+ |every token|).
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place,label=above:$p_1$] (p1) {};
+ \node[token] at (p1) {};
+
+ \node[place,label=above:$p_2$,right of=p1] (p2) {};
+ \node[token] at (p2) {$y$};
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+In the above example, it is bothersome that we need an extra command
+for the token node. Worse, when we have \emph{two} tokens on a node,
+it is difficult to place both nodes inside the node without overlap.
+
+The Petri net library offers a solution to this problem: The
+|children are tokens| style.
+
+
+\begin{itemize}
+ \itemstyle{children are tokens}
+ The idea behind this style is to use trees mechanism for placing
+ tokens. Every token lying on a place is treated as a child of the
+ node. Normally this would have the effect that the tokens are placed
+ below the place and they would be connected to the place by an
+ edge. The |children are tokens| style, however, redefines the growth
+ function of trees such that it places the children next to each
+ other inside (or, rather, on top) of the place node. Additionally,
+ the edge from the parent node is not drawn.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place,label=above:$p_1$] {}
+ [children are tokens]
+ child {node [token] {1}}
+ child {node [token] {2}}
+ child {node [token] {3}};
+\end{tikzpicture}
+\end{codeexample}
+
+ In detail, what happens is the following: Tree growth functions tell
+ \tikzname\ where it should place the children of nodes. These
+ functions get passed the number of children that a node has an the
+ number of the child that should be placed. The special tree growth
+ function for tokens has a special mapping for each possible number
+ of children up to nine children. This mapping decides for each child
+ where it should be placed on top of the place. For example, a single
+ child is placed directly on top of the place. Two children are
+ placed next to each other, separated by the |token distance|. Three
+ children are placed in a triangle whose side lengths are
+ |token distance|; and so on up to nine tokens. If you wish to place
+ more than nice tokens on a place, you will have to write your own
+ placement code.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place,label=above:$p_2$] {}
+ [children are tokens]
+ child {node [token] {1}}
+ child {node [token,fill=red] {2}}
+ child {node [token,fill=red] {2}}
+ child {node [token] {1}};
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemoption{token distance}|=|\meta{distance}
+ This specifies the distance between the centers of the tokens in the
+ arrangements of the option |children are tokens|.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place,label=above:$p_3$] {}
+ [children are tokens,token distance=1.1ex]
+ child {node [token] {}}
+ child {node [token,red] {}}
+ child {node [token,blue] {}}
+ child {node [token] {}};
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+The |children are tokens| options gives you a lot of flexibility, but
+it is a bit cumbersome to use. For this reason there are some options
+that help in standard situations. They all use |children are tokens|
+internally, so any change to, say, the |every tokens| style will
+affect how these options depict tokens.
+
+\begin{itemize}
+ \itemoption{tokens}|=|\meta{number}
+ This option is given to a |place| node, not to a |token| node. The
+ effect of this option is to add \meta{number} many child nodes to
+ the place, each having the style |token|. Thus, the following two
+ pieces of codes have the same effect:
+\begin{codeexample}[]
+\tikz
+ \node[place] {}
+ [children are tokens]
+ child {node [token] {}}
+ child {node [token] {}}
+ child {node [token] {}};
+\tikz
+ \node[place,tokens=3] {};
+\end{codeexample}
+ It is legal to say |tokens=0|, no tokens are drawn in this
+ case. This option does not handle ten or more tokens correctly. If
+ you need this many tokens, you will have to program your own code.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every place}=[minimum size=9mm]
+
+ \foreach \x/\y/\tokennumber in {0/2/1,1/2/2,2/2/3,
+ 0/1/4,1/1/5,2/1/6,
+ 0/0/7,1/0/8,2/0/9}
+ \node [place,tokens=\tokennumber] at (\x,\y) {};
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{colored tokens}|=|\meta{color list}
+ This option, which must also be given when a place node is being
+ created, gets a list of colors as parameter. It will then add as
+ many tokens to the place are in this list, each colored with the
+ corresponding color in the list.
+\begin{codeexample}[]
+\tikz \node[place,colored tokens={black,black,red,blue}] {};
+\end{codeexample}
+ \itemoption{structured tokens}|=|\meta{token texts}
+ This option, which must again be passed to a place, gets a list
+ texts for tokens. For each text, another token will be added to the place.
+\begin{codeexample}[]
+\tikz \node[place,structured tokens={$x$,$y$,$z$}] {};
+\end{codeexample}
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every place}=[minimum size=9mm]
+
+ \foreach \x/\y/\tokennumber in {0/2/1,1/2/2,2/2/3,
+ 0/1/4,1/1/5,2/1/6,
+ 0/0/7,1/0/8,2/0/9}
+ \node [place,structured tokens={1,...,\tokennumber}] at (\x,\y) {};
+\end{tikzpicture}
+\end{codeexample}
+ If you use lots of structured tokens, consider redefining the
+ |every token| style so that the tokens are larger.
+\end{itemize}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-handlers.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-handlers.tex
new file mode 100644
index 00000000000..efe70ab6975
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-handlers.tex
@@ -0,0 +1,319 @@
+% 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.
+
+
+\section{Plot Handler Library}
+\label{section-library-plothandlers}
+
+\begin{pgflibrary}{plothandlers}
+ This library packages defines additional plot handlers, see
+ Section~\ref{section-plot-handlers} for an introduction to plot
+ handlers. The additional handlers are described in the following.
+
+ This library is loaded automatically by \tikzname.
+\end{pgflibrary}
+
+
+\subsection{Curve Plot Handlers}
+
+\begin{command}{\pgfplothandlercurveto}
+ This handler will issue a |\pgfpathcurveto| command for each point of
+ the plot, \emph{except} possibly for the first. As for the line-to
+ handler, what happens with the first point can be specified using
+ |\pgfsetmovetofirstplotpoint| or |\pgfsetlinetofirstplotpoint|.
+
+ Obviously, the |\pgfpathcurveto| command needs, in addition to the
+ points on the path, some control points. These are generated
+ automatically using a somewhat ``dumb'' algorithm: Suppose you have
+ three points $x$, $y$, and $z$ on the curve such that $y$ is between
+ $x$ and $z$:
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlercurveto
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+
+ In order to determine the control points of the curve at the point
+ $y$, the handler computes the vector $z-x$ and scales it by the
+ tension factor (see below). Let us call the resulting vector
+ $s$. Then $y+s$ and $y-s$ will be the control points around $y$. The
+ first control point at the beginning of the curve will be the
+ beginning itself, once more; likewise the last control point is the
+ end itself.
+\end{command}
+
+\begin{command}{\pgfsetplottension\marg{value}}
+ Sets the factor used by the curve plot handlers to determine the
+ distance of the control points from the points they control. The
+ higher the curvature of the curve points, the higher this value
+ should be. A value of $1$ will cause four points at quarter
+ positions of a circle to be connected using a circle. The default is
+ $0.5$.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfsetplottension{0.75}
+ \pgfplothandlercurveto
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+\begin{command}{\pgfplothandlerclosedcurve}
+ This handler works like the curve-to plot handler, only it will
+ add a new part to the current path that is a closed curve through
+ the plot points.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlerclosedcurve
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+\subsection{Comb Plot Handlers}
+
+There are three ``comb'' plot handlers. There name stems from the fact
+that the plots they produce look like ``combs'' (more or less).
+
+\begin{command}{\pgfplothandlerxcomb}
+ This handler converts each point in the plot stream into a line from
+ the $y$-axis to the point's coordinate, resulting in a ``horizontal
+ comb.''
+
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlerxcomb
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+\begin{command}{\pgfplothandlerycomb}
+ This handler converts each point in the plot stream into a line from
+ the $x$-axis to the point's coordinate, resulting in a ``vertical
+ comb.''
+
+ This handler is useful for creating ``bar diagrams.''
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlerycomb
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfplothandlerpolarcomb}
+ This handler converts each point in the plot stream into a line from
+ the origin to the point's coordinate.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlerpolarcomb
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\subsection{Mark Plot Handler}
+
+\label{section-plot-marks}
+
+\begin{command}{\pgfplothandlermark\marg{mark code}}
+ This command will execute the \meta{mark code} for some points of the
+ plot, but each time the coordinate transformation matrix will be
+ setup such that the origin is at the position of the point to be
+ plotted. This way, if the \meta{mark code} draws a little circle
+ around the origin, little circles will be drawn at some point of the
+ plot.
+
+ By default, a mark is drawn at all points of the plot. However, two
+ parameters $r$ and $p$ influence this. First, only every $r$th mark
+ is drawn. Second, the first mark drawn is the $p$th. These
+ parameters can be influenced using the commands below.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlermark{\pgfpathcircle{\pgfpointorigin}{4pt}\pgfusepath{stroke}}
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+
+ Typically, the \meta{code} will be |\pgfuseplotmark{|\meta{plot mark
+ name}|}|, where \meta{plot mark name} is the name of a
+ predefined plot mark.
+\end{command}
+
+\begin{command}{\pgfsetplotmarkrepeat\marg{repeat}}
+ Sets the $r$ parameter to \meta{repeat}, that is, only every $r$th
+ mark will be drawn.
+\end{command}
+
+\begin{command}{\pgfsetplotmarkphase\marg{phase}}
+ Sets the $p$ parameter to \meta{phase}, that is, the first mark to
+ be drawn is the $p$th, followed by the $(p+r)$th, then the
+ $(p+2r)$th, and so on.
+\end{command}
+
+\begin{command}{\pgfplothandlermarklisted\marg{mark code}\marg{index list}}
+ This command works similar to the previous one. However, marks will
+ only be placed at those indices in the given \meta{index list}. The
+ syntax for the list is the same as for the |\foreach| statement. For
+ example, if you provide the list |1,3,...,25|, a mark will be placed
+ only at every second point. Similarly, |1,2,4,8,16,32| yields marks
+ only at those points that are powers of two.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlermarklisted
+ {\pgfpathcircle{\pgfpointorigin}{4pt}\pgfusepath{stroke}}
+ {1,3}
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfuseplotmark\marg{plot mark name}}
+ Draws the given \meta{plot mark name} at the origin. The \meta{plot
+ mark name} must previously have been declared using
+ |\pgfdeclareplotmark|.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlermark{\pgfuseplotmark{pentagon}}
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfdeclareplotmark\marg{plot mark name}\marg{code}}
+ Declares a plot mark for later used with the |\pgfuseplotmark|
+ command.
+
+\begin{codeexample}[]
+\pgfdeclareplotmark{my plot mark}
+ {\pgfpathcircle{\pgfpoint{0cm}{1ex}}{1ex}\pgfusepathqstroke}
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfplothandlermark{\pgfuseplotmark{my plot mark}}
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+
+\begin{command}{\pgfsetplotmarksize\marg{dimension}}
+ This command sets the \TeX\ dimension |\pgfplotmarksize| to
+ \meta{dimension}. This dimension is a ``recommendation'' for plot
+ mark code at which size the plot mark should be drawn; plot mark
+ code may choose to ignore this \meta{dimension} altogether. For
+ circles, \meta{dimension} should be the radius, for other shapes it
+ should be about half the width/height.
+
+ The predefined plot marks all take this dimension into account.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[gray] (0,0) node {x} (1,1) node {y} (2,.5) node {z};
+ \pgfsetplotmarksize{1ex}
+ \pgfplothandlermark{\pgfuseplotmark{*}}
+ \pgfplotstreamstart
+ \pgfplotstreampoint{\pgfpoint{0cm}{0cm}}
+ \pgfplotstreampoint{\pgfpoint{1cm}{1cm}}
+ \pgfplotstreampoint{\pgfpoint{2cm}{0.5cm}}
+ \pgfplotstreamend
+ \pgfusepath{stroke}
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{textoken}{\pgfplotmarksize}
+ A \TeX\ dimension that is a ``recommendation'' for the size of plot
+ marks.
+\end{textoken}
+
+The following plot marks are predefined (the filling color has been
+set to yellow):
+
+\medskip
+\begin{tabular}{lc}
+ \plotmarkentry{*}
+ \plotmarkentry{x}
+ \plotmarkentry{+}
+\end{tabular}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-marks.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-marks.tex
new file mode 100644
index 00000000000..19db2308f44
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-plot-marks.tex
@@ -0,0 +1,53 @@
+% 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.
+
+
+\section{Plot Mark Library}
+
+\begin{pgflibrary}{plotmarks}
+ This library defines a number of plot marks.
+\end{pgflibrary}
+
+This library defines the following plot marks in
+addition to |*|, |x|, and |+| (the filling color has been set to a
+dark yellow):
+
+{
+\catcode`\|=12
+\medskip
+\begin{tabular}{lc}
+ \plotmarkentry{-}
+ \index{*vbar@\protect\texttt{\protect\myvbar} plot mark}%
+ \index{Plot marks!*vbar@\protect\texttt{\protect\myvbar}}
+ \texttt{\char`\\pgfuseplotmark\char`\{\declare{|}\char`\}} &
+ \tikz\draw[color=black!25] plot[mark=|,mark options={fill=yellow,draw=black}]
+ coordinates {(0,0) (.5,0.2) (1,0) (1.5,0.2)};\\
+ \plotmarkentry{o}
+ \plotmarkentry{asterisk}
+ \plotmarkentry{star}
+ \plotmarkentry{oplus}
+ \plotmarkentry{oplus*}
+ \plotmarkentry{otimes}
+ \plotmarkentry{otimes*}
+ \plotmarkentry{square}
+ \plotmarkentry{square*}
+ \plotmarkentry{triangle}
+ \plotmarkentry{triangle*}
+ \plotmarkentry{diamond}
+ \plotmarkentry{diamond*}
+ \plotmarkentry{pentagon}
+ \plotmarkentry{pentagon*}
+\end{tabular}
+}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-shapes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-shapes.tex
new file mode 100644
index 00000000000..91b717f13ac
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-shapes.tex
@@ -0,0 +1,185 @@
+% 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.
+
+
+\section{Shape Library}
+
+\begin{pgflibrary}{shapes}
+ This library packages defines additional shapes, which are
+ described in the following.
+\end{pgflibrary}
+
+
+\begin{shape}{circle split}
+ This shape is a multi-part shape consisting of a circle with a line
+ in the middle. The upper part is the main part (the |text| part),
+ the lower part is the |lower| part.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node [circle split,draw,double,fill=red!20]
+ {
+ $q_1$
+ \nodepart{lower}
+ $00$
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+ The shape inherits all anchors from the |circle| shape and defines
+ the |lower| anchor in addition. See also the
+ following figure:
+\begin{codeexample}[]
+\Huge
+\begin{tikzpicture}
+ \node[name=s,shape=circle split,style=shape example] {text\nodepart{lower}lower};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/below, east/right,
+ mid west/right, mid/above, mid east/left,
+ base west/left, base/below, base east/right,
+ south west/below left, south/below, south east/below right,
+ text/left, lower/left, 130/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+\end{shape}
+
+\begin{shape}{cross out}
+ This shape ``crosses out'' the node. Its foreground path are simply
+ two diagonal lines that between the corners of the node's bounding
+ box. Here is an example:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+ \node [cross out,draw=red] at (1.5,1) {cross out};
+\end{tikzpicture}
+\end{codeexample}
+
+ A useful application is inside text as in the following example:
+\begin{codeexample}[]
+Cross \tikz[baseline] \node [cross out,draw,anchor=text] {me}; out!
+\end{codeexample}
+
+ This shape inherits all anchors from the |rectangle| shape, see also
+ the following figure:
+\begin{codeexample}[]
+\Huge
+\begin{tikzpicture}
+ \node[name=s,shape=cross out,style=shape example] {cross out\vrule width 1pt height 2cm};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/above, east/right,
+ mid west/right, mid/above, mid east/left,
+ base west/left, base/below, base east/right,
+ south west/below left, south/below, south east/below right,
+ text/left, 10/right, 130/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+\end{shape}
+
+
+\begin{shape}{diamond}
+ This shape is a diamond tightly fitting the text box. The ratio
+ between width and height is 1 by default, but can be changed by
+ setting the shape aspect ratio (using the |aspect| option of
+ \tikzname). The following figure shows the anchors this
+ shape defines; the anchors |10| and |130| are example of border anchors.
+\begin{codeexample}[]
+\Huge
+\begin{tikzpicture}
+ \node[name=s,shape=diamond,style=shape example] {Diamond\vrule width 1pt height 2cm};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/above, east/right,
+ mid/above,
+ base/below,
+ south west/below left, south/below, south east/below right,
+ text/left, 10/right, 130/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+\end{shape}
+
+\begin{shape}{ellipse}
+ This shape is an ellipse tightly fitting the text box, if no inner
+ separation is given. The following figure shows the anchors this
+ shape defines; the anchors |10| and |130| are example of border anchors.
+\begin{codeexample}[]
+\Huge
+\begin{tikzpicture}
+ \node[name=s,shape=ellipse,style=shape example] {Ellipse\vrule width 1pt height 2cm};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/above, east/right,
+ mid west/right, mid/above, mid east/left,
+ base west/left, base/below, base east/right,
+ south west/below left, south/below, south east/below right,
+ text/left, 10/right, 130/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+\end{shape}
+
+\begin{shape}{forbidden sign}
+ This shape places the node inside a circle with a diagonal from the
+ lower left to the upper right added. The circle is part of the
+ background, the diagonal line part of the foreground path; thus, the
+ diagonal line is on top of the text.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node [forbidden sign,line width=1ex,draw=red,fill=white] {Smoking};
+\end{tikzpicture}
+\end{codeexample}
+
+ The shape inherits all anchors from the |circle| shape, see also the
+ following figure:
+\begin{codeexample}[]
+\Huge
+\begin{tikzpicture}
+ \node[name=s,shape=forbidden sign,style=shape example] {Forbidden\vrule width 1pt height 2cm};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/above, east/right,
+ mid west/right, mid/above, mid east/left,
+ base west/left, base/below, base east/right,
+ south west/below left, south/below, south east/below right,
+ text/left, 10/right, 130/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+\end{tikzpicture}
+\end{codeexample}
+\end{shape}
+
+
+\begin{shape}{strike out}
+ This shape is idential to the |cross out| shape, only its foreground
+ path consists of a single line from the lower left to the upper
+ right.
+
+\begin{codeexample}[]
+Strike \tikz[baseline] \node [strike out,draw,anchor=text] {me}; out!
+\end{codeexample}
+
+ See the |cross out| shape for the anchors.
+\end{shape}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-snakes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-snakes.tex
new file mode 100644
index 00000000000..57876001bff
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-snakes.tex
@@ -0,0 +1,270 @@
+% 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.
+
+
+\section{Snake Library}
+
+\label{section-library-snakes}
+
+\begin{pgflibrary}{snakes}
+ This library package defines basic
+ snakes. Section~\ref{section-tikz-snakes} explains how snakes are
+ used in \tikzname, Section~\ref{section-base-snakes} explains how
+ new snakes can be defined.
+
+ The snakes are influenced by the current values of parameters like
+ |\pgfsnakesegmentamplitude|. Only this parameter and
+ |\pgfsnakesegmentlength| are proper \TeX\ dimensions, all other
+ parameters are \TeX\ macros.
+
+ In \tikzname, each parameter can be set using an option having the
+ parameters name minus the |\pgfsnake| part.
+\end{pgflibrary}
+
+
+\begin{snake}{bent}
+ This snake adds a slightly bent line from the start to the
+ target. The amplitude of the bent is given by the segement amplitude
+ (and amplitude of zero gives a straight line).
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines the amplitude of the bent.
+ \item |\pgfsnakesegmentaspect|
+ determines how tight the bent is. A good value is around |0.3|.
+ \end{itemize}
+\begin{codeexample}[]
+\begin{tikzpicture}[segment aspect=.3]
+ \node[circle,draw] (A) at (.5,.5) {A};
+ \node[circle,draw] (B) at (3,1.5) {B};
+ \draw[->,snake=bent,raise snake=2pt] (A) -- (B);
+ \draw[->,snake=bent,raise snake=2pt] (B) -- (A);
+
+ \draw [snake=bent,mirror snake] (0,0) rectangle (3.5,2);
+\end{tikzpicture}
+\end{codeexample}
+\end{snake}
+
+
+
+\begin{snake}{border}
+ This snake adds straight lines the path that are at a specific angle
+ to the line toward the target. The idea is to add these little lines
+ to indicate the ``border'' or an area. The following parameters
+ influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentlength|
+ determines the distance between consecutive ticks.
+ \item |\pgfsnakesegmentamplitude|
+ determines the length of the ticks.
+ \item |\pgfsnakesegmentangle|
+ determines the angle between the ticks and the line toward the
+ target.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw (0,0) rectangle (3,1)
+ [snake=border,segment angle=-45] (0,0) rectangle (3,1);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{brace}
+ This snake adds a long brace to the path. The left and right end of
+ the brace will be exactly on the start and endpoint of the
+ snake. The following parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines how much the brace rises above the path.
+ \item |\pgfsnakesegmentaspect|
+ determines the fraction of the total length where the ``middle
+ part'' of the brace will be.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=brace,segment aspect=0.25] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+\begin{snake}{bumps}
+ This snake consists of little half ellipses. The following parameters
+ influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines the height of the half ellipse.
+ \item |\pgfsnakesegmentlength|
+ determines the width of the half ellipse.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=bumps] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{coil}
+ This snake adds a coil to the path. To understand how this works,
+ imagine a three-dimensional spring. The spring's axis points along
+ the line toward the target. Then, we ``view'' the spring from a
+ certain angle. If we look ``straight from the side'' we will see a
+ perfect sine curve, if we look ``more from the front'' we will see a
+ coil. The following parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines how much the coil rises above the path and falls below
+ it. Thus, this is the radius of the coil.
+ \item |\pgfsnakesegmentlength|
+ determines the distance between two consecutive ``curls.'' Thus,
+ when the spring is see ``from the side'' this will be the wave
+ length of the sine curve.
+ \item |\pgfsnakesegmentaspect|
+ determines the ``viewing direction.'' A value of |0| means
+ ``looking from the side'' and a value of |0.5|, which is the
+ default, means ``look more from the front.''
+ \end{itemize}
+\begin{codeexample}[]
+\begin{tikzpicture}[segment amplitude=10pt]
+ \draw[snake=coil] (0,1) -- (3,1);
+ \draw[snake=coil,segment aspect=0] (0,0) -- (3,0);
+\end{tikzpicture}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{expanding waves}
+ This snake adds arcs to the path that get bigger along the line
+ towards the target. The following parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentlength|
+ determines the distance between consecutive arcs.
+ \item |\pgfsnakesegmentangle|
+ determines the opening angle below and above the path. Thus, the
+ total opening angle is twice this angle.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=expanding waves] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{saw}
+ This snake looks like the blade of a saw. The following parameters
+ influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines how much each spike raises above the straight line.
+ \item |\pgfsnakesegmentlength|
+ determines the length each spike.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=saw] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{snake}
+ This snake is the ``architypical'' snake: It looks like a snake seen
+ from above. More precisely, the snake is a sine wave with a
+ ``softened'' start and ending. The following parameters influence
+ the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines the sine wave's amplitude.
+ \item |\pgfsnakesegmentlength|
+ determines the sine wave's wave length.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=snake] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{ticks}
+ This snake adds straight lines the path that are orthogonal to the
+ line toward the target. The following parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentlength|
+ determines the distance between consecutive ticks.
+ \item |\pgfsnakesegmentamplitude|
+ determines half the length of the ticks.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=ticks] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+\begin{snake}{triangles}
+ This snake adds triangles to the path that point toward the
+ target. The following parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentlength|
+ determines the distance between consecutive triangles.
+ \item |\pgfsnakesegmentamplitude|
+ determines half the length of the triangle side that is orthogonal
+ to the path.
+ \item |\pgfsnakesegmentobjectlength|
+ determines the height of the triangle.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=triangles] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+\begin{snake}{crosses}
+ This snake adds (diagonal) crosses to the path. The following
+ parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentlength|
+ determines the distance between consecutive crosses.
+ \item |\pgfsnakesegmentamplitude|
+ determines half the hieght of each cross.
+ \item |\pgfsnakesegmentobjectlength|
+ determines width of each cross.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=crosses] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{waves}
+ This snake adds arcs to the path that have a constant size. The
+ following parameters influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentlength|
+ determines the distance between consecutive arcs.
+ \item |\pgfsnakesegmentangle|
+ determines the opening angle below and above the path. Thus, the
+ total opening angle is twice this angle.
+ \item |\pgfsnakesegmentamplitude|
+ determines the radius of each arc.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=waves] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+\begin{snake}{zigzag}
+ This snake looks like a zig-zag line. The following parameters
+ influence the snake:
+ \begin{itemize}
+ \item |\pgfsnakesegmentamplitude|
+ determines how much the zig-zag lines raises above and falls below
+ a straight line to the target point.
+ \item |\pgfsnakesegmentlength|
+ determines the length of a complete ``up-down'' cycle.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz{\draw[snake=zigzag] (0,0) -- (3,0);}
+\end{codeexample}
+\end{snake}
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-trees.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-trees.tex
new file mode 100644
index 00000000000..f4e6f591c1c
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-trees.tex
@@ -0,0 +1,179 @@
+% 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.
+
+
+\section{Tree Library}
+
+\label{section-tree-library}
+
+
+\begin{tikzlibrary}{trees}
+ This packages defines styles to be used when drawing trees.
+\end{tikzlibrary}
+
+\subsection{Growth Functions}
+
+The package |pgflibrarytikztrees| defines two new growth
+functions. They are installed using the following options:
+
+\begin{itemize}
+ \itemoption{grow via three points}|=one child at (|\meta{x}%
+ |) and two children at (|\meta{y}|) and (|\meta{z}|)|
+ This option installs a growth function that works as follows: If a
+ parent node has just one child, this child is placed at \meta{x}. If
+ the parent node has two children, these are placed at \meta{y} and
+ \meta{z}. If the parent node has more than two children, the
+ children are placed at points that are linearly extrapolated from
+ the three points \meta{x}, \meta{y}, and \meta{z}. In detail, the
+ position is $x + \frac{n-1}{2}(y-x) + (c-1)(z-y)$, where $n$ is the
+ number of children and $c$ is the number of the current child
+ (starting with~$1$).
+
+ The net effect of all this is that if you have a certain ``linear
+ arrangement'' in mind and use this option to specify the placement
+ of a single child and of two children, then any number of children
+ will be placed correctly.
+
+ Here are some arrangements based on this growth function. We start
+ with a simple ``above'' arrangement:
+\begin{codeexample}[]
+\begin{tikzpicture}[grow via three points={%
+ one child at (0,1) and two children at (-.5,1) and (.5,1)}]
+ \node at (0,0) {one} child;
+ \node at (0,-1.5) {two} child child;
+ \node at (0,-3) {three} child child child;
+ \node at (0,-4.5) {four} child child child child;
+\end{tikzpicture}
+\end{codeexample}
+
+ The next arrangement places children above, but ``grows only to the
+ right.''
+\begin{codeexample}[]
+\begin{tikzpicture}[grow via three points={%
+ one child at (0,1) and two children at (0,1) and (1,1)}]
+ \node at (0,0) {one} child;
+ \node at (0,-1.5) {two} child child;
+ \node at (0,-3) {three} child child child;
+ \node at (0,-4.5) {four} child child child child;
+\end{tikzpicture}
+\end{codeexample}
+
+ In the final arrangement, the children are placed along a line going
+ down and right.
+\begin{codeexample}[]
+\begin{tikzpicture}[grow via three points={%
+ one child at (-1,-.5) and two children at (-1,-.5) and (0,-.75)}]
+ \node at (0,0) {one} child;
+ \node at (0,-1.5) {two} child child;
+ \node at (0,-3) {three} child child child;
+ \node at (0,-4.5) {four} child child child child;
+\end{tikzpicture}
+\end{codeexample}
+
+ These examples should make it clear how you can create new styles to
+ arrange your children along a line.
+
+ \itemstyle{grow cyclic}
+ This style causes the children to be arranged ``on a circle.'' For
+ this, the children are placed at distance |\tikzleveldistance| from
+ the parent node, but not on a straight line, but points on a
+ circle. Instead of a sibling distance, there is a |sibling angle|
+ that denotes the angle between two given children.
+ \begin{itemize}
+ \itemoption{sibling angle}|=|\meta{angle}
+ Sets the angle between siblings in the |grow cyclic| style.
+ \end{itemize}
+ Note that this function will rotate the coordinate system of the
+ children to ensure that the grandchildren will grow in the right
+ direction.
+\begin{codeexample}[]
+\begin{tikzpicture}[grow cyclic]
+ \tikzstyle{level 1}=[level distance=8mm,sibling angle=60]
+ \tikzstyle{level 2}=[level distance=4mm,sibling angle=45]
+ \tikzstyle{level 3}=[level distance=2mm,sibling angle=30]
+ \coordinate [rotate=-90] % going down
+ child foreach \x in {1,2,3}
+ {child foreach \x in {1,2,3}
+ {child foreach \x in {1,2,3}}};
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemoption{clockwise from}|=|\meta{angle}
+ This option also cuases children to be arranged on a
+ circle. However, the rule for placing children is simpler thatn with
+ the |grow cyclic| style: The first child is placed at
+ \meta{angle} at a distance of |\tikzleveldistance|. The second child
+ is placed at the same distance from the parent, but at angle
+ \meta{angle}${}-{}$|\tikzsiblingangle|. The third child is displaced
+ by another |\tikzsiblingangle| in a clockwise fashion, and so on.
+
+ Note that this function will not rotate the coordinate system.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node {root}
+ [clockwise from=30,sibling angle=30]
+ child {node {$30$}}
+ child {node {$0$}}
+ child {node {$-30$}}
+ child {node {$-60$}};
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{counterclockwise from}|=|\meta{angle}
+ Works the same way as |clockwise from|, but sibling angles are added
+ instead of subtracted.
+\end{itemize}
+
+\subsection{Edges From Parent}
+
+The following styles can be used to modify how the edges from parents
+are drawn:
+
+\begin{itemize}
+ \itemstyle{edge from parent fork down}
+ This style will draw a line from the parent downwards (for half the
+ level distance) and then on to the child using only horizontal and
+ vertical lines.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node {root}
+ [edge from parent fork down]
+ child {node {left}}
+ child {node {right}
+ child[child anchor=north east] {node {child}}
+ child {node {child}}
+ };
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{edge from parent fork right}
+ This style behaves similarly, only it will first draw its edge to
+ the right.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node {root}
+ [edge from parent fork right,grow=right]
+ child {node {left}}
+ child {node {right}
+ child {node {child}}
+ child {node {child}}
+ };
+\end{tikzpicture}
+\end{codeexample}
+ \itemstyle{edge from parent fork left}
+ behaves similary.
+ \itemstyle{edge from parent fork up}
+ behaves similary.
+\end{itemize}
+
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End:
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-license.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-license.tex
index f90c0e34b8b..61c2ea6e288 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-license.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-license.tex
@@ -1,17 +1,58 @@
-% $Header: /cvsroot/pgf/pgf/doc/generic/pgf/text-en/pgfmanual-en-license.tex,v 1.1 2005/11/14 17:37:50 tantau Exp $
-
-% Copyright 2003, 2004 by Till Tantau <tantau@users.sourceforge.net>.
+% 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.
%
-% This program can be redistributed and/or modified under the terms
-% of the GNU Public License, version 2.
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
-\subsection{License: The GNU Public License, Version 2}
+\section{Licenses and Copyright}
\label{section-license}
-The \pgfname\ package is distributed under the \textsc{gnu} public
-license, version 2. In detail, this means the following (the following
-text is copyrighted by the Free Software Foundation):
+
+\subsection{Which License Applies?}
+
+Different parts of the \pgfname\ package are distributed under
+different licenses:
+
+\begin{enumerate}
+\item The \emph{code} of the package is dual-license. This means that
+ you can decide which license you wish to use when using the
+ \pgfname\ package. The two options are:
+ \begin{enumerate}
+ \item You can use the \textsc{gnu} Public License, version 2.
+ \item You can use the \LaTeX\ Project Public License, version 1.3c.
+ \end{enumerate}
+\item The \emph{documentation} of the package is also dual-license. Again,
+ you can choose between two options:
+ \begin{enumerate}
+ \item You can use the \textsc{gnu} Free Documentation License, version 1.2.
+ \item You can use the \LaTeX\ Project Public License, version 1.3c.
+ \end{enumerate}
+\end{enumerate}
+
+The ``documentation of the package'' refers to all files in the
+subdirectory |doc| of the |pgf| package. A detailed listing can be
+found in the file |doc/generic/pgf/licenses/manifest-documentation.txt|.
+All files in other directories are part of the ``code of the
+package.'' A detailed listing can be found in the file
+|doc/generic/pgf/licenses/manifest-code.txt|.
+
+In the resest of this section, the licenses are presented. The
+following text is copyrighted, see the plain text versions of these
+licenses in the directory |doc/generic/pgf/licenses| for details.
+
+The example picture used in this manual, the Brave \textsc{gnu} World
+logo, is taken from the Brave \textsc{gnu} World homepage, where it is
+copyrighted as follows: ``Copyright (C) 1999, 2000, 2001, 2002, 2003,
+2004 Georg C.~F.\ Greve. Permission is granted to make and distribute
+verbatim copies of this transcript as long as the copyright and this
+permission notice appear.''
+
+
+\subsection{The GNU Public License, Version 2}
\subsubsection{Preamble}
@@ -21,8 +62,8 @@ intended to guarantee your freedom to share and change free software---to
make sure the software is free for all its users. This General Public
License applies to most of the Free Software Foundation's software and to
any other program whose authors commit to using it. (Some other Free
-Software Foundation software is covered by the \textsc{gnu} Library General Public
-License instead.) You can apply it to your programs, too.
+Software Foundation software is covered by the \textsc{gnu} Library
+General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designed to make sure that you have the
@@ -320,6 +361,964 @@ programs), even if such holder or other party has been advised of the
possibility of such damages.
\end{enumerate}
+
+\providecommand{\LPPLsection}{\subsection}
+\providecommand{\LPPLsubsection}{\subsubsection}
+\providecommand{\LPPLsubsubsection}{\subsubsection}
+\providecommand{\LPPLparagraph}{\paragraph}
+
+
+% The file lppl.tex, some minor typographic changes:
+
+%
+% $Id: pgfmanual-en-license.tex,v 1.4 2006/10/11 15:00:28 tantau Exp $
+%
+% Copyright 1999 2002-2006 LaTeX3 Project
+% Everyone is allowed to distribute verbatim copies of this
+% license document, but modification of it is not allowed.
+%
+%
+% If you wish to load it as part of a ``doc'' source, you have to
+% ensure that a) % is a comment character and b) that short verb
+% characters are being turned off, i.e.,
+%
+% \DeleteShortVerb{\'} % or whatever was made a shorthand
+% \MakePercentComment
+% \input{lppl}
+% \MakePercentIgnore
+% \MakeShortVerb{\'} % turn it on again if necessary
+%
+%
+% By default the license is produced with \section* as the highest
+% heading level. If this is not appropriate for the document in which
+% it is included define the commands listed below before loading this
+% document, e.g., for inclusion as a separate chapter define:
+%
+% \providecommand{\LPPLsection}{\chapter*}
+% \providecommand{\LPPLsubsection}{\section*}
+% \providecommand{\LPPLsubsubsection}{\subsection*}
+% \providecommand{\LPPLparagraph}{\subsubsection*}
+%
+%
+% To allow cross-referencing the headings \label's have been attached
+% to them, all starting with ``LPPL:''. As by default headings without
+% numbers are produced, this will only allow page references.
+% However, you can use the titleref package to produce textual
+% references or you change the definitions of \LPPLsection, and
+% friends to generated numbered headings.
+%
+%
+% We want it to be possible that this file can be processed by
+% (pdf)LaTeX on its own, or that this file can be included in another
+% LaTeX document without any modification whatsoever.
+% Hence the little test below.
+%
+%
+\makeatletter
+\ifx\@preamblecmds\@notprerr
+ % In this case the preamble has already been processed so this file
+ % is loaded as part of another document; just enclose everything in
+ % a group
+ \let\LPPLicense\bgroup
+ \let\endLPPLicense\egroup
+\else
+ % In this case the preamble has not been processed yet so this file
+ % is processed by itself.
+ \documentclass{article}
+ \let\LPPLicense\document
+ \let\endLPPLicense\enddocument
+\fi
+\makeatother
+
+
+\begin{LPPLicense}
+ \providecommand{\LPPLsection}{\section*}
+ \providecommand{\LPPLsubsection}{\subsection*}
+ \providecommand{\LPPLsubsubsection}{\subsubsection*}
+ \providecommand{\LPPLparagraph}{\paragraph*}
+ \providecommand*{\LPPLfile}[1]{\texttt{#1}}
+ \providecommand*{\LPPLdocfile}[1]{`\LPPLfile{#1.tex}'}
+ \providecommand*{\LPPL}{\textsc{lppl}}
+
+ \LPPLsection{The \LaTeX\ Project Public License, Version 1.3c 2006-05-20}
+ \label{LPPL:LPPL}
+
+% \textbf{Copyright 1999, 2002--2006 \LaTeX3 Project}
+% \begin{quotation}
+% Everyone is allowed to distribute verbatim copies of this
+% license document, but modification of it is not allowed.
+% \end{quotation}
+
+ \LPPLsubsection{Preamble}
+ \label{LPPL:Preamble}
+
+ The \LaTeX\ Project Public License (\LPPL) is the primary license
+ under which the the \LaTeX\ kernel and the base \LaTeX\ packages are
+ distributed.
+
+ You may use this license for any work of which you hold the
+ copyright and which you wish to distribute. This license may be
+ particularly suitable if your work is \TeX-related (such as a
+ \LaTeX\ package), but it is written in such a way that you can use
+ it even if your work is unrelated to \TeX.
+
+ The section `\textsc{wheter and how to distribute works under this
+ license}', below, gives instructions, examples, and
+ recommendations
+ for authors who are considering distributing their works under this
+ license.
+
+ This license gives conditions under which a work may be distributed
+ and modified, as well as conditions under which modified versions of
+ that work may be distributed.
+
+ We, the \LaTeX3 Project, believe that the conditions below give you
+ the freedom to make and distribute modified versions of your work
+ that conform with whatever technical specifications you wish while
+ maintaining the availability, integrity, and reliability of that
+ work. If you do not see how to achieve your goal while meeting
+ these conditions, then read the document \LPPLdocfile{cfgguide} and
+ \LPPLdocfile{modguide} in the base \LaTeX\ distribution for suggestions.
+
+
+ \LPPLsubsection{Definitions}
+ \label{LPPL:Definitions}
+
+ In this license document the following terms are used:
+
+ \begin{description}
+ \item[Work] Any work being distributed under this License.
+
+ \item[Derived Work] Any work that under any applicable law is
+ derived from the Work.
+
+ \item[Modification] Any procedure that produces a Derived Work under
+ any applicable law -- for example, the production of a file
+ containing an original file associated with the Work or a
+ significant portion of such a file, either verbatim or with
+ modifications and/or translated into another language.
+
+ \item[Modify] To apply any procedure that produces a Derived Work
+ under any applicable law.
+
+ \item[Distribution] Making copies of the Work available from one
+ person to another, in whole or in part. Distribution includes
+ (but is not limited to) making any electronic components of the
+ Work accessible by file transfer protocols such as \textsc{ftp} or
+ \textsc{http} or by shared file systems such as Sun's Network File
+ System (\textsc{nfs}).
+
+ \item[Compiled Work] A version of the Work that has been processed
+ into a form where it is directly usable on a computer system.
+ This processing may include using installation facilities provided
+ by the Work, transformations of the Work, copying of components of
+ the Work, or other activities. Note that modification of any
+ installation facilities provided by the Work constitutes
+ modification of the Work.
+
+ \item[Current Maintainer] A person or persons nominated as such
+ within the Work. If there is no such explicit nomination then it
+ is the `Copyright Holder' under any applicable law.
+
+ \item[Base Interpreter] A program or process that is normally needed
+ for running or interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these are
+ not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `\LaTeX-Format' or in the case of files belonging to the
+ `\LaTeX-format' a program implementing the `\TeX{} language'.
+ \end{description}
+
+ \LPPLsubsection{Conditions on Distribution and Modification}
+ \label{LPPL:Conditions}
+
+ \begin{enumerate}
+ \item Activities other than distribution and/or modification of the
+ Work are not covered by this license; they are outside its scope.
+ In particular, the act of running the Work is not restricted and
+ no requirements are made concerning any offers of support for the
+ Work.
+
+ \item\label{LPPL:item:distribute} You may distribute a complete, unmodified
+ copy of the Work as you received it. Distribution of only part of
+ the Work is considered modification of the Work, and no right to
+ distribute such a Derived Work may be assumed under the terms of
+ this clause.
+
+ \item You may distribute a Compiled Work that has been generated
+ from a complete, unmodified copy of the Work as distributed under
+ Clause~\ref{LPPL:item:distribute} above, as long as that Compiled Work is
+ distributed in such a way that the recipients may install the
+ Compiled Work on their system exactly as it would have been
+ installed if they generated a Compiled Work directly from the
+ Work.
+
+ \item\label{LPPL:item:currmaint} If you are the Current Maintainer of the
+ Work, you may, without restriction, modify the Work, thus creating
+ a Derived Work. You may also distribute the Derived Work without
+ restriction, including Compiled Works generated from the Derived
+ Work. Derived Works distributed in this manner by the Current
+ Maintainer are considered to be updated versions of the Work.
+
+ \item If you are not the Current Maintainer of the Work, you may
+ modify your copy of the Work, thus creating a Derived Work based
+ on the Work, and compile this Derived Work, thus creating a
+ Compiled Work based on the Derived Work.
+
+ \item\label{LPPL:item:conditions} If you are not the Current Maintainer of the
+ Work, you may distribute a Derived Work provided the following
+ conditions are met for every component of the Work unless that
+ component clearly states in the copyright notice that it is exempt
+ from that condition. Only the Current Maintainer is allowed to
+ add such statements of exemption to a component of the Work.
+ \begin{enumerate}
+ \item If a component of this Derived Work can be a direct
+ replacement for a component of the Work when that component is
+ used with the Base Interpreter, then, wherever this component of
+ the Work identifies itself to the user when used interactively
+ with that Base Interpreter, the replacement component of this
+ Derived Work clearly and unambiguously identifies itself as a
+ modified version of this component to the user when used
+ interactively with that Base Interpreter.
+
+ \item Every component of the Derived Work contains prominent
+ notices detailing the nature of the changes to that component,
+ or a prominent reference to another file that is distributed as
+ part of the Derived Work and that contains a complete and
+ accurate log of the changes.
+
+ \item No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original
+ version of the Work, provide any support, including (but not
+ limited to) the reporting and handling of errors, to recipients
+ of the Derived Work unless those persons have stated explicitly
+ that they do provide such support for the Derived Work.
+
+ \item You distribute at least one of the following with the Derived Work:
+ \begin{enumerate}
+ \item A complete, unmodified copy of the Work; if your
+ distribution of a modified component is made by offering
+ access to copy the modified component from a designated place,
+ then offering equivalent access to copy the Work from the same
+ or some similar place meets this condition, even though third
+ parties are not compelled to copy the Work along with the
+ modified component;
+
+ \item Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+ \end{enumerate}
+ \end{enumerate}
+ \item If you are not the Current Maintainer of the Work, you may
+ distribute a Compiled Work generated from a Derived Work, as long
+ as the Derived Work is distributed to all recipients of the
+ Compiled Work, and as long as the conditions of
+ Clause~\ref{LPPL:item:conditions}, above, are met with regard to the Derived
+ Work.
+
+ \item The conditions above are not intended to prohibit, and hence
+ do not apply to, the modification, by any method, of any component
+ so that it becomes identical to an updated version of that
+ component of the Work as it is distributed by the Current
+ Maintainer under Clause~\ref{LPPL:item:currmaint}, above.
+
+ \item Distribution of the Work or any Derived Work in an alternative
+ format, where the Work or that Derived Work (in whole or in part)
+ is then produced by applying some process to that format, does not
+ relax or nullify any sections of this license as they pertain to
+ the results of applying that process.
+
+ \item \null
+ \begin{enumerate}
+ \item A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause~\ref{LPPL:item:conditions} above, in regard to the Work, though it
+ does not have to honor the rest of the conditions in this
+ license.
+
+ \item If a Derived Work is distributed under a different license,
+ that Derived Work must provide sufficient documentation as part
+ of itself to allow each recipient of that Derived Work to honor
+ the restrictions in Clause~\ref{LPPL:item:conditions} above, concerning
+ changes from the Work.
+ \end{enumerate}
+ \item This license places no restrictions on works that are
+ unrelated to the Work, nor does this license place any
+ restrictions on aggregating such works with the Work by any means.
+
+ \item Nothing in this license is intended to, or may be used to,
+ prevent complete compliance by all parties with all applicable
+ laws.
+ \end{enumerate}
+
+ \LPPLsubsection{No Warranty}
+ \label{LPPL:Warranty}
+
+ There is no warranty for the Work. Except when otherwise stated in
+ writing, the Copyright Holder provides the Work `as is', without
+ warranty of any kind, either expressed or implied, including, but
+ not limited to, the implied warranties of merchantability and
+ fitness for a particular purpose. The entire risk as to the quality
+ and performance of the Work is with you. Should the Work prove
+ defective, you assume the cost of all necessary servicing, repair,
+ or correction.
+
+ In no event unless required by applicable law or agreed to in
+ writing will The Copyright Holder, or any author named in the
+ components of the Work, or any other party who may distribute and/or
+ modify the Work as permitted above, be liable to you for damages,
+ including any general, special, incidental or consequential damages
+ arising out of any use of the Work or out of inability to use the
+ Work (including, but not limited to, loss of data, data being
+ rendered inaccurate, or losses sustained by anyone as a result of
+ any failure of the Work to operate with any other programs), even if
+ the Copyright Holder or said author or said other party has been
+ advised of the possibility of such damages.
+
+ \LPPLsubsection{Maintenance of The Work}
+ \label{LPPL:Maintenance}
+
+ The Work has the status `author-maintained' if the Copyright Holder
+ explicitly and prominently states near the primary copyright notice
+ in the Work that the Work can only be maintained by the Copyright
+ Holder or simply that it is `author-maintained'.
+
+ The Work has the status `maintained' if there is a Current
+ Maintainer who has indicated in the Work that they are willing to
+ receive error reports for the Work (for example, by supplying a
+ valid e-mail address). It is not required for the Current Maintainer
+ to acknowledge or act upon these error reports.
+
+ The Work changes from status `maintained' to `unmaintained' if there
+ is no Current Maintainer, or the person stated to be Current
+ Maintainer of the work cannot be reached through the indicated means
+ of communication for a period of six months, and there are no other
+ significant signs of active maintenance.
+
+ You can become the Current Maintainer of the Work by agreement with
+ any existing Current Maintainer to take over this role.
+
+ If the Work is unmaintained, you can become the Current Maintainer
+ of the Work through the following steps:
+ \begin{enumerate}
+ \item Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of an
+ Internet or similar search.
+ \item If this search is successful, then enquire whether the Work is
+ still maintained.
+ \begin{enumerate}
+ \item If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ \item\label{LPPL:item:intention} If the search is unsuccessful or
+ no action to resume active maintenance is taken by the Current
+ Maintainer, then announce within the pertinent community your
+ intention to take over maintenance. (If the Work is a \LaTeX{}
+ work, this could be done, for example, by posting to
+ \texttt{comp.text.tex}.)
+ \end{enumerate}
+ \item {}
+ \begin{enumerate}
+ \item If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ \item\label{LPPL:item:announce} If the Current Maintainer is not
+ reachable and the Copyright Holder agrees that maintenance of
+ the Work be passed to you, then this takes effect immediately
+ upon announcement.
+ \end{enumerate}
+ \item\label{LPPL:item:change} If you make an `intention
+ announcement' as described in~\ref{LPPL:item:intention} above and
+ after three months your intention is challenged neither by the
+ Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as to
+ name you as the (new) Current Maintainer.
+
+ \item If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of~\ref{LPPL:item:announce}
+ or~\ref{LPPL:item:change}, then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided they
+ then update their communication data within one month.
+ \end{enumerate}
+ A change in the Current Maintainer does not, of itself, alter the
+ fact that the Work is distributed under the \LPPL\ license.
+
+ If you become the Current Maintainer of the Work, you should
+ immediately provide, within the Work, a prominent and unambiguous
+ statement of your status as Current Maintainer. You should also
+ announce your new status to the same pertinent community as
+ in~\ref{LPPL:item:intention} above.
+
+ \LPPLsubsection{Whether and How to Distribute Works under This License}
+ \label{LPPL:Distribute}
+
+ This section contains important instructions, examples, and
+ recommendations for authors who are considering distributing their
+ works under this license. These authors are addressed as `you' in
+ this section.
+
+ \LPPLsubsubsection{Choosing This License or Another License}
+ \label{LPPL:Choosing}
+
+ If for any part of your work you want or need to use
+ \emph{distribution} conditions that differ significantly from those
+ in this license, then do not refer to this license anywhere in your
+ work but, instead, distribute your work under a different license.
+ You may use the text of this license as a model for your own
+ license, but your license should not refer to the \LPPL\ or
+ otherwise give the impression that your work is distributed under
+ the \LPPL.
+
+ The document \LPPLdocfile{modguide} in the base \LaTeX\ distribution
+ explains the motivation behind the conditions of this license. It
+ explains, for example, why distributing \LaTeX\ under the
+ \textsc{gnu} General Public License (\textsc{gpl}) was considered
+ inappropriate. Even if your work is unrelated to \LaTeX, the
+ discussion in \LPPLdocfile{modguide} may still be relevant, and authors
+ intending to distribute their works under any license are encouraged
+ to read it.
+
+ \LPPLsubsubsection{A Recommendation on Modification Without Distribution}
+ \label{LPPL:WithoutDistribution}
+
+ It is wise never to modify a component of the Work, even for your
+ own personal use, without also meeting the above conditions for
+ distributing the modified component. While you might intend that
+ such modifications will never be distributed, often this will happen
+ by accident -- you may forget that you have modified that component;
+ or it may not occur to you when allowing others to access the
+ modified version that you are thus distributing it and violating the
+ conditions of this license in ways that could have legal
+ implications and, worse, cause problems for the community. It is
+ therefore usually in your best interest to keep your copy of the
+ Work identical with the public one. Many works provide ways to
+ control the behavior of that work without altering any of its
+ licensed components.
+
+ \LPPLsubsubsection{How to Use This License}
+ \label{LPPL:HowTo}
+
+ To use this license, place in each of the components of your work
+ both an explicit copyright notice including your name and the year
+ the work was authored and/or last substantially modified. Include
+ also a statement that the distribution and/or modification of that
+ component is constrained by the conditions in this license.
+
+ Here is an example of such a notice and statement:
+\begin{verbatim}
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+\end{verbatim}
+
+ Given such a notice and statement in a file, the conditions given in
+ this license document would apply, with the `Work' referring to the
+ three files `\LPPLfile{pig.dtx}', `\LPPLfile{pig.ins}', and
+ `\LPPLfile{pig.sty}' (the last being generated from
+ `\LPPLfile{pig.dtx}' using `\LPPLfile{pig.ins}'), the `Base
+ Interpreter' referring to any `\LaTeX-Format', and both `Copyright
+ Holder' and `Current Maintainer' referring to the person `M. Y.
+ Name'.
+
+ If you do not want the Maintenance section of \LPPL\ to apply to
+ your Work, change `maintained' above into `author-maintained'.
+ However, we recommend that you use `maintained' as the Maintenance
+ section was added in order to ensure that your Work remains useful
+ to the community even when you can no longer maintain and support it
+ yourself.
+
+ \LPPLsubsubsection{Derived Works That Are Not Replacements}
+ \label{LPPL:NotReplacements}
+
+ Several clauses of the \LPPL\ specify means to provide reliability
+ and stability for the user community. They therefore concern
+ themselves with the case that a Derived Work is intended to be used
+ as a (compatible or incompatible) replacement of the original
+ Work. If this is not the case (e.g., if a few lines of code are
+ reused for a completely different task), then clauses 6b and 6d
+ shall not apply.
+
+ \LPPLsubsubsection{Important Recommendations}
+ \label{LPPL:Recommendations}
+
+ \LPPLparagraph{Defining What Constitutes the Work}
+
+ The \LPPL\ requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a way
+ for the licensee to determine which files constitute the Work. This
+ could, for example, be achieved by explicitly listing all the files
+ of the Work near the copyright notice of each file or by using a
+ line such as:
+\begin{verbatim}
+ % This work consists of all files listed in manifest.txt.
+\end{verbatim}
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
+\end{LPPLicense}
+
+
+
+
+\subsection{GNU Free Documentation License, Version 1.2, November 2002}
+\label{label_fdl}
+
+
+% \textbf{Copyright 2000,2001,2002 Free Software Foundation, Inc.}\par
+% 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+% \begin{quotation}
+% Everyone is allowed to distribute verbatim copies of this
+% license document, but modification of it is not allowed.
+% \end{quotation}
+
+\subsubsection{Preamble}
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document ``free'' in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+\subsubsection{Applicability and definitions}
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The \textbf{``Document''}, below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as \textbf{``you''}. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A \textbf{``Modified Version''} of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A \textbf{``Secondary Section''} is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The \textbf{``Invariant Sections''} are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The \textbf{``Cover Texts''} are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A \textbf{``Transparent''} copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called \textbf{``Opaque''}.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The \textbf{``Title Page''} means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section \textbf{``Entitled XYZ''} means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as \textbf{``Acknowledgements''},
+\textbf{``Dedications''}, \textbf{``Endorsements''}, or \textbf{``History''}.)
+To \textbf{``Preserve the Title''}
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+\subsubsection{Verbatim Copying}
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+\subsubsection{Copying in Quantity}
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+\subsubsection{Modifications}
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+\begin{itemize}
+\item[A.]
+ Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+
+\item[B.]
+ List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has fewer than five),
+ unless they release you from this requirement.
+
+\item[C.]
+ State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+\item[D.]
+ Preserve all the copyright notices of the Document.
+
+\item[E.]
+ Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+\item[F.]
+ Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+
+\item[G.]
+ Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+
+\item[H.]
+ Include an unaltered copy of this License.
+
+\item[I.]
+ Preserve the section Entitled ``History'', Preserve its Title, and add
+ to it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section Entitled ``History'' in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+
+\item[J.]
+ Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the ``History'' section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+
+\item[K.]
+ For any section Entitled ``Acknowledgements'' or ``Dedications'',
+ Preserve the Title of the section, and preserve in the section all
+ the substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+
+\item[L.]
+ Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+
+\item[M.]
+ Delete any section Entitled ``Endorsements''. Such a section
+ may not be included in the Modified Version.
+
+\item[N.]
+ Do not retitle any existing section to be Entitled ``Endorsements''
+ or to conflict in title with any Invariant Section.
+
+\item[O.]
+ Preserve any Warranty Disclaimers.
+\end{itemize}
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+\subsubsection{Combining Documents}
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all sections
+Entitled ``Endorsements''.
+
+
+\subsubsection{Collection of Documents}
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+\subsubsection{Aggregating with independent Works}
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+
+\subsubsection{Translation}
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+\subsubsection{Termination}
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+\subsubsection{Future Revisions of this License}
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+\subsubsection{Addendum: How to use this License for your documents}
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+\bigskip
+\begin{quote}
+ Copyright \copyright \textsc{year your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the 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 ``GNU
+ Free Documentation License''.
+\end{quote}
+\bigskip
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with \dots\ Texts.'' line with this:
+
+\bigskip
+\begin{quote}
+ with the Invariant Sections being \textsc{list their titles}, with the
+ Front-Cover Texts being \textsc{list}, and with the Back-Cover
+ Texts being \textsc{list}.
+\end{quote}
+\bigskip
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+
+
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "beameruserguide"
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main.tex
index 992375bc778..e0e49b657d9 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-main.tex
@@ -1,8 +1,12 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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
@@ -12,13 +16,9 @@
\usepackage[version=0.96]{pgf}
\usepackage{tikz}
-\usepackage{pgflibraryarrows}
-\usepackage{pgflibraryshapes}
-\usepackage{pgflibrarysnakes}
-\usepackage{pgflibraryautomata}
-\usepackage{pgflibraryplotmarks}
-\usepackage{pgflibrarytikzbackgrounds}
-\usepackage{pgflibrarytikztrees}
+
+\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}
@@ -36,7 +36,7 @@
\renewcommand*\l@subsubsection{\@dottedtocline{3}{4.3em}{3.2em}}
\makeatother
-%\includeonly{pgfmanual-en-tikz-shapes}
+%\includeonly{pgfmanual-en-tutorial-nodes}
% Global styles:
\tikzstyle{every plot}=[prefix=plots/pgf-]
@@ -46,9 +46,13 @@
\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{}
@@ -57,7 +61,7 @@
\tikzname\ and \pgfname
\Large
-Manual for Version \pgfversion
+Manual for version \pgfversion
\vskip 3cm
@@ -86,16 +90,43 @@ Manual for Version \pgfversion
\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{The \tikzname\ and \pgfname\ Packages\\
- Manual for Version \pgfversion\\[1mm]
+\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\\
- \href{mailto:tantau@users.sourceforge.net}{\texttt{tantau@users.sourceforge.net}}}
+ \normalsize Institut f\"ur Theoretische Informatik\\[-1mm]
+ \normalsize Universit\"at zu L\"ubeck}
\maketitle
@@ -103,17 +134,18 @@ Manual for Version \pgfversion
\clearpage
-\part{Getting Started}
-This part is intended to help you get started with the \pgfname\
-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 \tikzname, 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
-\pgfname.
+\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
@@ -122,10 +154,46 @@ general. The information in this section is not specific to
(0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0) -- (2,0);
\end{codeexample}
-\include{pgfmanual-en-introduction}
-\include{pgfmanual-en-installation}
\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}
@@ -178,18 +246,107 @@ general. The information in this section is not specific to
-\part{Libraries and Utilities}
+\part{Libraries}
\label{part-libraries}
-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.
+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
@@ -214,7 +371,6 @@ depend on \pgfname\ or they are designed to work well together with
\end{tikzpicture}
\end{codeexample}
-\include{pgfmanual-en-libraries}
\include{pgfmanual-en-pgffor}
\include{pgfmanual-en-pages}
\include{pgfmanual-en-xxcolor}
@@ -261,6 +417,7 @@ depend on \pgfname\ or they are designed to work well together with
\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}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pages.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pages.tex
index 3b6480b4f8e..f6097340d54 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pages.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pages.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{Page Management}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex
index 566464c5ea0..a2be81b9d7d 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgffor.tex
@@ -1,8 +1,12 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
+
\section{Repeating Things: The Foreach Statement}
\label{section-foreach}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-commands.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-commands.tex
index 743e357485c..fb302c207b6 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-commands.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-commands.tex
@@ -1,8 +1,12 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
+
\section{Commands of the System Layer}
@@ -612,6 +616,52 @@ whenever a stroking or a filling operation is done.
\end{command}
+
+
+\subsection{Pattern System Commands}
+
+
+\begin{command}{\pgfsys@declarepattern
+ \marg{name}\marg{$x_1$}\marg{$y_1$}\marg{$x_2$}\marg{$y_2$}
+ \marg{$x$ step}\marg{$y$ step}\marg{code}\marg{flag}}
+ This command declares a new colored or uncolored pattern, depending
+ on whether \meta{flag} is |0|, which means uncolored, or |1|, which
+ means colored. Uncolored patterns have no inherent color, the color
+ is provided when they are set. Colored patters have an inherent
+ color.
+
+ The \meta{name} is a name for later use when the pattern is to be
+ shown. The pairs $(x_1,y_1)$ and $(x_2,y_2)$ must describe a
+ bounding box of the pattern \meta{code}.
+
+ The tiling step of the pattern is given by \meta{$x$ step} and
+ \meta{$y$ step}.
+
+ \example
+\begin{codeexample}[code only]
+\pgfsys@declarepattern{hori}{-.5pt}{0pt}{.5pt}{3pt}{3pt}{3pt}
+{\pgfsys@moveto{0pt}{0pt}\pgfsys@lineto{0pt}{3pt}\pgfsys@stroke}
+{0}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfsys@setpatternuncolored\marg{name}\marg{red}\marg{green}\marg{blue}}
+ Sets the fill color to the pattern named \meta{name}. This pattern
+ must previously have been declared with \meta{flag} set to |0|. The
+ color of the pattern is given in the parameters \meta{red},
+ \meta{green}, and \meta{blue} in the usual way.
+
+ The fill color ``pattern'' will persist till the next color command
+ that modifies the fill color.
+\end{command}
+
+\begin{command}{\pgfsys@setpatterncolored\marg{name}}
+ Sets the fill color to the pattern named \meta{name}. This pattern
+ must have been declared with the |1| flag.
+\end{command}
+
+
+
\subsection{Scoping System Commands}
The scoping commands are used to keep changes of the graphics state
@@ -837,6 +887,81 @@ commands do not open a graphics scope and can be opened and closed
\end{command}
+\subsection{Position Tracking Commands}
+
+The following commands are used to determine the position of text on a
+page. This is a rather complicated process in general since at the
+moment when the text is read by \TeX\ the final position cannot be
+determined, yet. For example, the text might be put in a box which is
+later put in the headline or perhaps in the footline or perhaps even
+on a different page.
+
+For these reasons, position tracking is typically a two-stage
+process. In a first stage you indicate that a certain position is of
+interest by \emph{marking} it. This will (depending on the details of
+the backend driver) cause page coordinates or this position to be
+written to a |.aux| file when the page is shipped. Possibly, the
+position might also be determined at an even later stage. Then, on a
+second run of \TeX, the position is read from the |.aux| file and can
+be used.
+
+\begin{command}{\pgfsys@markposition\marg{name}}
+ Marks a position on the page. This command should be given while
+ normal typesetting is done such as in
+\begin{codeexample}[code only]
+The value of $x$ is \pgfsys@markposition{here}important.
+\end{codeexample}
+ It causes the position |here| to be saved when the page is shipped
+ out.
+\end{command}
+
+\begin{command}{\pgfsys@getposition\marg{name}\marg{macro}}
+ This command retrieves a position that has been marked on an earlier
+ run of \TeX\ on the current file. The \meta{macro} must be a macro
+ name such as |\mymarco|. It will redefined such that it is
+ \begin{itemize}
+ \item either just |\relax| or
+ \item a |\pgfpoint...| command.
+ \end{itemize}
+ The first case will happen when the position has not been marked at
+ all or when the file is typeset for the first time, when the
+ coordinates are not yet available.
+
+ In the second case, executing \meta{macro} yields the position on
+ the page that is to be interpreted as follows: A coordinate like
+ |\pgfpoint{2cm}{3cm}| means ``2cm to the right and 3cm up from the
+ origin of the page.'' The position of the origin of the page is not
+ guaranteed to be at the lower left corner, it is only guaranteed
+ that all pictures on a page use the same origin.
+
+ To determine the lower left corner of a page, you can call
+ |\pgfsys@getposition| with \meta{name} set to the special name
+ |pgfpageorigin|. By shifting all positions by the amount returned by
+ this call you can position things absolutely on a page.
+
+ \example Referencing a point or the page:
+\begin{codeexample}[code only]
+The value of $x$ is \pgfsys@markposition{here}important.
+
+Lots of text.
+
+\hbox{\pgfsys@markposition{myorigin}%
+\begin{pgfpicture}
+ % Switch of size protocol
+ \pgfpathmoveto{\pgfpointorigin}
+ \pgfusepath{use as bounding box}
+
+ \pgfsys@getposition{here}{\hereposition}
+ \pgfsys@getposition{myorigin}{\thispictureposition}
+
+ \pgftransformshift{\pgfpointscale{-1}{\thispictureposition}}
+ \pgftransformshift{\hereposition}
+
+ \pgfpathcircle{\pgfpointorigin}{1cm}
+ \pgfusepath{draw}
+\end{pgfpicture}}
+\end{codeexample}
+\end{command}
\subsection{Internal Conversion Commands}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-overview.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-overview.tex
index 091afdc9e80..e2ec6f4e8ef 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-overview.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-overview.tex
@@ -1,8 +1,13 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
+
+
\section{Design of the System Layer}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-paths.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-paths.tex
index 0b87a7d108b..8cf776ca3dd 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-paths.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-paths.tex
@@ -1,8 +1,13 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
+
+
\section{The Soft Path Subsystem}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-protocol.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-protocol.tex
index 53e78421957..b02713dc849 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-protocol.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-pgfsys-protocol.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
\section{The Protocol Subsystem}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-actions.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-actions.tex
index 4539f7be0fb..33bca9f97ac 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-actions.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-actions.tex
@@ -1,9 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Actions on Paths}
@@ -68,6 +70,10 @@ abbreviations:
Inside |{tikzpicture}| this is an abbreviation for |\path[fill,draw]|.
\end{command}
+\begin{command}{\pattern}
+ Inside |{tikzpicture}| this is an abbreviation for |\path[pattern]|.
+\end{command}
+
\begin{command}{\shade}
Inside |{tikzpicture}| this is an abbreviation for |\path[shade]|.
\end{command}
@@ -682,6 +688,73 @@ To fill a path, use the following option:
\end{itemize}
+
+\subsubsection{Graphic Parameters: Fill Pattern}
+
+\label{section-fill-pattern}
+Instead of filling a path with a single solid color, it is also
+possible to fill it with a \emph{tiling pattern}. Imagine a small tile
+that contains a simple picture like a star. Then these tiles are
+(conceptually) repeated infinitely in all directions, but clipped
+against the path.
+
+Tiling patterns come in two variants: \emph{inherently
+ colored patterns} and \emph{form-only patterns}. An inherently colored
+pattern is, say, a red star with a black border and will always look
+like this. A form-only pattern may have a different color each time
+it is used, only the form of the pattern will stay the same. As such,
+form-only patterhns do not have any colors of their own, but when it
+is used the current \emph{pattern color} is used as its color.
+
+Patterns are not overly flexible. In particular, it is not possible to
+change the size or orientation of a pattern without declaring a new
+pattern. For complicated case, it may be easier to use two nested
+|\foreach| statements to simulate a pattern, but patterns are rendered
+\emph{much} more quickly than simulated ones.
+
+\begin{itemize}
+ \itemoption{pattern}\opt{|=|\meta{name}}
+ This option causes the path to be filled with a pattern. If the
+ \meta{name} is given, this pattern is used, otherwise the pattern
+ set in the enclosing scope is used. As for the |draw| and |fill|
+ options, setting \meta{name} to |none| disables filling locally.
+
+ The pattern works like a fill color. In particular, setting a new
+ fill color will fill the path with a solid color once more.
+
+ Strangely, no \meta{name}s are permissible by default. You neet to
+ load for instance |pgflibrarypatterns|, see
+ Section~\ref{section-library-patterns}, to install predefined
+ patterns.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[pattern=dots] (0,0) circle (1cm);
+ \draw[pattern=fivepointed stars] (0,0) rectangle (3,1);
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemoption{pattern color}|=|\meta{color}
+ This option is used to set the color to be used for form-only
+ patterns. This option has no effect on inherently colored patterns.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[pattern color=red,pattern=fivepointed stars] (0,0) circle (1cm);
+ \draw[pattern color=blue,pattern=fivepointed stars] (0,0) rectangle (3,1);
+\end{tikzpicture}
+\end{codeexample}
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \def\mypath{(0,0) -- +(0,1) arc (180:0:1.5cm) -- +(0,-1)}
+ \fill [red] \mypath;
+ \pattern[pattern color=white,pattern=bricks] \mypath;
+\end{tikzpicture}
+\end{codeexample}
+\end{itemize}
+
+
\subsubsection{Graphic Parameters: Interior Rules}
The following two options can be used to decide how interior points
@@ -708,8 +781,8 @@ should be determined:
% Counter-clockwise rectangle
(0.25,0.25) -- (0.75,0.25) -- (0.75,0.75) -- (0.25,0.75) -- cycle;
- \draw[->] (0,1) (.4,1);
- \draw[->] (0.75,0.75) (0.3,.75);
+ \draw[->] (0,1) -- (.4,1);
+ \draw[->] (0.75,0.75) -- (0.3,.75);
\draw[->] (0.5,0.5) -- +(0,1) node[above] {crossings: $-1+1 = 0$};
@@ -720,8 +793,8 @@ should be determined:
% Clockwise rectangle
(0.25,0.25) -- (0.25,0.75) -- (0.75,0.75) -- (0.75,0.25) -- cycle;
- \draw[->] (0,1) (.4,1);
- \draw[->] (0.25,0.75) (0.4,.75);
+ \draw[->] (0,1) -- (.4,1);
+ \draw[->] (0.25,0.75) -- (0.4,.75);
\draw[->] (0.5,0.5) -- +(0,1) node[above] {crossings: $1+1 = 2$};
\end{scope}
@@ -1033,9 +1106,12 @@ right of picture.
There is a node that allows you to get the size of the current
bounding box. The |current bounding box| node has the |rectangle|
-shape |rectangle| shape and its size is always the size of the current
+shape and its size is always the size of the current
bounding box.
+Similarly, the |current path bounding box| node has the |rectangle|
+hape and the size of the bounding box of the current path.
+
\begin{codeexample}[]
\begin{tikzpicture}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex
index 6ce31747a18..c10e98f39d5 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-coordinates.tex
@@ -1,20 +1,63 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Specifying Coordinates}
-\subsection{Coordinates and Coordinate Options}
+\subsection{Overview}
-A \emph{coordinate} is a position in a picture. \tikzname\ uses a
-special syntax for specifying coordinates. Coordinates are always put
-in round brackets. The general syntax is
+A \emph{coordinate} is a position on the canvas on which your picture
+is drawn. \tikzname\ uses a special syntax for specifying
+coordinates. Coordinates are always put in round brackets. The general
+syntax is
\declare{|(|\opt{|[|\meta{options}|]|}\meta{coordinate specification}|)|}.
+The \meta{coordinate specification} specified coordinates using one of
+many different possible \emph{coordinate systems}. Examples are the
+Cartesian coordinate system or polar coordinates or spherical
+coordinates. No matter which coordinate system is used, in the end, a
+specific point on the canvas is represented by the coordinate.
+
+There are two ways of specifying which coordinate system should be used:
+\begin{description}
+\item[Explicitly] You can specify the coordinate system explicitly. To
+ do so, you give the name of the coordinate system at the beginning,
+ followed by |cs:|, which stands for ``coordinate system,'' followed
+ by a specification of the coordinate using the key-value
+ syntax. Thus, the general syntax for \meta{coordinate specification}
+ in the explicit case is |(|\meta{coordinate system}| cs:|\meta{list
+ of key-value pairs specific to the coordinate system}|)|.
+\item[Implicitly] The explicit specification is often too verbose when
+ numerous coordinates should be given. Because of this, for the
+ coordinate systems that you are likely to use often a special syntax
+ is provided. \tikzname\ will notice when you use a coordinate
+ specified in a special syntax and will choose the correct coordinate
+ system automatically.
+\end{description}
+
+Here is an example in which explicit the coordinate systems are
+specified explicitly:
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[style=help lines] (0,0) grid (3,2);
+ \draw (canvas cs:x=0cm,y=2mm)
+ -- (canvas polar cs:radius=2cm,angle=30);
+\end{tikzpicture}
+\end{codeexample}
+In the next example, the coordinate systems are implicit:
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[style=help lines] (0,0) grid (3,2);
+ \draw (0cm,2mm) -- (30:2cm);
+\end{tikzpicture}
+\end{codeexample}
+
It is possible to give options that apply only to a single
coordinate, although this makes sense for transformation options
only. To give transformation options for a single coordinate, give
@@ -29,82 +72,205 @@ these options at the beginning in brackets:
\end{tikzpicture}
\end{codeexample}
-\subsection{Simple Coordinates}
-The simplest way to specify coordinates is as a comma-separated pair
-of \TeX\ dimensions as in |(1cm,2pt)| or |(2cm,\textheight)|. As can
-be seen, different units can be mixed. The coordinate specified in
-this way means ``1cm to the right and 2pt up from the origin of the
-picture.'' You can also write things like |(1cm+2pt,2pt)| since the
-|calc| package is used.
+\subsection{Coordinate Systems}
+\subsubsection{Canvas, XYZ, and Polar Coordinate Systems}
-\subsection{Polar Coordinates}
+Let us start with the basic coordinate systems.
-You can also specify coordinates in polar coordinates. In this case,
-you specify an angle and a distance, separated by a colon as in
-|(30:1cm)|. The angle must always be given in degrees and should be
-between $-360$ and $720$.
+\begin{coordinatesystem}{canvas}
+ The simplest way of specifying a coordinate is to use the |canvas|
+ coordinate system. You provide a dimension $d_x$ using the |x=|
+ option and another dimension $d_y$ using the |y=| option. The position on
+ the canvas is located at the position that is $d_x$ to the right and
+ $d_y$ above the origin.
+ \begin{itemize}
+ \itemoption{x}|=|\meta{dimension} Distance by which the coordinate
+ is to the right of the origin. You can also write things like
+ |1cm+2pt| since the |calc| package is used.
+ \itemoption{y}|=|\meta{dimension} Distance by which the coordinate
+ is above the origin.
+ \end{itemize}
\begin{codeexample}[]
-\tikz \draw (0cm,0cm) -- (30:1cm) -- (60:1cm) -- (90:1cm)
- -- (120:1cm) -- (150:1cm) -- (180:1cm);
+\begin{tikzpicture}
+ \draw[style=help lines] (0,0) grid (3,2);
+
+ \fill (canvas cs:x=1cm,y=1.5cm) circle (2pt);
+ \fill (canvas cs:x=2cm,y=-5mm+2pt) circle (2pt);
+\end{tikzpicture}
\end{codeexample}
-Instead of an angle given as a number you can also use certain
-words. For example, |up| is the same as |90|, so that you can write
-|\tikz \draw (0,0) -- (2ex,0pt) -- +(up:1ex);|
-and get \tikz \draw (0,0) -- (2ex,0pt) -- +(up:1ex);. Apart from |up|
-you can use |down|, |left|, |right|, |north|, |south|, |west|, |east|,
-|north east|, |north west|, |south east|, |south west|, all of which
-have their natural meaning.
+ To specify a coordinate in the coordinate system implicitly, you use
+ two dimensions that are seperated by a comma as in |(0cm,3pt)| or
+ |(2cm,\textheight)|.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[style=help lines] (0,0) grid (3,2);
+ \fill (1cm,1.5cm) circle (2pt);
+ \fill (2cm,-5mm+2pt) circle (2pt);
+\end{tikzpicture}
+\end{codeexample}
+\end{coordinatesystem}
+
+
+\begin{coordinatesystem}{xyz}
+ The |xyz| coordinate system allows you to specify a point as a
+ multiple of three vectors called the $x$-, $y$-, and
+ $z$-vectors. By default, the $x$-vector points 1cm to the right,
+ the $y$-vector points 1cm upwards, but this can be changed
+ arbitrarily as explained in Section~\ref{section-xyz}. The default
+ $z$-vector points to $\bigl(-\frac{1}{\sqrt2}
+ \textrm{cm},-\frac{1}{\sqrt2}\textrm{cm}\bigr)$.
+
+ To specify the factors by which the vectors should be multiplied
+ before being added, you use the following three options:
+ \begin{itemize}
+ \itemoption{x}|=|\meta{factor} Factor by which the $x$-vector is
+ multiplied. If this option is not given, |0| is used.
+ \itemoption{y}|=|\meta{factor} Works like |x|.
+ \itemoption{z}|=|\meta{factor} Works like |x|.
+ \end{itemize}
+\begin{codeexample}[]
+\begin{tikzpicture}[->]
+ \draw (0,0) -- (xyz cs:x=1);
+ \draw (0,0) -- (xyz cs:y=1);
+ \draw (0,0) -- (xyz cs:z=1);
+\end{tikzpicture}
+\end{codeexample}
+ This coordinate system can also be selected implicitly. To do so,
+ you just provide two or three comma-seperated factors (not
+ dimensions).
+\begin{codeexample}[]
+\begin{tikzpicture}[->]
+ \draw (0,0) -- (1,0);
+ \draw (0,0) -- (0,1,0);
+ \draw (0,0) -- (0,0,1);
+\end{tikzpicture}
+\end{codeexample}
+\end{coordinatesystem}
+
+
+\begin{coordinatesystem}{canvas polar}
+ The |canvas polar| coordinate system allows you to specify
+ polar coordinates. You provide an angle using the |angle=| option
+ and a radius using the |radius=| option. This yields the point on
+ the canvas that is at the given radius distance from the origin at
+ the given degree. A degree of zero points to the right, a degree of
+ 90 upward.
+ \begin{itemize}
+ \itemoption{angle}|=|\meta{degrees} The angle of the coordinate.
+ The angle must always be given in degrees and should be between
+ $-360$ and $720$.
+ \itemoption{radius}|=|\meta{dimension} The distance from the origin.
+ \itemoption{x radius}|=|\meta{dimension} A polar coordinate is,
+ after all, just a point on a circle of the given \meta{radius}. When
+ you provide an $x$-radius and also a $y$-radius, you specify an
+ ellipse instead of a circle. The |radius| option has the same effect
+ as specifiying identical |x radius| and |y radius| options.
+ \itemoption{y radius}|=|\meta{dimension} Works like |x radius|.
+ \end{itemize}
+\begin{codeexample}[]
+\tikz \draw (0,0) -- (canvas polar cs:angle=30,radius=1cm);
+\end{codeexample}
-\subsection{Xy- and Xyz-Coordinates}
+ The implicit form for canvas polar coodinates is the following:
+ you specify the angle and the distance, separated by a colon as in
+ |(30:1cm)|.
-You can specify coordinates in \pgfname's $xy$-coordinate system. In
-this case, you provide two unit-free numbers, separated by a comma as
-in |(2,-3)|. This means ``add twice the current \pgfname\ $x$-vector and
-subtract three times the $y$-vector.'' By default, the $x$-vector
-points 1cm to the right, the $y$-vector points 1cm upwards, but this
-can be changed arbitrarily using the |x| and~|y| graphic options.
+\begin{codeexample}[]
+\tikz \draw (0cm,0cm) -- (30:1cm) -- (60:1cm) -- (90:1cm)
+ -- (120:1cm) -- (150:1cm) -- (180:1cm);
+\end{codeexample}
-Similarly, you can specify coordinates in the $xyz$-coordinate
-system. The only difference to the $xy$-coordinates is that you
-specify three numbers separated by commas as in |(1,2,3)|. This is
-interpreted as ``once the $x$-vector plus twice the $y$-vector plus
-three times the $z$-vector.'' The default $z$-vector points to
-$\bigl(-\frac{1}{\sqrt2}
-\textrm{cm},-\frac{1}{\sqrt2}\textrm{cm}\bigr)$. Consider the
-following example:
+ Two different radii are specified by writing |(30:1cm and 2cm)|.
+
+ For the implicit form, instead of an angle given as a number you can
+ also use certain words. For example, |up| is the same as |90|, so
+ that you can write |\tikz \draw (0,0) -- (2ex,0pt) -- +(up:1ex);|
+ and get \tikz \draw (0,0) -- (2ex,0pt) -- +(up:1ex);. Apart from |up|
+ you can use |down|, |left|, |right|, |north|, |south|, |west|, |east|,
+ |north east|, |north west|, |south east|, |south west|, all of which
+ have their natural meaning.
+\end{coordinatesystem}
+
+\begin{coordinatesystem}{xyz polar}
+ This coordinate system work similarly to the |canvas polar|
+ system. However, the radius and the angle are interpreted in the
+ $xy$-coordinate system, not in the canvas system. More detailedly,
+ consider the circle or ellipse whose half axes are given by the
+ current $x$-vector and the current $y$-vector. Then, consider the
+ point that lies at a given angle on this ellipse, where an angle of
+ zero is the same as the $x$-vector and an angle of 90 is the
+ $y$-vector. Finally, multiply the resulting vector by the given
+ radius factor. Voilà.
+ \begin{itemize}
+ \itemoption{angle}|=|\meta{degrees} The angle of the coordinate
+ interpreted in the ellipse whose axes are the $x$-vector and the
+ $y$-vector.
+ \itemoption{radius}|=|\meta{factor} A factor by which the $x$-vector
+ and $y$-vector are multiplied prior to forming the ellipse.
+ \itemoption{x radius}|=|\meta{dimension} A specific factor by which
+ only the $x$-vector is multiplied.
+ \itemoption{y radius}|=|\meta{dimension} works like |x radius|.
+ \end{itemize}
+\begin{codeexample}[]
+\begin{tikzpicture}[x=1.5cm,y=1cm]
+ \draw[help lines] (0cm,0cm) grid (3cm,2cm);
+
+ \draw (0,0) -- (xyz polar cs:angle=0,radius=1);
+ \draw (0,0) -- (xyz polar cs:angle=30,radius=1);
+ \draw (0,0) -- (xyz polar cs:angle=60,radius=1);
+ \draw (0,0) -- (xyz polar cs:angle=90,radius=1);
+
+ \draw (xyz polar cs:angle=0,radius=2)
+ -- (xyz polar cs:angle=30,radius=2)
+ -- (xyz polar cs:angle=60,radius=2)
+ -- (xyz polar cs:angle=90,radius=2);
+ \end{tikzpicture}
+\end{codeexample}
+
+ The implicit version of this option is the same as the implicit
+ version of |canvas polar|, only you do not provide a unit.
\begin{codeexample}[]
-\begin{tikzpicture}[->]
- \draw (0,0,0) -- (1,0,0);
- \draw (0,0,0) -- (0,1,0);
- \draw (0,0,0) -- (0,0,1);
-\end{tikzpicture}
+\tikz[x={(0cm,1cm)},y={(-1cm,0cm)}]
+ \draw (0,0) -- (30:1) -- (60:1) -- (90:1)
+ -- (120:1) -- (150:1) -- (180:1);
\end{codeexample}
+\end{coordinatesystem}
+
+\begin{coordinatesystem}{xy polar}
+ This is just an alias for |xyz polar|, which some people might
+ prefer as there is no x-coordinate involved in the |xyz polar|
+ coordinates.
+\end{coordinatesystem}
-\subsection{Node Coordinates}
+\subsubsection{Node Coordinate System}
\label{section-node-coordinates}
In \pgfname\ and in \tikzname\ it is quite easy to define a node that you
wish to reference at a later point. Once you have defined a node,
-there are different ways of referencing points of the node.
-
-
-\subsubsection{Named Anchor Coordinates}
-
-An \emph{anchor coordinate} is a point in a node that you have
-previously defined using the node operation. The syntax is
-|(|\meta{node name}|.|\meta{anchor}|)|, where \meta{node name} is
-the name that was previously used to name the node using the
-|name=|\meta{node name} option or the special node name syntax. Here is
-an example:
-
+there are different ways of referencing points of the node. To do so,
+you use the following coordinate system:
+
+\begin{coordinatesystem}{node}
+ This coordinate system is used to reference a specific point inside
+ or on the border of a previously defined node. It can be used in
+ different ways, so let us go over them one by one.
+
+ You can use three options to specify which coordinate you mean:
+ \begin{itemize}
+ \itemoption{name}|=|\meta{node name} specifies the node in which you
+ which to specify a coordinate. The \meta{node name} is
+ the name that was previously used to name the node using the
+ |name=|\meta{node name} option or the special node name syntax.
+ \itemoption{anchor}|=|\meta{anchor} specifies an anchor of the
+ node. Here is an example:
\begin{codeexample}[]
\begin{tikzpicture}
\node (shape) at (0,2) [draw] {|class Shape|};
@@ -112,77 +278,64 @@ an example:
\node (circle) at (2,0) [draw] {|class Circle|};
\node (ellipse) at (6,0) [draw] {|class Ellipse|};
- \draw (circle.north) |- (0,1);
- \draw (ellipse.north) |- (0,1);
- \draw[-open triangle 90] (rect.north) |- (0,1) -| (shape.south);
+ \draw (node cs:name=circle,anchor=north) |- (0,1);
+ \draw (node cs:name=ellipse,anchor=north) |- (0,1);
+ \draw[-open triangle 90] (node cs:name=rect,anchor=north)
+ |- (0,1) -| (node cs:name=shape,anchor=south);
\end{tikzpicture}
\end{codeexample}
-
-Section~\ref{section-the-shapes} explain which anchors are available
-for the basic shapes.
-
-
-
-
-\subsubsection{Angle Anchor Coordinates}
-
-In addition to the named anchors, it is possible to use the syntax
-\meta{node name}|.|\meta{angle} to name a point of the node's
-border. This point is the coordinate where a ray shot from the center
-in the given angle hits the border. Here is an example:
-
+ \itemoption{angle}|=|\meta{degrees}
+ It is also possible to provide an angle \emph{instead} of an
+ anchor. This coordinate refers to a point of the node's
+ border where a ray shot from the center
+ in the given angle hits the border. Here is an example:
\begin{codeexample}[]
\begin{tikzpicture}
\node (start) [draw,shape=ellipse] {start};
\foreach \angle in {-90, -80, ..., 90}
- \draw (start.\angle) .. controls +(\angle:1cm) and +(-1,0) .. (2.5,0);
+ \draw (node cs:name=start,angle=\angle)
+ .. controls +(\angle:1cm) and +(-1,0) .. (2.5,0);
\end{tikzpicture}
\end{codeexample}
+ \end{itemize}
-
-\subsubsection{Anchor-Free Node Coordinates}
-
-It is also possible to just ``leave out'' the anchor and have \tikzname\
-calculate an appropriate border position for you. Here is an example:
+ It is possible to provide \emph{neither} the |anchor=| option nor
+ the |angle=| option. In this case, \tikzname\ will calculate an
+ appropriate border position for you. Here is an example:
\begin{codeexample}[]
-\begin{tikzpicture}[fill=blue!20]
- \draw[style=help lines] (-1,-2) grid (6,3);
- \path (0,0) node(a) [ellipse,rotate=10,draw,fill] {An ellipse}
- (3,-1) node(b) [circle,draw,fill] {A circle}
- (2,2) node(c) [rectangle,rotate=20,draw,fill] {A rectangle}
- (5,2) node(d) [rectangle,rotate=-30,draw,fill] {Another rectangle};
- \draw[thick] (a) -- (b) -- (c) -- (d);
- \draw[thick,red,->] (a) |- +(1,3) -| (c) |- (b);
- \draw[thick,blue,<->] (b) .. controls +(right:2cm) and +(down:1cm) .. (d);
+\begin{tikzpicture}
+ \path (0,0) node(a) [ellipse,rotate=10,draw] {An ellipse}
+ (3,-1) node(b) [circle,draw] {A circle};
+ \draw[thick] (node cs:name=a) -- (node cs:name=b);
\end{tikzpicture}
\end{codeexample}
-\tikzname\ will be reasonably clever at determining the border points that
-you ``mean,'' but, naturally, this may fail in some situations. If
-\tikzname\ fails to determine an appropriate border point, the center will
-be used instead.
-
-Automatic computation of anchors works only with the line-to operations
-|--|, the vertical/horizontal versions \verb!|-! and \verb!-|!, and
-with the curve-to operation |..|. For other path commands, such as
-|parabola| or |plot|, the center will be used. If this is not desired,
-you should give a named anchor or an angle anchor.
-
-Note that if you use an automatic coordinate for both the start and
-the end of a line-to, as in |--(b)--|, then \emph{two} border
-coordinates are computed with a move-to between them. This is usually
-exactly what you want.
-
-If you use relative coordinates together with automatic anchor
-coordinates, the relative coordinates are always computed relative to
-the node's center, not relative to the border point. Here is an
-example:
+ \tikzname\ will be reasonably clever at determining the border points that
+ you ``mean,'' but, naturally, this may fail in some situations. If
+ \tikzname\ fails to determine an appropriate border point, the center will
+ be used instead.
+
+ Automatic computation of anchors works only with the line-to operations
+ |--|, the vertical/horizontal versions \verb!|-! and \verb!-|!, and
+ with the curve-to operation |..|. For other path commands, such as
+ |parabola| or |plot|, the center will be used. If this is not desired,
+ you should give a named anchor or an angle anchor.
+
+ Note that if you use an automatic coordinate for both the start and
+ the end of a line-to, as in |--(node cs:name=b)--|, then \emph{two}
+ border coordinates are computed with a move-to between them. This
+ is usually exactly what you want.
+
+ If you use relative coordinates together with automatic anchor
+ coordinates, the relative coordinates are computed relative to
+ the node's center, not relative to the border point. Here is an
+ example:
\begin{codeexample}[]
\tikz \draw (0,0) node(x) [draw] {Text}
rectangle (1,1)
- (x) -- +(1,1);
+ (node cs:name=x) -- +(1,1);
\end{codeexample}
Similarly, in the following examples both control points are $(1,1)$:
@@ -190,23 +343,52 @@ Similarly, in the following examples both control points are $(1,1)$:
\begin{codeexample}[]
\tikz \draw (0,0) node(x) [draw] {X}
(2,0) node(y) {Y}
- (x) .. controls +(1,1) and +(-1,1) .. (y);
+ (node cs:name=x) .. controls +(1,1) and +(-1,1) ..
+ (node cs:name=y);
\end{codeexample}
-
-\subsection{Intersection Coordinates}
+ The implicit way of specifying the node coordinate system is to
+ simply use the name of the node in parentheses as in |(a)| or to
+ specify a name together with an anchor or an angle separated by a
+ dot as in |(a.north)| or |(a.10)|.
+
+ Here is a more complete example:
+\begin{codeexample}[]
+\begin{tikzpicture}[fill=blue!20]
+ \draw[style=help lines] (-1,-2) grid (6,3);
+ \path (0,0) node(a) [ellipse,rotate=10,draw,fill] {An ellipse}
+ (3,-1) node(b) [circle,draw,fill] {A circle}
+ (2,2) node(c) [rectangle,rotate=20,draw,fill] {A rectangle}
+ (5,2) node(d) [rectangle,rotate=-30,draw,fill] {Another rectangle};
+ \draw[thick] (a.south) -- (b) -- (c) -- (d);
+ \draw[thick,red,->] (a) |- +(1,3) -| (c) |- (b);
+ \draw[thick,blue,<->] (b) .. controls +(right:2cm) and +(down:1cm) .. (d);
+\end{tikzpicture}
+\end{codeexample}
+\end{coordinatesystem}
-\subsubsection{Intersection of Two Lines}
+
+\subsubsection{Intersection Coordinate Systems}
Often you wish to specify a point that is on the
-intersection of two lines. The first way to specify such an
-intersection is the following: You can use the special syntax
-\declare{|(intersection of |\meta{$p_1$}|--|\meta{$p_2$}%
- | and |\meta{$q_1$}|--|\meta{$q_2$}|)|}. This will yield the
-intersection point of the line going through $p_1$ and $p_2$ and the
-line through $q_1$ and $q_2$. If the lines do not meet or if they are
-identical and arithmetical overflow error will result.
+intersection of two lines. For this, the following coordinate system
+is useful:
+
+\begin{coordinatesystem}{intersection}
+ To specify the intersection of two line, you provide two lines using
+ the following two options:
+ \begin{itemize}
+ \itemoption{first line}|=(|\meta{first coordinate}|)--(|\meta{second coordinate}|)|
+ \itemoption{second line}|=(|\meta{first coordinate}|)--(|\meta{second coordinate}|)|
+ \end{itemize}
+ Note that you have to write |--| between the coordinate, but this
+ does not mean that anything is added to the path. This is simply a
+ special syntax.
+
+ The coordinate specified in this way is the intersection of the two
+ lines. If the lines do not meet or if they are
+ identical and arithmetical overflow error will result.
\begin{codeexample}[]
\begin{tikzpicture}
@@ -214,25 +396,46 @@ identical and arithmetical overflow error will result.
\draw (0,0) coordinate (A) -- (3,2) coordinate (B)
(1,2) -- (3,0);
- \fill[red] (intersection of A--B and 1,2--3,0) circle (2pt);
+ \fill[red] (intersection cs:
+ first line={(A)--(B)},
+ second line={(1,2)--(3,0)}) circle (2pt);
\end{tikzpicture}
\end{codeexample}
-\subsubsection{Intersection of Horizontal and Vertical Lines}
+ The implicit way of specifying this coordinate system is to write
+ \declare{|(intersection of |\meta{$p_1$}|--|\meta{$p_2$
+ }| and |\meta{$q_1$}|--|\meta{$q_2$}|)|}. Note that there are \emph{no}
+ parentheses around the $p_i$ and $q_i$. Thus, you would write
+ |(intersection of A--B and 1,2--3,0)|.
+\end{coordinatesystem}
A frequent special case of intersections is the intersection of a
vertical line going through a point $p$ and a horizontal line going
-through some other point $q$. For this situation there is a special,
-shorter, syntax: You can say either
-\declare{|(|\meta{p}\verb! |- !\meta{q}|)|} or
-\declare{|(|\meta{q}\verb! -| !\meta{p}|)|}.
+through some other point $q$. For this situation there is another
+coordinate system.
+
+\begin{coordinatesystem}{perpendicular}
+ This coordinate system works the same way as |intersection|, only
+ the lines are specified differently:
+
+ \begin{itemize}
+ \itemoption{horizontal line through}|=(|\meta{coordinate}|)|
+ Specifies that one line is a horizontal line that goes through the
+ given coordinate.
+ \itemoption{vertical line through}|=(|\meta{coordinate}|)|
+ Specifies that the other line is vertical and goes through the
+ given coordinate.
+ \end{itemize}
-For example, \verb!(2,1 |- 3,4)! and \verb!(3,4 -| 2,1)! both yield
-the same as \verb!(2,4)! (provided the $xy$-coordinate system has not
-been modified).
+ The implicit syntax is to write \declare{|(|\meta{p}\verb! |- !\meta{q}|)|} or
+ \declare{|(|\meta{q}\verb! -| !\meta{p}|)|}.
-The most useful application of the syntax is to draw a line up to some
-point on a vertical or horizontal line. Here is an example:
+ For example, \verb!(2,1 |- 3,4)! and \verb!(3,4 -| 2,1)! both yield
+ the same as \verb!(2,4)! (provided the $xy$-coordinate system has not
+ been modified).
+
+ The most useful application of the syntax is to draw a line up to some
+ point on a vertical or horizontal line. Here is an example:
\begin{codeexample}[]
\begin{tikzpicture}
@@ -247,6 +450,56 @@ point on a vertical or horizontal line. Here is an example:
\draw[->] (p2) -- (p2 -| yline);
\end{tikzpicture}
\end{codeexample}
+\end{coordinatesystem}
+
+
+\subsubsection{Defining New Coordinate Systems}
+
+While the set of coordinate systems that \tikzname\ can parse via
+their special syntax is fixed, it is possible and quite easy to define
+new explicitly named coordinate systems. For this, the following
+commands are used:
+
+\begin{command}{\tikzdeclarecoordinatesystem\marg{name}\marg{code}}
+ This command declares a new coordinate system named \meta{name} that
+ can later on be used by writing
+ |(|\meta{name}| cs:|\meta{arguments}|)|. When \tikzname\ encounters a coordinate
+ specified in this way, the \meta{arguments} are passed to
+ \meta{code} as argument |#1|.
+
+ It is now the job of \meta{code} to make sense of the
+ \meta{arguments}. At the end of \meta{code}, the two \TeX\ dimensions
+ |\pgf@x| and |\pgf@y| should be have the $x$- and $y$-canvas
+ coordinate of the coordinate.
+
+ It is not necessary, but customary, to parse \meta{arguments} using
+ the key-value syntax. However, you can also parse it in any way you
+ like.
+
+ In the following example, a coordinate system |cylindrical| is
+ defined.
+\begin{codeexample}[]
+\makeatletter
+\define@key{cylindricalkeys}{angle}{\def\myangle{#1}}
+\define@key{cylindricalkeys}{radius}{\def\myradius{#1}}
+\define@key{cylindricalkeys}{z}{\def\myz{#1}}
+\tikzdeclarecoordinatesystem{cylindrical}%
+{%
+ \setkeys{cylindricalkeys}{#1}%
+ \pgfpointadd{\pgfpointxyz{0}{0}{\myz}}{\pgfpointpolarxy{\myangle}{\myradius}}
+}
+\begin{tikzpicture}[z=0.2pt]
+ \draw [->] (0,0,0) -- (0,0,350);
+ \foreach \num in {0,10,...,350}
+ \fill (cylindrical cs:angle=\num,radius=1,z=\num) circle (1pt);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\tikzaliascoordinatesystem\marg{new name}\marg{old name}}
+ Creates an alias of \meta{old name}.
+\end{command}
+
@@ -299,3 +552,5 @@ the following example, the curve ``leaves'' at $30^\circ$ and
\draw[gray,<-] (3,-1) -- +(60:1cm);
\end{tikzpicture}
\end{codeexample}
+
+
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-design.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-design.tex
index 1207f029c38..5f8060625dc 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-design.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-design.tex
@@ -1,9 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Design Principles}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-paths.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-paths.tex
index 9eaffdcd086..37c0be02ec6 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-paths.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-paths.tex
@@ -1,9 +1,11 @@
-% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Syntax for Path Specifications}
@@ -628,7 +630,7 @@ current path.
The \emph{arc operation} allows you to add an arc to the current
path.
\begin{pathoperation}{arc}{|(|\meta{start angle}|:|\meta{end
- angle}|:|\meta{radius}\opt{|/|\meta{half height}}|)|}
+ angle}|:|\meta{radius}\opt{| and |\meta{half height}}|)|}
The arc operation adds a part of a circle of the given radius
between the given angles. The arc will start at the current point
and will end at the end of the arc.
@@ -637,7 +639,7 @@ path.
\begin{tikzpicture}
\draw (0,0) arc (180:90:1cm) -- (2,.5) arc (90:0:1cm);
\draw (4,0) -- +(30:1cm) arc (30:60:1cm) -- cycle;
- \draw (8,0) arc (0:270:1cm/.5cm) -- cycle;
+ \draw (8,0) arc (0:270:1cm and .5cm) -- cycle;
\end{tikzpicture}
\end{codeexample}
@@ -664,20 +666,54 @@ operation.
are given by \meta{corner} and by the previous coordinate. Thus, the
typical way in which a grid is drawn is |\draw (1,1) grid (3,3);|,
which yields a grid filling the rectangle whose corners are at
- $(1,1)$ and $(3,3)$. All coordinate transformations apply to the grid.
+ $(1,1)$ and $(3,3)$. All coordinate transformations apply to the
+ grid.
\begin{codeexample}[]
\tikz[rotate=30] \draw[step=1mm] (0,0) grid (2,2);
\end{codeexample}
- The stepping of the grid is governed by the following options:
+ The \meta{options}, which are local to the |grid| operation, can be
+ used to influence the appearance of the grid. The stepping of the
+ grid is governed by the following options:
\begin{itemize}
- \itemoption{step}|=|\meta{dimension} sets the stepping in both the
- $x$ and $y$-direction.
- \itemoption{xstep}|=|\meta{dimension} sets the stepping in the
+ \itemoption{step}|=|\meta{number or dimension or coordinate} sets the stepping in both the
+ $x$ and $y$-direction. If a dimension is provided, this is used
+ directly. If a number is provided, this number is interpreted in the
+ $xy$-coordinate system. For example, if you provide the number |2|,
+ then the $x$-step is twice the $x$-vector and the $y$-step is twice
+ the $y$-vector set by the |x=| and |y=| options. Finally, if you
+ provide a coordinate, then the $x$-part of this coordinate will be
+ used as the $x$-step and the $y$-part will be used as the
+ $y$-coordinate.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[x=.5cm]
+ \draw[thick] (0,0) grid [step=1] (3,2);
+ \draw[red] (0,0) grid [step=.75cm] (3,2);
+\end{tikzpicture}
+\begin{tikzpicture}
+ \draw (0,0) circle (1);
+ \draw[blue] (0,0) grid [step=(45:1)] (3,2);
+\end{tikzpicture}
+\end{codeexample}
+
+ A complication arises when the $x$- and/or $y$-vector do not point
+ along the axes. Because of this, the actual rule for computing the
+ $x$-step and the $y$-step is the following: As the $x$- and
+ $y$-steps we use the $x$- and $y$-components or the following two
+ vectors: The first vector is either $(\meta{x-grid-step-number},0)$
+ or $(\meta{x-grid-step-dimension},0\mathrm{pt})$, the second vector
+ is $(0,\meta{y-grid-step-number})$ or
+ $(0\mathrm{pt},\meta{x-grid-step-dimension})$.
+
+ \itemoption{xstep}|=|\meta{dimension or number} sets the stepping in the
$x$-direction.
- \itemoption{ystep}|=|\meta{dimension} sets the stepping in the
+\begin{codeexample}[]
+\tikz \draw (0,0) grid [xstep=.5,ystep=.75] (3,2);
+\end{codeexample}
+\itemoption{ystep}|=|\meta{dimension or number} sets the stepping in the
$y$-direction.
\end{itemize}
@@ -1109,13 +1145,40 @@ In detail, the following options govern how marks are drawn:
One plot mark is special: the |ball| plot mark is available only
it \tikzname. The |ball color| determines the balls's color. Do not use
- this option with large number of marks since it will take very long
+ this option with a large number of marks since it will take very long
to render in PostScript.
\begin{tabular}{lc}
Option & Effect \\\hline \vrule height14pt width0pt
\plotmarkentrytikz{ball}
\end{tabular}
+
+ \itemoption{mark repeat}|=|\meta{r}
+ This option tells \tikzname\ that only every $r$th mark should be
+ drawn.
+
+\begin{codeexample}[]
+\tikz \draw plot[mark=x,mark repeat=3,smooth] file {plots/pgfmanual-sine.table};
+\end{codeexample}
+
+ \itemoption{mark phase}|=|\meta{p}
+ This option tells \tikzname\ that the first mark to be draw should
+ be the $p$th, followed by the $(p+r)$th, then the $(p+2r)$th, and so
+ on.
+
+\begin{codeexample}[]
+\tikz \draw plot[mark=x,mark repeat=3,mark phase=6,smooth] file {plots/pgfmanual-sine.table};
+\end{codeexample}
+
+ \itemoption{mark indices}|=|\meta{list}
+ This option allows you to specify explicitly the indices at which a
+ mark should be placed. Counting starts with 1. You can use the
+ |\foreach| syntax, that is, |...| can be used.
+
+\begin{codeexample}[]
+\tikz \draw plot[mark=x,mark indices={1,4,...,10,11,12,...,16,20},smooth]
+ file {plots/pgfmanual-sine.table};
+\end{codeexample}
\itemoption{mark size}|=|\meta{dimension}
Sets the size of the plot marks. For circular plot marks,
@@ -1244,6 +1307,193 @@ use options to change the behavior of |plot|.
+\subsection{The To Path Operation}
+
+The |to| operation is used to add a user-defined path
+from the previous coordinate to the following coordinate. When you
+write |(a) to (b)|, a straight line is added from |a|
+to |b|, exactly as if you had written |(a) -- (b)|. However, if you
+write |(a) to [out=135,in=45] (b)| a curve is added to the path,
+which leaves at an angle of 135$^\circ$ at |a| and arrives at an angle
+of 45$^\circ$ at |b|. This is because the options |in| and |out|
+trigger a special path to be used instead of the straight line.
+
+\begin{pathoperation}{to}{\opt{|[|\meta{options}|]|}
+ \opt{\meta{nodes}} |(|\meta{coordinate}|)|}
+
+ This path operation inserts the path current set via the |to path|
+ option at the current position. The \meta{options} can be used to
+ modify (perhaps implicitly) the |to path| and to setup how the path
+ will be rendered.
+
+ Before the |to path| is inserted, a number of macros are setup that
+ can ``help'' the |to path|. These are |\tikztostart|,
+ |\tikztotarget|, and |\tikztonodes|; they are explained in the
+ following.
+
+ \medskip
+ \textbf{Start and Target Coordinates.}\ \
+ The |to| operation is always followed by a \meta{coordinate}, called
+ the target coordinate. The macro |\tikztotarget| is set to this
+ coordinate (without the parantheses). There is also a \emph{start
+ coordinate}, which is the coordinate preceding the |to|
+ operation. This coordinate can be accessed via the macro
+ |\tikztostart|. In the following example, for the first |to|, the
+ macro |\tikztostart| is |0pt,0pt| and the |\tikztotarget| is
+ |0,2|. For the second |to|, the macro |\tikztostart| is |10pt,10pt|
+ and |\tikztotarget| is |a|.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw[help lines] (0,0) grid (3,2);
+
+ \draw (0,0) to (0,2);
+ \node (a) at (2,2) {a};
+ \draw[red] (10pt,10pt) to (a);
+\end{tikzpicture}
+\end{codeexample}
+
+
+ \medskip
+ \textbf{Nodes on tos.}\ \
+ It is possible to add nodes to the paths constructed by a |to|
+ operation. To do so, you specify the nodes between the |to|
+ keyword and the coordinate (if there are options to the |to|
+ operation, these come first). The effect of |(a) to node {x} (b)|
+ (typically) is the same as if you had written
+ |(a) -- node {x} (b)|, namely that the node is placed on the
+ to. This can be used to add labels to tos:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw (0,0) to node [sloped,above] {x} (3,2);
+
+ \draw (0,0) to[out=90,in=180] node [sloped,above] {x} (3,2);
+\end{tikzpicture}
+\end{codeexample}
+
+ \medskip
+ \textbf{Styles for nodes.}\ \
+ In addition to the \meta{options} given after the |to| operation,
+ the following style is also set at the beginning of the to path:
+ \begin{itemize}
+ \itemstyle{every to}
+ This style is installed at the beginning of every to. By
+ default, it is set to |draw|.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every to}=[draw,dashed]
+ \path (0,0) to (3,2);
+\end{tikzpicture}
+\end{codeexample}
+ \end{itemize}
+
+ \medskip
+ \textbf{Options.}\ \
+ The \meta{options} given with the |to| allow you to influence the
+ appearance of the |to path|. Mostly, these options are used to
+ change the |to path|. This can be used to change the path from a
+ straight line to, say, a curve.
+
+ The path used is set using the following option:
+ \begin{itemize}
+ \itemoption{to path}|=|\meta{path}
+ Whenever an |to| operation is used, the \meta{path} is
+ inserted. More precisely, the following path is added:
+
+ \begin{quote}
+ |[every to,|\meta{options}|] |\meta{path}
+ \end{quote}
+
+ The \meta{options} are the options given to the |to| operation,
+ the \meta{path} is the path set by this option |to path|.
+
+ Inside the \meta{path}, different macros are used to reference the
+ from- and to-coordinates. In detail, these are:
+ \begin{itemize}
+ \item \declare{|\tikztostart|} will expand to the from-coordinate
+ (without the parantheses).
+ \item \declare{|\tikztotarget|} will expand to the to-coordinate.
+ \item \declare{|\tikztonodes|} will expand to the nodes between
+ the |to| operation and the coordinate. Furthermore, these
+ nodes will have the |pos| option set implicitly.
+ \end{itemize}
+
+ Let us have a look at a simple example. The standard straight line
+ for an to is achieved by the following \meta{path}:
+ \begin{quote}
+ |-- (\tikztotarget) \tikztonodes|
+ \end{quote}
+
+ Indeed, this is the default setting for the path. When we write
+ |(a) to (b)|, the \meta{path} will expand to |(a) -- (b)|, when
+ we write
+ \begin{quote}
+ |(a) to[red] node {x} (b)|
+ \end{quote}
+ the \meta{path} will expand to
+ \begin{quote}
+ |(a) -- (b) node[pos] {x}|
+ \end{quote}
+
+ It is not possible to specify the path
+ \begin{quote}
+ |-- \tikztonodes (\tikztotarget)|
+ \end{quote}
+ since \tikzname\ does not allow one to have a macro after |--|
+ that expands to a node.
+
+ Now let us have a look at how we can modify the \meta{path}
+ sensibly. The simplest way is to use a curve.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[to path={
+ .. controls +(1,0) and +(1,0) .. (\tikztotarget) \tikztonodes}]
+
+ \node (a) at (0,0) {a};
+ \node (b) at (2,1) {b};
+ \node (c) at (1,2) {c};
+
+ \draw (a) to node {x} (b)
+ (a) to (c);
+\end{tikzpicture}
+\end{codeexample}
+
+ Here is another example:
+
+\begin{codeexample}[]
+\tikzstyle{my loop}=[->,to path={
+ .. controls +(80:1) and +(100:1) .. (\tikztotarget) \tikztonodes}]
+\tikzstyle{my state}= [circle,draw]
+
+\begin{tikzpicture}[shorten >=2pt]
+ \node [my state] (a) at (210:1) {$q_a$};
+ \node [my state] (b) at (330:1) {$q_b$};
+
+ \draw (a) to node[below] {1} (b)
+ to [my loop] node[above right] {0} (b);
+\end{tikzpicture}
+\end{codeexample}
+
+ \itemoption{execute at begin to}|=|\meta{code}
+ The \meta{code} is executed prior to the to. This can be used to
+ draw one or more additional paths or to do additional
+ computations.
+
+ \itemoption{executed at end to}|=|\meta{code}
+ Works like the previous option, only this code is executed after
+ the to path has been added.
+
+ \itemstyle{every to}
+ This style is installed at the beginning of every to. It is empty
+ by default.
+ \end{itemize}
+\end{pathoperation}
+
+There are a number of predefined |to path|s, see
+Section~\ref{library-to-paths} for a reference.
+
+
\subsection{The Scoping Operation}
@@ -1260,7 +1510,61 @@ a whole.
\subsection{The Node Operation}
-You can add nodes to a path using the |node| operation. Since this
-operation is quite complex and since the nodes are not really part of
-the path itself, there is a separate section dealing with nodes, see
-Section~\ref{section-nodes}.
+There are teo more operations that can be found in paths:
+|node| and |edge|. The first is used to add a so-called node to a
+path. This operation is special in the following sense: It does not
+change the current path in any way. In other words, this operation
+is not really a path operation, but has an effect that is
+``external'' to the path. The |edge| operation has similar effect in
+that it adds something \emph{after} the main parth has been
+drawn. However, it works like the |to| operation, that is, it adds a
+|to| path to the picture after the main path has been drawn.
+
+Since these operations are quite complex, they are described in the
+separate Section~\ref{section-nodes}.
+
+
+
+\subsection{The PGF-Extra Operation}
+
+In some cases you may need to ``do some calculations or some other
+stuff'' while a path is constructed. For this, you would like to
+suspend the construction of the path and suspend \tikzname's parsing
+of the path, you would then like to have some \TeX\ code executed, and
+would then like to resume the parsing of the path. This effect can be
+achieved using the following path operation |\pgfextra|. Note that
+this operation should only be used by real experts and should only be
+used deep inside clever macros, not on normal paths.
+
+\begin{command}{\pgfextra\marg{code}}
+ This command may only be used inside a \tikzname\ path. There it is
+ used like a normal path operation. The construction of the path is
+ temporarily suspended and the \meta{code} is executed. Then, the
+ path construction is resumed.
+
+\begin{codeexample}[]
+\newdimen\mydim
+\begin{tikzpicture}
+ \mydim=1cm
+ \draw (0pt,\mydim) \pgfextra{\mydim=2cm} -- (0pt,\mydim);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
+
+\begin{command}{\pgfextra \meta{code} \texttt{\char`\\endpgfextra}}
+ This is an alternative syntax for the |\pgfextra| command. If the
+ code following |\pgfextra| does not start with a brace, the
+ \meta{code} is executed until |\endpgfextra| is encountered. What
+ actually happens is that |\pgfextra| that is not followed by a brace
+ completely shuts down the \tikzname\ parse and |\endpgfextra| is a
+ normal macro that restarts the parser.
+
+\begin{codeexample}[]
+\newdimen\mydim
+\begin{tikzpicture}
+ \mydim=1cm
+ \draw (0pt,\mydim)
+ \pgfextra \mydim=2cm \endpgfextra -- (0pt,\mydim);
+\end{tikzpicture}
+\end{codeexample}
+\end{command}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-scopes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-scopes.tex
index 5339e802d4a..0b0b5735c9f 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-scopes.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-scopes.tex
@@ -1,9 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section[Hierarchical Structures: Package, Environments, Scopes, and Styles]
{Hierarchical Structures:\\
@@ -20,12 +22,12 @@ apply to everything within the environment.
-\subsection{Loading the Package}
+\subsection{Loading the Package and the Libraries}
\begin{package}{tikz}
This package does not have any options.
- This will automatically load the \pgfname\ package and several other
+ This will automatically load the \pgfname\ package and some other
stuff that \tikzname\ needs (like the |xkeyval| package).
\pgfname\ needs to know what \TeX\ driver you are intending to use. In
@@ -38,6 +40,28 @@ apply to everything within the environment.
\end{package}
+\begin{command}{\usetikzlibrary\marg{list of libraries}}
+ Once \tikzname\ has been loaded, you can use this command to load
+ further libraries. The list of libraries should contain the names of
+ libraries separated by commas. Instead of curly braces, you can also
+ use square brackets, which is something Con\TeX t users will
+ like. If you try to load a library a second time, nothing will
+ happen.
+
+ \example |\usetikzlibrary{arrows}|
+
+ The above command will load a whole bunch of extra arrow tip
+ definitions.
+
+ What this command does is to load the file
+ |pgflibrarytikz|\meta{library}|.code.tex| for each \meta{library} in
+ the \meta{list of libraries}. Thus, to write your own library file,
+ all you need to do is to place a file of the appropriate name
+ somewhere where \TeX\ can find it. \LaTeX, plain \TeX, and Con\TeX t
+ users can then use your library.
+\end{command}
+
+
\subsection{Creating a Picture}
@@ -95,7 +119,7 @@ options are local to the |{tikzpicture}| to which they apply.
The following option influences the baseline of the resulting
picture:
\begin{itemize}
- \itemoption{baseline}\opt{|=|\meta{dimension}}
+ \itemoption{baseline}\opt{|=|\meta{dimension or coordinate}}
Normally, the lower end of the picture is put on the baseline of
the surrounding text. For example, when you give the code
|\tikz\draw(0,0)circle(.5ex);|, \pgfname\ will find out that the
@@ -115,6 +139,25 @@ options are local to the |{tikzpicture}| to which they apply.
$A \mathbin{\tikz[baseline] \draw[->>] (0pt,.5ex) -- (3ex,.5ex);} B$
\end{codeexample}
+ Instead of a \meta{dimension} you can also provide a coordinate in
+ parantheses. Then the effect is to put the baseline on the
+ $y$-coordinate that the give \meta{coordinate} has \emph{at the
+ end of the picture}. This means that, at the end of the picture,
+ the \meta{coordinate} is evaluated and then the baseline is set
+ to the $y$-coordinate of the resulting point. This makes it easy
+ to reference the $y$-coordinate of, say, the base line of nodes.
+\begin{codeexample}[]
+Hello
+\tikz[baseline=(X.base)]
+ \node [cross out,draw] (X) {world.};
+\end{codeexample}
+
+\begin{codeexample}[]
+Top align:
+\tikz[baseline=(current bounding box.north)]
+ \draw (0,0) rectangle (1cm,1ex);
+\end{codeexample}
+
\itemoption{execute at begin picture}|=|\meta{code}
This option can be used to install some code that will be executed
at the beginning of the picture. This option must be
@@ -157,11 +200,16 @@ $A \mathbin{\tikz[baseline] \draw[->>] (0pt,.5ex) -- (3ex,.5ex);} B$
\end{itemize}
\end{environment}
-In plain \TeX, you should use instead the following commands:
+In other \TeX\ format, you should use instead the following commands:
\begin{plainenvironment}{{tikzpicture}\opt{\oarg{options}}}
+ This is the plain \TeX\ version of the environment.
\end{plainenvironment}
+\begin{contextenvironment}{{tikzpicture}\opt{\oarg{options}}}
+ This is the Con\TeX t version of the environment.
+\end{contextenvironment}
+
\subsubsection{Creating a Picture Using a Command}
@@ -259,12 +307,14 @@ chance of doing anything wrong.
\end{itemize}
\end{environment}
-
-In plain \TeX, you use the following commands instead:
-
\begin{plainenvironment}{{scope}\opt{\oarg{options}}}
+ Plain \TeX\ version of the environment.
\end{plainenvironment}
+\begin{contextenvironment}{{scope}\opt{\oarg{options}}}
+ Con\TeX t version of the environment.
+\end{contextenvironment}
+
\subsection{Using Scopes Inside Paths}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-shapes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-shapes.tex
index 4655e63c9a9..6fa844a8875 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-shapes.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-shapes.tex
@@ -1,24 +1,60 @@
-% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
-\section{Nodes}
+\section{Nodes and Edges}
\label{section-nodes}
+\subsection{Overview}
+
+In the present section, the usage of \emph{nodes} in
+\tikzname\ is explained. A node is typically a rectangle or circle or
+another simple shape with some text on it.
+
+Nodes are added to paths using the special path
+operation |node|. Nodes \emph{are not part of the path
+ itself}. Rather, they are added to the picture after the path has
+been drawn.
+
+In Section~\ref{section-nodes-basic} the basic syntax of the node
+operation is explained, followed in Section~\ref{section-nodes-multi}
+by the syntax for multi-part nodes, which are nodes that contain
+several different text parts. After this, the different options for
+the text in nodes are explained. In
+Section~\ref{section-nodes-anchors} the concept of \emph{anchors} is
+introduced along with their usage. In
+Section~\ref{section-nodes-transformations} the different ways
+transformations affect nodes are
+studied. Sections~\ref{section-nodes-placing-1}
+and~\ref{section-nodes-placing-2} are about placing nodes on or next
+to straight lines and curves. In
+Section~\ref{section-nodes-connecting} it is explained how a node can
+be used as a ``pseudo-coordinate.'' Section~\ref{section-nodes-edges}
+introduces the |edge| operation, which
+works similar to the |to| operation and also similar to the |node|
+operation. Section~\ref{section-nodes-predefined} lists the predefined
+shapes. Finally, Section~\ref{section-nodes-executing} explains the
+special |after node path| options.
+
+
\subsection{Nodes and Their Shapes}
-\tikzname\ offers an easy way of adding so-called \emph{nodes} to your
-pictures. In the simplest case, a node is just some text that is
+\label{section-nodes-basic}
+
+In the simplest case, a node is just some text that is
placed at some coordinate. However, a node can also have a border
drawn around it or have a more complex background and
foreground. Indeed, some nodes do not have a text at all, but consist
solely of the background. You can name nodes so that you can reference
-their coordinates later in the picture. However, \emph{nodes cannot be
- referenced across different pictures}.
+their coordinates later in the same picture or, if certain precautions
+are taken as explained in Section~\ref{section-cross-picture-tikz},
+also in different pictures.
There are no special \TeX\ commands for adding a node to a picture; rather,
there is path operation called |node| for this. Nodes are created
@@ -66,6 +102,9 @@ The syntax for specifying nodes is the following:
|y_1|. Your node name should \emph{not} contain any punctuation like
a dot, a comma, or a colon since these are used to detect what kind
of coordinate you mean when you reference a node.
+
+ \itemoption{at}|=|\meta{coordinate}
+ is another way of specifying ath |at| coordinate.
\end{itemize}
The \meta{options} is an optional list of options that \emph{apply
@@ -99,10 +138,9 @@ The syntax for specifying nodes is the following:
\end{codeexample}
In the future, there might be much more complicated shapes available
- such as, say, a shape for a resistor or a shape for a state of a
- finite automaton or a shape for a \textsc{uml} class. Unfortunately,
- creating new shapes is a bit tricky and makes it necessary to use the
- basic layer directly. Life is hard.
+ such as, say, a shape for a resistor or a shape for a \textsc{uml}
+ class. Unfortunately, creating new shapes is a bit tricky and makes
+ it necessary to use the basic layer directly. Life is hard.
To select the shape of a node, the following option is used:
\begin{itemize}
@@ -163,6 +201,8 @@ The is a special syntax for specifying ``light-weighed'' nodes:
\subsection{Multi-Part Nodes}
+\label{section-nodes-multi}
+
Most nodes just have a single simple text label. However, nodes of a
more complicated shapes might be made up from several \emph{node
parts}. For example, in automata theory a so-called Moore state has
@@ -188,12 +228,12 @@ different node parts by using the following command:
\begin{codeexample}[]
\begin{tikzpicture}
- \node [state with output,draw,double,fill=red!20]
+ \node [circle split,draw,double,fill=red!20]
{
% No \nodepart has been used, yet. So, the following is put in the
% ``text'' node part by default.
$q_1$
- \nodepart{output} % Ok, end ``text'' part, start ``output'' part
+ \nodepart{lower} % Ok, end ``text'' part, start ``output'' part
$00$
}; % output part ended.
\end{tikzpicture}
@@ -207,8 +247,8 @@ different node parts by using the following command:
This style is installed at the beginning of every node part named
\meta{part name}.
\begin{codeexample}[]
-\tikzstyle{every output node part}=[red]
-\tikz \node [state with output,draw] {$q_1$ \nodepart{output} $00$};
+\tikzstyle{every lower node part}=[red]
+\tikz \node [circle split,draw] {$q_1$ \nodepart{lower} $00$};
\end{codeexample}
\end{itemize}
\end{command}
@@ -217,6 +257,8 @@ different node parts by using the following command:
\subsection{Options for the Text in Nodes}
+\label{section-nodes-options}
+
The simplest option for the text in nodes is its color. Normally, this
color is just the last color installed using |color=|, possibly
inherited from another scope. However, it is possible to specificly
@@ -266,9 +308,8 @@ following option for this:
\begin{codeexample}[]
\tikzstyle{every text node part}=[font=\itshape]
-\tikzstyle{every output node part}=[font=\footnotesize]
-\tikzstyle{every state with output node}=[draw]
-\tikz \node [state with output] {state \nodepart{output} output};
+\tikzstyle{every lower node part}=[font=\footnotesize]
+\tikz \node [circle split,draw] {state \nodepart{lower} output};
\end{codeexample}
\end{itemize}
@@ -343,10 +384,46 @@ height).
\end{codeexample}
\end{itemize}
+In addition to changing the width of nodes, you can also change the
+height of nodes. This can be done in two ways: First, you can use the
+option |minimum height|, which ensures that the height of the whole
+node is at least the given height (this option is described in more
+detail later). Second, you can use the option |text height|, which
+sets the height of the text itself, more precisely, of the \TeX\ text
+box of the text. Note that the |text height| typically is not the
+height of the shape's box: In addition to the |text height|, an
+internal |inner sep| is added as extra space and the text depth is
+also taken into account.
+
+I recommend using |minimum size| instead of |text height| except for
+special situations.
+
+\begin{itemize}
+ \itemoption{text height}|=|\meta{dimension}
+ Sets the height of the text boxes in shapes. Thus, when you write
+ something like |node {text}|, the |text| is first typeset, resulting
+ in some box of a certain height. This height is then replaced by the
+ height |text height|. The resulting box is then used to determine
+ the size of the shape, which will typically be larger. When you
+ write |text height=| without specifying anything, the ``natural''
+ size of the text box remains unchanged.
+\begin{codeexample}[]
+\tikz \node[draw] {y};
+\tikz \node[draw,text height=10pt] {y};
+\end{codeexample}
+ \itemoption{text depth}|=|\meta{dimension}
+ This option works like |text height|, only for the depth of the text
+ box. This option is mostly useful when you need to ensure a uniform
+ depth of text boxes that need to be aligned.
+\end{itemize}
+
+
\subsection{Placing Nodes Using Anchors}
+\label{section-nodes-anchors}
+
When you place a node at some coordinate, the node is centered on this
coordinate by default. This is often undesirable and it would be
better to have the node to the right or above the actual coordinate.
@@ -461,9 +538,48 @@ more intuitively:
does the same as |anchor=north west|.
\end{itemize}
+A second set of options behaves similarly, namely the |above of|,
+|below of|, and so on options. They cause the same anchors to be set
+as the options without |of|, however, their parameter is different:
+You must provide the name of another node. The current node will then
+be placed, say, above this specified node at a distance given by the
+option |node distance|.
+\begin{itemize}
+ \itemoption{above of}\opt{|=|\meta{node}}
+ This option causes the node to be placed at the distance
+ |node distance| above of \meta{node}. The anchor is |center|.
+\begin{codeexample}[]
+\begin{tikzpicture}[node distance=1cm]
+ \draw[help lines] (0,0) grid (3,2);
+ \node (a) {a};
+ \node (b) [above of=a] {b};
+ \node (c) [above of=b] {c};
+ \node (d) [right of=c] {d};
+ \node (e) [below right of=d] {e};
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{above left of}\opt{|=|\meta{node}}
+ Works like |above of|, only the node is now put above and left. The
+ |node distance| is the Euclidean distance between the two nodes, not
+ the $L_1$-distance.
+ \itemoption{above right of}\opt{|=|\meta{node}} works similarly.
+ \itemoption{left of}\opt{|=|\meta{node}} works similarly.
+ \itemoption{right of}\opt{|=|\meta{node}} works similarly.
+ \itemoption{below of}\opt{|=|\meta{node}} works similarly.
+ \itemoption{below left of}\opt{|=|\meta{node}} works similarly.
+ \itemoption{below right of}\opt{|=|\meta{node}} works similarly.
+ \itemoption{node distance}\opt{|=|\meta{dimension}} sets the
+ distance between nodes that are placed using the |... of|
+ options. Note that this distance is the distance between the
+ centers of the nodes, not the distance between their borders.
+\end{itemize}
+
\subsection{Transformations}
+\label{section-nodes-transformations}
+
+
It is possible to transform nodes, but, by default, transformations do
not apply to nodes. The reason is that you usually do \emph{not} want
your text to be scaled or rotated even if the main graphic is
@@ -502,7 +618,10 @@ example, it certainly sometimes makes sense to rotate a node by
-\subsection{Placing Nodes on a Line or Curve}
+
+\subsection{Placing Nodes on a Line or Curve Explicitly}
+
+\label{section-nodes-placing-1}
Until now, we always placed node on a coordinate that is mentioned in
the path. Often, however, we wish to place nodes on ``the middle'' of
@@ -513,10 +632,6 @@ specifying this: Either explicitly by using the |pos| option or
implicitly by placing the node ``inside'' a path operation. These two
ways are described in the following.
-
-
-\subsubsection{Explicit Use of the Position Option}
-
\label{section-pos-option}
\begin{itemize}
@@ -572,11 +687,78 @@ ways are described in the following.
For all other path construction operations, \emph{the position
placement does not work}, currently. This will hopefully change in
the future (especially for the arc operation).
+
+ \itemoption{auto}\opt{|=|\meta{direction}}
+ This option causes an anchor positions to be calculated
+ automatically according to the following rule. Consider a line
+ between to points. If the \meta{direction} is |left|, then the
+ anchor is chosen such that the node is to the left of this line. If
+ the \meta{direction} is |right|, then the node is to the right of
+ this line. Leaving out \meta{direction} causes automatic placement
+ to be enabled with the last value of |left| or |right| used. A
+ \meta{direction} of |false| disables automatic placement. This
+ happens also whenever an anchor is given explicitly by the
+ |anchor| option or by one of the |above|, |below|, etc.\ options.
+
+ This option only has an effect for nodes that are placed on lines or
+ curves.
+
+\begin{codeexample}[]
+\begin{tikzpicture}[scale=.8,auto=left]
+ \tikzstyle{every node}=[circle,fill=blue!20]
+ \node (a) at (-1,-2) {a};
+ \node (b) at ( 1,-2) {b};
+ \node (c) at ( 2,-1) {c};
+ \node (d) at ( 2, 1) {d};
+ \node (e) at ( 1, 2) {e};
+ \node (f) at (-1, 2) {f};
+ \node (g) at (-2, 1) {g};
+ \node (h) at (-2,-1) {h};
+
+ \tikzstyle{every node}=[fill=red!20]
+ \foreach \from/\to in {a/b,b/c,c/d,d/e,e/f,f/g,g/h,h/a}
+ \draw [->] (\from) -- (\to) node[midway] {\from--\to};
+\end{tikzpicture}
+\end{codeexample}
+ \itemoption{swap}
+ This option exchanges the roles of |left| and |right| in automatic
+ placement. That is, if |left| is the current |auto| placement,
+ |right| is set instead and the other way round.
+\begin{codeexample}[]
+\begin{tikzpicture}[auto]
+ \draw[help lines,use as bounding box] (0,-.5) grid (4,5);
+
+ \draw (0.5,0) .. controls (9,6) and (-5,6) .. (3.5,0)
+ \foreach \pos in {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ {node [pos=\pos,swap,fill=red!20] {\pos}}
+ \foreach \pos in {0.025,0.2,0.4,0.6,0.8,0.975}
+ {node [pos=\pos,fill=blue!20] {\pos}};
+\end{tikzpicture}
+\end{codeexample}
+\begin{codeexample}[]
+\begin{tikzpicture}[shorten >=1pt,node distance=2cm,auto]
+ \draw[help lines] (0,0) grid (3,2);
+
+ \node[state] (q_0) {$q_0$};
+ \node[state] (q_1) [above right of=q_0] {$q_1$};
+ \node[state] (q_2) [below right of=q_0] {$q_2$};
+ \node[state] (q_3) [below right of=q_1] {$q_3$};
+
+ \path[->] (q_0) edge node {0} (q_1)
+ edge node [swap] {1} (q_2)
+ (q_1) edge node {1} (q_3)
+ edge [loop above] node {0} ()
+ (q_2) edge node [swap] {0} (q_3)
+ edge [loop below] node {1} ();
+\end{tikzpicture}
+\end{codeexample}
+
\itemoption{sloped}
This option causes the node to be rotated such that a horizontal
- line becomes a tangent to the curve. The rotation will always be
- done in such a way that text is never ``upside down.'' If you really
- need upside down text, use |[rotate=180]|.
+ line becomes a tangent to the curve. The rotation is normally
+ done in such a way that text is never ``upside down.'' To get
+ upside-down text, use can use |[rotate=180]| or
+ |[allow upside down]|, see below.
\begin{codeexample}[]
\tikz \draw (0,0) .. controls +(up:2cm) and +(left:2cm) .. (1,3)
\foreach \p in {0,0.25,...,1} {node[sloped,above,pos=\p]{\p}};
@@ -587,6 +769,19 @@ ways are described in the following.
\draw (2,-.5) -- (0,0) node[midway,sloped,below] {$y$};
\end{tikzpicture}
\end{codeexample}
+ \itemoption{allow upside down}\opt{|=|\meta{true or false}}
+ If set to |true|, \tikzname\ will not ``righten'' upside down text.
+\begin{codeexample}[]
+\tikz [allow upside down]
+ \draw (0,0) .. controls +(up:2cm) and +(left:2cm) .. (1,3)
+ \foreach \p in {0,0.25,...,1} {node[sloped,above,pos=\p]{\p}};
+\end{codeexample}
+\begin{codeexample}[]
+\begin{tikzpicture}[->,allow upside down]
+ \draw (0,0) -- (2,0.5) node[midway,sloped,above] {$x$};
+ \draw (2,-.5) -- (0,0) node[midway,sloped,below] {$y$};
+\end{tikzpicture}
+\end{codeexample}
\end{itemize}
@@ -619,7 +814,9 @@ There exist styles for specifying positions a bit less ``technically'':
\end{itemize}
-\subsubsection{Implicit Use of the Position Option}
+\subsection{Placing Nodes on a Line or Curve Implicitly}
+
+\label{section-nodes-placing-2}
When you wish to place a node on the line |(0,0) -- (1,1)|,
it is natural to specify the node not following the |(1,1)|, but
@@ -668,7 +865,127 @@ the |--| operation, these will be collected and then reinserted after
the operation with the |pos| option set.
-\subsection{Connecting Nodes}
+\subsection{The Label and Pin Options}
+
+In addition to the |node| path operation, nodes can also be added
+using the |label| and the |pin| option. This is mostly useful
+for simple nodes.
+
+\begin{itemize}
+ \itemoption{label}|=|\opt{|[|\meta{options}|]|}\meta{angle}|:|\meta{text}
+ When this option is given to a |node| operation, it causes
+ \emph{another} node to be added to the path after the current node
+ has been finished. This extra node will have the text
+ \meta{text}. It is placed according to the following rule: Suppose
+ the |node| currently under construction is called |main node| and let us
+ call the label node |label node|. Then the anchor of |label node| is
+ placed at |main node.|\meta{angle}. The anchor that is chosen
+ depends on the \meta{angle}. If the \meta{angle} lies between
+ $-3^\circ$ and $+3^\circ$, then the anchor |west| is chosen, which
+ causes |label node| to be placed right of the right end
+ |main node|. If \meta{angle} lies between $4^\circ$ and $86^\circ$,
+ the anchor |south west| is chosen, causing the |label node| to be
+ placed above and right of the |main node|; and so on.
+\begin{codeexample}[]
+\tikz
+ \node [circle,draw,label=60:$60^\circ$,label=below:$-90^\circ$] {my circle};
+\end{codeexample}
+
+ As can be seen in the above example, instead of specifying
+ \meta{angle} as a number, it is also possible to use |left|,
+ |right|, |above|, |above left|, and so on.
+
+ You can pass \meta{options} to the node |label node|. For this, you
+ provide the options in square brackets before the \meta{angle}. If you
+ do so, you need to add braces around the whole argument of the
+ |label| option and this is also the case if you have brackets or
+ commas or semicolons or anything special in the \meta{text}.
+\begin{codeexample}[]
+\tikz \node [circle,draw,label={[red]above:X}] {my circle};
+\end{codeexample}
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node [circle,draw,label={[name=label node]above left:$a,b$}] {};
+ \draw (label node) -- +(1,1);
+\end{tikzpicture}
+\end{codeexample}
+
+ If you provide multiple |label| options, then multiple extra label
+ nodes are added in the order they are given.
+
+ The following styles influence how labels are drawn:
+ \begin{itemize}
+ \itemoption{label distance}|=|\meta{distance}
+ The \meta{distance} is additionally inserted between the main node
+ and the label node. The default is |0pt|.
+\begin{codeexample}[]
+\tikz[label distance=5mm]
+ \node [circle,draw,label=right:X,
+ label=above right:Y,
+ label=above:Z] {my circle};
+\end{codeexample}
+ \itemstyle{every label}
+ This style is used in every node created by the |label|
+ option. The default is |draw=none,fill=none|.
+ \end{itemize}
+ \itemoption{pin}|=|\opt{|[|\meta{options}|]|}\meta{angle}|:|\meta{text}
+ This is option is quite similar to the |label| option, but there is
+ one difference: In addition to adding a extra node to the picture,
+ it also adds an edge from this node to the main node. This causes
+ the node to look like a pin that has been added to the main node:
+\begin{codeexample}[]
+\tikz \node [circle,fill=blue!50,minimum size=1cm,pin=60:$q_0$] {};
+\end{codeexample}
+
+ The meaning of the \meta{options} and the \meta{angle} and the
+ \meta{text} is exactly the same as for the |node| option. Only, the
+ options and styles the influence the way pins look are different:
+ \begin{itemize}
+ \itemoption{pin distance}|=|\meta{distance}
+ This \meta{distance} is used instead of the |label distance| for
+ the distance between the main node and the label node. The default
+ is |3ex|.
+\begin{codeexample}[]
+\tikz[pin distance=1cm]
+ \node [circle,draw,pin=right:X,
+ pin=above right:Y,
+ pin=above:Z] {my circle};
+\end{codeexample}
+ \itemstyle{every pin}
+ This style is used in every node created by the |pin|
+ option. The default is |draw=none,fill=none|.
+ \itemstyle{every pin edge}
+ This style is used in every edge created by the |pin| optins. The
+ default is |help lines|.
+\begin{codeexample}[]
+\tikzstyle{every pin edge}=[<-,shorten <=1pt,snake=snake,line before snake=4pt]
+\tikz[pin distance=15mm]
+ \node [circle,draw,pin=right:X,
+ pin=above right:Y,
+ pin=above:Z] {my circle};
+\end{codeexample}
+ \itemoption{pin edge}|=|\meta{options}
+ This option can be used to set the options that are to be used
+ in the edge created by the |pin| option. The default is empty.
+\begin{codeexample}[]
+\tikz[pin distance=10mm]
+ \node [circle,draw,pin={[pin edge={blue,thick}]right:X},
+ pin=above:Z] {my circle};
+\end{codeexample}
+\begin{codeexample}[]
+\tikzstyle{every pin edge}=[]
+\tikzstyle{initial}=[pin={[pin distance=5mm,
+ pin edge={<-,shorten <=1pt}]left:start}]
+\tikz \node [circle,draw,initial] {my circle};
+\end{codeexample}
+ \end{itemize}
+\end{itemize}
+
+
+\subsection{Connecting Nodes: Using Nodes as Coordinates}
+
+\label{section-nodes-connecting}
Once you have defined a node and given it a name, you can use this
name to reference it. This can be done in two ways, see also
@@ -716,8 +1033,262 @@ Section~\ref{section-node-coordinates}. Suppose you have said
+\subsection{Connecting Nodes: Using the Edge Operation}
+
+\label{section-nodes-edges}
+
+The |edge| operation works like a |to| operation that is added after
+the main path has been drawn, much like a node is added after the main
+path has been drawn. This allows you to have each |edge| to have a
+different appearance. As the |node| operation, an |edge| temporarily
+suspends the construction of the current path and a new path $p$ is
+constructed. This new path $p$ will be drawn after the main path has
+been drawn. Note that $p$ can be totally different from the main
+path with respect to its options. Also note that if there are
+several |to| and/or |node| operations in the main path, each
+creates its own path(s) and they are drawn in the order that they
+are encountered on the path.
+
+\begin{pathoperation}{edge}{\opt{|[|\meta{options}|]|}
+ \opt{\meta{nodes}} |(|\meta{coordinate}|)|}
+ The effect of the |edge| operation is that after the main path the
+ following path is added to the picture:
+ \begin{quote}
+ |\path[every edge,|\meta{options}|] (\tikztostart) |\meta{path}|;|
+ \end{quote}
+ Here, \meta{path} is the |to path|. Note that, unlike the path added
+ by the |to| operation, the |(\tikztostart)| is added before the
+ \meta{path} (which is unnecessary for the |to| operation, since this
+ coordinate is already part of the main path).
+
+ The |\tikztostart| is the last coordinate on the path just before
+ the |edge| operation, just as for the |node| or |to| operations.
+ However, there is one exception to this rule: If the |edge|
+ operation is directly preceded by a |node| operation, then this
+ just-declared node is the start coordinate (and not, as would
+ normally be the case, the coordinate where this just-declared node
+ is placed -- a small, but subtle difference). In this regard, |edge|
+ differs from both |node| and |to|.
+
+ If there are several |edge| operations in a row, the start coordinate
+ is the same for all of them as their target coordiantes are not,
+ after all, part of the main path. The start coordinate is, thus, the
+ coordinate preceding the first |edge| operation. This is
+ similar to nodes insofar as the |edge| operation does not modify the
+ current path at all. In particular, it does not change the last
+ coordinate visited, see the following example:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node (a) at (0:1) {$a$};
+ \node (b) at (90:1) {$b$} edge [->] (a);
+ \node (c) at (180:1) {$c$} edge [->] (a)
+ edge [<-] (b);
+ \node (d) at (270:1) {$d$} edge [->] (a)
+ edge [dotted] (b)
+ edge [<-] (c);
+\end{tikzpicture}
+\end{codeexample}
+
+ A different way of specifying the above graph using the |edge|
+ operation is the following:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \foreach \name/\angle in {a/0,b/90,c/180,d/270}
+ \node (\name) at (\angle:1) {$\name$};
+
+ \path[->] (b) edge (a)
+ edge (c)
+ edge [-,dotted] (d)
+ (c) edge (a)
+ edge (d)
+ (d) edge (a);
+\end{tikzpicture}
+\end{codeexample}
+
+ As can be seen, the path of the |edge| operation inherits the
+ options from the main path, but you can locally overrule them.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \foreach \name/\angle in {a/0,b/90,c/180,d/270}
+ \node (\name) at (\angle:1.5) {$\name$};
+
+ \path[->] (b) edge node[above right] {$5$} (a)
+ edge (c)
+ edge [-,dotted] node[below,sloped] {missing} (d)
+ (c) edge (a)
+ edge (d)
+ (d) edge [red] node[above,sloped] {very}
+ node[below,sloped] {bad} (a);
+\end{tikzpicture}
+\end{codeexample}
+
+ Instead of |every to|, the style |every edge| is installed at the
+ beginning of the main path.
+ \begin{itemize}
+ \itemstyle{every edge} this is is |draw| by default.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every to}=[draw,dashed]
+ \path (0,0) to (3,2);
+\end{tikzpicture}
+\end{codeexample}
+ \end{itemize}
+\end{pathoperation}
+
+
+\subsection{Referencing Nodes Outside the Current Pictures}
+
+\label{section-cross-picture-tikz}
+
+\subsubsection{Referencing a Node in a Different Picture}
+
+It is possible (but not quite trivial) to reference nodes in pictures
+other than the current one. This means that you can create a picture
+and a node therein and, later, you can draw a line from some other
+position to this node.
+
+To reference nodes in different pictures, proceed as follows:
+\begin{enumerate}
+\item You need to add the |remember picture| option to all pictures
+ that contain nodes that you wish to reference and also to all
+ pictures from which you wish to reference a node in another
+ picture.
+\item You need to add the |overlay| option to paths or to whole
+ pictures that contain references to nodes in different
+ pictures. (This option switches the computation of the
+ bounding box off.)
+\item You need to use a driver that supports picture remembering
+ (currently, this is only pdf\TeX). With the pdf\TeX\ driver you also
+ need to run \TeX\ twice.
+\end{enumerate}
+(For more details on what is going on behind the scenes, see
+Section~\ref{section-cross-pictures-pgf}.)
+
+Let us have a look at the effect of these options.
+\begin{itemize}
+ \itemoption{remember picture}\opt{|=|\meta{true or false}} This option
+ tells \tikzname\ that it should attempt to remember the position of
+ the current picture on the page. This attempt may fail depending on
+ which backend driver is used. Also, even if remembering works, the
+ position may only be available on a second run of \TeX.
+
+ Provided that remebering works, you may consider saying
+\begin{codeexample}[code only]
+\tikzsytle{every picture}+=[remember picture]
+\end{codeexample}
+ to make \tikzname\ remember all pictures. This will add one line in
+ the |.aux| file for each picture in your document -- which typically
+ is not very much. Then, you do not have to worry about remembered
+ pictures at all.
+ \itemoption{overlay}
+ This option is mainly intended for use when nodes in other pictures
+ are referenced, but you can also use it in other situations. The
+ effect of this option is that everything within the current scope is
+ not taken into consideration when the bounding box of the current
+ picture is computed.
+
+ You need to specify this option on all paths (or at least on all
+ parts of paths) that contain a reference to a node in another
+ picture. The reason is that, otherwise, \tikzname\ will attempt to
+ make the current picture large enough to encompass \emph{the node in
+ the other picture}. However, on a second run of \TeX\ this will
+ create an even bigger picture, leading to larger and larger
+ pictures. Unless you know what you are doing, I suggest specifying
+ the |overlay| option with all pictures that contain references to
+ other pictures.
+\end{itemize}
+
+Let us now have a look at a few examples. These examples work only if
+this document is processed with a driver that supports picture
+remembering.
+
+\noindent\begin{minipage}{\textwidth}
+Inside the current text we place two pictures, containing nodes named
+|n1| and |n2|, using
+\begin{codeexample}[code only]
+\tikz[remember picture] \node[circle,fill=red!50] (n1) {};
+\end{codeexample}
+which yields \tikz[remember picture] \node[circle,fill=red!50] (n1)
+{};, and
+\begin{codeexample}[code only]
+\tikz[remember picture] \node[fill=blue!50] (n2) {};
+\end{codeexample}
+yielding the node \tikz[remember picture] \node[fill=blue!50] (n2)
+{};. To connect these nodes, we create another picture using the
+|overlay| option and also the |remember picture| option.
+\begin{codeexample}[]
+\begin{tikzpicture}[remember picture,overlay]
+ \draw[->,very thick] (n1) -- (n2);
+\end{tikzpicture}
+\end{codeexample}
+Note that the last picture is seemingly empty. What happens is that it
+has zero size and contains an arrow that lies well outside its bounds.
+As a last example, we connect a node in another picture to the first
+two nodes. Here, we provide the |overlay| option only with the line
+that we do not wish to count as part of the picture.
+\begin{codeexample}[]
+\begin{tikzpicture}[remember picture]
+ \node (c) [circle,draw] {Big circle};
+
+ \draw [overlay,->,very thick,red,opacity=.5]
+ (c) to[bend left] (n1) (n1) -| (n2);
+\end{tikzpicture}
+\end{codeexample}
+\end{minipage}
+
+
+\subsubsection{Referencing the Current Page Node -- Absolute Positioning}
+
+There is a special node called |current page| that can be used to
+access the current page. It is a node of shape rectangle whose
+|south west| anchor is the lower left corner of the page and whose
+|north east| anchor is the upper right corner of the page. While this
+node is handled in a special way internally, you can reference it as
+if it were defined in some remembered picture other than the current
+one. Thus, by giving the |remembered picture| and the |overlay|
+options to a picture, you can position nodes \emph{absolutely} on a
+page.
+
+The first example places some text in the lower left corner of the
+current page:
+\begin{codeexample}[]
+\begin{tikzpicture}[remember picture,overlay]
+ \node [xshift=1cm,yshift=1cm] at (current page.south west)
+ [text width=7cm,fill=red!20,rounded corners,above right]
+ {
+ This is an absolutely positioned text in the
+ lower left corner. No shipout-hackery is used.
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+The next example adds a circle in the middle of the page.
+\begin{codeexample}[]
+\begin{tikzpicture}[remember picture,overlay]
+ \draw [line width=1mm,opacity=.25]
+ (current page.center) circle (3cm);
+\end{tikzpicture}
+\end{codeexample}
+
+The final example overlays some text over the page (depending on where
+this example is found on the page, the text may also be behind the
+page).
+\begin{codeexample}[]
+\begin{tikzpicture}[remember picture,overlay]
+ \node [rotate=60,scale=10,text opacity=0.2]
+ at (current page.center) {Example};
+\end{tikzpicture}
+\end{codeexample}
+
+
\subsection{Predefined Shapes}
+
+\label{section-nodes-predefined}
+
\label{section-the-shapes}
\pgfname\ and \tikzname\ define three shapes, by default:
@@ -729,12 +1300,8 @@ Section~\ref{section-node-coordinates}. Suppose you have said
\item
|coordinate|.
\end{itemize}
-By loading library packages, you can define more shapes. Currently,
-the package |pgflibraryshapes| defines
-\begin{itemize}
-\item
- |ellipse|.
-\end{itemize}
+By loading library packages, you can define more shapes like ellipses
+or diamonds; see the library section for the complete list of shapes.
The exact behaviour of these shapes differs, shapes defined for more
special purposes (like a, say, transistor shape) will have even more
@@ -817,6 +1384,16 @@ shapes:
\draw (0,-2) node[minimum size=2cm,draw,circle] {circle};
\end{tikzpicture}
\end{codeexample}
+
+ \itemoption{aspect}|=|\meta{aspect ratio}
+ sets a desired aspect ratio for the shape. For the |diamond| shape,
+ this option sets the ratio between width and height of the shape.
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw (0,0) node[aspect=1,diamond,draw] {aspect 1};
+ \draw (0,-2) node[aspect=2,diamond,draw] {aspect 2};
+\end{tikzpicture}
+\end{codeexample}
\end{itemize}
\label{section-tikz-coordinate-shape}
@@ -843,6 +1420,43 @@ demonstrates the difference:
\end{codeexample}
+\subsection{Executing Code After Nodes}
+
+\label{section-nodes-executing}
+
+It is possible to add a path right after a node using the option
+|after node path|. The idea is that a style might use this option to
+add some additional stuff to the node that has just been typeset.
+
+\begin{itemize}
+ \itemoption{after node path}|=|\meta{path}
+ The \meta{path} is added to the main path right after the node, as
+ if you had given the path thereafter. This option can only be given
+ inside the option list of a node and multiple calls of this option
+ accumulate.
+
+ Inside the \meta{path} you have access to the node that has just
+ been created via the macro \declare{|\tikzlastnode|}.
+\begin{codeexample}[]
+\tikz
+ \draw node [draw,after node path={(\tikzlastnode) circle (2cm)}]
+ {hello};
+\end{codeexample}
+
+ Note that in the above example, if we had written |\path| instead of
+ |\draw|, the circle would not have been drawn since the circle is
+ part of the main path, not part of the node itself.
+\end{itemize}
+
+\begin{command}{\tikzaddafternodepathoption\marg{code}}
+ This command allows you to specify that the \meta{code} should be
+ executed at the beginning of the |after node path| of the current
+ node. The code will also be executed immediately, but also again at
+ the beginning of an |after node path|.
+\end{command}
+
+
+
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "pgfmanual"
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
index 874d1682df9..82a99bbd4b1 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-transformations.tex
@@ -1,9 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Transformations}
@@ -61,7 +63,8 @@ coordinates and shapes, anchors, and bounding box computations will no
longer work.
-\subsection{The Xy- and Xyz-Coordinate Systems}
+\subsection{The XY- and XYZ-Coordinate Systems}
+\label{section-xyz}
The first and easiest coordinate systems are \pgfname's $xy$- and
$xyz$-coordinate systems. The idea is very simple: Whenever you
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-trees.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-trees.tex
index fb53ead11d1..3aa66b26e79 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-trees.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tikz-trees.tex
@@ -1,9 +1,11 @@
-% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
-
+% 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.
\section{Making Trees Grow}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-nodes.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-nodes.tex
new file mode 100644
index 00000000000..ea6765f29e9
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial-nodes.tex
@@ -0,0 +1,1084 @@
+% 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.
+
+\section{Tutorial: A Petri-Net for Hagen}
+
+In this second tutorial we explore the node mechanism of
+\tikzname\ and \pgfname.
+
+Hagen must give a talk tomorrow about his favorite formalism for
+distributed systems: Petri nets! Hagen used to give his talks using a
+blackboard and everyone seemed to be perfectly concent with
+this. Unfortunately, his audience has been spoiled recently with fancy
+projector-based presentations and there seems to be a certain amount
+of peer pressure that this Petri nets should also be drawn using a
+graphic program. One of the professors at his institutes recommends
+\tikzname\ for this and Hagen decides to give it a try.
+
+
+\subsection{Problem Statement}
+
+For his talk, Hagen wishes to create a graphic that demonstrates how a
+net with place capacities can be simulated by a net without
+capacities. The graphic should look like this, ideally:
+
+\begin{quote}
+\begin{tikzpicture}[node distance=1.3cm,>=stealth',bend angle=45,auto]
+
+ \tikzstyle{place}=[circle,thick,draw=blue!75,fill=blue!20,minimum size=6mm]
+ \tikzstyle{red place}=[place,draw=red!75,fill=red!20]
+ \tikzstyle{transition}=[rectangle,thick,draw=black!75,fill=black!20,minimum size=4mm]
+
+ \tikzstyle{every label}=[red]
+
+ \begin{scope}
+ % First net
+ \node [place,tokens=1] (w1) {};
+ \node [place] (c1) [below of=w1] {};
+ \node [place] (s) [below of=c1,label=above:$s\le 3$] {};
+ \node [place] (c2) [below of=s] {};
+ \node [place,tokens=1] (w2) [below of=c2] {};
+
+ \node [transition] (e1) [left of=c1] {}
+ edge [pre,bend left] (w1)
+ edge [post,bend right] (s)
+ edge [post] (c1);
+
+ \node [transition] (e2) [left of=c2] {}
+ edge [pre,bend right] (w2)
+ edge [post,bend left] (s)
+ edge [post] (c2);
+
+ \node [transition] (l1) [right of=c1] {}
+ edge [pre] (c1)
+ edge [pre,bend left] (s)
+ edge [post,bend right] node[swap] {2} (w1);
+
+ \node [transition] (l2) [right of=c2] {}
+ edge [pre] (c2)
+ edge [pre,bend right] (s)
+ edge [post,bend left] node {2} (w2);
+ \end{scope}
+
+ \begin{scope}[xshift=6cm]
+ % Second net
+ \node [place,tokens=1]
+ (w1') {};
+ \node [place] (c1') [below of=w1'] {};
+ \node [red place] (s1') [below of=c1',xshift=-5mm,label=left:$s$] {};
+ \node [red place,tokens=3]
+ (s2') [below of=c1',xshift=5mm,label=right:$\bar s$] {};
+ \node [place] (c2') [below of=s1',xshift=5mm] {};
+ \node [place,tokens=1]
+ (w2') [below of=c2'] {};
+
+ \node [transition] (e1') [left of=c1'] {}
+ edge [pre,bend left] (w1')
+ edge [post] (s1')
+ edge [pre] (s2')
+ edge [post] (c1');
+
+ \node [transition] (e2') [left of=c2'] {}
+ edge [pre,bend right] (w2')
+ edge [post] (s1')
+ edge [pre] (s2')
+ edge [post] (c2');
+
+ \node [transition] (l1') [right of=c1'] {}
+ edge [pre] (c1')
+ edge [pre] (s1')
+ edge [post] (s2')
+ edge [post,bend right] node[swap] {2} (w1');
+
+ \node [transition] (l2') [right of=c2'] {}
+ edge [pre] (c2')
+ edge [pre] (s1')
+ edge [post] (s2')
+ edge [post,bend left] node {2} (w2');
+ \end{scope}
+
+ \draw [-to,thick,snake=snake,segment amplitude=.4mm,segment length=2mm,line after snake=1mm]
+ ([xshift=5mm]s -| l1) -- ([xshift=-5mm]s1' -| e1')
+ node [above=1mm,midway,text width=3cm,text centered]
+ {replacement of the \textcolor{red}{capacity} by \textcolor{red}{two places}};
+
+ \begin{pgfonlayer}{background}
+ \filldraw [line width=4mm,join=round,black!10]
+ (w1.north -| l1.east) rectangle (w2.south -| e1.west)
+ (w1'.north -| l1'.east) rectangle (w2'.south -| e1'.west);
+ \end{pgfonlayer}
+\end{tikzpicture}
+\end{quote}
+
+
+\subsection{Setting up the Environment}
+
+For the picture Hagen will need to load the \tikzname\ package as did
+Karl in the previous tutorial. However, Hagen will also need to load
+some additional \emph{library packages} that Karl did not need. These
+library packages contain additional definitions like extra arrow tips
+that are typically not needed in a picture and that need to be
+loaded explicitly.
+
+Hagen will need to load three libraries: The arrow tip library for the
+special arrow tip used in the graphic, the snake library with the
+``snaking line'' in the middle, and the background library for the two
+rectangular areas that are behind the two main parts of the picture.
+
+
+\subsubsection{Setting up the Environment in \LaTeX}
+
+When using \LaTeX\ use:
+
+\begin{codeexample}[code only]
+\documentclass{article} % say
+
+\usepackage{tikz}
+\usetikzlibrary{arrows,snakes,backgrounds}
+
+\begin{document}
+\begin{tikzpicture}
+ \draw (0,0) -- (1,1);
+\end{tikzpicture}
+\end{document}
+\end{codeexample}
+
+
+\subsubsection{Setting up the Environment in Plain \TeX}
+
+When using plain \TeX\ use:
+
+\begin{codeexample}[code only]
+%% Plain TeX file
+\input tikz.tex
+\usetikzlibrary{arrows,snakes,backgrounds}
+\baselineskip=12pt
+\hsize=6.3truein
+\vsize=8.7truein
+\tikzpicture
+ \draw (0,0) -- (1,1);
+\endtikzpicture
+\bye
+\end{codeexample}
+
+
+\subsubsection{Setting up the Environment in Con\TeX t}
+
+When using Con\TeX\ use:
+\begin{codeexample}[code only]
+%% ConTeXt file
+\usemodule[tikz]
+\usetikzlibrary[arrows,snakes,backgrounds]
+
+\starttext
+ \starttikzpicture
+ \draw (0,0) -- (1,1);
+ \stoptikzpicture
+\startext
+\end{codeexample}
+
+
+
+\subsection{Introduction to Nodes}
+
+In principle, we already know how to create the graphics that Hagen
+desires (except perhaps for the snaked line, we will come to that): We
+start with big light gray rectangle and then add lots of circles and
+small rectangle, plus some arrows.
+
+However, this approach has numerous disadvantages: First, it is hard
+to change anything at a later stage. For example, if we decide to add
+more places to the Petri nets (the circles are called places in Petri
+net theory), all of the coordinates change and we need to recalculate
+everything. Second, it is hard to read the code for the Petri net as
+it just a long and complicated list of coordinates and drawing
+commands -- the underlying structure of the Petri net is lost.
+
+Fortunately, \tikzname\ offers a powerful mechanism for avoiding the
+above problems: nodes. We already came across nodes in the previous
+tutorial, where we used them to add labels to Karl's graphic. In the
+present tutorial we will see that nodes are much more powerful.
+
+A node is a small part of a picture. When a node is created, you
+provide a position where the node should be drawn and a
+\emph{shape}. A node of shape |circle| will be drawn as a circle, a
+node of shape |rectangle| as a rectangle, and so on. A node may also
+contain same text, which is why Karl used nodes to show text. Finally,
+a node can get a \emph{name} for later reference.
+
+In Hagen's picture we will use nodes for the places and for the
+transitions of the Petri net (the places are the circles, the
+transitions are the rectangles). Let us start with the upper half of
+the left Petir net. In this upper half we have three places and two
+transitions. Instead of drawing three circles and two rectangles, we
+use three nodes of shape |circle| and two nodes of shape
+|rectangle|.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \path ( 0,2) node [shape=circle,draw] {}
+ ( 0,1) node [shape=circle,draw] {}
+ ( 0,0) node [shape=circle,draw] {}
+ ( 1,1) node [shape=rectangle,draw] {}
+ (-1,1) node [shape=rectangle,draw] {};
+\end{tikzpicture}
+\end{codeexample}
+
+Hagen notes that this does not quite look like the final picture, but
+it seems like a good first step.
+
+Let us have a more detailed look at the code. The whole picture
+consists of a single path. Ignoring the |node| operations there is not
+much going on in this path: It is just a sequence of coordinates with
+nothing ``happening'' between them. Indeed, even if something were to
+happen like a line-to or a curve-to, the |\path| command would not
+``do'' anything with the resulting path. So, all the magic must be in
+the |node| commands.
+
+In the previous tutorial we learned that a |node| will add a piece of
+text at the last coordinate. Thus, each of the five nodes is added at
+a different position. In the above code, this text is empty
+(because of the empty |{}|). So, why do we see anything at all? The
+answer is the |draw| option for the |node| operation: It causes the
+``shape around the text'' to be drawn.
+
+So, the code |(0,2) node [shape=circle,draw] {}| means the following:
+``In the main path, add a move-to to the coordinate |(0,2)|. Then,
+temporarily suspend the construction of the main path while the node
+is build. This node will be a |circle| around an empty text. This
+circle is to be |draw|n, but not filled or otherwise used. Once this
+whole node is constructed, it is saved until after the
+main path is finished. Then, it is drawn.'' Then following
+|(0,1) node [shape=circle,draw] {}| then has the following effect:
+``Continue the main path with a move-to to |(0,1)|. Then construct a
+node at this position also. This node is also shown after the main
+path is finished.'' And so on.
+
+
+
+\subsection{Placing Nodes Using the At Syntax}
+
+Hagen now understands how the |node| operation adds nodes to the path,
+but it seems a bit silly to create a path using the |\path| operation,
+consisting of numerous superfluous move-to operations, only to place
+nodes. He is pleased to learn that there are ways to add nodes in a
+more sensible manner.
+
+First, the |node| operation allows one to add
+|at (|\meta{coordinate}|)| in order to directly specify where the node
+should be placed, sidestepping the rule that nodes are placed on the
+last coordinate. Hagen can then write the following:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \path node at ( 0,2) [shape=circle,draw] {}
+ node at ( 0,1) [shape=circle,draw] {}
+ node at ( 0,0) [shape=circle,draw] {}
+ node at ( 1,1) [shape=rectangle,draw] {}
+ node at (-1,1) [shape=rectangle,draw] {};
+\end{tikzpicture}
+\end{codeexample}
+
+Now Hagen is still left with a single empty path, but at least the
+path no longer contains strange move-tos. It turns out that this can
+be improved further: The |\node| command is an abbreviation for
+|\path node|, which allows Hagen to write:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node at ( 0,2) [circle,draw] {};
+ \node at ( 0,1) [circle,draw] {};
+ \node at ( 0,0) [circle,draw] {};
+ \node at ( 1,1) [rectangle,draw] {};
+ \node at (-1,1) [rectangle,draw] {};
+\end{tikzpicture}
+\end{codeexample}
+
+Hagen likes this syntax much better than the previous one. Note that
+Hagen has also omitted the |shape=| since, like |color=|, \tikzname\
+allows you to omit the |shape=| if there is no confusion.
+
+
+
+\subsection{Using Styles}
+
+Feeling adventurous, Hagen tries to make the nodes look nicer. In the
+final picture, the circles and rectangle should be filled with
+different colors, resulting in the following code:
+
+\begin{codeexample}[]
+\begin{tikzpicture}[thick]
+ \node at ( 0,2) [circle,draw=blue!50,fill=blue!20] {};
+ \node at ( 0,1) [circle,draw=blue!50,fill=blue!20] {};
+ \node at ( 0,0) [circle,draw=blue!50,fill=blue!20] {};
+ \node at ( 1,1) [rectangle,draw=black!50,fill=black!20] {};
+ \node at (-1,1) [rectangle,draw=black!50,fill=black!20] {};
+\end{tikzpicture}
+\end{codeexample}
+
+While this looks nicer in the picture, the code starts to get a bit
+ugly. Ideally, we would like our code to transport the message ``there
+are three places and two transitions'' and not so much which
+filling colors should be used.
+
+To solve this problem, Hagen uses styles. He defines a style for
+places and another style for transitions:
+
+\begin{codeexample}[]
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick]
+\begin{tikzpicture}
+ \node at ( 0,2) [place] {};
+ \node at ( 0,1) [place] {};
+ \node at ( 0,0) [place] {};
+ \node at ( 1,1) [transition] {};
+ \node at (-1,1) [transition] {};
+\end{tikzpicture}
+\end{codeexample}
+
+
+\subsection{Node Size}
+
+Before Hagen starts naming and connecting the nodes, let us first
+make sure that the nodes get their final appearance. They are still
+too small. Indeed, Hagen wonders why they have any size at all, after
+all, the text is empty. The reason is than \tikzname\ automatically
+adds some space around the text. The amount is set using the option
+|inner sep|. So, to increase the size of the nodes, Hagen could write:
+
+\begin{codeexample}[]
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick]
+\begin{tikzpicture}[inner sep=2mm]
+ \node at ( 0,2) [place] {};
+ \node at ( 0,1) [place] {};
+ \node at ( 0,0) [place] {};
+ \node at ( 1,1) [transition] {};
+ \node at (-1,1) [transition] {};
+\end{tikzpicture}
+\end{codeexample}
+
+However, this is not really the best way to achieve the desired
+effect. It is much better to use the |minimum size| option
+instead. This option allows Hagen to specify a minimum size that the
+node should have. If the nodes actually needs to be bigger because of
+a longer text, it will be larger, but if the text is empty, then the
+node will have |minimum size|. This option is also useful to ensure
+that several nodes containing different amounts of text have the same
+size. The options |minimum height| and |minimum width| allow you to
+specify the minimum height and width independently.
+
+So, what Hagen needs to do is to provide |minimum size| for the
+nodes. To be on the safe side, he also sets |inner sep=0pt|. This
+ensures that the nodes will really have size |minimum size| and not,
+for very small minimum sizes, the minimal size necessary to encompass
+the automatically added space.
+
+\begin{codeexample}[]
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{tikzpicture}
+ \node at ( 0,2) [place] {};
+ \node at ( 0,1) [place] {};
+ \node at ( 0,0) [place] {};
+ \node at ( 1,1) [transition] {};
+ \node at (-1,1) [transition] {};
+\end{tikzpicture}
+\end{codeexample}
+
+
+
+
+\subsection{Naming Nodes}
+
+Hagen's next aim is to connect the nodes using arrows. This seems like
+a tricky business since the arrows should not start in the middle of
+the nodes, but somewhere on the border and Hagen would very much like
+to avoid computing these positions by hand.
+
+Fortunately, \pgfname\ will perform all the necessary calculations for
+him. However, he first has to assign names to the nodes so that he can
+reference them later on.
+
+There are two ways to name a node. The first is the use the |name=|
+option. The second method is to write the desired name in parentheses
+after the |node| operation. Hagen thinks that this second method seems
+strange, but he will soon change his opinion.
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+% ... setup styles
+\begin{tikzpicture}
+ \node (waiting 1) at ( 0,2) [place] {};
+ \node (critical 1) at ( 0,1) [place] {};
+ \node (semaphore) at ( 0,0) [place] {};
+ \node (leave critical) at ( 1,1) [transition] {};
+ \node (enter critical) at (-1,1) [transition] {};
+\end{tikzpicture}
+\end{codeexample}
+}
+
+Hagen is pleased to note that the names help in understanding the
+code. Names for nodes can be pretty arbitrary, but they should not
+contain commas, periods, parentheses, colons, and some other special
+characters. However, they can contain underscores and hyphens.
+
+The syntax for the |node| operation is quite liberal with respect to
+the order in which node names, the |at| specifier, and the options
+must come. Indeed, you can even have multiple option blocks between
+the |node| and the text in curly braces, they accumulate. You can
+rearrange them arbitrarily and perhaps the following might be preferable:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting 1) at ( 0,2) {};
+ \node[place] (critical 1) at ( 0,1) {};
+ \node[place] (semaphore) at ( 0,0) {};
+ \node[transition] (leave critical) at ( 1,1) {};
+ \node[transition] (enter critical) at (-1,1) {};
+\end{tikzpicture}
+\end{codeexample}
+}
+
+
+
+\subsection{Placing Nodes Using Relative Placement}
+
+Although Hagen still wishes to connect the nodes, he first wishes to
+address another problem again: The placement of the nodes. Although he
+likes the |at| syntax, in this particular case he would prefer placing
+the nodes ``relative to each other.'' So, Hagen would like to say that
+the |critical 1| node should be below the |waiting 1| node, wherever
+the |waiting 1| node might be. There are different ways of achieving
+this, but the nicest one in Hagen's case is the |below of| option:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+\end{tikzpicture}
+\end{codeexample}
+}
+
+The |below of| and similar options setup the position of the node in
+such a manner that it is placed at the distance |node distance| in the
+specified direction of the given direction. The |node distance| is the
+distance between the centers of the nodes, not between the borders.
+
+Even though the above code has the same effect the earlier code, Hagen
+can pass it to his colleagues how will be able to just read and
+understand it, perhaps without even having to see the picture.
+
+
+
+\subsection{Adding Labels Next to Nodes}
+
+Before we have a look at how Hagen can connect the nodes, let us add
+the capacity ``$s \le 3$'' to the bottom node. For this, two
+approaches are possible:
+\begin{enumerate}
+\item Hagen can just add a new node above the |north| anchor of the
+ |semaphore| node.
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+
+ \node [red,above] at (semaphore.north) {$s\le 3$};
+\end{tikzpicture}
+\end{codeexample}
+}
+This is a general approach that will ``always work.''
+
+\item Hagen can use the special |label| option. This option is given
+ to a |node| and it causes \emph{another} node to be added next to
+ the node where the option is given. Here is the idea: When we
+ construct the |semaphore| node, we wish to indicate that we want
+ another node with the capacity above it. For this, we use the option
+ |label=above:$s\le 3$|. This option is interpreted as follows: We
+ want a node above the |semaphore| node and this node should read
+ ``$s \le 3$.'' Instead of |above| we could also use things like
+ |below left| before the colon or a number like |60|.
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical,
+ label=above:$s\le3$] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+\end{tikzpicture}
+\end{codeexample}
+}
+ It is also possible to give multiple |label| options, this causes
+ multiple labels to be drawn.
+\begin{codeexample}[]
+\tikz
+ \node [circle,draw,label=60:$60^\circ$,label=below:$-90^\circ$] {my circle};
+\end{codeexample}
+ Hagen is not fully satisfied with the |label| option since the label
+ is not red. To achieve this, has has two options: First, he can
+ redefine the |every label| style. Second, he can add options to the
+ label's node. These options are given following the |label=|, so he
+ would write |label=[red]above:$s\le3$|. However, this does not quite
+ work since \TeX\ thinks that the |]| closes the whole option list of
+ the |semaphore| node. So, Hagen has to add braces and writes
+ |label={[red]above:$s\le3$}|. Since this looks a bit ugly, Hagen
+ decides to redefine the |every label| style.
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \tikzstyle{every label}=[red]
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical,
+ label=above:$s\le3$] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+\end{tikzpicture}
+\end{codeexample}
+}
+\end{enumerate}
+
+
+
+\subsection{Connecting Nodes}
+
+It is now high time to connect the nodes. Let us start with something
+simple, namely with the straight line from |enter critical| to
+|critical|. We want this line to start at the right side of
+|enter critical| and to end at the left side of |critical|. For
+this, we can use the \emph{anchors} of the nodes. Every node defines a
+whole bunch of anchors that lie on its border or inside it. For
+example, the |center| anchor is at the center of the node, the |west|
+anchor is on the left of the node, and so on. To access the coordinate
+of a node, we use a coordinate that contains the node's name followed
+by a dot, followed by the anchor's name:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+ \draw [->] (critical.west) -- (enter critical.east);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+Next, let us tackle the curve from |waiting| to |enter critical|. This
+can be specified using curves and controls:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+ \draw [->] (enter critical.east) -- (critical.west);
+ \draw [->] (waiting.west) .. controls +(left:5mm) and +(up:5mm)
+ .. (enter critical.north);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+Hagen sees how he can now add all his edges, but the whole process
+seems a but awkward and not very flexible. Again, the code seems to
+obscure the structure of the graphic rather than showing it.
+
+So, let us start improving the code for the edges. First, Hagen can
+leave out the anchors:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+ \draw [->] (enter critical) -- (critical);
+ \draw [->] (waiting) .. controls +(left:8mm) and +(up:8mm)
+ .. (enter critical);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+Hagen is a bit surprised that this works. After all, how did
+\tikzname\ know that the line from |enter critical| to |critical|
+should actually start on the borders? Whenever \tikzname\ encounters a
+whole node name as a ``coordinate,'' it tries to ``be smart'' about
+the anchor that it should choose for this node. Depending on what
+happens next, \tikzname\ will choose an anchor that lies on the border
+of the node on a line to the next coordinate or control point. The
+exact rules are a bit complex, but the chosen point will usually be
+correct -- and when it is not, Hagen can still specify the desired
+anchor by hand.
+
+Hagen would now like to simplify the curve operation somehow. It turns
+out that this can be accomplished using a special path operation: the
+|to| operation. This operation takes many options (you can even define
+new ones yourself). One pair of option is useful for Hagen: The pair
+|in| and |out|. These options take angles at which a curve should
+leave or reach the start or target coordinates. Without these options,
+a straight line is drawn:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+ \draw [->] (enter critical) to (critical);
+ \draw [->] (waiting) to [out=180,in=90] (enter critical);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+There is another option for the |to| operation, that is even better
+suited to Hagen's problem: The |bend right| option. This option also
+takes an angle, but this angle only specifies the angle by which the
+curve is bend to the right:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {};
+ \draw [->] (enter critical) to (critical);
+ \draw [->] (waiting) to [bend right=45] (enter critical);
+ \draw [->] (enter critical) to [bend right=45] (semaphore);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+It is now time for Hagen to learn about yet another way of specifying
+edges: Using the |edge| path operation. This operation is very similar
+to the |to| operation, but there is one important difference: Like a
+node the edge generated by the |edge| operation is not part of the
+main path, but is added only later. This may not seem very important,
+but is has some nice consequences. For example, every edge can have
+its own arrow tips and its own color and so one and, still, all the
+edges can be given on the same path. This allows Hagen to write the
+following:
+
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+ \node[transition] (leave critical) [right of=critical] {};
+ \node[transition] (enter critical) [left of=critical] {}
+ edge [->] (critical)
+ edge [<-,bend left=45] (waiting)
+ edge [->,bend right=45] (semaphore);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+Each |edge| caused a new path to be constructed, consisting of a |to|
+between the node |enter critical| and the node following the |edge|
+command.
+
+The finishing touch is to introduce two styles |pre| and |post| and to
+use the |bend angle=45| option to set the bend angle once and for all:
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\begin{codeexample}[]
+% Styles place and transition as before
+\tikzstyle{pre}=[<-,shorten <=1pt,>=stealth',semithick]
+\tikzstyle{post}=[->,shorten >=1pt,>=stealth',semithick]
+\begin{tikzpicture}[bend angle=45]
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+
+ \node[transition] (leave critical) [right of=critical] {}
+ edge [pre] (critical)
+ edge [post,bend right] (waiting)
+ edge [pre, bend left] (semaphore);
+ \node[transition] (enter critical) [left of=critical] {}
+ edge [post] (critical)
+ edge [pre, bend left] (waiting)
+ edge [post,bend right] (semaphore);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+
+
+
+\subsection{Adding Labels Next to Lines}
+
+The next thing that Hagen needs to add is the ``$2$'' at the arcs. For
+this Hagen can use \tikzname's automatic node placement: By adding the
+option |auto|, \tikzname\ will position nodes on curves and lines in
+such a way that they are not on the curve but next to it. Adding
+|swap| will mirror the label with respect to the line. Here is a
+general example:
+
+{
+\begin{codeexample}[]
+\begin{tikzpicture}[auto,bend right]
+ \node (a) at (0:1) {$0^\circ$};
+ \node (b) at (120:1) {$120^\circ$};
+ \node (c) at (240:1) {$240^\circ$};
+
+ \draw (a) to node {1} node [swap] {1'} (b)
+ (b) to node {2} node [swap] {2'} (c)
+ (c) to node {3} node [swap] {3'} (a);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+What is happening here? The nodes are given somehow inside the |to|
+operation! When this is done, the node is placed on the middle of the
+curve or line created by the |to| operation. The |auto| option then
+causes the node to be moved in such a way that it does not lie on the
+curve, but next to it. In the example we provide even two nodes on
+each |to| operation.
+
+For Hagen that |auto| option is not really necessary since the two
+``2'' labels could also easily be placed ``by hand.'' However, in a
+complicated plot with numerous edges automatic placement can be a
+blessing.
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\tikzstyle{pre}=[<-,shorten <=1pt,>=stealth',semithick]
+\tikzstyle{post}=[->,shorten >=1pt,>=stealth',semithick]
+\begin{codeexample}[]
+% Styles as before
+\begin{tikzpicture}[bend angle=45]
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+
+ \node[transition] (leave critical) [right of=critical] {}
+ edge [pre] (critical)
+ edge [post,bend right] node[auto,swap] {2} (waiting)
+ edge [pre, bend left] (semaphore);
+ \node[transition] (enter critical) [left of=critical] {}
+ edge [post] (critical)
+ edge [pre, bend left] (waiting)
+ edge [post,bend right] (semaphore);
+\end{tikzpicture}
+\end{codeexample}
+}
+
+
+
+\subsection{Adding the Snaked Line and Multi-Line Text}
+
+With the node mechanism Hagen can now easily create the two Petri
+nets. What he is unsure of is how he can create the snaked line
+between the nets.
+
+For this he can use a \emph{snake}. Snakes a called thus since the
+most basic form of a snake looks exactly like a snake. However, and
+repeating pattern can be used as a snake like bumps or a saw or even
+much more complicated stuff.
+
+To draw the snake, Hagen only needs to set the |snake=snake| option on
+the path. This causes all straight lines of the path to be replaced by
+snakes. It is also possible to use snakes only in certain parts of a
+path, but Hagen will not need this.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw [->,snake=snake] (0,0) -- (2,0);
+\end{tikzpicture}
+\end{codeexample}
+
+Well, that does not look quite right, yet. The problem is that the
+snake happens to end exactly at the position where the arrow
+begins. Fortunately, there is an option that helps here. Also, the
+snake should be a bit smaller, which can be influenced by even more
+options.
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw [->,snake=snake,
+ segment amplitude=.4mm,
+ segment length=2mm,
+ line after snake=1mm] (0,0) -- (3,0);
+\end{tikzpicture}
+\end{codeexample}
+
+Now Hagen needs to add the text above the snake. This text is a bit
+challenging since it is a multi-line text. To typeset such text, Hagen
+needs to specify a width for the text and he needs to specify that the
+text should be centered.
+
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ \draw [->,snake=snake,
+ segment amplitude=.4mm,
+ segment length=2mm,
+ line after snake=1mm] (0,0) -- (3,0)
+ node [above,text width=3cm,text centered,midway]
+ {
+ replacement of the \textcolor{red}{capacity} by
+ \textcolor{red}{two places}
+ };
+\end{tikzpicture}
+\end{codeexample}
+
+
+
+\subsection{Using Layers: The Background Rectangles}
+
+Hagen still needs to add the background rectangles. These are a bit
+tricky: Hagen would like to draw the rectangles \emph{after} the Petri
+nets are finished. The reason is that only then can he conveniently
+refer to the coordinates that make up the corners of the
+rectangle. If Hagen draws the rectangle first, then he needs to know
+the exact size of the Petri net -- which he does not.
+
+The solution is to use \emph{layers}. When the background library is
+loaded, Hagen can put parts of his picture inside a |{pgfonlayer}|
+environment. Then this part of the picture becomes part of the layer
+that is given as an argument to this environment. When the
+|{tikzpicture}| environment ends, the layers are put on top of each
+other, starting with the background layer. This causes everything
+drawn on the background layer to be behind the main text.
+
+
+{
+\tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick,
+ inner sep=0pt,minimum size=6mm]
+\tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick,
+ inner sep=0pt,minimum size=4mm]
+\tikzstyle{pre}=[<-,shorten <=1pt,>=stealth',semithick]
+\tikzstyle{post}=[->,shorten >=1pt,>=stealth',semithick]
+\begin{codeexample}[]
+% Styles as before
+\begin{tikzpicture}[bend angle=45]
+ \node[place] (waiting) {};
+ \node[place] (critical) [below of=waiting] {};
+ \node[place] (semaphore) [below of=critical] {};
+
+ \node[transition] (leave critical) [right of=critical] {}
+ edge [pre] (critical)
+ edge [post,bend right] node[auto,swap] {2} (waiting)
+ edge [pre, bend left] (semaphore);
+ \node[transition] (enter critical) [left of=critical] {}
+ edge [post] (critical)
+ edge [pre, bend left] (waiting)
+ edge [post,bend right] (semaphore);
+
+ \begin{pgfonlayer}{background}
+ \filldraw [fill=black!30,draw=red]
+ (semaphore.south -| enter critical.west)
+ rectangle (waiting.north -| leave critical.east);
+ \end{pgfonlayer}
+\end{tikzpicture}
+\end{codeexample}
+}
+
+
+
+
+\subsection{The Complete Code}
+
+Hagen has now finally put everything together. Only then does he learn
+that there is already a library for drawing Petri nets! It turns out
+that this library mainly provides the same definitions as Hagen
+did. For example, it defines a |place| style in a similar way as Hagen
+did. Adjusting the code so that it uses the library shortens Hagen
+code a bit, as shown in the following.
+
+First, Hagen needs less style definitions, but he still needs to
+specify the colors of places and transitions.
+
+\begin{codeexample}[code only]
+\tikzstyle{every place}= [minimum size=6mm,thick,draw=blue!75,fill=blue!20]
+\tikzstyle{every transition}=[thick,draw=black!75,fill=black!20]
+
+\tikzstyle{red place}= [place,draw=red!75,fill=red!20]
+
+\tikzstyle{every label}= [red]
+\begin{tikzpicture}[node distance=1.3cm,>=stealth',bend angle=45,auto]
+\end{codeexample}
+
+Now comes the code for the nets:
+
+{
+\tikzstyle{every place}=[minimum size=6mm,thick,draw=blue!75,fill=blue!20]
+\tikzstyle{every transition}=[thick,draw=black!75,fill=black!20]
+
+\tikzstyle{red place}= [place,draw=red!75,fill=red!20]
+
+\tikzstyle{every label}=[red]
+
+\tikzstyle{every picture}=[node distance=1.3cm,>=stealth',bend angle=45,auto]
+\begin{codeexample}[pre=\begin{tikzpicture},post=\end{tikzpicture}]
+ \node [place,tokens=1] (w1) {};
+ \node [place] (c1) [below of=w1] {};
+ \node [place] (s) [below of=c1,label=above:$s\le 3$] {};
+ \node [place] (c2) [below of=s] {};
+ \node [place,tokens=1] (w2) [below of=c2] {};
+
+ \node [transition] (e1) [left of=c1] {}
+ edge [pre,bend left] (w1)
+ edge [post,bend right] (s)
+ edge [post] (c1);
+ \node [transition] (e2) [left of=c2] {}
+ edge [pre,bend right] (w2)
+ edge [post,bend left] (s)
+ edge [post] (c2);
+ \node [transition] (l1) [right of=c1] {}
+ edge [pre] (c1)
+ edge [pre,bend left] (s)
+ edge [post,bend right] node[swap] {2} (w1);
+ \node [transition] (l2) [right of=c2] {}
+ edge [pre] (c2)
+ edge [pre,bend right] (s)
+ edge [post,bend left] node {2} (w2);
+\end{codeexample}
+}
+
+{
+\tikzstyle{every place}= [minimum size=6mm,thick,draw=blue!75,fill=blue!20]
+\tikzstyle{every transition}=[thick,draw=black!75,fill=black!20]
+
+\tikzstyle{red place}= [place,draw=red!75,fill=red!20]
+
+\tikzstyle{every label}=[red]
+
+\tikzstyle{every picture}=[node distance=1.3cm,>=stealth',bend angle=45,auto]
+\begin{codeexample}[pre=\begin{tikzpicture},post=\end{tikzpicture}]
+ \begin{scope}[xshift=6cm]
+ \node [place,tokens=1] (w1') {};
+ \node [place] (c1') [below of=w1'] {};
+ \node [red place] (s1') [below of=c1',xshift=-5mm]
+ [label=left:$s$] {};
+ \node [red place,tokens=3] (s2') [below of=c1',xshift=5mm]
+ [label=right:$\bar s$] {};
+ \node [place] (c2') [below of=s1',xshift=5mm] {};
+ \node [place,tokens=1] (w2') [below of=c2'] {};
+
+ \node [transition] (e1') [left of=c1'] {}
+ edge [pre,bend left] (w1')
+ edge [post] (s1')
+ edge [pre] (s2')
+ edge [post] (c1');
+ \node [transition] (e2') [left of=c2'] {}
+ edge [pre,bend right] (w2')
+ edge [post] (s1')
+ edge [pre] (s2')
+ edge [post] (c2');
+ \node [transition] (l1') [right of=c1'] {}
+ edge [pre] (c1')
+ edge [pre] (s1')
+ edge [post] (s2')
+ edge [post,bend right] node[swap] {2} (w1');
+ \node [transition] (l2') [right of=c2'] {}
+ edge [pre] (c2')
+ edge [pre] (s1')
+ edge [post] (s2')
+ edge [post,bend left] node {2} (w2');
+ \end{scope}
+\end{codeexample}
+}
+
+The code for the background and the snake is the following:
+
+\begin{codeexample}[code only]
+ \draw [-to,thick,snake=snake,segment amplitude=.4mm,segment length=2mm,line after snake=1mm]
+ ([xshift=5mm]s -| l1) -- ([xshift=-5mm]s1' -| e1')
+ node [above=1mm,midway,text width=3cm,text centered]
+ {replacement of the \textcolor{red}{capacity} by \textcolor{red}{two places}};
+
+ \begin{pgfonlayer}{background}
+ \filldraw [line width=4mm,join=round,black!10]
+ (w1.north -| l1.east) rectangle (w2.south -| e1.west)
+ (w1'.north -| l1'.east) rectangle (w2'.south -| e1'.west);
+ \end{pgfonlayer}
+\end{tikzpicture}
+\end{codeexample}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial.tex
index fb8d072b7ba..2fba592ad7e 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-tutorial.tex
@@ -1,3 +1,12 @@
+% 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.
+
\section{Tutorial: A Picture for Karl's Students}
This tutorial is intended for new users of \pgfname\ and \tikzname. It
@@ -49,9 +58,9 @@ cosine. What he would like to have is something that looks like this
\colorlet{coscolor}{blue}
% Styles
- \tikzstyle axes=[]
- \tikzstyle important line=[very thick]
- \tikzstyle information text=[rounded corners,fill=red!10,inner sep=1ex]
+ \tikzstyle{axes}=[]
+ \tikzstyle{important line}=[very thick]
+ \tikzstyle{information text}=[rounded corners,fill=red!10,inner sep=1ex]
% The graphic
\draw[style=help lines,step=0.5cm] (-1.4,-1.4) grid (1.4,1.4);
@@ -203,6 +212,31 @@ inputs |tikz.tex| or |pgf.tex|.
+\subsubsection{Setting up the Environment in Con\TeX t}
+
+Karl's uncle Hans uses Con\TeX t. Like Gerda, Hans can also use
+\tikzname. Instead of |\usepackage{tikz}| he says
+|\usemodule[tikz]|. Instead of |\begin{tikzpicture}| he writes
+ |\starttikzpicture| and instead of |\end{tikzpicture}| he writes
+|\stoptikzpicture|.
+
+His version of the example looks like this:
+\begin{codeexample}[code only]
+%% ConTeXt file
+\usemodule[tikz]
+
+\starttext
+ We are working on
+ \starttikzpicture
+ \draw (-1.5,0) -- (1.5,0);
+ \draw (0,-1.5) -- (0,1.5);
+ \stoptikzpicture.
+\stoptext
+\end{codeexample}
+
+Hans will now typeset this file in the usual way using |texexec|.
+
+
\subsection{Straight Path Construction}
@@ -937,11 +971,12 @@ be drawn ``normally.''
If Karl wishes to set a certain graphic option for the whole picture,
he can simply pass this option to the |\tikz| command or to the
|{tikzpicture}| environment (Gerda would pass the options to
-|\tikzpicture|). However, if Karl wants to apply graphic options to a
-local group, he put these commands inside a |{scope}| environment
-(Gerda uses |\scope| and |\endscope|). This environment takes graphic
-options as an optional argument and these options apply to everything
-inside the scope, but not to anything outside.
+|\tikzpicture| and Hans passes them to |\starttikzpicture|). However,
+if Karl wants to apply graphic options to a local group, he put these
+commands inside a |{scope}| environment (Gerda uses |\scope| and
+|\endscope|, Hans uses |\startscope| and |\stopscope|). This
+environment takes graphic options as an optional argument and these
+options apply to everything inside the scope, but not to anything outside.
Here is an example:
@@ -1354,64 +1389,3 @@ desired effect. So, here is the full code:
\end{tikzpicture}
\end{codeexample}
-
-\subsection{Nodes}
-
-Placing text at a given position is just a special case of a more
-general underlying mechanism. When you say |\draw (0,0) node{text};|,
-what actually happens is that a rectangular node, anchored at its center, is
-put at position $(0,0)$. On top of the rectangular node the text
-|text| is drawn. Since no action is specified for the rectangle (like
-|draw| or |fill|), the rectangle is actually discarded and only the
-text is shown. However, by adding |fill| or |draw|, we can make the
-underlying shape visible. Furthermore, we can \emph{change} the
-shape using for example |shape=circle| or just |circle|. If we include
-the package |pgflibraryshapes| we also get |ellipse|:
-
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \path (0,0) node[ellipse,fill=examplefill,draw]
- (h1) {hello world}
- (0.5,2) node[circle,shade,ball color=examplefill]
- (h2) {hello world};
- \draw [->,shorten >=2pt] (h1.north) -- (h2.south);
-\end{tikzpicture}
-\end{codeexample}
-
-As the above example shows, we can add the a name to a node by
-putting it in parentheses between |node| and the |{|\meta{text}|}|
-(you can also use the |name=| option). This will make \tikzname\ remember your node and all
-its anchors. You can then refer to these anchors when specifying
-coordinates. The syntax is |(|\meta{node
- name}|.|\meta{anchor}|)|. Currently, and also in the near future,
-\emph{this will not work across pictures since \tikzname\ looses track
- of the positions when it returns control to \TeX.} Magic hackery is
-possible for certain drivers, but a portable implementation seems
-impossible (just think of a possible \textsc{svg} driver).
-
-The option |shorten >| causes lines to be shortened by 2pt at the
-end. Similarly, |shorten <| can be used to shorten (or even lengthen)
-lines at the beginning. This is possible even if no arrow is drawn.
-
-It is not always necessary to specify the anchor. If you do not give
-an anchor, \tikzname\ will try to determine a reasonable border anchor by
-itself (if \tikzname\ fails to find anything useful, it will use the
-center instead). Here is a typical example:
-
-\begin{codeexample}[]
-\begin{tikzpicture}
- \begin{scope}[shape=circle,minimum size=1cm,fill=examplefill]
- \tikzstyle{every node}=[draw,fill]
- \node (q_A) at (0,0) {$q_A$};
- \node (q_E) at (6,0) {$q_E$};
- \node (q_1) at (2,0) {$q_1$};
- \node (q_2) at (4,2) {$q_2$};
- \end{scope}
- \draw (q_A) -- (q_1) -- (q_2) -| (q_E);
- \draw[->,shorten >=2pt] (q_A) .. controls +(75:1.4cm) and +(105:1.4cm) .. node[above] {$x$} (q_A);
-\end{tikzpicture}
-\end{codeexample}
-
-In the example, we used the |\node| command, which is an abbreviation
-for |\path node|.
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-xxcolor.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-xxcolor.tex
index 3e093a58174..dd51284cef0 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-xxcolor.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-xxcolor.tex
@@ -1,8 +1,12 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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.
+
\section{Extended Color Support}
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-main.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-main.tex
index d2ea9300f71..0b4b89b6dea 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-main.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-main.tex
@@ -1,8 +1,11 @@
-% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>.
+% Copyright 2006 by Till Tantau
%
-% This program can be redistributed and/or modified under the terms
-% of the LaTeX Project Public License Distributed from CTAN
-% archives in directory macros/latex/base/lppl.txt.
+% 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