summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-02-23 00:49:54 +0000
committerKarl Berry <karl@freefriends.org>2008-02-23 00:49:54 +0000
commit4fc1af1461e934c39f8f5e10d5d8788681d82223 (patch)
tree7716e8a3e8787a3d11c5ce728d21b808f786ce7d /Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex
parent6f5a4edf390b6e05291d7a4b816782b14122a205 (diff)
tikz/pgf 2.0 first attempt (22feb08)
git-svn-id: svn://tug.org/texlive/trunk@6741 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex141
1 files changed, 141 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex
new file mode 100644
index 00000000000..2108e77e333
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-fit.tex
@@ -0,0 +1,141 @@
+% 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{Fitting Library}
+\label{section-library-fit}
+
+\begin{tikzlibrary}{fit}
+ The library defines (currently only one) option for fitting a node
+ so that it contains a set of coordinates.
+\end{tikzlibrary}
+
+When you load this library, the following option becomes available:
+
+\begin{key}{/tikz/fit=\meta{coordinates or nodes}}
+ This option must be given to a |node| path command. The
+ \meta{coordinates or nodes} should be a sequence of \tikzname\
+ coordinates or node names, one directly after the other without
+ commas (like with the |plot coordinates| path operation). Examples
+ as |(1,0) (2,2)| or |(a) (1,0) (b)|, where |a| and |b| are nodes.
+
+ For this sequence of coordinates, a minimal bounding box is computed
+ that encompasses all the listed \meta{coordinates or nodes}. For
+ coordinates in the list, the bounding box is guaranteed to contain
+ this coordinate, for nodes it is guaranteed to contain the |east|,
+ |west|, |north| and |south| anchors of the node. In principle (the
+ details will be explained in a moment), things are now setup such
+ that the text box of the node will be exactly this bounding box.
+
+ Here is an example: We fit several points in a rectangular node. By
+ setting the |inner sep| to zero, we see exactly the text box of the
+ node. Then we fit these points again in circular node. Note how
+ the circle encompasses exactly the same bounding box.
+\begin{codeexample}[]
+\begin{tikzpicture}[inner sep=0pt,thick,
+ dot/.style={fill=blue,circle,minimum size=3pt}]
+ \draw[help lines] (0,0) grid (3,2);
+ \node[dot] (a) at (1,1) {};
+ \node[dot] (b) at (2,2) {};
+ \node[dot] (c) at (1,2) {};
+ \node[dot] (d) at (1.25,0.25) {};
+ \node[dot] (e) at (1.75,1.5) {};
+
+ \node[draw=red, fit=(a) (b) (c) (d) (e)] {box};
+ \node[draw,circle,fit=(a) (b) (c) (d) (e)] {};
+\end{tikzpicture}
+\end{codeexample}
+
+ Every time the |fit| option is used, the following style is also
+ applied to the node:
+ \begin{stylekey}{/tikz/every fit (initially \normalfont empty)}
+ Set this style to change the appearance of a node that uses the
+ |fit| option.
+ \end{stylekey}
+
+ The exact effects of the |fit| option are the following:
+ \begin{enumerate}
+ \item A minimal bounding box containg all coordinates is
+ computed. Note that if a coordinate like |(a)| is used that
+ contain a node name, this has the same effect as explicitly
+ providing the |(a.north)| and |(a.south)| and |(a.west)| and
+ |(a.east)|. If you wish to refer only to the center of the |a|
+ node, use |(a.center)| instead.
+ \item The |text width| option is set to the width of this bounding box.
+ \item The |text centered| option is set.
+ \item The |anchor| is set to |center|.
+ \item The |at| position of the node is set to the center of the
+ computed bounding box.
+ \item After the node has been typeset, its height and depth are
+ adjusted such that they add up to the height of the computed
+ bounding box and such that the text of the node is vertically
+ centered inside the box.
+ \end{enumerate}
+ The above means that, generally speaking, if the node contains text
+ like |box| in the above example, it will be centered inside the
+ box. It will be difficult to put the text elsewhere, in particular,
+ changing the |anchor| of the node will not have the desired
+ effect. Instead, what you should do is to create a node with the
+ |fit| option that does not contain any text, give it a name, and
+ then use normal nodes to add text at the desired
+ positions. Alternatively, consider using the |label| or |pin|
+ options.
+
+ Suppose, for instance, that in the above example we want the word
+ ``box'' to appear inside the box, but at its top. This can be
+ achieved as follows:
+\begin{codeexample}[]
+\begin{tikzpicture}[inner sep=0pt,thick,
+ dot/.style={fill=blue,circle,minimum size=3pt}]
+ \draw[help lines] (0,0) grid (3,2);
+ \node[dot] (a) at (1,1) {};
+ \node[dot] (b) at (2,2) {};
+ \node[dot] (c) at (1,2) {};
+ \node[dot] (d) at (1.25,0.25) {};
+ \node[dot] (e) at (1.75,1.5) {};
+
+ \node[draw=red,fit=(a) (b) (c) (d) (e)] (fit) {};
+ \node[below] at (fit.north) {box};
+\end{tikzpicture}
+\end{codeexample}
+
+ Here is a real-life example that uses fitting:
+
+\begin{codeexample}[]
+\begin{tikzpicture}
+ [vertex/.style={minimum size=2pt,fill,draw,circle},
+ open/.style={fill=none},
+ sibling distance=1.5cm,level distance=.75cm,
+ every fit/.style={ellipse,draw,inner sep=-2pt},
+ leaf/.style={label={[name=#1]below:$#1$}},auto]
+
+ \node [vertex] (root) {}
+ child { node [vertex,open] {}
+ child { node [vertex,open] {}
+ child { node [vertex] (b's parent) {}
+ child { node [vertex] {}
+ child { node [vertex,leaf=d] {} }
+ child { node [vertex,leaf=e] {} } }
+ child { node [vertex,leaf=b] {} } }
+ child { node [vertex,leaf=a] {} } }
+ child { node [coordinate] {}
+ child[missing]
+ child { node [vertex] (f's parent) {}
+ child { node [vertex,leaf=c] {} }
+ child { node [vertex,leaf=f] {} } } }
+ edge from parent node {$\rho$} };
+
+ \node [fit=(d) (e) (b) (b's parent),label=above left:$F^{(b,R)}$] {};
+ \node [fit=(c) (f) (f's parent),label=above right:$F^{(c,R)}$] {};
+\end{tikzpicture}
+\end{codeexample}
+
+
+\end{key}
+