[comp.text] HELP! with boxed tables using MM, tbl

btwomey@mtuxj.att.com (XF3AA-W.TWOMEY) (02/09/89)

I'm trying to create multi-page boxed tables using tbl and mm and troff.
I'm using .TS H and .TH to get the header repeated on pages.

MM has problems though. I have had: the sides of the box go missing;
pages come out blank except for the table header; and the last page 
have the last few lines jam into each other as if the vertical space
had been decreased, as in .vs 2 .  Lots of nonsense, really.

I'll break the table into several page sized tables as a last resort.

Is there a bug in mm? If you have had success with a multipage boxed
table, can you send me a copy?

Here is how I'm setting up the table. Do you see anything wrong?

Table contents deleted for brevity. I don't think that the length
of this table (300 lines) is munging things; errors have appeared
on every page.

This is exasperating, any help will be greatly appreciated.

Bill Twomey
201-577-4627		
AT&T Business Markets Group	attmail!btwomey

.PM N
.PF "''- \\\\nP -''"
.PH "'''junk2.tbl'"
.\" there are extra columns on the left and right, it looks nicer
.TS H
center, doublebox;
rw1 1 cw1 1 s s s sw1
rw1 1 rw1 1 c s s 
rw1 1 Lw1 1 c c c 1 Lw1 Lw1.
\ 
\ 		Database File Usage\fR
\ 	\ 	_	_	_	 	\ 
.T&
rw1 1 Lw1 1 c c c 1 L 1 rw1 1
rw1 1 Lw1 1 c c c 1 L 1 rw1 1
rw1 1 Lw1 1 c c c 1 L 1 rw1 1.
		LOGICAL	FILE	C	\ 	\ 
		FILE	ALIAS	PROGRAM	\ 	\ 
\ 	=	=	=	=	=	\ 
.T&
rw1 1 Lw1 1 ae 4 ce 4 a l.
.TH
		noclass	NOFILE	flag.c	 \ 
				w aclist.c
				badseed.c
				broad.c
				krispie.c
				poopt.c
		gagroot	GAGFILE	gagnld.c
				bloadpes.c
				slicingf1.c
				phspca.c
.
.
.
		std	STFILE	poopt.c
				poorepf.c
				fnordcomf1.c
				fnordcopy.c
.TE

-- 
201-577-4627
AT&T Business Markets Group
Business Customer Platform & Equipment Provisioning Systems Division

hecht@hsi.UUCP (Alice Hecht) (02/11/89)

In article <946@mtuxj.att.com>, btwomey@mtuxj.att.com (XF3AA-W.TWOMEY) writes:
> 
> I'm trying to create multi-page boxed tables using tbl and mm and troff.
> I'm using .TS H and .TH to get the header repeated on pages.
> 
> MM has problems though. I have had: the sides of the box go missing;
> pages come out blank except for the table header; and the last page 
> have the last few lines jam into each other as if the vertical space
> had been decreased, as in .vs 2 .  Lots of nonsense, really.
> 
> I'll break the table into several page sized tables as a last resort.
> 
I've had similar problems with tables before and the only thing that 
ended working was ending the table at the bottom of each page and then
restarting it again at the top.  It seems that sometimes you can use
the running table headers and sometimes it doesn't like it.  The worst
learning experience I ever had with tables was when I started a job
at the end of the day and left for home and when I came in the
next day to pick up my printout found out that the system administrator
finally had to cancel my job 8 hours after I had left.  What had happened
was the table went into an infinite loop and tied up a majority
of our CPU processing time.  They weren't too happy with me that day.

So if you're trying to have a table run from one page to the next, don't!
There is definitely a bug in troff there (and by the way I was using the
MS macro but your situation sounds identical to mine).

Alice

-- 
Alice Hecht                                       ...!uunet!hsi!hecht
Health Systems International                      hecht@hsi.uu.net

debra@alice.UUCP (Paul De Bra) (02/14/89)

