|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 7018 (0x1b6a)
Types: TextFile
Names: »tex.ps_oystr«
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
└─⟦this⟧ »./DVIware/obsolete/mitdrivers/dvi2ps/tex.ps_oystr«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦af5ba6c8e⟧ »unix3.0/DVIWARE.tar.Z«
└─⟦ca79c7339⟧
└─⟦this⟧ »DVIware/obsolete/mitdrivers/tex.ps_oystr«
%!
% a start (Ha!) at a TeX mode for PostScript
% Caution: the following violates almost all codes of good programming
% practice.
%
% oystr 13-Dec-1985
% The printing of page numbers has a tendency to foul up
% the handshaking between the printer and the filter processes.
% One way to deal with this is to fix the filter arrangement.
% This would also require throwing away the page numbers since
% we don't particularly want them clogging up the log files.
% Another way (my way) is to shut the damn thing up.
%
% oystr 12-Feb-1986
% Changed @dc macro to check for a badly formed bits in character
% definitions. Can get a <> bit map if a character is not actually
% in the font file. This is absolutely guaranteed to drive the
% printer nuts - it will appear that you can no longer define a
% new font, although the built-ins will still be there.
/DebugFlag 0 def % 0 -> 1 for debugging
DebugFlag 1 eq
{ (Starting TeX job\n) print flush }
if
note
% units are in "dots" (300/inch)
/Resolution 300 def
/Page-X-Offset 210 def % pages are shifted right this much for TeX
/Page-Y-Offset 165 def % pages are shifted down this much for TeX
/Inch {Resolution mul} def % converts inches to internal units
/PageCounter statusdict begin pagecount end def % so we can report # pages printed
/@newfont % id @newfont - -- initialize a new font dictionary
{ /newname exch def
pop
newname 7 dict def % allocate new font dictionary
newname load begin
/FontType 3 def
/FontMatrix [1 0 0 1 0 0] def
/FontBBox [0 0 1 1] def
/BitMaps 128 array def
/BuildChar {CharBuilder} def
/Encoding 128 array def
0 1 127 {Encoding exch /.undef put} for
end
newname newname load definefont pop
} def
% the following is the only character builder we need. it looks up the
% char data in the BitMaps array, and paints the character if possible.
% char data -- a bitmap descriptor -- is an array of length 6, of
% which the various slots are:
/ch-image {ch-data 0 get} def % the hex string image
/ch-width {ch-data 1 get} def % the number of pixels across
/ch-height {ch-data 2 get} def % the number of pixels tall
/ch-xoff {ch-data 3 get} def % number of pixels below origin
/ch-yoff {ch-data 4 get} def % number of pixels to left of origin
/ch-tfmw {ch-data 5 get} def % spacing to next character
/CharBuilder % fontdict ch Charbuilder - -- image one character
{ /ch-code exch def % save the char code
/font-dict exch def % and the font dict.
/ch-data font-dict /BitMaps get ch-code get def % get the bitmap descriptor for char
ch-data null eq not
{ ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub
setcachedevice
ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff]
{ch-image} imagemask
}
if
} def
/@sf % fontdict @sf - -- make that the current font
{ setfont
} def
% in the following, the font-cacheing mechanism requires that
% a name unique in the particular font be generated
/@dc % char-data ch @dc - -- define a new character bitmap in current font
{ /ch-code exch def
% ++oystr 12-Feb-86++
dup 0 get
length 2 lt
{ pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null
if
% --oystr 12-Feb-86--
/ch-data exch def
currentfont /BitMaps get ch-code ch-data put
currentfont /Encoding get ch-code
dup ( ) cvs cvn % generate a unique name simply from the character code
put
} def
/@bop0 % n @bop0 - -- begin the char def section of a new page
{
DebugFlag 1 eq
{ (Page ) print == flush }
{ pop } % -- page number on top of stack
ifelse
} def
/@bop1 % n @bop1 - -- begin a brand new page
{ pop
erasepage initgraphics
% translations are a haque to get correct margins (1" default for TeX)
[1.0 0.0 0.0 -1.0 Page-X-Offset 11 Inch Page-Y-Offset add] setmatrix
/SaveImage save def
} def
/@eop % - @eop - -- end a page
{ showpage
SaveImage restore
%% vmstatus exch sub == pop % print a few statistics (mem remaining)
} def
/@end % - @end - -- done the whole shebang
{
DebugFlag 1 eq
{ (Done! ) print
statusdict begin pagecount end PageCounter sub
dup /PageCounter exch def
( ) cvs print
( pages printed.\n) print flush
}
if
erasepage initgraphics
count 0 gt % print stats if stack not empty
{ PageCounter 3 ge % and if there were a significant number of pages
{ /Times-Bold findfont 16 scalefont setfont
newpath 200 500 moveto
count
{ gsave
( ) cvs show
grestore
0 -30 rmoveto
}
repeat
0 -20 rmoveto
PageCounter ( ) cvs show
( pages printed.) show
0.3 setgray
newpath 0 792 moveto
0 -24 rlineto 692 0 rlineto 0 24 rlineto closepath fill
newpath 0 0 moveto
692 0 rlineto 0 24 rlineto -692 0 rlineto closepath fill
showpage
}
if
}
if
} def
/p % x y p - -- move to position
{ moveto
} def
/r % x r - -- move right
{ 0 rmoveto
} def
/s % string s - -- show the string
{ show
} def
/c % ch c - -- show the character (code given)
{ c-string exch 0 exch put
c-string show
} def
/c-string ( ) def
/ru % dx dy ru - -- set a rule (rectangle)
{ /dy exch def
/dx exch def
/x currentpoint /y exch def def % remember current point
newpath x y moveto
dx 0 rlineto
0 dy rlineto
dx neg 0 rlineto
closepath fill
x y moveto
} def
% this will be invoked as the result of a \special command (for the
% inclusion of PostScript graphics). The basic idea is to change all
% scaling and graphics back to defaults, but to shift the origin
% to the current position on the page. Due to TeXnical difficulties,
% we only set the y-origin. The x-origin is set at the left edge of
% the page.
/@beginspecial % - @beginspecial - -- enter special mode
{ /SpecialSave save def gsave
currentpoint initgraphics
exch pop Page-Y-Offset sub % remember, page is offset vertically
72 1 Inch div mul % convert this dimension to points
0 exch translate
} def
/@endspecial % - @endspecial - -- leave specail mode
{ grestore SpecialSave restore
} def