[net.text] Need help with -me macros: problem with .ip and hanging tags

wildbill@ucbvax.UUCP (William J. Laubenheimer) (06/18/84)

I have been having a problem with the .ip (indented paragraph) macro.
What I would like to do in a list where I have a bunch of hanging tags
such as "First:", "Second:", etc., in order to get the proper indentation
on the indented paragraphs, is to have {n,t}roff calculate the proper
indentation using the width operator \w. It seems that the proper
invocation (assuming "Second:" was the longest tag) would be:

.ip First: \w'Second: '

but when I try this, the result is a funny string attached to the
end of the preceding text item, such as in the following example:

<random text>291.@p 150u

in this case. This looks like it's coming from the body of the .ip
macro, which calls the internal -me macro .@p just after it identifies
the existence of a hanging tag and sets up a number register containing
the indentation for tags if it is given.

I have tried a few variations: an extra backslash before the width operator,
a unit designation after the second argument, enclosing the first
argument in quotes; all result in the same obnoxious string. Does
anybody out there have a solution, or am I (horrors!) going to have
to make a special case out of the thing?

                  ____                  Bill Laubenheimer
      ___       /      \       ___      UC-Berkeley Computer Science
     /   \     |  o  o  |     /   \     ucbvax!wildbill
------+++----------()----------+++------
          ...Killjoy was here!

bb@wjh12.UUCP (byer) (06/20/84)

@
***	From: wildbill@ucbvax.UUCP
**
**	to have {n,t}roff calculate the proper indentation using the
**	width operator \w, [i]t seems that the proper invocation
**	(assuming "Second:" was the longest tag) would be:
**
**		.ip First: \w'Second: '
**
>  [ reply from chris @umcp-cs ]
>  \w is almost always only useful if you write \w'stuff'u.  The final `u'
>  means that the number should be taken as a value in internal units (which
>  vary between nroff and troff and---I believe---between devices in ditroff).

To clarify further:
Instead of
		.ip First: \w'Second: 'u
I'd recommend
		.ip First: "\w'Second:\ 'u"

The double quotes delimit the second argument to `.ip'.  Otherwise,
you've got 3 args and some grief ahead.

The u following the width construction (\w...) serves as a <unit>
scale factor, preventing subsequent interpolations from thinking
that the arg requires further scaling.

The backslash \ after the colon : serves to keep the width of
the following space from being expanded during justification
which can really drive you batty; `Why won't it work, chucko?'

Who's Next?

(Pure and Easy)			Brent Byer (decvax!genrad!wjh12!bb)

chris@umcp-cs.UUCP (06/26/84)

*	From: wildbill@ucbvax.UUCP

	to have {n,t}roff calculate the proper indentation using the
	width operator \w, [i]t seems that the proper invocation
	(assuming "Second:" was the longest tag) would be:

		.ip First: \w'Second: '

\w is almost always only useful if you write \w'stuff'u.  The final `u'
means that the number should be taken as a value in internal units (which
vary between nroff and troff and---I believe---between devices in ditroff).

(Things like this are why I use TeX.)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@maryland