<div dir="auto">hi bruce,<div dir="auto"><br></div><div dir="auto">this is a boxed u:label</div><div dir="auto">basically it gets the string as picture,</div><div dir="auto">its bounding box corners, and define the x and y to draw the box, </div><div dir="auto">then draw the string picture</div><div dir="auto"><br></div><div dir="auto">point 10 20 u:label -attr val 20</div><div dir="auto"><br></div><div dir="auto">def p_u_label ( expr p,r,s,t ) =</div><div dir="auto">  picture pic;</div><div dir="auto">  pic := thelabel( ATTR_val, (0,0)) scaled s;</div><div dir="auto"> pair q[]; numeric n[], m[], v;</div><div dir="auto"> path bb;</div><div dir="auto"> v := defaultscale;</div><div dir="auto"> qO = ulcorner pic;</div><div dir="auto"> q1 = lrcorner pic;</div><div dir="auto"> nO := ypart q0 + 2.5 * v;</div><div dir="auto"> n1 := ypart q1 - 1.5*v;</div><div dir="auto"> m0 := xpart q0 - v;</div><div dir="auto"> m1 := xpart q1 + 1.5*v;</div><div dir="auto">bb := (m0,n0) -- (m0,n1) -- (m1,n1) -- (m1,n0) -- cycle;</div><div dir="auto">draw bb  rotated r shifted p;</div><div dir="auto">draw pic rotated r shifted p;</div><div dir="auto">enddef</div><div dir="auto"><br></div><div dir="auto"><br></div></div>