root/trunk/pst-map3d/pstricks.tex

Revision 5, 93.3 kB (checked in by jms, 2 years ago)

Déplacement des fichiers de Manuel dans le répertoire pst-map3d.

Line 
1%% pstricks.tex
2%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
3%% COPYRIGHT 2000-2003 by Denis Girou.
4%% Copyright 2004-2008 Herbert Voss
5%
6% This work may be distributed and/or modified under the
7% conditions of the LaTeX Project Public License, either version 1.3
8% of this license or (at your option) any later version.
9% The latest version of this license is in
10%   http://www.latex-project.org/lppl.txt
11% and version 1.3 or later is part of all distributions of LaTeX
12% version 2003/12/01 or later.
13%
14% This work has the LPPL maintenance status "maintained".
15%
16% This Current Maintainer of this work is Herbert Voss
17%
18% This work consists of the file pstricks.tex, PostScript macros
19% for Generic TeX.
20% See the PSTricks User's Guide for description.
21% This uses the header file `pstricks.pro'.
22%
23\def\fileversion{1.20}
24\def\filedate{2008/01/01}
25%
26\csname PSTricksLoaded\endcsname
27\let\PSTricksLoaded\endinput
28\edef\PstAtCode{\the\catcode`\@}
29\catcode`\@=11\relax
30\expandafter\ifx\csname @latexerr\endcsname\relax
31\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
32  #1\endcsname\relax#2\else#3\fi}
33\def\@namedef#1{\expandafter\def\csname #1\endcsname}
34\def\@nameuse#1{\csname #1\endcsname}
35%
36\def\@eha{%
37  Your command was ignored.^^J
38  Type \space I <command> <return> \space to replace
39  it with another command,^^J
40  or \space <return> \space to continue without it.}
41\def\@spaces{\space\space\space\space}
42\def\typeout#1{\immediate\write\@unused{#1}}
43\alloc@7\write\chardef\sixt@@n\@unused
44\def\@empty{}
45\def\@gobble#1{}
46\def\@nnil{\@nil}
47%
48\def\@ifnextchar#1#2#3{%
49  \let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch}
50%
51\def\@ifnch{%
52  \ifx\@tempc\@sptoken \let\@tempd\@xifnch
53  \else\ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi
54  \fi
55  \@tempd}
56%
57\begingroup
58\def\:{\global\let\@sptoken= } \:
59\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch}
60\endgroup
61\fi
62%
63% hv 2007-10-16 to fix the bug in pst-node with \\[name=...]
64\def\ps@ifnextchar#1#2#3{%
65  \let\reserved@d= #1%
66  \def\reserved@a{#2}\def\reserved@b{#3}%
67  \futurelet\@let@token\ps@ifnch}
68\def\ps@ifnch{%
69  \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi
70  \reserved@b
71}
72% end bugfix
73\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
74\def\@pstrickserr#1#2{%
75  \begingroup
76  \newlinechar`\^^J
77  \edef\pst@tempc{#2}%
78  \expandafter\errhelp\expandafter{\pst@tempc}%
79  \typeout{%
80    PSTricks error. \space See User's Guide for further information.^^J
81    \@spaces\@spaces\@spaces\@spaces
82    Type \space H <return> \space for immediate help.}%
83  \errmessage{#1}%
84  \endgroup}
85\def\@ehpa{%
86  Your command was ignored. Default value substituted.^^J
87  Type \space <return> \space to procede.}
88\def\@ehpb{%
89  Your command was ignored. Will recover best I can.^^J
90  Type \space <return> \space to procede.}
91\def\@ehpc{%
92  You better fix this before proceding.^^J
93  See the PSTricks User's Guide or ask your system administrator for help.^^J
94  Type \space X <return> \space to quit.}
95\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
96\newdimen\pst@dima
97\newdimen\pst@dimb
98\newdimen\pst@dimc
99\newdimen\pst@dimd
100\newdimen\pst@dimg
101\newdimen\pst@dimh
102\newbox\pst@hbox
103\newbox\pst@boxg
104\newcount\pst@cnta
105\newcount\pst@cntb
106\newcount\pst@cntc
107\newcount\pst@cntd
108\newcount\pst@cntg
109\newcount\pst@cnth
110\newif\if@pst
111\newtoks\pst@toks
112\newif\if@star
113\def\pst@ifstar#1{%
114  \@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
115\def\pst@expandafter#1#2{%
116  \def\next{#1}%
117  \edef\@tempa{#2}%
118  \ifx\@tempa\@empty
119    \@pstrickserr{Unexpected empty argument!}\@ehpb
120    \def\@tempa{\@empty}%
121  \fi
122  \expandafter\next\@tempa}
123\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
124\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
125{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
126%
127\def\pst@pyth#1#2#3{% from pst-3d
128  \begingroup
129    \pst@dima=#1\relax
130    \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi  % dima=abs(x)
131    \pst@dimb=#2\relax
132    \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi  % dimb=abs(y)
133    \advance\pst@dimb\pst@dima         % dimb=s=abs(x)+abs(y)
134    \ifnum\pst@dimb=\z@
135      \global\pst@dimg=\z@             % dimg=z=sqrt(x^2+y^2)
136    \else
137      \multiply\pst@dima 8\relax              % dima= 8abs(x)
138      \pst@@divide\pst@dima\pst@dimb     % dimg =8t=8abs(x)/s
139      \advance\pst@dimg -4pt            % dimg = 4tau = (8t-4)
140      \multiply\pst@dimg 2
141      \pst@dimtonum\pst@dimg\pst@tempa
142      \pst@dima=\pst@tempa\pst@dimg           % dima=(8tau)^2
143      \advance\pst@dima 64pt         % dima=u=[64+(8tau)^2]/2
144      \divide\pst@dima 2\relax                      % =(8f)^2
145      \pst@dimd=7pt                % initial guess at sqrt(u)
146      \pst@@pyth\pst@@pyth\pst@@pyth            % dimd=sqrt(u)
147      \pst@dimtonum\pst@dimd\pst@tempa
148      \pst@dimg=\pst@tempa\pst@dimb
149      \global\divide\pst@dimg 8             % dimg=z=(8f)*s/8
150    \fi
151  \endgroup
152  #3=\pst@dimg}
153\def\pst@@pyth{%                      dimd = g <-- (g + u/g)/2
154  \pst@@divide\pst@dima\pst@dimd
155  \advance\pst@dimd\pst@dimg
156  \divide\pst@dimd 2\relax}
157%
158% ----- the old pst@pyth begin -----
159\iffalse
160\def\pst@pyth#1#2#3{\ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi}
161\def\pst@@pyth#1#2#3{%
162  \ifdim4#1>9#2%
163    #3=#1\advance#3 .2122#2%
164  \else
165    #3=.8384#1\advance#3 .5758#2%
166  \fi%
167}
168\fi
169% ----- the old pst@pyth end -----
170%
171\def\pst@divide#1#2#3{%
172  \pst@@divide{#1}{#2}%
173  \pst@dimtonum\pst@dimg{#3}%
174}
175\def\pst@@divide#1#2{%
176  \pst@dimg=#1\relax
177  \pst@dimh=#2\relax
178  \pst@cntg=\pst@dimh
179  \pst@cnth=67108863
180  \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
181  \divide\pst@dimg\pst@cntg%
182}
183\def\pst@@@divide{%
184  \ifnum
185    \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth
186      \multiply\pst@dimg\sixt@@n
187    \else
188      \divide\pst@cntg\sixt@@n
189    \fi%
190}
191\def\pst@configerr#1{%
192  \@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
193%
194\def\pstVerb#1{\pst@configerr\pstVerb}
195\def\pstverb#1{\pst@configerr\pstverb}
196\def\pstverbscale{\pst@configerr\pstverbscale}
197\def\pstrotate{\pst@configerr\pstrotate}
198\def\pstheader#1{\pst@configerr\pstheader}
199\def\pstdriver{\pst@configerr\pstdriver}
200\@ifundefined{pstcustomize}%
201{\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}
202%
203\input pstricks.con             % local config file
204%
205\newif\ifPSTricks
206\PSTrickstrue
207\def\PSTricksOff{%
208  \def\pstheader##1{}%
209  \def\pstverb##1{}%
210  \def\pstVerb##1{}%
211  \PSTricksfalse%
212}
213\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
214\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
215%
216\pstheader{pstricks.pro}
217\pstheader{pst-algparser.pro}
218%
219\def\pst@dict{tx@Dict begin }
220\def\pst@theheaders{pstricks.pro}
221\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
222\def\tx@Atan{Atan }
223\def\tx@Div{Div }
224\def\tx@NET{NET }
225\def\tx@Pyth{Pyth }
226\def\tx@PtoC{PtoC }
227\def\tx@PathLength@{PathLength@ }
228\def\tx@PathLength{PathLength }
229\pst@dimg=\pstunit\relax
230\ifdim\pst@dimg=1bp
231\def\pst@stp{.996264 dup scale}
232\else
233\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale}
234\fi
235\def\tx@STP{STP }
236\def\tx@STV{STV }
237%
238%--------------------------------------- PS stuff ---------------------------------
239% on stack x y
240\pst@def{UserCoor}< \pst@number\psyunit div exch \pst@number\psxunit div exch >
241\pst@def{ScreenCoor}< \pst@number\psyunit mul exch \pst@number\psxunit mul exch >
242%--------------------------------------- PS stuff end -----------------------------
243%
244\def\pst@number#1{\pst@@dimtonum#1\space}
245\def\pst@checknum#1#2{%
246  \edef\next{#1}%
247  \ifx\next\@empty
248    \let\pst@num\z@
249  \else
250    \expandafter\pst@@checknum\next..\@nil
251  \fi
252  \ifnum\pst@num=\z@
253    \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
254    \def#2{0 }%
255  \else
256    \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.%
257    \expandafter\@gobble\the\pst@cnth\space}%
258  \fi}
259\def\pst@@checknum{%
260  \@ifnextchar-%
261  {\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}%
262  {\let\pst@num\@ne\pst@@@checknum}%
263}
264%
265\def\pst@@@checknum#1.#2.#3\@nil{%
266\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil
267\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil}
268\def\pst@@@@checknum#1\relax\@nil{%
269\ifx\@nil#1\@nil\else\let\pst@num\z@\fi}
270\def\pst@getnumii#1 #2 #3\@nil{%
271\pst@checknum{#1}\pst@tempg
272\pst@checknum{#2}\pst@temph}
273\def\pst@getnumiii#1 #2 #3 #4\@nil{%
274\pst@checknum{#1}\pst@tempg
275\pst@checknum{#2}\pst@temph
276\pst@checknum{#3}\pst@tempi}
277\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{%
278\pst@checknum{#1}\pst@tempg
279\pst@checknum{#2}\pst@temph
280\pst@checknum{#3}\pst@tempi
281\pst@checknum{#4}\pst@tempj}
282\def\pst@getdimnum#1 #2 #3\@nil{%
283  \pssetlength\pst@dimg{#1}%
284  \pst@checknum{#2}\pst@tempg%
285}
286% DG/SR modification begin - Jan. 7, 1998 - Patch 9
287% Missing from pstricks.bug 0.93
288%\def\pst@getscale#1#2{%
289%\pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
290%\@psttrue
291%\ifdim\pst@tempg\p@=\z@
292%\@pstrickserr{Bad scaling argument `#1'}\@ehpa
293%\def\pst@tempg{1 }%
294%\@pstfalse
295%\fi
296%\ifdim\pst@temph\p@=\z@
297%\if@pst\@pstrickserr{Bad scaling argument `#1'}\@ehpa\fi
298%\def\pst@temph{1 }%
299%\fi
300%\edef#2{\pst@tempg\space \pst@temph\space scale }%
301%\ifdim\pst@tempg\p@=\p@ \ifdim\pst@temph\p@=\p@
302%\def#2{}%
303%\fi\fi}
304\def\pst@getscale#1#2{% read and check a scale input x [y]
305  \edef\pst@tempg{#1}%
306  \ifx\pst@tempg\@none
307    \def#2{}%
308  \else
309    \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
310    \ifdim\pst@tempg\p@=\z@
311      \@pstrickserr{Bad scaling argument `#1'}\@ehpa
312      \def#2{}%
313    \else
314      \ifdim\pst@temph\p@=\z@
315        \@pstrickserr{Bad scaling argument `#1'}\@ehpa
316        \def#2{}%
317      \else
318        \edef#2{\pst@tempg\space \pst@temph\space scale }%
319      \fi
320    \fi
321  \fi%
322}
323% DG/SR modification end
324\def\pst@getint#1#2{%   read and check an integer
325  \pst@cntg=#1\relax
326  \edef#2{\the\pst@cntg\space}%
327}
328\begingroup
329\catcode`\{=12
330\catcode`\}=12
331\catcode`\[=1
332\catcode`\]=2
333\gdef\pslbrace[{ ]
334\gdef\psrbrace[} ]
335\endgroup
336\def\@newcolor#1#2{%
337\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
338%\expandafter\edef\csname color@#1\endcsname{#2}%
339\expandafter\edef\csname\string\color@#1\endcsname{#2}%    hv 1.14 2005-12-17
340\ignorespaces}
341\def\pst@color#1{%
342\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
343\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
344\def\pst@currentcolor{0 setgray}
345\def\altcolormode{%
346\def\pst@color##1{%
347\pstVerb{gsave ##1}\aftergroup\pst@endcolor}%
348\def\pst@endcolor{\pstVerb{\pst@grestore}}}
349\def\pst@grestore{%
350  currentpoint
351  matrix currentmatrix
352  currentfont
353  grestore
354  setfont
355  setmatrix
356  moveto
357}
358%\def\pst@usecolor#1{\csname color@#1\endcsname\space}%    hv 1.14  2005--12-17
359\def\pst@usecolor#1{\csname\string\color@#1\endcsname\space}
360%
361\def\newgray#1#2{%
362  \pst@checknum{#2}\pst@tempg
363  \@newcolor{#1}{\pst@tempg setgray}}
364\def\newrgbcolor#1#2{%
365  \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
366  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
367\def\newhsbcolor#1#2{%
368  \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
369  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
370\def\newcmykcolor#1#2{%
371  \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
372  \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
373\newgray{black}{0}
374\newgray{darkgray}{.25}
375\newgray{gray}{.5}
376\newgray{lightgray}{.75}
377\newgray{white}{1}
378\newrgbcolor{red}{1 0 0}
379\newrgbcolor{green}{0 1 0}
380\newrgbcolor{blue}{0 0 1}
381\newrgbcolor{yellow}{1 1 0}
382\newrgbcolor{cyan}{0 1 1}
383\newrgbcolor{magenta}{1 0 1}
384\def\psset#1{\@psset#1,\@nil\ignorespaces}
385\def\@psset#1,{%
386  \@@psset#1==\@nil%
387  \@ifnextchar\@nil{\@gobble}{\@psset}%
388}
389\def\@@psset#1=#2=#3\@nil{%
390  \@ifundefined{psset@#1}%
391    {\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}%
392    {\@nameuse{psset@#1}{#2}}%
393}%
394\def\psset@style#1{%
395  \@ifundefined{pscs@#1}%
396    {\@pstrickserr{Custom style `#1' undefined}\@ehpa}%
397    {\@nameuse{pscs@#1}}%
398}
399%\def\newpsstyle#1#2{\@namedef{pscs@#1}{\psset{#2}}}
400%------------ hv 1.10 beg -------------------
401\def\newpsstyle#1#2{\@namedef{pscs@#1}{%
402  \def\pst@tempA{#2}%
403  \ifx\pst@tempA\@empty\else\psset{#2}\fi}}
404%------------ hv 1.10 end -------------------
405%------------ hv 1.16 begin -------------------
406\def\addto@psstyle#1#2{%
407    \pst@toks=\expandafter{#1#2}%
408    \edef#1{\the\pst@toks}}
409\def\addtopsstyle#1#2{%
410  \def\pst@tempA{#2}%
411  \ifx\pst@tempA\@empty\else
412    \@ifundefined{pscs@#1}%
413      {\newpsstyle{#1}{#2}}%
414      {\expandafter\addto@psstyle\csname pscs@#1\endcsname{\psset{#2}}}%
415  \fi}
416%------------ hv 1.16 end -------------------
417%
418\def\@none{none}
419\def\pst@getcolor#1#2{%
420%  \@ifundefined{color@#1}%     hv 1.14  2005-12-17
421  \@ifundefined{\string\color@#1}%
422    {\@pstrickserr{Color `#1' not defined}\@eha}%
423    {\edef#2{#1}}%
424}
425\newdimen\psunit \psunit 1cm
426\newdimen\psxunit \psxunit 1cm
427\newdimen\psyunit \psyunit 1cm
428\let\psrunit\psunit
429%
430\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces}
431%
432\def\pssetlength#1#2{%
433  \let\@psunit\psunit
434  \afterassignment\pstunit@off
435  #1 #2\@psunit%
436}
437\def\psaddtolength#1#2{%
438  \let\@psunit\psunit
439  \afterassignment\pstunit@off
440  \advance#1 #2\@psunit%
441}
442\def\pssetxlength#1#2{%
443  \let\@psunit\psxunit
444  \afterassignment\pstunit@off
445  #1 #2\@psunit%
446}
447\def\pssetylength#1#2{%
448  \let\@psunit\psyunit
449  \afterassignment\pstunit@off
450  #1 #2\@psunit%
451}
452\def\psset@unit#1{%
453  \pssetlength\psunit{#1}%
454  \psxunit=\psunit
455  \psyunit=\psunit%
456}
457\def\psset@runit#1{\pssetlength\psrunit{#1}}
458\def\psset@xunit#1{\pssetxlength\psxunit{#1}}
459\def\psset@yunit#1{\pssetylength\psyunit{#1}}
460% v 1.05   begin
461\def\psset@PstDebug#1{\pst@getint{#1}{\Pst@Debug}}% hv 2004-06-22
462\psset{PstDebug=0}
463% end
464\def\pst@getlength#1#2{%
465  \pssetlength\pst@dimg{#1}%
466  \edef#2{\pst@number\pst@dimg}%
467}
468\def\pst@@getlength#1#2{%
469  \pssetlength\pst@dimg{#1}%
470  \edef#2{\number\pst@dimg sp}%
471}
472\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
473\def\pst@coor{0 0 }
474\def\pst@getcoors#1#2{%
475  \def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}%
476  \def\pst@coors{}%
477  \pst@@getcoors%
478}
479\def\pst@@getcoors(#1){%
480  \pst@@getcoor{#1}%
481  \edef\pst@coors{\pst@coor\pst@coors}%
482  \@ifnextchar({\pst@@getcoors}{\pst@aftercoors}%
483}
484\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
485\def\pst@angle{0 }
486\def\cartesian@coor#1,#2,#3\@nil{%
487  \pssetxlength\pst@dimg{#1}%
488  \pssetylength\pst@dimh{#2}%
489  \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}%
490}
491\def\NormalCoor{%
492  \def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}%
493  \def\pst@@getangle##1{%
494    \pst@checknum{##1}\pst@angle%
495    \edef\pst@angle{\pst@angle \pst@angleunit}%
496  }%
497  \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}%
498}
499\NormalCoor
500\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
501\def\@degrees[#1]{%
502  \pst@checknum{#1}\pst@tempg
503  \edef\pst@angleunit{360 \pst@tempg div mul }%
504  \ignorespaces}
505\def\radians{\def\pst@angleunit{57.2956 mul }}
506\def\pst@angleunit{}
507\def\SpecialCoor{%
508  \def\pst@@getcoor##1{%
509    \begingroup%
510      \pst@activecoor%
511      \xdef\pst@tempg{##1}%
512    \endgroup%
513    \expandafter\special@coor\pst@tempg||\@nil%
514  }%
515\def\pst@@getangle##1{%
516    \begingroup%
517      \pst@activecoor%
518      \xdef\pst@tempg{##1}%
519    \endgroup%
520    \expandafter\special@angle\pst@tempg\@empty)\@nil%
521  }%
522  \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}%
523}
524\begingroup
525\catcode`\|=13
526\catcode`\;=13
527\catcode`\!=13
528\catcode`\*=13
529\gdef\pst@activecoor{%
530  \def|{\string|}%
531  \def;{\string;}%
532  \def!{\string!}%
533  \def*{\string*}%                      algebraic expression hv 2007-11-17
534}
535\endgroup
536\def\special@coor#1|#2|#3\@nil{%
537  \ifx#3|\relax
538    \mixed@coor{#1}{#2}%
539  \else
540    \special@@coor#1;;\@nil
541  \fi%
542}
543\def\special@@coor#1{%
544  \ifcat#1a\relax%                      node names should start with a letter
545    \def\next{\node@coor#1}%
546  \else
547    \ifx#1[\relax%                      special node coor: [..]A
548      \def\next{\Node@coor[}%
549    \else
550      \ifx#1!\relax%                    PostScript code: x y
551        \def\next{\raw@coor}%
552      \else
553        \ifx#1*\relax%                  algebraic PostScript code: x f(x)
554          \def\next{\alg@coor}%
555        \else
556          \def\next{\special@@@coor#1}%
557        \fi
558      \fi
559    \fi
560  \fi
561  \next%
562}
563\def\special@@@coor#1;#2;#3\@nil{%
564  \ifx#3;\relax
565    \polar@coor{#1}{#2}%
566  \else
567    \cartesian@coor#1,\relax,\@nil
568  \fi%
569}
570\def\mixed@coor#1#2{%
571  \begingroup%
572% DG/SR modification begin - Oct. 27, 1997 - Patch 6
573%\specialcoor@ii#1;;\@nil
574%\let\pst@tempa\pst@coor
575%\specialcoor@ii#2;;\@nil
576    \special@@coor#1;;\@nil%
577    \let\pst@tempa\pst@coor%
578    \special@@coor#2;;\@nil%
579% DG/SR modification end
580    \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }%
581  \endgroup%
582  \let\pst@coor\pst@tempg%
583}
584\def\polar@coor#1#2{%
585%  \pssetlength\pst@dimg{#1}%
586  \pssetlength\pst@dimb{#1}%    hv 2007-10-16  g is already used in get@@angle
587  \pst@@getangle{#2}%
588%  \edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}%  dito
589  \edef\pst@coor{\pst@number\pst@dimb \pst@angle \tx@PtoC}%
590}
591\def\raw@coor#1;#2\@nil{%               PostScript code
592  \edef\pst@coor{%
593    #1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }%
594}
595\def\alg@coor#1 #2;#3\@nil{%            algebraicPostScript code
596  \edef\pst@coor{%
597    /x #1 def
598    /Func (#2) AlgParser cvx def
599    x Func
600    \pst@number\psyunit mul exch \pst@number\psxunit mul exch }%
601}
602\def\node@coor#1\@nil{%
603  \@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
604  \def\pst@coor{0 0 }%
605}
606\def\Node@coor{\node@coor}
607\def\special@angle#1#2)#3\@nil{%
608\ifx!#1\relax
609\edef\pst@angle{#2 \pst@angleunit}%
610\else
611\ifx(#1\relax
612\pst@@getcoor{#2}%
613\edef\pst@angle{\pst@coor exch \tx@Atan}%
614\else
615\pst@checknum{#1#2}\pst@angle
616\edef\pst@angle{\pst@angle \pst@angleunit}%
617\fi
618\fi}
619\def\Cartesian{%
620  \def\cartesian@coor##1,##2,##3\@nil{%
621    \pssetxlength\pst@dimg{##1}%
622    \pssetylength\pst@dimh{##2}%
623    \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}%
624  }%
625  \@ifnextchar({\Cartesian@}{}%
626}
627\def\Cartesian@(#1,#2){%
628  \pssetxlength\psxunit{#1}%
629  \pssetylength\psyunit{#2}%
630  \ignorespaces%
631}
632\def\Polar{%
633  \def\psput@cartesian{\psput@special}%
634  \def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}%
635}%
636\def\psset@origin#1{%
637  \pst@@getcoor{#1}%
638% ----------- 1.10 beg hv -------------------
639%  \edef\psk@origin{\pst@coor \tx@NET }}
640  \edef\psk@origin{\pst@coor T }}
641% ----------- 1.10 end hv -------------------
642\def\psk@origin{}
643%
644\newif\ifswapaxes
645\def\psset@swapaxes#1{%
646  \@nameuse{@pst#1}%
647  \if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }%
648  \else\def\psk@swapaxes{}%
649  \fi%
650}
651\psset@swapaxes{false}
652%
653\newif\ifshowpoints
654\def\psset@showpoints#1{\@nameuse{showpoints#1}}
655\psset@showpoints{false}
656%
657\let\pst@setrepeatarrowsflag\relax
658%
659\def\psset@border#1{%
660\pst@getlength{#1}\psk@border
661\pst@setrepeatarrowsflag}
662\psset@border{0pt}
663\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
664\psset@bordercolor{white}
665\newif\ifpsdoubleline
666\def\psset@doubleline#1{%
667  \@nameuse{psdoubleline#1}%
668  \pst@setrepeatarrowsflag}
669\psset@doubleline{false}
670\def\psset@doublesep#1{\def\psdoublesep{#1}}
671\psset@doublesep{1.25\pslinewidth}
672\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
673\psset@doublecolor{white}
674\newif\ifpsshadow
675\def\psset@shadow#1{%
676  \@nameuse{psshadow#1}%
677  \pst@setrepeatarrowsflag}
678\psset@shadow{false}
679\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
680\psset@shadowsize{3pt}
681\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
682\psset@shadowangle{-45}
683\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
684\psset@shadowcolor{darkgray}
685\def\pst@repeatarrowsflag{\z@}
686\def\pst@setrepeatarrowsflag{%
687  \edef\pst@repeatarrowsflag{%
688    \ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
689      \ifpsshadow 1\else \z@\fi\fi\fi}}
690\def\psls@none{}
691\newdimen\pslinewidth
692\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
693\psset@linewidth{.8pt}
694\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
695\psset@linecolor{black}
696\def\psls@solid{\psk@linecap\space setlinecap stroke }
697%
698\def\psset@linecap#1{\pst@getint{#1}\psk@linecap}%      hv 2007-12-01
699\psset@linecap{0}%                                      hv 2007-12-01
700\def\psset@linejoin#1{\pst@getint{#1}\psk@linejoin}%    hv 2007-10-13
701\def\tx@setlinejoin{\psk@linejoin\space setlinejoin }%  hv 2007-10-13
702\psset@linejoin{0}%                                     hv 2007-10-13
703%
704\def\pst@missing{%
705  \z@
706  \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
707%
708%%------------------- begin patch 15 HV 2004-05-15 -------------
709%\def\psset@dash#1{%
710%  \pst@expandafter\psset@@dash{#1} {\pst@missing} {\pst@missing} {}\@nil
711%  \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh}%
712%}
713%\def\psset@@dash#1 #2 #3\@nil{%
714%\pssetlength\pst@dimg{#1}%
715%\pssetlength\pst@dimh{#2}}
716%\psset@dash{5pt 3pt}
717\def\pst@empty{\z@}
718\def\psset@dash#1{% black white [ black white ]
719  \pst@expandafter\psset@@dash{#1} {\pst@empty} {\pst@empty} %
720                  {\pst@missing} {\pst@missing} {}\@nil
721  \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh
722                 \pst@number\pst@dimc \pst@number\pst@dimd}%
723}
724\def\psset@@dash#1 #2 #3 #4 #5\@nil{%
725  \pssetlength\pst@dimg{#1}%
726  \pssetlength\pst@dimh{#2}%
727  \pssetlength\pst@dimc{#3}%
728  \pssetlength\pst@dimd{#4}%
729}
730\psset@dash{5pt 3pt 0pt 0pt}% black white black white
731%%------------------- end patch 15 HV 2004-05-15 -------------
732\newif\ifpsdashadjust
733\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}}
734\psset@dashadjust{true}
735\def\tx@DashLine{DashLine }
736\def\psls@dashed{%
737%%--------------------------------- hv 2006-04-29 beg ---------------------
738  \psk@linecap\space setlinecap
739%%--------------------------------- hv 2006-04-29 end ---------------------
740  \ifpsdashadjust
741%    \psk@dash \pst@linetype\space \tx@DashLine
742    \psk@dash \@ifundefined{pst@linetype}{2}{\pst@linetype}\space \tx@DashLine
743  \else
744    [ \psk@dash ] 0 setdash stroke
745  \fi}
746\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
747\psset@dotsep{3pt}
748\def\tx@DotLine{DotLine }
749\def\psls@dotted{%
750  \ifpsdashadjust
751    \psk@dotsep \pst@linetype\space \tx@DotLine
752  \else
753    [ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke
754  \fi%
755}
756\def\psset@linestyle#1{%
757  \@ifundefined{psls@#1}%
758    {\@pstrickserr{Line style `#1' not defined}\@eha}%
759    {\edef\pslinestyle{#1}}%
760}
761\psset@linestyle{solid}
762%%--------------------------------- hv 2006-04-29 beg ---------------------
763\def\psset@linecap#1{%
764  \def\psk@linecap{0}%
765  \ifnum#1>-1
766    \ifnum#1<3
767      \pst@getint{#1}\psk@linecap%
768  \fi\fi%
769}
770\psset{linecap=0}
771%--------------------------------- hv 2006-04-29 end ---------------------
772%
773%--------------------------------- hv 2007-09-09 begin ---------------------
774% transparency needs a run through latex -> dvips -> ps2pdf14(!)
775% use transpalpha=<mumber> to the the opacity level
776%
777\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
778\psset@fillcolor{white}
779\def\psset@strokeopacity#1{\pst@checknum{#1}\psk@strokeopacityalpha }% for lines
780\psset@strokeopacity{1}
781\def\psset@opacity#1{\pst@checknum{#1}\psk@opacityalpha }% for filled areas
782\psset@opacity{1}
783\def\psset@shapealpha#1{\pst@checknum{#1}\psk@shapealpha }
784\psset@shapealpha{0.6}
785\def\psset@blendmode#1{\pst@getint{#1}\psk@blendmode }% must be one of
786% /Normal     0
787% /Compatible 1
788% /Screen     2
789% /Multiply   3
790% /HardLight  4
791\psset@blendmode{0}
792%
793\def\psfs@none{}
794\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha fill }}
795\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor \psk@opacityalpha .setopacityalpha eofill}}
796\def\psfs@shape{%
797  \pst@fill{
798    \pst@usecolor\psfillcolor 
799    \ifcase\psk@blendmode
800      /Normal \or
801      /Compatible \or
802      /Screen \or
803      /Multiply %\or
804%      /Hardlight
805    \fi
806    .setblendmode \psk@shapealpha .setshapealpha fill }}
807%
808%--------------------------------- hv 2007-09-09 end ---------------------
809%
810\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
811\psset@hatchwidth{.8pt}
812\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
813\psset@hatchsep{4pt}
814\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
815\psset@hatchcolor{black}
816\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
817\psset@hatchangle{45}
818% ------------ hv 1.11 ------------
819\def\psset@hatchsepinc#1{\pst@getlength{#1}\psk@hatchsepinc}
820\def\psset@hatchwidthinc#1{\pst@getlength{#1}\psk@hatchwidthinc}
821\psset@hatchwidthinc{0pt}
822\psset@hatchsepinc{0pt}
823%
824\def\pst@linefill{%
825  \psk@hatchangle rotate
826  \psk@hatchwidth SLW
827  \pst@usecolor\pshatchcolor
828  \psk@hatchsep
829  \psk@hatchsepinc
830  \psk@hatchwidthinc
831  \tx@LineFill }
832% ------------ hv 1.11 ------------
833%
834\def\psfs@vlines{\pst@fill\pst@linefill}
835\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines}
836\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill}}
837\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines}
838\def\psfs@crosshatch{\psfs@vlines \psfs@hlines}
839\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines}
840\def\tx@LineFill{LineFill }
841\def\psset@fillstyle#1{%
842  \edef\pst@tempg{#1}\def\pst@temph{none}%
843  \ifx\pst@tempg\pst@temph
844     \let\psk@fillstyle\relax
845  \else
846    \@ifundefined{psfs@#1}%
847    {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
848    {\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}%
849  \fi%
850}
851\def\psset@addfillstyle#1{%
852  \@ifundefined{psfs@#1}%
853    {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
854    {\edef\psk@fillstyle{%
855      \expandafter\noexpand\psk@fillstyle
856      \expandafter\noexpand\csname psfs@#1\endcsname}%
857    }%
858}
859\psset@fillstyle{none}
860\def\psset@arrows#1{%
861  \begingroup
862    \pst@activearrows
863    \xdef\pst@tempg{#1}%
864  \endgroup
865  \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
866  \if@pst\else
867    \@pstrickserr{Bad arrows specification: #1}\@ehpa
868  \fi%
869}
870\def\psset@@arrows#1-#2\@empty#3\@nil{%
871  \@psttrue
872  \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}%
873  \expandafter\next\pst@arrowtable,#1-#1,\@nil
874  \@ifundefined{psas@\pst@tempg}%
875    {\@pstfalse\def\psk@arrowA{}}%
876    {\let\psk@arrowA\pst@tempg}%
877  \@ifundefined{psas@#2}%
878    {\@pstfalse\def\psk@arrowB{}}%
879    {\def\psk@arrowB{#2}}%
880}
881\def\psk@arrowA{}
882\def\psk@arrowB{}
883%\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-]}
884\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,<D<D-D>D>} % hv --1.16
885\begingroup
886  \catcode`\<=13
887  \catcode`\>=13
888  \catcode`\|=13
889  \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
890\endgroup
891\def\tx@BeginArrow{BeginArrow }
892\def\tx@EndArrow{EndArrow }
893% Redefininition of \psset@arrowscale to store value of X scale factor  hv --1.12
894%\def\psset@arrowscale#1{\pst@getscale{#1}\psk@arrowscale}
895\def\psset@arrowscale#1{%                                   hv --1.12
896  \pst@@arrowscale@i#1 \@nil%                               hv -- 1.12
897  \pst@getscale{\pst@arrowscale}\psk@arrowscale}%           hv --1.12
898\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}% hv --1.12
899\psset@arrowscale{1}
900%
901\def\psset@arrowsize#1{%
902  \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
903  \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}%
904}
905\psset@arrowsize{1.5pt 2}
906\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
907\psset@arrowlength{1.4}
908\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}%
909\psset@arrowinset{.4}
910\def\tx@Arrow{ \psk@strokeopacityalpha .setopacityalpha Arrow }% hv 2008-01-13
911% new definitions of the missing arrows ---- hv 1.1.2
912\def\tx@ArrowD{ \psk@strokeopacityalpha .setopacityalpha ArrowD }% hv 2008-01-13
913%
914\@namedef{psas@<|}{ 
915    \psk@tbarsize\space \tx@Tbar
916    0 CLW 2 div T
917    newpath
918    true
919    \psk@arrowinset
920    \psk@arrowlength
921    \psk@arrowsize
922    \tx@Arrow
923}
924% ]-[ arrow
925\def\tx@BracketOut{BracketOut }
926\@namedef{psas@[}{%
927  /BracketOut {%
928  CLW mul add dup CLW sub 2 div
929%/x ED mul CLW add
930  /x ED mul neg
931  /y ED
932  /z CLW 2 div def
933  x neg y moveto
934  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
935  \psk@bracketlength\space \psk@tbarsize\space \tx@BracketOut
936}
937% )-( arrow
938\def\tx@RoundBracketOut{ \psk@strokeopacityalpha .setopacityalpha RoundBracketOut }% hv 2008-01-13
939\@namedef{psas@(}{%
940  /RoundBracketOut {%
941    CLW mul add dup 2 div
942%/x ED mul
943    /x ED mul neg
944    /y ED
945    /mtrx CM def
946    0 CLW
947    2 div T x y mul 0 ne { x y scale } if
948    1 1 moveto
949    .85 .5 .35 0 0 0 curveto
950    -.35 0 -.85 .5 -1 1 curveto
951    mtrx setmatrix stroke 0 CLW moveto } def
952  \psk@rbracketlength\space \psk@tbarsize\space \tx@RoundBracketOut
953}
954% end of new definitions of the missing arrows ---- hv 1.12
955\@namedef{psas@>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow }
956\@namedef{psas@>>}{%
957  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
958  0 h T gsave newpath
959  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
960  CP grestore CP newpath moveto 2 copy L stroke moveto
961}
962\@namedef{psas@<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
963\@namedef{psas@<<}{
964  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
965  CP newpath moveto 0 a neg L stroke 0 h neg T
966  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
967}
968\@namedef{psas@D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD }% hv 20071211
969\@namedef{psas@D>D>}{ % hv 20071211
970  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
971  0 h Inset sub T gsave newpath
972  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
973  CP grestore moveto
974}
975\@namedef{psas@<D}{ %   hv 20071211
976  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
977}
978\@namedef{psas@<D<D}{ % hv 20071211
979  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
980  CP newpath moveto 0 a neg L stroke 0 h neg T
981  true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
982}
983\def\psset@tbarsize#1{%
984  \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
985  \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}%
986}
987\psset@tbarsize{2pt 5}
988\def\tx@Tbar{Tbar }
989\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
990\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
991\@namedef{psas@>|}{%
992  \psk@tbarsize \tx@Tbar
993  0 CLW 2 div T
994  newpath
995  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
996}
997\@namedef{psas@>|*}{%
998  0 CLW -2 div T
999  \psk@tbarsize \tx@Tbar
1000  0 CLW 2 div T
1001  newpath
1002  false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
1003}
1004\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|}
1005\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
1006\psset@bracketlength{.15}
1007\def\tx@Bracket{Bracket }
1008\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
1009\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
1010\psset@rbracketlength{.15}
1011\def\tx@RoundBracket{RoundBracket }
1012\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
1013\def\psas@c{1 \psas@@c}
1014\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
1015\def\psas@C{2 \psas@@c}
1016\def\psas@@c{%
1017  setlinecap
1018  0 0 moveto
1019%%-------------------- v.1.04 begin HV 2004-05-18 ----------------
1020%  0 CLW 2 div L
1021  0 0.1 L % changed value from 0.5 to 0.1
1022%%-------------------- v. 1.04 end HV 2004-05-18 ----------------
1023  stroke
1024  0 0 moveto
1025}
1026\def\psas@{}
1027\psset@arrows{-}
1028\def\tx@SD{ \psk@opacityalpha .setopacityalpha SD }
1029\def\tx@EndDot{EndDot }
1030\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
1031\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
1032\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
1033\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
1034\def\pst@par{}
1035\def\addto@par#1{%
1036  \ifx\pst@par\@empty
1037    \def\pst@par{#1}%
1038  \else
1039    \expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}%
1040  \fi%
1041}
1042\def\addbefore@par#1{%
1043  \ifx\pst@par\@empty
1044    \def\pst@par{#1}%
1045  \else
1046    \toks@{#1}%
1047    \pst@toks\expandafter{\pst@par}%
1048    \edef\pst@par{\the\toks@,\the\pst@toks}%
1049  \fi%
1050}
1051\def\use@par{%
1052  \ifx\pst@par\@empty\else
1053    \expandafter\@psset\pst@par,\@nil
1054    \def\pst@par{}%
1055  \fi%
1056}
1057\def\pst@object#1{%
1058  \pst@ifstar{%
1059    \@ifnextchar[{\pst@@object{#1}}{\def\pst@par{}\@nameuse{#1@i}}}%
1060}
1061\def\pst@@object#1[#2]{%
1062  \def\pst@par{#2}%
1063  \@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
1064\def\newpsobject#1#2#3{%
1065\@ifundefined{#2@i}%
1066{\@pstrickserr{Graphics object `#2' not defined}\@eha}{%
1067\@namedef{#1}{\pst@object{#1}}%
1068\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}%
1069\ignorespaces}
1070\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
1071% ------------------------- hv 1.10 beg ------------------------
1072%\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1}
1073\def\pst@@getarrows#1#2{%
1074  \def\pst@tempa{#2}% prevent empty arrow arguments, to allow \psline{}(...)(...)
1075  \ifx\pst@tempa\@empty\addto@par{arrows=-}\else\addto@par{arrows=#2}\fi#1}
1076% ------------------------- hv 1.10 end ------------------------
1077%
1078\def\begin@ClosedObj{%
1079  \leavevmode
1080  \pst@killglue
1081  \begingroup
1082    \use@par
1083    \solid@star
1084    \ifpsdoubleline \pst@setdoublesep \fi
1085    \init@pscode%
1086}
1087\def\end@ClosedObj{%
1088  \ifpsshadow \pst@closedshadow \fi
1089  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
1090  \psk@fillstyle
1091  \pst@stroke
1092  \ifpsdoubleline \pst@doublestroke \fi
1093  \ifshowpoints
1094% DG modification begin - Mar. 4, 1995
1095%\addto@pscode{Points aload length 2 div cvi /N ED \psdots@iii}%
1096  \pst@OpenShowPoints
1097% DG modification end
1098  \fi
1099  \use@pscode
1100  \endgroup
1101  \ignorespaces%
1102}
1103\def\begin@OpenObj{%
1104  \begin@ClosedObj
1105  \let\pst@linetype\pst@arrowtype
1106  \pst@addarrowdef%
1107}
1108\def\begin@AltOpenObj{%
1109  \begin@ClosedObj
1110  \def\pst@repeatarrowsflag{\z@}%
1111  \def\pst@linetype{0}}
1112%
1113\def\end@OpenObj{%
1114  \ifpsshadow \pst@openshadow \fi
1115  \ifdim\psk@border\p@>\z@ \pst@addborder \fi
1116  \psk@fillstyle
1117  \pst@stroke
1118  \ifpsdoubleline \pst@doublestroke \fi
1119  \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
1120  \ifshowpoints \pst@OpenShowPoints \fi
1121  \use@pscode
1122  \endgroup
1123  \ignorespaces}
1124%
1125\def\begin@SpecialObj{%
1126  \leavevmode
1127  \pst@killglue
1128  \begingroup
1129  \use@par
1130  \init@pscode}
1131%
1132\def\end@SpecialObj{%
1133  \use@pscode
1134  \endgroup
1135  \ignorespaces}
1136%
1137\def\pst@code{}%
1138\def\init@pscode{%
1139  \addto@pscode{%
1140    \pst@number\pslinewidth SLW
1141    \pst@usecolor\pslinecolor}%
1142}
1143\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}}
1144\def\use@pscode{%
1145  \pstverb{
1146    \pst@dict
1147    \tx@STP
1148    \pst@newpath
1149    \psk@origin
1150    \psk@swapaxes
1151    \pst@code
1152    end
1153  }%
1154  \gdef\pst@code{}%
1155}
1156\def\pst@newpath{newpath }
1157%
1158\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi}
1159\def\KillGlue{\let\pst@killglue\pst@@killglue}
1160\def\DontKillGlue{\let\pst@killglue\relax}
1161\DontKillGlue
1162%
1163\def\solid@star{%
1164  \if@star
1165    \pslinewidth=\z@
1166    \psdoublelinefalse
1167    \def\pslinestyle{none}%
1168    \def\psk@fillstyle{\psfs@solid}%
1169    \let\psfillcolor\pslinecolor
1170  \fi}
1171%
1172\def\pst@setdoublesep{%
1173\pst@getlength\psdoublesep\psdoublesep
1174\pslinewidth=2\pslinewidth
1175\advance\pslinewidth\psdoublesep\p@
1176\let\pst@setdoublesep\relax}
1177\def\tx@Shadow{Shadow }
1178\def\pst@closedshadow{%
1179  \addto@pscode{%
1180    gsave
1181    \psk@shadowsize \psk@shadowangle \tx@PtoC
1182    \tx@Shadow
1183    \pst@usecolor\psshadowcolor
1184    gsave fill grestore
1185    stroke
1186    grestore
1187    gsave
1188    \pst@usecolor\psfillcolor
1189    gsave fill grestore
1190    stroke
1191    grestore}}
1192%
1193\def\pst@openshadow{%
1194  \addto@pscode{%
1195    gsave
1196    \psk@shadowsize \psk@shadowangle \tx@PtoC
1197    \tx@Shadow
1198    \pst@usecolor\psshadowcolor
1199    \ifx\psk@fillstyle\relax\else
1200      gsave fill grestore
1201    \fi
1202    stroke}%
1203  \pst@repeatarrows%
1204  \addto@pscode{grestore}%
1205  \ifx\psk@fillstyle\relax\else
1206    \addto@pscode{%
1207      gsave
1208      \pst@usecolor\psfillcolor
1209      gsave fill grestore
1210      stroke
1211      grestore}%
1212  \fi}
1213%
1214\def\pst@addborder{%
1215  \addto@pscode{%
1216    gsave
1217    \psk@border 2 mul
1218    CLW add SLW
1219    \pst@usecolor\psbordercolor
1220    stroke
1221    grestore}}
1222%
1223\def\pst@stroke{%
1224  \ifx\pslinestyle\@none\else
1225    \addto@pscode{%
1226      gsave
1227      \pst@number\pslinewidth SLW
1228      \pst@usecolor\pslinecolor
1229      \psk@strokeopacityalpha .setopacityalpha % hv 2008-01-13
1230      \@nameuse{psls@\pslinestyle}
1231      grestore}%
1232  \fi}
1233%
1234\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}%
1235%
1236\def\pst@doublestroke{%
1237    \addto@pscode{%
1238      gsave
1239      \psdoublesep SLW
1240      \pst@usecolor\psdoublecolor
1241      stroke
1242      grestore
1243}}
1244%
1245\def\pst@arrowtype{%
1246  \ifx\psk@arrowB\@empty 0 \else -2 \fi
1247  \ifx\psk@arrowA\@empty 0 \else -1 \fi
1248  add }
1249%
1250\def\pst@addarrowdef{%
1251  \addto@pscode{%
1252    /ArrowA {
1253      \ifx\psk@arrowA\@empty
1254        \pst@oplineto
1255      \else
1256        \pst@arrowdef{A}
1257        moveto
1258      \fi
1259    } def
1260    /ArrowB { \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi } def
1261}}
1262%
1263\def\pst@arrowdef#1{%
1264  \ifnum\pst@repeatarrowsflag>\z@
1265    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
1266  \fi
1267  \tx@BeginArrow
1268  \psk@arrowscale
1269  \@nameuse{psas@\@nameuse{psk@arrow#1}}
1270  \tx@EndArrow
1271}
1272%
1273\def\pst@repeatarrows{%
1274  \addto@pscode{%
1275    gsave
1276    \ifx\psk@arrowA\@empty\else ArrowAc ArrowA pop pop \fi
1277    \ifx\psk@arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
1278    grestore
1279}}
1280%
1281\def\pst@OpenShowPoints{%
1282  \addto@pscode{%
1283    gsave
1284    \psk@dotsize
1285    \@nameuse{psds@\psk@dotstyle}
1286    newpath
1287    Points aload length 2 div 2 sub cvi /N ED
1288    N 0 ge
1289      { \ifx\psk@arrowA\@empty Dot \else pop pop \fi 
1290        N { Dot } repeat
1291        \ifx\psk@arrowB\@empty Dot \else pop pop \fi }
1292      { N 2 mul { pop } repeat } ifelse
1293    grestore
1294}}
1295%
1296\def\pscustom{\pst@object{pscustom}}
1297\long\def\pscustom@i#1{%
1298  \begin@SpecialObj
1299  \solid@star
1300  \let\pst@ifcustom\iftrue
1301  \let\begin@ClosedObj\begin@CustomObj
1302  \let\end@ClosedObj\endgroup
1303  \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}%
1304  \let\end@OpenObj\endgroup
1305  \let\begin@AltOpenObj\begin@CustomObj
1306  \def\begin@SpecialObj{%
1307    \begingroup
1308    \pst@misplaced{special graphics object}%
1309    \def\addto@pscode####1{}
1310    \let\end@SpecialObj\endgroup}%
1311    \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
1312    \def\psclip##1{\pst@misplaced\psclip}%
1313    \def\pst@repeatarrowsflag{\z@}%
1314    \let\pst@setrepeatarrowsflag\relax
1315    \showpointsfalse
1316    \let\showpointstrue\relax
1317    \def\pst@linetype{\pslinetype}%
1318    \let\psset@liftpen\psset@@liftpen
1319    \psset@liftpen{\z@}%
1320    \def\pst@cp{/currentpoint load stopped pop }%
1321    \def\pst@oplineto{/lineto load stopped { moveto } if }%
1322    \def\pst@optcp##1##2{%
1323    \ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}%
1324    \let\caddto@pscode\addto@pscode
1325    \def\cuse@par##1{{\use@par##1}}%
1326    \the\pst@customdefs
1327    \setbox\pst@hbox=\hbox{#1}%
1328    \psk@fillstyle
1329    \pst@stroke
1330  \end@SpecialObj}
1331%
1332\def\begin@CustomObj{%
1333  \begingroup
1334  \use@par
1335  \addto@pscode{%
1336    \pst@number\pslinewidth SLW
1337    \pst@usecolor\pslinecolor
1338  }%
1339}
1340\def\pst@oplineto{moveto }
1341\def\pst@cp{}
1342\def\pst@optcp#1#2{}
1343\def\psset@liftpen#1{}
1344\def\psset@@liftpen#1{%
1345  \ifcase#1\relax
1346    \def\psk@liftpen{\z@}%
1347    \def\pst@cp{/currentpoint load stopped pop }%
1348    \def\pst@oplineto{/lineto load stopped { moveto } if }%
1349  \or
1350    \def\psk@liftpen{1}%
1351    \def\pst@cp{}%
1352    \def\pst@oplineto{/lineto load stopped { moveto } if }%
1353  \or
1354    \def\psk@liftpen{2}%
1355    \def\pst@cp{}%
1356    \def\pst@oplineto{moveto }%
1357  \fi%
1358}
1359\psset@liftpen{0}
1360\def\psk@liftpen{-1}
1361%
1362\def\psset@linetype#1{%
1363  \pst@getint{#1}\pslinetype
1364%----------------- hv begin 2006-04-20 ------------- patch 1.14b
1365  \ifnum\pst@cntg<-3
1366%  \ifnum\pst@dimg<-3
1367%----------------- hv end 2004-05-07 ------------- patch 1.14b
1368    \@pstrickserr{linetype must be greater than -3}\@ehpa
1369%----------------- hv begin 2004-05-07 ------------- patch 15
1370%       \def\pslinetype{0}%
1371    \def\pslinetype{2}%
1372  \fi%
1373}
1374%\psset@linetype{0}
1375\psset@linetype{2}% otherwise there is a problem when using e.g.
1376%                     \psaxes[axesstyle=frame,linestyle=dashed]{->}(3,-2)
1377%----------------- hv end 2004-05-07 ------------- patch 15
1378%
1379\def\caddto@pscode#1{%
1380    \@pstrickserr{Command can only be used in \string\pscustom}\@ehpa%
1381}
1382\let\cuse@par\caddto@pscode
1383%
1384\def\tx@MSave{%
1385     /msavematrx
1386         [ tx@Dict /msavematrx known % does msavematrix exists?
1387             { msavematrx aload pop } if
1388             CM % matrix currentmatrix
1389         ]
1390     def
1391%----------------- hv begin 2004-05-07 ------------- patch 15
1392    msavematrx
1393%----------------- hv end 2004-05-07 ------------- patch 15
1394}
1395\def\tx@MRestore{% a typo in pstricks with msavematrx
1396     tx@Dict /msavematrx known { length 0 gt } { false } ifelse
1397         { msavematrx aload pop setmatrix } if
1398}
1399%
1400\newtoks\pst@customdefs
1401\pst@customdefs{%
1402  \def\newpath{\addto@pscode{newpath}}%
1403  \def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
1404  \def\closepath{\addto@pscode{closepath}}%
1405  \def\gsave{\begingroup\addto@pscode{gsave}}%
1406  \def\grestore{\endgroup\addto@pscode{grestore}}%
1407% DG/SR modification begin - May 12, 1997 - Patch 2
1408%  \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
1409  \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}%
1410% DG/SR modification end
1411  \def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}%
1412  \def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}%
1413  \def\msave{\addto@pscode{\tx@MSave}}%
1414  \def\mrestore{\addto@pscode{\tx@MRestore}}%
1415  \def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}%
1416  \def\stroke{\pst@object{stroke}}%
1417  \def\fill{\pst@object{fill}}%
1418  \def\openshadow{\pst@object{openshadow}}%
1419  \def\closedshadow{\pst@object{closedshadow}}%
1420% DG/SR modification begin - Jan. 7, 1998 - Patch 8
1421% \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor tx@Shadow}}%
1422  \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}%
1423% DG/SR modification end
1424  \def\lineto{\pst@onecoor{lineto}}%
1425  \def\rlineto{\pst@onecoor{rlineto}}%
1426  \def\curveto{\pst@threecoor{curveto}}%
1427  \def\rcurveto{\pst@threecoor{rcurveto}}%
1428  \def\code#1{\addto@pscode{#1}}%
1429  \def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}%
1430  \def\rcoor{\pst@getcoors{}{}}%
1431  \def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}%
1432  \def\setcolor#1{%
1433% ----------------hv begin 2004-05-07-------------------- patch 15
1434%  \@ifundefined{color@#1}{}{\addto@pscode{\use@color{#1}}}}%
1435%    \@ifundefined{color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}%
1436    \@ifundefined{\string\color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}%  hv 1.14  2005-12-17
1437% ----------------hv end 2004-05-07--------------------
1438  \def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}%
1439  \let\file\pst@rawfile
1440} % END \pst@customdefs
1441%
1442\def\closedshadow@i{\cuse@par\pst@closedshadow}
1443\def\openshadow@i{\cuse@par\pst@openshadow}
1444\def\stroke@i{\cuse@par\pst@stroke}%
1445\def\fill@i{\cuse@par\psk@fillstyle}%
1446\def\pst@onecoor#1(#2){%
1447\pst@@getcoor{#2}%
1448\addto@pscode{\pst@coor #1}}
1449\def\pst@threecoor#1(#2)#3(#4)#5(#6){%
1450  \begingroup
1451    \pst@getcoor{#2}\pst@tempa
1452    \pst@getcoor{#4}\pst@tempb
1453% DG/SR modification begin - Aug.  4, 1999 - Patch 11
1454%\pst@getcoor{#6}\pst@tembc
1455    \pst@getcoor{#6}\pst@tempc
1456% DG/SR modification end
1457    \addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}%
1458  \endgroup}
1459%
1460\def\pst@rawfile#1{%
1461  \begingroup
1462  \def\do##1{\catcode`##1=12\relax}"
1463  \dospecials
1464  \catcode`\%=14
1465  \pst@@rawfile{#1}%
1466  \endgroup}
1467%
1468\def\pst@@rawfile#1{%
1469  \immediate\openin1 #1
1470  \ifeof1
1471    \@pstrickserr{File `#1' not found}\@ehpa
1472  \else
1473    \immediate\read1 to \pst@tempg
1474    \loop
1475      \ifeof1 \@pstfalse\else\@psttrue\fi
1476      \if@pst
1477      \addto@pscode\pst@tempg
1478      \immediate\read1 to \pst@tempg
1479    \repeat
1480  \fi
1481  \immediate\closein1\relax}
1482%
1483\def\tx@NArray{NArray }
1484\def\tx@NArray{NArray }
1485\def\tx@Line{Line }
1486\def\tx@Arcto{Arcto }
1487\def\tx@CheckClosed{CheckClosed }
1488\def\tx@Polygon{Polygon }
1489\def\psset@gangle#1{\pst@getangle{#1}\psk@gangle}
1490\psset@gangle{0}
1491%
1492\def\tx@Diamond{Diamond }
1493\def\psdiamond{\pst@object{psdiamond}}
1494\def\psdiamond@i(#1){\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}}
1495\def\psdiamond@ii(#1)(#2){%
1496  \begin@ClosedObj
1497  \pst@getcoor{#1}\pst@tempa
1498  \pst@getcoor{#2}\pst@tempb
1499  \addto@pscode{%
1500    \psline@iii
1501    pop
1502    \psk@dimen
1503    \pst@tempb
1504    \psk@gangle
1505    \pst@tempa
1506    \tx@Diamond
1507  }%
1508  \def\pst@linetype{4}%
1509  \end@ClosedObj}
1510%
1511\def\tx@Triangle{Triangle }
1512\def\pstriangle{\pst@object{pstriangle}}
1513\def\pstriangle@i(#1){\@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}}
1514\def\pstriangle@ii(#1)(#2){%
1515  \begin@ClosedObj
1516  \pst@getcoor{#1}\pst@tempa%   the center of the baseline
1517  \pst@getcoor{#2}\pst@tempb%   the height of the triangle
1518  \addto@pscode{%
1519    \psline@iii
1520    pop                     %   no showpoints option
1521    \psk@dimen              %   outer/inner/middle
1522    \pst@tempb
1523    \psk@gangle             %   rotating angle
1524    \pst@tempa
1525    \tx@Triangle
1526  }%
1527  \def\pst@linetype{2}%
1528  \end@ClosedObj}
1529%
1530\def\tx@CCA{CCA }
1531\def\tx@CCA{CCA }
1532\def\tx@CC{CC }
1533\def\tx@IC{IC }
1534\def\tx@BOC{BOC }
1535\def\tx@NC{NC }
1536\def\tx@EOC{EOC }
1537\def\tx@BAC{BAC }
1538\def\tx@NAC{NAC }
1539\def\tx@EAC{EAC }
1540\def\tx@OpenCurve{OpenCurve }
1541\def\tx@AltCurve{AltCurve }
1542\def\tx@ClosedCurve{ClosedCurve }
1543\def\psset@curvature#1{%
1544\edef\pst@tempg{#1 }%
1545\expandafter\psset@@curvature\pst@tempg * * * \@nil}
1546\def\psset@@curvature#1 #2 #3 #4\@nil{%
1547\pst@checknum{#1}\pst@tempg
1548\pst@checknum{#2}\pst@temph
1549\pst@checknum{#3}\pst@tempi
1550\edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}}
1551\psset@curvature{1 .1 0}
1552\def\pscurve{\pst@object{pscurve}}
1553\def\pscurve@i{%
1554  \pst@getarrows{%
1555    \begin@OpenObj
1556      \pst@getcoors[\pscurve@ii%
1557    }%
1558}
1559\def\pscurve@ii{%
1560  \addto@pscode{
1561    \pst@cp
1562    \psk@curvature\space /c ED /b ED /a ED
1563    \ifshowpoints true \else false \fi
1564    \tx@OpenCurve
1565  }%
1566  \end@OpenObj%
1567}
1568\def\psecurve{\pst@object{psecurve}}
1569\def\psecurve@i{%
1570\pst@getarrows{%
1571\begin@OpenObj
1572\pst@getcoors[\psecurve@ii}}
1573\def\psecurve@ii{%
1574\addto@pscode{%
1575\psk@curvature\space /c ED /b ED /a ED
1576\ifshowpoints true \else false \fi
1577\tx@AltCurve}%
1578\end@OpenObj}
1579\def\psccurve{\pst@object{psccurve}}
1580\def\psccurve@i{%
1581\begin@ClosedObj
1582\pst@getcoors[\psccurve@ii}
1583\def\psccurve@ii{%
1584\addto@pscode{%
1585\psk@curvature\space /c ED /b ED /a ED
1586\ifshowpoints true \else false \fi
1587\tx@ClosedCurve}%
1588\def\pst@linetype{1}%
1589\end@ClosedObj}
1590\def\psset@dotsize#1{%
1591\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
1592\edef\psk@@dotsize{\pst@number\pst@dimg}%
1593\let\psk@@@dotsize\pst@tempg
1594\edef\psk@dotsize{%
1595  /DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }}
1596\psset@dotsize{2pt 2}
1597\def\psset@dotscale#1{%
1598\pst@getscale{#1}\psk@dotscale
1599\ifx\psk@dotscale\@empty
1600\def\psk@xdotscale{1 }%
1601\def\psk@ydotscale{1 }%
1602\else
1603\let\psk@xdotscale\pst@tempg
1604\let\psk@ydotscale\pst@temph
1605\fi}
1606% DG/SR modification begin - Oct. 17, 1997 - Patch 5
1607%\psset@dotscale{1}
1608% DG/SR modification end
1609\def\pst@Getangle#1#2{%
1610\pst@getangle{#1}\pst@tempg
1611\def\pst@temph{0. }%
1612\ifx\pst@tempg\pst@temph
1613\def#2{}%
1614\else
1615\edef#2{\pst@tempg\space rotate }%
1616\fi}
1617\def\psset@dotangle#1{%
1618\pst@getangle{#1}\psk@@dotangle
1619\ifdim\psk@@dotangle\p@=\z@
1620\let\psk@dotangle\@empty
1621\else
1622% DG/SR modification begin - Aug. 8, 1997 - Patch 4
1623%\edef\psk@dotangle{\psk@@dotangle rotate }
1624\edef\psk@dotangle{\psk@@dotangle rotate }%
1625% DG/SR modification end
1626\fi}
1627\psset@dotangle{0}
1628\def\pst@getdotsize{%
1629\pst@dimg=\psk@@@dotsize\pslinewidth
1630\advance\pst@dimg\psk@@dotsize\p@
1631\pst@dimh=\psk@ydotscale\pst@dimg
1632\pst@dimg=\psk@xdotscale\pst@dimg
1633\divide\pst@dimh 2
1634\divide\pst@dimg 2\relax}
1635% DG/SR modification begin - Oct. 17, 1997 - Patch 5
1636\psset@dotscale{1}
1637% DG/SR modification end
1638\def\psdot{\pst@object{psdot}}
1639\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}}
1640\def\psdot@ii(#1){%
1641  \begin@SpecialObj%
1642% hv modification 1.13 2005-11-28
1643  \solid@star%
1644% hv modification end
1645  \pst@@getcoor{#1}%
1646  \addto@pscode{
1647    \psk@dotsize
1648    \@nameuse{psds@\psk@dotstyle}%
1649    \pst@coor Dot}%
1650  \end@SpecialObj}
1651\def\psdots{\pst@object{psdots}}
1652\def\psdots@i{%
1653  \begin@SpecialObj%
1654  \pst@getcoors[\psdots@ii}
1655\def\psdots@ii{%
1656  \addto@pscode{false \tx@NArray \psdots@iii}%
1657  \end@SpecialObj}
1658\def\psdots@iii{%
1659  \psk@dotsize
1660  \@nameuse{psds@\psk@dotstyle}
1661  newpath
1662  n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat}
1663%
1664% DG: dead code (to suppress until \psset@dotstyle) ? - Aug. 4, 1997
1665\def\tx@SQ{SQ }
1666\def\tx@ST{ST }
1667\def\tx@SP{SP }
1668%
1669\def\pst@gdot#1{/Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def }
1670%
1671\@namedef{psds@*}{\pst@gdot{0 0 DS \tx@SD}}
1672\@namedef{psds@o}{%
1673  /r2 DS CLW sub def
1674  \pst@gdot{0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD}}
1675\@namedef{psds@square*}{%
1676  /r1 DS .886 mul def
1677  \pst@gdot{r1 \tx@SQ}}
1678\@namedef{psds@square}{%
1679  /r1 DS .886 mul def /r2 r1 CLW sub def
1680  \pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}}
1681\@namedef{psds@triangle*}{%
1682  /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
1683  \pst@gdot{x1 y1 \tx@ST}}
1684\@namedef{psds@triangle}{%
1685  /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
1686  /y2 y1 CLW add def /x2 y2 1.732 mul neg def
1687  \pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}}
1688\@namedef{psds@pentagon*}{%
1689  /r1 DS 1.149 mul def
1690  \pst@gdot{r1 \tx@SP}}
1691\@namedef{psds@pentagon}{%
1692  DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
1693  \pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}}
1694\@namedef{psds@+}{%
1695  /DS DS 1.253 mul def
1696  \pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}}
1697\@namedef{psds@|}{%
1698  \psk@tbarsize CLW mul add 2 div /DS ED
1699  \pst@gdot{0 DS moveto 0 DS neg L stroke}}
1700% DG: end dead code?
1701%
1702\def\psset@dotstyle#1{%
1703\@ifundefined{psds@#1}%
1704{\@pstrickserr{Dot style `#1' not defined}\@eha}%
1705{\edef\psk@dotstyle{#1}}}
1706\psset@dotstyle{*}
1707%
1708\def\tx@FontDot{FontDot }
1709\def\newpsfontdot#1[#2]#3#4{%
1710  \@namedef{psds@#1}{%
1711    /#3 \psk@@dotangle [#2] \tx@FontDot
1712% DG/SR modification begin - Dec. 12, 1999 - Patch 14
1713%/Dot { moveto #4 show } bind def }}
1714    /Dot { moveto gsave \psk@dotscale #4 show grestore } bind def
1715}}
1716% DG/SR modification end
1717\def\newpsfontdotH#1[#2]#3#4#5{%
1718  \@namedef{psds@#1}{%
1719    /#3 \psk@@dotangle [#2] \tx@FontDot
1720    /Dot {
1721      moveto
1722      \iftrue
1723% DG/SR modification begin - Dec. 23, 1999 - Patch 14
1724%gsave \pst@usecolor\psfillcolor #5 show grestore
1725%\fi
1726%#4 show
1727      gsave \psk@dotscale \pst@usecolor\psfillcolor #5 show grestore
1728      \fi
1729      gsave \psk@dotscale #4 show grestore
1730% DG/SR modification end
1731    } bind def
1732}}
1733%
1734\pstheader{pst-dots.pro}
1735\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
1736\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
1737\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
1738\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
1739\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
1740\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
1741\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
1742\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
1743\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
1744\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
1745\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
1746\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
1747% DG/SR modification begin - Mar. 18, 1997 and Dec. 16, 1999 - Patch 14
1748%\newpsfontdot{diamond*}%
1749%[1.9 0.0 0.0 1.9 -0.4598 -0.70775]{Symbol}{<E0>}
1750%\newpsfontdot{diamond}%
1751%[2.3 0.0 0.0 2.3 -0.8533 -0.5336]{Symbol}{<A8>}
1752% D.G. modification begin - Jan. 17, 2000
1753\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
1754\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
1755\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
1756% DG/SR modification end
1757\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{Symbol}{<C5>}
1758\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{Symbol}{<C4>}
1759\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{Symbol}{<B4>}
1760\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{Times-Roman}{<2B>}
1761\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{Times-Roman}{<2A>}
1762\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{Times-Bold}{<2B>}
1763\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{Times-Bold}{<2A>}
1764\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{Helvetica}{(|)}
1765% DG/SR modification begin - Oct. 27, 1997 - Patch 7
1766%[1.98413 0.0 0.0 1.98413 -0.258929 -0.712302]{Helvetica}{(|)}
1767% DG/SR modification end
1768\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{Helvetica-Bold}{(|)}%
1769% DG/SR modification begin - Oct. 27, 1997 - Patch 7
1770%[1.98413 0.0 0.0 1.98413 -0.277778 -0.78302]{Helvetica-Bold}{(|)}
1771
1772% DG/SR modification end
1773\iffalse
1774\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{Symbol}{<B7>}
1775\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{Symbol}{<B0>}
1776\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{Times-Bold}{<CA>}
1777\fi
1778% Etienne Riga
1779\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)}
1780\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)}
1781\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
1782\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
1783\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
1784\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)}
1785%
1786\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
1787\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
1788\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
1789%\newpsfontdot{SolidCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
1790\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
1791\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
1792\newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
1793\newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
1794\newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
1795\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
1796\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
1797\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
1798\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
1799\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)}
1800\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)}
1801\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)}
1802\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)}
1803\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
1804\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
1805\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
1806\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
1807\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
1808\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
1809\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)}
1810\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)}
1811\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
1812\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
1813\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
1814%%
1815\newdimen\pslinearc
1816\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
1817\psset@linearc{0pt}
1818\def\psline{\pst@object{psline}}
1819\def\psline@i{%
1820  \pst@getarrows{%
1821    \begin@OpenObj
1822    \pst@getcoors[\psline@ii%
1823  }%
1824}
1825\def\psline@ii{%
1826  \addto@pscode{\pst@cp \psline@iii \tx@Line}%
1827  \end@OpenObj%
1828}
1829\def\psline@iii{%
1830  \ifdim\pslinearc>\z@
1831    /r \pst@number\pslinearc def
1832    /Lineto { \tx@Arcto } def
1833  \else
1834    /Lineto /lineto load def
1835  \fi
1836  \ifshowpoints true \else false \fi
1837  \tx@setlinejoin                       % hv 2007-10-13
1838}
1839\def\qline(#1)(#2){%
1840  \def\pst@par{}%
1841  \begin@SpecialObj
1842  \def\pst@linetype{0}%
1843  \pst@getcoor{#1}\pst@tempa
1844  \pst@@getcoor{#2}%
1845  \addto@pscode{%
1846    \pst@tempa moveto \pst@coor L
1847    \@nameuse{psls@\pslinestyle}%
1848  }%
1849  \end@SpecialObj}
1850\def\pspolygon{\pst@object{pspolygon}}
1851\def\pspolygon@i{%
1852  \begin@ClosedObj%
1853  \def\pst@cp{}%
1854  \pst@getcoors[\pspolygon@ii%
1855}
1856\def\pspolygon@ii{%
1857  \addto@pscode{\psline@iii \tx@Polygon}%
1858  \def\pst@linetype{1}%
1859  \end@ClosedObj}
1860%
1861\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
1862\psset@framearc{0}
1863%
1864\def\psset@cornersize#1{\pst@expandafter\psset@@cornersize{#1}\@nil}
1865\def\psset@@cornersize#1#2\@nil{%
1866  \if #1a\relax
1867    \def\psk@cornersize{\pst@number\pslinearc false }%
1868  \else\def\psk@cornersize{\psk@framearc true }%
1869  \fi}
1870\psset@cornersize{relative}
1871%
1872\def\tx@Rect{Rect }
1873\def\tx@OvalFrame{OvalFrame }
1874\def\tx@Frame{Frame }
1875%
1876\def\psset@dimen#1{\pst@expandafter\psset@@dimen{#1}\@nil}
1877\def\psset@@dimen#1#2\@nil{%
1878  \if #1o\relax%        outer
1879    \def\psk@dimen{.5 }%
1880  \else
1881    \if #1m\relax%      middle
1882      \def\psk@dimen{0 }%
1883    \else
1884      \if #1i\relax%    inner
1885        \def\psk@dimen{-.5 }%
1886  \fi\fi\fi}
1887\psset@dimen{outer}
1888%
1889\def\psframe{\pst@object{psframe}}
1890\def\psframe@i(#1){%
1891  \@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}}
1892\def\psframe@ii(#1)(#2){%
1893  \begin@ClosedObj
1894    \pst@getcoor{#1}\pst@tempa
1895    \pst@@getcoor{#2}%
1896    \addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}%
1897    \def\pst@linetype{2}%
1898    \showpointsfalse
1899  \end@ClosedObj%
1900}
1901%
1902\def\psTextFrame{\pst@object{psTextFrame}}
1903\def\psTextFrame@i(#1)(#2)#3{%
1904  \addbefore@par{ref=c}%        to prevent an empty value
1905  \leavevmode%
1906  \pst@killglue
1907  \begingroup
1908  \use@par
1909  \ifx\psk@yref\relax \def\psk@yref{0}\fi% no Baseline possible
1910  \SpecialCoor
1911  \pst@getcoor{#1}\pst@tempA
1912  \pst@getcoor{#2}\pst@tempB
1913  \if@star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi
1914  \rput(! \pst@tempA \pst@tempB % x1 y1 x2 y2
1915    exch 4 -1 roll              % y1 y2 x2 x1
1916    dup /x1 ED                  % y1 y2 x2 x1
1917    sub /dx ED                  % y1 y2
1918    exch dup /y1 ED             % y2 y1
1919    sub /dy ED 
1920    x1 dx \psk@xref\space mul add \pst@number\psxunit div
1921    y1 dy \psk@yref\space mul add \pst@number\psyunit div ){#3}
1922  \endgroup
1923  \ignorespaces}
1924%
1925\def\tx@BezierNArray{BezierNArray }
1926\def\tx@OpenBezier{OpenBezier }
1927\def\tx@ClosedBezier{ClosedBezier }
1928\def\tx@BezierShowPoints{BezierShowPoints }
1929\def\psbezier{\pst@object{psbezier}}
1930\def\psbezier@i{%
1931  \pst@getarrows{%
1932    \begin@OpenObj
1933      \pst@getcoors[\psbezier@ii%
1934  }%
1935}
1936\def\psbezier@ii{%
1937  \addto@pscode{%
1938% DG/SR modification begin - Apr. 28, 1997 - Patch 1
1939% \psbezier doesn't work inside \pscustom
1940\pst@cp
1941% DG/SR modification end
1942    \ifshowpoints true \else false \fi
1943    \tx@OpenBezier
1944    \ifshowpoints \tx@BezierShowPoints \fi}%
1945  \end@OpenObj}
1946\def\pscbezier{\pst@object{pscbezier}}
1947\def\pscbezier@i{%
1948  \begin@ClosedObj
1949  \pst@getcoors[\pscbezier@ii}
1950\def\pscbezier@ii{%
1951  \addto@pscode{%
1952    \ifshowpoints true \else false \fi
1953    \tx@ClosedBezier
1954    \ifshowpoints \tx@BezierShowPoints \fi}%
1955  \chardef\pst@linetype=1
1956  \end@ClosedObj}
1957%
1958\def\tx@Parab{Parab }
1959\def\psparabola{\pst@object{psparabola}}%  1.15a  2006-01-05 (hv)
1960\def\psparabola@i{\pst@getarrows\psparabola@ii}
1961\def\psparabola@ii#1(#2)#3(#4){%
1962  \begin@OpenObj
1963  \pst@getcoor{#2}\pst@tempa
1964  \pst@@getcoor{#4}%
1965  \addto@pscode{\pst@tempa \pst@coor \tx@Parab}%
1966  \end@OpenObj}
1967\let\parabola\psparabola% compatibility  (hv)
1968%
1969\def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
1970\psset@gridwidth{.8pt}
1971\def\psset@griddots#1{%
1972  \pst@cntg=#1\relax
1973  \edef\psk@griddots{\the\pst@cntg}}
1974\psset@griddots{0}
1975\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
1976\psset@gridcolor{black}
1977\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
1978\psset@subgridwidth{.4pt}
1979\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
1980\psset@subgridcolor{gray}
1981\def\psset@subgriddots#1{%
1982  \pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
1983\psset@subgriddots{0}
1984\def\psset@subgriddiv#1{%
1985  \pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
1986\psset@subgriddiv{5}
1987%
1988\def\psset@gridfont#1{\def\psk@gridfont{/#1 }}%   hv 2007-11-13
1989\psset@gridfont{Helvetica}
1990%
1991\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
1992\psset@gridlabels{10pt}
1993\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
1994\psset@gridlabelcolor{black}
1995
1996\def\tx@Grid{Grid }
1997
1998\def\psgrid{\pst@object{psgrid}}
1999\def\psgrid@i{\@ifnextchar({\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}}
2000\def\psgrid@ii(#1){\@ifnextchar({\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}}
2001\def\psgrid@iii(#1)(#2){\@ifnextchar({\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}}
2002\def\psgrid@iv(#1)(#2)(#3){%
2003  \begin@SpecialObj
2004    \pst@getcoor{#1}\pst@tempA%  hv 1.11
2005    \pst@getcoor{#2}\pst@tempB % hv 1.11
2006    \pst@@getcoor{#3}%
2007    \ifnum\psk@subgriddiv>1
2008      \addto@pscode{
2009        gsave
2010        \psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
2011        \pst@tempB \pst@coor \pst@tempA                 % hv 1.11
2012%        \pst@number\psxunit \pst@number\psyunit        % hv 1.11
2013        \pst@number\psxunit abs \pst@number\psyunit abs % hv 1.11
2014        \psk@subgriddiv\space \psk@subgriddots\space
2015        {} 0
2016        \psk@gridfont findfont 0 scalefont setfont      % hv 1.16
2017        \tx@Grid
2018        grestore
2019      }%
2020    \fi
2021    \addto@pscode{
2022      gsave
2023      \psk@gridwidth SLW \pst@usecolor\psgridcolor
2024      \pst@tempB \pst@coor \pst@tempA                 % hv 1.11
2025      \pst@number\psxunit abs \pst@number\psyunit abs % hv 1.11
2026%      \pst@number\psxunit \pst@number\psyunit        % hv 1.11
2027      1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor }
2028      \psk@gridlabels
2029      \psk@gridfont findfont \psk@gridlabels scalefont setfont  % hv 1.16
2030       \tx@Grid
2031      grestore
2032    }%
2033  \end@SpecialObj}
2034%
2035\newif\ifpsmathbox
2036\psmathboxtrue
2037\def\pst@mathflag{\z@}
2038\newtoks\everypsbox
2039\let\pst@thisbox\relax
2040\long\def\pst@makenotverbbox#1#2{%
2041  \edef\pst@mathflag{%
2042  \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
2043  \setbox\pst@hbox=\hbox{%
2044    \ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi
2045    {\pst@thisbox\the\everypsbox#2}%
2046    \ifnum\pst@mathflag>\z@$\fi% $
2047  }%
2048  #1}
2049%
2050\def\pst@makeverbbox#1{%
2051  \def\pst@afterbox{#1}%
2052  \edef\pst@mathflag{%
2053    \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi%
2054  }%
2055  \afterassignment\pst@beginbox
2056  \setbox\pst@hbox\hbox%
2057}
2058\def\pst@beginbox{%
2059  \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
2060  \bgroup\aftergroup\pst@endbox
2061  \pst@thisbox
2062  \the\everypsbox%
2063}
2064\def\pst@endbox{%
2065  \ifnum\pst@mathflag>\z@$\fi
2066  \egroup
2067  \pst@afterbox%
2068}
2069\def\pst@makebox{\pst@@makebox}
2070\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
2071\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
2072\psverbboxfalse
2073\def\pst@longbox{%
2074  \def\pst@makebox{%
2075    \gdef\pst@makebox{\pst@@makebox}%
2076    \pst@makelongbox%
2077  }%
2078}
2079\def\pst@makelongbox#1{%
2080  \def\pst@afterbox{#1}%
2081  \edef\pst@mathflag{%
2082    \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi%
2083  }%
2084  \setbox\pst@hbox\hbox\bgroup
2085  \aftergroup\pst@afterbox
2086  \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
2087  \begingroup
2088  \pst@thisbox
2089  \the\everypsbox%
2090}
2091\def\pst@endlongbox{%
2092  \endgroup
2093  \ifnum\pst@mathflag>\z@$\fi
2094  \egroup%
2095}
2096\def\pslongbox#1#2{%
2097  \@namedef{#1}{\pst@longbox#2}%
2098  \@namedef{end#1}{\pst@endlongbox}}
2099%
2100\newdimen\psframesep
2101\def\psset@framesep#1{\pssetlength\psframesep{#1}}
2102\psset@framesep{3pt}
2103%
2104\newif\ifpsboxsep
2105\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
2106%
2107\psset@boxsep{true}
2108%
2109\def\pst@useboxpar{%
2110  \use@par
2111  \if@star
2112    \let\pslinecolor\psfillcolor
2113    \solid@star
2114    \let\solid@star\relax
2115  \fi
2116  \ifpsdoubleline \pst@setdoublesep \fi}
2117%
2118\def\psframebox{\pst@object{psframebox}}
2119\def\psframebox@i{\pst@makebox\psframebox@ii}
2120\def\psframebox@ii{%
2121  \begingroup
2122  \pst@useboxpar
2123  \pst@dima=\pslinewidth
2124  \advance\pst@dima by \psframesep
2125  \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
2126  \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
2127  \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
2128  \setbox\pst@hbox=\hbox{%
2129    \ifpsboxsep\kern\pst@dima\fi
2130    \begin@ClosedObj
2131    \addto@pscode{%
2132      \psk@cornersize % arcradius boolean
2133      \pst@number\pst@dima neg
2134      \pst@number\pst@dimb neg
2135      \pst@number\pst@dimc
2136      \pst@number\pst@dimd
2137      .5
2138      \tx@Frame%
2139    }%
2140    \def\pst@linetype{2}%
2141    \showpointsfalse
2142    \end@ClosedObj
2143    \box\pst@hbox
2144    \ifpsboxsep\kern\pst@dima\fi%
2145  }%
2146  \ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
2147  \leavevmode\box\pst@hbox
2148  \endgroup}
2149%
2150\def\psdblframebox{\pst@object{psdblframebox}}
2151\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
2152\def\psclip#1{%
2153  \leavevmode
2154  \begingroup
2155    \begin@psclip
2156      \begingroup
2157        \def\use@pscode{%
2158          \pstVerb{%
2159            \pst@dict
2160            /mtrxc CM def
2161            CP CP T
2162            \tx@STV
2163            \psk@origin
2164            \psk@swapaxes
2165            newpath
2166            \pst@code
2167            clip
2168            newpath
2169            mtrxc setmatrix
2170            moveto
2171            0 setgray
2172            end
2173          }%
2174          \gdef\pst@code{}}%
2175  \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
2176  \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
2177  \hbox to\z@{#1}%
2178  \endgroup
2179  \def\endpsclip{%
2180    \end@psclip
2181    \endgroup}%
2182  \ignorespaces}
2183\def\endpsclip{\pst@misplaced\endpsclip}
2184\let\begin@psclip\relax
2185\def\end@psclip{\pstVerb{currentpoint initclip moveto}}
2186\def\AltClipMode{%
2187\def\end@psclip{\pstVerb{\pst@grestore}}%
2188\def\begin@psclip{\pstVerb{gsave}}}
2189\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
2190% DG modification begin - Apr. 3, 1997
2191% From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus)
2192%\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
2193\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
2194% DG modification end
2195\def\clipbox@@#1{%
2196  \pssetlength\pst@dimg{#1}%
2197  \leavevmode\hbox{%
2198  \begin@psclip
2199  \pst@Verb{%
2200    CM \tx@STV CP T newpath
2201    /a \pst@number\pst@dimg def
2202    /w \pst@number{\wd\pst@hbox}a add def
2203    /d \pst@number{\dp\pst@hbox}a add neg def
2204    /h \pst@number{\ht\pst@hbox}a add def
2205    a neg d moveto
2206    a neg h L
2207    w h L
2208    w d L
2209    closepath
2210    clip
2211    newpath
2212    0 0 moveto
2213    setmatrix}%
2214\unhbox\pst@hbox
2215\end@psclip}}
2216\def\psshadowbox{\pst@object{psshadowbox}}
2217\def\psshadowbox@i{\pst@makebox\psshadowbox@ii}
2218\def\psshadowbox@ii{%
2219\begingroup
2220\pst@useboxpar
2221\psshadowtrue
2222\psboxseptrue
2223\def\psk@shadowangle{-45 }%
2224\setbox\pst@hbox=\hbox{\psframebox@ii}%
2225\pst@dimh=\psk@shadowsize\p@
2226\pst@dimh=.7071\pst@dimh
2227\pst@dimg=\dp\pst@hbox
2228\advance\pst@dimg\pst@dimh
2229\dp\pst@hbox=\pst@dimg
2230\pst@dimg=\wd\pst@hbox
2231\advance\pst@dimg\pst@dimh
2232\wd\pst@hbox=\pst@dimg
2233\leavevmode
2234\box\pst@hbox
2235\endgroup}
2236\def\pscirclebox{\pst@object{pscirclebox}}
2237\def\pscirclebox@i{\pst@makebox\pscirclebox@ii}
2238\def\pscirclebox@ii{%
2239\begingroup
2240\pst@useboxpar
2241\setbox\pst@hbox=\hbox{%
2242\pst@nodehook
2243\pscirclebox@iii
2244\box\pst@hbox}%
2245\ifpsboxsep \pscirclebox@sep \fi
2246\leavevmode
2247\box\pst@hbox
2248\endgroup}
2249\def\pscirclebox@iii{%
2250\if@star
2251\pslinewidth\z@
2252\pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor
2253newpath \pscirclebox@iv \tx@SD end}%
2254\else
2255\begin@ClosedObj
2256\def\pst@linetype{4}\showpointsfalse
2257\addto@pscode{%
2258\pscirclebox@iv CLW 2 div add 0 360 arc closepath}%
2259\end@ClosedObj
2260\fi}
2261%
2262\def\pscirclebox@iv{%
2263  \pst@number{\wd\pst@hbox}2 div
2264  \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div
2265  2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll
2266  \tx@Pyth \pst@number\psframesep add }
2267%
2268\def\pscirclebox@sep{%
2269  \pst@dimb=\ht\pst@hbox
2270  \advance\pst@dimb\dp\pst@hbox
2271  \divide\pst@dimb 2
2272  \pst@dima=.5\wd\pst@hbox
2273  \pst@pyth\pst@dima\pst@dimb\pst@dimc
2274  \advance\pst@dimc\pslinewidth
2275  \advance\pst@dimc\psframesep
2276  \advance\pst@dimb-\pst@dimc
2277  \setbox\pst@hbox=\hbox to2\pst@dimc{%
2278    \hss\vbox{\kern-\pst@dimb\box\pst@hbox}\hss}%
2279  \advance\pst@dimb-\dp\pst@hbox
2280  \dp\pst@hbox=-\pst@dimb}
2281
2282\let\pst@nodehook\relax
2283%
2284\def\psCirclebox{\pst@object{psCirclebox}}
2285\def\psCirclebox@i{\pst@makebox\psCirclebox@ii}
2286\def\psCirclebox@ii{%
2287  \begingroup
2288  \pst@useboxpar
2289  \pst@dima=\ht\pst@hbox
2290  \advance\pst@dima\dp\pst@hbox
2291  \divide\pst@dima\tw@
2292  \pssetlength\pst@dimb\psk@radius
2293  \setbox\pst@hbox=\hbox{%
2294    \pst@nodehook
2295    \pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}%
2296    \box\pst@hbox}%
2297  \ifpsboxsep \psCirclebox@sep \fi
2298  \leavevmode
2299  \box\pst@hbox
2300  \endgroup}
2301%
2302\def\psCirclebox@sep{%
2303  \pst@dimc=\pst@dimb
2304  \advance\pst@dimb-\pst@dima
2305  \advance\pst@dima\pst@dimc
2306  \setbox\pst@hbox=\hbox to\tw@\pst@dimc{%
2307    \hss\vrule width \z@ depth \pst@dimb height \pst@dima
2308    \box\pst@hbox\hss}}
2309%
2310\def\psovalbox{\pst@object{psovalbox}}
2311\def\psovalbox@i{\pst@makebox{\psovalbox@ii}}
2312\def\psovalbox@ii{%
2313  \begingroup
2314  \pst@useboxpar
2315  \psovalbox@iii
2316  \ifpsboxsep\psovalbox@sep\fi
2317  \leavevmode
2318  \box\pst@hbox
2319  \endgroup}
2320%
2321\def\psovalbox@iii{%
2322  \psovalbox@iv
2323  \setbox\pst@hbox=\hbox{%
2324    \begin@ClosedObj
2325    \addto@pscode{%
2326      0 360
2327      \pst@number\pst@dimc CLW 2 div sub
2328      \pst@number\pst@dimd CLW 2 div sub
2329      \pst@number\pst@dima
2330      \pst@number\pst@dimb
2331      \tx@Ellipse
2332      closepath }%
2333    \def\pst@linetype{2}%
2334    \end@ClosedObj
2335    \unhbox\pst@hbox}}
2336%
2337\def\psovalbox@iv{%
2338  \pst@dimc=\pslinewidth\advance\pst@dimc\psframesep
2339  \pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox
2340  \pst@dima=.5\wd\pst@hbox
2341  \pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox
2342  \pst@dimd=.707\pst@dimd
2343  \advance\pst@dimd\pst@dimc
2344  \advance\pst@dimc.707\wd\pst@hbox}
2345%
2346\def\psovalbox@sep{%
2347  \setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}%
2348  \pst@dimg=\pst@dimd
2349  \advance\pst@dimg-\pst@dimb
2350  \dp\pst@hbox=\pst@dimg
2351  \advance\pst@dimd\pst@dimb
2352  \ht\pst@hbox=\pst@dimd}
2353%
2354\def\psdiabox{\pst@object{psdiabox}}
2355\def\psdiabox@i{\pst@makebox{\psdiabox@ii}}
2356\def\psdiabox@ii{%
2357\begingroup
2358\pst@useboxpar
2359\psdiabox@iii
2360\ifpsboxsep\psdiabox@sep\fi
2361\leavevmode
2362\box\pst@hbox
2363\endgroup}
2364\def\psdiabox@iv{%
2365\pst@dimg=.707\pslinewidth
2366\advance\pst@dimg.707\psframesep
2367\pst@dima=\wd\pst@hbox
2368\divide\pst@dima 2
2369\pst@dimc=\pst@dima
2370\advance\pst@dimc\pst@dimg
2371\pst@dimd=\ht\pst@hbox
2372\advance\pst@dimd\dp\pst@hbox
2373\divide\pst@dimd 2
2374\pst@dimb=\pst@dimd
2375\advance\pst@dimb-\dp\pst@hbox
2376\advance\pst@dimd\pst@dimg}
2377\def\psdiabox@iii{%
2378\psdiabox@iv
2379\setbox\pst@hbox=\hbox{%
2380\begin@ClosedObj
2381\addto@pscode{%
2382\psline@iii
2383pop
2384.5
2385\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul
23860
2387\pst@number\pst@dima \pst@number\pst@dimb
2388\tx@Diamond}%
2389\def\pst@linetype{4}%
2390\end@ClosedObj
2391\box\pst@hbox}}
2392\def\psdiabox@sep{%
2393\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}%
2394\multiply\pst@dimd 2
2395\advance\pst@dimd\pst@dimb
2396\ht\pst@hbox\pst@dimd
2397\advance\pst@dimd-2\pst@dimb
2398\dp\pst@hbox\pst@dimd}
2399\def\psset@trimode#1{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil}
2400\def\psset@@trimode#1#2#3\@nil{%
2401\let\pst@tempg#1\relax
2402\ifx\pst@tempg*%
2403\let\psk@@trimode\@empty
2404\let\pst@tempg#2\relax
2405\else
2406\let\psk@@trimode\relax
2407\fi
2408\edef\psk@trimode{%
2409\ifx R\pst@tempg 1 \else\ifx D\pst@tempg 2
2410\else\ifx L\pst@tempg 3 \else 0 \fi\fi\fi}}
2411\psset@trimode{U}
2412\def\pstribox{\pst@object{pstribox}}
2413\def\pstribox@i{\pst@makebox{\pstribox@ii}}
2414\def\pstribox@ii{%
2415\begingroup
2416\pst@useboxpar
2417\pstribox@iii
2418\ifpsboxsep\pstribox@sep\fi
2419\leavevmode
2420\box\pst@hbox
2421\endgroup}
2422\def\pstribox@iii{%
2423\pstribox@iv
2424\setbox\pst@hbox=\hbox{%
2425\begin@ClosedObj
2426\addto@pscode{%
2427\psline@iii
2428pop
2429.5
2430\pst@number\pst@dimc \pst@number\pst@dimd
2431\ifodd\psk@trimode exch \fi
2432\psk@trimode -90 mul
2433\pst@number\pst@dima \pst@number\pst@dimb
2434\tx@Triangle}%
2435\def\pst@linetype{2}%
2436\end@ClosedObj
2437\box\pst@hbox}}
2438\def\pstribox@iv{%
2439\pst@dimh=\pslinewidth
2440\advance\pst@dimh\psframesep
2441\pst@dimg=\ht\pst@hbox
2442\advance\pst@dimg-\dp\pst@hbox
2443\divide\pst@dimg 2
2444\edef\pst@tempa{\number\pst@dimg sp}% For use by nodes.
2445\ifodd\psk@trimode
2446\pst@dimb\pst@dimg
2447\else
2448\pst@dima=\wd\pst@hbox
2449\divide\pst@dima 2
2450\fi
2451\ifcase\psk@trimode
2452\pst@dimb=-\dp\pst@hbox
2453\advance\pst@dimb-\pst@dimh
2454\or
2455\pst@dima=-\pst@dimh
2456\or
2457\pst@dimb=\ht\pst@hbox
2458\advance\pst@dimb\pst@dimh
2459\or
2460\pst@dima=\wd\pst@hbox
2461\advance\pst@dima\pst@dimh
2462\fi
2463\pst@dimd=\dp\pst@hbox
2464\advance\pst@dimd\ht\pst@hbox
2465\ifx\psk@@trimode\relax
2466\pst@dimc=\wd\pst@hbox
2467\advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh
2468\multiply\pst@dimc 2
2469\advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh
2470\multiply\pst@dimd 2
2471\else
2472\ifodd\psk@trimode
2473\advance\pst@dimd 1.1547\wd\pst@hbox
2474\advance\pst@dimd 3.4641\pst@dimh
2475\pst@dimc=.866\pst@dimd
2476\else
2477\advance\pst@dimd .866\wd\pst@hbox %.866=(sqrt(3)/2)
2478\advance\pst@dimd 3\pst@dimh
2479\pst@dimc=1.1547\pst@dimd % 1.1547=(2/sqrt(3))
2480\fi
2481\fi}
2482\def\pstribox@sep{%
2483\ifodd\psk@trimode
2484\advance\pst@dimb.5\pst@dimd
2485\ht\pst@hbox=\pst@dimb
2486\advance\pst@dimd-\pst@dimb
2487\dp\pst@hbox=\pst@dimd
2488\else
2489\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}%
2490\global\pst@dimg=.5\pst@dimc
2491\fi
2492\ifcase\psk@trimode
2493\dp\pst@hbox-\pst@dimb
2494\advance\pst@dimd\pst@dimb
2495\ht\pst@hbox\pst@dimd
2496\or
2497\pst@dimg=.5\wd\pst@hbox
2498\global\advance\pst@dimg-\pst@dima
2499\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}%
2500\or
2501\ht\pst@hbox\pst@dimb
2502\advance\pst@dimd-\pst@dimb
2503\dp\pst@hbox\pst@dimd
2504\or
2505\pst@dimg=\pst@dimc
2506\advance\pst@dimg-\pst@dima
2507\global\advance\pst@dimg.5\wd\pst@hbox
2508\setbox\pst@hbox\hbox to \pst@dimc{%
2509\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}%
2510\fi}
2511\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA}
2512\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB}
2513\def\psset@arcsep#1{%
2514\psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA}
2515\psset@arcsep{0}
2516\def\tx@ArcArrow{ArcArrow }
2517\def\psarc{\pst@object{psarc}}
2518\def\psarc@i{\@ifnextchar({\psarc@iii}{\psarc@ii}}
2519\def\psarc@ii#1{\addto@par{arrows=#1}%
2520  \@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}%
2521}
2522\def\psarc@iii(#1)#2#3#4{%
2523  \begin@OpenObj
2524    \pst@getangle{#3}\pst@tempa
2525    \pst@getangle{#4}\pst@tempb
2526    \pst@@getcoor{#1}%
2527    \pssetlength\pst@dima{#2}%
2528    \addto@pscode{\psarc@iv \psarc@v}%
2529    \gdef\psarc@type{0}%
2530    \showpointsfalse
2531  \end@OpenObj%
2532}
2533\def\psarc@iv{%
2534  \pst@coor /y ED /x ED
2535  /r \pst@number\pst@dima def
2536  /c 57.2957 r \tx@Div def
2537  /angleA
2538    \pst@tempa
2539    \psk@arcsepA c mul 2 div
2540    \ifcase \psarc@type add \or sub \fi
2541  def
2542  /angleB
2543    \pst@tempb
2544    \psk@arcsepB c mul 2 div
2545    \ifcase \psarc@type sub \or add \fi
2546  def
2547  \ifshowpoints\psarc@showpoints\fi
2548  \ifx\psk@arrowA\@empty
2549    \ifnum\psk@liftpen=2
2550      r angleA \tx@PtoC
2551      y add exch x add exch moveto
2552    \fi
2553  \fi}
2554% hv ---- 1.10 2005-05-05 ----------------------> hv begin
2555\def\psarc@v{%
2556  x y r
2557  angleA
2558  \ifx\psk@arrowA\@empty\else
2559    { ArrowA CP }
2560    r 0 gt \pslbrace
2561    { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace
2562    { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse
2563%    { \ifcase\psarc@type add \or sub \fi }
2564    \tx@ArcArrow
2565  \fi
2566  angleB
2567  \ifx\psk@arrowB\@empty\else
2568    { ArrowB }
2569    r 0 gt \pslbrace
2570      { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace
2571      { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse
2572%      { \ifcase\psarc@type sub \or add \fi }
2573 \tx@ArcArrow
2574  \fi
2575\ifcase\psarc@type arc \or arcn \fi}
2576% hv ----- 1.10 2005-05-05 ------------------------> end
2577%
2578\def\psarc@type{0}
2579\def\psarc@showpoints{%
2580  gsave
2581  newpath
2582  x y moveto
2583  x y r \pst@tempa \pst@tempb
2584  \ifcase\psarc@type arc \or arcn \fi
2585  closepath
2586  CLW 2 div SLW
2587  [ \psk@dash\space ] 0 setdash stroke
2588  grestore }
2589\def\psarcn{\pst@object{psarcn}}
2590\def\psarcn@i{\def\psarc@type{1}\psarc@i}
2591%
2592%------------------ tvz/DG/hv (2004-05-10) begin -------------------%%
2593% from Denis Giroux: http://www.tug.org/pipermail/pstricks/2001/000507.html
2594%
2595% I - Definition of \psellipticwedge, a generalization of \pswedge for wedges
2596%     of ellipses (from the code of \pswedge and \psellipse)
2597%
2598\def\psellipticwedge{\def\pst@par{}\pst@object{psellipticwedge}}
2599\def\psellipticwedge@i(#1){%
2600  \@ifnextchar({\psellipticwedge@ii(#1)}{\psellipticwedge@ii(0,0)(#1)}}
2601\def\psellipticwedge@ii(#1)(#2)#3#4{%
2602  \begin@ClosedObj
2603    \pst@getangle{#3}\pst@tempa
2604    \pst@getangle{#4}\pst@tempb
2605    \pst@getcoor{#1}\pst@tempc
2606    \pst@@getcoor{#2}%
2607    \def\pst@linetype{1}%
2608    \addto@pscode{%
2609      \pst@tempa \pst@tempb
2610      \pst@coor
2611      \pst@tempc moveto
2612      \ifdim\psk@dimen\p@=\z@\else
2613        \psk@dimen CLW mul dup 3 1 roll
2614        sub 3 1 roll sub exch
2615      \fi
2616      \pst@tempc
2617      \tx@Ellipse
2618      closepath%
2619    }%
2620    \showpointsfalse
2621  \end@ClosedObj%
2622}
2623%
2624% Code mainly from "pstricks.tex'' 0.94 beta (TvZ)
2625%
2626\def\psellipticarcn{\def\pst@par{}\pst@object{psellipticarcn}}
2627\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii}
2628%
2629\def\psellipticarc{\def\pst@par{}\pst@object{psellipticarc}}
2630\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii}
2631%
2632\let\if@psarcn\iffalse
2633\def\psellipticarc@ii{\pst@getarrows\psellipticarc@iii}
2634\def\psellipticarc@iii(#1){%
2635        \@ifnextchar({\psellipticarc@iv(#1)}{\psellipticarc@iv(0,0)(#1)}}
2636\def\psellipticarc@iv(#1)(#2)#3#4{%
2637  \begin@OpenObj
2638  \pst@getcoor{#1}\pst@tempa
2639  \pst@getcoor{#2}\pst@tempb
2640  \pst@getangle{#3}\pst@tempc
2641  \pst@getangle{#4}\pst@tempd
2642  \addto@pscode{\psellipticarc@definearg \psellipticarc@draw}%
2643  \showpointsfalse
2644  \end@OpenObj%
2645}
2646\def\psellipticarc@definearg{%
2647  \pst@tempa /yOrig ED /xOrig ED  % Origin
2648  \pst@tempb              % radii. Now adjust:
2649  \ifdim\psk@dimen\p@=\z@\else
2650    \psk@dimen CLW mul dup 3 1 roll
2651    sub 3 1 roll sub exch
2652  \fi
2653  /ry ED /rx ED
2654  /angleA
2655    /d {  \if@psarcn sub \else add \fi } def
2656    \pst@tempc \psk@arcsepA 2 div
2657    ArcAdjust
2658  def
2659  /angleB
2660    /d { \if@psarcn add \else sub \fi } def
2661    \pst@tempd \psk@arcsepB 2 div ArcAdjust
2662  def
2663  \ifshowpoints\psellipticarc@showpoints\fi
2664  \ifx\psk@arrowA\@empty
2665    \ifnum\psk@liftpen=2
2666      angleA cos rx mul xOrig add
2667      angleA sin ry mul yOrig add
2668      moveto
2669    \fi
2670  \fi
2671}
2672\def\psellipticarc@draw{%
2673  0 0 1
2674  angleA
2675  \ifx\psk@arrowA\@empty\else
2676    { ArrowA CP }
2677    { \if@psarcn sub \else add \fi }
2678    EllipticArcArrow
2679  \fi
2680  angleB
2681  \ifx\psk@arrowB\@empty\else
2682    { ArrowB }
2683    { \if@psarcn add \else sub \fi }
2684    EllipticArcArrow
2685  \fi
2686  /mtrx CM def
2687  xOrig yOrig T
2688  rx ry scale
2689  \if@psarcn arcn \else arc \fi
2690  mtrx setmatrix%
2691}
2692\def\psellipticarc@showpoints{%
2693  gsave
2694  /mtrx CM def
2695  xOrig yOrig T
2696  rx ry scale
2697  0 0 moveto
2698  0 0 1 \pst@tempc \pst@tempd
2699  \ifcase\psarc@type arc \or arcn \fi
2700  closepath
2701  mtrx setmatrix
2702  CLW 2 div SLW
2703  [ \psk@dash\space ] 0 setdash stroke
2704  grestore %
2705}
2706\def\pscircle{\pst@object{pscircle}}
2707\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}}
2708\def\pscircle@do(#1)#2{%
2709  \if@star{\use@par\qdisk(#1){#2}}%     qdisk does not allow
2710  \else%                                to use opacity option
2711    \begin@ClosedObj
2712    \pst@@getcoor{#1}%
2713    \pssetlength\pst@dimc{#2}%
2714    \def\pst@linetype{4}%
2715    \addto@pscode{
2716      \pst@coor
2717      \pst@number\pst@dimc
2718      \psk@dimen CLW mul sub
2719      0 360 arc
2720      closepath }%
2721    \showpointsfalse
2722    \end@ClosedObj
2723  \fi
2724  \ignorespaces}
2725%
2726\def\qdisk(#1)#2{%
2727  \def\pst@par{}%
2728  \begin@SpecialObj
2729  \pst@@getcoor{#1}%
2730  \pssetlength\pst@dimg{#2}%
2731  \addto@pscode{ \pst@coor \pst@number\pst@dimg \tx@SD }%
2732  \end@SpecialObj}
2733%
2734\def\psset@radius#1{\pst@@getlength{#1}\psk@radius}
2735\psset@radius{.25cm}
2736%
2737\def\psCircle{\pst@object{psCircle}}
2738\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}}
2739\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}}
2740\def\pswedge{\pst@object{pswedge}}
2741\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}}
2742\def\pswedge@ii(#1)#2#3#4{%
2743  \begin@ClosedObj
2744  \pssetlength\pst@dimc{#2}
2745  \pst@getangle{#3}\pst@tempa
2746  \pst@getangle{#4}\pst@tempb
2747  \pst@@getcoor{#1}%
2748  \def\pst@linetype{1}%
2749  \addto@pscode{%
2750    \pst@coor
2751    2 copy
2752    moveto
2753    \pst@number\pst@dimc \psk@dimen CLW mul sub % Adjusted radius
2754    \pst@tempa \pst@tempb
2755    arc
2756    closepath}%
2757  \showpointsfalse
2758  \end@ClosedObj%
2759}
2760\def\tx@Ellipse{Ellipse }
2761\def\psellipse{\pst@object{psellipse}}
2762\def\psellipse@i(#1){\@ifnextchar({\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}}
2763\def\psellipse@ii(#1)(#2){%
2764  \begin@ClosedObj
2765  \pst@getcoor{#1}\pst@tempa
2766  \pst@@getcoor{#2}%
2767  \addto@pscode{%
2768    0 360
2769    \pst@coor
2770    \ifdim\psk@dimen\p@=\z@\else
2771      \psk@dimen CLW mul
2772      dup 4 -1 roll sub neg 3 1 roll sub
2773    \fi
2774    \pst@tempa
2775    \tx@Ellipse
2776    closepath%
2777  }%
2778  \def\pst@linetype{2}%
2779  \end@ClosedObj%
2780}
2781\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}}
2782\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii}
2783\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}}
2784\long\def\multips@iii(#1)(#2)#3#4{%
2785  \begingroup
2786%----------------- hv 1.10 ------------------
2787  \pst@killglue
2788%----------------- hv 1.10 ------------------
2789  \use@par
2790  \pst@getcoor{#1}\pst@tempa
2791  \pst@@getcoor{#2}%
2792  \pst@cnta=#3\relax
2793  \init@pscode
2794  \addto@pscode{%
2795    \pst@tempa T \the\pst@cnta\space \pslbrace
2796    gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}%
2797  \hbox to\z@{%
2798    \def\init@pscode{%
2799      \addto@pscode{%
2800        gsave
2801        \pst@number\pslinewidth SLW
2802        \pst@usecolor\pslinecolor}}%
2803    \def\use@pscode{\addto@pscode{grestore}}%
2804    \def\psclip##1{\pst@misplaced\psclip}%
2805    \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
2806    #4%
2807  }%
2808  \addto@pscode{grestore \pst@coor T \psrbrace repeat}%
2809  \leavevmode
2810  \use@pscode
2811  \endgroup
2812  \ignorespaces}
2813\def\psscalebox#1{\pst@makebox{\ps@scalebox{#1}}}
2814\def\ps@scalebox#1{%
2815  \begingroup%
2816  \pst@getscale{#1}\pst@tempa%
2817  \let\pst@tempc\pst@tempg%
2818  \let\pst@tempd\pst@temph%
2819  \ps@@scalebox%
2820  \endgroup}
2821\def\ps@@scalebox{%
2822  \leavevmode%
2823  \hbox{%
2824    \ifdim\pst@tempd\p@<\z@%
2825      \pst@dimg=\pst@tempd\ht\pst@hbox%
2826      \pst@dimh=\pst@tempd\dp\pst@hbox%
2827      \dp\pst@hbox=-\pst@dimg%
2828      \ht\pst@hbox=-\pst@dimh%
2829    \else%
2830      \ht\pst@hbox=\pst@tempd\ht\pst@hbox%
2831      \dp\pst@hbox=\pst@tempd\dp\pst@hbox%
2832    \fi%
2833    \pst@dima=\pst@tempc\wd\pst@hbox%
2834    \ifdim\pst@dima<\z@\kern-\pst@dima\fi%
2835    \pst@Verb{CP CP translate \pst@tempa \tx@NET}%
2836    \hbox to \z@{\box\pst@hbox\hss}%
2837    \pst@Verb{
2838      CP CP translate
2839      1 \pst@tempc div 1 \pst@tempd div scale
2840      \tx@NET}%
2841    \ifdim\pst@dima>\z@\kern\pst@dima\fi%
2842  }%
2843}
2844\pslongbox{Scalebox}{\psscalebox}
2845%
2846\def\psscaleboxto(#1,#2){\pst@makebox{\ps@scaleboxto(#1,#2)}}
2847\def\ps@scaleboxto(#1,#2){%
2848  \begingroup
2849  \pssetlength\pst@dima{#1}%
2850  \pssetlength\pst@dimb{#2}%
2851  \ifdim\pst@dima=\z@\else
2852    \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc
2853    \edef\pst@tempc{\pst@tempc\space}%
2854  \fi
2855  \ifdim\pst@dimb=\z@
2856    \ifdim\pst@dima=\z@
2857      \@pstrickserr{%
2858        \string\psscaleboxto\space dimensions cannot both be zero}\@ehpa
2859      \def\pst@tempa{}%
2860      \def\pst@tempc{1 }%
2861      \def\pst@tempd{1 }%
2862    \else
2863      \let\pst@tempd\pst@tempc
2864    \fi
2865  \else
2866    \pst@dimc=\ht\pst@hbox
2867    \advance\pst@dimc\dp\pst@hbox
2868    \pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd
2869    \edef\pst@tempd{\pst@tempd\space}%
2870    \ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi
2871  \fi
2872  \edef\pst@tempa{\pst@tempc \pst@tempd scale }%
2873  \ps@@scalebox
2874  \endgroup}
2875\pslongbox{Scaleboxto}{\psscaleboxto}
2876%
2877\def\tx@Rot{Rot }
2878\def\psrotateleft{\pst@makebox{\ps@rotateleft\pst@hbox}}
2879\def\ps@rotateleft#1{%
2880\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
2881\pst@Verb{90 \tx@Rot}
2882\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}%
2883\pst@Verb{-90 \tx@Rot}}}}
2884\def\psrotateright{\pst@makebox{\ps@rotateright\pst@hbox}}
2885\def\ps@rotateright#1{%
2886% ----------- hv begin 2004-05-07 ----------- patch 15
2887%    \hbox{%
2888  \leavevmode\hbox{%
2889% ----------- hv end 2004-05-07 ----------- patch 15
2890  \hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
2891  \pst@Verb{-90 \tx@Rot}
2892  \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}%
2893  \pst@Verb{90 \tx@Rot}}}}
2894\def\psrotatedown{\pst@makebox{\ps@rotatedown\pst@hbox}}
2895\def\ps@rotatedown#1{%
2896\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1%
2897\pst@Verb{180 \tx@Rot}%
2898\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}%
2899\pst@Verb{-180 \tx@Rot}}}}
2900\pslongbox{Rotateleft}{\psrotateleft}
2901\pslongbox{Rotateright}{\psrotateright}
2902\pslongbox{Rotatedown}{\psrotatedown}
2903% ----------- hv begin 2004-09-23 ----------- 1.11
2904% compatibility stuff
2905\let\rotateleft\psrotateleft
2906\let\rotateright\psrotateright
2907\let\rotatedown\psrotatedown
2908% ----------- hv end 2005-09-23 ----------- 1.11
2909\def\pst@starbox{%
2910\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}}
2911\def\pst@@makesmall#1{%
2912\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}}
2913\def\pst@@@makesmall#1{%
2914\pst@dimh=\psk@xref\wd#1%
2915\ifx\psk@yref\relax
2916\pst@dimg=\dp#1%
2917\else
2918\pst@dimg=\psk@yref\ht#1%
2919\advance\pst@dimg\psk@yref\dp#1%
2920\fi
2921\setbox#1=\hbox to\z@{%
2922\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}}
2923\def\psset@ref#1{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil}
2924\def\psset@@ref#1#2,#3,#4\@nil{%
2925  \def\psk@xref{.5}%
2926  \def\psk@yref{.5}%
2927  \let\pst@makesmall\pst@@@makesmall
2928  \ifx\@empty#3\@empty
2929    \@nameuse{getref@#1}%
2930    \@nameuse{getref@#2}%
2931  \else
2932    \pst@checknum{#1#2}\psk@xref
2933    \pst@checknum{#3}\psk@yref
2934  \fi}
2935\def\getref@c{\let\pst@makesmall\pst@@makesmall}
2936\def\getref@t{\def\psk@yref{1}}
2937\def\getref@b{\def\psk@yref{0}}
2938\def\getref@B{\let\psk@yref\relax}
2939\def\getref@l{\def\psk@xref{0}}
2940\def\getref@r{\def\psk@xref{1}}
2941\psset@ref{c}
2942%
2943\def\psset@rot#1{%
2944\pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
2945\def\psset@@rot#1\@nil{%
2946\def\next##1@#1=##2@##3\@nil{%
2947\ifx\relax##2%
2948\pst@getangle{#1}\psk@rot
2949\else
2950\def\psk@rot{##2}%
2951\fi}%
2952\expandafter\next\pst@rottable @#1=\relax @\@nil}
2953\def\psset@@@rot#1#2\@nil{%
2954\psset@@rot#2\@nil
2955\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}}
2956\def\pst@rotlist{mark RAngle /a ED cleartomark a neg }
2957\def\pst@rottable{%
2958@0=%
2959@U=%
2960@L=90 %
2961@D=180 %
2962@R=-90 %
2963@N=\pst@rotlist
2964@W=\pst@rotlist 90 add %
2965@S=\pst@rotlist 180 add %
2966@E=\pst@rotlist 90 sub }
2967\psset@rot{0}
2968\def\tx@RotBegin{RotBegin }
2969\def\tx@RotEnd{RotEnd }
2970\def\pst@rotate#1#2{%
2971  \ifx#1\@empty\else
2972  \setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}%
2973  \fi%
2974}
2975\def\psput@cartesian#1{%
2976  \hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}%
2977}
2978\def\psput@special#1{%
2979  \hbox{%
2980    \pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin }%
2981    \box#1%
2982    \pst@Verb{ \tx@PutEnd }%
2983  }%
2984}
2985\def\tx@PutCoor{PutCoor }
2986\def\tx@PutBegin{PutBegin }
2987\def\tx@PutEnd{PutEnd }
2988\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}}
2989\def\rput@i[#1]{\addto@par{ref={#1}}\rput@ii}
2990\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}}
2991\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}}
2992\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}}
2993\def\rput@v#1{%
2994  \begingroup
2995    \use@par
2996    \if@star\pst@starbox\fi
2997    \pst@makesmall\pst@hbox
2998    \pst@rotate\psk@rot\pst@hbox
2999    \psput@{#1}\pst@hbox
3000  \endgroup
3001  \ignorespaces%
3002}
3003\def\multirput{%
3004  \def\pst@par{}%
3005  \pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}%
3006}
3007\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii}
3008\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}}
3009\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv}
3010\def\multirput@iv(#1){%
3011  \@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}%
3012}
3013\def\multirput@v(#1,#2)(#3,#4)#5{%
3014  \pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}%
3015}
3016\def\multirput@vi(#1,#2)(#3,#4)#5{%
3017  \pst@killglue
3018  \begingroup
3019    \use@par
3020    \if@star\pst@starbox\fi
3021    \pst@makesmall\pst@hbox
3022    \pst@rotate\psk@rot\pst@hbox
3023    \pssetxlength\pst@dima{#1}%
3024    \pssetylength\pst@dimb{#2}%
3025    \pssetxlength\pst@dimc{#3}%
3026    \pssetylength\pst@dimd{#4}%
3027    \pst@cntg=#5\relax
3028    \pst@cnth=\@ne
3029    \leavevmode
3030    \loop
3031      \vbox to \z@{%
3032        \vss
3033        \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}%
3034        \vskip\pst@dimb%
3035      }%
3036      \ifnum\pst@cntg>\pst@cnth
3037        \advance\pst@dima\pst@dimc
3038        \advance\pst@dimb\pst@dimd
3039        \advance\pst@cnth\@ne
3040    \repeat 
3041    \endgroup
3042  \ignorespaces%
3043}
3044\newif\if@fixedradius
3045\def\cput{\pst@object{cput}}
3046\def\cput@i{\@fixedradiusfalse\cput@ii}
3047\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}}
3048\def\cput@iii#1{%
3049  \addto@par{rot={#1}}%
3050  \@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}%
3051}
3052\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}}
3053  \def\cput@v#1{%
3054  \begingroup
3055    \use@par
3056    \setbox\pst@hbox=\hbox{%
3057      \psboxsepfalse
3058      \if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi%
3059    }%
3060    \pst@@makesmall\pst@hbox
3061    \pst@rotate\psk@rot\pst@hbox
3062    \psput@{#1}\pst@hbox
3063  \endgroup
3064  \ignorespaces%
3065}
3066\def\Cput{\pst@object{Cput}}
3067\def\Cput@i{\@fixedradiustrue\cput@ii}
3068\newdimen\pslabelsep
3069\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
3070\psset@labelsep{5pt}
3071\def\psset@refangle#1{\pst@expandafter\psset@@refangle{#1}\@nil}
3072\def\psset@@refangle#1\@nil{%
3073\def\next##1@#1=##2"##3@##4\@nil{%
3074\ifx\relax##2%
3075\pst@getangle{#1}\psk@refangle
3076\def\psk@uputref{}%
3077\else
3078\def\psk@refangle{##2 }%
3079\def\psk@uputref{##3}%
3080\fi}%
3081\expandafter\next\pst@refangletable @#1=\relax"@\@nil}
3082\def\pst@refangletable{%
3083@r=0"20%
3084@u=90"02%
3085@l=180"10%
3086@d=-90"01%
3087@ur=45"22%
3088@ul=135"12%
3089@dr=-135"21%
3090@dl=-45"11}
3091\psset@refangle{0}
3092% DG/SR modification begin - Mar. 24, 1999 - Patch 10
3093%\def\uput{\def\pst@par{}\@ifnextchar[{\uput@ii}{\uput@i}}
3094\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}}
3095% DG/SR modification end
3096\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii}
3097\def\uput@ii[#1]{%
3098\addto@par{refangle={#1}}%
3099\@ifnextchar({\uput@iv}{\uput@iii}}
3100\def\uput@iii#1{%
3101\addto@par{rot={#1}}%
3102\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}}
3103\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}}
3104\def\uput@v#1{%
3105\begingroup
3106\use@par
3107\if@star\pst@starbox\fi
3108\uput@vi
3109\psput@{#1}\pst@hbox
3110\endgroup
3111\ignorespaces}
3112\def\uput@vi{%
3113\ifx\psk@uputref\@empty
3114\uput@vii\tx@UUput{}%
3115\else
3116\ifx\psk@rot\@empty
3117\expandafter\uput@viii\psk@uputref
3118\else
3119\uput@vii\tx@UUput{}%
3120\fi
3121\fi}
3122\def\uput@vii#1#2{%
3123  \edef\pst@coor{%
3124    \pst@number\pslabelsep
3125    #2%
3126    \pst@number{\wd\pst@hbox}%
3127    \pst@number{\ht\pst@hbox}%
3128    \pst@number{\dp\pst@hbox}%
3129    \psk@refangle\space \ifx\psk@rot\@empty\else\psk@rot\space sub \fi
3130    \tx@Uput #1}%
3131  \setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}%
3132  \setbox\pst@hbox=\psput@special\pst@hbox
3133  \ifx\psk@rot\@empty\else\pst@rotate\psk@rot\pst@hbox\fi}
3134\def\uput@viii#1#2{%
3135  \ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi
3136  \setbox\pst@hbox=\vbox to\z@{%
3137    \ifnum#2=1 \vskip\pslabelsep\else\vss\fi
3138    \hbox to\z@{%
3139      \ifnum#1=2 \hskip\pslabelsep\else\hss\fi
3140      \box\pst@hbox
3141      \ifnum#1=1 \hskip\pslabelsep\else\hss\fi}%
3142    \ifnum#2=2 \vskip\pslabelsep\else\vss\fi}}
3143\def\tx@Uput{Uput }
3144\def\tx@UUput{UUput }
3145%
3146\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}}
3147\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii}
3148\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}}
3149\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}}
3150\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}}
3151\def\Rput@v#1{%
3152  \begingroup
3153  \use@par
3154  \if@star\pst@starbox\fi
3155  \Rput@vi
3156  \pst@makesmall\pst@hbox
3157  \pst@rotate\psk@rot\pst@hbox
3158  \psput@{#1}\pst@hbox
3159  \endgroup
3160  \ignorespaces}
3161%
3162\def\Rput@vi{%
3163  \pst@dimg=\dp\pst@hbox
3164  \advance\pst@dimg\pslabelsep
3165  \dp\pst@hbox=\pst@dimg
3166  \pst@dimg=\ht\pst@hbox
3167  \advance\pst@dimg\pslabelsep
3168  \ht\pst@hbox=\pst@dimg
3169  \setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}%
3170%
3171\def\oldpsput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}}
3172\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii}
3173\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}}
3174\def\oldpsput@iii<#1>{\rput@iii{#1}}
3175\def\OldPsput{\let\psput\oldpsput}
3176\def\NewPsput{\let\psput\rput}
3177%
3178% ----------- 1.10/12 beg hv -------------------
3179\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
3180\newif\ifshowgrid
3181\def\psset@showgrid#1{\@nameuse{showgrid#1}}
3182\psset@showgrid{false}
3183%
3184\newdimen\pst@shift
3185\def\psset@shift#1{\pssetlength\pst@dimg{#1}%
3186  \pst@shift\pst@dimg}
3187%  \global\pst@shift\pst@dimg}
3188\psset@shift{0}
3189% ----------- 1.10/12 end hv -------------------
3190%
3191%
3192%------------------------------- pspicture ------------------------------
3193%
3194\def\pspicture{\begingroup\pst@ifstar\pst@picture}
3195\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
3196\def\pst@@picture[#1]#2(#3,#4){\@ifnextchar(%
3197  {\pst@@@picture[#1](#3,#4)}%
3198  {\pst@@@picture[#1](0,0)(#3,#4)}}
3199%
3200\def\pst@@@picture[#1](#2,#3)(#4,#5){%
3201  \pssetxlength\pst@dima{#2}%
3202  \pssetylength\pst@dimb{#3}%
3203  \pssetxlength\pst@dimc{#4}%
3204  \pssetylength\pst@dimd{#5}%
3205  \ifdim\pst@dima>\pst@dimc%
3206    \pst@dimg=\pst@dima%
3207    \pst@dima=\pst@dimc%
3208    \pst@dimc=\pst@dimg%
3209  \fi%
3210  \ifdim\pst@dimb>\pst@dimd%
3211    \pst@dimg=\pst@dimb%
3212    \pst@dimb=\pst@dimd%
3213    \pst@dimd=\pst@dimg%
3214  \fi%
3215  \setbox\pst@hbox=\hbox\bgroup%
3216  \begingroup\KillGlue%
3217  \@ifundefined{@latexerr}{}{\let\unitlength\psunit}%
3218  \edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}%
3219% ----------- 1.10/12 beg hv -------------------
3220  \psset{showgrid=false}%                % for nested pspicture environemnets
3221  \def\pst@tempA{#1}%
3222  \ifx\pst@tempA\@empty\else\psset{#1}\fi% sets the shift and grid option
3223  \ifshowgrid\psgrid[style=gridstyle]\fi%
3224% ----------- 1.10/12 end hv -------------------
3225%  \ignorespaces%
3226}
3227\def\pic@coor{(0,0)(0,0)(10,10)}
3228\newdimen\pst@shift
3229\def\endpspicture{%
3230  \pst@killglue
3231  \global\pst@shift=\pst@shift% in fact of the following endgroup
3232  \endgroup
3233  \egroup
3234  \ifdim\wd\pst@hbox=\z@\else
3235    %\@pstrickserr{Extraneous space in the pspicture environment}%
3236    %{Type \space <return> \space to proceed.}%
3237  \fi
3238  \ht\pst@hbox=\pst@dimd
3239  \dp\pst@hbox=-\pst@dimb
3240  \setbox\pst@hbox=\hbox{%
3241    \kern-\pst@dima
3242% ----------- 1.10/12 beg hv -------------------
3243%    \advance\pst@dimd-\pst@dimb%
3244%    \pst@dimd=\pst@shift\pst@dimd%
3245%    \advance\pst@dimd\pst@dimb
3246    \pst@dimd-\pst@shift
3247% ----------- 1.10/12 end hv -------------------
3248    \advance\pst@dimd\pst@dimb
3249    \lower\pst@dimd%
3250    \box\pst@hbox%
3251    \kern\pst@dimc}%
3252  \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
3253  \leavevmode\box\pst@hbox
3254  \endgroup%
3255  \global\pst@shift\z@% restore value
3256}
3257\@namedef{pspicture*}{\pspicture*}
3258\@namedef{endpspicture*}{\endpspicture}
3259%
3260%------------------------------- Overlays ------------------------------
3261%
3262\def\tx@BeginOL{BeginOL }
3263\def\tx@InitOL{InitOL }
3264%
3265\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
3266\def\AltOverlayMode{%
3267  \def\pst@initoverlay##1{%
3268    \pst@Verb{%
3269      \tx@InitOL
3270      /Visible { initclip } def
3271      /Invisible {
3272        CP newpath OLUnit itransform moveto clip newpath moveto
3273      } def
3274      /TheOL (##1) def}}}
3275%
3276\def\pst@overlay#1{%
3277  \edef\curr@overlay{#1}%
3278  \pst@Verb{(#1) BOL}%
3279  \aftergroup\pst@endoverlay}
3280%
3281\def\pst@endoverlay{\pst@Verb{(\curr@overlay) BOL}}
3282\def\curr@overlay{all}
3283%
3284\newbox\theoverlaybox
3285%
3286\def\overlaybox{%
3287  \global\setbox\theoverlaybox=\hbox\bgroup
3288  \begingroup
3289  \let\psoverlay\pst@overlay
3290  \def\overlaybox{%
3291    \@pstrickserr{Overlays cannot be nested}\@eha}%
3292  \def\putoverlaybox{%
3293    \@pstrickserr{You must end the overlay box
3294         before using \string\putoverlaybox}}%
3295  \psoverlay{main}%
3296  \ignorespaces}
3297%
3298\def\endoverlaybox{\endgroup\egroup}
3299\def\putoverlaybox#1{%
3300  \hbox{\pst@initoverlay{#1}\copy\theoverlaybox}}
3301%
3302\def\psoverlay{\@pstrickserr{\string\psoverlay\space
3303  can only be used after \string\overlaybox}}
3304%
3305\ifx\pstcustomize\relax \input pstricks.con \fi
3306%
3307\catcode`\@=\PstAtCode\relax
3308%
3309\endinput
3310%%
3311%% END: pstricks.tex
Note: See TracBrowser for help on using the browser.