void sqrt(int p2) { #ifndef NEQN float nps; nps = (int)(EFFPS(((eht[p2]*9)/10+(resolution/POINT-1))/(resolution/POINT))); #endif /* NEQN */ yyval.token = p2; #ifndef NEQN eht[yyval.token] = VERT(EM(1.2, nps)); if(dbg)printf(".\tsqrt: S%d <- S%d;b=%g, h=%g\n", yyval.token, p2, ebase[yyval.token], eht[yyval.token]); if (ital(rfont[yyval.token])) printf(".as %d \\|\n", yyval.token); #endif /* NEQN */ nrwid(p2, ps, p2); #ifndef NEQN printf(".ds %d \\v'%gp'\\s%s\\v'-.2m'\\(sr\\l'\\n(%du\\(rn'\\v'.2m'\\s%s", yyval.token, ebase[p2], tsize(nps), p2, tsize(ps)); printf("\\v'%gp'\\h'-\\n(%du'\\*(%d\n", -ebase[p2], p2, p2); lfont[yyval.token] = ROM; #else /* NEQN */ printf(".ds %d \\v'%du'\\e\\L'%du'\\l'\\n(%du'", p2, ebase[p2], -eht[p2], p2); printf("\\v'%du'\\h'-\\n(%du'\\*(%d\n", eht[p2]-ebase[p2], p2, p2); eht[p2] += VERT(1); if(dbg)printf(".\tsqrt: S%d <- S%d;b=%d, h=%d\n", p2, p2, ebase[p2], eht[p2]); #endif /* NEQN */ }
void putout(int p1) { #ifndef NEQN float before, after; if(dbg)printf(".\tanswer <- S%d, h=%g,b=%g\n",p1, eht[p1], ebase[p1]); #else /* NEQN */ int before, after; if(dbg)printf(".\tanswer <- S%d, h=%d,b=%d\n",p1, eht[p1], ebase[p1]); #endif /* NEQN */ eqnht = eht[p1]; printf(".ds %d ", p1); /* suppposed to leave room for a subscript or superscript */ #ifndef NEQN before = eht[p1] - ebase[p1] - VERT(EM(1.2, ps)); #else /* NEQN */ before = eht[p1] - ebase[p1] - VERT(3); /* 3 = 1.5 lines */ #endif /* NEQN */ if (spaceval != NULL) printf("\\x'0-%s'", spaceval); else if (before > 0) #ifndef NEQN printf("\\x'0-%gp'", before); #else /* NEQN */ printf("\\x'0-%du'", before); #endif /* NEQN */ printf("\\f%c\\s%s\\*(%d%s\n", gfont, tsize(gsize), p1, ital(rfont[p1]) ? "\\|" : ""); printf(".ie \\n(.X=0 .as %d \\s\\n(99\n", p1); printf(".el .as %d \\s[\\n(99]\n", p1); printf(".as %d \\f\\n(98", p1); #ifndef NEQN after = ebase[p1] - VERT(EM(0.2, ps)); #else /* NEQN */ after = ebase[p1] - VERT(1); #endif /* NEQN */ if (spaceval == NULL && after > 0) #ifndef NEQN printf("\\x'%gp'", after); #else /* NEQN */ printf("\\x'%du'", after); #endif /* NEQN */ putchar('\n'); eqnreg = p1; if (spaceval != NULL) { free(spaceval); spaceval = NULL; } }
void font(int p1, int p2) { /* old font in p1, new in ft */ yyval = p2; lfont[yyval] = rfont[yyval] = ital(ft) ? ITAL : ROM; #ifndef NEQN if(dbg)printf(".\tb:fb: S%d <- \\f%c S%d \\f%c b=%g,h=%g,lf=%c,rf=%c\n", yyval, ft, p2, p1, ebase[yyval], eht[yyval], lfont[yyval], rfont[yyval]); #else /* NEQN */ if(dbg)printf(".\tb:fb: S%d <- \\f%c S%d \\f%c b=%d,h=%d,lf=%c,rf=%c\n", yyval, ft, p2, p1, ebase[yyval], eht[yyval], lfont[yyval], rfont[yyval]); #endif /* NEQN */ printf(".ds %d \\f%c\\*(%d\\f%c\n", yyval, ft, p2, p1); ft = p1; printf(".ft %c\n", ft); }
void eqnbox(int p1, int p2, int lu) { #ifndef NEQN float b, h; #else /* NEQN */ int b, h; #endif /* NEQN */ const char *sh; yyval.token = p1; b = max(ebase[p1], ebase[p2]); eht[yyval.token] = h = b + max(eht[p1]-ebase[p1], eht[p2]-ebase[p2]); ebase[yyval.token] = b; #ifndef NEQN if(dbg)printf(".\te:eb: S%d <- S%d S%d; b=%g, h=%g\n", yyval.token, p1, p2, b, h); #else /* NEQN */ if(dbg)printf(".\te:eb: S%d <- S%d S%d; b=%d, h=%d\n", yyval.token, p1, p2, b, h); #endif /* NEQN */ if (ital(rfont[p1]) && rom(lfont[p2])) { if (op(lfont[p2])) sh = "\\|"; else sh = "\\^"; } else sh = ""; if (lu) { printf(".nr %d \\w'\\s%s\\*(%d%s'\n", p1, tsize(ps), p1, sh); printf(".ds %d \\h'|\\n(97u-\\n(%du'\\*(%d\n", p1, p1, p1); } printf(".as %d \"%s\\*(%d\n", yyval.token, sh, p2); rfont[p1] = rfont[p2]; ofree(p2); }