ceriel před 37 roky
rodič
revize
0d68b63e5b
11 změnil soubory, kde provedl 4359 přidání a 0 odebrání
  1. 2284 0
      mkun/pubmac
  2. 934 0
      mkun/tmac.kun
  3. 260 0
      mkun/tmac.q1
  4. 117 0
      mkun/tmac.q2
  5. 150 0
      mkun/tmac.q3
  6. 123 0
      mkun/tmac.q4
  7. 123 0
      mkun/tmac.q5
  8. 65 0
      mkun/tmac.q6
  9. 70 0
      mkun/tmac.q7
  10. 48 0
      mkun/tmac.q8
  11. 185 0
      mkun/tmac.q9

+ 2284 - 0
mkun/pubmac

@@ -0,0 +1,2284 @@
+." $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
+\&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.
+.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
+\&centered
+\&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

+ 934 - 0
mkun/tmac.kun

@@ -0,0 +1,934 @@
+.\" $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 
+.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 [
+..

+ 260 - 0
mkun/tmac.q1

@@ -0,0 +1,260 @@
+.\"	MACROES FOR SECTIONS (file tmac.q1)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de RP			\" SET TO REPORT MODE
+.\"	.RP
+.			\" The initial mode is manual ( \n(RP=1 ).
+.nr RP 0
+.nr M1 1
+.nr M2 1
+.nr M3 1
+.nr M4 1
+.nr M5 1
+.nr TP 0
+.if \\n(nl<0 .Pn
+.rm RP
+..
+.de SN			\" SET SECTION NUMBERS
+.\"	.SN [ $1 [ $2 [ $3 [ $4 [$5] ] ] ] ]
+.			\" $1 = first section number level 1
+.			\" $2 = first section number level 2
+.			\" $3 = first section number level 3
+.			\" $4 = first section number level 4
+.			\" $4 = first appendix number
+.nr S1 0
+.if \\n(.$>0 .nr S1 \\$1
+.nr S2 0
+.if \\n(.$>1 .nr S2 \\$2
+.nr S3 0
+.if \\n(.$>2 .nr S3 \\$3
+.nr S4 0
+.if \\n(.$>3 .nr S4 \\$4
+.nr S5 0
+.if \\n(.$>4 .nr S5 \\$5
+.if \\n(.$>0 .nr S\\n(.$ -1
+..
+.de SM			\" SET MODE FOR SECTION TITLES
+.\"	.SM [ Sn [ $2 ... ] ]
+.			\" Sn = section level S1 S2 S3 S4 AP
+.			\" $2 ... = Capital, Bold, Underlined.
+.			\" $2 = absent resets, C, B and U are accumulative
+.nr SM 0
+.if \&\\$1\&S1\& .nr SM 1
+.if \&\\$1\&S2\& .nr SM 2
+.if \&\\$1\&S3\& .nr SM 3
+.if \&\\$1\&S4\& .nr SM 4
+.if \&\\$1\&AP\& .nr SM 5
+.if \\n(SM=0 \{\
+.Er W ".SM: unknown section level \\$1
+.nr SM 4 \}
+.nr M\\n(SM 0
+.if \\n(.$>1 .So \\$2
+.if \\n(.$>2 .So \\$3
+.if \\n(.$>3 .So \\$4
+.if \\n(.$>4 .So \\$5
+.rr SM
+..
+.de S1			\" START SECTION AT LEVEL 1
+.\"	.S1 [ $1 ... ]
+.			\" $1 ... = heading of section
+.			\" Report mode headings need 9 lines on the page.
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.if \&\\*(St\&\& .ds St Chapter
+.Ss 1 1
+.Se 1 2 4
+.Ca 0
+.ie \\n(RP=0 .Sh 1 1
+.el .Sc 1 2
+..
+.de S2			\" START SECTION AT LEVEL 2
+.\"	.S2 [ $1 ... ]
+.			\" $1 ... = heading of section
+.			\" Needs 7 lines on the page
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.Ss 2 1
+.Se 0 1 3
+.if !\&\\*(St\&\& .Ca 2
+.Si 2 0
+..
+.de S3			\" START SECTION AT LEVEL 3
+.\"	.S3 [ $1 ... ]
+.			\" $1 ... = heading of section
+.			\" Needs 6 lines on the page
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.Ss 3 1
+.Se 0 0 3
+.if !\&\\*(St\&\& .Ca 4
+.Si 3 0
+..
+.de S4			\" START SECTION AT LEVEL 4
+.\"	.S4 [ $1 ... ]
+.			\" $1 ... = heading of section
+.			\" needs 6 lines on the page
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.Ss 4 1
+.Se 0 0 3
+.if !\&\\*(St\&\& .Ca 6
+.Si 4 0
+..
+.de AP			\" START APPENDIX
+.\"	.AP [ $1 ... ]
+.			\" $1 ... = heading of appendix
+.			\" Report mode appendices are level 1 sections
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.if \&\\*(St\&\& .ds St Appendix
+.Ss 5 A
+.Se 2 2 4
+.Ca 0
+.ie \\n(RP=0 .Sh 1 1
+.el .Sc 5 2
+..
+.de CT			\" OUTPUT TABLE OF CONTENTS
+.\"	.CT
+.ti \\n(.iu
+.Cc
+.rm Cc
+..
+.de So			\" decode section mode options
+.\"	.So $1
+.			\" $1 = Capital, Bold, Underlined, larger Size
+.if \&\\$1\&S\& .nr M\\n(SM +8
+.if \&\\$1\&C\& .nr M\\n(SM +4
+.if \&\\$1\&B\& .nr M\\n(SM +2
+.if \&\\$1\&U\& .nr M\\n(SM +1
+..
+.de Ss			\" compose section number
+.			\" $1 = section level
+.			\" $2 = format for heading
+.ie \\$1=5 .nr Ss 0
+.el .nr Ss \\$1
+.if \\n(Ss=0 .nr S5 +1
+.ie \\n(Ss=1 .nr S1 +1
+.el .if \\n(Ss<1 .nr S1 \\n(S5
+.ie \\n(Ss=2 .nr S2 +1
+.el .if \\n(Ss<2 .nr S2 0
+.ie \\n(Ss=3 .nr S3 +1
+.el .if \\n(Ss<3 .nr S3 0
+.ie \\n(Ss=4 .nr S4 +1
+.el .if \\n(Ss<4 .nr S4 0
+.if \\n(Ss=0 .nr Ss 1
+.af S\\n(Ss \\$2
+.ie \&\\*(St\&\& .ds Sn "\\n(S\\n(Ss.
+.el \{\
+.ds Sn "\\n(S1.
+.if \\n(Ss>1 .as Sn "\\n(S2
+.if \\n(Ss>2 .as Sn ".\\n(S3
+.if \\n(Ss>3 .as Sn ".\\n(S4\}
+.rr Ss
+..
+.de Se			\" end previous section
+.			\" $1 = next section: 0 - Sub, 1 - Main, 2 - Appendix
+.			\" $2 = extra vertical spacing ending previous section
+.			\" $3 = extra need next section
+.if \\$1=1 .if \\n(S5>0 \
+.	Er F ".S1: sections cannot follow an appendix
+.ch Id
+.Cr
+.if \\n(TP>0 .rs
+.ie (\\n(RP=1)&(\\$1>0)&(\\n(nl>=0) .bp
+.el \{\
+.if \\n(NS>0 .sp \\$2v
+.if \\n(NS=0 .sp \\$2v+\\n(VSu
+.ne \\$3v+\\n(NDv \}
+.if \\$1=1 .if \\n(RP>0 .nr FN 1
+.in 0
+.ti \\n(.iu
+.ll \\n(LLu
+.rs
+..
+.de Ca			\" append to table of contents
+.			\" $1 = initial indent of line
+.da Cc
+.if \\$1=0 \!.sp \\\\n(VSu
+.if \\$1=0 \!.ne 2u*\\\\n(NDv
+\!.ti \\\n(.iu
+\!\l\&\\$1n\ \&\\*(Sn\ \\*(St\ \l\&|\\\\n(.lu-\w\&\ \\n%\&u.\&\ \\n%
+\!.br
+.da
+..
+.de Sm			\" apply section title modes
+.			\" $1 = level of section: 1 2 3 4 5 (=AP)
+.nr Sm \\n(M\\$1
+.if \\n(Sm>=8 \{\
+.if !\&\\*(St\&\& .ds St \s+2\\*(St\s0
+.ds Sn \s+2\\*(Sn\s0
+.nr Sm -8 \}
+.if \\n(Sm>=4 \{\
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+.nr Sm -4 \}
+.if \\n(Sm>=2 \{\
+.if !\&\\*(St\&\& .ds St \f3\\*(St\fP
+.ds Sn \f3\\*(Sn\fP
+.nr Sm -2 \}
+.if \\n(Sm=1 \{\
+.if !\&\\*(St\&\& .ds St \f2\\*(St\fP
+.ds Sn \f2\\*(Sn\fP \}
+.rr Sm
+..
+.de Si			\" sub-section heading
+.			\" $1 = level of section
+.			\" $2 = extra vertical spacing succeding heading
+.ie !\&\\*(St\&\& .Sh \\$1 \\$2
+.el \{\
+.Sm \\$1
+.ne 3v
+\&\\*(Sn\ \ \c
+.nr Id \w\&\\*(Sn\ \ \&
+.wh \\n(nlu+1v Id
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+.rm Sn \}
+..
+.de Sh			\" left adjusted section heading
+.			\" $1 = level of section
+.			\" $2 = extra vertical spacing succeeding heading
+.Sm \\$1
+\\*(Sn\ \ \\*(St
+.if \\n(NS>0 .if \\$2>0 .sp \\$2v
+.if \\n(NS=0 .if (\\$2v+\\n(VS)>0 .sp \\$2v+\\n(VSu
+.nr NS 0
+.ti \\n(INu
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+.rm Sn
+.rm St
+..
+.de Id			\" trap macro for indented section headings
+\\*(Ncti \\n(.iu+\\n(Idu \" This calls ti
+.if \&\\n(.z\&\& .ch Id
+..
+.de Sc			\" centered section heading
+.			\" $1 = level of section
+.			\" $2 = extra vertical spacing succeeding heading
+.if \\$1=1 \{.af S1 I
+.ds Sn "\\n(S1\ 
+.af S1 1
+.if \\n(S1=0 .ds Sn "\}
+.Sm \\$1
+\h#\\n(.lu-\\n(.iu-\w\&\\*(St\&u/2u-\w\&\\*(Sn\ \&u#\\*(Sn\ \\*(St
+.if \\n(NS>0 .if \\$2>0 .sp \\$2v
+.if \\n(NS=0 .if (\\$2v+\\n(VS)>0 .sp \\$2v+\\n(VSu
+.nr NS 0
+.ti \\n(INu
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+.rm Sn
+.rm St
+..
+.			\" INITIALISATION
+.nr S1 0
+.nr S2 0
+.nr S3 0
+.nr S4 0
+.nr S5 0
+.nr M1 4
+.nr M2 1
+.nr M3 1
+.nr M4 1
+.nr M5 4
+.nr TP 1
+.nr RP 1
+.\*($0
+.rm $0

+ 117 - 0
mkun/tmac.q2

@@ -0,0 +1,117 @@
+.\"	MACROES FOR POINTS (file tmac.q2)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de PM			\" DEFINE POINT MARKER
+.\"	.PM [$1]
+.			\" $1 = default marker for .PS { - }
+.ie \\n(.$>0 .ds Pm \\$1
+.el .ds Pm -
+..
+.de PS			\" LISTS OF POINTS
+.\"	.PS [ $1 [ $2 [ [$3] $4 ] ] ]
+.			\" $1 = marker or conversion with .af { \*(Pm }
+.			\" conversions: 1 i I a A (- denotes marker from .PM)
+.			\" $2 = indentation {\n(IN }
+.			\" $3 = point prefix { }
+.			\" $4 = point suffix { }
+.ie \\n(PS=9 .Er W ".PS: maximum nesting is 9
+.el \{\
+.nr PS +1
+.ie \\n(.$>0 .ds P\\n(PS \\$1
+.el .ds P\\n(PS -
+.nr P\\n(PS 0
+.if \&\\*(P\\n(PS\&1\& .nr P\\n(PS 1
+.if \&\\*(P\\n(PS\&i\& .nr P\\n(PS 1
+.if \&\\*(P\\n(PS\&I\& .nr P\\n(PS 1
+.if \&\\*(P\\n(PS\&a\& .nr P\\n(PS 1
+.if \&\\*(P\\n(PS\&A\& .nr P\\n(PS 1
+.if \&\\*(P\\n(PS\&-\& .ds P\\n(PS \\*(Pm
+.nr P\\n(PS -1
+.if \\n(P\\n(PS=0 .nr P\\n(PS 0 1
+.af P\\n(PS \\*(P\\n(PS
+.nr I\\n(PS \\n(IN
+.if \\n(.$>1 .if !\&\\$2\&-\& .nr I\\n(PS \\$2n
+.ds I\\n(PS "
+.ds M\\n(PS "
+.if \\n(.$=3 .ds M\\n(PS \\$3
+.if \\n(.$=4 .ds I\\n(PS \\$3
+.if \\n(.$=4 .ds M\\n(PS \\$4
+.ch Id
+.in +\\n(I\\n(PSu \}
+..
+.de PT			\" A HANGING POINT
+.\"	.PT [ $1 ... ]
+.			\" $1 = substitute for specification with .PS and .PM
+.ie \\n(PS=0 .Er W ".PT: no matching .PS
+.el \{\
+.ie \\n(.$>0 .Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.el .ie \\n(P\\n(PS<0 .ds St \\*(I\\n(PS\\*(P\\n(PS\\*(M\\n(PS
+.el \{\
+.af P\\n(PS \\*(P\\n(PS
+.ds St \\*(I\\n(PS\\n+(P\\n(PS\\*(M\\n(PS
+.af P\\n(PS 1\}
+.ch Id
+.if \\n(NS=0 .sp \\n(VPu
+.nr NS 0
+.ne \\n(NDv+1v
+.ti -\\n(I\\n(PSu
+.ie (\\w\&\\*(St\&)>(\\n(I\\n(PS) \{\
+\&\\*(St
+.br \}
+.el \&\\*(St\h#\\n(I\\n(PSu-\w\&\\*(St\&u#\c
+.rs
+.rm St \}
+..
+.de PI			\" AN INDENTED POINT
+.\"	.PI [ $1 ... ]
+.			\" $1 = substitute for specification with .PS and .PM
+.ie \\n(PS=0 .Er W ".PI: no matching .PS
+.el \{\
+.ie \\n(.$>0 .Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.el .ie \\n(P\\n(PS<0 .ds St \\*(I\\n(PS\\*(P\\n(PS\\*(M\\n(PS
+.el \{\
+.af P\\n(PS \\*(P\\n(PS
+.ds St \\*(I\\n(PS\\n+(P\\n(PS\\*(M\\n(PS
+.af P\\n(PS 1\}
+.ch Id
+.if \\n(NS=0 .sp \\n(VPu
+.nr NS 0
+.ne \\NDv
+\&\\*(St\ \ \c
+.nr Id \w\&\\*(St\ \ \&
+.ie !\&\\n(.z\&\& .dt \\n(.du+1v Id
+.el .wh \\n(nlu+1v Id
+.rs
+.rm St \}
+..
+.de PE			\" END LIST OF POINTS
+.\"	.PE [$1]
+.			\" $1 = ending vertical spacings { n\(Ps }
+.ie \\n(PS=0 .Er W ".PE: no matching .PS
+.el \{\
+.in -\\n(I\\n(PSu
+.rr P\\n(PS
+.rr I\\n(PS
+.rm P\\n(PS
+.rm M\\n(PS
+.rm I\\n(PS
+.nr PS -1
+.ie \\n(.$>0 .sp \\$1v
+.el .sp \\n(VPu \}
+.ch Id
+..
+.de Pe			\" end all point levels
+.if \\n(PS>0 \{\
+.PE 0
+.Pe \}
+..
+.de Id			\" trap macro for indented points
+\\*(Ncti \\n(.iu+\\n(Idu \" This calls ti
+.ie !\&\\n(.z\&\& .dt
+.el .ch Id
+..
+.			\" INITIALIZATION
+.ds Pm -
+.\*($0
+.rm $0

+ 150 - 0
mkun/tmac.q3

@@ -0,0 +1,150 @@
+.\"	MACROES FOR DISPLAYS (file tmac.q3)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de DB			\" SET DISPLAY [NO-]BREAK DEFAULT
+.\"	.DB [$1]
+.			\" $1 = display mode Break, No break. { B }
+.			\" initially display mode is N
+.ie \&\\$1\&N\& .nr DB 0
+.el .nr DB 1
+..
+.de DS			\" START DISPLAY
+.\"	.DS [ [$1] $2 [ $3 [$4] ] ] [ $5 [ $6 [$7] ] [$8]
+.			\" $1 = mark for Marked and boXed display { | }
+.			\" $2 = Marked or boXed display { - }
+.			\" $3 = Left indent (L1) Marked and boXed display { 0 }
+.			\" $4 = Right indent (R1) boXed display { L1 }
+.			\" $5 = Indented or Quoted display { - }
+.			\"	{ M implies I, X implies Q }
+.			\" $6 = Left indent (L2) for I and Q { -:0, IQ:\n(IN }
+.			\" $7 = Right indent (R2) for Q { L2 }
+.			\" $8 = [No-] break { \n(DB }
+.ie \\n(DS=1 .Er W ".DS: nested displays are not allowed
+.el \{\
+.nr DS 1
+.ds D1 \\$1
+.ds D2 \\$1
+.ds D3 \\$1
+.ds D4 \\$1
+.nr DE 0
+.if \&\\$2\&M\& .nr DE 1
+.if \&\\$2\&X\& .nr DE 1
+.if \\n(DE=0 \{\
+.ds D1 \&
+.ds D2 \(ul
+.ds D3 \(br
+.ds D4 \z\(br\}
+.Dt 0 0 0 0 0 0
+.ie \&\\$\\n(DE\&M\& .Dt 1 1 0 \\n(IN 0 0
+.el .if \&\\$\\n(DE\&X\& .Dt 2 2 0 \\n(IN \\n(IN 0
+.if \\n(Dt>0 .if \\n(DE<=\\n(.$ .if (\\$\\n(DE)=(\\$\\n(DE) \{\
+.nr D1 \\$\\n(DEn
+.nr DE +1 \}
+.if \\n(Dt=2 .nr D4 \\n(D1
+.if \\n(Dt=2 .if \\n(DE<=\\n(.$ .if (\\$\\n(DE)=(\\$\\n(DE) \{\
+.nr D4 \\$\\n(DEn
+.nr DE +1 \}
+.ie \&\\$\\n(DE\&I\& .Dt \\n(Dt 1 \\n(D1 \\n(IN 0 \\n(D4
+.el .if \&\\$\\n(DE\&Q\& .Dt \\n(Dt 2 \\n(D1 \\n(IN \\n(IN \\n(D4
+.if \\n(Da>0 .if \\n(DE<=\\n(.$ .if (\\$\\n(DE)=(\\$\\n(DE) \{\
+.nr D2 \\$\\n(DEn
+.nr DE +1 \}
+.if \\n(Da=2 .nr D3 \\n(D2
+.if \\n(Da=2 .if \\n(DE<=\\n(.$ .if (\\$\\n(DE)=(\\$\\n(DE) \{\
+.nr D3 \\$\\n(DEn
+.nr DE +1 \}
+.nr DE \\n(.u
+.ie \\n(Da<2 .nf
+.el .fi
+.if \&\\$\\n(.$\&B\& .nr Da 1
+.if \&\\$\\n(.$\&N\& .nr Da 0
+.if \&\\$\\n(.$\&\& .nr Da \\n(DB
+.if \\n(Dt=0 .Dt 0 \\n(Da \\n(D2 0 0 \\n(D3
+.if \\n(NS=0 .sp \\n(VSu
+.nr NS 0
+.ch Id
+.ne \\n(NDv
+.nr Dx \\n(.i
+.nr Dy \\n(.l
+.in 0
+.ti \\n(.iu
+.ll \\n(Dyu-\\n(D1u-\\n(D2u-\\n(D3u-\\n(D4u-\\n(Dtn
+.di Dx \}
+..
+.de DE			\" DISPLAY END
+.\"	.DE [$1]
+.			\" $1 = succeeding vertical spacing { \n(VS }
+.ie \\n(DS=0 .Er W ".DE: no matching .DS
+.el \{\
+.br
+.di
+.nf
+.ll +\\n(D2u
+.ie \\n(Dt>0 .ds Da \&\\*(D3\h#\\n(D2u#
+.el .ds Da \&
+.nr Dm \\n(dn 1v
+.nr D2 0 1v
+.ev 0
+.di Dy
+.if \\n(Dt=2 \&\\*(D1\l#\\n(Dyu-\\n(Dxu-\\n(D1u-\\n(D4u-2u*\w'\\*(D1'u\&\\*(D2#\\*(D1
+.if \\n(Dt=2 .mc \\*(D3 \\n(D3u+1n
+.cc 
+Dm
+Dx
+cc
+.rm Dx
+.mc
+.if \\n(Dt=2 \&\\*(D4\l#\\n(Dyu-\\n(Dxu-\\n(D1u-\\n(D4u-2u*\w'\\*(D4'u\&\\*(D2#\\*(D4
+.di
+.ev
+.in \\n(Dxu+\\n(D1u
+.ll \\n(Dyu-\\n(D4u
+.if \\n(Da=0 .if \\n(dn>\\n(.t .bp
+.Dy
+.ie \\n(.$>0 .sp \\$1v
+.el .sp \\n(VSu
+.rs
+.in \\n(Dxu
+.ll \\n(Dyu
+.nr DS 0
+.if \\n(DE>0 .fi
+.ch Id
+.rr DE
+.rr D1
+.rr D2
+.rr D3
+.rr D4
+.rr Da
+.rr Dm
+.rr Dt
+.rr Dx
+.rr Dy
+.rm D1
+.rm D2
+.rm D3
+.rm D4
+.rm Da
+.rm Dy \}
+..
+.de Dt			\" set display parameters
+.			\" $1 = type
+.			\" $2 = mode
+.			\" $3 $4 $5 $6 = D1 D2 D3 D4
+.nr Dt \\$1
+.nr Da \\$2
+.nr D1 \\$3
+.nr D2 \\$4
+.nr D3 \\$5
+.nr D4 \\$6
+.nr DE +1
+..
+.de Dm			\" marking or protecting lines in second diversion
+\\*(Da\c
+ie \\n-(Dm>0 dt \\n+(D2u Dm
+el dt
+..
+.			\" INITIALIZATION
+.nr DB 0
+.\*($0
+.rm $0

+ 123 - 0
mkun/tmac.q4

@@ -0,0 +1,123 @@
+.\"	MACROES FOR FOOTNOTES (file tmac.q4)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de FN			\" NUMBERED FOOTNOTE START
+.\"	.FN [ [$1] $2 ]
+.			\" $1 = prefix
+.			\" $2 = suffix
+.ie \\n(FS=0 \{\
+.ie n \{\
+.if \\n(.$=0 .FS (\\n(FN)
+.if \\n(.$=1 .FS (\\n(FN) \\$1
+.if \\n(.$=2 .FS \\$1 (\\n(FN) \\$2\}
+.el \{\
+.if \\n(.$=0 .FS \\n(FN
+.if \\n(.$=1 .FS \\n(FN \\$1
+.if \\n(.$=2 .FS \\$1 \\n(FN \\$2\}\}
+.el \{\
+.	Er W ".FN: nested footnotes are not allowed
+\&\\$1\\n(FN\\$2\}
+.nr FN +1
+..
+.de FS			\" FOOTNOTE START
+.\"	.FS [ [$1] ) $2 ( $3 ]
+.			\" $1 = prefix
+.			\" $2 = indicator
+.			\" $3 = suffix
+.if \\n(.$>0 \{.ie n \&\\$1\\$2\\$3
+.el \v'-0.4m'\s-2\\$1\\$2\\$3\s+2\v'0.4m'\}
+.ie \\n(FS=1 .Er W ".FS: nested footnotes are not allowed
+.el \{\
+.nr FS 1
+.ev 1
+.nr Fp \\n(.s
+.ps \\n(Sf
+.ll \\n(Lfu
+.nr FE \\n(.i
+.in 1
+.da Fx
+.if \\n(.$>2 \&\\$2
+.if \\n(.$=1:(\\n(.$=2) \&\\$1\}
+..
+.de FE			\" FOOTNOTE END
+.\"	.FE $1
+.			\" $1 = succeeding vertical spacing { 0 }
+.ie \\n(FS=0 .Er W ".FE: no matching .FS or .FN
+.el \{\
+.br
+.if !\&\\$1\&\& .sp \\$1v
+.di
+.ll \\n(LLu
+.in \\n(FEu
+.ps \\n(Fp
+.rr FE
+.rr Fp
+.nr Fx +\\n(dn
+.ev
+.Fp
+.nr FS 0\}
+..
+.de Fo			\" catch footnote overflow trap macro
+.if \\n(Fl=2 .di Fl
+..
+.de Fp			\" place footnote trap macro
+.nr Fl 0
+.if \\n(Fx>0 \{\
+.nr Fl 1
+.nr Fo \\n(nl+1v
+.if \\n(Fo<(\\n(Tmu+\\n(NDv+1v) .nr Fo \\n(Tmu+\\n(NDv+1v
+.if \\n(Fo>(\\n(.pu-\\n(Bmu-\\n(Fxu-\\n(Fmu) .nr Fl 2
+.if \\n(Fo>=(\\n(.pu-\\n(Bmu-\\n(Fmu) .nr Fl 3 \}
+.if \\n(Fl=0 .ch Bm \\n(.pu-\\n(Bmu
+.if \\n(Fl=1 .ch Bm \\n(.pu-\\n(Bmu-\\n(Fxu-\\n(Fmu
+.if \\n(Fl=2 .ch Bm \\n(Fou
+.if \\n(Fl=3 .ch Bm \\n(.pu-\\n(Bmu
+.rr Fo
+..
+.de Ft			\" footnote processing at top of page
+.ev 1
+.if \\n(Fl=2 \{\
+.nr dn 0
+.nf
+.di Fx
+.Fl
+.br
+.di
+.fi
+.rm Fl
+.nr Fx \\n(dn \}
+.ev
+.Fp
+..
+.de Fb			\" footnote processing at bottom of page
+.if (\\n(Fl=1):(\\n(Fl=2) \{\
+.ev 1
+.nr Fx 0
+.nr Fb \\n(.i
+.in 0
+\\*(Ncnf		\" Nc is no-break control character
+.Fm
+.Fx
+\\*(Ncfi		\" Nc is no-break control character
+.in \\n(Fbu
+.ev
+.rm Fx \}
+.if \\n(Fl=2 .if "\\n(.z"Fl" .di
+..
+.de Fm 			\" footnote marker
+\l#150p\(ul#
+\\*(Ncsp		\" Nc is no-break control character
+..
+.			\" FOOTNOTE INITIALIZATION
+.nr FN 1
+.nr Fx 0
+.nr Fl 0
+.ev 1
+.nr Fm 2v
+.ev
+.ch Bm \n(.pu+1v
+.wh \n(.pu-\n(Bmu Fo
+.ch Bm \n(.pu-\n(Bmu
+.\*($0
+.rm $0 ]R

+ 123 - 0
mkun/tmac.q5

@@ -0,0 +1,123 @@
+.\"	MACROES FOR EQUATIONS (file tmac.q5)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de EQ			\" START EQUATION
+.\"	.EQ [$1] [$2] [ $3 $4 ] [ $5 $6 ] [$7]
+.			\" $1 = Indented, Centered { C }
+.			\" $2 = indent from Left margin (I) { 0 }
+.			\" $3 = Left numbered, Right numbered {  }
+.			\" $4 = equation number { }
+.			\" $5 = Right numbered, Left numbered {  }
+.			\" $6 = equation number { }
+.			\" $7 = preceding vertical spacing { \n(VS }
+.			\" eqn checks against nested equations.
+.\"	WARNING: For "inline" equations the (almost) only reasonable
+.\"		 delimeter character is "$". All other seemingly useful
+.\"		 characters could be generated by t(a)b(e)l.
+.ch Id
+.nr EQ 0
+.nr EN 1
+.ie \&\\$1\&I\& .nr EQ 1
+.el .if !\&\\$1\&C\& .nr EN 0
+.nr EN +1
+.nr Ex 0
+.ie (\\$\\n(EN)=(\\$\\n(EN) .nr Ex \\$\\n(ENm
+.el .nr EN -1
+.if \\n(EN=1 .if \\n(Ex>0  .nr EQ 1
+.nr EN +1
+.ds E1 "
+.nr Et 0
+.if \&\\$\\n(EN\&L\& .nr Et 1
+.if \\n(Et=1 .nr EN +1
+.if \\n(Et=1 .ds E1 \\$\\n(EN
+.if \\n(Et=1 .nr EN +1
+.ds E2 "
+.nr Et 0
+.if \&\\$\\n(EN\&R\& .nr Et 1
+.if \\n(Et=1 .nr EN +1
+.if \\n(Et=1 .ds E2 \\$\\n(EN
+.if \\n(Et=1 .nr EN +1
+.nr Et 0
+.if \&\\$\\n(EN\&L\& .nr Et 1
+.if \\n(Et=1 .nr EN +1
+.if \\n(Et=1 .ds E1 \\$\\n(EN
+.if \\n(Et=1 .nr EN +1
+.ie \\n(EN=\\n(.$ .nr EN \\$\\n(.$
+.el .nr EN 0-1
+.ev 1
+.if !\&\\n(.z\&\& .br
+.di Ex
+..
+.de EN			\" END EQUATION
+.\"	.EN [$1]
+.			\" $1 = succeeding vertical spacing { \n(VS }
+.ie !\&\\n(.z\&Ex\& .Er W ".EN: no matching .EQ
+.el \{\
+.br
+.di
+.ev
+.rm Ex
+.ie \\n(dn=0 .if !\&\\*(E1\\*(E2\&\& .Et \\$1
+.el .Et \\$1
+.rm E1
+.rm E2
+.rm 10
+.rm 11
+.rm 12
+.rm 13
+.rm 14
+.rm 15
+.rm 16
+.rm 17
+.rm 18
+.rm 19
+.rm 20
+.rm 21
+.rm 22
+.rm 23
+.rr EN
+.rr E1
+.rr E2
+.rr Et
+.rr Ex
+.rr EQ
+.rr 10
+.rr 11
+.rr 12
+.rr 13
+.rr 14
+.rr 15
+.rr 16
+.rr 17
+.rr 18
+.rr 19
+.rr 20
+.rr 21
+.rr 22
+.rr 23 \}
+..
+.de Et			\" final rediversion of equation
+.			\" $1 = succeeding vertical spacing { \n(VS }
+.ie \\n(EN>=0 .sp \\n(ENv
+.el .sp \\n(VSu
+.ti \\n(.iu
+.ne \\n(NDv
+.rs
+.nr EN \\n(.u
+.if \\n(EN>0 .nf
+.nr Et \\n(.lu-\\n(.iu
+.if \\n(EQ=0 .nr E1 \\n(Etu-\\w\&\\*(E1\&u-\\w\&\\*(10\&u-\\w\&\\*(E2\&u/2u
+.if \\n(EQ=1 .nr E1 \\n(Exu-\\w\&\\*(E1\&u
+.if \\n(E1<1m .nr E1 1m
+.nr E1 1m/2u+\\w\&\\*(E1\&u+\\n(E1u/1m*1m-\\w\&\\*(E1\&u
+.nr E2 \\n(Etu-\\w\&\\*(E2\&u
+.pc
+\&\\*(E1\h#\\n(E1u#\\*(10\h#|\\n(E2u#\\*(E2
+.pc %
+.if \\n(EN>0 .fi
+.ie \\n(.$>0 .sp \\$1v
+.el .sp \\n(VSu
+..
+.\*($0
+.rm $0

+ 65 - 0
mkun/tmac.q6

@@ -0,0 +1,65 @@
+.\"	MACROES FOR TABLES (file tmac.q6)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de TS			\" TABLE START
+.\"	.TS [$1] [H]
+.			\" $1 = preceeding vertical spacing
+.			\" tbl checks against nested tables
+.nr TS 1
+.if \\n(.$>0 .if '\\$\\n(.$'H' .TQ
+.if \\n(.$>0 .ie !'\\$1'H' .sp \\$1v
+.el .sp \\n(VSu
+.rs
+.nr TE \\n(.i
+.ll -\\n(TEu
+.ti \\n(.iu
+..
+.de TE			\" TABLE END
+.\"	.TE [$1]
+.			\" $1 = succeeding vertical spacing { \n(VS }
+.ie \\n(TS=0 .Er W ".TE: no matching .TS
+.el \{\
+.if \\n(TH=1 \{\
+.di			\" End defining header
+.nr TH 0		\" No header present during TT evaluation
+.nr EF \\n(.u
+.nf
+.TT
+.if \\n(EF>0 .fi \}
+.ll +\\n(TEu
+.rr TE
+.nr TH 0
+.nr TS 0
+.ie \\n(.$>0 .sp \\$1v
+.el .sp \\n(VSu
+.rm a+ b+ c+ d+ e+ f+ g+ h+ i+ j+ k+ l+ n+ m+
+.rr 32 33 34 35 36 37 38 40 79 80 81 82
+.rr a| b| c| d| e| f| g| h| i| j| k| l| m|
+.rr a- b- c- d- e- f- g- h- i- j- k- l- m-
+.rm TT\}
+..
+.de TQ
+.di TT
+.nr TH 1
+..
+.de TH
+.if \\n(.d>0.5v .nr T. 0
+.if \\n(.d>0.5v .T# 0
+.di
+.nr TQ \\n(.i
+.nr TH 0	\" No header present during TT evaluation
+.in 0
+.mk #a
+.mk #b
+.mk #c
+.mk #d
+.mk #e
+.mk #f
+.TT
+.in \\n(TQu
+.nr TH 2
+.mk #T
+..
+.\*($0
+.rm $0

+ 70 - 0
mkun/tmac.q7

@@ -0,0 +1,70 @@
+.\"	MACROES FOR BIBLIOGRAPHIC REFERENCES (file tmac.q7)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de RS			\" REFERENCE START
+.\"	.RS [ [$1] ) $2 ( $3 ]
+.			\" $1 = prefix
+.			\" $2 = refering text
+.			\" $3 = suffix
+.ie \\n(RS>0 .Er W ".RS: nesting not allowed
+.el \{\
+.if \\n(.$>2 \&\\$1[\\$2]\\$3
+.if \\n(.$>2 .RF \\$2
+.if \\n(.$<=2 \&[\\$1]\\$2
+.if \\n(.$<=2 .RF \\$1\}
+..
+.de RF			\" REFERENCE
+.\"	.RF $1 ...
+.			\" $1 ... = refering text
+.ie \\n(RS>0 .Er W ".RF: nesting not allowed
+.el \{\
+.nr RS 1
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.ev 1
+.nr RF \\n(.l
+.ll \\n(LLu-\\n(INu
+.nr RE \\n(.i
+.in 0
+.nf
+.da Rt
+\!.ne \\n(NDv
+\!.in +\\n(INu
+\!.ti -\\n(INu
+[\\*(St]
+.rm St
+\!.br\}
+..
+.de RE			\" REFERENCE END
+.\"	.RE $1
+.			\" $1 = succeeding vertical spacing { 0 }
+.ie \\n(RS=0 .Er W ".RE: no matching .RS or .RF
+.el \{\
+\!.in -\\n(INu
+.ie !"\\$1"" \!.sp \\$1v
+.el \!.sp \\n(VSu
+.br
+.da
+.fi
+.ll \\n(RFu
+.rr RF
+.in \\n(REu
+.rr RE
+.nr RS 0
+.ev \}
+..
+.de RT			\" REFERENCE TABLE
+.\"	.RT
+.ev 1
+.nr RF \\n(.l
+.ll \\n(LLu
+.na
+.Rt
+.ad
+.ll \\n(RFu
+.rr RF
+.ev
+.rm Rt
+..
+.\*($0
+.rm $0

+ 48 - 0
mkun/tmac.q8

@@ -0,0 +1,48 @@
+.\"	MACROES FOR INDEX REFERENCES (file tmac.q8)
+.\"
+.\"		Th.A. Zoethout
+.\"
+.de IX			\" INDEX TEXT
+.\"	.IX $1 ...
+.			\" $1 ... = text for index
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+\&\\*(St
+.Ix
+..
+.de IW			\" INDEX WORD
+.\"	.IW [ [$1] ) $2 ( $3 ]
+.			\" $1 = prefix
+.			\" $2 = text for index
+.			\" $3 = suffix
+\&\\$1\\$2\\$3
+.ie \\n(.$>2 .ds St \\$2
+.el .ds St \\$1
+.Ix
+..
+.de IR			\" INDEX REFERENCE (not in running text)
+.Ct \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.Ix
+..
+.de Ix			\" index item
+.ev 1
+.ll \\n(LLu
+.in 0
+.da It
+\!.tm [\\*(St]\\n%
+.br
+.da
+.ev
+..
+.de IT			\" INDEX TABLE
+.\" The text output with this request should be the last
+.\" of a document. It contains one index item per line
+.\" and has to be sorted and classified in order to be useful
+.\" for including in a final printout.
+.\" The layout of each line is:
+.\"		[index-item-text]pagenumber
+.Cr
+.It
+.rm It
+..
+.\*($0
+.rm $0

+ 185 - 0
mkun/tmac.q9

@@ -0,0 +1,185 @@
+.\"	MACROES FOR REFER REFERENCES (file tmac.q9)
+.\"
+.\"		E.G. Keizer
+.\"
+.nr %F 2		\" The number of the attention font
+.if \n(%w=0 .nr %w 8n	\" Default footnote number indent
+.ds [" \(l"		\" Quotes surrounding article titles
+.ds "] \(r"
+.if \w'\\*(["'==0 \{.ds [" "
+.ds "] "\}
+.			\" The special strings have been defined in tmac.kun
+.			\" The macroes
+.de ]<
+.nr %l 1
+..
+.de ]>
+.rr %l
+..
+.de ][
+.if \\n(%l=0 .FS
+.in +\\n(%wu		\" Indent by hand, using .PS causes problems
+.if !\&\\*([F\&\& \{\
+.ti -\\n(%wu
+.as [F .
+\&\\*([F\c
+.nr [w \\n(%wu-\w'\\*([F'u	\" Width of footnote indicator
+.ie \\n([w<1n .br	\" Break if indicator too large
+.el \h'\\n([wu'\c\}
+.%\\$1			\" Use the peculiar format
+.in -\\n(%wu
+.if \\n(%l=0 .FE
+.rr [P [w
+.rm %,
+.rm [A [B [C [D [E [F [G [H [I [J [K [L [M [N [O [P [Q [R [S [T [U [W [X [Y [Z
+.rm [a [b [c [d [e [f [g [h [i [j [k [l [m [n [o [p [q [r [s [t [u [w [x [y [z
+..
+.de %1			\" Journal article
+.if !\&\\*([i\&\& .rm [I [C
+.if !\&\\*([A\&\& \\*([A:
+.if !\&\\*([T\&\& \{\&\\*(["\\*([T\\*("]\c
+.ds %, , \}
+.if !\&\\*([J\&\& \{\\*(%,\f\\n(%F\\*([J\fP\c
+.ds %, , \}
+.if !\&\\*([V\&\& \{\\*(%,vol. \\*([V\c
+.ds %, , \}
+.if !\&\\*([N\&\& \{\\*(%,no. \\*([N\c
+.ds %, , \}
+.if !\&\\*([P\&\& \{.if \\n([P \\*(%,pp.\|\c
+.el \\*(%,p.\|\c
+.ds %, , 
+\&\\*([P\c\}
+.if !\&\\*([i\&\& \{\\*(%,ISSN\|\\*([i\c
+.ds %, , \}
+.if !\&\\*([I\&\& \{\\*(%,\\*([I\c
+.ds %, , \}
+.if !\&\\*([D\&\& \{\\*(%,\\*([D\c
+.ds %, , \}
+.if !\&\\*([O\&\& \{\\*(%,\\*([O\c
+.ds %, , \}
+\&.
+..
+.de %2			\" Book
+.if !\&\\*([i\&\& .rm [I [C
+.if !\&\\*([A\&\& \\*([A:
+.if !\&\\*([T\&\& \{\&\f\\n(%F\\*([T\f1\c
+.ds %, , \}
+.if !\&\\*([V\&\& \{\\*(%,vol. \\*([V\c
+.ds %, , \}
+.if !\&\\*([N\&\& \{\\*(%,no. \\*([N\c
+.ds %, , \}
+.if !\&\\*([I\&\& \{\\*(%,\\*([I\c
+.ds %, , \}
+.if !\&\\*([C\&\& \{\\*(%,\\*([C\c
+.ds %, , \}
+.if !\&\\*([D\&\& \{\\*(%,\\*([D\c
+.ds %, , \}
+.if !\&\\*([i\&\& \{\\*(%,ISBN\|\\*([i\c
+.ds %, , \}
+.if !\&\\*([O\&\& \{\\*(%,\\*([O\c
+.ds %, , \}
+\&.
+..
+.de %3			\" Article within Book
+.if !\&\\*([i\&\& .rm [I [C
+.if !\&\\*([A\&\& \\*([A:
+.if !\&\\*([T\&\& \{\&\\*(["\\*([T\\*("]\c
+.ds %, , \}
+.if !\&\\*([B\&\& \{ in \f\\n(%F\\*([B\f1\c
+.ds %, , \}
+.if !\&\\*([V\&\& \{\\*(%,vol. \\*([V\c
+.ds %, , \}
+.if !\&\\*([N\&\& \{\\*(%,no. \\*([N\c
+.ds %, , \}
+.if !\&\\*([P\&\& \{.if \\n([P \\*(%,pp.\|\c
+.el \\*(%,p.\|\c
+.ds %, , 
+\&\\*([P\c\}
+.if !\&\\*([E\&\& \{\\*(%,\\*([E\^\c
+.if \\n([E (eds.)\c
+.el (ed.)\c
+.ds %, , \}
+.if !\&\\*([I\&\& \{\\*(%,\\*([I\c
+.ds %, , \}
+.if !\&\\*([C\&\& \{\\*(%,\\*([C\c
+.ds %, , \}
+.if !\&\\*([D\&\& \{\\*(%,\\*([D\c
+.ds %, , \}
+.if !\&\\*([i\&\& \{\\*(%,ISBN\|\\*([i\c
+.ds %, , \}
+.if !\&\\*([O\&\& \{\\*(%,\\*([O\c
+.ds %, , \}
+\&.
+..
+.de %4			\" Report
+.if !\&\\*([i\&\& .rm [I [C
+.if !\&\\*([A\&\& \\*([A:
+.if !\&\\*([T\&\& \{\&\\*(["\\*([T\\*("]\c
+.ds %, , \}
+.if !\&\\*([V\&\& \{\\*(%,vol. \\*([V\c
+.ds %, , \}
+.if !\&\\*([N\&\& \{\\*(%,no. \\*([N\c
+.ds %, , \}
+.if !\&\\*([P\&\& \{.if \\n([P \\*(%,pp.\|\c
+.el \\*(%,p.\|\c
+.ds %, , 
+\&\\*([P\c\}
+.if !\&\\*([E\&\& \{\\*(%,\\*([E\^\c
+.if \\n([E (eds.)\c
+.el (ed.)\c
+.ds %, , \}
+.if !\&\\*([R\&\& \{\\*(%,\\*([R\c
+.ds %, , \}
+.if !\&\\*([I\&\& \{\\*(%,\\*([I\c
+.ds %, , \}
+.if !\&\\*([C\&\& \{\\*(%,\\*([C\c
+.ds %, , \}
+.if !\&\\*([D\&\& \{\\*(%,\\*([D\c
+.ds %, , \}
+.if !\&\\*([i\&\& \{\\*(%,ISBN\|\\*([i\c
+.ds %, , \}
+.if !\&\\*([O\&\& \{\\*(%,\\*([O\c
+.ds %, , \}
+\&.
+..
+.de %4			\" Bell Labs report
+.if !\&\\*([A\&\& \\*([A:
+.if !\&\\*([T\&\& \{\&\\*(["\\*([T\\*("]\c
+.ds %, , \}
+.if !\&\\*([M\&\& \{\\*(%,\\*([M\c
+.ds %, , \}
+.if !\&\\*([D\&\& \{\\*(%,\\*([D\c
+.ds %, , \}
+.if !\&\\*([O\&\& \{\\*(%,\\*([O\c
+.ds %, , \}
+\&.
+..
+.de %0			\" Something else
+.if !\&\\*([i\&\& .rm [I [C
+.if !\&\\*([A\&\& \\*([A:
+.if !\&\\*([T\&\& \{\&\f\\n(%F\\*([T\f1\c
+.ds %, , \}
+.if !\&\\*([V\&\& \{\\*(%,vol. \\*([V\c
+.ds %, , \}
+.if !\&\\*([N\&\& \{\\*(%,no. \\*([N\c
+.ds %, , \}
+.if !\&\\*([P\&\& \{.if \\n([P \\*(%,pp.\|\c
+.el \\*(%,p.\|\c
+.ds %, , 
+\&\\*([P\c\}
+.if !\&\\*([E\&\& \{\\*(%,\\*([E\^\c
+.if \\n([E (eds.)\c
+.el (ed.)\c
+.ds %, , \}
+.if !\&\\*([C\&\& \{\\*(%,\\*([C\c
+.ds %, , \}
+.if !\&\\*([D\&\& \{\\*(%,\\*([D\c
+.ds %, , \}
+.if !\&\\*([i\&\& \{\\*(%,ISBN\|\\*([i\c
+.ds %, , \}
+.if !\&\\*([O\&\& \{\\*(%,\\*([O\c
+.ds %, , \}
+\&.
+..
+.\*($0
+.rm $0 ]R