From 4d009ca7c9f1312489e10e6956242106b57d57bc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 19 Nov 2009 00:14:41 +0000 Subject: pstricks-add update git-svn-id: svn://tug.org/texlive/trunk@16068 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/generic/pstricks-add/pst-fp.tex | 132 ++++++++++++++++++++- .../tex/generic/pstricks-add/pstricks-add.tex | 73 +++++++----- 2 files changed, 170 insertions(+), 35 deletions(-) (limited to 'Master/texmf-dist/tex/generic') diff --git a/Master/texmf-dist/tex/generic/pstricks-add/pst-fp.tex b/Master/texmf-dist/tex/generic/pstricks-add/pst-fp.tex index 8cc3d9751f2..ff145b5e251 100644 --- a/Master/texmf-dist/tex/generic/pstricks-add/pst-fp.tex +++ b/Master/texmf-dist/tex/generic/pstricks-add/pst-fp.tex @@ -1,4 +1,4 @@ -%% $Id: pst-fp.tex 112 2009-04-17 19:21:56Z herbert $ +%% $Id: pst-fp.tex 148 2009-11-14 09:01:39Z herbert $ %% %% %% This is file `pst-fp.tex', @@ -23,8 +23,8 @@ % Requires some packages \ifx\PSTricksLoaded\endinput\else\input pstricks \fi % -\def\fileversion{0.02} -\def\filedate{2009/04/02} +\def\fileversion{0.03} +\def\filedate{2009/11/14} \message{`pst-fp' v\fileversion, \filedate\space (hv)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -33,6 +33,7 @@ % -999999999999999999.999999999999999999 % and +999999999999999999.999999999999999999 +\def\pstFPmul#1#2#3{\pstFP@callc\pstFP@mul#1{#2}{#3}} % #1 := #2*#3 \def\pstFPdiv#1#2#3{\pstFP@callc\pstFP@div#1{#2}{#3}} % #1 := #2/#3 \countdef\pstFP@actcounter=10 % register 0 for counter @@ -93,6 +94,7 @@ \countdef\pstFP@res=46 \countdef\pstFP@shift=47 \newcount\pstFP@times +\countdef\pstFP@prod=49 %auxiliary macros which may be used in all of the following macros \newif\ifpstFP@test @@ -492,6 +494,130 @@ }% \let#1\pstFP@tmp% } +%multiply two values + +\def\pstFP@firstnine#1#2#3#4#5#6#7#8#9{% + \pstFP@res=#1#2#3#4#5#6#7#8#9\relax% +} +\def\pstFP@@ninesplit#1\relax#2\end#3{% + #1% + \edef#3{#2}% +} +\def\pstFP@ninesplit#1{% + \edef#1{\expandafter\pstFP@firstnine\pstFP@rd}% + \expandafter\pstFP@@ninesplit#1\end#1\relax% +} + +\def\pstFP@split#1#2#3#4{% + % #1 highest three digits + % #2 medium three digits + % #3 least three digits + % #4 counter + \pstFP@regc=#4% + \divide\pstFP@regc1000000\relax% + #1=\pstFP@regc% + \multiply\pstFP@regc-1000000\relax\advance\pstFP@regc#4% + #3=\pstFP@regc% + \divide\pstFP@regc1000\relax% + #2=\pstFP@regc% + \multiply\pstFP@regc-1000\relax\advance\pstFP@regc#3% + #3=\pstFP@regc% +} + +\def\pstFP@@mul#1#2#3{% + \pstFP@regc=\csname pstFP@x#1\endcsname% + \multiply\pstFP@regc\csname pstFP@y#2\endcsname% + \advance\pstFP@prod\pstFP@regc% + % + \ifx#3\relax% + \let\next=\relax% + \else% + \let\next=\pstFP@@mul% + \fi% + \next#3% +} + +\def\pstFP@saveshift{% + % save rightmost three digits + \pstFP@regc=\pstFP@prod% + \divide\pstFP@prod1000\relax% + \multiply\pstFP@prod1000\relax% + \advance\pstFP@regc-\pstFP@prod% + \advance\pstFP@regc1000\relax% + \edef\pstFP@rd{\expandafter\pstFP@ignorenext\the\pstFP@regc\pstFP@rd}% + % + \divide\pstFP@prod1000\relax% +} + +\def\pstFP@mul#1#2.#3.#4\relax#5.#6.#7\relax{% + % #1 macro, which gets the result + % #2 integer part of 1st value + % #3 fractional part of 1st value + % #4 dummy to swallow everthing after the 2nd '.' + % #5 integer part of 2nd value + % #6 fractional part of 2nd value + % #7 dummy to swallow everthing after the 2nd '.' + % + % split value in various parts + % x y = 123 456 789 123 456 789 . 123 456 789 123 456 789 + % -> xk xl xm xn xo xp xq xr xs xt xu xv + % -> yk yl ym yn yo yp yq yr ys yt yu yv + % multiply these parts and save the result wrt the necessary shifts + % + {\pstFP@readvalue{x}{#2}{#3}% + \pstFP@readvalue{y}{#5}{#6}% + % + %sign + \multiply\pstFP@xs\pstFP@ys% + \pstFP@rs=\pstFP@xs% + % + % split parts + \pstFP@split\pstFP@xk\pstFP@xl\pstFP@xm\pstFP@xia\pstFP@split\pstFP@xn\pstFP@xo\pstFP@xp\pstFP@xib% + \pstFP@split\pstFP@xq\pstFP@xr\pstFP@xz\pstFP@xfa\pstFP@split\pstFP@xt\pstFP@xu\pstFP@xv\pstFP@xfb% + \pstFP@split\pstFP@yk\pstFP@yl\pstFP@ym\pstFP@yia\pstFP@split\pstFP@yn\pstFP@yo\pstFP@yp\pstFP@yib% + \pstFP@split\pstFP@yq\pstFP@yr\pstFP@yz\pstFP@yfa\pstFP@split\pstFP@yt\pstFP@yu\pstFP@yv\pstFP@yfb% + % + \pstFP@prod=0\relax% + \edef\pstFP@rd{}% + % + %compute result + \pstFP@@mul vv \relax\pstFP@saveshift% + \pstFP@@mul vu uv \relax\pstFP@saveshift% + \pstFP@@mul uu vt tv \relax\pstFP@saveshift% + \pstFP@@mul ut tu vz zv \relax\pstFP@saveshift% + \pstFP@@mul tt zu uz rv vr \relax\pstFP@saveshift% + \pstFP@@mul zt tz ur ru vq qv \relax\pstFP@saveshift% + \pstFP@@mul zz rt tr uq qu vp pv \relax\pstFP@saveshift% + \pstFP@@mul zr rz tq qt up pu vo ov \relax\pstFP@saveshift% + \pstFP@@mul rr qz zq tp pt uo ou vn nv \relax\pstFP@saveshift% + \pstFP@@mul rq qr zp pz to ot un nu vm mv \relax\pstFP@saveshift% + \pstFP@@mul qq rp pr zo oz tn nt um mu vl lv \relax\pstFP@saveshift% + \pstFP@@mul qp pq ro or zn nz tm mt ul lu kv vk \relax\pstFP@saveshift% + \pstFP@@mul pp oq qo rn nr zm mz tl lt ku uk \relax\pstFP@saveshift% + \pstFP@@mul op po nq qn rm mr zl lz tk kt \relax\pstFP@saveshift% + \pstFP@@mul oo pn np mq qm rl lr kz zk \relax\pstFP@saveshift% + \pstFP@@mul no on mp pm lq ql kr rk \relax\pstFP@saveshift% + \pstFP@@mul nn mo om pl lp qk kq \relax\pstFP@saveshift% + \pstFP@@mul mn nm lo ok pk kp \relax\pstFP@saveshift% + \pstFP@@mul mm ln nl ko ok \relax\pstFP@saveshift% + \pstFP@@mul lm ml kn nk \relax\pstFP@saveshift% + \pstFP@@mul ll km mk \relax\pstFP@saveshift% + \pstFP@@mul kl lk \relax\pstFP@saveshift% + \pstFP@@mul kk \relax\pstFP@saveshift\pstFP@saveshift% + \pstFP@ninesplit\pstFP@rd% + \ifnum\pstFP@res=0\relax% + \pstFP@ninesplit\pstFP@rd% + \ifnum\pstFP@res=0\relax% + \pstFP@ninesplit\pstFP@rd\pstFP@ria=\pstFP@res% + \pstFP@ninesplit\pstFP@rd\pstFP@rib=\pstFP@res% + \pstFP@ninesplit\pstFP@rd\pstFP@rfa=\pstFP@res% + \pstFP@ninesplit\pstFP@rd\pstFP@rfb=\pstFP@res% + \pstFP@store\pstFP@tmp{r}% + \else\typeout{pstFPmul: Overflow}\fi% + \else\typeout{pstFPmul: Overflow}\fi% + \global\let\pstFP@tmp\pstFP@tmp}% + \let#1\pstFP@tmp% +} % \catcode`\@=\PstAtCode\relax % diff --git a/Master/texmf-dist/tex/generic/pstricks-add/pstricks-add.tex b/Master/texmf-dist/tex/generic/pstricks-add/pstricks-add.tex index 7b9214d004c..9f85653803b 100644 --- a/Master/texmf-dist/tex/generic/pstricks-add/pstricks-add.tex +++ b/Master/texmf-dist/tex/generic/pstricks-add/pstricks-add.tex @@ -1,4 +1,4 @@ -%% $Id: pstricks-add.tex 139 2009-10-13 12:16:45Z herbert $ +%% $Id: pstricks-add.tex 150 2009-11-14 09:25:53Z herbert $ %% %% %% This is file `pstricks-add.tex', @@ -7,8 +7,8 @@ %% %% Package `pstricks-add.tex' %% -%% Dominique Rodriguez -%% Herbert Voss +%% Dominique Rodriguez +%% Herbert Voss %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives @@ -31,8 +31,8 @@ \ifx\PSTFPloaded\endinput\else \input pst-fp \fi \ifx\PSTmathLoaded\endinput\else \input pst-math \fi % -\def\fileversion{3.35} -\def\filedate{2009/10/12} +\def\fileversion{3.36}%%% CTAN 3.36 +\def\filedate{2009/11/14} \message{`pstricks-add' v\fileversion, \filedate\space (dr,hv)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -173,6 +173,8 @@ \def\pst@int#1{\expandafter\pst@@int#1..\@nil} \def\pst@@int#1.#2.\@nil{#1} % +\def\pstFPMul#1#2#3{\pstFP@callc\pstFP@mul#1{#2}{#3}% % #1 := int(#2/#3) + \edef#1{\pst@int{#1}}}% \def\pstFPDiv#1#2#3{\pstFP@callc\pstFP@div#1{#2}{#3}% % #1 := int(#2/#3) \edef#1{\pst@int{#1}}}% % @@ -182,7 +184,14 @@ \pst@dimn=#2pt% \advance\pst@dimn by -#4pt \pst@divide{\pst@dimn}{\pst@dimm}#5} -% +\def\psGetDistance(#1,#2)(#3,#4)#5{% 4 values without a dimen! #5 is a macro + \pst@dimm=#1pt% + \advance\pst@dimm by -#3pt% + \pst@dimn=#2pt% + \advance\pst@dimn by -#4pt + \pst@pyth\pst@dimm\pst@dimn\pst@dimo + \edef#5{\strip@pt\pst@dimo} +}% %--------------------------------------- small stuff ------------------------------- \def\use@keep@par{% same as \use@par, but keeps the values \ifx\pst@par\@empty\else @@ -226,7 +235,7 @@ } % #1: (x,y) #2: rotAngle #3: object -\def\psrotate{\pst@object{psrotate}} +\def\psrotate{\def\pst@par{}\pst@object{psrotate}} \def\psrotate@i(#1)#2{% \pst@killglue \begingroup% @@ -249,7 +258,7 @@ \pst@Verb{ \tx@TMRestore }\endgroup} % % [#1]: obtargs; (#2,#3): center; {#4}: factor; {#5}: object -\def\psHomothetie{\pst@object{psHomothetie}} +\def\psHomothetie{\def\pst@par{}\pst@object{psHomothetie}} \def\psHomothetie@i(#1)#2{% \begin@SpecialObj% \pst@getcoor{#1}\pst@tempA% converts the coordinates without a unit into pt @@ -373,7 +382,7 @@ \define@key[psset]{pstricks-add}{braceWidthInner}{\pst@getlength{#1}\psk@braceWidthInner} \define@key[psset]{pstricks-add}{braceWidthOuter}{\pst@getlength{#1}\psk@braceWidthOuter} % -\def\psbrace{\pst@object{psbrace}} +\def\psbrace{\def\pst@par{}\pst@object{psbrace}} \def\psbrace@i(#1)(#2)#3{% \addbefore@par{ref=lb,linewidth=0.01pt,fillstyle=solid,fillcolor=black}% default setting \begin@SpecialObj @@ -988,7 +997,7 @@ \define@boolkey[psset]{pstricks-add}[Pst@]{color}[true]{} %\psset{randomPoints=1000,color=false} % -\def\psRandom{\pst@object{psRandom}}% hv 2004-11-12 +\def\psRandom{\def\pst@par{}\pst@object{psRandom}}% hv 2004-11-12 \def\psRandom@i{\@ifnextchar({\psRandom@ii}{\psRandom@iii(0,0)(1,1)}} \def\psRandom@ii(#1){\@ifnextchar({\psRandom@iii(#1)}{\psRandom@iii(0,0)(#1)}} \def\psRandom@iii(#1)(#2)#3{% @@ -1021,7 +1030,7 @@ \ignorespaces } % -\def\psComment{\pst@object{psComment}} +\def\psComment{\def\pst@par{}\pst@object{psComment}} \def\psComment@i{\pst@getarrows\psComment@ii} \def\psComment@ii(#1)(#2)#3{\@ifnextchar[ {\psComment@iii(#1)(#2){#3}} @@ -1045,7 +1054,7 @@ %/amplHand {.8} def %/dtHand 2 def -\def\pslineByHand{\pst@object{pslineByHand}} +\def\pslineByHand{\def\pst@par{}\pst@object{pslineByHand}} \def\pslineByHand@i{% \addbefore@par{VarStepEpsilon=2,varsteptol=0.8} \pst@getarrows{% @@ -1186,7 +1195,7 @@ /VPutPos { VPutLines } def }> % -\def\ncbarr{\pst@object{ncbarr}} +\def\ncbarr{\def\pst@par{}\pst@object{ncbarr}} \def\ncbarr@i#1#2{ \begingroup \use@par% @@ -1234,7 +1243,7 @@ \define@boolkey[psset]{pstricks-add}[Pst@]{trueAngle}[true]{} %\psset{trueAngle=false} % -\def\psRelNode{\pst@object{psRelNode}} +\def\psRelNode{\def\pst@par{}\pst@object{psRelNode}} \def\psRelNode@i(#1)(#2)#3#4{{% A - B - factor - node name \use@par \pst@getcoor{#1}\pst@tempA% @@ -1256,7 +1265,7 @@ laenge beta sin mul \ifPst@trueAngle\space unit div \fi\space YA add ){#4}% }} % -\def\psRelLine{\pst@object{psRelLine}} +\def\psRelLine{\def\pst@par{}\pst@object{psRelLine}} \def\psRelLine@i{\@ifnextchar({\psRelLine@iii}{\psRelLine@ii}} \def\psRelLine@ii#1{% \addto@par{arrows=#1}% @@ -1275,7 +1284,7 @@ % #4----------#5(new node) % #5 length of the line % #6 node name -\def\psParallelLine{\pst@object{psParallelLine}} +\def\psParallelLine{\def\pst@par{}\pst@object{psParallelLine}} \def\psParallelLine@i{\@ifnextchar({\psParallelLine@iii}{\psParallelLine@ii}} \def\psParallelLine@ii#1{\addto@par{arrows=#1}\psParallelLine@iii} \def\psParallelLine@iii(#1)(#2)(#3)#4#5{{ @@ -1352,7 +1361,7 @@ /linelength \pst@number\pst@dimp \pst@number\psunit div def XA linelength angle cos mul add YA linelength angle sin mul add ){#4}% } -\def\nlput{\pst@object{nlput}} +\def\nlput{\def\pst@par{}\pst@object{nlput}} \def\nlput@i(#1)(#2)#3#4{% \begin@SpecialObj \psLDNode(#1)(#2){#3}{temp@lnput} @@ -1368,7 +1377,7 @@ blName=PSPbl,bcName=PSPbc,brName=PSPbr, clName=PSPcl,ccName=PSPcc,crName=PSPcr, tlName=PSPtl,tcName=PSPtc,trName=PSPtr} -\def\psDefPSPNodes{\pst@object{psDefPSPNodes}} +\def\psDefPSPNodes{\def\pst@par{}\pst@object{psDefPSPNodes}} \def\psDefPSPNodes@i{% \pst@killglue \begingroup @@ -1681,7 +1690,7 @@ %% #1 : optional arguments passed to psline %% #2 : x value %% #3 : label -\def\psxTick{\pst@object{psxTick}}% idea by Martin Chicoine +\def\psxTick{\def\pst@par{}\pst@object{psxTick}}% idea by Martin Chicoine \def\psxTick@i(#1)#2{{ \pst@killglue \addbefore@par{arrows=-,linewidth=\psk@xtickwidth\pslinewidth} @@ -1694,7 +1703,7 @@ %% #1 : optional arguments passed to psline %% #2 : y value %% #3 : label -\def\psyTick{\pst@object{psyTick}}% idea by Martin Chicoine +\def\psyTick{\def\pst@par{}\pst@object{psyTick}}% idea by Martin Chicoine \def\psyTick@i(#1)#2{{ \pst@killglue \addbefore@par{arrows=-,linewidth=\psk@ytickwidth\pslinewidth} @@ -1778,7 +1787,7 @@ \ifPst@xAxis\psxs@@axes\pst@dima\pst@dimb\pst@dimc\pst@dimd{}{x}\fi% \ifPst@yAxis\psxs@@axes\pst@dima\pst@dimb\pst@dimc\pst@dimd{exch}{y}\fi}} % -\def\psaxes{\pst@object{psaxes}} +\def\psaxes{\def\pst@par{}\pst@object{psaxes}} \def\psaxes@i{\pst@getarrows\psaxes@ii} \def\psaxes@ii(#1){\@ifnextchar({\psaxes@iii(#1)}{\psaxes@iv(0,0)(0,0)(#1)}} \def\psaxes@iii(#1)(#2){\@ifnextchar({\psaxes@iv(#1)(#2)}{\psaxes@iv(#1)(#1)(#2)}} @@ -1827,7 +1836,7 @@ \ifdim\pst@dimg<\p@\pst@cnta=\psk@Dy\edef\psk@Dy{-\the\pst@cnta}\fi% v.1.21 \edef\psk@dy{\number\pst@dimg}% \fi% - \ifPst@xAxis\else\showorigintrue\fi% +% \ifPst@xAxis\else\showorigintrue\fi% 2009-10-21 \pst@vlabels{\pst@dimd}{\psk@arrowB}{#3}{#5}% \ifPst@xAxis\showoriginfalse\fi% \pst@vlabels{\pst@dimb}{\psk@arrowA}{#3}{#5}% @@ -1842,7 +1851,7 @@ \fi% v.1.21 \edef\psk@dx{\number\pst@dimg}% \fi% - \ifPst@yAxis\else\showorigintrue\fi% +% \ifPst@yAxis\else\showorigintrue\fi% 2009-10-21 \pst@hlabels{\pst@dimc}{\psk@arrowB}{#4}{#6}% \ifPst@yAxis\showoriginfalse\fi% \pst@hlabels{\pst@dima}{\psk@arrowA}{#4}{#6}% @@ -2538,7 +2547,7 @@ \newdimen\pst@xunit \newdimen\pst@yunit % -\def\psgraph{\pst@object{psgraph}} +\def\psgraph{\def\pst@par{}\pst@object{psgraph}} \def\psgraph@i{\pst@getarrows\psgraph@ii} \def\psgraph@ii(#1,#2){\catcode`\!=12\relax \@ifnextchar({\psgraph@iii(#1,#2)}{\psgraph@iv(0,0)(#1,#2)}} @@ -3077,7 +3086,7 @@ \else\let\psk@StepType\tw@\fi\fi\fi\fi} \psset{StepType=lower} % alternative StepType=upper/inf/sup/Riemann % -\def\psStep{\pst@object{psStep}} +\def\psStep{\def\pst@par{}\pst@object{psStep}} \def\psStep@i(#1,#2)#3#4{% \begin@ClosedObj% \addto@pscode{ @@ -3159,7 +3168,7 @@ \psset[pstricks-add]{CMYK=true} \def\@NOTEMPTY{NOT@EMPTY}%%dr 0606 % -\def\psTangentLine{\pst@object{psTangentLine}} +\def\psTangentLine{\def\pst@par{}\pst@object{psTangentLine}} \def\psTangentLine@i(#1,#2)(#3,#4)(#5,#6)#7#8{% \begin@OpenObj% \addto@pscode{ @@ -3331,7 +3340,7 @@ } \def\EndSaveFinalState{\pstverb{\End@SaveFinalState}} -\def\psplotDiffEqn{\pst@object{psplotDiffEqn}}% initial code by Dominique 2005-05-21 +\def\psplotDiffEqn{\def\pst@par{}\pst@object{psplotDiffEqn}}% initial code by Dominique 2005-05-21 \def\psplotDiffEqn@i#1#2#3#4{% \addbefore@par{xStart=#1}% \pst@killglue% @@ -3519,7 +3528,7 @@ } % % -\def\psGTriangle{\pst@object{psGTriangle}} +\def\psGTriangle{\def\pst@par{}\pst@object{psGTriangle}} \def\psGTriangle@i(#1)(#2)(#3)#4#5#6{{% \def\solid@star{}% \begin@ClosedObj @@ -3546,7 +3555,7 @@ \end@ClosedObj% }\ignorespaces} % -\def\psdice{\pst@object{psdice}} +\def\psdice{\def\pst@par{}\pst@object{psdice}} \def\psdice@i#1{{% \pst@killglue% \addbefore@par{framearc=0.3,linewidth=1pt}% @@ -3683,7 +3692,7 @@ % \define@key[psset]{pstricks-add}{colorType}[0]{\def\psk@colorType{#1}} \psset[pstricks-add]{colorType=0} % 0-> two color mode 1->wavelength mode (400..700nm) -\def\psMatrixPlot{\pst@object{psMatrixPlot}} +\def\psMatrixPlot{\def\pst@par{}\pst@object{psMatrixPlot}} \def\psMatrixPlot@i#1#2#3{% \pst@killglue% \addbefore@par{xStep=1,yStep=1}% @@ -3768,7 +3777,7 @@ \define@key[psset]{pstricks-add}{chartNodeO}{\def\psk@chartNodeO{#1}} \psset[pstricks-add]{chartNodeI=0.75,chartNodeO=1.5} % -\def\psChart{\pst@object{psChart}} +\def\psChart{\def\pst@par{}\pst@object{psChart}} \def\psChart@i#1#2#3{% % #1:values #2:separated charts % #3 radius->pie; max height->histogram @@ -4011,7 +4020,7 @@ \global\advance\chart@ColorIndex by 1pt } % -\def\psCancel{\pst@object{psCancel}}% by Stefano Baroni 2008-06-21 +\def\psCancel{\def\pst@par{}\pst@object{psCancel}}% by Stefano Baroni 2008-06-21 \def\psCancel@i{\pst@makebox\psCancel@ii} \def\psCancel@ii{% \begingroup -- cgit v1.2.3