ref: 45f7b30244297a8bf87789793eec875246ed063c
dir: /sys/src/cmd/postscript/cropmarks/cropmarks.ps/
% % 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