%% $Id: pst-tools.tex 599 2011-11-03 19:38:28Z herbert $ %% %% This is file `pst-tools.tex', %% %% IMPORTANT NOTICE: %% %% Package `pst-tools.tex' %% %% 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: %% `pst-tools' is a PSTricks package for helper functions %% %% \csname PSTtoolsLoaded\endcsname \let\PSTtoolsLoaded\endinput \ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey.tex \fi % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax % interface to the `xkeyval' package \pst@addfams{pst-tools} % \def\fileversion{0.1} \def\filedate{2012/01/01} \message{`PST-tools' v\fileversion, \filedate\space (hv)} % \define@boolkey[psset]{pst-tools}[Pst@]{dot}[true]{} \define@key[psset]{pst-tools}{xShift}[0]{\def\psk@xShift{#1}} \define@key[psset]{pst-tools}{PSfont}[Times-Roman]{\def\psk@PSfont{/#1 }} \define@key[psset]{pst-tools}{valuewidth}[10]{\pst@getint{#1}\psk@valuewidth } \define@key[psset]{pst-tools}{fontscale}[10]{\pst@checknum{#1}\psk@fontscale } \define@key[psset]{pst-tools}{decimals}[-1]{\pst@getint{#1}\psk@decimals } \psset[pst-tools]{PSfont=Times-Roman,fontscale=10,valuewidth=10,decimals=-1,xShift=0,dot} % \def\psPrintValue{\pst@object{psPrintValue}} \def\psPrintValue@i#1{\expandafter\psPrintValue@ii#1,,\@nil} \def\psPrintValue@ii#1,#2,#3\@nil{% #1,#2 only for algebraic code \begin@SpecialObj \addto@pscode{ gsave \psk@PSfont findfont \psk@fontscale scalefont setfont \ifPst@algebraic /x #1 def /Func (#2) tx@AlgToPs begin AlgToPs end cvx def Func \else #1 \fi \psk@decimals -1 gt { 10 \psk@decimals exp dup 3 1 roll mul cvi exch div } if \psk@valuewidth string cvs %/Output exch def % save output \ifPst@dot dot2comma \fi % do we have to change dot to comma \psk@xShift\space 0 moveto %Output show grestore }% \end@SpecialObj% } \define@boolkey[psset]{pst-tools}[Pst@]{round}[true]{}% \define@boolkey[psset]{pst-tools}[Pst@]{science}[true]{% \ifPst@science\def\psk@Scin{true }\else\def\psk@Scin{false }\fi} \psset[pst-tools]{science=false,round=false} \def\psPrintValueNew{\pst@object{psPrintValueNew}} \def\psPrintValueNew@i#1{\expandafter\psPrintValueNew@ii#1,,\@nil} \def\psPrintValueNew@ii#1,#2,#3\@nil{% #1,#2 only for algebraic code \begin@SpecialObj \addto@pscode{ % thanks to Buddy Ledger /mfont { \psk@PSfont findfont \psk@fontscale scalefont setfont } bind def /mfontexp { \psk@PSfont findfont \psk@fontscale 1.2 div scalefont setfont } bind def /s1 { /Symbol findfont \psk@fontscale scalefont setfont } bind def \ifPst@algebraic /x #1 def /Func (#2) tx@AlgToPs begin AlgToPs end cvx def Func \else #1 \fi /value ED \psk@Scin { value 0 ne { value log floor cvi /expon ED }{ /expon 0 def } ifelse value 10 expon exp div \psk@decimals -1 gt { 10 \psk@decimals exp dup 3 1 roll mul \ifPst@round round \else cvi \fi exch div } if \psk@decimals 0 eq { cvi } if /numb ED expon \psk@valuewidth string cvs /expon exch def numb \psk@valuewidth string cvs \ifPst@dot dot2comma \fi % do we have to change dot to comma /Output exch def /txspc \psk@fontscale 4 div def \psk@xShift\space 0 moveto mfont Output show txspc 0 rmoveto s1 (\string\264) show txspc 0 rmoveto mfont (10) show txspc 2 div txspc 1.5 mul rmoveto mfontexp expon show } { value \psk@decimals -1 gt { 10 \psk@decimals exp dup 3 1 roll mul \ifPst@round round \else cvi \fi exch div } if \psk@decimals 0 eq { cvi } if %inserted to handle decimals=0 \psk@valuewidth string cvs \ifPst@dot dot2comma \fi % do we have to change dot to comma \psk@xShift\space 0 moveto mfont %Output show } ifelse }% \end@SpecialObj% } % \catcode`\@=\PstAtCode\relax % %% END: pst-tools.tex \endinput %