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