In article <1085@hsi.UUCP> hecht@hsi.UUCP (Alice Hecht) writes:
?In article <946@mtuxj.att.com>, btwomey@mtuxj.att.com (XF3AA-W.TWOMEY) writes:
?> 
?> I'm trying to create multi-page boxed tables using tbl and mm and troff.
?> I'm using .TS H and .TH to get the header repeated on pages.
?> 
?> MM has problems though. I have had: the sides of the box go missing;
?> pages come out blank except for the table header; and the last page 
?> have the last few lines jam into each other as if the vertical space
?> had been decreased, as in .vs 2 .  Lots of nonsense, really.
?> 
?> I'll break the table into several page sized tables as a last resort.
?> 
?I've had similar problems with tables before and the only thing that 
?ended working was ending the table at the bottom of each page and then
?restarting it again at the top.  It seems that sometimes you can use
?the running table headers and sometimes it doesn't like it.  The worst
?learning experience I ever had with tables was when I started a job
?at the end of the day and left for home and when I came in the
?next day to pick up my printout found out that the system administrator
?finally had to cancel my job 8 hours after I had left.  What had happened
?was the table went into an infinite loop and tied up a majority
?of our CPU processing time.  They weren't too happy with me that day.
?
?So if you're trying to have a table run from one page to the next, don't!
?There is definitely a bug in troff there (and by the way I was using the
?MS macro but your situation sounds identical to mine).
?

From working with people that are serious troff/tbl hackers I can predict
that the bug most likely is in tbl, not in MM or troff. Tbl never checks
the distance to the next trap, so whenever a table hits a trap or end of
page the table gets messed up, since tbl generates code that does not print
the table completely from the top to the bottom. Trying to go up and down
on a page only works as long as you don't hit a trap.

Paul.
-- 
------------------------------------------------------
|debra@research.att.com   | uunet!research!debra     |
------------------------------------------------------

was@hp-lsd.HP.COM (Bill Stubblebine) (02/14/89)

hecht@hsi.UUCP (Alice Hecht) /  9:58 am  Feb 10, 1989 /

> So if you're trying to have a table run from one page to the next,
> don't!  There is definitely a bug in troff ...

> Alice

C'mon guys, read the manual.  There's no bug.  Here's a quote from our
local tbl documentation:

    "Another important macro T# defines and produces the bottom lines
     and side lines of a boxed table when it is invoked at the end of
     a table or page.  Including this macro in the page footer enables
     you to create multi-page tables with headers repeated on each
     successive page in the table by using the H argument with the .TS
     macro."

The operative phrase is "when it is invoked at the end of a table or
page", meaning the USER must invoke the macro at the end of each page
to get the side lines on the current page and the header at the top of
the next page.  Usually including .T# in the page footer suffices.
Tbl automatically invokes T# at the end of the table.

Below I've attached a commented example of a multi-page boxed table.
It's also a handy reference for troff's special characters.  Just run
it through the command

	tbl file | troff -mm

                                Bill Stubblebine
                                Hewlett-Packard Logic Systems Div.
				8245 N. Union Blvd.
                                Colorado Springs, CO  80918
				was%hp-lsd@hplabs.hp.com   (Internet)
				...!hplabs!hp-lsd!was      (UUCP)
                                (719) 590-5568

