summaryrefslogtreecommitdiff
path: root/graphics/pstricks/base/generic/pstricks-arrows.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pstricks/base/generic/pstricks-arrows.tex')
-rw-r--r--graphics/pstricks/base/generic/pstricks-arrows.tex572
1 files changed, 572 insertions, 0 deletions
diff --git a/graphics/pstricks/base/generic/pstricks-arrows.tex b/graphics/pstricks/base/generic/pstricks-arrows.tex
new file mode 100644
index 0000000000..5684f3d792
--- /dev/null
+++ b/graphics/pstricks/base/generic/pstricks-arrows.tex
@@ -0,0 +1,572 @@
+%% $Id: pstricks-arrows.tex 164 2021-08-25 19:26:42Z herbert $
+%%
+%% This is file `pstricks-arrows.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% 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:
+%% `pstricks-arrows' base code for arrows
+%%
+%% fileversion and filedate see main file pstricks.tex
+%%
+\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
+% ------------------------- hv 1.10 beg ------------------------
+%\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1}
+\def\pst@@getarrows#1#2{%
+ \def\pst@tempa{#2}% prevent empty arrow arguments, to allow \psline{}(...)(...)
+ \ifx\pst@tempa\@empty
+ \addto@par{arrows=-}%
+ \else
+ \addto@par{arrows=#2}%
+ \fi
+ #1%
+}
+% ------------------------- hv 1.10 end ------------------------
+\def\pst@arrowtype{%
+ \ifx\psk@arrowB\@empty 0 \else -2 \fi
+ \ifx\psk@arrowA\@empty 0 \else -1 \fi
+ add }
+%
+\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
+}}
+%
+\def\pst@arrowdef#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
+}
+%
+\def\pst@repeatarrows{%
+ \addto@pscode{%
+ gsave
+ \ifx\psk@arrowA\@empty\else ArrowAc ArrowA pop pop \fi
+ \ifx\psk@arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
+ grestore
+}}
+
+\define@key[psset]{pstricks}{tipcolor}[black]{\def\pst@tipcolor{#1}}
+\psset[pstricks]{tipcolor=}
+
+\def\ps@check@tipcolor{%
+ \expandafter\if\expandafter$\pst@tipcolor$
+ \pst@usecolor\pslinecolor
+ \else
+ \pst@usecolor\pst@tipcolor
+ \fi
+}
+%
+\def\tx@EndDot{ \ps@check@tipcolor\space EndDot }
+%
+% 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)
+
+\def\psk@arrowA{}
+\def\psk@arrowB{}
+\def\pst@arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,%
+ <D-D>,D>-<D,<D<D-D>D>,<T-T>,|<*->|*,|<->|,v-v,V-V,f-f,F-F,t-t,T-T}
+\begingroup
+ \catcode`\<=13
+ \catcode`\>=13
+ \catcode`\|=13
+ \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
+\endgroup
+\def\tx@BeginArrow{BeginArrow }
+\def\tx@EndArrow{EndArrow }
+%
+\def\tx@Arrow{ \tx@setStrokeTransparency Arrow }% hv 2008-01-13
+\def\tx@ArrowD{ \tx@setStrokeTransparency ArrowD }% hv 2008-01-13
+\def\tx@ArrowT{ \tx@setStrokeTransparency ArrowT }% hv 2021-05-31
+%
+\@namedef{psas@<|}{
+ \psk@tbarsize\space \tx@Tbar
+ 0 CLW 2 div T
+ newpath
+ true
+ \psk@arrowinset
+ \psk@arrowlength
+ \psk@arrowsize
+ \tx@Arrow
+}
+% ]-[ arrow
+\def\tx@BracketOut{BracketOut }
+\@namedef{psas@[}{%
+ /BracketOut {%
+ CLW mul add dup CLW sub 2 div
+%/x ED mul CLW add
+ /x ED mul neg
+ /y ED
+ /z CLW 2 div def
+ x neg y moveto
+ x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
+ \psk@bracketlength\space \psk@tbarsize\space \tx@BracketOut
+}
+% )-( arrow
+\def\tx@RoundBracketOut{ \tx@setStrokeTransparency RoundBracketOut }% hv 2008-01-13
+\@namedef{psas@(}{%
+ /RoundBracketOut {%
+ CLW mul add dup 2 div
+%/x ED mul
+ /x ED mul neg
+ /y ED
+ /mtrx CM def
+ 0 CLW
+ 2 div T x y mul 0 ne { x y scale } if
+ 1 1 moveto
+ .85 .5 .35 0 0 0 curveto
+ -.35 0 -.85 .5 -1 1 curveto
+ mtrx setmatrix stroke 0 CLW moveto } def
+ \psk@rbracketlength\space \psk@tbarsize\space \tx@RoundBracketOut
+}
+% end of new definitions of the missing arrows ---- hv 1.12
+\@namedef{psas@>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow }
+\@namedef{psas@>>}{%
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+ 0 h T gsave newpath
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+ CP grestore CP newpath moveto 2 copy
+ CLW \pst@arrowscale\space div SLW % set the original line width
+ L stroke moveto
+}
+\@namedef{psas@<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+\@namedef{psas@<<}{
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+ CP newpath moveto 0 a neg
+ gsave
+ CLW \pst@arrowscale\space div SLW % set the original line width
+ L stroke
+ grestore
+ 0 h neg T
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+}
+\@namedef{psas@D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD }% hv 20071211
+\@namedef{psas@D>D>}{ % hv 20071211
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+ 0 h Inset sub T gsave newpath
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+ CP grestore moveto
+}
+\@namedef{psas@<D}{ % hv 20071211
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+}
+\@namedef{psas@<D<D}{ % hv 20071211
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+ CP newpath moveto 0 a neg L stroke 0 h neg T
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+}
+\@namedef{psas@T>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowT }% hv 20210531
+\@namedef{psas@<T}{ % hv 20071211
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowT
+}
+
+\define@key[psset]{pstricks}{tbarsize}[2pt 5]{%
+ \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+ \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
+\psset[pstricks]{tbarsize=2pt 5}
+%
+\def\tx@Tbar{Tbar }
+\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
+\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
+\@namedef{psas@>|}{%
+ \psk@tbarsize \tx@Tbar
+ 0 CLW 2 div T
+ newpath
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+}
+\@namedef{psas@>|*}{%
+ 0 CLW -2 div T
+ \psk@tbarsize \tx@Tbar
+ 0 CLW 2 div T
+ newpath
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+}
+%
+\define@key[psset]{pstricks}{bracketlength}[0.15]{\pst@checknum{#1}\psk@bracketlength}
+\psset[pstricks]{bracketlength=.15}
+\def\tx@Bracket{Bracket }
+\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
+\define@key[psset]{pstricks}{rbracketlength}[0.15]{\pst@checknum{#1}\psk@rbracketlength}
+\psset[pstricks]{rbracketlength=.15}
+\def\tx@RoundBracket{RoundBracket }
+\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
+%
+\def\psas@c{1 \psas@@c}
+\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
+\def\psas@C{2 \psas@@c}
+\def\psas@@c{%
+ setlinecap
+ 0 0 moveto
+ 0 0.1 L % changed value from 0.5 to 0.1
+ stroke
+ 0 0 moveto }
+%
+\def\psas@{}
+%
+\define@key[psset]{pstricks}{arrowLW}{\pst@getlength{#1}\psk@arrowLW}
+\psset[pstricks]{arrowLW=0}
+% arrowLW as LineWidth for the circled line ends
+%
+\def\psas@o{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot }
+\def\psas@oo{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot }
+\@namedef{psas@*}{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {false} false \psk@dotsize \tx@EndDot }
+\@namedef{psas@**}{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {false} true \psk@dotsize \tx@EndDot }
+%
+\define@key[psset]{pstricks}{arrows}[-]{%
+ \begingroup
+ \pst@activearrows
+ \xdef\pst@tempg{#1}%
+ \endgroup
+ \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
+ \if@pst\else\@pstrickserr{Bad arrows specification: #1}\@ehpa\fi}
+\def\psset@@arrows#1-#2\@empty#3\@nil{%
+ \@psttrue
+ \def\ps@next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}%
+ \expandafter\ps@next\pst@arrowtable,#1-#1,\@nil
+ \@ifundefined{psas@\pst@tempg}{\@pstfalse\def\psk@arrowA{}}{\let\psk@arrowA\pst@tempg}%
+ \@ifundefined{psas@#2}{\@pstfalse\def\psk@arrowB{}}{\def\psk@arrowB{#2}}}
+\psset[pstricks]{arrows=-}
+%
+\define@key[psset]{pstricks}{arrowscale}[1]{% hv --1.12
+ \pst@getscale{#1}\psk@arrowscale
+ \pst@@arrowscale@i#1 \@nil}% hv --1.12
+\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}% hv --1.12
+\psset[pstricks]{arrowscale=1}
+%
+\define@key[psset]{pstricks}{arrowsize}[1.5pt 2]{%
+ \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+ \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}%
+}
+\psset[pstricks]{arrowsize=1.5pt 2}
+\define@key[psset]{pstricks}{arrowlength}[1.4]{\pst@checknum{#1}\psk@arrowlength}
+\psset[pstricks]{arrowlength=1.4}
+\define@key[psset]{pstricks}{arrowinset}[0.4]{\pst@checknum{#1}\psk@arrowinset}%
+\psset[pstricks]{arrowinset=0.4}
+% Vee arrow
+\define@key[psset]{pstricks}{veearrowlength}[3mm]{\pst@getlength{#1}\psk@veearrowlength}
+\psset[pstricks]{veearrowlength=3mm} % default projected length
+\define@key[psset]{pstricks}{veearrowangle}[30]{\pst@getangle{#1}\psk@veearrowangle}
+\psset[pstricks]{veearrowangle=30} % default angle
+\define@key[psset]{pstricks}{veearrowlinewidth}[0.35mm]{\pst@getlength{#1}\psk@veearrowlinewidth}
+\psset[pstricks]{veearrowlinewidth=0.35mm} % default vee arrow line width
+
+% Filled vee arrow
+\define@key[psset]{pstricks}{filledveearrowlength}[3mm]{\pst@getlength{#1}\psk@filledveearrowlength}
+\psset[pstricks]{filledveearrowlength=3mm} % default projected length
+\define@key[psset]{pstricks}{filledveearrowangle}[15]{\pst@getangle{#1}\psk@filledveearrowangle}
+\psset[pstricks]{filledveearrowangle=15} % default angle
+\define@key[psset]{pstricks}{filledveearrowlinewidth}[0.35mm]{\pst@getlength{#1}\psk@filledveearrowlinewidth}
+\psset[pstricks]{filledveearrowlinewidth=0.35mm} % default vee arrow line width
+\define@key[psset]{pstricks}{arrowlinestyle}[solid]{%
+ \@ifundefined{psls@#1}%
+ {\@pstrickserr{Line style `#1' not defined}\@eha}%
+ {\def\psarrowlinestyle{#1}}}
+\psset[pstricks]{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}
+ \ps@check@tipcolor
+ 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@|}{\ps@check@tipcolor \psk@tbarsize \tx@Tbar}
+
+\@namedef{psas@v}{%
+ \ps@check@tipcolor
+ false false \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow}
+\@namedef{psas@V}{%
+ \ps@check@tipcolor
+ false true \psk@veearrowangle \psk@veearrowlength \psk@veearrowlinewidth \tx@VeeArrow}
+\@namedef{psas@f}{%
+ \ps@check@tipcolor
+ true false \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow}
+\@namedef{psas@F}{%
+ \ps@check@tipcolor
+ true true \psk@filledveearrowangle \psk@filledveearrowlength \psk@filledveearrowlinewidth \tx@VeeArrow}
+
+% And An another arrowhead
+% architectural tick / oblique arrow
+
+% Tick arrow
+\define@key[psset]{pstricks}{tickarrowlength}[1.5mm]{\pst@getlength{#1}\psk@tickarrowlength}
+\psset[pstricks]{tickarrowlength=1.5mm} % default projected length
+\define@key[psset]{pstricks}{tickarrowlinewidth}[0.35mm]{\pst@getlength{#1}\psk@tickarrowlinewidth}
+\psset[pstricks]{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}
+ \ps@check@tipcolor
+ stroke % draw line
+ 0 0 moveto> % origin
+
+
+\@namedef{psas@t}{ \ps@check@tipcolor\space false \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
+\@namedef{psas@T}{ \ps@check@tipcolor\space true \psk@tickarrowlength \psk@tickarrowlinewidth \tx@TickArrow }
+
+\pst@def{ArrowD}< % the sides are drawn as curves (hv 20071211)
+ CLW mul add dup
+ 2 div /w ED
+ mul dup /h ED
+ mul /Inset ED
+ { 0 h T 1 -1 scale } if % changes the direction
+% we use y=w/h^2 * x^2 as equation for the control points
+% for the coordinates the arrow is seen from top to bottom
+% the bottom (tip) is (0;0)
+ w neg h moveto % lower left of >
+ w 9 div 4 mul neg h 3 div 2 mul
+ w 9 div neg h 3 div
+ 0 0 curveto % tip of >
+ w 9 div h 3 div
+ w 9 div 4 mul h 3 div 2 mul
+ w h curveto % upper left of >
+ w neg Inset neg rlineto % move to x=0 and inset
+ gsave
+ \ps@check@tipcolor
+ fill grestore >
+%
+\pst@def{ArrowT}< % like tikz
+ CLW mul add dup
+ 2 div /w ED
+ mul dup /h ED
+ mul /Inset ED
+ { 0 h T 1 -1 scale } if % changes the direction
+ w 2 mul /w exch def
+ w neg h moveto % lower left of >
+ w 9 div 4 mul neg h 3 div 2 mul
+ w 9 div neg h 3 div
+ 0 0 curveto % tip of >
+ w 9 div h 3 div
+ w 9 div 4 mul h 3 div 2 mul
+ w h curveto % upper left of >
+% w neg Inset neg rlineto % move to x=0 and inset
+% CLW SLW
+% 1 0 0 setrgbcolor
+ 2 setlinejoin
+ \ps@check@tipcolor
+ stroke
+ 0 0 moveto >
+%
+%
+% HookLeft/RightArrow
+\newdimen\pshooklength
+\newdimen\pshookwidth
+\define@key[psset]{pstricks}{hooklength}[3mm]{\pssetlength\pshooklength{#1}}
+\define@key[psset]{pstricks}{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
+ \ps@check@tipcolor
+ \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
+ \ps@check@tipcolor
+ stroke grestore
+ } def
+ 0 \psk@arrowlength \psk@arrowsize \tx@Rhook
+}
+% New parameter "arrowfill", with default as "true"
+\define@boolkey[psset]{pstricks}[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
+ \ps@check@tipcolor
+ w neg h moveto
+ 0 0 L w h L w neg a neg rlineto
+ \ifpsArrowFill gsave
+ \tx@setStrokeTransparency
+ fill
+ grestore \else gsave closepath
+ \ps@check@tipcolor
+ stroke grestore \fi
+ grestore
+ 0 h a sub moveto
+}>
+%
+\define@key[psset]{pstricks}{nArrowsA}[2]{\def\psk@nArrowsA{#1}}
+\define@key[psset]{pstricks}{nArrowsB}[2]{\def\psk@nArrowsB{#1}}
+\define@key[psset]{pstricks}{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]{pstricks}{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]{pstricks}{ArrowInsidePos}[0.5]{\pst@checknum{#1}\psk@ArrowInsidePos}%
+%\psset{ArrowInsidePos=0.5}
+
+\def\pst@repeatarrowsflag{\z@}
+\def\pst@setrepeatarrowsflag{%
+ \edef\pst@repeatarrowsflag{%
+ \ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
+ \ifpsshadow 1\else \z@\fi\fi\fi}}%
+%
+% Redefinition of the PostScript /Line macro to print the intermediate
+% arrow on each segment of the line
+%
+\define@key[psset]{pstricks}{ArrowInsideNo}[1]{\pst@checknum{#1}\psk@ArrowInsideNo}% hv 20031001
+\define@key[psset]{pstricks}{ArrowInsideOffset}[0]{\pst@checknum{#1}\psk@ArrowInsideOffset}% hv 20031001
+%\psset{ArrowInsideNo=1,ArrowInsideOffset=0}
+%
+\def\arrowType@H{H}
+
+\def\resetArrowOptions{%
+ \def\pst@linetype{0}%
+ \psset[pstricks]{%
+ hooklength=3mm, hookwidth=1mm,
+ ArrowFill=true,
+ ArrowInside={}, ArrowInsidePos=0.5,
+ ArrowInsideNo=1, ArrowInsideOffset=0,
+}}
+%
+\resetArrowOptions
+%
+%% END: pstricks-arrows.tex
+\endinput