2276 lines
41 KiB
Text
2276 lines
41 KiB
Text
.\" groff implementation of me(7) package
|
|
.\"
|
|
.\" See groff_me(7).
|
|
.
|
|
.\" Copyright (c) 1988, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Copyright 1989-2024 Free Software Foundation, Inc.
|
|
.\"
|
|
.\" 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
|
|
.\"
|
|
.\" Prior to package load, set the register `@` to a value from 2 to
|
|
.\" 5 inclusive to produce debugging messages on the standard error
|
|
.\" stream. Higher numbers provide more detail.
|
|
.\"
|
|
.
|
|
.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 \
|
|
. @O -\\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 \
|
|
. @O +\\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
|
|
.do nr hm (v;\\$1)
|
|
.nr tm +\\n(hmu-\\n(_0u
|
|
.rr _0
|
|
..
|
|
.
|
|
.de m2 \" *** position two space
|
|
.do nr tm \\n(hmu+\\n(tpp+(v;\\$1)
|
|
..
|
|
.
|
|
.de m3 \" *** position three space
|
|
.do nr bm \\n(fmu+\\n(tpp+(v;\\$1)
|
|
..
|
|
.
|
|
.de m4 \" *** position four space
|
|
.nr _0 \\n(fmu
|
|
.do nr fm (v;\\$1)
|
|
.nr bm +\\n(fmu-\\n(_0u
|
|
..
|
|
.
|
|
.de sk \" *** leave a blank page (next page)
|
|
.if \\n(.$>0 \
|
|
. do @err ignoring argument(s) to '\\$0'
|
|
.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(.$ \
|
|
. do nr $i (n;\\$1)
|
|
.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 \
|
|
. do nr _0 (n;\\$2)
|
|
.@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
|
|
.if \\n(.$>0 \
|
|
. do @err ignoring argument(s) to '\\$0'
|
|
.\" 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
|
|
.if \\n(.$>0 \
|
|
. do @err ignoring argument(s) to '\\$0'
|
|
.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(.$ \
|
|
. do in +(n;\\$1)
|
|
.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'' \
|
|
. do nr $s (n;\\$1) \" 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 \
|
|
\{\
|
|
. ie \n(.g .ce \n(.R
|
|
. el .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
|
|
. ie \n(.g .ll 1000n \" XXX: \\n(.Ru-1n DoSes troff
|
|
. el .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
|
|
. ie \n(.g .ll \\n(.Ru-1n
|
|
. el .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
|
|
.do in (u;\\n(.l-\\n(g7>?0/2)
|
|
.do ne (u;\\$1)
|
|
.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
|
|
.ie \n(.g .ce \n(.R
|
|
.el .ce 10000
|
|
.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/subscripting
|
|
.
|
|
.\" *** 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:
|