summaryrefslogtreecommitdiff
path: root/support/lametex/page/page_title.ps
blob: 7fe2593b617d1b44eeaabd9249fffc0850cc3779 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
%! page_title.ps   - A fancy titlepage for a document
%% This is a LameTeX Page Description File written in PostScript.
%% Postscript Code by Jon Monsarrat Copyright 1992
%% permission given for anything except selling this or deleting the header.
%% This is a page template for the LameTeX formatter
%% A normal page for LameTeX output to look like LaTeX output

%% REQUIRED DEFINITIONS START HERE %%

% Makes a path that desribes the page and leaves a setflat value on the stack.
/PageShape
{
  0 0 moveto 8.5 in 0 lineto 8.5 in 11 in lineto 0 11 in lineto closepath
  currentflat 8 mul
} bind def

/StartPage
{
   %%%%%%%%%%%%%%%% string Weird-Stuff %%%%%%%%%%%%%%%%%%%%%%%%%%
   % Weird-Stuff puts some fancy border stuff in around a given string
   /Weird-Stuff
   {
      save
         %%%%%%%%%%%%%%%% num num block %%%%%%%%%%%
         % width and  X position
         /Block
         {
            0 moveto dup 0 rlineto
            .35 in .7 in rlineto -1 mul 0 rlineto 
            closepath 1 setgray fill 0 setgray
         } bind def
         %%%%%% end of Block %%%%%%%%%%%%%%%%
   
         0.6 setgray
         exch /name exch def
         90 rotate 0 -1.1 in translate
         /bit {.02 in} def
         gsave
         
         2 in 0 translate
         .7 in dup scale
         1 3 in div setlinewidth
         
         /Thick 1 8 div def
         /Tall 1 def
         /HalfThick Thick .5 mul def
         
         newpath
         	HalfThick Thick moveto
         	Thick  0 lineto
         	1 Thick sub  0 lineto
         	1 HalfThick sub  Thick lineto
         	.5 HalfThick add  Tall Thick sub lineto
         
         	1 Thick sub  0 moveto
         	.5 HalfThick add  Tall 3 Thick mul sub lineto
         	Thick 3 mul  Thick 2 mul lineto
         
         	1 Thick 2.5 mul sub  Thick moveto
         	.5  Tall Thick 4 mul sub lineto
         stroke
         
         newpath
         	HalfThick Thick moveto
         	1 Thick 2.5 mul sub  Thick lineto
         	HalfThick neg  Thick rlineto
         	Thick Thick add  Thick Thick add lineto
         	.5 HalfThick add  Tall Thick sub lineto
         	Thick neg  0 rlineto
         	closepath
         fill
         grestore
         /Times-BoldItalic findfont 90 scalefont setfont
         gsave 2.65 in 0 moveto 1 .5 scale
         -.07 in 0 name ashow grestore
         gsave 2.65 in .625 in moveto 1 -.22 scale
         -.07 in 0 name ashow grestore
         newpath .3 in 0 moveto 1.9 in 0 lineto
         2.25 in .64 in lineto .3 in .64 in lineto
         .5 in .32 in lineto closepath fill
         6.4 in 0 moveto 8.9 in 0 lineto 8.8 in -.2 in lineto
         9.5 in .32 in lineto 8.8 in .84 in lineto
         8.9 in .64 in lineto 6.75 in .64 in lineto closepath fill
         .05 in .7 in Block
         .08 in 1.1 in Block
         .11 in 1.5 in Block
         .1 in 6.8 in Block
         .15 in 7.3 in Block
         .2 in 7.7 in Block
         .2 in 8 in Block
         .1 in 8.25 in Block
      restore
   } bind def
   
   %%%%%%%%%%%%% num num   circle  -   %%%%%%%%%%%%%%%%%%%%%%%%
   % circle fills & strokes a small white circle around current point
   /circle { currentpoint .1 in 0 rmoveto .1 in 0 360 arc
             1 setgray fill } def
   
   /StringBuffer 10 string def
   
   %%%%%%%%%%%%%%%% string Shade - %%%%%%%%%%%%%%%%%%%%%%%%
   % Shade prints a shaded character at the current position
   % .8 top .1 bot gray
   /Shade
   {
     currentpoint /aty exch def /atx exch def
     gsave
     dup true charpath clip (Mg) true charpath pathbbox
     exch 4 -1 roll sub /wid exch def exch sub /hit exch def
     /pl aty hit .3 mul sub def  /ph aty hit add .1 in sub def
     pl .1 in ph
     {
       dup pl sub ph pl sub div .7 mul .1 add setgray
       atx exch moveto wid 0 rlineto 0 hit rlineto
       wid -1 mul 0 rlineto closepath fill
     } for
     grestore
     dup 0 setgray true charpath stroke
     atx aty moveto stringwidth pop 0 rmoveto
   } bind def
   
   %%%%%%%%%%%%%%%% string Title - %%%%%%%%%%%%%%%%%%%%%%%%
   % Title prints a string in the title position of the page,
   % and shoots it full of holes!
   /Title
   {
     save
     exch /str exch def /border .2 in def  /hit 40 def
     /NewCenturySchlbk-Bold findfont hit 1.5 mul scalefont setfont
     str stringwidth pop /lg exch def
     newpath 8.5 in lg sub 2 div 9.7 in moveto
     gsave
     currentpoint border sub exch border sub exch moveto
     lg border 2 mul add 0 rlineto 0 hit border 2 mul add rlineto
     lg -1 mul border 2 mul sub 0 rlineto closepath
     gsave .8 setgray fill grestore 2 setlinewidth 0 setgray stroke
     .5 setlinewidth
     grestore
     str length 1 sub 0 1 3 -1 roll
     { rand pop
       str exch 1 getinterval Shade
     } for
     1 1 30
     {
      pop rand BIG div 2 div
             lg border 4 mul add mul 8.5 in lg sub 2 div add border sub
      rand BIG div 2 div
             hit border 4 mul add mul 10.1 in add border sub moveto
      circle
     } for
     1 setlinewidth 0 setgray
     restore
   } bind def
   
   /Web
   {
       newpath
       0 0 moveto
       1 1 8 { pop 0.5 in 0 -3 in -3 in -2 in 0.5 in rcurveto 45 rotate } for
   } bind def
   
   %%%%%% xlow ylow width height grain ShadeBox - %%%%%%%%%%%%%%%%%%
   % shades in a box with increasingly darker horizontal rectangles.
   /ShadeBox
   {
     newpath
     6 dict begin
     /grain exch def
     /height exch def
     /width exch def
     /ylow exch def
     /xlow exch def
     newpath
     ylow grain ylow height add grain sub
     {
       dup ylow sub height div .9 mul .1 add setgray  % How dark to stop?
       xlow exch moveto width 0 rlineto
       0 grain rlineto width neg 0 rlineto 
       closepath fill
     } for
     end
   } bind def
   
     1.5 in 1 in 6.5 in 5 in .05 in ShadeBox
     
     8 in 4 in translate
     0 setgray Web fill
     .2 in .2 in translate
     .5 setgray 10 setlinewidth Web fill
     .8 setgray 3 setlinewidth Web stroke
     grestoreall  % Don't want all this to have an effect on text printing
} bind def

/EndPage
{
   /pagenumber pagenumber 1 add def   % Don't print a page number on titlepage
   showpage   % A new page here really does mean start a new page.
} bind def

%% INITIALIZATION TO DO WHEN FILE IS LOADED %%

/InitPage
{
  /evenodd true def   % if true use even-odd rule; false means winding rule
  /fillout false def  % true means fill outside shape. false is inside.

  % Page Defaults
  /in { 72 mul } def
  /BM 0 in def    % Absolute Bottom Margin for page
  /TM 11 in def   % Absolute Top Margin for page
  /LM 0 in def    % Absolute Left Margin for page
  /RM 8.5 in def  % Absolute Right Margin for page
  
  userdict /pagenumber known not
  { /pagenumber 1 def } if    % Initialize pagenumber if not done already

  /BIG 1073741824 def
} bind def

InitPage        % Just loading this file initializes the page.