view lispintro/cons-2a.eps @ 42307:922f0ef2951b

(balance-windows): Use new PRESERVE-BEFORE arg to enlarge-window. Use save-selected-window. Don't try to resize windows that end at the bottom "level". Retry changing the sizes until the windows get the desired sizes. Discount the minibuffer when computing total height available.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Dec 2001 10:34:39 +0000
parents a8ee89e61d20
children 09446420ed98
line wrap: on
line source

%!
%%BoundingBox: 15 702 300 767
%%Title: cons-cell-diagram2a
%%CreationDate: Tue Mar 14 15:09:30 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
%

/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: 15 702 300 767
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

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      32 62 moveto (bouquet) show
   grestore

% POLY/OPEN-SPLINE
gsave
   newpath
      64 80 moveto
      64 120 lineto
      0 49 atan dup cos 8 mul 113 exch sub
      exch sin 8 mul 120 exch sub lineto
   stroke
grestore
gsave
   newpath
      113 120 8 3 49 0 tgifarrowtip
   closepath fill
grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      128 110 moveto (car) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      128 142 moveto (rose) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      192 110 moveto (cdr) show
   grestore

% OVAL
gsave
   newpath 207 124 4 4 tgifellipse stroke
grestore

% POLY/OPEN-SPLINE
gsave
   newpath
      217 123 moveto
      0 38 atan dup cos 8 mul 255 exch sub
      exch sin 8 mul 123 exch sub lineto
   stroke
grestore
gsave
   newpath
      255 123 8 3 38 0 tgifarrowtip
   closepath fill
grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      268 111 moveto (car) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      264 143 moveto (violet) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      332 111 moveto (cdr) show
   grestore

% OVAL
gsave
   newpath 347 125 4 4 tgifellipse stroke
grestore

% POLY/OPEN-SPLINE
gsave
   newpath
      357 124 moveto
      0 38 atan dup cos 8 mul 395 exch sub
      exch sin 8 mul 124 exch sub lineto
   stroke
grestore
gsave
   newpath
      395 124 8 3 38 0 tgifarrowtip
   closepath fill
grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      408 112 moveto (car) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      408 136 moveto (butter-) show
      408 153 moveto (cup) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      496 113 moveto (cdr) show
   grestore

% TEXT
0 setgray
/Courier findfont [17 0 0 -17 0 0] makefont setfont
   gsave
      495 137 moveto (nil) show
   grestore

% POLY/OPEN-SPLINE
gsave
   newpath
      178 86 moveto
      178 157 lineto
   stroke
grestore

% POLY/OPEN-SPLINE
gsave
   newpath
      485 84 moveto
      485 157 lineto
   stroke
grestore

% POLY/OPEN-SPLINE
gsave
   newpath
      327 85 moveto
      327 157 lineto
   stroke
grestore

% BOX
gsave
   1.415 setmiterlimit
   newpath
      120 86 moveto 234 86 lineto 234 157 lineto 120 157 lineto
   closepath stroke
   1 setmiterlimit
grestore

% BOX
gsave
   1.415 setmiterlimit
   newpath
      257 85 moveto 371 85 lineto 371 157 lineto 257 157 lineto
   closepath stroke
   1 setmiterlimit
grestore

% BOX
gsave
   1.415 setmiterlimit
   newpath
      397 84 moveto 531 84 lineto 531 157 lineto 397 157 lineto
   closepath stroke
   1 setmiterlimit
grestore

grestore
tgifsavedpage restore
end
%MatchingCreationDate: Tue Mar 14 15:09:30 1995