rem: drawline(i, cl, cr, lintype, noheight, shortl)
add: drawline(int i, int cl, int cr, int lintype, int noheight, int shortl)
context: drawline(i, cl, cr, lintype, noheight, shortl){	char *exhr, *exhl, *lnch;	int lcount, ln, linpos, oldpos, nodata;lcount=0;exhr=exhl= "";switch(lintype)	{	case '-': lcount=1;break;	case '=': lcount = pr1403? 1 : 2; break;	case SHORTLINE: lcount=1; break;	}if (lcount<=0) return;nodata = cr-cl>=ncol || noheight || allh(i);	if (!nodata)		fprintf(tabout, "\\v'-.5m'");for(ln=oldpos=0; ln<lcount; ln++)	{	linpos = 2*ln - lcount +1;	if (linpos != oldpos)		fprintf(tabout, "\\v'%dp'", linpos-oldpos);	oldpos=linpos;	if (shortl==0)	{	tohcol(cl);	if (lcount>1)		{		switch(interv(i,cl))			{			case TOP: exhl = ln==0 ? "1p" : "-1p"; break;			case BOT: exhl = ln==1 ? "1p" : "-1p"; break;			case THRU: exhl = "1p"; break;			}		if (exhl[0])		fprintf(tabout, "\\h'%s'", exhl);		}	else if (lcount==1)		{		switch(interv(i,cl))			{			case TOP: case BOT: exhl = "-1p"; break;			case THRU: exhl = "1p"; break;			}		if (exhl[0])		fprintf(tabout, "\\h'%s'", exhl);		}	if (lcount>1)		{		switch(interv(i,cr+1))			{			case TOP: exhr = ln==0 ? "-1p" : "+1p"; break;			case BOT: exhr = ln==1 ? "-1p" : "+1p"; break;			case THRU: exhr = "-1p"; break;			}		}	else if (lcount==1)		{		switch(interv(i,cr+1))			{			case TOP: case BOT: exhr = "+1p"; break;			case THRU: exhr = "-1p"; break;			}		}	}	else		fprintf(tabout, "\\h'|\\n(%du'", cl+CLEFT);	fprintf(tabout, "\\s\\n(%d",LSIZE);	if (linsize)		fprintf(tabout, "\\v'-\\n(%dp/6u'", LSIZE);	if (shortl)		fprintf(tabout, "\\l'|\\n(%du'", cr+CRIGHT);	else	{	lnch = "\\(ul";	if (pr1403)		lnch = lintype==2 ? "=" : "\\(ru";	if (cr+1>=ncol)		fprintf(tabout, "\\l'|\\n(TWu%s%s'", exhr,lnch);	else		fprintf(tabout, "\\l'(|\\n(%du+|\\n(%du)/2u%s%s'", cr+CRIGHT,			cr+1+CLEFT, exhr, lnch);	}	if (linsize)		fprintf(tabout, "\\v'\\n(%dp/6u'", LSIZE);	fprintf(tabout, "\\s0");	}if (oldpos!=0)	fprintf(tabout, "\\v'%dp'", -oldpos);if (!nodata)	fprintf(tabout, "\\v'+.5m'");}