diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-edges.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-edges.tex | 260 |
1 files changed, 260 insertions, 0 deletions
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: |