1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-29 11:02:01 +00:00
emacs/doc/lispintro/cons-4.eps

682 lines
14 KiB
PostScript

%!
%%BoundingBox: 6 681 355 758
%%Title: cons-cell-diagram4
%%CreationDate: Wed Mar 8 14:25:06 1995
%%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu)
%
% Due to bugs in Transcript, the 'PS-Adobe-' stuff is omitted from line 1
%
% Copyright (C) 1995, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
% Free Software Foundation, Inc.
%
% This file is part of GNU Emacs.
%
% GNU Emacs is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
/tgifdict 132 dict def
tgifdict begin
%
% Using a zero value radius for an ellipse or an arc would result
% in a non-invertible CTM matrix which causes problem when this
% when this PostScript is wrapped inside other routines, such as
% the multi.ps package from
% ftp.ucc.su.oz.au:/pub/ps_printing/multi. You can overcome such
% error by uncommenting the sole line of the procedure below:
%
/tgif_min_radius
{
% dup 0.01 lt { pop 0.01 } if
} bind def
/tgifellipsedict 6 dict def
tgifellipsedict /mtrx matrix put
/tgifellipse
{ tgifellipsedict begin
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate
xrad yrad scale
0 0 1 0 360 arc
savematrix setmatrix
end
} def
/tgifarrowtipdict 8 dict def
tgifarrowtipdict /mtrx matrix put
/tgifarrowtip
{ tgifarrowtipdict begin
/dy exch def
/dx exch def
/h exch def
/w exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate
dy dx atan rotate
0 0 moveto
w neg h lineto
w neg h neg lineto
savematrix setmatrix
end
} def
/tgifarcdict 8 dict def
tgifarcdict /mtrx matrix put
/tgifarcn
{ tgifarcdict begin
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate
xrad yrad scale
0 0 1 startangle endangle arc
savematrix setmatrix
end
} def
/tgifarc
{ tgifarcdict begin
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate
xrad yrad scale
0 0 1 startangle endangle arcn
savematrix setmatrix
end
} def
/tgifsetuserscreendict 22 dict def
tgifsetuserscreendict begin
/tempctm matrix def
/temprot matrix def
/tempscale matrix def
/concatprocs
{ /proc2 exch cvlit def
/proc1 exch cvlit def
/newproc proc1 length proc2 length add array def
newproc 0 proc1 putinterval
newproc proc1 length proc2 putinterval
newproc cvx
} def
/resmatrix matrix def
/findresolution
{ 72 0 resmatrix defaultmatrix dtransform
/yres exch def /xres exch def
xres dup mul yres dup mul add sqrt
} def
end
/tgifsetuserscreen
{ tgifsetuserscreendict begin
/spotfunction exch def
/screenangle exch def
/cellsize exch def
/m tempctm currentmatrix def
/rm screenangle temprot rotate def
/sm cellsize dup tempscale scale def
sm rm m m concatmatrix m concatmatrix pop
1 0 m dtransform /y1 exch def /x1 exch def
/veclength x1 dup mul y1 dup mul add sqrt def
/frequency findresolution veclength div def
/newscreenangle y1 x1 atan def
m 2 get m 1 get mul m 0 get m 3 get mul sub 0 gt
{{neg} /spotfunction load concatprocs
/spotfunction exch def
} if
frequency newscreenangle /spotfunction load setscreen
end
} def
/tgifsetpatterndict 18 dict def
tgifsetpatterndict begin
/bitison
{ /ybit exch def /xbit exch def
/bytevalue bstring ybit bwidth mul xbit 8 idiv add get def
/mask 1 7 xbit 8 mod sub bitshift def
bytevalue mask and 0 ne
} def
end
/tgifbitpatternspotfunction
{ tgifsetpatterndict begin
/y exch def /x exch def
/xindex x 1 add 2 div bpside mul cvi def
/yindex y 1 add 2 div bpside mul cvi def
xindex yindex bitison
{ /onbits onbits 1 add def 1 }
{ /offbits offbits 1 add def 0 }
ifelse
end
} def
/tgifsetpattern
{ tgifsetpatterndict begin
/cellsz exch def
/angle exch def
/bwidth exch def
/bpside exch def
/bstring exch def
/onbits 0 def /offbits 0 def
cellsz angle /tgifbitpatternspotfunction load tgifsetuserscreen
{} settransfer
offbits offbits onbits add div setgray
end
} def
/tgifxpmdict 4 dict def
/tgifbwpicstr 1 string def
/tgifcolorpicstr 3 string def
/tgifsetpixels { tgifxpmdict begin /pixels exch def end } def
/tgifsetpix { tgifxpmdict begin pixels 3 1 roll putinterval end } def
/tgifbwspot
{ tgifxpmdict begin
/index exch def
tgifbwpicstr 0
pixels index 3 mul 3 getinterval aload pop
255 mul .114 mul exch 255 mul .587 mul add exch 255 mul .299 mul add
cvi put
tgifbwpicstr
end
} def
/tgifcolorspot
{ tgifxpmdict begin
/index exch def
pixels index 3 mul 3 getinterval aload pop
255 mul cvi tgifcolorpicstr 2 3 -1 roll put
255 mul cvi tgifcolorpicstr 1 3 -1 roll put
255 mul cvi tgifcolorpicstr 0 3 -1 roll put
tgifcolorpicstr
end
} def
/tgifnewcolorspot
{ tgifxpmdict begin
/index exch def
pixels index 3 mul 3 getinterval aload pop setrgbcolor
end
} def
/tgifcolordict 4 dict def
/colorimage where
{ pop }
{ /colorimage
{ tgifcolordict begin
pop pop pop pop pop
/ih exch def
/iw exch def
/x 0 def
/y 0 def
1 1 ih
{ pop 1 1 iw
{ pop currentfile
tgifbwpicstr readhexstring pop 0 get tgifnewcolorspot
x y moveto 1 0 rlineto 0 1 rlineto -1 0 rlineto
closepath fill
/x x 1 add def
} for
/y y 1 add def
/x 0 def
} for
end
} def
} ifelse
/tgifpatdict 10 dict def
/tgifpatbyte
{ currentdict /retstr get exch
pat i cellsz mod get put
} def
/tgifpatproc
{ 0 1 widthlim {tgifpatbyte} for retstr
/i i 1 add def
} def
/tgifpatfill
{ tgifpatdict begin
/h exch def
/w exch def
/lty exch def
/ltx exch def
/cellsz exch def
/pat exch def
/widthlim w cellsz div cvi 1 sub def
/retstr widthlim 1 add string def
/i 0 def
ltx lty translate
w h true [1 0 0 1 0 0] {tgifpatproc} imagemask
ltx neg lty neg translate
end
} def
/pat1 <ffffffffffffffff> def
/pat2 <0000000000000000> def
/pat3 <8000000008000000> def
/pat4 <8800000022000000> def
/pat5 <8800220088002200> def
/pat6 <8822882288228822> def
/pat7 <aa55aa55aa55aa55> def
/pat8 <77dd77dd77dd77dd> def
/pat9 <77ffddff77ffddff> def
/pat10 <77ffffff77ffffff> def
/pat11 <7fffffff7fffffff> def
/pat12 <8040200002040800> def
/pat13 <40a00000040a0000> def
/pat14 <ff888888ff888888> def
/pat15 <ff808080ff080808> def
/pat16 <f87422478f172271> def
/pat17 <038448300c020101> def
/pat18 <081c22c180010204> def
/pat19 <8080413e080814e3> def
/pat20 <8040201008040201> def
/pat21 <8844221188442211> def
/pat22 <77bbddee77bbddee> def
/pat23 <c1e070381c0e0783> def
/pat24 <7fbfdfeff7fbfdfe> def
/pat25 <3e1f8fc7e3f1f87c> def
/pat26 <0102040810204080> def
/pat27 <1122448811224488> def
/pat28 <eeddbb77eeddbb77> def
/pat29 <83070e1c3870e0c1> def
/pat30 <fefdfbf7efdfbf7f> def
/pat31 <7cf8f1e3c78f1f3e> def
/tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def
/tgifrighttext { dup stringwidth pop neg 0 rmoveto } def
/tgifreencsmalldict 12 dict def
/tgifReEncodeSmall
{ tgifreencsmalldict begin
/newcodesandnames exch def
/newfontname exch def
/basefontname exch def
/basefontdict basefontname findfont def
/newfont basefontdict maxlength dict def
basefontdict
{ exch dup /FID ne
{ dup /Encoding eq
{ exch dup length array copy newfont 3 1 roll put }
{ exch newfont 3 1 roll put }
ifelse
}
{ pop pop }
ifelse
}
forall
newfont /FontName newfontname put
newcodesandnames aload pop
newcodesandnames length 2 idiv
{ newfont /Encoding get 3 1 roll put}
repeat
newfontname newfont definefont pop
end
} def
/tgifgray { 8 1 0 72 300 32 div div tgifsetpattern } bind def
/tgifboxdict 6 dict def
/tgifboxstroke
{ tgifboxdict begin
/pat def /w def /y2 exch def /x2 exch def /y1 exch def /x1 exch def
1.415 setmiterlimit
w 1 eq { w setlinewidth } if
pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if
newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
pat pat2 eq { 1 setgray stroke 0 setgray } { stroke } ifelse
pat pat1 ne pat pat2 ne and { grestore } if
w 1 eq { 1 setlinewidth } if
1 setmiterlimit
end
} def
/tgifboxfill
{ tgifboxdict begin
/pat def /y2 exch def /x2 exch def /y1 exch def /x1 exch def
pat pat1 ne pat pat2 ne and { gsave pat tgifgray } if
newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath
pat pat2 eq { 1 setgray fill 0 setgray } { fill } ifelse
pat pat1 ne pat pat2 ne and { grestore } if
end
} def
end
%%PageBoundingBox: 6 681 355 758
tgifdict begin
/tgifsavedpage save def
1 setmiterlimit
1 setlinewidth
0 setgray
72 0 mul 72 11.00 mul translate
72 128 div 100 mul 100 div dup neg scale
gsave
% POLY/OPEN-SPLINE
gsave
newpath
274 102 moveto
274 134 lineto
stroke
grestore
% POLY/OPEN-SPLINE
gsave
newpath
289 122 moveto
0 56 atan dup cos 8 mul 345 exch sub
exch sin 8 mul 122 exch sub lineto
stroke
grestore
gsave
newpath
345 122 8 3 56 0 tgifarrowtip
closepath fill
grestore
% BOX
gsave
1.415 setmiterlimit
newpath
350 100 moveto 414 100 lineto 414 132 lineto 350 132 lineto
closepath stroke
1 setmiterlimit
grestore
% POLY/OPEN-SPLINE
gsave
newpath
382 100 moveto
382 132 lineto
stroke
grestore
% POLY/OPEN-SPLINE
gsave
newpath
397 114 moveto
0 59 atan dup cos 8 mul 456 exch sub
exch sin 8 mul 114 exch sub lineto
stroke
grestore
gsave
newpath
456 114 8 3 59 0 tgifarrowtip
closepath fill
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
430 170 moveto (violet) show
grestore
% POLY/OPEN-SPLINE
gsave
newpath
366 116 moveto
366 165 lineto
0 48 atan dup cos 8 mul 414 exch sub
exch sin 8 mul 165 exch sub lineto
stroke
grestore
gsave
newpath
414 165 8 3 48 0 tgifarrowtip
closepath fill
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
219 78 moveto (flowers) show
grestore
% POLY/OPEN-SPLINE
gsave
newpath
298 73 moveto
325 73 lineto
325 111 lineto
0 18 atan dup cos 8 mul 343 exch sub
exch sin 8 mul 111 exch sub lineto
stroke
grestore
gsave
newpath
343 111 8 3 18 0 tgifarrowtip
closepath fill
grestore
% BOX
gsave
1.415 setmiterlimit
newpath
459 95 moveto 523 95 lineto 523 127 lineto 459 127 lineto
closepath stroke
1 setmiterlimit
grestore
% POLY/OPEN-SPLINE
gsave
newpath
490 95 moveto
490 127 lineto
stroke
grestore
% POLY/OPEN-SPLINE
gsave
newpath
506 112 moveto
0 48 atan dup cos 8 mul 554 exch sub
exch sin 8 mul 112 exch sub lineto
stroke
grestore
gsave
newpath
554 112 8 3 48 0 tgifarrowtip
closepath fill
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
566 118 moveto (nil) show
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
538 151 moveto (buttercup) show
grestore
% POLY/OPEN-SPLINE
gsave
newpath
474 109 moveto
474 146 lineto
0 48 atan dup cos 8 mul 522 exch sub
exch sin 8 mul 146 exch sub lineto
stroke
grestore
gsave
newpath
522 146 8 3 48 0 tgifarrowtip
closepath fill
grestore
% BOX
gsave
1.415 setmiterlimit
newpath
244 102 moveto 308 102 lineto 308 134 lineto 244 134 lineto
closepath stroke
1 setmiterlimit
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
324 189 moveto (rose) show
grestore
% POLY/OPEN-SPLINE
gsave
newpath
260 117 moveto
260 184 lineto
0 48 atan dup cos 8 mul 308 exch sub
exch sin 8 mul 184 exch sub lineto
stroke
grestore
gsave
newpath
308 184 8 3 48 0 tgifarrowtip
closepath fill
grestore
% BOX
gsave
1.415 setmiterlimit
newpath
146 101 moveto 210 101 lineto 210 133 lineto 146 133 lineto
closepath stroke
1 setmiterlimit
grestore
% POLY/OPEN-SPLINE
gsave
newpath
177 101 moveto
177 133 lineto
stroke
grestore
% POLY/OPEN-SPLINE
gsave
newpath
193 118 moveto
0 48 atan dup cos 8 mul 241 exch sub
exch sin 8 mul 118 exch sub lineto
stroke
grestore
gsave
newpath
241 118 8 3 48 0 tgifarrowtip
closepath fill
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
187 178 moveto (lily) show
grestore
% POLY/OPEN-SPLINE
gsave
newpath
163 118 moveto
163 171 lineto
0 18 atan dup cos 8 mul 181 exch sub
exch sin 8 mul 171 exch sub lineto
stroke
grestore
gsave
newpath
181 171 8 3 18 0 tgifarrowtip
closepath fill
grestore
% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
gsave
16 78 moveto (bouquet) show
grestore
% POLY/OPEN-SPLINE
gsave
newpath
95 73 moveto
122 73 lineto
122 111 lineto
0 18 atan dup cos 8 mul 140 exch sub
exch sin 8 mul 111 exch sub lineto
stroke
grestore
gsave
newpath
140 111 8 3 18 0 tgifarrowtip
closepath fill
grestore
grestore
tgifsavedpage restore
end
%MatchingCreationDate: Wed Mar 8 14:25:06 1995