diff options
Diffstat (limited to 'Master')
96 files changed, 15586 insertions, 0 deletions
diff --git a/Master/texmf-dist/dvips/ai/aifonts.map.nodownload b/Master/texmf-dist/dvips/ai/aifonts.map.nodownload new file mode 100644 index 00000000000..bbf8711aeaf --- /dev/null +++ b/Master/texmf-dist/dvips/ai/aifonts.map.nodownload @@ -0,0 +1,128 @@ +aicmb10 CMB10 +aicmbsy10 CMBSY10 +aicmbx10 CMBX10 +aicmbx12 CMBX12 +aicmbx5 CMBX5 +aicmbx6 CMBX6 +aicmbx7 CMBX7 +aicmbx8 CMBX8 +aicmbx9 CMBX9 +aicmbxsl10 CMBXSL10 +aicmbxti10 CMBXTI10 +aicmcsc10 CMCSC10 +aicmdunh10 CMDUNH10 +aicmex10 CMEX10 +aicmff10 CMFF10 +aicmfi10 CMFI10 +aicmfib8 CMFIB8 +aicminch CMINCH +aicmitt10 CMITT10 +aicmmi10 CMMI10 +aicmmi12 CMMI12 +aicmmi5 CMMI5 +aicmmi6 CMMI6 +aicmmi7 CMMI7 +aicmmi8 CMMI8 +aicmmi9 CMMI9 +aicmmib10 CMMIB10 +aicmr10 CMR10 +aicmr12 CMR12 +aicmr17 CMR17 +aicmr5 CMR5 +aicmr6 CMR6 +aicmr7 CMR7 +aicmr8 CMR8 +aicmr9 CMR9 +aicmsl10 CMSL10 +aicmsl12 CMSL12 +aicmsl8 CMSL8 +aicmsl9 CMSL9 +aicmsltt10 CMSLTT10 +aicmss10 CMSS10 +aicmss12 CMSS12 +aicmss17 CMSS17 +aicmss8 CMSS8 +aicmss9 CMSS9 +aicmssbx10 CMSSBX10 +aicmssdc10 CMSSDC10 +aicmssi10 CMSSI10 +aicmssi12 CMSSI12 +aicmssi17 CMSSI17 +aicmssi8 CMSSI8 +aicmssi9 CMSSI9 +aicmssq8 CMSSQ8 +aicmssqi8 CMSSQI8 +aicmsy10 CMSY10 +aicmsy5 CMSY5 +aicmsy6 CMSY6 +aicmsy7 CMSY7 +aicmsy8 CMSY8 +aicmsy9 CMSY9 +aicmtcsc10 CMTCSC10 +aicmtex10 CMTEX10 +aicmtex8 CMTEX8 +aicmtex9 CMTEX9 +aicmti10 CMTI10 +aicmti12 CMTI12 +aicmti7 CMTI7 +aicmti8 CMTI8 +aicmti9 CMTI9 +aicmtt10 CMTT10 +aicmtt12 CMTT12 +aicmtt8 CMTT8 +aicmtt9 CMTT9 +aicmu10 CMU10 +aicmvtt10 CMVTT10 +ailasy10 LASY10 +ailasy5 LASY5 +ailasy6 LASY6 +ailasy7 LASY7 +ailasy8 LASY8 +ailasy9 LASY9 +ailasyb10 LASYB10 +ailcircle10 LCIRCLE10 +ailcirclew10 LCIRCLEW10 +ailcmss8 LCMSS8 +ailcmssb8 LCMSSB8 +ailcmssi8 LCMSSI8 +ailine10 LINE10 +ailinew10 LINEW10 +ailogo10 LOGO10 +ailogo8 LOGO8 +ailogo9 LOGO9 +ailogobf10 LOGOBF10 +ailogosl10 LOGOSL10 +aicmbsy5 CMBSY5 +aicmbsy7 CMBSY7 +aicmmib5 CMMIB5 +aicmmib7 CMMIB7 +aieuex10 EUEX10 +aieufb10 EUFB10 +aieufb5 EUFB5 +aieufb7 EUFB7 +aieufm10 EUFM10 +aieufm5 EUFM5 +aieufm7 EUFM7 +aieurb10 EURB10 +aieurb5 EURB5 +aieurb7 EURB7 +aieurm10 EURM10 +aieurm5 EURM5 +aieurm7 EURM7 +aieusb10 EUSB10 +aieusb5 EUSB5 +aieusb7 EUSB7 +aieusm10 EUSM10 +aieusm5 EUSM5 +aieusm7 EUSM7 +aimsam10 MSAM10 +aimsam5 MSAM5 +aimsam7 MSAM7 +aimsbm10 MSBM10 +aimsbm5 MSBM5 +aimsbm7 MSBM7 +aiwncyb10 WNCYB10 +aiwncyi10 WNCYI10 +aiwncyr10 WNCYR10 +aiwncysc10 WNCYSC10 +aiwncyss10 WNCYSS10 diff --git a/Master/texmf-dist/dvips/ai/config.ai b/Master/texmf-dist/dvips/ai/config.ai new file mode 100644 index 00000000000..1c41fdb8f87 --- /dev/null +++ b/Master/texmf-dist/dvips/ai/config.ai @@ -0,0 +1,2 @@ +% Bernard Collins, 1999, public domain. +p +aifonts.map diff --git a/Master/texmf-dist/dvips/ai/config.aiz b/Master/texmf-dist/dvips/ai/config.aiz new file mode 100644 index 00000000000..840b83ac5cb --- /dev/null +++ b/Master/texmf-dist/dvips/ai/config.aiz @@ -0,0 +1,2 @@ +% Bernard Collins, 1999, public domain. +p +aizfonts.map diff --git a/Master/texmf-dist/dvips/ams/config.ams b/Master/texmf-dist/dvips/ams/config.ams new file mode 100644 index 00000000000..a4016b028d1 --- /dev/null +++ b/Master/texmf-dist/dvips/ams/config.ams @@ -0,0 +1,7 @@ +% Thomas Esser, 1998, public domain. + +% Usage: dvips -Pams ... +% Purpose: set up ams fonts as build-in of your ps interpreter (or +% printer). + +p +psfonts.ams diff --git a/Master/texmf-dist/dvips/ams/config.amz b/Master/texmf-dist/dvips/ams/config.amz new file mode 100644 index 00000000000..2ecc67f32e6 --- /dev/null +++ b/Master/texmf-dist/dvips/ams/config.amz @@ -0,0 +1,9 @@ +% Thomas Esser, 1998, public domain. + +% Usage: dvips -Pamz +% Purpose: set up ams fonts to be downloaded as type1 fonts with your +% document. +% Note: this is superceeded by psfonts_t1.map resp. config.outline +% resp. -Poutline. + +p +psfonts.amz diff --git a/Master/texmf-dist/dvips/antiqua/config.uaq b/Master/texmf-dist/dvips/antiqua/config.uaq new file mode 100644 index 00000000000..f7c71b24b8f --- /dev/null +++ b/Master/texmf-dist/dvips/antiqua/config.uaq @@ -0,0 +1 @@ +p +uaq.map diff --git a/Master/texmf-dist/dvips/antp/antp.cfg b/Master/texmf-dist/dvips/antp/antp.cfg new file mode 100644 index 00000000000..4cd9c8427cf --- /dev/null +++ b/Master/texmf-dist/dvips/antp/antp.cfg @@ -0,0 +1 @@ +p +antp.map diff --git a/Master/texmf-dist/dvips/antp/config.antp b/Master/texmf-dist/dvips/antp/config.antp new file mode 100644 index 00000000000..4cd9c8427cf --- /dev/null +++ b/Master/texmf-dist/dvips/antp/config.antp @@ -0,0 +1 @@ +p +antp.map diff --git a/Master/texmf-dist/dvips/arphic/config.arphic b/Master/texmf-dist/dvips/arphic/config.arphic new file mode 100644 index 00000000000..14c00d472b9 --- /dev/null +++ b/Master/texmf-dist/dvips/arphic/config.arphic @@ -0,0 +1,2 @@ +p +gbsnu.map +p +bsmiu.map diff --git a/Master/texmf-dist/dvips/aurora/aurora.pro b/Master/texmf-dist/dvips/aurora/aurora.pro new file mode 100644 index 00000000000..03e9ef435f6 --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/aurora.pro @@ -0,0 +1,275 @@ +%! +% Aurora: Colour Separation for Level 1 PostScript. +% Copyright: Graham Freeman, 1994. +% gfreeman@cs.adfa.oz.au +% All Rights Reserved. +% This program may not be used for commercial purposes without +% the consent of the author. It may be freely transmitted +% provided this authorship and copyright notice is retained +% unmodified. + systemdict /setpacking known + {/SavePacking currentpacking def true setpacking}if +/_c+stat 29 dict def +_c+stat begin +/Colour [0 0 0 1] def +/RGB [0 0 0] def +/AllColour [1 1 1 1] def +/setcolour {this type /arraytype eq + {true 0 1 3 {dup Colour exch get AllColour 3 -1 roll get eq and + dup not {exit}if} for % Is current colour == 1,1,1,1 ? + {1} + {0 0 1 3{this exch get dup mul add}for + 0 0 1 3{Colour exch get dup mul add}for + 0 0 1 3{dup Colour exch get this 3 -1 roll get mul add}for + 3 copy 3 1 roll mul sqrt dup 0 gt + {div 0.98 lt + {3{pop}repeat 0} + {exch pop exch div dup 1 gt {pop 1}if} ifelse} + {5{pop}repeat 0} ifelse + }ifelse } + {Colour this get}ifelse + 1 exch sub setgray} bind def +/this 3 def +/transfer [{} dup dup dup] def +/screen [4 {currentscreen 3 array astore}repeat ] def +% {dup mul exch dup mul add 1 exch sub} +/blackgenerate {1 exch sub dup .25 gt {pop 0}{4 mul 1 exch sub}ifelse} def +/undercolourremove {pop 0} def +/bound {dup 0 lt{pop 0}if dup 1 gt{pop 1}if} def +/_c+image [/image load dup type /operatortype ne {/exec cvx}if] cvx def +/I 0 def +/J 0 def +/mask 255 def +/nbit 8 def +/buffer 1 string def +/gsavestack 31 array def +/gsavepointer -1 def +/bitandchpos {I nbit mul dup 8 mod nbit add 8 exch sub exch 8 idiv}def +/storebitval { + mask and bitandchpos % val bitpos chpos + buffer 1 index get mask 3 index bitshift not and %val bitpos chpos otherbits + 4 -2 roll bitshift or buffer 3 1 roll put }def +/buffercheck {dup length buffer length gt + {dup length string /buffer exch def}if }def +/cmyk2blackvalue { + this 1 eq {4 -1 roll} if + this 2 eq {4 -2 roll} if + this 3 eq {4 1 roll} if + pop pop pop} def +/compl { + dup type dup /integertype eq exch /booleantype eq or {not}{ + dup type /stringtype eq {dup dup length 1 sub 0 1 3 -1 roll + {/J exch def dup J get not 255 and J exch put dup}for pop }if + }ifelse }def +/rgb2cmyk {3 {1 exch sub 3 1 roll}repeat + min3 dup undercolourremove exch blackgenerate 5 1 roll + 3{dup 3 1 roll sub bound 5 1 roll}repeat pop} def +/max3 {2 index 2 index lt{1 index}{2 index}ifelse dup 2 index lt{pop dup}if} def +/min3 {2 index 2 index lt{2 index}{1 index}ifelse dup 2 index gt{pop dup}if} def +/hsb2rgb {3 -1 roll 6 mul dup 6 eq {pop 0}if dup floor cvi + 2 index 4 index 1 exch sub mul exch dup 2 mod 0 eq + {dup 4 -1 roll sub 1 add 5 -1 roll mul 1 exch sub 3 index mul 3 1 roll + dup 0 eq{pop}{2 eq {3 1 roll}{3 -1 roll}ifelse}ifelse } + {dup 4 -1 roll exch sub 5 -1 roll mul 1 exch sub 3 index mul exch + dup 1 eq{pop 3 1 roll}{3 eq {3 -1 roll}if}ifelse } + ifelse} def +/rgb2hsb {max3 4 1 roll min3 4 index exch sub + dup 5 index 0 eq {pop 0}{5 index div}ifelse 6 1 roll dup 0 eq + {6 1 roll pop pop pop} + {3 index 1 index eq {2 index 2 index sub exch div} + {2 index 1 index eq {1 index 4 index sub exch div 2 add} + {3 index 3 index sub exch div 4 add}ifelse}ifelse} + ifelse 6 div 6 1 roll pop pop pop} def +/saveproc {_c+stat begin + /gsavepointer gsavepointer 1 add def + gsavepointer gsavestack length ge + {/gsavestack gsavestack gsavepointer 2 mul array dup 3 1 roll copy pop def} + if gsavestack gsavepointer get + type /arraytype ne {gsavestack gsavepointer 7 array dup 0 4 array put + dup 1 3 array put dup 2 4 array put dup 3 4 array put put} if + gsavestack gsavepointer get + dup 0 get Colour exch copy pop dup 1 get RGB exch copy pop + dup 2 get screen exch copy pop dup 3 get transfer exch copy pop + dup 4 /undercolourremove load put dup 5 /blackgenerate load put + 6 false put end } def +end + +/currentgray {_c+stat /Colour get aload pop + 4 1 roll .11 mul 4 1 roll .59 mul 4 1 roll .3 mul add add add + 1 exch sub dup 0 lt {pop 0}if} bind def +/currentcmykcolor {_c+stat /Colour get aload pop} bind def +/setcmykcolor {_c+stat begin Colour astore + aload pop 4 1 roll 3{3 index add dup 1 gt{pop 1}if 1 exch sub 3 1 roll}repeat + 4 -1 roll pop RGB astore pop setcolour end} bind def +/setrgbcolor {_c+stat begin 3{2 index}repeat RGB astore pop + rgb2cmyk Colour astore pop setcolour end} def +/currentrgbcolor {_c+stat /RGB get aload pop} bind def +/sethsbcolor {_c+stat begin hsb2rgb setrgbcolor end} def +/currenthsbcolor {_c+stat begin RGB aload pop rgb2hsb end} def +/setcolorscreen {_c+stat begin 3 -1 0{screen exch get astore pop}for + this type /arraytype ne + {screen this get aload pop setscreen}if end} bind def +/currentcolorscreen {_c+stat begin 0 1 3 {screen exch get aload pop}for end} + bind def +/setcolortransfer [{_c+stat begin transfer astore pop this type /arraytype ne} + /exec load + [{transfer this get} /exec load + /settransfer load dup type /operatortype ne {/exec cvx}if] cvx + /if load /end load] + cvx def +/settransfer [{ _c+stat begin 0 1 3 {transfer exch 2 index put}for end} + /exec load + [ /settransfer load dup type /operatortype ne {/exec cvx}if ] cvx + /exec load ] cvx def +/currentcolortransfer {_c+stat /transfer get aload pop} bind def +/setblackgeneration {_c+stat /blackgenerate 3 -1 roll put} bind def +/currentblackgeneration {_c+stat /blackgenerate get} bind def +/setundercolorremoval {_c+stat /undercolourremove 3 -1 roll put} bind def +/currentundercolorremoval {_c+stat /undercolourremove get} bind def +/colorimage {_c+stat begin dup 1 eq + % 1 + {pop pop this type /arraytype eq + {(Compound colour cannot be handled with "colorimage"\n)print stop}if + this 3 ne + {4 array dup 0 4 -1 roll put dup 1 /exec load put dup + 2 {_c+stat begin buffercheck dup length 1 sub 0 1 3 -1 roll + {buffer exch 255 put}for length buffer exch 0 exch getinterval end} + bind put + dup 3 /exec load put cvx} if + }{3 eq + % 3 + {{this type /arraytype eq % true 3 + {(Compound colour cannot be handled with "colorimage"\n)print stop}if + 4 index 8 ne % not 8 bits + {4 index {dup 1 eq {exit}if dup 2 mod 0 ne + {(Only 1,2,4 or 8-bit images can be handled\n)print stop}if 2 idiv} + loop pop + 4 index 1 sub 1 exch {1 bitshift 1 or}repeat _c+stat /mask 3 -1 roll put + 4 index _c+stat /nbit 3 -1 roll put + 8 array dup + 2 -1 0 {2 mul dup 2 index exch 6 -1 roll put 1 add /exec load put dup}for + 6 {_c+stat begin buffercheck 0 1 2 index length 8 mul nbit idiv 1 sub + {/I exch def I nbit mul dup 8 mod nbit add 8 sub exch 8 idiv + 3{4 index 1 index get 2 index bitshift mask and mask div 3 1 roll} + repeat % RGB values found + pop pop rgb2cmyk cmyk2blackvalue mask mul round cvi not mask and + storebitval}for + pop pop pop buffer 0 I 1 add nbit mul 8 idiv getinterval end} bind put + dup 7 /exec load put cvx} + {8 array dup % 8 bits + 2 -1 0 {2 mul dup 2 index exch 6 -1 roll put 1 add /exec load put dup}for + 6 {_c+stat begin buffercheck 0 1 2 index length 1 sub + {/I exch def 3{2 index I get 255 div}repeat + rgb2cmyk cmyk2blackvalue 255 mul round cvi not 255 and + buffer I 3 -1 roll put}for + pop pop pop buffer 0 I 1 add getinterval end} bind put + dup 7 /exec load put cvx}ifelse} + % false 3 + {this type /arraytype eq + {(Compound colour cannot be handled with "colorimage"\n)print stop}if + 2 index 8 ne % not 8 bits + {2 index {dup 1 eq {exit}if dup 2 mod 0 ne + {(Only 1,2,4 or 8-bit images can be handled\n)print stop}if 2 idiv} + loop pop + 2 index 1 sub 1 exch {1 bitshift 1 or}repeat _c+stat /mask 3 -1 roll put + 2 index _c+stat /nbit 3 -1 roll put + 4 array dup 0 4 -1 roll put dup 1 /exec load put dup + 2 {_c+stat begin buffercheck dup length 8 mul nbit idiv 3 idiv /I 0 def + {dup 0 1 2{I 3 mul add nbit mul dup 8 mod nbit add 8 sub + exch 8 idiv 2 index exch get exch bitshift mask and mask div exch}for + % RGB values found + pop rgb2cmyk cmyk2blackvalue mask mul round cvi not mask and storebitval + /I I 1 add def}repeat + pop buffer 0 I nbit mul 8 idiv getinterval end} bind put + dup 3 /exec load put cvx} + {4 array dup 0 4 -1 roll put dup 1 /exec load put dup % 8 bits + 2 {_c+stat begin buffercheck dup length 3 idiv /I 0 def /J 0 def + {dup J get 255 div 1 index J 1 add get 255 div + 2 index J 2 add get 255 div rgb2cmyk cmyk2blackvalue 255 mul round cvi + not 255 and buffer I 3 -1 roll put /I I 1 add def /J J 3 add def}repeat + pop buffer 0 I getinterval end} + bind put dup 3 /exec load put cvx}ifelse}ifelse} + % 4 + {{this type /arraytype eq % true 4 + {(Compound colour cannot be handled with "colorimage"\n)print stop}if + 5 index {dup 1 eq {exit}if dup 2 mod 0 ne + {(Only 1,2,4 or 8-bit images can be handled\n)print stop}if 2 idiv} + loop pop + 10 array dup 0 7 -1 roll put dup 1 /exec load put + dup 2 6 -1 roll put dup 3 /exec load put dup 4 5 -1 roll put + dup 5 /exec load put dup 6 4 -1 roll put dup 7 /exec load put + dup 8 {_c+stat begin cmyk2blackvalue buffercheck buffer copy compl end} + bind put + dup 9 /exec load put cvx} + % false 4 + {this type /arraytype eq + {(Compound colour cannot be handled with "colorimage"\n)print stop}if + 2 index 8 ne % not 8 bits + {2 index {dup 1 eq {exit}if dup 2 mod 0 ne + {(Only 1,2,4 or 8-bit images can be handled\n)print stop}if 2 idiv} + loop pop + 2 index 1 sub 1 exch {1 bitshift 1 or}repeat _c+stat /mask 3 -1 roll put + 2 index _c+stat /nbit 3 -1 roll put + 4 array dup 0 4 -1 roll put dup 1 /exec load put dup + 2 {_c+stat begin buffercheck dup length 8 mul nbit idiv 4 idiv /I 0 def + {dup 0 1 3{I 4 mul add nbit mul dup 8 mod nbit add 8 sub + exch 8 idiv 2 index exch get exch bitshift mask and exch}for + pop cmyk2blackvalue not storebitval /I I 1 add def}repeat + pop buffer 0 I nbit mul 8 idiv getinterval end} bind put + dup 3 /exec load put cvx} + {4 array dup 0 4 -1 roll put dup 1 /exec load put dup % 8 bits + 2 {_c+stat begin buffercheck dup length 4 idiv /I this def /J 0 def + {dup I get not 255 and buffer J 3 -1 roll put /I I 4 add def /J J 1 add def}repeat + pop buffer 0 J getinterval end} bind put + dup 3 /exec load put cvx}ifelse} + ifelse}ifelse}ifelse + end _c+stat /_c+image get exec} def +/setgray {_c+stat begin dup dup dup RGB astore pop + 1 exch sub 0 0 0 4 -1 roll Colour astore pop setcolour end} bind def +/image [{_c+stat begin + this type /arraytype eq + % {(Compound colour cannot be handled with "image"\n)print stop}if + this 3 ne or + { 4 array dup 0 4 -1 roll put dup 1 /exec load put dup + 2 {_c+stat begin buffercheck dup length 1 sub 0 1 3 -1 roll + {buffer exch 255 put}for length buffer exch 0 exch getinterval end} bind put + dup 3 /exec load put cvx} if + end} /exec load /image load dup type /operatortype ne {/exec cvx}if] cvx def +/gsave [_c+stat /saveproc get /exec load + /gsave load dup type /operatortype ne {/exec load}if ] cvx def +/grestore [/grestore load dup type /operatortype ne {/exec cvx}if + {_c+stat begin gsavepointer 0 ge + dup {gsavestack gsavepointer get 6 get and}if + {gsavestack gsavepointer get + dup 0 get Colour copy pop dup 1 get RGB copy pop + dup 2 get screen copy pop dup 3 get transfer copy pop + dup 4 get /undercolourremove exch def 5 get /blackgenerate exch def + /gsavepointer gsavepointer 1 sub def} if end} + /exec load ] cvx def +/grestoreall [/grestoreall load dup type /operatortype ne {/exec cvx}if + {_c+stat begin gsavepointer -1 0 + {/gsavepointer exch def gsavestack gsavepointer get 6 get {exit}if}for + gsavepointer 0 ge + { gsavestack gsavepointer get dup 0 get Colour copy pop + dup 1 get RGB copy pop dup 2 get screen copy pop + dup 3 get transfer copy pop dup 4 get /undercolourremove exch def + dup 5 get /blackgenerate exch def + 6 get not {/gsavepointer -1 def}if } if + end} + /exec load ] cvx def +/save [_c+stat /saveproc get /exec load + {_c+stat begin gsavestack gsavepointer get 6 true put end} /exec load + /save load dup type /operatortype ne {/exec cvx}if] cvx def +/restore [/restore load dup type /operatortype ne {/exec cvx}if + {_c+stat begin gsavepointer 0 ge + {gsavestack gsavepointer get + dup 0 get Colour copy pop dup 1 get RGB copy pop + dup 2 get screen copy pop dup 3 get transfer copy pop + dup 4 get /undercolourremove exch def 5 get /blackgenerate exch def + /gsavepointer gsavepointer 1 sub def} if end} /exec load + ]cvx def +/initgraphics [/initgraphics load dup type /operatortype ne {/exec cvx}if + {0 setgray} /exec load ] cvx def + +systemdict /setpacking known {SavePacking setpacking}if +% End of Aurora: colour separation prelude diff --git a/Master/texmf-dist/dvips/aurora/black.pro b/Master/texmf-dist/dvips/aurora/black.pro new file mode 100644 index 00000000000..471d046fe0d --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/black.pro @@ -0,0 +1 @@ +_c+stat begin /this 3 def end diff --git a/Master/texmf-dist/dvips/aurora/blue.pro b/Master/texmf-dist/dvips/aurora/blue.pro new file mode 100644 index 00000000000..bb8fa9a9a4f --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/blue.pro @@ -0,0 +1 @@ +_c+stat begin /this [1 1 0 0] def end diff --git a/Master/texmf-dist/dvips/aurora/cyan.pro b/Master/texmf-dist/dvips/aurora/cyan.pro new file mode 100644 index 00000000000..75ddce6c3a9 --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/cyan.pro @@ -0,0 +1 @@ +_c+stat begin /this 0 def end diff --git a/Master/texmf-dist/dvips/aurora/green.pro b/Master/texmf-dist/dvips/aurora/green.pro new file mode 100644 index 00000000000..727532d565e --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/green.pro @@ -0,0 +1 @@ +_c+stat begin /this [1 0 1 0] def end diff --git a/Master/texmf-dist/dvips/aurora/magenta.pro b/Master/texmf-dist/dvips/aurora/magenta.pro new file mode 100644 index 00000000000..8ab131d0430 --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/magenta.pro @@ -0,0 +1 @@ +_c+stat begin /this 1 def end diff --git a/Master/texmf-dist/dvips/aurora/red.pro b/Master/texmf-dist/dvips/aurora/red.pro new file mode 100644 index 00000000000..d16d3e57e7a --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/red.pro @@ -0,0 +1 @@ +_c+stat begin /this [0 1 1 0] def end diff --git a/Master/texmf-dist/dvips/aurora/yellow.pro b/Master/texmf-dist/dvips/aurora/yellow.pro new file mode 100644 index 00000000000..c154d37fa65 --- /dev/null +++ b/Master/texmf-dist/dvips/aurora/yellow.pro @@ -0,0 +1 @@ +_c+stat begin /this 2 def end diff --git a/Master/texmf-dist/dvips/avantgar/config.uag b/Master/texmf-dist/dvips/avantgar/config.uag new file mode 100644 index 00000000000..2bda4fbddcf --- /dev/null +++ b/Master/texmf-dist/dvips/avantgar/config.uag @@ -0,0 +1 @@ +p +uag.map diff --git a/Master/texmf-dist/dvips/base/ehandler.ps b/Master/texmf-dist/dvips/base/ehandler.ps new file mode 100644 index 00000000000..af40d6e5287 --- /dev/null +++ b/Master/texmf-dist/dvips/base/ehandler.ps @@ -0,0 +1,279 @@ +%!PS-Adobe-2.0
+% This is based on: ehandler.ps -- Downloaded Error Break-page handler
+% Copyright (C) 1984, 1985, 1986 Adobe Systems Incorporated.
+% All Rights Reserved.
+
+% Modifications Copyright (C) 1990, 1991 Y&Y.
+% print names of dictionaries on dictionary stack
+% print first few lines of input stream after error
+% print top of execution stack
+% make visible offending commands that are control characters
+% print jobname if it exists
+% catch errors in error handler and print them
+% permit overloading (for debugging of error handler)
+% ignore timeout errors
+% control hardcopy versus softcopy output
+% avoid multiple pages with error message
+
+% NOTE: For hardcopy paper/film output: set showflag true
+% NOTE: For screen/file output: set printflag true
+
+0 % exitserver password
+/$brkpage where
+% {pop} if false % UNCOMMENT THIS LINE TO PERMIT OVERLOADING
+ { % ifelse
+ pop pop
+ (Error Handler in place - not loaded again\n)
+ print flush stop
+}{ % else
+ dup serverdict begin
+ statusdict begin checkpassword { % ifelse
+ (Error Handler downloaded.\n) print flush
+ exitserver
+ }{ % else
+ pop
+ (Bad Password on loading error handler!!!\n)
+ print flush stop
+ } ifelse
+} ifelse
+/$brkpage where {pop} { % to allow overloading
+ /$brkpage 64 dict def
+} ifelse % to allow overloading
+$brkpage begin
+/showflag true def % set to true for hardcopy paper/film output
+/printflag false def % set to true for sending back to screen/file
+/prnt { % def
+ dup type /stringtype ne {=string cvs} if
+ dup length 1 eq { dup 0 get 32 lt { dup 0 get % new
+ 64 add exch pop (control-X) dup 8 4 -1 roll put} if} if % new
+ dup length 6 mul
+ /tx exch def /ty 10 def
+ currentpoint /toy exch def /tox exch def
+ 1 setgray newpath
+ tox toy 2 sub moveto
+ 0 ty rlineto tx 0 rlineto
+ 0 ty neg rlineto
+ closepath showflag{fill}if
+ tox toy moveto 0 setgray
+ showflag{dup show}if printflag{print}{pop}ifelse
+} bind def
+/nl { % def
+ currentpoint exch pop lmargin exch moveto
+ 0 -10 rmoveto
+ printflag{(\n) print flush}if
+} def
+
+/== {/cp 0 def typeprint nl} def
+/typeprint {
+ dup type dup currentdict exch known {exec}{unknowntype}ifelse
+} readonly def
+/lmargin 72 def /rmargin 72 def
+/tprint { % def
+ dup length cp add rmargin gt {nl /cp 0 def} if
+ dup length cp add /cp exch def
+ prnt
+} readonly def
+/cvsprint {=string cvs tprint ( ) tprint} readonly def
+/unknowntype { % def
+ exch pop cvlit (??) tprint cvsprint
+} readonly def
+/integertype {cvsprint} readonly def
+/realtype {cvsprint} readonly def
+/booleantype {cvsprint} readonly def
+/operatortype {(//) tprint cvsprint} readonly def
+/marktype {pop (-mark- ) tprint} readonly def
+% /dicttype {pop (-dictionary- ) tprint} readonly def % do more:
+/dicttype {namedict cvsprint} readonly def
+/nulltype {pop (-null- ) tprint} readonly def
+/filetype {pop (-filestream- ) tprint} readonly def
+/savetype {pop (-savelevel- ) tprint} readonly def
+/fonttype {pop (-fontid- ) tprint} readonly def
+/nametype { % def
+ dup xcheck not {(/) tprint} if cvsprint
+}readonly def
+/stringtype { % def
+ dup rcheck { % ifelse
+ (\() tprint tprint (\)) tprint
+ }{ % else
+ pop (-string- ) tprint
+ } ifelse
+} readonly def
+/arraytype { % def
+ dup rcheck { % ifelse
+ dup xcheck { % ifelse
+ ({) tprint {typeprint} forall (}) tprint
+ }{ % else
+ ([) tprint {typeprint} forall (]) tprint
+ } ifelse
+ }{ % else
+ pop (-array- ) tprint
+ } ifelse
+} readonly def
+/packedarraytype { % def
+ dup rcheck { % ifelse
+ dup xcheck { % ifelse
+ ({) tprint {typeprint} forall (}) tprint
+ }{ % else
+ ([) tprint {typeprint} forall (]) tprint
+ } ifelse
+ }{ % else
+ pop (-packedarray- ) tprint
+ } ifelse
+} readonly def
+/courier /Courier findfont 10 scalefont def
+/OLDhandleerror where not { % to allow overloading
+ /OLDhandleerror errordict /handleerror get def
+}{pop} ifelse % to allow overloading
+end % $brkpage
+
+% read lines terminated by EITHER newline or return
+% (to deal with brain-damage of AppleTalk connection)
+
+/readsafeline{ % def
+ dup length exch 0
+ { % loop
+ 3 index read
+ { % ifelse
+ dup 10 eq 1 index 13 eq or
+ { % ifelse
+ pop
+ 0 exch getinterval exch pop exch pop
+ true exit % normal exit
+ }{ % ifelse
+ 3 index 2 index le
+ { % ifelse
+ pop pop exch pop exch pop true
+ stop % rangecheck long line
+ }{ % ifelse
+ 3 copy put pop 1 add
+ } ifelse
+ } ifelse
+ }{ % ifelse
+ 0 exch getinterval exch pop exch pop
+ false exit % EOF exit
+ } ifelse
+ } loop
+} def
+
+% Find name for dictionary in tree of dictionaries - ignore font dictionaries
+% Discard intermediate dictionary info - return first match
+
+/lookfordict { % name and dict to search
+ dup % save for self reference detection
+ { % forall
+ dup type /dicttype eq
+ { % is a dictionary
+ dup 3 index ne
+ { % not self reference
+ 1 index /unknowndict ne
+ { % not the place we saved
+ dup unknowndict eq
+ { % found it
+ pop 3 1 roll pop pop true exit % return name and true
+ }{ % not the unknown dict
+ dup rcheck
+ { % safe to read
+ 1 index /FontDirectory ne
+ { % not Font Directory
+ lookfordict % recurse
+ { % found it
+ 3 1 roll pop pop true exit % return name and true
+ }{
+ 0 0 % replace key and value
+ } ifelse % lookfordict
+ } if % FontDirectory
+ } if % safe to read
+ } ifelse % equals unknown
+ } if % place we hid dict
+ } if % self reference
+ } if % is a dictionary
+ pop pop % flush key and value
+ } forall
+ dup true ne {pop pop false} if % flush name and dictionary
+} readonly def
+
+/namedict{ % get name for dictionary
+ dup systemdict eq {/systemdict}
+ {/unknowndict exch def % store unknown dictionary
+ /systemdict dup load lookfordict not {/-no-name-} if} ifelse
+} readonly def
+
+/handleerror { % put
+ systemdict begin $error begin $brkpage begin
+ newerror { % ifelse
+ errorname /timeout ne {
+ {
+ /newerror false store
+ vmstatus % pop pop
+ 3 -1 roll
+ 0 ne {grestoreall} if % free up some VM is possible
+ initgraphics courier setfont
+ lmargin 720 moveto
+ exch sub 4096 lt {stop} if % nearly out of VM ?
+ statusdict /jobname known { % if
+ statusdict /jobname get dup type /stringtype eq {
+ nl (JOBNAME: ) prnt
+ prnt nl
+ } {pop} ifelse
+ } if
+ nl (ERROR: ) prnt
+ errorname prnt nl
+ nl (OFFENDING COMMAND: ) prnt
+ /command load prnt
+ $error /ostack known { % if
+ nl nl (OPERAND STACK:) prnt nl nl
+ $error /ostack get aload length {==} repeat
+ } if
+ $error /estack known { % if
+ nl nl (TOP OF EXECUTION STACK:) prnt nl nl
+ $error /estack get aload length
+ true exch
+ {dup {1 index == 1 index type cvlit /filetype eq {not} if} if
+ exch pop} repeat pop % avoid system stuff
+ } if
+ $error /dstack known { % if
+ nl nl (DICTIONARY STACK:) prnt nl nl
+ $error /dstack get aload length {namedict cvx ==} repeat
+ } if
+ systemdict /file known
+ { % if
+ nl nl (FILE STREAM:) prnt nl nl
+ true 7
+ { % repeat
+ (%stdin) (r) file =string {readsafeline} stopped
+ {
+ pop (long line:\n) prnt =string prnt nl
+ }{
+ {
+ prnt nl
+ }{
+ prnt nl (EOF) prnt nl nl pop false exit
+ } ifelse
+ } ifelse
+ } repeat
+ {3 {(.) prnt nl} repeat nl} if
+ } if
+ showflag{/#copies 1 def systemdict /showpage get exec}if
+ /newerror true store
+ /OLDhandleerror load end end end exec
+ } stopped {
+ nl nl (VMError (or error in error handler)) prnt nl
+ nl (ERROR: ) prnt %
+ errorname prnt nl %
+ nl (OFFENDING COMMAND: ) prnt
+ /command load prnt nl %
+ showflag{/#copies 1 def systemdict /showpage get exec}if
+ /newerror true store
+ /OLDhandleerror load end end end exec
+ } if %% get some output at least if handler dies
+ } if % ignore timeout
+ }{ % else already in error handler ...
+ end end end
+%% systemdict /showpage get exec %% get some output if internal error ?
+ } ifelse
+}
+dup 0 systemdict put % replace name by actual dict object
+dup 4 $brkpage put % replace name by dict object
+bind readonly
+
+errordict 3 1 roll put % put proc in errordict as /handleerror
diff --git a/Master/texmf-dist/dvips/base/resolution400.ps b/Master/texmf-dist/dvips/base/resolution400.ps new file mode 100644 index 00000000000..fb0fe5c7a8e --- /dev/null +++ b/Master/texmf-dist/dvips/base/resolution400.ps @@ -0,0 +1,19 @@ +% (This is the file {\tt resolution400.ps} supplied with NeWSprint.) +% {\tt simpson@math.psu.edu} only got this work by downloading the code +% via an extra header file, i.e., having this in the Dvips config file: +% +% M sparcptr +% D 400 +% h resolution400.ps +% +/SetResolution { + /setres where { + /setres get exec + }{ + pop + } ifelse +} def +%%BeginFeature *SetResolution 400 +400 SetResolution +%%EndFeature +%%EndSetup diff --git a/Master/texmf-dist/dvips/bookman/config.ubk b/Master/texmf-dist/dvips/bookman/config.ubk new file mode 100644 index 00000000000..e1d990b3775 --- /dev/null +++ b/Master/texmf-dist/dvips/bookman/config.ubk @@ -0,0 +1 @@ +p +ubk.map diff --git a/Master/texmf-dist/dvips/brushscr/config.pbsi b/Master/texmf-dist/dvips/brushscr/config.pbsi new file mode 100644 index 00000000000..6745e4c4576 --- /dev/null +++ b/Master/texmf-dist/dvips/brushscr/config.pbsi @@ -0,0 +1,6 @@ +% File name: config.pbsi +% Created by: Maurizio Loreti +% Created using: vim 5.8 +% Creation date: 7-Sep-2001 + +p +pbsi.map diff --git a/Master/texmf-dist/dvips/carlisle/pspicture.ps b/Master/texmf-dist/dvips/carlisle/pspicture.ps new file mode 100644 index 00000000000..1626182cbd7 --- /dev/null +++ b/Master/texmf-dist/dvips/carlisle/pspicture.ps @@ -0,0 +1,138 @@ +%! +%% +%% Source File `pspicture.dtx'. +%% Copyright (C) 1992 1999 David Carlisle +%% This file may be distributed under the terms of the LPPL. +%% See 00readme.txt for details. +%% + + + + +/!BP{ + 72 72.27 div dup scale + }def +/!A{ + newpath + 0 0 moveto + dup neg dup .4 mul rlineto + .8 mul 0 exch rlineto + closepath + fill + } def +/!V{ + !BP + /!X exch def + /!y exch def + /!x exch def + newpath + 0 0 moveto + !x 0 eq {0 !y 0 lt {!X neg}{!X} ifelse} + {!x 0 lt {!X neg}{!X}ifelse !X !y mul !x abs div} ifelse + lineto + setlinewidth % @wholewidth + currentpoint + stroke + translate + !y !x atan + rotate + !A % @arrowlength + }def +/!L{ + !BP + /!X exch def + /!y exch def + /!x exch def + newpath + 0 0 moveto + !x 0 eq {0 !y 0 lt {!X neg}{!X} ifelse} + {!x 0 lt {!X neg}{!X}ifelse !X !y mul !x abs div} ifelse + lineto + setlinewidth % @wholewidth + stroke + }def +/!C{ + !BP + 0 0 3 2 roll + 2 div 0 360 arc + setlinewidth % @wholewidth + stroke + }def +/!D{ + !BP + 0 0 3 2 roll + 2 div 0 360 arc fill + }def +/!O{ + !BP + /!y exch 2 div def + /!x exch 2 div def + /!r exch !x !y + 2 copy gt {exch} if pop + 2 copy gt {exch} if pop + def + setlinewidth % @wholewidth + 1 eq + {newpath + !x neg 0 moveto + !x neg !y 0 !y !r arcto 4 {pop} repeat + 0 !y lineto + stroke}if + 1 eq + {newpath + !x 0 moveto + !x !y 0 !y !r arcto 4 {pop} repeat + 0 !y lineto + stroke}if + 1 eq + {newpath + !x neg 0 moveto + !x neg !y neg 0 !y neg !r arcto 4 {pop} repeat + 0 !y neg lineto + stroke}if + 1 eq + {newpath + !x 0 moveto + !x !y neg 0 !y neg !r arcto 4 {pop} repeat + 0 !y neg lineto + stroke}if + }def +/!V2{ + !BP + 2 copy exch + atan + /a exch def + 2 copy + newpath + 0 0 moveto + lineto % <x*unitlength> <y*unitlength> + 3 2 roll + setlinewidth % @wholewidth + stroke + translate % <x*unitlength> <y*unitlength> + a rotate + !A % @arrowlength + }def +/!L2{ + !BP + newpath + 0 0 moveto + lineto % <x*unitlength> <y*unitlength> + setlinewidth % @wholewidth + stroke + }def +/!C2{ + !BP + /!s exch def + /!y exch def + /!x exch def + newpath + 0 0 moveto + 0 0 + !x 2 div !y 10 div !s mul add + !y 2 div !x 10 div !s mul sub + !x !y + curveto + setlinewidth % @wholewidth + stroke + }def diff --git a/Master/texmf-dist/dvips/cm-super/cm-super.GS b/Master/texmf-dist/dvips/cm-super/cm-super.GS new file mode 100644 index 00000000000..e1946416572 --- /dev/null +++ b/Master/texmf-dist/dvips/cm-super/cm-super.GS @@ -0,0 +1,435 @@ +% cm-super.GS: Ghostscript Fontmap file for CM-Super fonts +/SFRM0500 (sfrm0500.pfb) ; +/SFRM0600 (sfrm0600.pfb) ; +/SFRM0700 (sfrm0700.pfb) ; +/SFRM0800 (sfrm0800.pfb) ; +/SFRM0900 (sfrm0900.pfb) ; +/SFRM1000 (sfrm1000.pfb) ; +/SFRM1095 (sfrm1095.pfb) ; +/SFRM1200 (sfrm1200.pfb) ; +/SFRM1440 (sfrm1440.pfb) ; +/SFRM1728 (sfrm1728.pfb) ; +/SFRM2074 (sfrm2074.pfb) ; +/SFRM2488 (sfrm2488.pfb) ; +/SFRM2986 (sfrm2986.pfb) ; +/SFRM3583 (sfrm3583.pfb) ; +/SFSL0500 (sfsl0500.pfb) ; +/SFSL0600 (sfsl0600.pfb) ; +/SFSL0700 (sfsl0700.pfb) ; +/SFSL0800 (sfsl0800.pfb) ; +/SFSL0900 (sfsl0900.pfb) ; +/SFSL1000 (sfsl1000.pfb) ; +/SFSL1095 (sfsl1095.pfb) ; +/SFSL1200 (sfsl1200.pfb) ; +/SFSL1440 (sfsl1440.pfb) ; +/SFSL1728 (sfsl1728.pfb) ; +/SFSL2074 (sfsl2074.pfb) ; +/SFSL2488 (sfsl2488.pfb) ; +/SFSL2986 (sfsl2986.pfb) ; +/SFSL3583 (sfsl3583.pfb) ; +/SFTI0500 (sfti0500.pfb) ; +/SFTI0600 (sfti0600.pfb) ; +/SFTI0700 (sfti0700.pfb) ; +/SFTI0800 (sfti0800.pfb) ; +/SFTI0900 (sfti0900.pfb) ; +/SFTI1000 (sfti1000.pfb) ; +/SFTI1095 (sfti1095.pfb) ; +/SFTI1200 (sfti1200.pfb) ; +/SFTI1440 (sfti1440.pfb) ; +/SFTI1728 (sfti1728.pfb) ; +/SFTI2074 (sfti2074.pfb) ; +/SFTI2488 (sfti2488.pfb) ; +/SFTI2986 (sfti2986.pfb) ; +/SFTI3583 (sfti3583.pfb) ; +/SFCC0500 (sfcc0500.pfb) ; +/SFCC0600 (sfcc0600.pfb) ; +/SFCC0700 (sfcc0700.pfb) ; +/SFCC0800 (sfcc0800.pfb) ; +/SFCC0900 (sfcc0900.pfb) ; +/SFCC1000 (sfcc1000.pfb) ; +/SFCC1095 (sfcc1095.pfb) ; +/SFCC1200 (sfcc1200.pfb) ; +/SFCC1440 (sfcc1440.pfb) ; +/SFCC1728 (sfcc1728.pfb) ; +/SFCC2074 (sfcc2074.pfb) ; +/SFCC2488 (sfcc2488.pfb) ; +/SFCC2986 (sfcc2986.pfb) ; +/SFCC3583 (sfcc3583.pfb) ; +/SFUI0500 (sfui0500.pfb) ; +/SFUI0600 (sfui0600.pfb) ; +/SFUI0700 (sfui0700.pfb) ; +/SFUI0800 (sfui0800.pfb) ; +/SFUI0900 (sfui0900.pfb) ; +/SFUI1000 (sfui1000.pfb) ; +/SFUI1095 (sfui1095.pfb) ; +/SFUI1200 (sfui1200.pfb) ; +/SFUI1440 (sfui1440.pfb) ; +/SFUI1728 (sfui1728.pfb) ; +/SFUI2074 (sfui2074.pfb) ; +/SFUI2488 (sfui2488.pfb) ; +/SFUI2986 (sfui2986.pfb) ; +/SFUI3583 (sfui3583.pfb) ; +/SFSC0500 (sfsc0500.pfb) ; +/SFSC0600 (sfsc0600.pfb) ; +/SFSC0700 (sfsc0700.pfb) ; +/SFSC0800 (sfsc0800.pfb) ; +/SFSC0900 (sfsc0900.pfb) ; +/SFSC1000 (sfsc1000.pfb) ; +/SFSC1095 (sfsc1095.pfb) ; +/SFSC1200 (sfsc1200.pfb) ; +/SFSC1440 (sfsc1440.pfb) ; +/SFSC1728 (sfsc1728.pfb) ; +/SFSC2074 (sfsc2074.pfb) ; +/SFSC2488 (sfsc2488.pfb) ; +/SFSC2986 (sfsc2986.pfb) ; +/SFSC3583 (sfsc3583.pfb) ; +/SFCI0500 (sfci0500.pfb) ; +/SFCI0600 (sfci0600.pfb) ; +/SFCI0700 (sfci0700.pfb) ; +/SFCI0800 (sfci0800.pfb) ; +/SFCI0900 (sfci0900.pfb) ; +/SFCI1000 (sfci1000.pfb) ; +/SFCI1095 (sfci1095.pfb) ; +/SFCI1200 (sfci1200.pfb) ; +/SFCI1440 (sfci1440.pfb) ; +/SFCI1728 (sfci1728.pfb) ; +/SFCI2074 (sfci2074.pfb) ; +/SFCI2488 (sfci2488.pfb) ; +/SFCI2986 (sfci2986.pfb) ; +/SFCI3583 (sfci3583.pfb) ; +/SFBX0500 (sfbx0500.pfb) ; +/SFBX0600 (sfbx0600.pfb) ; +/SFBX0700 (sfbx0700.pfb) ; +/SFBX0800 (sfbx0800.pfb) ; +/SFBX0900 (sfbx0900.pfb) ; +/SFBX1000 (sfbx1000.pfb) ; +/SFBX1095 (sfbx1095.pfb) ; +/SFBX1200 (sfbx1200.pfb) ; +/SFBX1440 (sfbx1440.pfb) ; +/SFBX1728 (sfbx1728.pfb) ; +/SFBX2074 (sfbx2074.pfb) ; +/SFBX2488 (sfbx2488.pfb) ; +/SFBX2986 (sfbx2986.pfb) ; +/SFBX3583 (sfbx3583.pfb) ; +/SFBL0500 (sfbl0500.pfb) ; +/SFBL0600 (sfbl0600.pfb) ; +/SFBL0700 (sfbl0700.pfb) ; +/SFBL0800 (sfbl0800.pfb) ; +/SFBL0900 (sfbl0900.pfb) ; +/SFBL1000 (sfbl1000.pfb) ; +/SFBL1095 (sfbl1095.pfb) ; +/SFBL1200 (sfbl1200.pfb) ; +/SFBL1440 (sfbl1440.pfb) ; +/SFBL1728 (sfbl1728.pfb) ; +/SFBL2074 (sfbl2074.pfb) ; +/SFBL2488 (sfbl2488.pfb) ; +/SFBL2986 (sfbl2986.pfb) ; +/SFBL3583 (sfbl3583.pfb) ; +/SFBI0500 (sfbi0500.pfb) ; +/SFBI0600 (sfbi0600.pfb) ; +/SFBI0700 (sfbi0700.pfb) ; +/SFBI0800 (sfbi0800.pfb) ; +/SFBI0900 (sfbi0900.pfb) ; +/SFBI1000 (sfbi1000.pfb) ; +/SFBI1095 (sfbi1095.pfb) ; +/SFBI1200 (sfbi1200.pfb) ; +/SFBI1440 (sfbi1440.pfb) ; +/SFBI1728 (sfbi1728.pfb) ; +/SFBI2074 (sfbi2074.pfb) ; +/SFBI2488 (sfbi2488.pfb) ; +/SFBI2986 (sfbi2986.pfb) ; +/SFBI3583 (sfbi3583.pfb) ; +/SFXC0500 (sfxc0500.pfb) ; +/SFXC0600 (sfxc0600.pfb) ; +/SFXC0700 (sfxc0700.pfb) ; +/SFXC0800 (sfxc0800.pfb) ; +/SFXC0900 (sfxc0900.pfb) ; +/SFXC1000 (sfxc1000.pfb) ; +/SFXC1095 (sfxc1095.pfb) ; +/SFXC1200 (sfxc1200.pfb) ; +/SFXC1440 (sfxc1440.pfb) ; +/SFXC1728 (sfxc1728.pfb) ; +/SFXC2074 (sfxc2074.pfb) ; +/SFXC2488 (sfxc2488.pfb) ; +/SFXC2986 (sfxc2986.pfb) ; +/SFXC3583 (sfxc3583.pfb) ; +/SFOC0500 (sfoc0500.pfb) ; +/SFOC0600 (sfoc0600.pfb) ; +/SFOC0700 (sfoc0700.pfb) ; +/SFOC0800 (sfoc0800.pfb) ; +/SFOC0900 (sfoc0900.pfb) ; +/SFOC1000 (sfoc1000.pfb) ; +/SFOC1095 (sfoc1095.pfb) ; +/SFOC1200 (sfoc1200.pfb) ; +/SFOC1440 (sfoc1440.pfb) ; +/SFOC1728 (sfoc1728.pfb) ; +/SFOC2074 (sfoc2074.pfb) ; +/SFOC2488 (sfoc2488.pfb) ; +/SFOC2986 (sfoc2986.pfb) ; +/SFOC3583 (sfoc3583.pfb) ; +/SFRB0500 (sfrb0500.pfb) ; +/SFRB0600 (sfrb0600.pfb) ; +/SFRB0700 (sfrb0700.pfb) ; +/SFRB0800 (sfrb0800.pfb) ; +/SFRB0900 (sfrb0900.pfb) ; +/SFRB1000 (sfrb1000.pfb) ; +/SFRB1095 (sfrb1095.pfb) ; +/SFRB1200 (sfrb1200.pfb) ; +/SFRB1440 (sfrb1440.pfb) ; +/SFRB1728 (sfrb1728.pfb) ; +/SFRB2074 (sfrb2074.pfb) ; +/SFRB2488 (sfrb2488.pfb) ; +/SFRB2986 (sfrb2986.pfb) ; +/SFRB3583 (sfrb3583.pfb) ; +/SFBM0500 (sfbm0500.pfb) ; +/SFBM0600 (sfbm0600.pfb) ; +/SFBM0700 (sfbm0700.pfb) ; +/SFBM0800 (sfbm0800.pfb) ; +/SFBM0900 (sfbm0900.pfb) ; +/SFBM1000 (sfbm1000.pfb) ; +/SFBM1095 (sfbm1095.pfb) ; +/SFBM1200 (sfbm1200.pfb) ; +/SFBM1440 (sfbm1440.pfb) ; +/SFBM1728 (sfbm1728.pfb) ; +/SFBM2074 (sfbm2074.pfb) ; +/SFBM2488 (sfbm2488.pfb) ; +/SFBM2986 (sfbm2986.pfb) ; +/SFBM3583 (sfbm3583.pfb) ; +/SFSS0500 (sfss0500.pfb) ; +/SFSS0600 (sfss0600.pfb) ; +/SFSS0700 (sfss0700.pfb) ; +/SFSS0800 (sfss0800.pfb) ; +/SFSS0900 (sfss0900.pfb) ; +/SFSS1000 (sfss1000.pfb) ; +/SFSS1095 (sfss1095.pfb) ; +/SFSS1200 (sfss1200.pfb) ; +/SFSS1440 (sfss1440.pfb) ; +/SFSS1728 (sfss1728.pfb) ; +/SFSS2074 (sfss2074.pfb) ; +/SFSS2488 (sfss2488.pfb) ; +/SFSS2986 (sfss2986.pfb) ; +/SFSS3583 (sfss3583.pfb) ; +/SFSI0500 (sfsi0500.pfb) ; +/SFSI0600 (sfsi0600.pfb) ; +/SFSI0700 (sfsi0700.pfb) ; +/SFSI0800 (sfsi0800.pfb) ; +/SFSI0900 (sfsi0900.pfb) ; +/SFSI1000 (sfsi1000.pfb) ; +/SFSI1095 (sfsi1095.pfb) ; +/SFSI1200 (sfsi1200.pfb) ; +/SFSI1440 (sfsi1440.pfb) ; +/SFSI1728 (sfsi1728.pfb) ; +/SFSI2074 (sfsi2074.pfb) ; +/SFSI2488 (sfsi2488.pfb) ; +/SFSI2986 (sfsi2986.pfb) ; +/SFSI3583 (sfsi3583.pfb) ; +/SFSX0500 (sfsx0500.pfb) ; +/SFSX0600 (sfsx0600.pfb) ; +/SFSX0700 (sfsx0700.pfb) ; +/SFSX0800 (sfsx0800.pfb) ; +/SFSX0900 (sfsx0900.pfb) ; +/SFSX1000 (sfsx1000.pfb) ; +/SFSX1095 (sfsx1095.pfb) ; +/SFSX1200 (sfsx1200.pfb) ; +/SFSX1440 (sfsx1440.pfb) ; +/SFSX1728 (sfsx1728.pfb) ; +/SFSX2074 (sfsx2074.pfb) ; +/SFSX2488 (sfsx2488.pfb) ; +/SFSX2986 (sfsx2986.pfb) ; +/SFSX3583 (sfsx3583.pfb) ; +/SFSO0500 (sfso0500.pfb) ; +/SFSO0600 (sfso0600.pfb) ; +/SFSO0700 (sfso0700.pfb) ; +/SFSO0800 (sfso0800.pfb) ; +/SFSO0900 (sfso0900.pfb) ; +/SFSO1000 (sfso1000.pfb) ; +/SFSO1095 (sfso1095.pfb) ; +/SFSO1200 (sfso1200.pfb) ; +/SFSO1440 (sfso1440.pfb) ; +/SFSO1728 (sfso1728.pfb) ; +/SFSO2074 (sfso2074.pfb) ; +/SFSO2488 (sfso2488.pfb) ; +/SFSO2986 (sfso2986.pfb) ; +/SFSO3583 (sfso3583.pfb) ; +/SFTT0800 (sftt0800.pfb) ; +/SFTT0900 (sftt0900.pfb) ; +/SFTT1000 (sftt1000.pfb) ; +/SFTT1095 (sftt1095.pfb) ; +/SFTT1200 (sftt1200.pfb) ; +/SFTT1440 (sftt1440.pfb) ; +/SFTT1728 (sftt1728.pfb) ; +/SFTT2074 (sftt2074.pfb) ; +/SFTT2488 (sftt2488.pfb) ; +/SFTT2986 (sftt2986.pfb) ; +/SFTT3583 (sftt3583.pfb) ; +/SFST0800 (sfst0800.pfb) ; +/SFST0900 (sfst0900.pfb) ; +/SFST1000 (sfst1000.pfb) ; +/SFST1095 (sfst1095.pfb) ; +/SFST1200 (sfst1200.pfb) ; +/SFST1440 (sfst1440.pfb) ; +/SFST1728 (sfst1728.pfb) ; +/SFST2074 (sfst2074.pfb) ; +/SFST2488 (sfst2488.pfb) ; +/SFST2986 (sfst2986.pfb) ; +/SFST3583 (sfst3583.pfb) ; +/SFIT0800 (sfit0800.pfb) ; +/SFIT0900 (sfit0900.pfb) ; +/SFIT1000 (sfit1000.pfb) ; +/SFIT1095 (sfit1095.pfb) ; +/SFIT1200 (sfit1200.pfb) ; +/SFIT1440 (sfit1440.pfb) ; +/SFIT1728 (sfit1728.pfb) ; +/SFIT2074 (sfit2074.pfb) ; +/SFIT2488 (sfit2488.pfb) ; +/SFIT2986 (sfit2986.pfb) ; +/SFIT3583 (sfit3583.pfb) ; +/SFTC0800 (sftc0800.pfb) ; +/SFTC0900 (sftc0900.pfb) ; +/SFTC1000 (sftc1000.pfb) ; +/SFTC1095 (sftc1095.pfb) ; +/SFTC1200 (sftc1200.pfb) ; +/SFTC1440 (sftc1440.pfb) ; +/SFTC1728 (sftc1728.pfb) ; +/SFTC2074 (sftc2074.pfb) ; +/SFTC2488 (sftc2488.pfb) ; +/SFTC2986 (sftc2986.pfb) ; +/SFTC3583 (sftc3583.pfb) ; +/SFVT0800 (sfvt0800.pfb) ; +/SFVT0900 (sfvt0900.pfb) ; +/SFVT1000 (sfvt1000.pfb) ; +/SFVT1095 (sfvt1095.pfb) ; +/SFVT1200 (sfvt1200.pfb) ; +/SFVT1440 (sfvt1440.pfb) ; +/SFVT1728 (sfvt1728.pfb) ; +/SFVT2074 (sfvt2074.pfb) ; +/SFVT2488 (sfvt2488.pfb) ; +/SFVT2986 (sfvt2986.pfb) ; +/SFVT3583 (sfvt3583.pfb) ; +/SFVI0800 (sfvi0800.pfb) ; +/SFVI0900 (sfvi0900.pfb) ; +/SFVI1000 (sfvi1000.pfb) ; +/SFVI1095 (sfvi1095.pfb) ; +/SFVI1200 (sfvi1200.pfb) ; +/SFVI1440 (sfvi1440.pfb) ; +/SFVI1728 (sfvi1728.pfb) ; +/SFVI2074 (sfvi2074.pfb) ; +/SFVI2488 (sfvi2488.pfb) ; +/SFVI2986 (sfvi2986.pfb) ; +/SFVI3583 (sfvi3583.pfb) ; +/SFDH0500 (sfdh0500.pfb) ; +/SFDH0600 (sfdh0600.pfb) ; +/SFDH0700 (sfdh0700.pfb) ; +/SFDH0800 (sfdh0800.pfb) ; +/SFDH0900 (sfdh0900.pfb) ; +/SFDH1000 (sfdh1000.pfb) ; +/SFDH1095 (sfdh1095.pfb) ; +/SFDH1200 (sfdh1200.pfb) ; +/SFDH1440 (sfdh1440.pfb) ; +/SFDH1728 (sfdh1728.pfb) ; +/SFDH2074 (sfdh2074.pfb) ; +/SFDH2488 (sfdh2488.pfb) ; +/SFDH2986 (sfdh2986.pfb) ; +/SFDH3583 (sfdh3583.pfb) ; +/SFFB0500 (sffb0500.pfb) ; +/SFFB0600 (sffb0600.pfb) ; +/SFFB0700 (sffb0700.pfb) ; +/SFFB0800 (sffb0800.pfb) ; +/SFFB0900 (sffb0900.pfb) ; +/SFFB1000 (sffb1000.pfb) ; +/SFFB1095 (sffb1095.pfb) ; +/SFFB1200 (sffb1200.pfb) ; +/SFFB1440 (sffb1440.pfb) ; +/SFFB1728 (sffb1728.pfb) ; +/SFFB2074 (sffb2074.pfb) ; +/SFFB2488 (sffb2488.pfb) ; +/SFFB2986 (sffb2986.pfb) ; +/SFFB3583 (sffb3583.pfb) ; +/SFFS0500 (sffs0500.pfb) ; +/SFFS0600 (sffs0600.pfb) ; +/SFFS0700 (sffs0700.pfb) ; +/SFFS0800 (sffs0800.pfb) ; +/SFFS0900 (sffs0900.pfb) ; +/SFFS1000 (sffs1000.pfb) ; +/SFFS1095 (sffs1095.pfb) ; +/SFFS1200 (sffs1200.pfb) ; +/SFFS1440 (sffs1440.pfb) ; +/SFFS1728 (sffs1728.pfb) ; +/SFFS2074 (sffs2074.pfb) ; +/SFFS2488 (sffs2488.pfb) ; +/SFFS2986 (sffs2986.pfb) ; +/SFFS3583 (sffs3583.pfb) ; +/SFFF0500 (sfff0500.pfb) ; +/SFFF0600 (sfff0600.pfb) ; +/SFFF0700 (sfff0700.pfb) ; +/SFFF0800 (sfff0800.pfb) ; +/SFFF0900 (sfff0900.pfb) ; +/SFFF1000 (sfff1000.pfb) ; +/SFFF1095 (sfff1095.pfb) ; +/SFFF1200 (sfff1200.pfb) ; +/SFFF1440 (sfff1440.pfb) ; +/SFFF1728 (sfff1728.pfb) ; +/SFFF2074 (sfff2074.pfb) ; +/SFFF2488 (sfff2488.pfb) ; +/SFFF2986 (sfff2986.pfb) ; +/SFFF3583 (sfff3583.pfb) ; +/SFFI0500 (sffi0500.pfb) ; +/SFFI0600 (sffi0600.pfb) ; +/SFFI0700 (sffi0700.pfb) ; +/SFFI0800 (sffi0800.pfb) ; +/SFFI0900 (sffi0900.pfb) ; +/SFFI1000 (sffi1000.pfb) ; +/SFFI1095 (sffi1095.pfb) ; +/SFFI1200 (sffi1200.pfb) ; +/SFFI1440 (sffi1440.pfb) ; +/SFFI1728 (sffi1728.pfb) ; +/SFFI2074 (sffi2074.pfb) ; +/SFFI2488 (sffi2488.pfb) ; +/SFFI2986 (sffi2986.pfb) ; +/SFFI3583 (sffi3583.pfb) ; +/SFLQ8 (sflq8.pfb) ; +/SFLI8 (sfli8.pfb) ; +/SFLB8 (sflb8.pfb) ; +/SFLO8 (sflo8.pfb) ; +/SFLTT8 (sfltt8.pfb) ; +/ISFLQ8 (isflq8.pfb) ; +/ISFLI8 (isfli8.pfb) ; +/ISFLB8 (isflb8.pfb) ; +/ISFLO8 (isflo8.pfb) ; +/ISFLTT8 (isfltt8.pfb) ; +/SFSQ8 (sfsq8.pfb) ; +/SFQI8 (sfqi8.pfb) ; +/SFSSDC10 (sfssdc10.pfb) ; +/SFORM5 (sform5.pfb) ; +/SFORM6 (sform6.pfb) ; +/SFORM7 (sform7.pfb) ; +/SFORM8 (sform8.pfb) ; +/SFORM9 (sform9.pfb) ; +/SFORM10 (sform10.pfb) ; +/SFOSL5 (sfosl5.pfb) ; +/SFOSL6 (sfosl6.pfb) ; +/SFOSL7 (sfosl7.pfb) ; +/SFOSL8 (sfosl8.pfb) ; +/SFOSL9 (sfosl9.pfb) ; +/SFOSL10 (sfosl10.pfb) ; +/SFOTI10 (sfoti10.pfb) ; +/SFOCC10 (sfocc10.pfb) ; +/SFBMR8 (sfbmr8.pfb) ; +/SFBMR9 (sfbmr9.pfb) ; +/SFBMR10 (sfbmr10.pfb) ; +/SFBMR17 (sfbmr17.pfb) ; +/SFBMO8 (sfbmo8.pfb) ; +/SFBMO9 (sfbmo9.pfb) ; +/SFBMO10 (sfbmo10.pfb) ; +/SFBMO17 (sfbmo17.pfb) ; +/SFBSR8 (sfbsr8.pfb) ; +/SFBSR9 (sfbsr9.pfb) ; +/SFBSR10 (sfbsr10.pfb) ; +/SFBSR17 (sfbsr17.pfb) ; +/SFBSO8 (sfbso8.pfb) ; +/SFBSO9 (sfbso9.pfb) ; +/SFBSO10 (sfbso10.pfb) ; +/SFBSO17 (sfbso17.pfb) ; +/SFBBX10 (sfbbx10.pfb) ; +/SFBTL10 (sfbtl10.pfb) ; +/SFBTO10 (sfbto10.pfb) ; diff --git a/Master/texmf-dist/dvips/cm-super/config.cm-super b/Master/texmf-dist/dvips/cm-super/config.cm-super new file mode 100644 index 00000000000..a85608db142 --- /dev/null +++ b/Master/texmf-dist/dvips/cm-super/config.cm-super @@ -0,0 +1,6 @@ +p +cm-super-t1.map +p +cm-super-ts1.map +p +cm-super-t2a.map +p +cm-super-t2b.map +p +cm-super-t2c.map +p +cm-super-x2.map diff --git a/Master/texmf-dist/dvips/cm/config.cm b/Master/texmf-dist/dvips/cm/config.cm new file mode 100644 index 00000000000..acf60f825e8 --- /dev/null +++ b/Master/texmf-dist/dvips/cm/config.cm @@ -0,0 +1,7 @@ +% Thomas Esser, 1998, public domain. + +% Usage: dvips -Pcm +% Purpose: instruct dvips to consider the cm fonts to be build in to +% your ps interpreter or printer. + +p +psfonts.cm diff --git a/Master/texmf-dist/dvips/cm/config.cmz b/Master/texmf-dist/dvips/cm/config.cmz new file mode 100644 index 00000000000..4e7cee30a03 --- /dev/null +++ b/Master/texmf-dist/dvips/cm/config.cmz @@ -0,0 +1,10 @@ +% Thomas Esser, 1998, public domain. + +% Usage: dvips -Pcmz ... +% Purpose: set up dvips to download the cm fonts as type 1 with your +% document. +% Note: this is superceeded by psfonts_t1.map resp. config.outline +% resp. -Poutline. + + +p +psfonts.cmz diff --git a/Master/texmf-dist/dvips/colorsep/colorsep.pro b/Master/texmf-dist/dvips/colorsep/colorsep.pro new file mode 100644 index 00000000000..d86b7110d74 --- /dev/null +++ b/Master/texmf-dist/dvips/colorsep/colorsep.pro @@ -0,0 +1,185 @@ +%! +% Colour separation. +% Ask dvips to do 4 pages. In bop-hook, cycle +% round CMYK color spaces. +% +% Sebastian Rahtz 30.9.93 +% checked 7.1.94 +% from Green Book, and Kunkel Graphic Design with PostScript +% (Green Book Listing 9-5, on page 153.) +% +% This work is placed in the public domain +/seppages 0 def +userdict begin +/Min {% 3 items on stack +2 copy lt { pop }{ exch pop } ifelse +2 copy lt { pop }{ exch pop } ifelse +} def +/SetGray { + 1 exch sub systemdict begin adjustdot setgray end +} def +/sethsbcolor {systemdict begin + sethsbcolor currentrgbcolor end + userdict begin setrgbcolor end}def + +/ToCMYK +% Red book p 305 + { +% subtract each colour from 1 + 3 { 1 exch sub 3 1 roll } repeat +% define percent of black undercolor +% find minimum (k) + 3 copy Min +% remove undercolor + blackUCR sub + dup 0 lt {pop 0} if + /percent_UCR exch def +% +% subtract that from each colour +% + 3 { percent_UCR sub 3 1 roll } repeat +% work out black itself + percent_UCR 1.25 mul % 1 exch sub +% stack should now have C M Y K +} def +% +% crop marks +% +/cX 18 def +/CM{gsave TR 0 cX neg moveto 0 cX lineto stroke +cX neg 0 moveto cX 0 lineto stroke grestore}def +% +/bop-hook{cX dup TR +% +% which page are we producing +% + seppages 1 add + /seppages exch def + seppages 5 eq { /seppages 1 def } if + seppages 1 eq { + /ColourName (CYAN) def + CYAN setupcolor + /WhichColour 3 def } if + seppages 2 eq { + /ColourName (MAGENTA) def + MAGENTA setupcolor + /WhichColour 2 def } if + seppages 3 eq { + /ColourName (YELLOW) def + YELLOW setupcolor + /WhichColour 1 def } if + seppages 4 eq { + /ColourName (BLACK) def + BLACK setupcolor + /WhichColour 0 def } if +% +% crop marks +% +gsave .3 setlinewidth +3 -7 moveto +/Helvetica findfont 6 scalefont setfont +ColourName show +0 0 CM +vsize cX 2 mul sub dup hsize cX 2 mul sub dup isls{4 2 roll}if 0 CM +exch CM 0 +exch CM +grestore 0 cX -2 mul TR isls +{cX -2 mul 0 TR}if + } def end +% +/separations 48 dict def +separations begin + /cmykprocs [ %def + % cyan + { pop pop pop SetGray } + % magenta + { pop pop exch pop SetGray } + % yellow + { pop 3 1 roll pop pop SetGray } + % black + { 4 1 roll pop pop pop SetGray } + ] def + /rgbprocs [ %def + % cyan + { ToCMYK pop pop pop SetGray } + % magenta + { ToCMYK pop pop exch pop SetGray } + % yellow + { ToCMYK pop 3 1 roll pop pop SetGray } + % black + { ToCMYK 4 1 roll pop pop pop SetGray } + ] def + /testprocs [ %def + % cyan + { ToCMYK pop pop pop } + % magenta + { ToCMYK pop pop exch pop } + % yellow + { ToCMYK pop 3 1 roll pop pop } + % black + { ToCMYK 4 1 roll pop pop pop } + ] def + /screenangles [ %def + 105 % cyan + 75 % magenta + 0 % yellow + 45 % black + ] def +end % separations + +% setupcolortakes 0, 1, 2, or 3 as its argument, +% for cyan, magenta, yellow, and black. +/CYAN 0 def /MAGENTA 1 def +/YELLOW 2 def /BLACK 3 def +/setupcolor{ %def + userdict begin + dup separations /cmykprocs get exch get + /setcmykcolor exch def + dup separations /rgbprocs get exch get + /setrgbcolor exch def + dup separations /testprocs get exch get + /testrgbcolor exch def + separations /screenangles get exch get + currentscreen + exch pop 3 -1 roll exch + setscreen + /setscreen { pop pop pop } def +% +% redefine setgray so that it only shows on the black separation +% + /setgray { + WhichColour 0 eq + {systemdict begin adjustdot setgray end} + {pop systemdict begin 1 setgray end} + ifelse}def + end +} bind def + +% +% from Kunkel +% +/adjustdot { dup 0 eq { } { dup 1 exch sub .1 mul add} ifelse } def +% +% redefine existing operators +% +% Percent of undercolor removal +/magentaUCR .3 def +/yellowUCR .07 def +/blackUCR .4 def +% +% Correct yellow and magenta +/correctMY {rgb2cym + 1 index yellowUCR mul sub 3 1 roll + 1 index magentaUCR mul sub 3 1 roll + 3 1 roll rgb2cym}def +% +%(bluely green ) = +%CYAN setupcolor +%.1 .4 .5 testrgbcolor = +%MAGENTA setupcolor +%.1 .4 .5 testrgbcolor = +%YELLOW setupcolor +%.1 .4 .5 testrgbcolor = +%BLACK setupcolor +%.1 .4 .5 testrgbcolor = +%quit diff --git a/Master/texmf-dist/dvips/courier/config.ucr b/Master/texmf-dist/dvips/courier/config.ucr new file mode 100644 index 00000000000..00aeb2205ee --- /dev/null +++ b/Master/texmf-dist/dvips/courier/config.ucr @@ -0,0 +1 @@ +p +ucr.map diff --git a/Master/texmf-dist/dvips/cs/config.cs b/Master/texmf-dist/dvips/cs/config.cs new file mode 100644 index 00000000000..c59c9f40044 --- /dev/null +++ b/Master/texmf-dist/dvips/cs/config.cs @@ -0,0 +1,2 @@ +p +csother.map +p +cstext.map diff --git a/Master/texmf-dist/dvips/esint-type1/config.esint b/Master/texmf-dist/dvips/esint-type1/config.esint new file mode 100644 index 00000000000..29cc7a9ed8f --- /dev/null +++ b/Master/texmf-dist/dvips/esint-type1/config.esint @@ -0,0 +1,2 @@ + +p +esint.map diff --git a/Master/texmf-dist/dvips/euclide/pst-eucl.pro b/Master/texmf-dist/dvips/euclide/pst-eucl.pro new file mode 100644 index 00000000000..f453f20437c --- /dev/null +++ b/Master/texmf-dist/dvips/euclide/pst-eucl.pro @@ -0,0 +1,112 @@ +%! +% PostScript prologue for pst-eucl.tex. +% Version 2001, 2001/12/09 +% For distribution, see pstricks.tex. +% +/tx@EcldDict 400 dict def tx@EcldDict begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Pi +/Pi 3.14159265359 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% e +/E 2.718281828459045 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> true (if |x| < 1E-10) +/ZeroEq { abs 1E-10 lt } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 -> a b c (ax+by+c=0) +/EqDr { + 4 copy 3 -1 roll sub 7 1 roll exch sub 5 1 roll 4 -1 roll + mul 3 1 roll mul exch sub } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% orthogonal projection of M1 onto (OM2) +%% x1 y1 x2 y2 -> x3 y3 +/Project { + 2 copy dup mul exch dup mul add 5 1 roll 2 copy 5 -1 roll mul exch + 5 -1 roll mul add 4 -1 roll div dup 4 -1 roll mul exch 3 -1 roll mul +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a b c (ax2+bx+c=0) -> x1 y1 +/SolvTrin { + /c exch def /b exch def /a exch def + b dup mul a c mul 4 mul sub dup 0 lt + { pop 0 0 } %% no solutions + {sqrt dup b neg add a 2 mul div exch b add neg 2 a mul div } + ifelse } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 -> Dist +/ABDist { 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 -> x1-x2 y1-y2 +/ABVect { 3 -1 roll exch sub 3 1 roll sub exch } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 x3 y3 x4 y4 -> x y +/InterLines { + EqDr /D1c exch def /D1b exch def /D1a exch def + EqDr /D2c exch def /D2b exch def /D2a exch def + D1a D2b mul D1b D2a mul sub dup ZeroEq + { pop pop pop 0 0 } + { + /Det exch def + D1b D2c mul D1c D2b mul sub Det div + D1a D2c mul D2a D1c mul sub Det div + } + ifelse } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a b c R -> x1 y1 x2 y2 +/InterLineCircle { + /CR exch def /Dc exch def /Db exch def /Da exch def + Db Da dup ZeroEq { pop Dc dup ZeroEq { pop 1 } if } if div abs + 0.0005 lt { InterLineCirclebnull } { InterLineCircleGal } + ifelse + %%dup 3 index lt { 4 2 roll } if + } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% case where the line is parallel to (oy) +/InterLineCirclebnull { + Dc Da div neg dup dup mul CR dup mul exch sub dup + 0 lt + { pop pop 0 0 0 0 } { sqrt dup 3 1 roll exch dup 4 1 roll exch neg } + ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% general case +/InterLineCircleGal { + Da dup mul Db dup mul add -2 Dc mul Da mul Dc dup mul CR dup mul Db dup + mul mul sub SolvTrin dup neg exch Da Db div mul Dc Db + div exch sub 3 -1 roll + dup neg exch Da Db div mul Dc Db div exch sub +} bind def +/Glbx 0 def /Glby 0 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% R R' OO' -> x1 y1 x2 y2 +/InterCircles { + /OOP exch def /CRP exch def /CR exch def + OOP dup mul CRP dup mul sub CR dup mul add OOP div 2 div + dup dup mul CR dup mul exch sub dup + 0 lt { pop pop 0 0 0 0 } { sqrt 2 copy neg } ifelse +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x y theta -> x' y' (rotation of theta) +/Rotate { + dup sin /sintheta exch def cos /costheta exch def /y exch def /x exch def + x costheta mul y sintheta mul sub + y costheta mul x sintheta mul add +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% N -> x y +/GetNode { + tx@NodeDict begin + tx@NodeDict 1 index known { load GetCenter } { pop 0 0 } ifelse + end +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> ch(x) +/ch { dup Ex exch neg Ex add 2 div } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> sh(x) +/sh { dup Ex exch neg Ex sub 2 div } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> e^(x) +/Ex { E exch exp } bind def +end +% END ps-euclide.pro diff --git a/Master/texmf-dist/dvips/garuda/config.garuda b/Master/texmf-dist/dvips/garuda/config.garuda new file mode 100644 index 00000000000..46dc65fc970 --- /dev/null +++ b/Master/texmf-dist/dvips/garuda/config.garuda @@ -0,0 +1 @@ +p +garuda.map diff --git a/Master/texmf-dist/dvips/geomsty/illustrator.pro b/Master/texmf-dist/dvips/geomsty/illustrator.pro new file mode 100644 index 00000000000..59fd05cfd75 --- /dev/null +++ b/Master/texmf-dist/dvips/geomsty/illustrator.pro @@ -0,0 +1,872 @@ +%%BeginResource: procset Adobe_packedarray 2.0 0 +%%Title: (Packed Array Operators) +%%Version: 2.0 +%%CreationDate: (8/2/90) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) + +userdict /Adobe_packedarray 5 dict dup begin put +/initialize % - initialize - +{ +/packedarray where + { + pop + } + { + Adobe_packedarray begin + Adobe_packedarray + { + dup xcheck + { + bind + } if + userdict 3 1 roll put + } forall + end + } ifelse +} def +/terminate % - terminate - +{ +} def +/packedarray % arguments count packedarray array +{ +array astore readonly +} def +/setpacking % boolean setpacking - +{ +pop +} def +/currentpacking % - setpacking boolean +{ +false +} def +currentdict readonly pop end +%%EndResource +%%BeginResource: procset Adobe_cmykcolor 1.1 0 +%%Title: (CMYK Color Operators) +%%Version: 1.1 +%%CreationDate: (1/23/89) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) + +currentpacking true setpacking +userdict /Adobe_cmykcolor 4 dict dup begin put +/initialize % - initialize - +{ +/setcmykcolor where + { + pop + } + { + userdict /Adobe_cmykcolor_vars 2 dict dup begin put + /_setrgbcolor + /setrgbcolor load def + /_currentrgbcolor + /currentrgbcolor load def + Adobe_cmykcolor begin + Adobe_cmykcolor + { + dup xcheck + { + bind + } if + pop pop + } forall + end + end + Adobe_cmykcolor begin + } ifelse +} def +/terminate % - terminate - +{ +currentdict Adobe_cmykcolor eq + { + end + } if +} def +/setcmykcolor % cyan magenta yellow black setcmykcolor - +{ +1 sub 4 1 roll +3 + { + 3 index add neg dup 0 lt + { + pop 0 + } if + 3 1 roll + } repeat +Adobe_cmykcolor_vars /_setrgbcolor get exec +pop +} def +/currentcmykcolor % - currentcmykcolor cyan magenta yellow black +{ +Adobe_cmykcolor_vars /_currentrgbcolor get exec +3 + { + 1 sub neg 3 1 roll + } repeat +0 +} def +currentdict readonly pop end +setpacking + +%%EndResource +%%BeginResource: procset Adobe_cshow 1.1 0 +%%Title: (cshow Operator) +%%Version: 1.1 +%%CreationDate: (1/23/89) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) + +currentpacking true setpacking +userdict /Adobe_cshow 3 dict dup begin put +/initialize % - initialize - +{ +/cshow where + { + pop + } + { + userdict /Adobe_cshow_vars 1 dict dup begin put + /_cshow % - _cshow proc + {} def + Adobe_cshow begin + Adobe_cshow + { + dup xcheck + { + bind + } if + userdict 3 1 roll put + } forall + end + end + } ifelse +} def +/terminate % - terminate - +{ +} def +/cshow % proc string cshow - +{ +exch +Adobe_cshow_vars + exch /_cshow + exch put + { + 0 0 Adobe_cshow_vars /_cshow get exec + } forall +} def +currentdict readonly pop end +setpacking + +%%EndResource +%%BeginResource: procset Adobe_customcolor 1.0 0 +%%Title: (Custom Color Operators) +%%Version: 1.0 +%%CreationDate: (5/9/88) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) + +currentpacking true setpacking +userdict /Adobe_customcolor 5 dict dup begin put +/initialize % - initialize - +{ +/setcustomcolor where + { + pop + } + { + Adobe_customcolor begin + Adobe_customcolor + { + dup xcheck + { + bind + } if + pop pop + } forall + end + Adobe_customcolor begin + } ifelse +} def +/terminate % - terminate - +{ +currentdict Adobe_customcolor eq + { + end + } if +} def +/findcmykcustomcolor % cyan magenta yellow black name findcmykcustomcolor object +{ +5 packedarray +} def +/setcustomcolor % object tint setcustomcolor - +{ +exch +aload pop pop +4 + { + 4 index mul 4 1 roll + } repeat +5 -1 roll pop +setcmykcolor +} def +/setoverprint % boolean setoverprint - +{ +pop +} def +currentdict readonly pop end +setpacking + +%%EndResource +%%BeginResource: procset Adobe_IllustratorA_AI3 1.0 1 +%%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog) +%%Version: 1.0 +%%CreationDate: (7/22/89) () +%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved) + +currentpacking true setpacking +userdict /Adobe_IllustratorA_AI3 61 dict dup begin put +% initialization +/initialize % - initialize - +{ +% 47 vars, but leave slack of 10 entries for custom Postscript fragments +userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put + +% paint operands +/_lp /none def +/_pf {} def +/_ps {} def +/_psf {} def +/_pss {} def +/_pjsf {} def +/_pjss {} def +/_pola 0 def +/_doClip 0 def + +% paint operators +/cf currentflat def % - cf flatness + +% typography operands +/_tm matrix def +/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def +/_renderEnd [null null null null /i1 /i1 /i1 /i1] def +/_render -1 def +/_rise 0 def +/_ax 0 def % x character spacing (_ax, _ay, _cx, _cy follows awidthshow naming convention) +/_ay 0 def % y character spacing +/_cx 0 def % x word spacing +/_cy 0 def % y word spacing +/_leading [0 0] def +/_ctm matrix def +/_mtx matrix def +/_sp 16#020 def +/_hyphen (-) def +/_fScl 0 def +/_cnt 0 def +/_hs 1 def +/_nativeEncoding 0 def +/_useNativeEncoding 0 def +/_tempEncode 0 def +/_pntr 0 def +/_tDict 2 dict def + +% typography operators +/Tx {} def +/Tj {} def + +% compound path operators +/CRender {} def + +% printing +/_AI3_savepage {} def + +% color operands +/_gf null def +/_cf 4 array def +/_if null def +/_of false def +/_fc {} def +/_gs null def +/_cs 4 array def +/_is null def +/_os false def +/_sc {} def +/_i null def +Adobe_IllustratorA_AI3 begin +Adobe_IllustratorA_AI3 + { + dup xcheck + { + bind + } if + pop pop + } forall +end +end +Adobe_IllustratorA_AI3 begin +Adobe_IllustratorA_AI3_vars begin +newpath +} def +/terminate % - terminate - +{ +end +end +} def +% definition operators +/_ % - _ null +null def +/ddef % key value ddef - +{ +Adobe_IllustratorA_AI3_vars 3 1 roll put +} def +/xput % key value literal xput - +{ +dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if +load begin def end +} def +/npop % integer npop - +{ + { + pop + } repeat +} def +% marking operators +/sw % ax ay string sw x y +{ +dup length exch stringwidth +exch 5 -1 roll 3 index 1 sub mul add +4 1 roll 3 1 roll 1 sub mul add +} def +/swj % cx cy fillchar ax ay string swj x y +{ +dup 4 1 roll +dup length exch stringwidth +exch 5 -1 roll 3 index 1 sub mul add +4 1 roll 3 1 roll 1 sub mul add +6 2 roll /_cnt 0 ddef +{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop +exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop +} def +/ss % ax ay string matrix ss - +{ +4 1 roll + { % matrix ax ay char 0 0 {proc} - + 2 npop + (0) exch 2 copy 0 exch put pop + gsave + false charpath currentpoint + 4 index setmatrix + stroke + grestore + moveto + 2 copy rmoveto + } exch cshow +3 npop +} def +/jss % cx cy fillchar ax ay string matrix jss - +{ +4 1 roll + { % cx cy fillchar matrix ax ay char 0 0 {proc} - + 2 npop + (0) exch 2 copy 0 exch put + gsave + _sp eq + { + exch 6 index 6 index 6 index 5 -1 roll widthshow + currentpoint + } + { + false charpath currentpoint + 4 index setmatrix stroke + }ifelse + grestore + moveto + 2 copy rmoveto + } exch cshow +6 npop +} def + +% path operators +/sp % ax ay string sp - +{ + { + 2 npop (0) exch + 2 copy 0 exch put pop + false charpath + 2 copy rmoveto + } exch cshow +2 npop +} def +/jsp % cx cy fillchar ax ay string jsp - +{ + { % cx cy fillchar ax ay char 0 0 {proc} - + 2 npop + (0) exch 2 copy 0 exch put + _sp eq + { + exch 5 index 5 index 5 index 5 -1 roll widthshow + } + { + false charpath + }ifelse + 2 copy rmoveto + } exch cshow +5 npop +} def + +% path construction operators +/pl % x y pl x y +{ +transform +0.25 sub round 0.25 add exch +0.25 sub round 0.25 add exch +itransform +} def +/setstrokeadjust where + { + pop true setstrokeadjust + /c % x1 y1 x2 y2 x3 y3 c - + { + curveto + } def + /C + /c load def + /v % x2 y2 x3 y3 v - + { + currentpoint 6 2 roll curveto + } def + /V + /v load def + /y % x1 y1 x2 y2 y - + { + 2 copy curveto + } def + /Y + /y load def + /l % x y l - + { + lineto + } def + /L + /l load def + /m % x y m - + { + moveto + } def + } + {%else + /c + { + pl curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll pl curveto + } def + /V + /v load def + /y + { + pl 2 copy curveto + } def + /Y + /y load def + /l + { + pl lineto + } def + /L + /l load def + /m + { + pl moveto + } def + }ifelse + +% graphic state operators +/d % array phase d - +{ +setdash +} def +/cf {} def % - cf flatness +/i % flatness i - +{ +dup 0 eq + { + pop cf + } if +setflat +} def +/j % linejoin j - +{ +setlinejoin +} def +/J % linecap J - +{ +setlinecap +} def +/M % miterlimit M - +{ +setmiterlimit +} def +/w % linewidth w - +{ +setlinewidth +} def + +% path painting operators +/H % - H - +{} def +/h % - h - +{ +closepath +} def +/N % - N - +{ +_pola 0 eq + { + _doClip 1 eq {clip /_doClip 0 ddef} if + newpath + } + { + /CRender {N} ddef + }ifelse +} def +/n % - n - +{N} def +/F % - F - +{ +_pola 0 eq + { + _doClip 1 eq + { + gsave _pf grestore clip newpath /_lp /none ddef _fc + /_doClip 0 ddef + } + { + _pf + }ifelse + } + { + /CRender {F} ddef + }ifelse +} def +/f % - f - +{ +closepath +F +} def +/S % - S - +{ +_pola 0 eq + { + _doClip 1 eq + { + gsave _ps grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + _ps + }ifelse + } + { + /CRender {S} ddef + }ifelse +} def +/s % - s - +{ +closepath +S +} def +/B % - B - +{ +_pola 0 eq + { + _doClip 1 eq % F clears _doClip + gsave F grestore + { + gsave S grestore clip newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + S + }ifelse + } + { + /CRender {B} ddef + }ifelse +} def +/b % - b - +{ +closepath +B +} def +/W % - W - +{ +/_doClip 1 ddef +} def +/* % - [string] * - +{ +count 0 ne + { + dup type (stringtype) eq {pop} if + } if +_pola 0 eq {newpath} if +} def + +% group operators +/u % - u - +{} def +/U % - U - +{} def +/q % - q - +{ +_pola 0 eq {gsave} if +} def +/Q % - Q - +{ +_pola 0 eq {grestore} if +} def +/*u % - *u - +{ +_pola 1 add /_pola exch ddef +} def +/*U % - *U - +{ +_pola 1 sub /_pola exch ddef +_pola 0 eq {CRender} if +} def +/D % polarized D - +{pop} def +/*w % - *w - +{} def +/*W % - *W - +{} def + +% place operators +/` % matrix llx lly urx ury string ` - +{ +/_i save ddef +6 1 roll 4 npop +concat +userdict begin +/showpage {} def +false setoverprint +pop +} def +/~ % - ~ - +{ +end +_i restore +} def + +% color operators +/O % flag O - +{ +0 ne +/_of exch ddef +/_lp /none ddef +} def +/R % flag R - +{ +0 ne +/_os exch ddef +/_lp /none ddef +} def +/g % gray g - +{ +/_gf exch ddef +/_fc +{ +_lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +ashow +} ddef +/_pjsf +{ +_fc +awidthshow +} ddef +/_lp /none ddef +} def +/G % gray G - +{ +/_gs exch ddef +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_pjss +{ +_sc +jss +} ddef +/_lp /none ddef +} def +/k % cyan magenta yellow black k - +{ +_cf astore pop +/_fc +{ +_lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +ashow +} ddef +/_pjsf +{ +_fc +awidthshow +} ddef +/_lp /none ddef +} def +/K % cyan magenta yellow black K - +{ +_cs astore pop +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_pjss +{ +_sc +jss +} ddef +/_lp /none ddef +} def +/x % cyan magenta yellow black name gray x - +{ +/_gf exch ddef +findcmykcustomcolor +/_if exch ddef +/_fc +{ +_lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if +} ddef +/_pf +{ +_fc +fill +} ddef +/_psf +{ +_fc +ashow +} ddef +/_pjsf +{ +_fc +awidthshow +} ddef +/_lp /none ddef +} def +/X % cyan magenta yellow black name gray X - +{ +/_gs exch ddef +findcmykcustomcolor +/_is exch ddef +/_sc +{ +_lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if +} ddef +/_ps +{ +_sc +stroke +} ddef +/_pss +{ +_sc +ss +} ddef +/_pjss +{ +_sc +jss +} ddef +/_lp /none ddef +} def + +% locked object operator +/A % value A - +{ +pop +} def + +currentdict readonly pop end +setpacking + +% annotate page operator +/annotatepage +{ +} def +%%EndResource + diff --git a/Master/texmf-dist/dvips/geomsty/math.pro b/Master/texmf-dist/dvips/geomsty/math.pro new file mode 100644 index 00000000000..e05e6c4bd3f --- /dev/null +++ b/Master/texmf-dist/dvips/geomsty/math.pro @@ -0,0 +1,1752 @@ +% This file is adapted from the PostScript code that gets +% included by the psfix filter, provided with Mathematica. +% The only differences are the addition of the first two lines +% (MyDict) and of the abbreviations at the end (starting with /Ma). + +%$Revision: 1.3 $ +%$Date: 95/06/27 12:16:53 $ + +/MyDict 200 dict def +MyDict begin + +% The externally visible functions are: +% MathPictureStart- start page. +% MathPictureEnd - finish off page. +% MathSubStart - start a sub-page. +% MathSubEnd - finish off a sub-page. +% Mdot - draw a dot. +% Mtetra - draw a filled tetragon. +% Metetra - draw a filled tetragon with black edges. +% Mistroke - intermediate stroke of multi-stroke line/curve. +% Mfstroke - final stroke of multi-stroke line/curve. +% Msboxa - compute coordinates of text bounding box. +% Mshowa - plot characters. +% MathScale - compute scaling info to contain array of points. + + +% The following are only for backwards compatibility with earlier versions +% of Mathematica: +% Mpstart - identical to MathPictureStart. +% Mpend - identical to MathPictureEnd. +% Mscale - like MathScale but without user coordinate info. + +/Mpstart { % - Mpstart - + MathPictureStart +} bind def + +/Mpend { % - Mpend - + MathPictureEnd +} bind def + +/Mscale { % [pnts] Mscale - + 0 1 0 1 % [pnts] xbias xscale ybias yscale + 5 -1 roll % xbias xscale ybias yscale [pnts] + MathScale % - +} bind def + +%start of ISOLatin1 stuff + +/ISOLatin1Encoding dup where +{ pop pop } +{ +[ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /minus /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent +/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft +/logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered +/cedilla /onesuperior /ordmasculine /guillemotright +/onequarter /onehalf /threequarters /questiondown +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis +] def +} ifelse + +/MFontDict 50 dict def + +/MStrCat % string1 string2 MStrCat string +{ + exch % s2 s1 + dup length % s2 s1 len + 2 index length add % s2 s1 len + string % s2 s1 s + dup 3 1 roll % s2 s s1 s + copy % s2 s s1 + length % s2 s where + exch dup % s2 where s s + 4 2 roll exch % s s where s2 + putinterval +} def + +/MCreateEncoding % name encoding MCreateEncoding newname +{ + % get base name + 1 index % name encoding name + + % concatenate (-) and encoding to the name + 255 string cvs + (-) MStrCat + 1 index MStrCat + cvn exch % basename newname encoding + + % make encoding name + + (Encoding) MStrCat + cvn dup where + { + exch get + } + { + pop + StandardEncoding + } ifelse + 3 1 roll % vector basename newname + + % make the font if we haven't before + dup MFontDict exch known not + { + 1 index findfont + dup length dict + begin + {1 index /FID ne + {def} + {pop pop} + ifelse} forall + /Encoding 3 index + def + currentdict + end + 1 index exch definefont pop + + MFontDict 1 index + null put + } + if + + exch pop % vector newname + exch pop % newname +} def + +/ISOLatin1 { (ISOLatin1) MCreateEncoding } def +/ISO8859 { (ISOLatin1) MCreateEncoding } def + +%end of ISOLatin1 stuff + +% +% Include old font names for backward compatibility +% +/Mcopyfont { % procedure to copy font + dup + maxlength + dict + exch + { + 1 index + /FID + eq + { + pop pop + } + { + 2 index + 3 1 roll + put + } + ifelse + } + forall +} def + +/Plain /Courier findfont Mcopyfont definefont pop +/Bold /Courier-Bold findfont Mcopyfont definefont pop +/Italic /Courier-Oblique findfont Mcopyfont definefont pop + +% Set up for the start of a page. +/MathPictureStart { % - MathPictureStart - + gsave % - + Mtransform % possibly rotate to landscape mode + Mlmarg % left_margin + Mbmarg % bottom_margin + translate % - + Mwidth % init_width + Mlmarg Mrmarg add % init_width lmarg+rmarg + sub % true_width + /Mwidth exch def % + Mheight % init_height + Mbmarg Mtmarg add % init_height tmarg+bmarg + sub % true_height + /Mheight exch def + /Mtmatrix % /Mtmatrix + matrix currentmatrix % /Mtmatrix text_matrix + def + /Mgmatrix % /Mgmatrix + matrix currentmatrix % /Mgmatrix graphics_matrix + def % - +} bind def + + +% Finish off a page. +/MathPictureEnd { + grestore +} bind def + +%MFill fills the drawing area with the current color. +/MFill { + 0 0 moveto + Mwidth 0 lineto + Mwidth Mheight lineto + 0 Mheight lineto + fill +} bind def + +% xmin xmax ymin ymax MPlotRegion alters the origin, Mwidth and Mheight +% so that the picture fills the altered region +/MPlotRegion { % xmin xmax ymin ymax MPlotRegion + 3 index % xmin xmax ymin ymax xmin + Mwidth mul % xmin xmax ymin ymax xmin_pos + 2 index % xmin xmax ymin ymax xmin_pos ymin + Mheight mul % xmin xmax ymin ymax xmin_pos ymin_pos + translate % xmin xmax ymin ymax + exch sub % xmin xmax ymax-ymin + Mheight mul % xmin xmax new_height + /Mheight + exch def % xmin xmax + exch sub % xmax-xmin + Mwidth mul % new-width + /Mwidth + exch def +} bind def + +% Given a rectangle, set it up as a sub-picture. +/MathSubStart { % xmin ymin xmax ymax MathSubStart <saved state(8)> + Momatrix + Mgmatrix Mtmatrix + Mwidth Mheight % xmin ymin xmax ymax <ss(8)> + 7 -2 roll % xmin ymin <ss(8)> xmax ymax + moveto % xmin ymin <ss(8)> + Mtmatrix setmatrix % xmin ymin <ss(8)> + currentpoint % xmin ymin <ss(8)> xmax(t) ymax(t) + Mgmatrix setmatrix % xmin ymin <ss(8)> xmax(t) ymax(t) + 9 -2 roll % <ss(8)> xmax(t) ymax(t) xmin ymin + moveto % <ss(8)> xmax(t) ymax(t) + Mtmatrix setmatrix % <ss(8)> xmax(t) ymax(t) + currentpoint % <ss(8)> xmax(t) ymax(t) xmin(t) ymin(t) + 2 copy translate % <ss(8)> xmax ymax xmin ymin + /Mtmatrix matrix currentmatrix def + 3 -1 roll % <ss(8)> xmax xmin ymin ymax + exch sub % <ss(8)> xmax xmin height + /Mheight exch def % <ss(8)> xmax xmin + sub % <ss(8)> width + /Mwidth exch def % <ss(8)> +} bind def + + +% Restore the saved state left by the matching MathSubStart. +% Note, we also leave with the new Mgmatrix as the current matrix. +/MathSubEnd { % gmat tmat lm rm bm tm w h MathSubStart - + /Mheight exch def % gmat tmat lm rm bm tm w + /Mwidth exch def % gmat tmat lm rm bm tm + /Mtmatrix exch def % gmat + dup setmatrix % gmat + /Mgmatrix exch def % - + /Momatrix exch def % - +} bind def + + +% Given a point, draw a dot. +/Mdot { % x y Mdot - + moveto % - + 0 0 rlineto % - + stroke % - +} bind def + + +% Given 4 points, draw the corresponding filled tetragon. +/Mtetra { % x0 y0 x1 y1 x2 y2 x3 y3 Mtetra - + moveto % x0 y0 x1 y1 x2 y2 + lineto % x0 y0 x1 y1 + lineto % x0 y0 + lineto % - + fill % - +} bind def + + +% Given 4 points, draw the corresponding filled tetragon with black edges. +% Note, this leaves the gray level at 0 (for compatibility with the old +% C code. +/Metetra { % x0 y0 x1 y1 x2 y2 x3 y3 Metetra - + moveto % x0 y0 x1 y1 x2 y2 + lineto % x0 y0 x1 y1 + lineto % x0 y0 + lineto % - + closepath % - + gsave % - + fill % - + grestore % - + 0 setgray % - + stroke % - +} bind def + + +% Mistroke is called to stroke intermediate parts of a path. It makes +% sure to resynchronize the dashing pattern and to leave the current point +% as the final point of the path. +/Mistroke { % - Mistroke - + flattenpath % - + 0 0 0 % length x y + { % length x y new_x new_y (for moves) + 4 2 roll % length new_x new_y x y + pop pop % length new_x new_y + } + { % length x y new_x new_y (for lines) + 4 -1 roll % length y new_x new_y x + 2 index % length y new_x new_y x new_x + sub dup mul % length y new_x new_y dx*dx + 4 -1 roll % length new_x new_y dx*dx y + 2 index % length new_x new_y dx*dx y new_y + sub dup mul % length new_x new_y dx*dx dy*dy + add sqrt % length new_x new_y dlen + 4 -1 roll % new_x new_y dlen length + add % new_x new_y new_length + 3 1 roll % new_length new_x new_y + } + { % length x y x1 y1 x2 y2 x3 y3 (for curves) + stop % should never be called + } + { % length x y (for closepaths) + stop % should never be called + } + pathforall % length x y + pop pop % length + currentpoint % length final_x final_y + stroke % length final_x final_y + moveto % length + currentdash % length dash_array dash_offset + 3 -1 roll % dash_array dash_offset length + add % dash_array new_offset + setdash % - +} bind def + + +% Mfstroke is called to stroke the final parts of a path. It resets +% the dashing pattern to compensate for any adjustments made by Mistroke. +/Mfstroke { % - Mfstroke - + stroke % - + currentdash % dash_array dash_offset + pop 0 % dash_array 0 + setdash % - +} bind def + + + +% Mrotsboxa is the same as Msboxa except that it takes an angle +% form the stack and the box is calculated for text rendered at this angle. +% It gsaves in case we are starting a MathSubStart +% save Mrot so that Msboxa can convert bouding box back to the non-rotated +% coordinate system +% call Mrotcheck to alter the offsets into the rotated system +% converts Mtmatrix to render in the rotated system +% the calls Msboxa which does all the work +% at the end Mtmatrix is restored and Mrot is reset to 0 +/Mrotsboxa { % [str..] gx gy sx sy ang Mrotsboxa ... Msboxa + gsave % in case in MathSubStart + dup % [str..] gx gy sx sy ang ang + /Mrot + exch def % [str..] gx gy sx sy ang + Mrotcheck % [str..] gx gy sx_new sy_new ang + Mtmatrix % [str..] gx gy sx sy ang Mtmatrix + dup + setmatrix + 7 1 roll % Mtmatrix [str..] gx gy sx sy ang + 4 index % Mtmatrix [str..] gx gy sx sy ang gx + 4 index % Mtmatrix [str..] gx gy sx sy ang gx gy + translate % Mtmatrix [str..] gx gy sx sy ang + rotate % Mtmatrix [str..] gx gy sx sy + 3 index % Mtmatrix [str..] gx gy sx sy gx + -1 mul % Mtmatrix [str..] gx gy sx sy -gx + 3 index % Mtmatrix [str..] gx gy sx sy -gx gy + -1 mul % Mtmatrix [str..] gx gy sx sy -gx -gy + translate % Mtmatrix [str..] gx gy sx sy + /Mtmatrix % now change Mtmatrix to be this new currentmatrix + matrix + currentmatrix + def + grestore % grestore to deal with MathSubStart + Msboxa % Mtmatrix [ x y x y] [ x y x y] + 3 -1 roll % [x y x y ] [x y x y] Mtmatrix + /Mtmatrix + exch def % restore Mtmatrix + /Mrot + 0 def % restore Mrot +} bind def + + +% Given an array of strings ([str...]), which represent consecutive lines +% of text, a position in graphics coordinates (gx,gy) and a position in +% the bounding box coordinates (sx,sy), compute the low and high coordinates +% of the resulting text, in the [gx gy tx ty] form, which corresponds to +% the point (gx,gy) (in graphics coordinates) plus the offset (tx,ty) (in +% text coordinates). +% Note, Msboxa assumes that the current matrix is the text matrix. +% Mboxout is called in case we are in Mouter to make the box bigger +% Mboxrot adjusts the box to account for a rotation to convert the box +% into a nonrotated coordinate system +% +/Msboxa { % [str...] gx gy sx sy Msboxa [gx gy tlx tly] [gx gy thx thy] + newpath % [str...] gx gy sx sy (just in case) + 5 -1 roll % gx gy sx sy [str...] + Mvboxa % gx gy sx sy blx bly bhx bhy [off...] + pop % gx gy sx sy blx bly bhx bhy + Mboxout % adjust box for Minner + 6 -1 roll % gx gy sy blx bly bhx bhy sx + 5 -1 roll % gx gy sy bly bhx bhy sx blx + 4 -1 roll % gx gy sy bly bhy sx blx bhx + Msboxa1 % gx gy sy bly bhy tlx thx + 5 -3 roll % gx gy tlx thx sy bly bhy + Msboxa1 % gx gy tlx thx tly thy + Mboxrot % adjust box for rotation + [ % gx gy tlx thx tly thy mark + 7 -2 roll % tlx thx tly thy mark gx gy + 2 copy % tlx thx tly thy mark gx gy gx gy + [ % tlx thx tly thy mark gx gy gx gy mark + 3 1 roll % tlx thx tly thy mark gx gy mark gx gy + 10 -1 roll % thx tly thy mark gx gy mark gx gy tlx + 9 -1 roll % thx thy mark gx gy mark gx gy tlx tly + ] % thx thy mark gx gy [gx gy tlx tly] + 6 1 roll % [gx gy tlx tly] thx thy mark gx gy + 5 -2 roll % [gx gy tlx tly] mark gx gy thx thy + ] % [gx gy tlx tly] [gx gy thx thy] +} bind def + +% Msboxa1 is an internal function which, given a bounding box coordinate +% (sz), and the bounding box limits (blz and bhz), computes the actual +% offsets (tlz = (blz-bhz)(sz+1)/2, thz = (blz-bhz)(sz-1)/2). +/Msboxa1 { % sz blz bhz Msboxa1 tlz thz + sub % sz blz-bhz + 2 div % sz (blz-bhz)/2 + dup % sz (blz-bhz)/2 (blz-bhz)/2 + 2 index % sz (blz-bhz)/2 (blz-bhz)/2 sz + 1 add % sz (blz-bhz)/2 (blz-bhz)/2 sz+1 + mul % sz (blz-bhz)/2 tlz + 3 -1 roll % (blz-bhz)/2 tlz sz + -1 add % (blz-bhz)/2 tlz sz-1 + 3 -1 roll % tlz sz-1 (blz-bhz)/2 + mul % tlz thz +} bind def + + +% Given a (non-empty) array of strings ([str...]) calculate the +% bounding box. We do this for fixedwidth fonts or nonfixedwidth fonts +% depending upon the setting of Mfixwid. Mvboxa1 actually does a lot +% of the work. For nonfixedwidth fonts the length of the bounding +% box length is made to be the summation of [(str)..] Mwidthcal +% ie the maximum length of the strings and xlow +% +/Mvboxa { % [str...] Mvboxa xlow ylow xhigh yhigh [off...] + Mfixwid + { + Mvboxa1 + } + { + dup % [str...] [str...] + Mwidthcal % [str...] [ w1 w2...] + 0 exch % [str...] 0 [ w1 w2...] + { + add + } + forall % [str...] length + exch + Mvboxa1 % length xlow ylow xhigh yhigh [off...] + 4 index % length xlow ylow xhigh yhigh [off...] xlow + 7 -1 roll % xlow ylow xhigh yhigh [off...] xlow length + add % xlow ylow xhigh yhigh [off...] new_xhigh + 4 -1 roll + pop % xlow ylow yhigh [off...] new_xhigh + 3 1 roll % xlow ylow new_xhigh yhigh [off...] + } + ifelse +} bind def + + +% Given a (non-empty) array of strings ([str...]) which represent consecutive +% lines of text, compute the total bounding box assuming that we start at +% (0,0) and the array of y offsets to place the lines correctly. +% Note, Mvboxa assumes that the current matrix is the text matrix. +% Note, Mvboxa does not alter the current path. +% The vertical spacing is set so that the bounding boxes of adjacent lines +% are .3 times the width of an `m' apart. +/Mvboxa1 { % [str...] Mvboxa xlow ylow xhigh yhigh [off...] + gsave % [str...] + newpath % [str...] (clear path fragments) + [ true % [str...] mark true + 3 -1 roll % mark true [str...] + { % mark {true -or- off... Xl Yl Xh Yh false} str + Mbbox % mark {true -or- off... Xl Yl Xh Yh false} xl yl xh yh + 5 -1 roll % mark { - -or- off... Xl Yl Xh Yh} xl yl xh yh first? + { % mark xl yl xh yh + 0 % mark xl yl xh yh off1 + 5 1 roll % mark off1 xl yl xh yh + } % mark off1 XL YL XH YH + { % mark off... Xl Yl Xh Yh xl yl xh yh + 7 -1 roll % mark off... Xl Xh Yh xl yl xh yh Yl + exch sub % mark off... Xl Xh Yh xl yl xh yh-Yl + (m) stringwidth pop % mark off... Xl Xh Yh xl yl xh yh-Yl pntsize + .3 mul % mark off... Xl Xh Yh xl yl xh yh-Yl fudge + sub % mark off... Xl Xh Yh xl yl xh off + 7 1 roll % mark off... off Xl Xh Yh xl yl xh + 6 -1 roll % mark off... off Xh Yh xl yl xh Xl + 4 -1 roll % mark off... off Xh Yh yl xh Xl xl + Mmin % mark off... off Xh Yh yl xh XL + 3 -1 roll % mark off... off Xh Yh xh XL yl + 5 index % mark off... off Xh Yh xh XL yl off + add % mark off... off Xh Yh xh XL YL + 5 -1 roll % mark off... off Yh xh XL YL Xh + 4 -1 roll % mark off... off Yh XL YL Xh xh + Mmax % mark off... off Yh XL YL XH + 4 -1 roll % mark off... off XL YL XH YH + } % mark off... XL YL XH YH + ifelse % mark off... XL YL XH YH + false % mark off... XL YL XH YH false + } % mark off... XL YL XH YH false + forall % mark off... xlow ylow xhigh yhigh false + { stop } if % mark off... xlow ylow xhigh yhigh + counttomark % mark off... xlow ylow xhigh yhigh (#off's+4) + 1 add % mark off... xlow ylow xhigh yhigh (#off's+5) + 4 roll % xlow ylow xhigh yhigh mark off... + ] % xlow ylow xhigh yhigh [off...] + grestore % xlow ylow xhigh yhigh [off...] +} bind def + + +% Given a string, compute the bounding box assuming that we start at (0,0). +% Note, the path is assumed to be empty, and we are assumed to be in text +% coordinates. Allows for long strings. +/Mbbox { % str Mbbox xlow ylow xhigh yhigh + 1 dict begin + 0 0 moveto % str + /temp (T) def + { gsave + currentpoint newpath moveto + temp 0 3 -1 roll put temp + false charpath flattenpath currentpoint + pathbbox + grestore moveto lineto moveto} forall + pathbbox + newpath + end +} bind def + + +% Compute the minimum of two numbers. +/Mmin { % p q Mmin min(p,q) + 2 copy % p q p q + gt % p q p>q? + { exch } if % min(p,q) max(p,q) + pop % min(p,q) +} bind def + + +% Compute the maximum of two numbers. +/Mmax { % p q Mmax max(p,q) + 2 copy % p q p q + lt % p q p<q? + { exch } if % max(p,q) min(p,q) + pop % max(p,q) +} bind def + +% Mrotshowa is the same as Mshowa except that it takes an angle +% from the stack and the text is rendered at this angle. +% It saves Mrot (not really needed but saved anyway) +% calls Mrotcheck to adjust the offsets into the rotated coordinate system +% converts Mtmatrix to render in the rotated system +% and calls Mshowa which does all the work +% at the end Mtmatrix is restored and Mrot is reset to zero. +% +/Mrotshowa { %[str..] gx gy sx sy ang Mrotshowa + dup + /Mrot + exch def + Mrotcheck + Mtmatrix %[str..] gx gy sx sy ang Mtmatrix + dup + setmatrix + 7 1 roll %Mtmatrix [str..] gx gy sx sy ang + 4 index %Mtmatrix [str..] gx gy sx sy ang gx + 4 index %Mtmatrix [str..] gx gy sx sy ang gx gy + translate + rotate %Mtmatrix [str..] gx gy sx sy + 3 index + -1 mul + 3 index + -1 mul %Mtmatrix [str..] gx gy sx sy -gx -gy + translate + /Mtmatrix + matrix + currentmatrix + def %Mtmatrix [str..] gx gy sx sy + Mgmatrix setmatrix + Mshowa %Mtmatrix + /Mtmatrix + exch def + /Mrot 0 def % restore Mrot +} bind def + +% +% Given an array of strings ([str...]), which represent consecutive lines +% of text, a position in graphics coordinates (gx,gy) and a position in +% the bounding box coordinates (sx,sy), display the strings. +% Mboxout is called in case we are in Mouter +% +/Mshowa { % [str...] gx gy sx sy Mshowa - + 4 -2 roll % [str...] sx sy gx gy + moveto % [str...] sx sy + 2 index % [str...] sx sy [str...] + Mtmatrix setmatrix % [str...] sx sy [str...] + Mvboxa % [str...] sx sy tlx tly thx thy [off...] + 7 1 roll % [str...] [off...] sx sy tlx tly thx thy + Mboxout + 6 -1 roll % [str...] [off...] sy tlx tly thx thy sx + 5 -1 roll % [str...] [off...] sy tly thx thy sx tlx + 4 -1 roll % [str...] [off...] sy tly thy sx tlx thx + Mshowa1 % [str...] [off...] sy tly thy relx + 4 1 roll % [str...] [off...] relx sy tly thy + Mshowa1 % [str...] [off...] relx rely + rmoveto % [str...] [off...] + currentpoint % [str...] [off...] x y + Mfixwid + { + Mshowax + } + { + Mshoway + } + ifelse + pop pop pop pop + Mgmatrix setmatrix +} bind def + + +% This is used for fixedwidth fonts +% It simply shows each string and advances the y direction by the offset +% +/Mshowax { + 0 1 + 4 index length % [str...] [off...] x y 0 1 (#strings) + -1 add % [str...] [off...] x y 0 1 (#strings-1) + { % [str...] [off...] x y strnum + 2 index % [str...] [off...] x y strnum x + 4 index % [str...] [off...] x y strnum x [off...] + 2 index % [str...] [off...] x y strnum [off...] strnum + get % [str...] [off...] x y strnum x off + 3 index % [str...] [off...] x y strnum x off y + add % [str...] [off...] x y strnum x Y + moveto % [str...] [off...] x y strnum + 4 index % [str...] [off...] x y strnum [str...] + exch get % [str...] [off...] x y str + Mfixdash + { + Mfixdashp + } + if + show % [str...] [off...] x y + } for % [str...] [off...] x y +} bind def + +% Fix if all dashes and length > 1 +/Mfixdashp { % str + dup + length % str n + 1 + gt % str bool + 1 index % str bool str + true exch % str bool true str + { + 45 + eq + and + } forall + and % str bool + { + gsave + (--) + stringwidth pop + (-) + stringwidth pop + sub + 2 div % str lenfix + 0 rmoveto % str + dup % str str + length + 1 sub % str len-1 + { + (-) + show + } + repeat + grestore + } + if % x y str +} bind def + + +% This is for non-fixedwidth fonts +% It shows each character individually advancing the x position by +% the maximum width of any character in that position +% +/Mshoway { + 3 index % [str...] [off...] x y [str...] + Mwidthcal % [str...] [off...] x y [w1 w2 w3...] + 5 1 roll % [w1 w2 w3..] [str...] [off...] x y + 0 1 % [w1 w2 w3..] [str...] [off...] x y 0 1 + 4 index length % [w1 w2 w3..] [str...] [off...] x y 0 1 (#strings) + -1 add % [w1 w2 w3..] [str...] [off...] x y 0 1 (#strings-1) + { % [w1 w2 w3..] [str...] [off...] x y strnum + 2 index % [w1 w2 w3..] [str...] [off...] x y strnum x + 4 index % [w1 w2 w3..] [str...] [off...] x y strnum x [off...] + 2 index % [w1 w2 w3..] [str...] [off...] x y + % strnum [off...] strnum + get % [w1 w2 w3..] [str...] [off...] x y strnum x off + 3 index % [w1 w2 w3..] [str...] [off...] x y strnum x off y + add % [w1 w2 w3..] [str...] [off...] x y strnum x Y + moveto % [w1 w2 w3..] [str...] [off...] x y strnum + 4 index % [w1 w2 w3..] [str...] [off...] x y strnum [str...] + exch get % [w1 w2 w3..] [str...] [off...] x y str + [ + 6 index % [w1 w2 w3..] [str...] [off...] x y str [ [w1 w2..] + aload + length % [w1 w2 w3..] [str...] [off...] x y str [ w1 w2.. len + 2 add + -1 roll % [w1 w2 w3..] [str...] [off...] x y [ w1 w2.. str + { + pop % [w1 w2 w3..] [str...] [off...] x y [ w1 c2.. str am + Strform % [w1 w2 w3..] [str...] [off...] x y [ w1 w2.. str 1str + stringwidth + pop + neg + exch % [w1 w2 w3..] [str...] [off...] x y [ w1 w2.. + % str -cm cn + add + 0 rmoveto % [w1 w2 w3..] [str...] [off...] x y [ w1 w2.. str + } + exch + kshow % [w1 w2 w3..] [str...] [off...] x y [ + cleartomark + } for % [w1 w2 w3..] [str...] [off...] x y + pop +} bind def + +% +% This is a central mechanism for dealing with non-fixedwidth fonts. +% Given an array of strings Mwidthcal returns an array of the lengths +% of the longest character in the corresponding positions in the arrays. +% Thus the 4th element of the result is the maximum character width of +% each strin at the 4th position. +% +/Mwidthcal { % [(abc) (abc) ..] Mwidthcal [w1 w2 w3 ...] + [ + exch % [ [(abc) (abd) ..] + { + Mwidthcal1 + } + forall + ] % [[w w w] [w w w] ..] + [ % call this [chr ..] now + exch % [ [chr ..] + dup % [ [chr ..] [chr ..] + Maxlen % [ [chr ..] maxlen + -1 add + 0 1 + 3 -1 roll % [chr ..] [ [chr ..] 0 1 maxlen-1 + { + [ % [chr ..] [ [chr ..] n [ + exch % [chr ..] [ [chr ..] [ n + 2 index % [chr ..] [ [chr ..] [ n [chr ..] + { + 1 index + Mget % [chr ..] [ [chr ..] [ n [w1 w2 ..] n + exch % [chr ..] [ [chr ..] [ wn n + } + forall + pop % [chr ..] [ [chr ..] [ w1 w2 w3 + Maxget % [chr ..] [ [chr ..] wmax + exch % [chr ..] [ wmax [chr ..] + } + for + pop + ] % [ wmax1 wmax2 wmax3 ..] + Mreva +} bind def + +%Reverse an array +/Mreva { %[a b c ..] Mreva [.. c b a] + [ + exch %[ [a b c ..] + aload + length %[a b c .. len + -1 1 %[a b c .. len -1 1 + {1 roll} + for + ] %[.. c b a] +} bind def + +% take an array and an index and return that element if index exits +% if array not long enougth return zero +/Mget { %[a b c d..] index + 1 index + length %[a b c d..] index len + -1 add + 1 index %[a b c d..] index (len-1) index + ge + { + get %if long enough return entry + } + { + pop pop + 0 %if not long enough return zero + } + ifelse +} bind def + +%Take an array of arrays and return the longest length +/Maxlen { %[ arr1 arr2 arr3 ] Maxlen maxlen + [ %[ arr1 arr2 arr3 ] [ + exch %[ [ arr1 arr2 arr3 ] + { + length + } + forall %[ len1 len2 len3.. + Maxget +} bind def + +%Take a series of numbers starting with [ and return the largest member +/Maxget { %[n1 n2 n3 .. Maxget nmax + counttomark %[n1 n2 n3 .. len + -1 add %[n1 n2 n3 .. len-1 + 1 1 %[n1 n2 n3 .. len 1 1 + 3 -1 roll %[n1 n2 n3 .. 1 1 (len-1) + { + pop + Mmax + } + for %[ nmax + exch % nmax [ + pop % nmax +} bind def + +%Take a string and return an array of the lengths of the characters +/Mwidthcal1 { % str Mwidthcal1 [w1 w2 w3 ..] + [ + exch %[ (str) + { + Strform + stringwidth + pop + } + forall %[w1 w2 w3 .. + ] %[w1 w2 w3 ..] +} bind def + +%put a string onto the stack +/Strform { % num + /tem (x) def + tem 0 + 3 -1 roll + put + tem +} bind def + +%/Mwidmax { % [str...] +% dup % [str...] [str...] +% [ % [str...] [str...] [ +% exch % [str...] [ [str...] +% { +% stringwidth +% pop +% } +% forall % [str...] [ w1 w2 ... wm wn +% 0 +% counttomark % [str...] [ w1 w2 ... wm wn 0 n +% -2 add % [str...] [ w1 w2 ... wm wn 0 (n-1) +% 1 exch % [str...] [ w1 w2 ... wm wn 0 1 (n-1) +% 1 exch % [str...] [ w1 w2 ... wm wn 0 1 1 (n-1) +% { +% 3 index % [str...] [ w1 w2 ... wm wn num pos wm +% 3 index % [str...] [ w1 w2 ... wm wn num pos wm wn +% ge +% { % wm >= wn +% exch pop +% exch pop % [str...] [ w1 w2 ... wm num +% } +% { % wm < wn +% pop +% 3 -1 roll +% pop % [str...] [ w1 w2 ... wn pos < pos -> num > +% } +% ifelse % [str...] [ w1 w2 ... wmax nmax +% } +% for % [str...] [ wmax nmax +% 4 1 roll +% pop pop % nmax [str...] +% length % nmax len +% -1 add % nmax (len - 1) +% exch +% sub % max_pos +%} bind def + + +% Mshowa1 is an internal routine which, given a bounding box coordinate +% (sz), and the bounding box limits if we started drawing at 0 (tlz and thz), +% computes the offset at which to start drawing +% (relz = (sz-1)tlz/2 - (sz+1)thz/2 = sz(tlz-thz)/2-(tlz+thz)/2). +/Mshowa1 { % sz tlz thz Mshowa1 relz + 2 copy % sz tlz thz tlz thz + add % sz tlz thz tlz+thz + 4 1 roll % tlz+thz sz tlz thz + sub % tlz+thz sz tlz-thz + mul % tlz+thz sz(tlz-thz) + sub % tlz+thz-sz(tlz-thz) + -2 div % sz(tlz-thz)/2-(tlz+thz)/2 +} bind def + + +% Given the x and y scaling to user coordinates and an array of points to +% fit (xbias xscale ybias yscale [pnts]), set up the scaling. The array +% must contain atleast two points, and the last two must be of the form +% [gxlow gylow 0 0] and [gxhigh gyhigh 0 0]. +% Note, MathScale assumes that we are already scaled so that the active area +% is the rectangle [0,Mwidth-Mlmarg-Mrmarg]x[0,Mheight-Mbmarg-Mtmarg]. +% also keep bias and scale info for PostScript commands +/MathScale { % <user> [pnts] MathScale - + Mwidth % <user> [pnts] width + Mheight % <user> [pnts] width height + Mlp % <user> Ax Ay Bx By + translate % <user> Ax Ay + scale % <user> + /yscale exch def + /ybias exch def + /xscale exch def + /xbias exch def + /Momatrix % this transforms from + xscale yscale matrix scale % Original to Display coordinates + xbias ybias matrix translate + matrix concatmatrix def + /Mgmatrix % /Mgmatrix + matrix currentmatrix % /Mgmatrix graphics_matrix + def % - +} bind def + + +% Given a non-empty array of points to fit ([p]) and a maximum width (sx) +% and height (sy) find the largest scale (Ax and Ay) and offsets (Bx and By) +% such that the transformation +% [gx gy tx ty] -> (Ax gx + tx + bx, Ay gy + ty + By) +% maps the points into the rectangle [0,sx]x[0,sy] +/Mlp { % [p] sx sy Mlp Ax Ay Bx By + 3 copy % [p] sx sy [p] sx sy + Mlpfirst % [p] sx sy Ax Ay + { % [p] sx sy Ax Ay + Mnodistort % [p] sx sy Ax Ay nodistort? + { % [p] sx sy Ax Ay + Mmin % [p] sx sy A + dup % [p] sx sy Ax Ay + } if % [p] sx sy Ax Ay + 4 index % [p] sx sy Ax Ay [p] + 2 index % [p] sx sy Ax Ay [p] Ax + 2 index % [p] sx sy Ax Ay [p] Ax Ay + Mlprun % [p] sx sy Ax Ay ctx wtx cgx wgx cty wty cgy wgy + 11 index % [p] sx sy Ax Ay ctx wtx cgx wgx cty wty cgy wgy sx + 11 -1 roll % [p] sx sy Ay ctx wtx cgx wgx cty wty cgy wgy sx Ax + 10 -4 roll % [p] sx sy Ay cty wty cgy wgy sx Ax ctx wtx cgx wgx + Mlp1 % [p] sx sy Ay cty wty cgy wgy Ax Bx xok? + 8 index % [p] sx sy Ay cty wty cgy wgy Ax Bx xok? sy + 9 -5 roll % [p] sx sy Ax Bx xok? sy Ay cty wty cgy wgy + Mlp1 % [p] sx sy Ax Bx xok? Ay By yok? + 4 -1 roll % [p] sx sy Ax Bx Ay By yok? xok? + and % [p] sx sy Ax Bx Ay By ok? + { exit } if % [p] sx sy Ax Bx Ay By + 3 -1 roll % [p] sx sy Ax Ay Bx By + pop pop % [p] sx sy Ax Ay + } loop % [p] sx sy Ax Bx Ay By + exch % [p] sx sy Ax Bx By Ay + 3 1 roll % [p] sx sy Ax Ay Bx By + 7 -3 roll % Ax Ay Bx By [p] sx sy + pop pop pop % Ax Ay Bx By +} bind def + + +% Given an array of points in the [gx gy tx ty] form, with the last two +% being [gxlow gylow 0 0] and [gxhigh gyhigh 0 0], and the width and height +% (sx and sy) in which to fit them, compute the maximum scaling (Ax and Ay). +/Mlpfirst { % [pnts] sx sy Mlpfirst Ax Ay + 3 -1 roll % sx sy [pnts] + dup length % sx sy [pnts] #pnts + 2 copy % sx sy [pnts] #pnts [pnts] #pnts + -2 add % sx sy [pnts] #pnts [pnts] #pnts-2 + get % sx sy [pnts] #pnts [gxl gyl 0 0] + aload % sx sy [pnts] #pnts gxl gyl 0 0 [gxl gyl 0 0] + pop pop pop % sx sy [pnts] #pnts gxl gyl + 4 -2 roll % sx sy gxl gyl [pnts] #pnts + -1 add % sx sy gxl gyl [pnts] #pnts-1 + get % sx sy gxl gyl [gxh gyh 0 0] + aload % sx sy gxl gyl gxh gyh 0 0 [gxh gyh 0 0] + pop pop pop % sx sy gxl gyl gxh gyh + 6 -1 roll % sy gxl gyl gxh gyh sx + 3 -1 roll % sy gxl gyl gyh sx gxh + 5 -1 roll % sy gyl gyh sx gxh gxl + sub % sy gyl gyh sx delx + div % sy gyl gyh Ax + 4 1 roll % Ax sy gyl gyh + exch sub % Ax sy dely + div % Ax Ay +} bind def + + +% Given a non-empty array of points to fit ([pnts]) and scale factors +% for graphics->text (Ax and Ay), compute the limiting points. +/Mlprun { % [pnts] Ax Ay Mlprun ctx wtx cgx wgx cty wty cgy wgy + 2 copy % [pnts] Ax Ay Ax Ay + 4 index % [pnts] Ax Ay Ax Ay [pnts] + 0 get % [pnts] Ax Ay Ax Ay [first] + dup % [pnts] Ax Ay Ax Ay [first] [first] + 4 1 roll % [pnts] Ax Ay [first] Ax Ay [first] + Mlprun1 % [pnts] Ax Ay [first] fx fy + 3 copy % [pnts] Ax Ay [low] lx ly [high] hx hy + 8 -2 roll % [pnts] [low] lx ly [high] hx hy Ax Ay + 9 -1 roll % [low] lx ly [high] hx hy Ax Ay [pnts] + { % [low] lx ly [high] hx hy Ax Ay [pnt] + 3 copy % [low] lx ly [high] hx hy Ax Ay [pnt] Ax Ay [pnt] + Mlprun1 % [low] lx ly [high] hx hy Ax Ay [pnt] px py + 3 copy % [low] lx ly [high] hx hy Ax Ay [pnt] px py [pnt] px py + 11 -3 roll % [low] lx ly Ax Ay [pnt] px py [pnt] px py [high] hx hy + /gt Mlpminmax % [low] lx ly Ax Ay [pnt] px py [high] hx hy + 8 3 roll % [low] lx ly [high] hx hy Ax Ay [pnt] px py + 11 -3 roll % [high] hx hy Ax Ay [pnt] px py [low] lx ly + /lt Mlpminmax % [high] hx hy Ax Ay [low] lx ly + 8 3 roll % [low] lx ly [high] hx hy Ax Ay + } forall % [low] lx ly [high] hx hy Ax Ay + pop pop pop pop % [low] lx ly [high] + 3 1 roll % [low] [high] lx ly + pop pop % [low] [high] + aload pop % [low] hgx hgy htx hty + 5 -1 roll % hgx hgy htx hty [low] + aload pop % hgx hgy htx hty lgx lgy ltx lty + exch % hgx hgy htx hty lgx lgy lty ltx + 6 -1 roll % hgx hgy hty lgx lgy lty ltx htx + Mlprun2 % hgx hgy hty lgx lgy lty ctx wtx + 8 2 roll % ctx wtx hgx hgy hty lgx lgy lty + 4 -1 roll % ctx wtx hgx hgy lgx lgy lty hty + Mlprun2 % ctx wtx hgx hgy lgx lgy cty wty + 6 2 roll % ctx wtx cty wty hgx hgy lgx lgy + 3 -1 roll % ctx wtx cty wty hgx lgx lgy hgy + Mlprun2 % ctx wtx cty wty hgx lgx cgy wgy + 4 2 roll % ctx wtx cty wty cgy wgy hgx lgx + exch % ctx wtx cty wty cgy wgy lgx hgx + Mlprun2 % ctx wtx cty wty cgy wgy cgx wgx + 6 2 roll % ctx wtx cgx wgx cty wty cgy wgy +} bind def + + +% Given scale factors for graphics->text (Ax and Ay) and a point in the +% [gx gy tx ty] form, return the text x and y coordinate that results. +/Mlprun1 { % Ax Ay [gx gy tx ty] Mlprun1 rx ry + aload pop % Ax Ay gx gy tx ty + exch % Ax Ay gx gy ty tx + 6 -1 roll % Ay gx gy ty tx Ax + 5 -1 roll % Ay gy ty tx Ax gx + mul add % Ay gy ty rx + 4 -2 roll % ty rx Ay gy + mul % ty rx Ay*gy + 3 -1 roll % rx Ay*gy ty + add % rx ry +} bind def + + +% Given a low and high coordinate, compute the center and width. +/Mlprun2 { % low high Mlprun2 center width + 2 copy % low high low high + add 2 div % low high (low+high)/2 + 3 1 roll % (low+high)/2 low high + exch sub % (low+high)/2 high-low +} bind def + + +% Given two points stored as [gx gy tx ty] followed by the scaled +% result (rx, ry), and a comparison function (lt or gt) leave the +% point which is the minimum (or maximum) in each dimension. +/Mlpminmax { % [pnt1] r1x r1y [pnt2] r2x r2y cmp Mlpminmax [pnt] x y + cvx % [pnt1] r1x r1y [pnt2] r2x r2y cmp + 2 index % [pnt1] r1x r1y [pnt2] r2x r2y cmp r2x + 6 index % [pnt1] r1x r1y [pnt2] r2x r2y cmp r2x r1x + 2 index % [pnt1] r1x r1y [pnt2] r2x r2y cmp r2x r1x cmp + exec % [pnt1] r1x r1y [pnt2] r2x r2y cmp take2? + { % [pnt1] r1x r1y [pnt2] r2x r2y cmp + 7 -3 roll % [pnt2] r2x r2y cmp [pnt1] r1x r1y + 4 -1 roll % [pnt2] r2x r2y [pnt1] r1x r1y cmp + } if % [pnt1] r1x r1y [pnt2] r2x r2y cmp + 1 index % [pnt1] r1x r1y [pnt2] r2x r2y cmp r2y + 5 index % [pnt1] r1x r1y [pnt2] r2x r2y cmp r2y r1y + 3 -1 roll % [pnt1] r1x r1y [pnt2] r2x r2y r2y r1y cmp + exec % [pnt1] r1x r1y [pnt2] r2x r2y take2y? + { % [gx ? tx ?] rx ? [? gy ? ty] ? ry + 4 1 roll % [gx ? tx ?] rx ry ? [? gy ? ty] ? + pop % [gx ? tx ?] rx ry ? [? gy ? ty] + 5 -1 roll % rx ry ? [? gy ? ty] [gx ? tx ?] + aload % rx ry ? [? gy ? ty] gx ? tx ? [gx ? tx ?] + pop pop % rx ry ? [? gy ? ty] gx ? tx + 4 -1 roll % rx ry ? gx ? tx [? gy ? ty] + aload pop % rx ry ? gx ? tx ? gy ? ty + [ % rx ry ? gx ? tx ? gy ? ty mark + 8 -2 roll % rx ry ? tx ? gy ? ty mark gx ? + pop % rx ry ? tx ? gy ? ty mark gx + 5 -2 roll % rx ry ? tx ? ty mark gx gy ? + pop % rx ry ? tx ? ty mark gx gy + 6 -2 roll % rx ry ? ty mark gx gy tx ? + pop % rx ry ? ty mark gx gy tx + 5 -1 roll % rx ry ? mark gx gy tx ty + ] % rx ry ? [pnt] + 4 1 roll % [pnt] rx ry ? + pop % [pnt] rx ry + } + { % [gx gy tx ty] rx ry ? ? ? + pop pop pop % [pnt] rx ry + } ifelse % [pnt] rx ry +} bind def + + +% Given a size (s), graphics->text scale (A), text center (ct), text +% width (wt), graphics center (cg) and graphics width (wg), compute +% a new graphics->text scale (Anew) and offset (B) and whether or not +% we are done. +% Note, the mysterious .99999 is magic juju which is supposed to ward +% off the possibility that floating point errors would cause this +% routine to return the old A and yet claim not-done. +/Mlp1 { % s A ct wt cg wg Mlp1 Anew B done? + 5 index % s A ct wt cg wg s + 3 index sub % s A ct wt cg wg s-wt + 5 index % s A ct wg cg wg s-wt A + 2 index mul % s A ct wg cg wg s-wt A*wg + 1 index % s A ct wg cg wg s-wt A*wg s-wt + le % s A ct wg cg wg s-wt fits? + 1 index % s A ct wg cg wg s-wt fits? s-wt + 0 le % s A ct wg cg wg s-wt fits? impossible? + or % s A ct wg cg wg s-wt done? + dup % s A ct wg cg wg s-wt done? done? + not % s A ct wg cg wg s-wt done? notdone? + { % s A ct wg cg wg s-wt done? (not done case) + 1 index % s A ct wg cg wg s-wt done? s-wt + 3 index div % s A ct wg cg wg s-wt done? (s-wt)/wg + .99999 mul % s A ct wg cg wg s-wt done? Anew + 8 -1 roll % s ct wg cg wg s-wt done? Anew A + pop % s ct wg cg wg s-wt done? Anew + 7 1 roll % s Anew ct wg cg wg s-wt done? + } + if % s Anew ct wg cg wg s-wt done? + 8 -1 roll % Anew ct wg cg wg s-wt done? s + 2 div % Anew ct wg cg wg s-wt done? s/2 + 7 -2 roll % Anew cg wg s-wt done? s/2 ct wg + pop sub % Anew cg wg s-wt done? s/2-ct + 5 index % Anew cg wg s-wt done? s/2-ct Anew + 6 -3 roll % Anew done? s/2-ct Anew cg wg s-wt + pop pop % Anew done? s/2-ct Anew cg + mul sub % Anew done? s/2-ct-Anew*cg + exch % Anew B done? +} bind def + + +% The following are the workings of the tick, axes and plot labels. +% NOTE a possible source of confusion is that for xticks ie tickmarks on +% the x axis we keep y information and vice versa for yticks +% +% When Minner is found then +% +% assumes that box starts at zero on the left lower side +% +% 0) if outflag = 1 then intop = 0, inrht = 0 outflag = 0 +% 1) Save intop largest top of box +% 2) Save inrht largest rht of box +% 3) set inflag notifies that inner marks are present +% +% When Mouter is found then +% +% if inflag is set then +% 1) get vecx and vecy off the stack (points in direcn to move) +% 2) vecx < 1 xadrht = inrht*abs(vecx) +% 3) vecx > 1 xadlft = inrht*abs(vecx) +% 4) vecy < 1 yadtop = intop*abs(vecy) +% 5) vecy > 1 yadbot = intop*abs(vecy) +% 6) set outflag = 1 +% 7) clear inflag, inrht, intop +% guaranteed to be zero if no inner is present?? +% +% +% These all have effects in Mrotsboxa and Mrotshowa +% check inflag and if set +% +% 1) increase top of bbox by yadtop +% 2) decrease bot of bbox by yadbot +% 3) increase rht of bbox by xadrht +% 4) increase lft of bbox by xadlft +% 5) clear outflag, yadtop, yadbot, +% xadrht, xadlft +% +%/ + +/intop 0 def +/inrht 0 def +/inflag 0 def +/outflag 0 def +/xadrht 0 def +/xadlft 0 def +/yadtop 0 def +/yadbot 0 def + +% This saves the top right corner of the bounding box as a side effect +% This is to allow the adjustment of text placed with Mouter so that +% it misses the Minner text. It is assumed that the ang is 0 +% in the same way it is assumed that the text of Mouter is 0 or 90 +% +/Minner { % [(str)] gx gy sx sy ang Minner [(str)] gx gy sx sy ang + outflag % do a bit of tidying up if necessary + 1 + eq + { + /outflag 0 def + /intop 0 def + /inrht 0 def + } if + 5 index % [(str)] gx gy sx sy ang [(str)] + gsave + Mtmatrix setmatrix + Mvboxa pop % [(str)] gx gy sx sy ang xlow ylow xhigh yhigh + grestore + 3 -1 roll % [(str)] gx gy sx sy ang xlow xhigh yhigh ylow + pop % [(str)] gx gy sx sy ang xlow xhigh yhigh + dup % [(str)] gx gy sx sy ang xlow xhigh yhigh yhigh + intop % is intop smaller than yhigh ? + gt + { + /intop % update if it is + exch def + } + { pop } % pop if it is not + ifelse % [(str)] gx gy sx sy ang xlow xhigh + dup % [(str)] gx gy sx sy ang xlow xhigh xhigh + inrht % is inrht smaller than xhigh + gt + { + /inrht % update if it is + exch def + } + { pop } % pop if it is no + ifelse % [(str)] gx gy sx sy ang xlow + pop % [(str)] gx gy sx sy ang + /inflag % set the inflag + 1 def +} bind def + +% This takes two number off the stack and uses them as a vector in graphics +% coordinates which points in the direction in which the Mouter text is to move +% it calculates the bouding box adjustments yadtop yadbot xadrht and xadlft +% these are in Mboxout to adjust the bounding box to compensate. +/Mouter { % vecx vecy Mouter .. + /xadrht 0 def % reset everything + /xadlft 0 def + /yadtop 0 def + /yadbot 0 def + inflag % was there an inflag ? + 1 eq + { + dup % vecx vecy vecy + 0 lt + { + dup % vecx vecy vecy + intop % vecx vecy vecy intop + mul + neg % vecx vecy -vecy*intop + /yadtop % make into yadtop + exch def % vecx vecy + } if + dup % vecx vecy vecy + 0 gt + { + dup % vecx vecy vecy + intop % vecx vecy vecy intop + mul % vecx vecy vecy*intop + /yadbot % make into yadbot + exch def % vecx vecy + } + if + pop % vecx + dup % vecx vecx + 0 lt + { + dup % vecx vecx + inrht % vecx vecx inrht + mul + neg % vecx -vecx*inrht + /xadrht % make into xadrht + exch def % vecx + } if + dup % vecx vecx + 0 gt + { + dup % vecx vecx + inrht % vecx vecx inrht + mul % vecx vecx*inrht + /xadlft % make into xadlft + exch def + } if + pop % + /outflag 1 def % set outflag + } + { pop pop} % + ifelse + /inflag 0 def + /inrht 0 def + /intop 0 def +} bind def + +% +% This adjusts the bounding box to account for adjacent text +% This allows the two text strings to avoid each other +% current matrix is the text matrix +/Mboxout { % tlx tly thx thy Mboxout new_tlx new_tly new_thx new_thy + outflag % do nothing unless Minner was found + 1 + eq + { + 4 -1 + roll % tly thx thy tlx + xadlft + leadjust + add % tly thx thy tlx xadlft+lead + sub % tly thx thy tlx_new + 4 1 roll % tlx_new tly thx thy + 3 -1 + roll % tlx_new thx thy tly + yadbot % tlx_new thx thy tly yadbot + leadjust % tlx_new thx thy tly yadbot lead + add % tlx_new thx thy tly yadbot+lead + sub % tlx_new thx thy tly_new + 3 1 + roll % tlx_new tly_new thx thy + exch % tlx_new tly_new thy thx + xadrht % tlx_new tly_new thy thx xadrht + leadjust % tlx_new tly_new thy thx xadrht lead + add % tlx_new tly_new thy thx xadrht+lead + add % tlx_new tly_new thy thx_new + exch % tlx_new tly_new thx_new thy + yadtop % tlx_new tly_new thx_new thy yadtop + leadjust % tlx_new tly_new thx_new thy yadtop lead + add % tlx_new tly_new thx_new thy yadtop+lead + add % tlx_new tly_new thx_new thy_new + /outflag 0 def % reset everything to 0 + /xadlft 0 def + /yadbot 0 def + /xadrht 0 def + /yadtop 0 def + } if +} bind def + + +/leadjust { + (m) stringwidth pop + .5 mul +} bind def + + +% The offsets sx and sy refer to the graphics coordinate system +% thus they must be altered if a rotation has taken place. +% We must also change the bounding box computations for Minner +% +/Mrotcheck { % sx sy ang Mrotcheck new_sx new_sy ang + dup + 90 + eq + { +% +% Mouter only applies to strings which are either at 0 or 90 +% sort out the box adjust factors +% +% xadrht -> yadbot +% xadlft -> yadtop +% yadtop -> xadrht +% yadbot -> xadlft + yadbot + /yadbot + xadrht + def + /xadrht + yadtop + def + /yadtop + xadlft + def + /xadlft + exch + def + } + if + dup % sx sy ang ang + cos % sx sy ang Cos + 1 index % sx sy ang Cos ang + sin % sx sy ang Cos Sin + Checkaux % new_sx sx sy ang + dup % new_sx sx sy ang ang + cos % new_sx sx sy ang Cos + 1 index % new_sx sx sy ang Cos ang + sin neg % new_sx sx sy ang Cos -Sin + exch % new_sx sx sy ang -Sin Cos + Checkaux % new_sx new_sy sx sy ang + 3 1 roll % new_sx new_sy ang sx sy + pop pop % new_sx new_sy ang +} bind def + +% +% Checkaux is an auxilliary function for Mrotcheck it multiplies a +% row vector by a column vector +% +/Checkaux { % r1 r2 dumy c1 c2 Checkaux r1 r2 dumy r1*c1+r2*c2 + 4 index % r1 r2 dumy c1 c2 r1 + exch % r1 r2 dumy c1 r1 c2 + 4 index % r1 r2 dumy c1 r1 c2 r2 + mul % r1 r2 dumy c1 r1 c2*r2 + 3 1 roll % r1 r2 dumy c2*r2 c1 r1 + mul add % r1 r2 dumy c2*r2+c1*r1 + 4 1 roll % c2*r2+c1*r1 r1 r2 dumy +} bind def + +% +% Mboxrot converts the bounding box back from the rotated coordinate +% system to the Mgmatrix system to compensate for a rotation +% It has the opposite functionality of Mrotcheck +% This is not the most neatest or most efficient implementation but it works +% +/Mboxrot { % tlx thx tly thy Mboxrot new_tlx new_thx new_tly new_thy + Mrot + 90 eq + { +% old tlx thx tly thy +% new -thy -tly tlx thx +% + brotaux % tlx thx -thy -tly + 4 2 + roll % -thy -tly tlx thx + } + if + Mrot + 180 eq + { +% old tlx thx tly thy +% new -thx -tlx -thx -tly +% + 4 2 + roll % tly thy tlx thx + brotaux % tly thy -thx -tlx + 4 2 + roll % -thx -tlx tlx thy + brotaux % -thx -tlx -thy -tly + } + if + Mrot + 270 eq + { +% old tlx thx tly thy +% new tly thy -thx -tlx +% + 4 2 + roll % tly thy tlx thx + brotaux % tly thy -thx -tlx + } + if +} bind def + +% +% auxilliary function negate and reverse +/brotaux { % x y boxrotaux -y -x + neg + exch + neg +} bind def + +% +% Mabsproc takes a measurement in the default user units and converts +% it to the present units. This allows absolute thickness and dashing +% to work. It works by using a {0, x} vector and using the RMS of the result. +/Mabsproc { % abs thing Mabsproc + 0 + matrix defaultmatrix + dtransform idtransform + dup mul exch + dup mul + add sqrt +} bind def + +% +% Mabswid allows the linewidth to be specified in absolute coordinates +% It does this by recording the graphics transformation matrix at the +% begining of the plot. +% This will break if the scaling in the x and y directions is +% different. This is the case if Mnodistort is false +% +/Mabswid { %abswid Mabswid + Mabsproc + setlinewidth +} bind def + +% Mabsdash allows the dashing pattern to be specified in absolute coordinates +% It does this by recording the graphics transformation matrix at the +% begining of the plot. +% This will break if the scaling in the x and y directions is +% different. This is the case if Mnodistort is false +% +/Mabsdash { %[d1 d2 d3 .. ] off Mabsdash + exch % off [d1 d2 d3 ..] + [ % off [d1 d2 d3 ..] + exch % off [ [d1 d2 d3 ..] + { + Mabsproc + } + forall + ] % off [ fact*d1 fact*d2 fact*d3 .. ] + exch % [ nd1 nd2 nd3 .. ] off + setdash +} bind def + +%MBeginOrig start coordinates in user coordinates +/MBeginOrig { Momatrix concat} bind def + +%MEndOrig start coordinates in user coordinates +/MEndOrig { Mgmatrix setmatrix} bind def + +/sampledsound where +{ pop} +{ /sampledsound { % str rate nsamp bs proc bool nchan + exch + pop % str rate nsamp bs proc nchan + exch % str rate nsamp bs nchan proc + 5 1 roll % str proc rate nsamp bs nchan + mul + 4 idiv % str proc rate nsamp bs*nchan/4 + mul % str proc rate nsamp*bs*nchan/4 + 2 idiv % str proc rate nbytes + exch pop % str proc nbytes + exch % str nbytes proc + /Mtempproc exch def + { Mtempproc pop} + repeat + } bind def +} ifelse + +% +% now simple conversion of cmykcolor to rgbcolor +% subtract k and then take complements +/setcmykcolor where +{ pop} +{ /setcmykcolor { % c m y k + 4 1 + roll % k c m y + [ % k c m y [ + 4 1 + roll % k [ c m y + ] % k [ c m y ] + { + 1 index % k elem k + sub % k elem-k + 1 + sub neg % k 1-(elem-k) + dup + 0 + lt + { + pop + 0 + } + if + dup + 1 + gt + { + pop + 1 + } + if + exch % 1-(elem-k) k + } forall % r g b k + pop + setrgbcolor +} bind def +} ifelse + +/Mcharproc % max +{ + currentfile + (x) + readhexstring + pop % max val + 0 get + exch % val max + div % nval +} bind def + +/Mshadeproc % max ncols +{ + dup % max ncols ncols + 3 1 + roll % ncols max ncols + { % ncols max + dup % ncols max max + Mcharproc % ncols max val + 3 1 + roll % v1.. ncols max + } repeat + 1 eq + { + setgray + } + { + 3 eq + { + setrgbcolor + } + { + setcmykcolor + } ifelse + } ifelse +} bind def + +/Mrectproc % x0 x1 y0 y1 +{ + 3 index % x0 x1 y0 y1 x0 + 2 index % x0 x1 y0 y1 x0 y0 + moveto % x0 x1 y0 y1 + 2 index % x0 x1 y0 y1 x1 + 3 -1 + roll % x0 x1 y1 x1 y0 + lineto % x0 x1 y1 + dup % x0 x1 y1 y1 + 3 1 + roll % x0 y1 x1 y1 + lineto % x0 y1 + lineto + fill +} bind def + +/Mcolorimage % nx ny depth matrix proc bool ncols +{ + 7 1 + roll % ncols nx ny depth matrix proc bool + pop + pop + matrix + invertmatrix + concat % ncols nx ny depth + 2 exch exp % ncols nx ny 2^depth + 1 sub % ncols nx ny max + 3 1 roll % ncols max nx ny + 1 1 % ncols max nx ny 1 1 + 2 index % ncols max nx ny 1 1 ny + { % ncols max nx ny iy + 1 1 % ncols max nx ny iy 1 1 + 4 index % ncols max nx ny iy 1 1 nx + { % ncols max nx ny iy ix + dup % ncols max nx ny iy ix ix + 1 sub % ncols max nx ny iy ix x0 + exch % ncols max nx ny iy x0 x1 + 2 index % ncols max nx ny iy x0 x1 iy + dup % ncols max nx ny iy x0 x1 iy iy + 1 sub % ncols max nx ny iy x0 x1 iy y0 + exch % ncols max nx ny iy x0 x1 y0 y1 + 7 index % ncols max nx ny iy x0 x1 y0 y1 max + 9 index % ncols max nx ny iy x0 x1 y0 y1 max ncols + Mshadeproc % ncols max nx ny iy x0 x1 y0 y1 + Mrectproc % max nx ny iy + } for % x loop + pop % max nx ny + } for % y loop + pop pop pop pop +} bind def + +/Mimage % nx ny depth matrix proc +{ + pop + matrix + invertmatrix + concat % nx ny depth + 2 exch exp % nx ny 2^depth + 1 sub % nx ny max + 3 1 roll % max nx ny + 1 1 % max nx ny 1 1 + 2 index % max nx ny 1 1 ny + { % max nx ny iy + 1 1 % max nx ny iy 1 1 + 4 index % max nx ny iy 1 1 nx + { % max nx ny iy ix + dup % max nx ny iy ix ix + 1 sub % max nx ny iy ix x0 + exch % max nx ny iy x0 x1 + 2 index % max nx ny iy x0 x1 iy + dup % max nx ny iy x0 x1 iy iy + 1 sub % max nx ny iy x0 x1 iy y0 + exch % max nx ny iy x0 x1 y0 y1 + 7 index % max nx ny iy x0 x1 y0 y1 max + Mcharproc % max nx ny iy x0 x1 y0 y1 val + setgray % max nx ny iy x0 x1 y0 y1 + Mrectproc % max nx ny iy + } for % x loop + pop % max nx ny + } for % y loop + pop pop pop +} bind def + +/Ma /Mabswid load def +/a /arc load def +/c /curveto load def +/C /curveto load def +/d /setdash load def +/f /fill load def +/F /fill load def +/g /setgray load def +/gr /grestore load def +/gs /gsave load def +/k /stroke load def +/l /lineto load def +/L /lineto load def +/lw /setlinewidth load def +/m /moveto load def +/n /newpath load def +/p /gsave load def +/P /grestore load def +/r /setrgbcolor load def +/s /stroke load def +/w /setlinewidth load def +/beginmath /MBeginOrig load def +/endmath /MEndOrig load def + +end diff --git a/Master/texmf-dist/dvips/gothic/config.yfrak b/Master/texmf-dist/dvips/gothic/config.yfrak new file mode 100644 index 00000000000..142dbd2c727 --- /dev/null +++ b/Master/texmf-dist/dvips/gothic/config.yfrak @@ -0,0 +1 @@ +p +yfrak.map diff --git a/Master/texmf-dist/dvips/grotesq/config.ugq b/Master/texmf-dist/dvips/grotesq/config.ugq new file mode 100644 index 00000000000..8310ff1eb88 --- /dev/null +++ b/Master/texmf-dist/dvips/grotesq/config.ugq @@ -0,0 +1 @@ +p +ugq.map diff --git a/Master/texmf-dist/dvips/helvetic/config.uhv b/Master/texmf-dist/dvips/helvetic/config.uhv new file mode 100644 index 00000000000..c8b05e92905 --- /dev/null +++ b/Master/texmf-dist/dvips/helvetic/config.uhv @@ -0,0 +1 @@ +p +uhv.map diff --git a/Master/texmf-dist/dvips/hfbright/config.hfbright b/Master/texmf-dist/dvips/hfbright/config.hfbright new file mode 100644 index 00000000000..3085632aebf --- /dev/null +++ b/Master/texmf-dist/dvips/hfbright/config.hfbright @@ -0,0 +1 @@ +p +hfbright.map diff --git a/Master/texmf-dist/dvips/ibycus/config.iby b/Master/texmf-dist/dvips/ibycus/config.iby new file mode 100644 index 00000000000..1c4aa7e73dc --- /dev/null +++ b/Master/texmf-dist/dvips/ibycus/config.iby @@ -0,0 +1 @@ +p +iby.map diff --git a/Master/texmf-dist/dvips/multi/2up.pro b/Master/texmf-dist/dvips/multi/2up.pro new file mode 100644 index 00000000000..555d40e6456 --- /dev/null +++ b/Master/texmf-dist/dvips/multi/2up.pro @@ -0,0 +1,613 @@ +%!PS-Adobe-1.0 +%%Creator: Ross Cartlidge <rossc@extro.ucc.su.oz.au> +%%Title: Multiple pages on one page +%%CreationDate: Tue Apr 10 09:37:26 EST 1990 +%%Pages: 0 +%%DocumentFonts: +%%BoundingBox: 0 0 0 0 +%%EndComments +% +% Uncomment the next line if you wish to load multi into the "exitserver" +% state of the PostScript device +% serverdict begin 0 exitserver +% +% +% make each operator to overlay a procedure so a bind in +% a prolog will not stop the overlaying by "multi" +% + +[ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + % ones which needed special overloading + /showpage + /erasepage + /copypage + /restore + % ignore these + /letter + /legal + /a4 + /b5 + /lettersmall + /note +] +{ +% if exists check if operator else define {} + dup where + { + pop +% If operator then make into procedure + dup load type /operatortype eq + { + 1 array cvx dup + 0 + 3 index cvx % /n -> n + put % {}[0] -> n + bind + def + } + { + pop + } + ifelse + } + { + {} def + } + ifelse +} +forall + +% +% Initialise endmulti to execute an error +% +/endmulti +{ + count array astore /ostack exch def + 250 array execstack /estack exch def + 20 array dictstack /dstack exch def + $error /newerror true put + $error /errorname (No matching multi) cvn put + $error /command (endmulti) put + $error /ostack ostack put + $error /estack estack put + $error /dstack dstack put + stop +} +bind +def + +% +% Put multiple logical pages on one physical page +% until "endmulti" called +% +% landscape nrows ncols left_right up_down row_major dividers multi - +% landscape nrows ncols up_down row_major dividers multi - +% landscape nrows ncols row_major dividers multi - +% landscape nrows ncols dividers multi - +% landscape nrows ncols multi - +% +% Go into multi page representation +% +% landscape boolean:true - divide page in landscape orientation +% false- divide page in portrait orirntation +% nrows integer:number of logical pages down physical page +% ncols integer:number of logical pages across physical page +% left_right(*) boolean:true - rows fill left to right +% false- rows fill right to left +% up_down(*) boolean:true - columsn fill top to bottom +% false- columns fill bottom to top +% row_major(*) boolean:true - fill rowwise +% false- fill columnwise +% dividers(*) boolean:true - divide logical pages by lines +% false- don't divide logical pages +% +% NB: Optional parameters(*) default to true. +% +/multi +{ + currentdict + 64 dict begin + /initdict exch def % store initial dict for backward reference +% +% Initialise the Optional Parameters (right to left) +% + [ + /dividers + /row_major + /up_down + /left_right + ] + { + exch dup type /booleantype ne + { + exch % put non bool back + true def % default to true + } + { + def + } + ifelse + + } + forall + /cols exch def + /rows exch def + +% +% get size of current page +% + initgraphics clippath pathbbox + /Y exch def % Max Y + /X exch def % Max X + /y exch def % Min Y + /x exch def % Min X + /W X x add def % Width of Page + /H Y y add def % Height of page + +% +% functions to turn page# into row and column +% depending on whether rows or cols fill first +% + row_major + { + /tocol { cols mod } def + /torow { cols idiv } def + } + { + /tocol { rows idiv } def + /torow { rows mod } def + } + ifelse +% if landscape + { +% +% Note: x and y are reversed +% + /w Y y sub def % Width of imageable region + /h X x sub def % Height of imageable region + /ox y def % origin of physical page + /oy x def + /L % Map to landscape + -90 matrix rotate + 0 H matrix translate + matrix concatmatrix + def + } + { + /w X x sub def + /h Y y sub def + /ox x def + /oy y def + /L matrix def + } + ifelse +% +% Calculate origin fudge so that scaled margin = fudge +% This means that the clippath of the logical page +% will align with the physical clippath. +% (wf/W)x = xf where, +% wf = new width = w + 2xf, +% x = margin xf = scaled margin +% so xf = wx/(COLS.W-2x) + + /xf w x mul W cols mul 2 x mul sub div def + /yf h y mul H rows mul 2 y mul sub div def + /w w 2 xf mul add def + /h h 2 yf mul add def + +% +% CTM (multi) = C x T x M x L x I +% CTM (normal) = C x I +% CTM (normal) = CTM (multi) x (T x M x L x I)-1 x I +% M = (Scale rows/cols) x (Scale logical to physical) x +% (Translate to physical clip origin + fudge) +% T = (Convert logical page to spot and physical) +% L = (Convert to landscape) +% I = Initial Physical CTM +% C = Random transform on logical page + + /M + w W div cols div + h H div rows div + matrix scale + ox xf sub oy yf sub matrix translate % Move to origin + matrix concatmatrix + def + /I + matrix currentmatrix + def + /I_inv + I matrix invertmatrix + def + +% matrix T <current T> + /T + { + page# tocol + left_right not + { + cols 1 sub exch sub + } + if + W mul + page# torow + up_down + { + rows 1 sub exch sub + } + if + H mul + 3 -1 roll translate + } + def + +% +% Utility functions +% NB: *_t1 are temporary variables +% + +% matrix fromcanon <I-1 x T x M x L x I> + /From_t1 matrix def + /From_t2 matrix def + /From_t3 matrix def + /From_t4 matrix def + /fromcanon + { + I_inv + From_t1 T + M + L + I + From_t2 concatmatrix + From_t3 concatmatrix + From_t4 concatmatrix + 3 -1 roll concatmatrix + } + def + +% /n {} mkmulti - +% makes a new function called "n" in previous dict with:- +% {}[0] = /n +% {}[1] = currentdict +% currentdict.n = prevdict.n +% + /mkmulti + { + 1 index dup load def %define old val in current dict + 5 array cvx + dup 3 4 -1 roll put % A[3] = {} + dup 0 3 index put % A[0] = /n + dup 1 currentdict put % A[1] = currentdict + dup 2 /begin cvx put % A[2] = begin + dup 4 /exec cvx put % A[4] = exec + initdict 3 1 roll + put % define initdict.n to multi function + } + def + +% +% path_to_proc {} +% make proc represenation of current path +% + /path_to_proc + { + { + [ + /newpath cvx + { /moveto cvx} + { /lineto cvx} + { /curveto cvx} + { /closepath cvx } + pathforall + ] + cvx + exch pop + } + stopped + { + $error /errorname get /invalidaccess eq + { + cleartomark + $error /newerror false put + (%%Warning%% charpath in path - path nulled) = + cvx exec + } + { + stop + } + ifelse + } + if + } + def + /path_def + { + { currentpoint } stopped + { + $error /newerror false put + { newpath } + } + { + /newpath cvx 3 1 roll /moveto cvx 4 array astore cvx + } + ifelse + } + cvlit def + +% +% Draw lines round logical pages +% + /draw_dividers + { + initgraphics + L concat + M concat + 1 1 cols 1 sub + { + W mul + dup + 0 moveto + rows H mul lineto + } + for + 1 1 rows 1 sub + { + H mul + dup + 0 exch moveto + cols W mul exch lineto + } + for + stroke + } + def + +% +% for each graphics operator which affects absolute state +% + /M1 matrix def + /M3 matrix def + /M2 matrix def + [ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + ] + { + { +% Save paths + path_def path_to_proc + clippath { {} } path_to_proc + +% +% CTM <- CTM x Tocano (canon mode) +% + M1 currentmatrix + Tocanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + + load exec + +% Save paths + path_def path_to_proc + clippath { {} } path_to_proc + +% +% CTM <- CTM x Fromcanon (Non canon mode) +% + M1 currentmatrix + Fromcanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + end + } + mkmulti + } + forall + +% +% Define the operators which can't use the standard template +% + /showpage + { + /page# page# 1 add def + +% Update the transform matrices + page# npages eq + { + dividers + { + draw_dividers + } + if + load exec % the previous showpage + /page# 0 def + } + { + pop + } + ifelse + /Fromcanon Fromcanon fromcanon def + /Tocanon Fromcanon Tocanon invertmatrix def + end + initgraphics % the new initgraphics + } + mkmulti + + /copypage + { + pop + end + gsave + showpage + grestore + } + mkmulti + + /erasepage + { + pop + end + gsave + initclip + clippath + 1 setgray fill + grestore + } + mkmulti + [ + /letter + /legal + /a4 + /b5 + /lettersmall + /note + ] + { + { + pop end + (%%Warning%% Device change ignored) = + } + mkmulti + } + forall + +% +% Define restore separately as it affects the value of page#, etc +% + /restore + { + pop +% Push the values to restore after restore + mark exch % put mark under -save- + page# + Fromcanon aload pop + Tocanon aload pop + + counttomark -1 roll % get -save- to the top + restore + +% Restore popped values + Tocanon astore pop + Fromcanon astore pop + /page# exch def + pop % mark + +% Save paths + path_def path_to_proc + clippath { { } } path_to_proc + +% +% CTM <- CTM x Fromcanon (Non canon mode) +% + M1 currentmatrix + Fromcanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + end + } + mkmulti +% +% procedure to undo the effect of multi +% + /endmulti + { + pop % don't need /endmulti + [ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + % ones which needed special overloading + /showpage + /erasepage + /copypage + /restore + % ignore these + /letter + /legal + /a4 + /b5 + /lettersmall + /note + % + /endmulti + ] + { + initdict exch + dup load % get old value + put % restore old value + } + forall + page# 0 ne % if not at new page show uncomplete page + { + dividers + { + draw_dividers + } + if + showpage + } + if + end + } + mkmulti + +% +% Set up in multi(non canon) mode +% + /page# 0 def + /npages rows cols mul def + /Fromcanon matrix fromcanon def + /Tocanon Fromcanon matrix invertmatrix def + end + initgraphics +} +bind +def +%%%%%%%% +/end-hook { endmulti } def + +true 1 2 multi diff --git a/Master/texmf-dist/dvips/multi/4up.pro b/Master/texmf-dist/dvips/multi/4up.pro new file mode 100644 index 00000000000..31578b6f11c --- /dev/null +++ b/Master/texmf-dist/dvips/multi/4up.pro @@ -0,0 +1,613 @@ +%!PS-Adobe-1.0 +%%Creator: Ross Cartlidge <rossc@extro.ucc.su.oz.au> +%%Title: Multiple pages on one page +%%CreationDate: Tue Apr 10 09:37:26 EST 1990 +%%Pages: 0 +%%DocumentFonts: +%%BoundingBox: 0 0 0 0 +%%EndComments +% +% Uncomment the next line if you wish to load multi into the "exitserver" +% state of the PostScript device +% serverdict begin 0 exitserver +% +% +% make each operator to overlay a procedure so a bind in +% a prolog will not stop the overlaying by "multi" +% + +[ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + % ones which needed special overloading + /showpage + /erasepage + /copypage + /restore + % ignore these + /letter + /legal + /a4 + /b5 + /lettersmall + /note +] +{ +% if exists check if operator else define {} + dup where + { + pop +% If operator then make into procedure + dup load type /operatortype eq + { + 1 array cvx dup + 0 + 3 index cvx % /n -> n + put % {}[0] -> n + bind + def + } + { + pop + } + ifelse + } + { + {} def + } + ifelse +} +forall + +% +% Initialise endmulti to execute an error +% +/endmulti +{ + count array astore /ostack exch def + 250 array execstack /estack exch def + 20 array dictstack /dstack exch def + $error /newerror true put + $error /errorname (No matching multi) cvn put + $error /command (endmulti) put + $error /ostack ostack put + $error /estack estack put + $error /dstack dstack put + stop +} +bind +def + +% +% Put multiple logical pages on one physical page +% until "endmulti" called +% +% landscape nrows ncols left_right up_down row_major dividers multi - +% landscape nrows ncols up_down row_major dividers multi - +% landscape nrows ncols row_major dividers multi - +% landscape nrows ncols dividers multi - +% landscape nrows ncols multi - +% +% Go into multi page representation +% +% landscape boolean:true - divide page in landscape orientation +% false- divide page in portrait orirntation +% nrows integer:number of logical pages down physical page +% ncols integer:number of logical pages across physical page +% left_right(*) boolean:true - rows fill left to right +% false- rows fill right to left +% up_down(*) boolean:true - columsn fill top to bottom +% false- columns fill bottom to top +% row_major(*) boolean:true - fill rowwise +% false- fill columnwise +% dividers(*) boolean:true - divide logical pages by lines +% false- don't divide logical pages +% +% NB: Optional parameters(*) default to true. +% +/multi +{ + currentdict + 64 dict begin + /initdict exch def % store initial dict for backward reference +% +% Initialise the Optional Parameters (right to left) +% + [ + /dividers + /row_major + /up_down + /left_right + ] + { + exch dup type /booleantype ne + { + exch % put non bool back + true def % default to true + } + { + def + } + ifelse + + } + forall + /cols exch def + /rows exch def + +% +% get size of current page +% + initgraphics clippath pathbbox + /Y exch def % Max Y + /X exch def % Max X + /y exch def % Min Y + /x exch def % Min X + /W X x add def % Width of Page + /H Y y add def % Height of page + +% +% functions to turn page# into row and column +% depending on whether rows or cols fill first +% + row_major + { + /tocol { cols mod } def + /torow { cols idiv } def + } + { + /tocol { rows idiv } def + /torow { rows mod } def + } + ifelse +% if landscape + { +% +% Note: x and y are reversed +% + /w Y y sub def % Width of imageable region + /h X x sub def % Height of imageable region + /ox y def % origin of physical page + /oy x def + /L % Map to landscape + -90 matrix rotate + 0 H matrix translate + matrix concatmatrix + def + } + { + /w X x sub def + /h Y y sub def + /ox x def + /oy y def + /L matrix def + } + ifelse +% +% Calculate origin fudge so that scaled margin = fudge +% This means that the clippath of the logical page +% will align with the physical clippath. +% (wf/W)x = xf where, +% wf = new width = w + 2xf, +% x = margin xf = scaled margin +% so xf = wx/(COLS.W-2x) + + /xf w x mul W cols mul 2 x mul sub div def + /yf h y mul H rows mul 2 y mul sub div def + /w w 2 xf mul add def + /h h 2 yf mul add def + +% +% CTM (multi) = C x T x M x L x I +% CTM (normal) = C x I +% CTM (normal) = CTM (multi) x (T x M x L x I)-1 x I +% M = (Scale rows/cols) x (Scale logical to physical) x +% (Translate to physical clip origin + fudge) +% T = (Convert logical page to spot and physical) +% L = (Convert to landscape) +% I = Initial Physical CTM +% C = Random transform on logical page + + /M + w W div cols div + h H div rows div + matrix scale + ox xf sub oy yf sub matrix translate % Move to origin + matrix concatmatrix + def + /I + matrix currentmatrix + def + /I_inv + I matrix invertmatrix + def + +% matrix T <current T> + /T + { + page# tocol + left_right not + { + cols 1 sub exch sub + } + if + W mul + page# torow + up_down + { + rows 1 sub exch sub + } + if + H mul + 3 -1 roll translate + } + def + +% +% Utility functions +% NB: *_t1 are temporary variables +% + +% matrix fromcanon <I-1 x T x M x L x I> + /From_t1 matrix def + /From_t2 matrix def + /From_t3 matrix def + /From_t4 matrix def + /fromcanon + { + I_inv + From_t1 T + M + L + I + From_t2 concatmatrix + From_t3 concatmatrix + From_t4 concatmatrix + 3 -1 roll concatmatrix + } + def + +% /n {} mkmulti - +% makes a new function called "n" in previous dict with:- +% {}[0] = /n +% {}[1] = currentdict +% currentdict.n = prevdict.n +% + /mkmulti + { + 1 index dup load def %define old val in current dict + 5 array cvx + dup 3 4 -1 roll put % A[3] = {} + dup 0 3 index put % A[0] = /n + dup 1 currentdict put % A[1] = currentdict + dup 2 /begin cvx put % A[2] = begin + dup 4 /exec cvx put % A[4] = exec + initdict 3 1 roll + put % define initdict.n to multi function + } + def + +% +% path_to_proc {} +% make proc represenation of current path +% + /path_to_proc + { + { + [ + /newpath cvx + { /moveto cvx} + { /lineto cvx} + { /curveto cvx} + { /closepath cvx } + pathforall + ] + cvx + exch pop + } + stopped + { + $error /errorname get /invalidaccess eq + { + cleartomark + $error /newerror false put + (%%Warning%% charpath in path - path nulled) = + cvx exec + } + { + stop + } + ifelse + } + if + } + def + /path_def + { + { currentpoint } stopped + { + $error /newerror false put + { newpath } + } + { + /newpath cvx 3 1 roll /moveto cvx 4 array astore cvx + } + ifelse + } + cvlit def + +% +% Draw lines round logical pages +% + /draw_dividers + { + initgraphics + L concat + M concat + 1 1 cols 1 sub + { + W mul + dup + 0 moveto + rows H mul lineto + } + for + 1 1 rows 1 sub + { + H mul + dup + 0 exch moveto + cols W mul exch lineto + } + for + stroke + } + def + +% +% for each graphics operator which affects absolute state +% + /M1 matrix def + /M3 matrix def + /M2 matrix def + [ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + ] + { + { +% Save paths + path_def path_to_proc + clippath { {} } path_to_proc + +% +% CTM <- CTM x Tocano (canon mode) +% + M1 currentmatrix + Tocanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + + load exec + +% Save paths + path_def path_to_proc + clippath { {} } path_to_proc + +% +% CTM <- CTM x Fromcanon (Non canon mode) +% + M1 currentmatrix + Fromcanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + end + } + mkmulti + } + forall + +% +% Define the operators which can't use the standard template +% + /showpage + { + /page# page# 1 add def + +% Update the transform matrices + page# npages eq + { + dividers + { + draw_dividers + } + if + load exec % the previous showpage + /page# 0 def + } + { + pop + } + ifelse + /Fromcanon Fromcanon fromcanon def + /Tocanon Fromcanon Tocanon invertmatrix def + end + initgraphics % the new initgraphics + } + mkmulti + + /copypage + { + pop + end + gsave + showpage + grestore + } + mkmulti + + /erasepage + { + pop + end + gsave + initclip + clippath + 1 setgray fill + grestore + } + mkmulti + [ + /letter + /legal + /a4 + /b5 + /lettersmall + /note + ] + { + { + pop end + (%%Warning%% Device change ignored) = + } + mkmulti + } + forall + +% +% Define restore separately as it affects the value of page#, etc +% + /restore + { + pop +% Push the values to restore after restore + mark exch % put mark under -save- + page# + Fromcanon aload pop + Tocanon aload pop + + counttomark -1 roll % get -save- to the top + restore + +% Restore popped values + Tocanon astore pop + Fromcanon astore pop + /page# exch def + pop % mark + +% Save paths + path_def path_to_proc + clippath { { } } path_to_proc + +% +% CTM <- CTM x Fromcanon (Non canon mode) +% + M1 currentmatrix + Fromcanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + end + } + mkmulti +% +% procedure to undo the effect of multi +% + /endmulti + { + pop % don't need /endmulti + [ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + % ones which needed special overloading + /showpage + /erasepage + /copypage + /restore + % ignore these + /letter + /legal + /a4 + /b5 + /lettersmall + /note + % + /endmulti + ] + { + initdict exch + dup load % get old value + put % restore old value + } + forall + page# 0 ne % if not at new page show uncomplete page + { + dividers + { + draw_dividers + } + if + showpage + } + if + end + } + mkmulti + +% +% Set up in multi(non canon) mode +% + /page# 0 def + /npages rows cols mul def + /Fromcanon matrix fromcanon def + /Tocanon Fromcanon matrix invertmatrix def + end + initgraphics +} +bind +def +%%%%%%%% +/end-hook { endmulti } def + +false 2 2 multi
\ No newline at end of file diff --git a/Master/texmf-dist/dvips/multi/multi.pro b/Master/texmf-dist/dvips/multi/multi.pro new file mode 100644 index 00000000000..af469ed011e --- /dev/null +++ b/Master/texmf-dist/dvips/multi/multi.pro @@ -0,0 +1,609 @@ +%!PS-Adobe-1.0 +%%Creator: Ross Cartlidge <rossc@extro.ucc.su.oz.au> +%%Title: Multiple pages on one page +%%CreationDate: Tue Apr 10 09:37:26 EST 1990 +%%Pages: 0 +%%DocumentFonts: +%%BoundingBox: 0 0 0 0 +%%EndComments +% +% Uncomment the next line if you wish to load multi into the "exitserver" +% state of the PostScript device +% serverdict begin 0 exitserver +% +% +% make each operator to overlay a procedure so a bind in +% a prolog will not stop the overlaying by "multi" +% + +[ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + % ones which needed special overloading + /showpage + /erasepage + /copypage + /restore + % ignore these + /letter + /legal + /a4 + /b5 + /lettersmall + /note +] +{ +% if exists check if operator else define {} + dup where + { + pop +% If operator then make into procedure + dup load type /operatortype eq + { + 1 array cvx dup + 0 + 3 index cvx % /n -> n + put % {}[0] -> n + bind + def + } + { + pop + } + ifelse + } + { + {} def + } + ifelse +} +forall + +% +% Initialise endmulti to execute an error +% +/endmulti +{ + count array astore /ostack exch def + 250 array execstack /estack exch def + 20 array dictstack /dstack exch def + $error /newerror true put + $error /errorname (No matching multi) cvn put + $error /command (endmulti) put + $error /ostack ostack put + $error /estack estack put + $error /dstack dstack put + stop +} +bind +def + +% +% Put multiple logical pages on one physical page +% until "endmulti" called +% +% landscape nrows ncols left_right up_down row_major dividers multi - +% landscape nrows ncols up_down row_major dividers multi - +% landscape nrows ncols row_major dividers multi - +% landscape nrows ncols dividers multi - +% landscape nrows ncols multi - +% +% Go into multi page representation +% +% landscape boolean:true - divide page in landscape orientation +% false- divide page in portrait orirntation +% nrows integer:number of logical pages down physical page +% ncols integer:number of logical pages across physical page +% left_right(*) boolean:true - rows fill left to right +% false- rows fill right to left +% up_down(*) boolean:true - columsn fill top to bottom +% false- columns fill bottom to top +% row_major(*) boolean:true - fill rowwise +% false- fill columnwise +% dividers(*) boolean:true - divide logical pages by lines +% false- don't divide logical pages +% +% NB: Optional parameters(*) default to true. +% +/multi +{ + currentdict + 64 dict begin + /initdict exch def % store initial dict for backward reference +% +% Initialise the Optional Parameters (right to left) +% + [ + /dividers + /row_major + /up_down + /left_right + ] + { + exch dup type /booleantype ne + { + exch % put non bool back + true def % default to true + } + { + def + } + ifelse + + } + forall + /cols exch def + /rows exch def + +% +% get size of current page +% + initgraphics clippath pathbbox + /Y exch def % Max Y + /X exch def % Max X + /y exch def % Min Y + /x exch def % Min X + /W X x add def % Width of Page + /H Y y add def % Height of page + +% +% functions to turn page# into row and column +% depending on whether rows or cols fill first +% + row_major + { + /tocol { cols mod } def + /torow { cols idiv } def + } + { + /tocol { rows idiv } def + /torow { rows mod } def + } + ifelse +% if landscape + { +% +% Note: x and y are reversed +% + /w Y y sub def % Width of imageable region + /h X x sub def % Height of imageable region + /ox y def % origin of physical page + /oy x def + /L % Map to landscape + -90 matrix rotate + 0 H matrix translate + matrix concatmatrix + def + } + { + /w X x sub def + /h Y y sub def + /ox x def + /oy y def + /L matrix def + } + ifelse +% +% Calculate origin fudge so that scaled margin = fudge +% This means that the clippath of the logical page +% will align with the physical clippath. +% (wf/W)x = xf where, +% wf = new width = w + 2xf, +% x = margin xf = scaled margin +% so xf = wx/(COLS.W-2x) + + /xf w x mul W cols mul 2 x mul sub div def + /yf h y mul H rows mul 2 y mul sub div def + /w w 2 xf mul add def + /h h 2 yf mul add def + +% +% CTM (multi) = C x T x M x L x I +% CTM (normal) = C x I +% CTM (normal) = CTM (multi) x (T x M x L x I)-1 x I +% M = (Scale rows/cols) x (Scale logical to physical) x +% (Translate to physical clip origin + fudge) +% T = (Convert logical page to spot and physical) +% L = (Convert to landscape) +% I = Initial Physical CTM +% C = Random transform on logical page + + /M + w W div cols div + h H div rows div + matrix scale + ox xf sub oy yf sub matrix translate % Move to origin + matrix concatmatrix + def + /I + matrix currentmatrix + def + /I_inv + I matrix invertmatrix + def + +% matrix T <current T> + /T + { + page# tocol + left_right not + { + cols 1 sub exch sub + } + if + W mul + page# torow + up_down + { + rows 1 sub exch sub + } + if + H mul + 3 -1 roll translate + } + def + +% +% Utility functions +% NB: *_t1 are temporary variables +% + +% matrix fromcanon <I-1 x T x M x L x I> + /From_t1 matrix def + /From_t2 matrix def + /From_t3 matrix def + /From_t4 matrix def + /fromcanon + { + I_inv + From_t1 T + M + L + I + From_t2 concatmatrix + From_t3 concatmatrix + From_t4 concatmatrix + 3 -1 roll concatmatrix + } + def + +% /n {} mkmulti - +% makes a new function called "n" in previous dict with:- +% {}[0] = /n +% {}[1] = currentdict +% currentdict.n = prevdict.n +% + /mkmulti + { + 1 index dup load def %define old val in current dict + 5 array cvx + dup 3 4 -1 roll put % A[3] = {} + dup 0 3 index put % A[0] = /n + dup 1 currentdict put % A[1] = currentdict + dup 2 /begin cvx put % A[2] = begin + dup 4 /exec cvx put % A[4] = exec + initdict 3 1 roll + put % define initdict.n to multi function + } + def + +% +% path_to_proc {} +% make proc represenation of current path +% + /path_to_proc + { + { + [ + /newpath cvx + { /moveto cvx} + { /lineto cvx} + { /curveto cvx} + { /closepath cvx } + pathforall + ] + cvx + exch pop + } + stopped + { + $error /errorname get /invalidaccess eq + { + cleartomark + $error /newerror false put + (%%Warning%% charpath in path - path nulled) = + cvx exec + } + { + stop + } + ifelse + } + if + } + def + /path_def + { + { currentpoint } stopped + { + $error /newerror false put + { newpath } + } + { + /newpath cvx 3 1 roll /moveto cvx 4 array astore cvx + } + ifelse + } + cvlit def + +% +% Draw lines round logical pages +% + /draw_dividers + { + initgraphics + L concat + M concat + 1 1 cols 1 sub + { + W mul + dup + 0 moveto + rows H mul lineto + } + for + 1 1 rows 1 sub + { + H mul + dup + 0 exch moveto + cols W mul exch lineto + } + for + stroke + } + def + +% +% for each graphics operator which affects absolute state +% + /M1 matrix def + /M3 matrix def + /M2 matrix def + [ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + ] + { + { +% Save paths + path_def path_to_proc + clippath { {} } path_to_proc + +% +% CTM <- CTM x Tocano (canon mode) +% + M1 currentmatrix + Tocanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + + load exec + +% Save paths + path_def path_to_proc + clippath { {} } path_to_proc + +% +% CTM <- CTM x Fromcanon (Non canon mode) +% + M1 currentmatrix + Fromcanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + end + } + mkmulti + } + forall + +% +% Define the operators which can't use the standard template +% + /showpage + { + /page# page# 1 add def + +% Update the transform matrices + page# npages eq + { + dividers + { + draw_dividers + } + if + load exec % the previous showpage + /page# 0 def + } + { + pop + } + ifelse + /Fromcanon Fromcanon fromcanon def + /Tocanon Fromcanon Tocanon invertmatrix def + end + initgraphics % the new initgraphics + } + mkmulti + + /copypage + { + pop + end + gsave + showpage + grestore + } + mkmulti + + /erasepage + { + pop + end + gsave + initclip + clippath + 1 setgray fill + grestore + } + mkmulti + [ + /letter + /legal + /a4 + /b5 + /lettersmall + /note + ] + { + { + pop end + (%%Warning%% Device change ignored) = + } + mkmulti + } + forall + +% +% Define restore separately as it affects the value of page#, etc +% + /restore + { + pop +% Push the values to restore after restore + mark exch % put mark under -save- + page# + Fromcanon aload pop + Tocanon aload pop + + counttomark -1 roll % get -save- to the top + restore + +% Restore popped values + Tocanon astore pop + Fromcanon astore pop + /page# exch def + pop % mark + +% Save paths + path_def path_to_proc + clippath { { } } path_to_proc + +% +% CTM <- CTM x Fromcanon (Non canon mode) +% + M1 currentmatrix + Fromcanon + M2 + concatmatrix + setmatrix + +% Restore paths + initclip exec clip + exec + end + } + mkmulti +% +% procedure to undo the effect of multi +% + /endmulti + { + pop % don't need /endmulti + [ + /gsave + /grestore + /grestoreall + /initgraphics + /initmatrix + /currentmatrix + /setmatrix + % Path construction operators + /initclip + % Virtual memory operators + /save + % ones which needed special overloading + /showpage + /erasepage + /copypage + /restore + % ignore these + /letter + /legal + /a4 + /b5 + /lettersmall + /note + % + /endmulti + ] + { + initdict exch + dup load % get old value + put % restore old value + } + forall + page# 0 ne % if not at new page show uncomplete page + { + dividers + { + draw_dividers + } + if + showpage + } + if + end + } + mkmulti + +% +% Set up in multi(non canon) mode +% + /page# 0 def + /npages rows cols mul def + /Fromcanon matrix fromcanon def + /Tocanon Fromcanon matrix invertmatrix def + end + initgraphics +} +bind +def diff --git a/Master/texmf-dist/dvips/musixps/psslurs.pro b/Master/texmf-dist/dvips/musixps/psslurs.pro new file mode 100644 index 00000000000..1d560a0f969 --- /dev/null +++ b/Master/texmf-dist/dvips/musixps/psslurs.pro @@ -0,0 +1,282 @@ +% This file can be used instead of psslurs.pro, it is only commented +% and indented. +% +% VERSION: 1.0 +% +% WARNING! This is a heavy magic! If you want something more understandable, +% you will have to write it yourself (if it is possible in a stack-oriented +% language that PostScript is). There are some constants you can +% change and see what happens, but I think the slurs should be almost +% always satisfiable. When not, let me know at: +% standa@hiero.cz +% Also any bug reports and comments are welcomed. +% +% Stanislav Kneifl. + +/slur@Dict 200 dict def + +% this dictionary is for \setslurtext, overriding some dvips's definitions +/temp@xx@dict 4 dict def temp@xx@dict begin + /a { moveto ax1 ay1 rmoveto } def + /V {gsave newpath transform round exch round exch itransform + exch ax1 add exch ay1 add moveto rulex 0 rlineto 0 ruley neg + rlineto rulex neg 0 rlineto fill grestore} def +end + +TeXDict begin +% get dimen from TeX's string ("125pt" -> 125 PS points) +/GD { dup length 2 sub 0 exch getinterval cvr 1.045 mul} def +% get dimen adjusted to Resolution +/GDAR { dup length 2 sub 0 exch getinterval cvr 4 AR mul 1.045 mul} def +% Adjust to Resolution +/AR { Resolution mul 300 div } def +% the distances in dvips's PostScript are resolution dependant! +end + +slur@Dict begin +/CP /currentpoint load def +/ED { exch def } bind def +/AR { Resolution mul 300 div } def % stands for Adjust to Resolution, +/VS { dup /ay1 exch ay1 exch linew mul 4 mul add def /ay2 exch ay2 exch linew mul 4 mul add def } def +/y { 3 2 roll ax1 ay1 rmoveto show moveto } def +/M { mul } def +/A { add } def +/SB { sub } def +/P { pop } def +/DP { dup } def +/R { roll } def + +/drawseg { 0 0 moveto + ax1 ay1 + ax1 0.6 mul ax2 0.4 mul add ay1 0.6 mul ay2 0.4 mul add + ax1 ax2 add 2 div ay1 ay2 add 2 div curveto + ax1 0.4 mul ax2 0.6 mul add ay1 0.4 mul ay2 0.6 mul add + ax2 ay2 + x2 0 curveto } def + +/DS { + AR /maxe ED + /ifadjust ED + /ifdash ED + AR /m ED % max height of the slur + /e ED % "angularity" of the slur; 0.1 = very angular, + % 0.3 = very round + /aa exch neg def % what to multiply the height with + % AFTER the max height checking + /y2 ED % y coordinate of the end of the slur + /x2 ED % x coordinate of the end of the slur + /y1 ED % y coordinate of the beginning of the slur + /x1 ED % x coordinate of the beginning of the slur + /yr2 ED + /yr1 ED + /internote ED + /x2 x2 x1 sub def % x2=x2-x1 + /y2 y2 y1 sub def % y2=y2-y1 + /sx y2 x2 div def + /b x2 300 mul Resolution div abs sqrt AR 2 mul def % b=2*sqrt(x2) + b 3 AR lt {/b 3 AR def} if % b=max(b,3) + b m gt {/b m def} if % b=min(b,m) + /aa b aa mul def % aa=aa*b + /s 90 x2 y2 atan sub def % s=90-arctan(x2,y2) slope of the slur + /aa aa s cos div def % aa=aa/cos(s) height of the slur + /x2 s neg cos x2 mul s neg sin y2 mul sub def % x2 = x2*cos(-s) - y2*sin(-s) + % is the length of the slur + e x2 mul maxe gt { /e maxe x2 div def } if + /beta e x2 mul aa neg atan def + beta 90 gt {/beta 180 beta sub def} if + /ax1 e x2 mul def % control points + /ay1 aa def + /ax2 1 e sub x2 mul def + /ay2 aa def + +% check if the starting and endin vector stay in desired quadrants +% => beta < abs(s) + beta s abs lt { + /b aa abs s abs 2 add sin mul s abs 2 add cos div def + s aa mul 0 lt { + s cos 0.75 lt { /ax1 ax1 b 1 s cos sub mul 0.5 mul sub def /ay1 ay1 s cos mul 0.8 mul def } if +% ^^^^ ^^^ ^^^ +% (values to play with) + /ax2 x2 b sub def + } + { + /ax1 b def + s cos 0.75 lt { /ax2 b 1 s cos sub mul 0.5 mul ax2 add def /ay2 ay2 s cos mul 0.8 mul def } if +% ^^^^ ^^^ ^^^ + } ifelse + } if + +% align the slur to the staff lines + + gsave + x1 y1 translate + s rotate +% [1 0 sx 1 0 0] concat + drawseg + gsave + initmatrix + flattenpath + pathbbox + exch pop + sub + /slh ED % in slh we have the height of the whole slur + pop + grestore + + /yr s aa mul 0 ge { yr1 } { yr2 } ifelse internote div def + /slh yr slh internote div aa 0 gt { add } { sub } ifelse 2 div def +% check if the slur gets too close to staff line + /shift 0 def + slh 4.45 lt slh -0.5 gt and { + /slh slh dup truncate sub def + slh 0 lt { /slh 1 slh add def } if + aa 0 gt { /slh 1 slh sub def } if + + % slh now contains the position ot the slur top/bottom in the space + % between the nearest staff lines (from <0,1>), regardless direction + + % slur is too low: + slh 0.45 lt { /shift 0.45 slh sub def } if + % slur is too high, but we can be shift it down: + slh 0.7 gt slh 0.85 lt and { /shift 0.7 slh sub def } if + % slur is too high, must be shifted up: + slh 0.85 ge { /shift 1.45 slh sub def } if + } if + + aa 0 gt { /shift shift neg def } if + + ifadjust 0 eq { + /shift 0 def + } if + + +% and finally draw it... + + grestore + gsave + /linew internote 0.06 mul AR def + linew 4 mul setlinewidth + 1 setlinecap + 0 setlinejoin + ifdash 1 eq + { [internote 8 mul AR internote 5 mul AR] 0 setdash } if + x1 y1 shift neg 2 mul internote mul 4 AR mul add translate + s rotate +% [1 sx 0 1 0 0] concat + +% uncomment this to see the control points +% 5 AR setlinewidth ax1 ay1 moveto 0.1 0 rlineto stroke +% ax2 ay2 moveto 0.1 0 rlineto stroke linew setlinewidth + + drawseg + 1 VS + drawseg + -2 VS + drawseg + x2 20 AR gt { + 3 VS + drawseg + } if + x2 50 AR gt { + -4 VS + drawseg + } if + x2 80 AR gt { + 5 VS + drawseg + } if + stroke + + grestore + + % now some \slurtext code... + + /x1 ax1 ax2 add 2 div def % middle of the slur + /y1 ay1 ay2 add 2 div def + x1 s cos mul y1 s sin mul add neg + y1 s cos mul x1 s sin mul sub + aa 0 lt {1} {0} ifelse + end + + % this is a hack to place the slurtext in the middle of the slur. + % From unknown reasons simple 'ax1 ay1 translate' did not work, + % so we have to overlay some definitions with our own, namely + % 'a', which is originally 'moveto' and 'V' for drawing rules. + % maybe there are some other operations that should be redefined, + % but for almost all cases this will be sufficient. If you find + % anything that won't be typeset at the correct position, let me know... + + temp@xx@dict begin + /dir exch def + /ay1 exch def + /ax1 exch def +} def + +% crescendos +/DC { + /y2 ED + /x2 ED + /y1 ED + /x1 ED + gsave + 1 AR ceiling setlinewidth % line thickness: this results + 1 setlinecap % to exactly 2 pixels in 300 dpi + 1 setlinejoin + x2 y2 10 AR add moveto % the 10's specify wideness of the + x1 y1 lineto % open end of the crescendo, + x2 y2 10 AR sub lineto % similarly the 11's below + stroke + grestore +} def + +% half crescendos +/DHC { + /y2 ED + /x2 ED + /y1 ED + /x1 ED + gsave + 1 AR ceiling setlinewidth + 1 setlinecap + 1 setlinejoin + x2 y2 11 AR add moveto + x1 y1 4 AR add lineto stroke + x1 y1 4 AR sub moveto + x2 y2 11 AR sub lineto + stroke + grestore +} def + +% differenced line + +/DLN { + gsave + GDAR ceiling setlinewidth + GDAR exch GDAR neg rlineto + stroke + grestore +} def + +% sloped line + +/DSLN { + gsave + GDAR ceiling setlinewidth + GDAR exch 1.125 mul neg rotate 0 rlineto + stroke + grestore +} def + +% free line (init & terminate) + +/DFLN { + gsave + GDAR ceiling setlinewidth + CP moveto + lineto + stroke + grestore +} def + +end + diff --git a/Master/texmf-dist/dvips/musixtex/config.musixtex b/Master/texmf-dist/dvips/musixtex/config.musixtex new file mode 100644 index 00000000000..77ce78946a8 --- /dev/null +++ b/Master/texmf-dist/dvips/musixtex/config.musixtex @@ -0,0 +1 @@ +p+ musixtex.map diff --git a/Master/texmf-dist/dvips/ncntrsbk/config.unc b/Master/texmf-dist/dvips/ncntrsbk/config.unc new file mode 100644 index 00000000000..fbd8979d54b --- /dev/null +++ b/Master/texmf-dist/dvips/ncntrsbk/config.unc @@ -0,0 +1 @@ +p +unc.map diff --git a/Master/texmf-dist/dvips/norasi/config.norasi b/Master/texmf-dist/dvips/norasi/config.norasi new file mode 100644 index 00000000000..3ecae74d073 --- /dev/null +++ b/Master/texmf-dist/dvips/norasi/config.norasi @@ -0,0 +1 @@ +p +norasi.map diff --git a/Master/texmf-dist/dvips/omega/config.omega b/Master/texmf-dist/dvips/omega/config.omega new file mode 100644 index 00000000000..d9034cfcad1 --- /dev/null +++ b/Master/texmf-dist/dvips/omega/config.omega @@ -0,0 +1 @@ +p +omega.map diff --git a/Master/texmf-dist/dvips/omega/omega.cfg b/Master/texmf-dist/dvips/omega/omega.cfg new file mode 100644 index 00000000000..d9034cfcad1 --- /dev/null +++ b/Master/texmf-dist/dvips/omega/omega.cfg @@ -0,0 +1 @@ +p +omega.map diff --git a/Master/texmf-dist/dvips/ot2cyr/wncyrps.vec b/Master/texmf-dist/dvips/ot2cyr/wncyrps.vec new file mode 100644 index 00000000000..7e8fdb99e45 --- /dev/null +++ b/Master/texmf-dist/dvips/ot2cyr/wncyrps.vec @@ -0,0 +1,126 @@ +000 Nj +001 Elj +002 Dsche +003 E +004 I +005 Ye +006 Djsche +007 Tjsche +008 nj +009 elj +010 dsche +011 e +012 i +013 ye +014 djsche +015 tjsche +016 Ju +017 Schiwete +018 Ischedipthong +019 Jehstdieresis +020 Jschiza +021 Fita +022 Zelo +023 Ja +024 ju +025 schiwete +025 schiwetebulg +026 ischedipthong +027 jehstdieresis +028 jschiza +029 fita +030 zelo +031 ja +032 dieresis +033 exclam +034 quotedblright +035 Jat +037 percent +038 acute +039 quoteright +040 parenleft +041 parenright +042 asterisk +043 jat +044 comma +045 hyphen +046 period +047 slash +048 zero +049 one +050 two +051 three +052 four +053 five +054 six +055 seven +056 eight +057 nine +058 colon +059 semicolon +061 dotlessi +062 guillemotleft +062 guillemotright +063 question +065 As +066 Buki +067 Zui +068 Dobro +069 Jehst +070 Fert +071 Glagol +072 Chherr +073 Ische +074 Je +075 Kako +076 Ljudi +077 Muislete +078 Nasche +079 On +080 Pakoy +081 Tscherw +082 Rzui +083 Ssiowo +084 Twerdo +085 U +086 Wjedi +087 Schtscha +088 Scha +089 Jerui +090 Semlja +092 quotedblleft +094 Jher +095 Jerr +096 quoteleft +097 as +098 buki +099 zui +100 dobro +101 jehst +102 fert +103 glagol +104 chherr +105 ische +106 je +107 kako +108 ljudi +109 muislette +110 nasch +111 on +112 pakoy +113 tscherw +114 rzui +115 ssiowo +116 twerdo +117 u +118 wjedi +119 schtscha +120 scha +121 jerui +122 semlja +123 endash +124 emdash +125 nosign +126 jher +127 jerr + diff --git a/Master/texmf-dist/dvips/palatino/config.upl b/Master/texmf-dist/dvips/palatino/config.upl new file mode 100644 index 00000000000..5790ba20e03 --- /dev/null +++ b/Master/texmf-dist/dvips/palatino/config.upl @@ -0,0 +1 @@ +p +upl.map diff --git a/Master/texmf-dist/dvips/pl/config.pl b/Master/texmf-dist/dvips/pl/config.pl new file mode 100644 index 00000000000..50e8181263e --- /dev/null +++ b/Master/texmf-dist/dvips/pl/config.pl @@ -0,0 +1,2 @@ +p +pltext.map +p +plother.map diff --git a/Master/texmf-dist/dvips/psfrag/psfrag.pro b/Master/texmf-dist/dvips/psfrag/psfrag.pro new file mode 100644 index 00000000000..4a4a2ffb9a7 --- /dev/null +++ b/Master/texmf-dist/dvips/psfrag/psfrag.pro @@ -0,0 +1,155 @@ +%% +%% This is file `psfrag.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% psfrag.dtx (with options: `filepro') +%% +%% Copyright (c) 1996 Craig Barratt, Michael C. Grant, and David Carlisle. +%% All rights reserved. +%% +%% This file is part of the PSfrag package. +%% +userdict begin +/PSfragLib 90 dict def +/PSfragDict 6 dict def +/PSfrag { PSfragLib begin load exec end } bind def +end +PSfragLib begin +/RO /readonly load def +/CP /currentpoint load def +/CM /currentmatrix load def +/B { bind RO def } bind def +/X { exch def } B +/MD { { X } forall } B +/OE { end exec PSfragLib begin } B +/S false def +/tstr 8 string def +/islev2 { languagelevel } stopped { false } { 2 ge } ifelse def +[ /sM /tM /srcM /dstM /dM /idM /srcFM /dstFM ] { matrix def } forall +sM currentmatrix RO pop +dM defaultmatrix RO idM invertmatrix RO pop +srcFM identmatrix pop +/Hide { gsave { CP } stopped not newpath clip { moveto } if } B +/Unhide { { CP } stopped not grestore { moveto } if } B +/setrepl islev2 {{ /glob currentglobal def true setglobal array astore + globaldict exch /PSfrags exch put glob setglobal }} + {{ array astore /PSfrags X }} ifelse B +/getrepl islev2 {{ globaldict /PSfrags get aload length }} + {{ PSfrags aload length }} ifelse B +/convert { + /src X src length string + /c 0 def src length { + dup c src c get dup 32 lt { pop 32 } if put /c c 1 add def + } repeat +} B +/Begin { + /saver save def + srcFM exch 3 exch put + 0 ne /debugMode X 0 setrepl + dup /S exch dict def { S 3 1 roll exch convert exch put } repeat + srcM CM dup invertmatrix pop + mark { currentdict { end } stopped { pop exit } if } loop + PSfragDict counttomark { begin } repeat pop +} B +/End { + mark { currentdict end dup PSfragDict eq { pop exit } if } loop + counttomark { begin } repeat pop + getrepl saver restore + 7 idiv dup /S exch dict def { + 6 array astore /mtrx X tstr cvs /K X + S K [ S K known { S K get aload pop } if mtrx ] put + } repeat +} B +/Place { + tstr cvs /K X + S K known { + bind /proc X tM CM pop + CP /cY X /cX X + 0 0 transform idtransform neg /aY X neg /aX X + S K get dup length /maxiter X + /iter 1 def { + iter maxiter ne { /saver save def } if + tM setmatrix aX aY translate + [ exch aload pop idtransform ] concat + cX neg cY neg translate cX cY moveto + /proc load OE + iter maxiter ne { saver restore /iter iter 1 add def } if + } forall + /noXY { CP /cY X /cX X } stopped def + tM setmatrix noXY { newpath } { cX cY moveto } ifelse + } { + Hide OE Unhide + } ifelse +} B +/normalize { + 2 index dup mul 2 index dup mul add sqrt div + dup 4 -1 roll exch mul 3 1 roll mul +} B +/replace { + aload pop MD + CP /bY X /lX X gsave sM setmatrix + str stringwidth abs exch abs add dup 0 eq + { pop } { 360 exch div dup scale } ifelse + lX neg bY neg translate newpath lX bY moveto + str { /ch X ( ) dup 0 ch put false charpath ch Kproc } forall + flattenpath pathbbox [ /uY /uX /lY /lX ] MD + CP grestore moveto + currentfont /FontMatrix get dstFM copy dup + 0 get 0 lt { uX lX /uX X /lX X } if + 3 get 0 lt { uY lY /uY X /lY X } if + /cX uX lX add 0.5 mul def + /cY uY lY add 0.5 mul def + debugMode { gsave 0 setgray 1 setlinewidth + lX lY moveto lX uY lineto uX uY lineto uX lY lineto closepath + lX bY moveto uX bY lineto lX cY moveto uX cY lineto + cX lY moveto cX uY lineto stroke + grestore } if + dstFM dup invertmatrix dstM CM srcM + 2 { dstM concatmatrix } repeat pop + getrepl /temp X + S str convert get { + aload pop [ /rot /scl /loc /K ] MD + /aX cX def /aY cY def + loc { + dup 66 eq { /aY bY def } { % B + dup 98 eq { /aY lY def } { % b + dup 108 eq { /aX lX def } { % l + dup 114 eq { /aX uX def } { % r + dup 116 eq { /aY uY def } % t + if } ifelse } ifelse } ifelse } ifelse pop + } forall + K srcFM rot tM rotate dstM + 2 { tM concatmatrix } repeat aload pop pop pop + 2 { scl normalize 4 2 roll } repeat + aX aY transform + /temp temp 7 add def + } forall + temp setrepl +} B +/Rif { + S 3 index convert known { pop replace } { exch pop OE } ifelse +} B +/XA { bind [ /Kproc /str } B /XC { ] 2 array astore def } B +/xs { pop } XA XC +/xks { /kern load OE } XA /kern XC +/xas { pop ax ay rmoveto } XA /ay /ax XC +/xws { c eq { cx cy rmoveto } if } XA /c /cy /cx XC +/xaws { ax ay rmoveto c eq { cx cy rmoveto } if } + XA /ay /ax /c /cy /cx XC +/raws { xaws { awidthshow } Rif } B +/rws { xws { widthshow } Rif } B +/rks { xks { kshow } Rif } B +/ras { xas { ashow } Rif } B +/rs { xs { show } Rif } B +/rrs { getrepl dup 2 add -1 roll //restore exec setrepl } B +PSfragDict begin +islev2 not { /restore { /rrs PSfrag } B } if +/show { /rs PSfrag } B +/kshow { /rks PSfrag } B +/ashow { /ras PSfrag } B +/widthshow { /rws PSfrag } B +/awidthshow { /raws PSfrag } B +end PSfragDict RO pop +end diff --git a/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro b/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro new file mode 100644 index 00000000000..23cd5be3db9 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-3dplot/pst-3dplot.pro @@ -0,0 +1,108 @@ +%% +%% This is file `pst-3dplot.pro', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-3dplot.tex' +%% +%% Herbert Voss <voss _at_ PSTricks.de> +%% +%% 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-3dplot' is a PSTricks package to draw 3d curves and graphical objects +%% +%% +%% version 0.2 / 2005-01-14 Herbert Voss <voss _at_ PSTricks.de> +% +/tx@3DPlotDict 40 dict def +tx@3DPlotDict begin +% +/saveCoor { + dzUnit mul /z exch def + dyUnit mul /y exch def + dxUnit mul /x exch def +} def +% +/ConvertTo2D { + RotatePoint + /x2D x neg Alpha cos mul y Alpha sin mul add def + /y2D x Alpha sin mul y Alpha cos mul add neg Beta sin mul z Beta cos mul add def +} def +% +/ConvertToCartesian { + /latitude exch def + /longitude exch def + /Radius exch def + /z { Radius latitude sin mul } def + /x { Radius longitude cos mul latitude cos mul } def + /y { Radius longitude sin mul latitude cos mul } def +} def +% +/SphericalTo2D { + x y z ConvertToCartesian ConvertTo2D +} def +% +/convertStackTo2D { + counttomark + /n exch def /n3 n 3 div cvi def + n3 { + n -3 roll + SphericalCoor { ConvertToCartesian } { saveCoor } ifelse + ConvertTo2D + x2D xUnit y2D yUnit + /n n 1 sub def + } repeat +} def +% +/CalcCoordinates {% from pst-vue3d + formulesTroisD + Xi 28.45 mul Yi 28.45 mul +} def +% pour la 3D conventionnelle +/DScreen 1 def +/Dobs 0 def +/formulesTroisD{% + /xObservateur x Sin1 mul neg y Cos1 mul add def + /yObservateur x Cos1Sin2 mul neg y Sin1Sin2 mul sub z Cos2 mul add def + /zObservateur x neg Cos1Cos2 mul y Sin1Cos2 mul sub z Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def +} def +% +/RotatePointXYZ{% Mxx are defined in the TeX file + /xi M11 x mul M12 y mul add M13 z mul add def + /yi M21 x mul M22 y mul add M23 z mul add def + /zi M31 x mul M32 y mul add M33 z mul add def + /x xi def + /y yi def + /z zi def +} def +% +/RotXaxis { + /yTemp y RotX cos mul z RotX sin mul sub def + /z y RotX sin mul z RotX cos mul add def + /y yTemp def +} def +/RotYaxis { + /xTemp x RotY cos mul z RotY sin mul add def + /z x RotY sin mul neg z RotY cos mul add def + /x xTemp def +} def +/RotZaxis { + /xTemp x RotZ cos mul y RotZ sin mul sub def + /y x RotZ sin mul y RotZ cos mul add def + /x xTemp def +} def +/xyz { RotXaxis RotYaxis RotZaxis } def +/yxz { RotYaxis RotXaxis RotZaxis } def +/yzx { RotYaxis RotZaxis RotXaxis } def +/xzy { RotXaxis RotZaxis RotYaxis } def +/zxy { RotZaxis RotXaxis RotYaxis } def +/zyx { RotZaxis RotYaxis RotXaxis } def +% +/RotatePoint { RotSequence cvx exec } def +% +end diff --git a/Master/texmf-dist/dvips/pst-bar/pst-bar.pro b/Master/texmf-dist/dvips/pst-bar/pst-bar.pro new file mode 100644 index 00000000000..608a8c42616 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-bar/pst-bar.pro @@ -0,0 +1,30 @@ +%! +% PostScript prologue for pst-bar.tex. +% Version 0.2, 2004/08/22 +% For distribution, see pstricks.tex. +% +/tx@BarDict 5 dict def tx@BarDict begin +% +% transpose -- Matrix transpose +% +/transpose { + /X exch def + /row X length def + /col X 0 get length def + [ + /i 0 def + col { + [ + /j 0 def + row { + X j get i get + /j j 1 add def + } repeat + /i i 1 add def + ] + } repeat + ] +} def +% +end +% END pst-bar.pro diff --git a/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro b/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro new file mode 100644 index 00000000000..31667b82ba7 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro @@ -0,0 +1,2589 @@ +%!PS-Adobe-2.0 +%%Creator: Terry Burton +%%DocumentPaperSizes: a4 +%%EndComments +%%EndProlog + +% Barcode Writer in Pure PostScript - Version 2005-10-24 +% http://www.terryburton.co.uk/barcodewriter/ +% +% Copyright (c) 2005 Terry Burton - tez@terryburton.co.uk +% +% Permission is hereby granted, free of charge, to any +% person obtaining a copy of this software and associated +% documentation files (the "Software"), to deal in the +% Software without restriction, including without +% limitation the rights to use, copy, modify, merge, +% publish, distribute, sublicense, and/or sell copies of +% the Software, and to permit persons to whom the Software +% is furnished to do so, subject to the following +% conditions: +% +% The above copyright notice and this permission notice +% shall be included in all copies or substantial portions +% of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +% KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +% THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +% PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +% DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +% CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +% CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +% IN THE SOFTWARE. + +% Uncomment this next line to allow these procedure definitions to +% remain resident within a printer's PostScript virtual machine +% so that the barcode generation capability persists between jobs. + +% serverdict begin 0 exitserver + +% --BEGIN TEMPLATE-- + +% --BEGIN ENCODER ean13-- +/ean13 { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Helvetica def + /textsize 12 def + /textpos -2 def + /height 1 def + /guardwhitespace false def + /guardpos (unset) def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + guardpos (unset) eq { + /guardpos textpos 1 add def + } { + /guardpos guardpos cvr def + } ifelse + /height height cvr def + + /barlen barcode length def % Length of the code + + % Add checksum digit to barcode if length is even + barlen 2 mod 0 eq { + /pad barlen 1 add string def % Create pad one bigger than barcode + /checksum 0 def + 0 1 barlen 1 sub { + /i exch def + /barchar barcode i get 48 sub def + i 2 mod 0 eq { + /checksum barchar checksum add def + } { + /checksum barchar 3 mul checksum add def + } ifelse + } for + /checksum 10 checksum 10 mod sub 10 mod def + pad 0 barcode putinterval % Add barcode to the start of the pad + pad barlen checksum 48 add put % Put ascii for checksum at end of pad + /barcode pad def % barcode=pad + /barlen barlen 1 add def % barlen++ + } if + + % Create an array containing the character mappings + /encs + [ (3211) (2221) (2122) (1411) (1132) + (1231) (1114) (1312) (1213) (3112) + (111) (11111) (111) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + % Digits to mirror on left side + /mirrormaps + [ (000000) (001011) (001101) (001110) (010011) + (011001) (011100) (010101) (010110) (011010) + ] def + + /sbs barlen 1 sub 4 mul 11 add string def + + guardwhitespace { + /txt barlen 1 add array def + txt barlen [(>) 99 guardpos textfont textsize] put + } { + /txt barlen array def + } ifelse + + % Put the start character + sbs 0 encs 10 get putinterval + + % First digit - determine mirrormap by this and show before guard bars + /mirrormap mirrormaps barcode 0 get 48 sub get def + txt 0 [barcode 0 1 getinterval -10 textpos textfont textsize] put + + % Left side - performs mirroring + 1 1 6 { + % Lookup the encoding for the each barcode character + /i exch def + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + mirrormap i 1 sub get 49 eq { % Reverse enc if 1 in this position in mirrormap + /enclen enc length def + /revenc enclen string def + 0 1 enclen 1 sub { + /j exch def + /char enc j get def + revenc enclen j sub 1 sub char put + } for + /enc revenc def + } if + sbs i 1 sub 4 mul 3 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 1 sub 7 mul 4 add textpos textfont 0] put + } for + + % Put the middle character + sbs 7 1 sub 4 mul 3 add encs 11 get putinterval + + % Right side + 7 1 12 { + % Lookup the encoding for the each barcode character + /i exch def + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 1 sub 4 mul 8 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 1 sub 7 mul 8 add textpos textfont 0] put + } for + + % Put the end character + sbs barlen 1 sub 4 mul 8 add encs 12 get putinterval + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + includetext { + retval (bhs) [height height 12{height .1 sub}repeat height height 12{height .1 sub}repeat height height] put + retval (bbs) [0 0 12{.1}repeat 0 0 12{.1}repeat 0 0] put + retval (txt) txt put + } { + retval (bhs) [30{height}repeat] put + retval (bbs) [30{0}repeat] put + } ifelse + retval (opt) renderopts put + retval + + end + +} bind def +/ean13 load 0 1 dict put +% --END ENCODER ean13-- + +% --BEGIN ENCODER ean8-- +/ean8 { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Helvetica def + /textsize 12 def + /textpos -2 def + /height 1 def + /guardwhitespace false def + /guardpos (unset) def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + guardpos (unset) eq { + /guardpos textpos 1 add def + } { + /guardpos guardpos cvr def + } ifelse + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (3211) (2221) (2122) (1411) (1132) + (1231) (1114) (1312) (1213) (3112) + (111) (11111) (111) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + /barlen barcode length def % Length of the code + /sbs barlen 4 mul 11 add string def + + guardwhitespace { + /txt barlen 2 add array def + txt barlen [(<) -9 guardpos textfont textsize] put + txt barlen 1 add [(>) 69 guardpos textfont textsize] put + } { + /txt barlen array def + } ifelse + + % Put the start character + sbs 0 encs 10 get putinterval + + % Left side + 0 1 3 { + % Lookup the encoding for the each barcode character + /i exch def + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 4 mul 3 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 7 mul 4 add textpos textfont textsize] put + } for + + % Put the middle character + sbs 4 4 mul 3 add encs 11 get putinterval + + % Right side + 4 1 7 { + % Lookup the encoding for the each barcode character + /i exch def + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 4 mul 8 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 7 mul 8 add textpos textfont 0] put + } for + + % Put the end character + sbs barlen 4 mul 8 add encs 12 get putinterval + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + includetext { + retval (bhs) [height height 8{height .1 sub}repeat height height 8{height .1 sub}repeat height height] put + retval (bbs) [0 0 8{.1}repeat 0 0 8{.1}repeat 0 0] put + retval (txt) txt put + } { + retval (bhs) [22{height}repeat] put + retval (bbs) [22{0}repeat] put + } ifelse + retval (opt) renderopts put + retval + + end + +} bind def +/ean8 load 0 1 dict put +% --END ENCODER ean8-- + +% --BEGIN ENCODER upca-- +/upca { + + 0 begin + + /options exch def + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Helvetica def + /textsize 12 def + /textpos -2 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + /barlen barcode length def % Length of the code + + % Add checksum digit to barcode if length is odd + barlen 2 mod 0 ne { + /pad barlen 1 add string def % Create pad one bigger than barcode + /checksum 0 def + 0 1 barlen 1 sub { + /i exch def + /barchar barcode i get 48 sub def + i 2 mod 0 ne { + /checksum checksum barchar add def + } { + /checksum checksum barchar 3 mul add def + } ifelse + } for + /checksum 10 checksum 10 mod sub 10 mod def + pad 0 barcode putinterval % Add barcode to the start of the pad + pad barlen checksum 48 add put % Put ascii for checksum at end of pad + /barcode pad def % barcode=pad + /barlen barlen 1 add def % barlen++ + } if + + % Create an array containing the character mappings + /encs + [ (3211) (2221) (2122) (1411) (1132) + (1231) (1114) (1312) (1213) (3112) + (111) (11111) (111) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + /sbs barlen 4 mul 11 add string def + /txt barlen array def + + % Put the start character + sbs 0 encs 10 get putinterval + + % Left side + 0 1 5 { + % Lookup the encoding for the each barcode character + /i exch def + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 4 mul 3 add enc putinterval % Put encoded digit into sbs + i 0 eq { % First digit is before the guard bars + txt 0 [barcode 0 1 getinterval -7 textpos textfont textsize 2 sub] put + } { + txt i [barcode i 1 getinterval i 7 mul 4 add textpos textfont textsize] put + } ifelse + } for + + % Put the middle character + sbs 6 4 mul 3 add encs 11 get putinterval + + % Right side + 6 1 11 { + % Lookup the encoding for the each barcode character + /i exch def + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 4 mul 8 add enc putinterval % Put encoded digit into sbs + i 11 eq { % Last digit is after guard bars + txt 11 [barcode 11 1 getinterval 96 textpos textfont textsize 2 sub] put + } { + txt i [barcode i 1 getinterval i 7 mul 8 add textpos textfont 0] put + } ifelse + } for + + % Put the end character + sbs barlen 4 mul 8 add encs 12 get putinterval + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + includetext { + retval (bhs) [4{height}repeat 10{height .1 sub}repeat height height 10{height .1 sub}repeat 5{height}repeat] put + retval (bbs) [0 0 0 0 10{.1}repeat 0 0 10{.1}repeat 0 0 0 0 0] put + retval (txt) txt put + } { + retval (bhs) [31{height}repeat] put + retval (bbs) [31{0}repeat] put + } ifelse + retval (opt) renderopts put + retval + + end + +} bind def +/upca load 0 1 dict put +% --END ENCODER upca-- + +% --BEGIN ENCODER upce-- +/upce { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Helvetica def + /textsize 12 def + /textpos -2 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + /barlen barcode length def % Length of the code + + % Create an array containing the character mappings + /encs + [ (3211) (2221) (2122) (1411) (1132) + (1231) (1114) (1312) (1213) (3112) + (111) (1111111) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + /mirrormaps + [ (000111) (001011) (001101) (001110) (010011) + (011001) (011100) (010101) (010110) (011010) + ] def + + % Add checksum digit to barcode if length is odd + barlen 2 mod 0 ne { + /pad barlen 1 add string def % Create pad one bigger than barcode + /checksum 0 def + 0 1 barlen 1 sub { + /i exch def + /barchar barcode i get 48 sub def + i 2 mod 0 ne { + /checksum barchar checksum add def + } { + /checksum barchar 3 mul checksum add def + } ifelse + } for + /checksum 10 checksum 10 mod sub 10 mod def + pad 0 barcode putinterval % Add barcode to the start of the pad + pad barlen checksum 48 add put % Put ascii for checksum at end of pad + /barcode pad def % barcode=pad + /barlen barlen 1 add def % barlen++ + } if + /txt barlen array def + txt 0 [barcode 0 1 getinterval -7 textpos textfont textsize 2 sub] put + + % Determine the mirror map based on checksum + /mirrormap mirrormaps barcode barlen 1 sub get 48 sub get def + + % Invert the mirrormap if we are using a non-zero number system + barcode 0 get 48 eq { + /invt mirrormap length string def + 0 1 mirrormap length 1 sub { + /i exch def + mirrormap i get 48 eq { + invt i 49 put + } { + invt i 48 put + } ifelse + } for + /mirrormap invt def + } if + + /sbs barlen 2 sub 4 mul 10 add string def + + % Put the start character + sbs 0 encs 10 get putinterval + + 1 1 6 { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + mirrormap i 1 sub get 49 eq { % Reverse enc if 1 in this position in mirrormap + /enclen enc length def + /revenc enclen string def + 0 1 enclen 1 sub { + /j exch def + /char enc j get def + revenc enclen j sub 1 sub char put + } for + /enc revenc def + } if + sbs i 1 sub 4 mul 3 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 1 sub 7 mul 4 add textpos textfont textsize] put + } for + + txt 7 [barcode 7 1 getinterval 6 7 mul 11 add textpos textfont textsize 2 sub] put + + % Put the end character + sbs barlen 2 sub 4 mul 3 add encs 11 get putinterval + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + includetext { + retval (bhs) [height height 12{height .1 sub}repeat height height height] put + retval (bbs) [0 0 12{.1}repeat 0 0 0] put + retval (txt) txt put + } { + retval (bhs) [17{height}repeat] put + retval (bbs) [17{0}repeat] put + } ifelse + retval (opt) renderopts put + retval + + end + +} bind def +/upce load 0 1 dict put +% --END ENCODER upce-- + +% --BEGIN ENCODER ean5-- +/ean5 { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Helvetica def + /textsize 12 def + /textpos (unset) def + /height 0.7 def + /guardwhitespace false def + /guardpos (unset) def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /height height cvr def + textpos (unset) eq { + /textpos height 72 mul 1 add def + } { + /textpos textpos cvr def + } ifelse + guardpos (unset) eq { + /guardpos textpos 1 add def + } { + /guardpos guardpos cvr def + } ifelse + + /barlen barcode length def % Length of the code + + % Create an array containing the character mappings + /encs + [ (3211) (2221) (2122) (1411) (1132) + (1231) (1114) (1312) (1213) (3112) + (112) (11) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + % Determine the mirror map based on mod 10 checksum + /mirrormaps + [ (11000) (10100) (10010) (10001) (01100) + (00110) (00011) (01010) (01001) (00101) + ] def + /checksum 0 def + 0 1 4 { + /i exch def + /barchar barcode i get 48 sub def + i 2 mod 0 eq { + /checksum barchar 3 mul checksum add def + } { + /checksum barchar 9 mul checksum add def + } ifelse + } for + /checksum checksum 10 mod def + /mirrormap mirrormaps checksum get def + + /sbs 31 string def + + guardwhitespace { + /txt 6 array def + txt 5 [(>) 49 guardpos textfont textsize] put + } { + /txt 5 array def + } ifelse + + 0 1 4 { + /i exch def + + % Prefix with either a start character or separator character + i 0 eq { + sbs 0 encs 10 get putinterval + } { + sbs i 1 sub 6 mul 7 add encs 11 get putinterval + } ifelse + + % Lookup the encoding for the barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + mirrormap i get 49 eq { % Reverse enc if 1 in this position in mirrormap + /enclen enc length def + /revenc enclen string def + 0 1 enclen 1 sub { + /j exch def + /char enc j get def + revenc enclen j sub 1 sub char put + } for + /enc revenc def + } if + sbs i 6 mul 3 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 1 sub 9 mul 13 add textpos textfont textsize] put + } for + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + retval (bhs) [16{height}repeat] put + retval (bbs) [16{0}repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/ean5 load 0 1 dict put +% --END ENCODER ean5-- + +% --BEGIN ENCODER ean2-- +/ean2 { + + 0 begin + + /options exch def % We are given an options string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Helvetica def + /textsize 12 def + /textpos (unset) def + /height 0.7 def + /guardwhitespace false def + /guardpos (unset) def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /height height cvr def + textpos (unset) eq { + /textpos height 72 mul 1 add def + } { + /textpos textpos cvr def + } ifelse + guardpos (unset) eq { + /guardpos textpos 1 add def + } { + /guardpos guardpos cvr def + } ifelse + + /barlen barcode length def % Length of the code + + % Create an array containing the character mappings + /encs + [ (3211) (2221) (2122) (1411) (1132) + (1231) (1114) (1312) (1213) (3112) + (112) (11) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + % Determine the mirror map based on mod 4 checksum + /mirrormap [(00) (01) (10) (11)] barcode 0 2 getinterval cvi 4 mod get def + + /sbs 13 string def + + guardwhitespace { + /txt 3 array def + txt 2 [(>) 22 guardpos textfont textsize] put + } { + /txt 2 array def + } ifelse + + 0 1 1 { + /i exch def + + % Prefix with either a start character or separator character + i 0 eq { + sbs 0 encs 10 get putinterval + } { + sbs i 1 sub 6 mul 7 add encs 11 get putinterval + } ifelse + + % Lookup the encoding for the barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + mirrormap i get 49 eq { % Reverse enc if 1 in this position in mirrormap + /enclen enc length def + /revenc enclen string def + 0 1 enclen 1 sub { + /j exch def + /char enc j get def + revenc enclen j sub 1 sub char put + } for + /enc revenc def + } if + sbs i 6 mul 3 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 1 sub 9 mul 13 add textpos textfont textsize] put + } for + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + retval (bhs) [12{height}repeat] put + retval (bbs) [12{0}repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/ean2 load 0 1 dict put +% --END ENCODER ean2-- + +% --BEGIN ENCODER isbn-- +% --REQUIRES ean13-- +/isbn { + + 0 begin + + /options exch def % We are given an options string + /renderopts options def + /isbntxt exch def % We are given the isbn text with dashes + + /includetext false def % Enable/disable ISBN text + /isbnfont /Courier def + /isbnsize 9 def + /isbnpos (unset) def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /isbnfont isbnfont cvlit def + /isbnsize isbnsize cvr def + /height height cvr def + isbnpos (unset) eq { + /isbnpos height 72 mul 3 add def + } { + /isbnpos isbnpos cvr def + } ifelse + + % Read the digits from isbntxt and calculate checksums + /isbn 13 string def + /checksum10 0 def + /checksum13 0 def + /i 0 def /n 0 def + { % loop + /isbnchar isbntxt i get 48 sub def + isbnchar -3 ne { % Ignore dashes + isbn n isbnchar 48 add put + /checksum10 checksum10 10 n sub isbnchar mul add def + n 2 mod 0 eq { + /checksum13 isbnchar checksum13 add def + } { + /checksum13 isbnchar 3 mul checksum13 add def + } ifelse + /n n 1 add def + } if + /i i 1 add def + i isbntxt length eq {exit} if + } loop + + % Add the ISBN header to the isbntxt + n 9 eq n 10 eq or { + /checksum 11 checksum10 11 mod sub 11 mod def + /isbn isbn 0 9 getinterval def + /pad 18 string def + } { + /checksum 10 checksum13 10 mod sub 10 mod def + /isbn isbn 0 12 getinterval def + /pad 22 string def + } ifelse + pad 0 (ISBN ) putinterval + pad 5 isbntxt putinterval % Add isbntxt to the pad + + % Add checksum digit if isbntxt length is 11 or 15 + isbntxt length 11 eq isbntxt length 15 eq or { + pad isbntxt length 5 add 45 put % Put a dash + checksum 10 eq { + pad isbntxt length 6 add checksum 78 add put % Check digit for 10 is X + } { + pad isbntxt length 6 add checksum 48 add put % Put check digit + } ifelse + } if + /isbntxt pad def % isbntxt=pad + + % Convert ISBN digits to EAN-13 + /barcode 12 string def + isbn length 9 eq { + barcode 0 (978) putinterval + barcode 3 isbn putinterval + } { + barcode 0 isbn putinterval + } ifelse + + % Get the result of encoding with ean13 + /args barcode options ean13 def + + % Add the ISBN text + includetext { + isbn length 9 eq { + /isbnxpos -1 def + } { + /isbnxpos -12 def + } ifelse + args (txt) known { + /txt args (txt) get def + /newtxt txt length 1 add array def + newtxt 0 txt putinterval + newtxt newtxt length 1 sub [isbntxt isbnxpos isbnpos isbnfont isbnsize] put + args (txt) newtxt put + } { + args (txt) [ [isbntxt isbnxpos isbnpos isbnfont isbnsize] ] put + } ifelse + } if + + args (opt) renderopts put + args + + end + +} bind def +/isbn load 0 1 dict put +% --END ENCODER isbn-- + +% --BEGIN ENCODER code128-- +/code128 { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (212222) (222122) (222221) (121223) (121322) (131222) (122213) + (122312) (132212) (221213) (221312) (231212) (112232) (122132) + (122231) (113222) (123122) (123221) (223211) (221132) (221231) + (213212) (223112) (312131) (311222) (321122) (321221) (312212) + (322112) (322211) (212123) (212321) (232121) (111323) (131123) + (131321) (112313) (132113) (132311) (211313) (231113) (231311) + (112133) (112331) (132131) (113123) (113321) (133121) (313121) + (211331) (231131) (213113) (213311) (213131) (311123) (311321) + (331121) (312113) (312311) (332111) (314111) (221411) (431111) + (111224) (111422) (121124) (121421) (141122) (141221) (112214) + (112412) (122114) (122411) (142112) (142211) (241211) (221114) + (413111) (241112) (134111) (111242) (121142) (121241) (114212) + (124112) (124211) (411212) (421112) (421211) (212141) (214121) + (412121) (111143) (111341) (131141) (114113) (114311) (411113) + (411311) (113141) (114131) (311141) (411131) (211412) (211214) + (211232) (2331112) + ] def + + % Create a string of the available characters for alphabets A and B + /barchars ( !"#$%&'\(\)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~) def + /barlen barcode length def % Length of the code + /sbs barlen 6 mul string def % sbs is 6 times length of barcode + /txt barlen array def + + /mode -1 def % A=0, B=1, C=2 + /checksum barcode 1 3 getinterval cvi def % Initialise the checksum + + /i 0 def /j 0 def + { % loop + i barlen eq {exit} if + barcode i 1 getinterval (^) eq { + % indx is given by the next three characters + /indx barcode i 1 add 3 getinterval cvi def + txt j [( ) j 11 mul textpos textfont textsize] put + /i i 4 add def + } { + % indx depends on the mode + mode 2 eq { + /indx barcode i 2 getinterval cvi def + txt j [barcode i 2 getinterval j 11 mul textpos textfont textsize] put + /i i 2 add def + } { + barchars barcode i 1 getinterval search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + txt j [barchars indx 1 getinterval j 11 mul textpos textfont textsize] put + /i i 1 add def + } ifelse + } ifelse + /enc encs indx get def % Get the indxth encoding + sbs j 6 mul enc putinterval % Put encoded digit into sbs + + % Update the mode + indx 101 eq indx 103 eq or {/mode 0 def} if + indx 100 eq indx 104 eq or {/mode 1 def} if + indx 99 eq indx 105 eq or {/mode 2 def} if + + /checksum indx j mul checksum add def % checksum+=indx*j + /j j 1 add def + } loop + + % Put the checksum character + /checksum checksum 103 mod def + sbs j 6 mul encs checksum get putinterval + + % Put the end character + sbs j 6 mul 6 add encs 106 get putinterval + + % Shrink sbs and txt to fit exactly + /sbs sbs 0 j 6 mul 13 add getinterval def + /txt txt 0 j getinterval def + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/code128 load 0 1 dict put +% --END ENCODER code128-- + +% --BEGIN ENCODER code39-- +/code39 { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def % Enable/disable checkdigit + /includetext false def + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (1113313111) (3113111131) (1133111131) (3133111111) (1113311131) + (3113311111) (1133311111) (1113113131) (3113113111) (1133113111) + (3111131131) (1131131131) (3131131111) (1111331131) (3111331111) + (1131331111) (1111133131) (3111133111) (1131133111) (1111333111) + (3111111331) (1131111331) (3131111311) (1111311331) (3111311311) + (1131311311) (1111113331) (3111113311) (1131113311) (1111313311) + (3311111131) (1331111131) (3331111111) (1311311131) (3311311111) + (1331311111) (1311113131) (3311113111) (1331113111) (1313131111) + (1313111311) (1311131311) (1113131311) (1311313111) + ] def + + % Create a string of the available characters + /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*) def + + /barlen barcode length def % Length of the code + + includecheck { + /sbs barlen 10 mul 30 add string def + /txt barlen 3 add array def + } { + /sbs barlen 10 mul 20 add string def + /txt barlen 2 add array def + } ifelse + + /checksum 0 def + + % Put the start character + sbs 0 encs 43 get putinterval + txt 0 [(*) 0 textpos textfont textsize] put + + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 10 mul 10 add enc putinterval % Put encoded digit into sbs + txt i 1 add [barcode i 1 getinterval i 1 add 16 mul textpos textfont 0] put + /checksum checksum indx add def + } for + + % Put the checksum and end characters + includecheck { + /checksum checksum 43 mod def + sbs barlen 10 mul 10 add encs checksum get putinterval + includecheckintext { + txt barlen 1 add [barchars checksum 1 getinterval barlen 1 add 16 mul textpos textfont 0] put + } { + txt barlen 1 add [() barlen 1 add 16 mul textpos textfont 0] put + } ifelse + sbs barlen 10 mul 20 add encs 43 get putinterval + txt barlen 2 add [(*) barlen 2 add 16 mul textpos textfont 0] put + } { + sbs barlen 10 mul 10 add encs 43 get putinterval + txt barlen 1 add [(*) barlen 1 add 16 mul textpos textfont 0] put + } ifelse + + % Return the arguments + /retval 2 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/code39 load 0 1 dict put +% --END ENCODER code39-- + +% --BEGIN ENCODER code93-- +/code93 { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def % Enable/disable checkdigit + /includetext false def % Enable/disable text + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + /encs + [ (131112) (111213) (111312) (111411) (121113) + (121212) (121311) (111114) (131211) (141111) + (211113) (211212) (211311) (221112) (221211) + (231111) (112113) (112212) (112311) (122112) + (132111) (111123) (111222) (111321) (121122) + (131121) (212112) (212211) (211122) (211221) + (221121) (222111) (112122) (112221) (122121) + (123111) (121131) (311112) (311211) (321111) + (112131) (113121) (211131) (121221) (312111) + (311121) (122211) (111141) (1111411) + ] def + + % Create a string of the available characters + /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def + + /barlen barcode length def % Length of the code + barcode { + (^) search false eq {pop exit} if + pop pop /barlen barlen 3 sub def + } loop + + includecheck { + /sbs barlen 6 mul 25 add string def + } { + /sbs barlen 6 mul 13 add string def + } ifelse + /txt barlen array def + + % Put the start character + sbs 0 encs 47 get putinterval + + /checksum1 0 def /checksum2 0 def + + /i 0 def /j 0 def + { % loop + j barlen eq {exit} if + barcode i 1 getinterval (^) eq { + % indx is given by the next three characters + /indx barcode i 1 add 3 getinterval cvi def + txt j [( ) j 9 mul 9 add textpos textfont textsize] put + /i i 4 add def + } { + barchars barcode i 1 getinterval search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + txt j [barchars indx 1 getinterval j 9 mul 9 add textpos textfont textsize] put + /i i 1 add def + } ifelse + /enc encs indx get def % Get the indxth encoding + sbs j 6 mul 6 add enc putinterval % Put encoded digit into sbs + /checksum1 checksum1 barlen j sub 1 sub 20 mod 1 add indx mul add def + /checksum2 checksum2 barlen j sub 15 mod 1 add indx mul add def + /j j 1 add def + } loop + + includecheck { + % Put the first checksum character + /checksum1 checksum1 47 mod def + /checksum2 checksum2 checksum1 add 47 mod def + sbs j 6 mul 6 add encs checksum1 get putinterval + sbs j 6 mul 12 add encs checksum2 get putinterval + % Put the end character + sbs j 6 mul 18 add encs 48 get putinterval + } { + % Put the end character + sbs j 6 mul 6 add encs 48 get putinterval + } ifelse + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/code93 load 0 1 dict put +% --END ENCODER code93-- + +% --BEGIN ENCODER interleaved2of5-- +/interleaved2of5 { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def % Enable/disable checkdigit + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + /barlen barcode length def % Length of the code + + % Prefix 0 to barcode if length is even and including checkdigit + % or length is odd and not including checkdigit + barlen 2 mod 0 eq includecheck and % even & includecheck + barlen 2 mod 0 ne includecheck not and or { % odd & !includecheck + /pad barlen 1 add string def % Create pad one bigger than barcode + pad 0 48 put % Put ascii 0 at start of pad + pad 1 barcode putinterval % Add barcode to the end of pad + /barcode pad def % barcode=pad + /barlen barlen 1 add def % barlen++ + } if + + % Add checksum to end of barcode + includecheck { + /checksum 0 def + 0 1 barlen 1 sub { + /i exch def + i 2 mod 0 eq { + /checksum checksum barcode i get 48 sub 3 mul add def + } { + /checksum checksum barcode i get 48 sub add def + } ifelse + } for + /checksum 10 checksum 10 mod sub 10 mod def + /pad barlen 1 add string def % Create pad one bigger than barcode + pad 0 barcode putinterval % Add barcode to the start of pad + pad barlen checksum 48 add put % Add checksum to end of pad + /barcode pad def % barcode=pad + /barlen barlen 1 add def % barlen++ + } if + + % Create an array containing the character mappings + /encs + [ (11331) (31113) (13113) (33111) (11313) + (31311) (13311) (11133) (31131) (13131) + (1111) (3111) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + /sbs barlen 5 mul 8 add string def + /txt barlen array def + + % Put the start character + sbs 0 encs 10 get putinterval + + 0 2 barlen 1 sub { + /i exch def + % Lookup the encodings for two consecutive barcode characters + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enca encs indx get def % Get the indxth encoding + + barcode i 1 add 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /encb encs indx get def % Get the indxth encoding + + % Interleave the two character encodings + /intl enca length 2 mul string def + 0 1 enca length 1 sub { + /j exch def + /achar enca j get def + /bchar encb j get def + intl j 2 mul achar put + intl j 2 mul 1 add bchar put + } for + + sbs i 5 mul 4 add intl putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 9 mul 4 add textpos textfont textsize] put + includecheck includecheckintext not and barlen 2 sub i eq and { + txt i 1 add [( ) i 1 add 9 mul 4 add textpos textfont textsize] put + } { + txt i 1 add [barcode i 1 add 1 getinterval i 1 add 9 mul 4 add textpos textfont textsize] put + } ifelse + } for + + % Put the end character + sbs barlen 5 mul 4 add encs 11 get putinterval + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/interleaved2of5 load 0 1 dict put +% --END ENCODER interleaved2of5-- + +% --BEGIN ENCODER code2of5-- +/code2of5 { + + % Thanks to Michael Landers + + 0 begin % Confine variable to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (1111313111) (3111111131) (1131111131) (3131111111) + (1111311131) (3111311111) (1131311111) (1111113131) + (3111113111) (1131113111) (313111) (311131) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + /barlen barcode length def % Length of the code + + includecheck { + /sbs barlen 10 mul 22 add string def + /txt barlen 1 add array def + } { + /sbs barlen 10 mul 12 add string def + /txt barlen array def + } ifelse + + % Put the start character + sbs 0 encs 10 get putinterval + + /checksum 0 def + + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 10 mul 6 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 14 mul 10 add textpos textfont textsize] put + barlen i sub 2 mod 0 eq { + /checksum checksum indx add def + } { + /checksum checksum indx 3 mul add def + } ifelse + } for + + % Put the checksum and end characters + includecheck { + /checksum 10 checksum 10 mod sub 10 mod def + sbs barlen 10 mul 6 add encs checksum get putinterval + sbs barlen 10 mul 16 add encs 11 get putinterval + includecheckintext { + txt barlen [barchars checksum 1 getinterval barlen 14 mul 10 add textpos textfont textsize] put + } { + txt barlen [( ) barlen 14 mul 10 add textpos textfont textsize] put + } ifelse + } { + sbs barlen 10 mul 6 add encs 11 get putinterval + } ifelse + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/code2of5 load 0 1 dict put +% --END ENCODER code2of5-- + +% --BEGIN ENCODER code11-- +/code11 { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def + /includetext false def + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (111131) (311131) (131131) (331111) (113131) + (313111) (133111) (111331) (311311) (311111) + (113111) (113311) + ] def + + % Create a string of the available characters + /barchars (0123456789-) def + + /barlen barcode length def % Length of the code + + includecheck { + barlen 10 ge { + /sbs barlen 6 mul 24 add string def + /txt barlen 2 add array def + } { + /sbs barlen 6 mul 18 add string def + /txt barlen 1 add array def + } ifelse + } { + /sbs barlen 6 mul 12 add string def + /txt barlen array def + } ifelse + + % Put the start character + sbs 0 encs 10 get putinterval + + /checksum1 0 def /checksum2 0 def + + /xpos 8 def + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 6 mul 6 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval xpos textpos textfont textsize] put + 0 1 5 { % xpos+=width of the character + /xpos exch enc exch get 48 sub xpos add def + } for + /checksum1 checksum1 barlen i sub 1 sub 10 mod 1 add indx mul add def + /checksum2 checksum2 barlen i sub 9 mod 1 add indx mul add def + } for + + % Put the checksum and end characters + includecheck { + /checksum1 checksum1 11 mod def + barlen 10 ge { + /checksum2 checksum2 checksum1 add 11 mod def + sbs barlen 6 mul 6 add encs checksum1 get putinterval + sbs barlen 6 mul 12 add encs checksum2 get putinterval + includecheckintext { + txt barlen [barchars checksum1 1 getinterval xpos textpos textfont 0] put + /enc encs checksum1 get def + 0 1 5 { % xpos+=width of the character + /xpos exch enc exch get 48 sub xpos add def + } for + txt barlen 1 add [barchars checksum2 1 getinterval xpos textpos textfont 0] put + } { + txt barlen [() xpos textpos textfont 0] put + txt barlen 1 add [() xpos textpos textfont 0] put + } ifelse + sbs barlen 6 mul 18 add encs 11 get putinterval + } { + sbs barlen 6 mul 6 add encs checksum1 get putinterval + includecheckintext { + txt barlen [barchars checksum1 1 getinterval xpos textpos textfont 0] put + } { + txt barlen [() xpos textpos textfont 0] put + } ifelse + sbs barlen 6 mul 12 add encs 11 get putinterval + } ifelse + } { + sbs barlen 6 mul 6 add encs 11 get putinterval + } ifelse + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/code11 load 0 1 dict put +% --END ENCODER code11-- + +% --BEGIN ENCODER rationalizedCodabar-- +/rationalizedCodabar { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def % Enable/disable checkdigit + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (11111331) (11113311) (11131131) (33111111) (11311311) + (31111311) (13111131) (13113111) (13311111) (31131111) + (11133111) (11331111) (31113131) (31311131) (31313111) + (11313131) (11331311) (13131131) (11131331) (11133311) + ] def + + % Create a string of the available characters + /barchars (0123456789-$:/.+ABCD) def + + /barlen barcode length def % Length of the code + + includecheck { + /sbs barlen 8 mul 8 add string def + /txt barlen 1 add array def + } { + /sbs barlen 8 mul string def + /txt barlen array def + } ifelse + + /checksum 0 def + /xpos 0 def + 0 1 barlen 2 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 8 mul enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval xpos textpos textfont textsize] put + 0 1 7 { % xpos+=width of the character + /xpos exch enc exch get 48 sub xpos add def + } for + /checksum checksum indx add def + } for + + % Find index of last character + barcode barlen 1 sub 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + + includecheck { + % Put the checksum character + /checksum checksum indx add def + /checksum 16 checksum 16 mod sub 16 mod def + sbs barlen 8 mul 8 sub encs checksum get putinterval + includecheckintext { + txt barlen 1 sub [barchars checksum 1 getinterval xpos textpos textfont textsize] put + } { + txt barlen 1 sub [( ) xpos textpos textfont textsize] put + } ifelse + 0 1 7 { % xpos+=width of the character + /xpos exch encs checksum get exch get 48 sub xpos add def + } for + % Put the end character + /enc encs indx get def % Get the indxth encoding + sbs barlen 8 mul enc putinterval % Put encoded digit into sbs + txt barlen [barcode barlen 1 sub 1 getinterval xpos textpos textfont textsize] put + } { + % Put the end character + /enc encs indx get def % Get the indxth encoding + sbs barlen 8 mul 8 sub enc putinterval % Put encoded digit into sbs + txt barlen 1 sub [barcode barlen 1 sub 1 getinterval xpos textpos textfont textsize] put + } ifelse + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/rationalizedCodabar load 0 1 dict put +% --END ENCODER rationalizedCodabar-- + +% --BEGIN ENCODER postnet-- +/postnet { + + % Thanks to Ross McFarland + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 0.2 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + /barlen barcode length def + + % Create an array containing the character mappings + /encs + [ (55222) (22255) (22525) (22552) (25225) + (25252) (25522) (52225) (52252) (52522) + (5) (5) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + /bhs barlen 5 mul 7 add array def + /txt barlen 1 add array def + + % Put start character + /enc encs 10 get def + /heights enc length array def + 0 1 enc length 1 sub { + /j exch def + heights j enc j 1 getinterval cvi height mul 5 div put + } for + bhs 0 heights putinterval % Put encoded digit into sbs + + /checksum 0 def + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + /heights enc length array def + 0 1 enc length 1 sub { + /j exch def + heights j enc j 1 getinterval cvi height mul 5 div put + } for + bhs i 5 mul 1 add heights putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 20 mul 4 add textpos textfont textsize] put + /checksum checksum indx add def % checksum+=indx + } for + + % Put the checksum character + /checksum 10 checksum 10 mod sub 10 mod def + /enc encs checksum get def + /heights enc length array def + 0 1 enc length 1 sub { + /j exch def + heights j enc j 1 getinterval cvi height mul 5 div put + } for + bhs barlen 5 mul 1 add heights putinterval + + includecheckintext { + txt barlen [barchars checksum 1 getinterval barlen 20 mul 4 add textpos textfont textsize] put + } { + txt barlen [( ) barlen 10 mul 4 add textpos textfont textsize] put + } ifelse + + % Put end character + /enc encs 11 get def + /heights enc length array def + 0 1 enc length 1 sub { + /j exch def + heights j enc j 1 getinterval cvi height mul 5 div put + } for + bhs barlen 5 mul 6 add heights putinterval + + /retval 1 dict def + retval (bhs) bhs put + retval (bbs) [bhs length {0} repeat] put + /sbs bhs length 2 mul 1 sub string def + 0 1 sbs length 1 sub { + sbs exch 50 put % Fill with 2s + } for + retval (sbs) sbs put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/postnet load 0 1 dict put +% --END ENCODER postnet-- + +% --BEGIN ENCODER royalmail-- +/royalmail { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 0.3 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (3300) (2211) (2301) (2310) (3201) (3210) + (1122) (0033) (0123) (0132) (1023) (1032) + (1302) (0213) (0303) (0312) (1203) (1212) + (1320) (0231) (0321) (0330) (1221) (1230) + (3102) (2013) (2103) (2112) (3003) (3012) + (3120) (2031) (2121) (2130) (3021) (3030) + (2) (3) + ] def + + % Create a string of the available characters + /barchars (ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRS) def + + /barlen barcode length def + /encstr barlen 4 mul 6 add string def + /txt barlen 1 add array def + + % Put start character + encstr 0 encs 36 get putinterval + + /checksumrow 0 def + /checksumcol 0 def + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + encstr i 4 mul 1 add enc putinterval + txt i [barcode i 1 getinterval i 16 mul 4 add textpos textfont textsize] put + /checksumrow checksumrow indx 6 idiv add def + /checksumcol checksumcol indx 6 mod add def + } for + + % Put the checksum character + /checksum checksumrow 6 mod 6 mul checksumcol 6 mod add def + /enc encs checksum get def + encstr barlen 4 mul 1 add enc putinterval + includecheckintext { + txt barlen [barchars checksum 1 getinterval barlen 16 mul 4 add textpos textfont textsize] put + } { + txt barlen [( ) barlen 16 mul 4 add textpos textfont textsize] put + } ifelse + + % Put end character + encstr barlen 4 mul 5 add encs 37 get putinterval + + /bbs encstr length array def + /bhs encstr length array def + 0 1 encstr length 1 sub { + /i exch def + /enc encstr i 1 getinterval def + enc (0) eq { + bbs i 3 height mul 8 div put + bhs i 2 height mul 8 div put + } if + enc (1) eq { + bbs i 0 height mul 8 div put + bhs i 5 height mul 8 div put + } if + enc (2) eq { + bbs i 3 height mul 8 div put + bhs i 5 height mul 8 div put + } if + enc (3) eq { + bbs i 0 height mul 8 div put + bhs i 8 height mul 8 div put + } if + } for + + /retval 4 dict def + retval (bbs) bbs put + retval (bhs) bhs put + /sbs bhs length 2 mul 1 sub string def + 0 1 sbs length 1 sub { + sbs exch 50 put % Fill with 2s + } for + retval (sbs) sbs put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/royalmail load 0 1 dict put +% --END ENCODER royalmail-- + +% --BEGIN ENCODER auspost-- +/auspost { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 0.3 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (000) (001) (002) (010) (011) (012) (020) (021) + (022) (100) (101) (102) (110) (111) (112) (120) + (121) (122) (200) (201) (202) (210) (211) (212) + (220) (221) (222) (300) (301) (302) (310) (311) + (312) (320) (321) (322) (023) (030) (031) (032) + (033) (103) (113) (123) (130) (131) (132) (133) + (203) (213) (223) (230) (231) (232) (233) (303) + (313) (323) (330) (331) (332) (333) (003) (013) + (13) (3) + ] def + + % Create a string of the available characters + /barchars (ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz #) def + + % Create an array of numeric mappings + /nencs + [ (00) (01) (02) (10) (11) + (12) (20) (21) (22) (30) + ] def + + /barlen barcode length def + /encstr 37 string def + /txt 8 array def + + % Put start character + encstr 0 encs 64 get putinterval + + % Encode the type + 0 1 1 { + /i exch def + nencs barcode i 1 getinterval cvi get + encstr i 2 mul 2 add 3 2 roll putinterval + } for + + % Encode the DPID + 2 1 9 { + /i exch def + nencs barcode i 1 getinterval cvi get + encstr i 2 mul 2 add 3 2 roll putinterval + txt i 2 sub [barcode i 1 getinterval i 2 sub 8 mul 24 add textpos textfont textsize] put + } for + + % Add a pad character + encstr 22 encs 65 get putinterval + + % Create the 64x64 multiplication table + /rstable 64 64 mul array def + rstable 0 [ 64 {0} repeat ] putinterval + rstable 64 [ 0 1 63 {} for ] putinterval + /prev 1 def + 1 1 63 { + /i exch def + /next prev 1 bitshift def + next 64 and 0 ne { + /next next 67 xor def + } if + 0 1 63 { + /j exch def + /nextcell {rstable 64 next mul j add} def + nextcell rstable 64 prev mul j add get 1 bitshift put + nextcell get 64 and 0 ne { + nextcell nextcell get 67 xor put + } if + } for + /prev next def + } for + + % Calculate the reed-solomon codes for triples + /rscodes 11 array def + rscodes 0 [ 4 {0} repeat ] putinterval + 2 3 22 { + /i exch def + rscodes rscodes length i 2 sub 3 idiv sub 1 sub + encstr i 1 getinterval cvi 16 mul + encstr i 1 add 1 getinterval cvi 4 mul add + encstr i 2 add 1 getinterval cvi add + put + } for + rscodes length 5 sub -1 0 { + /i exch def + 0 1 4 { + /j exch def + rscodes i j add rscodes i j add get + rstable 64 [48 17 29 30 1] j get mul rscodes i 4 add get add get + xor put + } for + } for + + /checkcode (000000000000) def + 0 1 3 { + /i exch def + /enc rscodes 3 i sub get 4 3 string cvrs def + checkcode i 3 mul 3 enc length sub add enc putinterval + } for + + % Put checkcode and end characters + encstr 23 checkcode putinterval + encstr 35 encs 64 get putinterval + + /bbs encstr length array def + /bhs encstr length array def + 0 1 encstr length 1 sub { + /i exch def + /enc encstr i 1 getinterval def + enc (0) eq { + bbs i 0 height mul 8 div put + bhs i 8 height mul 8 div put + } if + enc (1) eq { + bbs i 3 height mul 8 div put + bhs i 5 height mul 8 div put + } if + enc (2) eq { + bbs i 0 height mul 8 div put + bhs i 5 height mul 8 div put + } if + enc (3) eq { + bbs i 3 height mul 8 div put + bhs i 2 height mul 8 div put + } if + } for + + /retval 4 dict def + retval (bbs) bbs put + retval (bhs) bhs put + /sbs bhs length 2 mul 1 sub string def + 0 1 sbs length 1 sub { + sbs exch 50 put % Fill with 2s + } for + retval (sbs) sbs put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/auspost load 0 1 dict put +% --END ENCODER auspost-- + +% --BEGIN ENCODER kix-- +/kix { + + 0 begin + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 0.3 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (0033) (0123) (0132) (1023) (1032) (1122) + (0213) (0303) (0312) (1203) (1212) (1302) + (0231) (0321) (0330) (1221) (1230) (1320) + (2013) (2103) (2112) (3003) (3012) (3102) + (2031) (2121) (2130) (3021) (3030) (3120) + (2211) (2301) (2310) (3201) (3210) (3300) + ] def + + % Create a string of the available characters + /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ) def + + /barlen barcode length def + /encstr barlen 4 mul string def + /txt barlen array def + + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + encstr i 4 mul enc putinterval + txt i [barcode i 1 getinterval i 16 mul textpos textfont textsize] put + } for + + /bbs encstr length array def + /bhs encstr length array def + 0 1 encstr length 1 sub { + /i exch def + /enc encstr i 1 getinterval def + enc (0) eq { + bbs i 3 height mul 8 div put + bhs i 2 height mul 8 div put + } if + enc (1) eq { + bbs i 0 height mul 8 div put + bhs i 5 height mul 8 div put + } if + enc (2) eq { + bbs i 3 height mul 8 div put + bhs i 5 height mul 8 div put + } if + enc (3) eq { + bbs i 0 height mul 8 div put + bhs i 8 height mul 8 div put + } if + } for + + /retval 4 dict def + retval (bbs) bbs put + retval (bhs) bhs put + /sbs bhs length 2 mul 1 sub string def + 0 1 sbs length 1 sub { + sbs exch 50 put % Fill with 2s + } for + retval (sbs) sbs put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/kix load 0 1 dict put +% --END ENCODER kix-- + +% --BEGIN ENCODER msi-- +/msi { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includecheck false def % Enable/disable checkdigit + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (13131313) (13131331) (13133113) (13133131) (13311313) + (13311331) (13313113) (13313131) (31131313) (31131331) + (31) (131) + ] def + + % Create a string of the available characters + /barchars (0123456789) def + + /barlen barcode length def % Length of the code + + includecheck { + /sbs barlen 8 mul 13 add string def + /txt barlen 1 add array def + } { + /sbs barlen 8 mul 5 add string def + /txt barlen array def + } ifelse + + + % Put start character + sbs 0 encs 10 get putinterval + /checksum 0 def + + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 8 mul 2 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 16 mul 4 add textpos textfont textsize] put + barlen i sub 2 mod 0 eq { + /checksum indx checksum add def + } { + /checksum indx 2 mul dup 10 idiv add checksum add def + } ifelse + } for + + % Put the checksum and end characters + includecheck { + /checksum 10 checksum 10 mod sub 10 mod def + sbs barlen 8 mul 2 add encs checksum get putinterval + includecheckintext { + txt barlen [barchars checksum 1 getinterval barlen 16 mul 4 add textpos textfont textsize] put + } { + txt barlen [( ) barlen 16 mul 4 add textpos textfont textsize] put + } ifelse + sbs barlen 8 mul 10 add encs 11 get putinterval + } { + sbs barlen 8 mul 2 add encs 11 get putinterval + } ifelse + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/msi load 0 1 dict put +% --END ENCODER msi-- + +% --BEGIN ENCODER plessey-- +/plessey { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /renderopts options def + /barcode exch def % We are given a barcode string + + /includetext false def % Enable/disable text + /includecheckintext false def + /textfont /Courier def + /textsize 10 def + /textpos -7 def + /height 1 def + + % Parse the input options + options { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /textfont textfont cvlit def + /textsize textsize cvr def + /textpos textpos cvr def + /height height cvr def + + % Create an array containing the character mappings + /encs + [ (13131313) (31131313) (13311313) (31311313) + (13133113) (31133113) (13313113) (31313113) + (13131331) (31131331) (13311331) (31311331) + (13133131) (31133131) (13313131) (31313131) + (31311331) (331311313) + ] def + + % Create a string of the available characters + /barchars (0123456789ABCDEF) def + + /barlen barcode length def % Length of the code + /sbs barlen 8 mul 33 add string def + /txt barlen 2 add array def + /checkbits barlen 4 mul 8 add array def + checkbits barlen 4 mul [ 0 0 0 0 0 0 0 0 ] putinterval + + % Put start character + sbs 0 encs 16 get putinterval + + 0 1 barlen 1 sub { + /i exch def + % Lookup the encoding for the each barcode character + barcode i 1 getinterval barchars exch search + pop % Discard true leaving pre + length /indx exch def % indx is the length of pre + pop pop % Discard seek and post + /enc encs indx get def % Get the indxth encoding + sbs i 8 mul 8 add enc putinterval % Put encoded digit into sbs + txt i [barcode i 1 getinterval i 16 mul 16 add textpos textfont textsize] put + checkbits i 4 mul [ + indx 1 and + indx -1 bitshift 1 and + indx -2 bitshift 1 and + indx -3 bitshift + ] putinterval + } for + + % Checksum is last 8 bits of a CRC using a salt + /checksalt [ 1 1 1 1 0 1 0 0 1 ] def + 0 1 barlen 4 mul 1 sub { + /i exch def + checkbits i get 1 eq { + 0 1 8 { + /j exch def + checkbits i j add checkbits i j add get checksalt j get xor put + } for + } if + } for + + % Calculate the value of the checksum digits + /checkval 0 def + 0 1 7 { + /i exch def + /checkval checkval 2 7 i sub exp cvi checkbits barlen 4 mul i add get mul add def + } for + + % Put the checksum characters + /checksum1 checkval -4 bitshift def + /checksum2 checkval 15 and def + sbs barlen 8 mul 8 add encs checksum1 get putinterval + sbs barlen 8 mul 16 add encs checksum2 get putinterval + includecheckintext { + txt barlen [barchars checksum1 1 getinterval barlen 16 mul 16 add textpos textfont textsize] put + txt barlen 1 add [barchars checksum2 1 getinterval barlen 1 add 16 mul 16 add textpos textfont textsize] put + } { + txt barlen [( ) barlen 16 mul 16 add textpos textfont textsize] put + txt barlen 1 add [( ) barlen 1 add 16 mul 16 add textpos textfont textsize] put + } ifelse + + % Put end character + sbs barlen 8 mul 24 add encs 17 get putinterval + + % Return the arguments + /retval 1 dict def + retval (sbs) sbs put + retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put + retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put + includetext { + retval (txt) txt put + } if + retval (opt) renderopts put + retval + + end + +} bind def +/plessey load 0 1 dict put +% --END ENCODER plessey-- + +% --BEGIN ENCODER symbol-- +/symbol { + + 0 begin % Confine variables to local scope + + /options exch def % We are given an option string + /barcode exch def % We are given a barcode string + + barcode (fima) eq { + /sbs (111515111) def + /bhs [.25 .25 .25 .25 .25] def + /bbs [0 0 0 0 0] def + } if + + barcode (fimb) eq { + /sbs (13111311131) def + /bhs [.25 .25 .25 .25 .25 .25] def + /bbs [0 0 0 0 0 0] def + } if + + barcode (fimc) eq { + /sbs (11131313111) def + /bhs [.25 .25 .25 .25 .25 .25] def + /bbs [0 0 0 0 0 0] def + } if + + barcode (fimd) eq { + /sbs (1111131311111) def + /bhs [.25 .25 .25 .25 .25 .25 .25] def + /bbs [0 0 0 0 0 0 0] def + } if + + % Return the arguments + /retval 4 dict def + retval (sbs) sbs put + retval (bhs) bhs put + retval (bbs) bbs put + retval (opt) options put + retval + + end + +} bind def +/symbol load 0 1 dict put +% --END ENCODER symbol-- + +% --BEGIN RENDERER-- +/barcode { + + 0 begin % Confine variables to local scope + + /args exch def % We are given some arguments + /sbs args (sbs) get def + /bhs args (bhs) get def + /bbs args (bbs) get def + /renderopts args (opt) get def + + % Get the text if known, otherwise it is empty + args (txt) known { + /txt args (txt) get def + } { + /txt [] def + } ifelse + + % Default options + /inkspread 0.15 def + /width 0 def + /barratio 1 def + /spaceratio 1 def + /showborder false def + /borderleft 10 def + /borderright 10 def + /bordertop 1 def + /borderbottom 1 def + /borderwidth 0.5 def + + % Parse the render options + renderopts { + token false eq {exit} if dup length string cvs (=) search + true eq {cvlit exch pop exch def} {cvlit true def} ifelse + } loop + + /inkspread inkspread cvr def + /width width cvr def + /barratio barratio cvr def + /spaceratio spaceratio cvr def + /borderleft borderleft cvr def + /borderright borderright cvr def + /bordertop bordertop cvr def + /borderbottom borderbottom cvr def + /borderwidth borderwidth cvr def + + % Create bar elements and put them into the bars array + /bars sbs length 1 add 2 idiv array def + /x 0.00 def + 0 1 sbs length 1 add 2 idiv 2 mul 2 sub { + /i exch def + i 2 mod 0 eq { % i is even + /d sbs i get 48 sub barratio mul barratio sub 1 add def % d=digit*r-r+1 + /h bhs i 2 idiv get 72 mul def % Height from bhs + /c d 2 div x add def % Centre of the bar = x + d/2 + /y bbs i 2 idiv get 72 mul def % Baseline from bbs + /w d inkspread sub def % bar width = digit - inkspread + bars i 2 idiv [h c y w] put % Add the bar entry + } { + /d sbs i get 48 sub spaceratio mul spaceratio sub 1 add def % d=digit*r-r+1 + } ifelse + /x x d add def % x+=d + } for + + gsave + + % Force symbol to given width + width 0 ne { + width 72 mul x div 1 scale + } if + + % Display the bars for elements in the bars array + bars { + {} forall + setlinewidth moveto 0 exch rlineto stroke + } forall + + % Display the border + showborder { + borderwidth setlinewidth + borderleft neg borderbottom neg moveto + x borderleft add borderright add 0 rlineto + 0 h borderbottom add bordertop add rlineto + x borderleft add borderright add neg 0 rlineto + 0 h borderbottom add bordertop add neg rlineto + closepath stroke + } if + + % Display the text for elements in the text array + txt { + {} forall + dup 0 ne {exch findfont exch scalefont setfont} {pop pop} ifelse + moveto show + } forall + + grestore + + end + +} bind def +/barcode load 0 1 dict put +% --END RENDERER-- + +% --END TEMPLATE-- diff --git a/Master/texmf-dist/dvips/pst-blur/pst-blur.pro b/Master/texmf-dist/dvips/pst-blur/pst-blur.pro new file mode 100644 index 00000000000..f480366f328 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-blur/pst-blur.pro @@ -0,0 +1,67 @@ +%% +%% This is file `pst-blur.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-blur.dtx (with options: `prolog') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from pst-blur.pro. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-blur.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +/tx@PstBlurDict 60 dict def +tx@PstBlurDict begin +/Iterate { + /SegLines ED + /ThisB ED /ThisG ED /ThisR ED + /NextB ED /NextG ED /NextR ED + /W 2.0 BlurRadius mul def + /WDec W SegLines div def + /RInc NextR ThisR sub SegLines div def + /GInc NextG ThisG sub SegLines div def + /BInc NextB ThisB sub SegLines div def + /R ThisR def + /G ThisG def + /B ThisB def + SegLines { + R G B + sqrt 3 1 roll sqrt 3 1 roll sqrt 3 1 roll + setrgbcolor + gsave W setlinewidth + stroke grestore + /W W WDec sub def + /R R RInc add def + /G G GInc add def + /B B BInc add def + } bind repeat +} def +/BlurShadow { + Shadow + /BlurSteps ED + /BlurRadius ED + dup mul /BEnd ED dup mul /GEnd ED dup mul /REnd ED + dup mul /BBeg ED dup mul /GBeg ED dup mul /RBeg ED + RBeg REnd add 0.5 mul /RMid ED + GBeg GEnd add 0.5 mul /GMid ED + BBeg BEnd add 0.5 mul /BMid ED + /OuterSteps BlurSteps 2 div cvi def + /InnerSteps BlurSteps OuterSteps sub def + 1 setlinejoin + RMid GMid BMid REnd GEnd BEnd OuterSteps Iterate + gsave RBeg sqrt GBeg sqrt BBeg sqrt setrgbcolor fill grestore + clip + 0 setlinejoin + RMid GMid BMid RBeg GBeg BBeg InnerSteps Iterate +} def +end diff --git a/Master/texmf-dist/dvips/pst-circ/pst-circ.pro b/Master/texmf-dist/dvips/pst-circ/pst-circ.pro new file mode 100644 index 00000000000..2b6b1914ec5 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-circ/pst-circ.pro @@ -0,0 +1,23 @@ +%! +% PostScript prologue for pst-circ.tex. +% For distribution, see pstricks.tex. +% +/GetNode { + tx@NodeDict begin + tx@NodeDict 1 index known { load GetCenter } { pop 0 0 } ifelse + end +} bind def /ZeroEq { abs 1E-10 lt } bind def /EqDr { + 4 copy 3 -1 roll sub 7 1 roll exch sub 5 1 roll 4 -1 roll + mul 3 1 roll mul exch sub } bind def +/InterLines { + EqDr /D1c exch def /D1b exch def /D1a exch def + EqDr /D2c exch def /D2b exch def /D2a exch def + D1a D2b mul D1b D2a mul sub dup ZeroEq + { pop pop pop 0 0 } + { + /Det exch def + D1b D2c mul D1c D2b mul sub Det div + D1a D2c mul D2a D1c mul sub Det div + } + ifelse } bind def +% END pst-circ.pro diff --git a/Master/texmf-dist/dvips/pst-eucl/pst-eucl.pro b/Master/texmf-dist/dvips/pst-eucl/pst-eucl.pro new file mode 100644 index 00000000000..c243e1403c9 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-eucl/pst-eucl.pro @@ -0,0 +1,132 @@ +%! +% PostScript prologue for pst-eucl.tex. +% Version 2002.12, 2002/12/01 +% For distribution, see pstricks.tex. +% +/tx@EcldDict 40 dict def tx@EcldDict begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Pi +/Pi 3.14159265359 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% e +/E 2.718281828459045 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> true (if |x| < 1E-6) +/ZeroEq { abs 1E-6 lt } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 -> a b c (ax-by+c=0 with a^2+b^2=1) +/EqDr { + 4 copy 3 -1 roll sub 7 1 roll exch sub 5 1 roll 4 -1 roll + mul 3 1 roll mul exch sub + 2 index dup mul 2 index dup mul add sqrt + 4 -1 roll 1 index div exch + 4 -1 roll 1 index div exch + 4 -1 roll 1 index div exch pop +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% orthogonal projection of M1 onto (OM2) +%% x1 y1 x2 y2 -> x3 y3 +/Project { + 2 copy dup mul exch dup mul add 5 1 roll 2 copy 5 -1 roll mul exch + 5 -1 roll mul add 4 -1 roll div dup 4 -1 roll mul exch 3 -1 roll mul +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a b c (ax2+bx+c=0) -> x1 y1 +/SolvTrin { + /c exch def /b exch def /a exch def + b dup mul a c mul 4 mul sub dup 0 lt + { pop 0 0 } %% no solutions + {sqrt dup b neg add a 2 mul div exch b add neg 2 a mul div } + ifelse } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 -> Dist +/ABDist { 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 -> x1-x2 y1-y2 +/ABVect { 3 -1 roll exch sub 3 1 roll sub exch } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x1 y1 x2 y2 x3 y3 x4 y4 -> x y +/InterLines { + EqDr /D1c exch def /D1b exch def /D1a exch def + EqDr /D2c exch def /D2b exch def /D2a exch def + D1a D2b mul D1b D2a mul sub dup ZeroEq + { pop pop pop 0 0 } %% parallel lines + { + /Det exch def + D1b D2c mul D1c D2b mul sub Det div + D1a D2c mul D2a D1c mul sub Det div + } + ifelse } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a b c R -> x1 y1 x2 y2 +/InterLineCircle { + /CR exch def /Dc exch def neg /Db exch def /Da exch def + ABVect /Vy exch def /Vx exch def + %% Dc==0 then O belong to the line + %% First project O on the line -> M (-ca;-cb) + %% l'abscisse de M sur (OM) divisée par R donne le cosinus + %Dc neg dup Db mul exch Da mul 2 copy 0 0 + %ABDist dup CR gt { pop pop pop 0 0 0 0 } + %{ ZeroEq { pop pop Db Da } if Atan /alpha exch def + Dc abs CR gt { 0 0 0 0 } + { Db neg Da neg Atan /alpha exch def + Dc CR div dup dup mul 1 exch sub sqrt exch Atan /beta exch def + alpha beta add dup cos CR mul exch sin CR mul + alpha beta sub dup cos CR mul exch sin CR mul + 4 copy ABVect Vy mul 0 le exch Vx mul 0 le and + { 4 2 roll } if } ifelse + } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% R R' OO' -> x1 y1 x2 y2 +/InterCircles { + /OOP exch def /CRP exch def /CR exch def + OOP dup mul CRP dup mul sub CR dup mul add OOP div 2 div + dup dup mul CR dup mul exch sub dup + 0 lt { pop pop 0 0 0 0 } { sqrt 2 copy neg } ifelse +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x y theta -> x' y' (rotation of theta) +/Rotate { + dup sin /sintheta exch def cos /costheta exch def /y exch def /x exch def + x costheta mul y sintheta mul sub + y costheta mul x sintheta mul add +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% N -> x y +/GetNode { + tx@NodeDict begin + tx@NodeDict 1 index known { load GetCenter } { pop 0 0 } ifelse + end +} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> ch(x) +/ch { dup Ex exch neg Ex add 2 div } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> sh(x) +/sh { dup Ex exch neg Ex sub 2 div } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x -> e^(x) +/Ex { E exch exp } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% x f g -> x y n +/NewtonSolving { + /g exch def /f exch def 0 + { %%% STACK: x0 n + 1 add exch %% one more loop + dup ZeroEq + { dup 0.0005 add fgeval + 1 index 0.0005 sub fgeval sub .001 div } + { dup 1.0005 mul fgeval + 1 index 0.9995 mul fgeval sub .001 2 index mul div } ifelse %%% STACK: n x0 fg'(x0) + %%% compute x1=x0-fg(x0)/fg'(x0) + 1 index fgeval exch div dup 4 1 roll sub exch %% stack: dx x0 n + 3 -1 roll ZeroEq %% exit if root found + 1 index 100 eq or { exit } if %% or looping for more than 100 times + } loop + dup 100 lt { exch dup /x exch def f } { pop 0 0 } ifelse + 3 -1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/fgeval { /x exch def f g sub } bind def +end +% END ps-euclide.pro diff --git a/Master/texmf-dist/dvips/pst-func/pst-func.pro b/Master/texmf-dist/dvips/pst-func/pst-func.pro new file mode 100644 index 00000000000..580e702c837 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-func/pst-func.pro @@ -0,0 +1,117 @@ +%% +%% This is file `pst-func.pro', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-func.tex' +%% +%% Herbert Voss <voss _at_ perce.de> +%% +%% 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-func' is a PSTricks package to plot special math functions +%% +%% +%% version 0.02 / 2004-11-08 Herbert Voss <voss _at_ pstricks.de> +% +/tx@FuncDict 40 dict def +tx@FuncDict begin +% +/eps1 1.0e-05 def +/eps2 1.0e-04 def +/MaxIter 255 def +/func { coeff Derivation FuncValue } def +/func' { coeff Derivation 1 add FuncValue } def +/func'' { coeff Derivation 2 add FuncValue } def +% +/NewtonMehrfach {% the start value must be on top of the stack + /Nx exch def + /Iter 0 def + { + /Iter Iter 1 add def + Nx func /F exch def % f(Nx) + F abs eps2 lt { exit } if + Nx func' /FS exch def % f'(Nx) + FS 0 eq { /FS 1.0e-06 def } if + Nx func'' /F2S exch def % f''(Nx) + 1.0 1.0 F F2S mul FS dup mul div sub div /J exch def + J F mul FS div /Diff exch def + /Nx Nx Diff sub def + Diff abs eps1 lt Iter MaxIter gt or { exit } if + } loop + Nx % the returned value ist the zero point +} def + +/Steffensen {% the start value must be on top of the stack + /y0 exch def % the start value + /Iter 0 def + { + y0 func /F exch def + F abs eps2 lt { exit } if + y0 F sub /Phi exch def + Phi func /F2 exch def + F2 abs eps2 le { exit }{ + Phi y0 sub dup mul Phi F2 sub 2 Phi mul sub y0 add div /Diff exch def + y0 Diff sub /y0 exch def + Diff abs eps1 le { exit } if + } ifelse + /Iter Iter 1 add def + Iter MaxIter gt { exit } if + } loop + y0 % the returned value ist the zero point +} def +% +/Horner {% x [coeff] must be on top of the stack + aload length + dup 2 add -1 roll + exch 1 sub { + dup 4 1 roll + mul add exch + } repeat + pop % the y value is on top of the stack +} def +% +/FuncValue {% x [coeff] Derivation must be on top of the stack + { + aload % a0 a1 a2 ... a(n-1) [array] + length % a0 a1 a2 ... a(n-1) n + 1 sub /grad exch def % a0 a1 a2 ... a(n-1) + grad -1 1 { % for n=grad step -1 until 1 + /n exch def % Laufvariable speichern + n % a0 a1 a2 ... a(n-1) n + mul % a0 a1 a2 ... a(n-1)*n + grad 1 add % a0 a1 a2 ... a(n-1)*n grad+1 + 1 roll % an*na0 a1 a2 ... a(n-2) + } for + pop % loesche a0 + grad array astore % [ a1 a2 ... a(n-2)] + } repeat + Horner +} def +% +/FindZeros { % dxN dxZ must be on top of the stack (x0..x1 the intervall) + /dxZ exch def /dxN exch def + /pstZeros [] def + x0 dxZ x1 { % suche Nullstellen + /xWert exch def + xWert NewtonMehrfach + %xWert Steffensen + /xNull exch def + pstZeros aload length /Laenge exch def % now test if value is a new one + Laenge 0 eq + { xNull 1 } + { /newZero true def + Laenge { + xNull sub abs dxN lt { /newZero false def } if + } repeat + pstZeros aload pop + newZero { xNull Laenge 1 add } { Laenge } ifelse } ifelse + array astore /pstZeros exch def + } for +} def +% +% +end diff --git a/Master/texmf-dist/dvips/pst-geo/map3d.pro b/Master/texmf-dist/dvips/pst-geo/map3d.pro new file mode 100644 index 00000000000..f65513ce4bf --- /dev/null +++ b/Master/texmf-dist/dvips/pst-geo/map3d.pro @@ -0,0 +1,216 @@ +%version 29 novembre 2003 +% modification 11/05/2004 +% allégée de 3D.pro +/tx@map3DDict 100 dict def +tx@map3DDict begin +% + /CalculsPoints{% + /region exch def + newpath + /nbr region length def % nombre de régions + 0 1 nbr 1 sub { + /counter exch def % pour mémoriser le premier point vu + counter + region exch get aload pop + /Y exch def /X exch def + /Xpoint { Y cos X cos mul Rsphere mul } def + /Ypoint { Y cos X sin mul Rsphere mul } def + /Zpoint { Y sin Rsphere mul } def + CalculsPointsAfterTransformations + CalcCoordinates + Test + PS 0 lt {% marque le point + /X1 X def + /Y1 Y def + moveto + exit % termine + }{ pop pop } ifelse + } for + nbr counter sub 1 gt { + /ncount 0 def % hv 2004-05-04 + counter 1 nbr 1 sub { + /ctrl exch def + /ncount ncount 1 add def + region ctrl get aload pop + ncount step mod 0 eq ctrl nbr sub 1 eq or { % hv 2004-05-11 + /Y exch def /X exch def + /Xpoint { Y cos X cos mul Rsphere mul } def + /Ypoint { Y cos X sin mul Rsphere mul } def + /Zpoint { Y sin Rsphere mul } def + CalculsPointsAfterTransformations + CalcCoordinates + Test + PS 0 le { lineto } if + PS 0 gt { /Angle Yi Xi atan def + RsphereScreen Angle cos mul + RsphereScreen Angle sin mul + lineto + } if + }{ pop pop } ifelse % hv 2004-05-11 + } for + } if +} def +% +/MatriceTransformation{% + /Sin1 THETA sin def + /Sin2 PHI sin def + /Cos1 THETA cos def + /Cos2 PHI cos def + /Cos1Sin2 Cos1 Sin2 mul def + /Sin1Sin2 Sin1 Sin2 mul def + /Cos1Cos2 Cos1 Cos2 mul def + /Sin1Cos2 Sin1 Cos2 mul def + /XpointVue Dobs Cos1Cos2 mul def + /YpointVue Dobs Sin1Cos2 mul def + /ZpointVue Dobs Sin2 mul def + /M11 RotZ cos RotY cos mul def + /M12 RotZ cos RotY sin mul RotX sin mul + RotZ sin RotX cos mul sub def + /M13 RotZ cos RotY sin mul RotX cos mul + RotZ sin RotX sin mul add def + /M21 RotZ sin RotY cos mul def + /M22 RotZ sin RotY sin RotX sin mul mul + RotZ cos RotX cos mul add def + /M23 RotZ sin RotY sin mul RotX cos mul + RotZ cos RotX sin mul sub def + /M31 RotY sin neg def + /M32 RotX sin RotY cos mul def + /M33 RotX cos RotY cos mul def + } def +/CalcCoordinates{% + formulesTroisD + Xi xunit Yi yunit + } + def +% pour la 3D conventionnelle +/formulesTroisD{% + /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def + /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def + /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def + } +def +% +/CalculsPointsAfterTransformations{% + /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add def + /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add def + /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add def + } +def +% +/Test { % test de visibilité d'un point +% rayon vers point de vue + /RXvue Xabscisse XpointVue sub def + /RYvue Yordonnee YpointVue sub def + /RZvue Zcote ZpointVue sub def +% test de visibilité + /PS RXvue Xabscisse mul % produit scalaire + RYvue Yordonnee mul add + RZvue Zcote mul add + def +} def +% +/MaillageSphere { +gsave +maillageColor setrgbcolor +0.25 setlinewidth +0 increment 360 increment sub {% + /theta exch def +departPhi increment 90 increment sub {% + /phi exch def +% newpath + /Xpoint Rsphere theta cos mul phi cos mul def + /Ypoint Rsphere theta sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + moveto +% Centre de la facette + /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def + /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def + /Zpoint Rsphere phi increment 2 div add sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale à la facette + /nXfacette xCentreFacette def + /nYfacette yCentreFacette def + /nZfacette zCentreFacette def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilité + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +condition { +theta 1 theta increment add {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi cos mul def + /Ypoint Rsphere theta1 sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi 1 phi increment add { + /phi1 exch def + /Xpoint Rsphere theta increment add cos mul phi1 cos mul def + /Ypoint Rsphere theta increment add sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta increment add -1 theta {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi increment add cos mul def + /Ypoint Rsphere theta1 sin mul phi increment add cos mul def + /Zpoint Rsphere phi increment add sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi increment add -1 phi { + /phi1 exch def + /Xpoint Rsphere theta cos mul phi1 cos mul def + /Ypoint Rsphere theta sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +stroke +} def +% +/DrawCitys { +/CITY exch def +/Rayon exch def +/nbr CITY length def % nombre de villes +0 1 nbr 1 sub { + /compteur exch def + CITY compteur get aload pop + /X exch def /Y exch def + /Xpoint {% + Y cos X cos mul Rsphere mul + } def + /Ypoint {% + Y cos X sin mul Rsphere mul + } def + /Zpoint { Y sin Rsphere mul } def +CalculsPointsAfterTransformations + CalcCoordinates +Test +PS 0 lt % + {1 0 0 setrgbcolor newpath Rayon 0 360 arc closepath fill}{pop pop} + ifelse +} for +} def +end diff --git a/Master/texmf-dist/dvips/pst-geo/map3dII.pro b/Master/texmf-dist/dvips/pst-geo/map3dII.pro new file mode 100644 index 00000000000..543014d2f03 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-geo/map3dII.pro @@ -0,0 +1,206 @@ +%version 14 May 2004 +% allégée de 3D.pro +/tx@mapII3DDict 100 dict def +tx@mapII3DDict begin +% + /CalculsPoints{% + /region exch def + newpath + /nbr region length def % nombre de régions + nbr 2 sub -2 2 { + /Counter exch def + region Counter get + /Y exch def + region Counter 1 add get + /X exch def + /Xpoint { Y cos X cos mul Rsphere mul } def + /Ypoint { Y cos X sin mul Rsphere mul } def + /Zpoint { Y sin Rsphere mul } def + CalculsPointsAfterTransformations + CalcCoordinates + Test + PS 0 lt {% marque le point + moveto + exit % termine + } {pop pop} ifelse + } for + /ncount 0 def % hv 2004-05-04 + /stepPoint step def + Counter step div 2 lt { stepPoint 1 def } if % hv 2004-05-04 + Counter 2 sub -2 2 { + /Counter exch def + /ncount ncount 1 add def % hv 2004-05-04 + ncount stepPoint ge Counter 2 le or { % hv 2004-05-04 + region Counter get + /Y exch def + region Counter 1 add get + /X exch def + /Xpoint { Y cos X cos mul Rsphere mul } def + /Ypoint { Y cos X sin mul Rsphere mul } def + /Zpoint { Y sin Rsphere mul } def + CalculsPointsAfterTransformations + CalcCoordinates + Test + PS 0 lt { lineto }{ pop pop } ifelse + /ncount 0 def % hv 2004-05-04 + }{ /ncount ncount 1 add def } ifelse % hv 2004-05-04 + } for +} def +% +/MatriceTransformation{% + /Sin1 THETA sin def + /Sin2 PHI sin def + /Cos1 THETA cos def + /Cos2 PHI cos def + /Cos1Sin2 Cos1 Sin2 mul def + /Sin1Sin2 Sin1 Sin2 mul def + /Cos1Cos2 Cos1 Cos2 mul def + /Sin1Cos2 Sin1 Cos2 mul def + /XpointVue Dobs Cos1Cos2 mul def + /YpointVue Dobs Sin1Cos2 mul def + /ZpointVue Dobs Sin2 mul def + /M11 RotZ cos RotY cos mul def + /M12 RotZ cos RotY sin mul RotX sin mul + RotZ sin RotX cos mul sub def + /M13 RotZ cos RotY sin mul RotX cos mul + RotZ sin RotX sin mul add def + /M21 RotZ sin RotY cos mul def + /M22 RotZ sin RotY sin RotX sin mul mul + RotZ cos RotX cos mul add def + /M23 RotZ sin RotY sin mul RotX cos mul + RotZ cos RotX sin mul sub def + /M31 RotY sin neg def + /M32 RotX sin RotY cos mul def + /M33 RotX cos RotY cos mul def + } def +/CalcCoordinates{% + formulesTroisD + Xi xunit Yi yunit +} def +% pour la 3D conventionnelle +/formulesTroisD{% + /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def + /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def + /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def + } +def +% +/CalculsPointsAfterTransformations{% + /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add def + /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add def + /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add def + } +def +% +/Test { % test de visibilité d'un point +% rayon vers point de vue + /RXvue Xabscisse XpointVue sub def + /RYvue Yordonnee YpointVue sub def + /RZvue Zcote ZpointVue sub def +% test de visibilité + /PS RXvue Xabscisse mul % produit scalaire + RYvue Yordonnee mul add + RZvue Zcote mul add + def +} def +% +/MaillageSphere { +0 increment 360 increment sub {% + /theta exch def +departPhi increment 90 increment sub {% + /phi exch def +% newpath + /Xpoint Rsphere theta cos mul phi cos mul def + /Ypoint Rsphere theta sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + moveto +% Centre de la facette + /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def + /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def + /Zpoint Rsphere phi increment 2 div add sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale à la facette + /nXfacette xCentreFacette def + /nYfacette yCentreFacette def + /nZfacette zCentreFacette def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilité + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +condition { +theta 1 theta increment add {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi cos mul def + /Ypoint Rsphere theta1 sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi 1 phi increment add { + /phi1 exch def + /Xpoint Rsphere theta increment add cos mul phi1 cos mul def + /Ypoint Rsphere theta increment add sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta increment add -1 theta {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi increment add cos mul def + /Ypoint Rsphere theta1 sin mul phi increment add cos mul def + /Zpoint Rsphere phi increment add sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi increment add -1 phi { + /phi1 exch def + /Xpoint Rsphere theta cos mul phi1 cos mul def + /Ypoint Rsphere theta sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +gsave +0 setgray +stroke +grestore +} def +% +/DrawCitys { + /CITY exch def + /Rayon exch def + /nbr CITY length def % nombre de villes + 0 1 nbr 1 sub { + /compteur exch def + CITY compteur get aload pop + /X exch def /Y exch def + /Xpoint { Y cos X cos mul Rsphere mul } def + /Ypoint { Y cos X sin mul Rsphere mul } def + /Zpoint { Y sin Rsphere mul } def + CalculsPointsAfterTransformations + CalcCoordinates + Test + PS 0 lt % + { 1 0 0 setrgbcolor newpath Rayon 0 360 arc closepath fill }{ pop pop } ifelse + } for +} def +end diff --git a/Master/texmf-dist/dvips/pst-ghsb/pst-ghsb.pro b/Master/texmf-dist/dvips/pst-ghsb/pst-ghsb.pro new file mode 100644 index 00000000000..23dc9135cf7 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-ghsb/pst-ghsb.pro @@ -0,0 +1,90 @@ +%! +% -*- Mode: Postscript -*- +% pst-ghsb.pro --- PostScript header file pst-ghsb.pro +% For the PSTricks HSB mode gradient fillstyle +% Based on pst-grad.pro from Timothy van Zandt +% Syntax: +% H0 S0 B0 H1 S1 B1 MidPoint NumLines Angle GradientFillHSB +% +% Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr> +% Created the : Tue May 13 11:12:36 1997 +% Version : 1.0 +% Last mod. by : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr> +% Last mod. the : Wed May 14 18:48:03 1997 +% + +% Syntax: +% H0 S0 B0 H1 S1 B1 NumLines MidPoint Angle GradientFillHSB + +/tx@GradientHSBDict 40 dict def +tx@GradientHSBDict begin +/GradientFillHSB { + rotate + /MidPoint ED + /NumLines ED + /LastBrightness ED + /LastSaturation ED + /LastHue ED + /FirstBrightness ED + /FirstSaturation ED + /FirstHue ED + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack + /y ED /x ED + 2 copy translate + y sub neg /y ED + x sub neg /x ED + % This avoids gaps due to rounding errors: + LastHue FirstHue add 2 div + LastSaturation FirstSaturation add 2 div + LastBrightness FirstBrightness add 2 div + sethsbcolor + fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def + MidLine NumLines 2 sub gt + { /MidLine NumLines def } + { MidLine 2 lt { /MidLine 0 def } if } + ifelse + MidLine 0 gt + { + /Hue FirstHue def + /Saturation FirstSaturation def + /Brightness FirstBrightness def + /HueIncrement LastHue FirstHue sub MidLine 1 sub div def + /SaturationIncrement LastSaturation FirstSaturation sub MidLine 1 sub + div def + /BrightnessIncrement LastBrightness FirstBrightness sub MidLine 1 sub + div def + MidLine { GradientLoopHSB } repeat + } if + MidLine NumLines lt + { + /Hue LastHue def + /Saturation LastSaturation def + /Brightness LastBrightness def + /HueIncrement FirstHue LastHue sub NumLines MidLine sub 1 sub div def + /SaturationIncrement FirstSaturation LastSaturation sub + NumLines MidLine sub 1 sub div def + /BrightnessIncrement FirstBrightness LastBrightness sub + NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoopHSB } repeat + } if +} def +/GradientLoopHSB { + 0 CurrentY moveto + x 0 rlineto + 0 YSizePerLine rlineto + x neg 0 rlineto + closepath + Hue Saturation Brightness sethsbcolor fill + /CurrentY CurrentY YSizePerLine add def + /Brightness Brightness BrightnessIncrement add def + /Saturation Saturation SaturationIncrement add def + /Hue Hue HueIncrement add def +} def + +end +% END pst-ghsb.pro diff --git a/Master/texmf-dist/dvips/pst-light3d/pst-light3d.pro b/Master/texmf-dist/dvips/pst-light3d/pst-light3d.pro new file mode 100644 index 00000000000..edb6494350e --- /dev/null +++ b/Master/texmf-dist/dvips/pst-light3d/pst-light3d.pro @@ -0,0 +1,88 @@ +%% +%% This is file `pst-li3d.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-li3d.dtx (with options: `postscript-header') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from pst-li3d.pro. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-li3d.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% Package `pst-li3d.dtx' +%% +%% Denis Girou (CNRS/IDRIS - France) <Denis.Girou@idris.fr> +%% and Peter Kleiweg (Rijksuniversiteit Groningen - Nederlands) +%% <kleiweg@let.rug.nl> %% %% July 10, 2003 +%% +%% 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-li3d' is a PSTricks package for three dimensional +%% lighten effect on characters and PSTricks graphics. +%% +%% +/tx@LightThreeDDict 40 dict def +tx@LightThreeDDict begin +/LightThreeDMove { + /y0c exch def + /x0c exch def + /xc x0c def + /yc y0c def + newpath } def +/LightThreeDLine { + /yyc exch def + /xxc exch def + yyc yc sub xxc xc sub 1 index 0 eq 1 + index 0 eq and not { atan + /ac exch def + ac LightThreeDMINangle le ac LightThreeDMAXangle ge or + { ac LightThreeDAngle sub 2 mul cos 1 add LightThreeDColorPsCommand + xc yc moveto xxc yyc lineto LightThreeDDXa LightThreeDDYa + rlineto xc LightThreeDDXa add yc LightThreeDDYa add + lineto closepath fill } if } if + /xc xxc def + /yc yyc def } def +/LightThreeDCurve { + /y4c exch def + /x4c exch def + /y3c exch def + /x3c exch def + /y2c exch def + /x2c exch def + /y1c yc def + /x1c xc def +1 LightThreeDSteps div 1 LightThreeDSteps div 1 { + /t exch def + 3 t sub x1c mul t 2 sub x2c mul 1 t sub x3c mul add 3 mul add x4c + t mul add t mul x2c x1c sub 3 mul add t mul x1c add % X + 3 t sub y1c mul t 2 sub y2c mul + 1 t sub y3c mul add 3 mul add y4c t mul add t + mul y2c y1c sub 3 mul add t mul y1c add % Y + LightThreeDLine + } for +} def +/LightThreeDClose { + x0c 0 eq {x0c} {x0c 1 add} ifelse y0c 0 eq {y0c} {y0c 1 add} ifelse + LightThreeDLine newpath +} def +/LightThreeDPathForAll { + { LightThreeDMove} { LightThreeDLine } { LightThreeDCurve } { LightThreeDClose } + pathforall} def +end +%% +%% End of file `pst-li3d.pro'. diff --git a/Master/texmf-dist/dvips/pst-math/pst-math.pro b/Master/texmf-dist/dvips/pst-math/pst-math.pro new file mode 100644 index 00000000000..1dd5efc7769 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-math/pst-math.pro @@ -0,0 +1,108 @@ +%! +% -*- Mode: Postscript -*- +% pst-math.pro --- PostScript header file pst-math.pro +% +% Author : Christophe JORSSEN <christophe.jorssen@libre.fr.invalid> +% ('libre' is the french word for 'free' if you want to contact me ;-)) +% Created the : Sat 20 March 2004 +% Last Mod : $Date: 2004/05/08 13:40:15 $ +% Version : 1.0 $Revision: 1.1 $ +% +/PI 3.14159265359 def +/ENeperian 2.71828182846 def + +/DegToRad {PI mul 180 div} bind def +/RadToDeg {180 mul PI div} bind def + +/COS {RadToDeg cos} bind def +/SIN {RadToDeg sin} bind def +/TAN {dup SIN exch COS Div} bind def +/tan {dup sin exch cos Div} bind def +/ATAN {neg -1 atan 180 sub DegToRad} bind def +/ACOS {dup dup mul neg 1 add sqrt exch atan DegToRad} bind def +/acos {dup dup mul neg 1 add sqrt exch atan} bind def +/ASIN {neg dup dup mul neg 1 add sqrt neg atan 180 sub DegToRad} bind def +/asin {neg dup dup mul neg 1 add sqrt neg atan 180 sub} bind def + +/EXP {ENeperian exch exp} bind def + +/COSH {dup EXP exch neg EXP add 2 div} bind def +/SINH {dup EXP exch neg EXP sub 2 div} bind def +/TANH {dup SINH exch COSH div} bind def +/ACOSH {dup dup mul 1 sub sqrt add ln} bind def +/ASINH {dup dup mul 1 add sqrt add ln} bind def +/ATANH {dup 1 add exch neg 1 add Div ln 2 div} bind def + +/SINC {dup SIN exch Div} bind def + +/GAUSS {dup mul 2 mul dup 4 -2 roll sub dup mul exch div neg EXP exch PI mul sqrt div} bind def + +/GAMMALN {dup dup dup 5.5 add dup ln 3 -1 roll .5 add mul sub neg 1.000000000190015 + 0 1 5 { + [76.18009172947146 -86.50532032941677 24.0140982483091 -1.231739572450155 + .1208650973866179E-2 -.5395239384953E-5 2.5066282746310005] exch get + 4 -1 roll 1 add dup 5 1 roll div add} for + 4 -1 roll div 2.5066282746310005 mul ln add exch pop} bind def + +/BETA {2 copy add GAMMALN neg exch GAMMALN 3 -1 roll GAMMALN EXP} bind def + +/HORNER {aload length + dup 2 add -1 roll + exch 1 sub { + dup 4 1 roll + mul add exch + } repeat + pop +} bind def + +/BESSEL_J0 {dup abs 8 lt { + dup mul dup [57568490574 -13362590354 651619640.7 -11214424.18 77392.33017 -184.9052456] HORNER + exch [57568490411 1029532985 9494680.718 59272.64853 267.8532712 1] HORNER + Div} + {abs dup .636619772 exch div sqrt exch dup .785398164 sub exch 8 exch div dup dup mul dup + [1 -1.098628627E-2 .2734510407E-4 -.2073370639E-5 .2093887211E-6] HORNER + 3 index COS mul + exch [-.1562499995E-1 .1430488765E-3 -.6911147651E-5 .7621095161E-6 -.934945152E-7] HORNER + 4 -1 roll SIN mul 3 -1 roll mul neg add mul} + ifelse} bind def + +/BESSEL_Y0 {dup 8 lt { + dup dup mul dup [-2957821389 7062834065 -512359803.6 10879881.29 -86327.92757 228.4622733] HORNER + exch [40076544269 745249964.8 7189466.438 47447.26470 226.1030244 1] HORNER + Div exch dup ln exch BESSEL_J0 .636619772 mul mul add} + {dup .636619772 exch div sqrt exch dup .785398164 sub exch 8 exch div dup dup mul dup + [1 -.1098628627E-2 .2734510407E-4 -.2073370639E-5 .2093887211E-6] HORNER + 3 index SIN mul + exch [-.1562499995E-1 .1430488765E-3 -.6911147651E-5 .7621095161E-6 -.934945152E-7] HORNER + 4 -1 roll COS mul 3 -1 roll mul add mul} + ifelse} bind def + +/BESSEL_J1 {dup abs 8 lt { + dup dup mul dup 3 -2 roll [72362614232 -7895059235 242396853.1 -2972611.439 15704.48260 -30.16036606] HORNER mul + exch [144725228442 2300535178 18583304.74 99447.43394 376.9991397 1] HORNER + Div} + {dup abs dup .636619772 exch div sqrt exch dup 2.356194491 sub exch 8 exch div dup dup mul dup + [1 .183105E-2 -.3516396496E-4 .2457520174E-5 -.240337019E-6] HORNER + 3 index COS mul + exch [.04687499995 6.2002690873E-3 .8449199096E-5 -.88228987E-6 .105787412E-6] HORNER + 4 -1 roll SIN mul 3 -1 roll mul neg add mul exch dup abs Div mul} + ifelse} bind def + +/BESSEL_Y1 {dup 8 lt { + dup dup dup mul dup [-.4900604943E13 .1275274390E13 -.5153428139E11 .7349264551E9 -.4237922726E7 .8511937935E4] HORNER + exch [.2499580570E14 .4244419664E12 .3733650367E10 .2245904002E8 .1020426050E6 .3549632885E3 1] HORNER + Div mul exch dup dup ln exch BESSEL_J1 mul exch 1 exch div sub .636619772 mul add} + {dup .636619772 exch div sqrt exch dup 2.356194491 sub exch 8 exch div dup dup mul dup + [1 .183105E-2 -.3516396496E-4 .2457520174E-5 -.240337019E-6] HORNER + 3 index SIN mul + exch [.04687499995 -.2002690873E-3 .8449199096E-5 6.88228987E-6 .105787412E-6] HORNER + 4 -1 roll COS mul 3 -1 roll mul add mul} + ifelse} bind def + +% En cours... +/BESSEL_Yn {dup 0 eq {pop BESSEL_Y0}{dup 1 eq {pop BESSEL_Y1}{ + exch dup BESSEL_Y0 exch dup BESSEL_Y1 exch 2 exch Div { + mul 3 -1 roll mul 2 index sub pstack} for + } ifelse } ifelse } bind def + +% END pst-math.pro diff --git a/Master/texmf-dist/dvips/pst-slpe/pst-slpe.pro b/Master/texmf-dist/dvips/pst-slpe/pst-slpe.pro new file mode 100644 index 00000000000..806765693f7 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-slpe/pst-slpe.pro @@ -0,0 +1,153 @@ +%% +%% This is file `pst-slpe.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-slpe.dtx (with options: `prolog') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from pst-slpe.pro. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-slpe.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +/tx@PstSlopeDict 60 dict def tx@PstSlopeDict begin +/max {2 copy lt {exch} if pop} bind def +/Iterate { + 1 sub /NumSegs ED + dup mul 3 1 roll dup mul 3 1 roll dup mul 3 1 roll + setrgbcolor currenthsbcolor + /ThisB ED + /ThisS ED + /ThisH ED + /ThisPt ED + gsave fill grestore + NumSegs { + dup mul 3 1 roll dup mul 3 1 roll dup mul 3 1 roll + setrgbcolor currenthsbcolor + /NextB ED + /NextS ED + /NextH ED + /NextPt ED + ThisPt NextPt sub ThisPt div NumSteps mul cvi /SegSteps exch def + /NumSteps NumSteps SegSteps sub def + SegSteps 0 eq not { + ThisS 0 eq {/ThisH NextH def} if + NextS 0 eq {/NextH ThisH def} if + ThisH NextH sub 0.5 gt + {/NextH NextH 1.0 add def} + { NextH ThisH sub 0.5 ge {/ThisH ThisH 1.0 add def} if } + ifelse + /B ThisB def + /S ThisS def + /H ThisH def + /BInc NextB ThisB sub SegSteps div def + /SInc NextS ThisS sub SegSteps div def + /HInc NextH ThisH sub SegSteps div def + SegSteps { + H dup 1. gt {1. sub} if S B sethsbcolor + currentrgbcolor + sqrt 3 1 roll sqrt 3 1 roll sqrt 3 1 roll + setrgbcolor + DrawStep + /H H HInc add def + /S S SInc add def + /B B BInc add def + } bind repeat + /ThisH NextH def + /ThisS NextS def + /ThisB NextB def + /ThisPt NextPt def + } if + } bind repeat +} def +/PatchRadius { + Radius 0 eq { + /UpdRR { dup mul exch dup mul add RR max /RR ED } bind def + gsave + flattenpath + /RR 0 def + {UpdRR} {UpdRR} {} {} pathforall + grestore + /Radius RR sqrt def + } if +} def +/SlopesFill { + gsave + 180 add rotate + /NumSteps ED + clip + pathbbox + /h ED /w ED + 2 copy translate + h sub neg /h ED + w sub neg /w ED + /XInc w NumSteps div def + /DrawStep { + 0 0 XInc h rectfill + XInc 0 translate + } bind def + Iterate + grestore +} def +/CcSlopesFill { + gsave + /Radius ED + /CenterY ED + /CenterX ED + /NumSteps ED + clip + pathbbox + /h ED /w ED + 2 copy translate + h sub neg /h ED + w sub neg /w ED + w CenterX mul h CenterY mul translate + PatchRadius + /RadPerStep Radius NumSteps div neg def + /Rad Radius def + /DrawStep { + 0 0 Rad 0 360 arc + closepath fill + /Rad Rad RadPerStep add def + } bind def + Iterate + grestore +} def +/RadSlopesFill { + gsave + rotate + /Radius ED + /CenterY ED + /CenterX ED + /NumSteps ED + clip + pathbbox + /h ED /w ED + 2 copy translate + h sub neg /h ED + w sub neg /w ED + w CenterX mul h CenterY mul translate + PatchRadius + /AngleIncrement 360 NumSteps div neg def + /dY AngleIncrement sin AngleIncrement cos div Radius mul def + /DrawStep { + 0 0 moveto + Radius 0 rlineto + 0 dY rlineto + closepath fill + AngleIncrement rotate + } bind def + Iterate + grestore +} def +end diff --git a/Master/texmf-dist/dvips/pst-vue3d/3D.pro b/Master/texmf-dist/dvips/pst-vue3d/3D.pro new file mode 100644 index 00000000000..dc7bf00331d --- /dev/null +++ b/Master/texmf-dist/dvips/pst-vue3d/3D.pro @@ -0,0 +1,2089 @@ +%version 31 octobre 2003 +% +/tx@3DDict 100 dict def +tx@3DDict begin +/Cube{% + /XA M11 A mul M12 B mul add M13 C mul add CX add def + /YA M21 A mul M22 B mul add M23 C mul add CY add def + /ZA M31 A mul M32 B mul add M33 C mul add CZ add def + /XB M11 A mul neg M12 B mul add M13 C mul add CX add def + /YB M21 A mul neg M22 B mul add M23 C mul add CY add def + /ZB M31 A mul neg M32 B mul add M33 C mul add CZ add def + /XC M11 A mul neg M12 B mul neg add M13 C mul add CX add def + /YC M21 A mul neg M22 B mul neg add M23 C mul add CY add def + /ZC M31 A mul neg M32 B mul neg add M33 C mul add CZ add def + /XD M11 A mul M12 B mul neg add M13 C mul add CX add def + /YD M21 A mul M22 B mul neg add M23 C mul add CY add def + /ZD M31 A mul M32 B mul neg add M33 C mul add CZ add def + /XE M11 A mul M12 B mul add M13 C mul sub CX add def + /YE M21 A mul M22 B mul add M23 C mul sub CY add def + /ZE M31 A mul M32 B mul add M33 C mul sub CZ add def + /XF M11 A mul neg M12 B mul add M13 C mul sub CX add def + /YF M21 A mul neg M22 B mul add M23 C mul sub CY add def + /ZF M31 A mul neg M32 B mul add M33 C mul sub CZ add def + /XG M11 A mul neg M12 B mul sub M13 C mul sub CX add def + /YG M21 A mul neg M22 B mul sub M23 C mul sub CY add def + /ZG M31 A mul neg M32 B mul sub M33 C mul sub CZ add def + /XH M11 A mul M12 B mul sub M13 C mul sub CX add def + /YH M21 A mul M22 B mul sub M23 C mul sub CY add def + /ZH M31 A mul M32 B mul sub M33 C mul sub CZ add def +% Centres des faces : condition de visibilité +% FACE 1 +% OC1 + /XC1 M13 C mul CX add def + /YC1 M23 C mul CY add def + /ZC1 M33 C mul CZ add def +% Normale à la face 1 + /NX1 M13 C mul def + /NY1 M23 C mul def + /NZ1 M33 C mul def +% rayon vers point de vue + /RXvue1 XC1 XpointVue sub def + /RYvue1 YC1 YpointVue sub def + /RZvue1 ZC1 ZpointVue sub def +% produit scalaire + /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def +% FACE 2 +% OC2 + /XC2 M11 A mul CX add def + /YC2 M21 A mul CY add def + /ZC2 M31 A mul CZ add def +% normale à la face 2 + /NX2 M11 A mul def + /NY2 M21 A mul def + /NZ2 M31 A mul def +% rayon vers point de vue + /RXvue2 XC2 XpointVue sub def + /RYvue2 YC2 YpointVue sub def + /RZvue2 ZC2 ZpointVue sub def +% produit scalaire + /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def +% FACE 3 +% OC3 + /XC3 M13 C neg mul CX add def + /YC3 M23 C neg mul CY add def + /ZC3 M33 C neg mul CZ add def +% normale à la face 3 + /NX3 M13 C neg mul def + /NY3 M23 C neg mul def + /NZ3 M33 C neg mul def +% rayon vers point de vue + /RXvue3 XC3 XpointVue sub def + /RYvue3 YC3 YpointVue sub def + /RZvue3 ZC3 ZpointVue sub def +% produit scalaire + /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def +% FACE 4 +% OC4 + /XC4 M11 A neg mul CX add def + /YC4 M21 A neg mul CY add def + /ZC4 M31 A neg mul CZ add def +% normale à la face 4 + /NX4 M11 A neg mul def + /NY4 M21 A neg mul def + /NZ4 M31 A neg mul def +% rayon vers point de vue + /RXvue4 XC4 XpointVue sub def + /RYvue4 YC4 YpointVue sub def + /RZvue4 ZC4 ZpointVue sub def +% produit scalaire + /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def +% FACE 5 +% OC5 + /XC5 M12 B neg mul CX add def + /YC5 M22 B neg mul CY add def + /ZC5 M32 B neg mul CZ add def +% normale à la face 5 + /NX5 M12 B neg mul def + /NY5 M22 B neg mul def + /NZ5 M32 B neg mul def +% rayon vers point de vue + /RXvue5 XC5 XpointVue sub def + /RYvue5 YC5 YpointVue sub def + /RZvue5 ZC5 ZpointVue sub def +% produit scalaire + /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def +% FACE 6 +% OC6 + /XC6 M12 B mul CX add def + /YC6 M22 B mul CY add def + /ZC6 M32 B mul CZ add def +% normale à la face 6 + /NX6 M12 B mul def + /NY6 M22 B mul def + /NZ6 M32 B mul def +% rayon vers point de vue + /RXvue6 XC6 XpointVue sub def + /RYvue6 YC6 YpointVue sub def + /RZvue6 ZC6 ZpointVue sub def +% produit scalaire + /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def +% faceOne +PS1 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceOne setrgbcolor +fill +grestore +stroke +} if +% faceTwo +PS2 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceTwo setrgbcolor +fill +grestore +stroke +} if +% face three +PS3 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XE def + /Yordonnee YE def + /Zcote ZE def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceThree setrgbcolor +fill +grestore +stroke +} if +% face four +PS4 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFour setrgbcolor +fill +grestore +stroke +} if +% face five +PS5 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFive setrgbcolor +fill +grestore +stroke +} if +% face six +PS6 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceSix setrgbcolor +fill +grestore +stroke +} if +} +def +% +/PointsDie{% +PS6 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +C 2 div neg C C 2 div { + /ZCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Xpoint XCpoint def + /Ypoint B def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Xpoint Rpoint Angle sin mul XCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for + } if +PS5 0 Condition{ % +reduction reduction scale +newpath + /Ypoint B neg def + /XCpoint A 2 div neg def + /ZCpoint C 2 div def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint A 2 div def + /ZCpoint C 2 div neg def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint 0 def + /ZCpoint 0 def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS4 0 Condition{ % +reduction reduction scale +C 2 div neg C C 2 div { + /ZCpoint exch def +B 2 div neg B B 2 div { + /YCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Ypoint YCpoint def + /Xpoint A neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +% le point du milieu +newpath + /Zpoint Rpoint def + /Ypoint 0 def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS3 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +B 2 div neg B 2 div B 2 div { + /YCpoint exch def +newpath + /Xpoint Rpoint XCpoint add def + /Ypoint YCpoint def + /Zpoint C neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +} if +PS2 0 Condition{ % +reduction reduction scale +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div add def + /Zpoint C 2 div neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Ypoint Rpoint Angle cos mul B 2 div add def + /Zpoint Rpoint Angle sin mul C 2 div sub def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div sub def + /Zpoint C 2 div def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint A def + /Ypoint Rpoint Angle cos mul B 2 div sub def + /Zpoint Rpoint Angle sin mul A 2 div add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS1 0 Condition{ % +reduction reduction scale +newpath + /Xpoint Rpoint def + /Ypoint 0 def + /Zpoint C def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +} def +% +/CalcCoordinates{% + formulesTroisD + Xi 28.45 mul Yi 28.45 mul + } + def +% pour la 3D conventionnelle +/formulesTroisD{% + /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def + /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def + /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def + } +def +% +/CalculsPointsAfterTransformations{% + /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add CX add def + /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add CY add def + /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add CZ add def + } +def +% +/SommetsTetraedre{% + /xA RayonBaseTetraedre neg def + /yA 0 def + /zA 0 def + /xB 0.5 RayonBaseTetraedre mul def + /yB RayonBaseTetraedre 0.866 mul neg def + /zB 0 def + /xC xB def + /yC yB neg def + /zC 0 def + /xD 0 def + /yD 0 def + /zD RayonBaseTetraedre 1.414 mul def +% coordonnées centre des faces + /xFaceA xA xB xC add add 3 div def + /yFaceA yA yB yC add add 3 div def + /zFaceA zA zB zC add add 3 div def + /xFaceB xD xA xB add add 3 div def + /yFaceB yD yA yB add add 3 div def + /zFaceB zD zA zB add add 3 div def + /xFaceC xA xD xC add add 3 div def + /yFaceC yA yD yC add add 3 div def + /zFaceC zA zD zC add add 3 div def + /xFaceD xD xB xC add add 3 div def + /yFaceD yD yB yC add add 3 div def + /zFaceD zD zB zC add add 3 div def +% sommets après rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def +% centres de faces après transformations + /XFaceA M11 xFaceA mul M12 yFaceA mul add M13 zFaceA mul add CX add def + /YFaceA M21 xFaceA mul M22 yFaceA mul add M23 zFaceA mul add CY add def + /ZFaceA M31 xFaceA mul M32 yFaceA mul add M33 zFaceA mul add CZ add def + /XFaceB M11 xFaceB mul M12 yFaceB mul add M13 zFaceB mul add CX add def + /YFaceB M21 xFaceB mul M22 yFaceB mul add M23 zFaceB mul add CY add def + /ZFaceB M31 xFaceB mul M32 yFaceB mul add M33 zFaceB mul add CZ add def + /XFaceC M11 xFaceC mul M12 yFaceC mul add M13 zFaceC mul add CX add def + /YFaceC M21 xFaceC mul M22 yFaceC mul add M23 zFaceC mul add CY add def + /ZFaceC M31 xFaceC mul M32 yFaceC mul add M33 zFaceC mul add CZ add def + /XFaceD M11 xFaceD mul M12 yFaceD mul add M13 zFaceD mul add CX add def + /YFaceD M21 xFaceD mul M22 yFaceD mul add M23 zFaceD mul add CY add def + /ZFaceD M31 xFaceD mul M32 yFaceD mul add M33 zFaceD mul add CZ add def +% Normales aux faces + /NxA XFaceA XD sub def + /NyA YFaceA YD sub def + /NzA ZFaceA ZD sub def + /NxB XFaceB XC sub def + /NyB YFaceB YC sub def + /NzB ZFaceB ZC sub def + /NxC XFaceC XB sub def + /NyC YFaceC YB sub def + /NzC ZFaceC ZB sub def + /NxD XFaceD XA sub def + /NyD YFaceD YA sub def + /NzD ZFaceD ZA sub def +% Conditions de visibilité +% rayon vers point de vue + /RXvueA XFaceA XpointVue sub def + /RYvueA YFaceA YpointVue sub def + /RZvueA ZFaceA ZpointVue sub def + /RXvueB XFaceB XpointVue sub def + /RYvueB YFaceB YpointVue sub def + /RZvueB ZFaceB ZpointVue sub def + /RXvueC XFaceC XpointVue sub def + /RYvueC YFaceC YpointVue sub def + /RZvueC ZFaceC ZpointVue sub def + /RXvueD XFaceD XpointVue sub def + /RYvueD YFaceD YpointVue sub def + /RZvueD ZFaceD ZpointVue sub def +% produit scalaire + /PSA RXvueA NxA mul RYvueA NyA mul add RZvueA NzA mul add def + /PSB RXvueB NxB mul RYvueB NyB mul add RZvueB NzB mul add def + /PSC RXvueC NxC mul RYvueC NyC mul add RZvueC NzC mul add def + /PSD RXvueD NxD mul RYvueD NyD mul add RZvueD NzD mul add def + } + def +/Tetraedre{% +SommetsTetraedre +% face ABC + PSA 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto +} if +% face DAB + PSB 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DAC +PSC 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DBC + PSD 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +} +def +% +/SommetsPyramide{% + /xA A def + /yA A neg def + /zA 0 def + /xB A def + /yB A def + /zB 0 def + /xC A neg def + /yC A def + /zC 0 def + /xD A neg def + /yD A neg def + /zD 0 def + /xS 0 def + /yS 0 def + /zS Hpyramide def +% coordonnées centre des faces + /Alpha A Hpyramide atan def + /xFaceSAB Hpyramide Alpha dup sin exch cos mul mul def + /yFaceSAB 0 def + /zFaceSAB Hpyramide Alpha sin dup mul mul def + /xFaceSBC 0 def + /yFaceSBC xFaceSAB def + /zFaceSBC zFaceSAB fracHeight mul def + /xFaceSCD xFaceSAB neg def + /yFaceSCD 0 def + /zFaceSCD zFaceSAB fracHeight mul def + /xFaceSDA 0 def + /yFaceSDA xFaceSAB neg def + /zFaceSDA zFaceSAB fracHeight mul def +% sommets après rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def + /XS M11 xS mul M12 yS mul add M13 zS mul add CX add def + /YS M21 xS mul M22 yS mul add M23 zS mul add CY add def + /ZS M31 xS mul M32 yS mul add M33 zS mul add CZ add def +% centres de faces après transformations + /XFaceSAB M11 xFaceSAB mul M12 yFaceSAB mul add M13 zFaceSAB mul add CX add def + /YFaceSAB M21 xFaceSAB mul M22 yFaceSAB mul add M23 zFaceSAB mul add CY add def + /ZFaceSAB M31 xFaceSAB mul M32 yFaceSAB mul add M33 zFaceSAB mul add CZ add def + /XFaceSBC M11 xFaceSBC mul M12 yFaceSBC mul add M13 zFaceSBC mul add CX add def + /YFaceSBC M21 xFaceSBC mul M22 yFaceSBC mul add M23 zFaceSBC mul add CY add def + /ZFaceSBC M31 xFaceSBC mul M32 yFaceSBC mul add M33 zFaceSBC mul add CZ add def + /XFaceSCD M11 xFaceSCD mul M12 yFaceSCD mul add M13 zFaceSCD mul add CX add def + /YFaceSCD M21 xFaceSCD mul M22 yFaceSCD mul add M23 zFaceSCD mul add CY add def + /ZFaceSCD M31 xFaceSCD mul M32 yFaceSCD mul add M33 zFaceSCD mul add CZ add def + /XFaceSDA M11 xFaceSDA mul M12 yFaceSDA mul add M13 zFaceSDA mul add CX add def + /YFaceSDA M21 xFaceSDA mul M22 yFaceSDA mul add M23 zFaceSDA mul add CY add def + /ZFaceSDA M31 xFaceSDA mul M32 yFaceSDA mul add M33 zFaceSDA mul add CZ add def +% Normales aux faces + /NxSAB XFaceSAB CX sub def + /NySAB YFaceSAB CY sub def + /NzSAB ZFaceSAB CZ sub def + /NxSBC XFaceSBC CX sub def + /NySBC YFaceSBC CY sub def + /NzSBC ZFaceSBC CZ sub def + /NxSCD XFaceSCD CX sub def + /NySCD YFaceSCD CY sub def + /NzSCD ZFaceSCD CZ sub def + /NxSDA XFaceSDA CX sub def + /NySDA YFaceSDA CY sub def + /NzSDA ZFaceSDA CZ sub def + /NxABCD CX XS sub def + /NyABCD CY YS sub def + /NzABCD CZ ZS sub def +% Conditions de visibilité +% rayon vers point de vue + /RXvueSAB XFaceSAB XpointVue sub def + /RYvueSAB YFaceSAB YpointVue sub def + /RZvueSAB ZFaceSAB ZpointVue sub def + /RXvueSBC XFaceSBC XpointVue sub def + /RYvueSBC YFaceSBC YpointVue sub def + /RZvueSBC ZFaceSBC ZpointVue sub def + /RXvueSCD XFaceSCD XpointVue sub def + /RYvueSCD YFaceSCD YpointVue sub def + /RZvueSCD ZFaceSCD ZpointVue sub def + /RXvueSDA XFaceSDA XpointVue sub def + /RYvueSDA YFaceSDA YpointVue sub def + /RZvueSDA ZFaceSDA ZpointVue sub def + /RXvueABCD CX XpointVue sub def + /RYvueABCD CY YpointVue sub def + /RZvueABCD CZ ZpointVue sub def + /PSAB RXvueSAB NxSAB mul RYvueSAB NySAB mul add RZvueSAB NzSAB mul add def + /PSBC RXvueSBC NxSBC mul RYvueSBC NySBC mul add RZvueSBC NzSBC mul add def + /PSCD RXvueSCD NxSCD mul RYvueSCD NySCD mul add RZvueSCD NzSCD mul add def + /PSDA RXvueSDA NxSDA mul RYvueSDA NySDA mul add RZvueSDA NzSDA mul add def + /PSABCD RXvueABCD NxABCD mul RYvueABCD NyABCD mul add RZvueABCD NzABCD mul add def + } + def +% +/MaillageSphere { +0 increment 360 increment sub {% + /theta exch def +departPhi increment 90 increment sub {% + /phi exch def +% newpath + /Xpoint Rsphere theta cos mul phi cos mul def + /Ypoint Rsphere theta sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + moveto +% Centre de la facette + /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def + /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def + /Zpoint Rsphere phi increment 2 div add sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale à la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilité + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +condition { +theta 1 theta increment add {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi cos mul def + /Ypoint Rsphere theta1 sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi 1 phi increment add { + /phi1 exch def + /Xpoint Rsphere theta increment add cos mul phi1 cos mul def + /Ypoint Rsphere theta increment add sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta increment add -1 theta {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi increment add cos mul def + /Ypoint Rsphere theta1 sin mul phi increment add cos mul def + /Zpoint Rsphere phi increment add sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi increment add -1 phi { + /phi1 exch def + /Xpoint Rsphere theta cos mul phi1 cos mul def + /Ypoint Rsphere theta sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +} def +% +/CylinderThreeD{ +reduction reduction scale +1 setlinejoin +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcylindre incrementHAUTEUR sub {% + /H exch def +% newpath + /X1 Rcylindre theta cos mul def + /Y1 Rcylindre theta sin mul def + /Z1 H def + /Xpoint X1 def + /Ypoint Y1 def + /Zpoint Z1 def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnées du centre de la facette + /Xpoint Rcylindre theta incrementANGLE 2 div add cos mul def + /Ypoint Rcylindre theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations +% Point sur l'axe du cylindre +% à la même hauteur que M1 + /Zpoint Z1 def + /Xpoint 0 def + /Ypoint 0 def +CalculsPointsAfterTransformations +% normale à la facette + /nXfacette Xfacette Xabscisse sub def + /nYfacette Yfacette Yordonnee sub def + /nZfacette Zfacette Zcote sub def +% rayon vers point de vue + /RXvue Xfacette XpointVue sub def + /RYvue Yfacette YpointVue sub def + /RZvue Zfacette ZpointVue sub def +% test de visibilité + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /Xpoint Rcylindre theta incrementANGLE add cos mul def + /Ypoint Rcylindre theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% Face supérieure +% centre de la face supérieure + /Xpoint 0 def + /Zpoint Hcylindre def + /Ypoint 0 def +CalculsPointsAfterTransformations + /CxFaceSup Xabscisse def + /CyFaceSup Yordonnee def + /CzFaceSup Zcote def +% centre de la face inférieure + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% Normale à la face supérieure + /nXFaceSup CxFaceSup CxFaceInf sub def + /nYFaceSup CyFaceSup CyFaceInf sub def + /nZFaceSup CzFaceSup CzFaceInf sub def +% rayon vers point de vue verd la face inférieure + /RXvueInf CxFaceInf XpointVue sub def + /RYvueInf CyFaceInf YpointVue sub def + /RZvueInf CzFaceInf ZpointVue sub def +% rayon vers point de vue verd la face supérieure + /RXvueSup CxFaceSup XpointVue sub def + /RYvueSup CyFaceSup YpointVue sub def + /RZvueSup CzFaceSup ZpointVue sub def +% Visibilité face supérieure + /PSfaceSup RXvueSup nXFaceSup mul + RYvueSup nYFaceSup mul add + RZvueSup nZFaceSup mul add def +% Visibilité face inférieure + /PSfaceInf RXvueInf nXFaceSup neg mul + RYvueInf nYFaceSup mul sub + RZvueInf nZFaceSup mul sub def +PSfaceSup 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint Hcylindre def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +% face inférieure +PSfaceInf 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto + 0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +% + % +/ConeThreeD{ + /AngleCone Rcone Hcone atan def + /TanAngleCone AngleCone dup sin exch cos div def + /incrementANGLE 10 def + /incrementHAUTEUR Hcone fracHeight mul 5 div def +1 setlinejoin +newpath +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcone fracHeight mul incrementHAUTEUR sub {% + /H exch def + % normale à la facette + /nXfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add cos mul + mul def + /nYfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add sin mul + mul def + /nZfacette Hcone AngleCone sin dup mul mul def + /Xpoint nXfacette def + /Ypoint nYfacette def + /Zpoint nZfacette def +CalculsPointsAfterTransformations + /nXfacette Xabscisse CX sub def + /nYfacette Yordonnee CY sub def + /nZfacette Zcote CZ sub def +% + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnées du centre de la facette + /OK Hcone H incrementHAUTEUR 2 div add sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE 2 div add cos mul def + /Ypoint OK theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations + /XcentreFacette Xabscisse def + /YcentreFacette Yordonnee def + /ZcentreFacette Zcote def +% rayon vers point de vue + /RXvue XcentreFacette XpointVue sub def + /RYvue YcentreFacette YpointVue sub def + /RZvue ZcentreFacette ZpointVue sub def +% test de visibilité + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE add cos mul def + /Ypoint OK theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /OK Hcone H incrementHAUTEUR add sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% centre de la base inférieure après transformations + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% modification du 16/11/2002 +% /Xpoint CxFaceInf def +% /Ypoint CyFaceInf def +% /Zpoint CzFaceInf def + /Xpoint 0 def + /Ypoint 0 def + /Zpoint 0 def +% fin modification du 16/11/2002 +CalculsPointsAfterTransformations + /CxBaseInf Xabscisse def + /CyBaseInf Yordonnee def + /CzBaseInf Zcote def +% centre de la base supérieure avant transformations + /CxFaceSup 0 def + /CyFaceSup 0 def + /CzFaceSup Hcone fracHeight mul def +% Sommet du cone + /Xpoint 0 def + /Ypoint 0 def + /Zpoint Hcone def +CalculsPointsAfterTransformations + /XsommetCone Xabscisse def + /YsommetCone Yordonnee def + /ZsommetCone Zcote def +% Normale extérieure à la base inférieure + /nXBaseInf CxFaceInf XsommetCone sub def + /nYBaseInf CyFaceInf YsommetCone sub def + /nZBaseInf CzFaceInf ZsommetCone sub def +% centre de la base supérieure + /Xpoint CxFaceSup def + /Ypoint CyFaceSup def + /Zpoint CzFaceSup def +CalculsPointsAfterTransformations + /CxBaseSup Xabscisse def + /CyBaseSup Yordonnee def + /CzBaseSup Zcote def +% Normale extérieure à la base supérieure + /nXBaseSup XsommetCone CxFaceSup sub def + /nYBaseSup YsommetCone CyFaceSup sub def + /nZBaseSup ZsommetCone CzFaceSup sub def +% rayon vers point de vue + /RXvueSup CxBaseSup XpointVue sub def + /RYvueSup CyBaseSup YpointVue sub def + /RZvueSup CzBaseSup ZpointVue sub def + /RXvueInf CxBaseInf XpointVue sub def + /RYvueInf CyBaseInf YpointVue sub def + /RZvueInf CzBaseInf ZpointVue sub def +% Visibilité de la base inférieure + /PSbaseInfCone nXBaseInf RXvueInf mul + nYBaseInf RYvueInf mul add + nZBaseInf RZvueInf mul add def +% Visibilité de la base supérieure + /PSbaseSupCone nXBaseSup RXvueSup mul + nYBaseSup RYvueSup mul add + nZBaseSup RZvueSup mul add def +PSbaseInfCone 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /Xpoint Rcone theta cos mul def + /Ypoint Rcone theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +%% PSbaseSupCone 0 le { +%% modifié le 31/10/2003 +%PSbaseSupCone 0 ge { +PSbaseSupCone 0 le { +/TableauxPoints [ +0 1 359 {% on décrit le cercle + /theta exch def [ + /OK Hcone 1 fracHeight sub mul TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint Hcone fracHeight mul def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +/PortionSphere{% + /Xpoint Rsphere psTHETA dTHETA neg add cos mul psPHI dPHI sub cos mul def + /Ypoint Rsphere psTHETA dTHETA neg add sin mul psPHI dPHI sub cos mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale à la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilité + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +PSfacette 0 le { +CalcCoordinates +newpath + moveto +psTHETA dTHETA sub 1 psTHETA dTHETA add { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI sub cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI sub cos mul mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI sub 1 psPHI dPHI add { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA add cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA add sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psTHETA dTHETA add -1 psTHETA dTHETA sub { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI add cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI add cos mul mul def + /Zpoint Rsphere psPHI dPHI add sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI add -1 psPHI dPHI sub { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA sub cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA sub sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +closepath +} if +} def +% Dodecahedron : 31 décembre 2003 +% datas : Graphisme scientifique R.Dony +% Masson ed. page 240 +/Dodecahedron{% + /XA M11 0 mul M12 A 0.607062 mul mul add M13 A mul 0.794655 mul add CX add def + /YA M21 0 mul M22 A 0.607062 mul mul add M23 A mul 0.794655 mul add CY add def + /ZA M31 0 mul M32 A 0.607062 mul mul add M33 A mul 0.794655 mul add CZ add def + /XB M11 A mul -0.5773503 mul M12 A mul 0.1875925 mul add M13 A mul 0.7946545 mul add CX add def + /YB M21 A mul -0.5773503 mul M22 A mul 0.1875925 mul add M23 A mul 0.7946545 mul add CY add def + /ZB M31 A mul -0.5773503 mul M32 A mul 0.1875925 mul add M33 A mul 0.7946545 mul add CZ add def + /XC M11 A mul -0.3568221 mul M12 A mul -0.4911235 mul add M13 A mul 0.7946545 mul add CX add def + /YC M21 A mul -0.3568221 mul M22 A mul -0.4911235 mul add M23 A mul 0.7946545 mul add CY add def + /ZC M31 A mul -0.3568221 mul M32 A mul -0.4911235 mul add M33 A mul 0.7946545 mul add CZ add def + /XD M11 A mul 0.3568221 mul M12 A mul -0.4911235 mul add M13 A mul 0.7946545 mul add CX add def + /YD M21 A mul 0.3568221 mul M22 A mul -0.4911235 mul add M23 A mul 0.7946545 mul add CY add def + /ZD M31 A mul 0.3568221 mul M32 A mul -0.4911235 mul add M33 A mul 0.7946545 mul add CZ add def + /XE M11 A mul 0.5773503 mul M12 A mul 0.1875925 mul add M13 A mul 0.7946545 mul add CX add def + /YE M21 A mul 0.5773503 mul M22 A mul 0.1875925 mul add M23 A mul 0.7946545 mul add CY add def + /ZE M31 A mul 0.5773503 mul M32 A mul 0.1875925 mul add M33 A mul 0.7946545 mul add CZ add def + /XF M11 A mul 0 mul M12 A mul 0.982247 mul add M13 A mul 0.175925 mul add CX add def + /YF M21 A mul 0 mul M22 A mul 0.982247 mul add M23 A mul 0.175925 mul add CY add def + /ZF M31 A mul 0 mul M32 A mul 0.982247 mul add M33 A mul 0.175925 mul add CZ add def + /XG M11 A mul -0.9341724 mul M12 A mul 0.303531 mul add M13 A mul 0.1875925 mul add CX add def + /YG M21 A mul -0.9341724 mul M22 A mul 0.303531 mul add M23 A mul 0.1875925 mul add CY add def + /ZG M31 A mul -0.9341724 mul M32 A mul 0.303531 mul add M33 A mul 0.1875925 mul add CZ add def + /XH M11 A mul -0.5773503 mul M12 A mul -0.7946545 mul add M13 A mul 0.1875925 mul add CX add def + /YH M21 A mul -0.5773503 mul M22 A mul -0.7946545 mul add M23 A mul 0.1875925 mul add CY add def + /ZH M31 A mul -0.5773503 mul M32 A mul -0.7946545 mul add M33 A mul 0.1875925 mul add CZ add def + /XI M11 A mul 0.5773503 mul M12 A mul -0.7946545 mul add M13 A mul 0.1875925 mul add CX add def + /YI M21 A mul 0.5773503 mul M22 A mul -0.7946545 mul add M23 A mul 0.1875925 mul add CY add def + /ZI M31 A mul 0.5773503 mul M32 A mul -0.7946545 mul add M33 A mul 0.1875925 mul add CZ add def + /XJ M11 A mul 0.9341724 mul M12 A mul 0.303531 mul add M13 A mul 0.1875925 mul add CX add def + /YJ M21 A mul 0.9341724 mul M22 A mul 0.303531 mul add M23 A mul 0.1875925 mul add CY add def + /ZJ M31 A mul 0.9341724 mul M32 A mul 0.303531 mul add M33 A mul 0.1875925 mul add CZ add def + /XK M11 A mul 0 mul M12 A mul -0.982247 mul add M13 A mul -0.1875925 mul add CX add def + /YK M21 A mul 0 mul M22 A mul -0.982247 mul add M23 A mul -0.1875925 mul add CY add def + /ZK M31 A mul 0 mul M32 A mul -0.982247 mul add M33 A mul -0.1875925 mul add CZ add def + /XL M11 A mul 0.9341724 mul M12 A mul -0.303531 mul add M13 A mul -0.1875925 mul add CX add def + /YL M21 A mul 0.9341724 mul M22 A mul -0.303531 mul add M23 A mul -0.1875925 mul add CY add def + /ZL M31 A mul 0.9341724 mul M32 A mul -0.303531 mul add M33 A mul -0.1875925 mul add CZ add def + /XM M11 A mul 0.5773503 mul M12 A mul 0.7946545 mul add M13 A mul -0.1875925 mul add CX add def + /YM M21 A mul 0.5773503 mul M22 A mul 0.7946545 mul add M23 A mul -0.1875925 mul add CY add def + /ZM M31 A mul 0.5773503 mul M32 A mul 0.7946545 mul add M33 A mul -0.1875925 mul add CZ add def + /XN M11 A mul -0.5773503 mul M12 A mul 0.7946545 mul add M13 A mul -0.1875925 mul add CX add def + /YN M21 A mul -0.5773503 mul M22 A mul 0.7946545 mul add M23 A mul -0.1875925 mul add CY add def + /ZN M31 A mul -0.5773503 mul M32 A mul 0.7946545 mul add M33 A mul -0.1875925 mul add CZ add def + /XO M11 A mul -0.9341724 mul M12 A mul -0.303531 mul add M13 A mul -0.1875925 mul add CX add def + /YO M21 A mul -0.9341724 mul M22 A mul -0.303531 mul add M23 A mul -0.1875925 mul add CY add def + /ZO M31 A mul -0.9341724 mul M32 A mul -0.303531 mul add M33 A mul -0.1875925 mul add CZ add def + /XP M11 A mul -0.5773503 mul M12 A mul -0.1875925 mul add M13 A mul -0.7946545 mul add CX add def + /YP M21 A mul -0.5773503 mul M22 A mul -0.1875925 mul add M23 A mul -0.7946545 mul add CY add def + /ZP M31 A mul -0.5773503 mul M32 A mul -0.1875925 mul add M33 A mul -0.7946545 mul add CZ add def + /XQ M11 A mul -0.3568221 mul M12 A mul 0.4911235 mul add M13 A mul -0.7946545 mul add CX add def + /YQ M21 A mul -0.3568221 mul M22 A mul 0.4911235 mul add M23 A mul -0.7946545 mul add CY add def + /ZQ M31 A mul -0.3568221 mul M32 A mul 0.4911235 mul add M33 A mul -0.7946545 mul add CZ add def + /XR M11 A mul 0.3568221 mul M12 A mul 0.4911235 mul add M13 A mul -0.7946545 mul add CX add def + /YR M21 A mul 0.3568221 mul M22 A mul 0.4911235 mul add M23 A mul -0.7946545 mul add CY add def + /ZR M31 A mul 0.3568221 mul M32 A mul 0.4911235 mul add M33 A mul -0.7946545 mul add CZ add def + /XS M11 A mul 0.5773503 mul M12 A mul -0.1875925 mul add M13 A mul -0.7946545 mul add CX add def + /YS M21 A mul 0.5773503 mul M22 A mul -0.1875925 mul add M23 A mul -0.7946545 mul add CY add def + /ZS M31 A mul 0.5773503 mul M32 A mul -0.1875925 mul add M33 A mul -0.7946545 mul add CZ add def + /XT M11 0 mul M12 A -0.607062 mul mul add M13 A mul -0.794655 mul add CX add def + /YT M21 0 mul M22 A -0.607062 mul mul add M23 A mul -0.794655 mul add CY add def + /ZT M31 0 mul M32 A -0.607062 mul mul add M33 A mul -0.794655 mul add CZ add def +% Centres des faces : condition de visibilité +% FACE 1 pentagone régulier ABCDE +% OC1 + /XC1 XA XB add XC add XD add XE add 5 div def + /YC1 YA YB add YC add YD add YE add 5 div def + /ZC1 ZA ZB add ZC add ZD add ZE add 5 div def +% Normale à la face 1 + /NX1 XC1 CX sub def + /NY1 YC1 CY sub def + /NZ1 ZC1 CZ sub def +% rayon vers point de vue + /RXvue1 XC1 XpointVue sub def + /RYvue1 YC1 YpointVue sub def + /RZvue1 ZC1 ZpointVue sub def +% produit scalaire + /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def +% FACE 2 pentagone régulier EDILJ +% OC2 + /XC2 XE XD add XI add XL add XJ add 5 div def + /YC2 YE YD add YI add YL add YJ add 5 div def + /ZC2 ZE ZD add ZI add ZL add ZJ add 5 div def +% Normale à la face 2 + /NX2 XC2 CX sub def + /NY2 YC2 CY sub def + /NZ2 ZC2 CZ sub def +% rayon vers point de vue + /RXvue2 XC2 XpointVue sub def + /RYvue2 YC2 YpointVue sub def + /RZvue2 ZC2 ZpointVue sub def +% produit scalaire + /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def +% FACE 3 pentagone régulier EJMFA +% OC3 + /XC3 XE XJ add XM add XF add XA add 5 div def + /YC3 YE YJ add YM add YF add YA add 5 div def + /ZC3 ZE ZJ add ZM add ZF add ZA add 5 div def +% Normale à la face 2 + /NX3 XC3 CX sub def + /NY3 YC3 CY sub def + /NZ3 ZC3 CZ sub def +% rayon vers point de vue + /RXvue3 XC3 XpointVue sub def + /RYvue3 YC3 YpointVue sub def + /RZvue3 ZC3 ZpointVue sub def +% produit scalaire + /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def +% FACE 4 pentagone régulier AFNGB +% OC4 + /XC4 XA XF add XN add XG add XB add 5 div def + /YC4 YA YF add YN add YG add YB add 5 div def + /ZC4 ZA ZF add ZN add ZG add ZB add 5 div def +% Normale à la face 4 + /NX4 XC4 CX sub def + /NY4 YC4 CY sub def + /NZ4 ZC4 CZ sub def +% rayon vers point de vue + /RXvue4 XC4 XpointVue sub def + /RYvue4 YC4 YpointVue sub def + /RZvue4 ZC4 ZpointVue sub def +% produit scalaire + /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def +% FACE 5 pentagone régulier BGOHC +% OC5 + /XC5 XB XG add XO add XH add XC add 5 div def + /YC5 YB YG add YO add YH add YC add 5 div def + /ZC5 ZB ZG add ZO add ZH add ZC add 5 div def +% Normale à la face 5 + /NX5 XC5 CX sub def + /NY5 YC5 CY sub def + /NZ5 ZC5 CZ sub def +% rayon vers point de vue + /RXvue5 XC5 XpointVue sub def + /RYvue5 YC5 YpointVue sub def + /RZvue5 ZC5 ZpointVue sub def +% produit scalaire + /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def +% FACE 6 pentagone régulier CHKID +% OC6 + /XC6 XC XH add XK add XI add XD add 5 div def + /YC6 YC YH add YK add YI add YD add 5 div def + /ZC6 ZC ZH add ZK add ZI add ZD add 5 div def +% Normale à la face 6 + /NX6 XC6 CX sub def + /NY6 YC6 CY sub def + /NZ6 ZC6 CZ sub def +% rayon vers point de vue + /RXvue6 XC6 XpointVue sub def + /RYvue6 YC6 YpointVue sub def + /RZvue6 ZC6 ZpointVue sub def +% produit scalaire + /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def +% FACE 7 pentagone régulier KTSLI +% OC7 + /XC7 XK XT add XS add XL add XI add 5 div def + /YC7 YK YT add YS add YL add YI add 5 div def + /ZC7 ZK ZT add ZS add ZL add ZI add 5 div def +% Normale à la face 7 + /NX7 XC7 CX sub def + /NY7 YC7 CY sub def + /NZ7 ZC7 CZ sub def +% rayon vers point de vue + /RXvue7 XC7 XpointVue sub def + /RYvue7 YC7 YpointVue sub def + /RZvue7 ZC7 ZpointVue sub def +% produit scalaire + /PS7 RXvue7 NX7 mul RYvue7 NY7 mul add RZvue7 NZ7 mul add def +% FACE 8 pentagone régulier LSRMJ +% OC8 + /XC8 XL XS add XR add XM add XJ add 5 div def + /YC8 YL YS add YR add YM add YJ add 5 div def + /ZC8 ZL ZS add ZR add ZM add ZJ add 5 div def +% Normale à la face 8 + /NX8 XC8 CX sub def + /NY8 YC8 CY sub def + /NZ8 ZC8 CZ sub def +% rayon vers point de vue + /RXvue8 XC8 XpointVue sub def + /RYvue8 YC8 YpointVue sub def + /RZvue8 ZC8 ZpointVue sub def +% produit scalaire + /PS8 RXvue8 NX8 mul RYvue8 NY8 mul add RZvue8 NZ8 mul add def +% FACE 9 pentagone régulier MRQNF +% OC9 + /XC9 XM XR add XQ add XN add XF add 5 div def + /YC9 YM YR add YQ add YN add YF add 5 div def + /ZC9 ZM ZR add ZQ add ZN add ZF add 5 div def +% Normale à la face 6 + /NX9 XC9 CX sub def + /NY9 YC9 CY sub def + /NZ9 ZC9 CZ sub def +% rayon vers point de vue + /RXvue9 XC9 XpointVue sub def + /RYvue9 YC9 YpointVue sub def + /RZvue9 ZC9 ZpointVue sub def +% produit scalaire + /PS9 RXvue9 NX9 mul RYvue9 NY9 mul add RZvue9 NZ9 mul add def +% FACE 10 pentagone régulier NQPOG +% OC10 + /XC10 XN XQ add XP add XO add XG add 5 div def + /YC10 YN YQ add YP add YO add YG add 5 div def + /ZC10 ZN ZQ add ZP add ZO add ZG add 5 div def +% Normale à la face 6 + /NX10 XC10 CX sub def + /NY10 YC10 CY sub def + /NZ10 ZC10 CZ sub def +% rayon vers point de vue + /RXvue10 XC10 XpointVue sub def + /RYvue10 YC10 YpointVue sub def + /RZvue10 ZC10 ZpointVue sub def +% produit scalaire + /PS10 RXvue10 NX10 mul RYvue10 NY10 mul add RZvue10 NZ10 mul add def +% FACE 11 pentagone régulier OPTKH +% OC11 + /XC11 XO XP add XT add XK add XH add 5 div def + /YC11 YO YP add YT add YK add YH add 5 div def + /ZC11 ZO ZP add ZT add ZK add ZH add 5 div def +% Normale à la face 11 + /NX11 XC11 CX sub def + /NY11 YC11 CY sub def + /NZ11 ZC11 CZ sub def +% rayon vers point de vue + /RXvue11 XC11 XpointVue sub def + /RYvue11 YC11 YpointVue sub def + /RZvue11 ZC11 ZpointVue sub def +% produit scalaire + /PS11 RXvue11 NX11 mul RYvue11 NY11 mul add RZvue11 NZ11 mul add def +% FACE 12 pentagone régulier PQRST +% OC12 + /XC12 XP XQ add XR add XS add XT add 5 div def + /YC12 YP YQ add YR add YS add YT add 5 div def + /ZC12 ZP ZQ add ZR add ZS add ZT add 5 div def +% Normale à la face 12 + /NX12 XC12 CX sub def + /NY12 YC12 CY sub def + /NZ12 ZC12 CZ sub def +% rayon vers point de vue + /RXvue12 XC12 XpointVue sub def + /RYvue12 YC12 YpointVue sub def + /RZvue12 ZC12 ZpointVue sub def +% produit scalaire + /PS12 RXvue12 NX12 mul RYvue12 NY12 mul add RZvue12 NZ12 mul add def +% faceOne ABDCE +PS1 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto +closepath +gsave +0.05 0.1 0.1 0 setcmykcolor +fill +grestore +stroke +} if +% face2 EDILJ +PS2 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YE def + /Zcote ZE def + /Xabscisse XE def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZI def + /Xabscisse XI def + /Yordonnee YI def + CalcCoordinates + lineto + /Zcote ZL def + /Xabscisse XL def + /Yordonnee YL def + CalcCoordinates + lineto + /Zcote ZJ def + /Xabscisse XJ def + /Yordonnee YJ def + CalcCoordinates + lineto +closepath +gsave +0.05 0.15 0.15 0 setcmykcolor +fill +grestore +stroke +} if +% face3 EJMFA +PS3 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YE def + /Zcote ZE def + /Xabscisse XE def + CalcCoordinates + moveto + /Zcote ZJ def + /Xabscisse XJ def + /Yordonnee YJ def + CalcCoordinates + lineto + /Zcote ZM def + /Xabscisse XM def + /Yordonnee YM def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +0.05 0.2 0.2 0 setcmykcolor +fill +grestore +stroke +} if +% face4 AFNGB +PS4 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZN def + /Xabscisse XN def + /Yordonnee YN def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +0.05 0.25 0.25 0 setcmykcolor +fill +grestore +stroke +} if +% face5 BGOHC +PS5 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YB def + /Zcote ZB def + /Xabscisse XB def + CalcCoordinates + moveto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZO def + /Xabscisse XO def + /Yordonnee YO def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto +closepath +gsave +0.05 0.3 0.3 0 setcmykcolor +fill +grestore +stroke +} if +% face6 CHKID +PS6 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YC def + /Zcote ZC def + /Xabscisse XC def + CalcCoordinates + moveto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZK def + /Xabscisse XK def + /Yordonnee YK def + CalcCoordinates + lineto + /Zcote ZI def + /Xabscisse XI def + /Yordonnee YI def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto +closepath +gsave +0.05 0.35 0.35 0 setcmykcolor +fill +grestore +stroke +} if +% face7 KTSLI +PS7 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YK def + /Zcote ZK def + /Xabscisse XK def + CalcCoordinates + moveto + /Zcote ZT def + /Xabscisse XT def + /Yordonnee YT def + CalcCoordinates + lineto + /Zcote ZS def + /Xabscisse XS def + /Yordonnee YS def + CalcCoordinates + lineto + /Zcote ZL def + /Xabscisse XL def + /Yordonnee YL def + CalcCoordinates + lineto + /Zcote ZI def + /Xabscisse XI def + /Yordonnee YI def + CalcCoordinates + lineto +closepath +gsave +0.05 0.4 0.4 0 setcmykcolor +fill +grestore +stroke +} if +% face8 LSRMJ +PS8 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YL def + /Zcote ZL def + /Xabscisse XL def + CalcCoordinates + moveto + /Zcote ZS def + /Xabscisse XS def + /Yordonnee YS def + CalcCoordinates + lineto + /Zcote ZR def + /Xabscisse XR def + /Yordonnee YR def + CalcCoordinates + lineto + /Zcote ZM def + /Xabscisse XM def + /Yordonnee YM def + CalcCoordinates + lineto + /Zcote ZJ def + /Xabscisse XJ def + /Yordonnee YJ def + CalcCoordinates + lineto +closepath +gsave +0.05 0.45 0.45 0 setcmykcolor +fill +grestore +stroke +} if +% face9 MRQNF +PS9 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YM def + /Zcote ZM def + /Xabscisse XM def + CalcCoordinates + moveto + /Zcote ZR def + /Xabscisse XR def + /Yordonnee YR def + CalcCoordinates + lineto + /Zcote ZQ def + /Xabscisse XQ def + /Yordonnee YQ def + CalcCoordinates + lineto + /Zcote ZN def + /Xabscisse XN def + /Yordonnee YN def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto +closepath +gsave +0.05 0.5 0.5 0 setcmykcolor +fill +grestore +stroke +} if +% face10 NQPOG +PS10 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YN def + /Zcote ZN def + /Xabscisse XN def + CalcCoordinates + moveto + /Zcote ZQ def + /Xabscisse XQ def + /Yordonnee YQ def + CalcCoordinates + lineto + /Zcote ZP def + /Xabscisse XP def + /Yordonnee YP def + CalcCoordinates + lineto + /Zcote ZO def + /Xabscisse XO def + /Yordonnee YO def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto +closepath +gsave +0.05 0.55 0.55 0 setcmykcolor +fill +grestore +stroke +} if +% face11 OPTKH +PS11 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YO def + /Zcote ZO def + /Xabscisse XO def + CalcCoordinates + moveto + /Zcote ZP def + /Xabscisse XP def + /Yordonnee YP def + CalcCoordinates + lineto + /Zcote ZT def + /Xabscisse XT def + /Yordonnee YT def + CalcCoordinates + lineto + /Zcote ZK def + /Xabscisse XK def + /Yordonnee YK def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto +closepath +gsave +0.05 0.6 0.6 0 setcmykcolor +fill +grestore +stroke +} if +% face12 PQRST +PS12 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YP def + /Zcote ZP def + /Xabscisse XP def + CalcCoordinates + moveto + /Zcote ZQ def + /Xabscisse XQ def + /Yordonnee YQ def + CalcCoordinates + lineto + /Zcote ZR def + /Xabscisse XR def + /Yordonnee YR def + CalcCoordinates + lineto + /Zcote ZS def + /Xabscisse XS def + /Yordonnee YS def + CalcCoordinates + lineto + /Zcote ZT def + /Xabscisse XT def + /Yordonnee YT def + CalcCoordinates + lineto +closepath +gsave +0.05 0.65 0.65 0 setcmykcolor +fill +grestore +stroke +} if +} +def +end diff --git a/Master/texmf-dist/dvips/pstricks-add/pstricks-add.pro b/Master/texmf-dist/dvips/pstricks-add/pstricks-add.pro new file mode 100644 index 00000000000..21547282722 --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks-add/pstricks-add.pro @@ -0,0 +1,792 @@ +%! +% PostScript prologue for pstricks-add.tex. +% Version 0.01, 2005/09/27 +% For distribution, see pstricks.tex. +% +% HISTORY +% 2005/09/28 : - rename it to pstricks-add.pro +% - agg support for Gouraud shading +% 2005/05/20 : small (unimportant) changes (hv) +% 2005/02/25 : white space removal from expression +% 2004/12/16 : addition of SUM and IFTE +% 2004/11/14 : correction of a priority problem +% ^ before unary - (new rule FS) +/tx@addDict 410 dict def tx@addDict begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Pi and Euler are defined in pstricks.pro +/PIdiv2 1.57079632680 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.12 +% E->T|E+T +% T->FS|T*FS %%% NEW 2004/11/14 +% FS -> F | +SF | -SF %%% NEW 2004/11/14 +% F->P|F^P %%% OLD +% F->P|F^SF %%% NEW 2004/11/14 ???? ^FS +% P->(E)|literal +% literal->number|var|var[E]|func(params)%%|-P|+P%%% OLD +% params->E|E,param +% +% E expression, T term, SF signed factor, F factor, P power +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% parser +%% str -> [ LIFO vector ] +/AlgParser { InitParser SetExpr LexStr 0 exch AnalyzeListOfE ExpressionVector /ExpressionVector [] def} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/SetExpr { RemoveWS /ExpressionString exch def } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/InitParser { + /ExpressionVector [] def /AddVector [] def + /AddVectorfree [] def /MulVector [] def + /MulVectorfree [] def /PowVector [] def + /PowVectorfree [] def /OpParVector [] def + /ClParVector [] def /ParVectorFree [] def + %%/CompVector [] def /CompVectorFree [] def + /BraVector [] def /SemVector [] def + /ComVector [] def /ExpressionVector [] def + /LoopLevel -1 def /LoopContext [] def %%% NEW for SUM function +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/FLbreak { tst not {/L exch def /F exch def 2 copy L eq exch F eq and /tst exch def} {pop pop} ifelse} def +/Negbreak { tst not { dup 0 lt /tst exch def } if } def +/STOP { tst {TOUF} if} def +/tst false def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Expression List +%% first last +/AnalyzeListOfE { + exch SemVector { + exch 1 index 1 sub AnalyzeExpr 1 add + } forall%%last_char + exch AnalyzeExpr +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Expr +%% first last +/AnalyzeExpr { + FindFirstAdd%% first last pos+ + 2 copy abs 1 sub ne + { 3 -1 roll 1 index abs 1 sub AnalyzeExpr dup abs 1 add 3 -1 roll AnalyzeTerm EvalAdd } + { pop AnalyzeTerm } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Term +%% first last +/AnalyzeTerm {%%19 28 FLbreak STOP + FindFirstMul%% first last pos* + 2 copy abs 1 sub ne + { 3 -1 roll 1 index abs 1 sub AnalyzeTerm dup abs 1 add 3 -1 roll AnalyzeSignedFactor EvalMul }%%% NEW 2004/11/14 + { pop AnalyzeSignedFactor } ifelse%%% NEW 2004/11/14 +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW 2004/11/14 +%% analyze Signed Factor +%% first last -> +/AnalyzeSignedFactor { + ExpressionString 2 index get + dup 45 eq%% a - sign + { pop exch 1 add exch AnalyzeSignedFactor EvalNeg } + { 43 eq%%a + sign + { exch 1 add exch AnalyzeSignedFactor } + { AnalyzeFactor } ifelse } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Factor +%% first last -> +/AnalyzeFactor { + FindFirstPow%% first last pos* + 2 copy abs 1 sub ne +% { 3 -1 roll 1 index abs 1 sub AnalyzeFactor dup abs 1 add 3 -1 roll AnalyzePower EvalPow } + { 3 -1 roll 1 index abs 1 sub AnalyzeFactor dup abs 1 add 3 -1 roll AnalyzeSignedFactor EvalPow }% NEW 2004/11/14 + { pop AnalyzePower } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Power +%% first last -> +/compteur 0 def +/AnalyzePower { + ExpressionString 2 index get + dup 40 eq%% an open parenthesis + { pop 1 index UnfreePar 1 sub exch 1 add exch AnalyzeExpr } + { dup 45 eq%% a - sign + { pop exch 1 add exch AnalyzePower EvalNeg } + { dup 43 eq%%a + sign + { pop exch 1 add exch AnalyzePower } + { dup 46 eq 1 index 48 ge 2 index 57 le and or%%a digit or a dot + { pop AnalyzeNumber } + { pop AnalyzeLiteral } ifelse } ifelse } ifelse } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze parameters list +%% first last +/AnalyzeParam { + { FindFirstCom%% first last pos, + 3 -1 roll 1 index 1 sub AnalyzeExpr + 2 copy 1 sub ne { 1 add exch } { pop pop exit } ifelse + } loop +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual addition at this level +%% first last -> position +/FindFirstAdd { + 2 copy /Last exch def /First exch def false 0 + AddVector { + AddVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos abs First gt pos abs Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesis + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreeAdd} %% find one mul + { Last 1 add } ifelse +} def +%% { +%% 2 copy /Last exch def /First exch def false 0 +%% AddVector { +%% AddVectorFree 2 index get +%% { /pos exch def +%% true 0 1 ClParVector length 1 sub +%% { ParVectorFree 1 index get +%% { OpParVector 1 index get pos abs le +%% ClParVector 2 index get pos abs ge and +%% pos abs First lt pos abs Last gt or or +%% { pop pop false exit } if +%% } if +%% pop +%% } for +%% { pop pop true dup exit } if +%% } +%% { pop } ifelse +%% 1 add +%% } forall +%% pop +%% { pos UnfreeAdd}%% find one add +%% { Last 1 add } ifelse +%% } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual multiplication at this level +%% first last -> first last position +/FindFirstMul { + 2 copy /Last exch def /First exch def false 0 + MulVector { + MulVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos abs First gt pos abs Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesis + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreeMul} %% find one mul + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual power at this level +%% first last -> first last position +/FindFirstPow { + 2 copy /Last exch def /First exch def false 0 + PowVector { + PowVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos First gt pos Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesis + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreePow} %% find one ^ + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual comma at this level +%% first last -> first last position +/FindFirstCom { + 2 copy /Last exch def /First exch def false 0 + ComVector { + ComVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos First gt pos Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesisSTOP + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreeCom} %% find one comma + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the first opened parenthesis (only for func call) +%% first last -> first last position +/FindFirstPar { + 2 copy /Last exch def /First exch def false 0 + OpParVector { + ParVectorFree 2 index get + { /pos exch def + pos First gt pos Last lt and + { exch not exch exit } if + } { pop } ifelse + 1 add + } forall + pop + { pos dup UnfreePar }%% find one par + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the first opening bracket +%% first last -> first last position +/FindFirstBra { + 2 copy /Last exch def /First exch def + BraVector { + /pos exch def + pos First gt pos Last lt and + { exit } if + } forall + pos dup UnfreePar%% finding it is mandatory +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Read the number and push it in the vector +%% first last -> +/AnalyzeNumber { + 1 index sub 1 add ExpressionString 3 1 roll getinterval cvr /n exch def + /ExpressionVector ExpressionVector aload length n exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Read the literal and push it in the vector +%% first last -> +/AnalyzeLiteral { + ExpressionString 1 index get dup 41 eq %%close par at the end => function call + { pop FindFirstPar%%first last parpos + ExpressionString 3 index dup 3 index exch sub getinterval + dup (SUM) eq { sumation } + { dup (IFTE) eq { condition } + { 1 index 1 add 3 index 1 sub AnalyzeParam + dup cvn /n exch def TrigoFunc + /ExpressionVector ExpressionVector aload length + /tx@addDict cvx /begin cvx n cvx /end cvx 5 -1 roll 4 add array astore def + %%n cvx exch 1 add array astore def + pop pop pop } ifelse } ifelse } + { 93 eq%%close bracket => vector element + { FindFirstBra%%first last brapos + ExpressionString 3 index dup 3 index exch sub getinterval cvn /n exch def + /ExpressionVector ExpressionVector aload length n cvx exch 1 add array astore def + 2 copy 1 add exch 1 sub AnalyzeExpr + /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def + pop pop pop + } + { 1 index sub 1 add ExpressionString 3 1 roll getinterval cvn /n exch def + /ExpressionVector ExpressionVector aload length n cvx exch 1 add array astore def } ifelse } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push add in the vector +%% kind -> +%% if kind>0 then add else sub +/EvalAdd { + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll + 0 gt { /add } { /sub } ifelse cvx exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push mul in the vector +%% -> +/EvalMul { + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll + 0 gt { /mul } { /div } ifelse cvx exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push exp in the vector +%% -> +/EvalPow { + pop /ExpressionVector ExpressionVector aload length + /tx@addDict cvx exch /begin cvx exch /EXP cvx exch /end cvx exch 4 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push neg in the vector +%% -> +/EvalNeg { + /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Lexical Analyzis of the string +%% -> +/LexStr { + /freepar 0 def /lastpar 0 def /lastchar 0 def + 0 ExpressionString + { dup 40 eq 1 index 91 eq or %% open parenthesis + { /OpParVector OpParVector aload length dup 3 add index exch 1 add array astore def + /ClParVector ClParVector aload length -1 exch 1 add array astore def + /lastpar freepar def /freepar freepar 1 add def /NoPar false def} if + dup 41 eq 1 index 93 eq or %% close parenthesis + { ClParVector lastpar 3 index put lastpar + dup 0 eq + { pop } + { { 1 sub dup ClParVector exch get -1 eq { /lastpar exch def exit } { dup 0 eq { pop exit} if } ifelse } loop } + ifelse } if + dup 42 eq %% * operator + %%{ /MulVector MulVector aload length dup 3 add index exch 1 add array astore def } if + { /MulVector 2 index MulVector aload length 1 add array astore def } if + dup 43 eq %% + operator + { %%test if it is a real operator and not the unary operator + lastchar dup 40 ne %% open parenthesis + 1 index 59 ne and %% ; + 1 index 42 ne and %% * + 1 index 43 ne and %% + + 1 index 44 ne and %% , + 1 index 45 ne and %% - + 1 index 47 ne and %% / + 1 index 0 ne and %% first char + 1 index 94 ne and %% ^%%2004/11/14 + exch 124 ne and %% | + %%{/AddVector AddVector aload length dup 3 add index exch 1 add array astore def } if} + {/AddVector 2 index AddVector aload length 1 add array astore def } if} + if + dup 44 eq %% , separator + { /ComVector ComVector aload length dup 3 add index exch 1 add array astore def } + if + dup 45 eq %% - operator + { %%test if it is a real operator and not the unary operator + lastchar dup 40 ne %% open parenthesis + 1 index 59 ne and %% ; + 1 index 42 ne and %% * + 1 index 43 ne and %% + + 1 index 44 ne and %% , + 1 index 45 ne and %% - + 1 index 47 ne and %% / + 1 index 0 ne and %% first char + 1 index 94 ne and %% ^%%2004/11/14 + exch 124 ne and %% | + %%{/AddVector AddVector aload length dup 3 add index neg exch 1 add array astore def } if} + {/AddVector 2 index neg AddVector aload length 1 add array astore def } if} + if + dup 47 eq %% / operator + %%{ /MulVector MulVector aload length dup 3 add index neg exch 1 add array astore def } + { /MulVector 2 index neg MulVector aload length 1 add array astore def } + if + dup 59 eq 1 index 124 eq or%% ; separator | + { /SemVector SemVector aload length dup 3 add index exch 1 add array astore def } + if + dup 91 eq %% open bracket + { /BraVector BraVector aload length dup 3 add index exch 1 add array astore def } + if + dup 94 eq %% ^ operator + %%{ /PowVector PowVector aload length dup 3 add index exch 1 add array astore def } + { /PowVector 2 index PowVector aload length 1 add array astore def }%%2004/11/14 + if + /lastchar exch def 1 add + } forall + /AddVectorFree AddVector CreateFree def + /MulVectorFree MulVector CreateFree def + /ParVectorFree OpParVector CreateFree def + /PowVectorFree PowVector CreateFree def + /ComVectorFree ComVector CreateFree def + 1 sub +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Create Free vector +%% -> +/CreateFree { + dup length array exch + { pop true exch } forall astore +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree parenthesis +%% pos -> +/UnfreePar { + /pos exch def ParVectorFree 0 + OpParVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree mul +%% pos -> +/UnfreeMul { + MulVectorFree 0 + MulVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree add +%% pos -> +/UnfreeAdd { + AddVectorFree 0 + AddVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree exp +%% pos -> +/UnfreePow { + PowVectorFree 0 + PowVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree com +%% pos -> +/UnfreeCom { + ComVectorFree 0 + ComVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length 3.14159265359 /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the condition function +%% -> +/condition { + %% manage the condition + 1 index 1 add 3 index 1 sub FindFirstCom + %% find the test char <,>,=,! + 4 index 1 index 1 sub FindTestChar + 4 index 2 index 1 sub AnalyzeExpr 3 1 roll + 1 add 1 index 1 sub AnalyzeExpr exch + /ExpressionVector ExpressionVector aload length dup 1 add array exch 3 add -1 roll cvx exch astore def + %% manage the then clause + MngClause + %% manage the else clause + MngClause + /ExpressionVector ExpressionVector aload length 1 add /ifelse cvx exch array astore def + mark 8 1 roll cleartomark +} def +/FindTestChar { + 1 exch + { dup ExpressionString exch get + dup 60 eq { pop /lt exit } if%%< + dup 61 eq { pop /eq exit } if%%= + dup 62 eq { pop /gt exit } if%%> + pop pop } for +} def +/MngClause { + 3 1 roll FindFirstCom 4 -1 roll 1 add 1 index 1 sub + /ExpressionVector ExpressionVector exch [] def 3 1 roll AnalyzeExpr + /ExpressionVector exch aload length 1 add ExpressionVector cvx exch array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the sumation function +%% -> +/sumation { + /LoopLevel LoopLevel 1 add def + %% create the accumulator + /ExpressionVector ExpressionVector aload length 1 add 0 exch array astore def + %% read the variable name + 1 index 1 add 3 index 1 sub FindFirstCom + ExpressionString 4 -1 roll 2 index 1 index sub getinterval cvn + /tempvar exch def + %% read the initial value + GetNextNumber + /ExpressionVector ExpressionVector aload length 1 add temp exch array astore def + %% read the increment value + GetNextNumber + /ExpressionVector ExpressionVector aload length 1 add temp exch array astore def + %% read the limit value + GetNextNumber + /ExpressionVector ExpressionVector aload length 1 add temp exch array astore def + /LoopContext LoopContext aload length 1 add ExpressionVector exch array astore def + /ExpressionVector [ tempvar /exch cvx /def cvx ] def + 1 add exch AnalyzeExpr + %% add each term of the sum + /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def + /ExpressionVector LoopContext LoopLevel get aload length 2 add + ExpressionVector cvx exch /for cvx exch array astore def pop pop pop pop } def +/GetNextNumber { + exch FindFirstCom ExpressionString 4 -1 roll 1 add 2 index 1 index sub getinterval cvi + /temp exch def } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% METHODS FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% MISC FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/RemoveWS {% + dup length + 0 2 index { 32 ne { 1 add } if } forall + 2 copy ne + { exch pop string 0 2 index + { dup 32 ne { 2 index 2 index 3 -1 roll put 1 add } { pop } ifelse } forall + pop exch pop } { pop pop } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% NEW FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Make a discrete sum +%% var n begin end expr -> +/SUM {} def +%% function arcsine in radians +%% x -> theta +/asin {% + dup abs 1 gt { EQDFasinrangeerror } if + dup abs 1 eq + { PIdiv2 exch -1 eq { neg } if } + { .1 %% asin(x) + { dup dup PI div 180 mul sin 3 index sub exch PI div 180 mul cos div + dup abs 1e-6 lt { sub exit } if sub + } loop + exch pop } ifelse +} def +%% function arccosine in radians +%% x -> theta +/acos {% + dup abs 1 gt { EQDFacosrangeerror } if + dup abs 1 eq + { -1 eq { PI } { 0 } ifelse } + { 1.5 %% asin(x) + { dup dup PI div 180 mul cos 3 index sub exch PI div 180 mul sin neg div + dup abs 1e-6 lt { sub exit } if sub + } loop + exch pop } ifelse +} def +%% factorial function +%% n -> n! +/fact { 1 exch 2 exch 1 exch { mul } for } def + +%end + +%% modified exponential funtion for 0 +%% x n -> x^n +/EXP { dup 0 eq { pop pop 1 } { exp } ifelse } def +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/GTriangle { + gsave + /mtrx CM def + /colorA ED /colorB ED /colorC ED % save the colors + /xA ED /yA ED % save the origin + xA yA translate + rotate % \psk@gangle + /yB ED /xB ED /yC ED /xC ED % save other coordinates + /ds [ % save data in a array + 0 0 0 colorA aload pop % fd x y xr xg xb + 0 xB xA sub yB yA sub colorB aload pop + 0 xC xA sub yC yA sub colorC aload pop +% 1 xC xB add yB colorA aload pop % for use with 4 points ABCD + ] def + newpath + << + /ShadingType 4 % single Gouraud + /ColorSpace [ /DeviceRGB ] + /DataSource ds + >> + shfill + closepath + mtrx + setmatrix grestore} def +% +%% convertisseur longueur d'onde ->R,G,B Manuel Luque +%% lambda max=780 nanomètres +%% lambda min=380 nanomètres +%% adaptation de : +%% http://www.physics.sfasu.edu/astro/color.html +%% www.efg2.com/lab +% +/Gamma 0.8 def +/calculateRGB { + lambda 379 le {/Red 0 def /Green 0 def /Blue 0 def} if + lambda 781 ge {/Red 0 def /Green 0 def /Blue 0 def} if + lambda 380 ge {lambda 439 le { + /R {lambda 440 sub neg 440 380 sub div} def + /Red R factor mul Gamma exp def + /G 0 def + /Green G factor mul Gamma exp def + /B 1 def + /Blue B factor mul Gamma exp def} if + } if + lambda 440 ge { lambda 489 le { + /G {lambda 440 sub 490 440 sub div} def + /Green G factor mul Gamma exp def + /R 0 def /Red 0 def + /B 1 def + /Blue B factor mul Gamma exp def } if + } if + lambda 490 ge {lambda 509 le { + /B {lambda 510 sub neg 510 490 sub div} def + /Blue B factor mul Gamma exp def + /R 0 def /Red 0 def + /G 1 def + /Green G factor mul Gamma exp def } if + } if + lambda 510 ge {lambda 579 le { + /R {lambda 510 sub 580 510 sub div } def + /Red R factor mul Gamma exp def + /Blue 0 def + /G 1 def + /Green G factor mul Gamma exp def } if + } if + lambda 580 ge {lambda 644 le { + /G {lambda 645 sub neg 645 580 sub div } def + /Green G factor mul Gamma exp def + /Blue 0 def + /R 1 def + /Red R factor mul Gamma exp def } if + } if + lambda 645 ge { lambda 780 le { + /Red 1 factor mul Gamma exp def + /Blue 0 def + /Green 0 def } if + } if +} def +% +/factor { + lambda 380 ge {lambda 419 le { 0.3 0.7 lambda 380 sub mul 420 380 sub div add} if } if + lambda 420 ge {lambda 700 le { 1 } if } if + lambda 701 ge {lambda 780 le { 0.3 0.7 780 lambda sub mul 780 700 sub div add} if } if +} def + +/wavelengthToRGB { % the wavelength in nm must be on top of the stack + /lambda exch def + calculateRGB +} def + + +/axfill { + 8 dict begin + /xw exch def /nl exch def + /C1 exch def /y1 exch def/x1 exch def + /C0 exch def /y0 exch def/x0 exch def + << /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [ x0 y0 x1 y1 ] + /EmulatorHints [ xw 2 div dup ] + /Function << + /FunctionType 2 + /Domain [0 1] + /C0 C0 + /C1 C1 + /N 1 + >> + >> shfill + end +} bind def + +systemdict /shfill known not { + +/Emulate_shfill 32 dict def Emulate_shfill begin + +/NumberOfLayers 128 def + +/assert { not { (assert) /typecheck signalerror} if } bind def +/assert /pop load def + +% generic interpolation +% takes two n-arrays, returns a hopefully optimized procedure taking one +% argument, and returning a correct blend of the two arrays (hence an +% n-array) +/interpolating_function { + 10 dict begin /a1 exch def /a0 exch def + a0 length a1 length eq assert + [ /mark load /exch load + 0 1 a0 length 1 sub { /i exch def /dup load a1 i get a0 i get sub /mul load a0 i get /add load /exch load } for /pop load (]) cvn load ] cvx end +} bind def + +% Emulates (rather poorly) a radial or axial fill. +% For radial fills, we _require_ that the inner circle be specified +% first. +% For axial fills, the ``Extend'' behaviour is ignored, and we _require_ +% an additional parameters in the dictionary, named EmulatorHints. It's a +% 2-array denoting the left and right extent of the area to paint. These +% are taken as multiples of the vector orthogonal to the direction vector. +/xshfill { begin gsave + % do some checks. + Function begin FunctionType 2 eq assert + Domain 0 get 0 eq Domain 1 get 1 eq and assert end + ColorSpace setcolorspace + % we assume ll2 at least, so that dicts can be extended. anyway + % the syntax we request is ll2 only. + /mkcol Function begin C0 C1 end interpolating_function bind def + ShadingType 3 eq { + /mkcoords + [ Coords cvx exec 7 3 roll ] [ 5 -3 roll ] + interpolating_function + bind def + /one { newpath mkcoords cvx dup exec 3 -1 roll add exch moveto + exec 0 360 arc fill } bind def + } if + ShadingType 2 eq { + /dv [ Coords cvx exec exch 4 1 roll exch sub 3 1 roll sub exch + ] cvx def % normal vector + /nv [ dv neg exch ] cvx def + /mkcoords + [ Coords cvx exec 5 2 roll nv + exch 4 -1 roll exch EmulatorHints 0 get mul add + 3 1 roll EmulatorHints 0 get mul add ] + [ 4 -2 roll nv + exch 4 -1 roll exch EmulatorHints 0 get mul add + 3 1 roll EmulatorHints 0 get mul add ] + interpolating_function + % rescale to adapt to our reverse scan behaviour. + /dv [ dv neg NumberOfLayers div exch neg NumberOfLayers div exch ] cvx def + /bnv [ nv EmulatorHints cvx exec add mul exch + EmulatorHints cvx exec add mul exch ] cvx def + /nv [ bnv neg exch neg exch ] cvx def + bind def + /one { newpath mkcoords cvx exec moveto + nv rlineto + dv rlineto + bnv rlineto + closepath fill } bind def + } if + % The space is traversed backwards, since it is more customary + % for me at least to put the inner circle first for radial fills. + % For axial fills, this does not matter afaict. + 1 1 NumberOfLayers div neg 0 + { dup Function /N get exp mkcol cvx exec setcolor one } + for + grestore end +} bind def + +end +userdict /shfill { Emulate_shfill begin xshfill end } bind put } if + +end + +% END pst-eqdf.pro diff --git a/Master/texmf-dist/dvips/pstricks/Changes b/Master/texmf-dist/dvips/pstricks/Changes new file mode 100644 index 00000000000..73c4f68079d --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/Changes @@ -0,0 +1,4 @@ +---- pstricks.pro +97, patch 6 2005-05-17 (hv) added some helper stuff + RadtoDeg, DegtoRad, Pi, TwoPi, ATAN +97, patch 5 2005-03-08 (hv) bugfix for DashLine diff --git a/Master/texmf-dist/dvips/pstricks/pst-blur.pro b/Master/texmf-dist/dvips/pstricks/pst-blur.pro new file mode 100644 index 00000000000..4cc4963cd82 --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-blur.pro @@ -0,0 +1,64 @@ +%% +%% This is file `pst-blur.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-blur.dtx (with options: `prolog') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% You are *not* allowed to modify this file. +%% +%% You are *not* allowed to distribute this file. +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-blur.dtx. +%% +/tx@PstBlurDict 60 dict def +tx@PstBlurDict begin +/Iterate { + /SegLines ED + /ThisB ED /ThisG ED /ThisR ED + /NextB ED /NextG ED /NextR ED + /W 2.0 BlurRadius mul def + /WDec W SegLines div def + /RInc NextR ThisR sub SegLines div def + /GInc NextG ThisG sub SegLines div def + /BInc NextB ThisB sub SegLines div def + /R ThisR def + /G ThisG def + /B ThisB def + SegLines { + R G B + sqrt 3 1 roll sqrt 3 1 roll sqrt 3 1 roll + setrgbcolor + gsave W setlinewidth + stroke grestore + /W W WDec sub def + /R R RInc add def + /G G GInc add def + /B B BInc add def + } bind repeat +} def +/BlurShadow { + Shadow + /BlurSteps ED + /BlurRadius ED + dup mul /BEnd ED dup mul /GEnd ED dup mul /REnd ED + dup mul /BBeg ED dup mul /GBeg ED dup mul /RBeg ED + RBeg REnd add 0.5 mul /RMid ED + GBeg GEnd add 0.5 mul /GMid ED + BBeg BEnd add 0.5 mul /BMid ED + /OuterSteps BlurSteps 2 div cvi def + /InnerSteps BlurSteps OuterSteps sub def + 1 setlinejoin + RMid GMid BMid REnd GEnd BEnd OuterSteps Iterate + gsave RBeg sqrt GBeg sqrt BBeg sqrt setrgbcolor fill grestore + clip + 0 setlinejoin + RMid GMid BMid RBeg GBeg BBeg InnerSteps Iterate +} def +end + diff --git a/Master/texmf-dist/dvips/pstricks/pst-coil.pro b/Master/texmf-dist/dvips/pstricks/pst-coil.pro new file mode 100644 index 00000000000..4b635cea9f6 --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-coil.pro @@ -0,0 +1,33 @@ +%! +% PostScript prologue for pst-coil.tex. +% Version 97 patch 1, 98/06/02 +% For distribution, see pstricks.tex. +% +/tx@CoilDict 40 dict def tx@CoilDict begin +/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos +lineto } def +/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED +/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0 +sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos +Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div +w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h +mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for +EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP +% DG/SR modification begin - Jun. 2, 1998 - Patch 1 (from Michael Vulis) +% TotalLength 0 ArrowB lineto } def +TotalLength 0 ArrowB lineto +pop pop pop pop } def +% DG/SR modification end +/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED +/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale +BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add +BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc +EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def +/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED +/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED +Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul +sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add +def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat +TotalLength ArmA sub 0 TotalLength 0 } def +end +% END pst-coil.pro diff --git a/Master/texmf-dist/dvips/pstricks/pst-dots.pro b/Master/texmf-dist/dvips/pstricks/pst-dots.pro new file mode 100644 index 00000000000..8c83b963525 --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-dots.pro @@ -0,0 +1,132 @@ +%!PS-Adobe-2.0 +%%Title: Dot Font for PSTricks +%%Creator: Timothy Van Zandt <tvz@Princeton.EDU> +%%Creation Date: May 7, 1993 +%% Version 97 patch 1, 99/12/16 +%% Modified by Etienne Riga <etienne.riga@skynet.be> - Dec. 16, 1999 +%% to add /Diamond, /SolidDiamond and /BoldDiamond +10 dict dup begin + /FontType 3 def + /FontMatrix [ .001 0 0 .001 0 0 ] def + /FontBBox [ 0 0 0 0 ] def + /Encoding 256 array def + 0 1 255 { Encoding exch /.notdef put } for + Encoding + dup (b) 0 get /Bullet put + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +% DG/SR modification end + /Metrics 13 dict def + Metrics begin + /Bullet 1000 def + /Circle 1000 def + /BoldCircle 1000 def + /SolidTriangle 1344 def + /Triangle 1344 def + /BoldTriangle 1344 def + /SolidSquare 886 def + /Square 886 def + /BoldSquare 886 def + /SolidPentagon 1093.2 def + /Pentagon 1093.2 def + /BoldPentagon 1093.2 def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /SolidDiamond 1008 def + /Diamond 1008 def + /BoldDiamond 1008 def +% DG/SR modification end + /.notdef 0 def + end + /BBoxes 13 dict def + BBoxes begin + /Circle { -550 -550 550 550 } def + /BoldCircle /Circle load def + /Bullet /Circle load def + /Triangle { -571.5 -330 571.5 660 } def + /BoldTriangle /Triangle load def + /SolidTriangle /Triangle load def + /Square { -450 -450 450 450 } def + /BoldSquare /Square load def + /SolidSquare /Square load def + /Pentagon { -546.6 -465 546.6 574.7 } def + /BoldPentagon /Pentagon load def + /SolidPentagon /Pentagon load def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /Diamond { -428.5 -742.5 428.5 742.5 } def + /BoldDiamond /Diamond load def + /SolidDiamond /Diamond load def +% DG/SR modification end + /.notdef { 0 0 0 0 } def + end + /CharProcs 20 dict def + CharProcs begin + /Adjust { + 2 copy dtransform floor .5 add exch floor .5 add exch idtransform + 3 -1 roll div 3 1 roll exch div exch scale + } def + /CirclePath { 0 0 500 0 360 arc closepath } def + /Bullet { 500 500 Adjust CirclePath fill } def + /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath + eofill } def + /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath + eofill } def + /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def + /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto + closepath } def + /SolidTriangle { TrianglePath fill } def + /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def + /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def + /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto + -450 -450 lineto closepath } def + /SolidSquare { SquarePath fill } def + /Square { SquarePath .89 .89 scale SquarePath eofill } def + /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def + /PentagonPath { + -337.8 -465 moveto + 337.8 -465 lineto + 546.6 177.6 lineto + 0 574.7 lineto + -546.6 177.6 lineto + closepath + } def + /SolidPentagon { PentagonPath fill } def + /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def + /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /DiamondPath { 0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto + 428.5 0 lineto closepath } def + /SolidDiamond { DiamondPath fill } def + /Diamond { DiamondPath .85 .85 scale DiamondPath eofill } def + /BoldDiamond { DiamondPath .7 .7 scale DiamondPath eofill } def +% DG/SR modification end + /.notdef { } def + end + /BuildGlyph { + exch + begin + Metrics 1 index get exec 0 + BBoxes 3 index get exec + setcachedevice + CharProcs begin load exec end + end + } def + /BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + } bind def +end +/PSTricksDotFont exch definefont pop +%END pst-dots.pro diff --git a/Master/texmf-dist/dvips/pstricks/pst-grad.pro b/Master/texmf-dist/dvips/pstricks/pst-grad.pro new file mode 100644 index 00000000000..84b0ebfefc2 --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-grad.pro @@ -0,0 +1,106 @@ +%! +% PostScript prologue for pst-grad.tex. +% Version 1.04, 2004/06/23 (adding %GradientCircle style - D.G.) +% prepared by Herbert Voss +% For copying restrictions, see pstricks.tex. +% +% For the PSTricks gradient fillstyle.% +% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).% +% Syntax:% D.G. modification begin - Apr. 9, %1998 +%%%%%% R0 G0 B0 R1 G1 B1 NumLines MidPoint Angle GradientFill +% ifGradientCircle GradientScale %GradientPosX GradientPosY +% R0 G0 B0 R1 G1 B1 NumLines MidPoint %Angle GradientFill +% D.G. modification end +% +/tx@GradientDict 40 dict def +tx@GradientDict begin +/GradientFill { + rotate + /MidPoint ED + /NumLines ED + /LastBlue ED + /LastGreen ED + /LastRed ED + /FirstBlue ED + /FirstGreen ED +/FirstRed ED +% D.G. modification begin - Apr. 9, 1998 +/GradientPosY ED +/GradientPosX ED + /GradientScale ED + /ifGradientCircle ED +% D.G. modification end + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack +% D.G. modification begin - Apr. 10, 1998 + 4 copy /ury ED /urx ED /lly ED /llx ED +% D.G. modification end + /y ED /x ED +% D.G. modification begin - Apr. 10, 1998 +ifGradientCircle + {0 GradientPosX eq + {0 GradientPosX eq {2 copy translate} if} if} + {2 copy translate} ifelse +% D.G. modification end + y sub neg /y ED + x sub neg /x ED % This avoids gaps due to rounding errors: + LastRed FirstRed add 2 div + LastGreen FirstGreen add 2 div + LastBlue FirstBlue add 2 div + setrgbcolor +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {/YSizePerLine y NumLines div def + /CurrentY y 2 div def + /MidLine NumLines 2 div 1 MidPoint sub mul abs cvi def} + {fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def} ifelse +% DG modification end + MidLine NumLines 2 sub gt + { /MidLine NumLines def } + { MidLine 2 lt { /MidLine 0 def } if } + ifelse + MidLine 0 gt + { + /Red FirstRed def + /Green FirstGreen def + /Blue FirstBlue def + /RedIncrement LastRed FirstRed sub MidLine 1 sub div def + /GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def + /BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def + MidLine { GradientLoop } repeat + } if + MidLine NumLines lt + { + /Red LastRed def + /Green LastGreen def + /Blue LastBlue def + /RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def + /GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def + /BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoop } repeat } + if + } def/GradientLoop { +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {CurrentY 0 gt { +% The default center used is the center of the bounding box of the object + 0 GradientPosX eq {0 GradientPosX eq + {/GradientPosX urx llx sub 2 div def + /GradientPosY ury lly sub 2 div def} if} if + GradientPosX GradientPosY CurrentY GradientScale mul 0 360 arc + Red Green Blue setrgbcolor fill + /CurrentY CurrentY YSizePerLine sub def + /Blue Blue BlueIncrement add def + /Green Green GreenIncrement add def + /Red Red RedIncrement add def} if} {0 CurrentY moveto x 0 rlineto + 0 YSizePerLine rlineto x neg 0 rlineto closepath + Red Green Blue setrgbcolor fill /CurrentY CurrentY YSizePerLine add def + /Blue Blue BlueIncrement add def /Green Green GreenIncrement add def + /Red Red RedIncrement add def} ifelse% D.G. modification end + }def + end +% END pst-grad.pro diff --git a/Master/texmf-dist/dvips/pstricks/pst-node.pro b/Master/texmf-dist/dvips/pstricks/pst-node.pro new file mode 100644 index 00000000000..7168f9c457c --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-node.pro @@ -0,0 +1,210 @@ +%! +% PostScript prologue for pst-node.tex. +% Version 97 patch 1, 97/05/09. +% For distribution, see pstricks.tex. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin /T /translate load def end +/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } +if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end +grestore } def +/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch +Sin mul } def } def +/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def +} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } +ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx +dup Sin mul Cos Div } ifelse } def +/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub +/u ED /NodePos { GetRnodePos } def } def +/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup +Cos mul exch Sin mul } def +/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h +mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul +} ifelse } def +/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d +ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d +sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan +sin def /NodePos { TriNodePos } def } def +/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos +hh mul Atan dup cos ww mul exch sin hh mul } def +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist +Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } +{ 0 Dist Sin mul } ifelse } ifelse Do } def +/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform +exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx +dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop +XYPos } ifelse } def +/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 +roll sin mul sub exch } ifelse } def +/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA +AddOffset yA add /yA1 ED xA add /xA1 ED } def +/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB +AddOffset yB add /yB1 ED xB add /xB1 ED } def +/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA +AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED +ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED +} ifelse } def +/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB +AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED +ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED +} ifelse } def +/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED +/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b +known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA +ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def +/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub +mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def +/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt +{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop +} repeat LPutLine cleartomark } def +/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED +/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 +mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx +sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul +add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add +y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul +mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop +end } def +/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub +Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan +/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 +yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +ifelse } def +/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx +itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 +yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 +yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def +/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def +/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2 +yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform +/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1 +tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def +xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx +transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def } +{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB +0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict +begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx +def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if +xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end +/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin +false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2 +mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3 +mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 +xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false +Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r +r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% DG/SR modification end +} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add +AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r +Div def /y ED /x ED } def +/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB +180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos +mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def +/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy +add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos +{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar +tx@Dict begin false Polygon end } def +/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan +def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 +mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def +/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div +def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def +GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul +sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 +eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } +{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def +0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 +0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } +ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos +{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { +r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } +{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add +add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub +mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t +sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse +y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { +LPutPos } def } def +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg +exch X sub neg exch moveto setmatrix CP grestore } def +/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0 +def } ifelse LPutCoor } def +/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg } +if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED } +def +/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if +r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED } +def +end +% END pst-node.pro diff --git a/Master/texmf-dist/dvips/pstricks/pst-slpe.pro b/Master/texmf-dist/dvips/pstricks/pst-slpe.pro new file mode 100644 index 00000000000..552e63f10aa --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-slpe.pro @@ -0,0 +1,150 @@ +%% +%% This is file `pst-slpe.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-slpe.dtx (with options: `prolog') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% You are *not* allowed to modify this file. +%% +%% You are *not* allowed to distribute this file. +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-slpe.dtx. +%% +/tx@PstSlopeDict 60 dict def tx@PstSlopeDict begin +/max {2 copy lt {exch} if pop} bind def +/Iterate { + 1 sub /NumSegs ED + dup mul 3 1 roll dup mul 3 1 roll dup mul 3 1 roll + setrgbcolor currenthsbcolor + /ThisB ED + /ThisS ED + /ThisH ED + /ThisPt ED + gsave fill grestore + NumSegs { + dup mul 3 1 roll dup mul 3 1 roll dup mul 3 1 roll + setrgbcolor currenthsbcolor + /NextB ED + /NextS ED + /NextH ED + /NextPt ED + ThisPt NextPt sub ThisPt div NumSteps mul cvi /SegSteps exch def + /NumSteps NumSteps SegSteps sub def + SegSteps 0 eq not { + ThisS 0 eq {/ThisH NextH def} if + NextS 0 eq {/NextH ThisH def} if + ThisH NextH sub 0.5 gt + {/NextH NextH 1.0 add def} + { NextH ThisH sub 0.5 ge {/ThisH ThisH 1.0 add def} if } + ifelse + /B ThisB def + /S ThisS def + /H ThisH def + /BInc NextB ThisB sub SegSteps div def + /SInc NextS ThisS sub SegSteps div def + /HInc NextH ThisH sub SegSteps div def + SegSteps { + H dup 1. gt {1. sub} if S B sethsbcolor + currentrgbcolor + sqrt 3 1 roll sqrt 3 1 roll sqrt 3 1 roll + setrgbcolor + DrawStep + /H H HInc add def + /S S SInc add def + /B B BInc add def + } bind repeat + /ThisH NextH def + /ThisS NextS def + /ThisB NextB def + /ThisPt NextPt def + } if + } bind repeat +} def +/PatchRadius { + Radius 0 eq { + /UpdRR { dup mul exch dup mul add RR max /RR ED } bind def + gsave + flattenpath + /RR 0 def + {UpdRR} {UpdRR} {} {} pathforall + grestore + /Radius RR sqrt def + } if +} def +/SlopesFill { + gsave + 180 add rotate + /NumSteps ED + clip + pathbbox + /h ED /w ED + 2 copy translate + h sub neg /h ED + w sub neg /w ED + /XInc w NumSteps div def + /DrawStep { + 0 0 XInc h rectfill + XInc 0 translate + } bind def + Iterate + grestore +} def +/CcSlopesFill { + gsave + /Radius ED + /CenterY ED + /CenterX ED + /NumSteps ED + clip + pathbbox + /h ED /w ED + 2 copy translate + h sub neg /h ED + w sub neg /w ED + w CenterX mul h CenterY mul translate + PatchRadius + /RadPerStep Radius NumSteps div neg def + /Rad Radius def + /DrawStep { + 0 0 Rad 0 360 arc + closepath fill + /Rad Rad RadPerStep add def + } bind def + Iterate + grestore +} def +/RadSlopesFill { + gsave + rotate + /Radius ED + /CenterY ED + /CenterX ED + /NumSteps ED + clip + pathbbox + /h ED /w ED + 2 copy translate + h sub neg /h ED + w sub neg /w ED + w CenterX mul h CenterY mul translate + PatchRadius + /AngleIncrement 360 NumSteps div neg def + /dY AngleIncrement sin AngleIncrement cos div Radius mul def + /DrawStep { + 0 0 moveto + Radius 0 rlineto + 0 dY rlineto + closepath fill + AngleIncrement rotate + } bind def + Iterate + grestore +} def +end + diff --git a/Master/texmf-dist/dvips/pstricks/pst-text.pro b/Master/texmf-dist/dvips/pstricks/pst-text.pro new file mode 100644 index 00000000000..2f001e2af23 --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pst-text.pro @@ -0,0 +1,101 @@ +%! +% PostScript header file pst-text.pro +% Version 97, 94/04/20; patched MV 10-09-99 00:36 +% For distribution, see pstricks.tex. + +/tx@TextPathDict 40 dict def +tx@TextPathDict begin + +% Syntax: <dist> PathPosition - +% Function: Searches for position of currentpath distance <dist> from +% beginning. Sets (X,Y)=position, and Angle=tangent. +/PathPosition +{ /targetdist exch def + /pathdist 0 def + /continue true def + /X { newx } def /Y { newy } def /Angle 0 def + gsave + flattenpath + { movetoproc } { linetoproc } { } { firstx firsty linetoproc } + /pathforall load stopped { pop pop pop pop /X 0 def /Y 0 def } if + grestore +} def + +/movetoproc { continue { @movetoproc } { pop pop } ifelse } def + +/@movetoproc +{ /newy exch def /newx exch def + /firstx newx def /firsty newy def +} def + +/linetoproc { continue { @linetoproc } { pop pop } ifelse } def + +/@linetoproc +{ + /oldx newx def /oldy newy def + /newy exch def /newx exch def + /dx newx oldx sub def + /dy newy oldy sub def + /dist dx dup mul dy dup mul add sqrt def + /pathdist pathdist dist add def + pathdist targetdist ge + { pathdist targetdist sub dist div dup + dy mul neg newy add /Y exch def + dx mul neg newx add /X exch def + /Angle dy dx atan def + /continue false def + } if +} def + +/TextPathShow +{ /String exch def + /CharCount 0 def + String length + { String CharCount 1 getinterval ShowChar + /CharCount CharCount 1 add def + } repeat +} def + +% Syntax: <pathlength> <position> InitTextPath - +/InitTextPath +{ gsave + currentpoint /Y exch def /X exch def + exch X Hoffset sub sub mul + Voffset Hoffset sub add + neg X add /Hoffset exch def + /Voffset Y def + grestore +} def + +/Transform +{ PathPosition + dup + Angle cos mul Y add exch + Angle sin mul neg X add exch + translate + Angle rotate +} def + +/ShowChar +{ /Char exch def + gsave + Char end stringwidth + tx@TextPathDict begin + 2 div /Sy exch def 2 div /Sx exch def + +%%% MV 10-09-99 00:36 + /sc?currentpoint where {pop sc?currentpoint} {currentpoint} ifelse +% currentpoint + + Voffset sub Sy add exch + Hoffset sub Sx add + Transform + Sx neg Sy neg moveto + Char end tx@TextPathSavedShow + tx@TextPathDict begin + grestore + Sx 2 mul Sy 2 mul rmoveto +} def + +end +% END pst-text.pro diff --git a/Master/texmf-dist/dvips/pstricks/pstricks.pro b/Master/texmf-dist/dvips/pstricks/pstricks.pro new file mode 100644 index 00000000000..8c67d1cb7da --- /dev/null +++ b/Master/texmf-dist/dvips/pstricks/pstricks.pro @@ -0,0 +1,410 @@ +%! +% PostScript prologue for pstricks.tex. +% Version 1.00, 2005/09/18 +% For distribution, see pstricks.tex. +% +/tx@Dict 200 dict def tx@Dict begin +/ADict 25 dict def +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Atan { /atan load stopped { pop pop 0 } if } def +/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) +/Div { dup 0 eq { pop } { div } ifelse } def % control the division +/NET { neg exch neg exch T } def % change coordinate system to the negative one +/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, epects 2 parameter +/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian +%----------------- hv added 20050516 --------------- +/Pi 3.14159265359 def +/TwoPi 6.28318530718 def +/Euler 2.71828182846 def +/RadtoDeg { 180 mul Pi div } def % convert from radian to degrees +/DegtoRad { Pi mul 180 div } def % viceversa +%----------------- hv end--------------------------- +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def +/PathLength { flattenpath /z 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def + }{ /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } + /pathforall load stopped { pop pop pop pop } if z } def +/STP { .996264 dup scale } def +/STV { SDict begin normalscale end STP } def +% +%%-------------- DG begin patch 15 ---------------%% +%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def +%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y +%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul +%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] +%0 } ifelse setdash stroke } def +/DashLine { + dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse + /b ED /x1 ED /y1 ED /x ED /y ED + /z y x add y1 add x1 add def + /Coef b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div def + /y y Coef mul def + /x x Coef mul def + /y1 y1 Coef mul def + /x1 x1 Coef mul def + x1 0 gt y1 0 gt or x 0 gt or y 0 gt and + { [ y x y1 x1 ] 1 a sub y mul } + { [ 1 0 ] 0 } ifelse + setdash stroke +} def +%%-------------- DG end patch 15 ---------------%% +/DotLine { + /b PathLength def + /a ED /z ED /y CLW def + /z y z add def + a 0 gt { + /b b a div def + }{ + a 0 eq { + /b b y sub def + }{ a -3 eq { + /b b y add def } if + } ifelse + } ifelse + [ 0 b b z Div round Div dup 0 le { pop 1 } if ] + a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse + setdash 1 setlinecap stroke +} def +% +/LineFill { % hv ------------ patch 7 ------------- + gsave + abs /hatchWidthInc ED + abs /hatchSepInc ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + 2 setlinecap + systemdict + /setstrokeadjust known { true setstrokeadjust } if + x2 x1 sub 1 add { + x1 a mul y1 moveto 0 y2 rlineto stroke + /x1 x1 1 add + hatchWidthInc 0 gt { CLW add } if + def + hatchSepInc 0 gt hatchWidthInc 0 gt or { + /a a hatchSepInc add def + CLW hatchWidthInc add SLW + } if + } repeat + grestore + pop pop } def +% +%gsave abs CLW add /a ED a 0 dtransform round exch round exch +%2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 +%% DG/SR modification begin - Dec. 12, 1997 - Patch 2 +%%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +%itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +%% DG/SR modification end +%Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict +%/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 +%% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +%% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } +%% def +%a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore +%pop pop } def +%% DG/SR modification end +% +/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg +exch 3 index sub exch Atan rotate newpath } def +/EndArrow { @mtrx setmatrix CP grestore end } def +/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 +scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill +grestore } def +/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 +CLW moveto } def +/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 +div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 +CLW moveto } def +/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW +2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 +curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } +def +/SD { 0 360 arc fill } def +/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS +CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { +/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto +load } if ] cvx newpath 3 1 roll T exec } def +/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch +cvi def } def +/NArray { % holds the coordinates and on top of stack the showpoints boolean + /f ED + counttomark 2 div dup cvi /n ED + n eq not { exch pop } if + f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse +} def +/Line { + NArray n 0 eq not + { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def + n { Lineto } repeat + CP 4 2 roll ArrowB L pop pop + } if +} def +/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } + ifelse { pop } repeat a } def +/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq + and { pop pop /n n 1 sub def } if } def +/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } + repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 + ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 + moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto + Lineto pop pop closepath } ifelse } def +/Diamond { + /mtrx CM def + T rotate + /h ED + /w ED + dup 0 eq { pop } { CLW mul neg + /d ED + /a w h Atan def + /h d a sin Div h add def + /w d a cos Div w add def } ifelse + mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div + /ArrowA { moveto } def + /ArrowB { } def + false Line + closepath mtrx setmatrix } def +% DG modification begin - Jan. 15, 1997 +%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { +%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 +%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +%setmatrix } def +/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup +CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 +d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def +setmatrix pop } def +% DG/SR modification end +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 +def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp +mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos +abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def +/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul +m mul neg def } def +/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } +ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } +def +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +/OpenCurve { + NArray n 3 lt + { n { pop pop } repeat } + { BOC /n n 3 sub def n { NC } repeat EOC } ifelse +} def +/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload +/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop +pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def +/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { +CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } +repeat closepath pop pop } ifelse } def +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } +def +/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix +rotate matrix concatmatrix exch findfont exch makefont setfont } def +/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto +x1 y1 lineto closepath } def +/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 +y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div +exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse +/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto +x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } +ifelse } def +/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add +/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { +pop pop Rect } { OvalFrame } ifelse } def +/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop +} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] +aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 +2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } +ifelse } def +/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { +6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def +/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 +sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } +def +/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 +sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA +x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 +y0 x0 2 mul x1 sub y1 ] def } def +/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } +if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if +/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div +round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div +round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub +0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def +/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } +if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } +{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add +exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n +div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 +dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { +dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { +pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup +stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg} +{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i +w add def } repeat grestore gsave n 0 gt +% DG/SR modification begin - Nov. 7, 1997 - Patch 1 +%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } +{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } +% DG/SR modification end +{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul +n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n +div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop +1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs +dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt +{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g +exch t L stroke /i i h add def } repeat grestore } def +/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 +1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add +exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c +mul neg d } def +/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def +% +/ArcAdjust { +% given a target length (targetLength) and an initial angle (angle0) [in the stack], +% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). +% This computes an angle t such that (x0,y0) is at distance targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). +% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 +% contrary to TvZ's code. +% To achieve, this, one iterates the following process: start with some angle t, +% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. +% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. +% +% Another difference with TvZ's code is that we need d (=add/sub) to be defined. +% the value of d = add/sub is used to know on which side we have to move. +% It is only used in the initialisation of the angle before the iteration. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Input stack: 1: target length 2: initial angle +% variables used : rx, ry, d (=add/sub) +% + /targetLength ED /angle0 ED + /x0 rx angle0 cos mul def + /y0 ry angle0 sin mul def +% we are looking for an angle t such that (x0,y0) is at distance targetLength from the point M(t)=(rx*cos(t),ry*sin(t))) +%initialisation of angle (using 1st order approx = TvZ's code) + targetLength 57.2958 mul + angle0 sin rx mul dup mul + angle0 cos ry mul dup mul + add sqrt div +% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees +% (if the ellipse is very curved at the point where we draw the arrow, the value can be much more than 360 degrees !) +% this should avoid going on the wrong side (more than 180 degrees) or go near +% a bad attractive point (at 180 degrees) + dup 90 ge { pop 90 } if + angle0 exch d +% maximum number of times to iterate the iterative procedure: + 30 +% iterative procedure: takes an angle t on top of stack, computes a better angle (an put it on top of stack) + { dup +% compute distance D between (x0,y0) and M(t) + dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt +% if D almost equals targetLength, we stop + dup targetLength sub abs 1e-5 le { pop exit } if +% stack now contains D t +% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: +% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) + exch dup cos rx mul x0 sub exch sin ry mul y0 sub +% stack contains: y(t)-y0, x(t)-x0, d + 2 index Div targetLength mul y0 add ry Div exch + 2 index Div targetLength mul x0 add rx Div +% stack contains x(t')/rx , y(t')/ry , d +% now compute t', and remove D from stack + atan exch pop + } repeat +% we don't look at what happened... in particular, if targetLength is greater than the diameter of the ellipse... +% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... +%after iteration, stack contains an angle t such that M(t) is the tail of the arrow +% to give back the result as a an angle relative to angle0 we could add the following line: +% angle0 sub 0 exch d +% +} def +% +/EllipticArcArrow { + /d ED % add/sub + /b ED % arrow procedure + /a1 ED % angle + gsave + newpath + 0 -1000 moveto + clip % Set clippath far from arrow. + newpath + 0 1 0 0 b % Draw arrow to determine length. + grestore +% Length of arrow is on top of stack. Next 3 numbers are junk. +% + a1 exch ArcAdjust % Angular position of base of arrow. + /a2 ED + pop pop pop + a2 cos rx mul x add + a2 sin ry mul y add + a1 cos rx mul x add + a1 sin ry mul y add +% Now arrow tip coor and base coor are on stack. + b pop pop pop pop % Draw arrow, and discard coordinates. + a2 CLW 8 div +% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse + ArcAdjust +% resets original value of d + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. +} def +%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% +% +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } +def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle +dup a add ] cvx def } def +/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] +cvx def } def +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s +abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b +div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { +h1 abs h sub dup s mul abs } ifelse } def +/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s +mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q +{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add +exch } def +/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible +/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def +} if } ifelse } def +/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def +/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit +neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def +/IfVisible true def } def +end +% END pstricks.pro diff --git a/Master/texmf-dist/dvips/qfonts/config.qbk b/Master/texmf-dist/dvips/qfonts/config.qbk new file mode 100644 index 00000000000..67e035195b5 --- /dev/null +++ b/Master/texmf-dist/dvips/qfonts/config.qbk @@ -0,0 +1 @@ +p +qbk.map diff --git a/Master/texmf-dist/dvips/qfonts/config.qcr b/Master/texmf-dist/dvips/qfonts/config.qcr new file mode 100644 index 00000000000..14495282d20 --- /dev/null +++ b/Master/texmf-dist/dvips/qfonts/config.qcr @@ -0,0 +1 @@ +p +qcr.map diff --git a/Master/texmf-dist/dvips/qfonts/config.qhv b/Master/texmf-dist/dvips/qfonts/config.qhv new file mode 100644 index 00000000000..79246725da4 --- /dev/null +++ b/Master/texmf-dist/dvips/qfonts/config.qhv @@ -0,0 +1 @@ +p +qhv.map diff --git a/Master/texmf-dist/dvips/qfonts/config.qpl b/Master/texmf-dist/dvips/qfonts/config.qpl new file mode 100644 index 00000000000..df60dc3d5a0 --- /dev/null +++ b/Master/texmf-dist/dvips/qfonts/config.qpl @@ -0,0 +1 @@ +p +qpl.map diff --git a/Master/texmf-dist/dvips/qfonts/config.qtm b/Master/texmf-dist/dvips/qfonts/config.qtm new file mode 100644 index 00000000000..b0f3d7d5ef5 --- /dev/null +++ b/Master/texmf-dist/dvips/qfonts/config.qtm @@ -0,0 +1 @@ +p +qtm.map diff --git a/Master/texmf-dist/dvips/qfonts/config.qzc b/Master/texmf-dist/dvips/qfonts/config.qzc new file mode 100644 index 00000000000..e1fecfd360e --- /dev/null +++ b/Master/texmf-dist/dvips/qfonts/config.qzc @@ -0,0 +1 @@ +p +qzc.map diff --git a/Master/texmf-dist/dvips/symbol/config.usy b/Master/texmf-dist/dvips/symbol/config.usy new file mode 100644 index 00000000000..0cdbd7e3edd --- /dev/null +++ b/Master/texmf-dist/dvips/symbol/config.usy @@ -0,0 +1 @@ +p +usy.map diff --git a/Master/texmf-dist/dvips/tex-ps/crops.pro b/Master/texmf-dist/dvips/tex-ps/crops.pro new file mode 100644 index 00000000000..79614ba8b1f --- /dev/null +++ b/Master/texmf-dist/dvips/tex-ps/crops.pro @@ -0,0 +1,196 @@ +userdict begin +% [PL] Domy/slne parametry | [E] Default parameters +% Odst/ep linii obci/ecia od | Cutting distance from the sheet +% arkusza (mm) | body (in mm) +/cropmarkdistance 3 def % [0..5] +% Rozmiar paser/ow (mm) | Cropmarks size (in mm) +/cropmarksize 10 def +% Rozmiar pask/ow barwnych (mm) | Color bar size (in mm) +/barsize 5 def +/colorbars 1 def +% 0 - bez paskow barwnych | 0 - without color steps and bars +% (np. do monta/zu) | (e.g. for plate composition) +% 1 - komplet pask/ow barwnych | 1 - complete set of color steps and bars +% 2 - tylko ze skalami kolor/ow | 2 - color steps only +% 3 - tylko z brudzikami | 3 - color bars only +% +/mirror 0 def +% 0 - normalny widok | 0 - normal view +% 1 - lustrzane odbicie | 1 - mirror +% +% opis na marginesie | marginal label +/marglabel 1 def % 0 -- off, 1 -- on +% dodatkowe przesuni/ecie strony | additional page offset +/xoffset 0 def +/yoffset 0 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/h_size {hsize} def /v_size {vsize} def +statusdict /setpageparams known { + statusdict /orisetpageparams statusdict /setpageparams get put + statusdict /setpageparams {4 2 roll CMdim 2 mul add x_offset add 4 1 roll + CMdim 2 mul add y_offset add 4 1 roll orisetpageparams} put +}{ + statusdict /setpage known { + statusdict /orisetpage statusdict /setpage get put + statusdict /setpage {3 1 roll CMdim 2 mul add x_offset add 3 1 roll + CMdim 2 mul add y_offset add 3 1 roll orisetpage} put + } if +} ifelse +% + /mm{25.4 div 72 mul}def + /bd{bind def}def + /_y{exch}def + /origin{0 0 moveto}def + /T{translate}def + /K{setcmykcolor}def + /box{_y dup 0 rlineto _y 0 _y rlineto neg 0 rlineto closepath}bd + /_distance {cropmarkdistance mm} def + /CMdim {cropmarksize mm} def + /boxdim {barsize mm} def + /dist{_distance 5 mm le{_distance}{5 mm}ifelse}def + /x_offset {xoffset mm} def + /y_offset {yoffset mm} def + /cmdim{dist neg CMdim add}def + /cmhalf{cmdim 2 div}def + /horver{h_size v_size le}def + /setsep 0 def +% +/rm { + 0 cmhalf moveto cmdim cmhalf lineto stroke + cmhalf 0 moveto cmhalf cmdim lineto stroke + cmhalf cmhalf cmdim 3 div 0 360 arc stroke + } bd +/cm { + 0 CMdim moveto cmdim CMdim lineto stroke + CMdim 0 moveto CMdim cmdim lineto stroke + rm} bd +/cmarks{ cm + h_size CMdim 2 mul add 0 T -1 1 scale cm + 0 v_size CMdim 2 mul add T 1 -1 scale cm + CMdim 2 mul h_size add 0 T -1 1 scale cm + } bd +% +/halfmarks{gsave + 0 v_size 2 div CMdim 2 div add dist 2 div add T rm + h_size cmdim add dist 2 mul add 0 T rm + h_size 2 div neg cmhalf sub dist sub + v_size 2 div cmdim 2 div add dist add T rm + 0 v_size neg cmdim sub dist 2 mul sub T rm + grestore}bd +% +/boxfill{boxdim boxdim box fill}bd +/_step{boxfill horver{0 boxdim}{boxdim 0} ifelse T}bd +/contour{origin + horver{boxdim boxdim 11 mul}{boxdim 11 mul boxdim} ifelse + box stroke}bd +/csteps{ + setsep 1 eq { + gsave 0 .1 1 {origin setgray _step} for grestore + 0 setgray contour % /cbar {0 setgray} bd + }{ + setsep 0 eq { + gsave 1 .1 neg 0 {origin 0 _y 0 0 _y 0 _y K _step} for grestore + 1 0 0 0 K contour % /cbar {1 0 0 0 K} bd + }{ % /cbar {1 setgray} bd + } ifelse + } ifelse + } bd +/cbar {setsep 1 eq {0 setgray}{setsep 0 eq {1 0 0 0 K}{1 setgray + } ifelse} ifelse} bd +% +/msteps{setsep 2 eq {gsave 0 .1 1 {origin setgray _step} for grestore + 0 setgray contour % /mbar {0 setgray} bd + }{setsep 0 eq { + gsave 1 .1 neg 0 {origin 0 _y 0 _y 0 0 _y K _step} for grestore + 0 1 0 0 K contour %/mbar {0 1 0 0 K} bd + }{ % /mbar {1 setgray} bd + } ifelse + } ifelse } bd +/mbar {setsep 2 eq {0 setgray}{setsep 0 eq {0 1 0 0 K}{1 setgray + } ifelse} ifelse} bd +% +/ysteps{setsep 3 eq {gsave 0 .1 1 {origin setgray _step} for grestore + 0 setgray contour % /ybar {0 setgray} bd + }{setsep 0 eq { + gsave 1 .1 neg 0 {origin 0 _y 0 _y 0 _y 0 K _step} for grestore + 0 0 1 0 K contour % /ybar {0 0 1 0 K} bd + }{ % /ybar {1 setgray} bd + } ifelse + } ifelse } bd +/ybar {setsep 3 eq {0 setgray}{setsep 0 eq {0 0 1 0 K}{1 setgray + } ifelse} ifelse} bd +% +/gsteps{setsep 4 eq {gsave 0 .1 1 {origin setgray _step} for grestore + 0 setgray contour % /gbar {0 setgray} bd + }{setsep 0 eq { + gsave 0 .1 1 {origin setgray _step} for grestore + 0 setgray contour % /gbar {0 setgray} bd + }{ % /gbar {1 setgray} bd + } ifelse + } ifelse } bd +/gbar {setsep 4 eq {0 setgray}{setsep 0 eq {0 setgray}{1 setgray + } ifelse} ifelse} bd +% +/colorsteps{gsave + horver {CMdim boxdim sub dist sub CMdim boxdim add} + {CMdim boxdim add CMdim boxdim sub dist sub} ifelse T gsteps + horver {0 boxdim 12 mul}{boxdim 12 mul 0} ifelse T ysteps + grestore gsave + horver {CMdim boxdim sub dist sub v_size CMdim add boxdim 12 mul sub} + {h_size CMdim add boxdim 12 mul sub CMdim boxdim sub dist sub} + ifelse T csteps + horver {0 boxdim 12 mul neg}{boxdim 12 mul neg 0} ifelse T msteps + grestore} bd +% +/colorbar {gsave + horver { + h_size CMdim add dist add CMdim T + /begbar {boxdim 4 boxdim mul v_size CMdim 2 mul sub} bd + /endbar {for 0 boxdim T}bd /mt {0 exch moveto} bd + }{ + CMdim boxdim add v_size CMdim add dist add T + /begbar {boxdim 4 boxdim mul h_size CMdim 2 mul sub} bd + /endbar {for boxdim 0 T} bd /mt {exch 0 moveto} bd + } ifelse + begbar {mt cbar boxfill} endbar begbar {mt mbar boxfill} endbar + begbar {mt ybar boxfill} endbar begbar {mt gbar boxfill} endbar + grestore} bd +% +/color_sep -1 def +/label_s{ + marglabel 1 eq { + /Helvetica findfont 8 scalefont setfont + (Page (PS/TeX): ) show page_num_ps 20 string cvs show + ( / ) show page_num_tex 20 string cvs show + color_sep 0 ge { + color_sep 0 eq {(, \ \ Plate CYAN ) show} if + color_sep 1 eq {(, \ \ Plate MAGENTA ) show} if + color_sep 2 eq {(, \ \ Plate YELLOW ) show} if + color_sep 3 eq {(, \ \ Plate BLACK ) show} if + }{(, \ \ COMPOSITE) show} ifelse + } if + } bd +/page_number{gsave + horver {CMdim 2 mul 10 moveto label_s} + {10 CMdim 2 mul moveto 90 rotate label_s} ifelse + grestore} def +% +/_mirror {mirror 1 eq {-1 1 scale h_size neg 0 T} if}bd +% +/full {.1 setlinewidth + 1 colorbars eq {colorsteps colorbar}{ + 2 colorbars eq {colorsteps}{ + 3 colorbars eq {colorbar}{} ifelse + } ifelse + } ifelse + 1 1 1 1 setcmykcolor page_number cmarks halfmarks} bd +% +/save_page_num{pstack 2 copy 1 add + /page_num_ps exch def /page_num_tex exch def}def +% +[/bop-hook where {pop /bop-hook load aload pop} if +{x_offset y_offset T + gsave save_page_num full grestore + CMdim CMdim T _mirror} aload pop] cvx +/bop-hook exch def +end diff --git a/Master/texmf-dist/dvips/tex-ps/mirr.hd b/Master/texmf-dist/dvips/tex-ps/mirr.hd new file mode 100644 index 00000000000..5c39e74fa79 --- /dev/null +++ b/Master/texmf-dist/dvips/tex-ps/mirr.hd @@ -0,0 +1,32 @@ +% The following header can be used for producing mirrored output on +% printers (phototypesetters don't need this) with T. Rokicki's DVIPS +% driver. +% +% USAGE: +% dvips -hmirr.hd [other_options1] <file_name> [other_options2] +% +% WARNING: +% Be careful when you use DVIDVI or DVI2DVI in the context of global +% specials like `\special{landscape}'; fortunately, `\special{landscape}' +% works smoothly with DVIDVI but not with DVI2DVI (Sawatzki's +% implementation)---you have to use `\special{landscape}' on every +% page that appears to be the first one after splitting a DVI by DVI2DVI; +% the same technique concerns both DVIDVI and DVI2DVI if user-defined +% global specials are used. +% +% In the case of difficulties mail to: +% Piotr Pianowski or Bogus\l{}aw Jackowski or Piotr Strzelczyk +% B.Jackowski@GUST.org.pl +% +userdict begin +/bop-hook {-1 1 scale isls {vsize} {hsize} ifelse neg 0 translate} def +/appenddef { +% use this for lengthening `bop-hook' in your TeX program, i.e., +% instead of \special{ps:... userdict begin ... /bop-hook{...}def ... end} +% say \special{ps:... userdict begin ... /bop-hook{...}appenddef ... end} + /stuff-to-append exch def /to-append exch def + [/to-append load where {pop /to-append load load aload pop} if + /stuff-to-append load aload pop] cvx /to-append load exch store +} def +end + diff --git a/Master/texmf-dist/dvips/tex-ps/separate.pro b/Master/texmf-dist/dvips/tex-ps/separate.pro new file mode 100644 index 00000000000..44eb9ce9849 --- /dev/null +++ b/Master/texmf-dist/dvips/tex-ps/separate.pro @@ -0,0 +1,144 @@ +% [PL] Parametry separacji: [E] Separation parameters: +% Odkomentuj TYLKO JEDNO Uncomment EXACTLY ONE +% z poni/zszych ustawie/n: of the following settings: +%%%%% +% /color_sep 0 def % cyan +% /color_sep 1 def % magenta +% /color_sep 2 def % yellow +/color_sep 3 def % black +%%%%% +/ScreenFrequency 150 def +/Cangle 15 def +/Mangle 75 def +/Yangle 0 def +/Kangle 45 def +% +userdict begin /ori_setcmykcolor where {pop} {/ori_setcmykcolor /setcmykcolor +load def} ifelse /ori_setrgbcolor where {pop} {/ori_setrgbcolor /setrgbcolor +load def} ifelse /ori_setgray where {pop} {/ori_setgray /setgray load +def} ifelse /ori_colorimage where {pop} {/ori_colorimage /colorimage +load def} ifelse /ori_image where {pop} {/ori_image /image load def} +ifelse /ori_imagemask where {pop} {/ori_imagemask /imagemask load def} +ifelse /ori_fill where {pop} {/ori_fill /fill load def} ifelse /ori_eofill +where {pop} {/ori_eofill /eofill load def} ifelse /ori_stroke where +{pop} {/ori_stroke /stroke load def} ifelse /ori_show where {pop} {/ori_show +/show load def} ifelse /hax_setcmykcolor /ori_setcmykcolor load def +/maybe_black { 4 copy 1 sub abs epsilon le exch 0 sub abs epsilon le +and exch 0 sub abs epsilon le and exch 0 sub abs epsilon le and /if_delblack +exch def } def /my_fill {userdict begin if_delblack {newpath} {ori_fill} +ifelse end} def /my_eofill {userdict begin if_delblack {newpath} {ori_eofill} +ifelse end} def /my_stroke {userdict begin if_delblack {newpath} {ori_stroke} +ifelse end} def /my_show {userdict begin if_delblack {false charpath +currentpoint newpath moveto} {ori_show} ifelse end} def /eofill {userdict +begin my_eofill end} def /fill {userdict begin my_fill end} def /stroke +{userdict begin my_stroke end} def /show {userdict begin my_show end} +def /setcmykcolor {userdict begin /k_ exch def /y_ exch def /m_ exch +def /c_ exch def c_ m_ y_ k_ hax_setcmykcolor end} def /setgray {ori_setgray +currentcmykcolor setcmykcolor} def /setrgbcolor {ori_setrgbcolor currentcmykcolor +setcmykcolor} def /hax_image { dup type cvlit /dicttype eq { /ImageDict +exch def currentcolorspace dup length 1 eq ImageDict /ImageType get +1 eq and {0 get dup /DeviceRGB eq {/ncomp 3 def} if dup /DeviceGray +eq {/ncomp 1 def} if /DeviceCMYK eq {/ncomp 4 def} if ImageDict /BitsPerComponent +get 8 ne /ncomp 1 ne and {/ncomp 0 def} if } {pop /ncomp 0 def} ifelse +} { false 1 makeimagedict } ifelse ncomp 0 eq {ImageDict ori_image} +{hax_image_} ifelse } def /hax_colorimage { makeimagedict hax_image_ +} def /makeimagedict { dup /ncomp exch def dup 4 eq {/DeviceCMYK setcolorspace} +if dup 3 eq {/DeviceRGB setcolorspace} if 1 eq {/DeviceGray setcolorspace} +if /ImageDict 7 dict def ImageDict begin {/MultipleDataSources true +def ncomp array astore} if /DataSource exch def /ImageMatrix exch def +/BitsPerComponent exch def /Height exch def /Width exch def /Decode +[ncomp {0 1} repeat] def /ImageType 1 def end } def /data_str 65532 +string def /data_str_ 8192 string def /merge_multi4 { ImageDict /DataSource +get aload pop dup type cvlit /filetype eq { /fdatsrck exch def /fdatsrcy +exch def /fdatsrcm exch def /fdatsrcc exch def /datasrck {fdatsrck +data_str_ readstring pop} def /datasrcy {fdatsrcy data_str_ readstring +pop} def /datasrcm {fdatsrcm data_str_ readstring pop} def /datasrcc +{fdatsrcc data_str_ readstring pop} def } { /datasrck exch def /datasrcy +exch def /datasrcm exch def /datasrcc exch def } ifelse ImageDict /DataSource +{ data_str 0 datasrcc {3 copy put pop 4 add} forall pop 1 datasrcm +{3 copy put pop 4 add} forall pop 2 datasrcy {3 copy put pop 4 add} +forall pop 3 datasrck {3 copy put pop 4 add} forall 3 sub 0 exch getinterval +} put } def /merge_multi3 { ImageDict /DataSource get aload pop dup +type cvlit /filetype eq { /fdatsrcb exch def /fdatsrcg exch def /fdatsrcr +exch def /datasrcb {fdatsrcb data_str_ readstring pop} def /datasrcg +{fdatsrcg data_str_ readstring pop} def /datasrcr {fdatsrcr data_str_ +readstring pop} def } { /datasrcb exch def /datasrcg exch def /datasrcr +exch def } ifelse ImageDict /DataSource { data_str 0 datasrcr {3 copy +put pop 3 add} forall pop 1 datasrcg {3 copy put pop 3 add} forall +pop 2 datasrcb {3 copy put pop 3 add} forall 2 sub 0 exch getinterval +} put } def /i_Str 3 string def /O_Str 4 string def /UCR {0.5 mul} +def /BG {0.5 mul} def /min {1 index 1 index le {pop} {exch pop} ifelse} +def /max {1 index 1 index ge {pop} {exch pop} ifelse} def /RGBtoCMYK +{dup 0 get R_scale mul R_shift add /c_i exch def dup 1 get G_scale +mul G_shift add /m_i exch def 2 get B_scale mul B_shift add /y_i exch +def /k_i c_i m_i y_i min min def O_Str dup 0 255 0 c_i k_i UCR sub +cvi max min put dup 1 255 0 m_i k_i UCR sub cvi max min put dup 2 255 +0 y_i k_i UCR sub cvi max min put dup 3 255 0 k_i BG cvi max min put +} def /RGBtoCMYKfilter { ImageDict /Decode get aload pop 2 copy sub +/B_scale exch def pop 255 mul 255 exch sub /B_shift exch def 2 copy +sub /G_scale exch def pop 255 mul 255 exch sub /G_shift exch def 2 +copy sub /R_scale exch def pop 255 mul 255 exch sub /R_shift exch def +/rtc_file ImageDict /DataSource get def ImageDict /DataSource {rtc_file +i_Str readstring {RGBtoCMYK} if} 0 () /SubFileDecode filter put /DeviceCMYK +setcolorspace /ncomp 4 def ImageDict /Decode [0 1 0 1 0 1 0 1] put +} def /sep_str 8192 string def /SEP_CMYK { 0 hax_sep 4 3 index length +1 sub { 2 index exch get 3 copy put pop 1 add } for dup 0 ne {0 exch +getinterval}{pop pop ()} ifelse } def /SEPfilters { ncomp 4 eq { hax_sep +3 le { /sepproc /SEP_CMYK load def ImageDict begin /Decode [ Decode +hax_sep 2 mul 1 add get Decode hax_sep 2 mul get ] def end } { /sepproc +{dup length 4 idiv 0 exch getinterval} def } ifelse /sep_file ImageDict +/DataSource get def ImageDict /DataSource {sep_file sep_str readstring +pop sepproc} 0 () /SubFileDecode filter put /DeviceGray setcolorspace +} {hax_sep 3 ne {ImageDict /Decode [ 1 1 ] put} if } ifelse hax_sep +4 eq {ImageDict /Decode [ 1 1 ] put} if hax_sep 5 eq {ImageDict /Decode +[ 0 0 ] put} if } def /change_str 12288 string def /CHANGEfilter { +/change_file ImageDict /DataSource get def ImageDict /DataSource { +change_file change_str readstring pop 0 ncomp 2 index length ncomp +sub { 1 index exch 2 copy ncomp getinterval changebits putinterval +} for } 0 () /SubFileDecode filter put } def /hax_image_ { ImageDict +/MultipleDataSources known { ImageDict /MultipleDataSources get { ImageDict +/MultipleDataSources false put ImageDict /DataSource get length dup +4 eq {merge_multi4} if dup 3 eq {merge_multi3} if 1 eq {ImageDict begin +/DataSource DataSource aload pop def end} if } if } if ImageDict begin +/DataSource dup load Width BitsPerComponent mul 7 add 8 idiv Height +ncomp mul mul () /SubFileDecode filter def end to_change_bitmap {CHANGEfilter} +if ncomp 3 eq to_convert_bitmap and {RGBtoCMYKfilter} if ncomp 3 ne +to_sep_bitmap and {SEPfilters} if ImageDict ori_image } def /zero_data_str +65532 string def /hax_imagemask { if_delblack { dup type cvlit /dicttype +eq { /ImageDict exch def } { /ImageDict 7 dict def ImageDict begin +/DataSource exch def /ImageMatrix exch def /Decode exch {[1 0]} {[0 +1]} ifelse def /Height exch def /Width exch def /BitsPerComponent 1 +def /ImageType 1 def end } ifelse ImageDict begin /DataSource load +Width 7 add 8 idiv Height mul () /SubFileDecode filter end /mask_file +exch def ImageDict /DataSource { zero_data_str 0 mask_file data_str +readstring pop length getinterval } 0 () /SubFileDecode filter put +ImageDict /Decode [1 0] put ImageDict ori_imagemask } {ori_imagemask} +ifelse } def /epsilon 0.005 def /if_delblack false def /to_change_bitmap +false def /to_convert_bitmap false def /to_sep_bitmap false def +currentcmykcolor setcmykcolor end +% + /dot_spot {dup mul exch dup mul add 1 exch sub 2 div} def 150 0 {dot_spot} +setscreen +% +userdict begin + color_sep 0 eq + {/hax_setcmykcolor {maybe_black pop pop pop 1 exch sub ori_setgray} def + ScreenFrequency Cangle {dot_spot} setscreen} + {color_sep 1 eq + {/hax_setcmykcolor {maybe_black pop pop exch pop 1 exch sub ori_setgray} def + ScreenFrequency Mangle {dot_spot} setscreen} + {color_sep 2 eq + {/hax_setcmykcolor {maybe_black pop exch pop exch pop 1 exch sub ori_setgray} def + ScreenFrequency Yangle {dot_spot} setscreen} + {/hax_setcmykcolor {exch pop exch pop exch pop 1 exch sub ori_setgray} def + ScreenFrequency Kangle {dot_spot} setscreen} + ifelse + } ifelse + } ifelse +end +% +userdict begin /image /hax_image load def /colorimage /hax_colorimage + load def /imagemask /hax_imagemask load def + /to_sep_bitmap true def /to_convert_bitmap true def +end +currentcmykcolor setcmykcolor diff --git a/Master/texmf-dist/dvips/times/config.utm b/Master/texmf-dist/dvips/times/config.utm new file mode 100644 index 00000000000..3c31eef1c48 --- /dev/null +++ b/Master/texmf-dist/dvips/times/config.utm @@ -0,0 +1 @@ +p +utm.map diff --git a/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro b/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro new file mode 100644 index 00000000000..2ce5859c8f1 --- /dev/null +++ b/Master/texmf-dist/dvips/tree-dvips/tree-dvips.pro @@ -0,0 +1,85 @@ +%! +TeXDict begin /@beginspec{gsave texpsmatrix setmatrix treedict begin}def +/@endspec{end grestore}def /texpsmatrix matrix defaultmatrix isls{dup[0.0 -1.0 +1.0 0.0 0.0 0.0]exch concatmatrix}if def userdict begin /bop-hook{ +/texpsmatrix matrix defaultmatrix isls{dup[0.0 -1.0 1.0 0.0 0.0 0.0]exch +concatmatrix}if def}B end /treedict 200 dict def treedict begin /pt{72 mul +72.07 div}def /nodemargin 2 def /nodes 100 dict def /node{/dpth exch def /hght +exch def /wdth exch def 4 dict dup begin /x /y currentpoint dpth sub +nodemargin sub exch 3 1 roll def nodemargin sub def /h hght dpth add +nodemargin dup add add def /w wdth nodemargin dup add add def end nodes 3 1 +roll put}def /nodebottom{begin x w 2 div add y end}def /nodetop{begin x w 2 +div add y h add end}def /nodeleft{begin x y h 2 div add end}def /noderight{ +begin x w add y h 2 div add end}def /nodetopleft{begin x y h add end}def +/nodetopright{begin x w add y h add end}def /nodebottomleft{begin x y end}def +/nodebottomright{begin x w add y end}def /farright{begin x w add depth add h 2 +div y add end}def /farleft{begin x depth sub h 2 div y add end}def /farbottom{ +begin x w 2 div add y depth sub end}def /fartop{begin x w 2 div add y h add +depth add end}def /farbottomleft{begin x depth 45 cos mul sub y depth 45 sin +mul sub end}def /farbottomright{begin x w add depth 45 cos mul add y depth 45 +sin mul sub end}def /fartopright{begin x w add depth 45 cos mul add y h add +depth 45 sin mul add end}def /fartopleft{begin x depth 45 cos mul sub y h add +depth 45 sin mul add end}def /alignpoint{2 copy sub abs 1 le{add 2 div round +dup}if}def /getnode{nodes exch get}def /nodeconnect{gsave transform 4 2 roll +transform exch 4 1 roll alignpoint 4 2 roll alignpoint 4 1 roll exch +itransform moveto itransform lineto stroke grestore}def /arrowdict 14 dict def +arrowdict begin /mtrx matrix def end /arrow{arrowdict begin /headlength exch +def /halfheadthickness exch 2 div def /tipy exch def /tipx exch def /taily +exch def /tailx exch def /dx tipx tailx sub def /dy tipy taily sub def /angle +dy dx atan def /savematrix mtrx currentmatrix def tipx tipy translate angle +rotate 0 0 moveto headlength neg halfheadthickness neg lineto headlength neg +halfheadthickness lineto closepath savematrix setmatrix end}def +/arrownodeconnect{gsave transform 4 2 roll transform exch 4 1 roll alignpoint +4 2 roll alignpoint 4 1 roll exch itransform 4 2 roll itransform 4 2 roll 4 +copy moveto lineto gsave newpath 4 2 roll arrowwidth arrowlength arrow fill +grestore stroke grestore}def /barnodeconnect{4 2 roll 2 copy moveto 5 -1 roll +add dup 3 1 roll lineto 2 index exch lineto lineto stroke}def +/arrowbarnodeconnect{4 2 roll 2 copy moveto 5 -1 roll add dup 3 1 roll lineto +2 index exch 4 copy lineto lineto gsave newpath 4 2 roll arrowwidth +arrowlength arrow fill grestore stroke}def /nodetriangle{gsave exch nodes exch +get nodebottom moveto dup nodes exch get nodetopleft lineto nodes exch get +nodetopright lineto closepath stroke grestore}def /slope{/y1 exch def /x1 exch +def /y0 exch def /x0 exch def y1 y0 sub x1 x0 sub div}def /midpoint{/y1 exch +def /x1 exch def /y0 exch def /x0 exch def x1 x0 sub abs x1 x0 ge{x0 add}{x1 +add}ifelse y1 y0 sub abs y1 y0 ge{y0 add}{y1 add}ifelse}def /tancurveto{1 +index exch curveto}def /nodetancurve{/depth exch def /to exch def /from exch +def gsave nodes from get noderight moveto nodes to get noderight tancurveto +stroke grestore}def /rightcur{nodes exch get dup noderight 3 -1 roll farright} +def /leftcur{nodes exch get dup nodeleft 3 -1 roll farleft}def /topcur{nodes +exch get dup nodetop 3 -1 roll fartop}def /bottomcur{nodes exch get dup +nodebottom 3 -1 roll farbottom}def /topleftcur{nodes exch get dup nodetopleft +3 -1 roll fartopleft}def /toprightcur{nodes exch get dup nodetopright 3 -1 +roll fartopright}def /bottomleftcur{nodes exch get dup nodebottomleft 3 -1 +roll farbottomleft}def /bottomrightcur{nodes exch get dup nodebottomright 3 -1 +roll farbottomright}def /nodecurve{gsave 4 2 roll moveto 6 2 roll 4 2 roll +curveto stroke grestore}def /arrownodecurve{gsave 4 2 roll moveto 6 2 roll 4 2 +roll 4 copy 10 4 roll curveto gsave newpath arrowwidth arrowlength arrow fill +grestore stroke grestore}def /nodebox{nodes exch get begin gsave newpath x y +moveto h w dobox cleanup stroke grestore end}def /nodecircle{nodes exch get +begin gsave newpath w 2 div x add h 2 div y add w w mul h h mul add sqrt 2 div +4 -1 roll add 360 0 arcn cleanup stroke grestore end}def /nodecircletrans{ +nodes exch get begin gsave newpath w 2 div x add h 2 div y add w w mul h h mul +add sqrt 2 div 4 -1 roll add 360 0 arcn stroke grestore end}def /nodeoval{ +nodes exch get begin gsave newpath x 2 sub y 2 sub moveto h 4 add w 4 add +dooval cleanup stroke grestore end}def /testnodeoval{nodes exch get begin +gsave newpath h h mul w w mul add sqrt div dup dup dup w mul neg x add exch h +mul neg y add moveto dup h mul 2 mul h add exch w mul 2 mul w add testdooval +stroke grestore end}def /cleanup{gsave x y moveto h nodemargin sub .5 add w +nodemargin sub .5 add doccbox 1 setgray fill grestore}def /boxdict 4 dict def +boxdict /mtrx matrix put /dobox{boxdict begin /w exch def /h exch def +/savematrix mtrx currentmatrix def 0 h rlineto w 0 rlineto 0 h neg rlineto +closepath savematrix setmatrix end}def /doccbox{boxdict begin /w exch def /h +exch def /savematrix mtrx currentmatrix def w 0 rlineto 0 h rlineto w neg 0 +rlineto closepath savematrix setmatrix end}def /ovaldict 6 dict def ovaldict +/mtrx matrix put /dooval{ovaldict begin /w exch def /h exch def /savematrix +mtrx currentmatrix def 0 h 2 div rmoveto 0 h 2 div nodemargin sub nodemargin h +2 div w 2 div h 2 div rcurveto w 2 div nodemargin sub 0 w 2 div nodemargin neg +w 2 div h 2 div neg rcurveto 0 h 2 div neg nodemargin add nodemargin neg h 2 +div neg w 2 div neg h 2 div neg rcurveto w 2 div neg nodemargin add 0 w 2 div +neg nodemargin w 2 div neg h 2 div rcurveto savematrix setmatrix end}def +/testdooval{ovaldict begin /w exch def /h exch def /r exch def h 2 div neg r +mul dup h 2 div dup r mul 3 1 roll 2 r sub mul 0 h rcurveto w 2 div dup r mul +exch 2 r sub mul w 2 div r mul dup 3 1 roll w 0 rcurveto h 2 div r mul dup h 2 +div neg dup r mul 3 1 roll 2 r sub mul 0 h neg rcurveto w 2 div neg dup r mul +exch 2 r sub mul w 2 div neg r mul dup 3 1 roll w neg 0 rcurveto end}def end +end diff --git a/Master/texmf-dist/dvips/uhc/config.uhc b/Master/texmf-dist/dvips/uhc/config.uhc new file mode 100644 index 00000000000..6b3daccb598 --- /dev/null +++ b/Master/texmf-dist/dvips/uhc/config.uhc @@ -0,0 +1 @@ +p +umj.map diff --git a/Master/texmf-dist/dvips/wadalab/config.wadalab b/Master/texmf-dist/dvips/wadalab/config.wadalab new file mode 100644 index 00000000000..9f55a08ee94 --- /dev/null +++ b/Master/texmf-dist/dvips/wadalab/config.wadalab @@ -0,0 +1 @@ +p +wadalab.map diff --git a/Master/texmf-dist/dvips/xcolor/xcolor.pro b/Master/texmf-dist/dvips/xcolor/xcolor.pro new file mode 100644 index 00000000000..e68446a7101 --- /dev/null +++ b/Master/texmf-dist/dvips/xcolor/xcolor.pro @@ -0,0 +1,43 @@ +%! +%% +%% This is file `xcolor.pro', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xcolor.dtx (with options: `dvips') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from xcolor.pro. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file xcolor.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% xcolor.pro (PostScript/dvips header file) +%% [2005/10/15 v2.06 LaTeX color extensions (UK)] +%% +%% ---------------------------------------------------------------- +%% Copyright (C) 2003-2005 by Dr. Uwe Kern <xcolor at ukern dot de> +%% ---------------------------------------------------------------- +%% +userdict begin +/setcmycolor{0 setcmykcolor}def +/XCdef{exch dup TeXDict exch known{pop pop}{exch def}ifelse}bind def +/XCbdef{bind XCdef}bind def +/XCsetcolor{cvx counttomark array astore cvx exch pop XCdef}XCbdef +/XCcmy{mark exch exec /setcmycolor XCsetcolor}XCbdef +/XCcmyk{mark exch exec /setcmykcolor XCsetcolor}XCbdef +/XCgray{mark exch exec /setgray XCsetcolor}XCbdef +/XChsb{mark exch exec /sethsbcolor XCsetcolor}XCbdef +/XCrgb{mark exch exec /setrgbcolor XCsetcolor}XCbdef +end +%% End of file `xcolor.pro'. diff --git a/Master/texmf-dist/dvips/xypic/xy37dict.pro b/Master/texmf-dist/dvips/xypic/xy37dict.pro new file mode 100644 index 00000000000..d368b669617 --- /dev/null +++ b/Master/texmf-dist/dvips/xypic/xy37dict.pro @@ -0,0 +1,380 @@ +%!PS-Adobe-3.0 Resource-procset +%%Title: xy37dict.pro +%%Version: 3.7 +%%Creator: Xy-ps backend to Xy-pic +%%DocumentSuppliedProcSets: XYdict +%%For: nulluse of Xy-pic +%%BeginResource: procset XYdict +/XYdict where not{250 dict /XYdict exch def + /xy{mark exch XYdict begin countdictstack /xylevel exch def + xyopen xycolor mark xypatt xypattern stopped xyclose end + cleartomark}def /xyg{gsave xy}def + /xyf{currentfont exch xy grestore setfont}def + /xycc{{xychgcol}xy}def /xyc{XYdict begin xycolstore end}def + /xyx{/xyYpos exch def /xyXpos exch def}def + /xyp{currentpoint xyx}def + /xyd{setupDirection XYdirection 2 mul}def + /xyct{currentpoint xyt 2 copy 6 2 roll}def + /xyt{xyXpos xyYpos 2 copy translate}def /xyr{neg rotate xynt}def + /xyrs{neg rotate 3 -1 roll sub neg 3 1 roll sub exch moveto xynt}def + /xynt{neg exch neg exch translate}def /xys{scale xynt}def + /xyss{scale 3 -1 roll sub neg 3 1 roll sub exch moveto xynt}def + /xyi{0 0 transform grestore gsave itransform}def + }if + +/XYdict where pop begin XYdict begin + /xyopen{currentdict /XYddict known{XYddict null eq{} + {XYddict begin xyopen}ifelse}if}def + /xyclose{countdictstack -1 xylevel 1 add{pop end}for}def + /xychgcol{/xycolor exch def}def /xysetcol{xypush xychgcol}def + + /xypush{16 dict /XYddict exch def XYddict begin}def + /undef where + {pop /xypop{countdictstack xylevel eq{}{end}ifelse + currentdict /XYddict undef}def} + {/xypop{countdictstack xylevel eq{}{end}ifelse + /XYddict null def}def}ifelse + /pu /xypush load def /pp /xypop load def + /xypspt{72 72.27 div dup scale}bind def /pscorrect{.85 mul}bind def + /gstartxy{gsave xypspt xywidth xycap xyjoin xymiter newpath 0 0 moveto}def + /xypath{gstartxy rmoveto counttomark 2 idiv -1 1{pop lineto}for}def + /xystroke{stroke grestore}bind def + /xyfill{closepath fill grestore}bind def + /xystfil{closepath gsave fill grestore 0 setgray + 0 setlinewidth xystroke}bind def + /xyeofill{closepath eofill grestore}bind def + + /xypolyline{xypath xystroke}def /xypolyfill{xypath xyfill}def + /xydotsep{/@ currentlinewidth 2 mul def}def + /xypolydot{xypath xydotsep [xydt @] 0 setdash xystroke}def + /xypolydash{xypath xydotsep [@ @] 0 setdash xystroke}def + /xypolyeofill{xypath xyeofill}def /pe /xypolyeofill load def + /pl /xypolyline load def /pf /xypolyfill load def + /pt /xypolydot load def /pd /xypolydash load def + /arc4pop{arcto 4{pop}repeat}bind def + /xyoval{gstartxy oval closepath xystroke}def + /xycircle{gstartxy circle xystroke}def + /circle{dup 0 moveto 0 0 3 -1 roll 0 360 arc}def + /oval{newpath 2 copy exch 5 index add 2 div exch 3 copy 10 3 roll + moveto 1 index dup 5 1 roll 3 index 7 index arc4pop + dup dup 4 1 roll 4 index exch 6 index arc4pop + 1 index dup 8 1 roll 4 index 4 index arc4pop + arc4pop closepath}def + /xyellipse{gstartxy counttomark 1 gt{squarify pop pop 1}if + circle xystroke}def + /ov /xyoval load def /ox /xyellipse load def + /dotit{dup currentlinewidth 6 mul div round div + /@ exch def [xydt @] 0 setdash}def + /elldash{dup 4 -1 roll 10 exch div dashit}def + /ovdash{dup 10 dashit}def + /dashit{div round 2 mul div /@ exch def [@ @] 0 setdash}def + /dotcirc{gstartxy cirlen dotit circle xystroke}def + /dashcirc{gstartxy cirlen dashit circle xystroke}def + /dotoval{gstartxy 5 copy ovlen dotit oval xystroke}def + /dashoval{gstartxy 5 copy ovlen ovdash oval xystroke}def + /cirlen{dup 6.283185 mul}bind def + /ovlen{3 -1 roll sub 3 1 roll sub add exch 1.716815 mul sub}def + /dotellipse{gstartxy counttomark 1 gt{squarify pop pop 1}if + cirlen dotit circle closepath xystroke}def + /dashellipse{gstartxy counttomark 1 gt{squarify add 2 div 1} + {1 exch 1 exch}ifelse cirlen elldash circle xystroke}def + /ot /dotellipse load def /od /dashellipse load def + /vt /dotoval load def /vd /dashoval load def + /filloval{gstartxy oval xyfill}def + /stfiloval{gstartxy oval xystfil}def + /fillcircle{gstartxy circle xyfill}def + /stfilcircle{gstartxy circle xystfil}def + /fillellipse{gstartxy squarify pop pop 1 circle xyfill}def + /stfilellipse{gstartxy squarify pop pop 1 circle xystfil}def + /squarify{4 copy sub 2 div 3 1 roll sub 2 div translate + add 2 div 3 1 roll add 2 div 2 copy scale + 2 copy add 2 div currentlinewidth exch div setlinewidth + newpath}def + /fe /fillellipse load def /sfe /stfilellipse load def + /fo /filloval load def /sfo /stfiloval load def + /fc /fillcircle load def /sfc /stfilcircle load def + /xywidth{.4 pscorrect setlinewidth}bind def + /xydash{[] 0 setdash}bind def /xycap{1 setlinecap}bind def + /xyjoin{1 setlinejoin}bind def /xymiter{10 setmiterlimit}bind def + + /cc{dup exec xychgcol}def + /lw{dup setlinewidth /@l exch def + /xywidth{@l setlinewidth}bind def}def + /lc{dup setlinecap /@c exch def + /xycap{@c setlinecap}bind def}def + /lj{dup setlinejoin /@j exch def + /xyjoin{@j setlinejoin}bind def}def + /ml{dup setmitrelimit /@m exch def + /xymiter{@m setmitrelimit}bind def}def + + /setupDirection{dup -2048 lt{3072 add neg 1024 exch} + {dup 0 lt{1024 add neg -1024}{dup 2048 lt{1024 sub -1024 exch} + {3072 sub 1024}ifelse}ifelse}ifelse atan + dup 180 gt{360 sub}if dup /XYdirection exch def rotate}def + + userdict begin + /gray{setgray}bind def /gray@{setgray}bind def + /rgb{setrgbcolor}bind def /rgb@{setrgbcolor}bind def + /hsb{sethsbcolor}bind def /hsb@{sethsbcolor}bind def + /setcmykcolor where{pop}{/setcmykcolor{dup 3 1 roll dup 5 1 roll + exch sub 1 add 5 1 roll exch sub 1 add 4 1 roll + exch sub 1 add 3 1 roll setrgbcolor}bind def}ifelse + /cmyk{setcmykcolor}bind def /cmyk@{setcmykcolor}bind def + /sethalftone where{/sethalftone load /tone exch def}if + /xycolarray 3 array def /xycolstore{currentrgbcolor 2 -1 0 + {exch xycolarray 3 1 roll put}for}def xycolstore + /xycolor{0 1 2{xycolarray exch get}for setrgbcolor}def + /xypatt{}def /xypattern{cleartomark}bind def + end +end end +/XYdict where pop begin XYdict begin +/:patt +{XYddict begin +14 dict begin +/BGnd exch def +/FGnd exch def +/PaintData exch def +/PatternType 1 def +/PaintType 1 def +/BBox[0 0 1 1]def +/TilingType 1 def +/XStep 1 def +/YStep 1 def +/PatternMtx[24 0 0 24 0 0]def +/PaintProc BGnd null ne + {{begin BGnd aload pop setrgbcolor 0 0 1 1 rF + FGnd aload pop setrgbcolor + 24 24 true PatternMtx PaintData imagemask end}} + {{begin FGnd aload pop setrgbcolor + 24 24 true PatternMtx PaintData imagemask end}} + ifelse def + currentdict PatternMtx end + gsave patangle xyland{180 add}if + rotate macfreq patfreq div dup neg exch scale matrix currentmatrix + grestore gsave setmatrix /DeviceRGB setcolorspace makepattern grestore + end}def +/rF{gsave + newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto + fill grestore}bind def + /setpatscreen{/pattstring exch store patfreq + patangle xyport not{90 add}if + {1 add 4 mul cvi pattstring exch get exch 1 add 4 mul cvi 7 sub + bitshift 1 and}setscreen}bind def + /setcolpattern{setpatscreen 64 div 1 exch sub currentrgbcolor + 1 1 3{pop 1 exch sub 3 index mul 1 exch sub 3 1 roll}for + setrgbcolor pop}def + /setgraypattern{setpatscreen 64 div setgray}def + /macfreq 9.375 def /patangle 0 def /patfreq 12.5 def +/checkland{ /normland where{pop normland not}{false}ifelse + /xyland exch def + /por where{pop por}{/isls where{pop isls not /xyland true def} + {/land where{pop land not}{true} + ifelse}ifelse}ifelse /xyport exch def}def + /setpatfreq{/patfreq exch def}def + /setpatangle{/patangle exch def}def + /setbackcolor{/backcolor exch def}def + /setforecolor{/forecolor exch def}def + [1 1 1] setbackcolor xycolarray setforecolor + /bg /setbackcolor load def /fg /setforecolor load def + /pa /setpatangle load def /pq /setpatfreq load def + /xypattern{checkland counttomark dup 0 eq{pop} + {dup 1 eq{pop setpatscreen} + {dup 2 eq{pop setcolpattern} + {dup 3 eq{pop + /setcolorspace where { + /.setcolorspace where{pop pop pop setcolpattern} + {/.buildpattern where {pop + forecolor backcolor :patt setpattern + }{pop pop setcolpattern}ifelse}ifelse} + {pop setcolpattern}ifelse} + {5 eq{/setcolorspace where{ + /.setcolorspace where{pop pop pop pop pop setcolpattern} + {/.buildpattern where {pop + :patt setpattern + }{pop pop pop pop setcolpattern}ifelse}ifelse} + {pop pop pop setcolpattern}ifelse + }{}ifelse}ifelse}ifelse}ifelse}ifelse cleartomark }def + /xysetpattern{/xypatt exch def}def + /sp /xysetpattern load def +end end +/XYdict where pop begin XYdict begin + /xysize 10 def /T true def /F false def + /dimendiv{65536 div}bind def + /xysegl 327680 dimendiv def + /xyopp{1 -1 scale}bind def + /xynormwidth{26213 dimendiv pscorrect}bind def + /xywidth{xynormwidth setlinewidth}bind def + + /xyfont{4096 add 64 div round 64 mul 4096 sub}def /xydt 0.01 def + /xysdfont{4096 add 32 div round 32 mul 4096 sub}def + /xydots{xywidth 1 setlinecap [xydt 2] 0 setdash}bind def + /f /xyfont load def /fs /xysdfont load def + /xyCheckDir{dup 8 div 3 mul 3 -1 roll sub neg exch div 360 mul + dup dup XYdirection sub 180 div round 180 mul XYdirection add + dup 3 -1 roll sub abs 10 gt not{exch}if pop}def + + /xyrulth{26213 dimendiv pscorrect setlinewidth + 0 setlinecap}bind def + + /gsavexy{gsave xypspt XYdirection rotate xywidth newpath 0 0 moveto}def + /gchksavexy{gsave xypspt setupDirection xywidth newpath 0 0 moveto}def + + /xyswap{XYdirection 180 add /XYdirection exch def}def + /xyline{gstartxy setupDirection rlineto xystroke}def + + /dash{exch gchksavexy xysegl XYdirection dup + -90 lt{pop neg}{90 gt{neg}if}ifelse exch{neg}if + 0 rlineto xystroke}def + /stopper{gstartxy setupDirection 0 xysegl 2 div rmoveto + 0 xysegl neg rlineto xystroke }def + /d /dash load def /st /stopper load def + /solid{gstartxy xydash neg exch neg exch rlineto xystroke}def + /dashed{gstartxy 2 copy dup mul exch dup mul add sqrt dup + xysegl add xysegl 2 mul div round 2 mul 1 sub div [ exch dup ] 0 setdash + neg exch neg exch rlineto xystroke}def + /l /solid load def /dd /dashed load def + /dot{gstartxy 2 setlinecap [xydt 2] 0 setdash + 1 0 rlineto xystroke}def + /dotted{gstartxy 2 copy dup mul exch dup mul add sqrt dup + 2 div round 1 add div 2 setlinecap [xydt 3 -1 roll] 0 setdash + neg exch neg exch rlineto 0 0 rlineto xystroke}def + /p /dot load def /dt /dotted load def + /cubic{gstartxy docubic} def + /docubic{chkvalid + {chkcubedge 8 -2 roll moveto curveto xystroke pop} + {cleartomark grestore}ifelse}def + /chkcubedge{2 copy 1.0 eq{0.0 eq{pop pop}{cubicedge}ifelse} + {pop cubicedge}ifelse}def + /bz /cubic load def + /dotcubic{gstartxy 1 setlinecap [xydt 2] 0 setdash docubic}def + /dashcubic{gstartxy [5 5] 0 setdash docubic}def + /bt /dotcubic load def /bd /dashcubic load def + /squine{gstartxy dosquine}def + /dosquine{chkvalid + {chksquedge 2 copy moveto xysq2cub curveto xystroke pop} + {cleartomark grestore}ifelse}def + /q /squine load def + /chkvalid{2 copy lt{dup 1 gt{false}{true}ifelse}{false}ifelse}def + + /chksquedge{2 copy 1.0 eq{0.0 eq{pop pop}{squineedge}ifelse} + {pop squineedge}ifelse}def + /xysq2cub{xysq2cubit 6 1 roll xysq2cubit 6 1 roll 3 index 3 index + xysq2cubit 6 1 roll xysq2cubit 6 1 roll pop pop}def + /xysq2cubit{2 index 2 mul add 3 div}def + + /dotsquine{gstartxy 1 setlinecap [xydt 2] 0 setdash dosquine}def + /dashsquine{gstartxy [5 5] 0 setdash dosquine}def + /qt /dotsquine load def /qd /dashsquine load def +/xy4mul{8 copy + 5 -1 roll mul 5 1 roll 6 -1 roll mul 6 1 roll + 3 -1 roll mul exch 4 -1 roll mul 3 1 roll + add 3 1 roll add exch 10 2 roll + 7 -1 roll mul 7 1 roll 4 -1 roll mul 5 1 roll + 4 -1 roll mul 4 1 roll mul add 3 1 roll add + exch 3 -1 roll }def + + /xy44mul{4 copy 16 4 roll exch 3 1 roll 4 copy 12 4 roll + xy4mul 12 4 roll xy4mul 12 -4 roll 4 copy 16 4 roll + 8 4 roll xy4mul 12 4 roll xy4mul}def + + /cubicedge{10 2 roll exch 8 1 roll 3 -1 roll dup dup 9 2 roll + 5 -1 roll dup dup 9 1 roll 8 3 roll + 4 1 roll dup dup 5 3 roll dup dup 5 1 roll 3 -1 roll + 18 -2 roll 2 copy 1 sub neg 4 1 roll 1 sub neg exch 4 1 roll + xy444mul + pop pop pop 13 1 roll pop pop pop 9 1 roll 10 1 roll + pop 8 1 roll 7 1 roll 8 1 roll pop 5 1 roll 3 1 roll}def + + /xy444mul{4 copy 24 4 roll 12 -4 roll 16 4 roll 4 copy 16 4 roll + xy44mul 20 8 roll xy44mul + 12 -4 roll 4 -1 roll 7 1 roll exch 4 1 roll exch 6 -1 roll exch + 4 2 roll 16 8 roll 8 4 roll + 4 -1 roll 7 1 roll exch 4 1 roll exch 6 -1 roll exch 4 2 roll + 8 4 roll 16 4 roll 8 4 roll 20 -4 roll exch 3 1 roll + 4 copy 20 4 roll 4 copy 16 4 roll 4 copy 12 4 roll + xy4mul 28 4 roll xy4mul 20 4 roll xy4mul 12 4 roll xy4mul}def + + /squineedge{8 2 roll + exch 5 1 roll 3 -1 roll dup 6 2 roll 1 index exch + 10 -2 roll 2 copy 1 sub neg 4 1 roll 1 sub neg exch 4 1 roll + xy44mul 4 1 roll pop 5 1 roll 6 1 roll 3 -1 roll pop}def + + /xyshort{2 copy abs exch abs add xysegl .5 mul lt + {pop pop grestore}{rlineto xystroke}ifelse}def + + /tipwidth{xywidth xynormwidth dup currentlinewidth exch div + sqrt dup dup scale mul setlinewidth 1 setlinecap}def + + /halftip{tipwidth xysize 10 div 0 0 moveto + -.25 0 3 -1 roll -2.5 mul 0 xysize 2 div neg + dup .62 mul 2 div neg curveto}bind def + +/atip{gchksavexy halftip xystroke}def + /btip{gchksavexy xyopp halftip xystroke}def + /tip{gchksavexy gsave halftip stroke grestore + xyopp halftip xystroke}def + /t /tip load def /a /atip load def /b /btip load def +/cmatip{gchksavexy halfcmtip xystroke}def + /cmbtip{gchksavexy xyopp halfcmtip xystroke}def + /cmtip{gchksavexy gsave halfcmtip stroke grestore + xyopp halfcmtip xystroke}def + /halfcmtip{tipwidth 0 0 moveto + -.1333 0 .25 neg dup .125 3 -1 roll .25 curveto}bind def + /ct /cmtip load def /ca /cmatip load def /cb /cmbtip load def + /xyfscale{/xyfsize exch def}def /xyfsize{10}def + /eu{-0.0551 0.0643 -0.0976 0.1386 -0.125 0.2188}def + /cm{-0.105 0.0437 -0.1804 0.1380 -0.2 0.25}def + /XY{-0.1753 0.0181 -0.3452 0.0708 -0.5 0.155}def + /tipstart{3 -1 roll gchksavexy exch xyfscale tipwidth dup XYdict exch + known{dup /xy eq{pop /XY}if}{pop /XY}ifelse XYdict exch get}def + /tipend{halfxytip xystroke}def + /halfxytip{1 1 6{pop xyfsize mul 6 1 roll}for 0 0 moveto curveto}def + /A{tipstart D}def /B{tipstart C}def /C{xyopp D}def /D{exec tipend}def + /AB{tipstart dup gsave exec halfxytip stroke grestore C}def + + /Tip{exch gchksavexy /xyfsize{10}def tipwidth gsave + dup XYdict exch known{dup /xy eq{pop /XT}if}{pop /XT}ifelse + XYdict exch get dup + halfTip stroke grestore xyopp halfTip xystroke}def + /XT{360 32 div neg}def /Xt{-1 .31 mul 1 atan}def + /ET{360 64 div 5 mul neg}def /Et{-1 .31 mul 1 atan}def + /halfTip{exec rotate XY halfxytip}def /halfTtip{halfTip}def + /Ttip{exch gchksavexy /xyfsize{10}def tipwidth gsave + dup XYdict exch known{dup /xy eq{pop /Xt}if}{pop /Xt}ifelse + XYdict exch get dup + halfTtip stroke grestore xyopp halfTtip xystroke}def + /tt /Tip load def /tT /Ttip load def +/halfturn{xysegl 2 div dup dup neg exch rmoveto + 0 exch dup exch -180 -90 arc}bind def + /aturn{gchksavexy halfturn xystroke}def + /bturn{gchksavexy xyopp halfturn xystroke}def + /ta /aturn load def /tb /bturn load def + /xysqll 231705 dimendiv def + /squigl{gchksavexy xysqll dup neg 0 rmoveto + 2 div dup dup neg dup 3 -1 roll + 2 sqrt mul dup 5 1 roll + 135 45 arcn dup 3 -1 roll -135 -45 arc + xystroke}def + /g /squigl load def +/fullhook{0 xysegl 2 div dup -90 90 arcn}bind def + /halfhook{xysegl 2 div dup 0 exch 180 90 arcn}bind def + +/ahook{gchksavexy fullhook xystroke}def + /bhook{gchksavexy xyopp fullhook xystroke}def + /hook{gchksavexy gsave halfhook stroke grestore + xyopp halfhook xystroke}def + /h /hook load def /ha /ahook load def /hb /bhook load def + /xyqcirc{dup dup neg exch translate newpath + dup neg 0 exch moveto 0 0 3 -1 roll -90 0 arc}bind def + + /circ{gstartxy + 3 copy pop 2 copy cos mul 3 1 roll sin mul + rmoveto 0 0 5 2 roll arc xystroke}bind def + /o /circ load def + /circhar{gsave dup 3 gt{7 sub neg}if dup + 3 eq{pop dup 2 sqrt -2 div mul}{dup 1 eq{pop dup 2 sqrt 2 div mul} + {0 eq{dup}{0}ifelse}ifelse}ifelse + 0 translate 3 1 roll circ grestore}bind def + /c /circhar load def +end end +%%EndResource diff --git a/Master/texmf-dist/dvips/zapfchan/config.uzc b/Master/texmf-dist/dvips/zapfchan/config.uzc new file mode 100644 index 00000000000..e22f542c4b4 --- /dev/null +++ b/Master/texmf-dist/dvips/zapfchan/config.uzc @@ -0,0 +1 @@ +p +uzc.map diff --git a/Master/texmf-dist/dvips/zapfding/config.uzd b/Master/texmf-dist/dvips/zapfding/config.uzd new file mode 100644 index 00000000000..46bf7d5dcee --- /dev/null +++ b/Master/texmf-dist/dvips/zapfding/config.uzd @@ -0,0 +1 @@ +p +uzd.map diff --git a/Master/texmf-dist/dvips/zefonts/slantcm.cfg b/Master/texmf-dist/dvips/zefonts/slantcm.cfg new file mode 100644 index 00000000000..4dea883ef92 --- /dev/null +++ b/Master/texmf-dist/dvips/zefonts/slantcm.cfg @@ -0,0 +1 @@ +p +slantcm.map |