diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse6.html')
-rw-r--r-- | Master/texmf-dist/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse6.html | 713 |
1 files changed, 713 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse6.html b/Master/texmf-dist/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse6.html new file mode 100644 index 00000000000..df454968210 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse6.html @@ -0,0 +1,713 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html > +<head><title>6 Design Principles</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<meta name="generator" content="TeX4ht (http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html)"> +<meta name="originator" content="TeX4ht (http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html)"> +<!-- html --> +<meta name="src" content="pgfmanual.tex"> +<meta name="date" content="2005-10-23 18:34:00"> +<link rel="stylesheet" type="text/css" href="pgfmanual.css"> +</head><body +> + <div class="crosslinks"><p class="noindent">[<a +href="pgfmanualse7.html" >next</a>] [<a +href="#tailpgfmanualse6.html">tail</a>] [<a +href="pgfmanual.html#pgfmanualse6.html" >up</a>] </p></div> + <h3 class="sectionHead"><span class="titlemark">6 </span> <a + id="x7-660006"></a>Design Principles</h3> +<!--l. 10--><p class="noindent">This section describes the design principles behind the Ti<span +class="cmti-10">k</span>Z frontend, where Ti<span +class="cmti-10">k</span>Z means “Ti<span +class="cmti-10">k</span>Z ist <span +class="cmti-10">kein</span> +Zeichenprogramm.” To use Ti<span +class="cmti-10">k</span>Z, as a <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> user say <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\usepackage{tikz}</span></span></span> somewhere in the preamble, as a plain +<span class="TEX">T<span +class="E">E</span>X</span> user say <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\input</span><span +class="cmtt-10"> tikz.tex</span></span></span>. Ti<span +class="cmti-10">k</span>Z’s job is to make your life easier by providing an easy-to-learn and +easy-to-use syntax for describing graphics. +<!--l. 18--><p class="indent"> The commands and syntax of Ti<span +class="cmti-10">k</span>Z were influenced by several sources. The basic command names and the +notion of path operations is taken from <span +class="cmcsc-10"><small +class="small-caps">M</small><small +class="small-caps">E</small><small +class="small-caps">T</small><small +class="small-caps">A</small><small +class="small-caps">F</small><small +class="small-caps">O</small><small +class="small-caps">N</small><small +class="small-caps">T</small></span>, the option mechanism comes from <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">S</small><small +class="small-caps">T</small><small +class="small-caps">R</small><small +class="small-caps">I</small><small +class="small-caps">C</small><small +class="small-caps">K</small><small +class="small-caps">S</small></span>, the notion of +styles is reminiscent of <span +class="cmcsc-10"><small +class="small-caps">S</small><small +class="small-caps">V</small><small +class="small-caps">G</small></span>. To make it all work together, some compromises were necessary. I also added some +ideas of my own, like meta-arrows and coordinate transformations. +<!--l. 26--><p class="indent"> The following basic design principles underlie Ti<span +class="cmti-10">k</span>Z: + <ol type="1" class="enumerate1" > + <li class="enumerate" value="1" +><a + id="x7-66002x1"></a>Special syntax for specifying points. + </li> + <li class="enumerate" value="2" +><a + id="x7-66004x2"></a>Special syntax for path specifications. + </li> + <li class="enumerate" value="3" +><a + id="x7-66006x3"></a>Actions on paths. + </li> + <li class="enumerate" value="4" +><a + id="x7-66008x4"></a>Key-value syntax for graphic parameters. + </li> + <li class="enumerate" value="5" +><a + id="x7-66010x5"></a>Special syntax for nodes. + </li> + <li class="enumerate" value="6" +><a + id="x7-66012x6"></a>Special syntax for trees. + </li> + <li class="enumerate" value="7" +><a + id="x7-66014x7"></a>Grouping of graphic parameters. + </li> + <li class="enumerate" value="8" +><a + id="x7-66016x8"></a>Coordinate transformation system.</li></ol> +<!--l. 40--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a + id="x7-670006.1"></a>Special Syntax For Specifying Points</h4> +<!--l. 42--><p class="noindent">Ti<span +class="cmti-10">k</span>Z provides a special syntax for specifying points and coordinates. In the simplest case, you provide two +<span class="TEX">T<span +class="E">E</span>X</span> dimensions, separated by commas, in round brackets as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1cm,2pt)</span></span></span>. +<!--l. 46--><p class="indent"> You can also specify a point in polar coordinates by using a colon instead of a comma as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(30:1cm)</span></span></span>, which +means “1cm in a 30 degrees direction.” +<!--l. 50--><p class="indent"> If you do not provide a unit, as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(2,1)</span></span></span>, you specify a point in <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">G</small><small +class="small-caps">F</small></span>’s <span +class="cmmi-10">xy</span>-coordinate system. By default, the unit +<span +class="cmmi-10">x</span>-vector goes 1cm to the right and the unit <span +class="cmmi-10">y</span>-vector goes 1cm upward. +<!--l. 54--><p class="indent"> By specifying three numbers as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1,1,1)</span></span></span> you specify a point in <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">G</small><small +class="small-caps">F</small></span>’s <span +class="cmmi-10">xyz</span>-coordinate system. +<!--l. 57--><p class="indent"> It is also possible to use an anchor of a previously defined shape as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(first</span><span +class="cmtt-10"> node.south)</span></span></span>. +<!--l. 60--><p class="indent"> You can add two plus signs before a coordinate as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">++(1cm,0pt)</span></span></span>. This means “1cm to the right of the last +point used.” This allows you to easily specify relative movements. For example, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1,0)</span><span +class="cmtt-10"> ++(1,0)</span><span +class="cmtt-10"> ++(0,1)</span></span></span> specifies +the three coordinates <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1,0)</span></span></span>, then <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(2,0)</span></span></span>, and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(2,1)</span></span></span>. +<!--l. 66--><p class="indent"> Finally, instead of two plus signs, you can also add a single one. This also specifies a point in a relative +manner, but it does not “change” the current point used in subsequent relative commands. For example, +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1,0)</span><span +class="cmtt-10"> +(1,0)</span><span +class="cmtt-10"> +(0,1)</span></span></span> specifies the three coordinates <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1,0)</span></span></span>, then <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(2,0)</span></span></span>, and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(1,1)</span></span></span>. + + +<!--l. 72--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a + id="x7-680006.2"></a>Special Syntax For Path Specifications</h4> +<!--l. 74--><p class="noindent">When creating a picture using Ti<span +class="cmti-10">k</span>Z, your main job is the specification of <span +class="cmti-10">paths</span>. A path is a series of straight or +curved lines, which need not be connected. Ti<span +class="cmti-10">k</span>Z makes it easy to specify paths, partly using the syntax of +<span +class="cmcsc-10"><small +class="small-caps">M</small><small +class="small-caps">E</small><small +class="small-caps">T</small><small +class="small-caps">A</small><small +class="small-caps">P</small><small +class="small-caps">O</small><small +class="small-caps">S</small><small +class="small-caps">T</small></span>. For example, to specify a triangular path you use +<!--l. 79--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-66-" ><colgroup id="TBL-66-1g"><col +id="TBL-66-1"></colgroup><tr + valign="baseline" id="TBL-66-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-66-1-1" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"><br><span +class="cmtt-8">(5pt,0pt)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (0pt,0pt)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (0pt,5pt)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> cycle</span> +</div> </td></tr></table> </td> +</tr></table> +</div> +<!--l. 82--><p class="indent"> and you get <object data="pgfmanual-65.svg" width="5.4pt" height="5.4pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> when you draw this path. +<!--l. 85--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a + id="x7-690006.3"></a>Actions on Paths</h4> +<!--l. 87--><p class="noindent">A path is just a series of straight and curved lines, but it is not yet specified what should happen with it. One +can <span +class="cmti-10">draw </span>a path, <span +class="cmti-10">fill </span>a path, <span +class="cmti-10">shade </span>it, <span +class="cmti-10">clip </span>it, or do any combination of these. Drawing (also known +as <span +class="cmti-10">stroking</span>) can be thought of as taking a pen of a certain thickness and moving it along the path, +thereby drawing on the canvas. Filling means that the interior of the path is filled with a uniform color. +Obviously, filling makes sense only for <span +class="cmti-10">closed </span>paths and a path is automatically closed prior to filling, if +necessary. +<!--l. 97--><p class="indent"> Given a path as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path</span><span +class="cmtt-10"> (0,0)</span><span +class="cmtt-10"> rectangle</span><span +class="cmtt-10"> (2ex,1ex);</span></span></span>, you can draw it by adding the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">draw</span></span></span> option as in +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path[draw]</span><span +class="cmtt-10"> (0,0)</span><span +class="cmtt-10"> rectangle</span><span +class="cmtt-10"> (2ex,1ex);</span></span></span>, which yields <object data="pgfmanual-66.svg" width="9.01108pt" height="4.70554pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object>. The <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\draw</span></span></span> command is just an abbreviation for +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path[draw]</span></span></span>. To fill a path, use the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">fill</span></span></span> option or the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\fill</span></span></span> command, which is an abbreviation for <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path[fill]</span></span></span>. +The <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\filldraw</span></span></span> command is an abbreviation for <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path[fill,draw]</span></span></span>. Shading is caused by the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">shade</span></span></span> option (there +are <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\shade</span></span></span> and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\shadedraw</span></span></span> abbreviations) and clipping by the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">clip</span></span></span> option. There is is also a <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\clip</span></span></span> command, +which does the same as <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path[clip]</span></span></span>, but not commands like <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\drawclip</span></span></span>. Use, say, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\draw[clip]</span></span></span> or +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\path[draw,clip]</span></span></span> instead. +<!--l. 110--><p class="indent"> All of these commands can only be used inside <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{tikzpicture}</span></span></span> environments. +<!--l. 113--><p class="indent"> Ti<span +class="cmti-10">k</span>Z allows you to use different colors for filling and stroking. +<!--l. 116--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a + id="x7-700006.4"></a>Key-Value Syntax for Graphic Parameters</h4> +<!--l. 117--><p class="noindent">Whenever Ti<span +class="cmti-10">k</span>Z draws or fills a path, a large number of graphic parameters influenced the rendering. Examples +include the colors used, the dashing pattern, the clipping area, the line width, and many others. In Ti<span +class="cmti-10">k</span>Z, all these +options are specified as lists of so called key-value pairs, as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">color=red</span></span></span>, that are passed as optional parameters to +the path drawing and filling commands. This usage is similar to <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">S</small><small +class="small-caps">T</small><small +class="small-caps">R</small><small +class="small-caps">I</small><small +class="small-caps">C</small><small +class="small-caps">K</small><small +class="small-caps">S</small></span>. For example, the following will draw a +thick, red triangle; +<!--l. 125--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-67-" ><colgroup id="TBL-67-1g"><col +id="TBL-67-1"><col +id="TBL-67-2"></colgroup><tr + valign="baseline" id="TBL-67-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-67-1-1" +class="td11"> <object data="pgfmanual-67.svg" width="30.45274pt" height="2.0pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </td><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-67-1-2" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"><br><span +class="cmtt-8">\tikz</span><span +class="cmtt-8"> \draw[line</span><span +class="cmtt-8"> width=2pt,color=red]</span><span +class="cmtt-8"> (1,0)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (0,0)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (1,0)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> cycle;</span> +</div> </td></tr></table> </td> +</tr></table> +</div> +<!--l. 129--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.5 </span> <a + id="x7-710006.5"></a>Special Syntax for Specifying Nodes</h4> +<!--l. 130--><p class="noindent">Ti<span +class="cmti-10">k</span>Z introduces a special syntax for adding text or, more generally, nodes to a graphic. When you specify a path, +add nodes as in the following example: +<!--l. 133--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"> +<table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-68-" ><colgroup id="TBL-68-1g"><col +id="TBL-68-1"><col +id="TBL-68-2"></colgroup><tr + valign="baseline" id="TBL-68-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-68-1-1" +class="td11"> <object data="pgfmanual-68.svg" width="40.73573pt" height="35.06111pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </td><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-68-1-2" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"> +<br><span +class="cmtt-8">\tikz</span><span +class="cmtt-8"> \draw</span><span +class="cmtt-8"> (1,1)</span><span +class="cmtt-8"> node</span><span +class="cmtt-8"> {text}</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (2,2);</span></div> </td></tr></table> </td> +</tr></table></div> +<!--l. 136--><p class="indent"> Nodes are inserted at the current position of the path, but only <span +class="cmti-10">after </span>the path has been rendered. When special +options are given, as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\draw</span><span +class="cmtt-10"> (1,1)</span><span +class="cmtt-10"> node[circle,draw]</span><span +class="cmtt-10"> {text};</span></span></span>, the text is not just put at the current position. +Rather, it is surrounded by a circle and this circle is “drawn.” +<!--l. 143--><p class="indent"> You can add a name to a node for later reference either by using the option <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">name=</span></span></span><span +class="cmsy-10"><</span><span +class="cmti-10">node name</span><span +class="cmsy-10">> </span>or by stating the +node name in parentheses outside the text as in <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">node[circle](name){text}</span></span></span>. +<!--l. 147--><p class="indent"> Predefined shapes include <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">rectangle</span></span></span>, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">circle</span></span></span>, and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">ellipse</span></span></span>, but it is possible (though a bit challenging) to +define new shapes. + + +<!--l. 150--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.6 </span> <a + id="x7-720006.6"></a>Special Syntax for Specifying Trees</h4> +<!--l. 152--><p class="noindent">In addition to the “node syntax,” Ti<span +class="cmti-10">k</span>Z also introduces a special syntax for drawing trees. The syntax is intergrated +with the special node syntax and only few new commands need to be remebered. In essence, a <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">node</span></span></span> can be followed +by any number of children, each introduced by the keyword <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">child</span></span></span>. The children are nodes themselves, each of which +may have children in turn. +<!--l. 159--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"> +<table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-69-" ><colgroup id="TBL-69-1g"><col +id="TBL-69-1"><col +id="TBL-69-2"></colgroup><tr + valign="baseline" id="TBL-69-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-69-1-1" +class="td11"> <object data="pgfmanual-69.svg" width="88.1847pt" height="98.57181pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </td><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-69-1-2" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"> +<br><span +class="cmtt-8">\begin{tikzpicture}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \node</span><span +class="cmtt-8"> {root}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {left}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {right}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {child}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {child}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> };</span> +<br><span +class="cmtt-8">\end{tikzpicture}</span></div> </td></tr></table> </td> +</tr></table></div> +<!--l. 170--><p class="indent"> Since trees are made up from nodes, it is possible to use options to modify the way trees are drawn. Here are two +examples of the above tree, redrawn with different options: +<!--l. 174--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-70-" ><colgroup id="TBL-70-1g"><col +id="TBL-70-1"><col +id="TBL-70-2"></colgroup><tr + valign="baseline" id="TBL-70-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-70-1-1" +class="td11"> <object data="pgfmanual-70.svg" width="88.1847pt" height="98.57181pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </td><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-70-1-2" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"> +<br><span +class="cmtt-8">\begin{tikzpicture}[edge</span><span +class="cmtt-8"> from</span><span +class="cmtt-8"> parent</span><span +class="cmtt-8"> fork</span><span +class="cmtt-8"> down]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \tikzstyle{every</span><span +class="cmtt-8"> node}=[fill=red!30,rounded</span><span +class="cmtt-8"> corners]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \tikzstyle{edge</span><span +class="cmtt-8"> from</span><span +class="cmtt-8"> parent}=[red,-o,thick,draw]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \node</span><span +class="cmtt-8"> {root}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {left}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {right}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {child}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {child}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> };</span> +<br><span +class="cmtt-8">\end{tikzpicture}</span></div> </td></tr></table> </td> +</tr></table></div> +<!--l. 187--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-71-" ><colgroup id="TBL-71-1g"><col +id="TBL-71-1"><col +id="TBL-71-2"></colgroup><tr + valign="baseline" id="TBL-71-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-71-1-1" +class="td11"> <object data="pgfmanual-71.svg" width="114.55649pt" height="91.72525pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </td><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-71-1-2" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"> +<br><span +class="cmtt-8">\begin{tikzpicture}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> [parent</span><span +class="cmtt-8"> anchor=east,child</span><span +class="cmtt-8"> anchor=west,grow=east]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \tikzstyle{every</span><span +class="cmtt-8"> node}=[ball</span><span +class="cmtt-8"> color=red,circle,text=white]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \tikzstyle{edge</span><span +class="cmtt-8"> from</span><span +class="cmtt-8"> parent}=[draw,dashed,thick,red]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \node</span><span +class="cmtt-8"> {root}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {left}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {right}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {child}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> child</span><span +class="cmtt-8"> {node</span><span +class="cmtt-8"> {child}}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> };</span> +<br><span +class="cmtt-8">\end{tikzpicture}</span></div> </td></tr></table> </td> +</tr></table></div> + + +<!--l. 201--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.7 </span> <a + id="x7-730006.7"></a>Grouping of Graphic Parameters</h4> +<!--l. 203--><p class="noindent">Graphic parameters should often apply to several path drawing or filling commands. For example, we may wish to +draw numerous lines all with the same line width of 1pt. For this, we put these commands in a <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{scope}</span></span></span> +environment that takes the desired graphic options as an optional parameter. Naturally, the specified graphic +parameters apply only to the drawing and filling commands inside the environment. Furthermore, nested +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{scope}</span></span></span> environments or individual drawing commands can override the graphic parameters of outer +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{scope}</span></span></span> environments. In the following example, three red lines, two green lines, and one blue line are +drawn: +<!--l. 214--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" +cellspacing="0" cellpadding="0" +frame="void" id="TBL-72-" ><colgroup id="TBL-72-1g"><col +id="TBL-72-1"><col +id="TBL-72-2"></colgroup><tr + valign="baseline" id="TBL-72-1-"><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-72-1-1" +class="td11"> <object data="pgfmanual-72.svg" width="28.85274pt" height="28.85274pt" type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </td><td align="left" style="white-space:nowrap; text-align:left;" id="TBL-72-1-2" +class="td11"> <table class="minipage"><tr><td><div class="obeylines-v"> +<br><span +class="cmtt-8">\begin{tikzpicture}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \begin{scope}[color=red]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> \draw</span><span +class="cmtt-8"> (0mm,10mm)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (10mm,10mm);</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> \draw</span><span +class="cmtt-8"> (0mm,</span><span +class="cmtt-8"> 8mm)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (10mm,</span><span +class="cmtt-8"> 8mm);</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> \draw</span><span +class="cmtt-8"> (0mm,</span><span +class="cmtt-8"> 6mm)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (10mm,</span><span +class="cmtt-8"> 6mm);</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \end{scope}</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \begin{scope}[color=green]</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> \draw</span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> (0mm,</span><span +class="cmtt-8"> 4mm)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (10mm,</span><span +class="cmtt-8"> 4mm);</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> \draw</span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> (0mm,</span><span +class="cmtt-8"> 2mm)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (10mm,</span><span +class="cmtt-8"> 2mm);</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> </span><span +class="cmtt-8"> \draw[color=blue]</span><span +class="cmtt-8"> (0mm,</span><span +class="cmtt-8"> 0mm)</span><span +class="cmtt-8"> --</span><span +class="cmtt-8"> (10mm,</span><span +class="cmtt-8"> 0mm);</span> +<br><span +class="cmtt-8"> </span><span +class="cmtt-8"> \end{scope}</span> +<br><span +class="cmtt-8">\end{tikzpicture}</span></div> </td></tr></table> </td> +</tr></table></div> +<!--l. 229--><p class="indent"> The <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{tikzpicture}</span></span></span> environment itself also behaves like a <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{scope}</span></span></span> environment, that is, you can +specify graphic parameters using an optional argument. These optional apply to all commands in the +picture. +<!--l. 235--><p class="noindent"> + <h4 class="subsectionHead"><span class="titlemark">6.8 </span> <a + id="x7-740006.8"></a>Coordinate Transformation System</h4> +<!--l. 237--><p class="noindent">Ti<span +class="cmti-10">k</span>Z relies entirely on <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">G</small><small +class="small-caps">F</small></span>’s <span +class="cmti-10">coordinate </span>transformation system to perform transformations. <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">G</small><small +class="small-caps">F</small></span> also supports +<span +class="cmti-10">canvas </span>transformations, a more low-level transformation system, but this system is not accessible from Ti<span +class="cmti-10">k</span>Z. There +are two reasons for this: First, the canvas transformation must be used with great care and often results in “bad” +graphics with changing line width and text in wrong sizes. Second, <span +class="cmcsc-10"><small +class="small-caps">P</small><small +class="small-caps">G</small><small +class="small-caps">F</small></span> looses track of where nodes and shapes are +positioned when canvas transformations are used. +<!--l. 246--><p class="indent"> For more details on the difference between coordinate transformations and canvas transformations see +Section <a +href="pgfmanualse18.html#x19-19100018.4">18.4<!--tex4ht:ref: section-design-transformations --></a>. + + + + + + + <div class="crosslinks"><p class="noindent">[<a +href="pgfmanualse7.html" >next</a>] [<a +href="pgfmanualse6.html" >front</a>] [<a +href="pgfmanual.html#pgfmanualse6.html" >up</a>] </p></div> +<!--l. 8--><p class="indent"> <a + id="tailpgfmanualse6.html"></a> +</body></html> |