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