diff options
author | ru <ru@FreeBSD.org> | 2001-04-17 12:23:50 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-04-17 12:23:50 +0000 |
commit | 3b5355d725800022c2c055a699326722a43b9dc2 (patch) | |
tree | 496e96972d2062817422e21a3cb29c8d258b2d22 /contrib/groff/tmac | |
parent | 0e0a0e6429c7113acf15c4c94bd5fe94c45f9e99 (diff) | |
download | FreeBSD-src-3b5355d725800022c2c055a699326722a43b9dc2.zip FreeBSD-src-3b5355d725800022c2c055a699326722a43b9dc2.tar.gz |
Removed files not present in v1.17 import.
Diffstat (limited to 'contrib/groff/tmac')
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 -\¯os 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 -\¶graphs 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 |