diff options
Diffstat (limited to 'graphics/pgf/base/doc/text-en/pgfmanual-en-library-fit.tex')
-rw-r--r-- | graphics/pgf/base/doc/text-en/pgfmanual-en-library-fit.tex | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/graphics/pgf/base/doc/text-en/pgfmanual-en-library-fit.tex b/graphics/pgf/base/doc/text-en/pgfmanual-en-library-fit.tex deleted file mode 100644 index f5189a3cb1..0000000000 --- a/graphics/pgf/base/doc/text-en/pgfmanual-en-library-fit.tex +++ /dev/null @@ -1,161 +0,0 @@ -% Copyright 2019 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 two) options for fitting a node so that - it contains a set of coordinates. -\end{tikzlibrary} - -When you load this library, the following options become 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 are |(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 set up 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 a circular node. Note how the circle encompasses - exactly the same bounding box. - % -\begin{codeexample}[preamble={\usetikzlibrary{fit}}] -\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 containing all coordinates is computed. - Note that if a coordinate like |(a)| is used that contains 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 |align=center| 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}[preamble={\usetikzlibrary{fit}}] -\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}[preamble={\usetikzlibrary{fit,shapes.geometric}}] -\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} - -\begin{key}{/tikz/rotate fit=\meta{angle} (initially 0)} - This key fits \meta{coordinates or nodes} inside a node that is rotated by - \meta{angle}. As a side effect, it also sets the |/tikz/rotate| key. - % -\begin{codeexample}[preamble={\usetikzlibrary{fit}}] -\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, fit=(a) (b) (c) (d) (e)] {}; - \node[draw=red, rotate fit=30, fit=(a) (b) (c) (d) (e)] {}; -\end{tikzpicture} -\end{codeexample} - % -\end{key} |