% mathematical symbols by Anthony Phan. % file: mathineq.mf (inequalities) % last modification: May 16, 2005. % Only known charcodes will be generated. % Inequality signs and related things (relations). % Some pictures overlap the bottom. It is necessary % for correct centering of the whole box. % Spreads for cross bars have been checked. % Curly slants are strange: it is half way to two % extreme solutions... def horizontal_rules_list=math_axis, -body_depth,-desc_depth,x_height,cap_height,asc_height,body_height enddef; use_rule1; make_sim_picture; if (main_name_string="less") or (main_name_string="greater"): beginpicture(first, 12u#+2appr#,v_center(spread4#+rth#)); pickup tiny.nib; 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; a:=2vround 0.5(spread1/abs cosd angle(z2r-z3r)); endpicture; beginpicture(second, 12u#+2appr#,v_center(spread4#+rth#)); pickup tiny.nib; y2r=0.5[y1,y3]=good.y math_axis; y1-y3=spread4; lft x1=Appr; rt x2r=w-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; endpicture; else: beginpicture(first, 12u#+2appr#,v_center(spread4#+rth#)); pickup tiny.nib; pos2(rth,90); pos4(rth,90); lft x2=Appr; rt x1r=rt x3l=w-Appr; x4=0.50[x2,x1r]; y2=y4=math_axis; y3l-y2r=y2l-y1r=0.5spread4; y1r=y1l; y3r=y3l; x1r-x1l=diag_width(rth-tiny,z4r-z1r); x3l-x3r=diag_width(rth-tiny,z4l-z3l); filldraw stroke z2e{right}...z1e{z1r-z4r}; filldraw stroke z2e{right}...z3e{z3l-z4l}; a:=spread1; endpicture; beginpicture(second, 12u#+2appr#,v_center(spread4#+rth#)); pickup tiny.nib; pos2(rth,-90); pos4(rth,-90); rt x2=w-Appr; lft x1l=lft x3r=Appr; x4=0.50[x2,x1l]; y2=y4=math_axis; y3r-y2l=y2r-y1l=0.5spread4; y1r=y1l; y3r=y3l; x1l-x1r=-diag_width(rth-tiny,z4l-z1l); x3r-x3l=-diag_width(rth-tiny,z4r-z3r); filldraw stroke z2e{left}...z1e{z1l-z4l}; filldraw stroke z2e{left}...z3e{z3r-z4r}; endpicture; fi if (main_name_string="greater") or (main_name_string="successor"): tmp_picture:=first_picture; first_picture:=second_picture; second_picture:=tmp_picture; fi % % Let's go % beginchar(main_name_with(), 12u#+2appr#,v_center(spread4#+rth#)); main_name_string&" sign"; currentpicture:=first_picture; endchar; beginchar(main_name_with(_not), 12u#+2appr#,asc_height#,asc_depth#); "not " & main_name_string&" sign"; currentpicture:=first_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_slant), 12u#+2appr#,v_center(spread4#+spread1#+rth#)); main_name_string&"-slant sign"; currentpicture:=first_picture shifted(0,0.5a); save b; pickup tiny.nib; if (main_name_string="less") or (main_name_string="greater"): y0=good.y math_axis; lft x1=Appr; rt x2=w-Appr; b=(rth-tiny)/cosd angle(x2-x1,0.5spread4); penpos1(b,90); penpos2(b,90); if (main_name_string="less"): y1=y0-0.5a; y1-y2=0.5spread4; else: y2=y0-0.5a; y1-y2=-0.5spread4; fi filldraw stroke z1e..z2e; penlabels(1,2); elseif main_name_string="predecessor": pos2(rth,-90); pos3(rth,-90); lft x2=Appr; y2=y3=math_axis-0.5spread1; rt x1l=rt x1=w-Appr; y1=y2r-0.5spread4; x3=0.50[x2,x1l]; y1l=y1r=y2r-vround(0.5spread4 *(0.5[1,1/abs cosd angle(z3l-z1)])); x1l-x1r=diag_width(rth-tiny,z3l-z1l); filldraw stroke z1e{z3l-z1l}...z2e{left}; penlabels(1,2,3); else: pos2(rth,-90); pos3(rth,-90); rt x2=w-Appr; y2=y3=math_axis-0.5spread1; lft x1l=lft x1=Appr; y1=y2r-0.5spread4; x3=0.50[x2,x1l]; y1l=y1r=y2r-vround(0.5spread4 *(0.5[1,1/abs cosd angle(z3l-z1)])); x1l-x1r=-diag_width(rth-tiny,z3l-z1l); filldraw stroke z1e{z3l-z1l}...z2e{right}; penlabels(1,2,3); fi tmp_picture:=currentpicture; endchar; beginchar(main_name_with(_not_slant), 12u#+2appr#,asc_height#,asc_depth#); "not "&main_name_string&"-slant sign"; currentpicture:=tmp_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_eq), 12u#+2appr#,v_center(spread4#+spread0#+rth#)); main_name_string&"-bar sign"; currentpicture:=first_picture shifted(0,0.5spread0); pickup tiny.nib; pos1(rth,90); pos2(rth,90); rt x2=w-Appr; lft x1=Appr; y1=y2=math_axis-0.5(spread4+spread0); filldraw stroke z1e..z2e; penlabels(1,2); tmp_picture:=currentpicture; endchar; beginchar(main_name_with(_not_eq), 12u#+2appr#,asc_height#,asc_depth#); "not "&main_name_string&"-bar sign"; currentpicture:=tmp_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_eq_not), 12u#+2appr#,v_center(spread4#+spread0#+rth#)); main_name_string&"-not bar sign"; currentpicture:=tmp_picture; pickup tiny.nib; y0=math_axis-0.5(spread4+spread0); x0=0.5w; v_adjust(1r,2l,y0,1.5spread1-0.5rth); lft x2l-Appr=w-Appr-rt x1r=hround 3.5u; adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); filldraw stroke z1e..z2e; penlabels(0,1,2); endchar; beginchar(main_name_with(_eq_varnot), 12u#+2appr#,v_center(spread4#+spread0#+rth#)); main_name_string&"-varnot bar sign"; currentpicture:=tmp_picture; pickup tiny.nib; y0=math_axis-0.5(spread4+spread0); x0=0.5w; v_adjust(1l,2l,y0,1.5spread1-0.5rth); pos1(rth,0); pos2(rth,0); lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(0,1,2); endchar; beginchar(main_name_with(_eqq), 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); main_name_string&" equal sign"; currentpicture:=first_picture shifted(0,0.5(spread1+spread0)); pickup tiny.nib; pos1(rth,90); pos2(rth,90); pos3(rth,90); pos4(rth,90); rt x2=rt x4=w-Appr; lft x1=lft x3=Appr; y1=y2=math_axis-0.5(spread4-spread1+spread0); y3=y4=y1-spread1; filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; penlabels(1,2,3,4); tmp_picture:=currentpicture; endchar; beginchar(main_name_with(_not_eqq), 12u#+2appr#,v_center(max(asc_height#+asc_depth#, spread4#+spread1#+spread0#+rth#))); "not "&main_name_string&" equal sign"; currentpicture:=tmp_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+2spread1)); lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_eqq_not), 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); main_name_string&" but not equal sign"; currentpicture:=tmp_picture; pickup tiny.nib; y0=math_axis-0.5(spread4+spread0); x0=0.5w; v_adjust(1r,2l,y0,2.5spread1-0.5rth); lft x2l-Appr=w-Appr-rt x1r=hround 2.75u; adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); filldraw stroke z1e..z2e; penlabels(0,1,2); endchar; beginchar(main_name_with(_eqq_varnot), 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); "variant "&main_name_string&" but not equal sign"; currentpicture:=tmp_picture; pickup tiny.nib; y0=math_axis-0.5(spread4+spread0); x0=0.5w; v_adjust(1l,2l,y0,2.5spread1-0.5rth); pos1(rth,0); pos2(rth,0); lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_upperslant), 12u#+2appr#,v_center(spread4#+spread1#+rth#)); main_name_string &"with upper slant sign"; currentpicture:=first_picture shifted(0,-0.5a); save b; pickup tiny.nib; if (main_name_string="less") or (main_name_string="greater"): y0=good.y math_axis; lft x1=Appr; rt x2=w-Appr; b=(rth-tiny)/cosd angle(x2-x1,0.5spread4); penpos1(b,90); penpos2(b,90); if (main_name_string="less"): y1=y0+0.5a; y1-y2=-0.5spread4; else: y2=y0+0.5a; y1-y2=0.5spread4; fi filldraw stroke z1e..z2e; penlabels(1,2); elseif main_name_string="predecessor": pos2(rth,90); pos3(rth,90); lft x2=Appr; y2=y3=math_axis+0.5spread1; rt x1l=rt x1=w-Appr; y1=y2r+0.5spread4; x3=0.50[x2,x1l]; y1l=y1r=y2r+vround(0.5spread4 *(0.5[1,1/abs cosd angle(z3l-z1)])); x1l-x1r=diag_width(rth-tiny,z3l-z1l); filldraw stroke z1e{z3l-z1l}...z2e{left}; penlabels(1,2,3); else: pos2(rth,90); pos3(rth,90); rt x2=w-Appr; y2=y3=math_axis+0.5spread1; lft x1l=lft x1=Appr; y1=y2r+0.5spread4; x3=0.50[x2,x1l]; y1l=y1r=y2r+vround(0.5spread4 *(0.5[1,1/abs cosd angle(z3l-z1)])); x1l-x1r=-diag_width(rth-tiny,z3l-z1l); filldraw stroke z1e{z3l-z1l}...z2e{right}; penlabels(1,2,3); fi tmp_picture:=currentpicture; endchar; beginchar(main_name_with(_not_upperslant), 12u#+2appr#,asc_height#,asc_depth#); "not " & main_name_string&" upper slant sign"; currentpicture:=tmp_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); top y1l=h; bot y2l=-d; lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_opposite), 12u#+2appr#,v_center(1.5spread4#+spread1#+rth#)); main_name_string&" and opposite sign"; currentpicture:=(first_picture shifted(0,vround(0.5a+0.25spread4))) +(second_picture shifted(0,-vround(0.5a+0.25spread4))); endchar; beginchar(main_name_with(_eq_opposite),12u#+2appr#, v_center(2spread4#+2spread0#+rth#)); main_name_string&" bar opposite sign"; currentpicture:=(first_picture shifted(0,vround(spread0+0.5spread4))) +(second_picture shifted(0,-vround(spread0+0.5spread4))); pickup tiny.nib; pos1(rth,90); pos2(rth,90); lft x1=Appr; rt x2=w-Appr; y1=y2=math_axis; filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_eqq_opposite),12u#+2appr#, v_center(2spread4#+2spread0#+spread1#+rth#)); main_name_string&" equal opposite 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-y3=y2-y4=spread1; 0.5[y1,y3]=0.5[y2,y4]=math_axis; currentpicture:=(first_picture shifted(0,vround(spread0+0.5spread1+0.5spread4))) +(second_picture shifted(0,-vround(spread0+0.5spread1+0.5spread4))); filldraw stroke z1e..z2e; filldraw stroke z3e..z4e; penlabels(1,2,3,4); endchar; beginchar(main_name_with(_sim),12u#+2appr#, v_center(spread4#+spread1#+spread0#+rth#)); main_name_string&" similarity sign"; numeric b,c; b=vround(0.5spread1+0.5spread0); c=b-vround(0.5(spread4+spread1)+spread0); currentpicture:=(first_picture shifted(0,b)) +(sim_picture shifted(0,c)); tmp_picture:=currentpicture; endchar; beginchar(main_name_with(_not_sim), 12u#+2appr#,v_center(max(asc_height#+asc_depth#, spread4#+spread1#+spread0#+rth#))); "not "&main_name_string&" similarity sign"; currentpicture:=tmp_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+2spread1)); lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_sim_not), 12u#+2appr#,v_center(spread4#+spread1#+spread0#+rth#)); main_name_string&" but not similarity sign"; currentpicture:=tmp_picture; pickup tiny.nib; y0=math_axis-0.5(spread4+spread0); x0=0.5w; v_adjust(1r,2l,y0,2spread1); lft x2l-Appr=w-Appr-rt x1r=hround 2.75u; adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); filldraw stroke z1e..z2e; penlabels(0,1,2); endchar; beginchar(main_name_with(_approx), 12u#+2appr#,v_center(spread4#+2spread1#+spread0#+2rth#)); main_name_string&" approximative sign"; numeric b,c; b=vround(spread1+0.5spread0+0.5rth); c=b-vround(0.5(spread4+spread1)+spread0); currentpicture:=(first_picture shifted(0,b)) +(sim_picture shifted(0,c)) +(sim_picture shifted(0,c-spread1-rth)); tmp_picture:=currentpicture; endchar; beginchar(main_name_with(_not_approx), 12u#+2appr#,v_center(max(asc_height#+asc_depth#, spread4#+2spread1#+spread0#+2rth#))); main_name_string&" but not approximative sign"; currentpicture:=tmp_picture; pickup tiny.nib; pos1(rth,0); pos2(rth,0); v_adjust(1l,2l,math_axis,max(h+d,spread4+spread0+3spread1)); lft x1l=lft x2l=hround 0.5(w-rth); filldraw stroke z1e..z2e; penlabels(1,2); endchar; beginchar(main_name_with(_approx_not), 12u#+2appr#,v_center(spread4#+2spread1#+spread0#+2rth#)); main_name_string&" but not approximative sign"; currentpicture:=tmp_picture; pickup tiny.nib; y0=math_axis-0.5(spread4+spread0); x0=0.5w; v_adjust(1r,2l,y0,3spread1); lft x2l-Appr=w-Appr-rt x1r=hround 2.5u; adjust_slanted_bar(2l,1r,2r,1l)(rth-tiny,-1); filldraw stroke z1e..z2e; penlabels(0,1,2); endchar; beginchar(main_name_with(_dot), 12u#+2appr#,v_center(spread4#+rth#)); main_name_string&" with dot sign"; currentpicture:=first_picture; pickup tiny.nib; adjust_dot1(( if (main_name_string="less") or (main_name_string="predecessor"): w-Appr-u-0.5dtsz else: Appr+u+0.5dtsz fi, good.y math_axis),dtsz,false,true); dot(1,1'); endchar;