--- /dev/null
+." $Header$
+.LL 6.5i
+.MS T E
+\!.TL `\\n(S1``PUBMAC user's guide`
+.ME
+.MS T O
+\!.TL `PUBMAC user's guide``\\n(S1`
+.ME
+.MS B E
+\!.TL '%'''
+.ME
+.MS B O
+\!.TL '''%'
+.ME
+.SM S1 B S
+.IN 5
+.N
+.AD R
+Report no. 4
+.N
+second revision
+.N
+.AD B
+.N 10
+.CS
+.SS 14
+.BS
+PUBMAC
+.BE
+.N 1
+.US
+.SS 12
+A Set of NROFF/TROFF-Macros
+to Format Publications
+.UE
+.N 1
+User's Guide
+.N 2
+Third, revised edition
+March 1980
+.N 11
+.SS 10
+Katholieke Universiteit Nijmegen
+Informatics Department
+Nijmegen, The Netherlands.
+.CE
+.N 8
+.U ABSTRACT
+.N 1
+A set of NROFF/TROFF macros is presented, intended to facilitate the
+formatting of a paper for publication purposes.
+Predefined macros are supplied for the most frequent activities.
+Sectioning, section-numbering, construction
+of a table of contents and some other important
+facilities are automated.
+.S1 Introduction
+The UNIX text formatting program NROFF/TROFF
+.RS "NROFF/TROFF"
+J.F. Ossanna, NROFF/TROFF User's Manual, Bell Laboratories, Murray Hill,
+New Jersey
+.RE
+allows the user to define his own commands via a macro mechanism.
+The present paper describes PUBMAC, a set of macros for a set
+of very often repeated activities encountered in the text formatting
+process for a paper to be published.
+.P
+These activities comprise e.g. the division of a paper into
+sections, the automatic generation of a table of contents, footnote
+handling etc.
+PUBMAC is intended to simplify the user-interface of NROFF/TROFF in such a way
+that it is suitable for use by personnel with little formal training
+and no special talent for informatics.
+The macro set described in this Guide is designed
+by Thijs Zoethout
+after the
+.RS PUBMAC
+H.M. Stahl, PUBMAC User's Guide, Report no.4 revised, Informatica Department,
+Nijmegen University
+.RE
+macro set written by Hans-Michael Stahl for a previous version of NROFF.
+The set was later adapted for use on a high-quality laser printer
+allowing use of the full range of
+.U troff's
+capabilities
+by E. G. Keizer.
+.N
+The construction of the macro set was influenced by the SYSPUB macro
+set developed for SCRIPT at the University of Waterloo and described
+in
+.RS "SYSP77" "."
+SYSPUB User's Guide, University of Waterloo Computing Centre,
+1977
+.RE
+.P
+However, in contrast to SCRIPT, NROFF/TROFF only allows two characters as name for commands,
+so that it is quite difficult to select mnemonic command names.
+We tried our best to make full use of the expressive power
+of two characters...
+.P
+PUBMAC can be obtained from the author.
+Prerequisites for its use are:
+.PS
+.PT
+a machine with the UNIX operating system,
+with NROFF or TROFF,
+.PT
+an output device e.g. a daisywheel printer or laser printer.
+.PE
+.S2 Invoking PUBMAC
+calling NROFF/TROFF with the option
+.B -mkun,
+e.g.
+.DS I 6
+.BS
+\&troff -mkun file....
+.BE
+.DE
+The reader who desires to make use of further options may consult
+[NROFF/TROFF].
+Output from the preprocessors
+.UW tbl ,
+.U eqn
+and
+.U refer
+is recognized by PUBMAC.
+.N 1
+The commands needed to print the formatted text differ between
+installations.
+.S2 PUBMAC Input
+As for NROFF/TROFF, each line of
+the input files for PUBMAC either contains text to be formatted
+or is a command line.
+A command line begins with a control
+character (under PUBMAC ".") followed by the name of a
+PUBMAC command or of a NROFF/TROFF request.
+Command lines which do not contain a known PUBMAC or NROFF/TROFF
+command are ignored without complaints.
+.S2 Form of the PUBMAC commands
+All PUBMAC commands have a name consisting of one or two capital letters
+or a capital letter followed by a digit.
+Most commands embedding some text, i.e. a start and an end command,
+have a capital
+.B S
+(for start) and a capital
+.B E
+(for end)
+as second letter to gain at least a bit of systematics.
+.P
+Some commands may have operands; these have to be enclosed
+in double quotes ("), if they contain blanks.
+The number of operands is restricted to 9, but operands can
+be grouped into one operand by enclosing them in double quotes.
+.P
+Operands may be optional; this is indicated in the description by surrounding the
+operand by square brackets (\ [\ and\ ]\ ).
+A sequence of one or more operands is indicated by
+one operand followed by ellipses, e.g
+.B title... .
+.S2 NROFF/TROFF Commands under PUBMAC
+As PUBMAC does a lot of administration, NROFF/TROFF commands changing
+global values (e.g. linelength, current indentation) nearly
+always disturb this administration.
+Therefore it is recommended not to use NROFF/TROFF commands
+if not stated otherwise.
+Also, a NROFF/TROFF command can be renamed and thus not available
+any more under the old name.
+.N
+The renamed commands are:
+.DS I
+.TS 0
+l l s
+l l l.
+PUBMAC NROFF/TROFF
+\&.PO .po set page offset
+\&.TL .tl define title line
+.TE 0
+.DE
+.S2 PUBMAC Output
+Input text to PUBMAC is subject to two formatting processes:
+filling and adjusting.
+Filling means that output lines are about equally filled
+within the current line length;
+it is achieved
+by taking words from input lines as long until
+a complete output line is formed.
+A word, in the context of formatting, is any text
+surrounded by blanks.
+Adjusting means that all output lines are adjusted
+to some uniformity.
+This is achieved by expanding the blank spaces between
+output words as necessary or leaving one or both margins ragged.
+.P
+Under PUBMAC normally filling and adjusting
+are switched on by default, but both may be turned off separately
+(within certain limits).
+.N 5
+.U Acknowledgement
+.N
+I wish to thank all PUBMAC users,
+for their help in finding
+errors, and their proposals for correcting them.
+.S1 Global Structure
+This section describes the basic PUBMAC commands necessary to
+divide a paper into sections, paragraphs etc.
+If you are using PUBMAC for the first
+time, you are recommended to experiment with the commands described
+herein on a small document.
+.DS I
+.TS 0
+l l.
+\&.RP select report layout
+\&.S1 to create first level sections
+\&.S2 to create second-level sections
+\&.S3 to create third-level sections
+\&.S4 to create fourth-level sections
+\&.AP to start an appendix
+\&.SN to set the start value for section numbers
+\&.P to start a paragraph
+\&.A to start an alinea
+\&.PS to start a list of points
+\&.PT to start a point
+\&.PE to end a list of points
+.TE 0
+.DE
+.S2 Selecting a Layout
+PUBMAC offers two kinds of layout:
+.PS
+.PT
+the
+.U report layout
+which is suited for short papers and technical notes.
+.PT
+the
+.U manual layout
+which is thought for larger publications
+.FS * .
+This PUBMAC user's guide is an example of the
+manual layout.
+.FE
+.PE
+When the manual layout is selected, the first page is reserved
+as a title page and not counted for page numbering purposes,
+no headers and footers are printed on it,
+and new sections appear on a new page.
+.A
+For the report layout no title page is reserved, thus the
+output text immediately starts on the first page.
+A new section is not forced to appear on a new page.
+.A
+The manual layout is selected by default;
+to select the report layout, use the command
+.DS I 6
+.BS
+\&.RP
+.BE
+.DE
+.UW ( R e P ort).
+This command has to appear in the input text before the first
+.B .S1
+(see below).
+.S2 Sections
+PUBMAC offers commands
+to divide a paper into sections and subsections.
+Sections are numbered automatically and their
+numbers, titles and page numbers are collected for the table of contents
+which can be put out at the end of the report.
+.P
+To start a new section, use the command
+.DS I 6
+.BS
+\&.S1 title...
+.BE
+.DE
+where
+.B title...
+is the title of the section.
+If the manual report is selected, the section will appear on a new page and the title will be
+translated to capital letters and centered.
+If the report layout is chosen, the title only will be underlined and PUBMAC
+takes care that the title and the first 6 lines of the section
+text
+will appear on the same page.
+The text of a section immediately follows the
+.B .S1
+command.
+.P
+A section may be divided further into subsections, which again
+may be divided further etc, up to the level 4:
+.DS I 6
+.BS
+\&.S2 title...
+\&.S3 title...
+\&.S4 title...
+.BE
+.DE
+All subsections will be numbered automatically and their titles
+collected for the table of contents.
+The title of second-,
+third- and fourth-level subsections will be underlined;
+to make the underlining continuous,
+blanks separating the single words of
+.B title...
+will be translated to underscores.
+PUBMAC takes care, that the title and the first 5 lines of the text
+of subsections
+will appear on the same page.
+.P
+As an example, the next section was prefixed by
+.B .S2
+.BW Appendices .
+.S2 Appendices
+To start an appendix, use the command
+.DS I 6
+.BS
+\&.AP title...
+.BE
+.DE
+.UW ( AP pendix).
+This command acts like
+.B .S1
+with the exception, that appendices are numbered with capital letters instead of
+arabic numbers.
+.P
+To divide an appendix into further sections, use the
+.B .S2, .S3
+and
+.B .S4
+commands as explained above.
+.S2 Setting the Section Numbers
+Sometimes the need is felt to format a large paper not as a
+whole but in parts, especially when the final state
+of the paper has not yet been reached. Nevertheless the parts of
+the paper should contain consecutive section numbers
+and the correct page numbers.
+To achieve this, use the command
+.DS I 6
+.BS
+\&.SN s1 [s2 [s3 [s4 [ap]]]]
+.BE
+.DE
+.UW ( S ection
+.UW N umbers).
+The operands
+.B s1, s2, s3, s4
+determine the start value for the numbering of following sections and subsections.
+The operand
+.B ap
+serves to set the appendix number to the desired start value.
+.P
+To get the full table of contents and a complete
+bibliography list, the paper must be formatted as a whole.
+.S2 Paragraphs
+Two commands are supplied to start a new paragraph.
+They take care, that at least the first two
+lines of a paragraph are not split across a page boundary.
+.P
+To start a new paragraph, use the
+.DS I 6
+.BS
+\&.P [count [indent]]
+.BE
+.DE
+.UW ( P aragraph)
+command. The first line of the paragraph will be indented
+by
+.B indent
+(default is 3) columns and it will be separated from the previous paragraph by
+.B count
+(default is 1) blank line(s).
+.P
+If a paragraph should not be preceded by a blank line, use the command
+.DS I 6
+.BS
+\&.A [count [indent]]
+.BE
+.DE
+.UW ( A linea),
+which has the same effect as
+.B .P
+except that the operand
+.B count
+has the default 0.
+.S2 Lists of Points
+It is often desired to present a number of related items
+as a list of points. The PUBMAC commands
+.B .PS, .PT
+simplify the creation of such list.
+.P
+The command
+.DS I 6
+.BS
+\&.PS [style] [indentation] [ [prefix] suffix ]
+.BE
+.DE
+.UW ( P oint
+list
+.UW S tart)
+starts a list of points.
+The text of each point is indented from the current left margin and
+preceded by a label.
+.P
+.NE 13
+The operand
+.B style
+selects the labeling style of the points following the
+.B .PS
+command.
+The following styles are available:
+.PS
+.PT a:
+the points are labeled with small letters (a,b,..aa,bb,...);
+.PT A:
+the points are labeled with capital letters (A,B,..AA,BB...);
+.PT i:
+the points are labeled with small roman numbers (i,ii,iii...);
+.PT I:
+the points are labeled with capital roman numbers (I,II,III...);
+.PT 1:
+the points are labeled with arabic numbers (1,2,3...);
+.PE
+If
+.B style
+is not any of these then each point is labeled with the operand
+.BW style .
+.A
+The default is
+.DS I 6
+.BS
+\&.PS -
+.BE
+.DE
+The operand
+.B indentation
+determines how many columns from the
+current left margin the text of the points in the list is to be
+indented.
+If this operand is not specified, the default value 3 will be used.
+All operands remain valid for all points in the list.
+.P
+If you want the label selected by
+.B .PS
+to be followed
+by an additional string, for instance for labels as
+.B 1)
+and
+.B 2),
+use
+the operand
+.BW suffix .
+It determines the string to follow
+the point-label selected by
+.BW .PS .
+The default
+.B suffix
+is the empty string "".
+The operand
+.B prefix
+determines the string to be inserted before each point label.
+.P
+To start a point in such a list, use
+.DS I 6
+.BS
+\&.PT [label]
+.BE
+.DE
+.UW ( P oin T ).
+The text of the point has to follow on the next
+input lines.
+The optional operand
+.B label
+allows the replacement of the label selected
+by the
+.B .PS
+command ("-" or numbers as selected by "style")
+for a single point.
+If the text of the label is longer than the indentation selected
+by
+.B .PS,
+the text of the point in the output will appear on a new line.
+.P
+To continue the list of points, simply repeat the
+.B .PT
+command for every new point.
+.P
+A list of points is terminated by the command
+.DS I 6
+.BS
+\&.PE
+.BE
+.DE
+.UW ( P oint
+list
+.UW E nd).
+The command returns to the indentation level being
+actual when the last
+.B .PS
+was encountered by PUBMAC.
+.P
+Lists of points may be nested up to a maximum level of nine.
+A
+.B .PS
+command
+inside the actual list will create a new, nested list of
+points.
+A new numbering style and indentation value
+can be selected for this nested list of points.
+To return to the previous list of points, use the
+.B .PE
+command, which also will restore the old operand values.
+After being returned to the old list, the numbering
+of further points will continue as selected when this list was started.
+.P
+To give an impression how the
+.B .PT
+command can be used, the following example is given. The input text:
+.DS B
+.BS
+\&The .PT command can be used
+\&.PS a 5 )
+\&.PT
+\&to construct a list of points which appear marked and
+\&properly indented in the output file
+\&.PT
+\&to give a summary of information related to one point of view
+\&.PT
+\&to give more detailed information
+\&for a given statement in a top-down way
+\&.PS i 4 [ ]
+\&.PT
+\&this is possible in a nested way
+\&.PT
+\&the maximum level of nesting is nine, which
+\&in general will be enough
+\&.PE 0
+\&.PT
+\&in all respects, the .PT command
+\&is very useful to construct a "structured" paper.
+\&.PE
+\&Here the normal text processing continues on the
+\&indentation level as it was before the first .PT
+\&in this section.
+.BE
+.DE
+produces the following output:
+.N 1
+The .PT command can be used
+.PS a 5 )
+.PT
+to construct a list of points which appear marked and properly
+indented in the output file
+.PT
+to give a summary of information
+related to one point of view
+.PT
+to give more detailed information
+for a given statement in a top-down
+way
+.PS i 4 [ ]
+.PT
+this is possible in a nested way
+.PT
+the maximum level of nesting is nine, which
+in general will be enough
+.PE 0
+.PT
+in all respects, the .PT command
+is very useful to construct a "structured"
+paper.
+.PE
+Here the normal text processing continues on the
+indentation level as it was before the first .PS
+in this section.
+.P
+Another application for points are lists like the
+command summary in appendix B.
+The whole summary is a list of points preceded by
+.B .PS 1 8,
+every item in the list is a point started with
+.B .PT xx,
+where
+.B xx
+is the command name.
+.S1 Local Layout
+Two groups of commands are provided to determine the
+local layout:
+commands working on lines or groups of lines
+(to create empty lines, for indenting, centering, etc),
+and commands working on words (underlining, marking etc).
+.DS I
+.TS 0
+l l.
+\&.N [count] Begin new line, preceded by count blank lines
+\&.BP Begin new page
+\&.IS [count] Start indentating by count columns
+\&.IE End indentation
+\&.UN Undent temporarily
+\&.CS Start centering
+\&.CE End centering
+\&.US Start underlining
+\&.UE End underlining
+\&.BS Start bold type face
+\&.BE End bold type face
+\&.NE [count] Need count lines on the current page
+\&.U word... Underline word...
+\&.CU word... Continuous underline word...
+\&.B word... Bold face word...
+.TE 0
+.DE 0
+.S2 Line Oriented Commands
+The command
+.DS I 6
+.BS
+\&.N [count]
+.BE
+.DE
+.UW ( N ewline)
+starts a new output line,
+preceded by
+.B count
+blank lines.
+If
+.B count
+is omitted, no blank lines are generated but only a new line is begun.
+The command
+.DS I 6
+.BS
+\&.BP
+.BE
+.DE
+.UW ( B egin
+.UW P age)
+causes PUBMAC to put out the current page and start a new one.
+.NE 6
+.P
+The command
+.DS I 6
+.BS
+\&.IS [left indent [right indent [count]]]
+.BE
+.DE
+.UW ( I ndentation
+.UW S tart)
+indents the output by
+.B left indent
+(default is 3) columns at the left margin.
+Indents the output by
+.B right indent
+(default is 0) columns at the right margin,
+after generating
+.B count
+(default 0) blank lines.
+.DS I 6
+.BS
+\&.UN
+.BE
+.DE
+.UW ( UN dent)
+undents the next line temporarily, and the command
+.DS I 6
+.BS
+\&.IE [count]
+.BE
+.DE
+.UW ( I ndentation
+.UW E nd)
+undents the text permanently and
+generates
+.B count
+(default 0) blank lines.
+.P
+Indentations can not be nested.
+All three commands act as a break, i.e. put out a partially filled line.
+.P
+To center a piece of text, use the commands
+.DS I 6
+.BS
+\&.CS [count]
+\&.CE [count]
+.BE
+.DE
+.UW ( C enter
+.UW S tart,
+.UW C enter
+.UW E nd).
+All input lines between the two commands will
+appear centered, line for line without filling, in the output.
+The operand
+.B count
+specifies the number of blank lines preceding and following the centered text
+(default 0).
+Both commands act as a break.
+For instance, the title page of this report was formatted with the
+commands
+.DS I 6
+.BS
+\&.CS
+\&PUBMAC
+\&.N 1
+\&A Set of NROFF/TROFF-Macros
+\&to Format Publications
+\&.N 1
+\&User's Guide
+\&.N 2
+\&Third, revised edition
+\&March 1980
+\&.N 11
+\&.CE
+.BE
+.DE
+.P
+To underline a piece of text, use the commands
+.DS I 6
+.BS
+\&.US [C]
+\&.UE
+.BE
+.DE
+The text between the two commands will appear underlined.
+If no operand is specified, only letters and digits will be underlined and
+filling will take place.
+The optional operand C stands for Continuous underline.
+In this mode all characters and spaces will be underlined,
+no filling will occur.
+.P
+To print a piece of text in boldface, use the commands
+.DS I 6
+.BS
+\&.BS
+\&.BE
+.BE
+.DE
+.UW ( B old
+.UW S tart,
+.UW B old
+.UW E nd).
+The text between the two commands will appear in boldface.
+The result highly depends on the output device.
+In some cases the effect will be nil.
+.P
+Normally an input line starting with the control
+character "." or "\'" is interpreted as a command.
+To consider such lines as normal input,
+precede each of them by "\e&".
+.NE 5
+.P
+To assure that a certain piece of text is not split across a page boundary,
+use the command
+.DS I 6
+.BS
+\&.NE count
+.BE
+.DE
+.UW ( NE ed)
+which has no visible effect if there are still
+.B count
+lines left on the current output page,
+but causes a page eject if not.
+.S2 Word Oriented Commands
+The following commands all take a list of words as operands
+which are subject to a special treatment.
+None of the commands causes a break.
+.P
+To underline a sequence of words, use
+.DS I 6
+.BS
+\&.U word...
+.BE
+.DE
+.UW ( U nderline).
+The letters and digits in the operands
+.B word...
+will appear underlined in the output text.
+The command
+.P
+.DS I 6
+.BS
+\&.CU word....
+.BE
+.DE
+.UW ( C ontinuous
+.UW U nderline)
+will underline
+.U all
+characters,
+including the separating spaces.
+.P
+The command
+.DS I 6
+.BS
+\&.B word...
+.BE
+.DE
+.UW ( B old)
+will print the operands
+.B word...
+in bold face.
+The result highly depends on the output device.
+.S1 Tables, Figures and Formulas
+PUBMAC provides commands which allow the user to
+do his own formatting for figures, examples and so on.
+Another related group of commands allows the user
+to lay special stress on a piece of text.
+For these purposes, the following commands are available:
+.DS I
+.TS 0
+l l.
+\&.DS start a display
+\&.DS M start a marked display
+\&.DS X start a boxed display
+\&.DE end a display
+\&.DB allow breaking of following display
+.TE 0
+.DE
+A
+.U display
+is a text which should be kept together, i.e., if possible,
+should not be split across a page
+boundary, but moved as a whole to the next page
+(however, see
+.B .DB
+below).
+Provisions for several display types are made in PUBMAC.
+To start a display, use
+.DS I 6
+.BS
+\&.DS [mode]
+.BE
+.DE
+.UW ( D isplay
+.UW S tart),
+where
+.B mode
+determines the kind of display.
+To return to normal text processing, invoke the command
+.DS I 6
+.BS
+\&.DE [count]
+.BE
+.DE
+.UW ( D isplay
+.UW E nd).
+Where the operand
+.B count
+specifies the number of blank lines following the display (default 1).
+.N
+All text between both commands is subject to the formatting chosen
+by the operands of the selected display.
+Restrictions in the use of displays are discussed below.
+.S2 Simple Displays
+To start a simple display, use the command
+.DS I 6
+.BS
+\&.DS
+.BE
+.DE
+.UW ( D isplay
+.UW S tart).
+PUBMAC switches to no-format mode
+i.e. input text lines are neither filled nor
+adjusted.
+The user himself has to take care for the formatting, especially that
+the input text does not exceed the current linelength.
+Other PUBMAC commands may be used inside the display to do
+the formatting.
+.S2 Marked and Boxed Displays
+To lay special stress on a display,
+e.g. to achieve more contrast between examples and running text,
+it can be
+.UW M arked
+or
+.UW bo X ed.
+Optional operands specify the distance of the boundary of the display
+from the left and right margin.
+To start this kind of display, use the command
+.DS I 6
+.BS
+\&.DS [mark] M [left-indentation]
+\&.DS [mark] X [left-indentation] [right-indentation]
+.BE
+.DE
+.UW ( D isplay
+.UW S tart
+.UW M arked,
+.UW D isplay
+.UW S tart
+.UW bo X ed)
+The boundary of the display will be
+indented by
+.B left-indentation
+(default 3) columns from the current left margin.
+.N
+In the case of a marked display the left hand boundary of the display
+will be represented by the
+.B mark
+character on each line.
+.N
+In the case of a boxed display the whole boundary of the display will
+be indicated by the
+.B mark
+character.
+The right hand boundary of the display will by indented by
+.B right-indentation
+(default 0) columns from the right margin.
+.N
+For instance, the input text
+.DS I 6
+.BS
+\&.DS M
+\&The marked display can be used
+\&to make programming examples, formulae and similar text
+\&distinguishable from the running text.
+\&.DE
+.BE
+.DE
+produces the output
+.DS M
+.BS
+The marked display can be used
+to make programming examples, formulae and similar text
+distinguishable from the running text.
+.BE
+.DE
+.S2 Inside the display
+Inside simple and marked displays the text will be unformatted,
+that is neither filled nor adjusted.
+Inside boxed displays the text will be formatted.
+.P
+Appending
+.B I
+or
+.B Q
+operands after the before mentioned operands, allows the user
+to control the formatting of the text and specify indentation
+inside the boundary of the display.
+.N
+The possibilities are
+.DS I 6
+.BS
+\&.DS [....] I [left-indentation]
+\&.DS [....] Q [left-indentation] [right-indentation]
+.BE
+.DE
+Use of the Q operand
+.UW ( Q uoted)
+causes
+the text inside the display to be formatted.
+Use of the I operand
+.UW ( I ndent)
+causes
+the text to be unformatted.
+The default for the
+.B left-indentation
+is 3 columns.
+.N
+The default for the
+.B right-indentation
+is
+.BW left-indentation .
+.P
+As an example, the input lines
+.DS
+.BS
+\&This is the sentence preceding the quotation; to start the
+\"ation use the command ".DS Q".
+\&.DS Q 15
+\&This is the quoted material.
+\&Note that it is automatically indented from both margins.
+\&To terminate the quotation, use ".DE"
+\&.DE
+\&This is the first sentence following the quoted text.
+.BE
+.DE
+produce the following output:
+.NE 7
+This is the sentence preceding the quotation; to start the
+quotation use the command ".DS Q".
+.DS Q 15
+This is the quoted material.
+Note that it is automatically indented from both margins.
+To terminate the quotation, use ".DE"
+.DE
+This is the first sentence following the quoted text.
+.P
+The box
+.DS X 10 Q 5
+The text within the box display is subject
+to the normal PUBMAC formatting, but other PUBMAC commands
+can be used to get the desired layout.
+.CS
+Text for instance can appear
+centered
+within a box display
+.CE
+.DE
+was created with the input text:
+.DS I 6
+.BS
+\&.DS X 10 Q 5
+\&The text within a box display is subject
+\&to the normal PUBMAC formatting, but other PUBMAC commands
+\&can be used to get the desired layout.
+\&.CS
+\&Text for instance can appear
+\¢ered
+\&within a box display
+\&.CE
+\&.DE
+.BE
+.DE
+.S2 Breaking up a Display
+Normally a display is moved to the next page, if there is
+not enough space left on the current page to hold it completely.
+Especially when a display is long,
+this can lead to an annoyingly large amount of white paper
+caused by the page eject.
+.NE 5
+The command
+.DS I 6
+.BS
+\&.DB
+.BE
+.DE
+.UW ( D isplay
+.UW B reak
+allowed),
+.B .DS
+allows all following displays to be split if necessary.
+The same effect for one display only,
+can be obtained by appending the operand
+.B B
+to the
+.B .DS
+request.
+.S2 Restrictions with Displays
+.PS
+.PT
+As already mentioned, the user has to take care in unformatted
+displays that the length of the input lines does not exceed
+the current output line length;
+.ig
+especially in multi-column mode too long display text can lead to overprinting
+of columns.
+..
+.PT
+To prevent ugly output,
+the text of a box display should not be longer than a page.
+.PT
+It is not possible to nest displays.
+.PE
+.S2 Tables
+The program
+.B tbl
+can be used to configure complicated tables.
+A description of how to use it can be found in
+the
+.B tbl
+user's manual.
+.[
+%A M. E. Lesk
+%T T\s-2BL\s0\(emA program to format tables
+%I Bell laboratories
+%C Murray Hill, New Jersey
+.]
+PUBMAC will handle multiple page tables correctly.
+To repeat the table's heading on each page it is necessary to
+surround the heading with
+.B ".TS H
+and
+.BW .TH .
+The
+.B ".TS H
+command replaces the normal
+.B .TS
+command.
+.S2 Formulas
+The program
+.B eqn
+allows you to express formulas in a rather natural syntax.
+For more documentation about how to use
+.B eqn
+see [UPM75].
+.A
+The program
+.B eqn
+converts formula descriptions into NROFF/TROFF commands.
+Typical usage is
+.DS I 6
+.BS
+\&eqn file | troff
+.BE
+.DE
+where file contains both the
+.B eqn
+and PUBMAC requests.
+.P
+In PUBMAC the requests
+.DS I 6
+.BS
+\&.EQ [I/C] [indent] [L/R number] [R/L number] [count]
+\&.EN [count]
+.BE
+.DE
+.UW ( EQ uation,
+.UW E quation
+.UW e N d)
+are recognized.
+The first operand of
+.B .EQ
+can be
+.B I
+or
+.B C
+\&, C has the effect of centering the formula on the line and is
+the default, I has the
+effect of indenting the display by the value of the operand following the
+.B I
+(default 0).
+.P
+The following operands allow the formula to be numbered in one or
+both margins.
+.B L
+or
+.B R
+specify the the formula should be numbered at the Left or Right margin.
+The number to be placed in that margin should follow the
+.B L
+or
+.BW R .
+.P
+The operand
+.B count
+of
+.B .EQ
+and
+.B .EN
+specifies the amount of blank lines to be inserted at the
+before and after the
+formula.
+.S1 Page Format
+If you want to use another format than the standard format
+which is described below, you only may do this with special PUBMAC
+commands:
+.DS I
+.TS 0
+l l.
+\&.IN set standard indentation
+\&.PO set page offset
+\&.PN set page number
+\&.PL set page length
+\&.LL set line length
+\&.MS T define top margin titles
+\&.MS B define bottom margin titles
+\&.ME end titles
+\&.IN set default indent
+\&.AD adjust rigth margin
+\&.NA do not adjust right margin
+\&.HY switch hyphenation on
+\&.NH switch hyphenation off
+\&.HC set hyphenation indicator character
+.TE 0
+.DE
+.S2 The Standard Format
+PUBMAC uses the following standard values for the page format:
+.DS I
+the width of 3 digits for the standard indentation
+16.02 cm of text per line
+pages of 29.7 cm
+25.7 cm of text per page, including the margin titles
+2 cm of blank on top of page
+the page offset is 0
+bottom title of page is "-- % --"
+ where % is the current page number in arabic numerals
+adjust both margins, fill output lines
+hyphenation enabled
+.DE
+.S2 Setting the Page Offset
+If you want to have a larger
+blank margin on the left hand side of your paper (e.g. for binding
+purposes),
+use the command
+.DS I 6
+.BS
+\&.PO offset
+.BE
+.DE
+.UW ( P age
+.UW O ffset).
+The output will be moved as a whole by
+.B offset
+columns to the right.
+This command should precede all input text.
+The default offset is zero, i.e. printing starts at the leftmost
+position of the output device.
+.NE 10
+.S2 Changing the Page Format
+To change the length of the page, use the command
+.DS I 6
+.BS
+\&.PL paperlength [textlength [top offset]]
+.BE
+.DE
+.UW ( P age
+.UW L ength).
+The operand
+.B paperlength
+determines the physical length of the page (the number of lines
+which fit on one sheet of paper);
+the operand
+.B textlength
+determines the number of lines used by PUBMAC (excluding top and bottom margin)
+for text output.
+If
+.B textlength
+is not specified it is defaulted to
+.BW 26.03cm .
+The default value for
+.B paperlength
+is 29.7cm, which is
+the right value A4 paper.
+.A
+The offset of the text from the top of the paper is given by the operand
+.B top offset
+(default is 1.8cm).
+The sum of
+.B textlength
+and
+.B "top offset"
+must be smaller then or equal to
+.BW paperlength .
+.A
+This command must precede all other input text, as it is not
+possible to change the page length during the text processing.
+.P
+To change the linelength, use the command
+.DS I 6
+.BS
+\&.LL length [footnote length]
+.BE
+.DE
+.UW ( L ine
+.UW L ength).
+The default line length 16.02cm.
+The default footnote line length is 10/11 of the line length.
+.S2 Head and Foot Titles
+To define a head title, to appear at the start of each page, or to change
+the standard foot title ("\-\-~%~\-\-") at the bottom of each page,
+the commands
+.DS I
+.TS 0
+l l.
+\&.MS T define Top Margin titles
+\&.MS B define Bottom Margin titles
+\&.ME Title End
+.TE 0
+.DE
+are supplied.
+As with NROFF/TROFF, the current page number is represented by "%" in the
+.B .TL
+request.
+.P
+To define a head title, use the command
+.DS I 6
+.BS
+\&.MS T [E/O] [count]
+.BE
+.DE
+.UW ( M argin
+.UW T op text).
+The first optional operand allows the definition of different
+titles for even and odd numbered pages;
+specify
+.B E
+for titles to appear on even numbered, and
+.B O
+for titles to appear on odd numbered pages.
+If the second operand is omitted, the title defined will
+appear on all pages, regardless whether the page number
+is even or odd.
+The operand
+.B count
+specifies the number of blank lines between the top margin text
+and the start of further text
+(default 2).
+.A
+The text defining the head title
+follows on the next input lines. If you want to enter PUBMAC
+commands into the title which have to be executed each time the
+head title is processed (e.g.
+.B .TL
+commands), precede the command lines with the character
+sequence "\e!".
+Commands that affect the general layout,
+like
+.BW .SS
+and
+.BW .IN ,
+should be used with care.
+In general it is wise to reset the altered environment to its
+original state at the end of the title definition.
+.P
+To terminate the title definition, use
+.DS I 6
+.BS
+\&.ME
+.BE
+.DE
+.UW ( M argin
+text
+.UW E nd).
+.P
+Equivalent to head titles, foot titles can be defined. Use
+.DS I 6
+.BS
+\&.MS B [E/O] [count]
+.BE
+.DE
+.UW ( M argin
+.UW B ottom
+text) to start the input of the foot title. Use
+the command
+.B .ME
+to terminate the foot title definition, too.
+.P
+The foot titles of this manual, for instance, have been
+defined by:
+.DS I 6
+.BS
+\&.MS B E
+\&\e!.TL \'%\'\'\'
+\&.ME
+\&.MS B O
+\&\e!.TL \'\'\'%\'
+\&.ME
+.BE
+.DE
+This example also shows the usage of the escape sequence
+"\e!",
+which prevents both
+.B .TL
+commands from being executed during the definition
+of the titles, and causes them to be executed every time a new page
+is processed.
+This is essential to get the current page number
+and not the page number being actual when the title is defined.
+.NE 4
+.P
+To delete the standard foot title, simply define an empty foot title:
+.DS I 6
+.BS
+\&.MS B 0
+\&.ME
+.BE
+.DE
+.S2 Setting the Standard Indentation
+The value used for indenting paragraphs, after section start,
+indented and quoted displays, and for the command
+.B .IS,
+by default is set to 3.
+This value can be changed by invoking the command
+.DS I 6
+.BS
+\&.IN [indent]
+.BE
+.DE
+.UW ( IN dentation).
+After this command, further sections, paragraphs etc. are indented by
+the number of columns specified by
+.BW indent .
+If no indentation at all is desired, specify
+.B 0
+as operand.
+.B Indent
+has as default value 3.
+.S2 "Page Number"
+Sometimes a paper is formatted in parts.
+The number of the first page of a certain part will not
+always be 1.
+The command
+.DS I 6
+.BS
+\&.PN number [style]
+.BE
+.DE
+.UW ( P age
+.UW N umber)
+allows you to use a different start value for page numbers.
+The
+.B style
+operand
+can have one of the values: a, A, i, I and 1.
+These letters have the same meaning as for the
+.B style
+operand of the
+.B .PS
+request.
+The new number ( and format ) becomes valid at the next printed page,
+or at the first page if given before any text.
+.S2 Adjusting
+As already has been mentioned, the default mode for formatting
+is filling and adjusting.
+.A
+Adjusting can be switched off
+by the command
+.DS I 6
+.BS
+\&.NA
+.BE
+.DE
+.UW ( N o
+.UW A djust).
+All text following will not be aligned to a uniform right margin,
+until a
+.DS I 6
+.BS
+\&.AD [type]
+.BE
+.DE
+.UW ( AD just)
+is encountered, which switches on adjusting again.
+The operand
+.B type
+can be one of the following,
+.PS i 5
+.PT "~~R"
+Right adjusted: uniform right margin, ragged left margin
+.PT "~~L"
+Left adjusted: uniform left margin, ragged right margin
+.PT "~~C"
+Centered: both margins ragged by the same amount
+.PT "~~B"
+Both adjusted (default): uniform left and right margin
+.PE
+.S2 Hyphenation
+Hyphenation can be switched off globally by using the command
+.DS I 6
+.BS
+\&.NH
+.BE
+.DE
+.UW ( N o
+.UW H yphenation).
+.NE 6
+.N
+The command
+.DS I 6
+.BS
+\&.HY
+.BE
+.DE
+.UW ( HY phenation)
+enables hyphenation again.
+.P
+A second possibility is to use the command
+.DS I 6
+.BS
+\&.HC character
+.BE
+.DE
+(set
+.UW H yphenation
+.UW C haracter),
+which determines the operand
+.B character
+to be the indicator character for hyphenation.
+I.e. a word will be hyphenated
+at the points indicated by this character.
+The character itself will not appear in the
+output, even if the word is not hyphenated.
+Example:
+.DS I 6
+.BS
+\&.HC `
+\& .....
+\& ... Algo`rithmus ...
+.BE
+.DE
+This occurence of
+.B Algorithmus
+will now, if necessary, be hyphenated as
+.BS
+Algo-rithmus.
+.BE
+.A
+To prevent a word to be hyphenated at all,
+it has to be preceded by the hyphenation indicator character, e.g.
+.BW `Algorithmus .
+.S1 Footnotes, Table of Contents, Bibliography
+PUBMAC provides commands for the creation of
+footnotes, a table of contents and a list of bibliograpy.
+.P
+The following commands are available:
+.DS I
+.TS 0
+l l.
+\&.FS start a footnote
+\&.FN start numbered footnote
+\&.FE end a footnote
+\&.CT put out the table of contents
+\&.RS start a bibliography reference
+\&.RF start a reference
+\&.RE end a bibliography reference
+\&.RT give list of bibliography
+.TE 0
+.DE
+.S2 Footnotes
+Three commands are provided to create a footnote.
+Footnotes appear on the bottom of the page where they are
+defined; if the remaining place on the page is too small
+for the text of a footnote it will be shifted to the bottom of the next page.
+.P
+To start a footnote text, use the PUBMAC command
+.DS I 6
+.BS
+\&.FS [prefix] indicator [ suffix ]
+\&.FN [prefix] [suffix]
+.BE
+.DE
+.UW ( F ootnote
+.UW S tart,
+.UW F ootnote
+start
+.UW N umbered).
+.B indicator
+allows to identify the footnote:
+it will appear in the output text at the place where
+.B .FS
+was encountered in the input text, and it will appear at the start
+of the footnote text.
+.P
+The
+.B .FN
+request has as default indicator a number.
+This number is automaticaly incremented at each occurence of a
+.B .FN
+request.
+The footnote counter is reset to one for each new section, when
+in manual mode.
+.A
+The operand
+.B suffix
+is meant for the special case that
+a full stop, comma, semicolon etc. immediately has to follow
+the footnote indicator in the output text (otherwise the special
+character and the indicator would be separated by a blank, or even worse,
+by a newline).
+The operand
+.B prefix
+serves a similar purpose.
+.A
+If only two of the three operands are specified, the last is
+interpreted as the prefix.
+.P
+To end the text of a footnote, the command
+.DS I 6
+.BS
+\&.FE
+.BE
+.DE
+.UW ( F ootnote
+.UW E nd)
+is used. If the footnote is referenced in the middle of a sentence,
+the rest of the sentence has to follow the
+.B .FE
+on the next line.
+.NE 5
+.P
+As an example
+.FS (*) ,
+this is an example of a footnote
+.FE
+the footnote at the bottom of this page was created by the following
+input lines:
+.DS I 6
+.BS
+\&As an example
+\&.FS (*) ,
+\&this is an example of a footnote
+\&.FE
+\&the footnote at the .....
+.BE
+.DE
+This example also shows the usage of the operand
+.B suffix
+of the
+.B .FS
+command, you see that the indicator "(*)"
+is followed by "," immediately without a separating space.
+.S2 Table of Contents
+As mentioned above, all titles of sections are saved for a table
+of contents.
+To put out the table of contents,
+at the end of the input text invoke the command
+.DS I 6
+.BS
+\&.CT
+.BE
+.DE
+.UW ( C ontents
+.UW T able).
+The table of contents collected up to now is put out and then deleted.
+No headers or new page commands are generated.
+This gives one the flexibility to put out the table of contents
+for example at
+the end of each chapter on a separate page or at the end of the
+text in an appendix.
+To have the pages on which the table of contents is printed, numbered
+with roman numbers starting
+with "i", use the command
+.B .PN 1 i
+before the
+.B .CT
+command.
+The table of contents can then be inserted
+before the front page of your paper instead of at the end.
+In report mode the table of contents is also entered in the table of contents.
+.S2 Bibliography
+Besides supporting the
+.U refer
+utility PUBMAC provides
+commands to collect literature references and
+to print them at the desired place.
+.A
+To generate an entry in the bibliography and to refer to it, use
+.DS I 6
+.BS
+\&.RS [prefix] refname [suffix]
+.BE
+.DE
+.UW ( R eference
+.UW S tart).
+The text following this command is saved for the bibliography.
+Similar to the operands of the footnote command ,
+.B refname
+is placed in the running output text and at the start of the
+bibliography entry.
+.B refname
+will be enclosed in square brackets
+(\ [ and\ ]\ ).
+.B suffix
+and
+.B prefix
+have the same meaning as with the footnote command.
+PUBMAC commands for formatting the bibliography text have to be escaped
+by "\e!", as the layout of the bibliography is determined
+when the
+.B .RT
+command is invoked.
+.P
+.NE 8
+If you want to create an entry without referring to it
+in the text explicitely, use the command
+.DS I 6
+.BS
+\&.RF refname
+.BE
+.DE
+.UW ( R e F erence
+start).
+The result is the same as with
+.B .RS,
+but
+.B refname
+will not appear in the running text.
+.P
+To terminate a bibliography entry, use the command
+.DS I 6
+.BS
+\&.RE
+.BE
+.DE
+.UW ( R eference
+entry
+.UW E nd),
+which will switch back to normal text
+processing.
+.P
+To put out the collected bibliography, invoke the command
+.DS I 6
+.BS
+\&.RT
+.BE
+.DE
+.UW ( R eference
+.UW T able).
+The bibliography collected up to now is put out and then deleted,
+so that it is possible to start a new bibliography.
+In this way, bibliographies can be made either per section
+or for the whole paper.
+The bibliography is put out in the format being chosen the
+point at which the
+.B .RT
+command is invoked.
+.S2 Using refer
+The program
+.B refer
+can be used to add references to articles mentioned in a
+systemwide database, a private database or in the text.
+It places an indicator in the text and the reference in a footnote
+on the same page.
+If the
+.I \-e
+option of
+.B refer
+is used the references will appear at the appropiate place.
+The
+collected references have to be surrounded by appropiate
+PUBMAC commands.
+.S2 Indeces
+Commands are provided to collect index words accompanied by the number
+of the page they occur.
+Another command causes the list of collected index words to be printed
+on NROFF/TROFF's error output.
+.A
+To add an index entry to the list use
+.DS I 6
+.BS
+\&.IX index-word ...
+\&.IW [prefix] index-word [suffix]
+\&.IR index-word ...
+.BE
+.DE
+The arguments of the
+.B .IX
+.UW ( I nde\c
+.UW X )
+and
+.B .IW
+.UW ( I ndex
+.UW W ord)
+commands appear in the running text,
+as opposed to
+.B .IR
+.UW ( I ndex
+.UW R ference)
+whose arguments only appear in the index list.
+.B Suffix
+and
+.B prefix
+have the same meaning as with the footnote command.
+.A 1
+The collected references can be produced
+on NROFF/TROFF's error output with the command
+.DS I 6
+.BS
+\&.IT
+.BE
+.DE
+.UW ( I ndex
+.UW T able).
+By redirecting the error output of NROFF/TROFF
+one can save this list for further processing.
+.DS I
+.BS
+troff -mkun files .... 2>indeces
+awk -f .... indeces | troff -mkun
+.BE
+.DE
+.A
+The index entries are produced on one line each with the index words
+enclosed in square brackets and
+inmediatly followed by the appropiate page number.
+An example:
+.DS I 6
+.BS
+[indeces]\n%
+.BE
+.DE
+.S1 Special Considerations
+This section discusses
+the use of the tabulator, special characters and some other special
+facilities in PUBMAC.
+.S2 Tabulator
+The tabulator stops in PUBMAC are set to
+.DS I 6
+.BS
+9,17,25,33,....
+.BE
+.DE
+by default.
+To set the tabulator positions to your needs, use
+.DS I 6
+.BS
+\&.ta pos...
+.BE
+.DE
+(set
+.UW TA bulator),
+which will set the tabulator stops to the
+positions indicated by
+.B pos...
+If pubmac is used in conjuction with
+.B tbl
+the tab stops will be heavily used by tbl and thereby rendered
+almost unusable outside the tables.
+.S2 Special characters
+.SP
+The character
+"~"
+is replaced by the unpaddable space character,
+which permits tying two or more words together so that
+they will neither be moved apart nor split across two lines.
+For example, if you want the words
+"integral number denotation" not to be separated by more
+than one blank, enter them as
+.BW integral~number~denotation .
+.P
+The command
+.DS I 6
+.BS
+\&.SP [character]
+.BE
+.DE
+allows you to use any other character as indicator for the unpaddable space.
+If you specify no operand, you will have no single character to
+indicate a unpaddable space.
+.SP ~
+.P
+Since the backslash character "\e" is used heavily by NROFF/TROFF as escape
+character,
+it has to be written twice if one wants to see it back in the output.
+As the text of displays is processed several times,
+even a doubled backslash will be lost.
+Therefore a backslash in a display should be entered
+either eight or a higher power of 2 times (which is a nuisance) or as "\ee".
+.S2 Halfline Motions
+NROFF/TROFF, thus also PUBMAC, provides the
+possibility for half line motions, e.g. for formatting
+mathematical formulas.
+The sequence
+.B \ed
+moves down half a line, and the sequence
+.B \eu
+moves up half a line.
+The output
+.N 1
+ (i\d1\u - i\d2\u)\u2\d
+.N 1
+was produced with the input
+.DS I 6
+.BS
+(i\ed1\eu - i\ed2\eu)\eu2\ed
+.BE
+.DE
+Usage of
+.B \ed
+and
+.B \eu
+can result in messy output on devices
+not capable of performing half line motions; messy output
+also will result if not the same number of "ups" and "downs" is
+used.
+.P
+Typically lineprinters and display terminals can not perform half line
+motions, whereas the HyPrint devices are capable of doing so.
+.P
+See also the section describing the use of
+.B eqn
+with PUBMAC.
+.S2 The Actual Section Number
+The actual section numbers are stored in registers named
+.B Sn,
+where
+.B n
+stands for any of the digits 1, 2, 3, 4 and 5.
+If you want to refer to it, access it in the input text through
+.B \en(Sn,
+which will be replaced in the output text by the current section
+number of the corresponding section depth.
+For example if you wish to insert the number of the current chapter
+use
+.BW \en(S1 .
+The register named S5 is used for the numbering of appendices.
+.A
+To use it in a page title definition, two backslashes have to be written:
+.BW \e\en(Sn .
+The first line of the page header of
+this manual, for instance, has been produced by entering the
+command
+.DS I 6
+.BS
+\&\e!.TL \'PUBMAC users guide\'\'\e\en(S1\'
+.BE
+.DE
+when defining the head title with the commands
+.B .MS T
+and
+.B .ME
+(see previous chapter).
+.SM AP A
+.AP "Error messages"
+Besides error messages issued by NROFF/TROFF,
+messages from PUBMAC may be written to the users terminal
+(Unix error output file 2).
+The messages have the following form:
+.DS I 6
+.BS
+Error (p=.., l=..): message
+.BE
+.DE
+.B message
+gives information about the kind of error encountered.
+The location of the error is described between the parentheses
+in the order
+.DS I
+p = page number
+l = line number on the page
+.DE
+Additionally, errors are marked by three plus signs (\(pl\(pl\(pl) or a \(lh
+.DS I 6
+.BS
+\&\(lh Error
+.BE
+.DE
+appearing on the right margin of the output text.
+Since many errors are detected much too late,
+the actual error is always located before the location stated.
+.LL
+.AP "Command Summary"
+In the summary, the following abbreviations are used for operands:
+.VS 0.8 0.2
+.PS - 6
+.PT n
+denotes a number (e.g. '1', '5', '231')
+.PT c
+denotes a single character (e.g. 'i', 'F', 'O')
+.PT w
+denotes a word (e.g. 'NROFF', 'pubmac')
+.PT w...
+denotes a sequence of 1 or more words
+(e.g. 'Table of Contents')
+.PE
+.VS
+.N 4
+.PS 1 14
+.PT Command
+Explanation
+.PT .A [n]
+.B Alinea.
+.N
+First line of alinea will be indented.
+.N
+The alinea will be preceded by n (default 0) blank lines.
+.PT .AD [c]
+.B Adjust mode.
+.N
+Left, Right, Centered or Both.
+.NE 3+1
+.PT ".AP w..."
+.B Appendix.
+.N
+Same as .S1.
+.NE 6+1
+.PT ".B w..."
+.B Boldface.
+.N
+Write the words given as operands w... in
+bold face letters (this is done in a output device dependant way).
+.PT .BE
+.B Bold end.
+.N
+End of bolt text.
+.PT .BP
+.B Begin page.
+.PT ".BS"
+.B Bold start.
+.N
+All following text is printed in bold face up to .BE.
+.N
+The way bold face is printed depends on the output device.
+.NE 10
+.PT .CE
+.B Centering end.
+.N
+The centered text will be followed by n blank lines.
+.NE 3
+.PT .CS
+.B Centering start.
+.N
+Following input lines up to .CE will be centered.
+.N
+The centered text will be preceded by n blank lines.
+.NE 10+1
+.PT ".CT"
+.B Table of contents.
+.N
+All titles collected from previous .S1, .S2, .S3, .S4 and .AP commands
+are put out.
+.PT ".CU w..."
+.B Continuous underline.
+.N
+Like .U only all characters are underlined.
+.NE 4+1
+.PT .DB
+.B Display break.
+.N
+Allow the following displays to be broken
+up, if necessary.
+.PT .DE [n]
+.B Display end.
+.N
+The display will be followed by n (default 1) blank lines.
+.NE 6+1
+.PT ".DS "
+.B Display.
+.N
+A display is text
+which is kept together and not spread over a page boundary.
+.N
+The operands determine the kind of display.
+The first few operands are:
+.N
+.PS - 4
+.PT B
+.B box display
+.N
+the text between .DS B and .DE
+will be surrounded by a box, the text will be formatted and adjusted
+.PT M
+.B marked display
+.N
+the text will be marked by |
+on the left hand side, not adjusted and not filled
+.PT no
+.N 1
+not adjusted, not filled
+.PE
+These operands can be followed by:
+.PS - 4
+.PT I
+.B indented display
+.N
+not adjusted, not filled
+.PT Q
+.B quoted display
+.N
+indented from both margins,
+adjusted and filled
+.PE
+.PT .FE
+.B Footnote end.
+.NE 3
+.PT ".FN [[w2] w1]"
+.B Numbered footnote start
+.N
+As with .FS, but the indicator is defaulted to a number in parenthesis.
+.NE 17+1
+.PT ".FS [w3] w1 [w2]"
+.B Footnote start.
+.N
+The footnote will be moved to the bottom of the page.
+Operands: w1=indicator, w2=suffix and w3=prefix.
+The indicator (w1) appears in the output text and
+at the start of the footnote text as well to identify the footnote.
+Prefix and suffix are for the special case that the indicator
+has to be preceded or followed by e.g. comma, full stop etc.
+The running text will contain w3w1w2.
+.NE 10+1
+.PT ".HC c"
+.B Hyphenation character.
+.N
+The hyphenation control character is set to c.
+It can be imbedded in words to indicate where they should be
+hyphenated. If it precedes a word, this word will not be
+hyphenated. The hyphenation character itself will not appear in
+the output.
+.PT .HY
+.B Hyphenation.
+.PT .IE
+.B Indentation end.
+.N
+Return to the indentation level before the last .IS.
+.NE 4+1
+.PT ".IN n"
+.B Set Indentation.
+.N
+The indentation used for paragraphs, section start etc
+is set to n.
+.NE 4+1
+.PT .IR w...
+.B Index Reference
+add the words to the index list, do not
+insert them in the running text.
+.NE 4+1
+.PT .IS [n]
+.B Indentation start.
+.N
+Indent following text by n (default three) columns until
+a .IE is encountered.
+.NE 4+1
+.PT .IT
+.B Index Table
+Produce the index table on file descriptor 2.
+.NE 4+1
+.PT .IW [w3] w1 [w2]
+.B Index word
+Insert w1, w2 and w3 in the running text as with
+.B .FS
+and add w1 to the index list.
+.NE 4
+.PT IX w...
+.B Index
+Insert the words in the running text and the index list.
+.NE 5+1
+.PT ".LL n"
+.B Linelength.
+.N
+The line length is set to n.
+The default line length is 66.
+Must occur before any input text.
+.NE 6+1
+.PT .ME
+.B Margin input end
+.NE 13+1
+.PT ".MS c1 c2"
+.B Title input start.
+.N
+Operands: c1=T for T title, c1=B for bottom title,
+c2=E for even pages, c2=O for odd pages.
+The text between .MS and .ME will appear
+as top and bottom margin text on each page.
+Defaults: no top margin text, bottom margin text= ".TL \'\'-- % --\'\'".
+Attention: NROFF/TROFF commands to be executed every time
+(e.g. .TL \'\'-%-\'\')
+a title is processed, have to be preceded by "\e!".
+.PT ".N [n]"
+.B New line.
+.N
+The new line will be preceded by n (default 0) blank lines.
+.PT .NA
+.B No adjust mode.
+.N
+The right margin will be ragged.
+.NE 4+1
+.PT ".NE n"
+.B Need lines.
+.N
+If no n lines are left on the current page, a new page is begun.
+.PT .NH
+.B No hyphenation.
+.NE 5+1
+.PT ".P [n]"
+.B Paragraph.
+.N
+The paragraph is separated from the preceding text
+by n (default 1) blank lines and its first line is indented.
+.PT .PE [n]
+.B End list of points.
+.NE 5+1
+.N
+The list will be followed by n (default 1) blank lines.
+.NE 9+1
+.PT ".PL n m"
+.B Set pagelength.
+.N
+The first operand determines the physical length of the
+page, the second one the number of lines printed per physical page.
+The default value for n is 66, for m 59.
+Must occur before any input text.
+.PT ".PN n c"
+.B Page number.
+.N
+The firts operand specifies the number of the next printed page.
+The second operand specifies the format of the page number when printed.
+(see .PS, but only a,A,i,I and 1).
+.PT ".PO [n] "
+.B Set page offset.
+.N
+The left margin is moved n columns to the
+right.
+.NE 12+1
+.PT ".PS [c [n]] [[w2] w1]"
+.B List of points start.
+.N
+Operands:
+c=numbering style, n=indentation of points (default=3).
+If c=- or empty, points are labeled with "-", if c=1
+numbering of points will be arabic, if c=a with small letters,
+if c=A with capital letters, if c=i with small roman numbers, if c=I
+with capital roman numbers.
+w1 is a suffix that will follow each point, w2 is a point prefix.
+.NE 4+1
+.PT ".PT w... "
+.B Point.
+.N
+The operands w... replace the label chosen by .PS
+for this point only.
+.NE 4+1
+.NE 2
+.PT .RE
+.B Reference entry end
+.N
+To close the text of the reference entry started by .RF or .RS.
+.NE 12+1
+.PT ".RF [w3] w1 [w2]"
+.B Reference.
+.N
+Operands: w1=reference abbreviation,
+w2=suffix, w3=prefix.(see .FS)
+The reference abbreviation is embedded in square brackets
+and inserted to the output text and to the start of the reference
+entry as well for identification purposes.
+References are collected to be put out
+with .RT.
+.PT .RP
+.B Report layout.
+.NE 4+1
+.PT ".RS w"
+.B Reference start.
+.N
+Same as .RF, but the reference w will not appear in the running output
+text.
+.NE 7+1
+.PT .RT
+.B Give bibliography.
+.N
+Via .RF and .RS collected bibliography is put out and then deleted.
+.PT ".S1 w..."
+.B Section.
+.N
+t is the section title, also saved for the table of contents.
+Sections and subsections (see below) are numbered automatically.
+.NE 5+1
+.PT ".S2 w..."
+.B Subsection.
+.N
+The title will be saved for the table of contents, as for
+the following commands .S3 and .S4
+.PT ".S3 w..."
+.B Subsubsection.
+.PT ".S4 w..."
+.B Subsubsubsection.
+.NE 6+1
+.PT ".SN n n n n n"
+.B Section numbers.
+.N
+The first, second, third and fourth operands
+set the start values for section numbers, subsection numbers and so on.
+The last operands sets the start value for the appendix number.
+.NE 4+1
+.PT ".ta n..."
+.B Set tabulator.
+.N
+The tabulator stops are set to the positions n...
+given in the operand list.
+Usage conflicts with use of
+.B tbl.
+.NE 4+1
+.PT ".TL x"
+.B Title.
+.N
+To define a three part title; x is of the
+form \'left\'center\'right\'.
+.PT ".U w..."
+.B Underline.
+.N
+The words given as operands w... are underlined.
+.PT .UE
+.B Underlining end.
+.PT .UN
+.B Undent temporarily.
+.PT ".US [c]"
+.B "Underlining start"
+.N
+All following text up to .UE is underlined.
+Operand: c=C then the input text is non-filled and continuously underlined,
+normaly only letters and digits are underlined.
+.PE
+.AP Bibliography
+.N 2
+.RT
+.PN 1 A
+.MS T E
+\!.TL ```PUBMAC user's guide`
+.ME
+.MS T O
+\!.TL `PUBMAC user's guide```
+.ME
+.BP
+.N 0.5
+.CS
+Table of Contents
+.CE
+.N 1.5
+.CT
--- /dev/null
+.\" $Header$
+.\" PUBMAC
+.\"
+.\" MACROES FOR FORMATTING TEXT
+.\"
+.\" Th.A. Zoethout
+.\"
+.\" GENERAL PAGE CONTROL MACROES
+.\"
+.de SS \" SET POINT SIZES
+.\" .SS [ $1 [$2] ]
+. \" $1 = point size { 10 }
+. \" $2 = footnote point size { $1-2 }
+.ps 10
+.if \\n(.$>0 .ps \\$1 \" for troff
+.nr SS \\n(.s
+.ev 1
+.ie \\n(.$>1 .ps \\$2
+.el .ps \\n(SS-2
+.nr Sf \\n(.s
+.ps \\n(SS
+.ev
+.\\*(Ld
+.\\*(Vs
+..
+.\"
+.de TP \" SET NUMBER OF FREE PAGES
+.\" .TP [$1]
+. \" $1 = number of free pages { 1 }
+. \" initially one free page
+.nr TP 1
+.if \\n(.$>0 .if \\$1>=0 .nr TP \\$1
+.if \\n(nl<0 .Pn
+.rm TP
+..
+.de PL \" SET VERTICAL SIZES
+.\" .PL [ $1 [ $2 [$3] ] ]
+. \" $1 = paper size { A4 }
+. \" $2 = text size { 27.38c }
+. \" $3 = offset from top of paper { 1.35c }
+. \" constraints: $2+$3 <= $1
+.\" The distance from the foot margin to the bottom of the
+.\" paper (\n(Bd) is implicit { \n(.p - \n(Td - \n(Pl }
+.ie \\n(.$>0 .pl \\$1
+.el .pl 29.73c
+.ie \\n(.$>1 .nr Pl \\$2v
+.el .nr Pl 27.38c
+.if \\n(Pl>\\n(.p .Er F ".PL: page size(\\n(Pl) > paper size(\\n(.p)
+.ie \\n(.$>2 .nr Td \\$3v
+.el .nr Td 1.35c
+.nr Bd \\n(.p-\\n(Td-\\n(Pl
+.if \\n(Bd<=0 \
+. Er F ".PL: top offset(\\n(Td) + page size(\\n(Pl) > paper size(\\n(.p)
+.nr Tm \\n(Tdu+\\n(Ttu+\\n(Tsu
+.nr Bm \\n(Bsu+\\n(Btu+\\n(Bdu
+.ch Bm \\n(.pu-\\n(Bmu
+.if \\n(Fl>0 .Fp
+.rr Pl
+..
+.de LL \" SET HORIZONTAL SIZES
+.\" .LL [ $1 [$2] ]
+. \" $1 = line length { 6.5i }
+. \" $2 = footnote line length { $1*10/11 }
+.ll 16.02c
+.if \\n(.$>0 .ll \\$1
+.lt \\n(.lu
+.nr LL \\n(.l
+.ev 1
+.ll \\n(LLu
+.lt \\n(LLu
+.ev
+.ie \\n(.$>1 .nr Lf \\$2m
+.el .nr Lf \\n(LLu*10/11
+..
+.\" \" PAGE SIZES
+.\" Default is 11 inch, 6.5 inch line length
+.\" The .An macros set to European standard sizes.
+.\" LL PL TL Of
+.\" A0 74.09 118.92 108.92 5
+.\" A1 51.46 84.09 78.09 4
+.\" A2 35.045 59.46 52.46 3.5
+.\" A3 23.73 42.045 36.045 3
+.\" A4 16.02 29.73 27.38 1.35
+.\" A5 11.60 21.022 18.33 1.20
+.\" All sizes in cm.
+.\" The .An macros have one parameter. An optional -.
+.\" If this is used the page size is not altered, to allow
+.\" for example printing A5 pages on A4 paper.
+.\"
+.de A0 \" SET PAGE SIZE TO A0
+.\" .A0 [ - ]
+.if !\\n(.$ .pl 118.92c
+.PL \\n(.pu 108.92c 5c
+.LL 74.09c
+..
+.de A1 \" SET PAGE SIZE TO A1
+.\" .A1 [ - ]
+.if !\\n(.$ .pl 84.09c
+.PL \\n(.pu 78.09c 4c
+.LL 51.45c
+..
+.de A2 \" SET PAGE SIZE TO A2
+.\" .A2 [ - ]
+.if !\\n(.$ .pl 59.46c
+.PL \\n(.pu 52.46c 3.5c
+.LL 35.045c
+..
+.de A3 \" SET PAGE SIZE TO A3
+.\" .A3 [ - ]
+.if !\\n(.$ .pl 42.045c
+.PL \\n(.pu 36.045c 3c
+.LL 23.73c
+..
+.de A4 \" SET PAGE SIZE TO A4
+.\" .A4 [ - ]
+.if !\\n(.$ .pl 29.73c
+.PL \\n(.pu 27.38c 1.35c
+.LL 16.02c
+..
+.de A5 \" SET PAGE SIZE TO A5
+.\" .A5 [ - ]
+.if !\\n(.$ .pl 21.022c
+.PL \\n(.pu 19c 0.9c
+.LL 12c
+..
+.\"de PO \" PAGE OFFSET
+.\" .PO [$1]
+. \" $1 = page offset in characters { 1 }
+.\"ie \\n(.$>0 .po \\$1m
+.\"el .po 1m
+.rn po PO
+.\".
+.\"
+.\" MARGIN TEXT CONTROL
+.\"
+.de MT \" MARGIN TEXT SETTINGS
+.\" .MT $1 [$2] [$3]
+. \" $1 = Top or Bottom
+. \" $2 = Even[Odd], All { no title }
+. \" $3 = Vertical spacing to/from text { 2 }
+.ds Mc N
+.if \&\\$1\&T\& .ds Mc T
+.if \&\\$1\&B\& .ds Mc B
+.if \&\\*(Mc\&N\& .Er W ".MT: unknown margin type. T assumed
+.nr MT 2
+.if \&\\*(Mc\&N\& .nr MT 1
+.if \&\\*(Mc\&N\& .ds Mc T
+.nr \\*(Mcc 0
+.if \&\\$2\&E\& .nr \\*(Mcc 1
+.if \&\\$2\&O\& .nr \\*(Mcc 1
+.if \&\\$2\&A\& .nr \\*(Mcc 2
+.if \\n(\\*(Mcc=0 .nr \\*(Mct 0v
+.if \\n(\\*(Mcc>0 .nr MT +1
+.nr \\*(Mcs 2v
+.if \\n(\\*(Mcc=0 .nr \\*(Mcs 0
+.if \\n(MT<=\\n(.$ .nr \\*(Mcs \\$\\n(MTv
+.rr MT
+.rm Mc
+..
+.de MS \" SET MARGIN TEXT FOR TOP OR BOTTOM OF PAGE
+.\" .MS $1 [ $2 [$3] ]
+. \" $1 = Top or Bottom
+. \" $2 = Even pages, Odd pages, All pages { A }
+. \" $3 = vertical spacing to/from text { 2 }
+.ds Mc N
+.if \&\\$1\&T\& .ds Mc T
+.if \&\\$1\&B\& .ds Mc B
+.if \&\\*(Mc\&N\& .Er W ".MS: unknown margin type. T assumed
+.nr MS 2
+.if \&\\*(Mc\&N\& .nr MS 1
+.if \&\\*(Mc\&N\& .ds Mc T
+.nr \\*(Mcc 0
+.if \&\\$\\n(MS\&E\& .nr \\*(Mcc 1
+.if \&\\$\\n(MS\&O\& .nr \\*(Mcc 3
+.if \&\\$\\n(MS\&A\& .nr \\*(Mcc 2
+.if \\n(\\*(Mcc>0 .nr MS +1
+.if \\n(\\*(Mcc=0 .nr \\*(Mcc 2
+.nr \\*(Mcs 2v
+.if \\n(MS<=\\n(.$ .nr \\*(Mcs \\$\\n(MSv
+.ev 2
+.ll \\n(LLu
+.lt \\n(LLu
+.if \\n(\\*(Mcc=1 .di \\*(Mce
+.if \\n(\\*(Mcc=2 .di \\*(Mct
+.if \\n(\\*(Mcc=3 .di \\*(Mco
+.if \\n(\\*(Mcc=3 .nr \\*(Mcc 1
+..
+.de ME \" END SPECIFICATION OF TOP/BOTTOM MARGIN TITLE
+.\" .ME
+.ie \\n(MS=0 .Er W ".ME: no matching .MS
+.el \{\
+.br
+.di
+.cu 0
+.ev
+.nr \\*(Mct \\n(dn
+.nr Tm \\n(Tdu+\\n(Ttu+\\n(Tsu
+.nr Bm \\n(Bsu+\\n(Btu+\\n(Bdu
+.ch Bm \\n(.pu-\\n(Bmu
+.if \\n(Fl>0 .Fp
+.if \\n(Tmu+\\n(Bmu>=\\n(.pu \
+. Er F "top margin size + bottom margin size >= paper size
+.rm Mc
+.nr MS 0
+.if (\\(nl>=(\\n(.pu-\\n(Bmu))&(\\n(Mi=0) .Bm \}
+..
+.de PN \" SET FIRST PAGE NUMBER
+.\" .PN [ $1 [$2] ]
+. \" $1 = number of first page { 1 }
+. \" $2 = pagenumber format { 1 }
+.ie \\n(.$>0 .nr PN \\$1
+.el .nr PN 1
+.ie \\n(.$>1 .ds Pa \\$2
+.el .ds Pa 1
+.if \\n(nl<0 .Pn
+..
+.de Pn \" set page number
+.if \\n(TP=0 .if \\n(PN>0 \{\
+.pn \\n(PN
+.af % \\*(Pa
+.rm Pa
+.nr PN 0 \}
+..
+.\"
+.\" GLOBAL SIZE CONTROL
+.\"
+.de VS \" SET DEFAULT VERTICAL SPACING
+.\" .VS [$1 [$2] ]
+. \" $1 = default vertical spacing { 0.8v }
+. \" $2 = default vertical spacing in PS { 0.7v }
+.ie \\n(.$>0 .nr VS \\$1v
+.el .nr VS 0.8v
+.ie \\n(.$>1 .nr VP \\$2v
+.el .nr VP 0.7v
+.ds $0 VS
+.At "\\$1" "\\$2"
+.rn $0 Vs
+..
+.de LD \" SET LINE DISTANCE
+.\" .LD [$1]
+. \" $1 = default line distance { SS+2 points }
+.ie \\n(.$>0 .vs \\$1
+.el .vs \\n(SS+2
+.ev 1
+.ie \\n(.$>0 .vs \\$1
+.el .vs \\n(Sf+2
+.ev
+.ds $0 LD
+.At "\\$1" "\\$2"
+.rn $0 Ld
+..
+.de ND \" SET DEFAULT VERTICAL NEED
+.\" .ND [$1]
+. \" $1 = default need { 2 }
+.ie \\n(.$>0 .nr ND \\$1
+.el .nr ND 2
+..
+.de IN \" SET DEFAULT INDENTATION
+.\" .IN [$1]
+. \" $1 = default indent { 3 }
+.ie \\n(.$>0 .nr IN \\$1n
+.el .nr IN 3n
+..
+.\"
+.\" TEXT PROCESSING MODES
+.\"
+.de AD \" SET ADJUSTMENT
+.\" .AD [$1]
+. \" $1 = adjustment type L R C B { previous }
+.if \&\\$1\&L\& .ad l
+.if \&\\$1\&R\& .ad r
+.if \&\\$1\&C\& .ad c
+.if \&\\$1\&B\& .ad b
+.if \&\\$1\&\& .ad
+.ev 1
+.if \&\\$1\&L\& .ad l
+.if \&\\$1\&R\& .ad r
+.if \&\\$1\&C\& .ad c
+.if \&\\$1\&B\& .ad b
+.if \&\\$1\&\& .ad
+.ev
+..
+.de NA \" NO ADJUSTMENT
+.\" .NA
+. \" .NA = .AD L
+.na
+.ev 1
+.na
+.ev
+..
+.de NS \" NO SPACING
+.\" .NS
+. \" cancel first default vertical spacing.
+.nr NS 1
+..
+.de HY \" HYPHENATION ON
+.\" .HY
+.hy 7
+.ev 1
+.hy 7
+.ev
+..
+.de NH \" NO HYPHENATION
+.\" .NH
+.nh
+.ev 1
+.nh
+.ev
+..
+.de HC \" SET HYPHENATION CHARACTER
+.\" .HC [$1]
+. \" $1 = hyphenation character { \% }
+.ie \\n(.$>0 \{\
+.ds Hc \\$1
+.hc \\$1
+.ev 1
+.hc \\$1
+.ev \}
+.el \{\
+.ds Hc \%
+.hc
+.ev 1
+.hc
+.ev \}
+..
+.\"
+.\" LOCAL SIZE CONTROL
+.\"
+.de BP \" BEGIN PAGE
+.rs
+.sp 50c
+.ns
+..
+.de N \" NEW LINE
+.\" .N [$1]
+. \" $1 = preceeding vertical spacing { 0 }
+. \" needs \n(ND+$1 lines on the page
+.ti \\n(.iu
+.ie \\n(.$>0 .sp \\$1
+.el .br
+.ne \\n(ND
+.rs
+..
+.de A \" NEW ALINEA
+.\" .A [ $1 [$2] ]
+. \" $1 = preceeding vertical spacing { 0 }
+. \" $2 = indent of first text line { \n(IN }
+. \" needs \n(ND+\$1 lines on the page
+.ie \\n(.$>0 .sp \\$1
+.el .br
+.ne \\n(ND
+.ie \\n(.$=2 .ti +\\$2
+.el .ti +\\n(INu
+.rs
+..
+.de P \" NEW PARAGRAPH
+.\" .P [ $1 [$2] ]
+. \" $1 = preceeding vertical spacing { 1 }
+. \" $2 = indent of first line { \n(IN }
+. \" .P $1 $2 = .A $1 $2
+. \" needs \n(ND+\$1 lines on the page
+.if \\n(.$=0 .A 0.8v
+.if \\n(.$=1 .A \\$1
+.if \\n(.$=2 .A \\$1 \\$2
+..
+.de NE \" NEED LINES
+.\" .NE [$1]
+. \" $1 = number of lines needed on page { \n(ND }
+.br
+.ie \\n(.$=0 .ne \\n(NDv
+.el .ne \\$1v
+.rs
+..
+.\" DATES
+.\"
+.de TA \" SET TAB POSITIONS
+.\" .TA [ $1 ... ]
+. \" $1 ... = tab positions { 9 17 25 33 41 49 57 65 73 }
+.if \\n(.$=0 .ta 9 17 25 33 41 49 57 65 73
+.if \\n(.$>0 .ta \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de NC \" SET NO-BREAK CONTROL CHARACTER
+.\" .NC [ $1 ]
+. \" $1 = no-break control character
+.ie \\n(.$>0 .ds Nc \\$1
+.el .ds Nc \a
+.ev 0
+.c2 \\*(Nc
+.ev
+.ev 1
+.c2 \\*(Nc
+.ev
+.ev 2
+.c2 \\*(Nc
+.ev
+..
+.de SP \" SET UNPADDABLE SPACE CHARACTER
+.\" .SP [$1]
+. \" $1 = unpaddable space character { none }
+. \" initially set to ~
+.\\*(Sp
+.if \\n(.$>0 .ds Sp "tr \\$1
+.if \\n(.$>0 .\\*(Sp
+.if \\n(.$>0 .as Sp "\\$1
+..
+.de IS \" INDENTATION START
+.\" .IS [ $1 [ $2 [$3] ] ]
+. \" $1 = indent from left margin { \n(IN }
+. \" $2 = indent from right margin { 0 }
+. \" $3 = preceeding vertical spacing { 0 }
+.ie \\n(IS>0 .Er W ".IS: nesting not allowed
+.el \{\
+.if \\n(.$>2 \{\
+.sp \\$3v
+.rs \}
+.nr IE \\n(.l
+.if \\n(.$>1 .ll -\\$2m
+.nr UN \\n(.i
+.if \\n(.$=0 .in +\\n(INu
+.if \\n(.$>0 .in +\\$1
+.nr IS 1 \}
+..
+.de UN \" TEMPORARILY UNDENT
+.\" .UN [$1]
+. \" $1 = undent { \n(UN }
+.if \\n(.$=0 .if \\n(IS>0 .ti \\n(UNu
+.if \\n(.$=0 .if \\n(IS=0 .Er W ".UN: no matching .IS
+.if \\n(.$>0 .if \\$1m>=\\n(.iu .ti 0
+.if \\n(.$>0 .if \\$1m<\\n(.iu .ti -\\$1m
+..
+.de IE \" INDENTATION END
+.\" .IE [$1]
+. \" $1 = succeeding vertical spacing { 0 }
+.ie \\n(IS=0 .Er W ".IE: no matching .IS
+.el \{\
+.nr IS 0
+.in \\n(UNu
+.ll \\n(IEu
+.if \\n(.$>0 \{\
+.sp \\$1v
+.rs \}
+.rr UN
+.rr IE \}
+..
+.\"
+.\" LOCAL TEXTPROCESSING CONTROL
+.\"
+.de CS \" START CENTERED NONFILLED TEXT
+.\" .CS [$1]
+. \" $1 = preceding vertical spacing { 0 }
+.nr CS 1
+.if \\n(.$>0 .sp \\$1v
+.ce 1000
+..
+.de CE \" END CENTERED NONFILLED TEXT
+.\" .CE [$1]
+. \" $1 = succeeding vertical spacing
+.if \\n(CS=0 .Er W ".CE: no matching .CS
+.nr CS 0
+.ce 0
+.if \\n(.$>0 .sp \\$1v
+..
+.de C \" CENTER WORDS
+.\" .C $1 ...
+. \" $1 ... = words to be centered
+.if \\n(.$>0 \{\
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.ce 1
+\&\\*(St
+.rm St
+.if \\n(CS>0 .ce 1000 \}
+..
+.de US \" START UNDERLINED TEXT
+.\" .US [$1]
+. \" $1 = Underl., Continuous underl. (non-filled) { U }
+.nr US 2
+.if \&\\$1\&C\& .nr US 1
+.if \\n(US=1 .cu 1000
+.if \\n(US=2 .ul 1000
+..
+.de UE \" END UNDERLINED TEXT
+.\" .UE
+.if \\n(US=0 .Er W ".UE: no matching .US
+.if \\n(US=1 .cu 0
+.if \\n(US=2 .ul 0
+.nr US 0
+..
+.de U \" UNDERLINE WORDS
+.\" .U $1 ...
+. \" $1 ... = words to be underlined
+.nr Bf \\n(.f
+.ft 2
+\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.ft \\n(Bf
+.rr Bf
+..
+.de CU \" CONTINUOUS UNDERLINE WORDS
+.\" .CU $1 ...
+. \" $1 ... = words to be underlined
+.if \\n(.$>0 \{\
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+\\*(Hc\l#\w\&\\*(St\&u\(ul#\h#-\w\&\\*(St\&u#\\*(St
+.rm St \}
+..
+.de UW \" UNDERLINE WORD
+.\" .UW [ [$1] ) $2 ( $3 [ $4 [ $5 [ $6 [ $7 [ $8 [$9]]]]]] ]
+. \" $1 = non-underlined prefix
+. \" $2 = word to be underlined
+. \" $3 = non-underlined suffix
+. \" $4 $6 $8 = underlined tail
+. \" $5 $7 $9 = non-underlined tail
+.if \\n(.$=1 .ds St \f2\\$1\fP
+.if \\n(.$=2 .ds St \f2\\$1\fP\\$2
+.if \\n(.$>2 .ds St \\$1\f2\\$2\fP\\$3
+.if \\n(.$>3 .as St \f2\\$4\fP
+.if \\n(.$>4 .as St \\$5
+.if \\n(.$>5 .as St \f2\\$6\fP
+.if \\n(.$>6 .as St \\$7
+.if \\n(.$>7 .as St \f2\\$8\fP
+.if \\n(.$>8 .as St \\$9
+\&\\*(St
+.rm St
+..
+.de BS \" EMBOLDING START
+.ie \\n(BS>0 .Er W ".BS: nesting not allowed
+.el \{\
+.ft 3
+.nr BS 1 \}
+..
+.de BE \" EMBOLDING END
+.ie \\n(BS=0 .Er W ".BE: no matching .BS
+.el \{\
+.ft 1
+.nr BS 0 \}
+..
+.de B \" EMBOLDEN WORDS
+.\" .B $1 ...
+. \" $1 ... = words to be emboldened
+.nr Bf \\n(.f
+.ft 3
+\&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.ft \\n(Bf
+.rr Bf
+..
+.de BW \" EMBOLDEN WORD
+.\" .BW [ [$1] ) $2 ( $3 [ $4 [ $5 [ $6 [ $7 [ $8 [$9]]]]]] ]
+. \" $1 = non-emboldened prefix
+. \" $2 = word to be emboldened
+. \" $3 = non-emboldened suffix
+. \" $4 $6 $8 = emboldened tail
+. \" $5 $7 $9 = non-emboldened tail
+.if \\n(.$=1 .ds St \f3\\$1\fP
+.if \\n(.$=2 .ds St \f3\\$1\fP\\$2
+.if \\n(.$>2 .ds St \\$1\f3\\$2\fP\\$3
+.if \\n(.$>3 .as St \f3\\$4\fP
+.if \\n(.$>4 .as St \\$5
+.if \\n(.$>5 .as St \f3\\$6\fP
+.if \\n(.$>6 .as St \\$7
+.if \\n(.$>7 .as St \f3\\$8\fP
+.if \\n(.$>8 .as St \\$9
+\&\\*(St
+.rm St
+..
+.\" PAGE CONTROL SUPPORT
+.\"
+.de Tm \" top margin trap macro
+.ie \\n(Fl=0 .ch Bm \\n(.pu-\\n(Bmu
+.el .Ft \" process footnote
+.ev 2
+.sp \\n(Tdu
+.if \\n(TP=0 .Mm T
+.ev
+.if \\n(TP=0 .ns
+.nr TQ \\n(.i
+.nr TK \\n(.u
+.if \\n(TH=2 \{\
+. nr TQ \\n(.i \" insert table header
+. in 0
+. nf
+. nr TH 0
+. TT
+. nr TH 2
+. in \\n(TQu
+. if \\n(TK .fi\
+\}
+.mk #T
+..
+.de Bm \" bottom margin trap macro
+.if \\(Im .Er F "Macro package error: recursive trap
+.nr Im 1
+.ch Bm \\n(.p+1u \" The trap gets reset by Tm
+.if \\n(TS>0 \{\
+.nr Ft \\n(Fl
+.nr Fl 0 \" Disable footnote processing
+.nr T. 1 \" Draw box for this page
+.T# 1
+.nr Fl \\n(Ft \" Enable footnote processing
+.rr Ft
+.br \}
+.ch Id
+.if \\n(Fl>0 .Fb \" process footnotes
+.ev 2
+.if \\n(TP=0 .Mm B
+.ev
+.if \\n(TP>0 \{\
+.nr TP -1
+.if \\n(TP=0 .if \\n(PN=0 .ds Pa 1
+.if \\n(TP=0 .if \\n(PN=0 .nr PN 1 \}
+.Pn
+\\*(Ncbp \" Nc is no-break control character
+.if \\n(Fl>1 \\*(Ncbr \" footnote overflow from last page
+.rr Im
+..
+.de Mm \" output margin
+. \" $1 = Top, Bottom
+.ll \\n(LLu
+.lt \\n(LLu
+.nr Mm \\n(.i
+.in 0
+\\*(Ncnf \" Nc is no-break control character
+.pc %
+.if \&\\$1\&B\& .sp |\\n(.pu-\\n(Bmu+\\n(Bsu
+.if \\n(\\$1c=1 .if e .\\$1e
+.if \\n(\\$1c=2 .\\$1t
+.if \\n(\\$1c=1 .if o .\\$1o
+.if \&\\$1\&T\& .sp \\n(Tsu
+\\*(Ncfi \" Nc is no-break control character
+.in \\n(Mmu
+.rr Mm
+..
+.\"
+.\" PRESET MARGIN TEXTS
+.\"
+.rn tl TL \" TITLE REQUEST renamed
+.\"
+.de Tt \" title at top of page
+.TL \&\&\(hy\(hy % \(hy\(hy\&\&
+..
+.de Te \" title at top of even page
+.TL \&%\&\&\&
+..
+.de To \" title at top of odd page
+.TL \&\&\&%\&
+..
+.de Bt \" title at bottom of page
+.TL \&\&\(hy\(hy % \(hy\(hy\&\&
+..
+.de Be \" title at bottom of even page
+.TL \&%\&\&\&
+..
+.de Bo \" title at bottom of odd page
+.TL \&\&\&%\&
+..
+.\"
+.\" ERROR MESSAGE MACRO
+.\"
+.de Er \" errors
+.\" .Er $1 $2
+. \" $1 = Warning/Fatal
+. \" $2 = error message
+.tm Error, page \\n%: \\$2
+.lt \\n(.lu+\w'\\*(rE Error'u+1n
+.vs 0
+.TL \&\&\&\v'-1v'\\*(rE Error\v'1v'\&
+.vs
+.lt \\n(LLu
+.if \&\\$1\&F\& .br
+.if \&\\$1\&F\& .fl
+.if \&\\$1\&F\& .ex
+.rr Er
+..
+.\"
+.\" OTHER SERVICE MACROES
+.\"
+.de Cr \" Check for non-overlapping constructs
+.if \\n(PS>0 \{\
+. Er W "Points not closed
+.Pe \}
+.if \\n(FS>0 \{\
+. Er W "Footnote not closed
+.FE \}
+.if \\n(DS>0 \{\
+. Er W "Display not closed
+.DE \}
+.if \\n(IS>0 \{\
+. Er W "Indentation not closed
+.IE \}
+.if \\n(CS>0 \{\
+. Er W "Centered text not closed
+.CE \}
+.if \\n(US>0 \{\
+. Er W "Underlined text not closed
+.UE \}
+.if \\n(BS>0 \{\
+. Er W "Embolded text not closed
+.BE \}
+.if \\n(RS>0 \{\
+. Er W "Reference not closed
+.RE \}
+..
+.de Ct \" catenate arguments
+. \" $1 ... = to be glued with unpaddable space
+.ds St \\$1
+.if \\n(.$>1 .as St \ \\$2
+.if \\n(.$>2 .as St \ \\$3
+.if \\n(.$>3 .as St \ \\$4
+.if \\n(.$>4 .as St \ \\$5
+.if \\n(.$>5 .as St \ \\$6
+.if \\n(.$>6 .as St \ \\$7
+.if \\n(.$>7 .as St \ \\$8
+.if \\n(.$>8 .as St \ \\$9
+..
+.\"
+.\" INITIALIZATION
+.\"
+.nr MS 0 \" margin title setting indicator
+.nr Tt 1v \" length of top title { no title }
+.nr Tc 0 \" case of top title { no title }
+.nr Ts 2v \" vertical spacing succeeding top title
+.nr Bt 1v \" length of bottom title
+.nr Bc 2 \" case of bottom title { ALL }
+.nr Bs 2v-0.3c \" vertical spacing preceeding bottom title
+.wh 0 Tm \" set top margin trap macro
+.wh \n(.pu-1v Bm \" set bottom margin trap macro, A4 determines final pos
+.A4 \" Paper size is A4
+.SS 10 \" Point size is 10
+.LD \" default baseline spacing
+.VS \" default extra vertical spacing
+.NC \" Set no-break to our own default
+.nr PN 1 \" other pagenumber indicator { first pagenumber = 1 }
+.nr TP 1 \" number of unnumbered pages at start of text
+.nr NS 0 \" don't cancel default spacing
+.nr ND 2 \" default need
+.nr IN 3n \" default indent
+.ds Hc \%
+.nr IS 0 \" indent indicator
+.nr CS 0 \" center indicator
+.nr US 0 \" underline indicator
+.nr BS 0 \" bold indicator
+. \" refer set up
+.ie \n(.V<=(1v/5) \{\
+.ds <. .\h'-0.2m' \" . is placed directly after the word
+.ds <, ,\h'-0.2m' \" , is placed directly after the word
+.ds [. \v'-0.4m'\s-2\^\f1 \" The reference is placed n-e and smaller
+.ds .] \s0\v'0.4m'\fP\}
+.el \{\
+.ds >. . \" The . follows the reference
+.ds >, , \" The , follows the reference
+.ds [. \f1[ \" The ref. is enclosed in [ and ]
+.ds .] ]\fP\}
+.ie (\w\&\(lh\&) .ds rE \(lh
+.el .ds rE \(pl\(pl\(pl
+. \" unpaddable space
+.ds Sp "tr ~
+.tr ~
+.as Sp ~
+.em Cr \" check for non-closed constructs at end of input
+.\"
+.de At \" parameterpassing macro
+.\" .At $1...
+.if \\n(.$>=1 .as $0 " \\$1
+.if \\n(.$>=2 .as $0 " \\$2
+.if \\n(.$>=3 .as $0 " \\$3
+.if \\n(.$>=4 .as $0 " \\$4
+.if \\n(.$>=5 .as $0 " \\$5
+.if \\n(.$>=6 .as $0 " \\$6
+.if \\n(.$>=7 .as $0 " \\$7
+.if \\n(.$>=8 .as $0 " \\$8
+.if \\n(.$>=9 .as $0 " \\$9
+..
+.\"
+.\" CATCH MACROES FOR SECTIONS file tmac.q1
+.\"
+.de RP
+.ds $0 RP
+.rn RP ]R
+.so LIBDIR/tmac/tmac.q1
+..
+.de SN
+.ds $0 SN
+.rn SN ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5"
+.so LIBDIR/tmac/tmac.q1
+..
+.de SM
+.ds $0 SM
+.rn SM ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4"
+.so LIBDIR/tmac/tmac.q1
+..
+.de S1
+.ds $0 S1
+.rn S1 ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q1
+..
+.de S2
+.ds $0 S2
+.rn S2 ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q1
+..
+.de S3
+.ds $0 S3
+.rn S3 ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q1
+..
+.de S4
+.ds $0 S4
+.rn S4 ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q1
+..
+.de AP
+.ds $0 AP
+.rn AP ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q1
+..
+.\" CATCH MACROES FOR POINTS file tmac.q2
+.\"
+.de PM
+.ds $0 PM
+.rn PM ]R
+.At "\\$1"
+.so LIBDIR/tmac/tmac.q2
+..
+.de PS
+.ds $0 PS
+.rn PS ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4"
+.so LIBDIR/tmac/tmac.q2
+..
+.nr PS 0
+.\" CATCH MACROES FOR DISPLAYS file tmac.q3
+.\"
+.de DB
+.ds $0 DB
+.rn DB ]R
+.At "\\$1"
+.so LIBDIR/tmac/tmac.q3
+..
+.de DS
+.ds $0 DS
+.rn DS ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8"
+.so LIBDIR/tmac/tmac.q3
+..
+.nr DS 0
+.\" CATCH MACROES FOR FOOTNOTES file tmac.q4
+.\"
+.de FN
+.ds $0 FN
+.rn FN ]R
+.At "\\$1" "\\$2"
+.so LIBDIR/tmac/tmac.q4
+..
+.de FS
+.ds $0 FS
+.rn FS ]R
+.At "\\$1" "\\$2" "\\$3"
+.so LIBDIR/tmac/tmac.q4
+..
+.nr FS 0
+.nr Fl 0
+.\" CATCH MACRO FOR EQUATIONS file tmac.q5
+.\"
+.de EQ
+.ds $0 EQ
+.rn EQ ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4"
+.so LIBDIR/tmac/tmac.q5
+..
+.\" CATCH MACROES FOR TABLES file tmac.q6
+.\"
+.de TS
+.ds $0 TS
+.rn TS ]R
+.At "\\$1" "\\$2"
+.so LIBDIR/tmac/tmac.q6
+..
+.\"nr TS 0
+.\" CATCH MACROES FOR BIBLIGRAPHIC REFERENCES file tmac.q7
+.\"
+.de RS
+.ds $0 RS
+.rn RS ]R
+.At "\\$1" "\\$2" "\\$3"
+.so LIBDIR/tmac/tmac.q7
+..
+.de RF
+.ds $0 RF
+.rn RF ]R
+.At "\\$1"
+.so LIBDIR/tmac/tmac.q7
+..
+.nr RS 0
+.\" CATCH MACROES FOR INDEX REFERENCES file tmac.q8
+.\"
+.de IX
+.ds $0 IX
+.rn IX ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q8
+..
+.de IW
+.ds $0 IW
+.rn IW ]R
+.At "\\$1" "\\$2" "\\$3"
+.so LIBDIR/tmac/tmac.q8
+..
+.de IR
+.ds $0 IR
+.rn IR ]R
+.At "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
+.so LIBDIR/tmac/tmac.q8
+..
+.\" CATCH MACROES FOR INDEX REFERENCES file tmac.q9
+.\"
+.de ]-
+.ds $0 ]-
+.rn ]- ]R
+.so LIBDIR/tmac/tmac.q9
+..
+.de ]<
+.ds $0 ]<
+.rn ]< ]R
+.so LIBDIR/tmac/tmac.q9
+..
+.de [
+.tm Error, page \\n%: did you forget refer?
+.rm [
+..