Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/distrib/notes/common Pull up revision 1.10 (requested b...



details:   https://anonhg.NetBSD.org/src/rev/bb92118f540a
branches:  netbsd-1-5
changeset: 491682:bb92118f540a
user:      he <he%NetBSD.org@localhost>
date:      Sun May 06 22:30:49 2001 +0000

description:
Pull up revision 1.10 (requested by he):
  Add .Bc/.Ec macros for coloumnarized unfilled displays.

diffstat:

 distrib/notes/common/macros |  135 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 134 insertions(+), 1 deletions(-)

diffs (149 lines):

diff -r fd501cb7a3f5 -r bb92118f540a distrib/notes/common/macros
--- a/distrib/notes/common/macros       Sun May 06 22:28:02 2001 +0000
+++ b/distrib/notes/common/macros       Sun May 06 22:30:49 2001 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: macros,v 1.4.8.1 2000/11/01 03:47:58 tv Exp $
+.\"    $NetBSD: macros,v 1.4.8.2 2001/05/06 22:30:49 he Exp $
 .\"
 .\" Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -171,6 +171,139 @@
 .Ux -like
 ..
 .
+.\" .Bc/.Ec; begin/end two-column mode. This may not work in all
+.\" cases, but was designed for common/donations. There is no
+.\" support for more than two pages, nor for right-margins.
+.\" Usage:
+.\"   .Bc [ncol]
+.\" Dependances:
+.\"  macro CF   page trap macro for bottom of column
+.\"  macro CZ   code duplication; handling of diversion interpolation.
+.\"  macro CC   diversion trap macro for subdividing into pages.
+.\"  macro Bc   Begin columns
+.\"  macro Ec   End columns
+.\"  reg cl     current column number
+.\"  reg CI     saved indent
+.\"  reg CL    saved line-length
+.\"  reg CO     saved page offset
+.\"  reg CN     number of columns
+.\"  reg CA     max height of columnized text
+.\"  reg CB     save available space on page
+.\"  reg CE     column spacing
+.\"  str C0     entire columnization region [if crosses page boundary]
+.\"  str C1     columnization region for page 1
+.\"  str C2     columnization region for page 2
+.
+.de CF
+.if \\n(Db .tm page trap (column bottom) at \\n(nlu.
+.\"TRAP2               \" debugging: here's where the trap is.
+.ie \\n+(cl<\\n(CN \{
+.rt            \" return to the mk
+.po +\\n(CEu           \" space to next column
+.ns
+\}
+.el \{\
+.ll \\n(CLu    \" restore linelength
+.in \\n(CIu    \" restore indent
+.po \\n(COu    \" restore offset
+.\}
+..
+.de CZ
+.mk            \" Save position
+.if \\n(Db .tm Saved column top is \\n(nlu.
+.nr cl 0 1     \" This is column #0
+.nr CL \\n(.l  \" Save the linelength
+.nr CI \\n(.i  \" Save the indent
+.nr CO \\n(.o  \" Save the offset
+.nf
+.\" .ll 20n    \" this doesn't work in nf-mode.
+.if \\n(Db .tm Page trap placed at \\n(CDu; next trap at \\n(nlu+\n(.tu.
+.wh \\n(CDu CF                 \" set the bottom of column trap
+.if \\n(Db .tm CZ: \\$1 starts at \\n(nlu; trap in \\n(.tu.
+.\\$1                          \" throw in the diverted text
+.if \\n(Db .tm CZ: \\$1 ends at \\n(nlu; trap in \\n(.tu.
+.if !\\n(CN==\\n(cl .sp                \" If we didn't finish, space to force a trap.
+.ch CF                          \" remove trap
+.if \\n(Db .tm CZ: before .ne we are at \\n(nlu with \\n(.tu to go.
+.ne 3V                         \" space for two lines after
+.if \\n(Db .tm CZ: after .ne we are at \\n(nlu.
+..
+.de CC
+.if \\n(Db .tm diversion trap (page break) at \\n(nlu.
+.\"TRAP1       \" debugging
+.di            \" close first-page (C1) diversion
+.di C2         \" open second-page (C2) diversion 
+..
+.de Bc
+.in +\n(Dsu    \" Indent to match Bd
+.nr CN 2               \" Number of columns
+.if !"\\$1"" .nr CN \\$1
+.ne 2v \" we need at least two lines of space on the page.
+.ev 2
+.di C1 \" divert the text
+.nf
+..
+.de Ec
+.di    \" end diversion
+.ev
+.nr CA \\n(dnu/\\n(CN  \" save max height of columnized text
+.nr CB \\n(.t-(\\n(.v*3)       \" save available space on page
+.nr CE \\n(.lu/\\n(CN
+.\" .tm The diversion is \\n(dnu high and \\n(dlu wide. At \\n(CN columns,
+.\" .tm the max height would be \\n(CAu high, if they fit on the same page.
+.\" .tm The page length is \\n(.p, and the current vposition is \\n(nl, not to
+.\" .tm be confused with the page offset of \\n(.o.
+.\" .tm So we have \\n(CBu of space on this page.
+.ie \\n(CA>=\\n(CB \{
+.rn C1 C0      \" put original in C0
+.ev 2
+.di C1         \" Divert the first page into new C1
+.\" Diversion trap location in solid kludgite. If notCRT, we need 
+.\" extra v-height. go figure.
+.ie \\n(cR==0 .dt \\n(CBu*\\n(CNu+2v CC
+.el .dt \\n(CBu*\\n(CNu CC
+.C0
+.di
+.ev
+.nf
+.fi
+.\" Trap at bottom of page
+.if \\(Db .tm page trap set at \\n(nlu+\\n(.tu-2v)
+.nr CD \\n(nlu+\\n(.tu-2v)     \" trap right before next trap
+.\}
+.el \{\
+.\" Trap at the bottom of the text. All on one page.
+.nr CD \\n(CAu+\\n(nlu
+.\}
+.CZ C1
+.\" The .if dxxx construct is groff-specific
+.if dC2 \{
+.if \\(Db .tm max height of text is \\n(dnu/\\n(CN.
+.if \\(Db .tm breakpoint (for page trap) is 1u+\\n(CAu+\\n(nlu.
+.nr CA \\n(dnu/\\n(CN          \" save max height of columnized text
+.nr CD \\n(CAu+\\n(nlu
+.CZ C2
+.\}
+.rm C2 \" nuke it otherwise it might pop up later.
+.\"    These should already be restored. But sometimes we don't hit
+.\"    the last page trap [??]
+.ll \\n(CLu    \" restore linelength
+.in \\n(CIu    \" restore indent
+.po \\n(COu    \" restore offset
+.fi                             \" fill again.
+.in -\n(Dsu    \" revert prior indent
+..
+.\" Unfortunately, none of the above works with -mdoc2html; so we'll
+.\" just replace columns with a regular Bd -unfilled -offset indent.
+.if rHTML \{
+.rm Bc
+.rm Ec
+.de Bc
+.Bd -unfilled -offset indent
+..
+.als Ec Ed
+.\}
+.
 .\"    --------------------  MISC  --------------------
 .
 .\" set the unused target number registers to 0, so that we can turn on all



Home | Main Index | Thread Index | Old Index