1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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 <hvoss@tug.org>
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%% DESCRIPTION:
%% `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
%
|