diff options
author | Karl Berry <karl@freefriends.org> | 2016-09-03 01:25:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-09-03 01:25:14 +0000 |
commit | 2e03ce1ab48d0df8278421f3c58e89e063e51e3b (patch) | |
tree | 4705e4e10e8d841428d7aa8871fb01cf53a73aca /Master/texmf-dist/tex/generic | |
parent | 3f1f836612a33595683361deac1863bf8011b89a (diff) |
pst-arrow (2sep16)
git-svn-id: svn://tug.org/texlive/trunk@41980 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-arrow/pst-arrow.tex | 624 |
1 files changed, 624 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-arrow/pst-arrow.tex b/Master/texmf-dist/tex/generic/pst-arrow/pst-arrow.tex new file mode 100644 index 00000000000..7e14839b368 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-arrow/pst-arrow.tex @@ -0,0 +1,624 @@ +%% $Id: pst-arrow.tex 328 2016-09-01 19:00:31Z herbert $ +%% +%% This is file `pst-arrow.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-arrow.tex' +%% +%% Herbert Voss <hvoss@tug.org> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-arrow' is a PSTricks package for additional arrows +%% +\csname PSTarrowLoaded\endcsname +\let\PSTarrowLoaded\endinput +% +% Requires some packages +\ifx\PSTricksLoaded\endinput\else\input pstricks \fi +\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi +% +\def\fileversion{0.01} +\def\filedate{2016/09/01} +\message{`pst-arrow' v\fileversion, \filedate\space (dr,hv)} +% +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +\pst@addfams{pst-arrow} +% +\def\psBigArrow{\pst@object{psBigArrow}} +\def\psBigArrow@i(#1)(#2){% + \addbefore@par{doublesep=1cm} + \begin@ClosedObj + \pssetlength\pst@dimm{\psdoublesep} + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \addto@pscode{ + /Width \pst@number\pst@dimm def + \pst@tempA % x y + \pst@tempB % x y + exch % x y y x + 4 -1 roll % y y x x + sub % y y dx + 3 1 roll % dx y y + sub % dx dy + exch % dy dx + atan neg % alpha + \pst@tempA + translate + rotate + 0 0 moveto + 0 Width 2 div rlineto % | + \pst@tempB \pst@tempA Pyth2 Width 1.5 mul sub 0 rlineto + 0 Width 1.5 div rlineto + Width 1.5 mul dup neg rlineto + Width 1.5 mul neg dup rlineto + 0 Width 1.5 div rlineto + \pst@tempB \pst@tempA Pyth2 neg Width 1.5 mul add 0 rlineto + closepath + }% + \end@ClosedObj +} +% the original table +% \def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|} +% +% v : Vee arrow (inside) v,V,f and F by Christophe FOUREY +% V : Vee arrow (outside) +% f : Filled vee arrow (inside) +% F : Filled vee arrow (outside) +\edef\pst@arrowtable{\pst@arrowtable,v-v,V-V,f-f,F-F,t-t,T-T} + +% Vee arrow +\define@key[psset]{pst-arrow}{veearrowlength}[3mm]{\pst@getlength{#1}\psk@veearrowlength} +\psset[pst-arrow]{veearrowlength=3mm} % default projected length +\define@key[psset]{pst-arrow}{veearrowangle}[30]{\pst@getangle{#1}\psk@veearrowangle} +\psset[pst-arrow]{veearrowangle=30} % default angle +\define@key[psset]{pst-arrow}{veearrowlinewidth}[0.35mm]{\pst@getlength{#1}\psk@veearrowlinewidth} +\psset[pst-arrow]{veearrowlinewidth=0.35mm} % default vee arrow line width + +% Filled vee arrow +\define@key[psset]{pst-arrow}{filledveearrowlength}[3mm]{\pst@getlength{#1}\psk@filledveearrowlength} +\psset[pst-arrow]{filledveearrowlength=3mm} % default projected length +\define@key[psset]{pst-arrow}{filledveearrowangle}[15]{\pst@getangle{#1}\psk@filledveearrowangle} +\psset[pst-arrow]{filledveearrowangle=15} % default angle +\define@key[psset]{pst-arrow}{filledveearrowlinewidth}[0.35mm]{\pst@getlength{#1}\psk@filledveearrowlinewidth} +\psset[pst-arrow]{filledveearrowlinewidth=0.35mm} % default vee arrow line width +\define@key[psset]{pst-arrow}{arrowlinestyle}[solid]{% + \@ifundefined{psls@#1}% + {\@pstrickserr{Line style `#1' not defined}\@eha}% + {\def\psarrowlinestyle{#1}}} +\psset[pst-arrow]{arrowlinestyle=solid} % default +\pst@def{VeeArrow}<% + 1 setlinecap % round caps + 1 setlinejoin % round join + setlinewidth % vee arrow line width + /y ED % projected length + 2 div /a ED % angle (divide by 2) + /t ED % false = inside, true = outside + a sin a cos div y mul /x ED % perpendicular length : x=tan(a).y + t { 1 -1 scale } if % if outside : symmetry + x neg y moveto % point #1 + 0 0 L % point #2 + x y L % point #3 + { closepath gsave fill grestore } if % if filled : close and fill + \@nameuse{psls@\psarrowlinestyle} + stroke % draw line + 0 t { y 2 mul } { 0 } ifelse moveto> % if outside : twice longer line + +% VeeArrow : filled? outside? (total) angle (projected) length (arrow) line width + +\@namedef{psas@v}{% + false false \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow} +\@namedef{psas@V}{% + false true \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow} +\@namedef{psas@f}{% + true false \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow} +\@namedef{psas@F}{% + true true \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow} + +% And An another arrowhead +% architectural tick / oblique arrow + +% Tick arrow +\define@key[psset]{pst-arrow}{tickarrowlength}[1.5mm]{\pst@getlength{#1}\psk@tickarrowlength} +\psset[pst-arrow]{tickarrowlength=1.5mm} % default projected length +\define@key[psset]{pst-arrow}{tickarrowlinewidth}[0.35mm]{\pst@getlength{#1}\psk@tickarrowlinewidth} +\psset[pst-arrow]{tickarrowlinewidth=0.35mm} % default tick arrow line width + +\pst@def{TickArrow}<% + 1 setlinecap % round caps + 1 setlinejoin % round join + setlinewidth % tick line width + /y ED % projected length + /t ED % false = normal, true = reversed + t { 1 -1 scale } if % if reversed : symmetry + y neg y moveto % point #1 + y y neg L % point #2 + \@nameuse{psls@\psarrowlinestyle} + stroke % draw line + 0 0 moveto> % origin + +\@namedef{psas@t}{ false \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow } +\@namedef{psas@T}{ true \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow } +% +% HookLeft/RightArrow +\newdimen\pshooklength +\newdimen\pshookwidth +\define@key[psset]{pst-arrow}{hooklength}[3mm]{\pssetlength\pshooklength{#1}} +\define@key[psset]{pst-arrow}{hookwidth}[1mm]{\pssetlength\pshookwidth{#1}} +%\psset{hooklength=3mm,hookwidth=1mm} +% +\edef\pst@arrowtable{\pst@arrowtable,H-H,h-h} % add new arrow +\def\tx@RHook{RHook } % PostScript name +\def\tx@Rhook{Rhook } % PostScript name +\@namedef{psas@H}{% + /RHook { + /x ED % hook width + /y ED % hook length + /z CLW 2 div def % save it + x y moveto % goto first point + x 0 0 0 0 y + curveto % draw Bezier + stroke + 0 y moveto % define current point + } def + \pst@number\pshooklength + \pst@number\pshookwidth + \tx@RHook +} +\@namedef{psas@h}{% + /Rhook { + CLW mul % size * CLW + add dup % +length size*CLW+length size*CLW+length + 2 div /w ED % (size*CLW+length)/2 -> w + mul dup /h ED mul % (size*CLW+length) + /a ED + w neg h abs moveto 0 0 L + gsave + stroke grestore + } def + 0 \psk@arrowlength \psk@arrowsize \tx@Rhook +} +% New parameter "arrowfill", with default as "true" +\define@boolkey[psset]{pst-arrow}[ps]{ArrowFill}[true]{} +% +% Modification of the PostScript macro Arrow to choose to fill or not the arrow +% (it require to restore the current linewidth, despite of the scaling) +\pst@def{Arrow}<{% + CLW mul add dup 2 div + /w ED mul dup + /h ED mul + /a ED { 0 h T 1 -1 scale } if + gsave + \ifpsArrowFill\else\pst@number\pslinewidth \pst@arrowscale\space div SLW \fi + w neg h moveto + 0 0 L w h L w neg a neg rlineto + \ifpsArrowFill gsave + \tx@setStrokeTransparency + fill + grestore \else gsave closepath stroke grestore \fi + grestore + 0 h a sub moveto +}> +% +\define@key[psset]{pst-arrow}{nArrowsA}[2]{\def\psk@nArrowsA{#1}} +\define@key[psset]{pst-arrow}{nArrowsB}[2]{\def\psk@nArrowsB{#1}} +\define@key[psset]{pst-arrow}{nArrows}[2]{\def\psk@nArrowsA{#1}\def\psk@nArrowsB{#1}} +\psset{nArrows=2} +% +\@namedef{psas@>>}{% + \psk@nArrowsA\space 1 sub { + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + 0 h a sub T + } repeat + gsave + newpath + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + CP + grestore + moveto +} +% +\@namedef{psas@<<}{% + true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + 0 h neg a add T + \psk@nArrowsB\space 2 sub { + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + 0 h neg a add T + } repeat + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + 0 h a 5 mul 2 div sub moveto +} +% +% DG addition begin - Dec. 18/19, 1997 and Oct. 11, 2002 +% Adapted from \psset@arrows +\define@key[psset]{pst-arrow}{ArrowInside}{% + \def\pst@tempArrow{#1}% + \ifx\pst@tempArrow\@empty \def\psk@ArrowInside{} % + \else% + \begingroup% + \pst@activearrows% + \xdef\pst@tempg{<#1}% + \endgroup% + \expandafter\psset@@ArrowInside\pst@tempg\@empty-\@empty\@nil% + \if@pst\else\@pstrickserr{Bad intermediate arrow specification: #1}\@ehpa\fi% + \fi% +} +% Adapted from \psset@@arrows +\def\psset@@ArrowInside#1-#2\@empty#3\@nil{% + \@psttrue + \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}% + \expandafter\next\pst@arrowtable,#1-#1,\@nil + \@ifundefined{psas@#2}% + {\@pstfalse\def\psk@ArrowInside{}}% + {\def\psk@ArrowInside{#2}}% +} +% Default value empty +\psset{ArrowInside={}} +% Modified version of \pst@addarrowdef +\def\pst@addarrowdef{% + \addto@pscode{% + /ArrowA { + \ifx\psk@arrowA\@empty + \pst@oplineto + \else + \pst@arrowdef{A} + moveto + \fi + } def + /ArrowB { \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi } def +% DG addition + /ArrowInside { + \ifx\psk@ArrowInside\@empty \else \pst@arrowdefA{Inside} \fi + } def + }% +} +% Adapted from \pst@arrowdef +\def\pst@arrowdefA#1{% + \ifnum\pst@repeatarrowsflag>\z@ /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c\fi + \tx@BeginArrow + \psk@arrowscale + \@nameuse{psas@\@nameuse{psk@Arrow#1}} + \tx@EndArrow% +} +% ArrowInsidePos parameter (default value 0.5) +\define@key[psset]{pst-arrow}{ArrowInsidePos}[0.5]{\pst@checknum{#1}\psk@ArrowInsidePos}% +%\psset{ArrowInsidePos=0.5} +% +% +% Redefinition of the PostScript /Line macro to print the intermediate +% arrow on each segment of the line +% +\define@key[psset]{pst-arrow}{ArrowInsideNo}[1]{\pst@checknum{#1}\psk@ArrowInsideNo}% hv 20031001 +\define@key[psset]{pst-arrow}{ArrowInsideOffset}[0]{\pst@checknum{#1}\psk@ArrowInsideOffset}% hv 20031001 +%\psset{ArrowInsideNo=1,ArrowInsideOffset=0} +% +\def\arrowType@H{H} +\pst@def{Line}< + NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if + (\psk@ArrowInside) length 0 gt { + \ifx\psk@arrowA\arrowType@H % do we have a Hook arrow at the beginning? + \pst@number\pshooklength % yes + \else + \psk@arrowsize\space CLW mul add dup \psk@arrowlength\space mul exch \psk@arrowinset mul neg add + \fi + /arrowlength exch def + 4 copy % copy all four values for the arrow line + /y1 ED /x1 ED /y2 ED /x2 ED % save them + /Alpha y2 y1 sub x2 x1 sub Atan def % the gradient of the line +% 2 copy /y1 ED /x1 ED ArrowA x1 y1 + ArrowA % draw arrowA + x1 Alpha cos arrowlength mul add % dx add + y1 Alpha sin arrowlength mul add % dy add, to get the current point at the end of the arrow tip + /n n 1 sub def + n { + 4 copy + /y1 ED /x1 ED /y2 ED /x2 ED + x1 y1 + \psk@ArrowInsidePos\space 1 gt { + /Alpha y2 y1 sub x2 x1 sub Atan def + /ArrowPos \psk@ArrowInsideOffset\space def + /dArrowPos \psk@ArrowInsidePos\space abs def +% /Length x2 x1 sub y2 y1 sub Pyth def + \psk@ArrowInsideNo\space cvi { + /ArrowPos ArrowPos dArrowPos add def +% ArrowPos Length gt { exit } if + x1 Alpha cos ArrowPos mul add + y1 Alpha sin ArrowPos mul add + ArrowInside + pop pop + } repeat + }{ + /ArrowPos \psk@ArrowInsideOffset\space def + /dArrowPos \psk@ArrowInsideNo 1 gt {% + 1.0 \psk@ArrowInsideNo 1.0 add div + }{\psk@ArrowInsidePos } ifelse def + \psk@ArrowInsideNo\space cvi { + /ArrowPos ArrowPos dArrowPos add def + x2 x1 sub ArrowPos mul x1 add + y2 y1 sub ArrowPos mul y1 add + ArrowInside + pop pop + } repeat + } ifelse + pop pop Lineto + } repeat + }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse + CP 4 2 roll ArrowB L pop pop } if > +% +% Redefinition of the PostScript /Polygon macro to print the intermediate +% arrow on each segment of the line +\pst@def{Polygon}<{% + NArray n 2 eq { 0 0 /n 3 def } if + n 3 lt { + n { pop pop } repeat + }{ + n 3 gt { CheckClosed } if + n 2 mul -2 roll + /y0 ED + /x0 ED + /y1 ED + /x1 ED + /xx1 x1 def + /yy1 y1 def + x1 y1 + /x1 x0 x1 add 2 div def + /y1 y0 y1 add 2 div def + x1 y1 moveto + /n n 2 sub def + /drawArrows { + x11 y11 + \psk@ArrowInsidePos\space 1 gt { + /Alpha y12 y11 sub x12 x11 sub atan def + /ArrowPos \psk@ArrowInsideOffset\space def + /Length x12 x11 sub y12 y11 sub Pyth def + /dArrowPos \psk@ArrowInsidePos\space abs def + { + /ArrowPos ArrowPos dArrowPos add def + ArrowPos Length gt { exit } if + x11 Alpha cos ArrowPos mul add + y11 Alpha sin ArrowPos mul add + currentdict /ArrowInside known { ArrowInside } if + pop pop + } loop + }{ + /ArrowPos \psk@ArrowInsideOffset\space def + /dArrowPos \psk@ArrowInsideNo\space 1 gt {% + 1.0 \psk@ArrowInsideNo\space 1.0 add div + }{ \psk@ArrowInsidePos } ifelse def + \psk@ArrowInsideNo\space cvi { + /ArrowPos ArrowPos dArrowPos add def + x12 x11 sub ArrowPos mul x11 add + y12 y11 sub ArrowPos mul y11 add + currentdict /ArrowInside known { ArrowInside } if + pop pop + } repeat + } ifelse + pop pop Lineto + } def + n { + 4 copy + /y11 ED /x11 ED /y12 ED /x12 ED + drawArrows + } repeat + x1 y1 x0 y0 + 6 4 roll + 2 copy + /y11 ED /x11 ED /y12 y0 def /x12 x0 def + drawArrows + /y11 y0 def /x11 x0 def /y12 yy1 def /x12 xx1 def + drawArrows + pop pop + closepath + } ifelse % +}> +% +% +% Redefinition of the PostScript /OpenBezier macro to print the intermediate +% arrow +\pst@def{OpenBezier}<{% + /dArrowPos \psk@ArrowInsideNo 1 gt {% + 1.0 \psk@ArrowInsideNo 1.0 add div + }{ \psk@ArrowInsidePos } ifelse def + BezierNArray + n 1 eq { pop pop + }{ 2 copy + /y0 ED /x0 ED + ArrowA + n 4 sub 3 idiv { 6 2 roll 4 2 roll curveto } repeat + 6 2 roll + 4 2 roll + ArrowB + /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED + /cx x1 x0 sub 3 mul def + /cy y1 y0 sub 3 mul def + /bx x2 x1 sub 3 mul cx sub def + /by y2 y1 sub 3 mul cy sub def + /ax x3 x0 sub cx sub bx sub def + /ay y3 y0 sub cy sub by sub def + /getValues { + ax t0 3 exp mul bx t0 t0 mul mul add cx t0 mul add x0 add + ay t0 3 exp mul by t0 t0 mul mul add cy t0 mul add y0 add + ax t 3 exp mul bx t t mul mul add cx t mul add x0 add + ay t 3 exp mul by t t mul mul add cy t mul add y0 add + } def + /getdL { + getValues + 3 -1 roll sub 3 1 roll sub Pyth + } def + /CurveLength { + /u 0 def + /du 0.01 def + 0 100 { + /t0 u def + /u u du add def + /t u def + getdL add + } repeat } def + /GetArrowPos { + /ende \psk@ArrowInsidePos\space 1 gt + {ArrowPos} + {ArrowPos CurveLength mul} ifelse def + /u 0 def + /du 0.01 def + /sum 0 def + { /t0 u def + /u u du add def + /t u def + /sum getdL sum add def + sum ende gt {exit} if + } loop u + } def + /ArrowPos \psk@ArrowInsideOffset\space def + /loopNo \psk@ArrowInsidePos\space 1 gt {% + CurveLength \psk@ArrowInsidePos\space div cvi + }{ \psk@ArrowInsideNo } ifelse def + loopNo cvi { + /ArrowPos ArrowPos dArrowPos add def + /t GetArrowPos def + /t0 t 0.95 mul def + getValues + ArrowInside pop pop pop pop + } repeat + x1 y1 x2 y2 x3 y3 curveto + } ifelse +}> +% +% Redefinition of the PostScript /NCLine macro to print the intermediate +% arrow of the line +\pst@def{NCLine}<{% + NCCoor + tx@Dict begin + ArrowA CP 4 2 roll ArrowB + 4 copy + /y2 ED /x2 ED /y1 ED /x1 ED + x1 y1 + \psk@ArrowInsidePos\space 1 gt { + /Alpha y2 y1 sub x2 x1 sub atan def + /ArrowPos \psk@ArrowInsideOffset\space def + /Length x2 x1 sub y2 y1 sub Pyth def + /dArrowPos \psk@ArrowInsidePos\space abs def + {% + /ArrowPos ArrowPos dArrowPos add def + ArrowPos Length gt { exit } if + x1 Alpha cos ArrowPos mul add + y1 Alpha sin ArrowPos mul add + ArrowInside + pop pop + } loop + }{% + /ArrowPos \psk@ArrowInsideOffset\space def + /dArrowPos \psk@ArrowInsideNo 1 gt {% + 1.0 \psk@ArrowInsideNo 1.0 add div + }{ \psk@ArrowInsidePos } ifelse def + \psk@ArrowInsideNo\space cvi { + /ArrowPos ArrowPos dArrowPos add def + x2 x1 sub ArrowPos mul x1 add + y2 y1 sub ArrowPos mul y1 add + ArrowInside + pop pop + } repeat + } ifelse + pop pop lineto pop pop + end% +}> +% +\pst@def{NCCurve}<{% + GetEdgeA GetEdgeB + xA1 xB1 sub yA1 yB1 sub + Pyth 2 div dup 3 -1 roll mul + /ArmA ED + mul + /ArmB ED + /ArmTypeA 0 def + /ArmTypeB 0 def + GetArmA GetArmB + xA2 yA2 xA1 yA1 + 2 copy + /y0 ED /x0 ED + tx@Dict begin + ArrowA + end + xB2 yB2 xB1 yB1 + tx@Dict begin + ArrowB + end + /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED + /cx x1 x0 sub 3 mul def + /cy y1 y0 sub 3 mul def + /bx x2 x1 sub 3 mul cx sub def + /by y2 y1 sub 3 mul cy sub def + /ax x3 x0 sub cx sub bx sub def + /ay y3 y0 sub cy sub by sub def + /getValues { + ax t0 3 exp mul bx t0 t0 mul mul add cx t0 mul add x0 add + ay t0 3 exp mul by t0 t0 mul mul add cy t0 mul add y0 add + ax t 3 exp mul bx t t mul mul add cx t mul add x0 add + ay t 3 exp mul by t t mul mul add cy t mul add y0 add + } def + /getdL { + getValues + 3 -1 roll sub 3 1 roll sub Pyth + } def + /CurveLength { + /u 0 def + /du 0.01 def + 0 100 { + /t0 u def + /u u du add def + /t u def + getdL add + } repeat } def + /GetArrowPos { + /ende \psk@ArrowInsidePos\space 1 gt {ArrowPos}{ArrowPos CurveLength mul} ifelse def + /u 0 def + /du 0.01 def + /sum 0 def + { + /t0 u def + /u u du add def + /t u def + /sum getdL sum add def + sum ende gt {exit} if + } loop u + } def + /dArrowPos \psk@ArrowInsideNo 1 gt {% + 1.0 \psk@ArrowInsideNo 1.0 add div + }{ \psk@ArrowInsidePos } ifelse def + /ArrowPos \psk@ArrowInsideOffset\space def + /loopNo \psk@ArrowInsidePos\space 1 gt {% + CurveLength \psk@ArrowInsidePos\space div cvi + }{ \psk@ArrowInsideNo } ifelse def + loopNo cvi { + /ArrowPos ArrowPos dArrowPos add def + /t GetArrowPos def + /t0 t 0.95 mul def + getValues + ArrowInside pop pop pop pop + } repeat + x1 y1 x2 y2 x3 y3 curveto + /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] cvx def + /LPutPos { t LPutVar BezierMidpoint } def + /HPutPos { { HPutLines } HPutCurve } def + /VPutPos { { VPutLines } HPutCurve } def +}> +% + +\def\resetArrowOptions{% + \def\pst@linetype{0}% + \psset[pst-arrow]{% + hooklength=3mm, hookwidth=1mm, + ArrowFill=true, + ArrowInside={}, ArrowInsidePos=0.5, + ArrowInsideNo=1, ArrowInsideOffset=0, +}} +% +\resetArrowOptions +% +\catcode`\@=\PstAtCode\relax +% +%% END: pst-arrow.tex +\endinput |