diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-shapes.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-shapes.tex | 340 |
1 files changed, 274 insertions, 66 deletions
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 index 91b717f13ac..29680fe657d 100644 --- 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 @@ -1,4 +1,4 @@ -% Copyright 2006 by Till Tantau +% Copyright 2006 by Till Tantau and Mark Wibrow % % This file may be distributed and/or modified % @@ -10,100 +10,269 @@ \section{Shape Library} +In addition to the standard shapes |rectangle|, |circle| and +|coordinate|, there exist a number of additional shapes defined in +different shape libraries. In the present section, these shapes are +described. + + \begin{pgflibrary}{shapes} - This library packages defines additional shapes, which are - described in the following. + This library packages just includes all of the libraries defined in + the following. Note that it includes only those libraries starting + with |shapes.|, more special-purpose libraries are described in + dedicated sections. \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. - +\subsection{Geometric Shapes} + +\begin{pgflibrary}{shapes.geometric} + This library defines different shapes that correspond to basic + geometric objects like ellipses or polygons. +\end{pgflibrary} + + +\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 [circle split,draw,double,fill=red!20] - { - $q_1$ - \nodepart{lower} - $00$ - }; + \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} - The shape inherits all anchors from the |circle| shape and defines - the |lower| anchor in addition. See also the - following figure: +\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=circle split,style=shape example] {text\nodepart{lower}lower}; + \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/below, east/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, lower/left, 130/above} + 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}{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{shape}{regular polygon} + This shape is a regular polygon, which, by default, is drawn so that a side + (rather than a corner) is always at the bottom. + \begin{codeexample}[] \begin{tikzpicture} - \draw[help lines] (0,0) grid (3,2); - \node [cross out,draw=red] at (1.5,1) {cross out}; + \foreach \i in {5,...,8} + \node[regular polygon, regular polygon sides=\i, draw] at (\i,0) {\i}; \end{tikzpicture} \end{codeexample} - A useful application is inside text as in the following example: + Two points should be remembered regarding the dimensions of the + polygon border. Firstly, the border is constructed using the incircle, that is, the + circle that touches every side of the polygon border. The radius of + the incircle is calculated to tightly fit the node contents. + \begin{codeexample}[] -Cross \tikz[baseline] \node [cross out,draw,anchor=text] {me}; out! +\begin{tikzpicture} + \foreach \a in {3,...,7}{ + \draw[gray!50] (\a*2,0) circle(0.5cm); + \node[regular polygon, regular polygon sides=\a, inner sep=0cm, draw] at (\a*2,0) + {\tikz\fill[red!50] rectangle(0.707cm,0.707cm);}; + } +\end{tikzpicture} +\end{codeexample} + + Secondly, if the node is enlarged to any specified minimum size, + width or height, this is interpreted as the diameter of the the + circumcircle, that is, the circle that passes through all the + corners of the polygon border. + +\begin{codeexample}[] +\begin{tikzpicture} + \foreach \a in {3,...,7}{ + \draw[gray!50] (\a*2,0) circle(0.5cm); + \node[regular polygon, regular polygon sides=\a, minimum size=1cm, draw] at (\a*2,0) {}; + } +\end{tikzpicture} +\end{codeexample} + + There are \pgfname{} commands and \tikzname{} options to set the + number of sides for the polygon, and the rotation of the polygon + border. The \pgfname{} commands are as follows: + + \begin{command}{\pgfsetpolygonsides\marg{integer}} + Set the number of sides for the polygon. + \end{command} + + \begin{command}{\pgfsetpolygonrotate\marg{angle}} + Rotate the border of the polygon independently of the node + contents (but in addition to any concurrent coordinate or canvas + transformation). + \end{command} + + The corresponding \tikzname{} options are: + + \begin{itemize} + \itemoption{regular polygon sides}|=|\meta{integer} + set the number of points for the star. + + \itemoption{regular polygon rotate}|=|\meta{angle} + rotate the border of the polygon independently of the node + contents. + \end{itemize} + + The anchors for the regular polygon shape are shown below: + +\begin{codeexample}[] +\Huge +\begin{tikzpicture} + \node[name=s, shape=regular polygon, regular polygon sides=5, style=shape example, inner sep=.5cm] + {Regular Polygon\vrule width 1pt height 2cm}; + \foreach \anchor/\placement in + {corner 1/above, corner 2/above, corner 3/left, corner 4/right, + corner 5/above, side 1/left, side 2/left, side 3/below, + side 4/right, side 5/right, mid/right, base/below, + center/above, text/left, 75/above, west/above, + east/above, north/below, south/above} + \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} + node[\placement] {\scriptsize\texttt{(s.\anchor)}}; +\end{tikzpicture} \end{codeexample} + +\end{shape} - This shape inherits all anchors from the |rectangle| shape, see also - the following figure: +\begin{shape}{star} + This shape is a star, which by default (minus any transformations) is + drawn with the first point pointing upwards. + A star should be thought of as having an set of ``inner points'' and + and ``outer points''. These points form the principle anchors for the + star, as shown below: + \begin{codeexample}[] \Huge \begin{tikzpicture} - \node[name=s,shape=cross out,style=shape example] {cross out\vrule width 1pt height 2cm}; + \node[name=s, shape=star, star points=5, star point ratio=1.5, style=shape example, inner sep=1.5cm] + {Star\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)}}; + {inner point 1/above, inner point 2/above, inner point 3/below, + inner point 4/right, inner point 5/above, outer point 1/above, + outer point 2/above, outer point 3/left, outer point 4/right, + outer point 5/above, mid/right, base/below, + center/above, text/left, 75/above} + \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)} + node[\placement] {\scriptsize\texttt{(s.\anchor)}}; \end{tikzpicture} \end{codeexample} + + The inner points of the border are based on the radius of the circle + which tightly fits the node contents. + Any specified minimum size, width or height, is interpreted as the + diameter of the circle that passes through every outer point. + + There are \pgfname{} commands and \tikzname{} options to set various + parameters for the star, such as the number of points, the height of + the points and the rotation of the star border. + + The \pgfname{} commands are as follows: + + \begin{command}{\pgfsetstarpoints\marg{integer}} + Sets the number of points for the star. + \end{command} + + \begin{command}{\pgfsetstarpointheight\marg{distance}} + Sets the height of the star points. This is the distance between the + inner point and outer point radii. If the star is enlarged to some + specified minimum size, the inner radius is increased to maintain + the point height. + \end{command} + + \begin{command}{\pgfsetstarpointratio\marg{number}} + Sets the ratio between the outer point and inner point radii. + If the star is enlarged to some specified minimum size, the + inner radius is increased to maintain the ratio. + \end{command} + + \begin{command}{\pgfsetstarrotate\marg{angle}} + Rotates the border of the star, independently of the node contents, + but subject to any coordinate or canvas transformations. + \end{command} + + The corresponding \tikzname{} options are: + + \begin{itemize} + \itemoption{star points}|=|\meta{integer} + set the number of points for the star. + + \itemoption{star point height}|=|\meta{distance} + set the height of the points for the star. + + \itemoption{star point ratio}|=|\meta{number} + set the ratio between the outer point radius and the inner point + radius. + + \itemoption{star rotate}|=|\meta{angle} + rotate the star shape border indepently of the node contents. + + \end{itemize} \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. + +\subsection{Symbol Shapes} + +\begin{pgflibrary}{shapes.symbols} + This library defines shapes that can be used for drawing symbols + like a forbidden sign or a cloud. +\end{pgflibrary} + + + +\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=diamond,style=shape example] {Diamond\vrule width 1pt height 2cm}; + \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/above, - base/below, + 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)} @@ -112,45 +281,85 @@ Cross \tikz[baseline] \node [cross out,draw,anchor=text] {me}; out! \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. + + +\subsection{Shapes with Multiple Text Parts} + +\begin{pgflibrary}{shapes.multipart} + This library defines general-purpose shapes that are composed of + multiple (text) parts. +\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=ellipse,style=shape example] {Ellipse\vrule width 1pt height 2cm}; + \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/above, east/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, 10/right, 130/above} + 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}{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. - + +\subsection{Miscellaneous Shapes} + +\begin{pgflibrary}{shapes.misc} + This library defines general-purpose shapes that do not fit in the + previous categories. +\end{pgflibrary} + + + +\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} - \node [forbidden sign,line width=1ex,draw=red,fill=white] {Smoking}; + \draw[help lines] (0,0) grid (3,2); + \node [cross out,draw=red] at (1.5,1) {cross out}; \end{tikzpicture} \end{codeexample} - The shape inherits all anchors from the |circle| shape, see also the - following figure: + 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=forbidden sign,style=shape example] {Forbidden\vrule width 1pt height 2cm}; + \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, @@ -164,7 +373,6 @@ Cross \tikz[baseline] \node [cross out,draw,anchor=text] {me}; out! \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 |