Article View: comp.lang.postscript
Article #6780Postscript ideas...
From: Chris Nielsen
Date: Thu, 07 Jan 1988 08:05
Date: Thu, 07 Jan 1988 08:05
278 lines
6662 bytes
6662 bytes
I'm real glad to see a postscript newsgroup!
I've seen some requests for 'clippings', and I'd like to do the same.
But first, here's my contribution. Also, I'd like to be on anyone's PS
mailing list there may be.
Lately, I've discovered m4 as a postscript tool. I've developed a command,
psq, to do the printing for me. It prepends the ps-adobe header, defines
some well-used utilities, runs m4 to include others, and sends to the printer.
Included in psq is a graph-paper procedure I use very much. it does a grid
with dotted lines, and numbers across the bottom & left side. it does a 20
20 translate to move the artwork away from the numbers. To print I just do
a psq artfile.ps. the artfile.ps file contains the 'showpage'.
There are 3 files here. 'psq' is the shell command to print things. modify
the 'apr -qgrape' (our local printing method) to how ever you get a file to
the printer. 'curves.ps' is a file to demonstrate all this. It does the
grid, curveto 'debug', and inclusion. 'factory.ps' is just a 'clipping' of
which there would be many.
Oh.. I do have a specific request... If anyone knows how to make an error
handler that will print a page with thee name of the error, and offending
line (this is all in errordict) please tell me! I wrote one, but it doesn't
work, and I have no idea what's wrong with it. I read the blue & red, but
to no avail...
Please send comments, artwork, etc to address at bottom...
Thanks! -sdcrdcf!zorin!chris (Christopher Nielsen)
- - - Lazy-Arc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is a 'Lazy-Arc' archive... I'm sorry, It's late, and I'm tired...
Just cut on the dotted lines, (3 files).
- - - cut cut cut file: psq - - - - - - - - - - - - - - - - - - - - - - -
cat > "/tmp/prg$$" << 'EOF'
%!PS-Adobe-1.0
% lib/psdit.pro
%%%%%%%%%%%%%%%% grid
/str 4 string def
/horiz % make horiz lines
{
newpath
0 10 700 % start, incr, end
{
dup /curval exch def % curval = top val of stack (y)
0 exch moveto
550 0 rlineto
} for
stroke
} def
/vert % make vert lines
{
newpath
0 10 550 % start, incr, end
{
0 moveto
0 700 rlineto
} for
stroke
} def
/hnum % make numbers for horiz lines
{
newpath
10 10 700 % start, incr, end
{
dup /curval exch def % curval = top val of stack (y)
4 add % start printing up a bit (added to y)
5 exch moveto
curval str cvs show
} for
} def
/vnum % numbers for vert
{
20 20 550 % for every other one.
{
dup /curval exch def
11 add % start printing a bit to the right.
0 moveto
curval str cvs show
} for
} def
% -------- Main
/grid {
20 20 translate
gsave
.005 setlinewidth
% [1 2] 0 setdash % 1 on 2 off 0 offset
horiz
vert
-15 -5 translate
/Helvetica findfont
5 scalefont
setfont
vnum
hnum
15 5 translate
0 0 moveto
grestore
} def
%%%%%%%%%%%%%%%% cvdebug
/cvtodict 10 dict def
/cvto {
cvtodict begin
/putx { % put an X at the current point.
-2 -2 rmoveto % get to position
4 4 rlineto % first leg
-4 0 rmoveto % next position
4 -4 rlineto % last leg
-2 2 rmoveto % back to center.
} def
/y3 exch def
/x3 exch def
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
currentpoint
/y0 exch def
/x0 exch def
gsave
x0 y0 moveto putx
x1 y1 lineto putx
x2 y2 lineto putx
x3 y3 lineto putx
.005 setlinewidth
stroke
grestore
x0 y0 moveto % now do real curveto.
x1 y1 x2 y2 x3 y3 curveto
end
} def
%%%%%%%%%%%%%%%% print line
/pl {
% p. 63, 82 blue for alt. method
currentpoint
/oy exch def % save old xy values
/ox exch def
show
currentpoint % stack: x,y
2 1 roll % now it's y,x
pop % y
ox % y,ox (old x value)
% 50 % y,50
2 1 roll % 50,y
15 sub % 50,y-15
moveto
} def
%%%%%%%%%%%%%%%%
% 20 20 translate
EOF
m4 $1 >> /tmp/prg$$
cat /tmp/prg$$ > psq.out
cat /tmp/prg$$ | apr -qgrape
rm /tmp/prg$$
- - - -cut cut cut file: curves.ps - - - - - - - - - - - - - - - - - - - - -
include(factory.ps)
% /cvto { curveto } def %% remove the first % to make curveto normal
/curves {
100 100 moveto
200 200 300 50 400 200 cvto % cvto is a curveto but with lines
} % to show the points.
curves stroke
0 500 translate
factory
showpage
- - - cut cut cut file: factory.ps - - - - - - - - - - - - - - - - - - - -
% Factory building
% --------- Procedures
/front
{
newpath
0 0 moveto
210 0 lineto
210 30 lineto
0 30 lineto
closepath
stroke
} def
/side
{
newpath
210 0 moveto
230 60 lineto
230 90 lineto
210 30 lineto
closepath
stroke
} def
/rpanel
{
newpath
30 50 moveto
30 30 lineto
50 90 lineto
50 110 lineto
20 90 lineto
0 30 lineto
30 50 lineto
50 110 lineto
stroke
} def
/roof
{
gsave
0 30 180 {
rpanel
30 0 translate
} for
grestore
} def
% -------- Main
/factory {
.05 setlinewidth
100 100 translate
front
side
% rpanel
roof
} def
- - - End of Lazy-Arc: good night. - - - - - - - - - - - - - - - - - - - - -
////////////////// Zorin Data Systems, Inc
////
//// 2910 Seventh Street, Santa Monica, CA 90405 (213)399-3804
//// UUCP: ucbvax!hplabs!sdcrdcf!zorin!chris
////
<<<<<<<<<<<<<<<<<<<<< Zorin... "A World of Information" >>>>>>>>>>>>>>>>>>>>>
Technical Details
Message-ID:
<112@zorin.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!ucla-cs!zen!ucbvax!hplabs!sdcrdcf!zorin!chrisShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!rutgers!ucla-cs!zen!ucbvax!hplabs!sdcrdcf!zorin!chris From: chris@zorin.UUCP (Chris Nielsen) Newsgroups: comp.lang.postscript Subject: Postscript ideas... Keywords: PS Message-ID: <112@zorin.UUCP> Date: 7 Jan 88 08:05:27 GMT Organization: Zorin Data Systems Inc., Santa Monica Lines: 278