|
|
1.1 ! root 1: /* t7.c: control to write table entries */ ! 2: # include "t..c" ! 3: # define realsplit ((ct=='a'||ct=='n') && table[ldata][c].rcol) ! 4: runout() ! 5: { ! 6: int i; ! 7: if (boxflg || allflg || dboxflg) need(); ! 8: if (ctrflg) ! 9: { ! 10: fprintf(tabout, ".nr #I \\n(.i\n"); ! 11: fprintf(tabout, ".in +(\\n(.lu-\\n(TWu-\\n(.iu)/2u\n"); ! 12: } ! 13: fprintf(tabout, ".fc %c %c\n", F1, F2); ! 14: fprintf(tabout, ".nr #T 0-1\n"); ! 15: deftail(); ! 16: for(i=0; i<nlin; i++) ! 17: putline(i,i); ! 18: if (leftover) ! 19: yetmore(); ! 20: fprintf(tabout, ".fc\n"); ! 21: fprintf(tabout, ".nr T. 1\n"); ! 22: fprintf(tabout, ".T# 1\n"); ! 23: if (ctrflg) ! 24: fprintf(tabout, ".in \\n(#Iu\n"); ! 25: } ! 26: runtabs(lform, ldata) ! 27: { ! 28: int c, ct, vforml, lf; ! 29: fprintf(tabout, ".ta "); ! 30: for(c=0; c<ncol; c++) ! 31: { ! 32: vforml=lform; ! 33: for(lf=prev(lform); lf>=0 && vspen(table[lf][c].col); lf=prev(lf)) ! 34: vforml=lf; ! 35: if (fspan(vforml,c)) ! 36: continue; ! 37: switch(ct=ctype(vforml,c)) ! 38: { ! 39: case 'n': ! 40: case 'a': ! 41: if (table[ldata][c].rcol) ! 42: if (lused[c]) /*Zero field width*/ ! 43: fprintf(tabout, "\\n(%du ",c+CMID); ! 44: case 'c': ! 45: case 'l': ! 46: case 'r': ! 47: if (realsplit? rused[c]: (used[c]+lused[c])) ! 48: fprintf(tabout, "\\n(%du ",c+CRIGHT); ! 49: continue; ! 50: case 's': ! 51: if (lspan(lform, c)) ! 52: fprintf(tabout, "\\n(%du ", c+CRIGHT); ! 53: continue; ! 54: } ! 55: } ! 56: fprintf(tabout, "\n"); ! 57: } ! 58: ifline(s) ! 59: char *s; ! 60: { ! 61: if (s[0] == '\\') s++; ! 62: if (s[1] ) return(0); ! 63: if (s[0] == '_') return('-'); ! 64: if (s[0] == '=') return('='); ! 65: return(0); ! 66: } ! 67: need() ! 68: { ! 69: int texlin, horlin, i; ! 70: for(texlin=horlin=i=0; i<nlin; i++) ! 71: { ! 72: if (fullbot[i]!=0) ! 73: horlin++; ! 74: else ! 75: if (instead[i]!=0) ! 76: continue; ! 77: else ! 78: texlin++; ! 79: } ! 80: fprintf(tabout, ".ne %dv+%dp\n",texlin,2*horlin); ! 81: } ! 82: deftail() ! 83: { ! 84: int i, c, lf, lwid; ! 85: for(i=0; i<MAXHEAD; i++) ! 86: if (linestop[i]) ! 87: fprintf(tabout, ".nr #%c 0-1\n", linestop[i]+'a'-1); ! 88: fprintf(tabout, ".nr #a 0-1\n"); ! 89: fprintf(tabout, ".eo\n"); ! 90: fprintf(tabout, ".de T#\n"); ! 91: fprintf(tabout, ".ds #d .d\n"); ! 92: fprintf(tabout, ".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n"); ! 93: fprintf(tabout, ".mk ##\n"); ! 94: fprintf(tabout, ".nr ## -1v\n"); ! 95: fprintf(tabout, ".ls 1\n"); ! 96: for(i=0; i<MAXHEAD; i++) ! 97: if (linestop[i]) ! 98: fprintf(tabout, ".if \\n(#T>=0 .nr #%c \\n(#T\n",linestop[i]+'a'-1); ! 99: if (boxflg || allflg || dboxflg) /* bottom of table line */ ! 100: if (fullbot[nlin-1]==0) ! 101: { ! 102: if (!pr1403) ! 103: fprintf(tabout, ".if \\n(T. .vs \\n(.vu-\\n(.sp\n"); ! 104: fprintf(tabout, ".if \\n(T. "); ! 105: drawline(nlin,0,ncol, dboxflg ? '=' : '-',1,0); ! 106: fprintf(tabout, "\n.if \\n(T. .vs\n"); ! 107: /* T. is really an argument to a macro but because of ! 108: eqn we don't dare pass it as an argument and reference by $1 */ ! 109: } ! 110: for(c=0; c<ncol; c++) ! 111: { ! 112: if ((lf=left(nlin-1,c, &lwid))>=0) ! 113: { ! 114: fprintf(tabout, ".if \\n(#%c>=0 .sp -1\n",linestop[lf]+'a'-1); ! 115: fprintf(tabout, ".if \\n(#%c>=0 ", linestop[lf]+'a'-1); ! 116: tohcol(c); ! 117: drawvert(lf, nlin-1, c, lwid); ! 118: fprintf(tabout, "\\h'|\\n(TWu'\n"); ! 119: } ! 120: } ! 121: if (boxflg || allflg || dboxflg) /* right hand line */ ! 122: { ! 123: fprintf(tabout, ".if \\n(#a>=0 .sp -1\n"); ! 124: fprintf(tabout, ".if \\n(#a>=0 \\h'|\\n(TWu'"); ! 125: drawvert (0, nlin-1, ncol, dboxflg? 2 : 1); ! 126: fprintf(tabout, "\n"); ! 127: } ! 128: fprintf(tabout, ".ls\n"); ! 129: fprintf(tabout, "..\n"); ! 130: fprintf(tabout, ".ec\n"); ! 131: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.