Stop processing the current page and move to the next page. This request causes a break. It can also take an argument to set (increase, decrease) the page number of the next page (which actually becomes the current page after
bphas finished). The difference betweenbpandpnis thatpndoes not cause a break or actually eject a page. See Page Layout..de newpage \" define macro 'bp \" begin page 'sp .5i \" vertical space .tl 'left top'center top'right top' \" title 'sp .3i \" vertical space .. \" end macro
bphas no effect if not called within the top-level diversion (see Diversions).The read-write register
%holds the current page number.The number register
.peis set to 1 whilebpis active. See Page Location Traps.
It is often necessary to force a certain amount of space before a new page occurs. This is most useful to make sure that there is not a single orphan line left at the bottom of a page. The
nerequest ensures that there is a certain distance, specified by the first argument, before the next page is triggered (see Traps, for further information). The default scaling indicator forneis ‘v’; the default value of space is 1v if no argument is given.For example, to make sure that no fewer than 2 lines get orphaned, do the following before each paragraph:
.ne 2 text text text
nethen automatically causes a page break if there is space for one line only.
svis similar to thenerequest; it reserves the specified amount of vertical space. If the desired amount of space exists before the next trap (or the bottom page boundary if no trap is set), the space is output immediately (ignoring a partially filled line which stays untouched). If there is not enough space, it is stored for later output via theosrequest. The default value is 1v if no argument is given; the default scaling indicator is ‘v’.Both
svandosignore no-space mode. While thesvrequest allows negative values for space,osignores them.
This register contains the current vertical position. If the vertical position is zero and the top of page transition hasn't happened yet,
nlis set to negative value.gtroffitself does this at the very beginning of a document before anything has been printed, but the main usage is to plant a header trap on a page if this page has already started.Consider the following:
.de xxx . sp . tl ''Header'' . sp .. . First page. .bp .wh 0 xxx .nr nl (-1) Second page.Result:
First page. ... Header Second page. ...Without resetting
nlto a negative value, the just planted trap would be active beginning with the next page, not the current one.See Diversions, for a comparison with the
.hand.dregisters.