summaryrefslogtreecommitdiffstats
path: root/tmac/e.tmac
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tmac/e.tmac2255
1 files changed, 2255 insertions, 0 deletions
diff --git a/tmac/e.tmac b/tmac/e.tmac
new file mode 100644
index 0000000..b30a614
--- /dev/null
+++ b/tmac/e.tmac
@@ -0,0 +1,2255 @@
+.\" Copyright (c) 1988, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in
+.\" the documentation and/or other materials provided with the
+.\" distribution.
+.\" 3. [Deleted. See
+.\" ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change]
+.\" 4. Neither the name of the University nor the names of its
+.\" contributors may be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS"
+.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+.\" PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)e.tmac 8.1 (Berkeley) 06/05/93
+.\"
+.\" Modified by James Clark for use with groff.
+.\" Further modifications by Werner Lemberg, George Helffrich, and
+.\" G. Branden Robinson.
+.\"
+.\"**************************************************************
+.\"* *
+.\"* **** - M E N R O F F / T R O F F M A C R O S **** *
+.\"* *
+.\"* Produced for your edification and enjoyment by: *
+.\"* Eric Allman *
+.\"* Electronics Research Laboratory *
+.\"* U.C. Berkeley. *
+.\"* *
+.\"* VERSION 8.1 First Release: 11 Sept 1978 *
+.\"* *
+.\"* Documentation is available. *
+.\"* *
+.\"**************************************************************
+.\"
+.\" Macro definitions are annotated with a code:
+.\" *** user interface macro
+.\" $$$ macro which may be redefined by the user
+.\" to provide variant functions
+.\" --- internal macro; not to be called by user
+.\"
+.
+.do nr devtag-needs-end-of-heading 0
+.do nr devtag-needs-end-of-title 0
+.do nr devtag-needs-title 1
+.
+.do mso devtag.tmac
+.
+.if !\n(.g .ig
+.de @R \" --- initialize number register to 0, if undefined
+.do if !r\\$1 .nr \\$1 0
+..
+.
+.ds _e e.tmac\" name of macro package, for diagnostic messages
+.
+.\" emit error diagnostic
+.do de1 @err
+.ds @file \" empty
+.ds @line \" empty
+.if !'\\n[.F]'' .ds @file \\n[.F]:\"
+.if !'\\n[.c]'0' .ds @line \\n[.c]:\"
+.tm \\*(_e:\\*[@file]\\*[@line] \\$*
+.rm @file
+.rm @line
+..
+.
+.\" --- check whether grohtml needs end of title/heading
+.do de1 @html_check_need_title
+.if \\n[devtag-needs-end-of-title] \
+\{\
+. nr devtag-needs-end-of-title 0
+. DEVTAG-EO-TL
+.\}
+.if \\n[devtag-needs-title] \
+\{\
+. DEVTAG-TL
+. nr devtag-needs-title 0
+. nr devtag-needs-end-of-title 1
+.\}
+.if \\n[devtag-needs-end-of-heading] .DEVTAG-EO-H
+.nr devtag-needs-end-of-heading 0
+..
+.
+.\" If this macro were non-empty, we'd want to define it with .de1.
+.do de @check_need_title
+..
+.
+.ie '\*(.T'html' \
+. do als check_need_title @html_check_need_title
+.el \
+. do als check_need_title @check_need_title
+.
+.@R pf
+.if \n(pf .nx
+.
+.if !\n(.g .ig
+.de @S \" --- initialize string/macro to empty, if undefined
+.do if !d\\$1 .ds \\$1\" empty
+..
+.
+.@R @\" \" debugging level
+.
+.
+.\" *** INTERNAL GP MACROS ***
+.
+.
+.de @C \" --- change environments, taking info with us
+.nr _S \\n(.s
+.nr _V \\n(.v
+.nr _F \\n(.f
+.nr _J \\n(.j
+.do ds _A \\n[.fam]
+.nr _I \\n(.i
+.ev \\$1
+.ps \\n(_S
+.vs \\n(_Vu
+.ft \\n(_F
+.ad \\n(_J
+.do @fam \\*(_A
+'in \\n(_Iu
+.xl \\n($lu
+.lt \\n($lu
+.rr _S
+.rr _V
+.rr _F
+.rr _I
+.rr _J
+.ls 1
+'ce 0
+..
+.
+.de @D \" --- determine display type (Indent, Left, Center)
+.ds |p "\\$3
+.nr _d 0
+.if "\\$2"C" \
+. nr _d 1
+.if "\\$2"L" \
+. nr _d 2
+.if "\\$2"I" \
+. nr _d 3
+.if "\\$2"M" \
+. nr _d 4
+.if !\\n(_d \
+\{\
+. nr _d \\$1
+. ds |p "\\$2
+.\}
+.
+..
+.
+.rn nm @# \" --- save troff request
+.de nm \" --- turn on number mode, preserving font info
+.ie \\n(.$ \
+\{\
+. nr _S \\n(.s
+. nr _F \\n(.f
+. do if r _#p .do ps \\n[_#p]
+. do if r _#f .do ft \\n[_#f]
+. @# \\$1 \\$2 \\$3 \\$4
+. ft \\n(_F
+. ps \\n(_S
+. rr _F
+. rr _S
+.\}
+.el .@#
+..
+.
+.de @z \" --- end macro
+.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
+.if !"\\n(.z"" \
+\{\
+. do @err unclosed block, footnote, or other diversion (\\n(.z)
+. di
+. ex
+.\}
+.if \\n(?a \
+. bp\" \" force out final table
+.ds bp
+.ds @b\" \" don't start another page
+.br
+.if \n@>1 .tm << @z
+..
+.
+.
+.\" *** STANDARD HEADERS AND FOOTERS ***
+.
+.
+.ie \n(.g .ds $* \\\\$*
+.el .ds $* \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9
+.
+.de he \" *** define header
+.ie !\\n(.$ \
+\{\
+. rm |4
+. rm |5
+.\}
+.el \
+\{\
+. ds |4 "\*($*
+. ds |5 "\*($*
+.\}
+..
+.
+.de eh \" *** define even header
+.ie !\\n(.$ \
+. rm |4
+.el \
+. ds |4 "\*($*
+..
+.
+.de oh \" *** define odd header
+.ie !\\n(.$ \
+. rm |5
+.el \
+. ds |5 "\*($*
+..
+.
+.de fo \" *** define footer
+.ie !\\n(.$ \
+\{\
+. rm |6
+. rm |7
+.\}
+.el \
+\{\
+. ds |6 "\*($*
+. ds |7 "\*($*
+.\}
+..
+.
+.de ef \" *** define even footer
+.ie !\\n(.$ \
+. rm |6
+.el \
+. ds |6 "\*($*
+..
+.
+.de of \" *** define odd footer
+.ie !\\n(.$ \
+. rm |7
+.el \
+. ds |7 "\*($*
+..
+.
+.de ep \" *** end page (must be followed by a .bp)
+.if \\n(nl>0 \
+\{\
+. wh 0
+. rs
+. @b
+.\}
+..
+.
+.
+.\" *** INTERNAL HEADER AND FOOTER MACROS ***
+.
+.
+.de @h \" --- header
+.if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
+.do if (u;\\n(tm+\\n(bm+\\n(.V>\\n(.p) \{\
+. do @err insufficient page length; aborting
+. pl \\n(nlu
+. ab
+.\}
+.do if (u;\\n(.i+\\n(.o>=\\n(.l) \
+. do @err page offset plus indentation exceeds line length
+.\" initialize a pile of junk
+.nr ?h \\n(?H \" transfer "next page" to "this page"
+.nr ?H 0
+.nr ?c \\n(?C
+.nr ?C 0
+.do if d |4 .rn |4 |0
+.do if d |5 .rn |5 |1
+.do if d |6 .rn |6 |2
+.do if d |7 .rn |7 |3
+.nr _w 0 \" reset max footnote width
+.nr ?W 0 \" no wide floats this page (yet)
+.nr ?I 1
+.\" begin actual header stuff
+.ev 2
+.rs
+.if \\n(hm>0 \
+. if !'\*(.T'html' \
+. sp |\\n(hmu \" move to header position
+.@t $h\" \" output header title
+.if \\n(tm<=0 \
+. nr tm \n(.Vu
+.if !'\*(.T'html' \
+. sp |\\n(tmu \" move to top of text
+.ev
+.mk _k \" for columned output
+.if \\n(?n=1 .nm 1\" restore line numbering if n1 mode
+.nr $c 1 \" set first column
+.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
+.ie \\n(?s \
+\{\
+. nr ?s 0
+. rs
+' @b
+.\}
+.el \
+. @n\" \" begin the column
+.if \n@>2 .tm << @h
+..
+.
+.de @n \" --- new column or page
+.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
+.if \\n(bm<=0 \
+. nr bm \\n(.Vu
+.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
+\{\
+. \" Compute fudge factor (must be < 1P).
+. nr _b (\\n(ppp*\\n(tvu)/200u
+. if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n(tvu)/100u))/2u) \
+. nr _b (\\n(ppp*\\n(tvu)/100u-\n(.Vu
+. nr _b +\\n(bmu
+.\}
+.nr _B \\n(_bu
+.ch @f
+.wh -\\n(_bu @f
+.nr _b +(\\n(ppp*\\n(tvu)/100u \" add 1 paragraph v in case sweep past
+.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
+.nr ?f 0 \" reset footnote flag
+.if \\n(?o \
+\{\
+. (f _\" \" reprocess footnotes which run off page
+. nf
+. |o
+. fi
+. )f
+. rm |o
+.\}
+.nr ?o 0
+.if \\n(?T \
+\{\
+. nr _i \\n(.i
+. if \\n(?n \
+. nm \\n(ln
+. in 0
+. |h\" \" output the table header
+. in \\n(_iu
+. if \\n(?n \
+. nm
+. rr _i
+. mk #T \" for tbl commands
+. ns
+.\}
+.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
+\{\
+. nr ?a 0 \" output floating keep
+. @k |t
+. if \\n(?w \
+. mk _k \" don't overstrike wide keeps
+. nr ?w 0
+.\}
+.os
+.$H\" \" special column header macro
+.ns
+..
+.
+.de @f \" --- footer
+.if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
+.if \n@>2 .nr __ \\n(.pu-\\n(nlu
+.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(__
+.if \n@>2 .rr __
+.if \\n(?T \
+\{\
+. nr T. 1 \" for tbl commands (to output bottom line)
+. T# 1\" \" output the sides and bottom lines
+. br
+.\}
+.ev 2
+.ce 0
+.if \\n(?b \
+\{\
+. nr ?b 0
+. @k |b\" \" output bottom of page tables
+.\}
+.if \\n(?f \
+. @o\" \" output footnote if present
+.ie \\n($c<\\n($m \
+. @c\" \" handle new column
+.el \
+. @e\" \" new page
+.ev
+.if \n@>2 .tm << @f
+..
+.
+.de @o \" --- output footnote
+.nf
+.ls 1
+.in 0
+.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
+.wh -\\n(_Bu @r
+.if \\n(?n \
+. nm \\n(ln
+.if \\n(_f \
+. if !\\n(_f=\\n($m \
+. do @err writing \\n($m-column footnote in \
+\\n(_f-column layout
+.|f
+.nr _f 0
+.if \\n(?n \
+. nm
+.fi
+.if \n@>2 .tm @o triggered @r (?o) = \\n(?o
+.if \\n(?o \
+\{\
+. di \" just in case triggered @r
+. if \\n(dn=0 \
+\{\
+. rm |o
+. nr ?o 0
+. \}
+. nr dn \\n(_D
+. rr _D
+.\}
+.rm |f
+.ch @r
+..
+.
+.de @c \" --- new column
+.if \n@>2 .tm >> @c %=\\n%
+.rs
+.sp |\\n(_ku
+.@O +\\n($lu+\\n($su
+.nr $c +1
+.@n
+..
+.
+.de @e \" --- end page
+.if \n@>2 .tm >> @e
+.@O \\n(_ou
+.rs
+.\" Move to footer position.
+.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n(tvu)/100u)
+.@t $f\" \" output footer title
+.nr ?h 0
+.bp
+..
+.
+.de @t \" --- output header or footer title
+.if !\\n(?h \
+\{\
+. sz \\n(tp\" \" set header/footer type fonts, etc.
+. @F \\n(tf
+. lt \\n(_Lu \" make title span entire page
+. if \\n(?n \
+. nm \\n(ln
+. nf
+. \\$1
+. br
+. if \\n(?n \
+. nm
+.\}
+..
+.
+.de $h \" $$$ print header
+.ds |z
+.if !\\n(?c \
+\{\
+. if e .ds |z "\\*(|0
+. if o .ds |z "\\*(|1
+.\}
+.if !\(ts\\*(|z\(ts\(ts \
+' tl \\*(|z
+.rm |z
+..
+.
+.de $f \" $$$ print footer
+.ds |z
+.if \\n(?c \
+\{\
+. if e .ds |z "\\*(|0
+. if o .ds |z "\\*(|1
+.\}
+.if \(ts\\*(|z\(ts\(ts \
+\{\
+. if e .ds |z "\\*(|2
+. if o .ds |z "\\*(|3
+.\}
+.if !\(ts\\*(|z\(ts\(ts \
+' tl \\*(|z
+.rm |z
+..
+.
+.de @r \" --- reprocess overflow footnotes
+.if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
+.di |o \" save overflow footnote
+.nr ?o 1
+.nr _D \\n(dn
+.ns
+..
+.
+.
+.\" *** COMMANDS WITH VARIANT DEFINITIONS ***
+.
+.
+.ie '\*(.T'html' .ds @b \" empty
+.el .rn bp @b \" --- begin page
+.
+.de bp \" *** begin new page (overrides columns)
+.nr $c \\n($m \" force new page, not new column
+.ie \\n(nl>0 \
+. @b \\$1
+.el \
+\{\
+. if \\n(.$>0 \
+. pn \\$1
+. if \\n(?I \
+. @h\" \" 'spring' the header trap
+.\}
+.br
+.wh 0 @h \" reset header
+..
+.
+.rn ll xl \" *** special line length (local)
+.de ll
+.xl \\$1
+.lt \\$1
+.nr $l \\n(.l \" *** line length (copied among ev 0, 1, and 2)
+.if (\\n($m<=1):(\\n($l>\\n(_L) \
+. nr _L \\n(.l
+..
+.
+.rn po @O \" --- local page offset
+.
+.de po \" *** page offset
+.@O \\$1
+.if \\n(.o<0 \
+. do @err page offset is negative (\\n(.ou)
+.nr _o \\n(.o
+..
+.
+.\" Redefine the groff fam request to set the family in
+.\" environment 2 as well as the current environment.
+.if !\n(.g .ig
+.do rn fam @fam \" --- set family in current environment
+.do de fam \" *** set font family in ev 2 and current ev
+.do @fam \\$1
+.ev 2
+.do @fam \\$1
+.ev
+..
+.
+.
+.\" *** MISCELLANEOUS ROFF COMMANDS ***
+.
+.
+.de hx \" *** suppress headers and footers next page
+.nr ?H 1
+..
+.
+.de ix \" *** indent, no break
+'in \\$1
+..
+.
+.de bl \" *** contiguous blank lines
+.br
+.@s \\$1
+.sp \\$1
+..
+.
+.de @s \" --- diversion-surviving space test
+.ne \\$1
+.rs
+.if !'\\n(.z'' \!.@s \\$1
+..
+.
+.\" Even with the following facilities, this package's simulation of
+.\" roff(1) line numbering features does not exhibit complete fidelity
+.\" to that program's Unix V7 behavior. roff(1) always increased the
+.\" page offset by 5n and set a three-digit line number, leaving _two_
+.\" spaces between the number and the start of unindented text. This
+.\" package indents by \n(no instead. Further, roff(1) did _not_ reduce
+.\" the line length to compensate for the increase in page offset. GBR
+.\" presumes that the document author was expected to use an `ll`
+.\" request to perform that action if desired, but has no corpus of
+.\" idiomatic, line-numbered roff(1) documents to examine.
+.\"
+.de n1 \" *** line numbering 1
+.ie \\n(.$ \
+. if '\\$1'C' \
+\{\
+. nr ?N 1
+. nr _l \\n(.l
+. ll -\\n(nou
+.\}
+.if !\\n(?N \
+. po -\\n(nou
+.nr ?n 1
+.do nr _#p \\n(.s
+.do nr _#f \\n(.f
+.nm 1
+..
+.
+.de n2 \" *** line numbering 2
+.nr _n \\n(ln-1\" save last line number that may have been output
+.ie \\n(.$ \
+\{\
+. do ie \\B`\\$1` \
+\{\
+. ds |i \\$1
+. ds |j \\$1
+. nr |l 0
+. \" Pick off leading char and rest to check.
+. do substring |i 0 0 \"
+. do length |l \\$1
+. if \\n(|l>1 .do substring |j 1\" \" for +N / -N
+. ie `\\*(|i`+` \
+. nr ln (\\n(_n)+\\*(|j
+.\" This file's brace style doesn't permit indentation of \{. --GBR
+. el \
+\{\
+. ie `\\*(|i`-` \
+. nr ln (\\n(_n)-\\*(|j
+. el \
+. nr ln \\$1 \" unsigned N
+. \}
+. do nr _#p \\n(.s
+. do nr _#f \\n(.f
+. nm \\n(ln
+. nr ?n 2
+. rm |i |j
+. rr |l
+.\}
+. el \
+. do @err invalid numeric argument to 'n2': '\\$1'
+.\}
+.el \
+\{\
+. nm
+. ie \\n(?N \
+\{\
+. ll \\n(_lu
+. rr _l
+. nr ?N 0
+.\}
+. el \
+. po +\\n(nou
+. nr ?n 0
+. nr ln 0
+.\}
+.rr _n
+..
+.
+.de pa \" *** new page
+.bp \\$1
+..
+.
+.de ro \" *** roman page numbers
+.af % i
+..
+.
+.de ar \" *** arabic page numbers
+.af % 1
+..
+.
+.de m1 \" *** position one space
+.nr _0 \\n(hmu
+.nr hm \\$1v
+.nr tm +\\n(hmu-\\n(_0u
+.rr _0
+..
+.
+.de m2 \" *** position two space
+.nr tm \\n(hmu+\\n(tpp+\\$1v
+..
+.
+.de m3 \" *** position three space
+.nr bm \\n(fmu+\\n(tpp+\\$1v
+..
+.
+.de m4 \" *** position four space
+.nr _0 \\n(fmu
+.nr fm \\$1v
+.nr bm +\\n(fmu-\\n(_0u
+..
+.
+.de sk \" *** leave a blank page (next page)
+.if \\n(.$>0 \
+. do @err ignoring argument(s) to 'sk'
+.nr ?s 1
+..
+.
+.
+.\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
+.
+.
+.if !\n(.g .ig
+.de re \" *** reset tabs (TROFF defines 15 stops default)
+.ta T 0.5i
+..
+.
+.if \n(.g .ig
+.de re
+.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
+..
+.
+.de ba \" *** set base indent
+.ie \\n(.$ \
+. nr $i \\$1n
+.el \
+. nr $i \\n(siu*\\n($0u
+..
+.
+.de hl \" *** draw horizontal line
+.br
+.if '\*(.T'html' \
+\{\
+. HR
+. do return
+.\}
+.ie \n(.g .do nr _I \\n[.in]
+.el .nr _I \\n(.i
+\l'\\n(.lu-\\n(_Iu'
+.sp
+..
+.
+.
+.\" *** PARAGRAPHING ***
+.
+.
+.de pp \" *** paragraph
+.lp \\n(piu
+..
+.
+.de lp \" *** left aligned paragraph
+.@p
+.if \\n(.$ \
+. ti +\\$1
+.nr $p 0 1
+..
+.
+.de ip \" *** indented paragraph w/ optional tag
+.if (\\n(ii>0)&(\\n(ii<1n) \
+. nr ii \\n(iin
+.nr _0 \\n(ii
+.if \\n(.$>1 \
+. nr _0 \\$2n
+.@p \\n(_0u
+.nr _I \\n(.iu
+.in 0
+.nm
+.di |i
+\&\\$1
+.br
+.di
+.if \\n(?n \
+. nm \\n(ln
+.in \\n(_Iu
+.ds |j \\*(|i\\
+.ie \\w"\\*(|j" \
+\{\
+. ti -\\n(_0u
+. ie \\w"\\*(|j">=\\n(_0 \
+\{\
+. do DEVTAG-COL 1
+\\*(|j
+. do DEVTAG-COL-NEXT 2
+. br
+. \}
+. el \
+\{\
+. do DEVTAG-COL 1
+\\*(|j\h'|\\n(_0u'\c
+. do DEVTAG-COL 2
+. \}
+.\}
+.el .do DEVTAG-COL 2
+.rr _0
+.rm |i |j
+..
+.
+.de np \" *** numbered paragraph
+.\" use output comparison in case user has changed format of $p
+.if '\\n($p'-1' \
+. nr $p 0 \" reset number after .bu
+.nr $p +1 \" increment paragraph number
+.@p \w'\0(000)\0'u
+.ti -\w'\0(000)\0'u
+\0(\\n($p)\h'|\w'\0(000)\0'u'\c
+..
+.
+.de bu \" *** bulleted paragraph
+.br
+.\" use output comparison in case user has changed format of $p
+.if '\\n($p'-1' \
+. ns \" don't space between .bu paragraphs
+.nr $p 0-1 \" mark "bulleted paragraph" mode
+.@p \w'\0\(bu\0'u
+.ti -\w'\0\(bu\0'u
+\0\(bu\0\c
+..
+.
+.de @p \" --- initialize for paragraph
+.do check_need_title
+.if "\\n(.z"|e" .do @err eqn equation continuation unfulfilled
+.in \\n($iu+\\n(pou
+.if \\n(.$ \
+. in +\\$1n
+.ce 0
+.rj 0
+.fi
+.@F \\n(pf
+.sz \\n(pp
+.sp \\n(psu
+.ne \\n(.Lv+\\n(.Vu
+.ns
+..
+.
+.
+.\" *** SECTION HEADINGS ***
+.
+.
+.de sh \" *** section heading
+.fi
+.do check_need_title
+.if (\\n(si>0)&(\\n(si<1n) \
+. nr si \\n(sin
+.if '\*(.T'html' .nr si 0
+.ce 0
+.if '\*(.T'html' \
+\{\
+. do DEVTAG-SH \\$1
+. do nr devtag-needs-end-of-heading 1
+.\}
+.@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+.if !"\\$2"_" \
+\{\
+. ds |n \&\\$2
+. $p "\\*(|n" "\\*($n" \\n($0
+. $0 "\\*(|n" "\\*($n" \\n($0
+. rm |n
+.\}
+.nr $p 0 1 \" reset .np count
+..
+.
+.de @d \" --- change section depth
+.if !""\\$1" \
+. nr $0 \\$1
+.if \\n($0&(\\n(.$>1) \
+. nr $\\n($0 \\$2
+.ds $n \&\"
+.ie \\n($0>=1 \
+\{\
+. if '\\n($1'0' \
+. nr $1 1
+. if (\\n(.$>=3) .if !"\\$3"-" \
+. nr $1 \\$3
+. as $n \\n($1
+.\}
+.el \
+. nr $1 0
+.ie \\n($0>=2 \
+\{\
+. if '\\n($2'0' \
+. nr $2 1
+. if (\\n(.$>=4) .if !"\\$4"-" \
+. nr $2 \\$4
+. as $n .\\n($2
+.\}
+.el \
+. nr $2 0
+.ie \\n($0>=3 \
+\{\
+. if '\\n($3'0' \
+. nr $3 1
+. if (\\n(.$>=5) .if !"\\$5"-" \
+. nr $3 \\$5
+. as $n .\\n($3
+.\}
+.el \
+. nr $3 0
+.ie \\n($0>=4 \
+\{\
+. if '\\n($4'0' \
+. nr $4 1
+. if (\\n(.$>=6) .if !"\\$6"-" \
+. nr $4 \\$6
+. as $n .\\n($4
+.\}
+.el \
+. nr $4 0
+.ie \\n($0>=5 \
+\{\
+. if '\\n($5'0' \
+. nr $5 1
+. if (\\n(.$>=7) .if !"\\$7"-" \
+. nr $5 \\$7
+. as $n .\\n($5
+.\}
+.el \
+. nr $5 0
+.ie \\n($0>=6 \
+\{\
+. if '\\n($6'0' \
+. nr $6 1
+. if (\\n(.$>=8) .if !"\\$8"-" \
+. nr $6 \\$8
+. as $n .\\n($6
+.\}
+.el \
+. nr $6 0
+..
+.
+.de sx \" *** heading up, no increment (2.1.1 -> 2.1)
+.ce 0
+.ul 0
+.nr _0 \\n($0-1
+.if \\n(.$ .nr _0 +1
+.if \\n(.$ .nr _0 \\$1
+.@d \\n(_0
+.rr _0
+.$p "" "" \\n($0
+.nr $p 0 1 \" reset .np count
+..
+.
+.de uh \" *** unnumbered section heading
+.$p "\\$1"
+.$0 "\\$1"
+..
+.
+.de $p \" $$$ print section heading
+.if (\\n(si>0)&(\\n(.$>2) \
+. nr $i \\$3*\\n(si
+.in \\n($iu
+.ie !"\\$1\\$2"" \
+\{\
+. sp \\n(ssu \" one of them is non-null
+. ne \\n(.Lv+\\n(.Vu+\\n(psu+((\\n(spp*\\n(tvu*\\n(.Lu)/100u)
+. \" exdent if \\$3 > 0
+. ie 0\\$3 \
+. ti -(\\n(siu-\\n(sou)
+. el \
+. ti +\\n(sou
+. @F \\n(sf
+. sz \\n(sp
+. if 0\\$3 \
+. $\\$3
+. if \w"\\$2">0 \\$2.
+. if \w"\\$1">0 \\$1\f1\ \ \&
+.\}
+.el \
+. sp \\n(psu
+.@F \\n(pf
+.sz \\n(pp
+..
+.
+.
+.\" *** COLUMNED OUTPUT ***
+.
+.
+.de 2c \" *** double columned output
+.do if d |f .do @err changing columnation with footnote pending
+.br
+.if \\n($m>1 \
+. 1c\" \" revert to 1c if already 2c
+.nr $c 1
+.nr $m 2
+.if \\n(.$>1 \
+. nr $m \\$2 \" param 2: column quantity
+.if \\n(.$>0 \
+. if !'\\$1'' \
+. nr $s \\$1n \" param 1: column separation
+.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
+.xl \\n($lu
+.mk _k
+.ns
+..
+.
+.de 1c \" *** single columned output
+.do if d |f .do @err changing columnation with footnote pending
+.br
+.nr $c 1
+.nr $m 1
+.ll \\n(_Lu\" return to normal output
+.sp |\\n(.hu
+.@O \\n(_ou
+..
+.
+.de bc \" *** begin column
+.sp \\n(.pu
+..
+.
+.
+.\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
+.
+.
+.de (z \" *** begin floating keep
+.if \n@>4 .tm >> (z, .z=\n(.z
+.@D 4 \\$1 \\$2
+.@(
+..
+.
+.de )z \" *** end floating keep
+.if \n@>4 .tm >> )z, .z=\n(.z
+.sp \\n(zsu
+.@)
+.if \n@>4 .tm -- )z << @), .z=\n(.z
+.rr _0
+.if !\\n(?b \
+. nr dn +(\\n(ppp*\\n(tvu)/200u+\\n(zsu
+.nr dl -\n(.H \" fudge factor necessary to make it work
+.ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
+\{\
+. nr ?a 1
+. if (\\n(dl>\\n($l)&(\\n($m>1) \
+. nr ?w 1 \" mark wider than one column (top)
+. ds |x |t
+.\}
+.el \
+\{\
+. nr ?b 1
+. if (\\n(dl>\\n($l)&(\\n($m>1) \
+. nr ?W 1 \" mark wider than one column (bottom)
+. nr _b +\\n(dnu
+. \" avoid moving @f back past the current position
+. if \\n(.p-\\n(nl-\n(.V<\\n(_b \
+. nr _b \\n(.p-\\n(nl-\n(.V
+. ch @f -\\n(_bu
+. ds |x |b
+.\}
+.da \\*(|x \" copy to save macro
+.nf
+.ls 1
+.nr ?k 1
+.if \n@>4 .tm -- )z >> \\*(|x
+\!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
+.|k\" \" and the body
+.if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
+.nr ?k 0
+.rm |k\" \" remove the temp macro
+.da
+.in 0
+.ls 1
+.xl \\n($lu
+.ev
+.if \n@>4 .tm << )z, .z=\\n(.z
+..
+.
+.de @k \" --- output keep
+.if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
+.ev 1
+.nf
+.ls 1
+.in 0
+.if !`\\$2`ns` .sp \\n(zsu \" no pre-spacing if (b .. )b
+.if \\n(?n \
+. nm \\n(ln
+.\\$1
+.if \\n(?n \
+. nm
+.br
+.rm \\$1
+.ev
+..
+.
+.de (t \" XXX temp ref to (z
+.(z \\$1 \\$2
+..
+.
+.de )t \" XXX temp ref to )t
+.)z \\$1 \\$2
+..
+.
+.de (b \" *** begin block
+.br
+.@D 3 \\$1 \\$2
+.sp \\n(bsu
+.@(
+.if '\*(.T'html' .sp \\n(bsu
+..
+.
+.de )b \" *** end block
+.br
+.@)
+.if (\\n(bt=0):(\\n(.t<\\n(bt) \
+. ne \\n(dnu \" make it all on one page
+.@k |k ns
+.ev \" return from display environment
+.sp \\n(bsu+\\n(.Lv-1v
+..
+.
+.de @( \" --- begin keep
+.if !"\\n(.z"" .do @err invalid nested keep (\\n(.z)
+.@M
+.di |k
+\!'rs
+..
+.
+.de @M \" --- set modes for display
+.nr ?k 1
+.@C 1
+.@F \\n(df
+.if \\n($R .@V
+.vs \\n(.sp*\\n(dvu/100u
+.nf
+.if "\\*(|p"F" \
+. fi \" set fill mode if "F" parameter
+.if \\n(_d=4 \
+. in 0
+.if \\n(_d=3 \
+\{\
+. in +\\n(biu
+. xl -\\n(biu
+.\}
+.if \\n(_d=1 \
+. ce 10000
+..
+.
+.de @) \" --- end keep
+.br
+.if !"\\n(.z"|k" .do @err attempted close of never-opened keep
+.nr ?k 0
+.di
+.in 0
+.ce 0
+..
+.
+.de (c \" *** begin block centered text
+.br
+.if "\\n(.z"|c" .do @err block centering calls cannot be nested
+.if \\n(?n .nm
+.if ``\\n(.z` \
+\{\
+. @C 1\" \" Ensure env. set up for centering in open text
+. ev
+.\}
+.di |c
+..
+.
+.de )c \" *** end block centered text
+.if !"\\n(.z"|c" .do @err unmatched block centering call
+.br \" force out final line
+.di
+.if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
+.ev 1
+.ls 1
+.nr __ (\\n(.lu-\\n(.iu-\\n(dlu)/2u
+.if \\n(__u<0 .nr __ 0
+.in \\n(__u
+.rr __
+.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
+.if \\n(?n \
+. nm \\n(ln
+.nf
+.|c
+.in
+.ls
+.if \\n(?n \
+. nm
+.ev
+.rm |c
+.if \\n(?n \
+. nm \\n(ln
+..
+.
+.
+.\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
+.
+.
+.de (q \" *** begin block quote
+.br
+.@C 1
+.fi
+.sp \\n(qsu
+.in +\\n(qiu
+.xl -\\n(qiu
+.sz \\n(qp
+.if \\n(?n \
+. nm \\n(ln
+..
+.
+.de )q \" *** end block quote
+.br
+.if \\n(?n \
+. nm
+.ev
+.sp \\n(qsu+\\n(.Lv-1v
+.nr ?k 0
+..
+.
+.de (l \" *** begin list
+.br
+.sp \\n(bsu
+.@D 3 \\$1 \\$2
+.@M
+.if \\n(?n \
+. nm \\n(ln
+.if '\*(.T'html' .sp \\n(bsu
+..
+.
+.de )l \" *** end list
+.\" XXX: Check for keep underflow here.
+.br
+.ev
+.if \\n(?n \
+. nm \\n(ln
+.sp \\n(bsu+\\n(.Lv-1v
+.nr ?k 0
+..
+.
+.
+.\" *** PREPROCESSOR SUPPORT ***
+.
+.
+.\"
+.\" EQN
+.\"
+.de EQ \" *** equation start
+.do if \\n[devtag-needs-end-of-heading] .do DEVTAG-EO-H
+.do nr devtag-needs-end-of-heading 0
+.if "\*(.T"html" \
+\{\
+. do nr e-EQ-ll \\n(.l
+. ll 1000n
+.\}
+.do HTML-IMAGE
+.if !\\n(?e \
+\{\
+. if "\\n(.z"|e" .do @err nested eqn equation start
+. @D 1 "\\$1" "\\$2"
+. @C 2
+. di |e
+.\}
+.ls 1
+.in 0
+.nf
+..
+.
+.de EN \" *** equation end
+.br
+.do HTML-IMAGE-END
+.if "\*(.T"html" \
+. do ll \\n[e-EQ-ll]u
+.ie "\\$1"C" \
+\{\
+. nr ?e 1
+. sp \\n(esu
+.\}
+.el \
+\{\
+. nr ?e 0
+. di
+. if \\n(dn \
+. @q\" \" actual equation output
+. rm |e
+. ev
+.\}
+..
+.
+.de @q \" --- equation output
+.nr _Q \\n(dnu
+.ev
+.sp \\n(esu \" output rest of preceding text
+.if !"\\n(.z"" \!.ne \\n(_Qu
+.ne \\n(_Qu+\n(.Vu \" keep it on one page
+.@C 2\" \" .ev 2 may be jumbled from header
+.if \\n(_d=1 \
+. in (\\n(.lu+\\n($iu-\\n(dlu)/2u
+.if \\n(_d=2 \
+. in \\n($iu
+.if \\n(_d=3 \
+. in \\n(biu+\\n($iu
+.if \\n(_d=4 \
+. in 0
+.mk _q
+.if \n@>1 .tm --@q: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
+.if !"\\*(|p"" \
+\{\
+. rs
+. sp (\\n(_Qu-\\n(.vu)/2u
+. tl """\\*(|p"
+. rt \\n(_qu
+.\}
+.if \\n(?n \
+. nm \\n(ln
+.|e
+.if \\n(?n \
+. nm
+.sp |\\n(_qu+\\n(_Qu
+.sp \\n(esu+\\n(.Lv-1v
+.rr _q
+.rr _Q
+..
+.
+.\"
+.\" TBL
+.\"
+.de TS \" *** table start
+.sp \\n(bsu
+.if "\*(.T"html" \
+\{\
+. do nr e-TS-ll \\n(.l
+. ll 1000n
+.\}
+.do HTML-IMAGE
+.@C 1
+.fi \" drop into fill mode for text boxes
+.if "\\$1"H" \
+\{\
+. di |h \" save header part
+. nr ?T 1
+.\}
+.ls 1
+.ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
+.if \\n(.p-\\n(_b-1v<=\\n(nl \
+. ch @f \\n(nlu+\n(.Vu
+..
+.
+.de TH \" *** end header part of table
+.nr T. 0
+.T# 0
+.if \\n(?n \!.nm
+.di
+.nr _T \\n(?T
+.nr ?T 0
+.ne \\n(dnu+1v
+.nr ?T \\n(_T
+.nr _i \\n(.i
+.if \\n(?n .nm \\n(ln
+.in 0
+.|h\" \" put in the initial header
+.in \\n(_iu
+.rr _i
+.mk #T
+..
+.
+.de TE \" *** table end
+.nr ?T 0
+.ch @f -\\n(_bu \" reset pseudo-trap
+.if \\n(.p-\\n(_b<=\\n(nl \
+. ch @f \\n(nlu+\n(.Vu
+.ev
+.do HTML-IMAGE-END
+.if "\*(.T"html" \
+. do ll \\n[e-TS-ll]u
+.sp \\n(bsu+\\n(.Lv-1v
+.re
+..
+.
+.de T&
+..
+.
+.\"
+.\" REFER
+.\"
+.do mso refer-me.tmac
+.
+.\"
+.\" IDEAL
+.\"
+.de IS \" *** start ideal picture
+.nr g7 \\n(.u
+.ls 1
+..
+.
+.de IF
+.if \\n(g7 .fi
+.ls
+..
+.
+.de IE \" *** end ideal picture
+.if \\n(g7 .fi
+.ls
+..
+.
+.de && \" no-op so we can define and end one macro inside another
+..
+.
+.\"
+.\" PIC
+.\"
+.de PS \" *** start picture: $1=height, $2=width in units or inches
+.sp 0.3
+.do HTML-IMAGE
+.nr g7 \\$2
+.in (u;\\n(.l-\\n(g7>?0/2)
+.ne \\$1u
+.nr g7 \\n(.u
+.ls 1
+.ie \\n(?n \
+\{\
+. do nr PS_nm_cnt 0
+. do de PS_nm_check && \" define macro to emit .nm at top diversion
+. if \n@>4 .tm -- PS: \\\\$1 \\\\$2 .z=\\\\n(.z PS_nm_cnt=\\\\n[PS_nm_cnt]
+. \" Multiple .PS/.PE in a keep.
+. if `\\\\$2`init` \
+. do nr PS_nm_cnt \\\\n[PS_nm_cnt]+1
+. ie `\\\\n(.z`` \
+\{\
+. if `\\\\$1`suspend` \
+. nm
+. if `\\\\$1`resume` \
+\{\
+. nm \\\\n(ln
+. do nr PS_nm_cnt \\\\n[PS_nm_cnt]-1
+. do if !\\\\n[PS_nm_cnt] \
+\{\
+. do rm PS_nm_check
+. do rr PS_nm_cnt
+.\}
+.\}
+.\}
+.el \!.PS_nm_check \\\\$1
+. &&
+. mk _q \" emit a single numbered line for PS picture
+. rs
+\&\ \" space
+. br
+. rt \\n(_qu
+. do PS_nm_check suspend init
+.\}
+..
+.
+.rm &&
+.
+.de PF \" *** end picture; "fly back" to top
+.if \\n(?n .do PS_nm_check resume
+.ls
+.in
+.if \\n(g7 .fi
+.do HTML-IMAGE-END
+..
+.
+.de PE \" *** end picture
+.PF
+.sp .6
+..
+.
+.\"
+.\" GREMLIN
+.\"
+.de GS \" *** start gremlin picture
+.ie '\*(.T'html' \
+\{\
+. ie "\\$1"L" .do HTML-IMAGE-LEFT
+. el .ie "\\$1"R" .do HTML-IMAGE-RIGHT
+. el .do HTML-IMAGE
+.\}
+.el \
+\{\
+. nr g7 (\\n(.lu-\\n(g1u)/2u
+. if "\\$1"L" .nr g7 \\n(.iu
+. if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
+. in \\n(g7u
+. nr g7 \\n(.u
+. ls 1
+. nf
+. ne \\n(g2u
+.\}
+..
+.
+.de GE \" *** end gremlin picture
+.ie '\*(.T'html' .do HTML-IMAGE-END
+.el \
+\{\
+. GF
+. sp .6
+.\}
+..
+.
+.de GF \" *** finish gremlin picture; stay at top
+.ls
+.in
+.if \\n(g7 .fi
+..
+.
+.
+.\" *** FONT AIDS ***
+.
+.
+.de sz \" *** set point size and vertical spacing
+.ps \\$1
+.if \\n($r .@v
+.vs \\n(.sp*\\n(tvu/100u \" default vs at pointsize + 20%
+..
+.
+.de @v \" --- possibly set tv from $r
+.if (1i>=240u)&(1p<=\\n($r)&(\\n($r<=4p) .nr tv \\n($r00/1p
+..
+.
+.de @V \" --- possibly set dv from $R
+.if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr dv \\n($R00/1p
+..
+.
+.de @E \" --- store in _F argument to \f for restoring font
+.ie \\n(.f<10 \
+. ds _F \\n(.f
+.el \
+\{\
+. ie \\n(.f<100&\n(.g \
+. ds _F (\\n(.f
+. el \
+. ds _F P
+.\}
+..
+.
+.de r \" *** enter roman font
+.do check_need_title
+.@E
+.ft 1
+.if \\n(.$ \&\\$1\f\\*(_F\\$2
+.do check_need_title
+..
+.
+.de i \" *** enter italic
+.do check_need_title
+.@E
+.ft 2
+.if \\n(.$ \&\,\\$1\/\f\\*(_F\\$2
+.do check_need_title
+..
+.
+.de b \" *** enter boldface
+.do check_need_title
+.@E
+.ft 3
+.if \\n(.$ \&\\$1\f\\*(_F\\$2
+.do check_need_title
+..
+.
+.de rb \" *** enter real boldface
+.do check_need_title
+.@E
+.ft 3
+.if \\n(.$ \&\\$1\f\\*(_F\\$2
+.do check_need_title
+..
+.
+.de bi \" *** enter bold italic
+.do check_need_title
+.@E
+.ft 4
+.if \\n(.$ \&\,\\$1\/\f\\*(_F\\$2
+.do check_need_title
+..
+.
+.de u \" *** enter underlined word
+.\" If the first argument would break, then (in troff mode), this
+.\" underlines only the words appearing only the last output line, with
+.\" the underline extending all the way into the left margin.
+.ie t \\$1\l'|0\(ul'\\$2
+.el \(ul\\$1\(ul\\$2
+..
+.
+.\" This alternative version of the `u` macro uses the groff \Z
+.\" extension to get the underlining to accurately fit under the words
+.\" at the expense of no longer adjusting them. If the first argument
+.\" would break, the output line is overset.
+.if !\n(.g .ig
+.de u
+.ie t .do nop \Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
+.el \(ul\\$1\(ul\\$2
+..
+.
+.de q \" *** enter quoted word
+\&\\*(lq\\$1\\*(rq\\$2
+..
+.
+.de bx \" *** enter boxed word
+.ie t \
+\{\
+. ie '\\*(.T'html' \\$1\\$2
+. el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
+.\}
+.el \
+\{\
+. ie \\n(.g .do nop \m[black]\M[white]\Z'\\$1'\h'\w'\\$1'u'\
+\m[]\M[]\\$2
+. el |\\$1|\\$2
+.\}
+..
+.
+.de sm \" *** print in smaller font
+\s-1\\$1\\s+1\\$2
+..
+.
+.de @F \" --- change font (0 -> no change)
+.nr ~ \\$1
+.if \\n~>0 \
+. ft \\n~
+.rr ~
+..
+.
+.
+.\" *** FOOTNOTING ***
+.
+.
+.de (f \" *** begin footnote
+.if "\\n(.z"|f" .do @err footnotes cannot be nested
+.if \\n(_f \
+. if !\\n(_f=\\n($m \
+. do @err queueing \\n($m-column footnote after \
+\\n(_f-column footnote
+.nr _f \\n($m
+.ie "\\n(.z"" \
+\{\
+. nr _D \\n(dn
+. nr _0 1v+\\n(nlu
+. ev 2
+. nm
+. da |f
+. in 0
+. xl \\n($lu-\\n(fuu
+. @F \\n(ff
+. sz \\n(fp
+. vs \\n(.sp*\\n(dvu/100u
+. if !\\n(?f \
+\{\
+. nr _b +1v \" allow space for $s
+. $s
+. \}
+. br
+. if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \
+\{\
+. da\" \" won't fit on page at all
+. bc
+. if !\\n(?f \
+. rm |f
+. da |f
+.\" Next 5 lines could be dropped if headers had their own environment.
+. in 0 \" reset everything from .bc
+. xl \\n($lu-\\n(fuu
+. @F \\n(ff
+. sz \\n(fp
+. vs \\n(.sp*\\n(dvu/100u
+. if !\\n(?f \
+. $s
+. br
+. \}
+. rr _0
+. sp \\n(fsu
+. nr ?f 1
+. fi
+. if !"\\$1"_" \
+. ti \\n(fiu
+. if \n@>2 .tm << (f $f=\\n($f
+.\}
+.el \
+\{\
+. ev 2
+. nm
+. in 0
+. xl \\n($lu-\\n(fuu
+. @F \\n(ff
+. sz \\n(fp
+. vs \\n(.sp*\\n(dvu/100u
+. fi
+\!.(f \\$1
+\!.@N
+.\}
+..
+.
+.de @N \" --- set no fill mode in the top-level diversion
+.ie "\\n(.z"" .nf
+.el \!.@N
+..
+.
+.de )f \" *** end footnote
+.ie "\\n(.z"|f" \
+\{\
+. if \\n* .nr $f +1
+. nr * 0
+. in 0
+. da
+. ev
+. if \\n(_w<\\n(dl \
+. nr _w \\n(dl \" compute maximum fn width
+. nr _b +\\n(dn
+. ch @f -\\n(_bu
+. if \\n(.p-\\n(_b<=\\n(nl \
+. ch @f \\n(nlu+\n(.Vu
+. nr dn \\n(_D
+. rr _D
+.\}
+.el \
+\{\
+. br
+\!.)f
+. ev
+.\}
+..
+.
+.@R ff
+.if \n(ff<=0 \
+. nr ff 1 \" footnote font: Times Roman
+.@R fp
+.if \n(fp<=0 \
+. nr fp 8 \" footnote pointsize
+.
+.de $s \" $$$ footnote separator
+.nr __ 2i
+.if \\n($lu<\\n(__u .nr __ \\n($lu
+\l'\\n(__u'
+.rr __
+..
+.
+.
+.\" *** DELAYED TEXT ***
+.
+.
+.de (d \" *** begin delayed text
+.am |d )d
+.sp \\n(bsu
+.vs \\n(.sp*\\n(dvu/100u
+..
+.
+.de )d \" *** end delayed text
+.vs \\n(.sp*\\n(tvu/100u
+.nr $d +1
+..
+.
+.de pd \" *** print delayed text
+.|d
+.rm |d
+.nr $d 1
+..
+.
+.
+.\" *** INDEXES (TABLE OF CONTENTS) ***
+.
+.
+.nr _x 0 1
+.do nr _xn 0
+.af _x a
+.
+.de (x \" *** begin index entry
+.if \n@>4 .tm >> (x, .z=\\n(.z
+.ds |X x
+.if \\n(.$>0 \
+. ds |X \\$1
+.ie "\\n(.z"" \
+. nr _z 0
+.el \
+. nr _z 1
+.@\\n(_z
+..
+.
+.de @0 \" --- finish (x if no current diversion
+.am %\\*(|X )x
+.sp \\n(xsu
+.ti -\\n(piu
+..
+.
+.de @1 \" --- finish (x if current diversion
+.if "\\n(_x"z" .nr _x 0
+.de =\\n+(_x )x
+..
+.
+.de )x \" *** end index entry
+.if \n@>4 .tm >> )x, .z=\\n(.z
+.ie "\\n(.z"" \
+\{\
+. ds |x \\n%
+. if \\n(.$>0 \
+. ds |x \\$1
+. if "\\*(|x"_" \
+. ig ..
+. am %\\*(|X ..
+. if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
+. ti +\\n(xuu
+\\\\a\\\\t\\$2\\*(|x
+...
+. rm |x
+. rm |X
+.\}
+.el \
+\{\
+\!.(x \\*(|X
+\!\\\\*(=\\n(_x\\\\
+\!.)x \\$1 \\$2
+\!.rm =\\n(_x
+.\}
+..
+.
+.de xp \" *** print the index
+.br
+.@C 2
+.ls 1
+.vs \\n(.sp*\\n(dvu/100u
+.fi
+.in +\\n(piu
+.ds |X x
+.if \\n(.$>0 \
+. ds |X \\$1
+.xl -(\\n(xuu+\w'...'u)
+.di |x
+.%\\*(|X
+.br
+.di
+.rm %\\*(|X
+.xl \\n($lu
+.rm |X
+.ev
+.nf
+.in 0
+.ta \\n(.lu-\\n(xuuR \\n(.luR
+.|x
+.fi
+.in
+.rm |x
+..
+.
+.
+.\" *** HTML VERSIONS OF .x(, .x), AND .xp ***
+.
+.
+.do de1 (x-html \" --- create TAG and divert text
+.nr _x +1
+.nr _xn +1
+.TAG "_x\\n[_x]
+.br
+.di |x\\n[_xn]
+.br
+..
+.
+.do de1 )x-html \" --- end diversion
+.br
+.di
+..
+.
+.do de1 xp-html \" --- create list of links
+.nr _xx 1
+.br
+.ev xp-html-ev
+.sp
+.ULS
+.while \\n[_xx]<=\\n[_xn] \
+\{\
+. br
+. unformat |x\\n[_xx]
+. di xp-html-div
+. br
+. ll 100i
+. fi
+. |x\\n[_xx]
+. br
+. di
+. asciify xp-html-div
+. rm xp-html-as
+. as xp-html-as #
+. as xp-html-as _x\\n[_xx]
+. ll
+. LI
+. URL \\*[xp-html-as] "\\*[xp-html-div]
+. rm xp-html-as
+. nr _xx +1
+.\}
+.ULE
+.sp
+.ev
+..
+.
+.if '\*(.T'html' \
+\{\
+. rm (x
+. do als (x (x-html
+. rm )x
+. do als )x )x-html
+. rm xp
+. do als xp xp-html
+.\}
+.
+.
+.\" *** CHAPTERS AND TITLES ***
+.
+.
+.de +c \" *** begin chapter
+.ep\" \" force out footnotes
+.if \\n(?o:\\n(?a \
+\{\
+. bp \" force out a table or more footnote
+. rs
+. ep
+.\}
+.nr ?C 1
+.nr $f 1
+.if \\n(?R \
+. pn 1
+.bp
+.in \\n($iu \" reset the indent
+.rs
+.ie \\n(.$ \
+. $c "\\$1"
+.el \
+. sp 3
+..
+.
+.de ++ \" *** declare chapter type
+.nr _0 0
+.if "\\$1"C" \
+. nr _0 1 \" chapter
+.if "\\$1"RC" \
+. nr _0 11 \" renumbered chapter
+.if "\\$1"A" \
+. nr _0 2 \" appendix
+.if "\\$1"RA" \
+. nr _0 12 \" renumbered appendix
+.if "\\$1"P" \
+. nr _0 3 \" preliminary material
+.if "\\$1"B" \
+. nr _0 4 \" bibliographic material
+.if "\\$1"AB" \
+. nr _0 5 \" abstract
+.if \\n(_0=0 \
+. do @err invalid segment type to '++': '\\$1'
+.nr ?R 0
+.if \\n(_0>10 \
+\{\
+. nr ?R 1
+. nr _0 -10
+.\}
+.nr ch 0 1
+.if (\\n(_0=3):(\\n(_0=5) \
+. pn 1 \" must do before .ep
+.if !\\n(_0=\\n(_M .if \\n(_M=3 \
+. pn 1 \" must do before .ep
+.ep\" \" end page for correct page number types
+.if \\n(_0=1 \
+\{\
+. af ch 1
+. af % 1
+.\}
+.if \\n(_0=2 \
+\{\
+. af ch A
+. af % 1
+.\}
+.if \\n(_0=3 \
+. af % i
+.if \\n(_0=4 \
+. af % 1
+.if \\n(_0=5 \
+. af % 1
+.if \\n(.$>1 \
+. he \\$2
+.nr _M \\n(_0
+.rr _0
+..
+.
+.de $c \" $$$ print chapter title
+.sz 12
+.ft 3
+.ce 1000
+.if \\n(_M<3 \
+. nr ch +1
+.ie \\n(_M=1 \\*(wc\~\\n(ch
+.el .if \\n(_M=2 \\*(wa\~\\n(ch
+.if \w"\\$1" .sp 3-\\n(.L
+.if \w"\\$1" \\$1
+.if (\\n(_M<3):(\w"\\$1") \
+. sp 4-\\n(.L
+.ce 0
+.ft
+.sz
+.ie \\n(_M=1 \
+. $C "\\*(wc" \\n(ch "\\$1"
+.el .if \\n(_M=2 \
+. $C "\\*(wa" \\n(ch "\\$1"
+..
+.
+.de tp \" *** title page
+.hx
+.bp
+.br
+.rs
+.pn \\n%
+..
+.
+.\" *** DATE AND LOCALIZATION ***
+.ds wa Appendix\"
+.ds wc Chapter\"
+.do ds _mo1 January\"
+.do ds _mo2 February\"
+.do ds _mo3 March\"
+.do ds _mo4 April\"
+.do ds _mo5 May\"
+.do ds _mo6 June\"
+.do ds _mo7 July\"
+.do ds _mo8 August\"
+.do ds _mo9 September\"
+.do ds _mo10 October\"
+.do ds _mo11 November\"
+.do ds _mo12 December\"
+.do ds _dw1 Sunday\"
+.do ds _dw2 Monday\"
+.do ds _dw3 Tuesday\"
+.do ds _dw4 Wednesday\"
+.do ds _dw5 Thursday\"
+.do ds _dw6 Friday\"
+.do ds _dw7 Saturday\"
+.do ds _td_format \\*(mo \\n(dy, \\n(y4\"
+.
+.de ld \" *** (re-)initialize date and localization
+.\" Work around troff `yr` register's y2k problem.
+.nr y2 \\n(yr%100
+.af y2 00
+.nr y4 \\n(yr+1900
+.
+.do ds dw \\*[_dw\\n(dw]
+.do ds mo \\*[_mo\\n(mo]
+.do ds td \\*[_td_format]
+.
+.\" Set package default hyphenation mode, but override it with groff's
+.\" localized value if available.
+.hy 6
+.do if r \\*[locale]*hyphenation-mode-trap \
+. do hy \\n[\\*[locale]*hyphenation-mode-trap]
+..
+.
+.ld
+.
+.\" *** PARAMETRIC INITIALIZATIONS ***
+.
+.
+.\" In groff 1.23, we keep $v and $V to maintain 30 years of continuity,
+.\" but expose new names `tv` and `dv`, respectively, making it more
+.\" obvious that user alteration of these register values is supported.
+.\" See discussion of `$R` and `$r` below.
+.nr tv \n(.v00+\n(.sp-1/\n(.sp \" vs as % of ps for .sz request
+.nr dv \n(tv \" same for displays & footnotes
+.do aln $v tv
+.do aln $V dv
+.nr hm 4v \" header margin
+.nr tm 7v \" top margin
+.nr bm 6v \" bottom margin
+.nr fm 3v \" footer margin
+.nr tf 3 \" title font: (real) Times Bold
+.nr tp 10 \" title point size
+.nr bi 4m \" indent for blocks
+.nr pi 5n \" indent for paragraphs
+.nr pf 1 \" normal text font
+.nr pp 10 \" normal text point size
+.nr qi 4n \" indent for quotes
+.nr qp -1 \" down one point
+.nr ii 5n \" indent for .ip's and .np's
+.nr $m 1 \" max number of columns
+.nr $s 4n \" column separation
+.nr sf 3 \" section font -- Times Bold
+.nr sp 10 \" section title pointsize
+.nr ss 12p \" section prespacing
+.nr si 0 \" section indent
+.nr sx 0.2m \" super/subscript x-height adjustment
+.nr no \w'0000'u \" offset for line numbers
+.
+.@R 0x\" set by GNU pic to _disable_ \x in super/scripting
+.
+.\" *** OTHER INITIALIZATION ***
+.
+.\" Define strings for super- and subscripting. groff me does not
+.\" bother with half-line motions in nroff mode, since we have no output
+.\" driver (for that mode) that supports them; consequently we don't
+.\" emit \x escape sequences in that case either. If someone implements
+.\" a Model 37 or line printer emulator we can target, this decision
+.\" could be revisited.
+.\"
+.\" Adjust the line height with \x if the `0x` register is zero (a
+.\" pic(1) convention) by the amount in `sx` (a groff 1.23 extension).
+.ie t \
+\{\
+.ds { \v'-0.4m'\x'\\n(0x=0*-1u*\\n(sxu'\s-3
+.ds } \s+3\v'0.4m'
+.\}
+.el \
+\{\
+.ds { [\"
+.ds } ]\"
+.\}
+.\" for compatibility with traditional -me
+.\" (the first will work only in compatibility mode)
+.ds [ \*{
+.ds ] \*}
+.ds @< <\"
+.ds @> >\"
+.if \n(.g \
+\{\
+.do if c \(la .ds @< \(la\"
+.do if c \(ra .ds @> \(ra\"
+.\}
+.ie t \
+\{\
+.ds < \v'0.4m'\x'\\n(0x=0*\\n(sxu'\s-3
+.ds > \s+3\v'-0.4m'
+.\}
+.el \
+\{\
+.ds < \*(@<
+.ds > \*(@>
+.\}
+.ds - \(em
+.\" Avoid warnings from groff -ww.
+.@S |0
+.@S |1
+.@S |2
+.@S |3
+.@S $C
+.@S $H
+.@S $0
+.@S $1
+.@S $2
+.@S $3
+.@S $4
+.@S $5
+.@S $6
+.@S $7
+.@S $8
+.@S $9
+.@S ..
+.
+.@R po\" \" simulated page offset
+.@R $0\" \" section depth
+.@R $1\" \" section numbers a.b.c.d.e.f
+.@R $2\"
+.@R $3\"
+.@R $4\"
+.@R $5\"
+.@R $6\"
+.@R $i\" \" paragraph base indent
+.@R $p\" \" numbered paragraph number
+.\" [Before groff 1.06] the groff -me macros treated the $r and $R
+.\" number registers in a way that was incompatible with the BSD -me
+.\" macros. The reason for this was that the approach used by the BSD
+.\" -me macros does not work with low resolution devices such as -TX75
+.\" and -TX100. However, this caused problems with existing -me
+.\" documents. In [groff 1.06], the vertical spacing is controlled by
+.\" the $v and $V registers which have the same meaning as $r and $R in
+.\" earlier groff releases. In addition, if the $r or $R register is
+.\" set to a value that would be correct for the BSD -me macros and a
+.\" low resolution device is not being used, then an appropriate value
+.\" for the $v or $V register is derived from the $r or $R register.
+.\"
+.\" Thirty years later, we rename `$v` to `tv` and `$V` to `dv`.
+.@R $r\" \" ratio of vs to ps (may override tv)
+.@R $R\" \" same for displays (may override dv)
+.@R df\" \" display font: same as surrounding text
+.@R so\" \" additional section title offset
+.@R fu\" \" footnote undent
+.@R bt\" \" block keep threshold
+.@R *\" \" has \** been referenced?
+.@R ?a\" \" pending floating keep at page top?
+.@R ?b\" \" pending floating keep at page bottom?
+.@R ?C\" \" at chapter header?
+.@R ?e\" \" in equation?
+.@R ?f\" \" inside footnote?
+.@R _f\" \" column count of previous footnote
+.@R ?H\" \" suppress headers and footers next page?
+.@R ?I\" \" has the header trap been sprung?
+.@R ?N\" \" numbering with shorter line length?
+.@R ?n\" \" n1 mode?
+.@R ?o\" \" footnote overflow?
+.@R ?R\" \" renumbered chapter?
+.@R ?s\" \" skip next page?
+.@R ?T\" \" inside .TS H?
+.@R ?W\" \" wide floating keep at page bottom?
+.@R ?w\" \" wide floating keep at page top?
+.
+.nr fi 0.3i
+.nr _o \n(.o
+.nr $b 3 \" bold
+.nr ps 0.35v
+.if \n(ps<\n(.V .nr ps \n(.V
+.nr bs \n(ps \" block pre/post spacing
+.nr qs \n(ps \" quote pre/post spacing
+.nr zs 1v \" float-block pre/postspacing
+.nr xs 0.2v \" index prespacing
+.nr xu 0.5i \" index undent
+.nr fs 0.2v \" footnote prespacing
+.nr es 0.5v \" equation pre/postspacing
+.if \n(es<\n(.V .nr es \n(.V
+.wh 0 @h \" set header
+.nr $l \n(.lu \" line length (of column)
+.nr _L \n(.lu \" line length of page
+.nr $c 1 \" current column number
+.nr $f 1 \" footnote number
+.ds * \\*{\\n($f\\*}\k*\" \" footnote mark
+.nr $d 1 \" delayed text number
+.ds # [\\n($d]\" \" delayed text mark
+.nr _M 1 \" encoded document segment type
+.ds lq \(lq\" \" left quote
+.ds rq \(rq\" \" right quote
+.em @z
+.
+.\" Set line length and get .lt side effect.
+.if t .ll \n(_Lu
+.if n .ll 6.0i
+.
+.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
+.
+.
+.ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
+.ds #v 0.6m
+.
+.\" \" accents
+.ds ' \h'0'\k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
+.ds ` \h'0'\k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
+.
+.\" \" umlaut
+.ds : \h'0'\k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
+.
+.\" \" circumflex and tilde
+.ds ^ \h'0'\k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
+.ds ~ \h'0'\k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
+.
+.\" \" cedilla and czech
+.ds , \h'0'\k_\h'-(\\n(.wu)',\h'|\\n_u'
+.ds v \h'0'\k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
+.
+.\" \" Norwegian A or angstrom
+.ds o \h'0'\k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\z\(de\v'0.4n'\h'|\\n_u'
+.
+.\" \" there exists, for all
+.ds qe \s-2\v'0.45m'\z\(em\v'-0.625m'\z\(em\v'-0.625m'\(em\v'0.8m'\s0\h'-0.1m'\v'-0.05m'\(br\v'0.05m'\h'0.1m'
+.ds qa \z\e\h'0.35m'\z\(sl\h'-0.33m'\v'-0.3m'\s-4\(em\s0\v'0.3m'\h'0.15m'
+.rm #h #v
+.
+.de @U
+.do @err the '\\$1' macro is not supported by this version of 'me'
+..
+.
+.de lo
+.@U lo
+..
+.
+.de th
+.@U th
+..
+.
+.de ac
+.@U ac
+..
+.
+.\" Local Variables:
+.\" mode: nroff
+.\" fill-column: 72
+.\" End:
+.\" vim: set filetype=nroff textwidth=72: