[net.text] Help with -me bug

hopp@nbs-amrf.UUCP (Ted Hopp) (08/14/85)

I posted this several months ago, but got no responses.  I still could
use help, so I am posting it again.

By way of preface, we are running version 2.15 of the -me macros.

I am having a problem with indexes inside floating keeps (iifk's).
Actually, I am having two problems, but I have (I think) a workaround
for one of them.

Problem 1.

The first problem (with a workaround) is that there seems to be an
environment conflict between iifk and the equation macros.  I'm not
sure exactly what's going on, but I have gathered several symptoms.
For one, equations seems to screw up the following index entries.  As
far as I can tell, it causes text diverted to the index to be indented
as it is diverted.  This is not consistent, however.  Not every
equation screws up the index, and not every index entry is screwed up.
Whatever is going on gets reset by a new chapter (.+c).  Also, in a
paper I am writing, not every equation has an effect on the next entry;
sometimes the entry is screwed up the way a previous entry was screwed
up.  Once things are bad, though, they stay bad until the next
chapter.

The workaround here is to put ".in 0" just after ".(x", as shown
in the example below.  This "fixes" the indent problem, but not the
next problem.

Problem 2.

Index entries from inside floating keeps don't fill.  Even in the
same index as entries that do fill!  It doesn't make any difference
whether the floating keep is filled or not.  This is really screwy.
The example below shows the contents of the index just before printing
and as it is printed.  Am I missing something?  What keeps entry 2
(which appears third in the index because it got floated past entry
3) from getting filled?  I have tried putting ".fi" after ".(x",
inspired by the success of ".in 0", but that just screws things up
further.  (It still doesn't fill, and I only get the first line of
the entry text.)

Does anyone know of a fix for these problems?

--
Ted Hopp	{seismo,umcp-cs}!nbs-amrf!hopp

------------------------------------------------------------------------
What follows is the text and resulting output of an example showing
the problems I am having.  The output text has had multiple blank
lines eliminated for the sake of brevity.  The problem appears
even when the eqn preprocessor isn't used.  Just the .EQ/.EN macros
are enough to cause the problem.
------------------------------------------------------------------------
.pp
.(x
This is the first index entry into index f.  It is made outside any
keeps, floating or otherwise.
We will see if the three input lines become one output line.
.)x
This is a test of indexing inside a floating keep.
We will first have an equation:
.EQ
a~=~b
.EN
And now we start a floating keep diversion.
.(z F
This is a floating keep.
.(x
.in 0
This is an entry into index x.  It is an attempt to see what
gives here.  We will try to
find out what the fill, etc. stuff is.
.)x
We continue the floating keep.
.)z
The floating keep is over.
.pp
This is the second paragraph.
.(x
This is the third (in the input) index into x.  We will
see where this one comes out, and whether it gets floated correctly.
.)x
That was the end of the third index entry.
.pa
.pp
We are now on a new page.
.(x
This is the fourth index entry.  It should be the last, since
the floating keep for the second entry has had a chance to
come out.
.)x
And that ends the normal text.
.pa
The contents of index f are:
.br
.sp
.hl
.nf
.eo
.cc #
#c2 ~
#%x
#c2
#cc
.ec
.fi
.hl
.pa
The index as printed is:
.sp
.xp
------------------------------------------------------------------------
This is the output from the above text, with blank lines crushed.
I have also changed the escape characters at the page boundaries
to the text <ESC> for the sake of your terminal.  (If you've read
this far.)
------------------------------------------------------------------------

     This is a test of indexing inside a floating keep.   We
will first have an equation:

                           a = b

And now we start a floating keep  diversion.   The  floating
keep is over.
This is the second paragraph.  That was the end of  the
third index entry.

This is a floating keep.  We continue the floating keep.

     We are now on a new page.  And  that  ends  the  normal
text.

<ESC>9

<ESC>9

The contents of index f are:

____________________________________________________________

.       sp 8u
.       ti -120u
.
.rm @U
This is the first index entry into index f.  It is made outside any
keeps, floating or otherwise.
We will see if the three input lines become one output line.
.       if \w"">(1440-0-0) .            ti +120u
\a\t1
.       sp 8u
.       ti -120u
.
This is the third (in the input) index into x.  We will
see where this one comes out, and whether it gets floated correctly.
.       if \w"">(1440-0-696) .          ti +120u
\a\t1
.       sp 8u
.       ti -120u
.
This is an entry into index x.  It is an attempt to see what
gives here.  We will try to
find out what the fill, etc. stuff is.
.       if \w"">(1440-0-0) .            ti +120u
\a\t1
.       sp 8u
.       ti -120u
.
This is the fourth index entry.  It should be the last, since
the floating keep for the second entry has had a chance to
come out.
.       if \w"">(1440-0-600) .          ti +120u
\a\t2
____________________________________________________________

<ESC>9

<ESC>9

The index as printed is:

This is the first index entry into index f.   It  is
     made  outside any keeps, floating or otherwise.
     We will see if the three input lines become one
     output line.  ....................................    1
This is the third (in the input) index into  x.   We
     will  see where this one comes out, and whether
     it gets floated correctly.  ......................    1
This is an entry into index x.  It is an attempt to see what
     gives here.  We will try to
     find out what the fill, etc. stuff is.  ..........    1
This is the fourth index entry.  It  should  be  the
     last,  since  the  floating keep for the second
     entry has had a chance to come out.  .............    2

<ESC>9

<ESC>9

------------------------------------------------------------------------
Here are the relevant portions of the output when .in 0 is removed
from the iifk.
------------------------------------------------------------------------

	.
	.  same text as above
	.

.       sp 8u
.       ti -120u
.
                                                      This is an entry into index x.  It is an attempt to see what
                                                      gives here.  We will try to
                                                      find out what the fill, etc. stuff is.
.       if \w"">(1440-0-0) .            ti +120u
\a\t1

	.
	.  same text as above
	.

The index as printed is:

This is the first index entry into index f.   It  is
     made  outside any keeps, floating or otherwise.
     We will see if the three input lines become one
     output line.  ....................................    1
This is the third (in the input) index into  x.   We
     will  see where this one comes out, and whether
     it gets floated correctly.  ......................    1
                                                      This is an entry into index x.  It is an attempt to see what
                                                           gives here.  We will try to
                                                           find out what the fill, etc. stuff is.
     ..................................................    1
This is the fourth index entry.  It  should  be  the
     last,  since  the  floating keep for the second
     entry has had a chance to come out.  .............    2
------------------------------------------------------------------------

Ted Hopp	{seismo,umcp-cs}!nbs-amrf!hopp
-- 

Ted Hopp	{seismo,umcp-cs}!nbs-amrf!hopp