This is METAFONT, Version 2.71 (C version d) (base=trap 94.5.19) 19 MAY 1994 01:36 ** &trap trap (trap.mf {if} {known(0)} {not(true)} {false} {known("")} {true} /*\`'@#->begingroup.message(SUFFIX1)&str(SUFFIX0)&jobname&char.ASCII'`&s tr(SUFFIX2)!endgroup (SUFFIX0)<-/*\ (SUFFIX1)<-`' (SUFFIX2)<-pass2 {begingroup} {message} `'->begingroup'`endgroup (SUFFIX0)<- (SUFFIX1)<-`' {begingroup} '`->"\*/" {endgroup} {("\*/")&("/*\")} {jobname} {("\*//*\")&("trap")} '`->"\*/" {ASCII("\*/")} {char(92)} {("\*//*\trap")&("\")} {("\*//*\trap\")&("pass2!")} \*//*\trap\pass2! {endgroup} {outer} {let} {delimiters} ! Missing symbolic token inserted. INACCESSIBLE l.21 ...t next=\; delimiters ^~7 ! fi Sorry: You can't redefine a number, string, or expr. I've inserted an inaccessible symbol so that your definition will be completed without mixing me up too badly. ! Extra tokens will be flushed. ! l.21 ... next=\; delimiters ^~7! fi I've just read as much of that statement as I could fathom, so a semicolon should have been next. It's very puzzling... but I'll try to get myself back together, by ignoring everything up to the next `;'. Please insert a semicolon now in front of anything that you don't want me to delete. (See Chapter 27 of The METAFONTbook for an example.) ! Forbidden token found while scanning to the end of the statement. ; \ l.22 next\ ; % the second pass will now compute silently; the ... A previous error seems to have propagated, causing me to read past where you wanted me to stop. I'll try to recover; but if the error is serious, you'd better type `E' or `X' now and fix your file. {\} {batchmode} ! An expression can't begin with `endgroup'. 0 endgroup l.23 batchmode; ^~7,endgroup pausing:=1; exitif p exitif bool... I'm afraid I need some sort of value in order to continue, so I've tentatively inserted `0'. You may want to delete this zero and insert something else; see Chapter 27 of The METAFONTbook for an example. ! Missing ` INACCESSIBLE' has been inserted. endgroup l.23 batchmode; ^~7,endgroup pausing:=1; exitif p exitif bool... I found no right delimiter to match a left one. So I've put one in, behind the scenes; this may fix the problem. ! Extra `endgroup'. endgroup l.23 batchmode; ^~7,endgroup pausing:=1; exitif p exitif bool... I'm not currently working on a `begingroup', so I had better not try to end anything. {pausing:=1} {exitif} {exitif} {pencircle} {endfor} ! Extra `endfor'. l.23 ...ean pen pencircle endfor I'm not currently working on a for loop, so I had better not try to end anything. {scantokens} {begingroup} {message} {char(0)} {("^^@")&("watch this")} ^^@watch this {-(1)} {char(-1)} {("pair p[],';")&("^^ff")} {endgroup} {pen(future pen)} {boolean(true)} {true} ! No loop is in progress. pair pair p[],';^^ff path l.25 path p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(... Why say `exitif' when there's nothing to exit from? >> p ! Undefined condition will be treated as `false'. pair pair p[],';^^ff path l.25 path p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(... The expression shown above should have had a definite true-or-false value. I'm changing it to `false'. {false} ! Missing `;' has been inserted. pair pair p[],';^^ff path l.25 path p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(... After `exitif ' I expect to see a semicolon. I shall pretend that one was there. {pair} ! Text line contains an invalid character. pair p[],';^^ff path l.25 path p[][]p,w,qw; qw=(1,-2)..(2,-1)..(2.5,0.5)..(1,2)..(... A funny symbol that I can't read has just been input. Continue, and I'll forget that it ever happened. {path} {-(2)} {-(1)} {turningnumber((xpart ',ypart '))} Path at line 25, before choices: (1,-2){curl 1} ..(2,-1) ..(2.5,0.5) ..(1,2) ..{curl 1}(0,2.5) Path at line 25, after choices: (1,-2)..controls (1.37755,-1.71404) and (1.71404,-1.37755) ..(2,-1)..controls (2.33353,-0.55965) and (2.59729,-0.04124) ..(2.5,0.5)..controls (2.36812,1.23369) and (1.6712,1.65662) ..(1,2)..controls (0.66821,2.16974) and (0.33485,2.33641) ..(0,2.5) {(unknown path qw)=(path)} {numeric} ! Enormous number has been reduced. l.26 ...[$] ]]=10000000000000000 ; "this string constant is in... I can't handle numbers bigger than about 4095.99998; so I've changed your constant to that maximum amount. {(p[[ [-1] ]])=(4095.99998)} ## p[[ [-1] ]]=4095.99998 ! Incomplete string token has been flushed. l.26 ...g constant is incomplete Strings should finish on the same line as they began. I've deleted the partial string; you might want to insert another by typing, e.g., `I"new string"'. {string} ! Declared variable conflicts with previous vardef. , l.27 string foo[]p, p~if true:[]; You can't use, e.g., `numeric foo[]' after `vardef foo'. Proceed, and I'll ignore the illegal redeclaration. {if} {true} {true} {boolean} {fi} {showvariable} boolean.boolean=unknown boolean ! OK. l.28 ...n; showvariable boolean; def\\= =end enddef; {def} {picture} {pen} ! Illegal suffix of declared variable will be flushed. [ "a" l.30 pen p~[]~,q["a" ,qq; p~1~=q=pencircle scaled mexp(-3016.5... Variables in declarations must consist entirely of names and collective subscripts, e.g., `x[]a'. Are you trying to use a reserved word in a variable name? I'm going to discard the junk I found here, up to the next comma or the end of the declaration. {pencircle} {-(3016.57654)} {mexp(-3016.57654)} {(future pen)scaled(0)} Pen polygon at line 30 (newly created): (0.5,0) .. (0,0.5) .. (-0.5,0) .. (0,-0.5) .. cycle {(unknown pen q)=(pen)} {(unknown pen p~1~)=(pen)} {transform} ! Illegal suffix of declared variable will be flushed. 0 l.31 transform p,pp0 ; if p=p:qq=makepen((1,0)..cycle) xscaled... Variables in declarations must consist entirely of names and collective subscripts, e.g., `x[]a'. Explicit subscripts like `x15a' aren't permitted. I'm going to discard the junk I found here, up to the next comma or the end of the declaration. {if} {((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p))=((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p))} {true} Path at line 31, before choices: (1,0) ..cycle Path at line 31, after choices: (1,0)..controls (1,0) and (1,0) ..cycle {makepen(path)} {hex("1000")} ! Number too large (4096). ; l.31 ...cle) xscaled hex "1000"; fi I have trouble with numbers greater than 4095; watch out. {(future pen)xscaled(4096)} ! Pen too large. ; l.31 ...cle) xscaled hex "1000"; fi The cycle you specified has a coordinate of 4095.5 or more. So I've replaced it by the trivial path `(0,0)..cycle'. Pen polygon at line 31 (newly created): (0,0) .. cycle {(unknown pen qq)=(pen)} {fi} Path at line 32, before choices: (0,0) ..(1,0) ..(0,1) ..(0,0) ..(1,0) ..(0,1) ..cycle Path at line 32, after choices: (0,0)..controls (0.29056,-0.29056) and (0.75859,-0.30772) ..(1,0)..controls (1.51964,0.66237) and (0.66237,1.51964) ..(0,1)..controls (-0.30772,0.75859) and (-0.29056,0.29056) ..(0,0)..controls (0.29056,-0.29056) and (0.75859,-0.30772) ..(1,0)..controls (1.51964,0.66237) and (0.66237,1.51964) ..(0,1)..controls (-0.30772,0.75859) and (-0.29056,0.29056) ..cycle {makepen(path)} ! Pen cycle must be convex. ; l.32 ...)..(1,0)..(0,1)..cycle); The cycle you specified either has consecutive equal points or turns right or turns through more than 360 degrees. So I've replaced it by the trivial path `(0,0)..cycle'. Pen polygon at line 32 (newly created): (0,0) .. cycle {qq:=pen} {vardef} ! Missing parameter type; `expr' will be assumed. ) l.33 ...ext suffix a,b endtext() )suffix@=show #@; p.a.b() end... You should've had `expr' or `suffix' or `text' here. {expandafter} {\} {let} \\->=end {outer} {pencircle} {(future pen)scaled(4.5)} {(future pen)yscaled(2)} Pen polygon at line 34 (newly created): (0.5,-4.5) .. (1,-4) .. (2,-2.5) .. (2.5,0) .. (2,2.5) .. (1,4) .. (0.5,4.5) .. (-0.5,4.5) .. (-1,4) .. (-2,2.5) .. (-2.5,0) .. (-2,-2.5) .. (-1,-4) .. (-0.5,-4.5) .. cycle {qq:=pen} {((6,12))-((xpart p7,ypart p7))} {((0,1))transformed((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p ))} {(x)-(x)} {(2)/(0)} >> 2 ! Division by zero. , l.35 ...)transformed p=(2/(x-x), 3/0)transformed p; You're trying to divide the quantity shown above the error message by zero. I'm going to divide it by one instead. ! Division by zero. l.35 ...ansformed p=(2/(x-x),3/0 )transformed p; I'll pretend that you meant to divide by 1. {((2,3))transformed((xpart p,ypart p,xxpart p,xypart p,yxpart p,yypart p ))} {((linearform,linearform))=((linearform,linearform))} ## yxpart p=-yypart p ## xxpart p=-xypart p {((-xpart p7+6,-ypart p7+12))=((linearform,linearform))} ## ypart p7=-ypart p-yypart p+12 ## xpart p7=-xpart p-xypart p+6 {\} {if} {string(unknown string p~[-1])} {true} {(p0.1 0.2)-(p0.1 0.2)} ! The token `endtext' is no longer a right delimiter. l.36 ...1.2-p.1.199999,1 endtext transformed p; Strange: This token has lost its former meaning! I'll read it as a right delimiter this time; but watch out, I'll probably miss it later. {((0,1))transformed((xpart p,ypart p,-xypart p,xypart p,-yypart p,yypart p))} {((linearform,linearform))=((linearform,linearform))} ## ypart p=-yypart p+6 #### ypart p7=6 ## xpart p=-xypart p+3 #### xpart p7=3 {(unknown path p1 2p)=((3,6))} {showstopping:=0} {showvariable} p=(-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p) p[]=pair p[][]=numeric p[][]p=unknown path p[][]p~=macro:(SUFFIX2)(SUFFIX3)(EXPR4)->begingroup ETC. p[]~=unknown boolean p~=path p~[]=unknown string p~[]~=unknown pen p~[]~[][]=unknown picture p~[-1]=unknown string p~[-1] p~1~=pen p[[ [] ]]=numeric p[[ [-1] ]]=4095.99998 p0.1 0.2=p0.1 0.2 p1 2p=path p7=(3,6) {((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))=((-xy part p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p))} {let} {let} {xxpart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p)) } {(-xypart p)+(0.002)} {yxpart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p)) } {((xpart p2,ypart p2))-((xpart p1,ypart p1))} {(1)*((linearform,linearform))} {((xpart p1,ypart p1))+((linearform,linearform))} {(y)+(0.00002)} {yypart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p)) } {xypart((-xypart p+3,-yypart p+6,-xypart p,xypart p,-yypart p,yypart p)) } {((5,y))=((yypart p,xypart p))} ## y=xypart p ## yypart p=5 #### ypart p=1 #### yxpart p=-5 {((5,xypart p+0.00002))=((5,xypart p))} {((xpart p2,ypart p2))=((5,xypart p))} ## ypart p2=xypart p ## xpart p2=5 {((-xypart p+0.002,-5))=((5,xypart p))} ## xypart p=-5 #### ypart p2=-5 #### y=-5 #### xpart p=8 #### xxpart p=5 ! Inconsistent equation (off by -0.002). ; l.38 ...,y)=(yypart p,xypart p); The equation I just read contradicts what was said before. But don't worry; continue and I'll just ignore it. Path at line 39, before choices: (0,0)..controls (15,4) and (-15,-12) ..(4,0) ..cycle Path at line 39, after choices: (0,0)..controls (15,4) and (-15,-12) ..(4,0)..controls (17.52783,8.54388) and (-15.45978,-4.12262) ..cycle {reverse(path)} {(path)transformed((8,1,5,-5,-5,5))} {(path)=(unknown path p2 3p)} p1 2p~(SUFFIX2)(SUFFIX3)(EXPR4)->begingroup.show(SUFFIX0);p(SUFF IX2)(SUFFIX3)((EXPR4)endgroup (SUFFIX0)<-p1 2p (SUFFIX1)<-~ (SUFFIX2)<- (SUFFIX3)<-2 3p~ ! A primary expression can't begin with `right delimiter that matches (' . 0 ) l.40 ...000000001]2p~(,[2]3p~,-) =p~1~2[pausing]; I'm afraid I need some sort of value in order to continue, so I've tentatively inserted `0'. You may want to delete this zero and insert something else; see Chapter 27 of The METAFONTbook for an example. {-(0)} (EXPR4)<-0 (SUFFIX5)<- {begingroup} {show} >> Path at line 40: (3,6) p2 3p~(SUFFIX2)(SUFFIX3)(EXPR4)->begingroup.show(SUFFIX0);p(SUFF IX2)(SUFFIX3)((EXPR4)endgroup (SUFFIX0)<-p2 3p (SUFFIX1)<-~ ! Missing `,' has been inserted. (0) p1 2p~->...IX2)(SUFFIX3)((EXPR4) endgroup = l.40 ...00000001]2p~(,[2]3p~,-)= p~1~2[pausing]; I've finished reading a macro argument and am about to read another; the arguments weren't delimited correctly. You might want to delete some tokens before continuing. (SUFFIX2)<- ! Missing `,' has been inserted. (0) p1 2p~->...IX2)(SUFFIX3)((EXPR4) endgroup = l.40 ...00000001]2p~(,[2]3p~,-)= p~1~2[pausing]; I've finished reading a macro argument and am about to read another; the arguments weren't delimited correctly. You might want to delete some tokens before continuing. (SUFFIX3)<- ! Missing `)' has been inserted. endgroup = l.40 ...00000001]2p~(,[2]3p~,-)= p~1~2[pausing]; I've gotten to the end of the macro parameter list. You might want to delete some tokens before continuing. (EXPR4)<-0 (SUFFIX5)<- {begingroup} {show} >> Path at line 40: (8,1)..controls (-48.68579,57.68579) and (52.91974,-43.91974) ..(28,-19)..controls (-7,16) and (63,-54) ..cycle >> (8,1,5,-5,-5,5) ! Isolated expression. ( p2 3p~->...;p(SUFFIX2)(SUFFIX3)( (EXPR4)endgroup endgroup = l.40 ...00000001]2p~(,[2]3p~,-)= p~1~2[pausing]; I couldn't find an `=' or `:=' after the expression that is shown above this error message, so I guess I'll just ignore it and carry on. ! Extra tokens will be flushed. ( p2 3p~->...;p(SUFFIX2)(SUFFIX3)( (EXPR4)endgroup endgroup = l.40 ...00000001]2p~(,[2]3p~,-)= p~1~2[pausing]; I've just read as much of that statement as I could fathom, so a semicolon should have been next. It's very puzzling... but I'll try to get myself back together, by ignoring everything up to the next `;'. Please insert a semicolon now in front of anything that you don't want me to delete. (See Chapter 27 of The METAFONTbook for an example.) {endgroup} {endgroup} {(vacuous)=(unknown picture p~1~2 1)} >> vacuous >> unknown picture p~1~2 1 ! Equation cannot be performed (vacuous=unknown picture). ; l.40 ...2]3p~,-)=p~1~2[pausing]; I'm sorry, but I don't know how to make such things equal. (See the two expressions just above the error message.) {vardef} Runaway definition? if.p(SUFFIX1)(SUFFIX1)=(SUFFIX1)(SUFFIX1)p.fi ! Forbidden token found while scanning the definition of p~[]. enddef ; l.41 ...iary t:=if p@ @=@ @p fi; vardef p[][]p~[]=BAD; inner ;; I suspect you have forgotten an `enddef', causing me to read past where you wanted me to stop. I'll try to recover; but if the error is serious, you'd better type `E' or `X' now and fix your file. {vardef} ! This variable already starts with a macro. l.41 ...@p fi; vardef p[][]p~[]= BAD; inner ;; After `vardef a' you can't say `vardef a.b'. So I'll have to discard this definition. Runaway definition? BAD ! Forbidden token found while scanning the definition of a bad variable. enddef ; l.41 ...i; vardef p[][]p~[]=BAD; inner ;; I suspect you have forgotten an `enddef', causing me to read past where you wanted me to stop. I'll try to recover; but if the error is serious, you'd better type `E' or `X' now and fix your file. {inner} {show} {-(2)} p~[-2]@#->begingroup.if.p(SUFFIX1)(SUFFIX1)=(SUFFIX1)(SUFFIX1) p.fi.endgroup (SUFFIX0)<-p~ (SUFFIX1)<-[-2] (SUFFIX2)<-~ ! A tertiary expression can't begin with `['. 0 [ (3000) , l.42 show p~[-2]~[3000, x]++4000>path p3; showvariable p,P; I'm afraid I need some sort of value in order to continue, so I've tentatively inserted `0'. You may want to delete this zero and insert something else; see Chapter 27 of The METAFONTbook for an example. {(x)-(3000)} {(0)*(x-3000)} {(3000)+(0)} {(3000)++(4000)} (EXPR3)<-4999.99998 {begingroup} {if} {(p[-2][-2])=(-2)} >> p[-2][-2]+2 ! Unknown relation will be considered false. [-2] p~[-2]->...1)=(SUFFIX1)(SUFFIX1) p.fi.endgroup > l.42 show p~[-2]~[3000,x]++4000> path p3; showvariable p,P; Oh dear. I can't decide if the expression above is positive, negative, or zero. So this comparison test won't be `true'. {false} ! Missing `:' has been inserted. [-2] p~[-2]->...1)=(SUFFIX1)(SUFFIX1) p.fi.endgroup > l.42 show p~[-2]~[3000,x]++4000> path p3; showvariable p,P; There should've been a colon after the condition. I shall pretend that one was there. {endgroup} {path((xpart p3,ypart p3))} {(vacuous)>(false)} >> vacuous >> false ! Not implemented: (vacuous)>(boolean). ; l.42 ...~[3000,x]++4000>path p3; showvariable p,P; I'm afraid I don't know how to apply that operation to that combination of types. Continue, and I'll return the second argument (see above) as the result of the operation. >> false {showvariable} p=(8,1,5,-5,-5,5) p[]=pair p[][]=numeric p[][]p=unknown path p[][]p~=macro:(SUFFIX2)(SUFFIX3)(EXPR4)->begingroup ETC. p[]~=unknown boolean p~=path p~[]@#=macro:->begingroup.if.p(SUFFIX1)(SUFFIX1) ETC. p[[ [] ]]=numeric p[[ [-1] ]]=4095.99998 p[-2][-2]=p[-2][-2] p0.1 0.2=p0.1 0.2 p1=(xpart p1,ypart p1) p1 2p=path p2=(5,-5) p2 3p=path p3=(xpart p3,ypart p3) p7=(3,6) > P=tag {numeric} {(2)*(alpha)} {(p3~)=(2alpha)} ## alpha=0.5p3~ {(1)/(-1)} {(3)*(beta)} {(p[-1]~)=(3beta)} ## beta=0.33333p[-1]~ {begingroup} {save} {showvariable} > p=tag {(3)*(0.33333(SAVED)p[-1]~)} {((SAVED)p[-1]~)=(1)} ## (SAVED)p[-1]~=1 #### beta=0.33333 {restoring p} {endgroup} {showvariable} p=(8,1,5,-5,-5,5) p[]=pair p[][]=numeric p[][]p=unknown path p[][]p~=macro:(SUFFIX2)(SUFFIX3)(EXPR4)->begingroup ETC. p[]~=numeric p~=path p~[]@#=macro:->begingroup.if.p(SUFFIX1)(SUFFIX1) ETC. p[[ [] ]]=numeric p[[ [-1] ]]=4095.99998 p[-2][-2]=p[-2][-2] p[-1]~=1 p0.1 0.2=p0.1 0.2 p1=(xpart p1,ypart p1) p1 2p=path p2=(5,-5) p2 3p=path p3=(xpart p3,ypart p3) p3~=p3~ p7=(3,6) {def} {def} ! Missing `=' has been inserted. false l.45 ...enddef;def!primary!false ):!fi enddef; The next thing in this `def' should have been `=', because I've already looked at the definition heading. But don't worry; I'll pretend that an equals sign was present. Everything from here to `enddef' will be the replacement text of this macro. {def} {(path)scaled(-1)} Path at line 46, before choices: (1,-2)..controls (1.37755,-1.71404) and (1.71404,-1.37755) ..(2,-1)..controls (2.33353,-0.55965) and (2.59729,-0.04124) ..(2.5,0.5)..controls (2.36812,1.23369) and (1.6712,1.65662) ..(1,2)..controls (0.66821,2.16974) and (0.33485,2.33641) ..(0,2.5) ..(-1,2)..controls (-1.37755,1.71404) and (-1.71404,1.37755) ..(-2,1)..controls (-2.33353,0.55965) and (-2.59729,0.04124) ..(-2.5,-0.5)..controls (-2.36812,-1.23369) and (-1.6712,-1.65662) ..(-1,-2)..controls (-0.66821,-2.16974) and (-0.33485,-2.33641) ..(0,-2.5) ..cycle Path at line 46, after choices: (1,-2)..controls (1.37755,-1.71404) and (1.71404,-1.37755) ..(2,-1)..controls (2.33353,-0.55965) and (2.59729,-0.04124) ..(2.5,0.5)..controls (2.36812,1.23369) and (1.6712,1.65662) ..(1,2)..controls (0.66821,2.16974) and (0.33485,2.33641) ..(0,2.5)..controls (-0.37186,2.68167) and (-0.668,2.25146) ..(-1,2)..controls (-1.37755,1.71404) and (-1.71404,1.37755) ..(-2,1)..controls (-2.33353,0.55965) and (-2.59729,0.04124) ..(-2.5,-0.5)..controls (-2.36812,-1.23369) and (-1.6712,-1.65662) ..(-1,-2)..controls (-0.66821,-2.16974) and (-0.33485,-2.33641) ..(0,-2.5)..controls (0.37186,-2.68167) and (0.668,-2.25146) ..cycle {makepen(path)} Pen polygon at line 46 (newly created): (1,-2) .. (2,-1) .. (2.5,0.5) .. (1,2) .. (0,2.5) .. (-1,2) .. (-2,1) .. (-2.5,-0.5) .. (-1,-2) .. (0,-2.5) .. cycle {qq:=pen} {primarydef} {secondarydef} //-> //-> {pencircle} {length(path)} {(future pen)slanted(1)} {((3,6))-((5,-5))} _aa__->if(true {(0.1)*(15)} {odd(1.50009)} {not(false)} {known((8,1,5,-5,-5,5))} {(true)and(true)} (EXPR0)<-true {if} {true} !->false):(EXPR0)fi (EXPR0)<-(5,-5) {false} {(true)or(false)} {true} {fi} {-((5,-5))} {-((5,-5))} {+(1)} {-(1)} >> -1 ! Improper curl has been replaced by 1. ) l.51 {curl- +1) ..tension atleast1..cycle sqrt2++sqrt2***[[]]; A curl must be a known, nonnegative number. ! Missing `}' has been inserted. ) l.51 {curl- +1) ..tension atleast1..cycle sqrt2++sqrt2***[[]]; I've scanned a direction spec for part of a path, so a right brace should have come next. I shall pretend that one was there. Path at line 51, before choices: (-5,5) Path at line 51, after choices: (-5,5) Path at line 51, before choices: (3,6)..controls (5,-5) and (-5,5) ..(-5,5)..tension atleast1 ..{2896.30943,-2896.30934}cycle Path at line 51, after choices: (3,6)..controls (5,-5) and (-5,5) ..(-5,5)..controls (-3.29726,7.86205) and (0.64516,8.35484) ..cycle ! Missing `)' has been inserted. sqrt l.51 ...ion atleast1..cycle sqrt 2++sqrt2***[[]]; I found no right delimiter to match a left one. So I've put one in, behind the scenes; this may fix the problem. {((-2,11))subpath(path)} {reverse(path)} {makepen(path)} **->[[show(EXPR0)*(EXPR1)]] (EXPR0)<-future pen (EXPR1)<-future pen {begingroup} {show} {(future pen)*(future pen)} >> future pen >> future pen ! Not implemented: (future pen)*(future pen). ]] sqrt l.51 ...ion atleast1..cycle sqrt 2++sqrt2***[[]]; I'm afraid I don't know how to apply that operation to that combination of types. Continue, and I'll return the second argument (see above) as the result of the operation. ! Pen path must be a cycle. ]] sqrt l.51 ...ion atleast1..cycle sqrt 2++sqrt2***[[]]; I can't make a pen from the given path. So I've replaced it by the trivial path `(0,0)..cycle'. >> Pen polygon at line 51: (0,0) .. cycle {endgroup} (EXPR0)<-vacuous {sqrt(2)} {sqrt(2)} {(1.41422)++(1.41422)} {begingroup} {endgroup} ***->expandafter(EXPR1)scantokens"**oct"(EXPR0) (EXPR0)<-2 (EXPR1)<-vacuous {expandafter} {scantokens} {oct(2)} >> 2 ! Not implemented: oct(known numeric). ; l.51 ...cle sqrt2++sqrt2***[[]]; I'm afraid I don't know how to apply that operation to that particular type. Continue, and I'll simply return the argument (shown above) as the result of the operation. **->[[show(EXPR0)*(EXPR1)]] (EXPR0)<-vacuous (EXPR1)<-2 {begingroup} {show} {(vacuous)*(2)} >> vacuous >> 2 ! Not implemented: (vacuous)*(known numeric). ]] ; l.51 ...cle sqrt2++sqrt2***[[]]; I'm afraid I don't know how to apply that operation to that combination of types. Continue, and I'll return the second argument (see above) as the result of the operation. >> 2 {endgroup} (EXPR0)<-vacuous {begingroup} {interim} {-(20.5)} {charcode:=-20.5} {proofing:=-20.5} {-(2048)} {chardp:=-2048} {shipout} {nullpicture} ! Enormous chardp has been reduced. ]] l.52 ...48;shipout nullpicture]] ; Font metric dimensions must be less than 2048pt. {restoring proofing=0} {endgroup} {if} {-(275.50002)} {charexists(-275.50002)} {known(unknown path p0 0p)} {(true)>(false)} {known(path)} {(true)=(true)} {true} {randomseed} ! Missing `:=' has been inserted. charcode l.53 ... p~: randomseed charcode ; fi Always say `randomseed:='. {randomseed:=-20.5} {fi} {randomseed} >> "goof" ! Unknown value will be ignored. ; l.54 randomseed:="goof"; a[($,18++1+-+18),(2,3)]=b[(3,2),(1,$); Your expression was too random for me to handle, so I won't change the random seed just now. {(18)++(1)} {(18.02776)+-+(18)} {((2,3))-((-1,1))} {(a)*((3,2))} {((-1,1))+((3a,2a))} ! Missing `]' has been inserted. ; l.54 ...8),(2,3)]=b[(3,2),(1,$); I've scanned an expression of the form `a[b,c', so a right bracket should have come next. I shall pretend that one was there. {((1,-1))-((3,2))} {(b)*((-2,-3))} {((3,2))+((-2b,-3b))} {((3a-1,2a+1))=((-2b+3,-3b+2))} ## b=-0.66667a+0.33333 ## a=2 #### b=-1 {show} {(^)+(1)} {(~)+(2)} {-(1)} {((^+1,~+2))slanted(-1)} {-(2)} {((linearform,~+2))yscaled(-2)} {-((3,4))} {((linearform,-2~-4))zscaled((-3,-4))} >> (-5~-3^-13,10~-4^+16) {((xpart pp,ypart pp,xxpart pp,xypart pp,yxpart pp,yypart pp))xscaled(9) } {((8,1,5,-5,-5,5))transformed((9xpart pp,ypart pp,9xxpart pp,9xypart pp, yxpart pp,yypart pp))} >> (9xpart pp+72xxpart pp+9xypart pp,ypart pp+8yxpart pp+yypart pp,45xxp art pp-45xypart pp,-45xxpart pp+45xypart pp,5yxpart pp-5yypart pp,-5yxpa rt pp+5yypart pp) {((xpart pp,ypart pp,xxpart pp,xypart pp,yxpart pp,yypart pp))shifted((1 ,2))} {((8,1,5,-5,-5,5))transformed((8,1,5,-5,-5,5))} {((xpart pp+1,ypart pp+2,xxpart pp,xypart pp,yxpart pp,yypart pp))transf ormed((43,-34,50,-50,-50,50))} >> (50xpart pp-50ypart pp-7,-50xpart pp+50ypart pp+16,50xxpart pp-50yxpa rt pp,50xypart pp-50yypart pp,-50xxpart pp+50yxpart pp,-50xypart pp+50yy part pp) {(2)-(1)} {(_0)*(1)} {(1)+(_0)} {-(_0+1)} >> -_0-1 {show} {normaldeviate} {-(-2048)} {uniformdeviate(2048)} {angle((-0.41438,761.67789))} {cosd(90.03117)} {(200)*(-0.00055)} {mexp(-0.10986)} {sqrt(0.99957)} {mlog(0.99979)} {sind(-0.05469)} {floor(-0.00096)} >> -1 {string} {(unknown string s2)=(unknown string s4)} {(unknown string s1)=(unknown string s2)} {(unknown string s3)=(unknown string s5)} {(unknown string s2)=(unknown string s4)} ! Redundant equation. ; l.58 ... s1=s2=s4; s3=s5; s1=s2; if s1<=s4<>(s1<>s3):show[[ch... I already knew that this equation was true. But perhaps no harm has been done; let's continue. {if} {(unknown string s2)<=(unknown string s1)} {(unknown string s2)<>(unknown string s5)} >> unknown string s2 >> unknown string s5 ! Unknown relation will be considered false. ) l.58 ...=s2; if s1<=s4<>(s1<>s3) :show[[char34=s2:=s3]]fi; The quantities shown above have not been equated. {(true)<>(false)} {true} {show} {begingroup} {char(34)} {s2:=unknown string s5} {(""")=(unknown string s2)} {endgroup} {fi} >> vacuous {(0.1)point(path)} {begingroup} {pencircle} Pen polygon at line 59 (newly created): (0.5,0) .. (0,0.5) .. (-0.5,0) .. (0,-0.5) .. cycle {endgroup} {((3.24413,0.64801))penoffset(pen)} {((0,-0.5))rotated(540)} {((0,0.5))/(0.33333)} {-(1.5)} ! Paths don't touch; `&' will be changed to `..'. ) l.60 ...tcontrol-1.5of(p~&cycle) -precontrol1/2of p~(p~)=s1:=s... When you join paths `p&q', the ending point of p must be exactly equal to the starting point of q. So I'm going to pretend that you said `p..q' instead. Path at line 60, before choices: (0,0)..controls (15,4) and (-15,-12) ..(4,0) ..cycle Path at line 60, after choices: (0,0)..controls (15,4) and (-15,-12) ..(4,0)..controls (17.52783,8.54388) and (-15.45978,-4.12262) ..cycle {(-1.5)postcontrol(path)} {(0.5)precontrol(path)} {((-2.75,-5))-((3.75,-1))} ! Missing `of' has been inserted for directiontime. ( l.60 ...cle)-precontrol1/2of p~( p~)=s1:=s4:=s4; I've got the first argument; will look now for the other. {((-6.5,-4))directiontime(path)} {decimal(0.5)} {((0,1.50003))substring("0.5")} {s4:=unknown string s1} {s1:=unknown string s4} {("0.")=(unknown string s1)} {path} {length(" ")} ! Missing `,' has been inserted. } l.61 ...p~[]; p~1=p2{length" "} &cycle; p~1=p2=p~0; p2..contr... I've got the x coordinate of a path direction; will look for the y coordinate next. ! An expression can't begin with `}'. 0 } l.61 ...p~[]; p~1=p2{length" "} &cycle; p~1=p2=p~0; p2..contr... I'm afraid I need some sort of value in order to continue, so I've tentatively inserted `0'. You may want to delete this zero and insert something else; see Chapter 27 of The METAFONTbook for an example. Path at line 61, before choices: (5,-5){4096,0} ..{4096,0}cycle Path at line 61, after choices: (5,-5)..controls (5,-5) and (5,-5) ..cycle {(unknown path p~1)=(path)} {((5,-5))=(unknown path p~0)} {(path)=(path)} ! Redundant or inconsistent equation. ; l.61 ..." "}&cycle; p~1=p2=p~0; p2..controls-p2..cycle=p~2;(p7 An equation between already-known quantities can't help. But don't worry; continue and I'll just ignore it. {-((5,-5))} Path at line 61, before choices: (5,-5)..controls (-5,5) and (-5,5) ..cycle Path at line 61, after choices: (5,-5)..controls (-5,5) and (-5,5) ..cycle {(path)=(unknown path p~2)} {length(path)} Path at line 62, before choices: (3,6)..tension 1.2 ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5) ..(5,-5)..controls (-5,5) and (-5,5) ..(5,-5){0,4096}..tension 1 and atleast1 ..cycle Path at line 62, after choices: (3,6)..controls (-3.01212,4.82085) and (-1.0424,-6.01257) ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5)..controls (-5,5) and (-5,5) ..(5,-5)..controls (5,0.02791) and (4.99951,6.39217) ..cycle >> x ! Improper tension has been set to 1. .. l.63 x.. {curl1}-p7{curl hex "IsBad"}..tension.75and.74999..p... The expression above should have been a number >=3/4. {-((3,6))} {hex("IsBad")} >> "IsBad" ! String contains illegal digits. } l.63 ...l1}-p7{curl hex "IsBad"} ..tension.75and.74999..p2{0,1... I zeroed out characters that weren't hex digits. >> 0.74998 ! Improper tension has been set to 1. .. l.63 ...}..tension.75and.74999.. p2{0,1}&p2{_,'}..cycle:=p The expression above should have been a number >=3/4. >> _ ! Undefined x coordinate has been replaced by 0. , l.63 ...and.74999..p2{0,1}&p2{_, '}..cycle:=p I need a `known' x value for this part of the path. The value I found (see above) was no good; so I'll try to keep going by using zero instead. (Chapter 27 of The METAFONTbook explains that you might want to type `I ???' now.) >> (xpart ',ypart ') ! Undefined y coordinate has been replaced by 0. } l.63 ...d.74999..p2{0,1}&p2{_,'} ..cycle:=p I need a `known' y value for this part of the path. The value I found (see above) was no good; so I'll try to keep going by using zero instead. (Chapter 27 of The METAFONTbook explains that you might want to type `I ???' now.) Path at line 63, before choices: (3,6)..controls (-3.01212,4.82085) and (-1.0424,-6.01257) ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5)..controls (-5,5) and (-5,5) ..(5,-5)..controls (5,0.02791) and (4.99951,6.39217) ..(3,6) ..{curl 1}(-3,-6){curl 2989}..tension 0.75 and 1 ..{0,4096}(5,-5){curl 1} ..cycle Path at line 63, after choices: (3,6)..controls (-3.01212,4.82085) and (-1.0424,-6.01257) ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5)..controls (5,-5) and (5,-5) ..(5,-5)..controls (-5,5) and (-5,5) ..(5,-5)..controls (5,0.02791) and (4.99951,6.39217) ..(3,6)..controls (-2.44821,4.93144) and (-5.41408,-1.00029) ..(-3,-6)..controls (-3.70045,-12.19485) and (5,-11.61679) ..(5,-5)..controls (12.45406,-3.75087) and (10.41669,7.45464) ..cycle >> path ! Improper `:=' will be changed to `='. l.63 ...p2{0,1}&p2{_,'}..cycle:= p I didn't find a variable name at the left of the `:=', so I'm going to pretend that you said `=' instead. {(path)=(unknown path p~4)} {-(9)} {((3.5001,7.00002))subpath(path)} {((-9,9))subpath(path)} {(path)=(unknown path p~6)} {show} >> Path at line 65: (-2.5,2.5)..controls (-2.49893,2.49893) and (0.00107,-0.00107) ..(5,-5)..controls (5,0.02791) and (4.99951,6.39217) ..(3,6)..controls (-2.44821,4.93144) and (-5.41408,-1.00029) ..(-3,-6)..controls (-3.70045,-12.19485) and (5,-11.61679) ..(5,-5)..controls (5.0001,-4.99998) and (5.00021,-4.99997) ..(5.00032,-4.99995) {((1,2))directiontime(path)} >> 1 {-(1.00002)} {((1,-1.00002))directiontime(path)} >> 3.24937 Path at line 66, before choices: (0,0)..controls (1,1) and (0,1) ..(1,0) Path at line 66, after choices: (0,0)..controls (1,1) and (0,1) ..(1,0) {(unknown path p~3)=(path)} {show} Path at line 66, before choices: (5,-5){-2896.30943,-2896.30934} ..{1831.78674,3663.57385}cycle Path at line 66, after choices: (5,-5)..controls (5,-5) and (5,-5) ..cycle >> Path at line 66: (5,-5)..controls (5,-5) and (5,-5) ..cycle {((0.31416,1))subpath(path)} {((1,1))directiontime(path)} {(1)-(0.31416)} {(0.27097)*(0.68584)} {(0.31416)+(0.18584)} >> 0.5 {((0,0.25))subpath(path)} {((0.25,1))subpath(path)} Path at line 68, before choices: (0,0)..controls (0.25,0.25) and (0.375,0.4375) ..(0.4375,0.5625)..controls (0.625,0.9375) and (0.25,0.75) ..(1,0) Path at line 68, after choices: (0,0)..controls (0.25,0.25) and (0.375,0.4375) ..(0.4375,0.5625)..controls (0.625,0.9375) and (0.25,0.75) ..(1,0) ! Missing `endtext' has been inserted. ; l.68 ...~3)shifted begintext1,0; I found no right delimiter to match a left one. So I've put one in, behind the scenes; this may fix the problem. {(path)shifted((1,0))} {(unknown path p~5)=(path)} {(2/3)*((xpart ',ypart '))} {((0.66667xpart ',0.66667ypart '))zscaled((xpart ',ypart '))} >> (0,0,xpart ',-ypart ',ypart ',xpart ') ! Transform components aren't all known. { l.69 p~3:=2/3'zscaled'{ p~3}..controls(2,2/3(3))and penoffset(... I'm unable to apply a partially specified transformation except to a fully known pair or transform. Proceed, and I'll omit the transformation. >> 0.66667xpart ' ! Undefined x coordinate has been replaced by 0. { l.69 p~3:=2/3'zscaled'{ p~3}..controls(2,2/3(3))and penoffset(... I need a `known' x value for this part of the path. The value I found (see above) was no good; so I'll try to keep going by using zero instead. (Chapter 27 of The METAFONTbook explains that you might want to type `I ???' now.) >> 0.66667ypart ' ! Undefined y coordinate has been replaced by 0. { l.69 p~3:=2/3'zscaled'{ p~3}..controls(2,2/3(3))and penoffset(... I need a `known' y value for this part of the path. The value I found (see above) was no good; so I'll try to keep going by using zero instead. (Chapter 27 of The METAFONTbook explains that you might want to type `I ???' now.) >> path ! Undefined coordinates have been replaced by (0,0). } l.69 p~3:=2/3'zscaled'{p~3} ..controls(2,2/3(3))and penoffset(... I need x and y numbers for this part of the path. The value I found (see above) was no good; so I'll try to keep going by using zero instead. (Chapter 27 of The METAFONTbook explains that you might want to type `I ???' now.) {(2/3)*(3)} {(1/2)*(x)} {((0.5x,-5))penoffset((0,1))} >> (0.5x,-5) >> (0,1) ! Not implemented: penoffset(unknown pair)of(pair). ( l.69 ...enoffset(1/2x,y)of(0,1)( 1,0); I'm afraid I don't know how to apply that operation to that combination of types. Continue, and I'll return the second argument (see above) as the result of the operation. ! Missing `..' has been inserted. ( l.69 ...enoffset(1/2x,y)of(0,1)( 1,0); A path join command should end with two dots. Path at line 69, before choices: (0,0)..controls (2,2) and (0,1) ..(1,0) Path at line 69, after choices: (0,0)..controls (2,2) and (0,1) ..(1,0) {p~3:=path} {show} {reverse(path)} {(path)intersectiontimes(path)} >> (0.17227,0.28339) {(0.17227)point(path)} >> (0.71329,0.78188) {(1)-(0.28339)} {(0.71661)point(path)} >> (0.7133,0.78189) {show} {(path)shifted((0.01,0))} {(path)intersectiontimes(path)} {xpart((1.47693,1.18973))} {(1.47693)point(path)} {(path)shifted((0.01,0))} {(path)intersectiontimes(path)} {ypart((1.47693,1.18973))} {(1.18973)point(path)} {((1.50499,0.71521))-((1.495,0.71521))} >> (0.01,0) {begingroup} {interim} {tracingedges:=1} {-(1)} {-(1.00002)} {(-1)+-+(-1.00002)} ! Pythagorean subtraction 1+-+1.00002 has been replaced by 0. l.73 ...es:=1; e[-1+-+ -1.00001] =nullpicture; addto e1 also[[ Since I don't take square roots of negative numbers, I'm zeroing this one. Proceed, with fingers crossed. {nullpicture} {(unknown picture e0)=(picture)} {addto} {begingroup} {addto} {(path)scaled(3)} Path at line 74, before subdivision into octants: (3,0)..controls (3.75,0.75) and (4.125,1.3125) ..(4.3125,1.6875)..controls (4.875,2.8125) and (3.75,2.25) ..(6,0)..controls (3.75,2.25) and (4.875,2.8125) ..(4.3125,1.6875)..controls (4.125,1.3125) and (3.75,0.75) ..cycle Cycle spec at line 74, after subdivision: (3,0) % beginning in octant `NNE' ..controls (3.75,0.75) and (4.125,1.3125) ..(4.3125,1.6875) % segment 0 ..controls (4.5,2.0625) and (4.5,2.25) ..(4.5,2.25) % segment 1 % entering octant `NNW' % entering octant `WNW' % entering octant `WSW' % entering octant `SSW' % entering octant `SSE' ..controls (4.5,2.25) and (4.5,1.5) ..(6,0) % segment 1 % entering octant `ESE' % entering octant `ENE' % entering octant `NNE' % entering octant `NNW' ..controls (4.5,1.5) and (4.5,2.25) ..(4.5,2.25) % segment 2 % entering octant `WNW' % entering octant `WSW' % entering octant `SSW' ..controls (4.5,2.25) and (4.5,2.0625) ..(4.3125,1.6875) % segment 2 ..controls (4.125,1.3125) and (3.75,0.75) ..(3,0) % segment 3 % entering octant `SSE' % entering octant `ESE' % entering octant `ENE' & cycle Tracing edges at line 74: (weight 1) (4,0)(4,1)(5,1)(5,3)(4,3)(4,1)(5,1)(5,0)(6,0)(6,1)(5,1)(5,3) (4,3)(4,1)(3,1)(3,0). {(unknown picture e1)=(unknown picture e2)} {(picture)=(unknown picture e1)} {cull} {nullpicture} {endgroup} {show} {-(4095)} {(picture)shifted((4089,-4095))} >> Edge structure at line 75: row -4093: | 4093+ 4094- row -4094: | 4093+ 4094- row -4095: | 4092+ 4093- 4094+ 4095- {-(4095)} {(picture)shifted((-4095,4092))} {-(3)} {(picture)shifted((-3,0))} >> Edge structure at line 75: row 4094: -4094+ -4093- -4094+ -4093- | row 4093: -4094+ -4093- -4094+ -4093- | row 4092: -4095+ -4092- -4093+ -4094- | {-(4095)} {(picture)shifted((4089,-4095))} ! Too far to shift. ]] l.76 e2 shifted(4089,-4095)]] ;addto e1 also e2 shifted(-2,$)... I can't shift the picture as requested---it would make some coordinates too large or too small. Proceed, and I'll omit the transformation. >> Edge structure at line 76: row 2: 4+ 5- 4+ 5- | row 1: 4+ 5- 4+ 5- | row 0: 3+ 6- 5+ 4- | {restoring tracingedges=32767.99998} {endgroup} {addto} {-(2)} {(picture)shifted((-2,-1))} {-(4)} {(picture)shifted((-4,-1))} {e1:=picture} {addto} {(picture)rotated(89.999)} ! That transformation is too hard. + l.77 ...e0 also e1rotated89.999+ e1scaled$; show e0 xscaled-10... I can apply complicated transformations to paths, but I can only do integer operations on pictures. Proceed, and I'll omit the transformation. {(picture)scaled(-1)} {(picture)+(picture)} {show} {-(10)} {(picture)xscaled(-10)} {(picture)yscaled(2)} {(picture)xscaled(82)} ! Scaled picture would be too big. yscaled l.78 yscaled 683;addto e1 doublepath (0,9) withweight-3 withwe... I can't xscale the picture as requested---it would make some coordinates too large or too small. Proceed, and I'll omit the transformation. {(picture)yscaled(683)} ! Scaled picture would be too big. ; l.78 yscaled683; addto e1 doublepath (0,9) withweight-3 withwe... I can't yscale the picture as requested---it would make some coordinates too large or too small. Proceed, and I'll omit the transformation. >> Edge structure at line 78: row 5: -40- -50+ -40- -50+ | row 4: -40- -50+ -40- -50+ | row 3: -30+ 0- -10+ -20- -40- -50+ -40- -50+ | -10+ 0- row 2: -30+ 0- -10+ -20- -40- -50+ -40- -50+ | -10+ 0- row 1: 20- 10+ 20- 10+ -20+ -10- -20+ -10- -30- -60+ -50- -40+ | -10+ -10+ 0- 0- 10+ 20- row 0: 20- 10+ 20- 10+ -20+ -10- -20+ -10- -30- -60+ -50- -40+ | -10+ -10+ 0- 0- 10+ 20- row -1: 20- 10+ 20- 10+ -20+ -10- -20+ -10- | -20+ -10- 0+ 0+ 10- 10- row -2: 20- 10+ 20- 10+ -20+ -10- -20+ -10- | -20+ -10- 0+ 0+ 10- 10- row -3: 30- 0+ 10- 20+ | 0+ 10- row -4: 30- 0+ 10- 20+ | 0+ 10- {addto} {-(3)} {turningnumber(path)} ! Weight must be -3, -2, -1, +1, +2, or +3. withpen l.79 withpen pencircle xscaled(oct"180"++1) rotated-angle(64... I'll ignore the bad `with' clause and look for another. {pencircle} {oct("180")} >> "180" ! String contains illegal digits. ++ l.79 ...ircle xscaled(oct"180"++ 1) rotated-angle(64,$) shifte... I zeroed out characters that weren't in the range 0..7. {(64)++(1)} {(future pen)xscaled(64.00781)} {angle((64,-1))} {-(-0.89517)} {(future pen)rotated(0.89517)} {(future pen)shifted((9,8))} Pen polygon at line 80 (newly created): (9,7.5) .. (37.5,8) .. (41,8.5) .. (9,8.5) .. (-19.5,8) .. (-23,7.5) .. cycle Path at line 80, before choices: (-1,-1){curl 1} ..(1,0) ..(1,1) ..(-1,0) ..{curl 1}cycle Path at line 80, after choices: (-1,-1)..controls (-0.18568,-1.14464) and (0.62712,-0.73824) ..(1,0)..controls (1.16457,0.32584) and (1.21637,0.71506) ..(1,1)..controls (0.46898,1.69931) and (-0.7587,1.2167) ..(-1,0)..controls (-1.06546,-0.33012) and (-1.06546,-0.66988) ..cycle {makepen(path)} {(future pen)xscaled(4095.49998)} Pen polygon at line 80 (newly created): (4095.49998,0) .. (4095.49998,1) .. (-4095.49998,0) .. (-4095.49998,-1) .. cycle Path at line 80, before subdivision into octants: (0,9)..controls (0,9) and (0,9) ..cycle ! Curve out of range. ; l.80 ...cycle)xscaled4095.49999; At least one of the coordinates in the path I'm about to digitize was really huge (potentially bigger than 4095). So I've cut it back to the maximum size. The results will probably be pretty wild. Cycle spec at line 80, after subdivision: (0,0) % beginning in octant `ENE' % entering octant `NNE' % entering octant `NNW' % entering octant `WNW' % entering octant `WSW' % entering octant `SSW' % entering octant `SSE' % entering octant `ESE' & cycle Tracing edges at line 80: (weight -3) @ Octant ENE (2 offsets), from (-4095.49998,-1) to (4095.49998,0) @ transition line 0, from (-4095.49998,-1) to (-4095.49998,-1) @ transition line 1, from (-4095.49998,-1) to (4095.49998,0) @ transition line 2, from (4095.49998,0) to (4095.49998,0) (0,-1) @ Octant NNE (1 offset), from (4095.49998,0) to (4095.49998,1) @ transition line 2, from (4095.49998,0) to (4095.49998,0) @ transition line 1, from (4095.49998,0) to (4095.49998,1) (0,0)(4095,0) @ Octant NNW (0 offsets), from (4095.49998,1) to (4095.49998,1) @ transition line 0, from (4095.49998,1) to (4095.49998,1) @ Octant WNW (0 offsets), from (4095.49998,1) to (4095.49998,1) @ transition line 1, from (4095.49998,1) to (4095.49998,1) @ Octant WSW (2 offsets), from (4095.49998,1) to (-4095.49998,0) @ transition line 0, from (4095.49998,1) to (4095.49998,1) @ transition line 1, from (4095.49998,1) to (-4095.49998,0) @ transition line 2, from (-4095.49998,0) to (-4095.49998,0) (4095,1)(0,1) @ Octant SSW (1 offset), from (-4095.49998,0) to (-4095.49998,-1) @ transition line 2, from (-4095.49998,0) to (-4095.49998,0) @ transition line 1, from (-4095.49998,0) to (-4095.49998,-1) (0,0)(-4095,0) @ Octant SSE (0 offsets), from (-4095.49998,-1) to (-4095.49998,-1) @ transition line 0, from (-4095.49998,-1) to (-4095.49998,-1) @ Octant ESE (0 offsets), from (-4095.49998,-1) to (-4095.49998,-1) @ transition line 1, from (-4095.49998,-1) to (-4095.49998,-1) (-4095,-1). {show} >> Edge structure at line 81: row 1: | 0+ 1- row 0: 0--- 4095+++ -2+ -1- -2+ -1- | 0+ 1- row -1: -4095--- 0+++ -2+ -1- -2+ -1- | -1+ 0- 1+ 2- row -2: -3+ 0- -1+ -2- | {totalweight(picture)} >> -0.37476 {charcode:=5} {chardp:=5} {-(1.5)} {xoffset:=-1.5} {shipout} [5] Edge structure at line 81 (just shipped out): row 1: | -1+ 0- row 0: | -3+ -3+ -2- -2- -1--- -1+ 0- 4094+++ row -1: | -4096--- -3+ -3+ -2- -2- -2+ -1- -1+++ 0+ 1- row -2: | -4+ -3- -2+ -1- {showstats} Memory usage 1084&202 (749 still untouched) String usage 21&86 (866&11432 still untouched) {addto} {(path)yscaled(0.01666)} Path at line 82, before subdivision into octants: (0,0)..controls (15,0.06665) and (-15,-0.19995) ..(4,0)..controls (-15,-0.19995) and (15,0.06665) ..cycle Cycle spec at line 82, after subdivision: (0,0) % beginning in octant `ENE' ..controls (1.74272,0.00775) and (2.87802,0.01099) ..(3.55333,0.01099) % segment 0 % entering octant `ESE' ..controls (4.12251,0.01099) and (4.36491,0.00868) ..(4.36877,0.00482) % segment 0 % entering octant `SSE' ..controls (4.3688,0.00479) and (4.36882,0.00476) ..(4.36882,0.00473) % segment 0 % entering octant `SSW' ..controls (4.36882,0.0047) and (4.3688,0.00467) ..(4.36877,0.00464) % segment 0 % entering octant `WSW' ..controls (4.34875,-0.01538) and (-1.88759,-0.07579) ..(-2.48894,-0.07579) % segment 0 % entering octant `WNW' ..controls (-2.5191,-0.07579) and (-2.5351,-0.07564) ..(-2.53542,-0.07532) % segment 0 % entering octant `NNW' % entering octant `NNE' % entering octant `ENE' ..controls (-2.53209,-0.07199) and (-0.88672,-0.05144) ..(4,0) % segment 0 % entering octant `NNE' % entering octant `NNW' % entering octant `WNW' % entering octant `WSW' ..controls (-0.88672,-0.05144) and (-2.5321,-0.072) ..(-2.53542,-0.07532) % segment 1 % entering octant `SSW' % entering octant `SSE' % entering octant `ESE' ..controls (-2.53511,-0.07562) and (-2.5191,-0.07579) ..(-2.48894,-0.07579) % segment 1 % entering octant `ENE' ..controls (-1.88759,-0.07579) and (4.34877,-0.01537) ..(4.36877,0.00464) % segment 1 % entering octant `NNE' ..controls (4.3688,0.00467) and (4.36882,0.0047) ..(4.36882,0.00473) % segment 1 % entering octant `NNW' ..controls (4.36882,0.00476) and (4.3688,0.00479) ..(4.36877,0.00482) % segment 1 % entering octant `WNW' ..controls (4.36491,0.00868) and (4.12251,0.01099) ..(3.55333,0.01099) % segment 1 % entering octant `WSW' ..controls (2.87802,0.01099) and (1.74272,0.00775) ..(0,0) % segment 1 % entering octant `SSW' % entering octant `SSE' % entering octant `ESE' & cycle Tracing edges at line 82: (weight 1) (No new edges added.) {(picture)yscaled(0)} {e3:=picture} {autorounding:=2} {addto} Path at line 83, before choices: (0.5,0){curl 1} ..{curl 1}(3.5,1.5) Path at line 83, after choices: (0.5,0)..controls (1.5,0.5) and (2.5,1) ..(3.5,1.5) Path at line 83, before subdivision into octants: (0.5,0)..controls (1.5,0.5) and (2.5,1) ..(3.5,1.5)..controls (2.5,1) and (1.5,0.5) ..cycle Cycle spec at line 83, after subdivision and double autorounding: (0.5,0) % beginning in octant `ENE' ..controls (1.5,0.5) and (2.5,1) ..(3.5,1.5) % segment 0 % entering octant `NNE' % entering octant `NNW' % entering octant `WNW' % entering octant `WSW' ..controls (2.5,1) and (1.5,0.5) ..(0.5,0) % segment 1 % entering octant `SSW' % entering octant `SSE' % entering octant `ESE' & cycle Tracing edges at line 83: (weight 2) (2,0)(2,1)(4,1)(4,2)(3,2)(3,1)(1,1)(1,0). {tracingspecs:=0} Path at line 84, before choices: (1,1) ..cycle Path at line 84, after choices: (1,1)..controls (1,1) and (1,1) ..cycle {makepen(path)} {(future pen)yscaled(1.5)} Pen polygon at line 84 (newly created): (1,1.5) .. cycle {q:=pen} {((-1,yy))rotated((8,1,5,-5,-5,5))} >> (8,1,5,-5,-5,5) ! Improper transformation argument. { l.85 p~8=(($,yy)rotated p{ 0,1}..{0,$}(1,0){0,$}..cycle)scaled... The expression shown above has the wrong type, so I can't transform anything using it. Proceed, and I'll omit the transformation. >> yy ! Undefined y coordinate has been replaced by 0. { l.85 p~8=(($,yy)rotated p{ 0,1}..{0,$}(1,0){0,$}..cycle)scaled... I need a `known' y value for this part of the path. The value I found (see above) was no good; so I'll try to keep going by using zero instead. (Chapter 27 of The METAFONTbook explains that you might want to type `I ???' now.) Path at line 85, before choices: (-1,0){0,4096} ..{0,-4096}(1,0){0,-4096} ..{0,4096}cycle Path at line 85, after choices: (-1,0)..controls (-1,1.33333) and (1,1.33333) ..(1,0)..controls (1,-1.33333) and (-1,-1.33333) ..cycle {(path)scaled(2)} {(path)shifted((1000.49,9))} {(unknown path p~8)=(path)} {turningcheck:=1} {addto} >> (8,1,5,-5,-5,5) ! Improper type. withpen l.86 ...n q withweight p withpen cycle p; Next time say `withweight '; I'll ignore the bad `with' clause and look for another. {cycle((8,1,5,-5,-5,5))} >> false ! Improper type. ; l.86 ...eight p withpen cycle p; Next time say `withpen '; I'll ignore the bad `with' clause and look for another. Tracing edges at line 86: (weight 1) @ Octant NNE (0 offsets), from (999,10.5) to (999.15451,11.65451) @ transition line 1, from (999.15451,11.65451) to (999.15451,11.65451) (999,11) @ Octant ENE (0 offsets), from (999.15451,11.65451) to (1001,12) @ transition line 0, from (999.15451,11.65451) to (999.15451,11.65451) @ Octant ESE (0 offsets), from (1001,12) to (1002.8455,11.6545) @ transition line 1, from (1002.8455,11.6545) to (1002.8455,11.6545) @ Octant SSE (0 offsets), from (1002.8455,11.6545) to (1003,10.5) @ transition line 0, from (1002.8455,11.6545) to (1002.8455,11.6545) (999,12)(1003,12) @ Octant SSW (0 offsets), from (1003,10.5) to (1002.84549,9.34549) @ transition line 1, from (1002.84549,9.34549) to (1002.84549,9.34549) @ Octant WSW (0 offsets), from (1002.84549,9.34549) to (1001,9) @ transition line 0, from (1002.84549,9.34549) to (1002.84549,9.34549) @ Octant WNW (0 offsets), from (1001,9) to (999.1545,9.3455) @ transition line 1, from (999.1545,9.3455) to (999.1545,9.3455) @ Octant NNW (0 offsets), from (999.1545,9.3455) to (999,10.5) @ transition line 0, from (999.1545,9.3455) to (999.1545,9.3455) (1003,9)(999,9)(999,11). Tracing edges at line 86: (weight 1) @ Octant SSE (0 offsets), from (999,10.5) to (999.15451,9.34549) @ transition line 0, from (999,10.5) to (999,10.5) (999,11) @ Octant ESE (0 offsets), from (999.15451,9.34549) to (1001,9) @ transition line 1, from (1001,9) to (1001,9) @ Octant ENE (0 offsets), from (1001,9) to (1002.8455,9.3455) @ transition line 0, from (1001,9) to (1001,9) @ Octant NNE (0 offsets), from (1002.8455,9.3455) to (1003,10.5) @ transition line 1, from (1003,10.5) to (1003,10.5) (999,9)(1003,9) @ Octant NNW (0 offsets), from (1003,10.5) to (1002.84549,11.65451) @ transition line 0, from (1003,10.5) to (1003,10.5) @ Octant WNW (0 offsets), from (1002.84549,11.65451) to (1001,12) @ transition line 1, from (1001,12) to (1001,12) @ Octant WSW (0 offsets), from (1001,12) to (999.1545,11.6545) @ transition line 0, from (1001,12) to (1001,12) @ Octant SSW (0 offsets), from (999.1545,11.6545) to (999,10.5) @ transition line 1, from (999,10.5) to (999,10.5) (1003,12)(999,12)(999,11). {begingroup} {interim} {(xx)=(0.1)} ## xx=0.1 {autorounding:=0.1} {addto} Tracing edges at line 87: (weight -2) @ Octant NNE (0 offsets), from (999,10.5) to (999.38197,11.42706) @ transition line 1, from (999.38197,11.42706) to (999.38197,11.42706) @ Octant ENE (0 offsets), from (999.38197,11.42706) to (1001,12) @ transition line 0, from (999.38197,11.42706) to (999.38197,11.42706) (999,11) @ Octant ESE (0 offsets), from (1001,12) to (1002.61804,11.42705) @ transition line 1, from (1002.61804,11.42705) to (1002.61804,11.42705) (999,12)(1003,12) @ Octant SSE (0 offsets), from (1002.61804,11.42705) to (1003,10.5) @ transition line 0, from (1002.61804,11.42705) to (1002.61804,11.42705) @ Octant SSW (0 offsets), from (1003,10.5) to (1002.61803,9.57294) @ transition line 1, from (1002.61803,9.57294) to (1002.61803,9.57294) @ Octant WSW (0 offsets), from (1002.61803,9.57294) to (1001,9) @ transition line 0, from (1002.61803,9.57294) to (1002.61803,9.57294) @ Octant WNW (0 offsets), from (1001,9) to (999.38196,9.57295) @ transition line 1, from (999.38196,9.57295) to (999.38196,9.57295) (1003,9)(999,9) @ Octant NNW (0 offsets), from (999.38196,9.57295) to (999,10.5) @ transition line 0, from (999.38196,9.57295) to (999.38196,9.57295) (999,11). {restoring autorounding=2} {endgroup} {-(14.5)} {charext:=-14.5} {chardp:=-14.5} {chardx:=-14.5} {shipout} {-(picture)} {(picture)-(picture)} {-(picture)} {turningnumber(path)} {(6)*(-1)} {(picture)shifted((0,-6))} {(picture)+(picture)} [5.-14] Edge structure at line 88 (just shipped out): row 11: | 998- 998+ 998++ 1002-- 1002- 1002+ row 10: | 998- 998+ 998++ 1002-- 1002- 1002+ row 9: | 998- 998+ 998++ 1002-- 1002- 1002+ row 5: | 998- 998+ 998++ 1002-- 1002- 1002+ row 4: | 998- 998+ 998++ 1002-- 1002- 1002+ row 3: | 998- 998+ 998++ 1002-- 1002- 1002+ row 2: | 3+ 3+ 3+ 3+ 4- 4- 4- 4- row 1: | -1+ -1+ 0- 0- 1+ 2- 3+ 3+ 3+ 3+ 4- 4- 4- 4- row 0: | -3+ -3+ -3+ -2- -2- -2- -1+ -1+ 0- 0- 0+ 0+ 1- 1- 2+ 2+ 3- 3- 4+ 4+ 5- 5- row -1: | -3+ -3+ -2- -2- -2+ -2+ -1- -1- 0+ 0+ 0+ 1- 1- 1- row -2: | -4+ -3- -2+ -2+ -1- -1- row -4: | 3+ 3+ 4- 4- row -5: | 3+ 3+ 4- 4- row -6: | 2+ 3- 4+ 5- Path at line 89, before choices: (0,0){curl 1} ..(1,0.5) ..(5,1.5) ..(7,2.5) ..(12,3.5) ..{curl 1}(13,4) Path at line 89, after choices: (0,0)..controls (0.3153,0.20053) and (0.6504,0.36807) ..(1,0.5)..controls (2.29114,0.98723) and (3.72412,0.97192) ..(5,1.5)..controls (5.68967,1.78545) and (6.30771,2.22081) ..(7,2.5)..controls (8.58867,3.1407) and (10.3946,2.90645) ..(12,3.5)..controls (12.3506,3.62962) and (12.68594,3.7973) ..(13,4) {(unknown path p~9)=(path)} {addto} Tracing edges at line 89: (weight 1) (1,0)(1,1)(5,1)(5,2)(7,2)(7,3)(12,3)(12,4)(12,3)(7,3)(7,2)(5,2) (5,1)(1,1)(1,0). {smoothing:=1} {addto} Tracing edges at line 90: (weight 1) (1,0)(1,1)(4,1)(4,2)(8,2)(8,3)(12,3)(12,4)(12,3)(8,3)(8,2)(4,2) (4,1)(1,1)(1,0). {addto} {-(4095)} Path at line 91, before choices: (-4095,0){curl 1}..tension 0.75 and 999 ..{curl 1}(0,2) Path at line 91, after choices: (-4095,0)..controls (-2275,0.88889) and (-1.36636,1.99933) ..(0,2) Tracing edges at line 91: (weight 1) (-3071,0)(-3071,1)(-1024,1)(-1024,2)(-1024,1)(-3072,1)(-3072,0). {show} {-(90)} {(picture)rotated(-90)} ! METAFONT capacity exceeded, sorry [main memory size=3001]. l.91 ...,2); show e3 rotated-90, (e0+e0) rotated90$ rotated90; If you really absolutely need more capacity, you can ask a wizard to enlarge me. Here is how much of METAFONT's memory you used: 23 strings out of 887 90 string characters out of 11504 3001 words of memory out of 3001 280 symbolic tokens out of 9500 4i,43n,8r,6p,105b stack positions out of 30i,100n,300r,150p,500b Output written on trap.72270gf (2 characters, 248 bytes).