summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf1417
1 files changed, 1417 insertions, 0 deletions
diff --git a/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf
new file mode 100644
index 00000000000..bc4cd2c8b9d
--- /dev/null
+++ b/Master/texmf-dist/fonts/source/public/mnsymbol/Sym-Order.mf
@@ -0,0 +1,1417 @@
+
+% There are some additional order glyphs in Sym-Geometric. Keep them consistent!
+
+vardef ifneg(text values) =
+ select(negated)(values)
+enddef;
+
+% equal signs
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + rule_thickness#); "equal";
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, ifneg(2,4) * equal_spread# + rule_thickness#); "equiv";
+ pickup rule_pen;
+
+ z2 - z1 = z1 - z0 = equal_spread * dir 90;
+ z5 - z4 = z4 - z3 = equal_spread * dir 90;
+
+ 1/2[z0, z2] = left_point;
+ 1/2[z3, z5] = right_point;
+
+ draw z0 -- z3;
+ draw z1 -- z4;
+ draw z2 -- z5;
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(2/3, 8/3)*equal_spread# + rule_thickness#); "sim";
+ pickup rule_pen;
+
+ draw sim(left_point, right_point);
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#);
+ "approx";
+
+ pickup rule_pen;
+
+ draw sim(left_point + 1/2equal_spread * dir 90, right_point + 1/2equal_spread * dir 90);
+ draw sim(left_point - 1/2equal_spread * dir 90, right_point - 1/2equal_spread * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#);
+ "triple sim";
+
+ pickup rule_pen;
+
+ draw sim(left_point + equal_spread * dir 90, right_point + equal_spread * dir 90);
+ draw sim(left_point, right_point);
+ draw sim(left_point - equal_spread * dir 90, right_point - equal_spread * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#);
+ "sim equal";
+
+ pickup rule_pen;
+
+ draw sim(left_point + 1/2equal_spread * dir 90, right_point + 1/2equal_spread * dir 90);
+ draw (left_point - 5/6equal_spread * dir 90) -- (right_point - 5/6equal_spread * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "equal sim";
+ pickup rule_pen;
+
+ draw (left_point + 5/6equal_spread * dir 90) -- (right_point + 5/6equal_spread * dir 90);
+ draw sim(left_point - 1/2equal_spread * dir 90, right_point - 1/2equal_spread * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); "cong";
+ pickup rule_pen;
+
+ draw sim(left_point + equal_spread * dir 90, right_point + equal_spread * dir 90);
+ draw (left_point - 1/3equal_spread * dir 90) -- (right_point - 1/3equal_spread * dir 90);
+ draw (left_point - 4/3equal_spread * dir 90) -- (right_point - 4/3equal_spread * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#);
+ "approx equal";
+
+ pickup rule_pen;
+
+ draw sim(left_point + equal_spread * dir 90, right_point + equal_spread * dir 90);
+ draw sim(left_point, right_point);
+ draw (left_point - 4/3equal_spread * dir 90) -- (right_point - 4/3equal_spread * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + 2/5order_width# + rule_thickness#);
+ "bump equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z3 -- half_circle(1/2[z1,z3], order_width/5, 0) -- z1;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 2/5order_width);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + 2/5order_width# + rule_thickness#);
+ "equal bump";
+
+ pickup rule_pen;
+
+ z0 - z1 = equal_spread * dir 90;
+ z2 - z3 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- half_circle(1/2[z1,z3], order_width/5, 180) -- z3;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 2/5order_width);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + 2/5order_width# + rule_thickness#);
+ "double bump equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- half_circle(1/2[z0,z2], order_width/5, 180) -- z2;
+ draw z3 -- half_circle(1/2[z1,z3], order_width/5, 0) -- z1;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 2/5order_width);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#,
+ 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#));
+ "dot equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+ fill circle(centre + 3/2equal_spread * dir 90, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#,
+ 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#));
+ "equal dot";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+ fill circle(centre - 3/2equal_spread * dir 90, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#,
+ 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#));
+ "dot equal dot";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+ fill circle(centre + 3/2equal_spread * dir 90, dot_size);
+ fill circle(centre - 3/2equal_spread * dir 90, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ 3equal_spread# + ifneg(2dot_size#, equal_spread# + rule_thickness#));
+ "falling dot equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+ fill circle(left_point + 3/2equal_spread * dir 90, dot_size);
+ fill circle(right_point - 3/2equal_spread * dir 90, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+for round_smile = true, false:
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(2/3, 8/3) * equal_spread# + rule_thickness#);
+ "smile";
+
+ pickup rule_pen;
+
+ draw smile(sign, left_point, right_point, 2/3equal_spread, round_smile);
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "double smile";
+ pickup rule_pen;
+
+ s := 1/2equal_spread;
+
+ draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile);
+ draw smile(sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile);
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#); "triple smile";
+ pickup rule_pen;
+
+ s := equal_spread;
+
+ draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile);
+ draw smile(sign, left_point, right_point, 2/3equal_spread, round_smile);
+ draw smile(sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile);
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(7/3, 13/3) * equal_spread# + rule_thickness#); "smile frown";
+ pickup rule_pen;
+
+ s := 5/6equal_spread;
+
+ draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile);
+ draw smile(-sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile);
+
+ if negated = 1:
+ stroke_through(centre, 13/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "smile equal";
+ pickup rule_pen;
+
+ s := 1/6equal_spread;
+
+ draw smile(sign, left_point + 3s * dir 90, right_point + 3s * dir 90, 2/3equal_spread, round_smile);
+ draw (left_point - 5s * dir 90) -- (right_point - 5s * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(5/3, 11/3) * equal_spread# + rule_thickness#); "equal smile";
+ pickup rule_pen;
+
+ s := 1/6equal_spread;
+
+ draw (left_point + 5s * dir 90) -- (right_point + 5s * dir 90);
+ draw smile(sign, left_point - 3s * dir 90, right_point - 3s * dir 90, 2/3equal_spread, round_smile);
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#);
+ "double smile equal";
+
+ pickup rule_pen;
+
+ s := 1/6equal_spread;
+
+ draw smile(sign, left_point + 6s * dir 90, right_point + 6s * dir 90, 2/3equal_spread, round_smile);
+ draw smile(sign, left_point, right_point, 2/3equal_spread, round_smile);
+ draw (left_point - 8s * dir 90) -- (right_point - 8s * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ if negated < 2:
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(10/3, 16/3) * equal_spread# + rule_thickness#);
+ "smile equal frown";
+
+ pickup rule_pen;
+
+ s := 4/3equal_spread;
+
+ draw smile(sign, left_point + s * dir 90, right_point + s * dir 90, 2/3equal_spread, round_smile);
+ draw left_point -- right_point;
+ draw smile(-sign, left_point - s * dir 90, right_point - s * dir 90, 2/3equal_spread, round_smile);
+
+ if negated = 1:
+ stroke_through(centre, 16/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+ fi;
+
+ % Only the round version since we have no free glyphs left.
+ if round_smile and (negated < 2):
+ for sign = 1, -1:
+ beginorder(1, order_width# + rule_thickness#, ifneg(10/3, 16/3) * equal_spread# + rule_thickness#);
+ "smile frown equal";
+
+ pickup rule_pen;
+
+ s := 1/6equal_spread;
+
+ draw smile(sign, left_point + 8s * dir 90, right_point + 8s * dir 90, 2/3equal_spread, round_smile);
+ draw smile(-sign, left_point - 1s * dir 90, right_point - 1s * dir 90, 2/3equal_spread, round_smile);
+ draw (left_point - 10s * dir 90) -- (right_point - 10s * dir 90);
+
+ if negated = 1:
+ stroke_through(centre, 16/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+endfor;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, ifneg(1,3) * equal_spread# + rule_thickness#);
+ "equal circled";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+
+ pickup pencircle scaled 3/4rule_thickness;
+
+ draw circle(centre, 1/2equal_spread);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, 3equal_spread# + 7/2dot_size# + rule_thickness#);
+ "circ equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+
+ pickup pencircle scaled 3/4rule_thickness;
+
+ draw circle(centre + 3/2equal_spread * dir 90,
+ min (7/4dot_size, equal_spread - 3/4rule_thickness));
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 7/2dot_size);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, 3equal_spread# + 7/2dot_size# + rule_thickness#);
+ "triangle equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ x4 = xpart centre;
+ y4 = y5 + sind 60 * (x6 - x5) = h - 1/2rule_thickness;
+
+ y5 = y6;
+ 1/2[x5, x6] = xpart centre;
+
+ y5 - y1 = 2/3equal_spread;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+
+ pickup pencircle scaled 3/4rule_thickness;
+
+ draw z4 -- z5 -- z6 -- cycle;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 7/2dot_size);
+ fi;
+ endchar;
+fi;
+
+if negated < 2:
+ beginorder(1, order_width# + rule_thickness#, 5/2equal_spread# + 7/2dot_size# + rule_thickness#);
+ "hat equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ x4 = xpart centre;
+ y4 = y5 + sind 30 * (x6 - x5) = h - 1/2rule_thickness;
+
+ y5 = y6;
+ 1/2[x5, x6] = xpart centre;
+
+ y5 - y1 = 2/3equal_spread;
+
+ draw z0 -- z2;
+ draw z1 -- z3;
+ draw z6 -- z4 -- z5;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 7/2dot_size);
+ fi;
+ endchar;
+fi;
+
+% element signs
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, 17/24order_width# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + 8/9[equal_spread#, greater_spread#] + rule_thickness#);
+ "element";
+
+ pickup rule_pen;
+
+ s := 8/9[equal_spread, greater_spread];
+
+ z1 - z0 = s * dir 90;
+ 1/2[z0, z1] = right_point;
+ z3 - z2 = s * dir 90;
+ 1/2[z2, z3] = 7/10[left_point,right_point];
+
+ draw z0 -- z2{left_point - right_point} .. left_point .. {right_point - left_point}z3 -- z1;
+ draw left_point -- right_point;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + 8/9[equal_spread, greater_spread]);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+% orderings
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#);
+ "less than";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+
+ 1/2[z0, z1] = right_point;
+
+ draw z0 -- left_point -- z1;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ greater_spread# + ifneg(2/3, 8/3) * equal_spread# + rule_thickness#);
+ "less than or equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ y2 = 1/2[y0, y1];
+ x2 = x3 = xpart left_point;
+ y3 = y4;
+ z0 - z4 = 2/3equal_spread * dir 90;
+
+ 1/2[z1, z4] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4;
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#);
+ "less than or slanted equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ z2 - z3 = equal_spread * dir 90;
+ z0 - z4 = equal_spread * dir 90;
+
+ 1/2[z2, z3] = left_point;
+ 1/2[z1, z4] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ greater_spread# + ifneg(5/3, 11/3, 11/3) * equal_spread# + rule_thickness#);
+ "less than or double equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ y2 = 1/2[y0, y1];
+ x2 = x3 = x5 = xpart left_point;
+ y3 = y4;
+ z0 - z4 = 2/3equal_spread * dir 90;
+ y5 = y6;
+ z4 - z6 = equal_spread * dir 90;
+
+ 1/2[z1, z6] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4;
+ draw z5 -- z6;
+
+ if negated = 1:
+ stroke_through(centre, 11/3equal_spread + greater_spread);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z3,z4], 1/2[z5,z6]], 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ 3/2greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#);
+ "less greater";
+
+ pickup rule_pen;
+
+ y1 - y0 = greater_spread;
+ y2 - y3 = equal_spread;
+ y0 - y4 = equal_spread;
+ y3 - y5 = greater_spread;
+
+ x2 = x3 = x5 = xpart left_point;
+ x0 = x1 = x4 = xpart right_point;
+
+ y2 = 1/2[y0, y1];
+
+ 1/2[y1, y5] = ypart centre;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4 -- z5;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 3/2greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ 2greater_spread# + ifneg(4/3, 10/3) * equal_spread# + rule_thickness#);
+ "less equal greater";
+
+ pickup rule_pen;
+
+ y2 - y0 = greater_spread;
+ x0 = x2 = xpart right_point;
+
+ y1 = 1/2[y0, y2];
+ x1 = xpart left_point;
+
+ y5 - y3 = greater_spread;
+ x3 = x5 = xpart left_point;
+
+ y4 = 1/2[y3, y5];
+ x4 = xpart right_point;
+
+ y0 - y5 = 4/3equal_spread;
+
+ 1/2[y0, y5] = ypart centre;
+
+ draw z0 -- z1 -- z2;
+ draw z3 -- z4 -- z5;
+ draw left_point -- right_point;
+
+ if negated = 1:
+ stroke_through(centre, 10/3equal_spread + 2greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ 2greater_spread# + ifneg(7/3, 13/3, 13/3) * equal_spread# + rule_thickness#);
+ "less double equal greater";
+
+ pickup rule_pen;
+
+ y2 - y0 = greater_spread;
+ x0 = x2 = xpart right_point;
+
+ y1 = 1/2[y0, y2];
+ x1 = xpart left_point;
+
+ y5 - y3 = greater_spread;
+ x3 = x5 = xpart left_point;
+
+ y4 = 1/2[y3, y5];
+ x4 = xpart right_point;
+
+ y0 - y5 = 7/3equal_spread;
+
+ 1/2[y0, y5] = ypart centre;
+
+ 1/2[z6, z7] = left_point;
+ 1/2[z8, z9] = right_point;
+
+ z7 - z6 = equal_spread * dir 90;
+ z9 - z8 = equal_spread * dir 90;
+
+ draw z0 -- z1 -- z2;
+ draw z3 -- z4 -- z5;
+ draw z6 -- z8;
+ draw z7 -- z9;
+
+ if negated = 1:
+ stroke_through(centre, 13/3equal_spread + 2greater_spread);
+ elseif negated = 2:
+ stroke_through(centre, 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ 3/2greater_spread# + ifneg(2,4) * equal_spread# + rule_thickness#);
+ "less slanted equal greater";
+
+ pickup rule_pen;
+
+ y2 - y0 = greater_spread;
+ x0 = x2 = xpart right_point;
+
+ y1 = 1/2[y0, y2];
+ x1 = xpart left_point;
+
+ y5 - y3 = greater_spread;
+ x3 = x5 = xpart left_point;
+
+ y4 = 1/2[y3, y5];
+ x4 = xpart right_point;
+
+ z6 = 1/2[z1, z5];
+ z7 = 1/2[z0, z4];
+
+ y1 - y6 = equal_spread;
+
+ 1/2[y6, y7] = ypart centre;
+
+ draw z0 -- z1 -- z2;
+ draw z3 -- z4 -- z5;
+ draw z6 -- z7;
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread + 3/2greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + 2equal_spread# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#);
+ "less less";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ z3 - z5 = greater_spread * dir 90;
+ z2 = left_point;
+ z4 - z2 = sign * 2equal_spread * dir 0;
+ z3 - z1 = sign * 2equal_spread * dir 0;
+
+ 1/2[z3, z5] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4 -- z5;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + 4equal_spread# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#);
+ "less less less";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ z3 - z5 = greater_spread * dir 90;
+ z6 - z8 = greater_spread * dir 90;
+ z2 = left_point;
+ z4 - z2 = sign * 2equal_spread * dir 0;
+ z3 - z1 = sign * 2equal_spread * dir 0;
+ z7 - z4 = sign * 2equal_spread * dir 0;
+ z6 - z3 = sign * 2equal_spread * dir 0;
+
+ 1/2[z6, z8] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4 -- z5;
+ draw z6 -- z7 -- z8;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#);
+ "closed less than";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+
+ 1/2[z0, z1] = right_point;
+
+ draw z0 -- left_point -- z1 -- cycle;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ greater_spread# + ifneg(2/3, 8/3) * equal_spread# + rule_thickness#);
+ "closed less than or equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ y2 = 1/2[y0, y1];
+ x2 = x3 = xpart left_point;
+ y3 = y4;
+ z0 - z4 = 2/3equal_spread * dir 90;
+
+ 1/2[z1, z4] = right_point;
+
+ draw z0 -- z2 -- z1 -- cycle;
+ draw z3 -- z4;
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ 1/2[equal_spread#, greater_spread#] + ifneg(0,2) * equal_spread# + rule_thickness#);
+ "square subset";
+
+ pickup rule_pen;
+
+ z1 - z0 = 1/2[equal_spread, greater_spread] * dir 90;
+ z3 - z2 = 1/2[equal_spread, greater_spread] * dir 90;
+
+ 1/2[z0, z1] = left_point;
+ 1/2[z2, z3] = right_point;
+
+ draw z3 -- z1 -- z0 -- z2;
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + 1/2[equal_spread, greater_spread]);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(1,3,3) * equal_spread# + 1/2[equal_spread#, greater_spread#] + rule_thickness#);
+ "square subset equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = 1/2[equal_spread, greater_spread] * dir 90;
+ z3 - z2 = 1/2[equal_spread, greater_spread] * dir 90;
+
+ 1/2[z1, z4] = left_point;
+ 1/2[z3, z5] = right_point;
+
+ y4 = y5 = y0 - equal_spread;
+ x4 = x0;
+ x5 = x2;
+
+ draw z3 -- z1 -- z0 -- z2;
+ draw z4 -- z5;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 1/2[equal_spread, greater_spread]);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z0,z2], 1/2[z4,z5]], 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(2,4,4) * equal_spread# + 1/2[equal_spread#, greater_spread#] + rule_thickness#);
+ "square subset double equal";
+
+ pickup rule_pen;
+
+ z1 - z0 = 1/2[equal_spread, greater_spread] * dir 90;
+ z3 - z2 = 1/2[equal_spread, greater_spread] * dir 90;
+
+ 1/2[z1, z6] = left_point;
+ 1/2[z3, z7] = right_point;
+
+ y4 = y5 = y0 - equal_spread;
+ y6 = y7 = y4 - equal_spread;
+ x4 = x6 = x0;
+ x5 = x7 = x2;
+
+ draw z3 -- z1 -- z0 -- z2;
+ draw z4 -- z5;
+ draw z6 -- z7;
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread + 1/2[equal_spread, greater_spread]);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z4,z5], 1/2[z6,z7]], 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(8/3, 14/3) * equal_spread# + rule_thickness#);
+ "double square subset";
+
+ pickup rule_pen;
+
+ z1 - z0 = equal_spread * dir 90;
+ z3 - z2 = equal_spread * dir 90;
+
+ 1/2[z1, z0] = left_point + 3/4equal_spread * dir (90 - sign * 90);
+ 1/2[z3, z2] = right_point;
+
+ z5 - z4 = 8/3equal_spread * dir 90;
+ z7 - z6 = 8/3equal_spread * dir 90;
+
+ 1/2[z5, z4] = left_point;
+ 1/2[z7, z6] = right_point;
+
+ draw z3 -- z1 -- z0 -- z2;
+ draw z7 -- z5 -- z4 -- z6;
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "subset";
+
+ pickup rule_pen;
+
+ draw subset(left_point, right_point, 2/3[equal_spread, greater_spread]);
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + 2/3[equal_spread, greater_spread]);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(1,3,3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "subset or equal";
+
+ pickup rule_pen;
+
+ t := 2/3[equal_spread, greater_spread];
+ s := 1/2equal_spread + 1/2t;
+
+ z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90;
+ y0 = y2 = ypart centre - s;
+ x0 = xpart left_point;
+ x2 = xpart right_point;
+
+ draw subset(z1, z3, t);
+ draw z0 -- z2;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 2/3[equal_spread, greater_spread]);
+ elseif negated = 2:
+ stroke_through(1/2[z0,z2] + 1/2equal_spread * dir 90, 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(2,4,4) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "subset or double equal";
+
+ pickup rule_pen;
+
+ t := 2/3[equal_spread, greater_spread];
+ s := 1/2t;
+
+ z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90;
+ y0 = y2 = ypart centre - s;
+ x0 = xpart left_point;
+ x2 = xpart right_point;
+
+ z0 - z4 = z2 - z5 = equal_spread * dir 90;
+
+ draw subset(z1, z3, t);
+ draw z0 -- z2;
+ draw z4 -- z5;
+
+ if negated = 1:
+ stroke_through(centre, 4equal_spread + 2/3[equal_spread, greater_spread]);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z0,z2], 1/2[z4,z5]], 3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#, ifneg(8/3, 14/3) * equal_spread# + rule_thickness#);
+ "double subset";
+
+ pickup rule_pen;
+
+ draw subset(left_point + 3/4equal_spread * dir (90 - sign * 90), right_point,
+ equal_spread);
+ draw subset(left_point, right_point, 8/3equal_spread);
+
+ if negated = 1:
+ stroke_through(centre, 14/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "curly less than";
+
+ pickup rule_pen;
+
+ draw prec(left_point, right_point, 2/3[equal_spread, greater_spread]);
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + 2/3[equal_spread, greater_spread]);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(2/3, 8/3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "curly less than or equal";
+
+ pickup rule_pen;
+
+ t := 2/3[equal_spread, greater_spread];
+ s := 1/3equal_spread + 1/2t;
+
+ z1 - z0 = z3 - z2 = (t/2 + 2/3equal_spread) * dir 90;
+ y0 = y2 = ypart centre - s;
+ x0 = xpart left_point;
+ x2 = xpart right_point;
+
+ draw prec(z1, z3, t);
+ draw z0 -- z2;
+
+ if negated = 1:
+ stroke_through(centre, 8/3equal_spread + 2/3[equal_spread, greater_spread]);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(1,3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "curly less than or curly equal";
+
+ pickup rule_pen;
+
+ t := 2/3[equal_spread, greater_spread];
+
+ z1 - z0 = equal_spread * dir 90;
+ z4 - z2 = 7/5equal_spread * dir 90;
+ z3 - z4 = t/2 * dir 90;
+ y1 = y3;
+ y4 = ypart centre - 1/2(t - equal_spread);
+ x0 = xpart left_point;
+ x2 = xpart right_point;
+
+ path p;
+
+ p = z0{z3 - z1} .. z2;
+
+ v := xpart (p intersectiontimes (z4 -- (z4 + h * dir (270 - sign * 20))));
+
+ draw prec(z1, z3, t);
+ draw subpath (0,v) of p;
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + 2/3[equal_spread, greater_spread]);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(4/3, 10/3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "curly less sim";
+
+ pickup rule_pen;
+
+ t := 2/3[equal_spread, greater_spread];
+ s := 1/3equal_spread + t/2;
+
+ z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90;
+ y0 = y2 = ypart centre - s;
+ x0 = xpart left_point;
+ x2 = xpart right_point;
+
+ draw prec(z1, z3, t);
+
+ if sign > 0:
+ draw sim(z0, z2);
+ else:
+ draw sim(z2, z0);
+ fi
+
+ if negated = 1:
+ stroke_through(centre, 10/3equal_spread + 2/3[equal_spread, greater_spread]);
+ elseif negated = 2:
+ stroke_through(1/2[z0,z2], 8/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 3:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(7/3, 13/3, 13/3) * equal_spread# + 2/3[equal_spread#, greater_spread#] + rule_thickness#);
+ "curly less approx";
+
+ pickup rule_pen;
+
+ t := 2/3[equal_spread, greater_spread];
+ s := -1/6equal_spread + t/2;
+
+ z1 - z0 = z3 - z2 = (t/2 + equal_spread) * dir 90;
+ y0 = y2 = ypart centre - s;
+ x0 = xpart left_point;
+ x2 = xpart right_point;
+
+ z0 - z4 = z2 - z5 = equal_spread * dir 90;
+
+ draw prec(z1, z3, t);
+
+ if sign > 0:
+ draw sim(z0, z2);
+ draw sim(z4, z5);
+ else:
+ draw sim(z2, z0);
+ draw sim(z5, z4);
+ fi
+
+ if negated = 1:
+ stroke_through(centre, 13/3equal_spread + 2/3[equal_spread, greater_spread]);
+ elseif negated = 2:
+ stroke_through(1/2[1/2[z0,z2], 1/2[z4,z5]], 11/3equal_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ ifneg(0,2) * equal_spread# + greater_spread# + rule_thickness#);
+ "less than dot";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+
+ 1/2[z0, z1] = right_point;
+
+ draw z0 -- left_point -- z1;
+ fill circle(right_point - sign * dot_size * dir 0, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 2equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ greater_spread# + ifneg(2/3, 10/3) * equal_spread# + rule_thickness#);
+ "less than or equal dot";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ y2 = 1/2[y0, y1];
+ x2 = x3 = xpart left_point;
+ y3 = y4;
+ z0 - z4 = 2/3equal_spread * dir 90;
+
+ 1/2[z1, z4] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4;
+ fill circle(1/2[z0,z1] - sign * dot_size * dir 0, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 10/3equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+
+if negated < 2:
+ for sign = 1, -1:
+ beginorder(sign, order_width# + rule_thickness#,
+ greater_spread# + ifneg(1,3) * equal_spread# + rule_thickness#);
+ "less than or slanted equal dot";
+
+ pickup rule_pen;
+
+ z1 - z0 = greater_spread * dir 90;
+ z2 - z3 = equal_spread * dir 90;
+ z0 - z4 = equal_spread * dir 90;
+
+ 1/2[z2, z3] = left_point;
+ 1/2[z1, z4] = right_point;
+
+ draw z0 -- z2 -- z1;
+ draw z3 -- z4;
+ fill circle(1/2[z0,z1] - sign * dot_size * dir 0, dot_size);
+
+ if negated = 1:
+ stroke_through(centre, 3equal_spread + greater_spread);
+ fi;
+ endchar;
+ endfor;
+fi;
+