--- CUT HERE -------------------- CUT HERE ---------------------- CUT HERE ---
.\" This macro implements the tbl-supplied T# macro for multi-paged boxed)
.\" tables.  Note that unless you manipulate the T. register as shown, T#
.\" only prints the table's bottom line on the table's last page. 
.\" Sometimes you may want this appearance to indicate that the table is
.\" incomplete.  I think it's ugly, so T# is coerced to always print the
.\" bottom line using the T. register boolean.
.\" Also note that for safety's sake, it's good practice to remove the page
.\" trap after the end of the table.
.\" 
.de BT          \" begin BT (PAGE BOTTOM MACRO FOR MULTI-PAGE BOXED TABLES)
.ch BT          \" -- Prevents T#'s vertical motion from triggering BT
.nr T. 1        \" -- Tells T# to draw a bottom horiz line (none if T. = 0)
.T# 1           \" -- Draw the table's vertical lines and bottom line
.nr T. 0        \" -- Restore T. to avoid side effects
.SK             \" -- Skip to new page
.wh -1.0i BT    \" -- Reset the trap at the bottom of the new page
..              \" END (of BT)
.\"
.wh -1.0i BT    \" Set the initial trap at the bottom of the current page
.TS H
center, allbox;
cB s s s
c  c c c
l  l c l.
Table of Troff's Special Characters
Character	Input	Output	Sample Usage
_
.TH
close quote	'	'	`this is a quote'
open quote	`	`	`this is a quote'
3/4 em dash	\\\\(em	\(em	I was thinking\(emaha!
hyphen or	-	-	self-motivated.
hyphen	\\\\(hy	\(hy	hy\(hyphen
minus	\\\\-	\-	1\-2
bullet	\\\\(bu	\(bu	test\(bulist
square	\\\\(sq	\(sq	test\(sqlist
rule	\\\\(ru	\(ru	rule
1/4	\\\\(14	\(14	1\(14
1/2	\\\\(12	\(12	1\(12
3/4	\\\\(34	\(34	1\(34
degree	\\\\(de	\(de	Body temperature is 98.6\(deF.
dagger	\\\\(dg	\(dg	this is footnoted\(dg in this sentence
foot mark	\\\\(fm	\(fm	This is a footmark\(fm
cent sign	\\\\(ct	\(ct	50\(ct was spent
registered	\\\\(rg	\(rg	Hewlett-Packard\(rg
copyright	\\\\(co	\(co	Hewlett-Packard\(co
math plus	\\\\(pl	\(pl	1\(pl2\(eq3
math minus	\\\\(mi	\(mi	1\(mi2\(eq-1
math equals	\\\\(eq	\(eq	3\(pl4\(eq7
math star	\\\\(**	\(**	3\(**3\(eq9
acute accent	\\\\(aa	\(aa	\(aa
grave accent	\\\\(ga	\(ga	\(ga
underrule	\\\\(ul	\(ul	under\(ulrule
slash	\\\\(sl	\(sl	sl\(slash
alpha	\\\\(*a	\(*a	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
beta	\\\\(*b	\(*b	\(*b\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
gamma	\\\\(*g	\(*g	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
delta	\\\\(*d	\(*d	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
epsilon	\\\\(*e	\(*e	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
zeta	\\\\(*z	\(*z	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
eta	\\\\(*y	\(*y	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
theta	\\\\(*h	\(*h	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
iota	\\\\(*i	\(*i	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
kappa	\\\\(*k	\(*k	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
lambda	\\\\(*l	\(*l	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
mu	\\\\(*m	\(*m	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
nu	\\\\(*n	\(*n	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
xi	\\\\(*c	\(*c	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
omicron	\\\\(*o	\(*o	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
pi	\\\\(*p	\(*p	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
rho	\\\\(*r	\(*r	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
sigma	\\\\(*s	\(*s	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
terminal sigma	\\\\(ts	\(ts	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
tau	\\\\(*t	\(*t	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
upsilon	\\\\(*u	\(*u	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
phi	\\\\(*f	\(*f	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
chi	\\\\(*x	\(*x	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
psi	\\\\(*q	\(*q	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
omega	\\\\(*w	\(*w	\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
Alpha	\\\\(*A	\(*A	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Beta	\\\\(*B	\(*B	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Gamma	\\\\(*G	\(*G	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Delta	\\\\(*D	\(*D	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Epsilon	\\\\(*E	\(*E	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Zeta	\\\\(*Z	\(*Z	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Eta	\\\\(*Y	\(*Y	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Theta	\\\\(*H	\(*H	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Iota	\\\\(*I	\(*I	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Kappa	\\\\(*K	\(*K	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Lambda	\\\\(*L	\(*L	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Mu	\\\\(*M	\(*M	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Nu	\\\\(*N	\(*N	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Xi	\\\\(*C	\(*C	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Omicron	\\\\(*O	\(*O	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Pi	\\\\(*P	\(*P	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Rho	\\\\(*R	\(*R	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Sigma	\\\\(*S	\(*S	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Tau	\\\\(*T	\(*T	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Phi	\\\\(*F	\(*F	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Chi	\\\\(*X	\(*X	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Psi	\\\\(*Q	\(*Q	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
Omega	\\\\(*W	\(*W	\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*F\(*X\(*Q\(*W
square root	\\\\(sr	\(sr	\(sr
root extender	\\\\(rn	\(rn	\(rn
>=	\\\\(>=	\(>=	6\(>=5\(<=5
<=	\\\\(<=	\(<=	6\(>=5\(<=5
identical	\\\\(==	\(==	1+2\(==3
approx equal	\\\\(~=	\(~=	1776\(~=1800
approximates	\\\\(ap	\(ap	\(ap
not equal	\\\\(!=	\(!=	3\(!=4
right arrow	\\\\(->	\(->	I am pointer\(->to this
left arrow	\\\\(<-	\(<-	I am pointer\(<-to that
up arrow	\\\\(ua	\(ua	press the \(ua key
down arrow	\\\\(da	\(da	press the \(da key
multiply	\\\\(mu	\(mu	4\(mu4\(eq16
divide	\\\\(di	\(di	4\(di4\(eq1
plus-minus	\\\\(+-	\(+-	X\(+-5\(~=10
cup (union)	\\\\(cu	\(cu	Union is \(cu
cap	\\\\(ca	\(ca	\(ca
subset of	\\\\(sb	\(sb	\(sb
superset of	\\\\(sp	\(sp	\(sp
improper subset	\\\\(ib	\(ib	\(ib
improper superset	\\\\(ip	\(ip	\(ip
infinity	\\\\(if	\(if	1\(di0+5=\(if+5
partial derivative	\\\\(pd	\(pd	\(pd
gradient	\\\\(gr	\(gr	\(gr
not	\\\\(no	\(no	\(no
integral sign	\\\\(is	\(is	\(is
proportional to	\\\\(pt	\(pt	\(pt
empty set	\\\\(es	\(es	\(es
member of	\\\\(mo	\(mo	\(mo
box vert rule	\\\\(br	\(br	\(br
double dagger	\\\\(dd	\(dd	this is footnoted\(dd in this sentence
right hand	\\\\(rh	\(rh	go \(rh
left hand	\\\\(lh	\(lh	go \(lh
Bell Logo	\\\\(bs	\(bs	product of \(bs
or	\\\\(or	\(or	\(or
circle	\\\\(ci	\(ci	\(ci
left top	\\\\(lt	\(lt
left bottom	\\\\(lb	\(lb
right top	\\\\(rt	\(rt
right bottom	\\\\(rb	\(rb
left center	\\\\(lk	\(lk
right center	\\\\(rk	\(rk
bold vertical	\\\\(bv	\(bv	\(bv
left floor	\\\\(lf	\(lf
right floor	\\\\(rf	\(rf
left ceiling	\\\\(lc	\(lc
right ceiling	\\\\(rc	\(rc
.TE
.ch BT		\" remove the multi-page table page trap

gdb@merch.TANDY.COM (David Butler) (02/14/89)

In article <946@mtuxj.att.com>, btwomey@mtuxj.att.com (XF3AA-W.TWOMEY) writes:
> 
> I'm trying to create multi-page boxed tables using tbl and mm and troff.
> I'm using .TS H and .TH to get the header repeated on pages.

So far so good..

> 
> MM has problems though.

That is an understatement...

After fighting MM with this stuff I wrote my own macros to handle
multi-page tbls correctly.  The reason I did my own was MM was to
complicated to fix the problem.  Now that I have it working in my
macros I have thought to fix it in MM but have not done it yet.

The main problem is that MM tries to fudge the bottem of the page
with a .sp -1v when a .TS H is running.  WRONG.  The only way I
could get it to work correctly is at the footer trap do the following:

move the footer out of the way (rename it)
move absolutely to the place where you wanted the footer to start.
Tell the tbl drawing macro to draw the horizontal and vertical lines.
put the footer back (name it back)
Do the normal footer stuff.

I'm in the process of adding footnotes and real multi column (>2) with
vertical justification (no more down the bottom of the first column with
just a little bit in the second.  Fills both (or more) down to an even
bottom).  As soon as I finish this I thought I would post it.  It doesn't
have all of MM's header number stuff, but I never use that in the
"desktop publishing" type stuff we do.

For reference we use DWB 2.0 on a Tandy 6000 and a Tandy LP1000.

David Butler
gdb@merch.TANDY.COM

edwards@houxa.ATT.COM (D.LEWAN) (02/17/89)

In article <8909@alice.UUCP>, debra@alice.UUCP (Paul De Bra) writes:
> In article <1085@hsi.UUCP> hecht@hsi.UUCP (Alice Hecht) writes:
> ?In article <946@mtuxj.att.com>, btwomey@mtuxj.att.com (XF3AA-W.TWOMEY) writes:
> ?> 
> ?> I'm trying to create multi-page boxed tables using tbl and mm and troff.
> ?> I'm using .TS H and .TH to get the header repeated on pages.
> ?> 
> ?> MM has problems though. I have had: the sides of the box go missing;
> ?> pages come out blank except for the table header; 
etc.................
> ?I've had similar problems with tables before and the only thing that 
> ?ended working was ending the table at the bottom of each page and then
> ?restarting it again at the top. 
etc.................
> 
> From working with people that are serious troff/tbl hackers I can predict
> that the bug most likely is in tbl, not in MM or troff. Tbl never checks
> the distance to the next trap, 
etc.................

I will not advocate tbl(1) as perfect -- far from it -- but the
problem described is anticipated in both the tbl(1) documentation
and implementations.  To quote:

	The macro T# is defined to produce the bottom lines and side
	lines of a boxed table, and then invoked at its end.  By the
	use of this macro in the page footer a multi-page can be
	boxed.

It works -- generally, certainly not always; it seems that when
things happen too close to traps troff gets confused about which
side they're on and messes up accordingly.

The bug is that the detail is so hidden in the documentation, and
that is a side-effect of the fact that the documentation is so
unstructured and scattered.  It looks just like a research project
that's been artificially elevated to the status of product without
regard for the non-academic features that make *products* reasonable
for use by people.  Academic projects uncover universal truths;
their results live independently.  

Any other favorite bugs in UNIX\(rg text processing?  My favorites
come from the fact that it is all interpreted and chained and there
is no way to truly integrate.  Others come from the 2 character
restrictions on names.  Oh, yeah, most tbl(1) implementations allow
only 100 text blocks.  C'm'on guys, in computer science is 100
really such a large number?????

Yours in box rules,

Doug

wrp@biochsn.acc.virginia.edu (William R. Pearson) (02/23/89)

>
>Any other favorite bugs in UNIX\(rg text processing?  My favorites
>come from the fact that it is all interpreted and chained and there
>is no way to truly integrate.  Others come from the 2 character
>restrictions on names.  Oh, yeah, most tbl(1) implementations allow
>only 100 text blocks.  C'm'on guys, in computer science is 100
>really such a large number?????

	This week I encountered a more intransigent bug in tbl -
how to get double spacing inside of text blocks T{,T}.  Several
of the things that I tried ended up spacing the text block down
one line.  None worked satifactorily.  I would appreciate any suggestions
on how to format the following table:

 .TS
 center box;
 c c l.
 col1<TAB>col2<TAB>T{
 this is a very long text block that takes several lines
 }T
 .TE

and have the text block be double spaced, without changing the .vs
for the whole table.

Bill Pearson