input boxes ; prologues := 2 ; vardef miArete(suffix a,b) expr p = drawarrow p cutbefore bpath.a cutafter bpath.b ; point .5*length p of p enddef ; vardef miBoucle@# expr p = miArete(@#,@#) @#.c{curl0}..@#.c+p..{curl0}@#.c enddef ; def cercle(suffix a,b) = circleit.a() ; a.c = z.b ; enddef ; beginfig(1) interim circmargin := 6bp ; z0 = (0,0) ; z1 - z0 = z7 - z6 = z8 - z7 = z9 - z8 = z10 - z9 = z11 - z10 = z3 - z2 = z5 - z4 = (z2 - z1) rotated -60 = (z4 - z1) rotated 60 = (z6 - z3) rotated 60 = (14mm,0) ; cercle(a)(0) ; cercle(b)(1) ; cercle(c)(2) ; cercle(d)(3) ; cercle(e)(4) ; cercle(f)(5) ; cercle(g)(6) ; cercle(h)(7) ; cercle(i)(8) ; cercle(j)(9) ; cercle(k)(10) ; cercle(l)(11) ; drawboxed(a,b,c,d,e,f,g,h,i,j,k,l) ; interim circmargin := 8bp ; circleit.ll(pic l) ; ll.c = z11 ; drawboxed(ll) ; drawarrow (-1cm,0)--z0 cutafter bpath.a ; label.top(btex $\varepsilon$ etex,miArete(a,b) a.c--b.c) ; label.ulft(btex $\varepsilon$ etex,miArete(b,c) b.c--c.c) ; label.top(btex $a$ etex,miArete(c,d) c.c--d.c) ; label.urt(btex $\varepsilon$ etex,miArete(d,g) d.c--g.c) ; label.urt(btex $\varepsilon$ etex,miArete(b,e) b.c--e.c) ; label.top(btex $b$ etex,miArete(e,f) e.c--f.c) ; label.ulft(btex $\varepsilon$ etex,miArete(f,g) f.c--g.c) ; label.top(btex $\varepsilon$ etex,miArete(g,h) g.c--h.c) ; label.top(btex $\varepsilon$ etex,miArete(h,i) h.c--i.c) ; label.top(btex $b$ etex,miArete(i,j) i.c--j.c) ; label.top(btex $\varepsilon$ etex,miArete(j,k) j.c--k.c) ; label.top(btex $a$ etex,miArete(k,ll) k.c--l.c) ; label.top(btex $\varepsilon$ etex,miArete(g,b) g.c{dir72}..b.c) ; label.bot(btex $\varepsilon$ etex,miArete(a,h) a.c{down}..h.c) ; endfig ; end