| %%BeginResource: procset LoutBasicSetup |
| |
| % width height linethickness louteuro - |
| % draw a Euro symbol of this width and height with this line thickness |
| /louteuro { |
| 20 dict begin |
| /eurothick exch def |
| /euroheight exch def |
| /eurowidth exch def |
| /eurostrokewidth euroheight 0.8 mul def |
| /eurostep eurothick 60 cos mul 60 sin div def |
| /eurotheta 40 def |
| |
| % llx lly width thickness louteurobox - |
| % draw angled box starting at (llx, lly) with given width and thickness |
| /louteurobox |
| { |
| /euroboxthick exch def |
| /euroboxwidth exch def |
| newpath moveto euroboxwidth 0 rlineto |
| eurostep euroboxthick rlineto |
| euroboxwidth neg 0 rlineto closepath fill |
| } def |
| |
| % lower cross stroke |
| 0 euroheight 2 div eurothick 1.5 mul sub |
| eurostrokewidth eurothick louteurobox |
| |
| % upper cross stroke |
| 0 euroheight 2 div eurothick 0.5 mul add |
| eurostrokewidth eurostep 2 mul add eurothick louteurobox |
| |
| % circular part |
| /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def |
| /eurovctr euroheight 2 div def |
| newpath |
| eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc |
| eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn |
| closepath fill |
| end |
| } def |
| |
| % path for @FullWidthRule symbol |
| /LoutRule |
| { 0 0 moveto xsize 0 lineto |
| } def |
| |
| % path for @Box symbol |
| /LoutBox |
| { 0 0 moveto xsize 0 lineto |
| xsize ysize lineto 0 ysize lineto |
| closepath |
| } def |
| |
| % path for @CurveBox symbol |
| /LoutCurveBox |
| { xmark 0 moveto |
| xsize xmark sub xmark xmark 270 360 arc |
| xsize xmark sub ysize xmark sub xmark 0 90 arc |
| xmark ysize xmark sub xmark 90 180 arc |
| xmark xmark xmark 180 270 arc |
| closepath |
| } def |
| |
| % path for @ShadowBox symbol |
| /LoutShadowBox |
| { xmark 2 mul 0 moveto xsize 0 lineto |
| xsize ysize xmark 2 mul sub lineto |
| xsize xmark sub ysize xmark 2 mul sub lineto |
| xsize xmark sub xmark lineto |
| xmark 2 mul xmark lineto |
| closepath |
| } def |
| |
| % set up dictionary containing margin note data: parity LoutMargSet - |
| /LoutMargSet |
| { /LoutMargDict 12 dict def |
| LoutMargDict begin |
| /parity exch def |
| /matr matrix currentmatrix def |
| /rightx xsize def |
| /lefty ysize def % highest allowable point for top of next left note |
| /righty ysize def % highest allowable point for top of next right note |
| /max { 2 copy gt { pop } { exch pop } ifelse } def |
| /min { 2 copy lt { pop } { exch pop } ifelse } def |
| end |
| } def |
| |
| %translate coordinate system for marginal notes: type LoutMargShift - |
| % where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner |
| /LoutMargShift |
| { LoutMargDict begin |
| |
| % y coordinate of top of note, in margin coords, before vertical adjust |
| 0 ysize transform matr itransform exch pop |
| |
| % decide whether left or right margin based on type and parity |
| exch [ 0 1 parity 1 parity sub ] exch get 0 eq |
| { |
| % left margin: adjust top of note downwards if overlaps previous note |
| lefty min |
| |
| % bottom of note is new lefty position and also translate position |
| ysize sub dup /lefty exch def |
| |
| % want right edge of note at coordinate zero |
| xsize neg exch |
| } |
| { |
| % right margin: adjust top of note downwards if overlaps previous note |
| righty min |
| |
| % bottom of note is new righty position and also translate position |
| ysize sub dup /righty exch def |
| |
| % want left edge of note at coordinate rightx |
| rightx exch |
| } ifelse |
| |
| % stack now contains coord of bottom left corner in margin coordinates |
| matr setmatrix translate |
| end |
| } def |
| |
| % create LoutPageDict with left, right, foot, top for @Place symbol users |
| /LoutPageSet |
| { |
| /LoutPageDict 5 dict def |
| LoutPageDict begin |
| /matr matrix currentmatrix def |
| /left 0 def |
| /right xsize def |
| /foot 0 def |
| /top ysize def |
| end |
| |
| } def |
| |
| %%EndResource |