13e12c5d1SDavid du Colombier /* tg.c: process included text blocks */ 23e12c5d1SDavid du Colombier # include "t.h" 33e12c5d1SDavid du Colombier 43e12c5d1SDavid du Colombier int 53e12c5d1SDavid du Colombier gettext(char *sp, int ilin, int icol, char *fn, char *sz) 63e12c5d1SDavid du Colombier { 73e12c5d1SDavid du Colombier /* get a section of text */ 83e12c5d1SDavid du Colombier char line[4096]; 93e12c5d1SDavid du Colombier int oname; 103e12c5d1SDavid du Colombier char *vs; 113e12c5d1SDavid du Colombier 123e12c5d1SDavid du Colombier if (texname == 0) 133e12c5d1SDavid du Colombier error("Too many text block diversions"); 143e12c5d1SDavid du Colombier if (textflg == 0) { 15*219b2ee8SDavid du Colombier Bprint(&tabout, ".nr %d \\n(.lu\n", SL); /* remember old line length */ 163e12c5d1SDavid du Colombier textflg = 1; 173e12c5d1SDavid du Colombier } 18*219b2ee8SDavid du Colombier Bprint(&tabout, ".eo\n"); 19*219b2ee8SDavid du Colombier Bprint(&tabout, ".am %s\n", reg(icol, CRIGHT)); 20*219b2ee8SDavid du Colombier Bprint(&tabout, ".br\n"); 21*219b2ee8SDavid du Colombier Bprint(&tabout, ".di %c+\n", texname); 223e12c5d1SDavid du Colombier rstofill(); 233e12c5d1SDavid du Colombier if (fn && *fn) 24*219b2ee8SDavid du Colombier Bprint(&tabout, ".nr %d \\n(.f\n.ft %s\n", S1, fn); 25*219b2ee8SDavid du Colombier Bprint(&tabout, ".ft \\n(.f\n"); /* protect font */ 263e12c5d1SDavid du Colombier vs = vsize[icol][stynum[ilin]]; 273e12c5d1SDavid du Colombier if ((sz && *sz) || (vs && *vs)) { 28*219b2ee8SDavid du Colombier Bprint(&tabout, ".nr %d \\n(.v\n", S9); 293e12c5d1SDavid du Colombier if (vs == 0 || *vs == 0) 303e12c5d1SDavid du Colombier vs = "\\n(.s+2"; 313e12c5d1SDavid du Colombier if (sz && *sz) 32*219b2ee8SDavid du Colombier Bprint(&tabout, ".ps %s\n", sz); 33*219b2ee8SDavid du Colombier Bprint(&tabout, ".vs %s\n", vs); 34*219b2ee8SDavid du Colombier Bprint(&tabout, ".if \\n(%du>\\n(.vu .sp \\n(%du-\\n(.vu\n", S9, S9); 353e12c5d1SDavid du Colombier } 363e12c5d1SDavid du Colombier if (cll[icol][0]) 37*219b2ee8SDavid du Colombier Bprint(&tabout, ".ll %sn\n", cll[icol]); 383e12c5d1SDavid du Colombier else 39*219b2ee8SDavid du Colombier Bprint(&tabout, ".ll \\n(%du*%du/%du\n", SL, ctspan(ilin, icol), ncol + 1); 40*219b2ee8SDavid du Colombier Bprint(&tabout, ".if \\n(.l<\\n(%2s .ll \\n(%2su\n", reg(icol, CRIGHT), 413e12c5d1SDavid du Colombier reg(icol, CRIGHT)); 423e12c5d1SDavid du Colombier if (ctype(ilin, icol) == 'a') 43*219b2ee8SDavid du Colombier Bprint(&tabout, ".ll -2n\n"); 44*219b2ee8SDavid du Colombier Bprint(&tabout, ".in 0\n"); 453e12c5d1SDavid du Colombier while (gets1(line, sizeof(line))) { 463e12c5d1SDavid du Colombier if (line[0] == 'T' && line[1] == '}' && line[2] == tab) 473e12c5d1SDavid du Colombier break; 483e12c5d1SDavid du Colombier if (match("T}", line)) 493e12c5d1SDavid du Colombier break; 50*219b2ee8SDavid du Colombier Bprint(&tabout, "%s\n", line); 513e12c5d1SDavid du Colombier } 523e12c5d1SDavid du Colombier if (fn && *fn) 53*219b2ee8SDavid du Colombier Bprint(&tabout, ".ft \\n(%d\n", S1); 543e12c5d1SDavid du Colombier if (sz && *sz) 55*219b2ee8SDavid du Colombier Bprint(&tabout, ".br\n.ps\n.vs\n"); 56*219b2ee8SDavid du Colombier Bprint(&tabout, ".br\n"); 57*219b2ee8SDavid du Colombier Bprint(&tabout, ".di\n"); 58*219b2ee8SDavid du Colombier Bprint(&tabout, ".nr %c| \\n(dn\n", texname); 59*219b2ee8SDavid du Colombier Bprint(&tabout, ".nr %c- \\n(dl\n", texname); 60*219b2ee8SDavid du Colombier Bprint(&tabout, "..\n"); 61*219b2ee8SDavid du Colombier Bprint(&tabout, ".ec \\\n"); 623e12c5d1SDavid du Colombier /* copy remainder of line */ 633e12c5d1SDavid du Colombier if (line[2]) 643e12c5d1SDavid du Colombier tcopy (sp, line + 3); 653e12c5d1SDavid du Colombier else 663e12c5d1SDavid du Colombier *sp = 0; 673e12c5d1SDavid du Colombier oname = texname; 683e12c5d1SDavid du Colombier texname = texstr[++texct]; 693e12c5d1SDavid du Colombier return(oname); 703e12c5d1SDavid du Colombier } 713e12c5d1SDavid du Colombier 723e12c5d1SDavid du Colombier 733e12c5d1SDavid du Colombier void 743e12c5d1SDavid du Colombier untext(void) 753e12c5d1SDavid du Colombier { 763e12c5d1SDavid du Colombier rstofill(); 77*219b2ee8SDavid du Colombier Bprint(&tabout, ".nf\n"); 78*219b2ee8SDavid du Colombier Bprint(&tabout, ".ll \\n(%du\n", SL); 793e12c5d1SDavid du Colombier } 803e12c5d1SDavid du Colombier 813e12c5d1SDavid du Colombier 82