From 059cab71c68a3fbee36f60e8208d4a47d11c6b60 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 26 Aug 2021 03:02:29 +0000 Subject: CTAN sync 202108260302 --- graphics/pstricks/base/Changes | 8 +- graphics/pstricks/base/doc/PSTricks.bib | 17 + graphics/pstricks/base/doc/pst-doc.cls | 107 +- graphics/pstricks/base/doc/pst-news21.pdf | Bin 43741 -> 529359 bytes graphics/pstricks/base/doc/pst-news21.tex | 134 +- graphics/pstricks/base/dvips/pstricks.pro | 12 +- graphics/pstricks/base/generic/pstricks-arrows.tex | 572 +++ graphics/pstricks/base/generic/pstricks.tex | 258 +- graphics/pstricks/base/generic/pstricks.tex.neu | 4595 -------------------- graphics/pstricks/contrib/pst-arrow/Changes | 6 +- .../contrib/pst-arrow/doc/pst-arrow-doc.pdf | Bin 212452 -> 222065 bytes .../contrib/pst-arrow/doc/pst-arrow-doc.tex | 44 +- .../pstricks/contrib/pst-arrow/tex/pst-arrow.tex | 332 +- 13 files changed, 829 insertions(+), 5256 deletions(-) create mode 100644 graphics/pstricks/base/generic/pstricks-arrows.tex delete mode 100644 graphics/pstricks/base/generic/pstricks.tex.neu (limited to 'graphics') diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes index 598c51f0c2..b6989bc9a0 100644 --- a/graphics/pstricks/base/Changes +++ b/graphics/pstricks/base/Changes @@ -1,4 +1,4 @@ -% $Id: Changes 155 2021-08-23 17:27:13Z herbert $ +% $Id: Changes 164 2021-08-25 19:26:42Z herbert $ Changelog for @@ -25,6 +25,10 @@ pstricks.tex -------- versions like 2.47a have only changes in other files, but not in this main package. +3.05 2021-08-25 - bug fix for Penros fill style + - put tbasic arrows code into new pstricks-arrow.tex +3.04 2021-08-24 - moved complete arrow stuff into pst-arrow. Its hardcore macros + are loaded by default by pstricks.tex 3.03 2021-08-23 - LaTeX option gsfonts=false (default) now uses URW font Symbol instead of GhostScript's StandardSymL->s050000l.pfb 3.02 2021-05-31 - added arrow type T<->T, similar to TikZ @@ -316,6 +320,7 @@ vtex.con ------ pstricks-doc ----------- +2021-08-25 - updated news2021 2021-08-21 - added news2021 2015-11-11 - updated news2015 2015-07-25 - updated news2015 @@ -348,6 +353,7 @@ pstricks-doc ----------- ---- pstricks.pro +1.36 2021-08-25 - fix for function Penrose and PenroseA 1.35 2021-08-21 - fix for new version > 9.53 1.34 2021-03-30 - fix bug for intro to Ghostscript >9.52 1.33 2020-09-21 - suppress Ghostscript warning diff --git a/graphics/pstricks/base/doc/PSTricks.bib b/graphics/pstricks/base/doc/PSTricks.bib index daaa78d445..d49525facf 100644 --- a/graphics/pstricks/base/doc/PSTricks.bib +++ b/graphics/pstricks/base/doc/PSTricks.bib @@ -1,4 +1,21 @@ @STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } +@STRING{beiprogramm = {{\TeX}-Beiprogramm}} +@STRING{bretter = {Bretter, die die Welt bedeuten}} +@STRING{dtk = {DTK}} +@STRING{editorial = {Editorial}} +@STRING{fremdebuehne = {Von fremden Bühnen}} +@STRING{fundus = {Aus dem Fundus}} +@STRING{grusswort = {Grußwort}} +@STRING{hinterbuehne = {Hinter der Bühne}} +@STRING{komascript = {\KOMAScript}} +@STRING{leserbriefe = {Leserbriefe}} +@STRING{magazin = {Magazin}} +@STRING{rezensionen = {Bücher und Rezensionen}} +@STRING{schonimmer = {Was Sie schon immer über {\TeX} wissen wollten, \dots}} +@STRING{spielplan = {Spielplan}} +@STRING{theaterkasse = {Von der Theaterkasse}} +@STRING{theatertage = {{\TeX}-Theatertage}} +@STRING{tippstricks = {Tipps und Tricks}} @Book{PostScript, Author = {Kollock, Nikolai G.}, diff --git a/graphics/pstricks/base/doc/pst-doc.cls b/graphics/pstricks/base/doc/pst-doc.cls index fb5d75fb45..e54d5e9893 100644 --- a/graphics/pstricks/base/doc/pst-doc.cls +++ b/graphics/pstricks/base/doc/pst-doc.cls @@ -16,13 +16,13 @@ % \listfiles \ProvidesClass{pst-doc}[2017/04/18 v 0.20 PSTricks documentation class (hv)] -\DeclareOption*{\PassOptionsToClass{\CurrentOption,usegeometry}{scrartcl}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} \ProcessOptions\relax % \LoadClass{scrartcl} % \RequirePackage[dvipsnames,x11names,svgnames,table]{xcolor} -\RequirePackage{ifxetex} +\RequirePackage{iftex} \RequirePackage{amsmath, amssymb} \ifxetex \usepackage{unicode-math} @@ -115,7 +115,6 @@ \gdef\index@vals{#1}% \def\FancyVerbFormatLine##1{\FV@ObeyTabs{##1}\use@index@vals}} -\RequirePackage{filecontents} %\singlespace \RequirePackage{showexpl} \renewcommand*\SX@Info{}% @@ -451,64 +450,62 @@ xleftmargin=0pt,xrightmargin=0pt, \providecommand\bgTitle{} \providecommand\LenToUnit[1]{#1\@gobble} -\iffalse -\renewcommand\maketitle{% -\thispagestyle{empty}% -\begin{titlepage} -\ifpdf - \AddToShipoutPicture*{\includegraphics{pst-doc.pdf}} - \vspace*{0.3\textheight} - \parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}\\[5pt] - \parbox{15cm}{\sffamily\Large\@subtitle} +\def\settitle{% + \thispagestyle{empty}% + \begin{titlepage} + \ifpdf + \AddToShipoutPicture*{\includegraphics{pst-doc.pdf}} + \vspace*{0.3\textheight} + \parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}\\[5pt] + \parbox{15cm}{\sffamily\Large\@subtitle} - \vspace{5cm} - \parbox{10cm}{\sffamily\@date} + \vspace{5cm} + \parbox{10cm}{\sffamily\@date} - \vfill - ~\\ - \makebox[.5\textwidth]{\put(0,0){\bgImage}}\\ - ~ + \vfill + ~\\ + \makebox[.5\textwidth]{\put(0,0){\bgImage}}\\ + ~ - \vfill - \parbox[b]{19cm}{\sffamily\RaggedRight - \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\ - \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{% - \bfseries\tabular[t]{@{}l@{}}\@author\endtabular}} -\else - \psset{unit=1cm} - \begin{pspicture}(1.6in,0)(23cm,21.7cm) - \psframe[fillstyle=solid,linecolor=lightgray,fillcolor=lightgray,linestyle=solid](0,-5.75)(23,10) - \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,10)(23,10.5) - \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,21.1)(23,21.2) - \rput[lb](3,22){\Huge\sffamily\color{Orange!65!Red}\psscalebox{2}{\textbf{PSTricks}}} - \rput[lb](3,14.1){\parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}} - \rput[lb](3,12.6){\parbox{15cm}{\sffamily\Large\@subtitle}} - \rput[lb](3,7.6){\parbox{15cm}{\sffamily\@date}} - \rput[lb](3,-2.6){\parbox[b]{19cm}{\sffamily\RaggedRight + \vfill + \parbox[b]{19cm}{\sffamily\RaggedRight \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\ \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{% - \bfseries\shortstack[l]{\@author} - %\begin{tabular}[t]{@{}l@{}} \@author\end{tabular}% -}}} - \rput[C](11,4){\bgImage}% - \end{pspicture}% -\fi -\end{titlepage} -\setcounter{footnote}{0}% -\global\let\thanks\relax% -\global\let\maketitle\relax% -\global\let\@thanks\@empty% -\global\let\@author\@empty% -\global\let\@docauthor\@empty% -\global\let\@date\@empty% -\global\let\@title\@empty% -\global\let\@subtitle\@empty% -\global\let\title\relax% -\global\let\author\relax% -\global\let\date\relax% -\global\let\and\relax% + \bfseries\tabular[t]{@{}l@{}}\@author\endtabular}} + \else + \psset{unit=1cm} + \begin{pspicture}(1.6in,0)(23cm,21.7cm) + \psframe[fillstyle=solid,linecolor=lightgray,fillcolor=lightgray,linestyle=solid](0,-5.75)(23,10) + \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,10)(23,10.5) + \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,21.1)(23,21.2) + \rput[lb](3,22){\Huge\sffamily\color{Orange!65!Red}\psscalebox{2}{\textbf{PSTricks}}} + \rput[lb](3,14.1){\parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}} + \rput[lb](3,12.6){\parbox{15cm}{\sffamily\Large\@subtitle}} + \rput[lb](3,7.6){\parbox{15cm}{\sffamily\@date}} + \rput[lb](3,-2.6){\parbox[b]{19cm}{\sffamily\RaggedRight + \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\ + \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{% + \bfseries\shortstack[l]{\@author} + %\begin{tabular}[t]{@{}l@{}} \@author\end{tabular}% + }}} + \rput[C](11,4){\bgImage}% + \end{pspicture}% + \fi + \end{titlepage} + \setcounter{footnote}{0}% + \global\let\thanks\relax% + \global\let\maketitle\relax% + \global\let\@thanks\@empty% + \global\let\@author\@empty% + \global\let\@docauthor\@empty% + \global\let\@date\@empty% + \global\let\@title\@empty% + \global\let\@subtitle\@empty% + \global\let\title\relax% + \global\let\author\relax% + \global\let\date\relax% + \global\let\and\relax% } -\fi \newdimen\fullWidth \fullWidth=\linewidth diff --git a/graphics/pstricks/base/doc/pst-news21.pdf b/graphics/pstricks/base/doc/pst-news21.pdf index 89442fefa8..dc4cada65b 100644 Binary files a/graphics/pstricks/base/doc/pst-news21.pdf and b/graphics/pstricks/base/doc/pst-news21.pdf differ diff --git a/graphics/pstricks/base/doc/pst-news21.tex b/graphics/pstricks/base/doc/pst-news21.tex index 9fbe4e2f34..facad54b55 100644 --- a/graphics/pstricks/base/doc/pst-news21.tex +++ b/graphics/pstricks/base/doc/pst-news21.tex @@ -1,18 +1,13 @@ -%% $Id: pst-news21.tex 157 2021-08-23 18:21:41Z herbert $ +%% $Id: pst-news21.tex 164 2021-08-25 19:26:42Z herbert $ \documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small, - headinclude=false,footinclude=false,twoside]{scrartcl} + headinclude=false,footinclude=false,twoside]{pst-doc} + +\usepackage{libertinus} \listfiles -\usepackage[T1]{fontenc} -\usepackage{listings} -\lstset{basicstyle=\ttfamily\small} -\usepackage{libertinus} -\usepackage[scaled=0.88]{beramono} -\usepackage{babel} -\usepackage[svgnames,dvipsnames,x11names,pspdf=-dALLOWPSTRANSPARENCY]{pstricks-pdf} -\usepackage{pstricks-add} -\usepackage{showexpl} -\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}}, +%\usepackage[svgnames,dvipsnames,x11names,pspdf=-dALLOWPSTRANSPARENCY]{pstricks-pdf} +\usepackage{showexpl,pst-arrow} +\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={},extendedchars}, escapechar=?} \usepackage{biblatex} @@ -24,7 +19,7 @@ \author{Herbert Voß} \date{\today} -\maketitle +\settitle \tableofcontents @@ -44,7 +39,8 @@ Otherwise the one from URW or the system is used, which is the default. \subsection{Arrows} -There are new arrow tyoes and a new optional argument \texttt{tipcolor}: + +There are new arrow types and a new optional argument \texttt{tipcolor}: \begin{LTXexample}[width=5cm] @@ -55,12 +51,60 @@ There are new arrow tyoes and a new optional argument \texttt{tipcolor}: \end{pspicture} \end{LTXexample} + + +\LPack{pstricks} defines the following "`arrows"': + + \def\myline#1{\psline[linecolor=red,linewidth=0.5pt,arrowscale=1.5]{#1}(0,1ex)(1.3,1ex)}% + \def\mylineA#1{\psline[linecolor=red,linewidth=0.5pt,arrowscale=4.5]{#1}(0,1ex)(2,1ex)}% + \psset{arrowscale=1.5} + \begin{longtable}{@{} c @{\qquad} p{3cm} l @{}}% + Value & Example & Name \\[2pt]\hline + \Lnotation{-} & \myline{-} & None\\ + \Lnotation{<->} & \myline{<->} & Arrowheads.\\ + \Lnotation{>-<} & \myline{>-<} & Reverse arrowheads.\\ + \Lnotation{<{<}-{>}>} & \myline{<<->>} & Double arrowheads.\\ + \Lnotation{{>}>-{<}<} & \myline{>>-<<} & Double reverse arrowheads.\\ + \Lnotation{{|}-{|}} & \myline{|-|} & T-bars, flush to endpoints.\\ + \Lnotation{{|}*-{|}*} & \myline{|*-|*} & T-bars, centered on endpoints.\\ + \Lnotation{[-]} & \myline{[-]} & Square brackets.\\ + \Lnotation{]-[} & \myline{]-[} & Reversed square brackets.\\ + \Lnotation{(-)} & \myline{(-)} & Rounded brackets.\\ + \Lnotation{)-(} & \myline{)-(} & Reversed rounded brackets.\\ + \Lnotation{o-o} & \myline{o-o} & Circles, centered on endpoints.\\ + \Lnotation{*-*} & \myline{*-*} & Disks, centered on endpoints.\\ + \Lnotation{oo-oo} & \myline{oo-oo} & Circles, flush to endpoints.\\ + \Lnotation{**-**} & \myline{**-**} & Disks, flush to endpoints.\\ + \Lnotation{{|}<->{|}} & \myline{|<->|} & T-bars and arrows.\\ + \Lnotation{{|}>-<{|}} & \myline{|>-<|} & T-bars and reverse arrows.\\ + \Lnotation{h-h{}} & \myline{h-h} & left/right hook arrows.\\ + \Lnotation{H-H{}} & \myline{H-H} & left/right hook arrows.\\ + \Lnotation{v-v} & \myline{v-v} & left/right inside vee arrows.\\ + \Lnotation{V-V} & \myline{V-V} & left/right outside vee arrows.\\ + \Lnotation{f-f} & \myline{f-f} & left/right inside filled arrows.\\ + \Lnotation{F-F} & \myline{F-F} & left/right outside filled arrows.\\ + \Lnotation{t-t} & \myline{t-t} & left/right inside slash arrows.\\[5pt] + \Lnotation{T-T} & \myline{T-T} & left/right outside slash arrows.\\ +% + \Lnotation{} & \mylineA{} & curved arrows.\\ + \Lnotation{D>} & \mylineA{D>} & curved doubled arrows.\\ + \Lnotation{D>--} & \myline{} & curved lines.\\ +% \Lnotation{>T-T<} & \mylineA{>T-T<} & \TikZ\ like arrows.\\ + \hline + \end{longtable} + + + + %\@namedef{psas@T>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowT }% hv 20210531 %\@namedef{psas@>}(-1,-2)(0,-4)(1,-2) +\endpspicture + + +\begin{lstlisting} +\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5) +\rput(0,0){\parbox{4.5cm}{% + \psclip{\psccurve[linestyle=none,fillstyle=penrose,psscale=.2](-3,-2) + (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)} + ``One of the best new plays I have seen all year: cool, poetic, + ironic \ldots'' proclaimed \emph{The Guardian} upon the London + premiere of this extraordinary play about a Czech director and + his actress wife, confronting exile in America. + \endpsclip}}% + \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2) +\endpspicture +\end{lstlisting} + + +\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5) +\rput(0,0){\parbox{4.5cm}{% + \psclip{\psccurve[linestyle=none,fillstyle=penroseA,psscale=.2](-3,-2) + (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)}\color{white} + ``One of the best new plays I have seen all year: cool, poetic, + ironic \ldots'' proclaimed \emph{The Guardian} upon the London + premiere of this extraordinary play about a Czech director and + his actress wife, confronting exile in America. + \endpsclip}}% + \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2) +\endpspicture + +\begin{lstlisting} +\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5) +\rput(0,0){\parbox{4.5cm}{% + \psclip{\psccurve[linestyle=none,fillstyle=penrose,psscale=.2](-3,-2) + (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)}\color{white} + ``One of the best new plays I have seen all year: cool, poetic, + ironic \ldots'' proclaimed \emph{The Guardian} upon the London + premiere of this extraordinary play about a Czech director and + his actress wife, confronting exile in America. + \endpsclip}}% + \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2) +\endpspicture\end{lstlisting} + + + \nocite{*} \printbibliography diff --git a/graphics/pstricks/base/dvips/pstricks.pro b/graphics/pstricks/base/dvips/pstricks.pro index c351841e8c..26e64b4e33 100644 --- a/graphics/pstricks/base/dvips/pstricks.pro +++ b/graphics/pstricks/base/dvips/pstricks.pro @@ -1,7 +1,7 @@ -% $Id: pstricks.pro 152 2021-08-19 11:24:26Z herbert $ +% $Id: pstricks.pro 164 2021-08-25 19:26:42Z herbert $ % %% PostScript prologue for pstricks.tex. -%% Version 1.35, 2021/05/21 +%% Version 1.36, 2021/08/25 %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives @@ -306,6 +306,7 @@ tx@Dict begin } def % /PenroseFill {% on stack: scaling factor + 20 dict begin /Scale ED % 1 exch div round /penroseFactor ED % a 0 dtransform round exch round exch @@ -318,20 +319,22 @@ tx@Dict begin % a Div cvi /x1 ED /y2 y2 y1 sub def clip newpath -gsave + gsave 220 150 translate Scale dup scale systemdict /setstrokeadjust known { true setstrokeadjust } if /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} - { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall + { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 mul j l + S rmoveto}F i L j L stroke }F}F}F}F grestore % pop pop + end % userdict } def % /PenroseFillA {% on stack: scaling factor, border color, kite color, dart color + 30 dict begin /Scale ED Scale dup scale /border_colour ED @@ -367,6 +370,7 @@ gsave dup f exch neg exp dup scale 5 {kite 72 rotate } repeat stroke grestore + end % userdict } def % % 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 +%% +%% 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>,,|<*->|*,|<->|,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@}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowT }% hv 20210531 +\@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 diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex index 8b1edd58e0..10cd89eba5 100644 --- a/graphics/pstricks/base/generic/pstricks.tex +++ b/graphics/pstricks/base/generic/pstricks.tex @@ -18,10 +18,11 @@ \csname PSTricksLoaded\endcsname \let\PSTricksLoaded\endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% !! loading additional TeX packages see line 38,39 and 72ff -%% !! loading config file pstricks.con line 439 -%% !! loading pro files line 452ff -%% !! fileversion and date see line 83 +%% !! loading additional TeX packages see line 43,44 and 77ff +%% !! loading config file pstricks.con line 445 +%% !! loading pro files line 458ff +%% !! fileversion and date see line 84f +%% !! loaded arrow stuff line 1482 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \edef\PstAtCode{\the\catcode`\@} @@ -80,8 +81,8 @@ \fi \let\pgfforeach\foreach % -\def\fileversion{3.03} -\def\filedate{2021/08/23} +\def\fileversion{3.05} +\def\filedate{2021/08/25} \pst@addfams{pstricks} % %\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{} @@ -1103,6 +1104,8 @@ \psset[pstricks]{doublesep=1.25\pslinewidth} \define@key[psset]{pstricks}{doublecolor}[white]{\pst@getcolor{#1}\psdoublecolor} \psset[pstricks]{doublecolor=white} + +\let\pst@setrepeatarrowsflag\relax % \define@boolkey[psset]{pstricks}[ps]{shadow}[true]{\pst@setrepeatarrowsflag} \psset[pstricks]{shadow=false} @@ -1113,12 +1116,6 @@ \define@key[psset]{pstricks}{shadowcolor}[darkgrey]{\pst@getcolor{#1}\psshadowcolor} \psset[pstricks]{shadowcolor=darkgray} % -\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}} -% \def\psls@none{} \def\psls@solid{ \psk@linejoin\space setlinejoin \psk@linecap\space setlinecap stroke } \def\psls@coloreddashed{ \psls@solid grestore gsave \pst@usecolor\psdashcolor \tx@setlinejoin \psls@dashed } @@ -1482,192 +1479,9 @@ % %--------------------------- A R R O W S --------------------------- -% -\def\psk@arrowA{} -\def\psk@arrowB{} -\def\pst@arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,,D>-D>,} % hv --1.16 -\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|} -\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@}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowT }% hv 20210531 -\@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} -% +\input pstricks-arrows + %% ---------------------- end arrow part ---------------------- % \def\tx@SD{ \tx@setTransparency SD } @@ -1718,20 +1532,6 @@ \@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}% \ignorespaces} % -\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\begin@ClosedObj{% \leavevmode \pst@killglue @@ -1913,42 +1713,6 @@ grestore }} % -\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 -}} -% \def\pst@OpenShowPoints{% \addto@pscode{% gsave diff --git a/graphics/pstricks/base/generic/pstricks.tex.neu b/graphics/pstricks/base/generic/pstricks.tex.neu deleted file mode 100644 index d28b2f529a..0000000000 --- a/graphics/pstricks/base/generic/pstricks.tex.neu +++ /dev/null @@ -1,4595 +0,0 @@ -%% pstricks.tex -%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt -%% COPYRIGHT 2000-2003 by Denis Girou. -%% Copyright 2004-2019 Herbert Voss -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2003/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% This Current Maintainer of this work is Herbert Voss -% -\csname PSTricksLoaded\endcsname -\let\PSTricksLoaded\endinput -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% !! loading additional TeX packages see line 38,39 and 72ff -%% !! loading config file pstricks.con line 439 -%% !! loading pro files line 452ff -%% !! fileversion and date see line 83 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -\edef\PstAtCode{\the\catcode`\@} -\catcode`\@=11\relax -% -%\if@check@engine - \ifx\c@lor@to@ps\@undefined - \def\c@lor@to@ps{\PSTricks_Not_Configured_For_This_Format}% message for a pdflatex run - \fi -%\fi -\expandafter\ifx\csname @latexerr\endcsname\relax % do we have TeX? then @latexerr isn't defined - \input pstricks-tex.def -\fi - -\let\ifpstUndefined\@ifundefined - -%\catcode`\@=\PstAtCode\relax -\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi -\ifx\PSTFPloaded\endinput\else\input pst-fp.tex\fi -% -%\catcode`\@=11\relax -\def\XKV@ch@ckch@ice#1#2#3{% bugfix for xkeyval - \def\XKV@tempa{#1}% - \ifx\XKV@tempa\@nnil\let\XKV@tempa\@empty\else - \def\XKV@tempa{\def#1{#2}}% - \fi -% \in@{,#2,}{,#3,}% -\begingroup\edef\x{\endgroup\noexpand\in@{,#2,}}\x{,#3,}% -%\expandafter\in@\expandafter{\expandafter,#2,}{,#3,}% --- hv 2012-04-27 - \ifin@ - \ifXKV@pl - \XKV@addtomacro@n\XKV@tempa\@firstoftwo - \else - \XKV@addtomacro@n\XKV@tempa\@firstofone - \fi - \else - \ifXKV@pl - \XKV@addtomacro@n\XKV@tempa\@secondoftwo - \else - \XKV@toks{#2}% - \XKV@err{value `\the\XKV@toks' is not allowed}% - \XKV@addtomacro@n\XKV@tempa\@gobble - \fi - \fi - \XKV@tempa -} -% -\def\ProvidesPackageRCS#1{\typeout{Loading #1}}% -%\@ifnextchar[\ProvidesPackageRCS@i{\ProvidesPackageRCS@i[] }}%$ -%\def\ProvidesPackageRCS@i[#1]#2{} - -\ifx\pgfkeysloaded\relax\else - \input pgfutil-common.tex - \input pgfkeys.code.tex - \input pgffor.code.tex -\fi -\let\pgfforeach\foreach -% -\def\fileversion{3.0} -\def\filedate{2020/04/01} -\pst@addfams{pstricks} -% -%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{} -%\psset{useURWfonts} -% -% stolen from latex.ltx to make it TeX compatible -\newcount\psLoopIndex -\long\def\@fornoop#1\@@#2#3{} -\long\def\@for#1:=#2\do#3{% - \pst@cntm=0 - \expandafter\def\expandafter\@fortmp\expandafter{#2}% - \ifx\@fortmp\@empty \else - \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi} -% -\long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx#4\@nnil \else - #5\def#4{#2}\ifx#4\@nnil \else\global\advance\psLoopIndex by \@ne\relax - #5\@iforloop #3\@@#4{#5}\fi\fi} -% -\long\def\@iforloop#1,#2\@@#3#4{\global\advance\psLoopIndex by \@ne\relax% - \def#3{#1}\ifx #3\@nnil - \expandafter\@fornoop \else - #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}} -% -\long\def\psforeach#1#2#3{% - \global\psLoopIndex=0\relax - \if$\ifnum9<1#2$\else\fi\psforeach@ii{#1}{#2}{#3}% - \else \expandafter\psforeach@i#2,..,,..,\@nil{#1}{#3}\fi} -\long\def\psforeach@i#1,#2,..,#3,..,#4\@nil#5#6{% - \ifx\relax#3\relax\psforeach@ii{#5}{#1,#2}{#6}% - \else\psforeach@iii{#5}{#1}{#2}{#3}{#6}\fi} -\long\def\psforeach@ii#1#2#3{% - \begingroup - \edef\reserved@a{#2}% - \@for#1:=\reserved@a\do{#3}% - \endgroup} -\long\def\psforeach@iii#1#2#3#4#5{% - \pstFPsub\pst@tempA{#3}{#2}% - \pst@dimm=\pst@tempA pt% - \pstFPstripZeros{\pst@tempA}\pst@tempB% - \def\pst@tempA{#2}% - \def\pst@tempa{#2}% - \pst@dimn=#4pt% - \loop - \pst@dimm=\pst@tempA pt - \ifdim\pst@dimm<\pst@dimn - \pstFPadd\pst@tempA{\pst@tempA}{\pst@tempB}% - \pstFPstripZeros{\pst@tempA}\pst@tempA% - \edef\pst@tempa{\pst@tempa,\pst@tempA}% - \repeat% - \psforeach@ii{#1}{\pst@tempa}{#5}} -% -\long\def\psForeach#1#2#3{% without grouping the contents - \global\psLoopIndex=0\relax% - \if$\ifnum9<1#2$\else\fi\psforeach@ii{#1}{#2}{#3}% - \else \expandafter\psForeach@i#2,..,,..,\@nil{#1}{#3}\fi} -\long\def\psForeach@i#1,#2,..,#3,..,#4\@nil#5#6{% - \ifx\relax#3\relax\psForeach@ii{#5}{#1,#2}{#6}% - \else\psForeach@iii{#5}{#1}{#2}{#3}{#6}\fi% -} -\long\def\psForeach@ii#1#2#3{% - \edef\reserved@a{#2}% - \@for#1:=\reserved@a\do{#3}} -\long\def\psForeach@iii#1#2#3#4#5{% - \pstFPsub\pst@tempA{#3}{#2}% - \pst@dimm=\pst@tempA pt% - \pstFPstripZeros{\pst@tempA}\pst@tempB% - \def\pst@tempA{#2}% - \def\pst@tempa{#2}% - \pst@dimn=#4pt% - \loop% - \pst@dimm=\pst@tempA pt% - \ifdim\pst@dimm<\pst@dimn% - \pstFPadd\pst@tempA{\pst@tempA}{\pst@tempB}% - \pstFPstripZeros{\pst@tempA}\pst@tempA - \edef\pst@tempa{\pst@tempa,\pst@tempA}% - \repeat% - \psForeach@ii{#1}{\pst@tempa}{#5} -} - -\def\psrecur@i#1{\csname ps@rn#1\psrecur@i} -\long\def\ps@rnm#1{\endcsname{#1}#1\global\advance\psLoopIndex by \@ne} -\long\def\ps@rn#1{} -\def\psLoop#1{\global\psLoopIndex=0\relax% - \csname ps@rn\expandafter\psrecur@i - \romannumeral\number\number#1 000\endcsname\endcsname} - -% -% hv 2007-10-16 to fix the bug in pst-node with \\[name=...] -% hv fix bug with empty fnodes in psmatrix -\def\ps@ifnextchar#1#2#3{% - \let\reserved@d= #1% - \def\reserved@a{#2}\def\reserved@b{#3}% - \futurelet\@let@token\ps@ifnch} -\def\ps@ifnch{% - \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi - \reserved@b -} -\def\pshskip#1{\vrule \@width\z@\nobreak \hskip #1\hskip \z@skip} -% end bugfix -\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz,hv)} -\def\@pstrickserr#1#2{% - \begingroup - \newlinechar`\^^J - \edef\pst@tempc{#2}% - \expandafter\errhelp\expandafter{\pst@tempc}% - \typeout{% - PSTricks error. \space See User's Guide for further information.^^J - \@spaces\@spaces\@spaces\@spaces - Type \space H \space for immediate help.}% - \errmessage{#1}% - \endgroup} -\def\@ehpa{% - Your command was ignored. Default value substituted.^^J - Type \space \space to procede.} -\def\@ehpb{% - Your command was ignored. Will recover best I can.^^J - Type \space \space to procede.} -\def\@ehpc{% - You better fix this before proceding.^^J - See the PSTricks User's Guide or ask your system administrator for help.^^J - Type \space X \space to quit.} -\def\@ehpd{% - Not allowed optional argument.^^J - Will proceed with the default setting.^^J - Type \space X \space to quit.} -\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb} -\newdimen\pst@dima -\newdimen\pst@dimb -\newdimen\pst@dimc -\newdimen\pst@dimd -\newdimen\pst@dimg -\newdimen\pst@dimh -\newdimen\pst@dimm -\newdimen\pst@dimn -\newdimen\pst@dimo -\newdimen\pst@dimp -\chardef\f@ur=4 -% -\newbox\pst@hbox -\newbox\pst@ibox -\newbox\pst@boxg -\newcount\pst@cnta -\newcount\pst@cntb -\newcount\pst@cntc -\newcount\pst@cntd -\newcount\pst@cntg -\newcount\pst@cnth -\newcount\pst@cntm -\newcount\pst@cntn -\newcount\pst@cnto -\newcount\pst@cntp -\newcount\@zero\@zero=0\relax -% -\newif\ifPst@SpecialLength -\Pst@SpecialLengthfalse -% -\newif\if@pst -\newtoks\pst@toks -\newif\if@star -\def\pst@ifstar#1{% - \@ifnextchar*{\@startrue\def\ps@next*{#1}\ps@next}{\@starfalse#1}} -% -\def\pst@expandafter#1#2{% - \def\ps@next{#1}% - \edef\@tempa{#2}% - \ifx\@tempa\@empty - \@pstrickserr{Unexpected empty argument!}\@ehpb - \def\@tempa{\@empty}% - \fi - \expandafter\ps@next\@tempa} -% -\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}} -\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1} -{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}} -% -\def\pst@getdimdim#1 #2 #3\@nil{% - \def\pst@tempA{#2}% - \ifx\pst@tempA\@empty - \pssetlength\pst@dimn{#1}% - \pst@dimm=\z@% - \else% - \pssetlength\pst@dimm{#1}% - \pssetlength\pst@dimn{#2}% - \fi% -} -\def\pst@getxdimdim#1 #2 #3\@nil{% - \def\pst@tempA{#2}% - \ifx\pst@tempA\@empty - \pssetxlength\pst@dimn{#1}% - \pst@dimm=\z@ - \else% - \pssetxlength\pst@dimm{#1}% - \pssetxlength\pst@dimn{#2}% - \fi% -} -\def\pst@getydimdim#1 #2 #3\@nil{% - \def\pst@tempA{#2}% - \ifx\pst@tempA\@empty - \pssetylength\pst@dimn{#1}% - \pst@dimm=\z@% - \else - \pssetylength\pst@dimm{#1}% - \pssetylength\pst@dimn{#2}% - \fi} -% -% A modulo macro for integer values -% \pst@mod{34}{6}\value ==> \value is 4 -% -\def\pst@mod#1#2#3{% - \begingroup% - \pst@cntm=#1\pst@cntn=#2\relax% - \pst@cnto=\pst@cntm% - \divide\pst@cntm by \pst@cntn% - \multiply\pst@cntn by \pst@cntm% - \advance\pst@cnto by -\pst@cntn% - \edef\value{\endgroup\def\noexpand#3{\number\pst@cnto}}\value% -} -\def\pst@max#1#2#3{% - \begingroup% - \pst@cntm=#1\pst@cntn=#2\relax% - \ifnum\pst@cntm<\pst@cntn\pst@cntm=\pst@cntn\fi - \global#3=\the\pst@cntm% - \endgroup% -} -\def\pst@maxdim#1#2#3{% - \begingroup% - \pst@dimm=#1\pst@dimn=#2\relax% - \ifdim\pst@dimm<\pst@dimn\pst@dimm=\pst@dimn\fi - \global#3=\the\pst@dimm% - \endgroup% -} -\def\pst@mindim#1#2#3{% - \begingroup% - \pst@dimm=#1\pst@dimn=#2\relax% - \ifdim\pst@dimm>\pst@dimn\pst@dimm=\pst@dimn\fi - \global#3=\the\pst@dimm% - \endgroup% -} -\def\pst@abs#1#2{% - \begingroup% - \pst@cntm=#1\relax% - \ifnum\pst@cntm<\z@\pst@cntm=-\pst@cntm\fi% - \global#2=\the\pst@cntm - \endgroup% -} -\def\pst@absdim#1#2{% - \begingroup% - \pst@dimm=#1\relax% - \ifdim\pst@dimm<\z@\pst@dimm=-\pst@dimm\fi% - \global#2=\the\pst@dimm% - \endgroup% -} -% -\def\pst@pyth#1#2#3{% from pst-3d - \begingroup% - \pst@dima=#1\relax% - \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi% dima=abs(x) - \pst@dimb=#2\relax% - \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi% dimb=abs(y) - \advance\pst@dimb\pst@dima % dimb=s=abs(x)+abs(y) - \ifnum\pst@dimb=\z@ - \global\pst@dimg=\z@ % dimg=z=sqrt(x^2+y^2) - \else - \multiply\pst@dima 8\relax % dima= 8abs(x) - \pst@@divide\pst@dima\pst@dimb % dimg =8t=8abs(x)/s - \advance\pst@dimg -4pt % dimg = 4tau = (8t-4) - \multiply\pst@dimg 2 - \pst@dimtonum\pst@dimg\pst@tempa - \pst@dima=\pst@tempa\pst@dimg % dima=(8tau)^2 - \advance\pst@dima 64pt % dima=u=[64+(8tau)^2]/2 - \divide\pst@dima 2\relax % =(8f)^2 - \pst@dimd=7pt % initial guess at sqrt(u) - \pst@@pyth\pst@@pyth\pst@@pyth % dimd=sqrt(u) - \pst@dimtonum\pst@dimd\pst@tempa - \pst@dimg=\pst@tempa\pst@dimb - \global\divide\pst@dimg 8 % dimg=z=(8f)*s/8 - \fi - \endgroup - #3=\pst@dimg} -% -\def\pst@@pyth{% dimd = g <-- (g + u/g)/2 - \pst@@divide\pst@dima\pst@dimd - \advance\pst@dimd\pst@dimg - \divide\pst@dimd 2\relax} -% -% ----- the old pst@pyth begin ----- did not use dimens -\def\pst@Pyth#1#2#3{\ifdim#1>#2\pst@@Pyth#1#2#3\else\pst@@Pyth#2#1#3\fi} -\def\pst@@Pyth#1#2#3{% - \ifdim4#1>9#2\relax - #3=#1\advance#3 .2122#2% - \else - #3=.8384#1\advance#3 .5758#2% - \fi% -} -% ----- the old pst@pyth end ----- -% -%------ new version \pst@divide ̣-------- by Michael Sharpe -\def\pst@divide#1#2#3{% - \pst@@divide{#1}{#2}% - \advance\pst@dimg \pst@cnta pt% - \pst@dimtonum\pst@dimg{#3}% -} -\def\pst@@divide#1#2{% - \pst@dimg=#1\relax% - \pst@dimh=#2\relax% - \pst@cnth=\pst@dimh% - \pst@cntg=\pst@dimg% - \pst@cnta=\pst@cntg% - \divide\pst@cnta\pst@cnth% - \advance\pst@dimg -\pst@cnta\pst@dimh% - \pst@cntm=67108863\relax %2^26 -1 - \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide% - \divide\pst@dimg\pst@cnth% -}% -\def\pst@@@divide{% - \ifnum% - \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cntm% - \multiply\pst@dimg\sixt@@n% - \else% - \divide\pst@cnth\sixt@@n% - \fi% -}% -% -%-------------- the old version ---------- -\iffalse -\def\pst@divide#1#2#3{% - \pst@@divide{#1}{#2}% - \pst@dimtonum\pst@dimg{#3}% -} -\def\pst@@divide#1#2{% - \pst@dimg=#1\relax - \pst@dimh=#2\relax - \pst@cntg=\pst@dimh - \pst@cnth=67108863 - \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide - \divide\pst@dimg\pst@cntg% -} -\def\pst@@@divide{% - \ifnum - \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth - \multiply\pst@dimg\sixt@@n - \else - \divide\pst@cntg\sixt@@n - \fi% -} -\fi -%-------------- end old vesrion --------------- -% -\def\pst@configerr#1{\@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc} -% -\def\pstVerb#1{\pst@configerr\pstVerb} -\def\pstverb#1{\pst@configerr\pstverb} -\def\pstverbscale{\pst@configerr\pstverbscale} -\def\pstrotate{\pst@configerr\pstrotate} -\def\pstheader#1{\pst@configerr\pstheader} -\def\pstdriver{\pst@configerr\pstdriver} -\@ifundefined{pstcustomize}% - {\def\pstcustomize{\endinput\let\pstcustomize\relax}}{} -% -\input pstricks.con % local config file -% -\newif\ifPSTricks -\PSTrickstrue -\def\PSTricksOff{% - \def\pstheader##1{}% - \def\pstverb##1{}% - \def\pstVerb##1{}% - \PSTricksfalse% -} -\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{} -\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{} -% -\pstheader{pstricks.pro} -%\pstheader{pstricks-fonts.pro} -\pstheader{pst-algparser.pro} -\pstheader{pst-tools.pro} -% -\def\pst@dict{tx@Dict begin } -\def\pst@theheaders{pstricks.pro, pst-algparser.pro} -\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}} -\def\tx@Atan{Atan } -\def\tx@Div{Div } -\def\tx@NET{NET } -\def\tx@Pyth{Pyth } -\def\tx@PtoC{PtoC } -\def\tx@PathLength@{PathLength@ } -\def\tx@PathLength{PathLength } -\pst@dimg=\pstunit\relax -\ifdim\pst@dimg=1bp -\def\pst@stp{.996264 dup scale} -\else -\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale} -\fi -\def\tx@STP{STP } -\def\tx@STV{STV } -% -%--------------------------------------- PS stuff --------------------------------- -% on stack x y -\pst@def{UserCoor}< \pst@number\psyunit div exch \pst@number\psxunit div exch > -\pst@def{ScreenCoor}< \pst@number\psyunit mul exch \pst@number\psxunit mul exch > -%--------------------------------------- PS stuff end ----------------------------- -% -\def\pst@number#1{\pst@@dimtonum#1\space} -% -%-----------------------% hv 20100413 -\def\pst@strip@dot#1{\expandafter\pst@strip@dot@i#1..\@nil} -\def\pst@strip@dot@i#1.#2.#3\@nil{% - \ifnum1#2>10\relax #1.#2\else#1\fi} -%-----------------------% hv 20100413 -\def\pst@checknum#1#2{% - \edef\ps@next{#1}% - \ifx\ps@next\@empty - \let\pst@num\z@ - \else - \expandafter\pst@@checknum\ps@next..\@nil - \fi - \ifcase\pst@num\relax - \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa - \def#2{0 }% - \or% 1 - \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.% - \expandafter\@gobble\the\pst@cnth\space}% - \or% 2 - \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.% - \expandafter\@gobble\the\pst@cnth\space}% - \or% 3 - \edef#2{\pst@tempA\space}% - \fi} -\def\pst@@checknum{% - \@ifnextchar-% - {\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}% - {\@ifnextchar !% - {\def\pst@num{3}\pst@@@@@checknum} - {\let\pst@num\@ne\pst@@@checknum}}% -} -\def\pst@@@checknum#1.#2.#3\@nil{% -\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil% -\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil} -\def\pst@@@@checknum#1\relax\@nil{\ifx\@nil#1\@nil\else\let\pst@num\z@\fi} -% -\def\pst@@@@@checknum#1#2.#3\@nil{\def\pst@tempA{#2}}% PostScript Notation with ! -% -\def\pst@getnumii#1 #2 #3\@nil{% - \pst@checknum{#1}\pst@tempg% - \ifx\relax#2\relax\let\pst@temph\pst@tempg\else\pst@checknum{#2}\pst@temph\fi} -\def\pst@getnumiii#1 #2 #3 #4\@nil{% -\pst@checknum{#1}\pst@tempg% -\pst@checknum{#2}\pst@temph% -\pst@checknum{#3}\pst@tempi} -\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{% -\pst@checknum{#1}\pst@tempg% -\pst@checknum{#2}\pst@temph% -\pst@checknum{#3}\pst@tempi% -\pst@checknum{#4}\pst@tempj} -% -\def\pst@getdimnum#1 #2 #3\@nil{% - \pssetlength\pst@dimg{#1}% - \pst@checknum{#2}\pst@tempg% -} -\def\pst@getscale#1#2{% read and check a scale input x [y] - \edef\pst@tempg{#1}% - \ifx\pst@tempg\@none - \def#2{}% - \else - \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil - \ifdim\pst@tempg\p@=\z@ - \@pstrickserr{Bad scaling argument `#1'}\@ehpa - \def#2{}% - \else - \ifdim\pst@temph\p@=\z@ - \@pstrickserr{Bad scaling argument `#1'}\@ehpa - \def#2{}% - \else - \edef#2{\pst@tempg\space \pst@temph\space scale }% - \fi - \fi - \fi% -} -\def\pst@getint#1#2{% read and check an integer - \pst@cntg=#1\relax - \edef#2{\the\pst@cntg\space}% -} -\begingroup -\catcode`\{=12 -\catcode`\}=12 -\catcode`\[=1 -\catcode`\]=2 -\gdef\pslbrace[{ ] -\gdef\psrbrace[} ] -\endgroup -% -\pstVerb{ - /pssetRGBcolor /setrgbcolor load def - /pssetCMYKcolor /setcmykcolor load def - /pssetGraycolor /setgray load def -} -\def\@newcolor#1#2{% - \expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}% - %\expandafter\edef\csname color@#1\endcsname{#2}% - \expandafter\edef\csname\string\color@#1\endcsname{#2}% hv 1.14 2005-12-17 - \ignorespaces} -% -\def\pst@color#1{\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}% -\def\pst@endcolor{\pstVerb{\pst@currentcolor}} -\def\pst@currentcolor{0 setgray} -\def\altcolormode{% -\def\pst@color##1{% - \pstVerb{gsave ##1}\aftergroup\pst@endcolor}% -\def\pst@endcolor{\pstVerb{\pst@grestore}}} -\def\pssetMonochrome{% - \pstVerb{ - /setrgbcolor { add add 0 gt {0}{1} ifelse setgray } def - /setcmykcolor{ 4 dict begin - /k ED /y ED /m ED /c ED - 1 1 k sub c mul k add sub 0.29 mul - 1 1 k sub m mul k add sub 0.587 mul add - 1 1 k sub y mul k add sub 0.114 mul add - end 0 gt {0}{1} ifelse setgray } def }} -\def\pssetGrayscale{% - \pstVerb{ - /setrgbcolor { 0.07 mul exch 0.71 mul add exch 0.21 mul add setgray } def - /setcmykcolor{ 4 dict begin - /k ED /y ED /m ED /c ED - 1 1 k sub c mul k add sub 0.29 mul - 1 1 k sub m mul k add sub 0.587 mul add - 1 1 k sub y mul k add sub 0.114 mul add - end setgray } def }} -\def\psresetColor{\pstVerb{ - /setrgbcolor tx@Dict begin /pssetRGBcolor load end def - /setcmykcolor tx@Dict begin /pssetCMYKcolor load end def }} - -\def\pst@grestore{ - currentpoint - matrix currentmatrix - currentfont - grestore - setfont - setmatrix - moveto -} -%\def\pst@usecolor#1{\csname color@#1\endcsname\space}% hv 1.14 2005--12-17 -\def\pst@usecolor#1{\csname\string\color@#1\endcsname\space} -% -\def\newgray#1#2{% - \pst@checknum{#2}\pst@tempg - \@newcolor{#1}{\pst@tempg setgray}}% -\def\newrgbcolor#1#2{% - \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil - \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}} -\def\newhsbcolor#1#2{% - \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil - \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}} -\def\newcmykcolor#1#2{% - \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil - \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}} -\newgray{black}{0} -\newgray{darkgray}{.25} -\newgray{gray}{.5} -\newgray{lightgray}{.75} -\newgray{white}{1} -\newrgbcolor{red}{1 0 0} -\newrgbcolor{green}{0 1 0} -\newrgbcolor{blue}{0 0 1} -\newrgbcolor{yellow}{1 1 0} -\newrgbcolor{cyan}{0 1 1} -\newrgbcolor{magenta}{1 0 1} - -\@ifundefined{xglobal}% do we have xcolor loaded? - {\@newcolor{randomgray}{tx@Dict begin Rand setgray end}% - \@newcolor{randomrgb}{tx@Dict begin Rand Rand Rand setrgbcolor end}% - \@newcolor{randomcmyk}{tx@Dict begin Rand Rand Rand Rand setcmykcolor end}% - \@newcolor{randomhsb}{tx@Dict begin Rand Rand Rand sethsbcolor end}% - }{% - \definecolor[ps]{randomgray}{gray}{tx@Dict begin Rand end}% - \definecolor[ps]{randomrgb}{rgb}{tx@Dict begin Rand Rand Rand end}% - \definecolor[ps]{randomcmyk}{cmyk}{tx@Dict begin Rand Rand Rand Rand end}% - \definecolor[ps]{randomhsb}{hsb}{tx@Dict begin Rand Rand Rand end}% - } -% -\define@boolkey[psset]{pstricks}[Pst@]{draft}[true]{} -\define@key[psset]{pstricks}{bgcolor}{\def\pst@bgcolor{#1}}% background for pspicture -\psset[pstricks]{bgcolor={},draft=false}% \pst@bgcolor is \@empty - -\define@key[psset]{pstricks}{style}{% - \@ifundefined{pscs@#1}% - {\@pstrickserr{Custom style `#1' undefined}\@ehpa}% - {\@nameuse{pscs@#1}}% -} -\def\newpsstyle{\@ifnextchar[\newpsstyle@ii{\newpsstyle@ii[]}}%% hv 2016-12-23 -% -%\def\newpsstyle@i#1#2{\@namedef{pscs@#1}{% -% \def\pst@tempA{#2}% -% \ifx\pst@tempA\@empty\else\psset{#2}\fi}} -% -\def\newpsstyle@ii[#1]#2#3{% - \@namedef{pscs@#2}{\if$#1$\psset{#3}\else\psset[#1]{#3}\fi}}%% end -% -\def\addto@psstyle#1#2{% - \pst@toks=\expandafter{#1#2}% - \edef#1{\the\pst@toks}} -\def\addtopsstyle#1#2{% - \def\pst@tempA{#2}% - \ifx\pst@tempA\@empty\else - \@ifundefined{pscs@#1}% - {\newpsstyle{#1}{#2}}% - {\expandafter\addto@psstyle\csname pscs@#1\endcsname{\psset{#2}}}% - \fi\ignorespaces} -%------------ hv 1.16 end ------------------- -% -\def\@none{none} -\def\pst@getcolor#1#2{% -% \@ifundefined{color@#1}% hv 1.14 2005-12-17 - \@ifundefined{\string\color@#1}% - {\@pstrickserr{Color `#1' not defined}\@eha}% - {\edef#2{#1}}% -} -\newdimen\psunit \psunit 1cm -\newdimen\psxunit \psxunit 1cm -\newdimen\psyunit \psyunit 1cm -\let\psrunit\psunit -% -\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces} -% -\def\pssetlength#1#2{% - \let\@psunit\psunit - \afterassignment\pstunit@off - #1 #2\@psunit% -} -\def\psaddtolength#1#2{% - \let\@psunit\psunit - \afterassignment\pstunit@off - \advance#1 #2\@psunit% -} -\def\pssetxlength#1#2{% - \let\@psunit\psxunit -% \ifpst@useCalc -% \edef\@@temp{\pscalculate{#2}}% -% \afterassignment\pstunit@off -% #1 \@@temp\@psunit -% \else - \afterassignment\pstunit@off - #1 #2\@psunit -% \fi -} -\def\pssetylength#1#2{% - \let\@psunit\psyunit -% \ifpst@useCalc -% \edef\@@temp{\pscalculate{#2}}% -% \afterassignment\pstunit@off -% #1 \@@temp\@psunit -% \else - \afterassignment\pstunit@off - #1 #2\@psunit -% \fi -} -\define@key[psset]{pstricks}{unit}[1cm]{% - \pssetlength\psunit{#1}% - \psxunit=\psunit% - \psyunit=\psunit% -} -\define@key[psset]{pstricks}{runit}[1cm]{\pssetlength\psrunit{#1}} -\define@key[psset]{pstricks}{xunit}[1cm]{\pssetxlength\psxunit{#1}} -\define@key[psset]{pstricks}{yunit}[1cm]{\pssetylength\psyunit{#1}} -% -\define@key[psset]{pstricks}{PstDebug}[0]{\pst@getint{#1}\Pst@Debug}% hv 2004-06-22 -\psset[pstricks]{PstDebug=0} -\def\psDEBUG{\@ifnextchar[\psDEBUG@i{\psDEBUG@i[PSTricks]}}% -\def\psDEBUG@i[#1]#2{\ifnum\Pst@Debug>0 \expandafter\typeout{<#1>: #2}\fi}% -% -\def\pst@getlength#1#2{% - \pssetlength\pst@dimg{#1}% - \edef#2{\pst@number\pst@dimg}% -} -\def\pst@@getlength#1#2{% - \pssetlength\pst@dimg{#1}% - \edef#2{\number\pst@dimg sp}% -} -\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor} -\def\pst@coor{0 0 } -% -\def\pst@getcoors#1#2{% - \def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}% - \def\pst@coors{}% - \pst@@getcoors -} -\def\pst@@getcoors(#1){% - \pst@@getcoor{#1}% - \edef\pst@coors{\pst@coor\pst@coors}% - \@ifnextchar({\pst@@getcoors}{\pst@aftercoors}% -} -% -\newcount\pst@C@@rType% 0: default cartesian coordinates and angles -% -\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle} -\def\pst@angle{0 } -% -\def\cartesian@coor#1,#2,#3\@nil{% - \pssetxlength\pst@dimg{#1}% - \pssetylength\pst@dimh{#2}% - \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}% -} -\def\NormalCoor{% - \def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}% - \def\pstCheckCoorType##1{\global\pst@C@@rType=0}% - \Pst@SpecialLengthfalse - \def\pssetlength##1##2{% - \let\@psunit\psunit - \afterassignment\pstunit@off - ##1 ##2\@psunit% - }% - \def\pst@@getangle##1{% - \pst@checknum{##1}\pst@angle% - \edef\pst@angle{\pst@angle \pst@angleunit}% - }% - \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}% -} -%\NormalCoor% set to normal read of coors, angles and lengths -% -\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}} -\def\@degrees[#1]{% - \pst@checknum{#1}\pst@tempg - \edef\pst@angleunit{360 \pst@tempg div mul }% - \pstVerb{tx@Dict begin startGlobal /pst@angleunit {\pst@angleunit} def endGlobal end}% - \ignorespaces} -% -\def\radians{\def\pst@angleunit{57.2956 mul }% - \pstVerb{tx@Dict begin startGlobal /pst@angleunit {\pst@angleunit} def endGlobal end}}% -\def\pst@angleunit{}% - -% -\def\SpecialCoor{% - \def\pst@@getcoor##1{% - \begingroup% - \pst@activecoor - \xdef\pst@tempg{##1}% - \endgroup - \expandafter\special@coor\pst@tempg||\@nil}% - \def\pstCheckCoorType##1{% - \begingroup - \pst@activecoor - \xdef\pst@tempg{##1}% - \endgroup - \psDEBUG[pstCheckCoorType]{:Checking coor \pst@tempg:}% - \expandafter\pst@CheckCoorType\pst@tempg||\@nil% - \psDEBUG[pstCheckCoorType]{::Coor type=\the\pst@C@@rType::}% - }% - \def\pssetlength##1##2{% - \begingroup% - \pst@activecoor% - \xdef\pst@tempg{##2}% - \endgroup% - \expandafter\special@length\pst@tempg\@nil{##1}% - \ignorespaces}% - \def\pst@@getangle##1{% - \begingroup% - \pst@activecoor% - \xdef\pst@tempg{##1}% - \endgroup% - \expandafter\special@angle\pst@tempg\@empty)\@nil% - }% - \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}% -} -\SpecialCoor% set to special read of coors, angles and lengths -% -\define@key[psset]{}{precode}{\def\pst@prepscode{#1 }} -\define@key[psset]{}{postcode}{\def\pst@postpscode{#1 }} -\psset{precode={},postcode={}}% For use in other packages -% -% -\begingroup -\catcode`\|=13 -\catcode`\;=13 -\catcode`\!=13 -\catcode`\*=13 -\catcode`\>=13 -\catcode`\+=13 -\gdef\pst@activecoor{% - \def|{\string|}% - \def;{\string;}% - \def!{\string!}% - \def*{\string*}% algebraic expression hv 2007-11-17 - \def>{\string>}% - \def+{\string+}% pure algebaric 2013-04-23 -} -\endgroup -% \pst@C@@rType = 0 cartesian (x,y) -% = 1 polar (r;phi) -% = 2 PS (! x y) -% = 3 mixed ((x,y)|(x,y)) -% = 4 algebraic (*x f(x)) x in PostScript notation -% = 5 node (A) -% = 6 special node ([...]A) -% = 7 node (>A) -% = 8 algebraic (+x,f(x)) _both_ algebraic -\def\pst@CheckCoorType#1|#2|#3\@nil{% - \ifx#3|\relax - \global\pst@C@@rType=3\relax - \else - \expandafter\pst@@CheckCoorType#1;;\@nil% - \fi} -% -\def\pst@@CheckCoorType#1#2;#3;#4\@nil{% -%\typeout{====1:#1}% -%\typeout{====2:#2}% -%\typeout{====3:#3}% -%\typeout{====4:#4}% - \ifx#1>\relax% node with special rotation for \uput - \global\pst@C@@rType=7 - \else - \ifcat#1a\relax% node names should start with a letter - \global\pst@C@@rType=5 - \else - \ifx#1[\relax% special node coor: [..]A - \global\pst@C@@rType=6 - \else - \ifx#1!\relax% PostScript code: x y - \global\pst@C@@rType=2 - \else - \ifx#1*\relax% algebraic PostScript code: x f(x) - \global\pst@C@@rType=4 - \else - \ifx#1+\relax% algebraic algebraic: x, f(x) - \global\pst@C@@rType=8 - \else - \ifx#4;\relax% polar coordinates - \global\pst@C@@rType=1 - \else - \global\pst@C@@rType=0 - \fi - \fi - \fi - \fi - \fi - \fi - \fi - \psDEBUG[pstCheckCoorType]{::\the\pst@C@@rType::}% - }% -% -% -\def\special@coor#1|#2|#3\@nil{% - \ifx#3|\relax - \mixed@coor{#1}{#2}% - \else - \special@@coor#1;;\@nil% - \fi} -% -\def\special@@coor#1{% - \ifcat#1a\relax% node names should start with a letter - \def\ps@next{\node@coor#1}% - \else - \ifx#1[\relax% special node coor: [..]A - \def\ps@next{\Node@coor[}% - \else - \ifx#1>\relax% PostScript code: x y - \def\ps@next{\special@@@@coor}% - \else - \ifx#1!\relax% PostScript code: x y - \def\ps@next{\raw@coor}% - \else - \ifx#1*\relax% PostScript/algebraic code: x f(x) - \def\ps@next{\alg@coor}% - \else - \ifx#1+\relax% algebraic code: x,f(x) - \def\ps@next{\algalg@coor}% - \else% - \def\ps@next{\special@@@coor#1}% - \fi% - \fi% - \fi% - \fi\fi% - \fi% - \ps@next% -} -\def\special@@@coor#1;#2;#3\@nil{% - \ifx#3;\relax - \polar@coor{#1}{#2}% - \else - \cartesian@coor#1,\relax,\@nil - \fi% -} -\def\special@@@@coor#1#2;#3;#4\@nil{% - \def\ps@A{A}\def\ps@B{#1}% - \ifcat\ps@A\ps@B\relax% - \node@coor#1#2;;\@nil% - \else% - \cartesian@coor#1#2,\relax,\@nil - \fi% -} -\def\mixed@coor#1#2{% - \begingroup% -% DG/SR modification begin - Oct. 27, 1997 - Patch 6 -%\specialcoor@ii#1;;\@nil -%\let\pst@tempa\pst@coor -%\specialcoor@ii#2;;\@nil - \special@@coor#1;;\@nil% - \let\pst@tempa\pst@coor% - \special@@coor#2;;\@nil% -% DG/SR modification end - \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }% - \endgroup% - \let\pst@coor\pst@tempg% -} -% -\def\polar@coor#1#2{% -% \pssetlength\pst@dimg{#1}% - \pssetlength\pst@dimb{#1}% hv 2007-10-16 g is already used in get@@angle - \pst@@getangle{#2}% -% \edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}% dito - \edef\pst@coor{\pst@number\pst@dimb \pst@angle \tx@PtoC }% -} -% -\def\raw@coor{\@ifnextchar !\raw@@coor\raw@@@coor} -\def\raw@@coor!#1;#2\@nil{% PostScript code without using \tx@ScreenCoor - \edef\pst@coor{#1 }} -\def\raw@@@coor#1;#2\@nil{% PostScript code - \edef\pst@coor{ #1 \tx@ScreenCoor }} -% -\def\alg@coor{\@ifnextchar*{\alg@@coor}{\alg@@@@coor}} -\def\alg@@coor*#1;#2\@nil{\expandafter\alg@@@coor#1\@nil} -\def\alg@@@coor#1 #2\@nil{% algebraic PostScript code -%\typeout{Nummer1: #1}% -%\typeout{Nummer2: #2}% - \edef\pst@coor{% - /Func (#1) AlgParser cvx def - /y #2 def - y Func exch \tx@ScreenCoor }} -% -\def\alg@@@@coor#1;#2\@nil{\expandafter\alg@@@@@coor#1\@nil} -\def\alg@@@@@coor#1 #2\@nil{% algebraic PostScript code - \edef\pst@coor{% - /x #1 def - /Func (#2) AlgParser cvx def - x Func \tx@ScreenCoor }} -% -\define@boolkey[psset]{}[Pst@]{exchange}[true]{} -\psset{exchange=false} -% -\def\algalg@coor#1;#2\@nil{\expandafter\algalg@@@coor#1\@nil} -\def\algalg@@@coor#1,#2\@nil{% algebraic algebraic code - \edef\pst@coor{% - /x (#1) AlgParser cvx def - /Func (#2) AlgParser cvx def - x Func \tx@ScreenCoor }} -% -\def\node@coor#1\@nil{% - \@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps - \def\pst@coor{0 0 }% -} -\def\Node@coor{\node@coor} -% -\def\special@angle#1#2)#3\@nil{% - \ifx !#1\relax - \edef\pst@angle{#2\space \pst@angleunit}% - \else\ifx(#1\relax - \pst@@getcoor{#2}% - \edef\pst@angle{\pst@coor exch \tx@Atan}% - \else - \pst@checknum{#1#2}\pst@angle - \edef\pst@angle{\pst@angle \pst@angleunit}% - \fi\fi} -% -\def\special@length#1#2\@nil#3{% - \ifx !#1\relax - \edef\pst@SpecialLength{ #2 \pst@number\psunit mul }% - \Pst@SpecialLengthtrue - \else - \let\@psunit\psunit - \afterassignment\pstunit@off - #3 #1#2\@psunit - \Pst@SpecialLengthfalse - \fi -} -% -\def\Cartesian{% - \def\cartesian@coor##1,##2,##3\@nil{% - \pssetxlength\pst@dimg{##1}% - \pssetylength\pst@dimh{##2}% - \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}% - }% - \@ifnextchar({\Cartesian@}{}% -} -\def\Cartesian@(#1,#2){% - \pssetxlength\psxunit{#1}% - \pssetylength\psyunit{#2}% - \ignorespaces -} -\def\Polar{% - \def\psput@cartesian{\psput@special}% - \def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}% -}% -\define@key[psset]{pstricks}{origin}[]{% - \pst@@getcoor{#1}% - \edef\psk@origin{\pst@coor T }} -\def\psk@origin{} -% -\define@boolkey[psset]{pstricks}[Pst@]{algebraic}[true]{} -\psset{algebraic=false} -% -\define@boolkey[psset]{pstricks}[]{swapaxes}[true]{% \if@pst - \@nameuse{@pst#1}% - \if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }% - \else\def\psk@swapaxes{}% - \fi -} -\psset[pstricks]{swapaxes=false} -% -\define@boolkey[psset]{pstricks}[]{showpoints}[true]{} -\psset[pstricks]{showpoints=false} -% -\let\pst@setrepeatarrowsflag\relax -% -\define@key[psset]{pstricks}{border}[0pt]{\pst@getlength{#1}\psk@border \pst@setrepeatarrowsflag} -\psset[pstricks]{border=0pt} -\define@key[psset]{pstricks}{bordercolor}[white]{\pst@getcolor{#1}\psbordercolor} -\psset[pstricks]{bordercolor=white} -\define@boolkey[psset]{pstricks}[ps]{doubleline}[true]{\pst@setrepeatarrowsflag} -\psset[pstricks]{doubleline=false} -\define@key[psset]{pstricks}{doublesep}[1.25\pslinewidth]{\def\psdoublesep{#1}} -\psset[pstricks]{doublesep=1.25\pslinewidth} -\define@key[psset]{pstricks}{doublecolor}[white]{\pst@getcolor{#1}\psdoublecolor} -\psset[pstricks]{doublecolor=white} -% -\define@boolkey[psset]{pstricks}[ps]{shadow}[true]{\pst@setrepeatarrowsflag} -\psset[pstricks]{shadow=false} -\define@key[psset]{pstricks}{shadowsize}[3pt]{\pst@getlength{#1}\psk@shadowsize} -\psset[pstricks]{shadowsize=3pt} -\define@key[psset]{pstricks}{shadowangle}[-45]{\pst@getangle{#1}\psk@shadowangle} -\psset[pstricks]{shadowangle=-45} -\define@key[psset]{pstricks}{shadowcolor}[darkgrey]{\pst@getcolor{#1}\psshadowcolor} -\psset[pstricks]{shadowcolor=darkgray} -% -\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}} -% -\def\psls@none{} -\def\psls@solid{ \psk@linejoin\space setlinejoin \psk@linecap\space setlinecap stroke } -\def\psls@coloreddashed{ \psls@solid grestore gsave \pst@usecolor\psdashcolor \tx@setlinejoin \psls@dashed } -% -\newdimen\pslinewidth -\define@key[psset]{pstricks}{linewidth}[0.8pt]{\pssetlength\pslinewidth{#1}} -\psset[pstricks]{linewidth=.8pt} -\define@key[psset]{pstricks}{linecolor}[black]{\pst@getcolor{#1}\pslinecolor} -\psset[pstricks]{linecolor=black} -\define@key[psset]{pstricks}{kitecolor}[red]{\pst@getcolor{#1}\ps@kitecolor} -\define@key[psset]{pstricks}{dartcolor}[blue]{\pst@getcolor{#1}\ps@dartcolor} -\psset[pstricks]{kitecolor,dartcolor} -% -\newif\ifPst@coloreddashed -\define@key[psset]{pstricks}{dashcolor}[white]{% - \ifx\relax#1\relax\Pst@coloreddashedfalse% - \else\Pst@coloreddashedtrue\pst@getcolor{#1}\psdashcolor - \fi} -\psset{dashcolor=\relax} -%\define@key[psset]{pstricks}{linecap}[0]{\pst@getint{#1}\psk@linecap}% hv 2007-12-01 -%\psset[pstricks]{linecap=0} >>>>>>>>>>>>> siehe unten -\define@key[psset]{pstricks}{linejoin}[0]{\pst@getint{#1}\psk@linejoin}% hv 2007-10-13 -\psset[pstricks]{linejoin=0} -\def\tx@setlinejoin{\psk@linejoin\space setlinejoin }% hv 2007-10-13 -% -\def\pst@missing{% - \z@ - \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa} -% -%%------------------- begin patch 15 HV 2004-05-15 ------------- -\def\pst@empty{\z@} - -\define@key[psset]{pstricks}{dash}[5pt 3pt 0pt 0pt]{% defined in pstricks.tex - \pst@expandafter\psset@@dash{#1}\@nil}% Error handling for empty argument. -\define@key[psset]{pstricks}{maxdashes}[11]{\def\psk@maxdashes{#1}} -\psset[pstricks]{maxdashes=11} -% -\def\psset@@dash#1\@nil{% - \def\psk@dash{}% - \pst@cntm0 - \def\next##1 ##2\relax{% - \expandafter\ifnum\psk@maxdashes>\pst@cntm\relax % 04-08-07 - \edef\@tempa{##1}% - \ifx\@tempa\@empty\else% gobble leading spaces - \pssetlength\pst@dimc{##1}% - \advance\pst@cntm by 1 - \edef\psk@dash{\psk@dash\space\pst@number\pst@dimc}% - \fi% - \edef\@tempa{##2}% - \ifx\@tempa\@empty\else% detect end - \ifx\@tempa\space\else% gobble trailing spaces - \next##2\relax% - \fi\fi% - \else% 04-08-07 - \@pstrickserr{Number of dashes > \psk@maxdashes. Increasing - 'maxdashes' might work.}\@ehpa% 04-08-07 - \fi% 04-08-07 - }% - \expandafter\next#1 \relax} -\psset[pstricks]{dash=5pt 3pt 0pt 0pt}% black white black white -%%------------------- end patch 15 HV 2004-05-15 ------------- -\define@boolkey[psset]{pstricks}[ps]{dashadjust}[true]{} -\psset[pstricks]{dashadjust} -\def\tx@DashLine{DashLine } -% -\def\psls@dashed{ - \ifPst@coloreddashed \psls@solid grestore gsave \pst@usecolor\psdashcolor \tx@setlinejoin \fi - \psk@linecap\space setlinecap - \ifpsdashadjust - [ \psk@dash ] \pst@linetype\space \tx@DashLine - \else - [ \psk@dash ] 0 setdash stroke - \fi} -%% End patch TN; Date (YY-MM-DD): 04-07-17; 2nd part -% -\define@key[psset]{pstricks}{dotsep}[3pt]{\pst@getlength{#1}\psk@dotsep} -\psset[pstricks]{dotsep=3pt} -\def\tx@DotLine{DotLine } -\def\psls@dotted{ - \ifpsdashadjust - \psk@dotsep \pst@linetype\space \tx@DotLine - \else - [ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke - \fi -} -% -\define@key[psset]{pstricks}{linestyle}[solid]{% - \@ifundefined{psls@#1}% - {\@pstrickserr{Line style `#1' not defined}\@eha}% - {\def\pslinestyle{#1}}} -\psset[pstricks]{linestyle=solid} -% -\define@key[psset]{pstricks}{linecap}[0]{% - \def\psk@linecap{0}% - \ifnum#1>-1 - \ifnum#1<3 - \pst@getint{#1}\psk@linecap% - \fi\fi} -\psset{linecap=0} -%------------------------- Transparency modes ---------------------------- -\pst@def{setTransparency}< \psk@opacityalpha .setopacityalpha > -\pst@def{setStrokeTransparency}< \psk@strokeopacityalpha .setstrokeopacityalpha > -\pst@def{setBlendmode}< - \ifcase\psk@blendmode - /Normal \or - /Compatible \or - /Screen \or - /Multiply \or - /HardLight \or - /Darken \or - /Lighten \or - /Difference\or - /ColorDodge\or - /ColorBurn\or - /SoftLight\or - /Hue\or - /Saturation\or - /Luminosity\or - /Overlay\or - /Exclusion\or - /Color - \else - /Normal - \fi - .setblendmode \psk@shapealpha .setopacityalpha > -% -%--------------------------------- hv 2007-09-09 begin --------------------- -% transparency needs a run through latex -> dvips -> ps2pdf14(!) -% -\def\e@fill@inverse{oefill} -\define@key[psset]{pstricks}{fillcolor}[white]{% - \ifx\psk@fillstylename\e@fill@inverse - \pst@getcolor{#1}\psk@oefillcolor - \pst@getcolor{white}\psfillcolor - \else \pst@getcolor{white}\psk@oefillcolor - \pst@getcolor{#1}\psfillcolor - \fi} - -\psset[pstricks]{fillcolor=white} -\define@key[psset]{pstricks}{strokeopacity}[1]{\pst@checknum{#1}\psk@strokeopacityalpha }% for lines -\psset[pstricks]{strokeopacity=1} -\define@key[psset]{pstricks}{opacity}[1]{\pst@checknum{#1}\psk@opacityalpha }% for filled areas -\psset[pstricks]{opacity=1} -\define@key[psset]{pstricks}{shapealpha}[0.6]{\pst@checknum{#1}\psk@shapealpha } -\psset[pstricks]{shapealpha=0.6} -\define@key[psset]{pstricks}{blendmode}[0]{\pst@getint{#1}\psk@blendmode }% must be one of -% /Normal 0 -% /Compatible 1 -% /Screen 2 -% /Multiply 3 -% /HardLight 4 -\psset[pstricks]{blendmode=0} -\define@key[psset]{pstricks}{fsAngle}[137.50775]{\pst@getangle{#1}\pst@fsAngle } -\define@key[psset]{pstricks}{fsOrigin}[(0,0)]{% - \pst@@getcoor{#1}\edef\pst@fsOrigin{\pst@coor T }} -\psset[pstricks]{fsOrigin={0,0},fsAngle=137.50775} -% -\def\tx@LineFill{LineFill } -\def\tx@DotFill{DotFill } -\def\tx@PenroseFill{PenroseFill } -\def\tx@PenroseFillA{PenroseFillA } -\def\tx@TruchetFill{TruchetFill } -% -\def\psfs@none{} -\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor \tx@setTransparency fill }} -\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor \tx@setTransparency eofill}} -\def\psfs@oefill{\pst@fill{\pst@usecolor\psk@oefillcolor \tx@setTransparency fill }\psfs@eofill } -\def\psfs@shape{\pst@fill{\pst@usecolor\psfillcolor \tx@setBlendmode fill }} -\def\psfs@spiral{\pst@fill{\pst@fsOrigin \pst@usecolor\psfillcolor clip newpath - 0 .1 500 { dup dup sqrt 4 div 0 360 arc fill \pst@fsAngle rotate } for }} -% -\define@key[psset]{pstricks}{hatchwidth}[0.8pt]{\pst@getlength{#1}\psk@hatchwidth} -\psset[pstricks]{hatchwidth=.8pt} -\define@key[psset]{pstricks}{hatchsep}[4pt]{\pst@getlength{#1}\psk@hatchsep} -\psset[pstricks]{hatchsep=4pt} -\define@key[psset]{pstricks}{hatchcolor}[black]{\pst@getcolor{#1}\pshatchcolor} -\psset[pstricks]{hatchcolor=black} -\define@key[psset]{pstricks}{hatchangle}[45]{\pst@getangle{#1}\psk@hatchangle} -\psset[pstricks]{hatchangle=45} -\define@key[psset]{pstricks}{hatchsepinc}[0pt]{\pst@getlength{#1}\psk@hatchsepinc} -\define@key[psset]{pstricks}{hatchwidthinc}[0pt]{\pst@getlength{#1}\psk@hatchwidthinc} -\psset[pstricks]{hatchwidthinc=0pt,hatchsepinc=0pt} -% -\def\pst@linefill#1{ - /clipType { \ifx\relax#1\relax clip \else#1\fi} def - \psk@hatchangle rotate - \psk@hatchwidth SLW - \pst@usecolor\pshatchcolor - \psk@hatchsep - \psk@hatchsepinc - \psk@hatchwidthinc - \tx@LineFill } -% -\def\psfs@vlines{\pst@fill{\pst@linefill{}}} -\def\psfs@eovlines{\pst@fill{\pst@linefill{eoclip}}} -\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines} -\@namedef{psfs@eovlines*}{\psfs@eofill \psfs@eovlines} -\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill{}}} -\def\psfs@eohlines{\pst@fill{90 rotate \pst@linefill{eoclip}}} -\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines} -\@namedef{psfs@eohlines*}{\psfs@eofill \psfs@eohlines} -\def\psfs@crosshatch{\psfs@vlines \psfs@hlines} -\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines} -\@namedef{psfs@eocrosshatch*}{\psfs@eofill \psfs@eovlines \psfs@eohlines} -% -\define@key[psset]{pstricks}{psscale}[1]{% - \def\psk@@psscale{#1}% for use with \psscalebox - \pst@checknum{#1}\psk@psscale} -\psset[pstricks]{psscale=1} -% -\def\pst@dotFill[#1]{% - /clipType { \ifx\relax#1\relax clip \else #1 \fi } def - gsave - \pst@number\pslinewidth SLW - \pst@usecolor\pshatchcolor -% /DotLineColor { \pst@usecolor\pslinecolor } def - \psk@hatchsep - \psk@hatchwidth - \tx@DotFill } - -\def\psfs@dots{\pst@fill{ /SolidDot false def \pst@dotFill[] }} -\def\psfs@eodots{\pst@fill{ /SolidDot false def \pst@dotFill[eoclip] }} -\@namedef{psfs@dots*}{\pst@fill{ /SolidDot true def \pst@dotFill[] }} -\@namedef{psfs@eodots*}{\pst@fill{ /SolidDot true def \pst@dotFill[eoclip] }} -% -\def\pst@penroseFill{% -% gsave % restore in PenroseFill - \pst@number\pslinewidth SLW - \pst@usecolor\pshatchcolor - \psk@psscale - \tx@PenroseFill } -\def\psfs@penrose{\pst@fill\pst@penroseFill} -\@namedef{psfs@penrose*}{\psfs@solid \psfs@penrose} -% -\def\pst@penroseFillA{% -% gsave % restore in PenroseFillA - \pst@number\pslinewidth SLW -% \pst@usecolor\pshatchcolor -% on stack: scaling factor, border color, kite color, dart color -% dup dup scale -% /border_colour ED % -% /kite_colour ED % -% /dart_colour - { \pst@usecolor\ps@dartcolor } - { \pst@usecolor\ps@kitecolor } - { \pst@usecolor\pshatchcolor } - \psk@psscale - \tx@PenroseFillA } -\def\psfs@penroseA{\pst@fill\pst@penroseFillA} -\@namedef{psfs@penroseA*}{\psfs@solid \psfs@penroseA} -% -\def\pst@truchetFill{% - gsave % restore in PenroseFill - \pst@number\pslinewidth SLW - \pst@usecolor\pshatchcolor - \psk@psscale - \tx@TruchetFill } -\def\psfs@truchet{ \pst@fill\pst@truchetFill } -\@namedef{psfs@truchet*}{\psfs@solid \psfs@truchet} -% -\define@key[psset]{pstricks}{fillstyle}[none]{% - \def\psk@fillstylename{#1}% needed for inverse eofill - \edef\pst@tempg{#1}\def\pst@temph{none}% - \ifx\pst@tempg\pst@temph - \let\psk@fillstyle\relax - \else - \@ifundefined{psfs@#1}% - {\@pstrickserr{Undefined fill style: `#1'}\@eha}% - {\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}% - \fi% -} -\define@key[psset]{pstricks}{addfillstyle}[]{% - \@ifundefined{psfs@#1}% - {\@pstrickserr{Undefined fill style: `#1'}\@eha}% - {\edef\psk@fillstyle{% - \expandafter\noexpand\psk@fillstyle - \expandafter\noexpand\csname psfs@#1\endcsname}% - }} -\psset[pstricks]{fillstyle=none} -% -%--------------------------- continous linewidth ------------------- -\newdimen\psk@startLW -\newdimen\psk@endLW -\define@key[psset]{pstricks}{startLW}[\pslinewidth]{\pssetlength{\psk@startLW}{#1}}% -\define@key[psset]{pstricks}{endLW}[\pslinewidth]{\pssetlength{\psk@endLW}{#1}}% -\define@key[psset]{pstricks}{startWL}[380]{\pst@getint{#1}\psk@startWL}% -\define@key[psset]{pstricks}{endWL}[780]{\pst@getint{#1}\psk@endWL}% -\define@boolkey[psset]{pstricks}[Pst@]{variableLW}[true]{} -\define@boolkey[psset]{pstricks}[Pst@]{variableColor}[true]{} -\define@key[psset]{pstricks}{setflat}[0.1]{\pst@checknum{#1}\psk@setflat}% -\psset[pstricks]{startLW=\pslinewidth,endLW=\pslinewidth,variableColor=false, - variableLW=false,startWL=380,endWL=780,setflat=0.1} -% -\def\pst@flattenpath{ - /Coors [] def % the array of all points - /lambda \psk@startWL\space def - % - /add2Values { Coors aload length 2 add array astore /Coors exch def } def - /add6Values { Coors aload length 6 add array astore /Coors exch def } def -% - \psk@setflat\space setflat % the value for the line snippets - flattenpath % flatten the existing path into line segments -% - { add2Values } % what to do with moveto - { add2Values } % what to do with lineto - { add6Values } % what to do with curveto (not needed here) - { } % what to do with closepath - pathforall % do it for the existing path -% - \pst@number\psk@startLW setlinewidth - \tx@setlinejoin - \psk@linecap\space setlinecap - Coors aload length 2 sub 2 div cvi /N0 exch def % set number of points - /NN 0 def - /N N0 def - { N 3 gt { N 3 sub /N ED }{ N 1 sub /N ED } ifelse - NN 1 add /NN ED - N 0 eq { exit } if - } loop - /dLW \pst@number\psk@endLW \pst@number\psk@startLW sub NN div def % the step for the linewidth - \ifPst@variableColor - /dColor \psk@endWL\space \psk@startWL\space sub NN div def - lambda dColor add dup /lambda ED - tx@addDict begin wavelengthToRGB Red Green Blue end setrgbcolor - \else - \pst@usecolor\pslinecolor - \fi - moveto % move to the first one - /N N0 def - { - N 3 gt { -% CP 6 2 roll - \psk@curvature\space /c ED /b ED /a ED - /ArrowA {} def - /ArrowB {} def - BOC NC EOC % curveto - N 3 sub /N ED }{ lineto N 1 sub /N ED } ifelse - currentlinewidth dLW add setlinewidth % increase line width - \ifPst@variableColor - lambda dColor add dup /lambda ED - tx@addDict begin wavelengthToRGB Red Green Blue end setrgbcolor - \else - \pst@usecolor\pslinecolor - \fi - CP /Y ED /X ED % put coors of current point on the stack - stroke % draw the line segment - N 0 eq { exit }{ X Y moveto } ifelse - } loop -% N { % repeat for the other N coords -% lineto % line to next point -% currentlinewidth dLW add setlinewidth % increase line width -% lambda dColor add dup /lambda ED -% tx@addDict begin wavelengthToRGB Red Green Blue end setrgbcolor -% currentpoint % put coors of current point on the stack -% 0.4 .setopacityalpha -% stroke % draw the line segment -% moveto -% } repeat -} - -% -%--------------------------- A R R O W S --------------------------- -% -\def\psk@arrowA{} -\def\psk@arrowB{} -\def\pst@arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,,D>-D>} % hv --1.16 -\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|} -\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 -% -\@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@|}{% - \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} -% -\def\tx@SD{ \tx@setTransparency SD } -\def\tx@EndDot{EndDot } -% -\def\pst@par{} -\def\addto@par#1{% - \ifx\pst@par\@empty - \def\pst@par{#1}% - \else - \expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}% - \fi% -} -\def\addbefore@par#1{% - \ifx\pst@par\@empty - \def\pst@par{#1}% - \else - \toks@{#1}% - \pst@toks\expandafter{\pst@par}% - \edef\pst@par{\the\toks@,\the\pst@toks}% - \fi% -} -\def\use@par{% - \ifx\pst@par\@empty\else - \expandafter\@psset\pst@par,\@nil - \def\pst@par{}% - \fi -} -\def\use@keep@par{% same as \use@par, but keeps the values - \ifx\pst@par\@empty\else - \expandafter\@psset\pst@par,\@nil -% \def\pst@par{}% - \fi} -% -\def\pst@object#1{% - \def\pst@par{}% - \pst@ifstar{% - \@ifnextchar[{\pst@@object{#1}}{\@nameuse{#1@i}}}% -} -\def\pst@@object#1[#2]{% - \def\pst@par{#2}% - \@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}% -} -\def\newpsobject#1#2#3{% -\@ifundefined{#2@i}% -{\@pstrickserr{Graphics object `#2' not defined}\@eha}{% -\@namedef{#1}{\pst@object{#1}}% -\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}% -\ignorespaces} -% -\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\begin@ClosedObj{% - \leavevmode - \pst@killglue - \begingroup - \use@par - \solid@star - \ifpsdoubleline\pst@setdoublesep\fi - \pst@addarrowdef% DG addition - \init@pscode} -% -\def\end@ClosedObj{% - \ifpsshadow \pst@closedshadow \fi - \ifdim\psk@border\p@>\z@ \pst@addborder \fi - \psk@fillstyle - \pst@stroke - \ifpsdoubleline \pst@doublestroke \fi - \ifshowpoints -% DG modification begin - Mar. 4, 1995 -%\addto@pscode{Points aload length 2 div cvi /N ED \psdots@iii}% - \pst@OpenShowPoints -% DG modification end - \fi - \use@pscode - \endgroup - \ignorespaces% -} -\def\begin@OpenObj{% - \begin@ClosedObj% - \let\pst@linetype\pst@arrowtype% - \pst@addarrowdef% -} -\def\begin@AltOpenObj{% - \begin@ClosedObj - \def\pst@repeatarrowsflag{\z@}% - \def\pst@linetype{0}} -% -\def\end@OpenObj{% - \ifpsshadow \pst@openshadow \fi - \ifdim\psk@border\p@>\z@ \pst@addborder \fi - \psk@fillstyle - \pst@stroke - \ifpsdoubleline \pst@doublestroke \fi - \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi - \ifshowpoints \pst@OpenShowPoints \fi - \use@pscode - \endgroup - \ignorespaces} -% -\def\begin@SpecialObj{% - \leavevmode - \pst@killglue - \begingroup - \use@par - \init@pscode} -% -\def\end@SpecialObj{% - \use@pscode - \endgroup - \ignorespaces} -% -\def\pst@code{}% -\def\init@pscode{% - \addto@pscode{% - \pst@number\pslinewidth SLW - \pst@usecolor\pslinecolor}% -} -\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}} -\def\use@pscode{% - \pstverb{ - \pst@dict - \tx@STP - \pst@newpath - \psk@origin - \psk@swapaxes - \pst@code - end - }% - \gdef\pst@code{}% -} -\def\use@psCode{% - \pstVerb{ - \pst@dict - \tx@STP - \pst@newpath - \psk@origin - \psk@swapaxes - \pst@code - end - }% - \gdef\pst@code{}% -} -\def\pst@newpath{newpath } -% -\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi} -\def\KillGlue{\let\pst@killglue\pst@@killglue} -\def\DontKillGlue{\let\pst@killglue\relax} -\DontKillGlue -% -\def\solid@star{% - \if@star - \pslinewidth=\z@ - \psdoublelinefalse - \def\pslinestyle{none}% - \def\psk@fillstyle{\psfs@solid}% - \let\psfillcolor\pslinecolor - \fi} -% -\def\pst@setdoublesep{% -\pst@getlength\psdoublesep\psdoublesep -\pslinewidth=2\pslinewidth -\advance\pslinewidth\psdoublesep\p@ -\let\pst@setdoublesep\relax} -\def\tx@Shadow{Shadow } -\def\pst@closedshadow{% - \addto@pscode{% - gsave - \psk@shadowsize \psk@shadowangle \tx@PtoC - \tx@Shadow - \pst@usecolor\psshadowcolor - gsave fill grestore - stroke - grestore - gsave - \pst@usecolor\psfillcolor - gsave fill grestore - stroke - grestore}} -% -\def\pst@openshadow{% - \addto@pscode{% - gsave - \psk@shadowsize \psk@shadowangle \tx@PtoC - \tx@Shadow - \pst@usecolor\psshadowcolor - \ifx\psk@fillstyle\relax\else - gsave fill grestore - \fi - stroke}% - \pst@repeatarrows% - \addto@pscode{grestore}% - \ifx\psk@fillstyle\relax\else - \addto@pscode{% - gsave - \pst@usecolor\psfillcolor - gsave fill grestore - stroke - grestore}% - \fi} -% -\def\pst@addborder{% - \addto@pscode{% - gsave - \psk@border 2 mul - CLW add SLW - \pst@usecolor\psbordercolor - stroke - grestore}} -% -\def\pst@stroke{% - \ifx\pslinestyle\@none\else - \addto@pscode{% - gsave - \pst@number\pslinewidth SLW - \pst@usecolor\pslinecolor - \tx@setStrokeTransparency % hv 2008-01-13 - \@nameuse{psls@\pslinestyle} - grestore}% - \fi} -% -\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}% -% -\def\pst@doublestroke{% - \addto@pscode{% - gsave - \psdoublesep SLW - \pst@usecolor\psdoublecolor - \tx@setStrokeTransparency % hv 2016-09-23 - stroke - grestore -}} -% -\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 -}} -% -\def\pst@OpenShowPoints{% - \addto@pscode{% - gsave - \psk@dotsize - \@nameuse{psds@\psk@dotstyle} - newpath - Points aload length 2 div 2 sub cvi /N ED - N 0 ge - { \ifx\psk@arrowA\@empty Dot \else pop pop \fi - N { Dot } repeat - \ifx\psk@arrowB\@empty Dot \else pop pop \fi } - { N 2 mul { pop } repeat } ifelse - grestore -}} -% -\newif\ifPst@custom\Pst@customfalse -\define@boolkey[psset]{pstricks}[Pst@]{noCurrentPoint}[true]{} -\psset[pstricks]{noCurrentPoint=false} -% -% -\def\pscustom{\pst@object{pscustom}} -\long\def\pscustom@i#1{% - \begin@SpecialObj% - \solid@star% - \let\pst@ifcustom\iftrue% - \Pst@customtrue% - \let\begin@ClosedObj\begin@CustomObj% - \let\end@ClosedObj\endgroup% - \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}% - \let\end@OpenObj\endgroup% - \let\begin@AltOpenObj\begin@CustomObj% - \def\begin@SpecialObj{% - \begingroup% - \pst@misplaced{special graphics object}% - \def\addto@pscode####1{}% - \let\end@SpecialObj\endgroup}% - \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}% - \def\psclip##1{\pst@misplaced\psclip}% - \def\pst@repeatarrowsflag{\z@}% - \let\pst@setrepeatarrowsflag\relax% - \showpointsfalse% - \def\pst@linetype{\pslinetype}% - \def\psk@liftpen{\z@}% -% \psset{liftpen=0}% - \def\pst@cp{/currentpoint load stopped pop }% - \def\pst@oplineto{/lineto load stopped { moveto } if }% - \def\pst@optcp##1##2{\ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}% - \let\caddto@pscode\addto@pscode% - \def\cuse@par##1{{\use@par##1}}% - \the\pst@customdefs% - \setbox\pst@hbox=\hbox{#1}% - \psk@fillstyle - \pst@stroke - \end@SpecialObj - \let\pst@ifcustom\iffalse - \ignorespaces -} -% -\let\pst@ifcustom\iffalse -% -\def\begin@CustomObj{% - \begingroup% - \use@par% - \addto@pscode{ - \pst@number\pslinewidth SLW - \pst@usecolor\pslinecolor - }% -} -\def\pst@oplineto{moveto } -\def\pst@cp{} -\def\pst@optcp#1#2{} -\define@key[psset]{pstricks}{liftpen}[0]{% - \ifPst@custom% - \ifcase#1\relax% - \def\psk@liftpen{\z@}% - \def\pst@cp{/currentpoint load stopped pop }% - \def\pst@oplineto{/lineto load stopped { moveto } if }% - \or% - \def\psk@liftpen{1}% - \def\pst@cp{}% - \def\pst@oplineto{/lineto load stopped { moveto } if }% - \or% - \def\psk@liftpen{2}% - \def\pst@cp{}% - \def\pst@oplineto{moveto }% - \fi\fi% -} -\psset[pstricks]{liftpen=0} -\def\psk@liftpen{-1} -% -\define@key[psset]{pstricks}{linetype}[2]{% - \pst@getint{#1}\pslinetype - \ifnum\pst@cntg<-3 - \@pstrickserr{linetype must be greater than -3}\@ehpa - \def\pslinetype{2}% - \fi} -\psset[pstricks]{linetype=2}% otherwise there is a problem when using e.g. -% \psaxes[axesstyle=frame,linestyle=dashed]{->}(3,-2) -% -\def\caddto@pscode#1{% - \@pstrickserr{Command can only be used in \string\pscustom}\@ehpa} -\let\cuse@par\caddto@pscode -% -\def\tx@MSave{% - /msavematrx - [ tx@Dict /msavematrx known % does msavematrix exists? - { msavematrx aload pop } if - CM % matrix currentmatrix - ] - def -%----------------- hv begin 2004-05-07 ------------- patch 15 - msavematrx -%----------------- hv end 2004-05-07 ------------- patch 15 -} -\def\tx@MRestore{% a typo in pstricks with msavematrx - tx@Dict /msavematrx known { length 0 gt } { false } ifelse - { msavematrx aload pop setmatrix } if -} -% -\newtoks\pst@customdefs -\pst@customdefs{% - \def\newpath{\addto@pscode{newpath}}% - \def\reversepath{\addto@pscode{ reversepath }}% 20131209 hv - \def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}% - \def\rmoveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor rmoveto}}% - \def\closepath{\addto@pscode{closepath}}% - \def\gsave{\begingroup\addto@pscode{gsave}}% - \def\grestore{\endgroup\addto@pscode{grestore}}% - \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}% - \def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}% - \def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}% - \def\msave{\addto@pscode{\tx@MSave}}% - \def\mrestore{\addto@pscode{\tx@MRestore}}% - \def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}% - \def\stroke{\def\pst@par{}\pst@object{stroke}}% - \def\fill{\def\pst@par{}\pst@object{fill}}% - \def\openshadow{\def\pst@par{}\pst@object{openshadow}}% - \def\closedshadow{\def\pst@par{}\pst@object{closedshadow}}% - \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}% - \def\lineto{\pst@onecoor{lineto}}% - \def\rlineto{\pst@onecoor{rlineto}}% - \def\curveto{\pst@threecoor{curveto}}% - \def\rcurveto{\pst@threecoor{rcurveto}}% - \def\code#1{\addto@pscode{#1}}% - \def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}% - \def\rcoor{\pst@getcoors{}{}}% - \def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}% - \def\setcolor#1{% - \@ifundefined{\string\color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}% hv 1.14 2005-12-17 - \def\arrows#1{{\psset[pstricks]{arrows=#1}\pst@addarrowdef}}% - \let\file\pst@rawfile% -} % END \pst@customdefs -% -\def\closedshadow@i{\cuse@par\pst@closedshadow} -\def\openshadow@i{\cuse@par\pst@openshadow} -\def\stroke@i{\cuse@par\pst@stroke}% -\def\fill@i{\cuse@par\psk@fillstyle}% -\def\pst@onecoor#1(#2){% -\pst@@getcoor{#2}% -\addto@pscode{\pst@coor #1}} -\def\pst@threecoor#1(#2)#3(#4)#5(#6){% - \begingroup - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#4}\pst@tempb -% DG/SR modification begin - Aug. 4, 1999 - Patch 11 -%\pst@getcoor{#6}\pst@tembc - \pst@getcoor{#6}\pst@tempc -% DG/SR modification end - \addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}% - \endgroup} -% -\def\pst@rawfile#1{% - \begingroup - \def\do##1{\catcode`##1=12\relax}" - \dospecials - \catcode`\%=14 - \pst@@rawfile{#1}% - \endgroup} -% -\def\pst@@rawfile#1{% - \immediate\openin1 #1 - \ifeof1 - \@pstrickserr{File `#1' not found}\@ehpa - \else - \immediate\read1 to \pst@tempg - \loop - \ifeof1 \@pstfalse\else\@psttrue\fi - \if@pst - \addto@pscode\pst@tempg - \immediate\read1 to \pst@tempg - \repeat - \fi - \immediate\closein1\relax} -% -\def\tx@NArray{NArray } -\def\tx@Line{Line } -\def\tx@Arcto{Arcto } -\def\tx@CheckClosed{CheckClosed } -\def\tx@Polygon{Polygon } -\define@key[psset]{pstricks}{gangle}[0]{\pst@getangle{#1}\psk@gangle} -\define@boolkey[psset]{pstricks}[Pst@]{trueAngle}[true]{} -\psset[pstricks]{trueAngle=false,gangle=0} -% -\def\tx@Diamond{Diamond } -\def\psdiamond{\def\pst@par{}\pst@object{psdiamond}} -\def\psdiamond@i(#1){\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}} -\def\psdiamond@ii(#1)(#2){% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb - \addto@pscode{% - \psline@iii - pop - \psk@dimen - \pst@tempb - \psk@gangle - \pst@tempa - \tx@Diamond - }% - \def\pst@linetype{4}% - \end@ClosedObj} -% -\def\tx@Triangle{Triangle } -\def\pstriangle{\def\pst@par{}\pst@object{pstriangle}} -\def\pstriangle@i(#1){\@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}} -\def\pstriangle@ii(#1)(#2){% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempa% the center of the baseline - \pst@getcoor{#2}\pst@tempb% the height of the triangle - \addto@pscode{% - \psline@iii - pop % no showpoints option - \psk@dimen % outer/inner/middle - \pst@tempb - \psk@gangle % rotating angle - \pst@tempa - \tx@Triangle - }% - \def\pst@linetype{2}% - \end@ClosedObj} -% -\def\tx@CCA{CCA } -\def\tx@CCA{CCA } -\def\tx@CC{CC } -\def\tx@IC{IC } -\def\tx@BOC{BOC } -\def\tx@NC{NC } -\def\tx@EOC{EOC } -\def\tx@BAC{BAC } -\def\tx@NAC{NAC } -\def\tx@EAC{EAC } -\def\tx@OpenCurve{OpenCurve } -\def\tx@AltCurve{AltCurve } -\def\tx@ClosedCurve{ClosedCurve } -% -\define@key[psset]{pstricks}{curvature}[1 0.1 0]{% - \edef\pst@tempg{#1 }% - \expandafter\psset@@curvature\pst@tempg * * * \@nil} -\def\psset@@curvature#1 #2 #3 #4\@nil{% - \pst@checknum{#1}\pst@tempg - \pst@checknum{#2}\pst@temph - \pst@checknum{#3}\pst@tempi - \edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}} -% -\psset[pstricks]{curvature=1 .1 0} -% -\def\pscurve{\pst@object{pscurve}} -\def\pscurve@i{% - \pst@getarrows{% - \begin@OpenObj - \pst@getcoors[\pscurve@ii% - }% -} -\def\pscurve@ii{% - \addto@pscode{ - \ifPst@noCurrentPoint\else\pst@cp\fi % current point - \psk@curvature\space /c ED /b ED /a ED - \ifshowpoints true \else false \fi - \ifx\pslinestyle\psls@@symbol \psls@symbol OpenSymbolCurve \else \tx@OpenCurve \fi - \ifPst@variableLW \pst@flattenpath \fi - }% - \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi% - \end@OpenObj% -} -\def\psecurve{\pst@object{psecurve}} -\def\psecurve@i{\pst@getarrows{\begin@OpenObj\pst@getcoors[\psecurve@ii}} -\def\psecurve@ii{% - \addto@pscode{ - \psk@curvature\space /c ED /b ED /a ED - \ifshowpoints true \else false \fi - \ifx\pslinestyle\psls@@symbol \psls@symbol AltOpenSymbolCurve \else \tx@AltCurve \fi - }% - \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi% - \end@OpenObj} -% -\def\psccurve{\pst@object{psccurve}} -\def\psccurve@i{\begin@ClosedObj\pst@getcoors[\psccurve@ii} -\def\psccurve@ii{% - \addto@pscode{% - \psk@curvature\space /c ED /b ED /a ED - \ifshowpoints true \else false \fi - \ifx\pslinestyle\psls@@symbol \psls@symbol ClosedSymbolCurve \else \tx@ClosedCurve \fi - }% - \def\pst@linetype{1}% - \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi% - \end@ClosedObj} -% -\def\pscspline{\pst@object{pscspline}}% Christoph Bersch -\def\pscspline@i{% - \pst@getarrows{% - \begin@OpenObj - \pst@getcoors[\pscspline@ii - }% -} -\def\tx@Spline{Spline } -\def\pscspline@ii{% - \addto@pscode{ - \ifPst@noCurrentPoint\else\pst@cp\fi - \tx@setlinejoin - \ifshowpoints true \else false \fi - \ifx\pslinestyle\psls@@symbol - \psls@symbol OpenSymbolSpline - \else - \tx@Spline - \fi - }% - \end@OpenObj -} -% -\define@key[psset]{pstricks}{dotsize}[2pt 2]{% - \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil% - \edef\psk@@dotsize{\pst@number\pst@dimg}% - \let\psk@@@dotsize\pst@tempg% - \edef\psk@dotsize{ /DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }} -\psset[pstricks]{dotsize=2pt 2} -% -\define@key[psset]{pstricks}{dotscale}[1]{% - \pst@getscale{#1}\psk@dotscale - \ifx\psk@dotscale\@empty - \def\psk@xdotscale{1 }% - \def\psk@ydotscale{1 }% - \else - \let\psk@xdotscale\pst@tempg - \let\psk@ydotscale\pst@temph - \fi} -% -\def\pst@Getangle#1#2{% - \pst@getangle{#1}\pst@tempg - \def\pst@temph{0. }% - \ifx\pst@tempg\pst@temph\def#2{}\else\edef#2{\pst@tempg\space rotate }\fi} -% -\define@key[psset]{pstricks}{dotangle}[0]{% - \pst@getangle{#1}\psk@@dotangle - \ifdim\psk@@dotangle\p@=\z@ - \let\psk@dotangle\@empty - \else - \edef\psk@dotangle{\psk@@dotangle rotate }% - \fi} -\psset[pstricks]{dotangle=0} -% -\def\pst@getdotsize{% -\pst@dimg=\psk@@@dotsize\pslinewidth -\advance\pst@dimg\psk@@dotsize\p@ -\pst@dimh=\psk@ydotscale\pst@dimg -\pst@dimg=\psk@xdotscale\pst@dimg -\divide\pst@dimh 2 -\divide\pst@dimg 2\relax} -% -\psset[pstricks]{dotscale=1} -% -\def\psdot{\pst@object{psdot}} -\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}} -\def\psdot@ii(#1){% - \begin@SpecialObj% -% hv modification 1.13 2005-11-28 - \solid@star% -% hv modification end - \pst@@getcoor{#1}% - \addto@pscode{ - \psk@dotsize - \@nameuse{psds@\psk@dotstyle} - \tx@setStrokeTransparency - \pst@coor Dot}% - \end@SpecialObj} -% -\def\psdots{\pst@object{psdots}} -\def\psdots@i{% - \begin@SpecialObj% - \pst@getcoors[\psdots@ii} -\def\psdots@ii{% - \addto@pscode{ false \tx@NArray \psdots@iii }% - \end@SpecialObj} -\def\psdots@iii{% - \psk@dotsize - \@nameuse{psds@\psk@dotstyle} - \tx@setStrokeTransparency - newpath - n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat } -% -% DG: dead code (to suppress until \psset[pstricks]{dotstyle) ? - Aug. 4, 1997 -\def\tx@SQ{SQ } -\def\tx@ST{ST } -\def\tx@SP{SP } -% -\def\pst@gdot#1{ /Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def } -% -\@namedef{psds@*}{\pst@gdot{ 0 0 DS \tx@SD }} -\@namedef{psds@o}{% - /r2 DS CLW sub def - \pst@gdot{ 0 0 DS \tx@SD \pst@usecolor\psfillcolor SLW 0 0 r2 \tx@SD }} -\@namedef{psds@square*}{ /r1 DS .886 mul def \pst@gdot{r1 \tx@SQ }} -\@namedef{psds@square}{% - /r1 DS .886 mul def /r2 r1 CLW sub def - \pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}} -\@namedef{psds@triangle*}{% - /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def - \pst@gdot{x1 y1 \tx@ST}} -\@namedef{psds@triangle}{% - /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def - /y2 y1 CLW add def /x2 y2 1.732 mul neg def - \pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}} -\@namedef{psds@pentagon*}{% - /r1 DS 1.149 mul def - \pst@gdot{r1 \tx@SP}} -\@namedef{psds@pentagon}{% - DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED - \pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}} -\@namedef{psds@+}{% - /DS DS 1.253 mul def - \pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}} -\@namedef{psds@|}{% - \psk@tbarsize CLW mul add 2 div /DS ED - \pst@gdot{0 DS moveto 0 DS neg L stroke}} -% DG: end dead code? -% -\define@key[psset]{pstricks}{dotstyle}[*]{% - \@ifundefined{psds@#1}% - {\@pstrickserr{Dot style `#1' not defined}\@eha}% - {\edef\psk@dotstyle{#1}}} -\psset[pstricks]{dotstyle=*} -% -\def\tx@FontDot{FontDot } -\def\newpsfontdot#1[#2]#3#4{% - \@namedef{psds@#1}{% - /#3 \psk@@dotangle [#2] \tx@FontDot -% DG/SR modification begin - Dec. 12, 1999 - Patch 14 -%/Dot { moveto #4 show } bind def }} - /Dot { moveto gsave \psk@dotscale #4 show grestore } bind def -}} -% DG/SR modification end -\def\newpsfontdotH#1[#2]#3#4#5{% for filled objects - \@namedef{psds@#1}{% - /#3 \psk@@dotangle [#2] \tx@FontDot - /Dot { - moveto -% \iftrue -% DG/SR modification begin - Dec. 23, 1999 - Patch 14 -%gsave \pst@usecolor\psfillcolor #5 show grestore -%\fi -%#4 show - gsave \psk@dotscale \pst@usecolor\psfillcolor #5 show grestore % fill first -% \fi - gsave \psk@dotscale #4 show grestore % show the unfilled one -% DG/SR modification end - } bind def -}} -% -\pstheader{pst-dots.pro} -\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)} -\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)} -\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)} -\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)} -\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)} -\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)} -\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)} -\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)} -\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)} -\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)} -\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)} -\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)} -% DG/SR modification begin - Mar. 18, 1997 and Dec. 16, 1999 - Patch 14 -%\newpsfontdot{diamond*}[1.9 0.0 0.0 1.9 -0.4598 -0.70775]{StandardSymL}{} -%\newpsfontdot{diamond}[2.3 0.0 0.0 2.3 -0.8533 -0.5336]{StandardSymL}{} -% D.G. modification begin - Jan. 17, 2000 -\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)} -\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)} -\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)} -% DG/SR modification end -\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{StandardSymL}{} -\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{StandardSymL}{} -\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{StandardSymL}{} -\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{NimbusRomNo9L-Regu}{<2B>} -\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{NimbusRomNo9L-Regu}{<2A>} -\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{NimbusRomNo9L-Bold}{<2B>} -\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{NimbusRomNo9L-Bold}{<2A>} -\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{NimbusSanL-Regu}{(|)} -% DG/SR modification begin - Oct. 27, 1997 - Patch 7 -%[1.98413 0.0 0.0 1.98413 -0.258929 -0.712302]{NimbusSanL-Regu}{(|)} -% DG/SR modification end -\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{NimbusSanL-Bold}{(|)}% -% DG/SR modification begin - Oct. 27, 1997 - Patch 7 -%[1.98413 0.0 0.0 1.98413 -0.277778 -0.78302]{NimbusSanL-Bold}{(|)} - -% DG/SR modification end -\iffalse -\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{StandardSymL}{} -\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{StandardSymL}{} -\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{NimbusRomNo9L-Bold}{} -\fi -% Etienne Riga -\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)} -\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)} -\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)} -% -\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)} -\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)} -\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)} -\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)} -\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)} -\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)} -\newpsfontdotH{Octogon}[1 0 0 1 0 0]{PSTricksDotFont}{(f)}{(g)} -\newpsfontdotH{BoldOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(F)}{(g)} -\newpsfontdot{SolidOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(g)} -% -\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)} -\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)} -\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)} -%\newpsfontdot{SolidCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)} -\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)} -\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)} -\newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)} -\newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)} -\newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)} -\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)} -\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)} -\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)} -\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)} -\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)} -\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)} -\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)} -\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)} -\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)} -\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)} -\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)} -\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)} -\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)} -\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)} -\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)} -\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)} -% -\newdimen\pslinearc -\define@key[psset]{pstricks}{linearc}[0pt]{\pssetlength\pslinearc{#1}} -\psset[pstricks]{linearc=0pt} -% -\def\psline{\begingroup\pst@object{psline}} -\def\psline@i{% - \pst@getarrows{% - \begin@OpenObj - \pst@getcoors[\psline@ii - }% -} -\def\psline@ii{% - \ifx\pslinestyle\psls@@symbol\addto@pscode{ \psls@symbol SymbolLine }% - \else - \addto@pscode{ - \ifPst@noCurrentPoint\else\pst@cp\fi % current point? - \psline@iii % arc and lineto type - \tx@Line % .pro function - }% - \fi - \end@OpenObj - \endgroup -} -\def\psline@iii{% - \ifdim\pslinearc>\z@ - /r \pst@number\pslinearc def - /Lineto { \tx@Arcto } def - \else - /Lineto /lineto load def - \fi - \tx@setlinejoin % hv 2007-10-13 - \ifshowpoints true \else false \fi -} -% -\def\psLine{\pst@object{psLine}} -\def\psLine@i{% - \pst@getarrows{% - \begin@OpenObj - \psLine@ii}} -\def\psLine@ii(#1){\@ifnextchar({\psLine@iii(#1)}{\psLine@iii(0,0)(#1)}}% -\def\psLine@iii(#1)(#2){% - \pst@getcoor{#1}\pst@tempA - \pst@getcoor{#2}\pst@tempB - \addto@pscode{ - \ifPst@noCurrentPoint\else\pst@cp\fi % current point? - [ % start for coordinate array - \pst@tempB - \pst@tempA % order vice versa - 4 copy Pyth2 \psk@arrowlength ge - { \psline@iii \tx@Line } - { pop pop pop pop pop } ifelse - }% - \end@OpenObj - \ignorespaces -} -\def\psLineSegments{\leavevmode\pst@killglue\pst@object{psLineSegments}} -\def\psLineSegments@i{\pst@getarrows{\psLineSegments@ii}} -\def\psLineSegments@ii(#1)(#2){% - \begingroup - \use@keep@par - \solid@star - \ifpsdoubleline\pst@setdoublesep\fi - \init@pscode - \let\pst@linetype\pst@arrowtype - \pst@addarrowdef - \pst@getcoor{#1}\pst@tempA - \pst@getcoor{#2}\pst@tempB - \addto@pscode{ - \ifPst@noCurrentPoint\else\pst@cp\fi % current point? - [ % start for coordinate array - \pst@tempB - \pst@tempA % order vice versa - 4 copy Pyth2 \psk@arrowlength ge - { \psline@iii \tx@Line } - { pop pop pop pop pop } ifelse - }% - \end@OpenObj - \ignorespaces - \@ifnextchar(\psLineSegments@ii{}% -}% -\def\pst@isnum#1{\pst@isnum@i\zap@space#1 \@empty\@nil}% -\def\pst@isnum@i#1\@nil{% - \if!\ifnum9<1#1!\else_\fi% - \expandafter\@firstoftwo% - \else% - \expandafter\@secondoftwo% - \fi} -% -\def\psset@@symbol#1#2#3#4\@nil{% - \ifx\relax#4\relax\def\psk@symbol{(#1)}% - \else% - \pst@isnum{#1#2#3}{% - \pst@cnta='#1#2#3\relax% - \ifnum\pst@cnta>'377\relax% - \@pstrickserr{Number too large!}\@ehpb% - \else% - \def\psk@symbol{(\@backslashchar#1#2#3)}% - \fi% -}{\@pstrickserr{Not a number!}\@ehpb}% - \fi} -% -\define@key[psset]{pstricks}{symbol}[a]{\expandafter\psset@@symbol#1!!\@nil} -\psset[pstricks]{symbol=a} -% -\newdimen\pst@symbolStep -\define@key[psset]{pstricks}{symbolStep}[20pt]{\pst@expandafter\pst@@symbolStep#1\@nil} -\def\pst@@symbolStep#1#2\@nil{\if-#1\pssetlength\pst@symbolStep{-#2pt}\else\pssetlength\pst@symbolStep{#1#2}\fi} -\psset[pstricks]{symbolStep=20pt} - -\newdimen\pst@symbolWidth -\newdimen\pst@symbolLinewidth -\define@key[psset]{pstricks}{symbolWidth}[10pt]{\pssetlength\pst@symbolWidth{#1}} -\define@key[psset]{pstricks}{symbolLinewidth}[0.5pt]{\pssetlength\pst@symbolLinewidth{#1}} -\psset[pstricks]{symbolWidth=10pt,symbolLinewidth=0.5pt} - -\define@key[psset]{pstricks}{symbolFont}[Dingbats]{\def\psk@symbolFont{/#1 }} -\psset[pstricks]{symbolFont=Dingbats} -\define@boolkey[psset]{pstricks}[Pst@]{rotateSymbol}[true]{} -\psset[pstricks]{rotateSymbol=false} -\define@key[psset]{pstricks}{startAngle}[0]{\pst@getangle{#1}\psk@startAngle} -\define@key[psset]{pstricks}{tickAngle}[0]{\pst@getangle{#1}\psk@tickAngle} -\psset[pstricks]{startAngle=0,tickAngle=0} -\define@boolkey[psset]{pstricks}[Pst@]{curveticks}[true]{} -\psset[pstricks]{curveticks=false} - -% -\def\psls@symbol{ - /Symbol \psk@symbol def - /SymbolWidth \pst@number\pst@symbolWidth def - /SymbolLinewidth \pst@number\pst@symbolLinewidth def - /SymStep \pst@number\pst@symbolStep def - \psk@symbolFont findfont %0. [1.0 0.0 0.0 1.0 0.0 0.0] - \pst@number\pst@symbolWidth scalefont %dup - setfont - /rotateSymbol \ifPst@rotateSymbol true \else false \fi def - /tickAngle \psk@tickAngle\space def - /startAngle \psk@startAngle\space def - /CorrAngle \ifx\psk@rot\@empty 0 \else \psk@rot \fi def - /curveticks \ifPst@curveticks true \else false \fi def - \pst@number\pslinewidth SLW -} -\def\psls@@symbol{symbol} -% -\def\psPline{\def\pst@par{}\pst@object{psPline}}% perpendicular to another line B-C -\def\psPline@i{% - \pst@getarrows{% - \begin@OpenObj - \pst@getcoors[\psPline@ii}% \pst@coors on stack -} -\def\psPline@ii{% - \addto@pscode{ % [ pC pB pA is on stack - /yA ED /xA ED - /yB ED /xB ED - yB sub exch xB sub div /mBC ED % the slope - /mA 1 mBC neg div def % orthogonal - /xS yA yB sub mBC xB mul add mA xA mul sub mBC mA sub div def - /yS mBC xS xB sub mul yB add def - xS yS xA yA - \ifPst@noCurrentPoint\else\pst@cp\fi % current point - \psline@iii % arc and lineto type - \tx@Line % .pro function - }% - \end@OpenObj% - \ignorespaces% -} -% -\def\qline(#1)(#2){% - \def\pst@par{}% - \begin@SpecialObj - \def\pst@linetype{0}% - \pst@getcoor{#1}\pst@tempa - \pst@@getcoor{#2}% - \addto@pscode{% - \pst@tempa moveto \pst@coor L - \@nameuse{psls@\pslinestyle}% - }% - \end@SpecialObj} -% -\def\pspolygon{\pst@object{pspolygon}} -\def\pspolygon@i{% - \begin@ClosedObj% - \def\pst@cp{}% - \pst@getcoors[\pspolygon@ii% -} -\def\pspolygon@ii{% - \ifx\pslinestyle\psls@@symbol\addto@pscode{ \psls@symbol SymbolPolygon }% - \else \addto@pscode{\psline@iii \tx@Polygon}% - \fi% - \def\pst@linetype{1}% - \end@ClosedObj} -% -\define@key[psset]{pstricks}{framearc}[0]{\pst@checknum{#1}\psk@framearc} -\psset[pstricks]{framearc=0} -% -\define@key[psset]{pstricks}{cornersize}[relative]{\pst@expandafter\psset@@cornersize{#1}\@nil} -\def\psset@@cornersize#1#2\@nil{% - \if #1a\relax - \def\psk@cornersize{\pst@number\pslinearc false }% - \else\def\psk@cornersize{\psk@framearc true }% - \fi} -\psset[pstricks]{cornersize=relative} -% -\def\tx@Rect{Rect } -\def\tx@OvalFrame{OvalFrame } -\def\tx@Frame{Frame } -% -\define@key[psset]{pstricks}{dimen}[outer]{\pst@expandafter\psset@@dimen{#1}\@nil} -\def\psset@@dimen#1#2\@nil{% - \if #1o\relax% outer - \def\psk@dimen{.5 }% - \else - \if #1m\relax% middle - \def\psk@dimen{0 }% - \else - \if #1i\relax% inner - \def\psk@dimen{-.5 }% - \fi\fi\fi} -\psset[pstricks]{dimen=outer} -% -\def\psframe{\pst@object{psframe}} -\def\psframe@i(#1){% - \@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}} -\def\psframe@ii(#1)(#2){% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempa - \pst@@getcoor{#2}% - \addto@pscode{ \psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame }% - \def\pst@linetype{2}% - \showpointsfalse - \end@ClosedObj -} - -\iffalse -\def\psSquare{\pst@object{psSquare}} -\def\psSquare@i(#1)(#2){% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb - \addto@pscode{ \psk@cornersize - \pst@tempa /yA ED /xA ED - \pst@tempb /yB ED /xB ED - xA yA moveto xB yB L - xA xB sub yA yB sub atan /Angle ED - xA yA xB yB Pyth2 dup xA add exch yA add - \psk@dimen - \tx@Frame -% grestore - }% - \def\pst@linetype{2}% - \showpointsfalse - \end@ClosedObj -} -\fi -% -\def\psTextFrame{\pst@object{psTextFrame}} -\def\psTextFrame@i(#1)(#2)#3{% - \addbefore@par{ref=c}% to prevent an empty value - \leavevmode% - \pst@killglue - \begingroup - \use@par - \ifx\psk@yref\relax \def\psk@yref{0}\fi% no Baseline possible - \SpecialCoor - \pst@getcoor{#1}\pst@tempA - \pst@getcoor{#2}\pst@tempB - \if@star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi - \rput(! \pst@tempA \pst@tempB % x1 y1 x2 y2 - exch 4 -1 roll % y1 y2 x2 x1 - dup /x1 ED % y1 y2 x2 x1 - sub /dx ED % y1 y2 - exch dup /y1 ED % y2 y1 - sub /dy ED - x1 dx \psk@xref\space mul add \pst@number\psxunit div - y1 dy \psk@yref\space mul add \pst@number\psyunit div ){#3} - \endgroup - \ignorespaces} -% -\def\tx@BezierNArray{ BezierNArray } -\def\tx@OpenBezier{ OpenBezier } -\def\tx@ClosedBezier{ ClosedBezier } -\def\tx@BezierShowPoints{ BezierShowPoints } -\def\tx@BezierCurve{ BezierCurve } -\def\pst@BezierType{2 } % the default -% -\def\psbezier{\pst@object{psbezier}} -\def\psbezier@i{% - \pst@getarrows{% - \begin@OpenObj - \pst@getcoors[\psbezier@ii% - }% -} -\def\psbezier@ii{% - \addto@pscode{ - \ifPst@noCurrentPoint\else\pst@cp\fi - \ifshowpoints true \else false \fi - \ifx\pslinestyle\psls@@symbol \psls@symbol OpenSymbolBezier - \else - \tx@OpenBezier - \ifshowpoints \tx@BezierShowPoints \fi - \fi - }% - \def\pst@linetype{1}% - \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi% - \end@OpenObj} -% -\def\pscbezier{\def\pst@par{}\pst@object{pscbezier}} -\def\pscbezier@i{% - \begin@ClosedObj - \pst@getcoors[\pscbezier@ii} -% -\def\pscbezier@ii{% - \addto@pscode{% - \ifshowpoints true \else false \fi - \ifx\pslinestyle\psls@@symbol \psls@symbol ClosedSymbolBezier - \else - \tx@ClosedBezier - \ifshowpoints \tx@BezierShowPoints \fi - \fi}% -% \chardef\pst@linetype=1 - \def\pst@linetype{1}% - \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi% - \end@ClosedObj} -% -\iffalse -\define@key[psset]{pstricks}{epsilon}[0.005]{\pst@checknum{#1}\psk@epsilon} -\psset[pstricks]{epsilon=0.005} % 200 steps for one curve -% -\def\psBezier#1{% % allowed order is 1 ... 9 - \ifnum#1>0 \ifnum#1<10 \def\pst@BezierType{#1 }\fi\fi% - \def\pst@par{}\pst@object{psBezier}} -\def\psBezier@i{% - \pst@getarrows{% - \begin@OpenObj - \pst@getcoors[\psBezier@ii% -}} -\def\psBezier@ii{% - \addto@pscode{% - \psk@epsilon % step for Bezier T=0,0+epsilon,0+i*epsilon,...,1 - \pst@BezierType % type of the Bezier curve 2,3,4,... - \tx@BezierCurve - \ifshowpoints \tx@BezierShowPoints \fi - }% - \end@OpenObj} -\fi -% -\define@key[psset]{pstricks}{pType}[0]{\pst@cntg=#1\relax\edef\psk@pType{\the\pst@cntg}} -\psset[pstricks]{pType=0} -\def\tx@Parab{Parab }% given by 1 point and the min/max -\def\tx@Parabo{Parab1 }% given by 2 points for y-a=(x-b)^2 -% -\def\psparabola{\pst@object{psparabola}}% 2009-05-19 (hv) -\def\psparabola@i{\pst@getarrows\psparabola@ii} -\def\psparabola@ii#1(#2)#3(#4){% #2 P #4 SP - \begin@OpenObj - \pst@getcoor{#2}\pst@tempa - \pst@@getcoor{#4}% - \addto@pscode{\pst@tempa \pst@coor - \ifcase\psk@pType - \tx@Parab \or - \tx@Parabo - \fi}% - \end@OpenObj} -\let\parabola\psparabola% compatibility (hv) -% -% -\define@key[psset]{pstricks}{gridwidth}[0.8pt]{\pst@getlength{#1}\psk@gridwidth} -\psset[pstricks]{gridwidth=.8pt} -\define@key[psset]{pstricks}{griddots}[0]{% - \pst@cntg=#1\relax - \edef\psk@griddots{\the\pst@cntg}} -\psset[pstricks]{griddots=0} -\define@key[psset]{pstricks}{gridcolor}[black]{\pst@getcolor{#1}\psgridcolor} -\psset[pstricks]{gridcolor=black} -\define@key[psset]{pstricks}{subgridwidth}[0.4pt]{\pst@getlength{#1}\psk@subgridwidth} -\psset[pstricks]{subgridwidth=0.4pt} -\define@key[psset]{pstricks}{subgridcolor}[gray]{\pst@getcolor{#1}\pssubgridcolor} -\psset[pstricks]{subgridcolor=gray} -\define@key[psset]{pstricks}{subgriddots}[0]{% - \pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}} -\psset[pstricks]{subgriddots=0} -\define@key[psset]{pstricks}{subgriddiv}[5]{% - \pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}} -\psset[pstricks]{subgriddiv=5} -% -\define@key[psset]{pstricks}{gridfont}[NimbusSanL-Regu]{\def\psk@gridfont{/#1 }}% hv 2007-11-13 -\ifpst@psfonts - \psset[pstricks]{gridfont=Helvetica}% -\else - \psset[pstricks]{gridfont=NimbusSanL-Regu}% -\fi -% -\define@key[psset]{pstricks}{gridlabels}[10pt]{\pst@getlength{#1}\psk@gridlabels} -\psset[pstricks]{gridlabels=10pt} -\define@key[psset]{pstricks}{gridlabelcolor}[black]{\pst@getcolor{#1}\psgridlabelcolor} -\psset[pstricks]{gridlabelcolor=black} -\define@key[psset]{pstricks}{xgridoffset}[0]{\pst@getlength{#1}\psk@xgridoffset} -\define@key[psset]{pstricks}{ygridoffset}[0]{\pst@getlength{#1}\psk@ygridoffset} -\psset[pstricks]{xgridoffset=0,ygridoffset=0} - -\def\tx@Grid{Grid } - -\def\psgrid{\pst@object{psgrid}} -\def\psgrid@i{\@ifnextchar({\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}} -\def\psgrid@ii(#1){\@ifnextchar({\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}} -\def\psgrid@iii(#1)(#2){\@ifnextchar({\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}} -\def\psgrid@iv(#1)(#2)(#3){% - \begin@SpecialObj% - \pst@getcoor{#1}\pst@tempA% hv 1.11 - \pst@getcoor{#2}\pst@tempB% hv 1.11 - \pst@@getcoor{#3}% - \ifnum\psk@subgriddiv>1\relax - \addto@pscode{ - /xGridOffset \psk@xgridoffset\space def - /yGridOffset \psk@ygridoffset\space def - gsave - \tx@setStrokeTransparency - \psk@subgridwidth SLW - \pst@usecolor\pssubgridcolor - \pst@tempB \pst@coor \pst@tempA % hv 1.11 -% \pst@number\psxunit \pst@number\psyunit % hv 1.11 - \pst@number\psxunit abs \pst@number\psyunit abs % hv 1.11 - \psk@subgriddiv\space \psk@subgriddots\space - {} 0 - \psk@gridfont findfont 0 scalefont setfont % hv 1.16 - \tx@Grid - grestore - }% - \fi% - \addto@pscode{ - gsave - /xGridOffset \psk@xgridoffset def - /yGridOffset \psk@ygridoffset def - \tx@setStrokeTransparency - \psk@gridwidth SLW - \pst@usecolor\psgridcolor - \pst@tempB \pst@coor \pst@tempA % hv 1.11 - \pst@number\psxunit abs \pst@number\psyunit abs % hv 1.11 -% \pst@number\psxunit \pst@number\psyunit % hv 1.11 - 1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor } - \psk@gridlabels - \psk@gridfont findfont \psk@gridlabels scalefont setfont % hv 1.16 - \tx@Grid - grestore - }% - \end@SpecialObj} -% -\newif\ifpsmathbox -\psmathboxtrue -\def\pst@mathflag{\z@} -\newtoks\everypsbox -\let\pst@thisbox\relax -% -\long\def\pst@makenotverbbox#1#2{% - \edef\pst@mathflag{% - \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else\z@\fi\else\z@\fi}% - \setbox\pst@hbox=\hbox{% - \ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi% - {\pst@thisbox\the\everypsbox#2}% - \ifnum\pst@mathflag>\z@$\fi% $ - }% - #1} -% -\def\pst@makeverbbox#1{% - \def\pst@afterbox{#1}% - \edef\pst@mathflag{\ifpsmathbox\ifmmode\ifinner1\else2\fi\else\z@\fi\else\z@\fi}% - \afterassignment\pst@beginbox% - \setbox\pst@hbox\hbox% -} -\def\pst@beginbox{% - \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi% - \bgroup\aftergroup\pst@endbox% - \pst@thisbox% - \the\everypsbox% -} -\def\pst@endbox{% - \ifnum\pst@mathflag>\z@\relax$\fi% $ - \egroup% - \pst@afterbox% -} -\def\pst@makebox{\pst@@makebox} -\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}} -\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}} -\psverbboxfalse -\def\pst@longbox{% - \def\pst@makebox{% - \gdef\pst@makebox{\pst@@makebox}% - \pst@makelongbox% - }% -} -\def\pst@makelongbox#1{% - \def\pst@afterbox{#1}% - \edef\pst@mathflag{% - \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi% - }% - \setbox\pst@hbox\hbox\bgroup - \aftergroup\pst@afterbox - \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi - \begingroup - \pst@thisbox - \the\everypsbox% -} -\def\pst@endlongbox{% - \endgroup - \ifnum\pst@mathflag>\z@$\fi %$ - \egroup% -} -\def\pslongbox#1#2{% - \@namedef{#1}{\pst@longbox#2}% - \@namedef{end#1}{\pst@endlongbox}} -% -\newdimen\psframesep -\define@key[psset]{pstricks}{framesep}[3pt]{\pssetlength\psframesep{#1}} -\psset[pstricks]{framesep=3pt} -% -\define@boolkey[psset]{pstricks}[ps]{boxsep}[true]{} -\psset[pstricks]{boxsep} -% -\def\pst@useboxpar{% - \use@par - \if@star - \let\pslinecolor\psfillcolor - \solid@star - \let\solid@star\relax - \fi - \ifpsdoubleline \pst@setdoublesep \fi} -% -\def\psframebox{\def\pst@par{}\pst@object{psframebox}} -\def\psframebox@i{\pst@makebox\psframebox@ii} -\def\psframebox@ii{% - \begingroup - \pst@useboxpar - \pst@dima=\pslinewidth - \advance\pst@dima by \psframesep - \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima - \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima - \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima - \setbox\pst@hbox=\hbox{% - \ifpsboxsep\kern\pst@dima\fi - \begin@ClosedObj - \addto@pscode{% - \psk@cornersize % arcradius boolean - \pst@number\pst@dima neg - \pst@number\pst@dimb neg - \pst@number\pst@dimc - \pst@number\pst@dimd - .5 - \tx@Frame% - }% - \def\pst@linetype{2}% - \showpointsfalse - \end@ClosedObj - \box\pst@hbox - \ifpsboxsep\kern\pst@dima\fi% - }% - \ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi - \leavevmode\box\pst@hbox - \endgroup} -% -\def\psdblframebox{\def\pst@par{}\pst@object{psdblframebox}} -\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i} -% -\define@key[psset]{pstricks}{clipcommand}[clip]{\def\pst@clipcommand{#1 }} -\psset[pstricks]{clipcommand=clip}% alternative is eoclip -% -\def\psclip{\@ifnextchar[\psclip@i{\psclip@i[]}}% -\def\psclip@i[#1]#2{% - \leavevmode% - \begingroup% - \ifx\relax#1\relax\else\psset{#1}\fi% - \begin@psclip% - \begingroup% - \def\use@pscode{% - \pstVerb{ - \pst@dict - /mtrxc CM def - CP CP T - \tx@STV - \psk@origin - \psk@swapaxes - newpath - \pst@code - \pst@clipcommand - newpath - mtrxc setmatrix - moveto - 0 setgray - end - }% - \gdef\pst@code{}}% - \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}% - \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}% - \hbox to\z@{#2}% - \endgroup% - \def\endpsclip{% - \end@psclip% - \endgroup}% - \ignorespaces} -% -\def\endpsclip{\pst@misplaced\endpsclip} -\let\begin@psclip\relax -\def\end@psclip{\pstVerb{currentpoint initclip moveto}} -% -\def\AltClipMode{% - \def\end@psclip{\pstVerb{\pst@grestore}}% - \def\begin@psclip{\pstVerb{gsave}}} - \def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}} -% DG modification begin - Apr. 3, 1997 -% From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus) -%\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}} -\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}} -% DG modification end -\def\clipbox@@#1{% - \pssetlength\pst@dimg{#1}% - \leavevmode\hbox{% - \begin@psclip% - \pst@Verb{ - CM \tx@STV CP T newpath - /a \pst@number\pst@dimg def - /w \pst@number{\wd\pst@hbox}a add def - /d \pst@number{\dp\pst@hbox}a add neg def - /h \pst@number{\ht\pst@hbox}a add def - a neg d moveto - a neg h L - w h L - w d L - closepath - \pst@clipcommand - newpath - 0 0 moveto - setmatrix}% - \unhbox\pst@hbox% - \end@psclip}} -% -\def\psshadowbox{\def\pst@par{}\pst@object{psshadowbox}} -\def\psshadowbox@i{\pst@makebox\psshadowbox@ii} -\def\psshadowbox@ii{% -\begingroup -\pst@useboxpar -\psshadowtrue -\psboxseptrue -\def\psk@shadowangle{-45 }% -\setbox\pst@hbox=\hbox{\psframebox@ii}% -\pst@dimh=\psk@shadowsize\p@ -\pst@dimh=.7071\pst@dimh -\pst@dimg=\dp\pst@hbox -\advance\pst@dimg\pst@dimh -\dp\pst@hbox=\pst@dimg -\pst@dimg=\wd\pst@hbox -\advance\pst@dimg\pst@dimh -\wd\pst@hbox=\pst@dimg -\leavevmode -\box\pst@hbox -\endgroup} -% -\def\pscirclebox{\pst@object{pscirclebox}} -\def\pscirclebox@i{\pst@makebox\pscirclebox@ii} -\def\pscirclebox@ii{% - \begingroup - \pst@useboxpar - \setbox\pst@hbox=\hbox{% - \pst@nodehook - \pscirclebox@iii - \box\pst@hbox}% - \ifpsboxsep\pscirclebox@sep\fi - \leavevmode - \box\pst@hbox - \endgroup - \ignorespaces -} -\def\pscirclebox@iii{% -\if@star - \pslinewidth\z@ - \pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor - newpath \pscirclebox@iv \tx@SD end}% -\else - \begin@ClosedObj - \def\pst@linetype{4}\showpointsfalse - \addto@pscode{ \pscirclebox@iv\space CLW 2 div add 0 360 arc closepath}% - \end@ClosedObj -\fi -} -% -\def\pscirclebox@iv{ - \pst@number{\wd\pst@hbox} 2 div - \pst@number{\ht\pst@hbox} \pst@number{\dp\pst@hbox} add 2 div - 2 copy \pst@number{\dp\pst@hbox} sub 4 2 roll - \tx@Pyth \pst@number\psframesep add } -% -\def\pscirclebox@sep{% - \pst@dimn=\ht\pst@hbox% % the height of the box - \advance\pst@dimn by \dp\pst@hbox% % the depth of the box added to \pst@dimn - \divide\pst@dimn by 2% % \pst@dimn/2 - \pst@dimm=0.5\wd\pst@hbox% % the half of the width - \pst@Pyth\pst@dimm\pst@dimn\pst@dimo% % the diameter - \advance\pst@dimo by \pslinewidth% - \advance\pst@dimo by \psframesep% - \advance\pst@dimn by -\pst@dimo% - \setbox\pst@hbox=\hbox to 2\pst@dimo{\hss\vbox{\kern-\pst@dimn\box\pst@hbox}\hss}% - \advance\pst@dimn by -\dp\pst@hbox% - \dp\pst@hbox=-\pst@dimn} -% -\let\pst@nodehook\relax -% -\def\psCirclebox{\def\pst@par{}\pst@object{psCirclebox}} -\def\psCirclebox@i{\pst@makebox\psCirclebox@ii} -\def\psCirclebox@ii{% - \begingroup - \pst@useboxpar - \pst@dima=\ht\pst@hbox - \advance\pst@dima by -\dp\pst@hbox - \divide\pst@dima\tw@ - \pssetlength\pst@dimb\psk@radius - \setbox\pst@hbox=\hbox{% - \pst@nodehook - \pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}% - \box\pst@hbox}% - \ifpsboxsep \psCirclebox@sep \fi - \leavevmode - \box\pst@hbox - \endgroup -} -% -\def\psCirclebox@sep{% - \pst@dimc=\pst@dimb - \advance\pst@dimb-\pst@dima - \advance\pst@dima\pst@dimc - \setbox\pst@hbox=\hbox to\tw@\pst@dimc{% - \hss\vrule width \z@ depth \pst@dimb height \pst@dima - \box\pst@hbox\hss}} -% -\def\psovalbox{\def\pst@par{}\pst@object{psovalbox}} -\def\psovalbox@i{\pst@makebox{\psovalbox@ii}} -\def\psovalbox@ii{% - \begingroup - \pst@useboxpar - \psovalbox@iii - \ifpsboxsep\psovalbox@sep\fi - \leavevmode - \box\pst@hbox - \endgroup} -% -\def\psovalbox@iii{% - \psovalbox@iv - \setbox\pst@hbox=\hbox{% - \begin@ClosedObj - \addto@pscode{% - 0 360 - \pst@number\pst@dimc CLW 2 div sub - \pst@number\pst@dimd CLW 2 div sub - \pst@number\pst@dima - \pst@number\pst@dimb - \tx@Ellipse - closepath }% - \def\pst@linetype{2}% - \end@ClosedObj - \unhbox\pst@hbox}} -% -\def\psovalbox@iv{% - \pst@dimc=\pslinewidth\advance\pst@dimc\psframesep - \pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox - \pst@dima=.5\wd\pst@hbox - \pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox - \pst@dimd=.707\pst@dimd - \advance\pst@dimd\pst@dimc - \advance\pst@dimc.707\wd\pst@hbox} -% -\def\psovalbox@sep{% - \setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}% - \pst@dimg=\pst@dimd - \advance\pst@dimg-\pst@dimb - \dp\pst@hbox=\pst@dimg - \advance\pst@dimd\pst@dimb - \ht\pst@hbox=\pst@dimd} -% -\def\psdiabox{\def\pst@par{}\pst@object{psdiabox}} -\def\psdiabox@i{\pst@makebox{\psdiabox@ii}} -\def\psdiabox@ii{% -\begingroup -\pst@useboxpar -\psdiabox@iii -\ifpsboxsep\psdiabox@sep\fi -\leavevmode -\box\pst@hbox -\endgroup} -\def\psdiabox@iv{% -\pst@dimg=.707\pslinewidth -\advance\pst@dimg.707\psframesep -\pst@dima=\wd\pst@hbox -\divide\pst@dima 2 -\pst@dimc=\pst@dima -\advance\pst@dimc\pst@dimg -\pst@dimd=\ht\pst@hbox -\advance\pst@dimd\dp\pst@hbox -\divide\pst@dimd 2 -\pst@dimb=\pst@dimd -\advance\pst@dimb-\dp\pst@hbox -\advance\pst@dimd\pst@dimg} -\def\psdiabox@iii{% -\psdiabox@iv -\setbox\pst@hbox=\hbox{% -\begin@ClosedObj -\addto@pscode{% -\psline@iii -pop -.5 -\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul -0 -\pst@number\pst@dima \pst@number\pst@dimb -\tx@Diamond}% -\def\pst@linetype{4}% -\end@ClosedObj -\box\pst@hbox}} -\def\psdiabox@sep{% -\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}% -\multiply\pst@dimd 2 -\advance\pst@dimd\pst@dimb -\ht\pst@hbox\pst@dimd -\advance\pst@dimd-2\pst@dimb -\dp\pst@hbox\pst@dimd} -% -\define@key[psset]{pstricks}{trimode}[U]{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil} -\def\psset@@trimode#1#2#3\@nil{% - \let\pst@tempg#1\relax - \ifx\pst@tempg* - \let\psk@@trimode\@empty - \let\pst@tempg#2\relax - \else - \let\psk@@trimode\relax - \fi - \edef\psk@trimode{% - \ifx R\pst@tempg 1 % Right - \else - \ifx D\pst@tempg 2 % Down - \else - \ifx L\pst@tempg 3 % Left - \else - \ifx l\pst@tempg 4 % |_ - \else - \ifx r\pst@tempg 5 % _| - \else 0 \fi % Up - \fi - \fi - \fi - \fi}% -} -\psset[pstricks]{trimode=U} -% -\def\pstribox{\pst@object{pstribox}} -\def\pstribox@i{\pst@makebox{\pstribox@ii}} -\def\pstribox@ii{% - \begingroup - \pst@useboxpar - \pstribox@iii - \ifpsboxsep\pstribox@sep\fi - \leavevmode - \box\pst@hbox - \endgroup} -% -\def\pstribox@iii{% - \pstribox@iv - \setbox\pst@hbox=\hbox{% - \begin@ClosedObj - \addto@pscode{ - \psline@iii - pop - 0.5 - \pst@number\pst@dimc % Width - \pst@number\pst@dimd % Height - \ifcase\psk@trimode - \or %% 0 - exch \or %% 1 - \or %% 2 - exch \or %% 3 - \or %% 4 - \or %% 5 - \fi - \psk@trimode -90 mul - \pst@number\pst@dima % x coor for text - \pst@number\pst@dimb % y coor for text - \tx@Triangle}% - \def\pst@linetype{2}% - \end@ClosedObj - \box\pst@hbox}% -} -% -\def\pstribox@iv{% - \pst@dimh=\pslinewidth - \advance\pst@dimh\psframesep - \pst@dimg=\ht\pst@hbox - \advance\pst@dimg-\dp\pst@hbox % totalheight - \divide\pst@dimg 2 % 0.5 totalheight - \edef\pst@tempa{\number\pst@dimg sp}% % For use by nodes. - \ifodd\psk@trimode % - \pst@dimb\pst@dimg - \else - \pst@dima=\wd\pst@hbox - \divide\pst@dima 2 - \fi - \ifcase\psk@trimode - \pst@dimb=-\dp\pst@hbox - \advance\pst@dimb-\pst@dimh - \or\pst@dima=-\pst@dimh - \or\pst@dimb=\ht\pst@hbox - \advance\pst@dimb\pst@dimh - \or\pst@dima=\wd\pst@hbox - \advance\pst@dima\pst@dimh - \fi - \pst@dimd=\dp\pst@hbox - \advance\pst@dimd\ht\pst@hbox - \ifx\psk@@trimode\relax% no star for trimode= - \pst@dimc=\wd\pst@hbox - \advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh - \multiply\pst@dimc 2 - \advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh - \multiply\pst@dimd 2 - \else% trimode=R*,L*,U*,D* - \ifodd\psk@trimode - \advance\pst@dimd 1.1547\wd\pst@hbox - \advance\pst@dimd 3.4641\pst@dimh - \pst@dimc=.866\pst@dimd - \else - \advance\pst@dimd .866\wd\pst@hbox %.866=(sqrt(3)/2) - \advance\pst@dimd 3\pst@dimh - \pst@dimc=1.1547\pst@dimd % 1.1547=(2/sqrt(3)) - \fi - \fi} -% -\def\pstribox@sep{% -\ifodd\psk@trimode -\advance\pst@dimb.5\pst@dimd -\ht\pst@hbox=\pst@dimb -\advance\pst@dimd-\pst@dimb -\dp\pst@hbox=\pst@dimd -\else -\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}% -\global\pst@dimg=.5\pst@dimc -\fi -\ifcase\psk@trimode -\dp\pst@hbox-\pst@dimb -\advance\pst@dimd\pst@dimb -\ht\pst@hbox\pst@dimd -\or -\pst@dimg=.5\wd\pst@hbox -\global\advance\pst@dimg-\pst@dima -\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}% -\or -\ht\pst@hbox\pst@dimb -\advance\pst@dimd-\pst@dimb -\dp\pst@hbox\pst@dimd -\or -\pst@dimg=\pst@dimc -\advance\pst@dimg-\pst@dima -\global\advance\pst@dimg.5\wd\pst@hbox -\setbox\pst@hbox\hbox to \pst@dimc{% -\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}% -\fi} -% -\define@key[psset]{pstricks}{arcsepA}[0]{\pst@getlength{#1}\psk@arcsepA} -\define@key[psset]{pstricks}{arcsepB}[0]{\pst@getlength{#1}\psk@arcsepB} -\define@key[psset]{pstricks}{arcsep}[0]{% - \pst@getlength{#1}\psk@arcsepA\let\psk@arcsepB\psk@arcsepA} -\psset[pstricks]{arcsep=0} -\def\tx@ArcArrow{ArcArrow } -% -\def\psarc{\pst@object{psarc}} -\def\psarc@i{\@ifnextchar({\psarc@iii}{\psarc@ii}} -\def\psarc@ii#1{\addto@par{arrows=#1}\@ifnextchar(\psarc@iii{\psarc@iii(0,0)}} -\def\psarc@iii(#1)#2#3#4{% - \pst@getangle{#3}\pst@tempa - \pst@getangle{#4}\pst@tempb - \ifx\pst@tempa\pst@tempb - \else - \begin@OpenObj - \pst@@getcoor{#1}% - \pssetlength\pst@dima{#2}% - \addto@pscode{\psarc@iv \psarc@v - \ifPst@variableLW \pst@flattenpath \fi - }% - \gdef\psarc@type{0}% - \showpointsfalse - \end@OpenObj - \fi -} -% -\def\psarcOA{\pst@object{psarcOA}}% \psarcOA[..](O)(A){angle1}{angle2} -\def\psarcOA@i{\@ifnextchar({\psarcOA@iii}{\psarcOA@ii}} -\def\psarcOA@ii#1{\addto@par{arrows=#1}\@ifnextchar(\psarcOA@iii{\psarcOA@iii(0,0)}} -\def\psarcOA@iii(#1)(#2)#3#4{% - \pst@getangle{#3}\pst@tempa - \pst@getangle{#4}\pst@tempb - \ifx\pst@tempa\pst@tempb - \else - \begin@OpenObj - \pst@getcoor{#1}\pst@tempA - \pst@getcoor{#2}\pst@tempB - \addto@pscode{ - \pst@tempA 2 copy /y ED /x ED \pst@tempB Pyth2 /r ED - x y translate - /c 57.2957 r \tx@Div def - /angleA - \pst@tempa - \psk@arcsepA c mul 2 div - \ifcase\psarc@type add \or sub \fi def - /angleB - \pst@tempb - \psk@arcsepB c mul 2 div - \ifcase\psarc@type sub \or add \fi def - \ifshowpoints\psarc@showpoints\fi - \ifx\psk@arrowA\@empty - \ifnum\psk@liftpen=2 - r angleA \tx@PtoC moveto - \fi - \fi - /angleAtoB angleB angleA gt { true }{ false } ifelse def - 0 0 r - angleA - \ifx\psk@arrowA\@empty\else - { ArrowA CP } - r 0 gt \pslbrace - { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace - { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse -% { \ifcase\psarc@type add \or sub \fi } - \tx@ArcArrow -% dup AngleA gt AngleAtoB exor { neg } fi - \fi - angleB - \ifx\psk@arrowB\@empty\else - { ArrowB } - r 0 gt \pslbrace - { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace - { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse -% { \ifcase\psarc@type sub \or add \fi } - \tx@ArcArrow - dup angleA gt angleAtoB xor { pop angleA } if - \fi - \ifcase\psarc@type arc \or arcn \fi - \ifPst@variableLW \pst@flattenpath \fi - x neg y neg translate - }% - \gdef\psarc@type{0}% - \showpointsfalse - \end@OpenObj - \fi -} -\def\psarc@iv{% - \pst@coor /y ED /x ED - /r \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dima \fi def - /c 57.2957 r \tx@Div def - /angleA - \pst@tempa - \psk@arcsepA c mul 2 div - \ifcase\psarc@type add \or sub \fi - def - /angleB - \pst@tempb - \psk@arcsepB c mul 2 div - \ifcase\psarc@type sub \or add \fi - def - \ifshowpoints\psarc@showpoints\fi - \ifx\psk@arrowA\@empty - \ifnum\psk@liftpen=2 - r angleA \tx@PtoC - y add exch x add exch moveto - \fi - \fi} -% hv ---- 1.10 2005-05-05 ----------------------> hv begin -\def\psarc@v{% - /angleAtoB angleB angleA gt { true }{ false } ifelse def - x y r - angleA - \ifx\psk@arrowA\@empty\else - { ArrowA CP } - r 0 gt \pslbrace - { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace - { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse -% { \ifcase\psarc@type add \or sub \fi } - \tx@ArcArrow -% dup AngleA gt AngleAtoB exor { neg } fi - \fi - angleB - \ifx\psk@arrowB\@empty\else - { ArrowB } - r 0 gt \pslbrace - { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace - { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse -% { \ifcase\psarc@type sub \or add \fi } - \tx@ArcArrow - dup angleA gt angleAtoB xor { pop angleA } if - \fi - \ifcase\psarc@type arc \or arcn \fi -} -% hv ----- 1.10 2005-05-05 ------------------------> end -% -\def\psarc@type{0} -\def\psarc@showpoints{% - gsave - newpath - x y moveto - x y r \pst@tempa \pst@tempb - \ifcase\psarc@type arc \or arcn \fi - closepath - CLW 2 div SLW - [ \psk@dash\space ] 0 setdash stroke - grestore } -\def\psarcn{\def\pst@par{}\pst@object{psarcn}} -\def\psarcn@i{\def\psarc@type{1}\psarc@i} -% -\def\psarcAB{\pst@object{psarcAB}}% hv 2008-11-26 -\def\psarcAB@i{% - \addbefore@par{psscale=1}% be sure, that it is defined - \pst@getarrows{% - \begin@OpenObj% - \pst@getcoors{}% - \psarcAB@ii - }% -} -\def\psarcAB@ii{% - \addto@pscode{ - /y ED /x ED /yA ED /xA ED /yB ED /xB ED - /r xB yB x y Pyth2 \psk@psscale\space mul def - /c 57.2957 r \tx@Div def - /angleA - yA y sub xA x sub atan - \psk@arcsepA c mul 2 div - \ifcase\psarc@type add \else sub \fi - def - /angleB - yB y sub xB x sub atan - \psk@arcsepB c mul 2 div - \ifcase\psarc@type sub \else add \fi - def - \ifx\psk@arrowA\@empty - \ifnum\psk@liftpen=2 - r angleA \tx@PtoC - y add exch x add exch moveto - \fi - \fi - \psarc@v}% - \gdef\psarc@type{0}% - \showpointsfalse% - \end@OpenObj% -} -\def\psarcnAB{\def\pst@par{}\pst@object{psarcnAB}} -\def\psarcnAB@i{\def\psarc@type{1}\psarcAB@i} -% -%------------------ tvz/DG/hv (2004-05-10) begin -------------------%% -% from Denis Giroux: http://www.tug.org/pipermail/pstricks/2001/000507.html -% -% I - Definition of \psellipticwedge, a generalization of \pswedge for wedges -% of ellipses (from the code of \pswedge and \psellipse) -% -\def\psellipticwedge{\pst@object{psellipticwedge}} -\def\psellipticwedge@i(#1){% - \@ifnextchar({\psellipticwedge@ii(#1)}{\psellipticwedge@ii(0,0)(#1)}} -\def\psellipticwedge@ii(#1)(#2)#3#4{% - \begin@ClosedObj - \pst@getangle{#3}\pst@tempa - \pst@getangle{#4}\pst@tempb - \pst@getcoor{#1}\pst@tempc - \pst@@getcoor{#2}% - \def\pst@linetype{1}% - \addto@pscode{% - \pst@coor /ry ED /rx ED - \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi - \pst@tempa - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempa } - { rx abs ry abs sub cvi 0 eq { \pst@tempa }{ rx ry - \tx@UserCoor exch \pst@tempa tan mul exch atan - \pst@tempa 180 div 0.5 add floor - 180 mul sub } ifelse } ifelse - \fi - \pst@tempb - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempb } - { rx abs ry abs sub cvi 0 eq { \pst@tempb }{ rx ry - \tx@UserCoor exch \pst@tempb tan mul exch atan - \pst@tempb 180 div 0.5 add floor - 180 mul sub } ifelse } ifelse - \fi - rx ry - \pst@tempc moveto - \ifdim\psk@dimen\p@=\z@\else - \psk@dimen CLW mul dup 3 1 roll - sub 3 1 roll sub exch - \fi - \pst@tempc - \tx@Ellipse - closepath - }% - \showpointsfalse - \end@ClosedObj% -} -% -% Code mainly from "pstricks.tex'' 0.94 beta (TvZ) -% -\def\psellipticarcn{\pst@object{psellipticarcn}} -\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii} -% -\def\psellipticarc{\pst@object{psellipticarc}} -\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii} - -\define@boolkey[psset]{pstricks}[Pst@]{correctAngle}[true]{} -\psset{correctAngle} - -\let\if@psarcn\iffalse - -\def\psellipticarc@ii{\pst@getarrows\psellipticarc@iii} -\def\psellipticarc@iii(#1){% - \@ifnextchar({\psellipticarc@iv(#1)}{\psellipticarc@iv(0,0)(#1)}} -\def\psellipticarc@iv(#1)(#2)#3#4{% -% \addbefore@par{correctAngle=false} - \pst@getangle{#3}\pst@tempc % start angle - \pst@getangle{#4}\pst@tempd % end angle - \ifx\pst@tempc\pst@tempd - \else % same angles? then do nothing - \begin@OpenObj - \pst@getcoor{#1}\pst@tempa % origin - \pst@getcoor{#2}\pst@tempb % a b - \addto@pscode{ - \psellipticarc@definearg \psellipticarc@draw - \ifPst@variableLW \pst@flattenpath \fi - \ifshowpoints{} - gsave - xOrig yOrig T % set origin to ellipse origin - \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi - rx ry scale % now we draw a circle :-) - 1 \pst@tempc % start angle - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempc } - { rx abs ry abs sub cvi 0 eq { \pst@tempc }{ rx ry - \tx@UserCoor exch \pst@tempc tan mul exch atan - \pst@tempc 180 div 0.5 add floor - 180 mul sub } ifelse } ifelse - \fi - PtoC moveto - 0 0 lineto - 1 \pst@tempd % end angle - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempd } - { rx ry \tx@UserCoor exch \pst@tempd tan mul exch atan - \pst@tempd 180 div .5 add floor 180 mul sub } ifelse - \fi - PtoC lineto 0 0 lineto - closepath - % \ifcase\psarc@type arc \or arcn \fi - CLW 3 div \pst@number\psunit div SLW - [ 1 1 \tx@UserCoor 2 mul ] 0 setdash - stroke - grestore - \fi - }% - \showpointsfalse - \end@OpenObj - \fi -} -\def\psellipticarc@definearg{% -% \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi - \pst@tempa /yOrig ED /xOrig ED % Origin - \pst@tempb % radii. Now adjust: - \ifdim\psk@dimen\p@=\z@\else - \psk@dimen CLW mul dup 3 1 roll - sub 3 1 roll sub exch - \fi - /ry ED /rx ED % a b - /angleA - /d { \if@psarcn sub \else add \fi } def -% \pst@tempc -% the angle in the parameter equation is not proportional to the real angle! -% phi=atan(b*tan(angle)/a)+floor(angle/180+0.5)*180 - \pst@tempc - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempc } - { rx ry \tx@UserCoor exch \pst@tempc tan mul exch atan - \pst@tempc 180 div .5 add floor 180 mul sub } ifelse - \fi - \psk@arcsepA 2 div - ArcAdjust - def - /angleB - /d { \if@psarcn add \else sub \fi } def -% \pst@tempd - \pst@tempd - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempd } - { rx ry \tx@UserCoor exch \pst@tempd tan mul exch atan - \pst@tempd 180 div .5 add floor 180 mul sub } ifelse - \fi - \psk@arcsepB 2 div ArcAdjust def -% \ifshowpoints\psellipticarc@showpoints\fi - \ifx\psk@arrowA\@empty - \ifnum\psk@liftpen=2 - angleA cos rx mul xOrig add - angleA sin ry mul yOrig add - moveto - \fi% - \fi% -} -\def\psellipticarc@draw{% - 0 0 1 - angleA - \ifx\psk@arrowA\@empty\else - { ArrowA CP } - { \if@psarcn sub \else add \fi } - EllipticArcArrow - \fi - angleB - \ifx\psk@arrowB\@empty\else - { ArrowB } - { \if@psarcn add \else sub \fi } - EllipticArcArrow - \fi - /mtrx CM def - xOrig yOrig T - \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi - rx ry scale - \pst@ifcustom\else - 0 0 moveto - exch dup dup % end start start start - cos exch sin moveto % end start - exch % start end - \fi -%% \if@star 0 0 moveto \fi % for filling - \if@psarcn arcn \else arc \fi -%% \if@star 0 0 moveto \fi - mtrx setmatrix% -} -\def\psellipticarc@showpoints{% - gsave - /mtrx CM def - xOrig yOrig T - rx ry scale - 0 0 moveto - 0 0 1 - \pst@tempc % start angle - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempc } - { rx abs ry abs sub cvi 0 eq { \pst@tempc }{ rx ry - \tx@UserCoor exch \pst@tempc tan mul exch atan - \pst@tempc 180 div 0.5 add floor - 180 mul sub } ifelse } ifelse - \fi - \pst@tempd % end angle - \ifPst@correctAngle - cvi 90 mod 0 eq { \pst@tempd } - { rx abs ry abs sub cvi 0 eq { \pst@tempd } { rx ry - \tx@UserCoor exch \pst@tempd tan mul exch atan - \pst@tempd 180 div 0.5 add floor - 180 mul sub } ifelse } ifelse - \fi - \ifcase\psarc@type arc \or arcn \fi - closepath - mtrx setmatrix - CLW 2 div SLW - [ \psk@dash\space ] 0 setdash - stroke - grestore % -} -\def\pscircle{\def\pst@par{}\pst@object{pscircle}} -\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}} -\def\pscircle@do(#1)#2{% - \if@star{\use@par\qdisk(#1){#2}}% qdisk does not allow - \else% to use opacity option - \addbefore@par{dimen=middle}% - \begin@ClosedObj - \pst@@getcoor{#1}% - \pssetlength\pst@dimc{#2}% - \def\pst@linetype{4}% - \addto@pscode{ - \pst@coor 2 copy moveto - \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimc \fi - \psk@dimen CLW mul round % prevent rounding errors - sub - dup 0 rmoveto - 0 360 arc - \ifPst@variableLW \pst@flattenpath \fi - closepath - }% - \showpointsfalse - \end@ClosedObj - \fi - \ignorespaces} -% -\def\pscircleOA{\def\pst@par{}\pst@object{pscircleOA}}% hv 2008-04-14 -\def\pscircleOA@i(#1)(#2){% - \addbefore@par{dimen=middle}% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempA - \pst@@getcoor{#2}% - \def\pst@linetype{4}% - \addto@pscode{ - \pst@tempA % x0 y0 - 2 copy % xO yO xO yO - \pst@coor % xO yO xO yO xA yA - Pyth2 % xO yO radius - \psk@dimen CLW mul sub - \if@star \tx@SD \else - 0 360 arc - closepath - \fi }% - \showpointsfalse - \end@ClosedObj - \ignorespaces} -% -\def\qdisk(#1)#2{% - \def\pst@par{}% - \begin@SpecialObj - \pst@@getcoor{#1}% - \pssetlength\pst@dimg{#2}% - \addto@pscode{ - \pst@coor - \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimg \fi -% \pst@number\pst@dimg - \tx@SD }% - \end@SpecialObj} -% -\define@key[psset]{pstricks}{radius}[0.25cm]{\pst@@getlength{#1}\psk@radius} -\psset[pstricks]{radius=.25cm} -% -\def\psCircle{\pst@object{psCircle}}% same as \pscircle, but uses \psk@radius -\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}} -\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}} -% -\def\psRing{\def\pst@par{}\pst@object{psRing}}%% hv 20130405 -\def\psRing@i{\@ifnextchar({\psRing@ii}{\psRing@ii(0,0)}} -\def\psRing@ii(#1){% - \pst@@getcoor{#1}% - \@ifnextchar[{\psRing@iii}{\psRing@iii[0,360]}} -\def\psRing@iii[#1,#2]#3#4{% origin, inner radius, outer radius - \begin@ClosedObj - \pssetlength\pst@dimc{#3}% - \edef\pst@tempA{\ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimc \fi}% - \pssetlength\pst@dimd{#4}% - \edef\pst@tempB{\ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimd \fi}% - \pst@getangle{#1}\pst@tempa - \pst@getangle{#2}\pst@tempb - \def\pst@linetype{4}% - \addto@pscode{ - \pst@coor translate -% \pst@number\pst@dimc \psk@dimen CLW mul sub /InnerRadius ED -% \pst@number\pst@dimd \psk@dimen CLW mul sub /OuterRadius ED - \pst@tempA\space \psk@dimen CLW mul sub /InnerRadius ED - \pst@tempB\space \psk@dimen CLW mul sub /OuterRadius ED - InnerRadius 0 moveto newpath - 0 0 InnerRadius \pst@tempa\space \pst@tempb\space arc - OuterRadius \pst@tempb\space PtoC - \pst@tempb\space \pst@tempa\space sub abs 360 eq { moveto }{ lineto } ifelse % whole circle or not?? - 0 0 OuterRadius \pst@tempb\space \pst@tempa\space arcn - closepath - }% - \showpointsfalse - \end@ClosedObj - \ignorespaces} -% -\def\pswedge{\def\pst@par{}\pst@object{pswedge}} -\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}} -\def\pswedge@ii(#1)#2#3#4{% - \begin@ClosedObj - \pssetlength\pst@dimc{#2}% - \pst@getangle{#3}\pst@tempa - \pst@getangle{#4}\pst@tempb - \pst@@getcoor{#1}% - \def\pst@linetype{1}% - \addto@pscode{ - \ifx\psk@rot\@empty 0 \else \psk@rot \fi rotate - \pst@coor - 2 copy - moveto - \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimc \fi - \psk@dimen CLW mul sub % Adjusted radius - \pst@tempa \pst@tempb - arc - closepath}% - \showpointsfalse - \end@ClosedObj -} -\def\tx@ellipse#1{ \ifx\psk@rot\@empty 0 \else \psk@rot \fi #1 Ellipse } -\def\tx@Ellipse{ \ifx\psk@rot\@empty 0 \else \psk@rot \fi Ellipse } -% -\def\psellipse{\def\pst@par{}\pst@object{psellipse}} -\def\psellipse@i(#1){\@ifnextchar({\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}} -\def\psellipse@ii(#1)(#2){% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempa - \pst@@getcoor{#2}% - \addto@pscode{ - 0 360 - \pst@coor - \ifdim\psk@dimen\p@=\z@\else - \psk@dimen CLW mul - dup 4 -1 roll sub neg 3 1 roll sub - \fi - \pst@tempa - \tx@ellipse{true} - \ifPst@variableLW \pst@flattenpath \fi - closepath - }% - \def\pst@linetype{2}% - \end@ClosedObj% -} -\def\psellipseAB{\def\pst@par{}\pst@object{psellipseAB}} -\def\psellipseAB@i(#1)(#2)#3{% - \begin@ClosedObj - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb - \addto@pscode{ - 0 360 - #3 \pst@number\psxunit mul - \pst@tempa /yA ED /xA ED - \pst@tempb /yB ED /xB ED - xA xB sub dup mul - yA yB sub dup mul add sqrt 2 div - \ifdim\psk@dimen\p@=\z@\else - \psk@dimen CLW mul - dup 4 -1 roll sub neg 3 1 roll sub - \fi - xA xB add 2 div yA yB add 2 div - translate 0 0 - xB xA sub yA yB sub atan - Ellipse % on stack is rotate coordinates - \ifPst@variableLW \pst@flattenpath \fi - closepath - }% - \def\pst@linetype{2}% - \end@ClosedObj -} -\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}} -\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii} -\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}} -\long\def\multips@iii(#1)(#2)#3#4{% - \begingroup -%----------------- hv 1.10 ------------------ - \pst@killglue -%----------------- hv 1.10 ------------------ - \use@par - \pst@getcoor{#1}\pst@tempa - \pst@@getcoor{#2}% - \pst@cnta=#3\relax - \init@pscode - \addto@pscode{% - \pst@tempa T \the\pst@cnta\space \pslbrace - gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}% - \hbox to\z@{% - \def\init@pscode{% - \addto@pscode{% - gsave - \pst@number\pslinewidth SLW - \pst@usecolor\pslinecolor}}% - \def\use@pscode{\addto@pscode{grestore}}% - \def\psclip##1{\pst@misplaced\psclip}% - \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}% - #4% - }% - \addto@pscode{grestore \pst@coor T \psrbrace repeat}% - \leavevmode - \use@pscode - \endgroup - \ignorespaces} -\def\psscalebox#1{\pst@makebox{\ps@scalebox{#1}}} -\def\ps@scalebox#1{% - \begingroup% - \pst@getscale{#1}\pst@tempa% - \let\pst@tempc\pst@tempg% - \let\pst@tempd\pst@temph% - \ps@@scalebox% - \endgroup} -\def\ps@@scalebox{% - \leavevmode% - \hbox{% - \ifdim\pst@tempd\p@<\z@% - \pst@dimg=\pst@tempd\ht\pst@hbox% - \pst@dimh=\pst@tempd\dp\pst@hbox% - \dp\pst@hbox=-\pst@dimg% - \ht\pst@hbox=-\pst@dimh% - \else% - \ht\pst@hbox=\pst@tempd\ht\pst@hbox% - \dp\pst@hbox=\pst@tempd\dp\pst@hbox% - \fi% - \pst@dima=\pst@tempc\wd\pst@hbox% - \ifdim\pst@dima<\z@\kern-\pst@dima\fi% - \pst@Verb{CP CP translate \pst@tempa \tx@NET}% - \hbox to \z@{\box\pst@hbox\hss}% - \pst@Verb{ - CP CP translate - 1 \pst@tempc div 1 \pst@tempd div scale - \tx@NET}% - \ifdim\pst@dima>\z@\kern\pst@dima\fi% - }% -} -\pslongbox{Scalebox}{\psscalebox} -% -\def\psscaleboxto(#1,#2){\pst@makebox{\ps@scaleboxto(#1,#2)}} -\def\ps@scaleboxto(#1,#2){% - \begingroup - \pssetlength\pst@dima{#1}% - \pssetlength\pst@dimb{#2}% - \ifdim\pst@dima=\z@\else - \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc - \edef\pst@tempc{\pst@tempc\space}% - \fi - \ifdim\pst@dimb=\z@ - \ifdim\pst@dima=\z@ - \@pstrickserr{% - \string\psscaleboxto\space dimensions cannot both be zero}\@ehpa - \def\pst@tempa{}% - \def\pst@tempc{1 }% - \def\pst@tempd{1 }% - \else - \let\pst@tempd\pst@tempc - \fi - \else - \pst@dimc=\ht\pst@hbox - \advance\pst@dimc\dp\pst@hbox - \pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd - \edef\pst@tempd{\pst@tempd\space}% - \ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi - \fi - \edef\pst@tempa{\pst@tempc \pst@tempd scale }% - \ps@@scalebox - \endgroup} -\pslongbox{Scaleboxto}{\psscaleboxto} -% -\def\tx@Rot{Rot } -\def\psrotateleft{\pst@makebox{\ps@rotateleft\pst@hbox}} -\def\ps@rotateleft#1{% -\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1% -\pst@Verb{90 \tx@Rot} -\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}% -\pst@Verb{-90 \tx@Rot}}}} -\def\psrotateright{\pst@makebox{\ps@rotateright\pst@hbox}} -\def\ps@rotateright#1{% -% ----------- hv begin 2004-05-07 ----------- patch 15 -% \hbox{% - \leavevmode\hbox{% -% ----------- hv end 2004-05-07 ----------- patch 15 - \hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1% - \pst@Verb{-90 \tx@Rot} - \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}% - \pst@Verb{90 \tx@Rot}}}} -\def\psrotatedown{\pst@makebox{\ps@rotatedown\pst@hbox}} -\def\ps@rotatedown#1{% -\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1% -\pst@Verb{180 \tx@Rot}% -\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}% -\pst@Verb{-180 \tx@Rot}}}} -\pslongbox{Rotateleft}{\psrotateleft} -\pslongbox{Rotateright}{\psrotateright} -\pslongbox{Rotatedown}{\psrotatedown} -% ----------- hv begin 2004-09-23 ----------- 1.11 -% compatibility stuff -\let\rotateleft\psrotateleft -\let\rotateright\psrotateright -\let\rotatedown\psrotatedown -% ----------- hv end 2005-09-23 ----------- 1.11 -\def\pst@starbox{% -\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}} -\def\pst@@makesmall#1{% -\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}} -\def\pst@@@makesmall#1{% -\pst@dimh=\psk@xref\wd#1% -\ifx\psk@yref\relax -\pst@dimg=\dp#1% -\else -\pst@dimg=\psk@yref\ht#1% -\advance\pst@dimg\psk@yref\dp#1% -\fi -\setbox#1=\hbox to\z@{% -\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}} -% -\define@key[psset]{pstricks}{ref}[c]{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil} -\def\psset@@ref#1#2,#3,#4\@nil{% - \def\psk@xref{.5}% - \def\psk@yref{.5}% - \let\pst@makesmall\pst@@@makesmall - \ifx\@empty#3\@empty - \@nameuse{getref@#1}% - \@nameuse{getref@#2}% - \else - \pst@checknum{#1#2}\psk@xref - \pst@checknum{#3}\psk@yref - \fi} -% -\def\getref@c{\let\pst@makesmall\pst@@makesmall} -\def\getref@t{\def\psk@yref{1}} -\def\getref@b{\def\psk@yref{0}} -\def\getref@B{\let\psk@yref\relax} -\def\getref@l{\def\psk@xref{0}} -\def\getref@r{\def\psk@xref{1}} -\psset[pstricks]{ref=c} -% -\def\pst@rotlist{ mark RAngle /ps@a ED cleartomark ps@a neg } -\def\pst@rottable{% -@0=% -@U=% -@L=90 % -@D=180 % -@R=-90 % -@N=\pst@rotlist -@W=\pst@rotlist 90 add % -@S=\pst@rotlist 180 add % -@E=\pst@rotlist 90 sub } -% -\define@key[psset]{pstricks}{rot}[0]{% - \pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil} -\def\psset@@rot#1\@nil{% - \def\next##1@#1=##2@##3\@nil{% - \ifx##2\relax\pst@getangle{#1}\psk@rot \else\def\psk@rot{##2}\fi% - \pst@Verb{ gsave STV CP T /ps@rot \ifx\psk@rot\@empty 0 \else \psk@rot \fi def grestore }% (MJS) - }% - \expandafter\next\pst@rottable @#1=\relax @\@nil} -% -\def\psset@@@rot#1#2\@nil{% - \psset@@rot#2\@nil% - \edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\space ps@rot add \fi}% - \pst@Verb{ gsave STV CP T /ps@rot \ifx\psk@rot\@empty 0 \else \psk@rot \fi def grestore }}% (MJS) -% -%\def\psset@@rot#1\@nil{% -%\def\ps@next##1@#1=##2@##3\@nil{% -%\ifx\relax##2\pst@getangle{#1}\psk@rot\else\def\psk@rot{##2}\fi}% -%\expandafter\ps@next\pst@rottable @#1=\relax @\@nil} -% -%\def\psset@@@rot#1#2\@nil{% -%\psset@@rot#2\@nil -%\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}} -\psset[pstricks]{rot=0} -% -\def\tx@RotBegin{RotBegin } -\def\tx@RotEnd{RotEnd } -\def\pst@rotate#1#2{% - \ifx#1\@empty\else - \setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}% - \fi% -} -\def\psput@cartesian#1{% -\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}% -} -\def\psput@special#1{% - \hbox{% - \pst@Verb{{ \pst@coor \pstnodescale } \tx@PutCoor \tx@PutBegin }% 20150911 hv - \box#1% - \pst@Verb{ \tx@PutEnd }% - }% -} -\def\tx@PutCoor{PutCoor } -\def\tx@PutBegin{PutBegin } -\def\tx@PutEnd{PutEnd } -\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}} -\def\rput@i[#1]{% - \test@for@options#1=\@nil - \ifnum\the\pst@cntm=\z@ - \addto@par{ref={#1}}% - \else - \expandafter\addto@par\expandafter{#1}% - \fi - \rput@ii -} -\def\test@for@options#1=#2\@nil{% - \if$#2$% #2 is empty -> old syntax - \pst@cntm=\z@ - \else % something like foo=bar - \pst@cntm=\@ne - \fi -} - -\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}} -\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}} -\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}} -\def\rput@v#1{% - \begingroup - \use@par - \if@star\pst@starbox\fi - \pst@makesmall\pst@hbox - \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS) -% \pst@rotate\psk@rot\pst@hbox% - \psput@{#1}\pst@hbox% - \endgroup - \ignorespaces} -% -\def\multirput{% - \def\pst@par{}% - \pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}} -\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii} -\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}} -\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv} -\def\multirput@iv(#1){% - \@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}} -\def\multirput@v(#1,#2)(#3,#4)#5{% - \pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}} -\def\multirput@vi(#1,#2)(#3,#4)#5{% - \pst@killglue% - \global\psLoopIndex=\@ne\relax - \begingroup - \use@par - \if@star\pst@starbox\fi - \pst@makesmall\pst@hbox - \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS) -% \pst@rotate\psk@rot\pst@hbox - \pssetxlength\pst@dima{#1}% - \pssetylength\pst@dimb{#2}% - \pssetxlength\pst@dimc{#3}% - \pssetylength\pst@dimd{#4}% - \pst@cntg=#5\relax - \leavevmode - \loop - \vbox to \z@{% - \vss - \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}% - \vskip\pst@dimb% - }% - \ifnum\pst@cntg>\psLoopIndex - \advance\pst@dima\pst@dimc - \advance\pst@dimb\pst@dimd - \global\advance\psLoopIndex by \@ne - \repeat - \endgroup - \ignorespaces% -} -% -\newif\if@fixedradius -\def\cput{\def\pst@par{}\pst@object{cput}} -\def\cput@i{\@fixedradiusfalse\cput@ii} -\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}} -\def\cput@iii#1{% - \addto@par{rot={#1}}% - \@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}% -} -\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}} -\def\cput@v#1{% - \begingroup - \use@par - \setbox\pst@hbox=\hbox{% - \psboxsepfalse - \if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi% - }% - \pst@@makesmall\pst@hbox - \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS) -% \pst@rotate\psk@rot\pst@hbox - \psput@{#1}\pst@hbox - \endgroup - \ignorespaces% -} -% -\def\Cput{\def\pst@par{}\pst@object{Cput}} -\def\Cput@i{\@fixedradiustrue\cput@ii} -\newdimen\pslabelsep -\define@key[psset]{pstricks}{labelsep}[5pt]{% - \pssetlength\pslabelsep{#1}% - \ifx\PSTplotLoaded\endinput% Set labels for pst-plot, if laoded - \let\psxlabelsep\pslabelsep% - \let\psylabelsep\pslabelsep% - \fi} -\psset[pstricks]{labelsep=5pt} -% -\define@key[psset]{pstricks}{refangle}[0]{\pst@expandafter\psset@@refangle{#1}\@nil} -\def\psset@@refangle#1\@nil{% - \def\next##1@#1=##2"##3@##4\@nil{% - \ifx\relax##2% - \pst@getangle{#1}\psk@refangle - \def\psk@uputref{}% - \else - \def\psk@refangle{##2 }% - \def\psk@uputref{##3}% - \fi}% - \expandafter\next\pst@refangletable @#1=\relax"@\@nil% - \pst@Verb{ gsave STV CP T /ps@refangle \psk@refangle\space def grestore }%ADDED (MJS) -} -% -\def\pst@refangletable{% -@r=0"20% -@u=90"02% -@l=180"10% -@d=-90"01% -@ur=45"22% -@ul=135"12% -@dr=-135"21% -@dl=-45"11} -\psset[pstricks]{refangle=0} - -% DG/SR modification begin - Mar. 24, 1999 - Patch 10 -%\def\uput{\def\pst@par{}\@ifnextchar[{\uput@ii}{\uput@i}} -\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}} -% DG/SR modification end -\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii} -% -\def\uput@ii[#1]{% - \addto@par{refangle={#1}}% - \@ifnextchar({\uput@iv}{\uput@iii}} -% -\def\uput@iii#1{% - \addto@par{rot={#1}}% - \@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}} -% -\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}} -% -\def\uput@v#1{% - \begingroup - \use@par - \if@star\pst@starbox\fi - \pstCheckCoorType{#1}% needed for \uput@vii - \uput@vi - \psput@{#1}\pst@hbox - \endgroup - \ignorespaces} -% -\def\uput@vi{% - \ifx\psk@uputref\@empty\uput@vii\tx@UUput{}% - \else - \ifx\psk@rot\@empty\expandafter\uput@viii\psk@uputref - \else\uput@vii\tx@UUput{}\fi - \fi} -% -\def\uput@vii#1#2{% - \edef\pst@coor{% - \ifPst@SpecialLength\pst@SpecialLength\else\pst@number\pslabelsep\fi -% \pst@number\pslabelsep % \ifdim\pslabelsep<\z@ neg \fi - #2% - \pst@number{\wd\pst@hbox}% - \pst@number{\ht\pst@hbox}% - \pst@number{\dp\pst@hbox}% - \ifnum\pst@C@@rType=7 - ps@refangle % CHANGED (MJS) FROM \psk@refangle\space - \ifx\psk@rot\@empty\else ps@rot\space sub \fi - \else - \psk@refangle\space - \ifx\psk@rot\@empty\else \psk@rot\space sub \fi - \fi - \tx@Uput #1}% - %\show\pst@coor - \setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}% - \setbox\pst@hbox=\psput@special\pst@hbox - \ifnum\pst@C@@rType=7 - \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% CHANGED FROM \psk@rot (MJS) - \else - \ifx\psk@rot\@empty\else\pst@rotate{\psk@rot}\pst@hbox\fi% - \fi} -% -% -\def\uput@viii#1#2{% - \ifnum#1>\z@\relax\ifnum#2>\z@\relax\pslabelsep=.707\pslabelsep\fi\fi - \setbox\pst@hbox=\vbox to\z@{% - \ifnum#2=1\relax\vskip\pslabelsep\else\vss\fi - \hbox to\z@{% - \ifnum#1=2\relax\hskip\pslabelsep \else\hss\fi - \box\pst@hbox% - \ifnum#1=1\relax\hskip\pslabelsep\else\hss\fi}% - \ifnum#2=2\relax\vskip\pslabelsep\else\vss\fi}} -% -\def\tx@Uput{Uput } -\def\tx@UUput{UUput } -% -\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}} -\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii} -\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}} -\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}} -\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}} -\def\Rput@v#1{% - \begingroup - \use@par - \if@star\pst@starbox\fi - \Rput@vi - \pst@makesmall\pst@hbox - \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS) -% \pst@rotate\psk@rot\pst@hbox - \psput@{#1}\pst@hbox - \endgroup - \ignorespaces} -% -\def\Rput@vi{% - \pst@dimg=\dp\pst@hbox - \advance\pst@dimg\pslabelsep - \dp\pst@hbox=\pst@dimg - \pst@dimg=\ht\pst@hbox - \advance\pst@dimg\pslabelsep - \ht\pst@hbox=\pst@dimg - \setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}% -% -\def\oldpsput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}} -\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii} -\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}} -\def\oldpsput@iii<#1>{\rput@iii{#1}} -\def\OldPsput{\let\psput\oldpsput} -\def\NewPsput{\let\psput\rput} -% -% ----------- hv 20120219 ------------------- -\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt} -\newpsstyle{gridstyleA}{subgriddiv=5,gridcolor=red!30,subgridcolor=green!20!black!10,gridlabels=0pt} -\newif\ifshowgrid -\newdimen\sh@wgridXunit -\newdimen\sh@wgridYunit - -\define@key[psset]{pstricks}{showgrid}[b]{\expandafter\pst@@showgrid#1!!\@nil} -\def\pst@@showgrid#1#2#3\@nil{% hv 20130403 - \def\showgridp@s{0}% - \ifx#1b\showgridtrue\else% bottom - \ifx#1f\showgridfalse\else - \ifx#1t - \ifx#2r \showgridtrue\else% true->bottom - \showgridtrue\def\showgridp@s{1}\fi% top - \fi\fi\fi - \ifnum\showgridp@s>0\relax - \sh@wgridXunit=\psxunit - \sh@wgridYunit=\psyunit - \fi - -} -\psset[pstricks]{showgrid=f} -\define@boolkey[psset]{pstricks}[Pst@]{pgffunctions}[true]{} -\psset[pstricks]{pgffunctions=false} -% -\newdimen\pst@shift -\newif\ifPst@shift@star -\define@key[psset]{pstricks}{shift}[0]{% - \ifx#1* - \global\Pst@shift@startrue - \pst@shift=\p@ - \else - \global\Pst@shift@starfalse - \pssetlength\pst@dimg{#1} - \global\pst@shift\pst@dimg% only the outer pspicture env can have a shift - \fi} -\psset[pstricks]{shift=0} -% -%------------------------------- pspicture ------------------------------ -% -\def\pspicture{\begingroup\pst@ifstar\pst@picture} -\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}} -\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@i[#1](10,10)}}% -\def\pst@@picture@i[#1]#2(#3,#4){\@ifnextchar(% ignore anything between [] and () - {\pst@@@picture[#1](#3,#4)}% - {\pst@@@picture[#1](0,0)(#3,#4)}} -% -\def\pst@@@picture[#1](#2,#3)(#4,#5){% - \pssetxlength\pst@dima{#2}% - \pssetylength\pst@dimb{#3}% - \pssetxlength\pst@dimc{#4}% - \pssetylength\pst@dimd{#5}% - \ifdim\pst@dima>\pst@dimc% - \pst@dimg=\pst@dima% - \pst@dima=\pst@dimc% - \pst@dimc=\pst@dimg% - \fi% - \ifdim\pst@dimb>\pst@dimd% - \pst@dimg=\pst@dimb% - \pst@dimb=\pst@dimd% - \pst@dimd=\pst@dimg% - \fi% - \setbox\pst@hbox=\hbox\bgroup - \begingroup\KillGlue - \@ifundefined{@latexerr}{}{\let\unitlength\psunit}% - \edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}% -% ----------- 1.10/12 beg hv ------------------- - \psset{showgrid=false}% % for nested pspicture environemnets - \def\pst@tempA{#1}% - \ifx\pst@tempA\@empty\else\psset{#1}\fi% sets the shift and grid option - \ifx\pst@bgcolor\@empty\else\psframe*[linecolor=\pst@bgcolor](#2,#3)(#4,#5)\fi - \ifshowgrid\ifnum\showgridp@s=0\psgrid[style=gridstyle]\fi\fi -% ----------- 1.10/12 end hv ------------------- - \ignorespaces% % 2008-12-07 - \ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17 -} -\def\pic@coor{(0,0)(0,0)(10,10)} -\def\endpspicture{% - \ifshowgrid\ifnum\showgridp@s>0 - \psgrid[xunit=\sh@wgridXunit,yunit=\sh@wgridYunit,style=gridstyle]\fi\fi - \pst@killglue - \endgroup - \egroup - \ht\pst@hbox=\pst@dimd - \dp\pst@hbox=-\pst@dimb - \setbox\pst@hbox=\hbox{% - \kern-\pst@dima - \ifPst@shift@star%\typeout{==pstricks== old behaviour of the shift option}% shift=* - \advance\pst@dimd-\pst@dimb - \pst@dimd=0.5\pst@dimd - \else\pst@dimd-\pst@shift\fi - \advance\pst@dimd\pst@dimb - \lower\pst@dimd\box\pst@hbox - \kern\pst@dimc}% - \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi - \leavevmode - \ifPst@draft - \expandafter\ifx\csname @latexerr\endcsname\relax - \box\pst@hbox - \else% do we have LaTeX? - \fboxsep=0pt - \fbox{\rule[-\pst@shift]{0pt}{\ht\pst@hbox}\rule{\wd\pst@hbox}{0pt}}% - \fi - \else - \box\pst@hbox - \fi - \endgroup - \psset[pstricks]{shift=0}% reset value -} -% -\@namedef{pspicture*}{\pspicture*} -\@namedef{endpspicture*}{\endpspicture} -% -\ifx\pstcustomize\relax \input pstricks.con \fi -\catcode`\@=\PstAtCode\relax -% -\endinput -%% -%% END: pstricks.tex diff --git a/graphics/pstricks/contrib/pst-arrow/Changes b/graphics/pstricks/contrib/pst-arrow/Changes index bfb9b33776..c1d761a987 100644 --- a/graphics/pstricks/contrib/pst-arrow/Changes +++ b/graphics/pstricks/contrib/pst-arrow/Changes @@ -1,11 +1,15 @@ -%% $Id: Changes 136 2021-07-28 09:39:03Z herbert $ +%% $Id: Changes 164 2021-08-25 19:26:42Z herbert $ %% pst-arrow.sty ----------- v. 0.01 2016-09-09 initial version pst-arrow.tex ----------- (hv) + v. 0.04 2021-04-25 - moved the basic arrow code into pstricks-arrows.tex + which is in the pstricks-base dir + - updated documentation v. 0.03 2021-07-28 - fix introduced bug for linecolor which schould not be affected by tipcolor v. 0.02 2021-07-23 - added tipcolor option v. 0.01 2016-09-09 initial version + diff --git a/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.pdf b/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.pdf index 1992882247..065e35f305 100644 Binary files a/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.pdf and b/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.pdf differ diff --git a/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.tex b/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.tex index 79ac2d4085..39a8201975 100644 --- a/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.tex +++ b/graphics/pstricks/contrib/pst-arrow/doc/pst-arrow-doc.tex @@ -1,13 +1,13 @@ -%% $Id: pst-arrow-doc.tex 136 2021-07-28 09:39:03Z herbert $ -\documentclass[11pt,english,BCOR10mm,DIV14,bibliography=totoc,parskip=false,smallheadings +%% $Id: pst-arrow-doc.tex 164 2021-08-25 19:26:42Z herbert $ +\errorcontextlines=100 +\documentclass[11pt,english,BCOR10mm,DIV=14,bibliography=totoc,parskip=false,smallheadings, headexclude,footexclude,twoside]{pst-doc} -\usepackage[utf8]{inputenc} -\usepackage{pst-node,pst-arrow} +\usepackage{pst-node,hvlogos,pst-arrow} \let\pstArrowFV\fileversion \lstset{preset=\centering,pos=l,wide=false,vsep=5mm,language=PSTricks,%width=0.5\linewidth, morekeywords={multidipole,parallel},basicstyle=\footnotesize\ttfamily} % -\def\bgImage{\begin{pspicture}(5,6) +\renewcommand\bgImage{\begin{pspicture}(5,6) \psset{arrowscale=2} \pnode(3,4){A}\pnode(5,6){B}\pnode(5,0){C} \psbezier[ArrowInside=->,% @@ -31,7 +31,8 @@ \author{Herbert Voß} %\docauthor{Herbert Vo\ss} \date{\today} -\maketitle + +\settitle \tableofcontents @@ -47,9 +48,10 @@ The \LPack{pstricks} related package provides more arrow types. %-------------------------------------------------------------------------------------- \section{Arrows} %-------------------------------------------------------------------------------------- -\LPack{pst-arrow} defines the following "`arrows"': +\LPack{pstricks} defines the following "`arrows"': \def\myline#1{\psline[linecolor=red,linewidth=0.5pt,arrowscale=1.5]{#1}(0,1ex)(1.3,1ex)}% + \def\mylineA#1{\psline[linecolor=red,linewidth=0.5pt,arrowscale=4.5]{#1}(0,1ex)(2,1ex)}% \psset{arrowscale=1.5} \begin{longtable}{@{} c @{\qquad} p{3cm} l @{}}% Value & Example & Name \\[2pt]\hline @@ -70,17 +72,26 @@ The \LPack{pstricks} related package provides more arrow types. \Lnotation{**-**} & \myline{**-**} & Disks, flush to endpoints.\\ \Lnotation{{|}<->{|}} & \myline{|<->|} & T-bars and arrows.\\ \Lnotation{{|}>-<{|}} & \myline{|>-<|} & T-bars and reverse arrows.\\ - \Lnotation{h-h{|}} & \myline{h-h} & left/right hook arrows.\\ - \Lnotation{H-H{|}} & \myline{H-H} & left/right hook arrows.\\ - \Lnotation{v-v|} & \myline{v-v} & left/right inside vee arrows.\\ - \Lnotation{V-V|} & \myline{V-V} & left/right outside vee arrows.\\ - \Lnotation{f-f|} & \myline{f-f} & left/right inside filled arrows.\\ - \Lnotation{F-F|} & \myline{F-F} & left/right outside filled arrows.\\ - \Lnotation{t-t|} & \myline{t-t} & left/right inside slash arrows.\\[5pt] - \Lnotation{T-T|} & \myline{T-T} & left/right outside slash arrows.\\ + \Lnotation{h-h{}} & \myline{h-h} & left/right hook arrows.\\ + \Lnotation{H-H{}} & \myline{H-H} & left/right hook arrows.\\ + \Lnotation{v-v} & \myline{v-v} & left/right inside vee arrows.\\ + \Lnotation{V-V} & \myline{V-V} & left/right outside vee arrows.\\ + \Lnotation{f-f} & \myline{f-f} & left/right inside filled arrows.\\ + \Lnotation{F-F} & \myline{F-F} & left/right outside filled arrows.\\ + \Lnotation{t-t} & \myline{t-t} & left/right inside slash arrows.\\[5pt] + \Lnotation{T-T} & \myline{T-T} & left/right outside slash arrows.\\ +% + \Lnotation{} & \mylineA{} & curved arrows.\\ + \Lnotation{D>} & \mylineA{D>} & curved doubled arrows.\\ + \Lnotation{D>--} & \myline{} & curved lines.\\ +% \Lnotation{>T-T<} & \mylineA{>T-T<} & \TikZ\ like arrows.\\ \hline \end{longtable} +%\def\pst@arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,% +% ,D>-D>,,|<*->|*,|<->|,v-v,V-V,f-f,F-F,t-t,T-T} + \psset{arrowscale=1} @@ -93,7 +104,8 @@ of the \Lkeyword{arrows} parameter. The parameter can be set with \noindent or for some macros with a special option, like\\[5pt] \noindent\verb|\psline[]{}(A)(B)|\\ -\noindent\verb/\psline[linecolor=red,linewidth=2pt]{|->}(0,0)(0,2)/ \ \psline[linecolor=red,linewidth=2pt]{|->}(0,0)(0,2) +\noindent\verb/\psline[linecolor=red,tipcolor=blue,linewidth=2pt]{|->}(0,0)(0,2)/ \ +\psline[linecolor=red,tipcolor=blue,linewidth=2pt]{|->}(0,0)(0,2) \subsection{Multiple arrows} There are two new options which are only valid for the arrow type \verb+<<+ or \verb+>>+. diff --git a/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex b/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex index d5bd965bba..3dee550dfd 100644 --- a/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex +++ b/graphics/pstricks/contrib/pst-arrow/tex/pst-arrow.tex @@ -1,4 +1,4 @@ -%% $Id: pst-arrow.tex 136 2021-07-28 09:39:03Z herbert $ +%% $Id: pst-arrow.tex 164 2021-08-25 19:26:42Z herbert $ %% %% This is file `pst-arrow.tex', %% @@ -6,7 +6,7 @@ %% %% Package `pst-arrow.tex' %% -%% Herbert Voss +%% Copyright 2021 Herbert Voss %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives @@ -22,26 +22,14 @@ \ifx\PSTricksLoaded\endinput\else\input pstricks \fi \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi % -\def\fileversion{0.03} -\def\filedate{2021/07/28} +\def\fileversion{0.04} +\def\filedate{2021/08/25} \message{`pst-arrow' v\fileversion, \filedate\space (dr,hv)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax -\pst@addfams{pst-arrow} -% -\define@key[psset]{pst-arrow}{tipcolor}[black]{\def\pst@tipcolor{#1}} -\psset[pst-arrow]{tipcolor=} -\def\ps@check@tipcolor{% - \expandafter\if\expandafter$\pst@tipcolor$ - \pst@usecolor\pslinecolor - \else - \pst@usecolor\pst@tipcolor - \fi -} +\pst@addfams{pst-arrow} % -\def\tx@EndDot{ \ps@check@tipcolor\space EndDot } - \def\psBigArrow{\pst@object{psBigArrow}} \def\psBigArrow@i(#1)(#2){% \addbefore@par{doublesep=1cm} @@ -75,300 +63,9 @@ }% \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} - \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]{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} - \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]{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 - \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]{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 - \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]{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} +%% +%% Reqrite most of the existing macros +%% \pst@def{Line}< NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if (\psk@ArrowInside) length 0 gt { @@ -421,6 +118,7 @@ }{ 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}<{% @@ -678,18 +376,6 @@ /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 -- cgit v1.2.3