From aae2cebccd586eb2e28a764473d03dde6c2666a3 Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 9 Mar 1987 15:53:04 +0000 Subject: [PATCH] Initial revision --- mkun/pubmac | 2284 +++++++++++++++++++++++++++++++++++++++++++++++++ mkun/tmac.kun | 934 ++++++++++++++++++++ mkun/tmac.q1 | 260 ++++++ mkun/tmac.q2 | 117 +++ mkun/tmac.q3 | 150 ++++ mkun/tmac.q4 | 123 +++ mkun/tmac.q5 | 123 +++ mkun/tmac.q6 | 65 ++ mkun/tmac.q7 | 70 ++ mkun/tmac.q8 | 48 ++ mkun/tmac.q9 | 185 ++++ 11 files changed, 4359 insertions(+) create mode 100644 mkun/pubmac create mode 100644 mkun/tmac.kun create mode 100644 mkun/tmac.q1 create mode 100644 mkun/tmac.q2 create mode 100644 mkun/tmac.q3 create mode 100644 mkun/tmac.q4 create mode 100644 mkun/tmac.q5 create mode 100644 mkun/tmac.q6 create mode 100644 mkun/tmac.q7 create mode 100644 mkun/tmac.q8 create mode 100644 mkun/tmac.q9 diff --git a/mkun/pubmac b/mkun/pubmac new file mode 100644 index 000000000..daaa2b874 --- /dev/null +++ b/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 +\"ation use the command ".DS Q". +\&.DS Q 15 +\&This is the quoted material. +\&Note that it is automatically indented from both margins. +\&To terminate the quotation, use ".DE" +\&.DE +\&This is the first sentence following the quoted text. +.BE +.DE +produce the following output: +.NE 7 +This is the sentence preceding the quotation; to start the +quotation use the command ".DS Q". +.DS Q 15 +This is the quoted material. +Note that it is automatically indented from both margins. +To terminate the quotation, use ".DE" +.DE +This is the first sentence following the quoted text. +.P +The box +.DS X 10 Q 5 +The text within the box display is subject +to the normal PUBMAC formatting, but other PUBMAC commands +can be used to get the desired layout. +.CS +Text for instance can appear +centered +within a box display +.CE +.DE +was created with the input text: +.DS I 6 +.BS +\&.DS X 10 Q 5 +\&The text within a box display is subject +\&to the normal PUBMAC formatting, but other PUBMAC commands +\&can be used to get the desired layout. +\&.CS +\&Text for instance can appear +\¢ered +\&within a box display +\&.CE +\&.DE +.BE +.DE +.S2 Breaking up a Display +Normally a display is moved to the next page, if there is +not enough space left on the current page to hold it completely. +Especially when a display is long, +this can lead to an annoyingly large amount of white paper +caused by the page eject. +.NE 5 +The command +.DS I 6 +.BS +\&.DB +.BE +.DE +.UW ( D isplay +.UW B reak +allowed), +.B .DS +allows all following displays to be split if necessary. +The same effect for one display only, +can be obtained by appending the operand +.B B +to the +.B .DS +request. +.S2 Restrictions with Displays +.PS +.PT +As already mentioned, the user has to take care in unformatted +displays that the length of the input lines does not exceed +the current output line length; +.ig +especially in multi-column mode too long display text can lead to overprinting +of columns. +.. +.PT +To prevent ugly output, +the text of a box display should not be longer than a page. +.PT +It is not possible to nest displays. +.PE +.S2 Tables +The program +.B tbl +can be used to configure complicated tables. +A description of how to use it can be found in +the +.B tbl +user's manual. +.[ +%A M. E. Lesk +%T T\s-2BL\s0\(emA program to format tables +%I Bell laboratories +%C Murray Hill, New Jersey +.] +PUBMAC will handle multiple page tables correctly. +To repeat the table's heading on each page it is necessary to +surround the heading with +.B ".TS H +and +.BW .TH . +The +.B ".TS H +command replaces the normal +.B .TS +command. +.S2 Formulas +The program +.B eqn +allows you to express formulas in a rather natural syntax. +For more documentation about how to use +.B eqn +see [UPM75]. +.A +The program +.B eqn +converts formula descriptions into NROFF/TROFF commands. +Typical usage is +.DS I 6 +.BS +\&eqn file | troff +.BE +.DE +where file contains both the +.B eqn +and PUBMAC requests. +.P +In PUBMAC the requests +.DS I 6 +.BS +\&.EQ [I/C] [indent] [L/R number] [R/L number] [count] +\&.EN [count] +.BE +.DE +.UW ( EQ uation, +.UW E quation +.UW e N d) +are recognized. +The first operand of +.B .EQ +can be +.B I +or +.B C +\&, C has the effect of centering the formula on the line and is +the default, I has the +effect of indenting the display by the value of the operand following the +.B I +(default 0). +.P +The following operands allow the formula to be numbered in one or +both margins. +.B L +or +.B R +specify the the formula should be numbered at the Left or Right margin. +The number to be placed in that margin should follow the +.B L +or +.BW R . +.P +The operand +.B count +of +.B .EQ +and +.B .EN +specifies the amount of blank lines to be inserted at the +before and after the +formula. +.S1 Page Format +If you want to use another format than the standard format +which is described below, you only may do this with special PUBMAC +commands: +.DS I +.TS 0 +l l. +\&.IN set standard indentation +\&.PO set page offset +\&.PN set page number +\&.PL set page length +\&.LL set line length +\&.MS T define top margin titles +\&.MS B define bottom margin titles +\&.ME end titles +\&.IN set default indent +\&.AD adjust rigth margin +\&.NA do not adjust right margin +\&.HY switch hyphenation on +\&.NH switch hyphenation off +\&.HC set hyphenation indicator character +.TE 0 +.DE +.S2 The Standard Format +PUBMAC uses the following standard values for the page format: +.DS I +the width of 3 digits for the standard indentation +16.02 cm of text per line +pages of 29.7 cm +25.7 cm of text per page, including the margin titles +2 cm of blank on top of page +the page offset is 0 +bottom title of page is "-- % --" + where % is the current page number in arabic numerals +adjust both margins, fill output lines +hyphenation enabled +.DE +.S2 Setting the Page Offset +If you want to have a larger +blank margin on the left hand side of your paper (e.g. for binding +purposes), +use the command +.DS I 6 +.BS +\&.PO offset +.BE +.DE +.UW ( P age +.UW O ffset). +The output will be moved as a whole by +.B offset +columns to the right. +This command should precede all input text. +The default offset is zero, i.e. printing starts at the leftmost +position of the output device. +.NE 10 +.S2 Changing the Page Format +To change the length of the page, use the command +.DS I 6 +.BS +\&.PL paperlength [textlength [top offset]] +.BE +.DE +.UW ( P age +.UW L ength). +The operand +.B paperlength +determines the physical length of the page (the number of lines +which fit on one sheet of paper); +the operand +.B textlength +determines the number of lines used by PUBMAC (excluding top and bottom margin) +for text output. +If +.B textlength +is not specified it is defaulted to +.BW 26.03cm . +The default value for +.B paperlength +is 29.7cm, which is +the right value A4 paper. +.A +The offset of the text from the top of the paper is given by the operand +.B top offset +(default is 1.8cm). +The sum of +.B textlength +and +.B "top offset" +must be smaller then or equal to +.BW paperlength . +.A +This command must precede all other input text, as it is not +possible to change the page length during the text processing. +.P +To change the linelength, use the command +.DS I 6 +.BS +\&.LL length [footnote length] +.BE +.DE +.UW ( L ine +.UW L ength). +The default line length 16.02cm. +The default footnote line length is 10/11 of the line length. +.S2 Head and Foot Titles +To define a head title, to appear at the start of each page, or to change +the standard foot title ("\-\-~%~\-\-") at the bottom of each page, +the commands +.DS I +.TS 0 +l l. +\&.MS T define Top Margin titles +\&.MS B define Bottom Margin titles +\&.ME Title End +.TE 0 +.DE +are supplied. +As with NROFF/TROFF, the current page number is represented by "%" in the +.B .TL +request. +.P +To define a head title, use the command +.DS I 6 +.BS +\&.MS T [E/O] [count] +.BE +.DE +.UW ( M argin +.UW T op text). +The first optional operand allows the definition of different +titles for even and odd numbered pages; +specify +.B E +for titles to appear on even numbered, and +.B O +for titles to appear on odd numbered pages. +If the second operand is omitted, the title defined will +appear on all pages, regardless whether the page number +is even or odd. +The operand +.B count +specifies the number of blank lines between the top margin text +and the start of further text +(default 2). +.A +The text defining the head title +follows on the next input lines. If you want to enter PUBMAC +commands into the title which have to be executed each time the +head title is processed (e.g. +.B .TL +commands), precede the command lines with the character +sequence "\e!". +Commands that affect the general layout, +like +.BW .SS +and +.BW .IN , +should be used with care. +In general it is wise to reset the altered environment to its +original state at the end of the title definition. +.P +To terminate the title definition, use +.DS I 6 +.BS +\&.ME +.BE +.DE +.UW ( M argin +text +.UW E nd). +.P +Equivalent to head titles, foot titles can be defined. Use +.DS I 6 +.BS +\&.MS B [E/O] [count] +.BE +.DE +.UW ( M argin +.UW B ottom +text) to start the input of the foot title. Use +the command +.B .ME +to terminate the foot title definition, too. +.P +The foot titles of this manual, for instance, have been +defined by: +.DS I 6 +.BS +\&.MS B E +\&\e!.TL \'%\'\'\' +\&.ME +\&.MS B O +\&\e!.TL \'\'\'%\' +\&.ME +.BE +.DE +This example also shows the usage of the escape sequence +"\e!", +which prevents both +.B .TL +commands from being executed during the definition +of the titles, and causes them to be executed every time a new page +is processed. +This is essential to get the current page number +and not the page number being actual when the title is defined. +.NE 4 +.P +To delete the standard foot title, simply define an empty foot title: +.DS I 6 +.BS +\&.MS B 0 +\&.ME +.BE +.DE +.S2 Setting the Standard Indentation +The value used for indenting paragraphs, after section start, +indented and quoted displays, and for the command +.B .IS, +by default is set to 3. +This value can be changed by invoking the command +.DS I 6 +.BS +\&.IN [indent] +.BE +.DE +.UW ( IN dentation). +After this command, further sections, paragraphs etc. are indented by +the number of columns specified by +.BW indent . +If no indentation at all is desired, specify +.B 0 +as operand. +.B Indent +has as default value 3. +.S2 "Page Number" +Sometimes a paper is formatted in parts. +The number of the first page of a certain part will not +always be 1. +The command +.DS I 6 +.BS +\&.PN number [style] +.BE +.DE +.UW ( P age +.UW N umber) +allows you to use a different start value for page numbers. +The +.B style +operand +can have one of the values: a, A, i, I and 1. +These letters have the same meaning as for the +.B style +operand of the +.B .PS +request. +The new number ( and format ) becomes valid at the next printed page, +or at the first page if given before any text. +.S2 Adjusting +As already has been mentioned, the default mode for formatting +is filling and adjusting. +.A +Adjusting can be switched off +by the command +.DS I 6 +.BS +\&.NA +.BE +.DE +.UW ( N o +.UW A djust). +All text following will not be aligned to a uniform right margin, +until a +.DS I 6 +.BS +\&.AD [type] +.BE +.DE +.UW ( AD just) +is encountered, which switches on adjusting again. +The operand +.B type +can be one of the following, +.PS i 5 +.PT "~~R" +Right adjusted: uniform right margin, ragged left margin +.PT "~~L" +Left adjusted: uniform left margin, ragged right margin +.PT "~~C" +Centered: both margins ragged by the same amount +.PT "~~B" +Both adjusted (default): uniform left and right margin +.PE +.S2 Hyphenation +Hyphenation can be switched off globally by using the command +.DS I 6 +.BS +\&.NH +.BE +.DE +.UW ( N o +.UW H yphenation). +.NE 6 +.N +The command +.DS I 6 +.BS +\&.HY +.BE +.DE +.UW ( HY phenation) +enables hyphenation again. +.P +A second possibility is to use the command +.DS I 6 +.BS +\&.HC character +.BE +.DE +(set +.UW H yphenation +.UW C haracter), +which determines the operand +.B character +to be the indicator character for hyphenation. +I.e. a word will be hyphenated +at the points indicated by this character. +The character itself will not appear in the +output, even if the word is not hyphenated. +Example: +.DS I 6 +.BS +\&.HC ` +\& ..... +\& ... Algo`rithmus ... +.BE +.DE +This occurence of +.B Algorithmus +will now, if necessary, be hyphenated as +.BS +Algo-rithmus. +.BE +.A +To prevent a word to be hyphenated at all, +it has to be preceded by the hyphenation indicator character, e.g. +.BW `Algorithmus . +.S1 Footnotes, Table of Contents, Bibliography +PUBMAC provides commands for the creation of +footnotes, a table of contents and a list of bibliograpy. +.P +The following commands are available: +.DS I +.TS 0 +l l. +\&.FS start a footnote +\&.FN start numbered footnote +\&.FE end a footnote +\&.CT put out the table of contents +\&.RS start a bibliography reference +\&.RF start a reference +\&.RE end a bibliography reference +\&.RT give list of bibliography +.TE 0 +.DE +.S2 Footnotes +Three commands are provided to create a footnote. +Footnotes appear on the bottom of the page where they are +defined; if the remaining place on the page is too small +for the text of a footnote it will be shifted to the bottom of the next page. +.P +To start a footnote text, use the PUBMAC command +.DS I 6 +.BS +\&.FS [prefix] indicator [ suffix ] +\&.FN [prefix] [suffix] +.BE +.DE +.UW ( F ootnote +.UW S tart, +.UW F ootnote +start +.UW N umbered). +.B indicator +allows to identify the footnote: +it will appear in the output text at the place where +.B .FS +was encountered in the input text, and it will appear at the start +of the footnote text. +.P +The +.B .FN +request has as default indicator a number. +This number is automaticaly incremented at each occurence of a +.B .FN +request. +The footnote counter is reset to one for each new section, when +in manual mode. +.A +The operand +.B suffix +is meant for the special case that +a full stop, comma, semicolon etc. immediately has to follow +the footnote indicator in the output text (otherwise the special +character and the indicator would be separated by a blank, or even worse, +by a newline). +The operand +.B prefix +serves a similar purpose. +.A +If only two of the three operands are specified, the last is +interpreted as the prefix. +.P +To end the text of a footnote, the command +.DS I 6 +.BS +\&.FE +.BE +.DE +.UW ( F ootnote +.UW E nd) +is used. If the footnote is referenced in the middle of a sentence, +the rest of the sentence has to follow the +.B .FE +on the next line. +.NE 5 +.P +As an example +.FS (*) , +this is an example of a footnote +.FE +the footnote at the bottom of this page was created by the following +input lines: +.DS I 6 +.BS +\&As an example +\&.FS (*) , +\&this is an example of a footnote +\&.FE +\&the footnote at the ..... +.BE +.DE +This example also shows the usage of the operand +.B suffix +of the +.B .FS +command, you see that the indicator "(*)" +is followed by "," immediately without a separating space. +.S2 Table of Contents +As mentioned above, all titles of sections are saved for a table +of contents. +To put out the table of contents, +at the end of the input text invoke the command +.DS I 6 +.BS +\&.CT +.BE +.DE +.UW ( C ontents +.UW T able). +The table of contents collected up to now is put out and then deleted. +No headers or new page commands are generated. +This gives one the flexibility to put out the table of contents +for example at +the end of each chapter on a separate page or at the end of the +text in an appendix. +To have the pages on which the table of contents is printed, numbered +with roman numbers starting +with "i", use the command +.B .PN 1 i +before the +.B .CT +command. +The table of contents can then be inserted +before the front page of your paper instead of at the end. +In report mode the table of contents is also entered in the table of contents. +.S2 Bibliography +Besides supporting the +.U refer +utility PUBMAC provides +commands to collect literature references and +to print them at the desired place. +.A +To generate an entry in the bibliography and to refer to it, use +.DS I 6 +.BS +\&.RS [prefix] refname [suffix] +.BE +.DE +.UW ( R eference +.UW S tart). +The text following this command is saved for the bibliography. +Similar to the operands of the footnote command , +.B refname +is placed in the running output text and at the start of the +bibliography entry. +.B refname +will be enclosed in square brackets +(\ [ and\ ]\ ). +.B suffix +and +.B prefix +have the same meaning as with the footnote command. +PUBMAC commands for formatting the bibliography text have to be escaped +by "\e!", as the layout of the bibliography is determined +when the +.B .RT +command is invoked. +.P +.NE 8 +If you want to create an entry without referring to it +in the text explicitely, use the command +.DS I 6 +.BS +\&.RF refname +.BE +.DE +.UW ( R e F erence +start). +The result is the same as with +.B .RS, +but +.B refname +will not appear in the running text. +.P +To terminate a bibliography entry, use the command +.DS I 6 +.BS +\&.RE +.BE +.DE +.UW ( R eference +entry +.UW E nd), +which will switch back to normal text +processing. +.P +To put out the collected bibliography, invoke the command +.DS I 6 +.BS +\&.RT +.BE +.DE +.UW ( R eference +.UW T able). +The bibliography collected up to now is put out and then deleted, +so that it is possible to start a new bibliography. +In this way, bibliographies can be made either per section +or for the whole paper. +The bibliography is put out in the format being chosen the +point at which the +.B .RT +command is invoked. +.S2 Using refer +The program +.B refer +can be used to add references to articles mentioned in a +systemwide database, a private database or in the text. +It places an indicator in the text and the reference in a footnote +on the same page. +If the +.I \-e +option of +.B refer +is used the references will appear at the appropiate place. +The +collected references have to be surrounded by appropiate +PUBMAC commands. +.S2 Indeces +Commands are provided to collect index words accompanied by the number +of the page they occur. +Another command causes the list of collected index words to be printed +on NROFF/TROFF's error output. +.A +To add an index entry to the list use +.DS I 6 +.BS +\&.IX index-word ... +\&.IW [prefix] index-word [suffix] +\&.IR index-word ... +.BE +.DE +The arguments of the +.B .IX +.UW ( I nde\c +.UW X ) +and +.B .IW +.UW ( I ndex +.UW W ord) +commands appear in the running text, +as opposed to +.B .IR +.UW ( I ndex +.UW R ference) +whose arguments only appear in the index list. +.B Suffix +and +.B prefix +have the same meaning as with the footnote command. +.A 1 +The collected references can be produced +on NROFF/TROFF's error output with the command +.DS I 6 +.BS +\&.IT +.BE +.DE +.UW ( I ndex +.UW T able). +By redirecting the error output of NROFF/TROFF +one can save this list for further processing. +.DS I +.BS +troff -mkun files .... 2>indeces +awk -f .... indeces | troff -mkun +.BE +.DE +.A +The index entries are produced on one line each with the index words +enclosed in square brackets and +inmediatly followed by the appropiate page number. +An example: +.DS I 6 +.BS +[indeces]\n% +.BE +.DE +.S1 Special Considerations +This section discusses +the use of the tabulator, special characters and some other special +facilities in PUBMAC. +.S2 Tabulator +The tabulator stops in PUBMAC are set to +.DS I 6 +.BS +9,17,25,33,.... +.BE +.DE +by default. +To set the tabulator positions to your needs, use +.DS I 6 +.BS +\&.ta pos... +.BE +.DE +(set +.UW TA bulator), +which will set the tabulator stops to the +positions indicated by +.B pos... +If pubmac is used in conjuction with +.B tbl +the tab stops will be heavily used by tbl and thereby rendered +almost unusable outside the tables. +.S2 Special characters +.SP +The character +"~" +is replaced by the unpaddable space character, +which permits tying two or more words together so that +they will neither be moved apart nor split across two lines. +For example, if you want the words +"integral number denotation" not to be separated by more +than one blank, enter them as +.BW integral~number~denotation . +.P +The command +.DS I 6 +.BS +\&.SP [character] +.BE +.DE +allows you to use any other character as indicator for the unpaddable space. +If you specify no operand, you will have no single character to +indicate a unpaddable space. +.SP ~ +.P +Since the backslash character "\e" is used heavily by NROFF/TROFF as escape +character, +it has to be written twice if one wants to see it back in the output. +As the text of displays is processed several times, +even a doubled backslash will be lost. +Therefore a backslash in a display should be entered +either eight or a higher power of 2 times (which is a nuisance) or as "\ee". +.S2 Halfline Motions +NROFF/TROFF, thus also PUBMAC, provides the +possibility for half line motions, e.g. for formatting +mathematical formulas. +The sequence +.B \ed +moves down half a line, and the sequence +.B \eu +moves up half a line. +The output +.N 1 + (i\d1\u - i\d2\u)\u2\d +.N 1 +was produced with the input +.DS I 6 +.BS +(i\ed1\eu - i\ed2\eu)\eu2\ed +.BE +.DE +Usage of +.B \ed +and +.B \eu +can result in messy output on devices +not capable of performing half line motions; messy output +also will result if not the same number of "ups" and "downs" is +used. +.P +Typically lineprinters and display terminals can not perform half line +motions, whereas the HyPrint devices are capable of doing so. +.P +See also the section describing the use of +.B eqn +with PUBMAC. +.S2 The Actual Section Number +The actual section numbers are stored in registers named +.B Sn, +where +.B n +stands for any of the digits 1, 2, 3, 4 and 5. +If you want to refer to it, access it in the input text through +.B \en(Sn, +which will be replaced in the output text by the current section +number of the corresponding section depth. +For example if you wish to insert the number of the current chapter +use +.BW \en(S1 . +The register named S5 is used for the numbering of appendices. +.A +To use it in a page title definition, two backslashes have to be written: +.BW \e\en(Sn . +The first line of the page header of +this manual, for instance, has been produced by entering the +command +.DS I 6 +.BS +\&\e!.TL \'PUBMAC users guide\'\'\e\en(S1\' +.BE +.DE +when defining the head title with the commands +.B .MS T +and +.B .ME +(see previous chapter). +.SM AP A +.AP "Error messages" +Besides error messages issued by NROFF/TROFF, +messages from PUBMAC may be written to the users terminal +(Unix error output file 2). +The messages have the following form: +.DS I 6 +.BS +Error (p=.., l=..): message +.BE +.DE +.B message +gives information about the kind of error encountered. +The location of the error is described between the parentheses +in the order +.DS I +p = page number +l = line number on the page +.DE +Additionally, errors are marked by three plus signs (\(pl\(pl\(pl) or a \(lh +.DS I 6 +.BS +\&\(lh Error +.BE +.DE +appearing on the right margin of the output text. +Since many errors are detected much too late, +the actual error is always located before the location stated. +.LL +.AP "Command Summary" +In the summary, the following abbreviations are used for operands: +.VS 0.8 0.2 +.PS - 6 +.PT n +denotes a number (e.g. '1', '5', '231') +.PT c +denotes a single character (e.g. 'i', 'F', 'O') +.PT w +denotes a word (e.g. 'NROFF', 'pubmac') +.PT w... +denotes a sequence of 1 or more words +(e.g. 'Table of Contents') +.PE +.VS +.N 4 +.PS 1 14 +.PT Command +Explanation +.PT .A [n] +.B Alinea. +.N +First line of alinea will be indented. +.N +The alinea will be preceded by n (default 0) blank lines. +.PT .AD [c] +.B Adjust mode. +.N +Left, Right, Centered or Both. +.NE 3+1 +.PT ".AP w..." +.B Appendix. +.N +Same as .S1. +.NE 6+1 +.PT ".B w..." +.B Boldface. +.N +Write the words given as operands w... in +bold face letters (this is done in a output device dependant way). +.PT .BE +.B Bold end. +.N +End of bolt text. +.PT .BP +.B Begin page. +.PT ".BS" +.B Bold start. +.N +All following text is printed in bold face up to .BE. +.N +The way bold face is printed depends on the output device. +.NE 10 +.PT .CE +.B Centering end. +.N +The centered text will be followed by n blank lines. +.NE 3 +.PT .CS +.B Centering start. +.N +Following input lines up to .CE will be centered. +.N +The centered text will be preceded by n blank lines. +.NE 10+1 +.PT ".CT" +.B Table of contents. +.N +All titles collected from previous .S1, .S2, .S3, .S4 and .AP commands +are put out. +.PT ".CU w..." +.B Continuous underline. +.N +Like .U only all characters are underlined. +.NE 4+1 +.PT .DB +.B Display break. +.N +Allow the following displays to be broken +up, if necessary. +.PT .DE [n] +.B Display end. +.N +The display will be followed by n (default 1) blank lines. +.NE 6+1 +.PT ".DS " +.B Display. +.N +A display is text +which is kept together and not spread over a page boundary. +.N +The operands determine the kind of display. +The first few operands are: +.N +.PS - 4 +.PT B +.B box display +.N +the text between .DS B and .DE +will be surrounded by a box, the text will be formatted and adjusted +.PT M +.B marked display +.N +the text will be marked by | +on the left hand side, not adjusted and not filled +.PT no +.N 1 +not adjusted, not filled +.PE +These operands can be followed by: +.PS - 4 +.PT I +.B indented display +.N +not adjusted, not filled +.PT Q +.B quoted display +.N +indented from both margins, +adjusted and filled +.PE +.PT .FE +.B Footnote end. +.NE 3 +.PT ".FN [[w2] w1]" +.B Numbered footnote start +.N +As with .FS, but the indicator is defaulted to a number in parenthesis. +.NE 17+1 +.PT ".FS [w3] w1 [w2]" +.B Footnote start. +.N +The footnote will be moved to the bottom of the page. +Operands: w1=indicator, w2=suffix and w3=prefix. +The indicator (w1) appears in the output text and +at the start of the footnote text as well to identify the footnote. +Prefix and suffix are for the special case that the indicator +has to be preceded or followed by e.g. comma, full stop etc. +The running text will contain w3w1w2. +.NE 10+1 +.PT ".HC c" +.B Hyphenation character. +.N +The hyphenation control character is set to c. +It can be imbedded in words to indicate where they should be +hyphenated. If it precedes a word, this word will not be +hyphenated. The hyphenation character itself will not appear in +the output. +.PT .HY +.B Hyphenation. +.PT .IE +.B Indentation end. +.N +Return to the indentation level before the last .IS. +.NE 4+1 +.PT ".IN n" +.B Set Indentation. +.N +The indentation used for paragraphs, section start etc +is set to n. +.NE 4+1 +.PT .IR w... +.B Index Reference +add the words to the index list, do not +insert them in the running text. +.NE 4+1 +.PT .IS [n] +.B Indentation start. +.N +Indent following text by n (default three) columns until +a .IE is encountered. +.NE 4+1 +.PT .IT +.B Index Table +Produce the index table on file descriptor 2. +.NE 4+1 +.PT .IW [w3] w1 [w2] +.B Index word +Insert w1, w2 and w3 in the running text as with +.B .FS +and add w1 to the index list. +.NE 4 +.PT IX w... +.B Index +Insert the words in the running text and the index list. +.NE 5+1 +.PT ".LL n" +.B Linelength. +.N +The line length is set to n. +The default line length is 66. +Must occur before any input text. +.NE 6+1 +.PT .ME +.B Margin input end +.NE 13+1 +.PT ".MS c1 c2" +.B Title input start. +.N +Operands: c1=T for T title, c1=B for bottom title, +c2=E for even pages, c2=O for odd pages. +The text between .MS and .ME will appear +as top and bottom margin text on each page. +Defaults: no top margin text, bottom margin text= ".TL \'\'-- % --\'\'". +Attention: NROFF/TROFF commands to be executed every time +(e.g. .TL \'\'-%-\'\') +a title is processed, have to be preceded by "\e!". +.PT ".N [n]" +.B New line. +.N +The new line will be preceded by n (default 0) blank lines. +.PT .NA +.B No adjust mode. +.N +The right margin will be ragged. +.NE 4+1 +.PT ".NE n" +.B Need lines. +.N +If no n lines are left on the current page, a new page is begun. +.PT .NH +.B No hyphenation. +.NE 5+1 +.PT ".P [n]" +.B Paragraph. +.N +The paragraph is separated from the preceding text +by n (default 1) blank lines and its first line is indented. +.PT .PE [n] +.B End list of points. +.NE 5+1 +.N +The list will be followed by n (default 1) blank lines. +.NE 9+1 +.PT ".PL n m" +.B Set pagelength. +.N +The first operand determines the physical length of the +page, the second one the number of lines printed per physical page. +The default value for n is 66, for m 59. +Must occur before any input text. +.PT ".PN n c" +.B Page number. +.N +The firts operand specifies the number of the next printed page. +The second operand specifies the format of the page number when printed. +(see .PS, but only a,A,i,I and 1). +.PT ".PO [n] " +.B Set page offset. +.N +The left margin is moved n columns to the +right. +.NE 12+1 +.PT ".PS [c [n]] [[w2] w1]" +.B List of points start. +.N +Operands: +c=numbering style, n=indentation of points (default=3). +If c=- or empty, points are labeled with "-", if c=1 +numbering of points will be arabic, if c=a with small letters, +if c=A with capital letters, if c=i with small roman numbers, if c=I +with capital roman numbers. +w1 is a suffix that will follow each point, w2 is a point prefix. +.NE 4+1 +.PT ".PT w... " +.B Point. +.N +The operands w... replace the label chosen by .PS +for this point only. +.NE 4+1 +.NE 2 +.PT .RE +.B Reference entry end +.N +To close the text of the reference entry started by .RF or .RS. +.NE 12+1 +.PT ".RF [w3] w1 [w2]" +.B Reference. +.N +Operands: w1=reference abbreviation, +w2=suffix, w3=prefix.(see .FS) +The reference abbreviation is embedded in square brackets +and inserted to the output text and to the start of the reference +entry as well for identification purposes. +References are collected to be put out +with .RT. +.PT .RP +.B Report layout. +.NE 4+1 +.PT ".RS w" +.B Reference start. +.N +Same as .RF, but the reference w will not appear in the running output +text. +.NE 7+1 +.PT .RT +.B Give bibliography. +.N +Via .RF and .RS collected bibliography is put out and then deleted. +.PT ".S1 w..." +.B Section. +.N +t is the section title, also saved for the table of contents. +Sections and subsections (see below) are numbered automatically. +.NE 5+1 +.PT ".S2 w..." +.B Subsection. +.N +The title will be saved for the table of contents, as for +the following commands .S3 and .S4 +.PT ".S3 w..." +.B Subsubsection. +.PT ".S4 w..." +.B Subsubsubsection. +.NE 6+1 +.PT ".SN n n n n n" +.B Section numbers. +.N +The first, second, third and fourth operands +set the start values for section numbers, subsection numbers and so on. +The last operands sets the start value for the appendix number. +.NE 4+1 +.PT ".ta n..." +.B Set tabulator. +.N +The tabulator stops are set to the positions n... +given in the operand list. +Usage conflicts with use of +.B tbl. +.NE 4+1 +.PT ".TL x" +.B Title. +.N +To define a three part title; x is of the +form \'left\'center\'right\'. +.PT ".U w..." +.B Underline. +.N +The words given as operands w... are underlined. +.PT .UE +.B Underlining end. +.PT .UN +.B Undent temporarily. +.PT ".US [c]" +.B "Underlining start" +.N +All following text up to .UE is underlined. +Operand: c=C then the input text is non-filled and continuously underlined, +normaly only letters and digits are underlined. +.PE +.AP Bibliography +.N 2 +.RT +.PN 1 A +.MS T E +\!.TL ```PUBMAC user's guide` +.ME +.MS T O +\!.TL `PUBMAC user's guide``` +.ME +.BP +.N 0.5 +.CS +Table of Contents +.CE +.N 1.5 +.CT diff --git a/mkun/tmac.kun b/mkun/tmac.kun new file mode 100644 index 000000000..2184e8b26 --- /dev/null +++ b/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 [ +.. diff --git a/mkun/tmac.q1 b/mkun/tmac.q1 new file mode 100644 index 000000000..60948a1bb --- /dev/null +++ b/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 diff --git a/mkun/tmac.q2 b/mkun/tmac.q2 new file mode 100644 index 000000000..cf5d72918 --- /dev/null +++ b/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 diff --git a/mkun/tmac.q3 b/mkun/tmac.q3 new file mode 100644 index 000000000..ccadc120f --- /dev/null +++ b/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 diff --git a/mkun/tmac.q4 b/mkun/tmac.q4 new file mode 100644 index 000000000..e063749c6 --- /dev/null +++ b/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 diff --git a/mkun/tmac.q5 b/mkun/tmac.q5 new file mode 100644 index 000000000..969e12995 --- /dev/null +++ b/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 diff --git a/mkun/tmac.q6 b/mkun/tmac.q6 new file mode 100644 index 000000000..73f3fa61d --- /dev/null +++ b/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 diff --git a/mkun/tmac.q7 b/mkun/tmac.q7 new file mode 100644 index 000000000..18afaaabe --- /dev/null +++ b/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 diff --git a/mkun/tmac.q8 b/mkun/tmac.q8 new file mode 100644 index 000000000..e9373ed77 --- /dev/null +++ b/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 diff --git a/mkun/tmac.q9 b/mkun/tmac.q9 new file mode 100644 index 000000000..6943838e4 --- /dev/null +++ b/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