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

Defined functions

brack defined in line 99; used 12 times
paren defined in line 3; used 1 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 626
Valid CSS Valid XHTML 1.0 Strict