groff: Line Control
5.14 Line Control
=================
It is important to understand how 'gtroff' handles input and output
lines.
Many escapes use positioning relative to the input line. For
example, this
This is a \h'|1.2i'test.
This is a
\h'|1.2i'test.
produces
This is a test.
This is a test.
The main usage of this feature is to define macros that act exactly
at the place where called.
.\" A simple macro to underline a word
.de underline
. nop \\$1\l'|0\[ul]'
..
In the above example, '|0' specifies a negative distance from the
current position (at the end of the just emitted argument '\$1') back to
the beginning of the input line. Thus, the '\l' escape draws a line
from right to left.
'gtroff' makes a difference between input and output line
continuation; the latter is also called "interrupting" a line.
-- Escape: \<RET>
-- Escape: \c
-- Register: \n[.int]
Continue a line. '\<RET>' (this is a backslash at the end of a
line immediately followed by a newline) works on the input level,
suppressing the effects of the following newline in the input.
This is a \
.test
=> This is a .test
The '|' operator is also affected.
'\c' works on the output level. Anything after this escape on the
same line is ignored except '\R', which works as usual. Anything
before '\c' on the same line is appended to the current partial
output line. The next non-command line after an interrupted line
counts as a new input line.
The visual results depend on whether no-fill mode is active.
* If no-fill mode is active (using the 'nf' request), the next
input text line after '\c' is handled as a continuation of the
same input text line.
.nf
This is a \c
test.
=> This is a test.
* If fill mode is active (using the 'fi' request), a word
interrupted with '\c' is continued with the text on the next
input text line, without an intervening space.
This is a te\c
st.
=> This is a test.
Note that an intervening control line that causes a break is
stronger than '\c', flushing out the current partial line in the
usual way.
The '.int' register contains a positive value if the last output
line was interrupted with '\c'; this is associated with the current
environment (⇒Environments).