1*14514Ssam #ifndef lint 2*14514Ssam static char sccsid[] = "@(#)tg.c 4.2 08/11/83"; 3*14514Ssam #endif 411041Sshannon 511041Sshannon /* tg.c: process included text blocks */ 611041Sshannon # include "t..c" 711041Sshannon gettext(sp, ilin,icol, fn, sz) 811041Sshannon char *sp, *fn, *sz; 911041Sshannon { 1011041Sshannon /* get a section of text */ 1111041Sshannon char line[256]; 1211041Sshannon int oname; 1311041Sshannon char *vs; 1411041Sshannon if (texname==0) error("Too many text block diversions"); 1511041Sshannon if (textflg==0) 1611041Sshannon { 1711041Sshannon fprintf(tabout, ".nr %d \\n(.lu\n", SL); /* remember old line length */ 1811041Sshannon textflg=1; 1911041Sshannon } 2011041Sshannon fprintf(tabout, ".eo\n"); 2111041Sshannon fprintf(tabout, ".am %02d\n", icol+80); 2211041Sshannon fprintf(tabout, ".br\n"); 2311041Sshannon fprintf(tabout, ".di %c+\n", texname); 2411041Sshannon rstofill(); 2511041Sshannon if (fn && *fn) fprintf(tabout, ".nr %d \\n(.f\n.ft %s\n", S1, fn); 2611041Sshannon fprintf(tabout, ".ft \\n(.f\n"); /* protect font */ 2711041Sshannon vs = vsize[stynum[ilin]][icol]; 2811041Sshannon if ((sz && *sz) || (vs && *vs)) 2911041Sshannon { 3011041Sshannon fprintf(tabout, ".nr %d \\n(.v\n", S2); 3111041Sshannon if (vs==0 || *vs==0) vs= "\\n(.s+2"; 3211041Sshannon if (sz && *sz) 3311041Sshannon fprintf(tabout, ".ps %s\n",sz); 3411041Sshannon fprintf(tabout, ".vs %s\n",vs); 3511041Sshannon fprintf(tabout, ".if \\n(%du>\\n(.vu .sp \\n(%du-\\n(.vu\n", S2,S2); 3611041Sshannon } 3711041Sshannon if (cll[icol][0]) 3811041Sshannon fprintf(tabout, ".ll %sn\n", cll[icol]); 3911041Sshannon else 4011041Sshannon fprintf(tabout, ".ll \\n(%du*%du/%du\n",SL,ctspan(ilin,icol),ncol+1); 4111041Sshannon fprintf(tabout,".if \\n(.l<\\n(%d .ll \\n(%du\n", icol+CRIGHT, icol+CRIGHT); 4211041Sshannon if (ctype(ilin,icol)=='a') 4311041Sshannon fprintf(tabout, ".ll -2n\n"); 4411041Sshannon fprintf(tabout, ".in 0\n"); 4511041Sshannon while (gets1(line)) 4611041Sshannon { 4711041Sshannon if (line[0]=='T' && line[1]=='}' && line[2]== tab) break; 4811041Sshannon if (match("T}", line)) break; 4911041Sshannon fprintf(tabout, "%s\n", line); 5011041Sshannon } 5111041Sshannon if (fn && *fn) fprintf(tabout, ".ft \\n(%d\n", S1); 5211041Sshannon if (sz && *sz) fprintf(tabout, ".br\n.ps\n.vs\n"); 5311041Sshannon fprintf(tabout, ".br\n"); 5411041Sshannon fprintf(tabout, ".di\n"); 5511041Sshannon fprintf(tabout, ".nr %c| \\n(dn\n", texname); 5611041Sshannon fprintf(tabout, ".nr %c- \\n(dl\n", texname); 5711041Sshannon fprintf(tabout, "..\n"); 5811041Sshannon fprintf(tabout, ".ec \\\n"); 5911041Sshannon /* copy remainder of line */ 6011041Sshannon if (line[2]) 6111041Sshannon tcopy (sp, line+3); 6211041Sshannon else 6311041Sshannon *sp=0; 6411041Sshannon oname=texname; 6511041Sshannon texname = texstr[++texct]; 6611041Sshannon return(oname); 6711041Sshannon } 6811041Sshannon untext() 6911041Sshannon { 7011041Sshannon rstofill(); 7111041Sshannon fprintf(tabout, ".nf\n"); 7211041Sshannon fprintf(tabout, ".ll \\n(%du\n", SL); 7311041Sshannon } 74