Current File : //usr/share/texlive/texmf-dist/doc/generic/epsf/bboxgrid.ps |
%!PS-Adobe
%%BoundingBox: 0 0 612 792
%%% ====================================================================
%%% @PostScript-file{
%%% author = "Nelson H. F. Beebe",
%%% version = "1.01",
%%% date = "22 January 1994",
%%% time = "23:33:36 MST",
%%% filename = "bboxgrid.ps",
%%% address = "Center for Scientific Computing
%%% Department of Mathematics
%%% University of Utah
%%% Salt Lake City, UT 84112
%%% USA
%%% Tel: +1 801 581 5254
%%% FAX: +1 801 581 4148",
%%% checksum = "57568 317 1097 8973",
%%% email = "beebe@solitude.math.utah.edu (Internet)",
%%% codetable = "ISO/ASCII",
%%% keywords = "grid, measure, calibration",
%%% supported = "yes",
%%% docstring = "This PostScript file produces a numbered grid
%%% measured in PostScript units of big points
%%% for the determination of correct bounding
%%% boxes of other PostScript files.
%%%
%%% Accurate bounding box measurements are
%%% required if the PostScript is to be included
%%% in other PostScript documents, such as via
%%% the TeX \special{} command.
%%%
%%% While PostScript by default places the (0,0)
%%% origin at the lower-left page corner,
%%% variations of several points will be found in
%%% different printers, even between identical
%%% models from the same vendor.
%%%
%%% To correctly determine the BoundingBox of an
%%% arbitrary PostScript figure, overlay a
%%% printed copy of the figure on the grid
%%% produced by this file on the SAME printer,
%%% and measure from it the coordinates of the
%%% lower-left and upper-right corners. These
%%% four integers should be entered in the
%%% PostScript file as a comment of the form
%%%
%%% %%BoundingBox: llx lly urx ury
%%%
%%% This comment should be placed near the
%%% beginning, preferably right after the initial
%%% line that should start %! or %!PS-Adobe...
%%%
%%% The checksum field above contains a CRC-16
%%% checksum as the first value, followed by the
%%% equivalent of the standard UNIX wc (word
%%% count) utility output of lines, words, and
%%% characters. This is produced by Robert
%%% Solovay's checksum utility.",
%%% }
%%% ====================================================================
%%% 1.01 [22-Jan-1994] add top label, and bp axis labels
%%% 1.00 [22-Nov-1991] original version
/TickSize 5 def
/TickStep 5 def
/TickFontSize 9 def
/Frame % x y width height Frame
{
/height exch def
/width exch def
/y exch def
/x exch def
newpath
x y moveto
width 0 rlineto
0 height rlineto
width neg 0 rlineto
closepath
stroke
x y width TickStep TickSize TickX
x y width TickStep TickSize NumberX
x y height add width TickStep TickSize neg TickX
x y height add width TickStep TickSize neg NumberX
x y height TickStep TickSize TickY
x y height TickStep TickSize NumberY
x width add y height TickStep TickSize neg TickY
x width add y height TickStep TickSize neg NumberY
x y 25 25 width height Grid
} def
/Grid % x y dx dy width height Grid
{
/Gheight exch def
/Gwidth exch def
/Gdy exch def
/Gdx exch def
/Gy exch def
/Gx exch def
Gx
Gdx
Gx Gwidth add
{
newpath
Gy moveto
0 Gheight rlineto
closepath
stroke
}
for
Gy
Gdy
Gy Gheight add
{
newpath
Gx exch moveto
Gwidth 0 rlineto
closepath
stroke
}
for
} def
/NumberX % x y length dx tick NumberX
{
/Helvetica findfont TickFontSize scalefont setfont
/Ttick exch def
/Tdx exch def
/Tlength exch def
/Ty exch def
/Tx exch def
/temp 12 string def
Tx
Tdx 5 mul
Tx Tlength add
{
dup
Ty moveto % Tx already on stack
Ttick 0 lt
{ 0 TickFontSize 0.5 mul rmoveto }
{ 0 TickFontSize -1.5 mul rmoveto }
ifelse
temp cvs
dup stringwidth pop -2 div 0 rmoveto
show
}
for
} def
/NumberY % x y length dy tick NumberY
{
/Helvetica findfont TickFontSize scalefont setfont
/Ttick exch def
/Tdy exch def
/Tlength exch def
/Ty exch def
/Tx exch def
/temp 12 string def
Ty
Tdy 5 mul
Ty Tlength add
{
dup
Tx exch moveto % Ty already on stack
Ttick neg TickFontSize -2 div rmoveto
temp cvs
Ttick 0 gt
{ dup stringwidth pop neg 0 rmoveto }
if
show
}
for
} def
/TickX % x y length dx tick TickX
{
/Ttick exch def
/Tdx exch def
/Tlength exch def
/Ty exch def
/Tx exch def
Tx
Tdx
Tx Tlength add
{
dup
newpath
Ty moveto % Tx already on stack
cvi Tdx 5 mul cvi mod 0 eq% draw tick, double length every 5th
{ Ttick 2 mul }
{ Ttick }
ifelse
0
exch
rlineto
closepath
stroke
}
for
} def
/TickY % x y length dy tick TickY
{
/Ttick exch def
/Tdy exch def
/Tlength exch def
/Ty exch def
/Tx exch def
Ty
Tdy
Ty Tlength add
{
dup
newpath
Tx exch moveto % Ty already on stack
cvi Tdy 5 mul cvi mod 0 eq% draw tick, double length every 5th
{ Ttick 2 mul }
{ Ttick }
ifelse
0
rlineto
closepath
stroke
}
for
} def
/inch
{
72 mul
} def
/mm
{
72 mul 25.4 div
} def
% (string) CenterCenterShow -- show centered at currentpoint
/CenterCenterShow
{
dup stringwidth pop -2 div TickFontSize -2 div rmoveto show
} def
% (string) RightCenterShow -- show right-centered at currentpoint
/RightCenterShow
{
dup stringwidth pop neg TickFontSize -2 div rmoveto show
} def
% (string) LeftCenterShow -- show right-centered at currentpoint
/LeftCenterShow
{
0 TickFontSize -2 div rmoveto show
} def
% Select ONE of these pairs of page dimensions
% ISO A4-format paper
% /PageWidth 210 mm def
% /PageHeight 297 mm def
% US A-format paper
/PageWidth 8.5 inch def
/PageHeight 11.0 inch def
% Make grid lines half the normal thickness
currentlinewidth 0.5 mul setlinewidth
% Title the grid
/Helvetica-Bold findfont TickFontSize scalefont setfont
PageWidth 2 div 25 moveto
(bboxgrid.ps [Version 1.01] [22 January 1994]) dup
CenterCenterShow
PageWidth 2 div 780 moveto
CenterCenterShow
% You can change this line to make a different grid. The values
% should all be multiples of 25.
% The values 50 50 525 700 are appropriate for an Apple LaserWriter II.
% x y width height Frame
50 50 525 700 Frame
% label bottom horizontal axis at each end
50 30 moveto
(bp) CenterCenterShow
575 30 moveto
(bp) CenterCenterShow
% label top horizontal axis at each end
50 770 moveto
(bp) CenterCenterShow
575 770 moveto
(bp) CenterCenterShow
% label left vertical axis at each end
25 50 moveto
(bp) RightCenterShow
25 750 moveto
(bp) RightCenterShow
% label right vertical axis at each end
600 50 moveto
(bp) LeftCenterShow
600 750 moveto
(bp) LeftCenterShow
showpage