summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/version-for-tex4ht/en/pgfmanualse34.html
blob: d4db4725950575a2803369e85944367ef63d73d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  "http://www.w3.org/TR/html4/loose.dtd">  
<html > 
<head><title>34 The Soft Path Subsystem</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-11-15 18:41:00"> 
<link rel="stylesheet" type="text/css" href="pgfmanual.css"> 
</head><body 
>
   <div class="crosslinks"><p class="noindent">[<a 
href="pgfmanualse35.html" >next</a>] [<a 
href="pgfmanualse33.html" >prev</a>] [<a 
href="pgfmanualse33.html#tailpgfmanualse33.html" >prev-tail</a>] [<a 
href="#tailpgfmanualse34.html">tail</a>] [<a 
href="pgfmanual.html#pgfmanualse34.html" >up</a>] </p></div>
   <h3 class="sectionHead"><span class="titlemark">34   </span> <a 
 id="x35-32300034"></a>The Soft Path Subsystem</h3>
<!--l. 14--><p class="noindent">This section describes a set of commands for creating <span 
class="cmti-10">soft paths </span>as opposed to the commands of the previous
section, which created <span 
class="cmti-10">hard paths</span>. A soft path is a path that can still be &#8220;changed&#8221; or &#8220;molded.&#8221; Once you (or the
<span 
class="cmcsc-10"><small 
class="small-caps">P</small><small 
class="small-caps">G</small><small 
class="small-caps">F</small></span>&nbsp;system) is satisfied with a soft path, it is turned into a hard path, which can be inserted into the resulting <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">.pdf</span></span></span>
or <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">.ps</span></span></span> file.
<!--l. 21--><p class="indent">   Note that the commands described in this section are &#8220;high-level&#8221; in the sense that they are not
implemented in driver files, but rather directly by the <span 
class="cmcsc-10"><small 
class="small-caps">P</small><small 
class="small-caps">G</small><small 
class="small-caps">F</small></span>-system layer. For this reason, the commands for
creating soft paths do not start with <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@</span></span></span>, but rather with <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@</span></span></span>. On the other hand,
as a user you will never use these commands directly, so they are described as part of the low-level
interface.
<!--l. 31--><p class="noindent">
   <h4 class="subsectionHead"><span class="titlemark">34.1   </span> <a 
 id="x35-32400034.1"></a>Path Creation Process</h4>
<!--l. 33--><p class="noindent">When the user writes a command like <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\draw</span><span 
class="cmtt-10">&nbsp;(0bp,0bp)</span><span 
class="cmtt-10">&nbsp;--</span><span 
class="cmtt-10">&nbsp;(10bp,0bp);</span></span></span> quite a lot happens behind the
scenes:
     <ol type="1" class="enumerate1" >
     <li class="enumerate" value="1" 
><a 
 id="x35-324002x1"></a>The frontend command is translated by Ti<span 
class="cmti-10">k</span>Z&nbsp;into commands of the basic layer. In essence, the command is
     translated to something like
     <!--l. 40--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
frame="void" id="TBL-578-" ><colgroup id="TBL-578-1g"><col 
id="TBL-578-1"></colgroup><tr  
 valign="baseline" id="TBL-578-1-"><td  align="left" style="white-space:nowrap; text-align:left;" id="TBL-578-1-1"  
class="td11">  <table class="minipage"><tr><td><div class="obeylines-v">
<br><span 
class="cmtt-8">\pgfpathmoveto{\pgfpoint{0bp}{0bp}}</span>
<br><span 
class="cmtt-8">\pgfpathlineto{\pgfpoint{10bp}{0bp}}</span>
<br><span 
class="cmtt-8">\pgfusepath{stroke}</span></div>                                                                                           </td></tr></table> </td>
</tr></table></div>
     </li>
     <li class="enumerate" value="2" 
><a 
 id="x35-324004x2"></a>The <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfpathxxxx</span></span></span> command do <span 
class="cmti-10">not </span>directly call &#8220;hard&#8221; commands like <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@xxxx</span></span></span>. Instead, the
     command <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfpathmoveto</span></span></span> invokes a special command called <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@moveto</span></span></span> and <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfpathlineto</span></span></span>
     invokes <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@lineto</span></span></span>.
     <!--l. 51--><p class="noindent">The <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@xxxx</span></span></span> commands, which are described below, construct a soft path. Each time such a
     command is used, special tokens are added to the end of an internal macro that stores the soft path currently
     being constructed.
     </li>
     <li class="enumerate" value="3" 
><a 
 id="x35-324006x3"></a>When the <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfusepath</span></span></span> is encountered, the soft path stored in the internal macro is &#8220;invoked.&#8221; Only now does
     a special macro iterate over the soft path. For each line-to or move-to operation on this path it calls an
     appropriate <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@moveto</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@lineto</span></span></span> in order to, finally, create the desired hard path, namely, the
     string of literals in the <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">.pdf</span></span></span> or <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">.ps</span></span></span> file.
     </li>
     <li class="enumerate" value="4" 
