X-Git-Url: https://melusine.eu.org/syracuse/G/git/?p=pst-eqdf.git;a=blobdiff_plain;f=gravitation%2Fpst-tools.tex;fp=gravitation%2Fpst-tools.tex;h=a6e4cad0e72d547b79cb22b63b02d79c65447096;hp=0000000000000000000000000000000000000000;hb=2acea1b6946ba0bc3da40518d863899c5fefeb5a;hpb=29d95afc99babe9ffd01f059067116a3144bd04d diff --git a/gravitation/pst-tools.tex b/gravitation/pst-tools.tex new file mode 100644 index 0000000..a6e4cad --- /dev/null +++ b/gravitation/pst-tools.tex @@ -0,0 +1,111 @@ +%% $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 +%