Trailing-Edge
-
PDP-10 Archives
-
SRI_NIC_PERM_FS_1_19910112
-
system/book.ps
There is 1 other file named book.ps in the archive. Click here to see a list.
%!-Adobe-1.0
% Routine to convert straight text files to "book" output (aka Imagen)
% output headers if defined.
% Inputs:
% File_Name - String to placed in Header line (filename)
% date - Date String
% time - Time string
% page - Starting page number (Optional)
%
% 16-Jun-88: Hack by TODD
% Changed /startY to 10.35 from previous value of 10.2.
% This fixes the problem of only getting 59 lines per page
% from SRI-NIC's spooler/Dataproducts printer combo.
% 24-Jul-88: Edit by TODD - Changed def names to match REVER hooks.
%
/in. {72 mul} def
/line 512 string def % for input line buffering
/buff 10 string def % for page number conversion
/leftmargin where not
{ /leftmargin .5 in. def } {pop} ifelse
/bottom where not
{ /bottom .5 in. def } {pop} ifelse
/startX where not
{ /startX leftmargin def } {pop} ifelse
/startY where not
{ /startY 10.35 in. def } {pop} ifelse
/fontname where not
{ /fontname /Courier def } {pop} ifelse
/fontsize where not
{ /fontsize 11 def } {pop} ifelse
/spacing where not
{ /spacing fontsize 1 add def } {pop} ifelse
/top {startY spacing sub} def
/headerfontname where not
{ /headerfontname /Courier-Bold def } {pop} ifelse
/headerpointsize where not
{ /headerpointsize 9 def } {pop} ifelse
/headerfont
headerfontname findfont headerpointsize scalefont
def
/page where not
{ /page 1 def } {pop} ifelse
/pagenumber where not
{ /pagenumber true def } {pop} ifelse
/boxfontname where not
{ /boxfontname /Times-Bold def } {pop} ifelse
/boxpointsize where not
{ /boxpointsize 25 def } {pop} ifelse
/boxfont
boxfontname findfont boxpointsize scalefont
def
/center {
stringwidth
pop
2 div
sub
exch
moveto
} def
/determine_size {
gsave
2 copy stringwidth pop
sub
0 le
{currentfont [.95 0 0 .95 0 0] makefont setfont determine_size}
{exch pop %get rid of the width
center
show} ifelse
grestore
} def
/replace_tabs {
( ) search
{mark exch dup show length 8 mod 1 7 {( ) show} for cleartomark
pop replace_tabs}
{show} ifelse
} def
/form_feeds {
(
) search
{replace_tabs pop new_page form_feeds}
{replace_tabs} ifelse
} def
% This routine will print a header at the top of each page
/printheader {
gsave
currentdict /File_Name known {
.9 setgray
newpath
.75 in. 10.4 in. moveto
.75 in. 10.7 in. lineto
2 in. 10.7 in. lineto
2 in. 10.4 in. lineto
closepath
fill
.6 setgray
newpath
6 in. 10.4 in. moveto
6 in. 10.7 in. lineto
7.25 in. 10.7 in. lineto
7.25 in. 10.4 in. lineto
closepath
fill
.985 setgray
newpath
2 in. 10.4 in. moveto
2 in. 10.6 in. lineto
6 in. 10.6 in. lineto
6 in. 10.4 in. lineto
closepath
fill
0 setgray
headerfont setfont
date 10.55 in. 1.35 in. 90 date determine_size
time 10.43 in. 1.35 in. 90 time determine_size
File_Name 10.45 in. 4.1 in. 280 File_Name determine_size
} if
pagenumber {
1 setgray
boxfont setfont
page buff cvs dup 10.43 in. exch 6.6 in. exch 90 exch determine_size
0 setgray
} if
grestore
startX startY moveto
} bind def
/new_page {
/page page 1 add def
page 2 mod 0 eq
{564 0 translate 1 setgray newpath 1 1 moveto 1 797 lineto 578 797 lineto
578 1 lineto closepath fill 0 setgray printheader}
{showpage 1 797 translate -90 rotate .7 .77 scale printheader} ifelse
} def
/crlf {
leftmargin currentpoint exch pop % replace X with leftmargin
spacing sub
dup bottom le
{ pop pop new_page}
{ moveto } ifelse
} bind def
/printfile {
line readline % read a line from the file
{ % 'if' procedure body (+boolean)
{ % 'while' procedure body
form_feeds crlf % show what's left by readline
currentfile cvlit % use as operand
line readline % and read the next line
not {exit} if % exit if no more input to be had
} loop % end of while-proc
} if
showpage % when input file is exhausted
} bind def % /printfile
fontname findfont fontsize scalefont setfont
1 797 translate -90 rotate .7 .77 scale
printheader % execute header
currentfile cvlit % uses rest of this file as input
% everything following 'PrintFile' is treated as data, through EOF
printfile