home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 4
/
FreshFish_May-June1994.bin
/
useful
/
dist
/
text
/
tex
/
pastex
/
mf
/
inputs
/
sym.mf
< prev
next >
Wrap
Text File
|
1992-03-17
|
19KB
|
459 lines
% This file generates the following characters when their codes are known:
% |minus|, |plus_minus|, |o_plus|, |o_times|,
% |cup|, |cap|, |meet|, |join|,
% |down_arrow|, |up_arrow|,
% |left_arrow|, |right_arrow|, |double_arrow|,
% |subset|, |superset|, |elt|,
% |for_all|, |there_exists|, |false_that|,
% |less|, |greater|, |underbar|,
% |neq|, |leq|, |geq|, |eqv|,
% |backslash|, |vertical|,
% |cdot|, |diamond|,
% |left_brace|, |right_brace|,
% |straight_quotes|, |infty|, |integral|.
iff known minus: cmchar "Minus sign";
beginarithchar(minus); pickup rule.nib;
lft x1=hround 1.5u-eps; x2=w-x1; y1=y2=math_axis;
draw z1--z2; % bar
labels(1,2); endchar;
iff known plus_minus: cmchar "Plus-or-minus sign";
beginarithchar(plus_minus); pickup rule.nib;
numeric shiftup; shiftup=vround 1.5u;
x1=x2=.5w; lft x3=lft x5=hround u-eps; x4=x6=w-x3;
.5[y1,y2]=y3=y4=math_axis+shiftup; top y1=h+shiftup; y5=y6=y2;
draw z1--z2; % stem
draw z3--z4; % plus bar
draw z5--z6; % minus bar
labels(1,2,3,4,5,6); endchar;
iff known o_plus: cmchar "Circle-plus operator";
beginarithchar(o_plus); pickup light_rule.nib; autorounded;
lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
circle_points; draw_circle; % circle
draw z2--z6; draw z4--z8; % bar and stem
labels(1,2,3,4,5,6,7,8); endchar;
iff known o_times: cmchar "Circle-times operator";
beginarithchar(o_times); pickup light_rule.nib; autorounded;
lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
circle_points; draw_circle; % circle
draw z1--z5; draw z3--z7; % diagonals
labels(1,2,3,4,5,6,7,8); endchar;
iff known cup: cmchar "Set union sign";
beginchar(cup,12u#,.8asc_height#,0);
italcorr .8asc_height#*slant-.5u#;
adjust_fit(0,0); pickup rule.nib; autorounded;
lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
y1=good.y h+o; bot y3=-o; y2=y4=2/3[y1,y3]; y5=y1;
draw z1---z2...z3...z4---z5; % stems and cup
labels(1,2,3,4,5); endchar;
iff known cap: cmchar "Set intersection sign";
beginchar(cap,12u#,.8asc_height#,0);
italcorr .8asc_height#*slant-.5u#;
adjust_fit(0,0); pickup rule.nib; autorounded;
lft x1=hround u; x2=x1; x3=w-x3; x4=x5=w-x1;
y3=good.y h+o; bot y1=-o; y2=y4=2/3[y1,y3]; y5=y1;
draw z1---z2...z3...z4---z5; % stems and cap
labels(1,2,3,4,5); endchar;
iff known meet: cmchar "Lattice infimum (logical and) sign";
beginchar(meet,12u#,.8asc_height#,0);
italcorr .8asc_height#*slant-.5u#;
adjust_fit(0,0); pickup rule.nib;
lft x1=hround u-eps; x3=w-x3; x5=w-x1;
y3=good.y h+o; bot y1=-o; y5=y1;
draw z1--z3--z5; % diagonals
labels(1,3,5); endchar;
iff known join: cmchar "Lattice supremum (logical or) sign";
beginchar(join,12u#,.8asc_height#,0);
italcorr .8asc_height#*slant-.5u#;
adjust_fit(0,0); pickup rule.nib;
lft x1=hround u-eps; x3=w-x3; x5=w-x1;
y1=good.y h+o; bot y3=-o; y5=y1;
draw z1--z3--z5; % diagonals
labels(1,3,5); endchar;
iff known down_arrow: cmchar "Downward arrow";
beginchar(down_arrow,9u#,asc_height#,asc_depth#);
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,0); pos2(rule_thickness,0);
pos3(rule_thickness,90); pos4(rule_thickness,90);
lft x1l=hround(.5w-.5rule_thickness); y1+.5rule_thickness=h;
x0=x1=x2; bot y0=-d; x0-x3=x4-x0=if monospace:3u else:4u fi+eps;
y3=y4=y0+if monospace:.24 else:.36 fi asc_height+eps;
pos5(rule_thickness,angle(z4-z0)); z5l=z0;
pos6(rule_thickness,angle(z3-z0)); z6l=z0;
z9=.2[.5[z3,z4],z0];
numeric t; path p; p=z4r{z9-z4}..z6r;
t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
--z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
--z3l{z9-z3}..z0 & cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6,9); endchar;
iff known up_arrow: cmchar "Upward arrow";
beginchar(up_arrow,9u#,asc_height#,asc_depth#);
italcorr .76asc_height#*slant+.5crisp#-u#;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,0); pos2(rule_thickness,0);
pos3(rule_thickness,90); pos4(rule_thickness,90);
lft x1l=hround(.5w-.5rule_thickness); y1-.5rule_thickness=-d;
x0=x1=x2; top y0=h; x0-x3=x4-x0=if monospace:3u else:4u fi+eps;
y3=y4=y0-if monospace:.24 else:.36 fi asc_height-eps;
pos5(rule_thickness,angle(z4-z0)); z5l=z0;
pos6(rule_thickness,angle(z3-z0)); z6l=z0;
z9=.2[.5[z3,z4],z0];
numeric t; path p; p=z4l{z9-z4}..z6r;
t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
--z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
--z3r{z9-z3}..z0 & cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6,9); endchar;
iff known left_arrow: cmchar "Leftward arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(left_arrow,18u#,v_center(spread#+rule_thickness#));
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90);
pos3(rule_thickness,0); pos4(rule_thickness,0);
y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;
x3=x4=x0+if monospace:3u else:4u fi+eps;
pos5(rule_thickness,angle(z4-z0)); z5l=z0;
pos6(rule_thickness,angle(z3-z0)); z6l=z0;
z9=.2[.5[z3,z4],z0];
numeric t; path p; p=z4r{z9-z4}..z6r;
t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
--z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
--z3l{z9-z3}..z0 & cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6,9); endchar;
iff known right_arrow: cmchar "Rightward arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(right_arrow,18u#,v_center(spread#+rule_thickness#));
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90);
pos3(rule_thickness,0); pos4(rule_thickness,0);
y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;
x3=x4=x0-if monospace:3u else:4u fi-eps;
pos5(rule_thickness,angle(z4-z0)); z5l=z0;
pos6(rule_thickness,angle(z3-z0)); z6l=z0;
z9=.2[.5[z3,z4],z0];
numeric t; path p; p=z4l{z9-z4}..z6r;
t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
--z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
--z3r{z9-z3}..z0 & cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6,9); endchar;
iff known double_arrow: cmchar "Left-and-right arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(double_arrow,18u#,
v_center(if monospace:.6asc_height#+fi spread#+rule_thickness#));
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90);
pos3(rule_thickness,0); pos4(rule_thickness,0);
y0=y1=y2=math_axis if monospace:+vround.3asc_height fi; lft x0=hround u;
if monospace: x1+.5rule_thickness=hround(w-u) else: x1=.5w fi;
y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;
x3=x4=x0+if monospace:3u else:4u fi+eps;
pos5(rule_thickness,angle(z4-z0)); z5l=z0;
pos6(rule_thickness,angle(z3-z0)); z6l=z0;
z9=.2[.5[z3,z4],z0];
numeric t; path p; p=z4r{z9-z4}..z6r;
t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
--z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
--z3l{z9-z3}..z0 & cycle; % left arrowhead and stem
pos11(rule_thickness,90); pos12(rule_thickness,90);
pos13(rule_thickness,0); pos14(rule_thickness,0);
y10=y11=y12=math_axis if monospace:-vround.3asc_height fi;
rt x10=hround(w-u);
if monospace: x11-.5rule_thickness=hround u else: x11=.5w fi;
y13-y10=y10-y14=if monospace:.24 else:.36 fi asc_height+eps;
x13=x14=x10-if monospace:3u else:4u fi-eps;
pos15(rule_thickness,angle(z14-z10)); z15l=z10;
pos16(rule_thickness,angle(z13-z10)); z16l=z10;
z19=.2[.5[z13,z14],z10];
numeric t; path p; p=z14l{z19-z14}..z16r;
t=xpart(p intersectiontimes((0,y12l)--(w,y12l))); x12=xpart point t of p;
filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
--z12l---z11l..z11r---z12r--subpath (t,0) of\\(z13l{z19-z13}..z15r)
--z13r{z19-z13}..z10 & cycle; % right arrowhead and stem
penlabels(0,1,2,3,4,5,6,9,10,11,12,13,14,15,16,19); endchar;
iff known subset: cmchar "Proper subset sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(subset,14u#,v_