><a 
 id="x35-324008x4"></a>After the path has been invoked, <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@stroke</span></span></span> is called to insert the literal for stroking the
     path.</li></ol>
<!--l. 67--><p class="indent">   Why such a complicated process? Why not have <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfpathlineto</span></span></span> directly call <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@lineto</span></span></span> and be done
with it? There are two reasons:
     <ol type="1" class="enumerate1" >
     <li class="enumerate" value="1" 
><a 
 id="x35-324010x1"></a>The <span 
class="cmcsc-10"><small 
class="small-caps">P</small><small 
class="small-caps">D</small><small 
class="small-caps">F</small></span>&nbsp;specification requires that a path is not interrupted by any non-path-construction commands. Thus,
     the following code will result in a corrupted <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">.pdf</span></span></span>:
     <!--l. 74--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
frame="void" id="TBL-579-" ><colgroup id="TBL-579-1g"><col 
id="TBL-579-1"></colgroup><tr  
 valign="baseline" id="TBL-579-1-"><td  align="left" style="white-space:nowrap; text-align:left;" id="TBL-579-1-1"  
class="td11">  <table class="minipage"><tr><td><div class="obeylines-v">
<br><span 
class="cmtt-8">\pgfsys@moveto{0}{0}</span>
<br><span 
class="cmtt-8">\pgfsys@setlinewidth{1}</span>
<br><span 
class="cmtt-8">\pgfsys@lineto{10}{0}</span>
<br><span 
class="cmtt-8">\pgfsys@stroke</span></div>                                                                                                </td></tr></table> </td>
</tr></table></div>
                                                                                         
                                                                                         
     <!--l. 80--><p class="noindent">Such corrupt code is <span 
class="cmti-10">tolerated </span>by most viewers, but not always. It is much better to create only (reasonably)
     legal code.
     </li>
     <li class="enumerate" value="2" 
><a 
 id="x35-324012x2"></a>A soft path can still be changed, while a hard path is fixed. For example, one can still change the starting and
     end points of a soft path or do optimizations on it. Such transformations are not possible on hard
     paths.</li></ol>
<!--l. 90--><p class="noindent">
   <h4 class="subsectionHead"><span class="titlemark">34.2   </span> <a 
 id="x35-32500034.2"></a>Starting and Ending a Soft Path</h4>
