|
|
1.1 ! root 1: # include "e.h" ! 2: ! 3: paren(leftc, p1, rightc) ! 4: int p1, leftc, rightc; ! 5: { ! 6: int n, m, j; ! 7: float h1, b1, v; ! 8: extern float Parenbase; ! 9: ! 10: h1 = eht[p1]; ! 11: b1 = ebase[p1]; ! 12: yyval = p1; ! 13: lfont[yyval] = rfont[yyval] = 0; ! 14: n = REL(h1,ps) + 0.99; /* ceiling */ ! 15: if (n < 2) ! 16: n = 1; ! 17: m = n - 2; ! 18: if (leftc == '{' || rightc == '}') { ! 19: n = n%2 ? n : ++n; ! 20: if (n < 3) ! 21: n = 3; ! 22: m = n-3; ! 23: } ! 24: eht[yyval] = EM((float) n, ps); ! 25: ebase[yyval] = eht[yyval]/2 - EM(Parenbase, ps); ! 26: /* v = REL(-ebase[yyval] + (eht[yyval]-h1)/2 + b1, ps); */ ! 27: v = 0; /* in other words, don't shift it at all */ ! 28: printf(".ds %d \\|", yyval); ! 29: switch (leftc) { ! 30: case 'n': /* nothing */ ! 31: case '\0': ! 32: break; ! 33: case 'f': /* floor */ ! 34: if (n <= 1) ! 35: printf("\\(lf"); ! 36: else ! 37: brack(m, "\\(bv", "\\(bv", "\\(lf"); ! 38: break; ! 39: case 'c': /* ceiling */ ! 40: if (n <= 1) ! 41: printf("\\(lc"); ! 42: else ! 43: brack(m, "\\(lc", "\\(bv", "\\(bv"); ! 44: break; ! 45: case '{': ! 46: printf("\\b'\\(lt"); ! 47: for(j = 0; j < m; j += 2) printf("\\(bv"); ! 48: printf("\\(lk"); ! 49: for(j = 0; j < m; j += 2) printf("\\(bv"); ! 50: printf("\\(lb'"); ! 51: break; ! 52: case '(': ! 53: brack(m, "\\(lt", "\\(bv", "\\(lb"); ! 54: break; ! 55: case '[': ! 56: brack(m, "\\(lc", "\\(bv", "\\(lf"); ! 57: break; ! 58: case '|': ! 59: brack(m, "|", "|", "|"); ! 60: break; ! 61: default: ! 62: brack(m, (char *) &leftc, (char *) &leftc, (char *) &leftc); ! 63: break; ! 64: } ! 65: if (v) ! 66: printf("\\v'%gm'\\*(%d\\v'%gm'", -v, p1, v); ! 67: else ! 68: printf("\\*(%d", p1); ! 69: if (rightc) { ! 70: switch (rightc) { ! 71: case 'f': /* floor */ ! 72: if (n <= 1) ! 73: printf("\\(rf"); ! 74: else ! 75: brack(m, "\\(bv", "\\(bv", "\\(rf"); ! 76: break; ! 77: case 'c': /* ceiling */ ! 78: if (n <= 1) ! 79: printf("\\(rc"); ! 80: else ! 81: brack(m, "\\(rc", "\\(bv", "\\(bv"); ! 82: break; ! 83: case '}': ! 84: printf("\\b'\\(rt"); ! 85: for(j = 0; j < m; j += 2) printf("\\(bv"); ! 86: printf("\\(rk"); ! 87: for(j = 0; j < m; j += 2) printf("\\(bv"); ! 88: printf("\\(rb'"); ! 89: break; ! 90: case ']': ! 91: brack(m, "\\(rc", "\\(bv", "\\(rf"); ! 92: break; ! 93: case ')': ! 94: brack(m, "\\(rt", "\\(bv", "\\(rb"); ! 95: break; ! 96: case '|': ! 97: brack(m, "|", "|", "|"); ! 98: break; ! 99: default: ! 100: brack(m, (char *) &rightc, (char *) &rightc, (char *) &rightc); ! 101: break; ! 102: } ! 103: } ! 104: printf("\n"); ! 105: dprintf(".\tcurly: h=%g b=%g n=%d v=%g l=%c, r=%c\n", ! 106: eht[yyval], ebase[yyval], n, v, leftc, rightc); ! 107: } ! 108: ! 109: brack(m, t, c, b) ! 110: int m; ! 111: char *t, *c, *b; ! 112: { ! 113: int j; ! 114: printf("\\b'%s", t); ! 115: for( j=0; j < m; j++) ! 116: printf("%s", c); ! 117: printf("%s'", b); ! 118: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.