On Mar 24, 2010, at 1:57 AM, Werner LEMBERG wrote:

This line *does* work:

 .   nop \\$*\h'0'\R'toc:horiz \\n[.k]'

In other words, forcing a zero horizontal motion flushes the single
word out and sets the .k register properly.  Is this expected
behavior, and if so, is \h'0' the correct way to flush a partial
line?

I can't repeat that.  Put the following into a file `R':

  .de xxx
  .  nop \\$*\h'0'\R':a \\n[.k]'
  .  tm :a == \\n[:a]
  ..
  .
  .xxx aaa
  .
  .br
  .
  .de yyy
  aaa\h'0'\R':b \\n[.k]'
  .  tm :b == \\n[:b]
  ..
  .
  .yyy
  .
  .br
  .
  aaa\R':c \n[.k]'
  .tm :c == \n[:c]
  .
  .br

Saying `troff R > /dev/null' gives

  :a == 13320
  :b == 13320
  :c == 13320

In other words, I get the same results either using or not using a
macro, and with or without \h'0'.

You have to provide a small stand-alone test case so that we can find
out what's really going on.

Werner,
Your example isn't long enough. Everything works fine until the entry takes up more than one line. In your example, replace the argument to .xxx with something that will break to the next line.

        Larry


Reply via email to