diff options
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf')
-rw-r--r-- | Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf | 1001 |
1 files changed, 1001 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf b/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf new file mode 100644 index 00000000000..d5f5ad770ae --- /dev/null +++ b/Master/texmf-dist/fonts/source/public/mathabx/mathsymb.mf @@ -0,0 +1,1001 @@ +% mathematical symbols by Anthony Phan. +% file: mathsymb.mf (various mathematical symbols) +% last modification: May 16, 2005. +% Only known charcodes will be generated. + +def horizontal_rules_list=math_axis, + -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height +enddef; + +%%% !!! marked signs are to be revised + +use_rule1; + +% +% Usual binary relations. +% + +beginchar(negation_sign,12u#+2appr#,v_center(spread1#+rth#)); + "Negation sign"; + pickup tiny.nib; + pos1(rth,90); pos3(rth,0); + y2r=y1r; y2l=y1l; x2l=x3l; x2r=x3r; + y1=math_axis+0.5spread1; y1l-y3=spread1; + lft x1=Appr; rt x3r=w-Appr; + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +beginchar(not_sign,12u#+2appr#,asc_height#,asc_depth#); + "Not sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y1=h+eps; 0.5[bot y2,top y1]=math_axis; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z1e..z2e; penlabels(1,2); + charwd:=0; w:=0; +endchar; + +beginchar(varnot_sign,12u#+2appr#,asc_height#,asc_depth#); + "Variant not sign"; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); + charwd:=0; w:=0; +endchar; + +% +% equality signs and related things (relations). +% + +beginchar(colon_sign,3u#+2appr#,x_height#,0); + "Colon"; + pickup null.nib; + adjust_dot1((0.5w,h-0.5dtsz),dtsz,false,false); + adjust_dot2((0.5w,0.5dtsz),dtsz,false,false); + dot(1,1'); dot(2,2'); +endchar; + +beginchar(colon_equal_sign,15u#+2appr#,v_center(spread1#+rth#)); + "Colon-equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr+hround 3u; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((appr+1.5u,math_axis + +0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); dot(5,5'); + adjust_dot6((appr+1.5u,math_axis + -0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); dot(6,6'); +endchar; + +beginchar(equal_colon_sign,15u#+2appr#,v_center(spread1#+rth#)); + "Equal-colon sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr-hround 3u; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((w-appr-1.5u,math_axis + +0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); + adjust_dot6((w-appr-1.5u,math_axis + -0.5max(0.5[x_height-dtsz,spread1],spread1)), + dtsz,false,false); + dot(5,5'); dot(6,6'); + penlabels(1,2,3,4); +endchar; + +beginchar(top_dot_equal_sign,arithmetic_bounds); + "Top dot equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((0.5[x1,x2], + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,true,false); dot(5,5'); +endchar; + +beginchar(bot_dot_equal_sign,arithmetic_bounds); + "Bot dot equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((0.5[x1,x2], + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,true,false); dot(5,5'); +endchar; + +beginchar(top_bot_dot_equal_sign,arithmetic_bounds); + "Top bot dot equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((0.5[x1,x2], + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,true,false); dot(5,5'); + adjust_dot6((0.5[x1,x2], + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,true,false); dot(6,6'); +endchar; + +beginchar(rising_dots_equal_sign,arithmetic_bounds); + "Rising dots equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((w-appr-0.5dtsz, + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,false,false); dot(5,5'); + adjust_dot6((appr+0.5dtsz, + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,false,false); dot(6,6'); +endchar; + +beginchar(falling_dots_equal_sign,arithmetic_bounds); + "Falling dots equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); pickup null.nib; + adjust_dot5((appr+0.5dtsz, + min(y1+math_spread[0.5x_height,0.6x_height],h-0.5dtsz)), + dtsz,false,false); dot(5,5'); + adjust_dot6((w-appr-0.5dtsz, + max(y3-math_spread[0.5x_height,0.6x_height],-d+0.5dtsz)), + dtsz,false,false); dot(6,6'); +endchar; + +beginchar(bump_equal,12u#+2appr#,v_center(spread1#+rth#)); + "bumped equal sign"; + numeric t[]; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos5(rth,180); pos6(rth,90); pos7(rth,0); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + rt x5l=hround 1/3[lft x1,rt x2]; x5l-x1=x2-x7l; + y5=y7=y1l; x6=0.5[x5,x7]; y6l-y1l=vround 0.5(x7l-x5l); + tmp_path:=z7r up_to_left z6r left_to_down z5r; + t1=xpart(tmp_path intersectiontimes (z2r..0.5[z1r,z2r])); + t2=xpart(tmp_path intersectiontimes (z1r..0.5[z1r,z2r])); + filldraw z1l--z5l up_to_right z6l right_to_down z7l--z2l-- + z2r--subpath(t1,t2) of tmp_path--z1r--cycle; + filldraw stroke z3e..z4e; penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(pump_equal,12u#+2appr#,v_center(spread1#+rth#)); + "pumped equal sign"; + numeric t[]; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos8(rth,0); pos9(rth,90); pos10(rth,180); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + rt x8r=hround 1/3[lft x1,rt x2]; x8r-x3=x4-x10r; + y8=y10=y3r; x9=0.5[x8,x10]; y3r-y9r=vround 0.5(x10r-x8r); + tmp_path:=z8l down_to_right z9l right_to_up z10l; + t1=xpart(tmp_path intersectiontimes (z3l..0.5[z3l,z4l])); + t2=xpart(tmp_path intersectiontimes (z4l..0.5[z3l,z4l])); + filldraw z3l--subpath(t1,t2) of tmp_path--z4l + --z4r--z10r up_to_left z9r left_to_down z8r--z3r--cycle; + filldraw stroke z1e..z2e; penlabels(1,2,3,4,8,9,10); +endchar; + +beginchar(Bump_equal,12u#+2appr#,v_center(spread1#+rth#)); + "Bumped equal"; + numeric t[]; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos5(rth,180); pos6(rth,90); pos7(rth,0); pos8(rth,0); + pos9(rth,90); pos10(rth,180); + lft x1=lft x3=appr; rt x2=rt x4=w-appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + rt x5l=rt x8r=hround 1/3[lft x1,rt x2]; x5l-x1=x2-x7l; x10r=x7l; + y5=y7=y1l; y8=y10=y3r; x6=x9=0.5[x5,x7]; + y6l-y1l=y3r-y9r=vround 0.5(x7l-x5l); + tmp_path:=z7r up_to_left z6r left_to_down z5r; + tmpp_path:=z8l down_to_right z9l right_to_up z10l; + t1=xpart(tmp_path intersectiontimes (z2r..0.5[z1r,z2r])); + t2=xpart(tmp_path intersectiontimes (z1r..0.5[z1r,z2r])); + t3=xpart(tmpp_path intersectiontimes (z3l..0.5[z3l,z4l])); + t4=xpart(tmpp_path intersectiontimes (z4l..0.5[z3l,z4l])); + filldraw z1l--z5l up_to_right z6l right_to_down z7l--z2l-- + z2r--subpath(t1,t2) of tmp_path--z1r--cycle; + filldraw z3l--subpath(t3,t4) of tmpp_path--z4l + --z4r--z10r up_to_left z9r left_to_down z8r--z3r--cycle; + penlabels(1,2,3,4,5,6,7,8,9,10); +endchar; + +%%% !!! +beginchar(circ_equal_sign,arithmetic_bounds); + "Circle-equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + pickup rule.nib0; + a:=min(max(7u,dtsz+rth0),spread1+rth); + adjust_dot5((0.5[x1,x2],max(vround(1/6[top y1,h])+0.5a,h-0.5a)+o), + a,true,false); + full_dot:=false; dot(5,5'); + penlabels(1,2); +endchar; + +beginchar(equal_circ_sign,12u#+2appr#,v_center(spread1#+rth#)); + "Equal-circle sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + pickup rule.nib0; + a:=min(max(7u,dtsz+rth0),spread1+rth); + adjust_dot5(0.5[z3,z2],a,true,false); + full_dot:=false; dot(5,5'); + penlabels(1,2); +endchar; + +%%% !!! +beginchar(triangle_equal_sign,arithmetic_bounds); + "Triangle-equal sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar + triangle_foot:=vround 1/6[top y1r,h]; + a:=min(2max(h+o-triangle_foot,spread1+rth+o)/sqrt 3,7u); + set_triangle'(up,a,rth0,false,false); + filldraw stroke z1'e--z2'e--z3'e--z1'e; +endchar; + +%%% !!! +beginchar(correspondance_sign,arithmetic_bounds); + "Correspondance sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + filldraw stroke z1e..z2e; % upper bar + filldraw stroke z3e..z4e; % lower bar +% + top y6r=h+o; bot y5r=vround(1/6[top y1r,h]); + y5r=y5l=y7r=y7l; + x6r=0.5[x1,x2]; x5r-x1=x2-x7r=hround 0.5u; + x5l-x5r=diag_width(rth-tiny,z6r-z5r); + x7r-x7l=diag_width(rth-tiny,z6r-z7r); + z6l-z5l=whatever*(z6r-z5r); z6l-z7l=whatever*(z6r-z7r); + filldraw stroke z5e--z6e--z7e; + penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(hash_sign,arithmetic_bounds); + "Hash sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + pos5(rth,0); pos6(rth,0); pos7(rth,0); pos8(rth,0); + lft x1=lft x3=Appr; + lft x5l=lft x6l=hround 0.5(w+Appr-Appr-spread1-rth); + x7-x5=x8-x6=spread1; x2-x7r=x4-x7r=x5l-x1; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + top y5=top y7=h; y5-y1=y3-y6; y8=y6; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginchar(var_hash_sign,arithmetic_bounds); + "Variant hash sign"; + pickup tiny.nib; + pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); + lft x1=lft x3=Appr; rt x2=rt x4=w-Appr; + y1=y2; y3=y4; y1-y3=spread1; .5[y1,y3]=math_axis; + bot y6l=-d; top y7r=h; lft x6l=w-rt x7r=Appr+hround 1.25u; + adjust_slanted_bar(6l,7r,8r,5l)(spread1+rth-tiny,-1); + numeric a; a=(rth-tiny)/sind angle(z5l-z6l); + penpos5(a,0); penpos6(a,0); penpos7(a,0); penpos8(a,0); +% I'm not sure that it's a good idea, but wel, that's +% school works. + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke diag_stroke.e(5,6,r,y1r,y1l,y3r,y3l); + filldraw stroke diag_stroke.e(7,8,r,y1r,y1l,y3r,y3l); +% filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); +endchar; + +beginchar(vdash_sign,12u#+2appr#,v_center(12u#)); + "vdash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + lft x1l=lft x2l=Appr; rt x4=w-Appr; x3=x1; + top y1=h; 0.5[y1,y2]=math_axis=y3=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); tmp_picture:=currentpicture; +endchar; + +beginchar(vdash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not vdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(dashv_sign,12u#+2appr#,v_center(12u#)); + "dashv sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + rt x1r=rt x2r=w-Appr; lft x3=Appr; x4=x1; + top y1=h; 0.5[y1,y2]=math_axis=y3=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + penlabels(1,2,3,4); tmp_picture:=currentpicture; +endchar; + +beginchar(dashv_not,12u#+2appr#,asc_height#,asc_depth#); + "Not dashv sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(vDash_sign,12u#+2appr#,v_center(12u#)); + "vDash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + pos5(rth,90); pos6(rth,90); + lft x1l=lft x2l=Appr; rt x4=rt x6=w-Appr; x3=x5=x1; + top y1=h; y3-y5=spread1; 0.5[y1,y2]=math_axis=0.5[y3,y5]; + y4=y3; y6=y5; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(vDash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not vDash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(Dashv_sign,12u#+2appr#,v_center(12u#)); + "Dashv sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,90); pos4(rth,90); + pos5(rth,90); pos6(rth,90); + rt x1r=rt x2r=w-Appr; lft x3=lft x5=Appr; x4=x6=x1; + top y1=h; y3-y5=spread1; 0.5[y1,y2]=math_axis=0.5[y3,y5]; + y4=y3; y6=y5; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(Dashv_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Dashv sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(Vdash_sign,12u#+2appr#,v_center(12u#)); + "Vdash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); + lft x1l=lft x2l=Appr; x3=x4=x1+spread1; + rt x6=w-appr; x5=x3; + top y1=h; 0.5[y1,y2]=math_axis=y5=y6; y1=y3; y2=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(Vdash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Vdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(dashV_sign,12u#+2appr#,v_center(12u#)); + "dashV sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); + rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; + lft x5=appr; x6=x3; + top y1=h; 0.5[y1,y2]=math_axis=y5=y6; y1=y3; y2=y4; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; penlabels(1,2,3,4,5,6); + tmp_picture:=currentpicture; +endchar; + +beginchar(dashV_not,12u#+2appr#,asc_height#,asc_depth#); + "Not dashV sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(VDash_sign,12u#+2appr#,v_center(12u#)); + "VDash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); pos7(rth,90); pos8(rth,90); + lft x1l=lft x2l=Appr; x3=x4=x1+spread1; + rt x6=rt x8=w-appr; x5=x7=x3; + top y1=h; y5-y7=spread1; + 0.5[y1,y2]=0.5[y5,y7]=math_axis; + y1=y3; y2=y4; y5=y6; y7=y8; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(VDash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Vdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(DashV_sign,12u#+2appr#,v_center(12u#)); + "DashV sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,90); pos6(rth,90); pos7(rth,90); pos8(rth,90); + rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; + lft x5=lft x7=appr; x6=x8=x3; + top y1=h; y5-y7=spread1; + 0.5[y1,y2]=0.5[y5,y7]=math_axis; + y1=y3; y2=y4; y5=y6; y7=y8; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(DashV_not,12u#+2appr#,asc_height#,asc_depth#); + "Not DashV sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(Vvdash_sign,12u#+2appr#,v_center(12u#)); + "Vvdash sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,0); pos6(rth,0); pos7(rth,90); pos8(rth,90); + lft x1l=lft x2l=Appr; x3=x4=x1+spread1; x5=x6=x3+spread1; + rt x8=w-appr; x7=x5; + top y1=h; 0.5[y1,y2]=math_axis=y7=y8; y1=y3=y5; y2=y4=y6; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(Vvdash_not,12u#+2appr#,asc_height#,asc_depth#); + "Not Vvdash sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(dashVv_sign,12u#+2appr#,v_center(12u#)); + "dashVv sign"; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); pos3(rth,0); pos4(rth,0); + pos5(rth,0); pos6(rth,0); pos7(rth,90); pos8(rth,90); + rt x1r=rt x2r=w-Appr; x3=x4=x1-spread1; x5=x6=x3-spread1; + lft x7=appr; x8=x5; + top y1=h; 0.5[y1,y2]=math_axis=y7=y8; y1=y3=y5; y2=y4=y6; + filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; + filldraw stroke z5e..z6e; filldraw stroke z7e..z8e; + penlabels(1,2,3,4,5,6,7,8); tmp_picture:=currentpicture; +endchar; + +beginchar(dashVv_not,12u#+2appr#,asc_height#,asc_depth#); + "Not dashVv sign"; + currentpicture:=tmp_picture; + pickup tiny.nib; + lft x2l=w-rt x1r=appr+hround 1.75u; + top y1r=h+eps; 0.5[bot y2l,top y1r]=math_axis; + adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); + filldraw stroke z1e..z2e; penlabels(1,2); +endchar; + +beginchar(therefore_sign,arithmetic_bounds); + "Therefore sign"; + pickup null.nib; + a:=(12u-dtsz)/sqrt 12; + x0=0.5w; y0=math_axis; + adjust_dot1((x0,y0+2a),dtsz,false,false); + adjust_dot2((appr+0.5dtsz,y0-a),dtsz,false,false); + adjust_dot3((w-appr-0.5dtsz,y0-a),dtsz,false,false); + dot(1,1'); dot(2,2'); dot(3,3'); +endchar; + +beginchar(because_sign,arithmetic_bounds); + "Because sign"; + pickup null.nib; + a:=(12u-dtsz)/sqrt 12; + x0=0.5w; y0=math_axis; + adjust_dot1((x0,y0-2a),dtsz,false,false); + adjust_dot2((appr+0.5dtsz,y0+a),dtsz,false,false); + adjust_dot3((w-appr-0.5dtsz,y0+a),dtsz,false,false); + dot(1,1'); dot(2,2'); dot(3,3'); +endchar; + +beginchar(bowtie_sign,arithmetic_bounds); + "Bowtie sign"; + pickup tiny.nib; + a:=(11u+rth-tiny)/sqrt 2;% see times_sign + y1r=y3l=good.y(math_axis+0.5a); y2l=y4r=y1r-vround a; + lft x1r=lft x4r=Appr; rt x2l=rt x3l=w-Appr; + adjust_slanted_bar(1r,2l,1,2)(rth-tiny,-1); + adjust_slanted_bar(4r,3l,4,3)(rth-tiny,1); + rth-tiny=x1l-x1r=x2l-x2r=x3l-x3r=x4l-x4r; + z1l=whatever[z1,z2l]; z2r=whatever[z2,z1r]; + z3r=whatever[z3,z4r]; z4l=whatever[z4,z3l]; + filldraw stroke z1e--z2e--z3e--z4e--z1e; + penlabels(1,2,3,4); +endchar; + +% +% domination signs and related things (relations). +% + +beginchar(dominated,12u#+2appr#,v_center(spread4#+rth#)); + "dominated by sign"; + pickup tiny.nib; + top y1r=top y4r=h; y2l=y5l=good.y math_axis; + y1r-y2l=y2l-y3r; y6r=y3r; + lft x2l=Appr; rt x4r=w-Appr; + x1r-x2l=x3r-x2l=x4r-x5l=x6r-x5l=hround(6.5u-tiny); + adjust_slanted_bar(2l,1r,2a,1l)(rth-tiny,-1); + adjust_slanted_bar(2l,3r,2b,3l)(rth-tiny,1); + z2r=whatever[z1r,z2a]; z2r=whatever[z3r,z2b]; + z4r-z4l=z1r-z1l; z5r-z5l=z2r-z2l; z6r-z6l=z3r-z3l; + filldraw stroke z1e--z2e--z3e; filldraw stroke z4e--z5e--z6e; + penlabels(1,2,3,4,5,6); labels(2a,2b); +endchar; + +beginchar(dominating,12u#+2appr#,v_center(spread4#+rth#)); + "dominating sign"; + pickup tiny.nib; + top y1r=top y4r=h; y2l=y5l=good.y math_axis; + y1r-y2l=y2l-y3r; y6r=y3r; + lft x4r=Appr; rt x2l=w-Appr; + x1r-x2l=x3r-x2l=x4r-x5l=x6r-x5l=-hround(6.5u-tiny); + adjust_slanted_bar(2l,1r,2a,1l)(rth-tiny,1); + adjust_slanted_bar(2l,3r,2b,3l)(rth-tiny,-1); + z2r=whatever[z1r,z2a]; z2r=whatever[z3r,z2b]; + z4r-z4l=z1r-z1l; z5r-z5l=z2r-z2l; z6r-z6l=z3r-z3l; + filldraw stroke z3e--z2e--z1e; filldraw stroke z6e--z5e--z4e; + penlabels(1,2,3,4,5,6); labels(2a,2b); +endchar; + +beginchar(Dominated,12u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Dominated by sign"; + pickup tiny.nib; + y2r=0.5[y1,y3]=0.5[y4,y6]=good.y math_axis; + y1-y3=2(y4-y6)=spread1+spread4; + rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r=x4=x6; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l=z4r-z4=z4-z4l; z3r-z3=z3-z3l=z6r-z6=z6-z6l; + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + z5r-z4r=whatever*(z2r-z1r); z5r-z6r=whatever*(z2r-z3r); + z5l-z4l=whatever*(z2r-z1r); z5l-z6l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; filldraw stroke z6e--z5e--z4e; + penlabels(1,2,3,4,5,6); labels(1a,3b,2a,2b); +endchar; + +beginchar(Dominating,12u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Dominated by sign"; + pickup tiny.nib; + y2r=0.5[y1,y3]=0.5[y4,y6]=good.y math_axis; + y1-y3=2(y4-y6)=spread1+spread4; + lft x1=Appr; rt x2r=w-Appr; x1=x1r=x3=x3r=x4=x6; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),-1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l=z4r-z4=z4-z4l; z3r-z3=z3-z3l=z6r-z6=z6-z6l; + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + z5r-z4r=whatever*(z2r-z1r); z5r-z6r=whatever*(z2r-z3r); + z5l-z4l=whatever*(z2r-z1r); z5l-z6l=whatever*(z2r-z3r); + filldraw stroke z1e--z2e--z3e; filldraw stroke z4e--z5e--z6e; + penlabels(1,2,3,4,5,6); labels(1a,3b,2a,2b); +endchar; + +% +% TO BE REVISED +% + +beginchar(Dominated_curly,14u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Curly dominated by sign"; + pickup tiny.nib; + pos2(rth,-90); pos4(rth,-90); + top y1r=top y5r=h; y2=math_axis=0.5[y1r,y3l]=0.5[y5r,y8r]; + lft x2=appr; rt x5r=rt x8r=w-appr; x5r-x1r=x8r-x3l=hround 2.5u; + x4r=2/3[x2r,x1r]; y4r=y2r; a:=diag_width(rth,z1r-z4r); + pos1(a,0); pos5(a,0); pos3(a,180); pos8(a,0); + filldraw stroke z1e{z4r-z1r}...z2e{left}; + filldraw stroke z3e{z4l-z3l}...z2e{left}; +% + rt x6l=rt x7l=hround(0.5w+0.5u); y6l=y7l=good.y math_axis; + tmp_path:=z5l{z4r-z1r}...z6l; + z0=direction 1 of tmp_path; a:=angle z0; + pos6(rth,a+90); pos7(rth,-90-a); + tmp_path:=z8r{z4l-z3l}...z7r{z0 yscaled -1}; + t:=xpart(tmp_path intersectiontimes (z6l..(x5r,y6l))); + filldraw z5l{z4r-z1r}...z6l& z7l...z8l{z3l-z4l} + --subpath (0,t-eps) of tmp_path + --reverse subpath (0,t-eps) of (z5r{z4r-z1r}...z6r{z0})--cycle; + penlabels(0,1,2,3,4,5,6,7,8); +endchar; + +beginchar(Dominating_curly,14u#+2appr#,v_center(spread4#+spread1#+rth#)); + "Curly dominating sign"; + pickup tiny.nib; + pos2(rth,90); pos4(rth,90); + top y1l=top y5l=h; y2=math_axis=0.5[y1l,y3r]=0.5[y5l,y8l]; + rt x2=w-appr; lft x5l=lft x8l=appr; x5l-x1l=x8l-x3r=-hround 2.5u; + x4l=2/3[x2l,x1l]; y4l=y2l; a:=diag_width(rth,z1l-z4l); + pos1(a,0); pos5(a,0); pos3(a,180); pos8(a,0); + filldraw stroke z1e{z4l-z1l}...z2e{right}; + filldraw stroke z3e{z4r-z3r}...z2e{right}; +% + lft x6r=lft x7r=hround(0.5w-0.5u); y6r=y7r=good.y math_axis; + tmp_path:=z5r{z4l-z1l}...z6r; + z0=direction 1 of tmp_path; a:=angle z0; + pos6(rth,a+90); pos7(rth,-90-a); + tmp_path:=z8l{z4r-z3r}...z7l{z0 yscaled -1}; + t:=xpart(tmp_path intersectiontimes (z6r..(x5l,y6r))); + filldraw z5r{z4l-z1l}...z6r& z7r...z8r{z3r-z4r} + --subpath (0,t-eps) of tmp_path + --reverse subpath (0,t-eps) of (z5l{z4l-z1l}...z6l{z0})--cycle; + penlabels(0,1,2,3,4,5,6,7,8); +endchar; + +beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#)); +pickup tiny.nib; +rt x1=rt x1r=rt x3=rt x3r=w-Appr; lft x2r=appr-hround u; +x1r-x1l=x3r-x3l=rth-tiny; +y2r=y2a=y2b=good.y math_axis; y1-y2r=y2r-y3=0.5(h+d-rth); +adjust_slanted_bar(1,2r,1a,2a)(0.5(rth-tiny),-1); +adjust_slanted_bar(3,2r,3b,2b)(0.5(rth-tiny),1); +z1r=whatever[z1a,z2r]; z3r=whatever[z3b,z2r]; +z1l-2z1+z1r=whatever*(z2a-z1); +z3l-2z3+z3r=whatever*(z2b-z3); +z2l-z1l=whatever*(z2b-z1); +z2l-z3l=whatever*(z2b-z3); +filldraw stroke z1e--z3e--z2e--z1e; +% penlabels(1,2,3); labels(1a,2a,2b,3b); +numeric a; pair u_; u_=z2r-z3r; a=1/abs cosd angle u_; +endpicture; + +beginchar(triangle_left,12u#+2appr#, + v_center(spread2#+rth#)); + "Triangle left"; + currentpicture:=tmp_picture; +endchar; + +beginchar(not_triangle_left,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle left"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y2l=h; 0.5[bot y2l,top y1l]=good.y math_axis; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginchar(triangle_left_eq,12u#+2appr#, + v_center(if true_size: spread2#+rth#+a*spread1# + else: spread2#+rth#+spread1# + fi)); + "Triangle left equal"; + currentpicture:=tmp_picture + shifted(0,vround(a*0.5spread1)); + pickup tiny.nib; + penpos1((rth-tiny)*a,90); + penpos2((rth-tiny)*a,90); + rt x2=w-Appr; lft x1=appr-hround u; y2=-d+0.5rth; z1-z2=whatever*u_; + filldraw stroke z1e..z2e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(not_triangle_left_eq,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle left equal"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); bot y1l=-d; top y2l=h; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginpicture(tmp,12u#+2appr#,v_center(spread2#+rth#)); +pickup tiny.nib; +lft x1=lft x1r=lft x3=lft x3r=Appr; rt x2r=w-appr+hround u; +x1l-x1r=x3l-x3r=rth-tiny; +y2r=y2a=y2b=good.y math_axis; y1-y2r=y2r-y3=0.5(h+d-rth); +adjust_slanted_bar(1,2r,1a,2a)(0.5(rth-tiny),1); +adjust_slanted_bar(3,2r,3b,2b)(0.5(rth-tiny),-1); +z1r=whatever[z1a,z2r]; z3r=whatever[z3b,z2r]; +z1l-2z1+z1r=whatever*(z2a-z1); +z3l-2z3+z3r=whatever*(z2b-z3); +z2l-z1l=whatever*(z2b-z1); +z2l-z3l=whatever*(z2b-z3); +filldraw stroke z1e--z2e--z3e--z1e; +% penlabels(1,2,3); labels(1a,2a,2b,3b); +numeric a; pair u_; u_=z2r-z3r; a=1/abs cosd angle u_; +endpicture; + +beginchar(triangle_right,12u#+2appr#,v_center(spread2#+rth#)); + "Triangle right"; + currentpicture:=tmp_picture; +endchar; + +beginchar(not_triangle_right,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle right"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); + top y2l=h; 0.5[bot y2l,top y1l]=good.y math_axis; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); +endchar; + +beginchar(triangle_right_eq,12u#+2appr#, + v_center(if true_size: + spread2#+rth#+a*spread1# + else: spread2#+rth#+spread1# + fi)); + "Triangle right equal"; + currentpicture:=tmp_picture + shifted(0,vround(a*0.5spread1)); + pickup tiny.nib; + penpos1((rth-tiny)*a,90); + penpos2((rth-tiny)*a,90); + lft x2=Appr; rt x1=w-appr+hround u; y2=-d+0.5rth; z1-z2=whatever*u_; + filldraw stroke z2e..z1e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +beginchar(not_triangle_right_eq,12u#+2appr#,asc_height#,asc_depth#); + "Not triangle right equal"; + currentpicture:=tmp_picture; + pickup tiny.nib; + pos1(rth,0); pos2(rth,0); bot y1l=-d; top y2l=h; + lft x1l=lft x2l=hround 0.5(w-rth); + filldraw stroke z2e..z1e; penlabels(1,2); + tmp_picture:=currentpicture; +endchar; + +vardef d_problem(expr origin,top_lim,side_lim,breadth)= + save a,b,c; + a=abs((side_lim-xpart origin)/(top_lim-ypart origin)); + b=abs(breadth/(top_lim-ypart origin)); + begingroup + vardef f(expr c)= + (1+a**2-2a*b*c+(b*c)**2)*(c**2)<1 + enddef; + c=solve f(0,breadth); + endgroup; + breadth*(c,1+-+c) +enddef; + +%%% !!! +beginchar(angle_sign,12u#+2appr#,asc_height#,0); + "Angle sign"; + pickup tiny.nib; + rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u; + bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90); + (x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny); + y2r=y1r; z2r-z3r=whatever*(z2l-z3l); + filldraw stroke z1e--z2e--z3e; + penlabels(1,2,3); +endchar; + +%%% !!! +beginchar(measured_angle,12u#+2appr#,asc_height#,asc_depth#); + "Measured angle sign"; + pickup tiny.nib; + rt x1l=w-appr; lft x2l=appr; rt x3r=w-appr-hround 1.5u; + bot y1l=bot y2l=0; top y3l=h+eps; pos1(rth,90); + (x3r-x3l,y3l-y3r)=d_problem(z2l,y3l,x3r,rth-tiny); + y2r=y1r; z2r-z3r=whatever*(z2l-z3l); + filldraw stroke z1e--z2e--z3e; + % + numeric a; + y2l=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2l+0.5(h+d))+eps; + pos5(rth,0); + a=x5r-x2l; 0.5 y4=-d+eps; 0.5(x4-x2l)=a+-+min((0.5(y4-y2l)),a); + 0.5(z6-z2l)=a*dir min((angle(z3l-z2l)-angle(z4-z2l)),90); + numeric t[]; + tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r; + tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r); + t1=xpart(tmp_path intersectiontimes (z2l..z4)); + t2=xpart(tmp_path intersectiontimes (z2l..z6)); + z4r=point t1 of tmp_path; z6r=point t2 of tmp_path; + t3=xpart(tmpp_path intersectiontimes (z2l..z6)); + t4=xpart(tmpp_path intersectiontimes (z2l..z4)); + z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path; + filldraw subpath (t1,t2) of tmp_path + --subpath (t3,t4) of tmpp_path--cycle; + penlabels(1,2,3,4,5,6); +endchar; + +%%% !!! +beginchar(spherical_angle,arithmetic_bounds); + "Spherical angle sign"; + pickup tiny.nib; + % < part + y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4; + rt x1=w-Appr; lft x2r=Appr; x1=x1r=x3=x3r; + adjust_slanted_bar(2r,1,2a,1a)(0.5(rth-tiny),-1); + adjust_slanted_bar(2r,3,2b,3b)(0.5(rth-tiny),1); + z1r=whatever[z2r,z1a]; z3r=whatever[z2r,z3b]; + z1r-z1=z1-z1l; z3r-z3=z3-z3l; + z2l-z1l=whatever*(z2r-z1r); z2l-z3l=whatever*(z2r-z3r); + filldraw stroke z3e--z2e--z1e; + % ) part + y2r=y5r; rt x5r=hround max(0.6[Appr,w-Appr]+0.5rth,x2r+0.5(h+d))+eps; + top y6=h+eps; y6-y2r=y2r-y4; pos5(rth,0); + numeric t[]; + tmp_path:=halfcircle rotated -90 scaled 2(x5r-x2r) shifted z2r; + tmpp_path:=reverse(halfcircle rotated -90 scaled 2(x5l-x2r) shifted z2r); + t1=xpart(tmp_path intersectiontimes ((0,y4)..(w,y4))); + t2=xpart(tmp_path intersectiontimes ((0,y6)..(w,y6))); + z4r=point t1 of tmp_path; z6r=point t2 of tmp_path; + t3=xpart(tmpp_path intersectiontimes (z2r..z6r)); + t4=xpart(tmpp_path intersectiontimes (z2r..z4r)); + z4l=point t4 of tmpp_path; z6l=point t3 of tmpp_path; + filldraw subpath (t1,t2) of tmp_path + --subpath (t3,t4) of tmpp_path--cycle; + penlabels(1,2,3,4,5,6); +endchar; + +beginchar(between_sign,7u#+2appr#,body_height#,paren_depth#); + "Between sign"; + pickup tiny.nib; + pos2(hround 0.75[hair,stem],0); pos5(hround 0.75[hair,stem],0); + top y1l=top y4r=h+eps; bot y3l=bot y6r=-d-eps; + y0r=y0l=y2=y5=math_axis; + rt x1r=rt x3r=rt x5r+hround 0.75u=w-appr; + lft x4l=lft x6l=lft x2l-hround 0.75u=appr; + x2l-x0l=x0r-x5r=x5r-x2l; + (x1r-x1l,y1l-y1r)=(x3r-x3l,y3r-y3l) + =(x4r-x4l,y4r-y4l)=(x6r-x6l,y6l-y6r) + =d_problem(z0l,y1l,x1r,max(0,vair-tiny)); + filldraw stroke z1e{z0l-z1l}..z2e..z3e{z3l-z0l}; + filldraw stroke z4e{z0r-z4r}..z5e..z6e{z6r-z0r}; + penlabels(1,2,3,4,5,6); +endchar; + +%%% !!! +beginchar(times_left_three,arithmetic_bounds); + "Left three times sign"; + pickup tiny.nib; + top y1l=top y3r=h; bot y2r=bot y4l=-d; + lft x1l=lft x4l=appr; rt x2r=rt x3r=w-appr; + adjust_slanted_bar(1l,2r,1r,2l)(rth-tiny,1); + adjust_slanted_bar(3r,4l,3l,4r)(rth-tiny,-1); + z1=0.5[z1l,z1r]; z2=0.5[z2l,z2r]; + forsuffixes $=r,l: z5$=whatever[z1,z2]; + z5$=whatever[z3$,z4$]; endfor; + filldraw stroke z1e..z2e; filldraw stroke z5e..z4e; + penlabels(1,2,3,4,5); +endchar; + +%%% !!! +beginchar(times_right_three,arithmetic_bounds); + "Right three times sign"; + pickup tiny.nib; + top y1l=top y3r=h; bot y2r=bot y4l=-d; + lft x1l=lft x4l=appr; rt x2r=rt x3r=w-appr; + adjust_slanted_bar(1l,2r,1r,2l)(rth-tiny,1); + adjust_slanted_bar(3r,4l,3l,4r)(rth-tiny,-1); + z3=0.5[z3l,z3r]; z4=0.5[z4l,z4r]; + forsuffixes $=r,l: z5$=whatever[z3,z4]; + z5$=whatever[z1$,z2$]; endfor; + filldraw stroke z3e..z4e; filldraw stroke z5e..z2e; + penlabels(1,2,3,4,5); +endchar; + +beginchar(pitchfork_sign,12u#+2appr#,asc_height#,0); + "Small cap sign"; + ensure_centering_of(rth); + pickup tiny.nib; + pos1(rth,180); pos2(rth,180); + pos4(rth,0); pos5(rth,0); pos6(rth,0); pos7(rth,0); + y3+0.5rth=x_height+o; bot y1r=bot y5r=bot y7+o=-d; + top y6=h; y2=y4=2/3[y3,y1r]; + lft x1r=w-rt x5r=appr+hround 0.8u; + x1=x2; x4=x5; x3=x6=x7=0.5w; + filldraw stroke z1e..z2e; filldraw stroke z4e..z5e; + filldraw stroke z6e..z7e; + pickup rule.nib; autorounded; + draw z2 up_to_right z3 right_to_down z4; + penlabels(1,2,3,4,5,6,7); +endchar; + +beginchar(smile_sign,16u#+2appr#,v_center(0.5x_height#)); + "Smile sign"; + pickup tiny.nib; + a:=vround 0.5[vair,stem]; pos2(a,90); + y2-0.5a=vround(-d-0.5a); y1l=y3l=good.y h; + lft x1l=appr; rt x3l=w-appr; x2=0.5[x1l,x3l]; + z1'-z1l=(z2l-z1l) xscaled 1/3; + z3'-z3l=(z2l-z3l) xscaled 1/3; + pos1(hair,angle(z1'-z1l)+90); + pos3(hair,angle(z3'-z3l)-90); + filldraw stroke z1e{z1'-z1l}...z2e{right}...z3e{z3l-z3'}; + penlabels(1,2,3); labels(1',3'); +endchar; + +beginchar(frown_sign,16u#+2appr#,v_center(0.5x_height#)); + "Frown sign"; + pickup tiny.nib; + a:=vround 0.5[vair,stem]; pos2(a,90); + y2+0.5a=vround(h+0.5a); y1r=y3r=good.y -d; + lft x1r=appr; rt x3r=w-appr; x2=0.5[x1r,x3r]; + z1'-z1r=(z2r-z1r) xscaled 1/3; + z3'-z3r=(z2r-z3r) xscaled 1/3; + pos1(hair,angle(z1'-z1r)+90); + pos3(hair,angle(z3'-z3r)-90); + filldraw stroke z1e{z1'-z1r}...z2e{right}...z3e{z3r-z3'}; + penlabels(1,2,3); labels(1',3'); +endchar; |