<!--l. 92--><p class="noindent">No special action must be taken in order to start the creation of a soft path. Rather, each time a command like
<span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@lineto</span></span></span> is called, a special token is added to the (global) current soft path being
constructed.
<!--l. 97--><p class="indent">   However, you can access and change the current soft path. In this way, it is possible to store a soft path, to
manipulate it, or to invoke it.
<!--l. 101--><p class="indent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox467"><span 
class="cmtt-10">\pgfsyssoftpath@getcurrentpath</span><span 
class="cmtt-10">{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">macro name</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}</span></span> </dt><dd 
class="description">
<a 
 id="dx35-325001"></a>
     <!--l. 102--><p class="noindent">This command will store the current soft path in <span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">macro name</span><span 
class="cmsy-10">&gt;</span>. </dd></dl>
<!--l. 105--><p class="indent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox468"><span 
class="cmtt-10">\pgfsyssoftpath@setcurrentpath</span><span 
class="cmtt-10">{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">macro name</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}</span></span> </dt><dd 
class="description">
<a 
 id="dx35-325002"></a>
     <!--l. 106--><p class="noindent">This command will set the current soft path to be the path stored in <span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">macro name</span><span 
class="cmsy-10">&gt;</span>. This macro
     should store a path that has previously been extracted using the <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@getcurrentpath</span></span></span>
     command and has possibly been modified subsequently. </dd></dl>
<!--l. 112--><p class="indent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox469"><span 
class="cmtt-10">\pgfsyssoftpath@invokecurrentpath</span></span> </dt><dd 
class="description">
<a 
 id="dx35-325003"></a>
     <!--l. 113--><p class="noindent">This command will turn the current soft path in a &#8220;hard&#8221; path. To do so, it iterates over the soft path
     and calls an appropriate <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsys@xxxx</span></span></span> command for each element of the path. Note that the current
     soft path is <span 
class="cmti-10">not changed </span>by this command. Thus, in order to start a new soft path after the old one
     has been invoked and is no longer needed, you need to set the current soft path to be empty. This may
     seems strange, but it is often useful to immediately use the last soft path again. </dd></dl>
<!--l. 123--><p class="indent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox470"><span 
class="cmtt-10">\pgfsyssoftpath@flushcurrentpath</span></span> </dt><dd 
class="description">
<a 
 id="dx35-325004"></a>
     <!--l. 124--><p class="noindent">This command will invoke the current soft path and then set it to be empty. </dd></dl>
<!--l. 130--><p class="noindent">
   <h4 class="subsectionHead"><span class="titlemark">34.3   </span> <a 
 id="x35-32600034.3"></a>Soft Path Creation Commands</h4>
<!--l. 132--><p class="noindent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox471"><span 
class="cmtt-10">\pgfsyssoftpath@moveto</span><span 
class="cmtt-10">{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">x</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">y</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}</span></span> </dt><dd 
class="description">
<a 
 id="dx35-326001"></a>
                                                                                         
                                                                                         
     <!--l. 133--><p class="noindent">This command appends a &#8220;move-to&#8221; segment to the current soft path. The coordinates <span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">x</span><span 
class="cmsy-10">&gt; </span>and <span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">y</span><span 
class="cmsy-10">&gt;</span>
     are given as normal <span class="TEX">T<span 
class="E">E</span>X</span>&nbsp;dimensions.
     <!--l. 137--><p class="noindent"><span 
class="cmti-10">Example: </span>One way to draw a line:
     <!--l. 138--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
frame="void" id="TBL-580-" ><colgroup id="TBL-580-1g"><col 
id="TBL-580-1"></colgroup><tr  
 valign="baseline" id="TBL-580-1-"><td  align="left" style="white-space:nowrap; text-align:left;" id="TBL-580-1-1"  
class="td11">  <table class="minipage"><tr><td><div class="obeylines-v">
<br><span 
class="cmtt-8">\pgfsyssoftpath@moveto{0pt}{0pt}</span>
<br><span 
class="cmtt-8">\pgfsyssoftpath@lineto{10pt}{10pt}</span>
<br><span 
class="cmtt-8">\pgfsyssoftpath@flushcurrentpath</span>
<br><span 
class="cmtt-8">\pgfsys@stroke</span></div>                                                                                                </td></tr></table> </td>
</tr></table></div>
     </dd></dl>
<!--l. 146--><p class="noindent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox472"><span 
class="cmtt-10">\pgfsyssoftpath@lineto</span><span 
class="cmtt-10">{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">x</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">y</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}</span></span> </dt><dd 
class="description">
<a 
 id="dx35-326002"></a>
     <!--l. 147--><p class="noindent">Appends a &#8220;line-to&#8221; segment to the current soft path. </dd></dl>
<!--l. 150--><p class="noindent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox473"><span 
class="cmtt-10">\pgfsyssoftpath@curveto</span><span 
class="cmtt-10">{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">a</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">b</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">c</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">d</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">x</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">y</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}</span></span> </dt><dd 
class="description">
<a 
 id="dx35-326003"></a>
     <!--l. 151--><p class="noindent">Appends a &#8220;curve-to&#8221; segment to the current soft path with controls (<span 
class="cmmi-10">a,b</span>) and (<span 
class="cmmi-10">c,d</span>). </dd></dl>
<!--l. 155--><p class="noindent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox474"><span 
class="cmtt-10">\pgfsyssoftpath@rect</span><span 
class="cmtt-10">{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">lower left x</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">lower left y</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">width</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}{</span><span 
class="cmsy-10">&lt;</span><span 
class="cmti-10">height</span><span 
class="cmsy-10">&gt;</span><span 
class="cmtt-10">}</span></span> </dt><dd 
class="description">
<a 
 id="dx35-326004"></a>
     <!--l. 156--><p class="noindent">Appends a rectangle segment to the current soft path. </dd></dl>
<!--l. 159--><p class="noindent">
     <dl class="description"><dt class="description">
<span 
class="colorbox" id="colorbox475"><span 
class="cmtt-10">\pgfsyssoftpath@closepath</span></span> </dt><dd 
class="description">
<a 
 id="dx35-326005"></a>
     <!--l. 160--><p class="noindent">Appends a &#8220;close-path&#8221; segment to the current soft path. </dd></dl>
<!--l. 166--><p class="noindent">
   <h4 class="subsectionHead"><span class="titlemark">34.4   </span> <a 
 id="x35-32700034.4"></a>The Soft Path Data Structure</h4>
<!--l. 168--><p class="noindent">A soft path is stored in a standardized way, which makes it possible to modify it before it becomes &#8220;hard.&#8221;
Basically, a soft path is a long sequence of triples. Each triple starts with a <span 
class="cmti-10">token </span>that identifies what is going on.
This token is followed by two dimensions in braces. For example, the following is a soft path that means &#8220;the path
starts at (0bp<span 
class="cmmi-10">,</span>0bp) and then continues in a straight line to (10bp<span 
class="cmmi-10">,</span>0bp).&#8221;
<!--l. 177--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
frame="void" id="TBL-581-" ><colgroup id="TBL-581-1g"><col 
id="TBL-581-1"></colgroup><tr  
 valign="baseline" id="TBL-581-1-"><td  align="left" style="white-space:nowrap; text-align:left;" id="TBL-581-1-1"  
class="td11">  <table class="minipage"><tr><td><div class="obeylines-v"><br><span 
class="cmtt-8">\pgfsyssoftpath@movetotoken{0bp}{0bp}\pgfsyssoftpath@linetotoken{10bp}{0bp}</span>
</div>                                                                                                              </td></tr></table> </td>
</tr></table>
</div>
<!--l. 181--><p class="indent">   A curve-to is hard to express in this way since we need six numbers to express it, not two. For this reasons, a
curve-to is expressed using three triples as follows: The command
<!--l. 184--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
frame="void" id="TBL-582-" ><colgroup id="TBL-582-1g"><col 
id="TBL-582-1"></colgroup><tr  
 valign="baseline" id="TBL-582-1-"><td  align="left" style="white-space:nowrap; text-align:left;" id="TBL-582-1-1"  
class="td11">  <table class="minipage"><tr><td><div class="obeylines-v"><br><span 
class="cmtt-8">\pgfsyssoftpath@curveto{1bp}{2bp}{3bp}{4bp}{5bp}{6bp}</span>
</div>                                                                                                              </td></tr></table> </td>
</tr></table>
</div>
<!--l. 187--><p class="noindent">results in the following three triples:
<!--l. 189--><p class="noindent"><div class="obeylines-v"></div><!--tex4ht:inline--><div class="tabular"><table class="tabular" 
cellspacing="0" cellpadding="0"  
frame="void" id="TBL-583-" ><colgroup id="TBL-583-1g"><col 
id="TBL-583-1"></colgroup><tr  
 valign="baseline" id="TBL-583-1-"><td  align="left" style="white-space:nowrap; text-align:left;" id="TBL-583-1-1"  
class="td11">  <table class="minipage"><tr><td><div class="obeylines-v">
<br><span 
class="cmtt-8">\pgfsyssoftpath@curvetosupportatoken{1bp}{2bp}</span>
<br><span 
class="cmtt-8">\pgfsyssoftpath@curvetosupportbtoken{3bp}{4bp}</span>
<br><span 
class="cmtt-8">\pgfsyssoftpath@curvetotoken{5bp}{6bp}</span></div>                                                                        </td></tr></table> </td>
</tr></table></div>
<!--l. 195--><p class="indent">   These three triples must always &#8220;remain together.&#8221; Thus, a lonely <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">supportbtoken</span></span></span> is forbidden.
<!--l. 198--><p class="indent">   In details, the following tokens exist:
                                                                                         
                                                                                         
     <ul class="itemize1">
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@movetotoken</span></span></span> indicates a move-to operation. The two following numbers indicate
     the position to which the current point should be moved.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@linetotoken</span></span></span> indicates a line-to operation.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@curvetosupportatoken</span></span></span> indicates the first control point of a curve-to operation.
     The triple must be followed by a <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@curvetosupportbtoken</span></span></span>.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@curvetosupportbtoken</span></span></span> indicates the second control point of a curve-to operation.
     The triple must be followed by a <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@curvetotoken</span></span></span>.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@curvetotoken</span></span></span> indicates the target of a curve-to operation.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@rectcornertoken</span></span></span> indicates the corner of a rectangle on the soft path. The triple
     must be followed by a <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@rectsizetoken</span></span></span>.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@rectsizetoken</span></span></span> indicates the size of a rectangle on the soft path.
     </li>
     <li class="itemize"><span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">\pgfsyssoftpath@closepath</span></span></span> indicates that the subpath begun with the last move-to operation should
     be closed. The parameter numbers are currently not important, but if set to anything different from
     <span class="obeylines-h"><span class="verb"><span 
class="cmtt-10">{0pt}{0pt}</span></span></span>, they should be set to the coordinate of the original move-to operation to which the path
     &#8220;returns&#8221; now.</li></ul>
                                                                                         
                                                                                         
                                                                                         
                                                                                         
                                                                                         
                                                                                         
   <div class="crosslinks"><p class="noindent">[<a 
href="pgfmanualse35.html" >next</a>] [<a 
href="pgfmanualse33.html" >prev</a>] [<a 
href="pgfmanualse33.html#tailpgfmanualse33.html" >prev-tail</a>] [<a 
href="pgfmanualse34.html" >front</a>] [<a 
href="pgfmanual.html#pgfmanualse34.html" >up</a>] </p></div>
<!--l. 7--><p class="indent">   <a 
 id="tailpgfmanualse34.html"></a>   
</body></html>