I have some long headings that run two, sometimes three, lines in my table of 
contents. The heart of the macro I'm using to set these lines looked like:

 .  ie (u;\w'\\$*'+\\*[ind:0])>(u;\\n[toc:colwid]-0.25i) \{\
 .   ll (u;\\n[LL]-0.25i)
 .   nop \\$*
 .   nr toc:horiz \\n[.k]
 .   ll \\n[LL]u
 .   sp -1
 .   nop \h'\\n[toc:horiz]u'\|\\*[LDR]\|\\*[TOCpg]
 .  \}
 .  el \{\
 .   nop \\$*\|\\*[LDR]\|\\*[TOCpg]
 .  \}

The above was almost perfect, except that entries that require more than one 
line had a small but noticeable extra gap between the end of the text and the 
start of the leader. However, this breaks:

 .ds LDR \a
 .  ie (u;\w'\\$*'+\\*[ind:0])>(u;\\n[toc:colwid]-0.25i) \{\
 .   ll (u;\\n[LL]-0.25i)
 .   nop \\$*\R'toc:horiz \\n[.k]'
 .   ll \\n[LL]u
 .   sp -1
 .   nop \h'\\n[toc:horiz]u'\|\\*[LDR]\|\\*[TOCpg]
 .  \}
 .  el \{\
 .   nop \\$*\|\\*[LDR]\|\\*[TOCpg]
 .  \}

Setting the toc:horiz register inline using the \R escape causes the leader to 
start very close to the page number when the last line of the heading has only 
one word.

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?

-- Larry


Reply via email to