summaryrefslogtreecommitdiffstats
path: root/contrib/groff/tmac
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2001-04-17 12:23:50 +0000
committerru <ru@FreeBSD.org>2001-04-17 12:23:50 +0000
commit3b5355d725800022c2c055a699326722a43b9dc2 (patch)
tree496e96972d2062817422e21a3cb29c8d258b2d22 /contrib/groff/tmac
parent0e0a0e6429c7113acf15c4c94bd5fe94c45f9e99 (diff)
downloadFreeBSD-src-3b5355d725800022c2c055a699326722a43b9dc2.zip
FreeBSD-src-3b5355d725800022c2c055a699326722a43b9dc2.tar.gz
Removed files not present in v1.17 import.
Diffstat (limited to 'contrib/groff/tmac')
-rw-r--r--contrib/groff/tmac/groff_markup.man319
-rw-r--r--contrib/groff/tmac/groff_mdoc.samples.man2925
-rw-r--r--contrib/groff/tmac/groff_msafer.man59
-rw-r--r--contrib/groff/tmac/me.man274
-rw-r--r--contrib/groff/tmac/mm.diff70
-rw-r--r--contrib/groff/tmac/msafer.man56
-rw-r--r--contrib/groff/tmac/tmac.X46
-rw-r--r--contrib/groff/tmac/tmac.Xps44
-rw-r--r--contrib/groff/tmac/tmac.a43
-rw-r--r--contrib/groff/tmac/tmac.an429
-rw-r--r--contrib/groff/tmac/tmac.andoc12
-rw-r--r--contrib/groff/tmac/tmac.arkup161
-rw-r--r--contrib/groff/tmac/tmac.doc3427
-rw-r--r--contrib/groff/tmac/tmac.dvi145
-rw-r--r--contrib/groff/tmac/tmac.e1661
-rw-r--r--contrib/groff/tmac/tmac.html60
-rw-r--r--contrib/groff/tmac/tmac.latin1101
-rw-r--r--contrib/groff/tmac/tmac.lbp13
-rw-r--r--contrib/groff/tmac/tmac.lj418
-rw-r--r--contrib/groff/tmac/tmac.man1
-rw-r--r--contrib/groff/tmac/tmac.mandoc1
-rw-r--r--contrib/groff/tmac/tmac.markup1
-rw-r--r--contrib/groff/tmac/tmac.mdoc1
-rw-r--r--contrib/groff/tmac/tmac.me1
-rw-r--r--contrib/groff/tmac/tmac.ms1
-rw-r--r--contrib/groff/tmac/tmac.pic10
-rw-r--r--contrib/groff/tmac/tmac.ps53
-rw-r--r--contrib/groff/tmac/tmac.psatk61
-rw-r--r--contrib/groff/tmac/tmac.psfig87
-rw-r--r--contrib/groff/tmac/tmac.psnew26
-rw-r--r--contrib/groff/tmac/tmac.psold60
-rw-r--r--contrib/groff/tmac/tmac.pspic50
-rw-r--r--contrib/groff/tmac/tmac.s1869
-rw-r--r--contrib/groff/tmac/tmac.safer13
-rw-r--r--contrib/groff/tmac/tmac.trace10
-rw-r--r--contrib/groff/tmac/tmac.tty48
-rw-r--r--contrib/groff/tmac/tmac.tty-char202
37 files changed, 0 insertions, 12318 deletions
diff --git a/contrib/groff/tmac/groff_markup.man b/contrib/groff/tmac/groff_markup.man
deleted file mode 100644
index 46233ce..0000000
--- a/contrib/groff/tmac/groff_markup.man
+++ /dev/null
@@ -1,319 +0,0 @@
-.TH GROFF_MARKUP @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.\" Copyright (C) 2000 Free Software Foundation, Inc.
-.\" Written by Gaius Mulley (gaius@glam.ac.uk)
-.\"
-.\" This file is part of groff.
-.\"
-.\" groff is free software; you can redistribute it and/or modify it under
-.\" the terms of the GNU General Public License as published by the Free
-.\" Software Foundation; either version 2, or (at your option) any later
-.\" version.
-.\"
-.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
-.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
-.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-.\" for more details.
-.\"
-.\" You should have received a copy of the GNU General Public License along
-.\" with groff; see the file COPYING. If not, write to the Free Software
-.\" Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-.\"
-.\" user level guide to using the -markup macroset
-.\"
-.do mso tmac.arkup
-.LINE
-.SH NAME
-groff_markup \- groff macros for authoring web pages
-.LINE
-.SH SYNOPSIS
-.B "groff \-markup"
-[ options ]
-file ...
-.SH DESCRIPTION
-This manual page describes the GNU \-markup macros, which is part of the
-groff document formatting system.
-The manual page is very a basic guide, and the html device driver
-.RB ( grohtml )
-is still very alpha.
-It has been included into the distribution so that a lot of people have a
-chance to test it.
-Note that this macro file will be automatically called (via the
-\fCtroffrc\fP file) if you use \fC-Thtml\fP.
-.PP
-To see the hyperlinks in action, please format this man page with the
-.B grohtml
-device.
-.PP
-Here is a summary of the functions found in this macro set.
-.SH SYNPOSIS
-.ta 2iL
-\&.HTMLINDEX determine automatic link cut off
-.br
- point for sections/headers
-.br
-\&.BODYCOLOR specify colours on a web page
-.br
-\&.BACKGROUND specify background image
-.br
-\&.URL create a url using two parameters
-.br
-\&.MAILTO create a html email address
-.br
-\&.FTP create an ftp reference
-.br
-\&.IMAGE include an image file
-.br
-\&.HTML pass an html raw request to the
-.br
- device driver
-.br
-\&.TAG generate an html name tag from $1
-.br
-.\"\&.CDFTP optionally create two different links
-.\".br
-.\" depending on hostname
-.\".br
-\&.LINE create a full width horizontal rule
-.br
-.PP
-Output of the
-.IR pic ,
-.IR eqn ,
-.IR refer ,
-and
-.I tbl
-preprocessors is acceptable as input.
-.SH REQUESTS
-.TP
-.B HTMLINDEX
-determines the cut off point for automatic link generation to headings.
-By default all headings found in a troff document have links created to them
-at the top of the html web page.
-It maybe that many of the lower heading levels do not require links.
-Alternatively some web pages may not need any heading links at all, in which
-case:
-.sp
-.nf
-\fC\&.HTMLINDEX 0\fP
-.fi
-.sp
-will tell
-.B grohtml
-not to generate links.
-An \fCHTMLINDEX\fP of 2 will mean that a heading
-.sp
-.B "1.1.1 Some Title"
-.sp
-will not be included in the links either as it is said to have a heading
-level of three.
-.TP
-.B BODYCOLOR
-takes five parameters: foreground, background, active hypertext link,
-hypertext link not yet visited, and visited hypertext link colour.
-.TP
-.B BACKGROUND
-the only parameter to this macro is the background image file.
-.TP
-.B URL
-generates
-.TAG URL
-a URL using either two or three arguments.
-$1 is the name of the link, $2 is the actual URL, and $3 is optional stuff
-to be printed immediately after $2.
-Here is how to encode
-.URL "homepage for groff" http://groff.ffii.org/ :
-.sp
-.nf
-\s-2\fC\&.URL "homepage for groff" http://groff.ffii.org/ :\fP\s+2
-.fi
-.sp
-If this is processed by a device other than \fC-Thtml\fP
-it appears as:
-homepage for groff \(lahttp://groff.ffii.org\(ra.
-The URL macro can be of any type; for example we can reference
-.URL "Eric Raymond's pic guide" pic.html
-by:
-.sp
-.nf
-\s-2\fC\&.URL "Eric Raymond's pic guide" pic.html\fP\s+2
-.fi
-.sp
-.TP
-.B MAILTO
-generates an email html reference.
-The first argument is mandatory as the email address.
-The optional second argument is the text you see in your browser, and
-an optional third argument is stuff printed immediately after the
-second argument.
-For example, the groff maintainers are
-.MAILTO wl@gnu.org "Werner Lemberg"
-and
-.MAILTO Ted.Harding@nessie.mcc.ac.uk "Ted Harding" .
-This is achieved by the following macros:
-.sp
-.nf
-\s-2\fC\&.MAILTO wl@gnu.org "Werner Lemberg"\fP
-.sp
-\fC\&.MAILTO Ted.Harding@nessie.mcc.ac.uk \\
-.br
-"Ted Harding" .\s+2\fP
-.fi
-.sp
-Note that all the urls actually are treated as consuming no textual space
-in groff.
-This could be considered as a bug since it causes some problems.
-To circumvent this, \fCtmac.arkup\fP inserts a zero-width character which
-expands to a harmless space (only if in HTML mode)
-.TP
-.B FTP
-indicates that data can be obtained via ftp.
-The first argument is the browser text and the second is the url.
-A third argument, similar to the macros above, is intended for stuff printed
-immediately after the second argument.
-The second and the third parameter are optional.
-As an example, here the location of the
-.FTP "current groff development distribution" \
-ftp://ftp.ffii.org/pub/groff/devel/groff-current.tar.gz .
-The macro example above was specified by:
-.sp
-\s-2\fC\&.FTP "current groff development distribution" \\
-.br
-ftp://ftp.ffii.org/pub/groff/devel/groff-current.tar.gz .\fP\s+2
-.sp
-.TP
-.B IMAGE
-allows the document to include pictures.
-The first argument is the image file.
-The next two arguments are optional:
-Argument two is the width in pixels (default is 400 pixels if absent).
-The third argument is the height in pixels (default is the width value if
-absent).
-.sp
-.TP
-.B HTML
-all text after this macro is treated as raw html.
-If the document is processed \fIwithout\fP \fC-Thtml\fP then
-the macro is ignored.
-This macro is a building block for other higher level macros.
-.sp
-For example, the \fCBACKGROUND\fP macro is defined as:
-.nf
-\fC\&.de BACKGROUND
-\&. HTML <body background=\\$1>
-\&..
-\fP
-.fi
-.TP
-.B TAG
-generates an html name tag from its argument.
-This can then be referenced using the
-.URL URL #URL
-macro.
-As you can see, you must precede the tag name with `\fC#\fP' since it is
-a local reference.
-This link was achieved via placing a TAG in the URL description above;
-the source looks like this:
-.sp
-\s-2\fC\&.TP
-.br
-\&.B URL
-.br
-generates
-.br
-\&.TAG URL
-.br
-a URL using either two or three
-.br
-arguments.
-.br
-$1 is the name of the link, $2 is the actual URL
-.br
-\fP\s+2etc.
-.sp
-.\".TP
-.\".B CDFTP
-.\"takes four arguments.
-.\"Basically it is the FTP macro with optional local reference.
-.\"It was designed to allow the same groff source to be built on two different
-.\"machines and access the ftp data differently.
-.\"For example, on a web server you might wish for the web page to reference
-.\"a web site.
-.\"However, if you were producing a CDROM of your information you might wish
-.\"for the ftp data to be also stored on your CDROM and referenced as a file.
-.\"An example to get the current groff development distribution
-.\".CDFTP merlin "click here." \
-.\"ftp://ftp.ffii.org/pub/groff/devel/groff-current.tar.gz \
-.\"../../groff.tar.gz
-.\"The source for this CDFTP invocation is
-.\".sp
-.\"\fC\s-2\&.CDFTP merlin "click here." \
-.\"ftp://ftp.ffii.org/pub/groff/devel/groff-current.tar.gz \
-.\"../../groff.tar.gz\fP\s+2
-.\".sp
-.\"which means if the html is generated on machine \fCmerlin\fP
-.\"then generate a URL to \fC../../groff.tar.gz\fP.
-.\"Otherwise construct an FTP URL to
-.\"\fCftp://ftp.ffii.org/pub/groff/devel/groff-current.tar.gz\fP.
-.TP
-.B LINE
-generates a full width horizontal rule.
-Example:
-.sp
-\fC\s-2\&.LINE\fP\s+2
-.sp
-.SH
-SECTION HEADING LINKS
-.LP
-By default
-.B grohtml
-generates links to all section headings and places these at the top of the
-html document.
-.B Grohtml
-has to guess what a section heading looks like \(em remember that all
-.B grohtml
-actually sees is a device independent language telling it where to place
-text, draw lines, change font sizes and faces etc.
-It believes a section heading to be a line of bold text which starts at the
-left most margin.
-Consequently it may misinterpret.
-Users can turn off all heading and title guessing by giving invoking groff
-with \fCgroff -P-g\fP.
-.SH
-LIMITATIONS OF GROHTML
-.LP
-Although basic text can be translated in a straightforward fashion there are
-some areas where
-.B grohtml
-has to try and guess text relationship.
-In particular, whenever
-.B grohtml
-encounters text tables and indented paragraphs or two column mode it will
-try and utilize the html table construct to preserve columns.
-.B Grohtml
-also attempts to work out which lines should be automatically formatted by
-the browser.
-Ultimately in trying to make reasonable guesses most of the time it will
-make mistakes.
-Hopefully these mistakes will happen less and less as we get bug reports
-and patches :-).
-.PP
-Tbl, pic, eqn's are also generated using images which may be
-considered a limitation.
-.SH FILES
-@MACRODIR@/tmac.arkup
-.SH "SEE ALSO"
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@)
-.BR grohtml (@MAN1EXT@),
-.LP
-.SH AUTHOR
-.B Grohtml
-is written by
-.MAILTO gaius@glam.ac.uk "Gaius Mulley"
-.LINE
-.SH BUGS
-Report bugs to the
-.MAILTO bug-groff@gnu.org "Groff Bug Mailing List" .
-Include a complete, self-contained example that will allow the bug to be
-reproduced, and say which version of groff you are using.
-.LINE
diff --git a/contrib/groff/tmac/groff_mdoc.samples.man b/contrib/groff/tmac/groff_mdoc.samples.man
deleted file mode 100644
index cdbbc21..0000000
--- a/contrib/groff/tmac/groff_mdoc.samples.man
+++ /dev/null
@@ -1,2925 +0,0 @@
-.\" $NetBSD: mdoc.samples.7,v 1.21 1999/08/23 21:54:20 ross Exp $
-.\"
-.\" Copyright (c) 1990, 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. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 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.
-.\"
-.\" @(#)mdoc.samples.7 8.2 (Berkeley) 12/30/93
-.\"
-.\" This tutorial sampler invokes every macro in the package several
-.\" times and is guaranteed to give a worst case performance
-.\" for an already extremely slow package.
-.\"
-.Dd November 24, 1997
-.Os
-.Dt MDOC.SAMPLES 7
-.Sh NAME
-.Nm mdoc.samples
-.Nd tutorial sampler for writing
-.Bx
-manuals with
-.Nm \-mdoc
-.Sh SYNOPSIS
-.Nm man mdoc.samples
-.Sh DESCRIPTION
-A tutorial sampler for writing
-.Bx
-manual pages with the
-.Nm \-mdoc
-macro package, a
-.Em content Ns \-based
-and
-.Em domain Ns \-based
-formatting
-package for
-.Xr troff 1 .
-Its predecessor, the
-.Xr \-man 7
-package,
-addressed page layout leaving the
-manipulation of fonts and other
-typesetting details to the individual author.
-In
-.Nm \-mdoc ,
-page layout macros
-make up the
-.Em "page structure domain"
-which consists of macros for titles, section headers, displays
-and lists. Essentially items which affect the physical position
-of text on a formatted page.
-In addition to the page structure domain, there are two more domains,
-the manual domain and the general text domain.
-The general text domain is defined as macros which
-perform tasks such as quoting or emphasizing pieces of text.
-The manual domain is defined as macros that are a subset of the
-day to day informal language used to describe commands, routines
-and related
-.Bx
-files.
-Macros in the manual domain handle
-command names, command line arguments and options, function names,
-function parameters, pathnames, variables, cross
-references to other manual pages, and so on.
-These domain
-items have value
-for both the author and the future user of the manual page.
-It is hoped the consistency gained
-across the manual set will provide easier
-translation to future documentation tools.
-.Pp
-Throughout the
-.Ux
-manual pages, a manual entry
-is simply referred
-to as a man page, regardless of actual length and without
-sexist intention.
-.Sh GETTING STARTED
-Since a tutorial document is normally read when a person
-desires to use the material immediately, the assumption has
-been made that the user of this document may be impatient.
-The material presented in the remained of this document is
-outlined as follows:
-.Bl -enum -offset indent
-.It
-.Tn "TROFF IDIOSYNCRASIES"
-.Bl -tag -width flag -compact -offset indent
-.It "Macro Usage" .
-.It "Passing Space Characters in an Argument" .
-.It "Trailing Blank Space Characters (a warning)" .
-.It "Escaping Special Characters" .
-.El
-.It
-.Tn "THE ANATOMY OF A MAN PAGE"
-.Bl -tag -width flag -compact -offset indent
-.It "A manual page template" .
-.El
-.It
-.Tn "INTRODUCTION OF TITLE MACROS" .
-.It
-.Tn "INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS" .
-.Bl -tag -width flag -compact -offset indent
-.It "What's in a name..." .
-.It "General Syntax" .
-.El
-.It
-.Tn "MANUAL DOMAIN"
-.Bl -tag -width flag -compact -offset indent
-.It "Addresses" .
-.It "Arguments" .
-.It "Configuration Declarations (section four only)" .
-.It "Command Modifier" .
-.It "Defined Variables" .
-.It "Errno's (Section two only)" .
-.It "Environment Variables" .
-.It "Function Argument" .
-.It "Function Declaration" .
-.It "Flags" .
-.It "Functions (library routines)" .
-.It "Function Types" .
-.\" .It "Header File (including source code)" .
-.It "Interactive Commands" .
-.It "Literals" .
-.It "Names" .
-.It "Options" .
-.It "Pathnames" .
-.It "Variables" .
-.It "Cross References" .
-.El
-.It
-.Tn "GENERAL TEXT DOMAIN"
-.Bl -tag -width flag -compact -offset indent
-.It "AT&T Macro" .
-.It "BSD Macro" .
-.It "UNIX Macro" .
-.It "Emphasis Macro" .
-.It "Enclosure/Quoting Macros"
-.Bl -tag -width flag -compact -offset indent
-.It "Angle Bracket Quote/Enclosure" .
-.It "Bracket Quotes/Enclosure" .
-.It "Double Quote macro/Enclosure" .
-.It "Parenthesis Quote/Enclosure" .
-.It "Single Quotes/Enclosure" .
-.It "Prefix Macro" .
-.El
-.It "Extended Arguments" .
-.It "No\-Op or Normal Text Macro" .
-.It "No Space Macro" .
-.It "Section Cross References" .
-.It "Symbolic Macro" .
-.It "References and Citations" .
-.It "Trade Names (Acronyms and Type Names)" .
-.El
-.It
-.Tn "PAGE STRUCTURE DOMAIN"
-.Bl -tag -width flag -compact -offset indent
-.It "Section Headers" .
-.It "Paragraphs and Line Spacing" .
-.It "Keeps" .
-.It "Displays" .
-.It "Lists and Columns" .
-.El
-.It
-.Tn "PREDEFINED STRINGS"
-.It
-.Tn "DIAGNOSTICS"
-.It
-.Tn "FORMATTING WITH GROFF, TROFF AND NROFF"
-.It
-.Tn "BUGS"
-.El
-.ne 7
-.Sh TROFF IDIOSYNCRASIES
-The
-.Nm \-mdoc
-package attempts to simplify the process of writing a man page.
-Theoretically, one should not have to learn the dirty details of
-.Xr troff 1
-to use
-.Nm \-mdoc ;
-however, there are a few
-limitations which are unavoidable and best gotten out
-of the way.
-And, too, be forewarned, this package is
-.Em not
-fast.
-.Ss Macro Usage
-As in
-.Xr troff 1 ,
-a macro is called by placing a
-.Ql \&\.
-(dot character)
-at the beginning of
-a line followed by the two character name for the macro.
-Arguments may follow the macro separated by spaces.
-It is the dot character at the beginning of the line which causes
-.Xr troff 1
-to interpret the next two characters as a macro name.
-To place a
-.Ql \&\.
-(dot character)
-at the beginning of a line in some context other than
-a macro invocation, precede the
-.Ql \&\.
-(dot) with the
-.Ql \e&
-escape sequence.
-The
-.Ql \e&
-translates literally to a zero width space, and is never displayed in the
-output.
-.Pp
-In general,
-.Xr troff 1
-macros accept up to nine arguments, any
-extra arguments are ignored.
-Most macros in
-.Nm \-mdoc
-accept nine arguments and,
-in limited cases, arguments may be continued or extended
-on the
-next line (See
-.Sx Extended Arguments ) .
-A few macros handle quoted arguments (see
-.Sx Passing Space Characters in an Argument
-below).
-.Pp
-Most of the
-.Nm \-mdoc
-general text domain and manual domain macros are special
-in that their argument lists are
-.Em parsed
-for callable macro names.
-This means an argument on the argument list which matches
-a general text or manual domain macro name and is determined
-to be callable will be executed
-or called when it is processed.
-In this case
-the argument, although the name of a macro,
-is not preceded by a
-.Ql \&\.
-(dot).
-It is in this manner that many macros are nested; for
-example
-the option macro,
-.Ql \&.Op ,
-may
-.Em call
-the flag and argument macros,
-.Ql \&Fl
-and
-.Ql \&Ar ,
-to specify an optional flag with an argument:
-.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
-.It Op Fl s Ar bytes
-is produced by
-.Li \&.Op \&Fl s \&Ar bytes
-.El
-.Pp
-To prevent a two character
-string from being interpreted as a macro name, precede
-the string with the
-escape sequence
-.Ql \e& :
-.Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
-.It Op \&Fl s \&Ar bytes
-is produced by
-.Li \&.Op \e&Fl s \e&Ar bytes
-.El
-.Pp
-Here the strings
-.Ql \&Fl
-and
-.Ql \&Ar
-are not interpreted as macros.
-Macros whose argument lists are parsed for callable arguments
-are referred to
-as parsed and macros which may be called from an argument
-list are referred to as callable
-throughout this document and in the companion quick reference
-manual
-.Xr mdoc 7 .
-This is a technical
-.Em faux pas
-as almost all of the macros in
-.Nm \-mdoc
-are parsed, but as it was cumbersome to constantly refer to macros
-as being callable and being able to call other macros,
-the term parsed has been used.
-.Ss Passing Space Characters in an Argument
-Sometimes it is desirable to give as one argument a string
-containing one or more blank space characters.
-This may be necessary
-to defeat the nine argument limit or to specify arguments to macros
-which expect particular arrangement of items in the argument list.
-For example,
-the function macro
-.Ql \&.Fn
-expects the first argument to be the name of a function and any
-remaining arguments to be function parameters.
-As
-.Tn "ANSI C"
-stipulates the declaration of function parameters in the
-parenthesized parameter list, each parameter is guaranteed
-to be at minimum a two word string.
-For example,
-.Fa int foo .
-.Pp
-There are two possible ways to pass an argument which contains
-an embedded space.
-.Em Implementation note :
-Unfortunately, the most convenient way
-of passing spaces in between quotes by reassigning individual
-arguments before parsing was fairly expensive speed wise
-and space wise to implement in all the macros for
-.Tn AT&T
-.Xr troff .
-It is not expensive for
-.Xr groff
-but for the sake of portability, has been limited
-to the following macros which need
-it the most:
-.Pp
-.Bl -tag -width 4n -offset indent -compact
-.It Li \&Cd
-Configuration declaration (section 4
-.Sx SYNOPSIS )
-.It Li \&Bl
-Begin list (for the width specifier).
-.It Li \&Em
-Emphasized text.
-.It Li \&Fn
-Functions (sections two and four).
-.It Li \&It
-List items.
-.It Li \&Li
-Literal text.
-.It Li \&Sy
-Symbolic text.
-.It Li \&%B
-Book titles.
-.It Li \&%J
-Journal names.
-.It Li \&%O
-Optional notes for a reference.
-.It Li \&%R
-Report title (in a reference).
-.It Li \&%T
-Title of article in a book or journal.
-.El
-.Pp
-One way of passing a string
-containing blank spaces is to use the hard or unpaddable space character
-.Ql \e\ ,
-that is, a blank space preceded by the escape character
-.Ql \e .
-This method may be used with any macro but has the side effect
-of interfering with the adjustment of text
-over the length of a line.
-.Xr Troff
-sees the hard space as if it were any other printable character and
-cannot split the string into blank or newline separated pieces as one
-would expect.
-The method is useful for strings which are not expected
-to overlap a line boundary.
-For example:
-.Bl -tag -width "fetch(char *str)" -offset indent
-.It Fn fetch char\ *str
-is created by
-.Ql \&.Fn fetch char\e *str
-.It Fn fetch "char *str"
-can also be created by
-.Ql \&.Fn fetch "\\*q*char *str\\*q"
-.El
-.Pp
-If the
-.Ql \e
-or quotes
-were omitted,
-.Ql \&.Fn
-would see three arguments and
-the result would be:
-.Pp
-.Dl Fn fetch char *str
-.Pp
-For an example of what happens when the parameter list overlaps
-a newline boundary, see the
-.Sx BUGS
-section.
-.Ss Trailing Blank Space Characters
-.Xr Troff
-can be confused by blank space characters at the end of a line.
-It
-is a wise preventive measure to globally remove all blank spaces
-from <blank-space><end-of-line> character sequences.
-Should the need
-arise to force a blank character at the end of a line,
-it may be forced with an unpaddable space and the
-.Ql \e&
-escape character.
-For example,
-.Ql string\e\ \e& .
-.Ss Escaping Special Characters
-Special characters
-like the newline character
-.Ql \en ,
-are handled by replacing the
-.Ql \e
-with
-.Ql \ee
-(e.g.
-.Ql \een )
-to preserve
-the backslash.
-.Sh THE ANATOMY OF A MAN PAGE
-The body of a man page is easily constructed from a basic
-template found in the file:
-.Bd -literal -offset indent
-\&.\e" /usr/share/misc/mdoc.template:
-\&.\e" The following six lines are required.
-\&.Dd Month day, year
-\&.Os OPERATING_SYSTEM [version/release]
-\&.Dt DOCUMENT_TITLE [section number] [volume]
-\&.Sh NAME
-\&.Sh SYNOPSIS
-\&.Sh DESCRIPTION
-\&.\e" The following requests should be uncommented and
-\&.\e" used where appropriate. This next request is
-\&.\e" for sections 2 and 3 function return values only.
-\&.\e" .Sh RETURN VALUES
-\&.\e" This next request is for sections 1, 6, 7 & 8 only
-\&.\e" .Sh ENVIRONMENT
-\&.\e" .Sh FILES
-\&.\e" .Sh EXAMPLES
-\&.\e" This next request is for sections 1, 6, 7 & 8 only
-\&.\e" (command return values (to shell) and
-\&.\e" fprintf/stderr type diagnostics)
-\&.\e" .Sh DIAGNOSTICS
-\&.\e" The next request is for sections 2 and 3 error
-\&.\e" and signal handling only.
-\&.\e" .Sh ERRORS
-\&.\e" .Sh SEE ALSO
-\&.\e" .Sh STANDARDS
-\&.\e" .Sh HISTORY
-\&.\e" .Sh AUTHORS
-\&.\e" .Sh BUGS
-.Ed
-.Pp
-The first items in the template are the macros
-.Pq Li \&.Dd , \&.Os , \&.Dt ;
-the document date,
-the operating system the man page or subject source is developed
-or modified for,
-and the man page title
-.Pq Em in upper case
-along with the section of the manual the page
-belongs in.
-These macros identify the page,
-and are discussed below in
-.Sx TITLE MACROS .
-.Pp
-The remaining items in the template are section headers
-.Pq Li \&.Sh ;
-of which
-.Sx NAME ,
-.Sx SYNOPSIS
-and
-.Sx DESCRIPTION
-are mandatory.
-The
-headers are
-discussed in
-.Sx PAGE STRUCTURE DOMAIN ,
-after
-presentation of
-.Sx MANUAL DOMAIN .
-Several content macros are used to demonstrate page layout macros;
-reading about content macros before page layout macros is
-recommended.
-.Sh TITLE MACROS
-The title macros are the first portion of the page structure
-domain, but are presented first and separate for someone who
-wishes to start writing a man page yesterday.
-Three header macros designate the document title or manual page title,
-the operating system,
-and the date of authorship.
-These macros are one called once at the very beginning of the document
-and are used to construct the headers and footers only.
-.Bl -tag -width 6n
-.It Li \&.Dt DOCUMENT_TITLE section# [volume]
-The document title is the
-subject of the man page and must be in
-.Tn CAPITALS
-due to troff
-limitations.
-The section number may be 1,\ ...,\ 9,
-and if it is specified,
-the volume title may be omitted.
-A volume title may be arbitrary or one of the following:
-.\" .Cl
-.\" USD UNIX User's Supplementary Documents
-.\" .Cl
-.\" PS1 UNIX Programmer's Supplementary Documents
-.Pp
-.Bl -column SMM -offset indent -compact
-.It Li AMD NetBSD Ancestral Manual Documents
-.It Li SMM NetBSD System Manager's Manual
-.It Li URM NetBSD Reference Manual
-.It Li PRM NetBSD Programmer's Manual
-.It Li KM NetBSD Kernel Manual
-.El
-.Pp
-The default volume labeling is
-.Li URM
-for sections 1, 6, and 7;
-.Li SMM
-for section 8;
-.Li PRM
-for sections 2, 3, 4, and 5;
-.Li KM
-for section 9.
-.\" .Cl
-.\" MMI UNIX Manual Master Index
-.\" .Cl
-.\" CON UNIX Contributed Software Manual
-.\" .Cl
-.\" LOC UNIX Local Manual
-.It Li \&.Os operating_system release#
-The name of the operating system
-should be the common acronym, e.g.
-.Tn BSD
-or
-.Tn ATT .
-The release should be the standard release
-nomenclature for the system specified, e.g. 4.3, 4.3+Tahoe, V.3,
-V.4.
-Unrecognized arguments are displayed as given in the page footer.
-For instance, a typical footer might be:
-.Pp
-.Dl \&.Os BSD 4.3
-.Pp
-or for a locally produced set
-.Pp
-.Dl \&.Os CS Department
-.Pp
-The Berkeley default,
-.Ql \&.Os
-without an argument, has been defined as
-.Nx 1.4
-in the site specific file
-.Pa /usr/share/tmac/tmac.doc-common .
-Note, if the
-.Ql \&.Os
-macro is not present, the bottom left corner of the page
-will be ugly.
-.It Li \&.Dd month day, year
-The date should be written formally:
-.Pp
-.ne 5
-.Dl January 25, 1989
-.sp
-Note that the date must not be placed in quotes!
-.El
-.Sh MANUAL DOMAIN
-.Ss What's in a name...
-The manual domain macro names are derived from the day to day
-informal language used to describe commands, subroutines and related
-files.
-Slightly
-different variations of this language are used to describe
-the three different aspects of writing a man page.
-First, there is the description of
-.Nm \-mdoc
-macro request usage.
-Second is the description of a
-.Ux
-command
-.Em with
-.Nm \-mdoc
-macros and third,
-the
-description of a command to a user in the verbal sense;
-that is, discussion of a command in the text of a man page.
-.Pp
-In the first case,
-.Xr troff 1
-macros are themselves a type of command;
-the general syntax for a troff command is:
-.Bd -filled -offset indent
-\&.Va argument1 argument2 ... argument9
-.Ed
-.Pp
-The
-.Ql \&.Va
-is a macro command or request, and anything following it is an argument to
-be processed.
-In the second case,
-the description of a
-.Ux
-command using the content macros is a
-bit more involved;
-a typical
-.Sx SYNOPSIS
-command line might be displayed as:
-.Bd -filled -offset indent
-.Nm filter
-.Op Fl flag
-.Ar infile outfile
-.Ed
-.Pp
-Here,
-.Nm filter
-is the command name and the
-bracketed string
-.Fl flag
-is a
-.Em flag
-argument designated as optional by the option brackets.
-In
-.Nm \-mdoc
-terms,
-.Ar infile
-and
-.Ar outfile
-are
-called
-.Em arguments .
-The macros which formatted the above example:
-.Bd -literal -offset indent
-\&.Nm filter
-\&.Op \&Fl flag
-\&.Ar infile outfile
-.Ed
-.Pp
-In the third case, discussion of commands and command syntax
-includes both examples above, but may add more detail.
-The
-arguments
-.Ar infile
-and
-.Ar outfile
-from the example above might be referred to as
-.Em operands
-or
-.Em file arguments .
-Some command line argument lists are quite long:
-.Bl -tag -width make -offset indent
-.It Nm make
-.Op Fl eiknqrstv
-.Op Fl D Ar variable
-.Op Fl d Ar flags
-.Op Fl f Ar makefile
-.Bk -words
-.Op Fl I Ar directory
-.Ek
-.Op Fl j Ar max_jobs
-.Op Ar variable=value
-.Bk -words
-.Op Ar target ...
-.Ek
-.El
-.Pp
-Here one might talk about the command
-.Nm make
-and qualify the argument
-.Ar makefile ,
-as an argument to the flag,
-.Fl f ,
-or discuss the optional
-file
-operand
-.Ar target .
-In the verbal context, such detail can prevent confusion,
-however the
-.Nm \-mdoc
-package
-does not have a macro for an argument
-.Em to
-a flag.
-Instead the
-.Ql \&Ar
-argument macro is used for an operand or file argument like
-.Ar target
-as well as an argument to a flag like
-.Ar variable .
-The make command line was produced from:
-.Bd -literal -offset indent
-\&.Nm make
-\&.Op Fl eiknqrstv
-\&.Op Fl D Ar variable
-\&.Op Fl d Ar flags
-\&.Op Fl f Ar makefile
-\&.Op Fl I Ar directory
-\&.Op Fl j Ar max_jobs
-\&.Op Ar variable=value
-\&.Bk -words
-\&.Op Ar target ...
-\&.Ek
-.Ed
-.Pp
-The
-.Ql \&.Bk
-and
-.Ql \&.Ek
-macros are explained in
-.Sx Keeps .
-.Ss General Syntax
-The manual domain and general text domain macros share a similar
-syntax with a few minor deviations:
-.Ql \&.Ar ,
-.Ql \&.Fl ,
-.Ql \&.Nm ,
-and
-.Ql \&.Pa
-differ only when called without arguments;
-.Ql \&.Fn
-and
-.Ql \&.Xr
-impose an order on their argument lists
-and the
-.Ql \&.Op
-and
-.Ql \&.Fn
-macros
-have nesting limitations.
-All content macros
-are capable of recognizing and properly handling punctuation,
-provided each punctuation character is separated by a leading space.
-If an request is given:
-.Pp
-.Dl \&.Li sptr, ptr),
-.Pp
-The result is:
-.Pp
-.Dl Li sptr, ptr),
-.Pp
-The punctuation is not recognized and all is output in the
-literal font. If the punctuation is separated by a leading
-white space:
-.Pp
-.Dl \&.Li "sptr , ptr ) ,"
-.Pp
-The result is:
-.Pp
-.Dl Li sptr , ptr ) ,
-.Pp
-The punctuation is now recognized and is output in the
-default font distinguishing it from the strings in literal font.
-.Pp
-To remove the special meaning from a punctuation character
-escape it with
-.Ql \e& .
-.Xr Troff
-is limited as a macro language, and has difficulty
-when presented with a string containing
-a member of the mathematical, logical or
-quotation set:
-.Bd -literal -offset indent-two
-\&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
-.Ed
-.Pp
-The problem is that
-.Xr troff
-may assume it is supposed to actually perform the operation
-or evaluation suggested by the characters. To prevent
-the accidental evaluation of these characters,
-escape them with
-.Ql \e& .
-Typical syntax is shown in the first content macro displayed
-below,
-.Ql \&.Ad .
-.Ss Address Macro
-The address macro identifies an address construct
-of the form addr1[,addr2[,addr3]].
-.Pp
-.Dl Usage: .Ad address ... \*(Pu
-.Bl -tag -width ".Ad f1 , f2 , f3 :" -compact -offset 14n
-.It Li \&.Ad addr1
-.Ad addr1
-.It Li \&.Ad addr1\ .
-.Ad addr1 .
-.It Li \&.Ad addr1\ , file2
-.Ad addr1 , file2
-.It Li \&.Ad f1\ , f2\ , f3\ :
-.Ad f1 , f2 , f3 :
-.It Li \&.Ad addr\ )\ )\ ,
-.Ad addr ) ) ,
-.El
-.Pp
-It is an error to call
-.Li \&.Ad
-without arguments.
-.Li \&.Ad
-is callable by other macros and is parsed.
-.Ss Argument Macro
-The
-.Li \&.Ar
-argument macro may be used whenever
-a command line argument is referenced.
-.Pp
-.Dl Usage: .Ar argument ... \*(Pu
-.Bl -tag -width ".Ar file1 file2" -compact -offset 15n
-.It Li \&.Ar
-.Ar
-.It Li \&.Ar file1
-.Ar file1
-.It Li \&.Ar file1\ .
-.Ar file1 .
-.It Li \&.Ar file1 file2
-.Ar file1 file2
-.It Li \&.Ar f1 f2 f3\ :
-.Ar f1 f2 f3 :
-.It Li \&.Ar file\ )\ )\ ,
-.Ar file ) ) ,
-.El
-.Pp
-If
-.Li \&.Ar
-is called without arguments
-.Ql Ar
-is assumed.
-The
-.Li \&.Ar
-macro is parsed and is callable.
-.Ss Configuration Declaration (section four only)
-The
-.Ql \&.Cd
-macro is used to demonstrate a
-.Xr config 8
-declaration for a device interface in a section four manual.
-This macro accepts quoted arguments (double quotes only).
-.Pp
-.Bl -tag -width "device le0 at scode?" -offset indent
-.It Cd "device le0 at scode?"
-produced by:
-.Ql ".Cd device le0 at scode?" .
-.El
-.Ss Command Modifier
-The command modifier is identical to the
-.Ql \&.Fl
-(flag) command with the exception
-the
-.Ql \&.Cm
-macro does not assert a dash
-in front of every argument.
-Traditionally flags are marked by the
-preceding dash, some commands or subsets of commands do not use them.
-Command modifiers may also be specified in conjunction with interactive
-commands such as editor commands.
-See
-.Sx Flags .
-.Ss Defined Variables
-A variable which is defined in an include file is specified
-by the macro
-.Ql \&.Dv .
-.Pp
-.Dl Usage: .Dv defined_variable ... \*(Pu
-.Bl -tag -width ".Dv MAXHOSTNAMELEN" -compact -offset 14n
-.It Li ".Dv MAXHOSTNAMELEN"
-.Dv MAXHOSTNAMELEN
-.It Li ".Dv TIOCGPGRP )"
-.Dv TIOCGPGRP )
-.El
-.Pp
-It is an error to call
-.Ql \&.Dv
-without arguments.
-.Ql \&.Dv
-is parsed and is callable.
-.Ss Errno's (Section two only)
-The
-.Ql \&.Er
-errno macro specifies the error return value
-for section two library routines.
-The second example
-below shows
-.Ql \&.Er
-used with the
-.Ql \&.Bq
-general text domain macro, as it would be used in
-a section two manual page.
-.Pp
-.Dl Usage: .Er ERRNOTYPE ... \*(Pu
-.Bl -tag -width ".Bq Er ENOTDIR" -compact -offset 14n
-.It Li \&.Er ENOENT
-.Er ENOENT
-.It Li \&.Er ENOENT\ )\ ;
-.Er ENOENT ) ;
-.It Li \&.Bq \&Er ENOTDIR
-.Bq Er ENOTDIR
-.El
-.Pp
-It is an error to call
-.Ql \&.Er
-without arguments.
-The
-.Ql \&.Er
-macro is parsed and is callable.
-.Ss Environment Variables
-The
-.Ql \&.Ev
-macro specifies an environment variable.
-.Pp
-.Dl Usage: .Ev argument ... \*(Pu
-.Bl -tag -width ".Ev PRINTER ) ) ," -compact -offset 14n
-.It Li \&.Ev DISPLAY
-.Ev DISPLAY
-.It Li \&.Ev PATH\ .
-.Ev PATH .
-.It Li \&.Ev PRINTER\ )\ )\ ,
-.Ev PRINTER ) ) ,
-.El
-.Pp
-It is an error to call
-.Ql \&.Ev
-without arguments.
-The
-.Ql \&.Ev
-macro is parsed and is callable.
-.Ss Function Argument
-The
-.Ql \&.Fa
-macro is used to refer to function arguments (parameters)
-outside of the
-.Sx SYNOPSIS
-section of the manual or inside
-the
-.Sx SYNOPSIS
-section should a parameter list be too
-long for the
-.Ql \&.Fn
-macro and the enclosure macros
-.Ql \&.Fo
-and
-.Ql \&.Fc
-must be used.
-.Ql \&.Fa
-may also be used to refer to structure members.
-.Pp
-.Dl Usage: .Fa function_argument ... \*(Pu
-.Bl -tag -width ".Fa d_namlen\ )\ )\ ," -compact -offset 14n
-.It Li \&.Fa d_namlen\ )\ )\ ,
-.Fa d_namlen ) ) ,
-.It Li \&.Fa iov_len
-.Fa iov_len
-.El
-.Pp
-It is an error to call
-.Ql \&.Fa
-without arguments.
-.Ql \&.Fa
-is parsed and is callable.
-.Ss Function Declaration
-The
-.Ql \&.Fd
-macro is used in the
-.Sx SYNOPSIS
-section with section two or three
-functions.
-The
-.Ql \&.Fd
-macro does not call other macros and is not callable by other
-macros.
-.Pp
-.Dl Usage: .Fd include_file (or defined variable)
-.Pp
-In the
-.Sx SYNOPSIS
-section a
-.Ql \&.Fd
-request causes a line break if a function has already been presented
-and a break has not occurred.
-This leaves a nice vertical space
-in between the previous function call and the declaration for the
-next function.
-.Ss Flags
-The
-.Ql \&.Fl
-macro handles command line flags.
-It prepends
-a dash,
-.Ql \- ,
-to the flag.
-For interactive command flags, which
-are not prepended with a dash, the
-.Ql \&.Cm
-(command modifier)
-macro is identical, but without the dash.
-.Pp
-.Dl Usage: .Fl argument ... \*(Pu
-.Bl -tag -width ".Fl \-s \-t \-v" -compact -offset 14n
-.It Li \&.Fl
-.Fl
-.It Li \&.Fl cfv
-.Fl cfv
-.It Li \&.Fl cfv\ .
-.Fl cfv .
-.It Li \&.Fl s v t
-.Fl s v t
-.It Li \&.Fl -\ ,
-.Fl - ,
-.It Li \&.Fl xyz\ )\ ,
-.Fl xyz ) ,
-.El
-.Pp
-The
-.Ql \&.Fl
-macro without any arguments results
-in a dash representing stdin/stdout.
-Note that giving
-.Ql \&.Fl
-a single dash, will result in two dashes.
-The
-.Ql \&.Fl
-macro is parsed and is callable.
-.Ss Functions (library routines)
-The .Fn macro is modeled on ANSI C conventions.
-.Bd -literal
-Usage: .Fn [type] function [[type] parameters ... \*(Pu]
-.Ed
-.Bl -tag -width ".Fn .int align. .const * char *sptrsxx" -compact
-.It Li "\&.Fn getchar"
-.Fn getchar
-.It Li "\&.Fn strlen ) ,"
-.Fn strlen ) ,
-.It Li \&.Fn "\\*qint align\\*q" "\\*qconst * char *sptrs\\*q" ,
-.Fn "int align" "const * char *sptrs" ,
-.El
-.Pp
-It is an error to call
-.Ql \&.Fn
-without any arguments.
-The
-.Ql \&.Fn
-macro
-is parsed and is callable,
-note that any call to another macro signals the end of
-the
-.Ql \&.Fn
-call (it will close-parenthesis at that point).
-.Pp
-For functions that have more than eight parameters (and this
-is rare), the
-macros
-.Ql \&.Fo
-(function open)
-and
-.Ql \&.Fc
-(function close)
-may be used with
-.Ql \&.Fa
-(function argument)
-to get around the limitation. For example:
-.Bd -literal -offset indent
-\&.Fo "int res_mkquery"
-\&.Fa "int op"
-\&.Fa "char *dname"
-\&.Fa "int class"
-\&.Fa "int type"
-\&.Fa "char *data"
-\&.Fa "int datalen"
-\&.Fa "struct rrec *newrr"
-\&.Fa "char *buf"
-\&.Fa "int buflen"
-\&.Fc
-.Ed
-.Pp
-Produces:
-.Bd -filled -offset indent
-.Fo "int res_mkquery"
-.Fa "int op"
-.Fa "char *dname"
-.Fa "int class"
-.Fa "int type"
-.Fa "char *data"
-.Fa "int datalen"
-.Fa "struct rrec *newrr"
-.Fa "char *buf"
-.Fa "int buflen"
-.Fc
-.Ed
-.Pp
-The
-.Ql \&.Fo
-and
-.Ql \&.Fc
-macros are parsed and are callable.
-In the
-.Sx SYNOPSIS
-section, the function will always begin at
-the beginning of line.
-If there is more than one function
-presented in the
-.Sx SYNOPSIS
-section and a function type has not been
-given, a line break will occur, leaving a nice vertical space
-between the current function name and the one prior.
-At the moment,
-.Ql \&.Fn
-does not check its word boundaries
-against troff line lengths and may split across a newline
-ungracefully.
-This will be fixed in the near future.
-.Ss Function Type
-This macro is intended for the
-.Sx SYNOPSIS
-section.
-It may be used
-anywhere else in the man page without problems, but its main purpose
-is to present the function type in kernel normal form for the
-.Sx SYNOPSIS
-of sections two and three
-(it causes a page break allowing the function name to appear
-on the next line).
-.Pp
-.Dl Usage: .Ft type ... \*(Pu
-.Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
-.It Li \&.Ft struct stat
-.Ft struct stat
-.El
-.Pp
-The
-.Ql \&.Ft
-request is not callable by other macros.
-.Ss Interactive Commands
-The
-.Ql \&.Ic
-macro designates an interactive or internal command.
-.Pp
-.Dl Usage: .Li argument ... \*(Pu
-.Bl -tag -width ".Ic setenv , unsetenvxx" -compact -offset 14n
-.It Li \&.Ic :wq
-.Ic :wq
-.It Li \&.Ic do while {...}
-.Ic do while {...}
-.It Li \&.Ic setenv\ , unsetenv
-.Ic setenv , unsetenv
-.El
-.Pp
-It is an error to call
-.Ql \&.Ic
-without arguments.
-The
-.Ql \&.Ic
-macro is parsed and is callable.
-.Ss Literals
-The
-.Ql \&.Li
-literal macro may be used for special characters,
-variable constants, anything which should be displayed as it
-would be typed.
-.Pp
-.Dl Usage: .Li argument ... \*(Pu
-.Bl -tag -width ".Li cntrl-D ) ," -compact -offset 14n
-.It Li \&.Li \een
-.Li \en
-.It Li \&.Li M1 M2 M3\ ;
-.Li M1 M2 M3 ;
-.It Li \&.Li cntrl-D\ )\ ,
-.Li cntrl-D ) ,
-.It Li \&.Li 1024\ ...
-.Li 1024 ...
-.El
-.Pp
-The
-.Ql \&.Li
-macro is parsed and is callable.
-.Ss Name Macro
-The
-.Ql \&.Nm
-macro is used for the document title or subject name.
-It has the peculiarity of remembering the first
-argument it was called with, which should
-always be the subject name of the page.
-When called without
-arguments,
-.Ql \&.Nm
-regurgitates this initial name for the sole purpose
-of making less work for the author.
-If trailing punctuation is required with this feature,
-use
-.Qq
-as a first argument to
-.Ql \&.Nm .
-Note:
-a section two
-or three document function name is addressed with the
-.Ql \&.Nm
-in the
-.Sx NAME
-section, and with
-.Ql \&.Fn
-in the
-.Sx SYNOPSIS
-and remaining sections.
-For interactive commands, such as the
-.Ql while
-command keyword in
-.Xr csh 1 ,
-the
-.Ql \&.Ic
-macro should be used.
-While the
-.Ql \&.Ic
-is nearly identical
-to
-.Ql \&.Nm ,
-it can not recall the first argument it was invoked with.
-.Pp
-.Dl Usage: .Nm argument ... \*(Pu
-.Bl -tag -width ".Nm mdoc.samples" -compact -offset 14n
-.It Li \&.Nm mdoc.samples
-.Nm mdoc.samples
-.It Li \&.Nm \e-mdoc
-.Nm \-mdoc
-.It Li \&.Nm foo\ )\ )\ ,
-.Nm foo ) ) ,
-.It Li \&.Nm
-.Nm
-.It Li \&.Nm \&"\&"\ :
-.Nm "" :
-.El
-.Pp
-The
-.Ql \&.Nm
-macro is parsed and is callable.
-.Ss Options
-The
-.Ql \&.Op
-macro
-places option brackets around the any remaining arguments on the command
-line, and places any
-trailing punctuation outside the brackets.
-The macros
-.Ql \&.Oc
-and
-.Ql \&.Oo
-may be used across one or more lines.
-.Pp
-.Dl Usage: .Op options ... \*(Pu
-.Bl -tag -width ".Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
-.It Li \&.Op
-.Op
-.It Li ".Op Fl k"
-.Op Fl k
-.It Li ".Op Fl k ) ."
-.Op Fl k ) .
-.It Li ".Op Fl k Ar kookfile"
-.Op Fl k Ar kookfile
-.It Li ".Op Fl k Ar kookfile ,"
-.Op Fl k Ar kookfile ,
-.It Li ".Op Ar objfil Op Ar corfil"
-.Op Ar objfil Op Ar corfil
-.It Li ".Op Fl c Ar objfil Op Ar corfil ,"
-.Op Fl c Ar objfil Op Ar corfil ,
-.It Li \&.Op word1 word2
-.Op word1 word2
-.El
-.Pp
-The
-.Ql \&.Oc
-and
-.Ql \&.Oo
-macros:
-.Bd -literal -offset indent
-\&.Oo
-\&.Op \&Fl k \&Ar kilobytes
-\&.Op \&Fl i \&Ar interval
-\&.Op \&Fl c \&Ar count
-\&.Oc
-.Ed
-.Pp
-Produce:
-.Oo
-.Op Fl k Ar kilobytes
-.Op Fl i Ar interval
-.Op Fl c Ar count
-.Oc
-.Pp
-The macros
-.Ql \&.Op ,
-.Ql \&.Oc
-and
-.Ql \&.Oo
-are parsed and are callable.
-.Ss Pathnames
-The
-.Ql \&.Pa
-macro formats path or file names.
-.Pp
-.Dl Usage: .Pa pathname \*(Pu
-.Bl -tag -width ".Pa /tmp/fooXXXXX ) ." -compact -offset 14n
-.It Li \&.Pa /usr/share
-.Pa /usr/share
-.It Li \&.Pa /tmp/fooXXXXX\ )\ .
-.Pa /tmp/fooXXXXX ) .
-.El
-.Pp
-The
-.Ql \&.Pa
-macro is parsed and is callable.
-.Ss Variables
-Generic variable reference:
-.Pp
-.Dl Usage: .Va variable ... \*(Pu
-.Bl -tag -width ".Va char s ] ) ) ," -compact -offset 14n
-.It Li \&.Va count
-.Va count
-.It Li \&.Va settimer ,
-.Va settimer ,
-.It Li \&.Va int\ *prt\ )\ :
-.Va int\ *prt ) :
-.It Li \&.Va char\ s\ ]\ )\ )\ ,
-.Va char\ s ] ) ) ,
-.El
-.Pp
-It is an error to call
-.Ql \&.Va
-without any arguments.
-The
-.Ql \&.Va
-macro is parsed and is callable.
-.Ss Manual Page Cross References
-The
-.Ql \&.Xr
-macro expects the first argument to be
-a manual page name, and the second argument, if it exists,
-to be either a section page number or punctuation.
-Any
-remaining arguments are assumed to be punctuation.
-.Pp
-.Dl Usage: .Xr man_page [1,...,9] \*(Pu
-.Bl -tag -width ".Xr mdoc 7 ) ) ," -compact -offset 14n
-.It Li \&.Xr mdoc
-.Xr mdoc
-.It Li \&.Xr mdoc\ ,
-.Xr mdoc ,
-.It Li \&.Xr mdoc 7
-.Xr mdoc 7
-.It Li \&.Xr mdoc 7\ )\ )\ ,
-.Xr mdoc 7 ) ) ,
-.El
-.Pp
-The
-.Ql \&.Xr
-macro is parsed and is callable.
-It is an error to call
-.Ql \&.Xr
-without
-any arguments.
-.Sh GENERAL TEXT DOMAIN
-.Ss AT&T Macro
-.Bd -literal -offset indent -compact
-Usage: .At [v1 .. v7 | 32v | V.1 | V.4] ... \*(Pu
-.Ed
-.Bl -tag -width ".At v6 ) ," -compact -offset 14n
-.It Li ".At"
-.At
-.It Li ".At v6 ."
-.At v6 .
-.El
-.Pp
-The
-.Ql \&.At
-macro is
-.Em not
-parsed and
-.Em not
-callable. It accepts at most two arguments.
-.Ss BSD Macro
-.Dl Usage: .Bx [Version/release] ... \*(Pu
-.Bl -tag -width ".Bx 4.3 ) ," -compact -offset 14n
-.It Li ".Bx"
-.Bx
-.It Li ".Bx 4.3 ."
-.Bx 4.3 .
-.El
-.Pp
-The
-.Ql \&.Bx
-macro is parsed and is callable.
-.Ss NetBSD Macro
-.Dl Usage: .Nx [Version/release] ... \*(Pu
-.Bl -tag -width ".Nx 1.4 ) ," -compact -offset 14n
-.It Li ".Nx"
-.Nx
-.It Li ".Nx 1.4 ."
-.Nx 1.4 .
-.El
-.Pp
-The
-.Ql \&.Nx
-macro is parsed and is callable.
-.Ss FreeBSD Macro
-.Dl Usage: .Fx [Version/release] ... \*(Pu
-.Bl -tag -width ".Fx 2.2 ) ," -compact -offset 14n
-.It Li ".Fx"
-.Fx
-.It Li ".Fx 2.2 ."
-.Fx 2.2 .
-.El
-.Pp
-The
-.Ql \&.Fx
-macro is parsed and is callable.
-.Ss UNIX Macro
-.Dl Usage: .Ux ... \*(Pu
-.Bl -tag -width ".Ux 4.3 ) ," -compact -offset 14n
-.It Li ".Ux"
-.Ux
-.El
-.Pp
-The
-.Ql \&.Ux
-macro is parsed and is callable.
-.Ss Emphasis Macro
-Text may be stressed or emphasized with the
-.Ql \&.Em
-macro.
-The usual font for emphasis is italic.
-.Pp
-.Dl Usage: .Em argument ... \*(Pu
-.Bl -tag -width ".Em vide infra ) ) ," -compact -offset 14n
-.It Li ".Em does not"
-.Em does not
-.It Li ".Em exceed 1024 ."
-.Em exceed 1024 .
-.It Li ".Em vide infra ) ) ,"
-.Em vide infra ) ) ,
-.El
-.\" .Pp
-.\" The emphasis can be forced across several lines of text by using
-.\" the
-.\" .Ql \&.Bf
-.\" macro discussed in
-.\" .Sx Modes
-.\" under
-.\" .Sx PAGE STRUCTURE DOMAIN .
-.\" .Pp
-.\" .Bf -emphasis
-.\" We are certain the reason most people desire a Harvard MBA
-.\" so they can become to be successful philanthropists. Only
-.\" mathematicians and physicists go to graduate school strictly
-.\" to acquire infinite wealthy and fame. Its that inifinity
-.\" word that does it to them. Ruins them.
-.\" .Ef
-.Pp
-The
-.Ql \&.Em
-macro is parsed and is callable.
-It is an error to call
-.Ql \&.Em
-without arguments.
-.Ss Enclosure and Quoting Macros
-The concept of enclosure is similar to quoting.
-The object being to enclose one or more strings between
-a pair of characters like quotes or parentheses.
-The terms quoting and enclosure are used
-interchangeably throughout this document.
-Most of the
-one line enclosure macros end
-in small letter
-.Ql q
-to give a hint of quoting, but there are a few irregularities.
-For each enclosure macro
-there is also a pair of open and close macros which end
-in small letters
-.Ql o
-and
-.Ql c
-respectively.
-These can be used across one or more lines of text
-and while they have nesting limitations, the one line quote macros
-can be used inside
-of them.
-.Pp
-.ne 5
-.Bd -filled -offset indent
-.Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
-.Em " Quote Close Open Function Result"
-\&.Aq .Ac .Ao Angle Bracket Enclosure <string>
-\&.Bq .Bc .Bo Bracket Enclosure [string]
-\&.Dq .Dc .Do Double Quote ``string''
- .Ec .Eo Enclose String (in XX) XXstringXX
-\&.Pq .Pc .Po Parenthesis Enclosure (string)
-\&.Ql Quoted Literal `st' or string
-\&.Qq .Qc .Qo Straight Double Quote "string"
-\&.Sq .Sc .So Single Quote `string'
-.El
-.Ed
-.Pp
-Except for the irregular macros noted below, all
-of the quoting macros are parsed and callable.
-All handle punctuation properly, as long as it
-is presented one character at a time and separated by spaces.
-The quoting macros examine opening and closing punctuation
-to determine whether it comes before or after the
-enclosing string. This makes some nesting possible.
-.Bl -tag -width xxx,xxxx
-.It Li \&.Ec , \&.Eo
-These macros expect the first argument to be the
-opening and closing strings respectively.
-.It Li \&.Ql
-The quoted literal macro behaves differently for
-.Xr troff
-than
-.Xr nroff .
-If formatted with
-.Xr nroff ,
-a quoted literal is always quoted. If formatted with
-troff, an item is only quoted if the width
-of the item is less than three constant width characters.
-This is to make short strings more visible where the font change
-to literal (constant width) is less noticeable.
-.It Li \&.Pf
-The prefix macro is not callable, but it is parsed:
-.Bl -tag -width "(namexx" -offset indent
-.It Li ".Pf ( Fa name2"
-becomes
-.Pf ( Fa name2 .
-.El
-.It Li \&.Ns
-The
-.Ql \&.Ns
-(no space) macro, which
-.Em is
-callable,
-performs the analogous suffix function.
-.It Li ".Ap
-The \&.Ap macro inserts an apostrophe and exits any special text modes,
-continuing in
-.Li \&.No
-mode.
-.El
-.Pp
-.ne 4
-Examples of quoting:
-.Bl -tag -width ".Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
-.It Li \&.Aq
-.Aq
-.It Li \&.Aq \&Ar ctype.h\ )\ ,
-.Aq Ar ctype.h ) ,
-.It Li \&.Bq
-.Bq
-.It Li \&.Bq \&Em Greek \&, French \&.
-.Bq Em Greek , French .
-.It Li \&.Dq
-.Dq
-.It Li ".Dq string abc ."
-.Dq string abc .
-.It Li ".Dq \'^[A-Z]\'"
-.Dq \'^[A-Z]\'
-.It Li "\&.Ql man mdoc"
-.Ql man mdoc
-.It Li \&.Qq
-.Qq
-.It Li "\&.Qq string ) ,"
-.Qq string ) ,
-.It Li "\&.Qq string Ns ),"
-.Qq string Ns ),
-.It Li \&.Sq
-.Sq
-.It Li "\&.Sq string
-.Sq string
-.It Li "\&.Em or Ap ing
-.Em or Ap ing
-.El
-.Pp
-For a good example of nested enclosure macros, see the
-.Ql \&.Op
-option macro.
-It was created from the same
-underlying enclosure macros as those presented in the list
-above.
-The
-.Ql \&.Xo
-and
-.Ql \&.Xc
-extended argument list macros
-were also built from the same underlying routines and are a good
-example of
-.Nm \-mdoc
-macro usage at its worst.
-.Ss No\-Op or Normal Text Macro
-The macro
-.Li \&.No
-is
-a hack for words in a macro command line which should
-.Em not
-be formatted and follows the conventional syntax
-for content macros.
-.Ss No Space Macro
-The
-.Ql \&.Ns
-macro eliminates unwanted spaces in between macro requests.
-It is useful for old style argument lists where there is no space
-between the flag and argument:
-.Bl -tag -width ".Op Fl I Ns Ar directoryxx" -offset indent
-.It Li ".Op Fl I Ns Ar directory"
-produces
-.Op Fl I Ns Ar directory
-.El
-.Pp
-Note: the
-.Ql \&.Ns
-macro always invokes the
-.Ql \&.No
-macro after eliminating the space unless another macro name
-follows it.
-The macro
-.Ql \&.Ns
-is parsed and is callable.
-.Ss Section Cross References
-The
-.Ql \&.Sx
-macro designates a reference to a section header
-within the same document.
-It is parsed and is callable.
-.Pp
-.Bl -tag -width "Li \&.Sx FILES" -offset 14n
-.It Li \&.Sx FILES
-.Sx FILES
-.El
-.Ss Symbolic
-The symbolic emphasis macro is generally a boldface macro in
-either the symbolic sense or the traditional English usage.
-.Pp
-.Dl Usage: .Sy symbol ... \*(Pu
-.Bl -tag -width ".Sy Important Noticex" -compact -offset 14n
-.It Li \&.Sy Important Notice
-.Sy Important Notice
-.El
-.Pp
-The
-.Ql \&.Sy
-macro is parsed and is callable.
-Arguments to
-.Ql \&.Sy
-may be quoted.
-.Ss References and Citations
-The following macros make a modest attempt to handle references.
-At best, the macros make it convenient to manually drop in a subset of
-refer style references.
-.Pp
-.Bl -tag -width 6n -offset indent -compact
-.It Li ".Rs"
-Reference Start.
-Causes a line break and begins collection
-of reference information until the
-reference end macro is read.
-.It Li ".Re"
-Reference End.
-The reference is printed.
-.It Li ".%A"
-Reference author name, one name per invocation.
-.It Li ".%B"
-Book title.
-.It Li ".\&%C"
-City/place.
-.It Li ".\&%D"
-Date.
-.It Li ".%J"
-Journal name.
-.It Li ".%N"
-Issue number.
-.It Li ".%O"
-Optional information.
-.It Li ".%P"
-Page number.
-.It Li ".%R"
-Report name.
-.It Li ".%T"
-Title of article.
-.It Li ".%V"
-Volume(s).
-.El
-.Pp
-The macros beginning with
-.Ql %
-are not callable, and are parsed only for the trade name macro which
-returns to its caller.
-(And not very predictably at the moment either.)
-The purpose is to allow trade names
-to be pretty printed in
-.Xr troff Ns / Ns Xr ditroff
-output.
-.Ss Trade Names (or Acronyms and Type Names)
-The trade name macro is generally a small caps macro for
-all upper case words longer than two characters.
-.Pp
-.Dl Usage: .Tn symbol ... \*(Pu
-.Bl -tag -width ".Tn ASCII" -compact -offset 14n
-.It Li \&.Tn DEC
-.Tn DEC
-.It Li \&.Tn ASCII
-.Tn ASCII
-.El
-.Pp
-The
-.Ql \&.Tn
-macro
-is parsed and is callable by other macros.
-.Ss Extended Arguments
-The
-.Li \&.Xo
-and
-.Li \&.Xc
-macros allow one to extend an argument list
-on a macro boundary.
-Argument lists cannot
-be extended within a macro
-which expects all of its arguments on one line such
-as
-.Ql \&.Op .
-.Pp
-Here is an example of
-.Ql \&.Xo
-using the space mode macro to turn spacing off:
-.Bd -literal -offset indent
-\&.Sm off
-\&.It Xo Sy I Ar operation
-\&.No \een Ar count No \een
-\&.Xc
-\&.Sm on
-.Ed
-.Pp
-Produces
-.Bd -filled -offset indent
-.Bl -tag -width flag -compact
-.Sm off
-.It Xo Sy I Ar operation
-.No \en Ar count No \en
-.Xc
-.Sm on
-.El
-.Ed
-.Pp
-Another one:
-.Bd -literal -offset indent
-\&.Sm off
-\&.It Cm S No \&/ Ar old_pattern Xo
-\&.No \&/ Ar new_pattern
-\&.No \&/ Op Cm g
-\&.Xc
-\&.Sm on
-.Ed
-.Pp
-Produces
-.Bd -filled -offset indent
-.Bl -tag -width flag -compact
-.Sm off
-.It Cm S No \&/ Ar old_pattern Xo
-.No \&/ Ar new_pattern
-.No \&/ Op Cm g
-.Xc
-.Sm on
-.El
-.Ed
-.Pp
-Another example of
-.Ql \&.Xo
-and using enclosure macros:
-Test the value of an variable.
-.Bd -literal -offset indent
-\&.It Xo
-\&.Ic .ifndef
-\&.Oo \e&! Oc Ns Ar variable
-\&.Op Ar operator variable ...
-\&.Xc
-.Ed
-.Pp
-Produces
-.Bd -filled -offset indent
-.Bl -tag -width flag -compact
-.It Xo
-.Ic .ifndef
-.Oo \&! Oc Ns Ar variable
-.Op Ar operator variable ...
-.Xc
-.El
-.Ed
-.Pp
-All of the above examples have used the
-.Ql \&.Xo
-macro on the argument list of the
-.Ql \&.It
-(list-item)
-macro.
-The extend macros are not used very often, and when they are
-it is usually to extend the list-item argument list.
-Unfortunately, this is also where the extend macros are the
-most finicky.
-In the first two examples, spacing was turned off;
-in the third, spacing was desired in part of the output but
-not all of it.
-To make these macros work in this situation make sure
-the
-.Ql \&.Xo
-and
-.Ql \&.Xc
-macros are placed as shown in the third example.
-If the
-.Ql \&.Xo
-macro is not alone on the
-.Ql \&.It
-argument list, spacing will be unpredictable.
-The
-.Ql \&.Ns
-(no space macro)
-must not occur as the first or last macro on a line
-in this situation.
-Out of 900 manual pages (about 1500 actual pages)
-currently released with
-.Bx
-only fifteen use the
-.Ql \&.Xo
-macro.
-.Sh PAGE STRUCTURE DOMAIN
-.Ss Section Headers
-The first three
-.Ql \&.Sh
-section header macros
-list below are required in every
-man page.
-The remaining section headers
-are recommended at the discretion of the author
-writing the manual page.
-The
-.Ql \&.Sh
-macro can take up to nine arguments.
-It is parsed and but is not callable.
-.Bl -tag -width ".Sh SYNOPSIS"
-.It \&.Sh NAME
-The
-.Ql \&.Sh NAME
-macro is mandatory.
-If not specified,
-the headers, footers and page layout defaults
-will not be set and things will be rather unpleasant.
-The
-.Sx NAME
-section consists of at least three items.
-The first is the
-.Ql \&.Nm
-name macro naming the subject of the man page.
-The second is the Name Description macro,
-.Ql \&.Nd ,
-which separates the subject
-name from the third item, which is the description.
-The
-description should be the most terse and lucid possible,
-as the space available is small.
-.It \&.Sh SYNOPSIS
-The
-.Sx SYNOPSIS
-section describes the typical usage of the
-subject of a man page.
-The macros required
-are either
-.Ql ".Nm" ,
-.Ql ".Cd" ,
-.Ql ".Fn" ,
-(and possibly
-.Ql ".Fo" ,
-.Ql ".Fc" ,
-.Ql ".Fd" ,
-.Ql ".Ft"
-macros).
-The function name
-macro
-.Ql ".Fn"
-is required
-for manual page sections 2 and 3, the command and general
-name macro
-.Ql \&.Nm
-is required for sections 1, 5, 6, 7, 8.
-Section 4 manuals require a
-.Ql ".Nm" , ".Fd"
-or a
-.Ql ".Cd"
-configuration device usage macro.
-Several other macros may be necessary to produce
-the synopsis line as shown below:
-.Pp
-.Bd -filled -offset indent
-.Nm cat
-.Op Fl benstuv
-.Op Fl
-.Ar
-.Ed
-.Pp
-The following macros were used:
-.Pp
-.Dl \&.Nm cat
-.Dl \&.Op \&Fl benstuv
-.Dl \&.Op \&Fl
-.Dl \&.Ar
-.Pp
-.Sy Note :
-The macros
-.Ql \&.Op ,
-.Ql \&.Fl ,
-and
-.Ql \&.Ar
-recognize the pipe bar character
-.Ql \*(Ba ,
-so a command line such as:
-.Pp
-.Dl ".Op Fl a | Fl b"
-.Pp
-will not go orbital.
-.Xr Troff
-normally interprets a \*(Ba as a special operator.
-See
-.Sx PREDEFINED STRINGS
-for a usable \*(Ba
-character in other situations.
-.It \&.Sh DESCRIPTION
-In most cases the first text in the
-.Sx DESCRIPTION
-section
-is a brief paragraph on the command, function or file,
-followed by a lexical list of options and respective
-explanations.
-To create such a list, the
-.Ql \&.Bl
-begin-list,
-.Ql \&.It
-list-item and
-.Ql \&.El
-end-list
-macros are used (see
-.Sx Lists and Columns
-below).
-.El
-.Pp
-The following
-.Ql \&.Sh
-section headers are part of the
-preferred manual page layout and must be used appropriately
-to maintain consistency.
-They are listed in the order
-in which they would be used.
-.Bl -tag -width SYNOPSIS
-.It \&.Sh ENVIRONMENT
-The
-.Sx ENVIRONMENT
-section should reveal any related
-environment
-variables and clues to their behavior and/or usage.
-.It \&.Sh EXAMPLES
-There are several ways to create examples.
-See
-the
-.Sx EXAMPLES
-section below
-for details.
-.It \&.Sh FILES
-Files which are used or created by the man page subject
-should be listed via the
-.Ql \&.Pa
-macro in the
-.Sx FILES
-section.
-.It \&.Sh SEE ALSO
-References to other material on the man page topic and
-cross references to other relevant man pages should
-be placed in the
-.Sx SEE ALSO
-section.
-Cross references
-are specified using the
-.Ql \&.Xr
-macro.
-At this time
-.Xr refer 1
-style references are not accommodated.
-.Pp
-It is recommended that the cross references are sorted on the section
-number, and then alphabetically on the names within a section.
-.It \&.Sh STANDARDS
-If the command, library function or file adheres to a
-specific implementation such as
-.St -p1003.2
-or
-.St -ansiC
-this should be noted here.
-If the
-command does not adhere to any standard, its history
-should be noted in the
-.Sx HISTORY
-section.
-.It \&.Sh HISTORY
-Any command which does not adhere to any specific standards
-should be outlined historically in this section.
-.It \&.Sh AUTHORS
-Credits, if need be, should be placed here.
-.It \&.Sh DIAGNOSTICS
-Diagnostics from a command should be placed in this section.
-.It \&.Sh ERRORS
-Specific error handling, especially from library functions
-(man page sections 2 and 3) should go here.
-The
-.Ql \&.Er
-macro is used to specify an errno.
-.It \&.Sh BUGS
-Blatant problems with the topic go here...
-.El
-.Pp
-User specified
-.Ql \&.Sh
-sections may be added,
-for example, this section was set with:
-.Bd -literal -offset 14n
-\&.Sh PAGE LAYOUT MACROS
-.Ed
-.Ss Paragraphs and Line Spacing.
-.Bl -tag -width 6n
-.It \&.Pp
-The \&.Pp paragraph command may
-be used to specify a line space where necessary.
-The macro is not necessary after a
-.Ql \&.Sh
-or
-.Ql \&.Ss
-macro or before
-a
-.Ql \&.Bl
-macro.
-(The
-.Ql \&.Bl
-macro asserts a vertical distance unless the -compact flag is given).
-.El
-.\" This worked with version one, need to redo for version three
-.\" .Pp
-.\" .Ds I
-.\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
-.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx\ (
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Va ax
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Sy \+
-.\" .Cx
-.\" .Cl Cx \&(\&
-.\" .Va ax
-.\" .Cx +
-.\" .Va by
-.\" .Cx +
-.\" .Va c )
-.\" .Cx \t
-.\" .Em is produced by
-.\" .Cx \t
-.\" .Li \&.Va by
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Sy \+
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Va c )
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx
-.\" .Cx
-.\" .Cw
-.\" .De
-.\" .Pp
-.\" This example shows the same equation in a different format.
-.\" The spaces
-.\" around the
-.\" .Li \&+
-.\" signs were forced with
-.\" .Li \e :
-.\" .Pp
-.\" .Ds I
-.\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
-.\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx\ (
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Va a
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Sy x
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx \e\ +\e\ \e&
-.\" .Cx
-.\" .Cl Cx \&(\&
-.\" .Va a
-.\" .Sy x
-.\" .Cx \ +\ \&
-.\" .Va b
-.\" .Sy y
-.\" .Cx \ +\ \&
-.\" .Va c )
-.\" .Cx \t
-.\" .Em is produced by
-.\" .Cl Cx \t\t
-.\" .Li \&.Va b
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Sy y
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx \e\ +\e\ \e&
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Va c )
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx
-.\" .Cx
-.\" .Cw
-.\" .De
-.\" .Pp
-.\" The incantation below was
-.\" lifted from the
-.\" .Xr adb 1
-.\" manual page:
-.\" .Pp
-.\" .Ds I
-.\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx Op Sy ?/
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Nm m
-.\" .Cx
-.\" .Cl Cx Op Sy ?/
-.\" .Nm m
-.\" .Ad \ b1 e1 f1
-.\" .Op Sy ?/
-.\" .Cx \t
-.\" .Em is produced by
-.\" .Cx \t
-.\" .Li \&.Ar \e\ b1 e1 f1
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Op Sy ?/
-.\" .Cx
-.\" .Cl Cx \t\t
-.\" .Li \&.Cx
-.\" .Cx
-.\" .Cw
-.\" .De
-.\" .Pp
-.Ss Keeps
-The only keep that is implemented at this time is for words.
-The macros are
-.Ql \&.Bk
-(begin-keep)
-and
-.Ql \&.Ek
-(end-keep).
-The only option that
-.Ql \&.Bl
-accepts is
-.Fl words
-and is useful for preventing line breaks in the middle of options.
-In the example for the make command line arguments (see
-.Sx What's in a name ) ,
-the keep prevented
-.Xr nroff
-from placing up the
-flag and the argument
-on separate lines.
-(Actually, the option macro used to prevent this from occurring,
-but was dropped when the decision (religious) was made to force
-right justified margins in
-.Xr troff
-as options in general look atrocious when spread across a sparse
-line.
-More work needs to be done with the keep macros, a
-.Fl line
-option needs to be added.)
-.Ss Examples and Displays
-There are six types of displays, a quickie one line indented display
-.Ql \&.D1 ,
-a quickie one line literal display
-.Ql \&.Dl ,
-and block literal, block filled, block unfilled, and block ragged which use
-the
-.Ql \&.Bd
-begin-display
-and
-.Ql \&.Ed
-end-display macros.
-.Pp
-.Bl -tag -width \&.Dlxx
-.It Li \&.D1
-(D-one) Display one line of indented text.
-This macro is parsed, but it is not callable.
-.Pp
-.Dl Fl ldghfstru
-.Pp
-The above was produced by:
-.Li \&.Dl Fl ldghfstru .
-.It Li \&.Dl
-(D-ell)
-Display one line of indented
-.Em literal
-text.
-The
-.Ql \&.Dl
-example macro has been used throughout this
-file.
-It allows
-the indent (display) of one line of text.
-Its default font is set to
-constant width (literal) however
-it is parsed and will recognized other macros.
-It is not callable however.
-.Pp
-.Dl % ls -ldg /usr/local/bin
-.Pp
-The above was produced by
-.Li \&.Dl % ls -ldg /usr/local/bin .
-.It Li \&.Bd
-Begin-display.
-The
-.Ql \&.Bd
-display must be ended with the
-.Ql \&.Ed
-macro.
-Displays may be nested within lists, but may
-.Em not
-contain other displays; this also prohibits nesting
-of .D1 and .Dl one-line displays.
-.Ql \&.Bd
-has the following syntax:
-.Pp
-.Dl ".Bd display-type [-offset offset_value] [-compact]"
-.Pp
-The display-type must be one of the following four types and
-may have an offset specifier for indentation:
-.Ql \&.Bd .
-.Pp
-.Bl -tag -width "file file_name " -compact
-.It Fl ragged
-Fill, but do not adjust the right margin.
-.It Fl unfilled
-Do not fill: display a block of text as typed, the
-right (and left) margin edges are left ragged.
-.It Fl filled
-Display a filled (formatted) block.
-The block of text is formatted (the edges are filled \-
-not left unjustified).
-.It Fl literal
-Display a literal block, useful for source code or
-simple tabbed or spaced text.
-.It Fl file Ar file_name
-The file name following the
-.Fl file
-flag is read and displayed.
-Literal mode is
-asserted and tabs are set at 8 constant width character
-intervals, however any
-.Xr troff/ Ns Nm \-mdoc
-commands in file will be processed.
-.It Fl offset Ar string
-If
-.Fl offset
-is specified with one of the following strings, the string
-is interpreted to indicate the level of indentation for the
-forthcoming block of text:
-.Pp
-.Bl -tag -width "indent-two" -compact
-.It Ar left
-Align block on the current left margin,
-this is the default mode of
-.Ql \&.Bd .
-.It Ar center
-Supposedly center the block.
-At this time
-unfortunately, the block merely gets
-left aligned about an imaginary center margin.
-.It Ar indent
-Indents by one default indent value or tab.
-The default
-indent value is also used for the
-.Ql \&.D1
-display so one is guaranteed the two types of displays
-will line up.
-This indent is normally set to 6n or about two
-thirds of an inch (six constant width characters).
-.It Ar indent-two
-Indents two times the default indent value.
-.It Ar right
-This
-.Em left
-aligns the block about two inches from
-the right side of the page.
-This macro needs
-work and perhaps may never do the right thing by
-.Xr troff .
-.El
-.El
-.It ".Ed"
-End-display.
-.El
-.Ss Tagged Lists and Columns
-There are several types of lists which may be initiated with the
-.Ql ".Bl"
-begin-list macro.
-Items within the list
-are specified with the
-.Ql ".It"
-item macro and
-each list must end with the
-.Ql ".El"
-macro.
-Lists other than
-.Li \-enum
-may be nested within themselves and within displays.
-The use of columns inside of lists or lists inside of columns
-is unproven.
-.Pp
-In addition, several list attributes may be specified such as
-the width of a tag, the list offset, and compactness
-(blank lines between items allowed or disallowed).
-Most of this document has been formatted with a tag style list
-.Pq Fl tag .
-For a change of pace, the list-type used to present the list-types
-is an over-hanging list
-.Pq Fl ohang .
-This type of list is quite popular with
-.Tn TeX
-users, but might look a bit funny after having read many pages of
-tagged lists.
-The following list types are accepted by
-.Ql ".Bl" :
-.Pp
-.Bl -ohang -compact
-.It Fl bullet
-.It Fl dash
-.It Fl enum
-.It Fl hyphen
-.It Fl item
-These five are the simplest types of lists.
-Once the
-.Ql ".Bl"
-macro has been given, items in the list are merely
-indicated by a line consisting solely of the
-.Ql ".It"
-macro.
-For example, the source text for a simple enumerated list
-would look like:
-.Bd -literal -offset indent-two
-\&.Bl -enum -compact
-\&.It
-\&Item one goes here.
-\&.It
-\&And item two here.
-\&.It
-\&Lastly item three goes here.
-\&.El
-.Ed
-.Pp
-The results:
-.Pp
-.Bl -enum -offset indent-two -compact
-.It
-Item one goes here.
-.It
-And item two here.
-.It
-Lastly item three goes here.
-.El
-.Pp
-A simple bullet list construction:
-.Bd -literal -offset indent-two
-\&.Bl -bullet -compact
-\&.It
-\&Bullet one goes here.
-\&.It
-\&Bullet two here.
-\&.El
-.Ed
-.Pp
-Produces:
-.Bl -bullet -offset indent-two -compact
-.It
-Bullet one goes here.
-.It
-Bullet two here.
-.El
-.Pp
-.It Fl tag
-.It Fl diag
-.It Fl hang
-.It Fl ohang
-.It Fl inset
-These list-types collect arguments specified with the
-.Ql \&.It
-macro and create a label which may be
-.Em inset
-into the forthcoming text,
-.Em hanged
-from the forthcoming text,
-.Em overhanged
-from above and not indented or
-.Em tagged .
-This
-list was constructed with the
-.Ql Fl ohang
-list-type.
-The
-.Ql \&.It
-macro is parsed only for the inset, hang
-and tag list-types and is not callable.
-Here is an example of inset labels:
-.Bl -inset -offset indent
-.It Em Tag
-The tagged list (also called a tagged paragraph) is the
-most common type of list used in the Berkeley manuals. Use a
-.Fl width
-attribute as described below.
-.It Em Diag
-Diag lists create section four diagnostic lists
-and are similar to inset lists except callable
-macros are ignored.
-.It Em Hang
-Hanged labels are a matter of taste.
-.It Em Ohang
-Overhanging labels are nice when space is constrained.
-.It Em Inset
-Inset labels are useful for controlling blocks of
-paragraphs and are valuable for converting
-.Nm \-mdoc
-manuals to other formats.
-.El
-.Pp
-Here is the source text which produced the above example:
-.Bd -literal -offset indent
-\&.Bl -inset -offset indent
-\&.It Em Tag
-\&The tagged list (also called a tagged paragraph) is the
-\&most common type of list used in the Berkeley manuals.
-\&.It Em Diag
-\&Diag lists create section four diagnostic lists
-\&and are similar to inset lists except callable
-\&macros are ignored.
-\&.It Em Hang
-\&Hanged labels are a matter of taste.
-\&.It Em Ohang
-\&Overhanging labels are nice when space is constrained.
-\&.It Em Inset
-\&Inset labels are useful for controlling blocks of
-\&paragraphs and are valuable for converting
-\&.Nm \-mdoc
-\&manuals to other formats.
-\&.El
-.Ed
-.Pp
-Here is a hanged list with just one item:
-.Bl -hang -offset indent
-.It Em Hanged
-labels appear similar to tagged lists when the
-label is smaller than the label width.
-.It Em Longer hanged list labels
-blend in to the paragraph unlike
-tagged paragraph labels.
-.El
-.Pp
-And the unformatted text which created it:
-.Bd -literal -offset indent
-\&.Bl -hang -offset indent
-\&.It Em Hanged
-\&labels appear similar to tagged lists when the
-\&label is smaller than the label width.
-\&.It Em Longer hanged list labels
-\&blend in to the paragraph unlike
-\&tagged paragraph labels.
-\&.El
-.Ed
-.Pp
-The tagged list which follows uses a width specifier to control
-the width of the tag.
-.Pp
-.Bl -tag -width "PAGEIN" -compact -offset indent
-.It SL
-sleep time of the process (seconds blocked)
-.It PAGEIN
-number of disk
-.Tn I/O Ns 's
-resulting from references
-by the process to pages not loaded in core.
-.It UID
-numerical user-id of process owner
-.It PPID
-numerical id of parent of process process priority
-(non-positive when in non-interruptible wait)
-.El
-.Pp
-The raw text:
-.Bd -literal -offset indent
-\&.Bl -tag -width "PAGEIN" -compact -offset indent
-\&.It SL
-\&sleep time of the process (seconds blocked)
-\&.It PAGEIN
-\&number of disk
-\&.Tn I/O Ns 's
-\&resulting from references
-\&by the process to pages not loaded in core.
-\&.It UID
-\&numerical user-id of process owner
-\&.It PPID
-\&numerical id of parent of process process priority
-\&(non-positive when in non-interruptible wait)
-\&.El
-.Ed
-.Pp
-Acceptable width specifiers:
-.Bl -tag -width Ar -offset indent
-.It Fl width Ar "\&Fl"
-sets the width to the default width for a flag.
-All callable
-macros have a default width value.
-The
-.Ql \&.Fl ,
-value is presently
-set to ten constant width characters or about five sixth of
-an inch.
-.It Fl width Ar "24n"
-sets the width to 24 constant width characters or about two
-inches.
-The
-.Ql n
-is absolutely necessary for the scaling to work correctly.
-.It Fl width Ar "ENAMETOOLONG"
-sets width to the constant width length of the
-string given.
-.It Fl width Ar "\\*qint mkfifo\\*q"
-again, the width is set to the constant width of the string
-given.
-.El
-.Pp
-If a width is not specified for the tag list type, the first
-time
-.Ql \&.It
-is invoked, an attempt is made to determine an appropriate
-width.
-If the first argument to
-.Ql ".It"
-is a callable macro, the default width for that macro will be used
-as if the macro name had been supplied as the width.
-However,
-if another item in the list is given with a different callable
-macro name, a new and nested list is assumed. This effectively
-means that
-.Fl width
-is required for the tag list type.
-.Pp
-.It Fl column
-This list type generates multiple columns.
-The number of columns and the width of each column is determined by
-the arguments to the
-.Fl column
-list.
-Each
-.Ql ".It"
-argument is parsed to make a row, each column within the
-row is a separate argument separated by a tab or the
-.Ql ".Ta"
-macro.
-.El
-The table:
-.Bl -column "String" "Nroff" "Troff" -offset indent
-.It Sy "String" Ta Sy "Nroff" Ta Sy "Troff"
-.It Li "<=" Ta \&<\&= Ta \*(<=
-.It Li ">=" Ta \&>\&= Ta \*(>=
-.El
-.Pp
-was produced by:
-.Bd -literal -offset indent
-\&.Bl -column "String" "Nroff" "Troff" -offset indent
-\&.It Sy "String" Ta Sy "Nroff" Ta Sy "Troff"
-\&.It Li "<=" Ta \&<\&= Ta \*(<=
-\&.It Li ">=" Ta \&>\&= Ta \*(>=
-\&.El
-.Ed
-.Sh PREDEFINED STRINGS
-The following strings are predefined as may be used by
-preceding with the troff string interpreting sequence
-.Ql \&\e*(xx
-where
-.Em xx
-is the name of the defined string or as
-.Ql \&\e*x
-where
-.Em x
-is the name of the string.
-The interpreting sequence may be used any where in the text.
-.Pp
-.Bl -column "String " "Nroff " "Troff " -offset indent
-.It Sy "String Nroff Troff"
-.It Li "<=" Ta \&<\&= Ta \*(<=
-.It Li ">=" Ta \&>\&= Ta \*(>=
-.It Li "Rq" Ta "''" Ta \*(Rq
-.It Li "Lq" Ta "``" Ta \*(Lq
-.It Li "ua" Ta ^ Ta \*(ua
-.It Li "aa" Ta ' Ta \*(aa
-.It Li "ga" Ta \` Ta \*(ga
-.\" .It Li "sL" Ta ` Ta \*(sL
-.\" .It Li "sR" Ta ' Ta \*(sR
-.It Li "q" Ta \&" Ta \*q
-.It Li "Pi" Ta pi Ta \*(Pi
-.It Li "Ne" Ta != Ta \*(Ne
-.It Li "Le" Ta <= Ta \*(Le
-.It Li "Ge" Ta >= Ta \*(Ge
-.It Li "Lt" Ta < Ta \*(Gt
-.It Li "Gt" Ta > Ta \*(Lt
-.It Li "Pm" Ta +- Ta \*(Pm
-.It Li "If" Ta infinity Ta \*(If
-.It Li "Na" Ta \fINaN\fP Ta \*(Na
-.It Li "Ba" Ta \fR\&|\fP Ta \*(Ba
-.El
-.Pp
-.Sy Note :
-The string named
-.Ql q
-should be written as
-.Ql \e*q
-since it is only one char.
-.Sh DIAGNOSTICS
-The debugging facilities for
-.Nm \-mdoc
-are limited, but can help detect subtle errors such
-as the collision of an argument name with an internal
-register or macro name.
-(A what?)
-A register is an arithmetic storage class for
-.Xr troff
-with a one or two character name.
-All registers internal to
-.Nm \-mdoc
-for
-.Xr troff
-and
-.Xr ditroff
-are two characters and
-of the form <upper_case><lower_case> such as
-.Ql \&Ar ,
-<lower_case><upper_case> as
-.Ql \&aR
-or
-<upper or lower letter><digit> as
-.Ql \&C\&1 .
-And adding to the muddle,
-.Xr troff
-has its own internal registers all of which are either
-two lower case characters or a dot plus a letter or meta-character
-character.
-In one of the introduction examples, it was shown how to
-prevent the interpretation of a macro name with the escape sequence
-.Ql \e& .
-This is sufficient for the internal register names also.
-.Pp
-.\" Every callable macro name has a corresponding register
-.\" of the same name (<upper_case><lower_case>).
-.\" There are also specific registers which have
-.\" been used for stacks and arrays and are listed in the
-.\" .Sx Appendix .
-.\" .Bd -ragged -offset 4n
-.\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'')
-.\" [a-z][A-Z] registers corresponding to macro names (example ``aR'')
-.\" C[0-9] argument types (example C1)
-.\" O[0-9] offset stack (displays)
-.\" h[0-9] horizontal spacing stack (lists)
-.\" o[0-9] offset (stack) (lists)
-.\" t[0-9] tag stack (lists)
-.\" v[0-9] vertical spacing stack (lists)
-.\" w[0-9] width tag/label stack
-.\" .Ed
-.\" .Pp
-If a non-escaped register name is given in the argument list of a request
-unpredictable behavior will occur.
-In general, any time huge portions
-of text do not appear where expected in the output, or small strings
-such as list tags disappear, chances are there is a misunderstanding
-about an argument type in the argument list.
-Your mother never intended for you to remember this evil stuff - so here
-is a way to find out whether or not your arguments are valid: The
-.Ql \&.Db
-(debug)
-macro displays the interpretation of the argument list for most
-macros.
-Macros such as the
-.Ql \&.Pp
-(paragraph)
-macro do not contain debugging information.
-All of the callable macros do,
-and it is strongly advised whenever in doubt,
-turn on the
-.Ql \&.Db
-macro.
-.Pp
-.Dl Usage: \&.Db [on | off]
-.Pp
-An example of a portion of text with
-the debug macro placed above and below an
-artificially created problem (a flag argument
-.Ql \&aC
-which should be
-.Ql \e&aC
-in order to work):
-.Bd -literal -offset indent
-\&.Db on
-\&.Op Fl aC Ar file )
-\&.Db off
-.Ed
-.Pp
-The resulting output:
-.Bd -literal -offset indent
-DEBUGGING ON
-DEBUG(argv) MACRO: `.Op' Line #: 2
- Argc: 1 Argv: `Fl' Length: 2
- Space: `' Class: Executable
- Argc: 2 Argv: `aC' Length: 2
- Space: `' Class: Executable
- Argc: 3 Argv: `Ar' Length: 2
- Space: `' Class: Executable
- Argc: 4 Argv: `file' Length: 4
- Space: ` ' Class: String
- Argc: 5 Argv: `)' Length: 1
- Space: ` ' Class: Closing Punctuation or suffix
- MACRO REQUEST: .Op Fl aC Ar file )
-DEBUGGING OFF
-.Ed
-.Pp
-The first line of information tells the name of the calling
-macro, here
-.Ql \&.Op ,
-and the line number it appears on.
-If one or more files are involved
-(especially if text from another file is included) the line number
-may be bogus.
-If there is only one file, it should be accurate.
-The second line gives the argument count, the argument
-.Pq Ql \&Fl
-and its length.
-If the length of an argument is two characters, the
-argument is tested to see if it is executable (unfortunately, any
-register which contains a non-zero value appears executable).
-The third line gives the space allotted for a class, and the
-class type.
-The problem here is the argument aC should not be
-executable.
-The four types of classes are string, executable, closing
-punctuation and opening punctuation.
-The last line shows the entire
-argument list as it was read.
-In this next example, the offending
-.Ql \&aC
-is escaped:
-.Bd -literal -offset indent
-\&.Db on
-\&.Em An escaped \e&aC
-\&.Db off
-.Ed
-.Bd -literal -offset indent
-DEBUGGING ON
-DEBUG(fargv) MACRO: `.Em' Line #: 2
- Argc: 1 Argv: `An' Length: 2
- Space: ` ' Class: String
- Argc: 2 Argv: `escaped' Length: 7
- Space: ` ' Class: String
- Argc: 3 Argv: `aC' Length: 2
- Space: ` ' Class: String
- MACRO REQUEST: .Em An escaped &aC
-DEBUGGING OFF
-.Ed
-.Pp
-The argument
-.Ql \e&aC
-shows up with the same length of 2 as the
-.Ql \e&
-sequence produces a zero width, but a register
-named
-.Ql \e&aC
-was not found and the type classified as string.
-.Pp
-Other diagnostics consist of usage statements and are self explanatory.
-.Sh GROFF, TROFF AND NROFF
-The
-.Nm \-mdoc
-package does not need compatibility mode with
-.Xr groff .
-.Pp
-The package inhibits page breaks, and the headers and footers
-which normally occur at those breaks with
-.Xr nroff ,
-to make the manual more efficient for viewing on-line.
-At the moment,
-.Xr groff
-with
-.Fl T Ns Ar ascii
-does eject the imaginary remainder of the page at end of file.
-The inhibiting of the page breaks makes
-.Xr nroff Ns 'd
-files unsuitable for hardcopy.
-There is a register named
-.Ql \&cR
-which can be set to zero in the site dependent style file
-.Pa /usr/src/share/tmac/doc-nroff
-to restore the old style behavior.
-.Sh FILES
-.Bl -tag -width /usr/share/misc/mdoc.template -compact
-.It Pa /usr/share/tmac/tmac.doc
-manual macro package
-.It Pa /usr/share/misc/mdoc.template
-template for writing a man page
-.El
-.Sh SEE ALSO
-.Xr mdoc 7 ,
-.Xr man 1 ,
-.Xr troff 1
-.Sh BUGS
-Undesirable hyphenation on the dash of a flag
-argument is not yet resolved, and causes
-occasional mishaps in the
-.Sx DESCRIPTION
-section.
-(line break on the hyphen).
-.Pp
-Predefined strings are not declared in documentation.
-.Pp
-Section 3f has not been added to the header routines.
-.Pp
-.Ql \&.Nm
-font should be changed in
-.Sx NAME
-section.
-.Pp
-.Ql \&.Fn
-needs to have a check to prevent splitting up
-if the line length is too short.
-Occasionally it
-separates the last parenthesis, and sometimes
-looks ridiculous if a line is in fill mode.
-.Pp
-The method used to prevent header and footer page
-breaks (other than the initial header and footer) when using
-nroff occasionally places an unsightly partially filled line (blank)
-at the would be bottom of the page.
-.Pp
-If the outer-most list definition doesn't have a
-.Fl width
-argument, the
-.Ql ".It"
-elements of inner lists may not work (producing a list where
-each successive element
-.Sq walks
-to the right).
-.Pp
-The list and display macros to not do any keeps
-and certainly should be able to.
-.\" Note what happens if the parameter list overlaps a newline
-.\" boundary.
-.\" to make sure a line boundary is crossed:
-.\" .Bd -literal
-.\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
-.\" .Ed
-.\" .Pp
-.\" produces, nudge nudge,
-.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
-.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
-.\" nudge
-.\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
-.\" .Pp
-.\" If double quotes are used, for example:
-.\" .Bd -literal
-.\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
-.\" .Ed
-.\" .Pp
-.\" produces, nudge nudge,
-.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
-.\" nudge
-.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
-.\" nudge
-.\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
-.\" .Pp
-.\" Not a pretty sight...
-.\" In a paragraph, a long parameter containing unpaddable spaces as
-.\" in the former example will cause
-.\" .Xr troff
-.\" to break the line and spread
-.\" the remaining words out.
-.\" The latter example will adjust nicely to
-.\" justified margins, but may break in between an argument and its
-.\" declaration.
-.\" In
-.\" .Xr nroff
-.\" the right margin adjustment is normally ragged and the problem is
-.\" not as severe.
diff --git a/contrib/groff/tmac/groff_msafer.man b/contrib/groff/tmac/groff_msafer.man
deleted file mode 100644
index 0e0de77..0000000
--- a/contrib/groff/tmac/groff_msafer.man
+++ /dev/null
@@ -1,59 +0,0 @@
-.ig \"-*- nroff -*-
-Copyright (C) 1989-1999 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.TH GROFF_MSAFER @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-groff_msafer \- groff -msafer macros
-.SH SYNOPSIS
-.B groff
-.B \-msafer
-[
-.IR options .\|.\|.
-]
-[
-.IR files .\|.\|.
-]
-.SH DESCRIPTION
-The -msafer macros remove the
-.BR open ,
-.BR opena ,
-.BR pso ,
-.BR sy ,
-and
-.B pi
-requests.
-These macros should be used when processing input from
-an untrustworthy source.
-For maximum safety,
-they should be the first -m option on the command-line.
-Normally they are invoked using the
-.B \-S
-option of groff, which will also pass
-.B @g@pic
-the
-.B \-S
-flag.
-This is now the default; to get the old behaviour, use the
-.B \-U
-flag.
-.SH FILES
-.B @MACRODIR@/tmac.safer
-.SH "SEE ALSO"
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@)
diff --git a/contrib/groff/tmac/me.man b/contrib/groff/tmac/me.man
deleted file mode 100644
index 4919621..0000000
--- a/contrib/groff/tmac/me.man
+++ /dev/null
@@ -1,274 +0,0 @@
-.\" Copyright (c) 1980 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms are permitted
-.\" provided that the above copyright notice and this paragraph are
-.\" duplicated in all such forms and that any documentation,
-.\" advertising materials, and other materials related to such
-.\" distribution and use acknowledge that the software was developed
-.\" by the University of California, Berkeley. The name of the
-.\" University may not be used to endorse or promote products derived
-.\" from this software without specific prior written permission.
-.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-.\"
-.\" @(#)me.7 6.4 (Berkeley) 4/13/90
-.\"
-.\" Modified for groff by jjc@jclark.com
-.hc %
-.TH GROFF_ME @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.UC 3
-.SH NAME
-groff_me \- troff macros for formatting papers
-.SH SYNOPSIS
-.B "groff \-me"
-[ options ]
-file ...
-.br
-.B "troff \-me"
-[ options ]
-file ...
-.SH DESCRIPTION
-This manual page describes the GNU version of the \-me macros,
-which is part of the groff document formatting system.
-This version can be used with both GNU troff and Unix troff.
-This package of
-.I troff
-macro definitions provides a canned formatting
-facility for tech%nical papers in various formats.
-.PP
-The macro requests are defined below.
-Many
-.I troff
-requests are unsafe in conjunction with
-this package, however, these requests may be used with
-impunity after the first .pp:
-.nf
-.IP
-.ta \w'.sz +n 'u
-\&.bp begin new page
-\&.br break output line here
-\&.sp n insert n spacing lines
-\&.ls n (line spacing) n=1 single, n=2 double space
-\&.na no alignment of right margin
-\&.ce n center next n lines
-\&.ul n underline next n lines
-.fi
-.PP
-Output of the
-.I pic,
-.I eqn,
-.I refer,
-and
-.I tbl
-preprocessors
-is acceptable as input.
-.SH FILES
-@MACRODIR@/tmac.e
-.SH "SEE ALSO"
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@)
-.br
-\-me Reference Manual, Eric P. Allman
-.br
-Writing Papers with Groff Using \-me
-.tr &.
-.SH REQUESTS
-This list is incomplete;
-see
-.I "The \-me Reference Manual"
-for interesting details.
-.PP
-.ta \w'.eh \'x\'y\'z\' 'u +\w'Initial 'u +\w'Cause 'u
-.br
-.di x
- \ka
-.br
-.di
-.in \nau
-.ti 0
-Request Initial Cause Explanation
-.ti 0
- Value Break
-.br
-.in \nau
-.ti 0
-\&.(c - yes Begin centered block
-.ti 0
-\&.(d - no Begin delayed text
-.ti 0
-\&.(f - no Begin footnote
-.ti 0
-\&.(l - yes Begin list
-.ti 0
-\&.(q - yes Begin major quote
-.ti 0
-\&.(x \fIx\fR - no Begin indexed item in index
-.I x
-.ti 0
-\&.(z - no Begin floating keep
-.ti 0
-\&.)c - yes End centered block
-.ti 0
-\&.)d - yes End delayed text
-.ti 0
-\&.)f - yes End footnote
-.ti 0
-\&.)l - yes End list
-.ti 0
-\&.)q - yes End major quote
-.ti 0
-\&.)x - yes End index item
-.ti 0
-\&.)z - yes End floating keep
-.ti 0
-\&.++ \fIm H\fR - no Define paper section.
-.I m
-defines the part of the paper, and can be
-.B C
-(chapter),
-.B A
-(appendix),
-.B P
-(preliminary, e.g., abstract, table of contents, etc.),
-.B B
-(bibliography),
-.B RC
-(chapters renumbered from page one each chapter),
-or
-.B RA
-(appendix renumbered from page one).
-.ti 0
-\&.+c \fIT\fR - yes Begin chapter (or appendix, etc., as
-set by .++).
-.I T
-is the chapter title.
-.ti 0
-\&.1c 1 yes One column format on a new page.
-.ti 0
-\&.2c 1 yes Two column format.
-.ti 0
-\&.EN - yes Space after equation
-produced by
-.I eqn
-or
-.IR neqn .
-.ti 0
-\&.EQ \fIx y\fR - yes Precede equation; break out and
-add space.
-Equation number is
-.IR y .
-The optional argument \fIx\fR
-may be
-.I I
-to indent equation (default),
-.I L
-to left-adjust the equation, or
-.I C
-to center the equation.
-.ti 0
-\&.GE - yes End \fIgremlin\fP picture.
-.ti 0
-\&.GS - yes Begin \fIgremlin\fP picture.
-.ti 0
-\&.PE - yes End \fIpic\fP picture.
-.ti 0
-\&.PS - yes Begin \fIpic\fP picture.
-.ti 0
-\&.TE - yes End table.
-.ti 0
-\&.TH - yes End heading section of table.
-.ti 0
-\&.TS \fIx\fR - yes Begin table; if \fIx\fR is
-.I H
-table has repeated heading.
-.ti 0
-\&.b \fIx\fR no no Print
-.I x
-in boldface; if no argument switch to boldface.
-.ti 0
-\&.ba \fI+n\fR 0 yes Augments the base indent by
-.I n.
-This indent is used to set the indent on regular text
-(like paragraphs).
-.ti 0
-\&.bc no yes Begin new column
-.ti 0
-\&.bi \fIx\fR no no Print
-.I x
-in bold italics (nofill only)
-.ti 0
-\&.bu - yes Begin bulleted paragraph
-.ti 0
-\&.bx \fIx\fR no no Print \fIx\fR in a box (nofill only).
-.ti 0
-\&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no Set even footer to x y z
-.ti 0
-\&.eh \fI\'x\'y\'z\'\fR \'\'\'\' no Set even header to x y z
-.ti 0
-\&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no Set footer to x y z
-.ti 0
-\&.hx - no Suppress headers and footers on next page.
-.ti 0
-\&.he \fI\'x\'y\'z\'\fR \'\'\'\' no Set header to x y z
-.ti 0
-\&.hl - yes Draw a horizontal line
-.ti 0
-\&.i \fIx\fR no no Italicize
-.I x;
-if
-.I x
-missing, italic text follows.
-.ti 0
-\&.ip \fIx y\fR no yes Start indented paragraph,
-with hanging tag
-.IR x .
-Indentation is
-.I y
-ens (default 5).
-.ti 0
-\&.lp yes yes Start left-blocked paragraph.
-.ti 0
-\&.np 1 yes Start numbered paragraph.
-.ti 0
-\&.of \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd footer to x y z
-.ti 0
-\&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd header to x y z
-.ti 0
-\&.pd - yes Print delayed text.
-.ti 0
-\&.pp no yes Begin paragraph.
-First line indented.
-.ti 0
-\&.r yes no Roman text follows.
-.ti 0
-\&.re - no Reset tabs to default values.
-.ti 0
-\&.sh \fIn x\fR - yes Section head follows,
-font automatically bold.
-.I n
-is level of section,
-.I x
-is title of section.
-.ti 0
-\&.sk no no Leave the next page blank.
-Only one page is remembered ahead.
-.ti 0
-\&.sm \fIx\fR - no Set
-.I x
-in a smaller pointsize.
-.ti 0
-\&.sz \fI+n\fR 10p no Augment the point size by
-.I n
-points.
-.ti 0
-\&.tp no yes Begin title page.
-.ti 0
-\&.u \fIx\fR - no Underline argument (even in \fItroff\fR).
-(Nofill only).
-.ti 0
-\&.uh - yes Like .sh but unnumbered.
-.ti 0
-\&.xp \fIx\fR - no Print index
-.I x.
diff --git a/contrib/groff/tmac/mm.diff b/contrib/groff/tmac/mm.diff
deleted file mode 100644
index d6694aa..0000000
--- a/contrib/groff/tmac/mm.diff
+++ /dev/null
@@ -1,70 +0,0 @@
-*** tmac.m- Thu Aug 2 14:49:57 1990
---- tmac.m Thu Aug 2 14:55:40 1990
-***************
-*** 744,749 ****
- .fi
- .di >A
-! \!.cs 3 48
-! .if !0\\$1-\\n(:d .if !\\n(:f \\*(}y\\$4\\\\f3\\a\\\\fP\\*(}3
- .if !0\\$1-\\n(:d .if \\n(:f \\*(}y\\$4\\t\\*(}3
- .if 0\\$1-\\n(:d \\*(}y\\$4\\*(}3
---- 744,749 ----
- .fi
- .di >A
-! .cs 3 48
-! .if !0\\$1-\\n(:d .if !\\n(:f \\*(}y\\$4\?\f3\?\\a\?\fP\?\\*(}3
- .if !0\\$1-\\n(:d .if \\n(:f \\*(}y\\$4\\t\\*(}3
- .if 0\\$1-\\n(:d \\*(}y\\$4\\*(}3
-***************
-*** 750,754 ****
- .br
- \!.br
-! \!.cs 3
- .di
- .br
---- 750,754 ----
- .br
- \!.br
-! .cs 3
- .di
- .br
-***************
-*** 1397,1406 ****
- .tr ,+
- .tr |.
-- .ie \\nE \{\
-- |ds\ >8\ \f3\\\\$1+\\\\$2+\\\\$3+\\\\$4+\\\\$5+\\\\$6+\\\\$7+\\\\$8+\\\\$9\fP
-- 'br \}
-- .el \{\
- |ds\ >8\ \\\\$1+\\\\$2+\\\\$3+\\\\$4+\\\\$5+\\\\$6+\\\\$7+\\\\$8+\\\\$9
-- 'br \}
- .br
- \!.br
---- 1397,1401 ----
-***************
-*** 1407,1410 ****
---- 1402,1406 ----
- .tr ,,++||
- .di
-+ .asciify >A
- \\..
- .>7 \\*(>1
-***************
-*** 1424,1429 ****
---- 1420,1427 ----
- .tr ||++
- .di
-+ .asciify >7
- .de >A
- .de >T
-+ .if \\nE .ft 3
- .if \\\\n(.$ \\\\$1
- .if \\\\n(.$-1 \\\\$2
-***************
-*** 1435,1438 ****
---- 1433,1437 ----
- .if \\\\n(.$-7 \\\\$8
- .if \\\\n(.$-8 \\\\$9
-+ .if \\nE .ft
- \\\\..
- \\..
diff --git a/contrib/groff/tmac/msafer.man b/contrib/groff/tmac/msafer.man
deleted file mode 100644
index 0571285..0000000
--- a/contrib/groff/tmac/msafer.man
+++ /dev/null
@@ -1,56 +0,0 @@
-.ig \"-*- nroff -*-
-Copyright (C) 1989-1995 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
-..
-.TH MSAFER @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-msafer \- groff -msafer macros
-.SH SYNOPSIS
-.B groff
-.B \-msafer
-[
-.IR options .\|.\|.
-]
-[
-.IR files .\|.\|.
-]
-.SH DESCRIPTION
-The -msafer macros remove the
-.BR open ,
-.BR opena ,
-.BR pso ,
-.B sy
-and
-.B pi
-requests.
-These macros should be used when processing input from
-an untrustworthy source.
-For maximum safety,
-they should be the first -m option on the command-line.
-Normally they are invoked using the
-.B \-S
-option of groff, which will also pass
-.B @g@pic
-the
-.B \-S
-flag.
-.SH FILES
-.B @MACRODIR@/tmac.safer
-.SH "SEE ALSO"
-.BR groff (@MAN1EXT@),
-.BR @g@troff (@MAN1EXT@),
-.BR @g@pic (@MAN1EXT@)
diff --git a/contrib/groff/tmac/tmac.X b/contrib/groff/tmac/tmac.X
deleted file mode 100644
index 4219b4a..0000000
--- a/contrib/groff/tmac/tmac.X
+++ /dev/null
@@ -1,46 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr CW CR
-.ftr C CR
-.ftr CO CI
-.ftr CX CBI
-.ftr H HR
-.ftr HO HI
-.ftr HX HBI
-.ftr NX NBI
-.char \(ru \D'l .5m 0'
-.char \(ul \v'.25m'\D'l .5m 0'\v'-.25m'
-.char \(br \v'.25m'\D'l 0 -1m'\v'.75m'
-.char \(rn \v'-.75m'\D'l .5m 0'\v'.75m'
-.char ~ \v'-.55m'\\s[\\n(.s/2u]\v'.2m'\(ti\v'-.2m'\s0\v'.55m'
-.char ^ \v'-.55m'\\s[\\n(.s/2u]\v'.3m'\(ha\v'-.3m'\s0\v'.55m'
-.if !c\(va .char \(va \o'\(ua\(da'
-.if !c\(em .char \(em --
-.if !c\(en .char \(en \-
-.if !c\(fi .char \(fi fi
-.if !c\(fl .char \(fl fl
-.if !c\(ff .char \(ff ff
-.if !c\(Fi .char \(Fi ffi
-.if !c\(Fl .char \(Fl ffl
-.if !c\(ci .char \(ci \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
-.if !c\(sq .char \(sq \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
-.if !c\(ga .char \(ga \Z'\v'-.7m'\D'l .22m .18m''\h'.33m'
-.if !c\(dg .char \(dg \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0''\h'.5m'
-.if !c\(dd .char \(dd \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'
-.if !c\(lq .char \(lq ``
-.if !c\(rq .char \(rq ''
-.if !c\(Bq .char \(Bq ,,
-.if !c\(OE .char \(OE O\h'-.25m'E
-.if !c\(oe .char \(oe o\h'-.14m'e
-.if !c\(ah .char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
-.if !c\(ao .char \(ao \v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'
-.if !c\(ho .char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.if !c\(lh .tr \(lh\(lA
-.if !c\(rh .tr \(rh\(rA
-.if !c\(bq .tr \(bq,
-.if !c\(aq .tr \(aq'
-.if '\*(.T'X100' .char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u'
-.if !\n(_C .mso tmac.pspic
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.Xps b/contrib/groff/tmac/tmac.Xps
deleted file mode 100644
index 92471ab..0000000
--- a/contrib/groff/tmac/tmac.Xps
+++ /dev/null
@@ -1,44 +0,0 @@
-.do mso tmac.ps
-.nr _C \n(.C
-.cp 0
-.de Xps-char
-.char \\$1 \Z"\X'ps: invis'\\$2\X'ps: endinvis'"\\$1
-..
-.Xps-char \(bu \fS\(bu\fP
-.Xps-char \(em "\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m'"
-.Xps-char \(aq '
-.Xps-char \(bq ,
-.Xps-char \(Bq ,,
-.Xps-char \(lq ``
-.Xps-char \(rq ''
-.Xps-char \(OE OE
-.Xps-char \(oe oe
-.Xps-char \(Fn \fS\(Fn\fP
-.Xps-char \(vS \o'\(ahS'
-.Xps-char \(vs \o'\(ahs'
-.Xps-char \(vZ \o'\(ahZ'
-.Xps-char \(vz \o'\(ahz'
-.Xps-char \(/L \o'/L'
-.Xps-char \(/l \o'/l'
-.Xps-char \(:Y \o'\(adY'
-.Xps-char \(a" \(sd
-.Xps-char \(a. \v'-.6m'.
-.Xps-char \(ga "\Z'\v'-.7m'\D'l .22m .18m''\h'.33m'"
-.Xps-char \(ab \v'-.55m'\s'\\\\n(.s*6u/10u'u\s0
-.Xps-char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
-.Xps-char \(ao "\v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'"
-.Xps-char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.Xps-char \(.i i
-.Xps-char \(fo <
-.Xps-char \(fc >
-.Xps-char \(OK \s'\\\\n(.s*6u/10u'\e\s0/
-.Xps-char \(tm \v'-.3m'\s'\\\\n(.s*6u/10u'TM\s0\v'.3m'
-.Xps-char \(dd "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'"
-.Xps-char \(dg "\Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0''\h'.5m'"
-.Xps-char \(en \-
-.Xps-char \(%0 %\s'\\\\n(.s*6u/10u'\fI0\fP\s0
-.Xps-char \(lh \(->
-.Xps-char \(rh \(<-
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.a4 b/contrib/groff/tmac/tmac.a4
deleted file mode 100644
index 14a0b4c..0000000
--- a/contrib/groff/tmac/tmac.a4
+++ /dev/null
@@ -1,3 +0,0 @@
-.\" Set up groff for A4 paper.
-.pl 29.7c
-.ll 21c-2i
diff --git a/contrib/groff/tmac/tmac.an b/contrib/groff/tmac/tmac.an
deleted file mode 100644
index 7d1224d..0000000
--- a/contrib/groff/tmac/tmac.an
+++ /dev/null
@@ -1,429 +0,0 @@
-.\" Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
-.\" Written by James Clark (jjc@jclark.com)
-.\"
-.\" This file is part of groff.
-.\"
-.\" groff is free software; you can redistribute it and/or modify it under
-.\" the terms of the GNU General Public License as published by the Free
-.\" Software Foundation; either version 2, or (at your option) any later
-.\" version.
-.\"
-.\" groff is distributed in the hope that it will be useful, but WITHOUT ANY
-.\" WARRANTY; without even the implied warranty of MERCHANTABILITY or
-.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-.\" for more details.
-.\"
-.\" You should have received a copy of the GNU General Public License along
-.\" with groff; see the file COPYING. If not, write to the Free Software
-.\" Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-.\"
-.\" -rC1 => number pages continuously, rather than start each at 1
-.\" -rD1 => double-sided printing, ie different odd and even page footers
-.\" -rPnnn => number first page nnn
-.\" -rSxx => use size `xx'pt (either 10, 11, or 12) for document rather
-.\" than the default size of 10pt
-.\" -rXnnn => number pages after nnn as nnna, nnnb, nnnc, ...
-.\"
-.\" The file man.local is loaded at the end. Put local additions there.
-.\" If you need to add things to TH, use `.am TH'.
-.\"
-.
-.if !\n(.g .ab These man macros work only with groff.
-.
-.nr _C \n(.C
-.cp 0
-.
-.if !rD .nr D 0
-.if !rC .nr C 0
-.if !rS .nr S 10
-.if rP .pn 0\nP
-.
-.de set-an-margin
-. nr an-margin \\n[IN]
-..
-.
-.\" .TH title section extra1 extra2 extra3
-.de TH
-. cp 0
-.
-. de an-init \" We have to do it like this to get multiple man pages right.
-. ds an-title "\\$1
-. ds an-section "\\$2
-. ds an-extra1 "\\$3
-. ie \\n[.$]>3 .ds an-extra2 "\\$4
-. el .ds an-extra2 \"Sun Release 4.0
-. ie \\n[.$]>4 .ds an-extra3 "\\$5
-. el .ds an-extra3 \"System Programmer's Manual
-. ds an-init
-\\..
-.
-. DT
-.
-.\" use sizes similar to LaTeX
-. ie (\\nS == 11) \{\
-. nr PS 10.95z
-. nr PS-SS 10.95z
-. nr PS-SH 12z
-. nr VS 13.6p
-. \}
-. el \{\
-. ie (\\nS == 12) \{\
-. nr PS 12z
-. nr PS-SS 12z
-. nr PS-SH 14.4z
-. nr VS 14.5p
-. \}
-. el \{\
-. nr PS 10z \" default point size
-. nr PS-SS 10z
-. nr PS-SH 10.95z
-. nr VS 12p
-. \}
-. \}
-.
-. ps \\n[PS]u
-. vs \\n[VS]u
-.
-. ie '\*(.T'html' .nr IN 1.2i
-. el .nr IN 7.2n
-. nr LL 6.5i
-. PD
-. nr SN 3n \" the indentation of sub-sub-headings relative to sub-headings
-. nr an-level 1
-. set-an-margin
-. nr an-prevailing-indent \\n[IN]
-. nr an-tag-sep 1n
-.
-. nr an-no-space-flag 0
-. nr an-break-flag 0
-. nr an-div? 0
-.
-. wh 0 an-header
-. wh -1i an-footer
-. wh -.5i an-p-footer
-.
-. if (\\n[nl] > 0) \{\
-. ie \\nC .bp (\\n% + 1)
-. el .bp 1
-. \}
-..
-.
-.de DT
-. ta T .5i \" This sets tabs every .5 inches
-..
-.
-.de PD
-. ie \\n[.$] .nr PD (v;\\$1)
-. el .nr PD (.4v >? \n[.V])
-..
-.
-.de an-header
-. an-init
-. ev 1
-. ps \\n[PS]u
-. vs \\n[VS]u
-. ie '\*(.T'html' \
-. tl ''''
-. el \{\
-. sp .5i
-. tl '\\*[an-title](\\*[an-section])'\\*[an-extra3]'\\*[an-title](\\*[an-section])'
-. sp |1i
-. \}
-. ev
-. ns
-..
-.
-.de an-footer
-' bp
-..
-.
-.af an-page-letter a
-.
-.de an-p-footer
-. ev 1
-. ps \\n[PS]u
-. vs \\n[VS]u
-. ie '\*(.T'html' \{\
-. ds an-page-string "
-. ds an-extra1 "
-. ds an-extra2 "
-. \}
-. el \
-. ds an-page-string \\n%
-. if rX \{\
-. if (\\n% > \\nX) \{\
-. nr an-page-letter (\\n% - \\nX)
-. ds an-page-string \\nX\\n[an-page-letter]
-. \}
-. \}
-. ie '\*(.T'html' \
-. tl ''''
-. el \{\
-. ie \\nD \{\
-. if o .tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]'
-. if e .tl '\\*[an-page-string]'\\*[an-extra1]'\\*[an-extra2]'
-. \}
-. el \
-. tl '\\*[an-extra2]'\\*[an-extra1]'\\*[an-page-string]'
-. \}
-. ev
-..
-.
-.de SH
-. sp \\n[PD]u
-. nr an-level 1
-. set-an-margin
-. nr an-prevailing-indent \\n[IN]
-. fi
-. in \\n[an-margin]u
-. ti 0
-. it 1 an-trap
-. nr an-no-space-flag 1
-. nr an-break-flag 1
-. ps \\n[PS-SH]u
-. ft B
-. ne (2v + 1u)
-. if \\n[.$] \&\\$*
-..
-.
-.de SS
-. sp \\n[PD]u
-. nr an-level 1
-. set-an-margin
-. nr an-prevailing-indent \\n[IN]
-. fi
-. in \\n[IN]u
-. ti \\n[SN]u
-. it 1 an-trap
-. nr an-no-space-flag 1
-. nr an-break-flag 1
-. ps \\n[PS-SS]u
-. ft B
-. ne (2v + 1u)
-. if \\n[.$] \&\\$*
-..
-.
-.de B
-. it 1 an-trap
-. ft B
-. if \\n[.$] \&\\$*
-..
-.
-.de I
-. it 1 an-trap
-. ft I
-. if \\n[.$] \&\\$*
-..
-.
-.de SM
-. it 1 an-trap
-. ps -1
-. if \\n[.$] \&\\$*
-..
-.
-.de SB
-. it 1 an-trap
-. ps -1
-. ft B
-. if \\n[.$] \&\\$*
-..
-.
-.de TP
-. sp \\n[PD]u
-. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
-. it 1 an-trap
-. if !\\n[an-div?] .di an-div
-. in 0
-. nr an-div? 1
-..
-.
-.de an-trap
-. ft R
-. ps \\n[PS]u
-. vs \\n[VS]u
-. if \\n[an-break-flag] \{\
-. br
-. nr an-break-flag 0
-. \}
-. if \\n[an-no-space-flag] \{\
-. ns
-. nr an-no-space-flag 0
-. \}
-. if \\n[an-div?] .an-do-tag
-..
-.
-.de an-do-tag
-. nr an-div? 0
-. br
-. di
-. ie (\\n[dl] + \\n[an-tag-sep] > \\n[an-prevailing-indent]) \{\
-. in \\n[an-margin]u
-. ne (2v + 1u)
-. an-div
-. br
-. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
-. \}
-. el \{\
-. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
-. ti -\\n[an-prevailing-indent]u
-. chop an-div
-. ne (1v + 1u)
-\\*[an-div]\\h'|\\n[an-prevailing-indent]u'\c
-. \}
-..
-.
-.de LP
-. br
-. sp \\n[PD]u
-. ps \\n[PS]u
-. vs \\n[VS]u
-. ft R
-. in \\n[an-margin]u
-. nr an-prevailing-indent \\n[IN]
-..
-.
-.als PP LP
-.als P LP
-.
-.de IP
-. ie !\\n[.$] \{\
-. ps \\n[PS]u
-. vs \\n[VS]u
-. ft R
-. sp \\n[PD]u
-. ne (1v + 1u)
-. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
-. \}
-. el \{\
-. ie (\\n[.$] - 1) .TP "\\$2"
-. el .TP
-\&\\$1
-. \}
-..
-.
-.de HP
-. ps \\n[PS]u
-. vs \\n[VS]u
-. ft R
-. sp \\n[PD]u
-. ne (1v + 1u)
-. if \\n[.$] .nr an-prevailing-indent (n;\\$1)
-. in (\\n[an-margin]u + \\n[an-prevailing-indent]u)
-. ti \\n[an-margin]u
-..
-.
-.ds an-empty \" this is referenced to avoid looping on eg .RB ( \\ )
-.
-.de RI
-. if \\n[.$] \{\
-. ds an-result \&\\$1
-. shift
-. while (\\n[.$] >= 2) \{\
-. as an-result \,\fI\\$1\fR\/\\$2\\*[an-empty]
-. shift 2
-. \}
-. if \\n[.$] .as an-result \,\fI\\$1\fR
-\\*[an-result]
-. \}
-..
-.
-.de IR
-. if \\n[.$] \{\
-. ds an-result \&\fI\\$1\fR
-. shift
-. while (\\n[.$] >= 2) \{\
-. as an-result \/\\$1\fI\,\\$2\fR
-. shift 2
-. \}
-. if \\n[.$] .as an-result \/\\$1
-\\*[an-result]
-. \}
-..
-.
-.de IB
-. if \\n[.$] \{\
-. ds an-result \&\fI\\$1
-. shift
-. while (\\n[.$] >= 2) \{\
-. as an-result \/\fB\\$1\fI\,\\$2\\*[an-empty]
-. shift 2
-. \}
-. if \\n[.$] .as an-result \/\fB\\$1
-\\*[an-result]
-. ft R
-. \}
-..
-.
-.de BI
-. if \\n[.$] \{\
-. ds an-result \&\fB\\$1
-. shift
-. while (\\n[.$] >= 2) \{\
-. as an-result \,\fI\\$1\fB\/\\$2\\*[an-empty]
-. shift 2
-. \}
-. if \\n[.$] .as an-result \,\fI\\$1
-\\*[an-result]
-. ft R
-. \}
-..
-.
-.de RB
-. ds an-result \&
-. while (\\n[.$] >= 2) \{\
-. as an-result \fR\\$1\fB\\$2\\*[an-empty]
-. shift 2
-. \}
-. if \\n[.$] .as an-result \fR\\$1
-\\*[an-result]
-. ft R
-..
-.
-.de BR
-. ds an-result \&
-. while (\\n[.$] >= 2) \{\
-. as an-result \fB\\$1\fR\\$2\\*[an-empty]
-. shift 2
-. \}
-. if \\n[.$] .as an-result \fB\\$1
-\\*[an-result]
-. ft R
-..
-.
-.de RS
-. br
-. nr an-saved-margin\\n[an-level] \\n[an-margin]
-. nr an-saved-prevailing-indent\\n[an-level] \\n[an-prevailing-indent]
-. ie \\n[.$] .nr an-margin +(n;\\$1)
-. el .nr an-margin +\\n[an-prevailing-indent]
-. in \\n[an-margin]u
-. nr an-prevailing-indent \\n[IN]
-. nr an-level +1
-..
-.
-.de RE
-. br
-. ie \\n[.$] .nr an-level ((;\\$1) <? \\n[an-level])
-. el .nr an-level -1
-. nr an-level (1 >? \\n[an-level])
-. nr an-margin \\n[an-saved-margin\\n[an-level]]
-. nr an-prevailing-indent \\n[an-saved-prevailing-indent\\n[an-level]]
-. in \\n[an-margin]u
-..
-.
-.ds S \s[\\n[PS]]
-.ie c\[rg] .ds R \[rg]
-.el .ds R (Reg.)
-.ie c\[tm] .ds Tm \[tm]
-.el .ds Tm (TM)
-.ds lq \(lq
-.ds rq \(rq
-.
-.hy 14
-.
-.\" Load local modifications.
-.mso man.local
-.
-.cp \n(_C
-.
-.\" end of tmac.an
diff --git a/contrib/groff/tmac/tmac.andoc b/contrib/groff/tmac/tmac.andoc
deleted file mode 100644
index 8cf989c..0000000
--- a/contrib/groff/tmac/tmac.andoc
+++ /dev/null
@@ -1,12 +0,0 @@
-.\" Load either tmac.an or tmac.doc.
-.if !\n(.g .ab These macros require groff.
-.de Dd
-.rm Dd
-.do mso tmac.doc
-\\*(Dd\\
-..
-.de TH
-.rm TH
-.do mso tmac.an
-\\*(TH\\
-..
diff --git a/contrib/groff/tmac/tmac.arkup b/contrib/groff/tmac/tmac.arkup
deleted file mode 100644
index ea3113d..0000000
--- a/contrib/groff/tmac/tmac.arkup
+++ /dev/null
@@ -1,161 +0,0 @@
-.\"
-.\" A simple set of macros to provide HTML documents with basic
-.\" www functionality. It will work with any macro set.
-.\"
-.de HTML
-. if '\*(.T'html' \{\
-.\" the following line makes the vertical mode leave, so to say
-\&
-\X^html:\\$*^
-. \}
-..
-.de HTMLINDEX
-. if '\*(.T'html' \X^index:\\$*^
-..
-.\"
-.\" BODYCOLOR - $1 is foreground color
-.\" $2 is background color
-.\" $3 is the color of an active hypertext link
-.\" $4 is the color of a hypertext link not yet visited
-.\" $5 is the color of a visited hypertext link
-.\"
-.de BODYCOLOR
-. HTML <body text=\\$1 bgcolor=\\$2 link=\\$3 alink=\\$4 vlink=\\$5>
-..
-.\"
-.\" BACKGROUND - $1 is the background image file
-.\"
-.de BACKGROUND
-. HTML <body background=\\$1>
-..
-.\"
-.\" URL - $1 is the classical underlined blue text
-.\" $2 is the url
-.\" $3 is optional stuff printed immediately after $3
-.\"
-.de URL
-. ie '\*(.T'html' \{\
-. HTML <a href="\\$2">\\$1</a>\\$3
-. \}
-. el \{\
-\\$1 \(la\fC\\$2\fP\(ra\\$3
-. \}
-..
-.\"
-.\" FTP - $1 is the classical underlined blue text
-.\" $2 is the ftp url
-.\" $3 is optional stuff printed immediately after $2
-.de FTP
-. ie '\*(.T'html' \{\
-. HTML <a href=\\$2>\\$1</a>\\$3
-. \}
-. el \{\
-\\$1 \(la\fC\\$2\fP\(ra\\$3
-. \}
-..
-.\"
-.\" MAILTO - generate html email reference
-.\" $1 is the email address (without the `mailto:' prefix)
-.\" $2 is the optional name
-.\" $3 is optional stuff printed immediately after $2 (resp. $1)
-.\"
-.\" example:
-.\"
-.\" Foobar has been written by
-.\" .MAILTO fred@foo.bar "Fredrick Bloggs" .
-.\"
-.de MAILTO
-.\"
-.\" force reset after a potential heading by performing some motion..
-.\" how do we do this --fixme--
-.\" \h'\w' ''\h'-\w' '' doesn't work..
-. ie '\*(.T'html' \{\
-. ie '\\$2'' \{\
-. HTML "<a href=mailto:\\$1>\\$1</a>\\$3"
-. \}
-. el \{\
-. HTML "<a href=mailto:\\$1>\\$2</a>\\$3"
-. \}
-. \}
-. el \{\
-. ie '\\$2'' \{\
-\fC\\$1\fP\\$3
-. \}
-. el \{\
-\\$2 \(la\fC\\$1\fP\(ra\\$3
-. \}
-. \}
-..
-.\"
-.\" TAG - generate an html name $1
-.\"
-.de TAG
-. HTML <a name="\\$1"></a>
-..
-.\"
-.\" IMAGE - reference an image
-.\" $1 is the image file
-.\" $2 is the x width (default if absent 400 pixels)
-.\" $3 is the y width (default if absent is the x value)
-.\"
-.de IMAGE
-. ie '\*(.T'html' \{\
-. nr HTMLWIDTH 400
-. if '\\$2'' \{\
-. nr HTMLWIDTH \\$2
-. \}
-. nr HTMLHEIGHT \\n[HTMLWIDTH]
-. if '\\$3'' \{\
-. nr HTMLHEIGHT \\$3
-. \}
-. HTML <img src="\\$1" width=\\n[HTMLWIDTH height=\\n[HTMLHEIGHT]>
-. \}
-. el \{\
-. B1
-\(la\fC\\$1\fP\(ra
-. B2
-. \}
-..
-.\"
-.\" CDFTP - if we are processing this on machine \\$1 then we create a
-.\" FTP reference using \\$2 --> \\$3
-.\"
-.\" otherwise we create a URL from \\$2 --> \\$4
-.\"
-.\" example:
-.\"
-.\" .CDFTP "foobar" "somegnusoftware.tar.gz" \
-.\" "ftp://ftp.gnu.org/gnu/somegnusoftware.tar.gz" \
-.\" "../../../TARGZ/somegnusoftware.tar.gz"
-.\"
-.\" meaning if we are on machine foobar then generate an ftp url
-.\" to the GNU anonymous ftp server otherwise generate a file url
-.\" to a local copy (cdrom maybe)
-.\"
-.\" Useful when one machine is designated as a cdrom burner and another
-.\" designated as an appache server.
-.\" The same source for web pages can be burnt onto a CD and also
-.\" served across the network. It doesn't solve the problem of one
-.\" machine doing both though :-(
-.\"
-.\"
-.\".de CDFTP
-.\". sy /bin/rm -f /tmp/tmac.n
-.\". sy /bin/echo ".ds HOSTNAME `hostname --short`" > /tmp/tmac.n
-.\". so /tmp/tmac.n
-.\". sy /bin/rm -f /tmp/tmac.n
-.\". ie '\\*[HOSTNAME]'\\$1' \{\
-.\". FTP "\\$2" "\\$3"
-.\". \}
-.\". el \{\
-.\". URL "\\$2" "\\$4"
-.\". \}
-.\"..
-.de LINE
-. HTML <hr>
-..
-.\"
-.\" it doesn't make sense to use hyphenation with html, so we turn it off.
-.\"
-.hy 0
-.nr HY 0
diff --git a/contrib/groff/tmac/tmac.doc b/contrib/groff/tmac/tmac.doc
deleted file mode 100644
index 18197f1..0000000
--- a/contrib/groff/tmac/tmac.doc
+++ /dev/null
@@ -1,3427 +0,0 @@
-.\" Copyright (c) 1991 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. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 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.
-.\"
-.\" @(#)doc 5.8 (Berkeley) 8/5/91
-.\" Modified by jjc@jclark.com as follows: the doc-* files are assumed to be
-.\" installed as mdoc/doc-* rather than tmac.doc-* (the filename
-.\" `tmac.doc-common' would be too long); when using groff, the doc-* files
-.\" are loaded using the `mso' request.
-.\"
-.\" .mdoc-parse - attempt to parse troff request arguments
-.\" %beginstrip%
-.if \n(.g \{\
-.cp 0
-.ftr C CR
-.\}
-.if \n(.g .ig
-.de sO
-.so /usr/share/tmac/\\$1
-..
-.if !\n(.g .ig
-.de sO
-.mso mdoc/\\$1
-..
-.if t \{\
-. sO doc-ditroff
-.\}
-.if n \{\
-. sO doc-nroff
-.\}
-.sO doc-common
-.sO doc-syms
-.\" NS Db macro - start/stop DEBUG MODE
-.\" NS Db register DEBUG MODE
-.\" NS iN register DEBUG MODE (inline if 1, to stderr if 0 (default))
-.nr Db 0
-.de Db
-.ie \\n(.$==0 \{\
-. ie \\n(Db==0 \{\
-.tm DEBUGGING ON
-. nr Db 1
-. \}
-. el \{\
-.tm DEBUGGING OFF
-. nr Db 0
-. \}
-.\}
-.el \{\
-. if "\\$1"on" \{\
-.tm DEBUGGING ON
-. nr Db 1
-. \}
-. if "\\$1"off" \{\
-.tm DEBUGGING OFF
-. nr Db 0
-. \}
-.\}
-..
-.\" NS aV macro - parse argument vector (recursive) (.aV arg ... )
-.\" NS fV macro - parse argument vector (recursive) (.fV)
-.\" NS aC register argument counter (aV/fV)
-.\" NS fV register argument counter (must set to \\n(.$ prior to reuqest) (fV)
-.\" NS A[0-9] argument vector (aV/fV)
-.\" NS C[0-9] reg. arg type(1=macro, 2=arg, 3=punct-suf, 4=punct-pre) (aV/fV)
-.\" NS S[0-9] space vector (sV)
-.\" NS aP register argument pointer (aV)
-.\" NS yU local string used for debugging
-.\" NS iI local register (indent for inline debug mode)
-.\" NS mN name of calling request (set in each user requestable macro)
-.de aV
-.nr aC \\n(aC+1
-.ie "\\$1"|" \{\
-. if "\\*(mN"Op" .ds A\\n(aC \fR\\$1\fP
-. if "\\*(mN"Ar" .ds A\\n(aC \fR\\$1\fP
-. if "\\*(mN"Fl" .ds A\\n(aC \fR\\$1\fP
-. if "\\*(mN"Cm" .ds A\\n(aC \fR\\$1\fP
-. if "\\*(mN"It" .ds A\\n(aC \fR\\$1\fP
-.\}
-.el .ds A\\n(aC \\$1
-.aU \\n(aC
-.nr C\\n(aC \\n(aT
-.s\\n(aT
-.if \\n(Db \{\
-. if \\n(aT==1 .ds yU Executable
-. if \\n(aT==2 .ds yU String
-. if \\n(aT==3 .ds yU Closing Punctuation or suffix
-. if \\n(aT==4 .ds yU Opening Punctuation or prefix
-. if \\n(iN==1 \{\
-. br
-. nr iI \\n(.iu
-. in -\\n(iIu
-. if \\n(aC==1 \{\
-\&\fBDEBUG(argv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
-. \}
-\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW
-\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU
-. \}
-. if \\n(iN==0 \{\
-. if \\n(aC==1 \{\
-. tm DEBUG(argv) MACRO: `.\\*(mN' Line #: \\n(.c
-. \}
-. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW
-. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU
-. \}
-.\}
-.ie \\n(.$==1 \{\
-. nr aP 0
-. ie \\n(dZ==1 \{\
-. if \\n(oM>1 .as b1 \\*(S0
-. \}
-. el \{\
-. if \\n(oM>0 \{\
-. if \\n(fC==0 .as b1 \\*(S0
-. \}
-. \}
-. ds S0 \\*(S\\n(aC
-. if \\n(Db \{\
-. if \\n(iN==1 \{\
-\&MACRO REQUEST: \t.\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-. br
-. in \\n(iIu
-. \}
-. if \\n(iN==0 \{\
-.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-. \}
-. \}
-.\}
-.el .aV \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.de fV
-.nr aC \\n(aC+1
-.if "\\*(A\\n(aC"|" \{\
-. if "\\*(mN"Op" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-. if "\\*(mN"Ar" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-. if "\\*(mN"Fl" .ds A\\n(aC \fR\&\\*(A\\n(aC\fP
-. if "\\*(mN"Cm" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-. if "\\*(mN"It" .ds A\\n(aC \fR\\*(A\\n(aC\fP
-.\}
-.aU \\n(aC
-.nr C\\n(aC \\n(aT
-.s\\n(aT
-.if \\n(Db \{\
-. if \\n(aT==1 .ds yU Executable
-. if \\n(aT==2 .ds yU String
-. if \\n(aT==3 .ds yU Closing Punctuation or suffix
-. if \\n(aT==4 .ds yU Opening Punctuation or prefix
-. if \\n(iN==1 \{\
-. br
-. nr iI \\n(.iu
-. in -\\n(iIu
-. if \\n(aC==1 \{\
-\&\fBDEBUG(fargv) MACRO:\fP `.\\*(mN' \fBLine #:\fP \\n(.c
-. \}
-\&\t\fBArgc:\fP \\n(aC \fBArgv:\fP `\\*(A\\n(aC' \fBLength:\fP \\n(sW
-\&\t\fBSpace:\fP `\\*(S\\n(aC' \fBClass:\fP \\*(yU
-. \}
-. if \\n(iN==0 \{\
-. if \\n(aC==1 \{\
-. tm DEBUG(fargv) MACRO: `.\\*(mN' Line #: \\n(.c
-. \}
-. tm \tArgc: \\n(aC Argv: `\\*(A\\n(aC' Length: \\n(sW
-. tm \tSpace: `\\*(S\\n(aC' Class: \\*(yU
-. \}
-.\}
-.ie \\n(fV==1 \{\
-. nr aP 0
-. ie \\n(dZ==1 \{\
-. if \\n(oM>1 .as b1 \\*(S0
-. \}
-. el \{\
-. if \\n(oM>0 \{\
-. if \\n(fC==0 .as b1 \\*(S0
-. \}
-. \}
-. ds S0 \\*(S\\n(aC
-. nr fV 0
-. if \\n(Db \{\
-. ie \\n(iN \{\
-\&\tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-. br
-. in \\n(iIu
-. \}
-. el \{\
-.tm \tMACRO REQUEST: .\\*(mN \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-. \}
-. \}
-.\}
-.el \{\
-. nr fV \\n(fV-1
-. fV
-.\}
-..
-.\" NS aX macro - stuff saved strings into `b1' (used by -diag list)
-.de aX
-.nr aP \\n(aP+1
-.as b1 \&\\*(A\\n(aP
-.ie \\n(fV==1 \{\
-. nr aP 0
-. nr fV 0
-.\}
-.el \{\
-. as b1 \&\\*(sV
-. nr fV \\n(fV-1
-. aX
-.\}
-..
-.\" NS aI macro - append arg to arg vector: .aI [arg] [type] (used by .En only)
-.de aI
-.ie \\n(aC<9 \{\
-. nr aC \\n(aC+1
-. ds A\\n(aC \\$1
-. nr C\\n(aC \\$2
-. s\\$2
-. ds xV S\\n(aC
-.\}
-.el \{\
-. tm Usage: Too many arguments (maximum of 8 accepted) (#\\n(.c)
-. tm \\*(A1 \\*(A2 \\*(A3 \\*(A4 \\*(A5 \\*(A6 \\*(A7 \\*(A8 \\*(A9
-.\}
-..
-.\"
-.\" NS aZ macro - print buffer (pB) and clean up arg vectors (aY)
-.de aZ
-.pB
-.aY
-..
-.\" NS aY macro - clean up arg vector
-.de aY
-.rm C0 C1 C2 C3 C4 C5 C6 C7 C8 C9
-.rm A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
-.rm S1 S2 S3 S4 S5 S6 S7 S8 S9
-.nr aC 0
-.nr aP 0
-..
-.\" NS pB macro - test for end of vector (eol) (print b1 buffer or divert)
-.de pB
-.ie \\n(dZ==1 \{\
-. if \\n(oM==1 \{\&\\*(b1
-. rm S0
-. ds b1
-. \}
-. if \\n(oM==0 \{\
-. x2
-. \}
-.\}
-.el \{\
-. ie \\n(oM==0 \{\&\\*(b1
-. rm S0
-. ds b1
-. \}
-. el \{\
-. if ((\\n(sM==1)&(\\n(tP==0)) \{\
-. x1
-. \}
-. \}
-.\}
-.hy
-..
-.\" NS x1 macro - save buffer and divert if tP flag set
-.\" NS eB diversion string
-.\" NS b2 string save of buffer
-.\" NS lK register count of lines read from input file
-.de x1
-.nr dZ \\n(dZ+1
-.ds b2 \\*(b1
-.ds b1
-.nr lK \\n(.c
-.ev 2
-.fi
-.di eB
-..
-.\"
-.\" NS x2 macro - end diversion and print
-.\" NS b0 string local temporary
-.de x2
-.br
-.di
-.ev
-.ie (\\n(.c-\\n(lK>1) \{\
-. ds b0 \&\\*(eB\\
-. ds b1 \\*(b2\\*(b0\\*(b1
-.\}
-.el .ds b1 \\*(b2\\*(b1
-\&\\*(b1
-.rm eB b2 b0 b1
-.nr dZ \\n(dZ-1
-..
-.\" NS Fl macro - flags (appends - and prints flags)
-.\" NS cF register save current font
-.\" NS cZ register save current font size
-.de Fl
-.as b1 \&\\*(fL
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. as b1 \&\|\-\|\fP\s0
-. pB
-. \}
-. el \{\
-. ds mN Fl
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>0 \{\
-. ie (\\n(aC-\\n(aP)==0 \{\
-. as b1 \&\|\-\fP\s0
-. aZ
-. \}
-. el \{\
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 \{\
-. as b1 \&\|\-\fP\s0
-. \\*(A\\n(aP
-. \}
-. el \{\
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. if \\n(C\\n(aP==3 \{\
-. as b1 \&\|\-\|
-. \}
-. fR
-. \}
-. \}
-.\}
-..
-.\"
-.\" NS fR macro - Fl flag recursion routine (special handling)
-.\" NS jM local register
-.\" NS jN local register
-.\"
-.de fR
-.hy 0
-.nr jM \\n(C\\n(aP
-.ie \\n(jM==1 \{\
-. as b1 \&\fP\s0
-. \\*(A\\n(aP
-.\}
-.el \{\
-. nr jN \\n(aP
-. ie \\n(jM==2 \{\
-. ie !"\\*(A\\n(aP"\\*(Ba" \{\
-. ie !"\\*(A\\n(aP"\fR|\fP" \{\
-. ie "\\*(A\\n(aP"-" .as b1 \&\|\-\^\-\|
-. el .as b1 \&\|\-\\*(A\\n(aP
-. \}
-. el .as b1 \&\\*(A\\n(aP
-. \}
-. el .as b1 \&\\*(A\\n(aP
-. \}
-. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
-. ie \\n(aC==\\n(aP \{\
-. if \\n(jM==4 .as b1 \&\|\-
-. as b1 \&\fP\s0
-. aZ
-. \}
-. el \{\
-. nr aP \\n(aP+1
-. ie ((\\n(C\\n(aP==3)&(\\n(C\\n(jN==4)) .as b1 \&\|\-
-. el .as b1 \&\\*(S\\n(jN
-. fR \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.rr jM jN
-..
-.\"
-.\" NS nR macro - general name recursion routine
-.\" NS jM local register
-.\" NS jN local register
-.de nR
-.hy 0
-.nr jM \\n(C\\n(aP
-.ie \\n(jM==1 \{\
-. as b1 \&\f\\n(cF\s\\n(cZ
-. \\*(A\\n(aP
-.\}
-.el \{\
-. nr jN \\n(aP
-. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
-. el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
-. ie \\n(aC==\\n(aP \{\
-. as b1 \&\f\\n(cF\s\\n(cZ
-. aZ
-. \}
-. el \{\
-. nr aP \\n(aP+1
-. as b1 \&\\*(S\\n(jN
-. nR
-. \}
-.\}
-.rr jM jN
-..
-.\" NS Ar macro - command line `argument' macro
-.\"
-.de Ar
-.as b1 \\*(aR
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. as b1 file\ ...\fP\s0
-. pB
-. \}
-. el \{\
-. ds mN Ar
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>0 \{\
-. ie (\\n(aC-\\n(aP)==0 \{\
-. as b1 \&file\ ...\fP\s0
-. aZ
-. \}
-. el \{\
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 \{\
-. as b1 \&file\ ...\fP\s0
-. \\*(A\\n(aP
-. \}
-. el \{\
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. if \\n(C\\n(aP==3 \{\
-. as b1 \&file\ ...
-. \}
-. nR
-. \}
-. \}
-.\}
-..
-.\" NS Ad macro - Addresses
-.de Ad
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Ad address ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Ad
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(aD
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Cd macro - Config declaration (for section 4 SYNOPSIS) (not callable)
-.\" needs work - not very translatable
-.de Cd
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Cd Configuration file declaration (#\\n(.c)
-. el \{\
-. ds mN Cd
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.br
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(nM
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. ie \\n(nS \{\
-. if "\\*(mN"Cd" \{\
-. rs
-. ie \\n(nS>1 .br
-. el \{\
-. if \\n(iS==0 .nr iS \\n(Dsu
-. \}
-. in +\\n(iSu
-. ti -\\n(iSu
-. nr nS \\n(nS+1
-. \}
-. nR
-. in -\\n(iSu
-. \}
-. el .nR
-.\}
-..
-.\" NS Cm macro - Interactive command modifier (flag)
-.de Cm
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Cm Interactive command modifier ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Cm
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(cM
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Dv macro - define variable
-.de Dv
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Dv define_variable ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Dv
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(eR
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Em macro - Emphasis
-.de Em
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. tm Usage: .Em text ... \\*(Pu (#\\n(.c)
-. \}
-. el \{\
-. ds mN Em
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(eM
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Er macro - Errnotype
-.de Er
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Er ERRNOTYPE ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Er
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(eR
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Ev macro - Environment variable
-.de Ev
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Ev ENVIRONMENT_VARIABLE ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Ev
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(eV
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Fd macro - function declaration - not callable (& no err check)
-.\" NS fD register subroutine test (in synopsis only)
-.\" NS fY register subroutine count (in synopsis only) (fortran only)
-.\" NS fZ register also subroutine count (in synopsis only)
-.de Fd
-.ds mN Fd
-.if \\n(nS>0 \{\
-.\" if a variable type was the last thing given, want vertical space
-. if \\n(fX>0 \{\
-. Pp
-. nr fX 0
-. \}
-.\" if a subroutine was the last thing given, want vertical space
-. if \\n(fZ>0 \{\
-. ie \\n(fD==0 \{\
-. Pp
-. rs
-. \}
-. el .br
-. \}
-. nr fD \\n(fD+1
-.\}
-.nr cF \\n(.f
-.nr cZ \\n(.s
-\&\\*(fD\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-.br
-.ft \\n(cF
-.fs \\n(cZ
-..
-.\" NS Fr macro - function return value - not callable (at the moment)
-.de Fr
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Fr Function_return_value... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Fr
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(aR
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Ic macro - Interactive command
-.de Ic
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Ic Interactive command ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Ic
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(iC
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Li macro - literals
-.de Li
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage .Li argument ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Li
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(lI
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Or macro - Pipe symbol (OR)
-.de Or
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Or ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Or
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(iC
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Ms macro - Math symbol
-.de Ms
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Ms Math symbol ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Ms
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(sY
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Nm macro - Name of command or page topic
-.\" NS n1 string - save first invocation of .Nm
-.\" NS iS register - indent second command line in a synopsis
-.de Nm
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. ie "\\*(n1"" .tm Usage: .Nm Name(s) ... \\*(Pu (#\\n(.c)
-. el \&\\*(nM\\*(n1\fP\s0
-. \}
-. el \{\
-. ds mN Nm
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>0 \{\
-. ie \\n(aC==\\n(aP \{\
-. as b1 \&\\*(nM\\*(n1\fP\s0
-. aZ
-. \}
-. el \{\
-. as b1 \\*(nM
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 \{\
-. as b1 \&\\*(n1\fP\s0
-. \\*(A\\n(aP
-. \}
-. el \{\
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. if \\n(nS \{\
-. if "\\*(mN"Nm" \{\
-. rs
-. in -\\n(iSu
-. ie \\n(nS>1 .br
-. el \{\
-. if \\n(iS==0 \{\
-. sw \\$1
-. nr iS ((\\n(sWu+1)*\\n(fW)u
-. \}
-. \}
-. in +\\n(iSu
-. ti -\\n(iSu
-. nr nS \\n(nS+1
-. \}
-. \}
-. if "\\*(n1"" .ds n1 \\*(A\\n(aP
-. nR
-. \}
-. \}
-.\}
-..
-.\" NS Pa macro - Pathname
-.de Pa
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 \&\\*(pA~\fP\s0
-. el \{\
-. ds mN Pa
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(pA
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Sy macro - Symbolics
-.de Sy
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Sy symbolic_text ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Sy
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(sY
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Tn macro - Trade Name Macro
-.de Tn
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Tn
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(tN\\*(tF
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS nN macro - Trade Name Macro for inside of reference
-.de nN
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Tn Trade_name(s) ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Tn
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(tN
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS Va macro - variable name macro
-.de Va
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Va variable_name(s) ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Va
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. as b1 \\*(vA
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\"
-.\" NS No macro - Normal text macro (default text style if mess up)
-.de No
-.as b1 \\*(nO
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .No must be called with arguments (#\\n(.c)
-. el \{\
-. ds mN No
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 \{\
-. \\*(A\\n(aP
-. \}
-. el \{\
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-. \}
-.\}
-..
-.\"------------------------------------------------------------------------
-.\" NS Op macro - Option Expression
-.de Op
-.if \\n(aC==0 \{\
-. ds mN Op
-.\}
-.\" .ds qL \&\\*(lO
-.\" .ds qR \&\\*(rO
-.ds qL \&\\*(lB
-.ds qR \&\\*(rB
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
-..
-.\" NS Aq macro - Enclose string in angle brackets
-.de Aq
-.if \\n(aC==0 .ds mN Aq
-.ds qL \&<
-.ds qR \&>
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Bq macro - Enclose string in square brackets
-.de Bq
-.if \\n(aC==0 .ds mN Bq
-.ds qL \&\\*(lB
-.ds qR \&\\*(rB
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Dq macro - Enclose string in double quotes
-.de Dq
-.if \\n(aC==0 .ds mN Dq
-.ds qL \&\\*(Lq
-.ds qR \&\\*(Rq
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Eq macro - Enclose string in double quotes
-.de Eq
-.if \\n(aC==0 .ds mN Eq
-.ds qL \\$1
-.ds qR \\$2
-.En \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Pq macro - Enclose string in parenthesis
-.de Pq
-.if \\n(aC==0 .ds mN Pq
-.ds qL \&\\*(lP
-.ds qR \&\\*(rP
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Ql macro - Quoted literal is in file mdoc-[dit|n|g]roff (too large
-.\" an if-else to carry along recursively for `if n ...')
-.\"
-.\" NS Sq macro - Enclose string in single quotes
-.de Qq
-.if \\n(aC==0 .ds mN Qq
-.ds qL \&\\*q
-.ds qR \&\\*q
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Sq macro - Enclose string in single quotes
-.de Sq
-.if \\n(aC==0 .ds mN Sq
-.ds qL \&\\*(sL
-.ds qR \&\\*(sR
-.En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\"
-.\" NS Es macro - Set up strings for .En call
-.de Es
-.if \\n(aC==0 \{\
-. ie \\n(.$>2 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. el \{\
-. ds qL \\$1
-. ds qR \\$2
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. ds qL \\*(A\\n(aP
-. nr aP \\n(aP+1
-. ds qR \\*(A\\n(aP
-. ie \\n(aC>\\n(aP .c\\n(C\\n(aP
-. el .aZ
-.\}
-..
-.\" .tm En beg arg(A[\\n(aP])==\\*(A\\n(aP;
-.\" .tm En oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
-.\" NS En macro - Enclose string with given args (eg [ and ] etc)
-.\" NS qL string variable set by calling macro
-.\" NS qR string variable set by calling macro
-.\" NS aJ register (for vR)
-.de En
-.ie \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. as b1 \&\\*(qL\\*(qR
-. pB
-. \}
-. el \{\
-.\". as mN (En)
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. as b1 \&\\*(qL
-. \}
-.\}
-.el \{\
-. as b1 \&\\*(qL
-.\}
-.if \\n(aC>0 \{\
-. ie (\\n(aC-\\n(aP)==0 \{\
-. as b1 \&\\*(qR
-. aZ
-. \}
-. el \{\
-. ie \\n(C\\n(aC==3 \{\
-. nr aJ \\n(aC-1
-. vR
-. nr aJ \\n(aJ+1
-. ds A\\n(aJ \&\\*(qR\\*(A\\n(aJ
-. nr aJ 0
-. \}
-. el .aI \&\\*(qR 3
-. nr aP \\n(aP+1
-. if \\n(C\\n(aP==1 .\\*(A\\n(aP
-. if \\n(C\\n(aP>1 \{\
-. nr aP \\n(aP-1
-. No
-. \}
-. \}
-.\}
-..
-.\" NS vR macro - vector routine (for En, trace backwards past trail punct)
-.de vR
-.if \\n(C\\n(aJ==3 \{\
-. nr aJ \\n(aJ-1
-. vR
-.\}
-..
-.\"------------------------------------------------------------------------
-.\" NS Ao macro - Angle open
-.de Ao
-.if \\n(aC==0 .ds mN Ao
-.ds qL \&<
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Ac macro - Angle close
-.de Ac
-.if \\n(aC==0 .ds mN Ac
-.ds qR \&>
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Bo macro - Bracket open
-.de Bo
-.if \\n(aC==0 .ds mN Bo
-.ds qL \&[
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Bc macro - Bracket close
-.de Bc
-.if \\n(aC==0 .ds mN Bc
-.ds qR \&]
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Do macro - Double Quote open
-.de Do
-.if \\n(aC==0 .ds mN Do
-.ds qL \&\\*(Lq
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Dc macro - Double Quote close
-.de Dc
-.if \\n(aC==0 .ds mN Dc
-.ds qR \&\\*(Rq
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Eo macro - Enclose open
-.de Eo
-.if \\n(aC==0 .ds mN Eo
-.ds qL \\$1
-.eO \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Ec macro - Enclose close
-.de Ec
-.if \\n(aC==0 .ds mN Ec
-.ds qR \\$1
-.eC \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Oo macro - Option open
-.de Oo
-.if \\n(aC==0 .ds mN Oo
-.ds qL \&[
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Oc macro - Option close
-.de Oc
-.if \\n(aC==0 .ds mN Oc
-.ds qR \&]
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Po macro - Parenthesis open
-.de Po
-.if \\n(aC==0 .ds mN Po
-.ds qL \&(
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Pc macro - Parenthesis close
-.de Pc
-.if \\n(aC==0 .ds mN Pc
-.ds qR \&)
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Qo macro - Straight Double Quote open
-.de Qo
-.if \\n(aC==0 .ds mN Qo
-.ds qL \&\\*q
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Qc macro - Straight Double Quote close
-.de Qc
-.if \\n(aC==0 .ds mN Qc
-.ds qR \&\\*q
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS So macro - Single Quote open
-.de So
-.if \\n(aC==0 .ds mN So
-.ds qL \&\\*(sL
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Sc macro - Single Quote close
-.de Sc
-.if \\n(aC==0 .ds mN Sc
-.ds qR \&\\*(sR
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Xo macro - Extend open (continue)
-.de Xo
-.if \\n(aC==0 .ds mN Xo
-.\" .nr mN 1
-.ds qL
-.eO \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS Xe macro - Extend close (end)
-.de Xc
-.\" .nr mN 0
-.if \\n(aC==0 .ds mN Xc
-.ds qR
-.eC \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS eO macro - enclose string open
-.\" NS oM register (extension possible)
-.de eO
-.nr oM \\n(oM+1
-.\" .tm eO last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
-.ie \\n(aC==0 \{\
-. ie \\n(.$>0 \{\
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. as b1 \\*(qL
-. \}
-. el \{\
-. as b1 \\*(qL
-. if (\\n(dZ==0)&(\\n(sM==1) \{\
-. nr dZ \\n(dZ+1
-. ds b2 \\*(b1
-. ds b1
-. nr lK \\n(.c
-. ev 2
-. fi
-. di eB
-. \}
-. \}
-.\}
-.el \{\
-. as b1 \\*(qL
-.\}
-.ie \\n(aC>0 \{\
-. if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 .\\*(A\\n(aP
-. el \{\
-. nr aP \\n(aP-1
-. No
-. \}
-. \}
-. if \\n(aC==\\n(aP \{\
-. if \\n(tP==1 \{\
-.\" .tm SETTING Xt!!!
-. nr Xt 1
-. \}
-.\".\" . ds S0
-.\"CHANGED ds S0 \\*(iV
-. aY
-. \}
-.\}
-.el \{\
-. if \\n(oM>1 .as b1 \\*(sV
-.\}
-..
-.\"
-.\" NS eC macro - enclose string close
-.\" NS aa local register
-.de eC
-.nr oM \\n(oM-1
-.\" tm eC last arg==A[\\n(aC]==\\*(A\\n(aC; aP==\\n(aP; oM==\\n(oM; dZ==\\n(dZ;
-.as b1 \\*(qR
-.if \\n(aC==0 \{\
-. ie \\n(.$>0 \{\
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-. el \{\
-. ie "\\*(xB"" \{\
-. pB
-. \}
-. el \{\
-. pB
-.\\*(L\\n(lC
-. nr Xt 0
-. ds xB
-. \}
-. \}
-.\}
-.if \\n(aC>0 \{\
-. ie \\n(aC==\\n(aP \{\
-. ie \\n(oM==0 \{\
-. aZ
-. \}
-. el .aY
-. \}
-. el \{\
-. nr aa \\n(aP+1
-. if \\n(C\\n(aa==2 .as b1 \\*(S\\n(aC
-.\" tm CURRENT arg (aP==\\*(A\\n(aP and ap+1==\\*(A\\n(aa) tP==\\n(tP Xt==\\n(Xt
-. rr aa
-. if \\n(tP>0 \{\
-.\" tm UNSETTING Xt==\\n(Xt!!!!
-. if \\n(Xt>0 .nr Xt \\n(Xt-1
-.\" tm NOW Xt==\\n(Xt!!!!
-. \}
-. No
-. \}
-.\}
-..
-.\"------------------------------------------------------------------------
-.\" NS Pf macro - Prefix (calls .pF)
-.de Pf
-.if \\n(aC==0 .ds mN Pf
-.ds qL \&\\$1
-.pF \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\" NS pF macro - Prefix (for prefixing open quotes, brackets etc)
-.de pF
-.ie \\n(aC==0 \{\
-. as b1 \&\\*(qL
-. ie \\n(.$<2 \{\
-. tm Warning: Missing arguments - prefix .Pf)
-. pB
-. \}
-. el .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-.\}
-.el \{\
-. ie (\\n(aC-\\n(aP)>1 \{\
-. nr aP \\n(aP+1
-. as b1 \&\\*(A\\n(aP
-. \}
-. el .tm Warning: .Pf: trailing prefix (#\\n(.c)
-.\}
-.if \\n(aC>0 \{\
-. ie (\\n(aC-\\n(aP)==0 .aZ
-. el \{\
-. nr aP \\n(aP+1
-. c\\n(C\\n(aP
-. \}
-.\}
-..
-.\" NS Ns macro - remove space (space remove done by .aV or .fV)
-.de Ns
-.if \\n(aC==0 \{\
-. ds mN Ns
-. ie \\n(.$>0 .aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. el .tm Usage: .Ns must be called with arguments (#\\n(.c)
-.\}
-.No
-..
-.de Ap
-.if \\n(aC==0 \{\
-. ds mN Ap
-. tm Usage: Ap "cannot be first request on a line (no .Ap)" (#\\n(.c)
-.\}
-.as b1 \&'
-.No
-..
-.\" NS Hv macro - Hard (unpaddable) Space vector
-.\" NS iV string inter-vector space
-.\" NS sV string inter-argument space
-.de Hv
-.ds iV \\*(sV
-.ds sV \\*(hV
-..
-.\" NS Sv macro - Soft Space vector (troff limitation)
-.de Sv
-.ds sV \\*(iV
-..
-.\" NS Tv macro - Tab Space vector
-.de Tv
-.ds sV \\*(tV
-..
-.\" NS Sm macro - Space mode
-.\" NS sM register - default is one (space mode on)
-.nr sM 1
-.de Sm
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm "Usage: .Sm [off | on]" (#\\n(.c)
-. el \{\
-. ds mN Sm
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>0 \{\
-. nr aP \\n(aP+1
-. if "\\*(A\\n(aP"on" \{\
-. ds sV \\*(iV
-. nr sM 1
-. \}
-. if "\\*(A\\n(aP"off" \{\
-. ds sV
-. rm S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
-. nr sM 0
-. \}
-. ie \\n(aC>\\n(aP \{\
-. No
-. \}
-. el .aY
-.\}
-..
-.\"------------------------------------------------------------------------
-.\" Size and Argument type macros
-.\" NS aT macro - argument type
-.\" NS aU macro - argument type (same as .aT but uses A[1-9] strings
-.\" NS aT register argument type
-.if \n(.g \{\
-.de aT
-.nr aT 0
-.ie \\n(sW>2:(\A'\\$1'==0) \{\
-. nr aT 2
-.\}
-.el \{\
-. if \\n(sW==1 \{\
-. ie \\n(z\\$1>2 \{\
-. nr aT \\n(z\\$1
-. \}
-. el .nr aT 2
-. \}
-. if \\n(sW==2 \{\
-. ie \\n(\\$1 \{\
-. nr aT 1
-. \}
-. el .nr aT 2
-. \}
-.\}
-..
-.de aU
-.nr aT 0
-.aW \\$1
-.ie \\n(sW>2:(\A'\\*(A\\$1'==0) .nr aT 2
-.el \{\
-. if \\n(sW==1 \{\
-. ie \\n(z\\*(A\\$1>2 \{\
-. nr aT \\n(z\\*(A\\$1
-. \}
-. el .nr aT 2
-. \}
-. if \\n(sW==2 \{\
-. ie (\\n(\\*(A\\$1) \{\
-. nr aT 1
-. \}
-. el .nr aT 2
-. \}
-.\}
-..
-.\}
-.if !\n(.g \{\
-.de aT
-.nr aT 0
-.ie \\n(sW>2 \{\
-. nr aT 2
-.\}
-.el \{\
-. if \\n(sW==1 \{\
-. ie \\n(z\\$1>2 \{\
-. nr aT \\n(z\\$1
-. \}
-. el .nr aT 2
-. \}
-. if \\n(sW==2 \{\
-. ie \\n(\\$1 \{\
-. nr aT 1
-. \}
-. el .nr aT 2
-. \}
-.\}
-..
-.de aU
-.nr aT 0
-.aW \\$1
-.ie \\n(sW>2 .nr aT 2
-.el \{\
-. if \\n(sW==1 \{\
-. ie \\n(z\\*(A\\$1>2 \{\
-. nr aT \\n(z\\*(A\\$1
-. \}
-. el .nr aT 2
-. \}
-. if \\n(sW==2 \{\
-. ie (\\n(\\*(A\\$1) \{\
-. nr aT 1
-. \}
-. el .nr aT 2
-. \}
-.\}
-..
-.\}
-.\" NS s1 macro - set spacing for class type 1
-.\" NS s2 macro - set spacing for class type 2
-.\" NS s3 macro - set spacing for class type 3
-.\" NS s1 macro - set spacing for class type 1
-.\" NS s2 macro - set spacing for class type 2
-.\" NS s3 macro - set spacing for class type 3
-.\" NS s4 macro - set spacing for class type 4
-.\" NS S[0-9] string spacing
-.\" NS xX local register
-.\" NS aa local register
-.de s0
-.tm MDOC-ERROR: bogus type 0 (can't set space '\\*(A\\n(aC') (#\\n(.c)
-..
-.de s1
-.if \\n(\\*(A\\n(aC==3 \{\
-. nr xX \\n(aC-1
-. rm S\\n(xX
-. ds S\\n(aC \\*(sV
-.\}
-.if \\n(\\*(A\\n(aC==2 \{\
-. nr xX \\n(aC-1
-.\" this kludge can probably go away, but need to double check first
-. ie "\\*(A\\n(aC"Nb" .ds S\\n(xX \\*(hV
-. el .rm S\\n(xX
-.\}
-..
-.de s2
-.ds S\\n(aC \\*(sV
-..
-.de s3
-.if \\n(aC>1 \{\
-. nr xX \\n(aC-1
-. rm S\\n(xX
-.\}
-.ds S\\n(aC \\*(sV
-..
-.de s4
-.nr aa 0
-..
-.\" Class switches (on current argument aP)
-.\" NS c0 macro - catch errors (non-existent class type 0)
-.\" NS c1 macro - call request if type 1
-.\" NS c2 macro - call .No if type 2
-.\" NS c3 macro - call .No if type 3
-.\" NS c4 macro - call .No if type 4
-.de c0
-.tm MDOC-ERROR: bogus class 0 (can't determine '\\*(A\\n(aC') (#\\n(.c)
-..
-.de c1
-.\\*(A\\n(aP
-..
-.de c2
-.nr aP \\n(aP-1
-.No
-..
-.de c3
-.nr aP \\n(aP-1
-.No
-..
-.de c4
-.nr aP \\n(aP-1
-.No
-..
-.\" NS y1 macro - ignore if class 1
-.\" NS y2 macro - ignore if class 2
-.\" NS y3 macro - append if type 3
-.\" NS y4 macro - append if type 4
-.de y1
-.nr aa 1
-..
-.de y2
-.nr aa 1
-..
-.de y3
-.as b1 \\*(A\\n(aP
-.nr aP \\n(aP+1
-.n\\C\\n(aP
-..
-.de y4
-.as b1 \\*(A\\n(aP
-.nr aP \\n(aP+1
-.n\\C\\n(aP
-..
-.\"--------------------------------------------------------------------------
-.\" Ns Bf macro - Begin Font Mode (will be begin-mode/end-mode in groff & TeX)
-.\" Ns Ef macro - End Font Mode
-.de Bf
-.ds mN Bf
-.ie \\n(.$>0 \{\
-. nr bF \\n(.f
-. nr bZ \\n(.s
-. if "\\$1"Em" \&\\*(eM\c
-. if "\\$1"Li" \&\\*(lI\c
-. if "\\$1"Sy" \&\\*(sY\c
-. if "\\$1"-emphasis" \&\\*(eM\c
-. if "\\$1"-literal" \&\\*(lI\c
-. if "\\$1"-symbolic" \&\\*(sY\c
-.\}
-.el .tm Usage .Bf [Em | -emphasis | Li | -literal | Sy | -symbolic] (#\\n(.c)
-..
-.de Ef
-.ds mN Ef
-.ie \\n(.$>0 .tm Usage .Ef (does not take arguments) (#\\n(.c)
-.el \&\f\\n(bF\s\\n(bZ
-..
-.\" Ns Bk macro - Begin Keep
-.\" Ns Ek macro - End Keep
-.\" Ns kS string - keep type
-.de Bk
-.ds mN Bk
-.ie \\n(.$==0 \{\
-.tm Usage: .Bk [-lines | -words] (#\\n(.c)
-.\}
-.el \{\
-. if !"\\*(kS"" .tm .Bk: nesting keeps not implemented yet. (#\\n(.c)
-. if "\\$1"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
-. if "\\$1"-words" .Hv
-. ds kS \\$1
-.\}
-..
-.de Ek
-.ds mN Ek
-.ie \\n(.$>0 .tm Usage .Ek (does not take arguments) (#\\n(.c)
-.el \{\
-. if "\\*(kS"-lines" .tm .Bd -lines: Not implemented yet. (#\\n(.c)
-. if "\\*(kS"-words" .Sv
-. rm kS
-.\}
-..
-.\" NS Bd macro - Begin Display display-type [offset string]
-.\" NS Ed macro - end Display
-.\" NS O[0-9] registers - stack of indent
-.\" NS d[0-9] registers - display-type stack
-.de Bd
-.ds mN Bd
-.ie \\n(.$==0 \{\
-.tm Usage: .Bd [-literal | -filled | -ragged | -unfilled] [-offset [string]] [-compact] (#\\n(.c)
-.\}
-.el \{\
-. ds aa
-. nr bV 0
-. nr iD 0
-. nr dP \\n(dP+1
-. if "\\$1"-literal" \{\
-. nr iD \\n(iD+1
-. ds d\\n(dP dL
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. ie t \{\&\\*(lI
-' ta 9n 18n 27n 36n 45n 54n 63n 72n
-. \}
-. el \{\
-' ta 8n 16n 24n 32n 40n 48n 56n 64n 72n
-. \}
-. nf
-. \}
-. if "\\$1"-filled" \{\
-. nr iD \\n(iD+1
-. ds d\\n(dP dF
-. br
-. \}
-. if "\\$1"-ragged" \{\
-. nr iD \\n(iD+1
-. ds d\\n(dP dR
-. na
-. \}
-. if "\\$1"-unfilled" \{\
-. nr iD \\n(iD+1
-. ds d\\n(dP dU
-. nf
-. \}
-.\" .tm Here is argc: \\n(.$ and here is iD \\n(iD
-. if ((\\n(iD>=1)&(\\n(.$>\\n(iD)) \{\
-. bV \\$2 \\$3 \\$4
-. \}
-. if \\n(O\\n(dP>0 'in \\n(.iu+\\n(O\\n(dPu
-. if (\\n(bV==0) \{\
-. if (\\n(nS==0) \{\
-. ie "\\*(d\\n(dP"dR" .sp \\n(dVu
-. el 'sp \\n(dVu
-. \}
-. \}
-. if \\n(cR==0 .ne 2v
-. nr bV 0
-. nr iD 0
-.\}
-..
-.\" NS bV macro - resolve remaining .Bd arguments
-.de bV
-.\" .tm in bV with args: \\$1 \\$2 \\$3
-.nr iD 1
-.ds bY
-.if "\\$1"-offset" \{\
-. ds bY \\$2
-. if "\\*(bY"left" \{\
-. nr iD \\n(iD+1
-. nr O\\n(dP 0
-. \}
-. if "\\*(bY"right" \{\
-. nr iD \\n(iD+1
-. nr O\\n(dP (\\n(.l/3)u
-. \}
-. if "\\*(bY"center" \{\
-. nr iD \\n(iD+1
-. nr O\\n(dP (\\n(.l-\\n(.i)/4u
-. \}
-. if "\\*(bY"indent" \{\
-. nr iD \\n(iD+1
-. nr O\\n(dP \\n(dIu
-. \}
-. if "\\*(bY"indent-two" \{\
-. nr iD \\n(iD+1
-. nr O\\n(dP \\n(dIu+\\n(dIu
-. \}
-. if \\n(iD==1 \{\
-. nr iD \\n(iD+1
-. sW "\\*(bY"
-. ie \\n(sW>2 \{\
-. ie ((\\*(bY>9n)&(\\*(bY<100n)) \{\
-. nr O\\n(dP \\*(bY
-. \}
-. el .nr O\\n(dP (\\n(sW)*\\n(fWu
-. \}
-. el \{\
-. if \\n(sW==2 .aT \\*(bY
-. ie \\n(aT==1 \{\
-. nr O\\n(dP \\n(\\*(bY
-. \}
-. el .nr O\\n(dP \\*(bY
-. \}
-. \}
-.\}
-.if "\\$1"-compact" \{\
-. nr bV 1
-.\}
-.if \\n(iD<\\n(.$ \{\
-. ie "\\*(bY"" \{\
-. bV \\$2 \\$3
-. \}
-. el \{\
-. bV \\$3
-. \}
-.\}
-..
-.\" NS Ed macro - end display
-.de Ed
-.ds mN Ed
-.br
-.if \\n(dP==0 .tm mdoc: Extraneous .Ed
-.if "\\*(d\\n(dP"dL" \{\
-. ft \\n(cF
-. fz \\n(cZ
-.\}
-.in \\n(.iu-\\n(O\\n(dPu
-.rr O\\n(dP
-.rm d\\n(dP
-.nr dP \\n(dP-1
-.fi
-.if t .ad
-..
-.\"--------------------------------------------------------------------------
-.\" NS Bl macro - begin list (.Bl list-type)
-.\" NS L[0-9] registers - stack of list types
-.de Bl
-.ie \\n(.$==0 \{\
-.tm Usage: .Bl [[-hang | -tag] [-width]] [ -item | -enum | -bullet | -diag] (#\\n(.c)
-.\}
-.el \{\
-. ds mN Bl
-. nr aP 0
-. nr lC \\n(lC+1
-. ds A1 \\$2
-. ds A2 \\$3
-. ds A3 \\$4
-. ds A4 \\$5
-. ds A5 \\$6
-. ds A6 \\$7
-. ds A7 \\$8
-. ds A8 \\$9
-. nr fV \\n(.$-1
-. if "\\$1"-hang" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC hL
-. nr w\\n(lC 6n
-. nr tC 1
-. \}
-. if "\\$1"-tag" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC tL
-. nr tC 1
-. \}
-. if "\\$1"-item" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC iT
-. nr tC 1
-. \}
-. if "\\$1"-enum" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC nU
-. nr w\\n(lC 3n
-. nr tC 1
-. \}
-. if "\\$1"-bullet" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC bU
-. nr w\\n(lC 2n
-. nr tC 1
-. \}
-. if "\\$1"-dash" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC hU
-. nr w\\n(lC 2n
-. nr tC 1
-. \}
-. if "\\$1"-hyphen" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC hU
-. nr w\\n(lC 2n
-. nr tC 1
-. \}
-. if "\\$1"-inset" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC lL
-. nr tC 1
-. \}
-. if "\\$1"-diag" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC mL
-. nr mL 1
-. \}
-. if "\\$1"-ohang" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC oL
-. nr tC 1
-. \}
-. if "\\$1"-column" \{\
-. nr aP \\n(aP+1
-. ds L\\n(lC cL
-. \}
-. ie \\n(aP==0 \{\
-. tm \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. tm Usage: .Bl [[-inset|-tag] -width] [-item|-enum|-bullet|-diag] (#\\n(.c)
-. \}
-. el \{\
-. tY
-. if (\\n(aP==1)&(\\n(aP<\\n(.$) \{\
-. nr aP 0
-. lV
-. if "\\*(L\\n(lC"cL" \{\
-. W\\n(wV
-. nr w\\n(lC 0
-' in -\\n(eWu
-. ie \\n(v\\n(lC==1 \{\
-. nr aa 0
-. \}
-. el \{\
-. sp \\n(dVu
-. \}
-. nf
-. nr wV 0
-. \}
-. \}
-. \}
-. nr aP 0
-.\" . ds b1
-. aY
-.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
-.\}
-..
-.if \n(.g \{\
-. nr i 10
-. while \ni<100 \{\
-. nr num!\nin 1
-. nr i +1
-. \}
-.\}
-.\" NS lV macro - resolve remaining .Bl arguments
-.de lV
-.nr aP \\n(aP+1
-.if \\n(fV>=\\n(aP \{\
-. nr iD 0
-. if "\\*(A\\n(aP"-compact" \{\
-. nr iD 1
-. nr v\\n(lC 1
-. \}
-. if "\\*(A\\n(aP"-width" \{\
-. nr iD 1
-. nr aP \\n(aP+1
-. nr tW 1
-. ds t\\n(lC TagwidtH
-. ds tS \\*(A\\n(aP
-. aW \\n(aP
-. ie \\n(sW>2 \{\
-. nr w\\n(lC (\\n(sW)*\\n(fWu
-. if \\n(sW==3 \{\
-. ie \\n(.g \{\
-. if \A'\\*(tS' .if r num!\\*(tS \{\
-. nr w\\n(lC \\*(tS
-. \}
-. \}
-. el \{\
-. if (\\*(tS>9n)&(\\*(tS<99n) \{\
-. nr w\\n(lC \\*(tSu
-. \}
-. \}
-. \}
-. \}
-. el \{\
-. aT \\*(tS
-. ie \\n(aT==1 \{\
-. nr w\\n(lC \\n(\\*(tS
-. \}
-. el \{\
-. nr w\\n(lC \\*(tSu
-. \}
-. \}
-. \}
-. if "\\*(A\\n(aP"-offset" \{\
-. nr iD 1
-. nr aP \\n(aP+1
-. ie "\\*(A\\n(aP"indent" \{\
-. nr o\\n(lC \\n(Dsu
-. \}
-. el \{\
-. ds tS \\*(A\\n(aP
-. aW \\n(aP
-. ie \\n(sW>2 \{\
-. nr o\\n(lC (\\n(sW)*\\n(fWu
-. ie \\n(.g \{\
-. if \A'\\*(tS' .if r num!\\*(tS \{\
-. nr o\\n(lC \\*(tS
-. \}
-. \}
-. el \{\
-. if (\\*(tS>9n)&(\\*(tS<100n) \{\
-. nr o\\n(lC \\*(tS
-. \}
-. \}
-. \}
-. el \{\
-. ie \\n(C\\n(aP==1 .nr o\\n(lC \\n(\\*(tS
-. el .nr o\\n(lC \\*(tS
-. \}
-. \}
-. \}
-. if \\n(iD==0 \{\
-. if "\\*(L\\n(lC"cL" \{\
-. nr wV \\n(wV+1
-. ds A\\n(wV \\*(A\\n(aP
-. \}
-. \}
-. if \\n(fV>\\n(aP .lV
-.\}
-..
-.\" NS El macro - end list
-.\" NS iD local register
-.de El
-.ie \\n(.$>0 \{\
-. tm Usage: .El (#\\n(.c)
-.\}
-.el \{\
-. ds mN El
-. nr iD 0
-. if "\\*(L\\n(lC"cL" \{\
-. nr iD 1
-. cC
-. \}
-. if "\\*(L\\n(lC"nU" \{\
-. nr nU 0
-. \}
-. if \\n(mL>0 \{\
-. nr iD 1
-. nr mL 0
-. tZ
-. nr lC \\n(lC-1
-. tY
-. \}
-. if "\\*(L\\n(lC"iT" \{\
-' in \\n(.iu-\\n(o\\n(lCu
-. tZ
-. nr lC \\n(lC-1
-. tY
-. nr iD 1
-. \}
-. if "\\*(L\\n(lC"oL" \{\
-' in \\n(.iu-\\n(o\\n(lCu
-. tZ
-. nr lC \\n(lC-1
-. tY
-. nr iD 1
-. \}
-. if "\\*(L\\n(lC"lL" \{\
-' in \\n(.iu-\\n(o\\n(lCu
-. tZ
-. nr lC \\n(lC-1
-. tY
-. nr iD 1
-. \}
-. if \\n(iD==0 \{\
-. lE
-. \}
-. br
-. nr iD 0
-.\}
-..
-.\" NS It macro - list item
-.\" NS iD local register
-.\" NS aA save pA font string for section FILES (no underline if nroff)
-.de It
-.if "\\*(L\\n(lC"" \{\
-. tm Usage .Bl -list-type [-width [string] | -compact | -offset [string]] (#\\n(.c)
-. tm .It \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
-.\}
-.\" .tm Here is L[\\n(lC]==\\*(L\\n(lC
-.ne 3v
-.ie \\n(.$>0 \{\
-. ds mN It
-. ds b1
-. nr iD 0
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. if "\\*(L\\n(lC"mL" \{\
-. nr iD 1
-. nr aP 0
-. aX
-. \\*(L\\n(lC
-. \}
-. if "\\*(L\\n(lC"cL" \{\
-. ds b1
-. nr aP 0
-. nr iD 1
-. \\*(L\\n(lC
-. \}
-. if "\\*(L\\n(lC"iT" \{\
-. nr aP 0
-. nr iD 1
-. \\*(L\\n(lC
-. \}
-. if \\n(iD==0 \{\
-. fV
-.\" tm ------------------------------------------------------------------------
-.\" tm It list-type==\\*(L\\n(lC, aP==\\n(aP
-.\" tm It beg arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
-. nr oM \\n(oM+1
-. nr tP 1
-. nr aP \\n(aP+1
-. nr tX \\n(C\\n(aP
-. ds tX \\*(A\\n(aP
-. if \\n(nF==1 \{\
-. ds aA \\*(pA
-. if n .ds pA \\*(nO
-. \}
-. ie \\n(C\\n(aP==1 \{\
-. \\*(A\\n(aP
-. \}
-. el \{\
-. nr aP \\n(aP-1
-. No
-. \}
-.\" tm in It here is b1==\\*(b1
-.\" tm It mid arg(A[1])==\\*(A1; oM==\\n(oM; dZ==\\n(dZ; Xt==\\n(Xt; aC==\\n(aC
-. ie \\n(Xt==1 .ds xB \&\\*(L\\n(lC
-. el .\\*(L\\n(lC
-. \}
-. nr iD 0
-.\}
-.el .\\*(L\\n(lC
-..
-.\" NS lL macro - .It item of list-type inset
-.de lL
-.lY
-.br
-\&\\*(b1
-.nr oM \\n(oM-1
-.nr tP 0
-.ds b1
-.aY
-'fi
-..
-.\" NS hL macro - .It item of list-type hanging label (as opposed to tagged)
-.de hL
-.lX
-.nr bb \\n(w\\n(lCu+\\n(lSu
-.ti -\\n(bbu
-.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1
-.el \&\\*(b1\h'|\\n(bbu'\c
-.nr oM \\n(oM-1
-.ds b1
-.nr tP 0
-.aY
-'fi
-..
-.\" NS oL macro - .It item of list-type overhanging label
-.de oL
-.lY
-\&\\*(b1
-.br
-.nr oM \\n(oM-1
-.ds b1
-.nr tP 0
-.aY
-'fi
-..
-.\" NS iT macro - .It item of list-type [empty label]
-.de iT
-.lY
-.br
-.\" .ds b1
-.aY
-'fi
-..
-.\" NS nU macro - Enumerated list
-.\" NS nU register count
-.\" NS hU macro - Hyphen paragraph list (sub bullet list)
-.\" NS bU macro - Bullet paragraph list
-.de nU
-.nr oM \\n(oM+1
-.nr nU \\n(nU+1
-.ds b1 \&\\n(nU.
-.uL
-..
-.de bU
-.nr oM \\n(oM+1
-.nr bU \\n(bU+1
-.ds b1 \&\\*(sY\&\(bu\fP
-.uL
-..
-.de hU
-.nr oM \\n(oM+1
-.nr bU \\n(bU+1
-.ds b1 \&\\*(sY\&\-\fP
-.uL
-..
-.\" NS uL macro - .It item of list-type enum/bullet/hyphen
-.de uL
-.lX
-.nr bb \\n(w\\n(lCu+\\n(lSu
-.ti -\\n(bbu
-.ie \w\\*(b1u>=(\\n(w\\n(lCu) \&\\*(b1
-.el \&\\*(b1\h'|\\n(bbu'\c
-.nr oM \\n(oM-1
-.\" .nr dZ \\n(dZ+1
-.ds b1
-.nr tP 0
-.aY
-'fi
-..
-.\" NS mL macro - .It item of list-type diagnostic-message
-.de mL
-.nr cF \\n(.f
-.nr cZ \\n(.s
-.ie \\n(mL==1 \{\
-. nr zB \\n(.c
-. ie (\\n(zB-\\n(zA)>1 .Pp
-. el .br
-. nr zA \\n(zB
-. nr zB 0
-.\}
-.el \{\
-. nr zA \\n(.c
-. br
-.\}
-\&\\*(sY\\*(b1\f\\n(cF\s\\n(cZ\\*(lS\c
-.aY
-.ds b1
-'fi
-..
-.\" NS tL macro - .It item of list-type "tag"
-.de tL
-.\" tm in tL here is b1==\\*(b1
-.if \\n(tW==0 .lW
-.lX
-.nr bb \\n(w\\n(lCu+\\n(lSu
-.ti -\\n(bbu
-.ie (\w\\*(b1u)>(\\n(w\\n(lCu) \{\&\\*(b1
-. br
-.\}
-.el \&\\*(b1\h'|\\n(bbu'\c
-.if \\n(nF==1 \{\
-. if n .ds pA \\*(aA
-.\}
-.nr oM \\n(oM-1
-.nr tP 0
-.\" .nr dZ \\n(dZ+1
-.ds b1
-.aY
-'fi
-..
-.\" NS lW macro - resolve unknown label/tag width (if .Bl [inset | tag] only)
-.de lW
-.if !"TagwidtH"\\*(t\\n(lC" \{\
-. ie \\n(tX==1 \{\
-. ds t\\n(lN \\*(tX
-. nr w\\n(lN \\n(\\*(tX
-. \}
-. el \{\
-. ds t\\n(lN No
-. nr w\\n(lN \\n(No
-. \}
-. if !"\\*(t\\n(lC"\\*(t\\n(lN" .nr tC 1
-.\}
-..
-.\" NS lX macro - set up vertical spacing (if compact) and offset+indent (all)
-.de lX
-.ie \\n(tC \{\
-. nr tC 0
-. nr tW 0
-. if \\n(v\\n(lC==0 .sp \\n(dVu
-. in \\n(.iu+\\n(w\\n(lCu+\\n(o\\n(lCu+\\n(lSu
-.\}
-.el \{\
-. ie \\n(v\\n(lC==1 \{\
-. nr aa 0
-. \}
-. el \{\
-. sp \\n(dVu
-. \}
-.\}
-.if !\\n(cR .ne 2v
-..
-.\" NS lY macro - set up vertical spacing (if compact) and offset+indent (all)
-.de lY
-.ie \\n(tC \{\
-. nr tC 0
-. nr tW 0
-. if \\n(v\\n(lC==0 .sp \\n(dVu
-. in \\n(.iu+\\n(o\\n(lCu
-.\}
-.el \{\
-. ie \\n(v\\n(lC==1 \{\
-. nr aa 0
-. \}
-. el \{\
-. sp \\n(dVu
-. \}
-.\}
-.if !\\n(cR .ne 2v
-..
-.\" NS tS temporary string
-.\" NS hL macro - hanging list function
-.\" NS tS temporary string
-.\" NS hL macro - hanging list function
-.\" NS lT macro - tagged list function
-.\" NS lE macro - list end function
-.\" NS tX string (initial string)
-.\" NS tX register (initial class)
-.\" NS tC parameter change flag
-.\" NS Xt save current list-type flag
-.\" NS lC register - list type stack counter
-.\" NS tP register tag flag (for diversions)
-.\" NS w[0-9] register tag stack (nested tags)
-.\" NS t[0-9] register tag string stack (nested tags)
-.\" NS o[0-9] register offset stack (nested tags)
-.\" NS v[0-9] register vertical tag break stack
-.\" NS h[0-9] register horizontal tag stack (continuous if 1, break if 0)
-.nr lC 0
-.nr wV 0
-.nr w1 0
-.nr o1 0
-.nr v1 0
-.nr h1 0
-.ds t\n(lC
-.de lE
-.\" IN lC o[\\n(lC]==\\n(o\\n(lC, w[\\n(lC]==\\n(w\\n(lC,
-.ie \\n(o\\n(lC>0 \{\
-' in \\n(.iu-(\\n(w\\n(lCu)-(\\n(o\\n(lCu)-\\n(lSu
-. rr o\\n(lC
-.\}
-.el 'in \\n(.iu-\\n(w\\n(lCu-\\n(lSu
-.if \\n(lC<=0 .tm Extraneous .El call (#\\n(.c)
-.tZ
-.nr lC \\n(lC-1
-.tY
-..
-.\" NS tY macro - set up next block for list
-.\" NS tZ macro - decrement stack
-.\" NS tY register (next possible lC value)
-.de tY
-.nr tY (\\n(lC+1)
-.nr w\\n(tY 0
-.nr h\\n(tY 0
-.nr o\\n(tY 0
-.ds t\\n(tY \\*(t\\n(lC
-.ds L\\n(tY
-.nr v\\n(tY 0
-..
-.de tZ
-.rm L\\n(tY
-.rr w\\n(tY
-.rr h\\n(tY
-.rr o\\n(tY
-.rm t\\n(tY
-.rr v\\n(tY
-.nr tY \\n(tY-1
-..
-.\" initial values
-.nr w1 0
-.nr o1 0
-.nr h1 0
-.ds t1
-.nr v1 0
-.nr tY 1
-.\" NS Xr macro - cross reference (man page only)
-.de Xr
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Xr
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 .tm Usage: .Xr manpage_name [section#] \\*(Pu (#\\n(.c)
-. el \{\
-. ie \\n(C\\n(aP>2 .y\\n(C\\n(aP
-. el \{\
-. as b1 \&\\*(xR\\*(A\\n(aP\fP\s0
-. if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. if \\n(C\\n(aP==2 \{\
-. as b1 \&(\\*(A\\n(aP)
-. nr aP \\n(aP+1
-. \}
-. if \\n(aC>=\\n(aP \{\
-. c\\n(C\\n(aP
-. \}
-. \}
-. \}
-. aZ
-. \}
-.\}
-..
-.\" NS Sx macro - cross section reference
-.de Sx
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Sx Usage: .Sx Section Header \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Sx
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. as b1 \\*(sX
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS cC macro - column-list end-list
-.\" NS eW macro - column indent width
-.\" NS cI register - column indent width
-.\" NS W[1-5] macro - establish tabs for list-type column
-.de cC
-'in \\n(.iu-\\n(o\\n(lCu-\\n(w\\n(lCu
-.ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-.fi
-.tZ
-.nr lC \\n(lC-1
-.tY
-..
-.de W1
-.ta \w\\*(A1 u
-.nr eW \w\\*(A1 u
-'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-..
-.de W2
-.ta \w\\*(A1 u +\w\\*(A2 u
-.nr eW \w\\*(A1 u+\w\\*(A2 u
-'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-..
-.de W3
-.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u
-.nr eW \w\\*(A1 u+\w\\*(A2 u+\w\\*(A3 u
-'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-..
-.de W4
-.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u
-.nr eW \w\\*(A1 u+\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u
-'in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-..
-.de W5
-.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u
-.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u
-' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-..
-.\" This is packed abnormally close, intercol width should be an option
-.de W6
-.ta \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6
-.nr eW \w\\*(A1 u +\w\\*(A2 u +\w\\*(A3 u +\w\\*(A4 u +\w\\*(A5 u +\w\\*(A6
-' in \\n(.iu+\\n(eWu+\\n(o\\n(lCu
-..
-.\" NS cL macro - column items
-.de cL
-.if \\n(w\\n(lC==0 .nr w\\n(lC \\n(eWu
-.if \\n(.u==0 \{\
-. fi
-' in \\n(.iu+\\n(eWu
-.\}
-.ti -\\n(eWu
-.fV
-.nr aP \\n(aP+1
-.ie \\n(aC>=\\n(aP \{\
-. if "\\*(A\\n(aP"Ta" \{\
-. nr jJ \\n(aP-1
-. rm S\\n(jJ
-. rr jJ
-. \}
-. c\\n(C\\n(aP
-.\}
-.el .tm Usage: .It column_string [Ta [column_string ...] ] (#\\n(.c)
-..
-.\" NS Ta macro - append tab (\t)
-.de Ta
-.ie \\n(aC>0 \{\
-. nr aP \\n(aP+1
-. ie \\n(aC>=\\n(aP \{\
-. if "\\*(A\\n(aP"Ta" \{\
-. nr jJ \\n(aP-1
-. rm S\\n(jJ
-. rr jJ
-. \}
-. as b1 \\t
-. c\\n(C\\n(aP
-. \}
-. el \{\
-. as b1 \\t\\c
-. rm S\\n(aP
-. pB
-. aY
-.\" . ds b1
-. \}
-.\}
-.el \{\
-. tm Usage: Ta must follow column entry: e.g. (#\\n(.c)
-. tm .It column_string [Ta [column_string ...] ]
-.\}
-..
-.\"
-.\" NS Dl macro - display (one line) literal
-.de Dl
-'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-.in \\n(.iu+\\n(Dsu
-.ie \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. tm Usage: .Dl argument ... (#\\n(.c)
-. \}
-. el \{\
-. ds mN Dl
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. Li
-. \}
-.\}
-.el \{\
-. tm Usage: .Dl not callable by other macros (#\\n(.c)
-.\}
-.in \\n(.iu-\\n(Dsu
-..
-.\"
-.\" NS D1 macro - display (one line)
-.de D1
-'ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i
-.in \\n(.iu+\\n(Dsu
-.ie \\n(aC==0 \{\
-. ie \\n(.$==0 \{\
-. tm Usage: .D1 argument ... (#\\n(.c)
-. \}
-. el \{\
-. ds mN D1
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. nr aP \\n(aP+1
-. ie \\n(C\\n(aP==1 .\\*(A\\n(aP
-. el .No
-. \}
-.\}
-.el \{\
-. tm Usage: .D1 not callable by other macros (#\\n(.c)
-.\}
-.in \\n(.iu-\\n(Dsu
-..
-.\" NS Ex macro - DEFUNCT
-.de Ex
-.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\"
-.\" NS Ex macro - DEFUNCT
-.de Ex
-.tm Ex defunct, Use .D1: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-..
-.\"
-.\" NS Vt macro - Variable type (for forcing old style variable declarations)
-.\" this is not done in the same manner as .Ot for fortrash - clean up later
-.de Vt
-.\" if a function declaration was the last thing given, want vertical space
-.if \\n(fD>0 \{\
-. Pp
-. nr fD 0
-.\}
-.\" if a subroutine was the last thing given, want vertical space
-.if \\n(fZ>0 \{\
-. ie \\n(fX==0 \{\
-. Pp
-. rs
-. \}
-. el .br
-.\}
-.nr fX \\n(fX+1
-.nr cF \\n(.f
-.nr cZ \\n(.s
-\\*(fT\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-.ie \\n(oT==0 .br
-.el \&\ \&
-.ft \\n(cF
-.fs \\n(cZ
-..
-.\"
-.\" NS Ft macro - Function type
-.nr fZ 0
-.de Ft
-.if \\n(nS>0 \{\
-. if \\n(fZ>0 \{\
-. Pp
-. nr fD 0
-. nr fX 0
-. \}
-. if \\n(fD>0 \{\
-. Pp
-. nr fD 0
-. nr fX 0
-. \}
-. if \\n(fX>0 \{\
-. Pp
-. nr fX 0
-. \}
-. nr fY 1
-.\}
-.nr cF \\n(.f
-.nr cZ \\n(.s
-\&\\*(fT\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-.ft \\n(cF
-.fs \\n(cZ
-.\" .br
-..
-.\"
-.\" NS Ot macro - Old Function type (fortran - no newline)
-.\" Ns oT register
-.nr oT 0
-.de Ot
-.nr oT 1
-.if \\n(nS>0 \{\
-. if \\n(fZ>0 \{\
-. Pp
-. nr fD 0
-. nr fX 0
-. \}
-. if \\n(fD>0 \{\
-. Pp
-. nr fD 0
-. nr fX 0
-. \}
-. if \\n(fX>0 \{\
-. Pp
-. nr fX 0
-. \}
-. nr fY 1
-.\}
-.if \\n(.$==4 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3 \\$4
-.if \\n(.$==3 .as b1 \&\\*(fT\&\\$1 \\$2 \\$3
-.if \\n(.$==2 .as b1 \&\\*(fT\&\\$1 \\$2
-.if \\n(.$==1 .as b1 \&\\*(fT\&\\$1
-.as b1 \&\ \fP
-..
-.\"
-.\" NS Fa macro - Function arguments
-.de Fa
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Fa Function Arguments ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Fa
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.ie \\n(fC>0 \{\
-. fC
-.\}
-.el \{\
-. if \\n(aC>\\n(aP \{\
-. as b1 \\*(fA
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-. if \\n(nS>0 \{\
-. if \\n(fZ>0 .br
-. \}
-. \}
-.\}
-..
-.\" NS fC macro - interal .Fa for .FO and .Fc
-.de fC
-.ie \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-.\" . nr aa \\n(aP
-.\" . if \\n(nS>0 \{\
-. ds Fb
-. nr fB 0
-. nr Fb 0
-. fB \\*(A\\n(aP
-. if \\n(fB>1 \{\
-. rm A\\n(aP
-. rn Fb A\\n(aP
-. \}
-.\" . \}
-. if \\n(fC>1 \{\
-. as b1 \&\f\\n(cF\s\\n(cZ,\\*(S\\n(aP\\*(fA\\*(A\\n(aP\fP\s0
-.\" . as b1 \&\\,\\*(S\\n(aP\fP\s0\\*(fA\\*(A\\n(aP\fP\s0
-. \}
-. if \\n(fC==1 \{\
-. as b1 \&\|\\*(fA\\*(A\\n(aP\fP\s0
-. \}
-. nr fC \\n(fC+1
-. fC
-.\}
-.el \{\
-. aY
-.\}
-..
-.\" NS Fn macro - functions
-.\" NS fY register - dick with old style function declarations (fortran)
-.\" NS fZ register - break a line when more than one function in a synopsis
-.\"
-.de Fn
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Fn function_name function_arg(s) ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN Fn
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(nS>0 \{\
-.\" if there is/has been more than one subroutine declaration
-. if \\n(fY==0 \{\
-. if \\n(fZ>0 \{\
-. Pp
-. nr fX 0
-. nr fD 0
-. \}
-. \}
-. if \\n(fY==1 \{\
-. br
-. nr fX 0
-. nr fD 0
-. nr fY 0
-. \}
-. if \\n(fD>0 \{\
-. Pp
-. nr fX 0
-. \}
-. if \\n(fX>0 \{\
-. Pp
-. nr fD 0
-. \}
-. nr fZ \\n(fZ+1
-. nr fY 0
-. rs
-. ie \\n(nS>1 .br
-. el \{\
-. if \\n(iS==0 \{\
-. nr iS ((8)*\\n(fW)u
-. \}
-. \}
-. in +\\n(iSu
-. ti -\\n(iSu
-. nr nS \\n(nS+1
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
-. ie \\n(aC>\\n(aP \{\
-. as b1 \\*(fA
-. nr aP \\n(aP+1
-. f\\n(C\\n(aP
-. \}
-. el \{\
-. as b1 \|\\*(rp
-. aZ
-. \}
-. if \\n(nS>0 \{\
-. in -\\n(iSu
-. \}
-.\}
-..
-.\"
-.\" NS f1 macro - class switch
-.\" NS f2 macro - handle function arguments
-.\" NS f3 macro - punctuation
-.\" NS f4 macro - write out function
-.de f1
-.as b1 \\*(rp\f\\n(cF\s\\n(cZ
-.\\*(A\\n(aP
-..
-.de f2
-.if \\n(nS>0 \{\
-. ds Fb
-. nr fB 0
-. nr Fb 0
-. fB \\*(A\\n(aP
-. if \\n(fB>1 \{\
-. rm A\\n(aP
-. rn Fb A\\n(aP
-. \}
-.\}
-.as b1 \\*(A\\n(aP
-.ie \\n(aC>\\n(aP \{\
-. nr aa \\n(aP
-. nr aP \\n(aP+1
-. if \\n(C\\n(aP==2 \{\
-. as b1 \&\|\f\\n(cF\s\\n(cZ,\\*(S\\n(aa\fP\s0\|
-. \}
-. f\\n(C\\n(aP
-.\}
-.el \{\
-. as b1 \\*(rp\f\\n(cF\s\\n(cZ
-. aZ
-.\}
-..
-.de f3
-.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(A\\n(aP
-.ie \\n(aC>\\n(aP \{\
-. No
-.\}
-.el .aZ
-..
-.de f4
-.as b1 \\*(rp\f\\n(cF\s\\n(cZ\\*(S\\n(aP\\*(A\\n(aP
-.ie \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. No
-.\}
-.el .aZ
-..
-.de Fo
-.hy 0
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .Fo function_name
-. el \{\
-. ds mN Fo
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(nS>0 \{\
-.\" if there is/has been more than one subroutine declaration
-. if \\n(fY==0 \{\
-. if \\n(fZ>0 \{\
-. Pp
-. nr fX 0
-. nr fD 0
-. \}
-. \}
-. if \\n(fY==1 \{\
-. br
-. nr fX 0
-. nr fD 0
-. nr fY 0
-. \}
-. if \\n(fD>0 \{\
-. Pp
-. nr fX 0
-. \}
-. if \\n(fX>0 \{\
-. Pp
-. nr fD 0
-. \}
-. nr fZ \\n(fZ+1
-. nr fY 0
-. rs
-. ie \\n(nS>1 .br
-. el \{\
-. if \\n(iS==0 \{\
-. nr iS ((8)*\\n(fW)u
-. \}
-. \}
-. in +\\n(iSu
-. ti -\\n(iSu
-. nr nS \\n(nS+1
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr oM \\n(oM+1
-. nr fC 1
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. as b1 \\*(fN\\*(A\\n(aP\fP\s0\\*(lp
-. aY
-.\}
-..
-.de Fc
-.if \\n(aC==0 \{\
-. if \\n(.$>0 \{\
-. ds mN Fo
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.nr fC 0
-.nr oM \\n(oM-1
-.as b1 \|\\*(rp
-.ie \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. \\*(A\\n(aP
-.\}
-.el \{\
-. aZ
-.\}
-.if \\n(nS>0 \{\
-. in -\\n(iSu
-.\}
-.hy
-..
-.\" NS fb macro - if SYNOPSIS, set hard space inbetween function args
-.\" NS fb register - count of words in a function argument
-.\" NS Fb register - counter
-.\" NS Fb string - temporary string
-.de fB
-.\" .tm fB==\\n(fB, Fb==\\n(Fb, 1==\\$1 2==\\$2 3==\\$3 4==\\$4 5==\\$5 6==\\$6
-.if \\n(fB==0 \{\
-. nr fB \\n(.$
-. nr Fb 0
-. ds Fb
-.\}
-.nr Fb \\n(Fb+1
-.as Fb \&\\$1
-.if \\n(Fb<\\n(fB \{\
-. as Fb \&\\*(hV
-. fB \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-.\}
-..
-.\" NS Fc - Function close - not implemented yet
-.\" NS Fo - Function open - not implemented yet
-.\"
-.\" Very crude references, stash all reference info into strings (usual
-.\" use of b1 buffer, then b1 contents copied to string of retrievable
-.\" naming convention), print out reference on .Re request and clean up.
-.\" Ordering very limited, no fancy citations, but can do articles, journals
-.\" and books - need to add several missing options (like city etc).
-.\" should be able to grab a refer entry, massage it a wee bit (prefix
-.\" a `.' to the %[A-Z]) and not worry (ha!)
-.\"
-.\" NS Rs macro - Reference Start
-.\" NS rS register - Reference Start flag
-.\" NS rS string - Reference Start buffer name for next save (of b1 buffer)
-.de Rs
-.nr rS 1
-.rC
-.if \\n(nA==1 .Pp
-.nr Kl 0
-..
-.\" NS Re macro - Reference End
-.de Re
-.rZ
-.rC
-.nr rS 0
-..
-.\" NS rC macro - reference cleanup
-.de rC
-.nr uK 0
-.nr jK 0
-.nr nK 0
-.nr oK 0
-.nr qK 0
-.nr rK 0
-.nr tK 0
-.nr vK 0
-.nr dK 0
-.nr pK 0
-.nr bK 0
-.ds rS
-.rm U1 U2 U3 U4 U5 U6 U7 U8
-.rm uK jK nK oK rK qK tK vK dK pK bK
-..
-.\" NS rZ macro - reference print
-.de rZ
-.if \\n(uK \{\&\\*(U1,
-. nr aK 1
-. if (\\n(uK>1 \{\
-. aK
-. \}
-. nr Kl -\\n(uK
-.\}
-.if \\n(tK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \{\
-. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q.
-. \}
-. el \{\&\\*(eM\\*(tK\\*(nO.
-. \}
-. \}
-. if \\n(Kl>0 \{\
-. ie (\\n(jK==1):(\\n(bK==1) \{\&\\*q\\*(tK\\*q,
-. \}
-. el \{\&\\*(eM\\*(tK\\*(nO,
-. \}
-. \}
-.\}
-.if \\n(bK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(eM\\*(bK\\*(nO.
-. if \\n(Kl>0 \&\\*(eM\\*(bK\\*(nO,
-.\}
-.if \\n(jK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(eM\\*(jK\\*(nO.
-. if \\n(Kl>0 \&\\*(eM\\*(jK\\*(nO,
-.\}
-.if \\n(rK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(rK.
-. if \\n(Kl>0 \&\\*(rK,
-.\}
-.if \\n(nK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(nK.
-. if \\n(Kl>0 \&\\*(nK,
-.\}
-.if \\n(vK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(vK.
-. if \\n(Kl>0 \&\\*(vK,
-.\}
-.if \\n(pK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(pK.
-. if \\n(Kl>0 \&\\*(pK,
-.\}
-.if \\n(qK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(qK.
-. if \\n(Kl>0 \&\\*(qK,
-.\}
-.if \\n(dK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(dK.
-. if \\n(Kl>0 \&\\*(dK,
-.\}
-.if \\n(oK \{\
-. nr Kl \\n(Kl-1
-. if \\n(Kl==0 \&\\*(oK.
-. if \\n(Kl>0 \&\\*(oK,
-.\}
-.if \\n(Kl>0 .tm unresolved reference problem
-..
-.\" NS aK macro - print out reference authors
-.de aK
-.nr aK \\n(aK+1
-.ie (\\n(uK-\\n(aK)==0 \{\&and \\*(U\\n(aK,
-.\}
-.el \{\&\\*(U\\n(aK,
-. aK
-.\}
-..
-.\" NS %A macro - reference author(s)
-.\" NS uK register - reference author(s) counter
-.\" NS U[1-9] strings - reference author(s) names
-.de %A
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%A Author_name (#\\n(.c)
-. el \{\
-. nr uK \\n(uK+1
-. nr Kl \\n(Kl+1
-. ds rS U\\n(uK
-. ds mN %A
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %B macro - [reference] Book Name
-.\" NS bK string - Book Name
-.\" NS bK register - Book Name flag
-.de %B
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%B Book Name (#\\n(.c)
-. el \{\
-. ds mN %B
-. if \\n(rS>0 \{\
-. nr bK \\n(bK+1
-. nr Kl \\n(Kl+1
-. ds rS bK
-. \}
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. ie \\n(rS==0 \{\
-. as b1 \&\\*(eM
-. nR
-. \}
-. el .rR
-.\}
-..
-.\" NS %D macro - [reference] Date
-.\" NS dK string - Date String
-.\" NS dK register - Date flag
-.de %D
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%D Date (#\\n(.c)
-. el \{\
-. ds mN %D
-. nr dK \\n(dK+1
-. nr Kl \\n(Kl+1
-. ds rS dK
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %J macro - [reference] Journal Name
-.\" NS jK register - [reference] Journal Name flag
-.\" NS jK string - [reference] Journal Name
-.de %J
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%J Journal Name (#\\n(.c)
-. el \{\
-. ds mN %J
-. nr jK \\n(jK+1
-. ds rS jK
-. nr Kl \\n(Kl+1
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %N macro - [reference] issue number
-.\" NS nK register - [reference] issue number flag
-.\" NS nK string - [reference] issue number
-.de %N
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%N issue number (#\\n(.c)
-. el \{\
-. nr nK \\n(nK+1
-. nr Kl \\n(Kl+1
-. ds rS nK
-. ds mN %N
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %O macro - [reference] optional information
-.\" NS oK register - [reference] optional information flag
-.\" NS oK string - [reference] optional information
-.de %O
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%O optional information ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN %O
-. nr oK \\n(oK+1
-. nr Kl \\n(Kl+1
-. ds rS oK
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %P macro - [reference] page numbers
-.\" NS pK register - [reference] page number flag
-.\" NS pK string - [reference] page number
-.de %P
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%P page numbers ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN %P
-. nr pK \\n(pK+1
-. nr Kl \\n(Kl+1
-. ds rS pK
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %Q macro - Corporate or Foreign Author
-.\" NS qK string - Corporate or Foreign Author
-.\" NS qK register - Corporate or Foreign Author flag
-.de %Q
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%Q Corporate or Foreign Author (#\\n(.c)
-. el \{\
-. ds mN %Q
-. nr qK \\n(qK+1
-. nr Kl \\n(Kl+1
-. ds rS qK
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %R macro - [reference] report name
-.\" NS rK string - [reference] report name
-.\" NS rK register - [reference] report flag
-.de %R
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%R reference report (#\\n(.c)
-. el \{\
-. ds mN %R
-. nr rK \\n(rK+1
-. nr Kl \\n(Kl+1
-. ds rS rK
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS %T macro - reference title
-.\" NS tK string - reference title
-.\" NS tK register - reference title flag
-.de %T
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%T (#\\n(.c)
-. el \{\
-. ds mN %T
-. if \\n(rS>0 \{\
-. nr tK \\n(tK+1
-. nr Kl \\n(Kl+1
-. ds rS tK
-. \}
-. ds A1 \\$1
-. ds A2 \\$2
-. ds A3 \\$3
-. ds A4 \\$4
-. ds A5 \\$5
-. ds A6 \\$6
-. ds A7 \\$7
-. ds A8 \\$8
-. ds A9 \\$9
-. nr fV \\n(.$
-. fV
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-.\" . ie \\n(jS==1 \{\
-.\" . nr cF \\n(.f
-.\" . nr cZ \\n(.s
-.\" . ds qL \&\\*(Lq\\*(rA
-.\" . ds qR \&\\*(Rq\f\\n(cF\s\\n(cZ
-.\" . En \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-.\" . \}
-.\" . el \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. ie \\n(rS==0 \{\
-. as b1 \&\\*(eM
-. nR
-. \}
-. el .rR
-.\" . \}
-.\}
-..
-.\" NS %V macro - reference volume
-.\" NS vK string - reference volume
-.\" NS vK register - reference volume flag
-.de %V
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .%V Volume , ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN %V
-. nr vK \\n(vK+1
-. nr Kl \\n(Kl+1
-. ds rS vK
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. rR
-.\}
-..
-.\" NS rR macro - reference recursion routine
-.\" NS jM local register
-.\" NS jN local register
-.de rR
-.hy 0
-.nr jM \\n(C\\n(aP
-.ie \\n(jM==1 \{\
-.\" . as b1 \&\f\\n(cF\s\\n(cZ
-. ie "\\*(A\\n(aP"Tn" \{\
-. nN
-. \}
-. el \{\
-. if \\n(aC>8 .tm Usage: \\*(mN - maximum 8 arguments (#\\n(.c)
-. aI rR 1
-. \\*(A\\n(aP
-. \}
-.\}
-.el \{\
-. nr jN \\n(aP
-. ie \\n(jM==2 .as b1 \&\\*(A\\n(aP
-. el .as b1 \&\\*(A\\n(aP
-.\" . el .as b1 \&\f\\n(cF\s\\n(cZ\\*(A\\n(aP\fP\s0
-. ie \\n(aC==\\n(aP \{\
-.\" . as b1 \&\f\\n(cF\s\\n(cZ
-. rD
-. \}
-. el \{\
-. nr aP \\n(aP+1
-. as b1 \&\\*(S\\n(jN
-. rR
-. \}
-.\}
-.rr jM jN
-..
-.\" NS rD macro - save b1 buffer in to appropriate name
-.de rD
-.as \\*(rS \\*(b1
-.ds b1
-.ds rS
-.aY
-..
-.\" NS Hf macro - source include header files.
-.de Hf
-.Pp
-File:
-.Pa \\$1
-.Pp
-.nr cF \\n(.f
-.nr cZ \\n(.s
-.ie t \{\
-\&\\*(lI
-.br
-.ta +9n 18n 27n 36n 45n 54n 63n 72n
-.\}
-.el \{\
-.ta +8n 16n 24n 32n 40n 48n 56n 64n 72n
-.\}
-.nf
-.so \\$1
-.fi
-.ft \\n(cF
-.fz \\n(cZ
-.Pp
-..
-.\" NS An macro - author name
-.\" NS aN register
-.nr aN 0
-.de An
-.if \\n(nY==1 \{\
-. ie \\n(aN==1 \{\
-. br
-. \}
-. el \{\
-. nr aN 1
-. \}
-.\}
-.if \\n(aC==0 \{\
-. ie \\n(.$==0 .tm Usage: .An author_name ... \\*(Pu (#\\n(.c)
-. el \{\
-. ds mN An
-. aV \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
-. \}
-.\}
-.if \\n(aC>\\n(aP \{\
-. nr aP \\n(aP+1
-. nr cF \\n(.f
-. nr cZ \\n(.s
-. nR
-.\}
-..
-.\" NS Sf macro -defunct
-.de Sf
-.tm .Sf defunct, use prefix or Ns
-..
-.ds rV "function returns the value 0 if successful; otherwise the value -1 is returned and the global variable \\*(vAerrno\fP is set to indicate the error.
-.\" Ns Rv macro - return values
-.\" Ns rV string - standard return message
-.de Rv
-.ie \\n(.$==0 \{\
-.tm Usage: .Rv [-std] (#\\n(.c)
-.\}
-.el \{\
-. ds mN Rv
-.\" . nr aP 0
-.\" . nr lR \\n(lR+1
-.\" . ds A1 \\$2
-.\" . ds A2 \\$3
-.\" . ds A3 \\$4
-.\" . ds A4 \\$5
-.\" . ds A5 \\$6
-.\" . ds A6 \\$7
-.\" . ds A7 \\$8
-.\" . ds A8 \\$9
-.\" . nr fV \\n(.$-1
-. if "\\$1"-std" \{\
-. nr cH \\*(cH
-. if (\\n(cH<2):(\\n(cH>3) .tm Usage: .Rv -std sections 2 and 3 only
-. br
-\&The
-.Fn \\$2
-\&\\*(rV
-. \}
-.\}
-..
diff --git a/contrib/groff/tmac/tmac.dvi b/contrib/groff/tmac/tmac.dvi
deleted file mode 100644
index 634f49f..0000000
--- a/contrib/groff/tmac/tmac.dvi
+++ /dev/null
@@ -1,145 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr CR CW
-.ftr C CW
-.ftr CO CWI
-.ftr CI CWI
-.ftr TT CW
-.ftr HR H
-.\" This uses the dvi-char_1 string in font CW, dvi-char_0 otherwise.
-.char _ \R'dvi-char_ \\n(.f=\f(CW\\n(.f\fP'\\*[dvi-char_\\n[dvi-char_]]
-.char \[ul] \R'dvi-char_ \w'M'=\w'i''\\*[dvi-char_\\n[dvi-char_]]
-.\" Normally use a rule.
-.\" This is designed so that \(ul, \(rn and \(br form corners.
-.ds dvi-char_0 \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
-.\" In font CW use a real _ character.
-.ds dvi-char_1 _
-.if !c\[radicalex] .char \[radicalex] \D'R .5m -.04m'\v'.04m'
-.if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m''
-.if !c\[ru] .char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
-.if !c\[rn] .char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
-.if !c\[co] .char \[co] \
-\z\s-2\(ci\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4C\s0'u/2u'\
-\s-4C\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4C\s0'u/2u'
-.if !c\[rg] .char \[rg] \
-\z\s-2\(ci\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4R\s0'u/2u'\
-\s-4R\s0\
-\h'\w'\s-2\(ci\s0'u-\w'\s-4R\s0'u/2u'
-.if !c\[fm] .char \[fm] \v'-.35m'\s[\\n(.s*7u/10u]\[prime]\s0\v'.35m'
-.if !c\[de] .char \[de] \h'.05m'\v'-.54m'\D'c .3m'\v'.54m'\h'.05m'
-.if !c\[ct] .char \[ct] \o'c/'
-.if !c\[sq] .char \[sq] \Z'\h'.05m'\D'R .4m -.04m'\v'.04m'\h'-.04m'\
-\D'R .04m -.4m'\v'.04m'\D'R -.4m -.04m'\D'R .04m .4m''\h'.5m'
-.\"char \[sq] \h'.05m'\D'l .4m 0'\D'l 0 -.4m'\D'l -.4m 0'\D'l 0 .4m'\h'.45m'
-.if !c\[!=] .char \[!=] \[slashnot]\(eq
-.if !c\[tm] .char \[tm] \v'-.3m'\s[\\n(.s/2u]TM\s0\v'.3m'
-.if !c\[aq] .char \[aq] '
-.if !c\[bq] .char \[bq] ,
-.if !c\[Bq] .char \[Bq] ,\h'\w'\(rq'u-(2u*\w"'"u)',
-.if !c\[ho] .char \[ho] \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.if !c\[-D] .char \[-D] \Z'\v'-.1m'\h'.05m'-'D
-.if !c\[Sd] .char \[Sd] \Z'\v'-.3m'\h'.35m'-'\(pd
-.if !c\[TP] .char \[TP] I\h'-.25m'\v'-.33m'\s[\En[.s]*6u/10u]\v'.33m'D\
-\v'-.33m'\s0\v'.33m'
-.if !c\[Tp] .char \[Tp] \zlp
-.if !c\[nb] .char \[nb] \[slashnot]\(sb
-.cflags 8 \(an
-.if !c\[an] .char \[an] \h'-.167m'\(mi\h'-.167m'
-.\" Define some fractions.
-.de dvi-frac
-.if !c\[\\$1\\$2] .char \[\\$1\\$2] \
-\v'-.25m'\s[\\\\n(.s*7u/10u]\\$1\s0\v'.25m'\h'-.2m'\
-/\h'-.2m'\v'.25m'\s[\\\\n(.s*7u/10u]\\$2\s0\v'-.25m'
-..
-.dvi-frac 1 2
-.dvi-frac 3 4
-.dvi-frac 1 4
-.dvi-frac 1 8
-.dvi-frac 3 8
-.dvi-frac 5 8
-.dvi-frac 7 8
-.\" support for ISO Latin-1
-.if !c\[S1] .char \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
-.if !c\[S2] .char \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
-.if !c\[S3] .char \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
-.if !c\[Of] .char \[Of] \v'-.2m'\s'\En(.s*6u/10u'\o'_a'\s0\v'.2m'
-.if !c\[Om] .char \[Om] \v'-.2m'\s'\En(.s*6u/10u'\o'_o'\s0\v'.2m'
-.if !c\[Fo] .char \[Fo] <<
-.if !c\[Fc] .char \[Fc] >>
-.if !c\[bb] .char \[bb] |
-.if !c\[Ye] .char \[Ye] \o'-Y'
-.if !c\[Cs] .char \[Cs] \o'\[mu]o'
-.de dvi-achar
-.\" Note that character definitions are always interpreted with
-.\" compatibility mode off.
-.if !c\\$1 \{\
-.char \\$1 \\$3\
-\k[acc]\
-\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
-\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
-\\$2\
-\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
-\h'|\\\\n[acc]u'
-.\}
-.hcode \\$1\\$4
-..
-.dvi-achar \(`A \` A a
-.dvi-achar \('A \' A a
-.dvi-achar \(^A ^ A a
-.dvi-achar \(~A ~ A a
-.dvi-achar \(:A \(ad A a
-.dvi-achar \(oA \(ao A a
-.dvi-achar \(`E \` E e
-.dvi-achar \('E \' E e
-.dvi-achar \(^E ^ E e
-.dvi-achar \(:E \(ad E e
-.dvi-achar \(`I \` I i
-.dvi-achar \('I \' I i
-.dvi-achar \(^I ^ I i
-.dvi-achar \(:I \(ad I i
-.dvi-achar \(~N ~ N n
-.dvi-achar \(`O \` O o
-.dvi-achar \('O \' O o
-.dvi-achar \(^O ^ O o
-.dvi-achar \(~O ~ O o
-.dvi-achar \(:O \(ad O o
-.dvi-achar \(`U \` U u
-.dvi-achar \('U \' U u
-.dvi-achar \(^U ^ U u
-.dvi-achar \(:U \(ad U u
-.dvi-achar \('Y \' Y y
-.dvi-achar \(`a \` a a
-.dvi-achar \('a \' a a
-.dvi-achar \(^a ^ a a
-.dvi-achar \(~a ~ a a
-.dvi-achar \(:a \(ad a a
-.dvi-achar \(oa \(ao a a
-.dvi-achar \(`e \` e e
-.dvi-achar \('e \' e e
-.dvi-achar \(^e ^ e e
-.dvi-achar \(:e \(ad e e
-.dvi-achar \(`i \` \(.i i
-.dvi-achar \('i \' \(.i i
-.dvi-achar \(^i ^ \(.i i
-.dvi-achar \(:i \(ad \(.i i
-.dvi-achar \(~n ~ n n
-.dvi-achar \(`o \` o o
-.dvi-achar \('o \' o o
-.dvi-achar \(^o ^ o o
-.dvi-achar \(~o ~ o o
-.dvi-achar \(:o \(ad o o
-.dvi-achar \(`u \` u u
-.dvi-achar \('u \' u u
-.dvi-achar \(^u ^ u u
-.dvi-achar \(:u \(ad u u
-.dvi-achar \('y \' y y
-.dvi-achar \(:y \(ad y y
-.if !c\(,C .char \(,C \o'\(acC'
-.hcode \(,Cc
-.if !c\(,c .char \(,c \o'\(acc'
-.hcode \(,cc
-.cp \n(_C
-.do mso tmac.latin1
diff --git a/contrib/groff/tmac/tmac.e b/contrib/groff/tmac/tmac.e
deleted file mode 100644
index 3a4eb86..0000000
--- a/contrib/groff/tmac/tmac.e
+++ /dev/null
@@ -1,1661 +0,0 @@
-.\" @(#)tmac.e 2.31 (Berkeley) 5/21/88
-.\" Modified by James Clark for use with groff.
-.\"
-.\" Copyright (c) 1988 Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms are permitted
-.\" provided that this notice is preserved and that due credit is given
-.\" to the University of California at Berkeley. The name of the University
-.\" may not be used to endorse or promote products derived from this
-.\" software without specific prior written permission. This software
-.\" is provided ``as is'' without express or implied warranty.
-.\" %beginstrip%
-.\"
-.\"**********************************************************************
-.\"* *
-.\"* ****** - 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. *
-.\"* current address: *
-.\"* Britton-Lee, Inc. *
-.\"* 1919 Addison Street Suite 105 *
-.\"* Berkeley, California 94704 *
-.\"* *
-.\"* VERSION 2.31 First Release: 11 Sept 1978 *
-.\"* *
-.\"* Documentation is available. *
-.\"* *
-.\"**********************************************************************
-.\"
-.\" Code on .de commands:
-.\" *** a user interface macro.
-.\" &&& a user interface macro which is redefined
-.\" when used to be the real thing.
-.\" $$$ a macro which may be redefined by the user
-.\" to provide variant functions.
-.\" --- an internal macro.
-.\"
-.if !\n(.g .ig
-.de @R \" --- initialize number register to 0, if undefined
-.if !r\\$1 .nr \\$1 0
-..
-.@R pf
-.if \n(pf .nx
-.if !\n(.g .ig
-.de @S \" --- initialize string/macro to empty, if undefined
-.if !d\\$1 .ds \\$1 \" empty
-..
-.@R @\" \" debugging level
-.\" *** INTERNAL GP MACROS ***
-.de @C \" --- change ev's, taking info with us
-.nr _S \\n(.s
-.nr _V \\n(.v
-.nr _F \\n(.f
-.do ds _A \\n[.fam]
-.nr _I \\n(.i
-.ev \\$1
-.ps \\n(_S
-.vs \\n(_Vu
-.ft \\n(_F
-.do @fam \\*(_A
-'in \\n(_Iu
-.xl \\n($lu
-.lt \\n($lu
-.rr _S
-.rr _V
-.rr _F
-.rr _I
-.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
-.\}
-..
-.de @z \" --- end macro
-.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
-.if !"\\n(.z"" \
-\{\
-. tm Line \\n(c. -- 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 foot
-.ie !\\n(.$ \
-. rm |6
-.el \
-. ds |6 "\*($*
-..
-.de of \" *** define odd footer
-.ie !\\n(.$ \
-. rm |7
-.el \
-. ds |7 "\*($*
-..
-.de ep \" *** end page (must always 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
-.if (\\n(.i+\\n(.o)>=\\n(.l \
-. tm Line \\n(c. -- Offset + indent 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
-.rn |4 |0
-.rn |5 |1
-.rn |6 |2
-.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 \
-. sp |\\n(hmu \" move to header position
-.@t $h \" output header title
-.if \\n(tm<=0 \
-. nr tm \n(.Vu
-.sp |\\n(tmu \" move to top of text
-.ev
-.mk _k \" for columned output
-.if \\n(?n .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) \
-\{\
-. nr _b (\\n(ppp*\\n($vu)/200u \" compute fudge factor (must be < 1P)
-. if \\n(_bu>((\\n(bmu-\\n(fmu-((\\n(tpp*\\n($vu)/100u))/2u) \
-. nr _b (\\n(ppp*\\n($vu)/100u-\n(.Vu
-. nr _b +\\n(bmu
-.\}
-.nr _B \\n(_bu
-.ch @f
-.wh -\\n(_bu @f
-.nr _b +(\\n(ppp*\\n($vu)/100u \" add 1 paragraph v in case of 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
-. in 0
-. |h \" output the table header
-. in \\n(_iu
-. 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 VL \\n(.pu-\\n(nlu
-.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
-.ec
-.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
-.|f
-.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
-.sp |\\n(.pu-\\n(fmu-((\\n(tpp*\\n($vu)/100u) \" move to footer position
-.@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
-. nf
-. \\$1
-. br
-.\}
-..
-.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 ***
-.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 \" *** line length (global to environments)
-.xl \\$1
-.lt \\$1
-.nr $l \\n(.l
-.if (\\n($m<=1):(\\n($l>\\n(_L) \
-. nr _L \\n(.l
-..
-.rn po @O \" --- local page offset
-.de po \" *** page offset
-.@O \\$1
-.nr _o \\n(.o
-..
-.\" Redefine the 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
-.ne \\$1
-.rs
-.sp \\$1
-..
-.de n1 \" *** line numbering 1
-.nm 1
-.xl -\w'0000'u
-.nr ?n 1
-..
-.de n2 \" *** line numbering 2
-.nm \\$1
-.ie \\n(.$ \
-. xl -\w'0000'u
-.el \
-. xl \\n($lu
-..
-.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 \
-. tm Line \\n(c. -- I cannot skip multiple pages
-.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
-.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
-.di |i
-\&\\$1
-.br
-.di
-.in \\n(_Iu
-.ds |j \\*(|i\\
-.if \\w"\\*(|j" \
-\{\
-. ti -\\n(_0u
-. ie \\w"\\*(|j">=\\n(_0 \
-\{\
-\\*(|j
-. br
-. \}
-. el \\*(|j\h'|\\n(_0u'\c
-.\}
-.rr _0
-.rm |i |j
-..
-.de np \" *** numbered paragraph
-.\" use string 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 string 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
-.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
-.in \\n($iu+\\n(pou
-.if \\n(.$ \
-. in +\\$1n
-.ce 0
-.fi
-.@F \\n(pf
-.sz \\n(pp
-.sp \\n(psu
-.ne \\n(.Lv+\\n(.Vu
-.ns
-..
-.\" *** SECTION HEADINGS ***
-.de sh \" *** section heading
-.fi
-.if (\\n(si>0)&(\\n(si<1n) \
-. nr si \\n(sin
-.ce 0
-.@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($vu*\\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
-..
-.\" *** COLUMNNED OUTPUT ***
-.de 2c \" *** double columned output
-.br
-.if \\n($m>1 \
-. 1c \" revert to 1c if already 2c
-.nr $c 1
-.nr $m 2
-.if \\n(.$>1 \
-. nr $m \\$2
-.if \\n(.$>0 \
-. nr $s \\$1n \" param 1: column seperation
-.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
-.xl \\n($lu
-.mk _k
-.ns
-..
-.de 1c \" *** single columned output
-.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 24i
-..
-.\" *** 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($vu)/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
-.ec
-.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 floating keep
-.if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
-.ev 1
-.nf
-.ls 1
-.in 0
-.sp \\n(zsu
-.\\$1
-.ec
-.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
-.@(
-..
-.de )b \" *** end block
-.br
-.@)
-.if (\\n(bt=0):(\\n(.t<\\n(bt) \
-. ne \\n(dnu \" make it all on one page
-.ls 1
-.nf
-.|k
-.ec
-.fi
-.in 0
-.xl \\n($lu
-.ev
-.rm |k
-.sp \\n(bsu+\\n(.Lv-1v
-..
-.de @( \" --- begin keep
-.if !"\\n(.z"" .tm Line \\n(c. -- Illegal 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($Vu/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" .tm Line \\n(c. -- Close of a keep which has never been opened
-.nr ?k 0
-.di
-.in 0
-.ce 0
-..
-.de (c \" *** begin block centered text
-.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
-.di |c
-..
-.de )c \" *** end block centered text
-.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
-.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
-.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
-.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
-.nf
-.|c
-.ec
-.in
-.ls
-.ev
-.rm |c
-..
-.\" *** 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
-..
-.de )q \" *** end block quote
-.br
-.ev
-.sp \\n(qsu+\\n(.Lv-1v
-.nr ?k 0
-..
-.de (l \" *** begin list
-.br
-.sp \\n(bsu
-.@D 3 \\$1 \\$2
-.@M
-..
-.de )l \" *** end list
-.br
-.ev
-.sp \\n(bsu+\\n(.Lv-1v
-.nr ?k 0
-..
-.\" *** PREPROCESSOR SUPPORT ***
-.\"
-.\" EQN
-.\"
-.de EQ \" *** equation start
-.ec
-.if !\\n(?e \
-\{\
-. if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
-. @D 1 "\\$1" "\\$2"
-. @C 2
-. di |e
-.\}
-.ls 1
-.in 0
-.nf
-..
-.de EN \" *** equation end
-.br
-.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 preceeding 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 --@e: _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
-.\}
-.|e
-.sp |\\n(_qu+\\n(_Qu
-.sp \\n(esu+\\n(.Lv-1v
-.rr _q
-.rr _Q
-..
-.\"
-.\" TBL
-.\"
-.de TS \" *** table start
-.sp \\n(bsu
-.@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
-.di
-.nr _T \\n(?T
-.nr ?T 0
-.ne \\n(dnu+1v
-.nr ?T \\n(_T
-.nr _i \\n(.i
-.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
-.sp \\n(bsu+\\n(.Lv-1v
-.re
-..
-.\"
-.\" REFER
-.\"
-.de ][ \" *** refer output
-.if \\$1>5 .tm Bad arg to []
-.[\\$1
-..
-.de [0 \" --- other
-.(f
-.ip "\\*([F.\0"
-.if !"\\*([A"" \\*([A,
-.if !"\\*([T"" \\f2\\*([T\\f1\c
-.if !"\\*([T"" .if !"\\*([O"" ,\
-.ie !"\\*([O"" \\*([O
-.el .if !"\\*([T"" \&.
-.if !"\\*([D"" \\*([D.
-.@p
-.)f
-..
-.de [1 \" --- journal article
-.(f
-.ip "\\*([F.\0"
-\\*([A,
-.if !"\\*([T"" \\*(lq\\*([T,\\*(rq
-.if "\\*([V"" \\f2\\*([J\\f1,
-.if !"\\*([V"" \\f2\\*([J\\f1
-.if !"\\*([V"" \\f3\\*([V\\f1\c
-.if !"\\*([N"" (\\*([N)\c
-.if !"\\*([P"" \
-\{\
-. ie \\n([P>0 \ pp.\&
-. el \ p.\&
-\\*([P
-.\}
-.if !"\\*([I"" .if "\\*([R"" \\*([I,
-(\\*([D).
-.if !"\\*([O"" \\*([O
-.)f
-..
-.de [2 \" --- book
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\f2\\*([T,\\f1
-\\*([I\c
-.if !"\\*([C"" , \\*([C\c
- (\\*([D).
-.if !"\\*([G"" Gov't. ordering no. \\*([G
-.if !"\\*([O"" \\*([O
-.)f
-..
-.de [3 \" --- article in book
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\*(lq\\*([T,\\*(rq
-.if !"\\*([P"" pp. \\*([P
-in \\f2\\*([B\\f1, \c
-.if !"\\*([E"" ed. \\*([E, \c
-.if !"\\*([I"" \\*([I\c
-.if !"\\*([C"" , \\*([C\c
- (\\*([D).
-.if !"\\*([O"" \\*([O
-.)f
-..
-.de [4 \" --- report
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\*(lq\\*([T,\\*(rq
-\\*([R\c
-.if !"\\*([G"" \& (\\*([G)\c
-.if !"\\*([I"" , \\*([I\c
-.if !"\\*([C"" , \\*([C\c
- (\\*([D).
-.if !"\\*([O"" \\*([O
-.)f
-..
-.de [5 \" --- tm style
-.(f
-.ip "\\*([F.\0"
-\\*([A, \\f2\\*([T\\f1,
-.ie \\n(TN \\*([M.
-.el Bell Laboratories internal memorandum (\\*([D).
-.)f
-..
-.de ]<
-.$p References
-.lp
-.rm (f )f
-..
-.de ]>
-.sp
-..
-.de ]-
-.rm [V [P [A [T [N [C [B [O [R [I [E [D
-..
-.ie \n(.V<1v \
-\{\
-. ds [. \s-2\v'-.4m'\f1
-. ds .] \v'.4m'\s+2\fP
-.\}
-.el \
-\{\
-. ds [. " [
-. ds .] ]
-.\}
-.\"
-.\" 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
-..
-.\"
-.\" PIC
-.\"
-.de PS \" *** start picture: $1=height, $2=width in units or inches
-.sp 0.3
-.nr g7 \\$2
-.in (\\n(.lu-\\n(g7u)/2u
-.ne \\$1u
-.nr g7 \\n(.u
-.ls 1
-..
-.de PE \" *** end picture
-.ls
-.in
-.if \\n(g7 .fi
-.sp .6
-..
-.\"
-.\" GREMLIN
-.\"
-.de GS \" *** start gremlin picture
-.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
-.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($vu/100u \" default vs at pointsize + 20%
-..
-.de @v \" --- possibly set $v from $r
-.if (1i>=240u)&(1p<=\\n($r)&(\\n($r<=4p) .nr $v \\n($r00/1p
-..
-.de @V \" --- possibly set $V from $R
-.if (1i>=240u)&(1p<=\\n($R)&(\\n($R<=4p) .nr $V \\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
-.@E
-.ft 1
-.if \\n(.$ \&\\$1\f\\*(_F\\$2
-..
-.de i \" *** enter italic
-.@E
-.ft 2
-.if \\n(.$ \&\\$1\f\\*(_F\\$2
-..
-.de b \" *** enter boldface
-.@E
-.ft 3
-.if \\n(.$ \&\\$1\f\\*(_F\\$2
-..
-.de rb \" *** enter real boldface
-.@E
-.ft 3
-.if \\n(.$ \&\\$1\f\\*(_F\\$2
-..
-.de bi \" *** enter bold italic
-.@E
-.ft 4
-.if \\n(.$ \&\\$1\f\\*(_F\\$2
-..
-.de u \" *** enter underlined word
-\&\\$1\l'|0\(ul'\\$2
-..
-.\" a better version of u
-.if !\n(.g .ig
-.de u
-\Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
-..
-.de q \" *** enter quoted word
-\&\\*(lq\\$1\\*(rq\\$2
-..
-.de bx \" *** enter boxed word
-\k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
-..
-.de sm \" *** print in smaller font
-\s-1\\$1\\s0\\$2
-..
-.de @F \" --- change font (0 -> no change)
-.nr ~ \\$1
-.if \\n~>0 \
-. ft \\n~
-.rr ~
-..
-.\" *** FOOTNOTING ***
-.de (f \" *** begin footnote
-.ec
-.if "\\n(.z"|f" .tm Line \\n(c. -- Illegal footnote nesting
-.ie "\\n(.z"" \
-\{\
-. nr _D \\n(dn
-. nr _0 1v+\\n(nlu
-. ev 2
-. da |f
-. in 0
-. xl \\n($lu-\\n(fuu
-. @F \\n(ff
-. sz \\n(fp
-. vs \\n(.sp*\\n($Vu/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 five 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($Vu/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
-. in 0
-. xl \\n($lu-\\n(fuu
-. @F \\n(ff
-. sz \\n(fp
-. vs \\n(.sp*\\n($Vu/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
-. ds * \\*{\\n($f\\*}\k*
-. 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
-\l'2i'
-..
-.\" *** DELAYED TEXT ***
-.de (d \" *** begin delayed text
-.am |d )d
-.sp \\n(bsu
-..
-.de )d \" *** end delayed text
-.if \\n# \
-. nr $d +1
-.ds # [\\n($d]\k#
-.rr #
-..
-.de pd \" *** print delayed text
-.|d
-.rm |d
-.nr $d 1 1
-.ds # [1]\k#
-..
-.\" *** INDEXES (TABLE OF CONTENTS) ***
-.nr _x 0 1
-.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($Vu/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
-..
-.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 1
-.ds * \\*{1\\*}\k*
-.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 \
-. tm Line \\n(c. -- Bad mode to .++
-.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 CHAPTER\ \ \\n(ch
-.el .if \\n(_M=2 APPENDIX\ \ \\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 Chapter \\n(ch "\\$1"
-.el .if \\n(_M=2 \
-. $C Appendix \\n(ch "\\$1"
-..
-.de tp \" *** title page
-.hx
-.bp
-.br
-.rs
-.pn \\n%
-..
-.\" *** DATES ***
-.if \n(mo=1 .ds mo January
-.if \n(mo=2 .ds mo February
-.if \n(mo=3 .ds mo March
-.if \n(mo=4 .ds mo April
-.if \n(mo=5 .ds mo May
-.if \n(mo=6 .ds mo June
-.if \n(mo=7 .ds mo July
-.if \n(mo=8 .ds mo August
-.if \n(mo=9 .ds mo September
-.if \n(mo=10 .ds mo October
-.if \n(mo=11 .ds mo November
-.if \n(mo=12 .ds mo December
-.if \n(dw=1 .ds dw Sunday
-.if \n(dw=2 .ds dw Monday
-.if \n(dw=3 .ds dw Tuesday
-.if \n(dw=4 .ds dw Wednesday
-.if \n(dw=5 .ds dw Thursday
-.if \n(dw=6 .ds dw Friday
-.if \n(dw=7 .ds dw Saturday
-.nr y2 \n(yr%100
-.af y2 00
-.nr y4 \n(yr+1900
-.ds td \*(mo \n(dy, \n(y4
-.\" *** PARAMETRIC INITIALIZATIONS ***
-.rr x
-.nr $v \n(.v00+\n(.sp-1/\n(.sp \" vs as percentage of ps for .sz request
-.nr $V \n($v \" same for displays & footnotes
-.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
-.hy 14
-.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
-.\" *** OTHER INITIALIZATION ***
-.\" GNU pic sets this register to 1, to indicate that \x should not be used.
-.@R 0x
-.ds { \v'-0.4m'\x'\\n(0x=0*-0.2m'\s-3
-.ds } \s0\v'0.4m'
-.\" for compatibility with traditional -me
-.\" (the first will work only in compatibility mode)
-.ds [ \*{
-.ds ] \*}
-.ds < \v'0.4m'\x'\\n(0x=0*0.2m'\s-3
-.ds > \s0\v'-0.4m'
-.ds - \(em
-.\" Avoid warnings from groff -ww.
-.@S |0
-.@S |1
-.@S |2
-.@S |3
-.@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 $i\" \" paragraph base indent
-.@R $p\" \" numbered paragraph number
-.@R $r\" \" ratio of vs to ps (may override $v)
-.@R $R\" \" same for displays (may override $V)
-.@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 ?H\" \" suppress headers and footers next page?
-.@R ?I\" \" has the header trap been sprung?
-.@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
-.nr _L \n(.lu \" line length of page
-.nr $c 1 \" current column number
-.nr $f 1 1 \" footnote number
-.ds * \*{1\*}\k*\" \" footnote "name"
-.nr $d 1 1 \" delayed text number
-.ds # [1]\k#\" \" delayed text "name"
-.nr _M 1 \" chapter mode is chapter
-.ds lq \(lq\" \" left quote
-.ds rq \(rq\" \" right quote
-.em @z
-.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
-.ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
-.ds #v 0.6m
-.\" \" accents
-.ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\(aa\h'|\\n_u'
-.ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\(ga\h'|\\n_u'
-.\" \" umlaut
-.ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m)'\v'-\*(#v'\z.\h'0.2m'.\h'|\\n_u'\v'\*(#v'
-.\" \" circumflex and tilde
-.ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'^\h'|\\n_u'
-.ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'~\h'|\\n_u'
-.\" \" cedilla and czech
-.ds , \k_\h'-(\\n(.wu)',\h'|\\n_u'
-.ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\s-4v\s0\v'\*(#v'\h'|\\n_u'
-.\" \" Norwegian A or angstrom
-.ds o \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
-.ll 6.0i
-.lt 6.0i
-.de @U
-.tm The \\$1 macro has been removed from this version of the -me macros.
-..
-.de lo
-.@U lo
-..
-.de th
-.@U th
-..
-.de ac
-.@U ac
-..
diff --git a/contrib/groff/tmac/tmac.html b/contrib/groff/tmac/tmac.html
deleted file mode 100644
index 239ce0e..0000000
--- a/contrib/groff/tmac/tmac.html
+++ /dev/null
@@ -1,60 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr CW CR
-.ftr C CR
-.ftr CO CI
-.ftr CX CBI
-.ftr H HR
-.ftr HO HI
-.ftr HX HBI
-.ftr NX NBI
-.char \(ru \D'l .5m 0'
-.char \(ul \v'.25m'\D'l .5m 0'\v'-.25m'
-.char \(br \v'.25m'\D'l 0 -1m'\v'.75m'
-.char \(rn \v'-.75m'\D'l .5m 0'\v'.75m'
-.\" .char ~ \v'-.55m'\\s[\\n(.s/2u]\v'.2m'\(ti\v'-.2m'\s0\v'.55m'
-.\" .char ^ \v'-.55m'\\s[\\n(.s/2u]\v'.3m'\(ha\v'-.3m'\s0\v'.55m'
-.if !c\(va .char \(va \o'\(ua\(da'
-.if !c\(em .char \(em --
-.if !c\(en .char \(en \-
-.if !c\(fi .char \(fi fi
-.if !c\(fl .char \(fl fl
-.if !c\(ff .char \(ff ff
-.if !c\(Fi .char \(Fi ffi
-.if !c\(Fl .char \(Fl ffl
-.if !c\(ci .char \(ci \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
-.if !c\(sq .char \(sq \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
-.if !c\(ga .char \(ga \Z'\v'-.7m'\D'l .22m .18m''\h'.33m'
-.if !c\(dg .char \(dg \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0''\h'.5m'
-.if !c\(dd .char \(dd \Z'\h'.25m'\v'.15m'\D'l 0 -.8m'\v'.2m'\h'-.195m'\
-\D'l .39m 0'\v'.4m'\D'l -.39m 0''\h'.5m'
-.if !c\(lq .char \(lq ``
-.if !c\(rq .char \(rq ''
-.if !c\(Bq .char \(bq ,,
-.if !c\(OE .char \(OE O\h'-.25m'E
-.if !c\(oe .char \(oe o\h'-.14m'e
-.if !c\(ah .char \(ah \v'-.55m'\s[\En[.s]/2u]v\s0\v'.55m'
-.if !c\(ao .char \(ao \v'-.55m'\s[\En[.s]*6u/10u]\D'c .25m'\s0\v'.55m'
-.if !c\(ho .char \(ho \s[\En[.s]/2u]\v'.4m'c\v'-.4m'\s0
-.if !c\(lh .char \(lh <-
-.if !c\(rh .char \(rh ->
-.if !c\(bq .tr \(bq,
-.if !c\(aq .tr \(aq'
-.if '\*(.T'html' .char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u'
-.if !\n(_C .mso tmac.pspic
-.cp \n(_C
-.\" now turn off all headers and footers for ms, me and mm macro sets
-.if d EF .EF '''
-.if d EH .EH '''
-.if d OF .OF '''
-.if d OH .OH '''
-.if d ef .ef '''
-.if d of .of '''
-.if d oh .oh '''
-.if d eh .eh '''
-.\" it doesn't make sense to use hyphenation with html, so we turn it off.
-.hy 0
-.nr HY 0
-.\" avoid line breaks after hyphen-like characters.
-.cflags 0 -\(hy\(em\(en\[shc]
diff --git a/contrib/groff/tmac/tmac.latin1 b/contrib/groff/tmac/tmac.latin1
deleted file mode 100644
index b9c7473..0000000
--- a/contrib/groff/tmac/tmac.latin1
+++ /dev/null
@@ -1,101 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.de latin1-tr
-.if c\\$2 .if !c\\$1 .tr \\$1\\$2
-..
-.latin1-tr \[char161] \(r!
-.latin1-tr \[char162] \(ct
-.latin1-tr \[char163] \(Po
-.latin1-tr \[char164] \(Cs
-.latin1-tr \[char165] \(Ye
-.latin1-tr \[char166] \(bb
-.latin1-tr \[char167] \(sc
-.latin1-tr \[char168] \(ad
-.latin1-tr \[char169] \(co
-.latin1-tr \[char170] \(Of
-.latin1-tr \[char171] \(Fo
-.latin1-tr \[char172] \(no
-.latin1-tr \[char173] \[shc]
-.latin1-tr \[char174] \(rg
-.latin1-tr \[char175] \(a-
-.latin1-tr \[char176] \(de
-.latin1-tr \[char177] \(+-
-.latin1-tr \[char178] \(S2
-.latin1-tr \[char179] \(S3
-.latin1-tr \[char180] \(aa
-.latin1-tr \[char181] \(*m
-.latin1-tr \[char182] \(ps
-.latin1-tr \[char183] \(pc
-.latin1-tr \[char184] \(ac
-.latin1-tr \[char185] \(S1
-.latin1-tr \[char186] \(Om
-.latin1-tr \[char187] \(Fc
-.latin1-tr \[char188] \(14
-.latin1-tr \[char189] \(12
-.latin1-tr \[char190] \(34
-.latin1-tr \[char191] \(r?
-.latin1-tr \[char192] \(`A
-.latin1-tr \[char193] \('A
-.latin1-tr \[char194] \(^A
-.latin1-tr \[char195] \(~A
-.latin1-tr \[char196] \(:A
-.latin1-tr \[char197] \(oA
-.latin1-tr \[char198] \(AE
-.latin1-tr \[char199] \(,C
-.latin1-tr \[char200] \(`E
-.latin1-tr \[char201] \('E
-.latin1-tr \[char202] \(^E
-.latin1-tr \[char203] \(:E
-.latin1-tr \[char204] \(`I
-.latin1-tr \[char205] \('I
-.latin1-tr \[char206] \(^I
-.latin1-tr \[char207] \(:I
-.latin1-tr \[char208] \(-D
-.latin1-tr \[char209] \(~N
-.latin1-tr \[char210] \(`O
-.latin1-tr \[char211] \('O
-.latin1-tr \[char212] \(^O
-.latin1-tr \[char213] \(~O
-.latin1-tr \[char214] \(:O
-.latin1-tr \[char215] \(mu
-.latin1-tr \[char216] \(/O
-.latin1-tr \[char217] \(`U
-.latin1-tr \[char218] \('U
-.latin1-tr \[char219] \(^U
-.latin1-tr \[char220] \(:U
-.latin1-tr \[char221] \('Y
-.latin1-tr \[char222] \(TP
-.latin1-tr \[char223] \(ss
-.latin1-tr \[char224] \(`a
-.latin1-tr \[char225] \('a
-.latin1-tr \[char226] \(^a
-.latin1-tr \[char227] \(~a
-.latin1-tr \[char228] \(:a
-.latin1-tr \[char229] \(oa
-.latin1-tr \[char230] \(ae
-.latin1-tr \[char231] \(,c
-.latin1-tr \[char232] \(`e
-.latin1-tr \[char233] \('e
-.latin1-tr \[char234] \(^e
-.latin1-tr \[char235] \(:e
-.latin1-tr \[char236] \(`i
-.latin1-tr \[char237] \('i
-.latin1-tr \[char238] \(^i
-.latin1-tr \[char239] \(:i
-.latin1-tr \[char240] \(Sd
-.latin1-tr \[char241] \(~n
-.latin1-tr \[char242] \(`o
-.latin1-tr \[char243] \('o
-.latin1-tr \[char244] \(^o
-.latin1-tr \[char245] \(~o
-.latin1-tr \[char246] \(:o
-.latin1-tr \[char247] \(di
-.latin1-tr \[char248] \(/o
-.latin1-tr \[char249] \(`u
-.latin1-tr \[char250] \('u
-.latin1-tr \[char251] \(^u
-.latin1-tr \[char252] \(:u
-.latin1-tr \[char253] \('y
-.latin1-tr \[char254] \(Tp
-.latin1-tr \[char255] \(:y
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.lbp b/contrib/groff/tmac/tmac.lbp
deleted file mode 100644
index 3cba12c..0000000
--- a/contrib/groff/tmac/tmac.lbp
+++ /dev/null
@@ -1,13 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr CW CR
-.ftr C CR
-.ftr CO CI
-.ftr H HR
-.ftr HO HI
-.ftr HX HBI
-.ftr Hr HNR
-.ftr Hi HNI
-.ftr Hb HNB
-.ftr Hx HNBI
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.lj4 b/contrib/groff/tmac/tmac.lj4
deleted file mode 100644
index 658b9a7..0000000
--- a/contrib/groff/tmac/tmac.lj4
+++ /dev/null
@@ -1,18 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr CW CR
-.ftr C CR
-.ftr CX CBI
-.ftr H UR
-.ftr HR UR
-.ftr HB UB
-.ftr HBI UBI
-.ftr HI UI
-.ftr HO UI
-.ftr HX UBI
-.\" This is designed so that \(ul, \(rn and \(br form corners.
-.if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m''
-.if !c\[ru] .char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m'
-.if !c\[rn] .char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m'
-.if !c\[ul] .char \[ul] \Z'\v'.23m'\D'R .54m .04m''\h'.5m'
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.man b/contrib/groff/tmac/tmac.man
deleted file mode 100644
index 70abd5b..0000000
--- a/contrib/groff/tmac/tmac.man
+++ /dev/null
@@ -1 +0,0 @@
-.do mso tmac.@TMAC_AN_PREFIX@an
diff --git a/contrib/groff/tmac/tmac.mandoc b/contrib/groff/tmac/tmac.mandoc
deleted file mode 100644
index 9318ad9..0000000
--- a/contrib/groff/tmac/tmac.mandoc
+++ /dev/null
@@ -1 +0,0 @@
-.do mso tmac.andoc
diff --git a/contrib/groff/tmac/tmac.markup b/contrib/groff/tmac/tmac.markup
deleted file mode 100644
index 3395eca..0000000
--- a/contrib/groff/tmac/tmac.markup
+++ /dev/null
@@ -1 +0,0 @@
-.do mso tmac.arkup
diff --git a/contrib/groff/tmac/tmac.mdoc b/contrib/groff/tmac/tmac.mdoc
deleted file mode 100644
index d814358..0000000
--- a/contrib/groff/tmac/tmac.mdoc
+++ /dev/null
@@ -1 +0,0 @@
-.do mso tmac.doc
diff --git a/contrib/groff/tmac/tmac.me b/contrib/groff/tmac/tmac.me
deleted file mode 100644
index 49738b5..0000000
--- a/contrib/groff/tmac/tmac.me
+++ /dev/null
@@ -1 +0,0 @@
-.do mso tmac.e
diff --git a/contrib/groff/tmac/tmac.ms b/contrib/groff/tmac/tmac.ms
deleted file mode 100644
index 05f6fe4..0000000
--- a/contrib/groff/tmac/tmac.ms
+++ /dev/null
@@ -1 +0,0 @@
-.do mso tmac.@TMAC_S_PREFIX@s
diff --git a/contrib/groff/tmac/tmac.pic b/contrib/groff/tmac/tmac.pic
deleted file mode 100644
index 1177fc0..0000000
--- a/contrib/groff/tmac/tmac.pic
+++ /dev/null
@@ -1,10 +0,0 @@
-.de PS
-.br
-.sp .3v
-.ne 0\\$1+1v+\n(.Vu
-.in \\n(.lu-\\n(.iu-0\\$2/2u>?0
-..
-.de PE
-.in
-.sp .3v+.5m
-..
diff --git a/contrib/groff/tmac/tmac.ps b/contrib/groff/tmac/tmac.ps
deleted file mode 100644
index 4d954f4..0000000
--- a/contrib/groff/tmac/tmac.ps
+++ /dev/null
@@ -1,53 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.ftr AX ABI
-.ftr KR BMR
-.ftr KI BMI
-.ftr KB BMB
-.ftr KX BMBI
-.ftr CW CR
-.ftr CO CI
-.ftr CX CBI
-.ftr H HR
-.ftr HO HI
-.ftr HX HBI
-.ftr Hr HNR
-.ftr Hi HNI
-.ftr Hb HNB
-.ftr Hx HNBI
-.ftr NX NBI
-.ftr PA PR
-.ftr PX PBI
-.ftr ZI ZCMI
-.ftr C CR
-.cflags 8 \(an
-.char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u'
-.char \(mo \h'.08m'\(mo\h'-.08m'
-.char \(nm \h'.08m'\(nm\h'-.08m'
-.char \[parenlefttp] \[parenlefttp]\h'.016m'
-.char \[parenleftbt] \[parenleftbt]\h'.016m'
-.char \[parenleftex] \[parenleftex]\h'.016m'
-.char \[parenrighttp] \[parenrighttp]\h'.016m'
-.char \[parenrightbt] \[parenrightbt]\h'.016m'
-.char \[parenrightex] \[parenrightex]\h'.016m'
-.if !c\[va] .char \[va] \o'\[ua]\[da]'
-.if !c\[ci] \
-.char \[ci] \v'-.25m'\h'.05m'\D'c .5m'\h'.05m'\v'.25m'
-.if !c\[sq] \
-.char \[sq] \h'.05m'\D'l .5m 0'\D'l 0 -.5m'\D'l -.5m 0'\D'l 0 .5m'\h'.55m'
-.if !c\[ru] .char \[ru] \D'l .5m 0'
-.if !c\[ul] .char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m'
-.if !c\[br] .char \[br] \Z'\v'.25m'\D'l 0 -1m''
-.if !c\[rn] .char \[rn] \v'-.75m'\D'l .5m 0'\v'.75m'
-.if !c\[or] .char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m'
-.if !c\[Fi] .char \[Fi] ffi
-.if !c\[Fl] .char \[Fl] ffl
-.if !c\[ff] .char \[ff] ff
-.if !c\[ij] .char \[ij] ij
-.if !c\[IJ] .char \[IJ] IJ
-.if !c\[tm] .char \[tm] \s-3\v'-.3m'TM\v'+.3m'\s+3
-.\" pic tests this register to see whether it should use \X'ps:...'
-.nr 0p 1
-.cp \n(_C
-.if !\n(.C .mso tmac.pspic
-.do mso tmac.psold
diff --git a/contrib/groff/tmac/tmac.psatk b/contrib/groff/tmac/tmac.psatk
deleted file mode 100644
index b59d23a..0000000
--- a/contrib/groff/tmac/tmac.psatk
+++ /dev/null
@@ -1,61 +0,0 @@
-.\" Implementation of the ATK PB and PE macros for use with groff and grops.
-.\" Load this after tmac.atk.
-.nr zT 0
-.if '\*(.T'ps' .nr zT 1
-.nr psatk-unit 1p
-.de psatk-defs
-ps: mdef 5
-/PB {
- /saved save def
- currentpoint translate
- \n[psatk-unit] u -\n[psatk-unit] u scale
- userdict begin
- /showpage {} def
-} bind def
-/PE {
- end
- saved restore
-} bind def
-/troffadjust {
- pop 0
-} bind def
-..
-.de PB
-.ne \\$1p
-.nr zT \\n(zT>0
-\\*[PB\\n(zT]\\
-..
-.de PE
-\\*[PE\\n(zT]\\
-..
-.ds PB0
-.\" The last line before the "'PE" is "\}" rather than ".\}". This
-.\" would cause a spurious space to be introduced before any picture
-.\" that was the first thing on a line. So we have to catch that and
-.\" remove it.
-.de PB1
-.ev psatk
-.fi
-.di psatk-mac
-\!ps: exec PB
-..
-.de PE0
-\v'-.75m'\
-\D'l \\$1p 0'\D'l 0 \\$2p'\D'l -\\$1p 0'\D'l 0 -\\$2p'\
-\h'\\$1p'\v'.75m'\x'\\$2p-1m>?0'\c
-..
-.ds psatk-init \Y[psatk-defs]
-.de PE1
-\!PE
-.di
-.di null
-.br
-.di
-.rm null
-.ev
-\v'-.75m'\
-\\*[psatk-init]\Y[psatk-mac]\
-\h'\\$1p'\v'.75m'\x'\\$2p-1m>?0'\c
-.rm psatk-mac
-.if \\n(.P .ds psatk-init
-..
diff --git a/contrib/groff/tmac/tmac.psfig b/contrib/groff/tmac/tmac.psfig
deleted file mode 100644
index 5f4111c..0000000
--- a/contrib/groff/tmac/tmac.psfig
+++ /dev/null
@@ -1,87 +0,0 @@
-.\" These are macros to make psfig work with groff.
-.\" They require that psfig be patched as described in ../grops/psfig.diff.
-.de psfig-defs
-ps: mdef 100
-
-% wid ht llx lly urx ury psfigstart -
-
-/psfigstart {
- /level1 save def
- /ury exch def
- /urx exch def
- /lly exch def
- /llx exch def
- /ht exch u def
- /wid exch u def
- currentpoint ht add translate
- wid urx llx sub div ht ury lly sub div neg scale
- llx neg lly neg translate
-
- % set the graphics state to default values
- 0 setgray
- 0 setlinecap
- 1 setlinewidth
- 0 setlinejoin
- 10 setmiterlimit
- [] 0 setdash
- newpath
- /showpage {} def
-} bind def
-
-% psfigclip -
-
-/psfigclip {
- currentpoint newpath
- llx lly moveto
- urx lly lineto
- urx ury lineto
- llx ury lineto
- closepath clip
- newpath moveto
-} bind def
-
-% psfigend -
-
-/psfigend {
- level1 restore
-} bind def
-
-% globalstart -
-
-/globalstart {
- % save the current space code on the stack
- SC
- level0 restore
-} bind def
-
-% globalend -
-
-/globalend {
- end
- BP
- /SC exch def
- DEFS begin
-} bind def
-..
-.de psfig-init
-.if \\n[.P] \{\
-\Y[psfig-defs]
-. br
-. sp -1
-. ds psfig-init\" empty
-. rm psfig-defs
-.\}
-..
-.de F+
-.br
-.psfig-init
-.nr psfig-fill \\n[.u]
-.nf
-.sp -.5
-.if !\\n[.$] .ce 9999
-..
-.de F-
-.br
-.ce 0
-.if \\n[psfig-fill] .fi
-..
diff --git a/contrib/groff/tmac/tmac.psnew b/contrib/groff/tmac/tmac.psnew
deleted file mode 100644
index e13bdb8..0000000
--- a/contrib/groff/tmac/tmac.psnew
+++ /dev/null
@@ -1,26 +0,0 @@
-.\" Undo the effect of tmac.psold. This gives access to the additional
-.\" characters that are present in the text fonts of newer PostScript
-.\" printers. It is a bad idea to use this if you are going to
-.\" distribute the resulting PostScript output to others.
-.nr _C \n(.C
-.cp 0
-.rchar \('y\('Y\(12\(14\(34\(S1\(S2\(S3\(bb\(de\(Tp\(TP\(-D\(Sd
-.tr \[char166]\[char166]
-.tr \[char176]\[char176]
-.tr \[char177]\[char177]
-.tr \[char178]\[char178]
-.tr \[char179]\[char179]
-.tr \[char181]\[char181]
-.tr \[char185]\[char185]
-.tr \[char188]\[char188]
-.tr \[char189]\[char189]
-.tr \[char190]\[char190]
-.tr \[char208]\[char208]
-.tr \[char215]\[char215]
-.tr \[char221]\[char221]
-.tr \[char222]\[char222]
-.tr \[char240]\[char240]
-.tr \[char247]\[char247]
-.tr \[char253]\[char253]
-.tr \[char254]\[char254]
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.psold b/contrib/groff/tmac/tmac.psold
deleted file mode 100644
index 04a5f6d..0000000
--- a/contrib/groff/tmac/tmac.psold
+++ /dev/null
@@ -1,60 +0,0 @@
-.\" In the newer PostScript printers, the text fonts contain all ISO Latin-1
-.\" characters. The font description files that comes with groff match
-.\" these fonts. The text fonts in older PostScript printers are missing
-.\" some of these characters. This file prevents those characters from
-.\" being used. This will allow the PostScript output to be printed on both
-.\" old and new printers. The effect of this file can be undone by
-.\" tmac.psnew.
-.nr _C \n(.C
-.cp 0
-.\" Define an accented character.
-.de ps-achar
-.\" Note that character definitions are always interpreted with
-.\" compatibility mode off.
-.char \\$1 \\$3\
-\k[acc]\
-\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\
-\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\
-\\$2\
-\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\
-\h'|\\\\n[acc]u'
-.ie '\\$3'\(.i' .hcode \\$1i
-.el .hcode \\$1\\$3
-..
-.ps-achar \['y] \(aa y
-.ps-achar \['Y] \(aa Y
-.char \[12] \v'-.7m\s[\\n(.s*6u/10u]+.7m'1\v'-.7m\s0+.7m'\
-\(f/\s[\\n(.s*6u/10u]2\s0
-.char \[14] \v'-.7m\s[\\n(.s*6u/10u]+.7m'1\v'-.7m\s0+.7m'\
-\(f/\s[\\n(.s*6u/10u]4\s0
-.char \[34] \v'-.7m\s[\\n(.s*6u/10u]+.7m'3\v'-.7m\s0+.7m'\
-\(f/\s[\\n(.s*6u/10u]4\s0
-.char \[S1] \v'-.2m'\s-31\s+3\v'+.2m'
-.char \[S2] \v'-.2m'\s-32\s+3\v'+.2m'
-.char \[S3] \v'-.2m'\s-33\s+3\v'+.2m'
-.char \[bb] |
-.char \[de] \fS\(de
-.char \[-D] \Z'\v'-.1m'-'D
-.char \[TP] \
-I\h'-.25m'\v'-.33m'\s'\En(.s*6u/10u'\v'.33m'D\v'-.33m'\s0\v'.33m'
-.char \[Sd] \Z'\v'-.3m'\h'.2m'-'\(pd
-.char \[Tp] \zlp
-.tr \[char166]\[bb]
-.tr \[char176]\[de]
-.tr \[char177]\[+-]
-.tr \[char178]\[S2]
-.tr \[char179]\[S3]
-.tr \[char181]\[*m]
-.tr \[char185]\[S1]
-.tr \[char188]\[14]
-.tr \[char189]\[12]
-.tr \[char190]\[34]
-.tr \[char208]\[-D]
-.tr \[char215]\[mu]
-.tr \[char221]\['Y]
-.tr \[char222]\[TP]
-.tr \[char240]\[Sd]
-.tr \[char247]\[di]
-.tr \[char253]\['y]
-.tr \[char254]\[Tp]
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.pspic b/contrib/groff/tmac/tmac.pspic
deleted file mode 100644
index 55e51b3..0000000
--- a/contrib/groff/tmac/tmac.pspic
+++ /dev/null
@@ -1,50 +0,0 @@
-.\" Define the PSPIC macro.
-.\" When used other than with -Tps, it will draw a box around where
-.\" the picture would go.
-.de PSPIC
-.nr ps-offset-mode 0
-.if '\\$1'-L' \{\
-. nr ps-offset-mode 1
-. shift
-.\}
-.if '\\$1'-R' \{\
-. nr ps-offset-mode 2
-. shift
-.\}
-.if '\\$1'-I' \{\
-. nr ps-offset-mode 3
-. nr ps-offset (m;\\$2)
-. shift 2
-.\}
-.br
-.psbb \\$1
-.if (\\n[llx] : \\n[lly] : \\n[urx] : \\n[ury]) \{\
-. nr ps-wid (\\n[urx]-\\n[llx])
-. nr ps-ht (\\n[ury]-\\n[lly])
-. if \\n[ps-wid]<0 .nr ps-wid 0-\\n[ps-wid]
-. if \\n[ps-ht]<0 .nr ps-ht 0-\\n[ps-ht]
-. ie \\n[.$]>=2 .nr ps-deswid (i;\\$2)
-. el .nr ps-deswid \\n[.l]-\\n[.i]<?\\n[ps-wid]p
-. nr ps-desht \\n[ps-deswid]*1000+(\\n[ps-wid]/2)/\\n[ps-wid]\
-*\\n[ps-ht]+500/1000
-. if \\n[.$]>=3&(\\n[ps-desht]>(i;0\\$3)) \{\
-. nr ps-desht (i;\\$3)
-. nr ps-deswid \\n[ps-desht]*1000+(\\n[ps-ht]/2)/\\n[ps-ht]\
-*\\n[ps-wid]+500/1000
-. \}
-. ne \\n[ps-desht]u+1v
-. if \\n[ps-offset-mode]=0 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid]/2
-. if \\n[ps-offset-mode]=1 .nr ps-offset 0
-. if \\n[ps-offset-mode]=2 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid]
-. ie \\n[.$]>=3 .ds ps-desht \\n[ps-desht]
-. el .ds ps-desht \" empty
-\h'\\n[ps-offset]u'\
-\X'ps: invis'\
-\Z'\D'p 0 \\n[ps-desht]u \\n[ps-deswid]u 0 0 -\\n[ps-desht]u''\
-\X'ps: endinvis'\
-\v'\\n[ps-desht]u'\X'ps: import \\$1 \
-\\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-deswid] \\*[ps-desht]'
-. br
-. sp \\n[ps-desht]u
-.\}
-..
diff --git a/contrib/groff/tmac/tmac.s b/contrib/groff/tmac/tmac.s
deleted file mode 100644
index 6770b0d..0000000
--- a/contrib/groff/tmac/tmac.s
+++ /dev/null
@@ -1,1869 +0,0 @@
-.\" -*- nroff -*-
-.ig
-Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
- Written by James Clark (jjc@jclark.com)
-
-This file is part of groff.
-
-groff is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
-version.
-
-groff is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License along
-with groff; see the file COPYING. If not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-..
-.if !\n(.g .ab These ms macros require groff.
-.if \n(.C \
-. ab The groff ms macros do not work in compatibility mode.
-.\" Enable warnings. You can delete this if you want.
-.warn
-.\" See if already loaded.
-.if r GS .nx
-.nr GS 1
-.de @error
-.tm \\n(.F:\\n(.c: macro error: \\$*
-..
-.de @warning
-.tm \\n(.F:\\n(.c: macro warning: \\$*
-..
-.de @fatal
-.ab \\n(.F:\\n(.c: fatal macro error: \\$*
-..
-.de @not-implemented
-.@error sorry, \\$0 not implemented
-.als \\$0 @nop
-..
-.als TM @not-implemented
-.als CT @not-implemented
-.de @nop
-..
-.de @init
-.nr PO \\n(.o
-.\" a non-empty environment
-.ev ne
-\c
-.ev
-.ev nf
-'nf
-.ev
-..
-.ds REFERENCES References
-.ds ABSTRACT ABSTRACT
-.ds TOC Table of Contents
-.ds MONTH1 January
-.ds MONTH2 February
-.ds MONTH3 March
-.ds MONTH4 April
-.ds MONTH5 May
-.ds MONTH6 June
-.ds MONTH7 July
-.ds MONTH8 August
-.ds MONTH9 September
-.ds MONTH10 October
-.ds MONTH11 November
-.ds MONTH12 December
-.ds MO \\*[MONTH\n[mo]]
-.ds DY \n[dy] \*[MO] \n[year]
-.de ND
-.if \\n[.$] .ds DY "\\$*
-..
-.de DA
-.if \\n[.$] .ds DY "\\$*
-.ds CF \\*[DY]
-..
-.\" indexing
-.de IX
-.tm \\$1\t\\$2\t\\$3\t\\$4 ... \\n[PN]
-..
-.\" print an error message and then try to recover
-.de @error-recover
-.@error \\$@ (recovering)
-.nr *pop-count 0
-.while !'\\n(.z'' \{\
-. \"@warning automatically terminating diversion \\n(.z
-. ie d @div-end!\\n(.z .@div-end!\\n(.z
-. el .*div-end-default
-. nr *pop-count +1
-. \" ensure that we don't loop forever
-. if \\n[*pop-count]>20 .@fatal recovery failed
-.\}
-.while !'\\n[.ev]'0' .ev
-.par@reset-env
-.par@reset
-..
-.de *div-end-default
-.ds *last-div \\n(.z
-.br
-.di
-.ev nf
-.\\*[*last-div]
-.ev
-..
-.\" ****************************
-.\" ******** module cov ********
-.\" ****************************
-.\" Cover sheet and first page.
-.de cov*err-not-after-first-page
-.@error \\$0 is not allowed after the first page has started
-..
-.de cov*err-not-before-tl
-.@error \\$0 is not allowed before TL
-..
-.de cov*err-not-again
-.@error \\$0 is not allowed more than once
-..
-.de cov*err-not-after-ab
-.@error \\$0 is not allowed after first AB, LP, PP, IP, SH or NH
-..
-.als AU cov*err-not-before-tl
-.als AI cov*err-not-before-tl
-.als AB cov*err-not-before-tl
-.de cov*first-page-init
-.rm cov*first-page-init
-.par@init
-.als RP cov*err-not-after-first-page
-.@init
-.ie \\n[cov*rp-format] \{\
-. pg@cs-top
-. als FS cov*FS
-. als FE cov*FE
-.\}
-.el \{\
-. pg@top
-. als FS @FS
-. als FE @FE
-.\}
-.wh 0 pg@top
-..
-.wh 0 cov*first-page-init
-.\" This handles the case where FS occurs before TL or LP.
-.de FS
-.br
-\\*[FS]\\
-..
-.nr cov*rp-format 0
-.nr cov*rp-no 0
-.\" released paper format
-.de RP
-.nr cov*rp-format 1
-.if \\n[.$] .if '\\$1'no' .nr cov*rp-no 1
-.pn 0
-..
-.de TL
-.br
-.als TL cov*err-not-again
-.rn @AB AB
-.rn @AU AU
-.rn @AI AI
-.di cov*tl-div
-.par@reset
-.ft B
-.ps +2
-.vs +3p
-.ll (u;\\n[LL]*5/6)
-.nr cov*n-au 0
-..
-.de @AU
-.par@reset
-.if !'\\n(.z'' \{\
-. br
-. di
-.\}
-.nr cov*n-au +1
-.di cov*au-div!\\n[cov*n-au]
-.nf
-.ft I
-.ps \\n[PS]
-..
-.de @AI
-.par@reset
-.if !'\\n(.z'' \{\
-. br
-. di
-.\}
-.ie !\\n[cov*n-au] .@error AI before AU
-.el \{\
-. di cov*ai-div!\\n[cov*n-au]
-. nf
-. ft R
-. ps \\n[PS]
-.\}
-..
-.de LP
-.if !'\\n[.z]'' \{\
-. br
-. di
-.\}
-.br
-.cov*ab-init
-.cov*print
-\\*[\\$0]\\
-..
-.als IP LP
-.als PP LP
-.als XP LP
-.als QP LP
-.als RS LP
-.als NH LP
-.als SH LP
-.als MC LP
-.als RT LP
-.als XS LP
-.de cov*ab-init
-.als cov*ab-init @nop
-.als LP @LP
-.als IP @IP
-.als PP @PP
-.als XP @XP
-.als RT @RT
-.als XS @XS
-.als SH @SH
-.als NH @NH
-.als QP @QP
-.als RS @RS
-.als RE @RE
-.als QS @QS
-.als QE @QE
-.als MC @MC
-.als EQ @EQ
-.als EN @EN
-.als TS @TS
-.als AB cov*err-not-after-ab
-.als AU par@AU
-.als AI par@AI
-.als TL par@TL
-..
-.de @AB
-.if !'\\n(.z'' \{\
-. br
-. di
-.\}
-.cov*ab-init
-.di cov*ab-div
-.par@ab-indent
-.par@reset
-.if !'\\$1'no' \{\
-. ft I
-. ce 1
-\\*[ABSTRACT]
-. sp
-. ft R
-.\}
-.ns
-.@PP
-..
-.de AE
-.ie '\\n(.z'cov*ab-div' \{\
-. als AE cov*err-not-again
-. br
-. di
-.\" nr cov*ab-height \\n[dn]
-. par@reset-env
-. par@reset
-. cov*print
-.\}
-.el .@error AE without AB
-..
-.de @div-end!cov*ab-div
-.AE
-..
-.de cov*print
-.als cov*print @nop
-.ie d cov*tl-div \{\
-. ie \\n[cov*rp-format] .cov*rp-print
-. el .cov*draft-print
-.\}
-.el \{\
-. if \\n[cov*rp-format] \{\
-. @warning RP format but no TL
-. bp 1
-. als FS @FS
-. als FE @FE
-. \}
-. br
-.\}
-..
-.de cov*rp-print
-.nr cov*page-length \\n[.p]
-.pl 1000i
-.cov*tl-au-print
-.sp 3
-.if d cov*ab-div \{\
-. nf
-. cov*ab-div
-.\}
-.sp 3
-.par@reset
-\\*[DY]
-.br
-.if \\n[cov*fn-height] \{\
-. sp |(u;\\n[cov*page-length]-\\n[FM]\
--\\n[cov*fn-height]-\\n[fn@sep-dist]>?\\n[nl])
-. fn@print-sep
-. ev nf
-. cov*fn-div
-. ev
-. ie \\n[cov*rp-no] .rm cov*fn-div
-. el \{\
-. rn cov*fn-div fn@overflow-div
-. nr fn@have-overflow 1
-. \}
-.\}
-.als FS @FS
-.als FE @FE
-.\" If anything was printed below where the footer line is normally printed,
-.\" then that's an overflow.
-.if -\\n[FM]/2+1v+\\n[cov*page-length]<\\n[nl] .@error cover sheet overflow
-.pl \\n[cov*page-length]u
-.bp 1
-.if !\\n[cov*rp-no] .cov*tl-au-print
-.rs
-.sp 1
-..
-.de cov*draft-print
-.cov*tl-au-print
-.if d cov*ab-div \{\
-. nf
-. sp 2
-. cov*ab-div
-.\}
-.sp 1
-..
-.de cov*tl-au-print
-.par@reset
-.nf
-.rs
-.sp 3
-.ce 9999
-.cov*tl-div
-.nr cov*i 1
-.nr cov*sp 1v
-.while \\n[cov*i]<=\\n[cov*n-au] \{\
-. sp \\n[cov*sp]u
-. cov*au-div!\\n[cov*i]
-. ie d cov*ai-div!\\n[cov*i] \{\
-. sp .5v
-. cov*ai-div!\\n[cov*i]
-. nr cov*sp 1v
-. \}
-. el .nr cov*sp .5v
-. nr cov*i +1
-.\}
-.ce 0
-..
-.nr cov*fn-height 0
-.nr cov*in-fn 0
-.\" start of footnote on cover
-.de cov*FS
-.if \\n[cov*in-fn] \{\
-. @error nested FS
-. FE
-.\}
-.nr cov*in-fn 1
-.ev fn
-.par@reset-env
-.da cov*fn-div
-.if !\\n[cov*fn-height] .ns
-.ie \\n[.$] .FP "\\$1" no
-.el .@LP
-..
-.de @div-end!cov*fn-div
-.cov*FE
-..
-.\" end of footnote on cover
-.de cov*FE
-.ie '\\n(.z'cov*fn-div' \{\
-. br
-. ev
-. di
-. nr cov*in-fn 0
-. nr cov*fn-height +\\n[dn]
-.\}
-.el .@error FE without matching FS
-..
-.\" ***************************
-.\" ******** module pg ********
-.\" ***************************
-.\" Page-level formatting.
-.\" > 0 if we have a footnote on the current page
-.nr pg@fn-flag 0
-.nr pg@colw 0
-.nr pg@fn-colw 0
-.nr HM 1i
-.nr FM 1i
-.ds LF
-.ds CF
-.ds RF
-.ds LH
-.ds CH -\\n[PN]-
-.ds RH
-.ds pg*OH '\\*[LH]'\\*[CH]'\\*[RH]'
-.ds pg*EH '\\*[LH]'\\*[CH]'\\*[RH]'
-.ds pg*OF '\\*[LF]'\\*[CF]'\\*[RF]'
-.ds pg*EF '\\*[LF]'\\*[CF]'\\*[RF]'
-.de OH
-.ds pg*\\$0 "\\$*
-..
-.als EH OH
-.als OF OH
-.als EF OH
-.de PT
-.ie \\n%=1 .if \\n[pg*P1] .tl \\*[pg*OH]
-.el \{\
-. ie o .tl \\*[pg*OH]
-. el .tl \\*[pg*EH]
-.\}
-..
-.de BT
-.ie o .tl \\*[pg*OF]
-.el .tl \\*[pg*EF]
-..
-.nr pg*P1 0
-.de P1
-.nr pg*P1 1
-..
-.wh -\n[FM]u pg@bottom
-.wh -\n[FM]u/2u pg*footer
-.nr MINGW 2n
-.nr pg@ncols 1
-.de @MC
-.if !'\\n(.z'' .error-recover MC while diversion open
-.br
-.ie \\n[pg@ncols]>1 .pg@super-eject
-.el \{\
-. \" flush out any floating keeps
-. while \\n[kp@tail]>\\n[kp@head] \{\
-. rs
-. bp
-. \}
-.\}
-.ie !\\n(.$ \{\
-. nr pg@colw \\n[LL]*7/15
-. nr pg*gutw \\n[LL]-(2*\\n[pg@colw])
-. nr pg@ncols 2
-.\}
-.el \{\
-. nr pg@colw (n;\\$1)<?\\n[LL]
-. ie \\n[.$]<2 .nr pg*gutw \\n[MINGW]
-. el .nr pg*gutw (n;\\$2)
-. nr pg@ncols \\n[LL]-\\n[pg@colw]/(\\n[pg@colw]+\\n[pg*gutw])+1
-. ie \\n[pg@ncols]>1 \
-. nr pg*gutw \\n[LL]-(\\n[pg@ncols]*\\n[pg@colw])/(\\n[pg@ncols]-1)
-. el .nr pg*gutw 0
-.\}
-.mk pg*col-top
-.ns
-.nr pg*col-num 0
-.nr pg@fn-colw \\n[pg@colw]*5/6
-.par@reset
-..
-.de 2C
-.MC
-..
-.de 1C
-.MC \\n[LL]u
-..
-.\" top of page macro
-.de pg@top
-.ch pg*footer -\\n[FM]u/2u
-.nr PN \\n%
-.nr pg*col-num 0
-.nr pg@fn-bottom-margin 0
-.nr pg*saved-po \\n[PO]
-.po \\n[PO]u
-.ev h
-.par@reset
-.sp (u;\\n[HM]/2)
-.PT
-.sp |\\n[HM]u
-.if d HD .HD
-.mk pg@header-bottom
-.ev
-.mk pg*col-top
-.pg*start-col
-..
-.de pg*start-col
-.\" Handle footnote overflow before floating keeps, because the keep
-.\" might contain an embedded footnote.
-.fn@top-hook
-.kp@top-hook
-.tbl@top-hook
-.ns
-..
-.de pg@cs-top
-.sp \\n[HM]u
-.\" move pg@bottom and pg*footer out of the way
-.ch pg@bottom \\n[.p]u*2u
-.ch pg*footer \\n[.p]u*2u
-.ns
-..
-.de pg@bottom
-.tbl@bottom-hook
-.if \\n[pg@fn-flag] .fn@bottom-hook
-.nr pg*col-num +1
-.ie \\n[pg*col-num]<\\n[pg@ncols] .pg*end-col
-.el .pg*end-page
-..
-.de pg*end-col
-'sp |\\n[pg*col-top]u
-.po (u;\\n[pg*saved-po]+(\\n[pg@colw]+\\n[pg*gutw]*\\n[pg*col-num]))
-.\"po +(u;\\n[pg@colw]+\\n[pg*gutw])
-.pg*start-col
-..
-.de pg*end-page
-.po \\n[pg*saved-po]u
-.\" Make sure we don't exit if there are still floats or footnotes left-over.
-.ie \\n[kp@head]<\\n[kp@tail]:\\n[fn@have-overflow] \{\
-. \" Switching environments ensures that we don't get an unnecessary
-. \" blank line at the top of the page.
-. ev ne
-' bp
-. ev
-.\}
-.el \{\
-. \" If the text has ended and there are no more footnotes or keeps, exit.
-. if \\n[pg@text-ended] .ex
-. if r pg*next-number \{\
-. pn \\n[pg*next-number]
-. rr pg*next-number
-. if d pg*next-format \{\
-. af PN \\*[pg*next-format]
-. rm pg*next-format
-. \}
-. \}
-' bp
-.\}
-..
-.\" pg@begin number format
-.de pg@begin
-.ie \\n[.$]>0 \{\
-. nr pg*next-number (;\\$1)
-. ie \\n[.$]>1 .ds pg*next-format \\$2
-. el .rm pg*next-format
-.\}
-.el .rr pg*next-number
-.pg@super-eject
-..
-.\" print the footer line
-.de pg*footer
-.ev h
-.par@reset
-.BT
-.ev
-..
-.\" flush out any keeps or footnotes
-.de pg@super-eject
-.br
-.if !'\\n(.z'' .@error-recover diversion open while ejecting page
-.\" Make sure we stay in the end macro while there is still footnote overflow
-.\" left, or floating keeps.
-.while \\n[kp@tail]>\\n[kp@head]:\\n[pg@fn-flag] \{\
-. rs
-. bp
-.\}
-.bp
-..
-.nr pg@text-ended 0
-.de pg@end-text
-.br
-.nr pg@text-ended 1
-.pg@super-eject
-..
-.em pg@end-text
-.\" ***************************
-.\" ******** module fn ********
-.\" ***************************
-.\" Footnotes.
-.nr fn@sep-dist 8p
-.ev fn
-.\" Round it vertically
-.vs \n[fn@sep-dist]u
-.nr fn@sep-dist \n[.v]
-.ev
-.nr fn*text-num 0 1
-.nr fn*note-num 0 1
-.ds * \\*[par@sup-start]\En+[fn*text-num]\\*[par@sup-end]
-.nr fn*open 0
-.\" normal FS
-.de @FS
-.ie \\n[.$] .fn*do-FS "\\$1" no
-.el \{\
-. ie \\n[fn*text-num]>\\n[fn*note-num] .fn*do-FS \\n+[fn*note-num]
-. el .fn*do-FS
-.\}
-..
-.\" Second argument of `no' means don't embellish the first argument.
-.de fn*do-FS
-.if \\n[fn*open] .@error-recover nested FS
-.nr fn*open 1
-.if \\n[.u] \{\
-. \" Ensure that the first line of the footnote is on the same page
-. \" as the reference. I think this is minimal.
-. ev fn
-. nr fn*need 1v
-. ev
-. ie \\n[pg@fn-flag] .nr fn*need +\\n[fn:PD]
-. el .nr fn*need +\\n[fn@sep-dist]
-. ne \\n[fn*need]u+\\n[.V]u>?0
-.\}
-.ev fn
-.par@reset-env
-.fn*start-div
-.par@reset
-.ie \\n[.$] .FP \\$@
-.el .@LP
-..
-.de @FE
-.ie !\\n[fn*open] .@error FE without FS
-.el \{\
-. nr fn*open 0
-. br
-. ev
-. fn*end-div
-.\}
-..
-.nr fn@have-overflow 0
-.\" called at the top of each column
-.de fn@top-hook
-.nr fn*max-width 0
-.nr fn*page-bottom-pos 0-\\n[FM]-\\n[pg@fn-bottom-margin]
-.ch pg@bottom \\n[fn*page-bottom-pos]u
-.if \\n[fn@have-overflow] \{\
-. nr fn@have-overflow 0
-. fn*start-div
-. ev nf
-. fn@overflow-div
-. ev
-. fn*end-div
-.\}
-..
-.\" This is called at the bottom of the column if pg@fn-flag is set.
-.de fn@bottom-hook
-.nr pg@fn-flag 0
-.nr fn@have-overflow 0
-.nr fn@bottom-pos \\n[.p]-\\n[FM]-\\n[pg@fn-bottom-margin]+\\n[.v]
-.ev fn
-.nr fn@bottom-pos -\\n[.v]
-.ev
-.ie \\n[nl]+\\n[fn@sep-dist]+\n[.V]>\\n[fn@bottom-pos] \{\
-. rn fn@div fn@overflow-div
-. nr fn@have-overflow 1
-.\}
-.el \{\
-. if \\n[pg@ncols]>1 \
-. if \\n[fn*max-width]>\\n[pg@fn-colw] \
-. nr pg@fn-bottom-margin \\n[.p]-\\n[FM]-\\n[nl]+1v
-. wh \\n[fn@bottom-pos]u fn*catch-overflow
-. fn@print-sep
-. ev nf
-. fn@div
-. rm fn@div
-. ev
-. if '\\n(.z'fn@overflow-div' \{\
-. di
-. nr fn@have-overflow \\n[dn]>0
-. \}
-. ch fn*catch-overflow
-.\}
-..
-.de fn*catch-overflow
-.di fn@overflow-div
-..
-.nr fn*embed-count 0
-.de @div-end!fn@div
-.br
-.if '\\n[.ev]'fn' .ev
-.fn*end-div
-.nr fn*open 0
-..
-.als @div-end!fn*embed-div @div-end!fn@div
-.de fn*start-div
-.ie '\\n(.z'' \{\
-. da fn@div
-. if !\\n[pg@fn-flag] .ns
-.\}
-.el .di fn*embed-div
-..
-.de fn*end-div
-.ie '\\n(.z'fn@div' \{\
-. di
-. nr fn*page-bottom-pos -\\n[dn]
-. nr fn*max-width \\n[fn*max-width]>?\\n[dl]
-. if !\\n[pg@fn-flag] .nr fn*page-bottom-pos -\\n[fn@sep-dist]
-. nr pg@fn-flag 1
-. nr fn*page-bottom-pos \\n[nl]-\\n[.p]+\n[.V]>?\\n[fn*page-bottom-pos]
-. ch pg@bottom \\n[fn*page-bottom-pos]u
-.\}
-.el \{\
-. ie '\\n(.z'fn*embed-div' \{\
-. di
-. rn fn*embed-div fn*embed-div!\\n[fn*embed-count]
-\!. fn*embed-start \\n[fn*embed-count]
-. rs
-' sp (u;\\n[dn]+\\n[fn@sep-dist]+\\n[.V])
-\!. fn*embed-end
-. nr fn*embed-count +1
-. \}
-. el \{\
-. ev fn
-. @error-recover unclosed diversion within footnote
-. \}
-.\}
-..
-.de fn*embed-start
-.ie '\\n(.z'' \{\
-. fn*start-div
-. ev nf
-. fn*embed-div!\\$1
-. rm fn*embed-div!\\$1
-. ev
-. fn*end-div
-. di fn*null
-.\}
-.el \{\
-\!. fn*embed-start \\$1
-. rs
-.\}
-..
-.de fn*embed-end
-.ie '\\n(.z'fn*null' \{\
-. di
-. rm fn*null
-.\}
-.el \!.fn*embed-end
-..
-.\" It's important that fn@print-sep use up exactly fn@sep-dist vertical space.
-.de fn@print-sep
-.ev fn
-.in 0
-.vs \\n[fn@sep-dist]u
-\D'l 1i 0'
-.br
-.ev
-..
-.\" ***************************
-.\" ******** module kp ********
-.\" ***************************
-.\" Keeps.
-.de KS
-.br
-.di kp*div
-..
-.de KF
-.if !'\\n(.z'' .@error-recover KF while open diversion
-.di kp*fdiv
-.ev k
-.par@reset-env
-.par@reset
-..
-.de KE
-.ie '\\n(.z'kp*div' .kp*end
-.el \{\
-. ie '\\n(.z'kp*fdiv' .kp*fend
-. el .@error KE without KS or KF
-.\}
-..
-.de @div-end!kp*div
-.kp*end
-..
-.de @div-end!kp*fdiv
-.kp*fend
-..
-.de kp*need
-.ie '\\n(.z'' .ds@need \\$1
-.el \!.kp*need \\$1
-..
-.\" end non-floating keep
-.de kp*end
-.br
-.di
-.kp*need \\n[dn]
-.ev nf
-.kp*div
-.ev
-.rm kp*div
-..
-.\" Floating keeps.
-.nr kp@head 0
-.nr kp@tail 0
-.\" end floating keep
-.de kp*fend
-.br
-.ev
-.di
-.ie \\n[.t]-(\\n[.k]>0*1v)>\\n[dn] \{\
-. br
-. ev nf
-. kp*fdiv
-. rm kp*fdiv
-. ev
-.\}
-.el \{\
-. rn kp*fdiv kp*div!\\n[kp@tail]
-. nr kp*ht!\\n[kp@tail] 0\\n[dn]
-. nr kp@tail +1
-.\}
-..
-.\" top of page processing for KF
-.nr kp*doing-top 0
-.de kp@top-hook
-.if !\\n[kp*doing-top] \{\
-. nr kp*doing-top 1
-. kp*do-top
-. nr kp*doing-top 0
-.\}
-..
-.de kp*do-top
-.\" If the first keep won't fit, only force it out if we haven't had a footnote
-.\" and we're at the top of the page.
-.nr kp*force \\n[pg@fn-flag]=0&(\\n[nl]<=\\n[pg@header-bottom])
-.nr kp*fits 1
-.while \\n[kp@tail]>\\n[kp@head]&\\n[kp*fits] \{\
-. ie \\n[.t]>\\n[kp*ht!\\n[kp@head]]:\\n[kp*force] \{\
-. nr kp*force 0
-. \" It's important to advance kp@head before bringing
-. \" back the keep, so that if the last line of the
-. \" last keep springs the bottom of page trap, a new
-. \" page will not be started unnecessarily.
-. rn kp*div!\\n[kp@head] kp*temp
-. nr kp@head +1
-. ev nf
-. kp*temp
-. ev
-. rm kp*temp
-. \}
-. el .nr kp*fits 0
-.\}
-..
-.\" ***************************
-.\" ******** module ds ********
-.\" ***************************
-.\" Displays and non-floating keeps.
-.de DE
-.ds*end!\\n[\\n[.ev]:ds-type]
-.nr \\n[.ev]:ds-type 0
-..
-.de ds@auto-end
-.if \\n[\\n[.ev]:ds-type] \{\
-. @error automatically terminating display
-. DE
-.\}
-..
-.de @div-end!ds*div
-.ie \\n[\\n[.ev]:ds-type] .DE
-.el .ds*end!2
-..
-.de ds*end!0
-.@error DE without DS, ID, CD, LD or BD
-..
-.de LD
-.br
-.nr \\n[.ev]:ds-type 1
-.par@reset
-.nf
-.sp \\n[DD]u
-..
-.de ID
-.LD
-.ie \\n[.$] .in +(n;\\$1)
-.el .in +\\n[DI]u
-..
-.de CD
-.LD
-.ce 9999
-..
-.de RD
-.LD
-.rj 9999
-..
-.de ds*common-end
-.par@reset
-.sp \\n[DD]u
-..
-.als ds*end!1 ds*common-end
-.de BD
-.LD
-.nr \\n[.ev]:ds-type 2
-.di ds*div
-..
-.de ds*end!2
-.br
-.ie '\\n(.z'ds*div' \{\
-. di
-. nf
-. in (u;\\n[.l]-\\n[dl]/2)
-. ds*div
-. rm ds*div
-. ds*common-end
-.\}
-.el .@error-recover mismatched DE
-..
-.de DS
-.br
-.di ds*div
-.ie '\\$1'B' \{\
-. LD
-. nr \\n[.ev]:ds-type 4
-.\}
-.el \{\
-. ie '\\$1'L' .LD
-. el \{\
-. ie '\\$1'C' .CD
-. el \{\
-. ie '\\$1'R' .RD
-. el \{\
-. ie '\\$1'I' .ID \\$2
-. el .ID \\$1
-. \}
-. \}
-. \}
-. nr \\n[.ev]:ds-type 3
-.\}
-..
-.de ds@need
-.if '\\n(.z'' \{\
-. while \\n[.t]<=(\\$1)&(\\n[nl]>\\n[pg@header-bottom]) \{\
-. rs
-' sp \\n[.t]u
-. \}
-.\}
-..
-.de ds*end!3
-.br
-.ie '\\n(.z'ds*div' \{\
-. di
-. ds@need \\n[dn]
-. ev nf
-. ds*div
-. ev
-. rm ds*div
-. ds*common-end
-.\}
-.el .@error-recover mismatched DE
-..
-.de ds*end!4
-.ie '\\n(.z'ds*div' \{\
-. br
-. di
-. nf
-. in (u;\\n[.l]-\\n[dl]/2)
-. ds@need \\n[dn]
-. ds*div
-. rm ds*div
-. ds*common-end
-.\}
-.el .@error-recover mismatched DE
-..
-.\" ****************************
-.\" ******** module par ********
-.\" ****************************
-.\" Paragraph-level formatting.
-.\" Load time initialization.
-.de par@load-init
-.\" PS and VS might have been set on the command-line
-.if !rPS .nr PS 10
-.if !rLL .nr LL 6i
-.ll \\n[LL]u
-.\" don't set LT so that it can be defaulted from LL
-.ie rLT .lt \\n[LT]u
-.el .lt \\n[LL]u
-.ps \\n[PS]
-.\" don't set VS so that it can be defaulted from PS
-.ie rVS .par*vs \\n[VS]
-.el .par*vs \\n[PS]+2
-.if dFAM .fam \\*[FAM]
-.if !rHY .nr HY 14
-.hy \\n[HY]
-.TA
-..
-.de par*vs
-.\" If it's too big to be in points, treat it as units.
-.ie (p;\\$1)>=40p .vs (u;\\$1)
-.el .vs (p;\\$1)
-..
-.de par@ab-indent
-.nr 0:li (u;\\n[LL]/12)
-.nr 0:ri \\n[0:li]
-..
-.de par*env-init
-.aln \\n[.ev]:PS PS
-.aln \\n[.ev]:VS VS
-.aln \\n[.ev]:LL LL
-.aln \\n[.ev]:MCLL LL
-.aln \\n[.ev]:LT LT
-.aln \\n[.ev]:MCLT LT
-.aln \\n[.ev]:PI PI
-.aln \\n[.ev]:PD PD
-.ad \\n[par*adj]
-.par@reset-env
-..
-.\" happens when the first page begins
-.de par@init
-.if !rLT .nr LT \\n[LL]
-.if !rFL .nr FL \\n[LL]*5/6
-.if !rVS .nr VS \\n[PS]+2
-.if !rDI .nr DI .5i
-.if !rFPS .nr FPS \\n[PS]-2
-.if !rFVS .nr FVS \\n[FPS]+2
-.\" don't change environment 0
-.ev h
-.ps \\n[PS]
-.if !rQI .nr QI 5n
-.if !rPI .nr PI 5n
-.par*vs \\n[VS]
-.if !rPD .nr PD .3v>?\n(.V
-.if !rDD .nr DD .5v>?\n(.V
-.if !rFI .nr FI 2n
-.if !rFPD .nr FPD \\n[PD]/2
-.ev
-.if !dFAM .ds FAM \\n[.fam]
-.nr par*adj \\n[.j]
-.par*env-init
-.ev h
-.par*env-init
-.ev
-.ev fn
-.par*env-init
-.ev
-.ev k
-.par*env-init
-.ev
-.aln 0:MCLL pg@colw
-.aln 0:MCLT pg@colw
-.aln k:MCLL pg@colw
-.aln k:MCLT pg@colw
-.aln fn:PS FPS
-.aln fn:VS FVS
-.aln fn:LL FL
-.aln fn:LT FL
-.aln fn:PI FI
-.aln fn:PD FPD
-.aln fn:MCLL pg@fn-colw
-.aln fn:MCLT pg@fn-colw
-..
-.de par@reset-env
-.nr \\n[.ev]:il 0
-.nr \\n[.ev]:li 0
-.nr \\n[.ev]:ri 0
-.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-.nr \\n[.ev]:pli 0
-.nr \\n[.ev]:pri 0
-.nr \\n[.ev]:ds-type 0
-..
-.\" par@reset
-.de par@reset
-.br
-.ce 0
-.rj 0
-.ul 0
-.fi
-.ie \\n[pg@ncols]>1 \{\
-. ll (u;\\n[\\n[.ev]:MCLL]-\\n[\\n[.ev]:ri]-\\n[\\n[.ev]:pri])
-. lt \\n[\\n[.ev]:MCLT]u
-.\}
-.el \{\
-. ll (u;\\n[\\n[.ev]:LL]-\\n[\\n[.ev]:ri]-\\n[\\n[.ev]:pri])
-. lt \\n[\\n[.ev]:LT]u
-.\}
-.in (u;\\n[\\n[.ev]:li]+\\n[\\n[.ev]:pli])
-.ft 1
-.fam \\*[FAM]
-.ps \\n[\\n[.ev]:PS]
-.par*vs \\n[\\n[.ev]:VS]
-.ls 1
-.TA
-.hy \\n[HY]
-..
-.de @RT
-.nr \\n[.ev]:pli 0
-.nr \\n[.ev]:pri 0
-.par@reset
-..
-.\" This can be redefined by the user.
-.de TA
-.ta T 5n
-..
-.de par*start
-.ds@auto-end
-.nr \\n[.ev]:pli \\$1
-.nr \\n[.ev]:pri \\$2
-.par@reset
-.sp \\n[\\n[.ev]:PD]u
-.ne 1v+\\n(.Vu
-..
-.de par@finish
-.nr \\n[.ev]:pli 0
-.nr \\n[.ev]:pri 0
-.par@reset
-..
-.\" normal LP
-.de @LP
-.par*start 0 0
-.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-..
-.de @PP
-.par*start 0 0
-.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-.ti +\\n[\\n[.ev]:ai]u
-..
-.de @QP
-.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-.par*start \\n[QI] \\n[QI]
-..
-.de @XP
-.par*start \\n[\\n[.ev]:PI] 0
-.ti -\\n[\\n[.ev]:PI]u
-..
-.de @IP
-.if \\n[.$]>1 .nr \\n[.ev]:ai (n;\\$2)
-.par*start \\n[\\n[.ev]:ai] 0
-.if !'\\$1'' \{\
-. \" Divert the label so as to freeze any spaces.
-. di par*label
-. par*push-tag-env
-\&\\$1
-. par*pop-tag-env
-. di
-. chop par*label
-. ti -\\n[\\n[.ev]:ai]u
-. ie \\n[dl]+1n<=\\n[\\n[.ev]:ai] \\*[par*label]\h'|\\n[\\n[.ev]:ai]u'\c
-. el \{\
-\\*[par*label]
-. br
-. \}
-. rm par*label
-.\}
-..
-.\" We don't want margin characters to be attached when we divert
-.\" the tag. Since there's no way to save and restore the current
-.\" margin character, we have to switch to a new environment, taking
-.\" what we need of the old environment with us.
-.de par*push-tag-env
-.nr par*saved-font \\n[.f]
-.nr par*saved-size \\n[.s]z
-.nr par*saved-ss \\n[.ss]
-.ds par*saved-fam \\n[.fam]
-.ev par
-.nf
-.TA
-.ft \\n[par*saved-font]
-.ps \\n[par*saved-size]u
-.ss \\n[par*saved-ss]
-.fam \\*[par*saved-fam]
-..
-.de par*pop-tag-env
-.ev
-..
-.de @RS
-.br
-.nr \\n[.ev]:li!\\n[\\n[.ev]:il] \\n[\\n[.ev]:li]
-.nr \\n[.ev]:ri!\\n[\\n[.ev]:il] \\n[\\n[.ev]:ri]
-.nr \\n[.ev]:ai!\\n[\\n[.ev]:il] \\n[\\n[.ev]:ai]
-.nr \\n[.ev]:pli!\\n[\\n[.ev]:il] \\n[\\n[.ev]:pli]
-.nr \\n[.ev]:pri!\\n[\\n[.ev]:il] \\n[\\n[.ev]:pri]
-.nr \\n[.ev]:il +1
-.nr \\n[.ev]:li +\\n[\\n[.ev]:ai]
-.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-.par@reset
-..
-.de @RE
-.br
-.ie \\n[\\n[.ev]:il] \{\
-. nr \\n[.ev]:il -1
-. nr \\n[.ev]:ai \\n[\\n[.ev]:ai!\\n[\\n[.ev]:il]]
-. nr \\n[.ev]:li \\n[\\n[.ev]:li!\\n[\\n[.ev]:il]]
-. nr \\n[.ev]:ri \\n[\\n[.ev]:ri!\\n[\\n[.ev]:il]]
-. nr \\n[.ev]:pli \\n[\\n[.ev]:pli!\\n[\\n[.ev]:il]]
-. nr \\n[.ev]:pri \\n[\\n[.ev]:pri!\\n[\\n[.ev]:il]]
-.\}
-.el .@error unbalanced \\$0
-.par@reset
-..
-.de @QS
-.br
-.nr \\n[.ev]:li!\\n[\\n[.ev]:il] \\n[\\n[.ev]:li]
-.nr \\n[.ev]:ri!\\n[\\n[.ev]:il] \\n[\\n[.ev]:ri]
-.nr \\n[.ev]:ai!\\n[\\n[.ev]:il] \\n[\\n[.ev]:ai]
-.nr \\n[.ev]:pli!\\n[\\n[.ev]:il] \\n[\\n[.ev]:pli]
-.nr \\n[.ev]:pri!\\n[\\n[.ev]:il] \\n[\\n[.ev]:pri]
-.nr \\n[.ev]:il +1
-.nr \\n[.ev]:li +\\n[QI]
-.nr \\n[.ev]:ri +\\n[QI]
-.nr \\n[.ev]:ai \\n[\\n[.ev]:PI]
-.par@reset
-..
-.als @QE @RE
-.\" start boxed text
-.de B1
-.br
-.di par*box-div
-.nr \\n[.ev]:li +1n
-.nr \\n[.ev]:ri +1n
-.nr par*box-in \\n[.in]
-.\" remember what 1n is, just in case the point size changes
-.nr par*box-n 1n
-.in +1n
-.ll -1n
-.lt -1n
-.ti \\n[par*box-in]u+1n
-..
-.de @div-end!par*box-div
-.B2
-..
-.\" end boxed text
-.\" Postpone the drawing of the box until we're in the top-level diversion,
-.\" in case there's a footnote inside the box.
-.de B2
-.ie '\\n(.z'par*box-div' \{\
-. br
-. if \n[.V]>.25m .sp
-. di
-. if \n[.V]>.25m .sp
-. ds@need \\n[dn]
-. par*box-mark-top
-. ev nf
-. par*box-div
-. ev
-. nr \\n[.ev]:ri -\\n[par*box-n]
-. nr \\n[.ev]:li -\\n[par*box-n]
-. in -\\n[par*box-n]u
-. ll +\\n[par*box-n]u
-. lt +\\n[par*box-n]u
-. par*box-draw \\n[.i]u \\n[.l]u-(\\n[.H]u==1n*1n)
-.\}
-.el .@error B2 without B1
-..
-.de par*box-mark-top
-.ie '\\n[.z]'' \{\
-. rs
-. mk par*box-top
-.\}
-.el \!.par*box-mark-top
-..
-.de par*box-draw
-.ie '\\n[.z]'' \{\
-. nr par*box-in \\n[.i]
-. nr par*box-ll \\n[.l]
-. nr par*box-vpt \\n[.vpt]
-. nr par*box-ad \\n[.j]
-. ad l
-. vpt 0
-. in \\$1
-. ll \\$2
-\v'-1v+.25m'\
-\D'l (u;\\n[.l]-\\n[.i]) 0'\
-\D'l 0 |\\n[par*box-top]u'\
-\D'l -(u;\\n[.l]-\\n[.i]) 0'\
-\D'l 0 -|\\n[par*box-top]u'
-. br
-. sp -1
-. in \\n[par*box-in]u
-. ll \\n[par*box-ll]u
-. vpt \\n[par*box-vpt]
-. ad \\n[par*box-ad]
-.\}
-.el \!.par*box-draw \\$1 \\$2
-..
-.de @SH
-.par@finish
-.\" Keep together the heading and the first two lines of the next paragraph.
-.ne 3v+\\n[\\n[.ev]:PD]u+\\n(.Vu
-.sp 1
-.ft B
-..
-.\" TL, AU, and AI are aliased to these in cov*ab-init.
-.de par@TL
-.par@finish
-.sp 1
-.ft B
-.ps +2
-.vs +3p
-.ce 9999
-..
-.de par@AU
-.par@finish
-.sp 1
-.ft I
-.ce 9999
-..
-.de par@AI
-.par@finish
-.sp .5
-.ce 9999
-..
-.\" In paragraph macros.
-.de NL
-.ps \\n[\\n[.ev]:PS]
-..
-.de SM
-.ps -2
-..
-.de LG
-.ps +2
-..
-.de R
-.ft R
-..
-.\" par*define-font-macro macro font
-.de par*define-font-macro
-.de \\$1
-.ie \\\\n[.$] \{\
-. nr par*prev-font \\\\n[.f]
-\&\\\\$3\f[\\$2]\\\\$1\f[\\\\n[par*prev-font]]\\\\$2
-.\}
-.el .ft \\$2
-\\..
-..
-.par*define-font-macro B B
-.par*define-font-macro I I
-.par*define-font-macro BI BI
-.par*define-font-macro CW CR
-.\" underline a word
-.de UL
-\Z'\\$1'\v'.25m'\D'l \w'\\$1'u 0'\v'-.25m'\\$2
-..
-.\" box a word
-.de BX
-.nr par*bxw \w'\\$1'+.4m
-\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\
-\Z'\h'.2m'\\$1'\
-\h'\\n[par*bxw]u'
-..
-.\" The first time UX is used, put a registered mark after it.
-.ds par*ux-rg \(rg
-.de UX
-\s[\\n[.s]*8u/10u]UNIX\s0\\$1\\*[par*ux-rg]
-.ds par*ux-rg
-..
-.ds par@sup-start \v'-.9m\s'\En[.s]*7u/10u'+.7m'
-.als { par@sup-start
-.ds par@sup-end \v'-.7m\s0+.9m'
-.als } par@sup-end
-.\" footnote paragraphs
-.\" FF is the footnote format
-.nr FF 0
-.\" This can be redefined. It gets a second argument of `no' if the first
-.\" argument was supplied by the user, rather than automatically.
-.de FP
-.br
-.if !d par*fp!\\n[FF] \{\
-. @error unknown footnote format `\\n[FF]'
-. nr FF 0
-.\}
-.ie '\\$2'no' .par*fp!\\n[FF]-no "\\$1"
-.el .par*fp!\\n[FF] "\\$1"
-..
-.de par*fp!0
-.@PP
-\&\\*[par@sup-start]\\$1\\*[par@sup-end]\ \c
-..
-.de par*fp!0-no
-.@PP
-\&\\$1\ \c
-..
-.de par*fp!1
-.@PP
-\&\\$1.\ \c
-..
-.de par*fp!1-no
-.@PP
-\&\\$1\ \c
-..
-.de par*fp!2
-.@LP
-\&\\$1.\ \c
-..
-.de par*fp!2-no
-.@LP
-\&\\$1\ \c
-..
-.de par*fp!3
-.@IP "\\$1." (u;\\n[\\n[.ev]:PI]*2)
-..
-.de par*fp!3-no
-.@IP "\\$1" (u;\\n[\\n[.ev]:PI]*2)
-..
-.\" ***************************
-.\" ******** module nh ********
-.\" ***************************
-.\" Numbered headings.
-.\" nh*hl is the level of the last heading
-.nr nh*hl 0
-.\" numbered heading
-.de @NH
-.ie '\\$1'S' \{\
-. shift
-. nr nh*hl 0
-. while \\n[.$] \{\
-. nr nh*hl +1
-. nr H\\n[nh*hl] 0\\$1
-. shift
-. \}
-. if !\\n[nh*hl] \{\
-. nr H1 1
-. nr nh*hl 1
-. @error missing arguments to .NH S
-. \}
-.\}
-.el \{\
-. nr nh*ohl \\n[nh*hl]
-. ie \\n[.$] \{\
-. nr nh*hl 0\\$1
-. ie \\n[nh*hl]<=0 \{\
-. nr nh*ohl 0
-. nr nh*hl 1
-. \}
-. el \{\
-. if \\n[nh*hl]-\\n[nh*ohl]>1 \
-. @warning .NH \\n[nh*ohl] followed by .NH \\n[nh*hl]
-. \}
-. \}
-. el .nr nh*hl 1
-. while \\n[nh*hl]>\\n[nh*ohl] \{\
-. nr nh*ohl +1
-. nr H\\n[nh*ohl] 0
-. \}
-. nr H\\n[nh*hl] +1
-.\}
-.ds SN
-.nr nh*i 0
-.while \\n[nh*i]<\\n[nh*hl] \{\
-. nr nh*i +1
-. as SN \\n[H\\n[nh*i]].
-.\}
-.SH
-\\*[SN]
-..
-.\" ****************************
-.\" ******** module toc ********
-.\" ****************************
-.\" Table of contents generation.
-.de @XS
-.da toc*div
-.ev h
-.ie \\n[.$] .XA "\\$1"
-.el .XA
-..
-.de @div-end!toc*div
-.XE
-..
-.de XA
-.ie '\\n(.z'toc*div' \{\
-. if d toc*num .toc*end-entry
-. ie \\n[.$] \{\
-. ie '\\$1'no' .ds toc*num
-. el .ds toc*num "\\$1
-. \}
-. el .ds toc*num \\n[PN]
-. br
-. par@reset
-. na
-. ll -8n
-. in (n;0\\$2)
-.\}
-.el .@error XA without XS
-..
-.de XE
-.ie '\\n(.z'toc*div' \{\
-. if d toc*num .toc*end-entry
-. ev
-. di
-.\}
-.el .@error XS without XE
-..
-.de toc*end-entry
-\\a\\t\\*[toc*num]
-.br
-.rm toc*num
-..
-.de PX
-.1C
-.if !'\\$1'no' \{\
-. ce 1
-. ps \\n[PS]+2
-. ft B
-\\*[TOC]
-. ft
-. ps
-.\}
-.nf
-.char \[toc*leader-char] .\h'1m'
-.lc \[toc*leader-char]
-.ta (u;\\n[.l]-\\n[.i]-\w'000') (u;\\n[.l]-\\n[.i])R
-.sp 2
-.toc*div
-.par@reset
-..
-.\" print the table of contents on page i
-.de TC
-.P1
-.pg@begin 1 i
-.PX \\$1
-..
-.\" ****************************
-.\" ******** module eqn ********
-.\" ****************************
-.\" Eqn support.
-.de EQ
-..
-.de EN
-..
-.de @EQ
-.br
-.ds eqn*num "\\$2
-.ie '\\$1'L' .nr eqn*type 0
-.el \{\
-. ie '\\$1'I' .nr eqn*type 1
-. el \{\
-. nr eqn*type 2
-. if !'\\$1'C' .ds eqn*num "\\$1
-. \}
-.\}
-.di eqn*div
-.in 0
-.nf
-..
-.de @div-end!eqn*div
-.@EN
-..
-.\" Note that geqn mark and lineup work correctly in centered equations.
-.de @EN
-.ie !'\\n(.z'eqn*div' .@error-recover mismatched EN
-.el \{\
-. br
-. di
-. nr eqn*have-num 0
-. if !'\\*[eqn*num]'' .nr eqn*have-num 1
-. if \\n[dl]:\\n[eqn*have-num] \{\
-. sp \\n[DD]u
-. par@reset
-. ds eqn*tabs \\n[.tabs]
-. nf
-. ie \\n[dl] \{\
-. ds@need \\n[dn]u-1v+\n[.V]u
-. chop eqn*div
-. ie \\n[eqn*type]=0 \{\
-. ta (u;\\n[.l]-\\n[.i])R
-\\*[eqn*div]\t\\*[eqn*num]
-. \}
-. el \{\
-. ie \\n[eqn*type]=1 .ta \\n[DI]u \
-(u;\\n[.l]-\\n[.i])R
-. el .ta (u;\\n[.l]-\\n[.i]/2)C \
-(u;\\n[.l]-\\n[.i])R
-\t\\*[eqn*div]\t\\*[eqn*num]
-. \}
-. \}
-. el \{\
-. ta (u;\\n[.l]-\\n[.i])R
-\t\\*[eqn*num]
-. \}
-. sp \\n[DD]u
-. ta \\*[eqn*tabs]
-. \}
-. fi
-.\}
-..
-.\" ****************************
-.\" ******** module tbl ********
-.\" ****************************
-.\" Tbl support.
-.nr tbl*have-header 0
-.\" This gets called if TS occurs before the first paragraph.
-.de TS
-.LP
-.\" cov*ab-init aliases TS to @TS
-\\*[TS]\\
-..
-.de @TS
-.sp \\n[DD]u
-.if '\\$1'H' .di tbl*header-div
-..
-.de tbl@top-hook
-.if \\n[tbl*have-header] \{\
-. ie \\n[.t]-\\n[tbl*header-ht]-1v .tbl*print-header
-. el .sp \\n[.t]u
-.\}
-..
-.de tbl*print-header
-.ev nf
-.tbl*header-div
-.ev
-.mk #T
-..
-.de TH
-.ie '\\n[.z]'tbl*header-div' \{\
-. nr T. 0
-. T#
-. br
-. di
-. ie \\n[dn]+\\n[FM]+\\n[HM]+2v>=\\n[.p] \{\
-. @error ridiculously long table header
-. ds@need \\n[dn]
-. tbl*print-header
-. \}
-. el \{\
-. nr tbl*header-ht \\n[dn]
-. ds@need \\n[dn]u+1v
-. tbl*print-header
-. nr tbl*have-header 1
-. \}
-.\}
-.el .@error-recover .TH without .TS H
-..
-.de @div-end!tbl*header-div
-.TH
-.TE
-..
-.de TE
-.ie '\\n(.z'tbl*header-div' .@error-recover .TS H but no .TH before .TE
-.el \{\
-. nr tbl*have-header 0
-. sp \\n[DD]u
-.\}
-.\" reset tabs
-.TA
-..
-.de tbl@bottom-hook
-.if \\n[tbl*have-header] \{\
-. nr T. 1
-. T#
-.\}
-..
-.de T&
-..
-.\" ****************************
-.\" ******** module pic ********
-.\" ****************************
-.\" Pic support.
-.\" PS height width
-.de PS
-.br
-.sp \\n[DD]u
-.ie \\n[.$]<2 .@error bad arguments to PS (not preprocessed with pic?)
-.el \{\
-. ds@need (u;\\$1)+1v
-. in +(u;\\n[.l]-\\n[.i]-\\$2/2>?0)
-.\}
-..
-.de PE
-.par@reset
-.sp \\n[DD]u+.5m
-..
-.\" ****************************
-.\" ******** module ref ********
-.\" ****************************
-.\" Refer support.
-.de ]-
-.rm [A [B [C [D [E [G [I [J [N [O [P [Q [R [S [T [V
-.rm ref*string
-..
-.\" Other
-.ds ref*spec!0 Q A T1 S V N P I C D O
-.\" Journal article
-.ds ref*spec!1 Q A T2 J S V N P I C D O
-.\" Book
-.ds ref*spec!2 Q A T1 S V P I C D O
-.\" Article within book
-.ds ref*spec!3 Q A T2 B E S V P I C D O
-.\" Tech report
-.ds ref*spec!4 Q A T2 R G P I C D O
-.\" ][ type
-.de ][
-.if r [T \{\
-. als [T1 [T
-. als [T2 [T
-.\}
-.ie d ref*spec!\\$1 .ref*build \\*[ref*spec!\\$1]
-.el \{\
-. @error unknown reference type `\\$1'
-. ref*build \\*[ref*spec!0]
-.\}
-.ref*print
-.rm ref*string
-.rm [F [T1 [T2
-..
-.\" start of reference number
-.ds [. \\*[par@sup-start]
-.\" end of reference number
-.ds .] \\*[par@sup-end]
-.\" period before reference
-.ds <. .
-.\" period after reference
-.ds >. \" empty
-.\" comma before reference
-.ds <, ,
-.\" comma after reference
-.ds >, \" empty
-.\" start collected references
-.de ]<
-.als ref*print ref*end-print
-.SH
-\&\\*[REFERENCES]
-.par@reset
-..
-.\" end collected references
-.de ]>
-.par@finish
-.als ref*print ref*normal-print
-..
-.de ref*normal-print
-.ie d [F .FS "\\*([.\\*([F\\*(.]"
-.el .FS \&
-\\*[ref*string]
-.FE
-..
-.de ref*end-print
-.ie d [F .IP "\\*([F."
-.el .XP
-\\*[ref*string]
-..
-.als ref*print ref*normal-print
-.de ref*build
-.rm ref*string ref*post-punct
-.nr ref*suppress-period 1
-.while \\n[.$] \{\
-. if d [\\$1 \{\
-. ie d ref*add-\\$1 .ref*add-\\$1
-. el .ref*add-dflt \\$1
-. \}
-. shift
-.\}
-.\" now add a final period
-.ie d ref*string \{\
-. if !\\n[ref*suppress-period] .as ref*string .
-. if d ref*post-punct \{\
-. as ref*string "\\*[ref*post-punct]
-. rm ref*post-punct
-. \}
-.\}
-.el .ds ref*string
-..
-.de ref*add-T1
-.ref*field T , "\fI" "" "\fP"
-.if r [T .nr ref*suppress-period \\n([T
-..
-.de ref*add-T2
-.ref*field T , "\\*Q" "" "\\*U"
-.if r [T .nr ref*suppress-period \\n([T
-..
-.de ref*add-P
-.ie \\n([P>0 .ref*field P , "pp. "
-.el .ref*field P , "p. "
-..
-.de ref*add-J
-.ref*field J , \fI "" \fP
-..
-.de ref*add-D
-.ref*field D "" ( )
-..
-.de ref*add-E
-.ref*field E , "ed. "
-..
-.de ref*add-G
-.ref*field G "" ( )
-..
-.de ref*add-B
-.ref*field B "" "in \fI" "" \fP
-..
-.de ref*add-O
-.ref*field O .
-.ie r [O .nr ref*suppress-period \\n([O
-.el .nr ref*suppress-period 1
-..
-.de ref*add-A
-.ref*field A ,
-.if r [A .nr ref*suppress-period \\n([A
-..
-.de ref*add-dflt
-.ref*field \\$1 ,
-..
-.\" First argument is the field letter.
-.\" Second argument is the punctuation character to use to separate this field
-.\" from the previous field.
-.\" Third argument is a string with which to prefix this field.
-.\" Fourth argument is a string with which to postfix this field.
-.\" Fifth argument is a string to add after the punctuation character supplied
-.\" by the next field.
-.de ref*field
-.if d ref*string \{\
-. ie d ref*post-punct \{\
-. as ref*string "\\$2\\*[ref*post-punct] \"
-. rm ref*post-punct
-. \}
-. el .as ref*string "\\$2 \"
-.\}
-.as ref*string "\\$3\\*([\\$1\\$4
-.if \\n[.$]>4 .ds ref*post-punct "\\$5
-.nr ref*suppress-period 0
-..
-.\" ****************************
-.\" ******** module acc ********
-.\" ****************************
-.\" Accents and special characters.
-.ds Q \(lq
-.ds U \(rq
-.ds - \(em
-.\" Characters
-.\" The idea of this definition is for the top of the 3 to be at the x-height.
-.if !c\[yogh] .char \[yogh] \Z'\v'\w'x'*0-\En[rst]u'\s[\En[.s]*8u/10u]\
-\v'\w'3'*0+\En[rst]u'3\s0'\h'\w'\s[\En[.s]*8u/10u]3'u'
-.\" Accents
-.de acc*over-def
-.ds \\$1 \Z'\v'(u;\w'x'*0+\En[rst]-\En[.cht])'\
-\h'(u;-\En[skw]+(-\En[.w]-\w'\\$2'/2)+\En[.csk])'\\$2'
-..
-.de acc*under-def
-.ds \\$1 \Z'\v'\En[.cdp]u'\h'(u;-\En[.w]-\w'\\$2'/2)'\\$2'
-..
-.de acc*slash-def
-.ds \\$1 \Z'\h'(u;-\En[.w]-\w'\\$2'/2)'\
-\v'(u;\En[.cdp]-\En[.cht]+\En[rst]+\En[rsb]/2)'\\$2'
-..
-.de acc*prefix-def
-.ds \\$1 \Z'\h'(u;\w'x'-\w'\\$2'/2)'\\$2'
-..
-.acc*prefix-def ' \'
-.acc*prefix-def ` \`
-.acc*prefix-def ^ ^
-.acc*prefix-def , \(ac
-.acc*prefix-def : \(ad
-.acc*prefix-def ~ ~
-.\" improved accent marks
-.de AM
-.acc*over-def ' \'
-.acc*over-def ` \`
-.acc*over-def ^ ^
-.acc*over-def ~ ~
-.acc*over-def : \(ad
-.acc*over-def v \(ah
-.acc*over-def _ \(a-
-.acc*over-def o \(ao
-.acc*under-def , \(ac
-.acc*under-def . \s[\En[.s]*8u/10u]\v'.2m'.\v'-.2m'\s0
-.acc*under-def hook \(ho
-.acc*slash-def / /
-.char \[hooko] o\\\\*[hook]
-.ds q \[hooko]
-.ds 3 \[yogh]
-.ds D- \(-D\" Icelandic uppercase eth
-.ds d- \(Sd\" Icelandic lowercase eth
-.ds Th \(TP\" Icelandic uppercase thorn
-.ds th \(Tp\" Icelandic lowercase thorn
-.ds 8 \(ss\" German double s
-.ds Ae \(AE\" AE ligature
-.ds ae \(ae\" ae ligature
-.ds Oe \(OE\" OE ligature
-.ds oe \(oe\" oe ligature
-.ds ? \(r?\" upside down ?
-.ds ! \(r!\" upside down !
-..
-.par@load-init
-.\" Make sure that no blank lines creep in at the end of this file.
diff --git a/contrib/groff/tmac/tmac.safer b/contrib/groff/tmac/tmac.safer
deleted file mode 100644
index caabb5b..0000000
--- a/contrib/groff/tmac/tmac.safer
+++ /dev/null
@@ -1,13 +0,0 @@
-.\" remove unsafe requests
-.nr _C \n(.C
-.cp 0
-.rm open opena pso sy pi
-.de unsafe
-.tm \\n(.F:\\n(.c: unsafe to execute request `\\$1'
-..
-.als open unsafe
-.als opena unsafe
-.als pso unsafe
-.als sy unsafe
-.als pi unsafe
-.cp \n(_C
diff --git a/contrib/groff/tmac/tmac.trace b/contrib/groff/tmac/tmac.trace
deleted file mode 100644
index 2691c46..0000000
--- a/contrib/groff/tmac/tmac.trace
+++ /dev/null
@@ -1,10 +0,0 @@
-.\" Load this before a macro package that you want to trace.
-.rn de !!de
-.!!de de
-.!!de \\$1
-.tm *** trace enter \\$1: \\\\$0 \\\\$@
-\\\\*[!!\\$1]\\\\
-.tm *** trace exit \\$1: \\\\$0 \\\\$@
-\\..
-.!!de !!\\$1 \\$2
-..
diff --git a/contrib/groff/tmac/tmac.tty b/contrib/groff/tmac/tmac.tty
deleted file mode 100644
index 115c9d3..0000000
--- a/contrib/groff/tmac/tmac.tty
+++ /dev/null
@@ -1,48 +0,0 @@
-.nr _C \n(.C
-.cp 0
-.nroff
-.\" Don't warn about non-existent fonts.
-.warn \n[.warn]-(\n[.warn]/131072%2*131072)
-.po 0
-.if c\[shc] .shc \[shc]
-.de tty-char
-.if !c\\$1 .char \\$1 "\\$2
-..
-.ie c\(pc .tr \(bu\(pc
-.el .if c\(md .tr \(bu\(md
-.tty-char \(bu \z+o
-.tty-char \(14 1/4
-.tty-char \(12 1/2
-.tty-char \(34 3/4
-.tty-char \(ff ff
-.tty-char \(fi fi
-.tty-char \(fl fl
-.tty-char \(Fi ffi
-.tty-char \(Fl ffl
-.tty-char \(<- <-
-.tty-char \(-> ->
-.tty-char \(<> <->
-.tty-char \(em --
-.tty-char \(+- +-
-.tty-char \(co (C)
-.tty-char \(<= <=
-.tty-char \(>= >=
-.tty-char \(!= !=
-.tty-char \(== ==
-.tty-char \(~= ~=
-.tty-char \(sq []
-.tty-char \(lh <=
-.tty-char \(rh =>
-.tty-char \(lA <=
-.tty-char \(rA =>
-.tty-char \(hA <=>
-.tty-char \(rg (R)
-.tty-char \(OE OE
-.tty-char \(oe oe
-.tty-char \(AE AE
-.tty-char \(ae ae
-.tty-char \(an -
-.cp \n(_C
-.\" If you want the character definitions in tmac.tty-char to be loaded
-.\" automatically, remove the `\"' from the next line.
-.\"do mso tmac.tty-char
diff --git a/contrib/groff/tmac/tmac.tty-char b/contrib/groff/tmac/tmac.tty-char
deleted file mode 100644
index e8a45f9..0000000
--- a/contrib/groff/tmac/tmac.tty-char
+++ /dev/null
@@ -1,202 +0,0 @@
-.\" This file defines standard troff characters and some groff characters for
-.\" use with -Tascii, -Tlatin1, -Tutf8, and -Tcp1047.
-.\"
-.\" These definitions are chosen so that, as far as possible, they:
-.\" - work with all of -Tascii, -Tlatin1, -Tutf8, and -Tcp1047.
-.\" - work on devices that display only the last overstruck character
-.\" as well as on devices that support overstriking
-.\" - represent the character's graphical shape (not its meaning)
-.\"
-.nr _C \n(.C
-.cp 0
-.de tty-char
-.if !c\\$1 .char \\$1 "\\$2
-..
-.ie c\(a- .ds tty-rn \(a-
-.el .ds tty-rn \v'-1m'_\v'+1m'
-.tty-char \(tm tm
-.tty-char \(rn \*[tty-rn]
-.tty-char \(ua \z|^
-.tty-char \(da \z|v
-.tty-char \(sc S
-.tty-char \(ct \z/c
-.tty-char \(dg \z|-
-.tty-char \(dd \z|=
-.tty-char \(ib (\z=_
-.tty-char \(ip \z=_)
-.tty-char \(sb (=
-.tty-char \(sp =)
-.tty-char \(if oo
-.tty-char \(pt oc
-.tty-char \(es {}
-.tty-char \(ca (^)
-.tty-char \(cu U
-.tty-char \(de o
-.tty-char \(di -:-
-.tty-char \(no ~
-.tty-char \(gr \Z'\*[tty-rn]'V
-.tty-char \(is \z'\z,I
-.tty-char \(mo E
-.tty-char \(pd a
-.tty-char \(sr \e/
-.tty-char \(*C \z_H
-.tty-char \(*D \z_/\z_\e
-.tty-char \(*F \zIO
-.tty-char \(*G |\*[tty-rn]
-.tty-char \(*H \z-O
-.tty-char \(*L /\e
-.tty-char \(*P TT
-.tty-char \(*Q \zIY
-.tty-char \(*S \z_\Z'\*[tty-rn]'>
-.tty-char \(*W \z_O
-.if c\(ss .tty-char \(*b \(ss
-.tty-char \(*b B
-.tty-char \(*a a
-.tty-char \(*c \z,E
-.tty-char \(*d d
-.tty-char \(*e e
-.tty-char \(*f \z|o
-.tty-char \(+f \z|o
-.tty-char \(*g y
-.tty-char \(*h \z-0
-.tty-char \(+h \z-0
-.tty-char \(*i i
-.tty-char \(*k k
-.tty-char \(*l \z>\e
-.tty-char \(*m \z,u
-.tty-char \(*n v
-.tty-char \(*p \z-n
-.tty-char \(+p \z-w
-.tty-char \(*q \z|u
-.tty-char \(*r p
-.tty-char \(*s \z-o
-.tty-char \(*t \z~t
-.tty-char \(*u u
-.tty-char \(*w w
-.tty-char \(*x x
-.tty-char \(*y n
-.tty-char \(*z \z,C
-.tty-char \(ts s
-.\" Definition of \(ss should follow that of \(*b.
-.tty-char \(ss B
-.tty-char \(c* \zO\(mu
-.tty-char \(c+ \zO+
-.tty-char \(AN ^
-.tty-char \(OR v
-.tty-char \(uA \z=^
-.tty-char \(dA \z=v
-.if c\(md .tty-char \(pc \(md
-.if c\(pc .tty-char \(md \(pc
-.if c\(pc .tty-char \(a. \(pc
-.tty-char \(Im I
-.tty-char \(Re R
-.tty-char \(/L \z/L
-.tty-char \(/l \z/l
-.tty-char \(%0 %o
-.tty-char \(ao o
-.tty-char \(a" """"
-.tty-char \(ab \z'`
-.tty-char \(ah v
-.tty-char \(ho \(ac
-.tty-char \(/_ \z_/
-.tty-char \(=~ =~
-.tty-char \(Ah N
-.tty-char \(CR _|
-.tty-char \(fa \z-V
-.tty-char \(nm \z/E
-.tty-char \(pp \z_|
-.tty-char \(sd ''
-.tty-char \(st -)
-.tty-char \(te 3
-.if c\(md .tty-char \(tf .\(md.
-.tty-char \(tf .:.
-.tty-char \(wp p
-.tty-char \(~~ ~~
-.tty-char \(Fn \z,f
-.tty-char \(Bq ,,
-.tty-char \(bq ,
-.tty-char \(lz <>
-.\" Latin-1 characters
-.tty-char \(r! \z,i
-.tty-char \(Po \z-L
-.tty-char \(Cs \zox
-.tty-char \(Ye \z=Y
-.tty-char \(bb |
-.tty-char \(ad """"
-.tty-char \(Of \z_a
-.tty-char \(Fo <<
-.tty-char \(a- \*[tty-rn]
-.tty-char \(S2 2
-.tty-char \(S3 3
-.tty-char \(ps 9|
-.tty-char \(md .
-.tty-char \(pc .
-.tty-char \(ac ,
-.tty-char \(S1 1
-.tty-char \(Om \z_o
-.tty-char \(Fc >>
-.tty-char \(r? \z'c
-.tty-char \(`A \z`A
-.tty-char \('A \z'A
-.tty-char \(^A \z^A
-.tty-char \(~A \z~A
-.tty-char \(:A \z"A
-.tty-char \(oA \zoA
-.tty-char \(,C \z,C
-.tty-char \(`E \z`E
-.tty-char \('E \z'E
-.tty-char \(^E \z^E
-.tty-char \(:E \z"E
-.tty-char \(`I \z`I
-.tty-char \('I \z'I
-.tty-char \(^I \z^I
-.tty-char \(:I \z"I
-.tty-char \(-D \z-D
-.tty-char \(~N \z~N
-.tty-char \(`O \z`O
-.tty-char \('O \z'O
-.tty-char \(^O \z^O
-.tty-char \(~O \z~O
-.tty-char \(:O \z"O
-.tty-char \(/O \z/O
-.tty-char \(`U \z`U
-.tty-char \('U \z'U
-.tty-char \(^U \z^U
-.tty-char \(:U \z"U
-.tty-char \('Y \z'Y
-.tty-char \(TP \zIb
-.tty-char \(`a \z`a
-.tty-char \('a \z'a
-.tty-char \(^a \z^a
-.tty-char \(~a \z~a
-.tty-char \(:a \z"a
-.tty-char \(oa \zoa
-.tty-char \(,c \z,c
-.tty-char \(`e \z`e
-.tty-char \('e \z'e
-.tty-char \(^e \z^e
-.tty-char \(:e \z"e
-.tty-char \(`i \z`i
-.tty-char \('i \z'i
-.tty-char \(^i \z^i
-.tty-char \(:i \z"i
-.tty-char \(Sd \z`\z'o
-.tty-char \(~n \z~n
-.tty-char \(`o \z`o
-.tty-char \('o \z'o
-.tty-char \(^o \z^o
-.tty-char \(~o \z~o
-.tty-char \(:o \z"o
-.tty-char \(/o \z/o
-.tty-char \(`u \z`u
-.tty-char \('u \z'u
-.tty-char \(^u \z^u
-.tty-char \(:u \z"u
-.tty-char \('y \z'y
-.tty-char \(Tp \zpb
-.tty-char \(:y \z"y
-.\"tty-char \(:y \ij
-.tty-char \[arrowvertex] |
-.cp \n(_C
-.if !'\*(.T'cp1047' \
-. do mso tmac.latin1
OpenPOWER on IntegriCloud