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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
%% $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.05}
\def\filedate{2014/05/12}
\message{`PST-tools' v\fileversion, \filedate\space (hv)}
%
\define@key[psset]{pst-tools}{decimalSeparator}[.]{\def\psk@decimalSeparator{#1}}%
\define@boolkey[psset]{pst-tools}[Pst@]{comma}[true]{%
\ifPst@comma\def\psk@decimalSeparator{,}\else\def\psk@decimalSeparator{.}\fi}
\define@boolkey[psset]{pst-tools}[Pst@]{trimSpaces}[true]{}
\define@key[psset]{pst-tools}{xShift}[0]{\def\psk@xShift{#1}}
\define@key[psset]{pst-tools}{yShift}[0]{\def\psk@yShift{#1}}
\define@key[psset]{pst-tools}{postString}[]{\def\psk@postString{#1}}
\define@key[psset]{pst-tools}{VarName}[]{\def\psk@VarName{#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,yShift=0,trimSpaces=false,postString={},VarName={},
comma=false,decimalSeparator=.}
%
\def\txG{ true setglobal globaldict begin }
\def\etxG{ end false setglobal }
%
\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
\ifx\relax\psk@VarName\relax\else dup \txG 10 string cvs /\psk@VarName\space exch def \etxG \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
%/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422
\ifx\relax\psk@postString\relax\else [ exch (\psk@postString) ] concatstringarray \fi
\ifPst@trimSpaces rightTrim \fi
\ifPst@comma dot2comma \fi % do we have to change dot to comma
\psk@xShift\space \psk@yShift\space 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@comma 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@comma 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
%
|