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.