131 lines
3 KiB
PostScript
131 lines
3 KiB
PostScript
%
|
|
% Center pages, based on pageheight and pagewidth, and redefine showpage
|
|
% to put cropmarks at each corner. Device dependent code to expand the
|
|
% paper size goes in procedure expandpagesize. Currently only supports
|
|
% a Linotronic 200P typesetter using 12 inch wide paper. You'll have to
|
|
% add code to expandpagesize to support different typesetters or even a
|
|
% 200P that's running differently.
|
|
%
|
|
|
|
/CropmarkDict 40 dict dup begin
|
|
|
|
/expandpage true def
|
|
/magnification 1 def
|
|
/pageheight 11.0 def
|
|
/pagewidth 8.5 def
|
|
/scaletofit false def
|
|
/scaling 1 def
|
|
|
|
/marklength .3 def % inches
|
|
/markstart .125 def % inches
|
|
/markend .04 def % inches
|
|
/marklinewidth .25 def % points
|
|
|
|
/inch {72 mul} def
|
|
/min {2 copy gt {exch} if pop} def
|
|
/max {2 copy lt {exch} if pop} def
|
|
|
|
/setup {
|
|
/markspace markstart marklength add markend add inch marklinewidth add def
|
|
/totalheight pageheight inch markspace 2 mul add def
|
|
/totalwidth pagewidth inch markspace 2 mul add def
|
|
|
|
pagedimensions
|
|
checkpagesize
|
|
/scaling getscaling def
|
|
xcenter ycenter translate
|
|
scaling scaling scale
|
|
pagewidth inch 2 div neg pageheight inch 2 div neg translate
|
|
clippage
|
|
} def
|
|
|
|
/pagedimensions {
|
|
clippath pathbbox newpath
|
|
4 -1 roll exch 4 1 roll 4 copy
|
|
sub /width exch def
|
|
sub /height exch def
|
|
add 2 div /xcenter exch def
|
|
add 2 div /ycenter exch def
|
|
} def
|
|
|
|
/checkpagesize {
|
|
height totalheight lt width totalwidth lt or expandpage and {
|
|
expandpagesize
|
|
pagedimensions
|
|
} if
|
|
} def
|
|
|
|
/expandpagesize { % device dependent code
|
|
/Product statusdict begin /product where {pop product}{()} ifelse end def
|
|
|
|
Product (Linotype) eq { % Linotronic 200P and other models?
|
|
statusdict /setpageparams known {
|
|
/maxwidth 12.0 inch def % 12 inch wide paper?
|
|
totalheight maxwidth le {
|
|
totalheight
|
|
totalwidth
|
|
maxwidth totalheight sub 2 div
|
|
0
|
|
}{
|
|
totalwidth maxwidth min
|
|
totalheight
|
|
maxwidth totalwidth maxwidth min sub 2 div
|
|
1
|
|
} ifelse
|
|
statusdict /setpageparams get exec
|
|
} if
|
|
} if
|
|
} def
|
|
|
|
/getscaling {
|
|
scaletofit
|
|
{height totalheight div width totalwidth div min 1 min}
|
|
{1}
|
|
ifelse
|
|
} def
|
|
|
|
/clippage {
|
|
newpath
|
|
0 0 moveto
|
|
pagewidth inch 0 rlineto
|
|
0 pageheight inch rlineto
|
|
pagewidth neg inch 0 rlineto
|
|
closepath clip
|
|
newpath
|
|
} def
|
|
|
|
/cropmark {
|
|
gsave
|
|
translate
|
|
rotate
|
|
marklinewidth dup translate
|
|
0 0 transform round exch round exch itransform translate
|
|
markstart inch 0 moveto marklength inch 0 rlineto stroke
|
|
0 markstart inch moveto 0 marklength inch rlineto stroke
|
|
grestore
|
|
} bind def
|
|
|
|
/@PreviousShowpage /showpage load def
|
|
|
|
end def
|
|
|
|
%
|
|
% Cropmarks - in the default coordinate system.
|
|
%
|
|
|
|
/showpage {
|
|
gsave
|
|
CropmarkDict begin
|
|
initgraphics
|
|
marklinewidth setlinewidth
|
|
xcenter ycenter translate
|
|
scaling scaling scale
|
|
0 pagewidth inch 2 div pageheight inch 2 div cropmark
|
|
90 pagewidth inch neg 2 div pageheight inch 2 div cropmark
|
|
180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark
|
|
270 pagewidth inch 2 div pageheight inch 2 div neg cropmark
|
|
@PreviousShowpage
|
|
end
|
|
grestore
|
|
} bind def
|
|
|