|
|
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.