summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/mdsymbol/mdrelations.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/mdsymbol/mdrelations.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/mdsymbol/mdrelations.mf1184
1 files changed, 1184 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mdsymbol/mdrelations.mf b/Master/texmf-dist/fonts/source/public/mdsymbol/mdrelations.mf
new file mode 100644
index 00000000000..3514591e083
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mdsymbol/mdrelations.mf
@@ -0,0 +1,1184 @@
+%
+% Copyright (c) 2011, Sebastian Schubert <schubert.seb@googlemail.com>
+%
+% This Font Software is licensed under the SIL Open Font License,
+% Version 1.1. This license is in the accompanying file OFL.txt, and
+% is also available with a FAQ at: http://scripts.sil.org/OFL
+%
+
+vardef ifneg(text values) =
+ select(negated)(values)
+enddef;
+
+% equal signs
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(1,3) * equal_spread#); "equal";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(4/2,7/2) * equal_spread#); "equiv";
+ s := equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex, right_ex, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1/2,5/2) * equal_spread#); "sim";
+ draw_sim(a, left_ex, right_ex, 1/4equal_spread, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 5/2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(3/2,6/2) * equal_spread#); "approx";
+ s := 1/2equal_spread;
+
+ draw_sim(a, left_ex + s * up, right_ex + s * up, 1/4equal_spread, line_thickness);
+ draw_sim(b, left_ex - s * up, right_ex - s * up, 1/4equal_spread, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(5/2,7/2) * equal_spread#); "triple sim";
+ s := equal_spread;
+
+ draw_sim(a, left_ex + s * up, right_ex + s * up, 1/4equal_spread, line_thickness);
+ draw_sim(b, left_ex, right_ex, 1/4equal_spread, line_thickness);
+ draw_sim(c, left_ex - s * up, right_ex - s * up, 1/4equal_spread, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(3/2,6/2) * equal_spread#); "sim equal";
+ s := 1/2equal_spread;
+
+ draw_sim(a, left_ex + s * up, right_ex + s * up, 1/4equal_spread, line_thickness);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(3/2,6/2) * equal_spread#); "equal sim";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_sim(a, left_ex - s * up, right_ex - s * up, 1/4equal_spread, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(5/2,7/2,6/2) * equal_spread#); "cong";
+ s := equal_spread;
+
+ draw_sim(a, left_ex + s * up, right_ex + s * up, 1/4equal_spread, line_thickness);
+ draw_line(left_ex, right_ex, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ elseif negated = 2:
+ if sign = 1:
+ stroke_through(centre - 5/8s * up, 7/4equal_spread);
+ else:
+ stroke_through(centre - 1/2s * up, 2equal_spread);
+ fi;
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(5/2,7/2) * equal_spread#); "approx equal";
+ s := equal_spread;
+
+ draw_sim(a, left_ex + s * up, right_ex + s * up, 1/4equal_spread, line_thickness);
+ draw_sim(b, left_ex, right_ex, 1/4equal_spread, line_thickness);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(1,3) * equal_spread# + ifneg(1,0) * 2/5order_width#); "bump equal";
+ s := 1/2equal_spread;
+
+ draw_bump(a, 1, left_ex + s * up, right_ex + s * up, order_width/5, line_thickness);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(4/2,7/2) * equal_spread# + ifneg(1,0) * 2/5order_width#); "bump over equal";
+ s := equal_spread;
+
+ draw_bump(a, 1, left_ex + s * up, right_ex + s * up, order_width/5, line_thickness);
+ draw_line(left_ex, right_ex, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(2/2,7/2) * equal_spread# + ifneg(1,0) * 2/5order_width#); "double bump equal";
+ s := 1/2equal_spread;
+
+ draw_bump(a, 1, left_ex + s * up, right_ex + s * up, order_width/5, line_thickness);
+ draw_bump(b, -1, left_ex - s * up, right_ex - s * up, order_width/5, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(6/2,7/2) * equal_spread# + ifneg(1,0) * 3/4dot_size#); "dot equal";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ fill dot(centre + 3s * up, 3/4dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(6/2,7/2) * equal_spread# + ifneg(1,0) * 3/4dot_size#); "equal dot";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ fill dot(centre - 3s * up, 3/4dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(6/2,7/2) * equal_spread# + ifneg(1,0) * 3/4dot_size#); "dot equal dot";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ fill dot(centre + 3s * up, 3/4dot_size);
+ fill dot(centre - 3s * up, 3/4dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(6/2,7/2) * equal_spread# + ifneg(1,0) * 3/4dot_size#); "falling dot equal";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ fill dot(left_ex + sign * 3/4dot_size * right + 3s * up, 3/4dot_size);
+ fill dot(right_ex - sign * 3/4dot_size * right - 3s * up, 3/4dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 1:
+ for sign = 1, -1:
+ beginorder(sign, 4/3order_width# + 3/4dot_size#, equal_spread# + dot_size#); "colon equal";
+ s := 1/2equal_spread;
+ pair left_sep;
+ left_sep := left_ex + sign * (3/4dot_size + 1/3order_width) * right;
+
+ fill dot(left_ex + s * up + sign * 3/4dot_size * right, 3/4dot_size);
+ fill dot(left_ex - s * up + sign * 3/4dot_size * right, 3/4dot_size);
+ draw_line(left_sep + s * up, right_ex + s * up, false);
+ draw_line(left_sep - s * up, right_ex - s * up, false);
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width#, ifneg(1/2,5/2) * equal_spread#); "smile";
+ draw_smile(a, sign, left_ex, right_ex, 1/2equal_spread, line_thickness, true);
+
+ if negated = 1:
+ stroke_through(centre, 5/2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width#, ifneg(11/6,7/2) * equal_spread#); "smile frown";
+ s := 2/3equal_spread;
+
+ draw_smile(a, sign, left_ex + s * up, right_ex + s * up, 1/2equal_spread, line_thickness, true);
+ draw_smile(b, -sign, left_ex - s * up, right_ex - s * up, 1/2equal_spread, line_thickness, true);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width#, ifneg(5/2,7/2) * equal_spread#); "smile over equal";
+ s := 1equal_spread;
+
+ draw_smile(a, sign, left_ex + s * up, right_ex + s * up, 1/2equal_spread, line_thickness, true);
+ draw_line(left_ex, right_ex, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 7/2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(1,3) * equal_spread#); "equal circ";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ draw_circle(centre, 5/6s, 3/4line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, ifneg(9/2,10/2) * equal_spread#); "circ equal";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ draw_circle(centre + 7/2s * up, 5/6s, 3/4line_thickness);
+
+ if negated = 1:
+ stroke_through(centre + s * up, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+for sign = 1, -1:
+ if negated < 2:
+ beginorder(1, order_width#, 5equal_spread#); "wedge equal";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+
+ draw_less(a, centre + (7/2 + sign * 3/2) * s * up, centre + (7/2 - sign * 3/2) * s * up, 4s, line_thickness, false, true);
+
+ if negated = 1:
+ stroke_through(centre + s * up, 4equal_spread);
+ fi;
+ endchar;
+ fi;
+endfor;
+
+if negated < 2:
+ beginorder(1, order_width#, 5equal_spread#); "star equal";
+ s := 1/2equal_spread;
+ r := 5/4s + 3/4line_thickness;
+ t := 1/11r;
+
+ reg_poly_points(a)(5, centre + 7/2s * up, r, 90);
+ reg_poly_points(b)(5, centre + 7/2s * up, .4r, 126);
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ %draw_triangle(a, centre + 7/2s * up, 3/2s, 90, 3/4line_thickness);
+
+ fill z.a0 -- z.b0 -- z.a1 -- z.b1 -- z.a2 -- z.b2 -- z.a3 -- z.b3 -- z.a4 -- z.b4 -- cycle;
+
+ if negated = 1:
+ stroke_through(centre + s * up, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width#, 5equal_spread#); "triangle equal";
+ s := 1/2equal_spread;
+
+ draw_line(left_ex + s * up, right_ex + s * up, false);
+ draw_line(left_ex - s * up, right_ex - s * up, false);
+ draw_triangle(a, centre + 7/2s * up, 3/2s, 90, 3/4line_thickness);
+
+ if negated = 1:
+ stroke_through(centre + s * up, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+% element signs
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,3/2) * equal_spread# + greater_spread#); "element";
+ draw_subset(a, left_ex, right_ex, greater_spread, line_thickness);
+ draw_line(z4a, 1/2[z0a,z1a], false);
+
+ if negated = 1:
+ stroke_through(centre, 3/2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+% orderings
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,1) * equal_spread# + greater_spread#); "less than";
+ draw_less(a, left_ex, right_ex, greater_spread, line_thickness, false, true);
+
+ if negated = 1:
+ stroke_through(centre, equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2/3,6/3,5/3) * equal_spread# + 3/4greater_spread#); "less than or equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (2/3equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/3equal_spread * up;
+
+ draw_less(a, z0, z1, s, line_thickness, false, true);
+ draw_line(z2, z3, false);
+
+ if negated = 1:
+ stroke_through(centre, 6/3equal_spread + 3/4greater_spread);
+ elseif negated = 2:
+ stroke_through(1/2[z2,z3], equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,2) * equal_spread# + 3/4greater_spread#); "less than or slanted equal";
+ s := 3/4greater_spread;
+ t := 1/2equal_spread;
+
+ draw_less(a, left_ex + t * up, right_ex + t * up, s, line_thickness, false, true);
+
+ if sign = 1:
+ z6 = z4a.l + 1/2line_thickness*up - 2t * up;
+ z7 = z1a - 2t * up;
+ draw_line_cut(6,7);
+ else:
+ z6 = z3a.l + 1/2line_thickness*up - 2t * up;
+ z7 = z0a - 2t * up;
+ draw_line_cut(6,7);
+ fi;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(5/3,8/3,8/3) * equal_spread# + 3/4greater_spread#); "less than or double equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (2/3equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 5/6equal_spread * up;
+ z2 - z4 = z3 - z5 = equal_spread * up;
+
+ draw_less(a, z0, z1, s, line_thickness, false, true);
+ draw_line(z2, z3, false);
+ draw_line(z4, z5, false);
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread + 3/4greater_spread);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z2,z3], 1/2[z4,z5]], 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2/2,4/2,3/2) * equal_spread# + 3/4greater_spread#); "less sim";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (3/4equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/2equal_spread * up;
+
+ draw_less(a, z0, z1, s, line_thickness, false, true);
+ if sign > 0:
+ draw_sim(b, z2, z3, 1/4equal_spread, line_thickness);
+ else:
+ draw_sim(b, z3, z2, 1/4equal_spread, line_thickness);
+ fi
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[z2,z3], equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(4/2,5/2,5/2) * equal_spread# + 3/4greater_spread#); "less approx";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (3/4equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = equal_spread * up;
+ z2 - z4 = z3 - z5 = equal_spread * up;
+
+ draw_less(a, z0, z1, s, line_thickness, false, true);
+
+ if sign > 0:
+ draw_sim(b, z2, z3, 1/4equal_spread, line_thickness);
+ draw_sim(c, z4, z5, 1/4equal_spread, line_thickness);
+ else:
+ draw_sim(b, z3, z2, 1/4equal_spread, line_thickness);
+ draw_sim(c, z5, z4, 1/4equal_spread, line_thickness);
+ fi
+
+ if negated = 1:
+ stroke_through(centre, 5/2equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z2,z3], 1/2[z4,z5]], 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,if sign > 0: 2 else: 3/2 fi) * equal_spread# + 9/8greater_spread#); "less greater";
+ s := 3/4greater_spread;
+ t := 1/2equal_spread + 1/4s;
+
+ draw_less(a, left_ex + t * up, right_ex + t * up, s, line_thickness, false, true);
+ draw_less(b, right_ex - t * up, left_ex - t * up, s, line_thickness, false, true);
+
+ if negated = 1:
+ stroke_through(centre, if sign > 0: 2 else: 3/2 fi * equal_spread + 3/2s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(4/3,11/6 + 1/2sign) * equal_spread# + 3/2greater_spread#); "less equal greater";
+ s := 3/4greater_spread;
+ t := 2/3equal_spread + 1/2s;
+
+ draw_less(a, left_ex + t * up, right_ex + t * up, s, line_thickness, false, true);
+ draw_less(b, right_ex - t * up, left_ex - t * up, s, line_thickness, false, true);
+ draw_line(left_ex, right_ex, false);
+
+ if negated = 1:
+ stroke_through(centre, (11/6 + 1/2sign) * equal_spread + 2s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(7/3,17/6 + 1/2sign, 7/3) * equal_spread# + 3/2greater_spread#); "less double equal greater";
+ s := 3/4greater_spread;
+ t := 7/6equal_spread + 1/2s;
+ u := 1/2equal_spread;
+
+ draw_less(a, left_ex + t * up, right_ex + t * up, s, line_thickness, false, true);
+ draw_less(b, right_ex - t * up, left_ex - t * up, s, line_thickness, false, true);
+ draw_line(left_ex + u * up, right_ex + u * up, false);
+ draw_line(left_ex - u * up, right_ex - u * up, false);
+
+ if negated = 1:
+ stroke_through(centre, (17/6 + 1/2sign) * equal_spread + 2s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2,5/2 + 1/2sign) * equal_spread# + 9/8greater_spread#); "less slanted equal greater";
+ s := 3/4greater_spread;
+ t := equal_spread + 1/4s;
+
+ draw_less(a, left_ex + t * up, right_ex + t * up, s, line_thickness, false, true);
+ draw_less(b, right_ex - t * up, left_ex - t * up, s, line_thickness, false, true);
+
+ if sign = 1:
+ z6 = z4a.l + 1/2line_thickness*up - equal_spread * up;
+ z7 = z1a - equal_spread * up;
+ draw_line_cut(6,7);
+ else:
+ z6 = z3a.l + 1/2line_thickness*up - equal_spread * up;
+ z7 = z0a - equal_spread * up;
+ draw_line_cut(6,7);
+ fi;
+
+ if negated = 1:
+ stroke_through(centre, (5/2 + 1/2sign) * equal_spread + 3/2s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + 2equal_spread# + line_thickness#, ifneg(0,1) * equal_spread# + greater_spread#); "less less";
+ s := 2equal_spread;
+
+ draw_less(a, left_ex, right_ex - sign * s * right, greater_spread, line_thickness, false, true);
+ draw_less(b, left_ex + sign * s * right, right_ex, greater_spread, line_thickness, false, true);
+
+ if negated = 1:
+ stroke_through(centre, equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + 4equal_spread# + line_thickness#, ifneg(0,1) * equal_spread# + greater_spread#); "less less less";
+ s := 2equal_spread;
+
+ draw_less(a, left_ex, right_ex - sign * 2s * right, greater_spread, line_thickness, false, true);
+ draw_less(b, left_ex + sign * s * right, right_ex - sign * s * right, greater_spread, line_thickness, false, true);
+ draw_less(c, left_ex + sign * 2s * right, right_ex, greater_spread, line_thickness, false, true);
+
+ if negated = 1:
+ stroke_through_angle(centre, equal_spread + greater_spread, 50);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,1) * equal_spread# + greater_spread#); "closed less than";
+ draw_less(a, left_ex, right_ex, greater_spread, line_thickness, true, true);
+
+ if negated = 1:
+ stroke_through(centre, equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2/3,6/3) * equal_spread# + 3/4greater_spread#); "closed less than or equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (2/3equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/3equal_spread * up;
+
+ draw_less(a, z0, z1, s, line_thickness, true, true);
+ draw_line(z2, z3, false);
+
+ if negated = 1:
+ stroke_through(centre, 6/3equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# * sqrt(5/4), ifneg(0,1) * equal_spread# + greater_spread#); "round less than";
+ path p;
+ numeric r,s;
+ thick := line_thickness;
+
+ z0 = left_ex;
+ z1 = z0 + order_width * dir angle(right_ex - left_ex);
+
+ put_less(a, z0, z1, greater_spread, thick, false, false);
+
+ z9 = whatever[z3a.l, z0a.l] = whatever[z4a.l,z1a.l];
+
+ penpos1'(thick, 90 - sign*90);
+
+ z1'r = z9 + sign*length(z0a.l - z9)*right;
+ z4r = z0a.l - line_thickness*(dir(angle(z0a.l-z9)));
+ z5r = z1a.l - line_thickness*(dir(angle(z1a.l-z9)));
+
+ theta := angle(z0a.l - z9);
+
+ p = (z4r{dir(theta -90)} .. z1'l .. {dir(-theta -90)}z5r);
+ r = ypart ((z5a -- z0a.r) intersectiontimes p);
+ s = ypart ((z5a -- z1a.r) intersectiontimes p);
+
+ fill z0a.l{dir(theta -90)} .. z1'.r .. {dir(-theta -90)}z1a.l -- z4a.l -- z3a.l -- cycle;
+ unfill subpath (r,s) of p -- z5a -- cycle;
+
+ if negated = 1:
+ stroke_through(centre, equal_spread + greater_spread);
+ fi;
+
+ penlabels(1',4,5,9);
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# * sqrt(7/6), ifneg(1,2) * equal_spread# + 3/4greater_spread#); "round less than or slanted equal";
+ path p;
+ numeric u,v;
+
+ thick := line_thickness;
+ s := 3/4greater_spread;
+ t := 1/2equal_spread;
+
+ z0 = left_ex + t * up;
+ z1 = z0 + order_width * dir angle(right_ex - left_ex);
+
+ put_less(a, z0, z1, s, thick, false, false);
+
+ penpos1'(thick, 90 - sign*90);
+
+ z9 = whatever[z3a.l, z0a.l] = whatever[z4a.l,z1a.l];
+
+ z1'r = z9 + sign*length(z0a.l - z9)*right;
+ z4r = z0a.l - line_thickness*(dir(angle(z0a.l-z9)));
+ z5r = z1a.l - line_thickness*(dir(angle(z1a.l-z9)));
+
+ theta := angle(z0a.l - z9);
+
+ p = (z4r{dir(theta -90)} .. z1'l .. {dir(-theta -90)}z5r);
+ u = ypart ((z5a -- z0a.r) intersectiontimes p);
+ v = ypart ((z5a -- z1a.r) intersectiontimes p);
+
+ fill z0a.l{dir(theta -90)} .. z1'.r .. {dir(-theta -90)}z1a.l -- z4a.l -- z3a.l -- cycle;
+ unfill subpath (u,v) of p -- z5a -- cycle;
+
+ if sign = 1:
+ draw_line(z1a - 2t * up, z4a - 2t * up, false);
+ else:
+ draw_line(z0a - 2t * up, z3a - 2t * up, false);
+ fi;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + 3/4greater_spread);
+ fi;
+
+ penlabels(1',4,5,9);
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,3/2) * equal_spread# + greater_spread#); "square subset";
+ s := greater_spread;
+
+ draw_line(left_ex + s/2 * up, right_ex + s/2 * up, false);
+ draw_line(left_ex - s/2 * up, right_ex - s/2 * up, false);
+ draw_line(left_point + s/2 * up, left_point - s/2 * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 3/2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,5/2,2) * equal_spread# + 3/4greater_spread#); "square subset equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (equal_spread + s/2) * up;
+ z0 - left_ex = z0' - left_point = z1 - right_ex = 1/2equal_spread * up;
+
+ draw_line(z0 + s/2 * up, z1 + s/2 * up, false);
+ draw_line(z0 - s/2 * up, z1 - s/2 * up, false);
+ draw_line(z0' + s/2 * up, z0' - s/2 * up, false);
+ draw_line(z2, z3, false);
+
+ if negated = 1:
+ stroke_through(centre, 5/2equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[z2,z3] + 1/2equal_spread * up, 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2,3,3) * equal_spread# + 3/4greater_spread#); "square subset double equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (equal_spread + s/2) * up;
+ z0 - left_ex = z0' - left_point = z1 - right_ex = equal_spread * up;
+ z2 - z4 = z3 - z5 = equal_spread * up;
+
+ draw_line(z0 + s/2 * up, z1 + s/2 * up, false);
+ draw_line(z0 - s/2 * up, z1 - s/2 * up, false);
+ draw_line(z0' + s/2 * up, z0' - s/2 * up, false);
+ draw_line(z2, z3, false);
+ draw_line(z4, z5, false);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z2,z3], 1/2[z4,z5]], 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,3/2) * equal_spread# + greater_spread#); "double square subset";
+ s := greater_spread;
+ t := greater_spread - 3/2equal_spread;
+
+ z0 - left_ex = z0' - left_point = 3/4equal_spread * dir (90 - sign * 90);
+
+ draw_line(left_ex + s/2 * up, right_ex + s/2 * up, false);
+ draw_line(left_ex - s/2 * up, right_ex - s/2 * up, false);
+ draw_line(left_point + s/2 * up, left_point - s/2 * up, false);
+
+ draw_line(z0 + t/2 * up, right_ex + t/2 * up, false);
+ draw_line(z0 - t/2 * up, right_ex - t/2 * up, false);
+ draw_line(z0' + t/2 * up, z0' - t/2 * up, false);
+
+ if negated = 1:
+ stroke_through(centre, 3/2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,3/2) * equal_spread# + greater_spread#); "subset";
+ draw_subset(a, left_ex, right_ex, greater_spread, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 3/2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,5/2,2) * equal_spread# + 3/4greater_spread#); "subset or equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (equal_spread + s/2) * up;
+ z0 - left_ex = z0' - left_point = z1 - right_ex = 1/2equal_spread * up;
+
+ draw_subset(a, z0, z1, s, line_thickness);
+ draw_line(z2, z3, false);
+
+ if negated = 1:
+ stroke_through(centre, 5/2equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[z2,z3] + 1/2equal_spread * up, 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2,3,3) * equal_spread# + 3/4greater_spread#); "subset or double equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (equal_spread + s/2) * up;
+ z0 - left_ex = z0' - left_point = z1 - right_ex = equal_spread * up;
+ z2 - z4 = z3 - z5 = equal_spread * up;
+
+ draw_subset(a, z0, z1, s, line_thickness);
+ draw_line(z2, z3, false);
+ draw_line(z4, z5, false);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z2,z3], 1/2[z4,z5]], 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,3/2) * equal_spread# + greater_spread#); "double subset";
+ s := greater_spread;
+ t := greater_spread - 3/2equal_spread;
+
+ z0 - left_ex = 3/4equal_spread * dir (90 - sign * 90);
+
+ draw_subset(a, left_ex, right_ex, s, line_thickness);
+ draw_subset(b, z0, right_ex, t, line_thickness);
+
+ if negated = 1:
+ stroke_through(centre, 3/2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,1) * equal_spread# + greater_spread#); "curly less than";
+ draw_prec(a, left_ex, right_ex, greater_spread, line_thickness, false);
+
+ if negated = 1:
+ stroke_through(centre, equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2/3,6/3,5/3) * equal_spread# + 3/4greater_spread#); "curly less than or equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (2/3equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/3equal_spread * up;
+
+ draw_prec(a, z0, z1, s, line_thickness, false);
+ draw_line(z2, z3, false);
+
+ if negated = 1:
+ stroke_through(centre, 6/3equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[z2,z3], equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,2) * equal_spread# + 3/4greater_spread#); "curly less than or curly equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = equal_spread * up;
+ z1 - z3 = (7/5equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/2equal_spread * up;
+ z2' - z2 = line_thickness * dir (90 - sign * 90);
+
+ draw_prec(a, z0, z1, s, line_thickness, false);
+
+ if sign > 0:
+ theta := angle (z1a.l - z1a);
+ else:
+ theta := angle (z0a.r - z0a);
+ fi;
+
+ penpos2(line_thickness, 90);
+ penpos2'(line_thickness, 90);
+ penpos3(line_thickness, theta);
+ penpos5(line_thickness, theta);
+
+ path p, q;
+
+ p = z2.l -- z2'.l{dir (90 - sign * 90)} .. {dir (theta - sign * 90)}z3.l;
+ q = z2.r -- z2'.r{dir (90 - sign * 90)} .. {dir (theta - sign * 90)}z3.r;
+
+ z5.r = point 1.8 of q;
+ t := xpart (p intersectiontimes (z5.l -- z5.r));
+
+ fill (subpath (0,t) of p) -- (reverse (subpath (0,1.8) of q)) -- cycle;
+
+ penlabels(2,5);
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(5/3,8/3,8/3) * equal_spread# + 3/4greater_spread#); "curly less than or double equal";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (2/3equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 5/6equal_spread * up;
+ z2 - z4 = z3 - z5 = equal_spread * up;
+
+ draw_prec(a, z0, z1, s, line_thickness, false);
+ draw_line(z2, z3, false);
+ draw_line(z4, z5, false);
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread + 3/4greater_spread);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z2,z3], 1/2[z4,z5]], 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,4/2,3/2) * equal_spread# + 3/4greater_spread#); "curly less sim";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (3/4equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/2equal_spread * up;
+
+ draw_prec(a, z0, z1, s, line_thickness, false);
+ if sign > 0:
+ draw_sim(b, z2, z3, 1/4equal_spread, line_thickness);
+ else:
+ draw_sim(b, z3, z2, 1/4equal_spread, line_thickness);
+ fi
+
+ if negated = 1:
+ stroke_through(centre, 4/2equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[z2,z3], equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2,5/2,5/2) * equal_spread# + 3/4greater_spread#); "curly less approx";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (3/4equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = equal_spread * up;
+ z2 - z4 = z3 - z5 = equal_spread * up;
+
+ draw_prec(a, z0, z1, s, line_thickness, false);
+
+ if sign > 0:
+ draw_sim(b, z2, z3, 1/4equal_spread, line_thickness);
+ draw_sim(c, z4, z5, 1/4equal_spread, line_thickness);
+ else:
+ draw_sim(b, z3, z2, 1/4equal_spread, line_thickness);
+ draw_sim(c, z5, z4, 1/4equal_spread, line_thickness);
+ fi
+
+ if negated = 1:
+ stroke_through(centre, 5/2equal_spread + s);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z2,z3], 1/2[z4,z5]], 2equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(0,1) * equal_spread# + greater_spread#); "less than dot";
+ draw_less(a, left_ex, right_ex, greater_spread, line_thickness, false, true);
+ fill dot(right_ex - sign * 3/4dot_size * right, 3/4dot_size);
+
+ if negated = 1:
+ stroke_through(centre, equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(2/3,6/3) * equal_spread# + 3/4greater_spread#); "less than or equal dot";
+ s := 3/4greater_spread;
+
+ z0 - z2 = z1 - z3 = (2/3equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = 1/3equal_spread * up;
+
+ draw_less(a, z0, z1, s, line_thickness, false, true);
+ fill dot(z1 - sign * 3/4dot_size * right, 3/4dot_size);
+ draw_line(z2, z3, false);
+
+ if negated = 1:
+ stroke_through(centre, 6/3equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,2) * equal_spread# + 3/4greater_spread#); "less than or slanted equal dot";
+ s := 3/4greater_spread;
+ t := 1/2equal_spread;
+
+ draw_less(a, left_ex + t * up, right_ex + t * up, s, line_thickness, false, true);
+ fill dot(right_ex + t * up - sign * 3/4dot_size * right, 3/4dot_size);
+
+ if sign = 1:
+ z6 = z4a.l + 1/2line_thickness*up - 2t * up;
+ z7 = z1a - 2t * up;
+ draw_line_cut(6,7);
+ else:
+ z6 = z3a.l + 1/2line_thickness*up - 2t * up;
+ z7 = z0a - 2t * up;
+ draw_line_cut(6,7);
+ fi;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,2) * equal_spread# + 3/4greater_spread#); "slanted equal or less than";
+ s := 3/4greater_spread;
+ t := 1/2equal_spread;
+
+ draw_less(a, left_ex - t * up, right_ex - t * up, s, line_thickness, false, true);
+
+ if sign = 1:
+ z6 = z3a.l - 1/2line_thickness*up + 2t * up;
+ z7 = z0a + 2t * up;
+ draw_line_cut(6,7);
+ else:
+ z6 = z4a.l - 1/2line_thickness*up + 2t * up;
+ z7 = z1a + 2t * up;
+ draw_line_cut(6,7);
+ fi;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width#, ifneg(1,2) * equal_spread# + 3/4greater_spread#); "curly equal or curly less than";
+ s := 3/4greater_spread;
+
+ z0 - z2 = -equal_spread * up;
+ z1 - z3 = -(7/5equal_spread + s/2) * up;
+ z0 - left_ex = z1 - right_ex = -1/2equal_spread * up;
+ z2' - z2 = line_thickness * dir (90 - sign * 90);
+
+ draw_prec(a, z0, z1, s, line_thickness, false);
+
+ if sign > 0:
+ theta := angle (z1a.l - z1a);
+ else:
+ theta := angle (z0a.r - z0a);
+ fi;
+
+ penpos2(line_thickness, -90);
+ penpos2'(line_thickness, -90);
+ penpos3(line_thickness, -theta);
+ penpos5(line_thickness, -theta);
+
+ path p, q;
+
+ p = z2.l -- z2'.l{dir (90 - sign * 90)} .. {dir (sign * 90 - theta)}z3.l;
+ q = z2.r -- z2'.r{dir (90 - sign * 90)} .. {dir (sign * 90 - theta)}z3.r;
+
+ z5.r = point 1.8 of q;
+ t := xpart (p intersectiontimes (z5.l -- z5.r));
+
+ fill (subpath (0,t) of p) -- (reverse (subpath (0,1.8) of q)) -- cycle;
+
+ penlabels(2,5);
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + s);
+ fi;
+ endchar;
+ endfor;
+fi