input boxes; defaultscale := 2; defaultfont := "cmss17"; ahlength := 10; background := red; beginfig(1); vardef cuta(suffix a,b) expr p = p cutbefore bpath.a cutafter bpath.b enddef; circleit.a1("Alphabet"); circleit.a2("Grammar"); circleit.a3("Axioms"); circleit.a4("Rules of Inference"); circleit.b1("Theorem 1"); circleit.b2("Theorem 2"); circleit.b3("Theorem 3"); circleit.b4("Theorem 4"); circleit.b5("..."); circleit.cp("Computing Machine"); 3mm = cp.dx = cp.dy = a1.dx = a1.dy = a2.dx = a2.dy = a3.dx = a3.dy = a4.dx = a4.dy = b1.dx = b1.dy = b2.dx = b2.dy = b3.dx = b3.dy = b4.dx = b4.dy = b5.dx = b5.dy; numeric hsep; a2.w - a1.e = a3.w - a2.e = a4.w - a3.e = (hsep, 0); b2.w - b1.e = b3.w - b2.e = b4.w - b3.e = b5.w - b4.e = (hsep, 0); ypart(cp.n - a3.s) = ypart(b3.n - cp.s); xpart(a4.e - cp.c) = xpart(cp.c - a1.w); xpart(b5.e - cp.c) = xpart(cp.c - b1.w); ypart(b1.s - a1.n) = -5in; xpart(b5.e - b1.w) = 10in; drawoptions(withcolor white); drawunboxed(a1,a2,a3,a4,b1,b2,b3,b4,b5,cp); for i = 1 upto 4: drawarrow cuta(a[i], cp) a[i].c{cp.n-a[i].s}..{curl 0}cp.s withcolor .7white; endfor for i = 1 upto 5: drawarrow cuta(cp, b[i]) cp.c{curl 0}..{b[i].n-cp.s}b[i].c withcolor .7white; endfor endfig; end.