Formatting Documents Part Number: 800-1756-11 Revision A of 27 March, 1990 The Sun logo, Sun Microsystems, Sun Workstation, NFS, and TOPS are registered trademarks of Sun Microsystems, Inc. Sun, Sun-2, Sun-3, Sun-4, Sun386z, SPARCstation, SPARCserver, NeWS, NSE, OpenWindows, SPARC, Sunlnstall, SunLink, SunNet, SunOS, SunPro, and Sun- View are trademarks of Sun Microsystems, Inc. UNIX is a registered trademark of AT&T; OPEN LOOK is a trademark of AT&T. All other products or services mentioned in this document are identified by the trademarks or service marks of their respective companies or organizations, and Sun Microsystems, Inc. disclaims any responsibility for specifying which marks are owned by which companies or organizations. Material in this manual comes from a number of sources: Typing Documents on the UNIX System: Using the -ms Macros with Troffand Nrojf, M. E. Lesk, Bell Laboratories, Murray Hill, New Jersey; A Guide to Preparing Documents with -ms, M. E. Lesk, Bell Laboratories, Murray Hill, New Jersey; Document Format- ting on UNIX Using the -ms Macros, Joel Kies, University of California, Berke- ley, California; Thl — A Program to Format Tables, M. E. Lesk, Bell Labora- tories, Murray Hill, New Jersey; A System for Typesetting Mathematics, Brian W. Kemighan, Lorinda L. Cherry, Bell Laboratories, Murray Hill, New Jersey; Typesetting Mathematics — User’s Guide, Brian W. Kemighan, Lorinda L. Cherry, Bell Laboratories, Murray Hill, New Jersey; Updating Publications Lists, M. E. Lesk, Bell Laboratories, Murray Hill, New Jersey; Some Applications of Inverted Indexes on the UNIX System, M. E. Lesk, Bell Laboratories, Murray Hill, New Jersey; Writing Papers with Nroff Using -me, Eric P. Allman, Univer- sity of California, Berkeley; The -me Reference Manual, Eric P. Allman, Univer- sity of California, Berkeley; and Introducing the UNIX System, Henry McGilton, Rachel Morgan, McGraw-Hill Book Company, 1983. These materials are grate- fully acknowledged. Copyright © 1984-1990 Sun Microsystems, Inc. - Printed in U.S.A. All rights reserved. No part of this work covered by copyright hereon may be reproduced in any form or by any means - graphic, electronic, or mechanical - including photocopying, recording, taping, or storage in an information retrieval system, without the prior written permission of the copyright owner. Restricted rights legend: use, duplication, or disclosure by the U.S. government is subject to restrictions set forth in subparagraph (c)(l)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 52.227-7013 and in similar clauses in the FAR and NASA FAR Supplement. The Sun Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering efforts of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a non-exclusive license from Xerox to the Xerox Graphical User Interface, which license also covers Sun’s licensees. This product is protected by one or more of the following U.S. patents: 4,777,485 4,688,190 4,527,232 4,745,407 4,679,014 4,435,792 4,719,569 4,550,368 in addition to foreign patents and applications pending. MS Contents Chapter 1 Introduction to Document Preparation 1 1.1. What Do Text Formatters Do? 1 1.2. What is a Macro Package? 2 1.3. What is a Preprocessor? 2 1.4. Typesetting Jargon 3 1.5. Hints for Typing in Text 4 1.6. Types of Paragraphs 5 Paragraph Illustrations 7 1.7. Quick References o Displaying and Printing Documents 9 Technical Memorandum 10 Section Headings for Documents 1 1 Changing Fonts 1 1 Making a Simple List 12 Multiple Indents for Lists and Outlines Displays Footnotes 14 Keeping Text Together — Keeps 1 5 Double-Column Format 15 Sample Tables ■ 17 Writing Mathematical Equations 19 Registers You Can Change | 21 Chapter 2 Formatting Documents with the -ms Macros 23 - Ill- Contents — Continued 2.1. Changes in the New -ms Macro Package 23 2.2. Displaying and Printing Documents with -ms 23 2.3. What Can Macros Do? 24 2.4. Formatting Requests 24 Paragraphs 25 Standard Paragraph — .PP 25 Left-Block Paragraph — . LP 25 Indented Paragraph — . IP 26 Nested Indentation — . RS and . RE ; 27 Quoted Paragraph — . QP 28 Section Headings — . SH and . NH 29 Cover Sheets and Title Pages — . TL and . AU 30 Running Heads and Feet — LH, ch, RH 31 Custom Headers and Footers — . OH, . EH, . OF, and . EF 32 Multi-Column Formats — . 2C and . MC 33 Footnotes — . FS and . FE 34 Endnotes 35 Displays and Tables — . DS and . DE 35 Keeping Text Together — . KS, . KE and . KF 36 Boxing Words or Lines — . BX and . B1 and . B2 36 Changing Fonts — .1, . B, . R and . UL 37 Changing the Type Size — . LG, . SM and . NL 37 Dates — . DA and . ND 38 Thesis Format Mode — . TM 38 Bibliography — . XP 38 Table of Contents — . XS, . XE, . XA, . PX 39 Defining Quotation Marks 39 Accent Marks 39 2.5. Modifying Default Features 41 Dimensions 41 2.6. Using nrof f and trof f Requests 43 2.7. Using -ms with eqn to Typeset Mathematics 44 2.8. Using -ms with tbl to Format Tables 45 - iv - Contents — Continued 2.9. Register Names 45 2.10. Order of Requests in Input 45 2.11. -ms Request Summary 47 Chapter 3 The -man Macro Package 53 3.1. Parts of a Manual Page 53 3.2. Coding Conventions 54 The Header and Footer Line ( . TH) — Identifying the Page 54 The NAME Line 54 The SYNOPSIS Section 55 The DESCRIPTION Section 55 The OPTIONS Section 56 The FILES Section 57 The SEE ALSO Section 57 The BUGS Section 5 g 3.3. New Features of the -man Macro Package 58 New Number Registers 58 Using the Number Registers 58 3.4. How to Format a Manual Page 59 Chapter 4 Formatting Documents with the -me Macros 61 4.1. Using -me 62 4.2. Basic -me Requests 62 Paragraphs 62 Standard Paragraph — . pp 62 Left Block Paragraphs — . Ip 63 Indented Paragraphs — . ip and . np 63 Paragraph Reference 65 4.3. Headers and Footers — . he and . f o 66 Headers and Footers Reference 66 Double Spacing — .Is 2 67 Page Layout 67 Underlining — .ul 69 Contents — Continued Displays 69 Major Quotes — . ( q and . ) q 69 Lists — . ( 1 and . ) 1 69 Keeps — . (b and . ) b, . ( z and . ) z 70 4.4. Fancy Displays 70 Display Reference 72 Annotations 73 Footnotes — . ( f and . ) f 74 Delayed Text 74 Indexes — . (x . ) x and . xp 74 Annotations Reference 75 4.5. Fancy Features 76 Section Headings — . sh and . uh 76 Section Heading Reference 77 Parts of the Standard Paper 78 Standard Paper Reference 80 Two-Column Output — .2c 82 Column Output Reference 82 Defining Macros — . de 82 Annotations Inside Keeps 82 4.6. Using troff for Phototypesetting 83 Fonts 83 Point Sizes — . s z 85 Fonts and Sizes Reference 85 Quotes — \* (lq and \* (rq 86 4.7. Adjusting Macro Parameters 86 4.8. rof f Support 88 4.9. Preprocessor Support 88 4.10. Predefined Strings 89 4.11. Miscellaneous Requests 89 4.12. Special Characters and Diacritical Marks — . sc 90 4.13. -me Request Summary 90 - vi- Contents — Continued Chapter 5 refer — A Bibliography System 93 5 . 1 . Introduction 93 5 . 2 . Features 93 5 . 3 . Data Entry with addbib 95 5 . 4 . Printing the Bibliography 96 5 . 5 . Citing Papers with refer 97 5 . 6 . refer Command Line Options 9g 5 . 7 . Making an Index 99 5 . 8 . refer Bugs and Some Solutions 100 Blanks at Ends of Lines \ qq Interpolated Strings 101 Interpreting Foreign Surnames 101 Footnote Numbers 10i 5 . 9 . Internal Details of refer 102 5 . 10 . Changing the refer Macros 104 Chapter 6 Formatting Tables with tbl 107 6 . 1 . Running tbl 108 6.2. Input Commands HO Options That Affect the Whole Table HO Key Letters — Format Describing Data Items Ill Optional Features of Key Letters 113 Data to be Formatted in the Table 1 15 Changing the Format of a Table 1 1 6 6 . 3 . Examples H7 6 . 4 . tbl Commands 128 Chapter 7 Typesetting Mathematics with eqn 129 7 . 1 . Displaying Equations — .EQand .EN 130 7 . 2 . Running eqn and neqn 130 7 . 3 . Putting Spaces in the Input Text 1 32 7 . 4 . Producing Spaces in the Output Text 133 7 . 5 . Symbols, Special Names, and Greek Letters 133 - vii- Contents — Continued 7.6. Subscripts and Superscripts — sub and sup 134 7.7. Grouping Equation Parts — { and } 135 7.8. Fractions — over 136 7.9. Square Roots — sqrt 137 7.10. Summation, Integral, and Other Large Operators 138 7.11. Size and Font Changes ... 139 7.12. Diacritical Marks 140 7.13. Quoted Text 141 7.14. Lining Up Equations — mark and lineup 142 7.15. Big Brackets 142 7.16. Piles — pile 143 7.17. Matrices — matrix 144 7.18. Shorthand for In-line Equations — delim 145 7.19. Definitions — define 145 7.20. Tuning the Spacing 147 7.21. Troubleshooting 147 7.22. Precedences and Keywords 148 7.23. Several Examples 152 Chapter 8 Verification Tools 157 8.1. spell 157 8.2. checknr 157 8.3. soelim 157 8.4. deroff 157 8.5. fmt 157 8.6. col 157 8.7. colcrt 157 8.8. ul 157 Index 159 Tables Table 1-1 How to Display and Print Documents 9 Table 1-2 Registers You Can Change 21 Table 2-1 Display Macros 36 Table 2-2 Old Accent Marks 40 Table 2-3 Accent Marks 40 Table 2-4 Units of Measurement in nr of f and tr of f 42 Table 2-5 Summary of -ms Number Registers 43 Table 2-6 Bell Laboratories Macros Deleted From -ms 47 Table 2-7 New -ms Requests 47 Table 2-8 New String Definitions 48 Table 2-9 -ms Macro Request Summary 48 Table 2-10 -ms String Definitions 51 Table 2-1 1 Printing and Displaying Documents 5 1 Table 3-1 Summary of the -man Macro Requests 59 Table 4-1 Special Characters and Diacritical Marks 90 Table 4-2 -me Request Summary 90 Table 6-1 tbl Command Characters and Words 128 Table 7-1 Character Sequence Translation 149 Table 7-2 Greek Letters 150 Table 7-3 eqn Keywords 151 - ix - Figures Figure 2-1 Order of Requests in -ms Documents 46 Figure 4-1 Outline of a Sample Paper 80 -xi- Preface Summary of Contents This manual provides user’s guides and reference information for various docu- ment processing tools. We assume you are familiar with a terminal keyboard and the Sun system. If you are not, see SunOS User’s Guide: Getting Started for information on the basics, like logging in and the Sun file system. If you are not familiar with text editing, read “An Introduction to Text Editing” in the manual Editing Text Files, or “An Introduction to Document Preparation” in this manual. Finally, we assume that you are using a Sun Workstation, although specific ter- minal information is also provided. If you choose to read one of the user’s guides, sit down at your workstation and try the exercises and examples. The reference sections provide additional expla- nations and examples on how to use certain facilities and can be dipped into as necessary. For additional details on Sun system commands and programs, see the SunOS Reference Manual. This manual is divided into three sections: □ Macro Packages □ trof f Preprocessors □ Verification and Reformatting Programs 1 . Introduction to Document Preparation — Describes the basics of text pro- cessing, macros and macro packages, provides a guide to the available tools and several simple examples after which to pattern your papers and docu- ments. Newcomers to the Sun document formatters should start here. In Section I, Macro Packages, the chapters are: 2. Formatting Documents with the -ms Macros — User’s guide and reference information for the -ms macros for formatting papers and documents. Includes new -ms macros. 3. The -man Macro Package — User’s guide and reference information for the -man macros for formatting manual pages ( man pages). Includes new options to the -man macro package. 4. Formatting Documents with the -me Macros — Describes the -me macro package for producing papers and documents. - Xlll - Preface — Continued Conventions Used in This Manual In Section II, trof f Preprocessors, the chapters are: 5. refer — a Bibliography System — Explains how to use the bibliographic citation program refer. Includes information on the auxiliary programs addbib, indxbib, lookbib, and sortbib. 6. Formatting Tables with tbl — A user’s guide and numerous examples to the table processing utility tbl. 7. Typesetting Mathematics with eqn — A user’s guide to the eqn mathemati- cal equation processor. Section III, Verification and Formatting Programs, discusses: 8. checknr — a program to report unmatched pairs of macros and unpaired font or size changes. spell — a program that prints strings of characters to your terminal screen that spell doesn’t have in its dictionary (/usr/dict /words). The reformatting commands fmt, derof f , pti, colcrt, col, ul, and ptx. Throughout this manual we use r A hostname% as the prompt to which you type system commands. Boldface type- writer font indicates commands that you type in exactly as printed on the page of this manual. Regular typewriter font represents what the system prints out to your screen. Typewriter font also specifies Sun system com- mand names (program names) and illustrates source code listings. Italics indi- cates general arguments or parameters that you should replace with a specific word or string. We also occasionally use italics to emphasize important terms. - XIV - 1 Introduction to Document Preparation The document preparation tools nr of f and trof f are standard with SunOS. These programs read files containing the text to be formatted, interspersed with requests specifying how output should look. From this, the programs produce formatted output, nrof f is for typewriter-like printers, while trof f is for typesetters and laser printers. Although they are separate programs, they are compatible: the formatters share a common command language and produce out- put from the same input file. Descriptions here apply to both formatters unless stated otherwise. 1.1. What Do Text You can type in text on lines of any length, and the formatters produce lines of Formatters Do? uniform length in the finished document. This process is called filling, which means that the formatter collects words from what you type as input, and places them on an output line until no more fit within a given line length. The formatter hyphenates words automatically, so a line may end with part of a word to pro- duce the right line length. The formatter also adjusts a line after it has been filled by inserting spaces between words as necessary to align the right margin exactly. Unfilled text: Filled but not adjusted: Filled and adjusted: osun \Sr microsystems 1 Revision A, of 27 March 1990 2 Formatting Documents Given a file of input consisting only of lines of text without any formatting requests, the formatter simply produces a continuous stream of filled, adjusted and hyphenated output. To obtain paragraphs, numbered sections, multiple column layout, tops and bot- toms of pages, and footnotes, for example, require the addition of formatting requests. Requests look like . xx where xx is one or two lower-case letters or a lower-case letter and a digit. Refer to Using nrof f and troff for details. nrof f and troff provide a flexible, sophisticated command language for requesting operations like those just mentioned. They are very flexible, but this flexibility can make them difficult to use because you have to use several requests to produce a simple format. For this reason, it’s a good idea to use a macro package. A macro is simply a “predefined sequence of troff requests or text” which you can use by including just one request in your input file. You can then handle repetitious tasks, such as starting paragraphs and numbering pages, by typing one macro request each time instead of several. For example, some macro requests look like .XX where XX is one or two upper-case letters or an upper-case letter and a digit. (Different macro packages follow various conventions.) A macro package also does a lot of things without the instructions that you have to give nrof f , footnotes and page transitions for example. Some packages set up a page layout style by default, but you can change that style if you wish. Although a macro package offers only a limited subset of the wide range of for- matting possibilities that nrof f provides, it is much easier to use. We explain how to use a macro package in conjunction with nrof f and troff in the sec- tion “Displaying and Printing Documents.” Sample input with both formatting requests, macros in this case, and text looks like: r 'V .LP Now is the time for all good men to come to the aid of their country. .LP V J Refer to the chapter “Formatting Documents with the -ms Macros” and to the “Quick References” in this chapter for more information on macros. A preprocessor is a program that you run your text file through first before pass- ing it on to a text formatter. You can put tables in a document by preprocessing a file with the table-builder called tbl. You can add mathematical equations with their special fonts and symbols with the equation formatters, eqn for troff files and neqn for nrof f files. These preprocessors convert material entered in their specific command languages to straight troff or nrof f input. Those text formatters then produce the tables or mathematical equations for the output. What you type in a file is very much the same as for simple formatting. You include table or equation material in your troff input file along with ordinary 1.3. What is a Preprocessor? 1.2. What is a Macro Package? mirrrvevstftme Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 3 text and add several specific tbl or eqn requests. Refer to the chapters “For- matting Tables with tbl” and “Formatting Mathematics with eqn” for details. 1.4. Typesetting Jargon There are several printer’s measurement terms that are borrowed from traditional typesetting. These terms describe the size of the letters, the distance between lines and paragraphs, how long each line is, where the text is placed on the page, and so on. Point Points specify the size of a letter or type. A point measures about 1/72 of an inch, which means that there are 72 points to the inch. This manual is in 10-point type, for instance. Ems and Ens Ems and ens are measures of distance and are proportional to the type size being used. An em is the distance equal to the number of points in the width of the letter ‘m’ in that point size. For examples, here’s an em in several point sizes followed by an em dash to show why this is a proportional unit of measure. You wouldn’t want a 20-point dash if you are printing the rest of a document in 12-point. Here’s 12-point: m I— I And here’s 20-point: m An en space is one half of an em or about the width of the letter ‘n’. Ens are typi- cally used for indicating indentation. Vertical Spacing Vertical spacing called leading (pronounced ‘led-ding’) is the dis- tance between the bottom of one line and the bottom of the next. This manual has 12-point vertical spacing for example. The rule of thumb is that the spacing be approximately 20% larger than the char- acter size for easy readability. A printer would call the ratio for this manual “ten on twelve.” Paragraph Depth As there is a specification for the distance between lines, there is also a term for the space between paragraphs. This is the paragraph depth. If you are using the standard . PP or . LP macro, for instance, the paragraph depth is whatever one vertical space has been set to. Paragraph Indent This is the amount of space that the first line is indented in relation to the rest of the paragraph. If you use a . PP macro to format a standard indented paragraph, the indent is two em-spaces as shown by the first line in this para- graph. #sun \r microsystems Revision A, of 27 March 1990 4 Formatting Documents Line Length Line length specifies the width of text on a page. Here we use a 5- inch line length. Shortening the line length generally makes text easier to read. Recall that many magazines and newspapers have 2- 1/4 inch columns for quick reading. Page Offset Page offset determines the left margin, that is how far in the text is set from the left edge of the paper. On a normal 8-1/2-by-l 1 letter- size page, the page offset is normally 26/27 of an inch. Indent The indent of text is the distance the text is set in from the page offset. The indent emphasizes the text by setting it off from the rest. 1.5. Hints for Typing in The following provides a few tricks for typing in text and for further online edit- Text ing and formatting. □ A period ( . ) or apostrophe (' ) as the first character on a line indicates that the line contains a formatting request. If you type a line of text beginning with either of these control characters, nr of f tries to interpret them as a request, and the rest of the text on that line disappears. If you have to type a period or an apostrophe as the first character on a line, escape their normal meanings by prefixing them with a backslash and an ampersand. For instance, to display this sample input: — s \S.LP Here is some sample input for a left-blocked paragraph. In order to accurately display -ms or troff requests that begin lines, you have to precede them with the character sequence backslash, ampersand (\S) . This insulates the macro request from the beginning of the line so the dot in the first column isn't seen by troff. \S.LP \s.sp The .LP, .EQ and .EN requests shown here are -ms macro requests and the . sp line is a typical troff request. \S.EQ (1.3) x sup 2 over a sup 2 *=" sqrt (p z sup 2 +qz+r) \&.EN V , □ Following the control character is a one- or two-character name of a format- ting request. As described earlier, nrof f and troff names usually consist of one or two lower-case letters or a lower-case letter and a digit, -ms macro package names usually consist of one or two upper-case letters or one upper-case letter and a digit. For example, . sp is an troff request for a space and . PP is an -ms macro request for an indented paragraph. □ End a line of text with the end of a word along with any trailing punctuation, nrof f inserts a space between whatever ends one line of input text and whatever begins the next. □ Start lines in the input file with something other than a space. A space at the beginning of an input line creates a break at that point in the output and nrof f skips to a new output line, interrupting the process of filling and <#sun microsystems Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 5 adjusting. This is the easiest way to get spaces between paragraphs, but it does not leave much flexibility for changing things later. □ Some requests go on a line by themselves, while others can take one or more additional pieces of information on the same line. These extra pieces of information on the request line are called arguments. Separate them from the request name and from each other by one or more spaces. Sometimes the argument is a piece of text on which the request operates; other times it can be some additional information about what the request is to do. For example, the vertical space request . sp 3 shows a trof f request with one argument. It requests three blank lines. 1.6. Types of Paragraphs There are several types of paragraphs. When should you use one type of para- graph instead of another? Here are a few words about paragraphs, their charac- teristics, and formatting in general. See the “Types of Paragraphs” figure that follows for examples. Use regular indented and block paragraphs for narrative descriptions. It is a matter of style as to which type you choose to use. In general, indented para- graphs remove the need for extra space between paragraphs — the indent tells you where the start of the new paragraph is. Most business communication is done with block paragraphs. If you want to indicate a set of points without any specific order, use a bulleted list. For example: There are many kinds of coffee: • Jamaica Blue Mountain • Colombian ® Java • Mocha • French Roast • Major Dickenson’s Blend When you want to describe a set of things in some order, such as a step-by-step procedure, use a numbered list: To repair television, follow these steps: 1 . Remove screws in rear casing. 2. Carefully slide out picture tube. 3. Gently smash with hammer. Use description lists to explain a set of related or unrelated things, or sometimes to highlight keywords. For instance, Revision A, of 27 March 1990 6 Formatting Documents Options -v Verbose -f filename Take script from filename -o Use old format In typographic parlance, anything that is not part of the “body text” — regular paragraphs and such — is considered a display, and often has to be specially han- dled. Generally a display is “displayed” exactly as you type it or draw it origi- nally, with no interference from the formatter. Displays are used to set off important text, special effects, drawings, or examples, as we do throughout this manual, The following paragraph is a display. Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. Quotations set off quoted material from the rest of the text for emphasis. For example, “. . . in the conversation between Alice and the Queen, we read this piece of homespun philosophy: “A slow sort of country!” said the Queen. “Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!” Through the Looking Glass Lewis Carroll Revision A, of 27 March 1990 8 Formatting Documents Bulleted — . IP \ (bu Numbered — .IP 1 . Lists — .IP "tag" n 1.7. Quick References This section provides some simple templates for producing your documents with the -ms macro package. 1 Remember that for a quick, paginated, and justified document, you can simply type an . LP to start your document, and then type in the text separated by blank lines to produce paragraphs. Throughout the exam- ples, the text file input is displayed in r \ typewriter font like this V while the output is displayed in Times Roman font. 1 Some of the material in this section is derived from A Guide to Preparing Documents with '-ms ' , M.E. Lesk, Bell Laboratories, Murray Hill, New Jersey. Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 9 Use the following to format and print your documents. You can use either nrof f or trof f depending on the output you desire. Use nrof f to either display formatted output on your workstation screen or to print a formatted docu- ment. The default is to display on the standard output, your workstation screen. For easy viewing, pipe your output to more or redirect the output to a file. Using t r o f f or your installation’s equivalent prepares your output for photo- typesetting. T able 1-1 How to Display and Print Documents What You Want to Do How to Do It Display simple text nrof f -options files Display text with tables only tbl files | nroff —options Display text with equations only neqn files | nroff -options Display text with both tables and equations tbl files | neqn | nroff -options Print raw text and requests pr files | lpr -P printer Print text nroff -options files | lpr -P printer Print text with tables only tbl files | nroff —options | lpr -'Sprinter Print text with equations only neqn files | nroff -options | lpr -Sprinter Print text with both tables and equations tbl files | neqn | nroff -options | lpr -Sprinter Phototypeset simple text troff -options files Phototypeset text with tables tbl files | troff -options Phototypeset text with equations eqn files | troff -options Phototypeset text with both tables and equations tbl files | eqn | troff —options Displaying and Printing Documents Revision A, of 27 March 1990 10 Formatting Documents Technical Memorandum Here we provide a sample format for a technical memorandum. Input: / N .DA March 11, 1983 • TL An Analysis of Cucumbers and Pickles .AU A. B. Hacker • AU C. D. Wizard . AI Stanford University Stanford, California .AB This abstract should be short enough to fit on a single page cover sheet. It provides a summary of memorandum contents . • AE • NH Introduction. .PP Now the first paragraph of actual text . . . Last line of text. ■ NH References s , Output: An Analysis of Cucumbers and Pickles A. B. Hacker C. D. Wizard Stanford University Stanford, California ABSTRACT This abstract should be short enough to fit on a single page cover sheet. It provides a summary of memorandum contents. 1. Introduction. Now the first paragraph of actual text ... Last line of text. 2. References Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 1 1 Section Headings for Documents Changing Fonts f \ .NH .SH Introduction . Appendix I .PP .PP text text text text text text 1. Introduction Appendix I text text text text text text V The following table shows the easiest way to change the default roman font to italic or bold. To change the font of a single word, put the word on the same line as the macro request. To change the font in more than one word, put the text on the lines following the macro request. The font will remain changed until another font change request or a macro request causing a break (a paragraph macro, for example) is encountered. Input Output .1 Hello Hello . I Prints this line in italics . Prints this line in italics. . B Goodbye Goodbye .B Prints this line in bold. Prints this line in bold. .R Prints this line in roman . Prints this line in roman. • sun microsystems Revision A, of 27 March 1990 12 Formatting Documents Making a Simple List Use the following template for a simple list. Input: Output: 1 . J. Pencilpusher and X. Hardwired, A New Kind of Set Screw , Proc. IEEE 75 (1976), 23-255. 2. H. Nails and R. Irons, Fasteners for Printed Circuit Boards , Proc. ASME 23 (1974), 23-24. Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 1 3 Multiple Indents for Lists and This template shows how to format lists or outlines. Outlines > This is ordinary text to highlight the results of outline format. .IP 1. First level item. .RS .IP a) Second level . .IP b) Continued here with another second level item, but somewhat longer. • RE .IP 2. Return to previous value of the indenting at this point. .IP 3. Another line . V , Output: This is ordinary text to highlight the results of outline format. 1. First level item. a) Second level. b) Continued here with another second level item, but somewhat longer. 2. Return to previous value of the indenting at this point. 3. Another line. Revision A, of 27 March 1990 14 Formatting Documents Displays A display does not fill or justify the text. It keeps the text together, and sets the lines off from the rest. Input: . hoboken harrison newark roseville avenue grove street east orange brick church orange highland avenue mountain station south orange maplewood millburn short hills summit new providence • DS and now for something completely different .DE murray hill berkeley heights gillette Stirling millington lyons basking ridge bernardsville far hills peapack gladstone V , Output: hoboken harrison newark roseville avenue grove street east orange brick church orange highland avenue moun- tain station south orange maplewood millbum short hills summit new providence and now for something completely different murray hill berkeley heights gillette Stirling millington lyons basking ridge bernardsville far hills peapack glad- stone Display Options Description .DS L left-adjust .DS C line-by-line center .DS B make block, then center Footnotes For automatically-numbered footnotes, put the string \** at the end of the text you want to footnote like this : 2 — you want to footnote like this:\** .FS Here's a numbered footnote. .FE v - To mark footnotes with other symbols, put the symbol as the first argument to . FS and at the end of the text you want to footnote like this:f 2 Here’s a numbered footnote. t You can also use an asterisk (*) ora double dagger t (\ (dd). Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 15 you want to footnote like this:\(dg .FS \(dg You can also use an asterisk (\fL*\fR) or a double dagger f (\fL\ (dd\fR) . .FE v Keeping Text Together — Lines bracketed by the following commands are kept together, and will appear Keeps entirely on one page: .KS .KF lines of text lines of text lines of text not moved lines of text may float lines of text through text lines of text in text lines of text lines of text .KE .KE Double-Column Format Put a . 2C at the beginning of the material you want printed in two columns. To return to one-column format, use . 1C. Note that . 1C breaks to a new page. Input: ' — — — — . .TL The Declaration of Independence . sp 2 . 2C . LP When in the course of human events, it becomes necessary for one people to dissolve the political bonds which have connected them with another, and to assume among the powers of the earth the separate and equal station to which the laws of Nature and of Nature's God entitle them, a decent respect to the opinions of . . . v ^ Output: The Declaration of Independence When in the course of human events, it becomes necessary for one people to dissolve the political bonds which have connected them with another, and to assume among the powers of the earth the separate and equal station to which the laws of Nature and of Nature’s God entitle them, a decent respect to the opinions of . . . A microsystems Revision A, of 27 March 1990 The . 2C macro request only works in this way: When you invoke the . 2C macro somewhere on a page of text, . 2C marks that height on the page and pro- duces a narrow column of text all the way to the bottom of that page. When it reaches the bottom of the page, . 2C resumes the second column at the height it originally marked off when the . 2C macro was invoked. If the second column is only partially filled up with text when the . 1C request is encountered, a page break occurs and the single-column text begins the next page. This means . 2C will do this: I am the voice of today, the herald of tomorrow. I am the leaden army that conquers the world. I am type! Of my in plastic earliest clay in the ancestry dim past by neither Babylonian history builders nor relics foreshadowed remain. me: from The wedge- them, on shaped through the symbols hieroglyphs impressed of the ancient or this: I am the voice of today, the herald of tomorrow. I am the leaden army that conquers die world. I am type! Of my earliest ancestry neither history nor relics re main . The wedge shaped symbols impressed in plastic clay in the dim past by Babylonian builders foreshadowed The important fact to remember about this macro request, is that it has no other way to determine where to begin column two except upon reaching the bottom of the page. If the material you want in two columns occupies less space than the distance to the bottom of the current page, it will only occupy one narrow column if you use the . 2C macro request. This means you cannot do this: microsystems Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 17 I am the voice of today, the herald of tomorrow. I am the leaden army that conquers the world. I am type! Of my earliest ancestry neither history nor relics remain. The wedge-shaped symbols impressed in plastic day in the Sample Tables Two sample table templates follow. Input: r \ . TS box center tab (/) ; IB IB 1 1. Column Header Column Header text /text text/text text /text text/text .TE v J Output: Column Header Column Header text text text text text text text text Revision A, of 27 March 1990 18 Formatting Documents Input: ( .TS allbox tab (/); cB s s c c c n n n . AT&T Common Stock Year /Price/Dividend 1971/ 41-54/$2 . 60 2/41-54/2.70 3/46-55/2.87 4/40-53/3.24 5/45-52/3.40 6/51-59/. 95* . TE * (first quarter only) v. . Output: AT&T Common Stock Year Price Dividend 1971 41-54 $2.60 2 41-54 2.70 3 46-55 2.87 4 40-53 3.24 5 45-52 3.40 6 51-59 .95* * (first quarter only) The meanings of the key-letters describing the alignment of each entry are: tbl Key-Letter Column Described c centered r right-adjusted 1 left-adjusted n numerical a alphabetical s spanned The global table options are center, expand, box, doublebox, allbox, tab ( x ), and linesize (n). A sun microsystems Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 19 Input: f \ . TS center box tab (/) ; cB cB 1 1 . Name /Definition Gamma/$GAMMA (z) = int sub 0 sup inf t sup { z— 1 } e sup -t dt$ Sine/$sin (x) = 1 over 2i ( e sup ix - e sup -ix )$ Error/$roman erf (z) =2 over sqrt pi int sub 0 sup z e sup {-t sup 2} dt$ Bessel/$J sub 0 (z) = 1 over pi int sub 0 sup pi cos ( z sin theta ) d theta$ Zeta/$zeta (s) = sum from k=l to inf k sup -s "( Re's > 1)$ . TE v > Output: Name Definition Gamma r(z)=[ Sine Error erf(z) =4l ^ Bessel 1 71 J o(z)= — f cos(z sin9)d 0 71 «> Zeta «*)=£*■* (Rej>l) *=i Writing Mathematical A displayed equation is marked with an equation number at the right margin by Equations adding an argument to the . EQ line: Input: f .EQ (1.3) x sup 2 over a sup 2 '=' sqrt {p z sup 2 +qz+r} .EN \ J A displayed equation is marked with an equation number at the right margin by adding an argument to the . EQ line: Output: 'pz +qz+r ( 1 . 3 ) microsystems Revision A, of 27 March 1990 20 Formatting Documents Input: ' ■ > •EQ (2.2a) bold V bar sub nu'='left [ pile (a above b above c ) right ] + left [ matrix ( col ( A (11) above . above . ) col ( . above . above . ) col { . above . above A (33) )) right ] cdot left [ pile { alpha above beta above gamma ) right ] .EN V , Output: V v = a b c A(ll) . . a + ■ P . • • A (33). LyJ (2.2a) Input: ( "\ ■EQ I "" 2 . 75i F hat ( chi ) ' mark = ' | del V | sup 2 ■ EN • EQ I " " 2 . 75i lineup =' (left ( (partial V) over (partial x) right ) ) sup 2 + { left ( (partial V) over (partial y) right ) } sup 2 lambda -> inf • EN V 4 Output: F(x)= IW I 2 Input: dV 2 dv dx + . . X— >■»> $ a dot $, $ b dotdot$, $ rho tilde'times'y vec$. Output: a, b, pxf. (with delim $$ on). Revision A, of 27 March 1990 Chapter 1 — Introduction to Document Preparation 2 1 Registers You Can Change Table 1-2 Registers You Can Change Register Controls Default Setting Command to Takes Effect Name Change Next LL Line length of text 6 inches (6i) •nr LL 7.5i paragraph LT Length of titles LL •nr LT 5i page FL Line length of footnotes 5.5i •nr FL LL . FS request FI Footnote indent 5 ens (5n) .nr FI 2n . FS request PS Point size 10 .nr PS 11 paragraph VS Vertical spacing 12 ■nr VS 13 paragraph cw Column width LL * 7/15 ■nr CW 31 . 2C or .MC request GW Intercolumn spacing LL* 1/15 ■nr GW .5i . 2C or . MC request HM Header margir li .nr HM .751 page FM Footer margin li . nr FM .751 page PI Paragraph indent 5 ens (5n) ■nr PI 2n paragraph PD Paragraph depth .3 vertical space (,3v) ■nr PD 0 paragraph QI Left and right indent for quote paragraph ( . QP) 5n •nr QI 8n . QP request DD Vertical distance around displays .5v .nr DD lv . DS request PO Page offset li .nr PO 0.5i page LH Left page header null .ds LH Sun page CH Center page header null ■ds CH Confidential page RH Right page header null •ds RH Software page LF Left page footer null •ds LF Do Not Copy page CF Center page footer page number register (-\nPN-) •ds CF Draft page RF Right page footer null •ds RF % page % Page number 1 • nr % 3 page microsystems Revision A, of 27 March 1990 22 Formatting Documents microsystems Revision A, of 27 March 1990 2 Formatting Documents with the -ms Macros 2.1. Changes in the New - ms Macro Package 2.2. Displaying and Printing Documents with -ms This chapter describes the -ms macro package for preparing documents with nrof f and trof f on the Sun system. 1 The -ms Request Summary at the end of this chapter provides a quick reference for all the -ms macros and for useful displaying and printing commands. If you are acquainted with -ms, there is a quick reference for the new requests and string definitions as well. The differ- ences between the new and the old -ms macro packages are described in the sec- tion entitled “Changes in the New -ms Macro Package.” The section “Display- ing and Printing Documents with -ms” describes how you can produce docu- ments on either your workstation, printer, or phototypesetter without changing the text and formatting request input. The old -ms macro package has been revised, and the new macro package assumes the name -ms. There are some extensions to previous -ms macros and a number of new macros, but all the previously documented -ms macros still work exactly as they did before, and have the same names as before. The new - ms macro package includes several bug fixes, including a problem with the single-column . 1C macro, minor difficulties with boxed text, a break induced by . EQ before initialization, the failure to set tab stops in displays, and several errors in the refer bibliographic citation macros. Macros used only at Bell Laboratories have been removed from the new version. Deleted macros are listed at the beginning of the last section in this chapter. After you have prepared your document with text and -ms formatting requests and stored it in a file, you can display it on your workstation screen or print it with nrof f or trof f with the -ms option to use the -ms macro package. A good way to start is to pipe your file through more for viewing: r \ hostname% nroff -ms filename... | more V / If you forget the -ms option, you get continuous, justified, unpaginated output in which -ms requests are ignored. You can format more than one file on the 1 The material in this chapter is derived from A Revised Version of -ms, B. Tuthill, University of California, Berkeley; Typing Documents on the UNIX System: Using the -ms Macros with tr off and nrof f, M.E. Lesk, Bell Laboratories, Murray Hill, New Jersey; and Document Formatting on UNIX: Using the -ms Macros, Joel Kies, University of California, Berkeley. €#sun V microsystems 23 Revision A, of 27 March 1990 24 Formatting Documents command line at a time, in which case nrof f simply processes all of them in the order they appear, as if they were one file. There are other options to use with nrof f and trof f ; see the SunOS Reference Manual for details. You can get preview and final output of various sorts with the following com- mands. To send nrof f output to the line printer, type: — \ hostname% nroff -ms filename | lpr k- -P printer To produce a file with tables, use: r hostname% tbl filename | nroff -ms V \ lpr -printer y To produce a file with equations, type: hostname% neqn filename | nroff -ms | lpr -printer \ V. j To produce a file with tables and equations, use the following order: hostname! tbl filename | neqn | nroff -ms | lpr -printer K To print your document with trof f , use: hostname! troff -ms filename | lpr -t -printer "N See lpr(l) in the SunOS Reference Manual for details on printing. 2.3. What Can Macros Do? Macros can help you produce paragraphs, lists, sections (optionally with automatic numbering), page titles, footnotes, equations, tables, two-column for- mat, a table of contents, endnotes, running heads and feet, and cover pages for papers. As with other formatting utilities such as nrof f and trof f, you prepare text interspersed with formatting requests. However, the macro package, which itself is written in trof f commands, provides higher-level commands than those provided with the basic trof f program. In other words, you can do a lot more with just one macro than with one trof f request. 2.4. Formatting Requests An -ms request usually consists of one or two upper-case characters, and usually in the form .XX. The easiest way to produce simple formatted text is to put a . LP request on a line by itself at the beginning of the document. Add your text, on the following lines, leaving just a blank line to separate paragraphs. The . LP request produces a left-blocked paragraph, as we used throughout this chapter. Your output will have paragraphs and be paginated with right and left-justified margins. When you use a macro package, you type in text as you normally do and inter- sperse it with formatting requests. For example, instead of spacing in with the space bar or typing a tab to indent paragraphs, put a . PP request on a line by A microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 25 Paragraphs Startdard Paragraph — Left-Block Paragraph itself before each paragraph. When formatted, this indents the first line of the following paragraph. Note: You cannot just begin a document with a line of text. You must include an -ms request before any text input. When in doubt, use . LP to properly ini- tialize the file, although any of the requests .PP, .LP, .TL, .SH, .NH is good enough. See the section “Cover Sheets and Title Pages” later in this chapter for the correct arrangement of requests at the start of a document. You can produce several different kinds of paragraphs with the -ms macro pack- age: standard, left-block, indented, labeled, and quoted. . PP To get an ordinary paragraph, use the . PP request, followed on subsequent lines by the text of the paragraph. For example, you type: f ^ .pp Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. to produce: Tom appeared on the sidewalk with a bucket of whitewash and a long- handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. . LP You can also produce a left-block paragraph, like those in this manual, with . LP. The first line is not indented as it is with the . PP request. For example, you type: \ .LP Tom appeared . . . J to produce: Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. There are default values for the vertical spacing before paragraphs and for the width of the indentation. To change the paragraph spacing, see the section “Modifying Default Features.” wsun microsystems Revision A, of 27 March 1990 Indented Paragraph — . ip Another kind of paragraph is the indented paragraph, produced by the .IP request. These paragraphs can have hanging numbers or labels. For example: produces [1] Text for first paragraph, typed normally for as long as you would like on as many lines as needed. [2] Text for second paragraph, ... A series of indented paragraphs must be followed by an ordinary paragraph beginning with . PP or . LP, depending on whether you wish indenting or not. Here we used the . LP request. More sophisticated uses of . IP are also possible. If the label is omitted, for example, you get a plain block indent: which produces Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy set- tled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. If a non-standard amount of indenting is required, specify it after the label in character positions. It remains in effect until the next . PP or . LP. Thus, the general form of the .IP request contains two additional fields: the label and the indenting length. For example, Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 27 Nested Indentation .RE — .IP "Example one:" 15 Notice the longer label, requiring larger indenting for these paragraphs. .IP "Example two:" And so forth. . LP produces this: Example one: Notice the longer label, requiring larger indenting for these paragraphs. Example two: And so forth. Notice that you must enclose the label in double quote marks because it contains a space; otherwise, the space signifies the end of the argument. The indentation request above is in the number of ens, a unit of dimension used in typesetting. An en is approximately the width of a lowercase ‘n’ in the particular point size you are using. The . IP macro adjusts properly by causing a break to the next line if you type in a label longer than the space you allowed for. For example, if you have a very long label and have allowed 10 en-spaces for it, your input looks like: / \ . IP "A very, very. long and verbose label" 10 And now here' s the text that you want . And now here' s the text that you want . And now here's the text that you want . And now here' s the text that you want . And V now here' s the text that you want . J And your output is adjusted accordingly with a break between the label and the text body: A very, very, long and verbose label And now here’s the text that you want. And now here’s the text that you want. And now here’s the text that you want. And now here’s the text that you want. And now here’s the text that you want. . RS and It is also possible to produce multiple (or relative) nested indents; the . RS request indicates that the next . IP starts its indentation from the current indenta- tion level. Each . RE undoes one level of indenting, so you should balance . RS and . RE requests. Think of the . RS request as ‘move right’ and the . RE request as ‘move left’. As an example: Revision A, of 27 March 1990 28 Formatting Documents - .IP I. South Bay Area Restaurants .RS .IP A. Palo Alto .RS .IP 1. La Terrasse .RE .IP B. Mountain View .RS .IP 1. Grand China .RE .IP C. Menlo Park .RS .IP 1. Late for the Train .IP 2. Flea Street Cafe .RE .RE .LP V. results in: I. South Bay Area Restaurants A. Palo Alto 1. LaTerrasse B. Mountain View 1. Grand China C. Menlo Park 1. Late for the Train 2. Flea Street Cafe Note the two . RE requests in a row at the end of the list. Remember that you need one end for each start. Quoted Paragraph — . QP All of the variations on . LP leave the right margin untouched. Sometimes, you need a paragraph indented on both right and left sides. To set off a quotation as such, use: Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 29 Section Headings .NH .QP Precede each paragraph that you want offset as a quotation with a .QP. This produces a paragraph like this. Notice that the right edge is also indented from the right margin, s. . to produce Precede each paragraph that you want offset as a quotation with a / .QP. This produces a paragraph like this. Notice that the right edge is also indented from the right margin. . SH and There are two varieties of section headings, unnumbered with . SH and numbered with . NH. In either case, type the text of the section heading on one or more lines following the request. End the section heading by typing a subsequent paragraph request or another section heading request. When printed, one line of vertical space precedes the heading, which begins at the left margin, nrof f offsets the heading with blank lines, while trof f sets it in boldface type. . NH section headings are numbered automatically. The macro takes an argument number representing the level-number of the heading, up to 5. A third-level sec- tion number is one like ‘1.2.1*. The macro adds one to the section number at the requested level, as shown in the following example: / \ .NH Bay Area Recreation .NH 2 Beaches .NH 3 San Gregorio .NH 3 Half Moon Bay .NH 2 Parks .NH 3 Wunderlich .NH 3 Los Trancos .NH 2 Amusement Parks .NH 3 Marine World/Africa USA k generates: Revision A, of 27 March 1990 30 Formatting Documents Cover Sheets and Title Pages — . TL and . AU 2. Bay Area Recreation 2.1 Beaches 2.1.1 San Gregorio 2.1.2 Half Moon Bay 2.2 Parks 2.2.1 Wunderlich 2.2.2 LosTrancos 2.3 Amusement Parks 2.3.1 Marine World/Africa USA . NH without a level-number means the same thing as . NH 1, and . NH 0 cancels the numbering sequence in effect and produces a section heading numbered 1. -ms provides a group of macros to format items that typically appear on the cover sheet or title page of a formally laid-out paper. You can use them selec- tively, but if you use several, you must put them in the order shown below, nor- mally at or near the beginning of the input file. The first line of a document signals the general format of the first page. In partic- ular, if it is . RP (released paper), a cover sheet with title and abstract is prepared. The default format is useful for scanning drafts. #sun microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 3 1 Sample input is: (See Order of Requests in Input for a quick example of this scheme.) If the . RP request precedes . TL, the title, author, and abstract material are printed separately on a cover sheet. The title and author information (not the abstract) is then repeated automatically on page one (the title page) of the paper, without your having to type it again. If you do not include an . RP request, all of this material appears on page one, followed on the same page by the main text of the paper. To omit some of the standard headings (such as no abstract, or no author’s insti- tution), just omit the corresponding fields and command lines. To suppress the word ABSTRACT type . AB no rather than . AB. You can intersperse several . AU and . AI lines to format for multiple authors. These macros are optional; you may begin a paper simply with a section heading or paragraph request. When you do precede the main text with cover sheet and title page material, include a paragraph or section heading between the last title page request and the beginning of the main text. Don’t forget that some -ms request must precede any input text. Running Heads and Feet LH, CH, RH This prints the character string The -ms macros, by default, print a page heading containing a page number (if greater than 1). You can make minor adjustments to the page headings and foot- ings by redefining the strings LH, CH, and RH which are the left, center and right portions of the page headings, respectively; and the strings LF, CF, and RF, which are the left, center and right portions of the page footer. For nrof f out- put, there are two default values: CH is the current page number surrounded on either side by hyphens, and CF contains the current date as supplied by the com- puter. For trof f CH also contains the page number, but CF is empty. The other four registers are empty by default for both nrof f and trof f . You can use the . ds request to assign a value to a string register. For example: Revision A, of 27 March 1990 32 Formatting Documents Draft Only — Do Not Distribute at the bottom right of every page. You do not need to enclose the string in dou- ble quote marks. To remove the contents of a string register, simply redefine it as empty. For instance, to clear string register CH, and make the center header blank on the following pages, use the request: In a string definition, *%’ is a special symbol referring to nrof f ’s automatic page counter. If you want hyphens on either side of the page number, place them on either side of the in the command, that is: r \ .ds RH -%- V Remember that putting the page number in the right header as shown above does not remove it from the default CH; you still have to clear out CH. If you want requests that set the values of string and number registers to take effect on the first page of output, put them at or near the beginning of the input file, before the initializing macro, which in turn must precede the first line of text. Among other functions, the initializing macro causes a ‘pseudo page break’ onto page one of the paper, including the top-of-page processing for that page. Be sure to put requests that change the value of the PO (page offset), HM (top or head margin), and FM (bottom or foot margin) number registers and the page header string registers before the transition onto the page where they are to take effect. For more complex formats, you can redefine the macros PT (page top) and BT (page bottom), which are invoked respectively at the top and bottom of each page. The margins (taken from registers HM and FM for the top and bottom margin respectively) are normally 1 inch; the page header/footer are in the mid- dle of that space. If you redefine these macros, be careful not to change parame- ters such as point size or font without resetting them to default values. Custom Headers and Footers You can also produce custom headers and footers that are different on even and — . OH, . EH, . OF, and . EF odd pages. The . OH and . EH macros define odd and even headers, while . OF and . EF define odd and even footers. Arguments to these four macros are specified as with the nrof f . tl, that is, there are three fields (left, center and right), each separated by a single apostrophe. For example, to get odd-page headers with the chapter name followed by the page number and the reverse on even pages, use: ^sun V microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 33 Multi-Column Formats — . 2 C and .MC .OH 'For Whom the Bell Tolls' 'Page %' .EH 'Page %' 'For Whom the Bell Tolls' v Note that it is an error to have an apostrophe in the header text; if you need an apostrophe, use a backslash and apostrophe (') or a delimiter other than apos- trophe around the left, center, and right portions of the title. You can use any character as a delimiter, provided it doesn’t appear elsewhere in the argument to .OH, .EH, .OF, or .EF. You can use the . P 1 (dot-P-one) macro to print the header on page 1 . If you want roman numeral page numbering, use an . af PN i request. If you place the request . 2C in your document, the document will be printed in double column format beginning at that point. This is often desirable on the typesetter. Each column will have a width 7/15 that of the text line length in single-column format, and a gutter (the space between the columns) of 1/15 of the full line length. Remember that when you use the two-column . 2C request, either pipe the nrof f output through col or make the first line of the input . pi /usr/bin/col. The . 2C request is actually a special case of the . MC request that produces for- mats of more than two spaces: — .MC [column width [gutter width ] ] V This formats output in as many columns of column width as will fit across the page with a gap of gutter width. You can specify the column width in any unit of scale, but if you do not specify a unit, the setting defaults to ens. . MC without any column width is the same thing as . 2C. For example: t — s ■ MC Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. v , To return to single-column output, use . 1C. Switching from double to single- column always causes a skip to a new page. microsystems Revision A, of 27 March 1990 34 Formatting Documents Footnotes — . FS and . FE Material placed between lines with the commands . FS (footnote start) and . FE (footnote end) is collected, remembered, and placed at the bottom of the current page.* The formatting of the footnote is: r "N ...at the bottom of the current page.* .FS * Like this. .FE ^ V By default, footnotes are 1 l/12th the length of normal text, but you can modify this by changing the FL register (see the “Modifying Default Features” section). When typeset, footnotes appear in smaller size type. Because the macros only save a passage of text for printing at the bottom of the page, you have to mark the footnote reference in some way, both in the text preceding the footnote and again as part of the footnote text. We use a simple asterisk, but you can use anything you want. You can also produce automatically-numbered footnotes. Footnote numbers are printed by a predefined string (\**), which you invoke separately from . FS and . FE. Each time this string is used, it increases the footnote number by one, whether or not you use . FS and . FE in your text. Footnote numbers are super- scripted on the phototypesetter and on daisy-wheel terminals, but on low- resolution devices (such as the line printer and a treminal), they are bracketed. If you use \ ** to indicate numbered footnotes, the . FS macro automatically includes the footnote number at the bottom of the page. This footnote, for exam- ple, was produced as follows: 2 . This footnote, for example, was produced as follows :\** .FS If you never use the . . . .FE V If you are using \ ** to number footnotes, but want a footnote of the same style marked with an asterisk or dagger, give that mark as the first argument to . FS:f r \ give that mark as the first argument to .FS:\(dg .FS \(dg In the footnote, the dagger . . . .FE - . Footnote numbering is temporarily suspended, because the \ ** string is not used. Instead of a dagger, you could use an asterisk * or double dagger $, represented as \ ( dd. * Like this. 2 If you never use the \ * * string, no footnote numbers will appear anywhere in the text, including down here. The output footnotes will look exactly like footnotes produced with -mos, the old -ms macro package. t In the footnote, the dagger will appear where the footnote number would otherwise appear, as shown here. Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 35 Endnotes Displays and Tables and . DE If you want to produce endnotes rather than footnotes, put the references in a file of their own. This is similar to what you would do if you were typing the paper on a conventional typewriter. Note that you can use automatic footnote number- ing without actually having the . FS and . FE pairs in your text. If you place footnotes in a separate file, you can use . IP macros with V* as a hanging tag; this gives you numbers at the left-hand margin. With some styles of endnotes, you would want to use . PP rather than . IP macros, and specify \** before the reference begins. . DS To prepare displays of lines, such as tables, in which the lines should not be re- arranged or broken between pages, enclose them in the requests . DS and . DE: ( \ .DS lines, like the examples here, are placed between .DS and .DE macros .DE \ which produces: lines, like the examples here, are placed between .DS and .DE macros By default, lines between . DS and . DE are indented from the left margin. If you don’t want the indentation, use . DS L to begin and . DE to produce a left-justified display: to get something like this You can also center lines with the . DS C and . DE requests: This is an example of a centered display. Note that each line is centered individually. A plain . DS is equivalent to . DS I, which indents and left-adjusts. An extra argument to the . DS I or . DS request is taken as an amount to indent. For example, .DS I 3or.DS 3 begins a display to be indented 3 ens from the margin. There is a variant . DS B that makes the display into a left-adjusted block of text, and then centers that entire block. Normally a display is kept together on one page. If you wish to have a long display which may be split across page boundaries, use .CD, . LD, and . BD in place of the requests .DS C, .DS L, and .DS B respectively. Use . id for either a plain . DS or . DS I. You can also specify the amount of indentation with the .ID macro. Use the following table as a quick reference: Revision A, of 27 March 1990 Asun microsystems 36 Formatting Documents Table 2-1 Keeping Text Together — ■ KS, .KE and .KF Boxing Words or Lines — .BX and . B1 and .B2 Display Macros Macro with Keep Macro without Keep .DS I .ID .DS L .LD .DS C • CD .DS B .BD .DS .ID Note: It is tempting to assume that . DS R will right-adjust lines, but it doesn’t. If you wish to keep a table or other block of lines together on a page, there are ‘keep - release’ requests. If a block of lines preceded by . KS and followed by . KE does not fit on the remainder of the current page, it will begin on a new page. There is also a ‘keep floating’ request. If the block to be kept together is preceded by . KF instead of . KS and does not fit on the current page, it will be moved down through the text to the top of the next page, nr of f fills in the current page with the ordinary text that follows the keep in the input file to avoid leaving blank space at the bottom of the page preceding the keep. Thus, no large blank space will be introduced in the document. In multi-column output, the keep macros attempt to place all the kept material in the same column. If the material enclosed in a keep requires more than one page, or more than a column in multi-column format, it will start on a new page or column and simply run over onto the following page or column. To draw rectangular boxes around words, use the request r .BX word l to print Iword las shown. You can box longer pieces of text by enclosing them with . B1 and .B2.: . B1 Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. . B2 This produces: Tom appeared on the sidewalk with a bucket of whitewash and a long-handled brush. He surveyed the fence, and all gladness left him and a deep melancholy settled down upon his spirit. Thirty yards of board fence nine feet high. Life to him seemed hollow, and existence but a burden. #sun microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 37 Changing Fonts — . I, . B, . R To get italics on the typesetter or reverse display on the workstation, say: and . UL as was done for these three words. The . R request restores the normal (usually Roman) font. If only one word is to be italicized, you can put it on the line with the . I request: and in this case you do not need to use an . R to restore the previous font. You can print boldface font by As with . I, you can place a single word in boldface font by putting it on the same line as the . B request. Also, when . I or . B is used with a word as an argument, it can take as a second argument any trailing punctuation to be printed immediately after the word but set in normal typeface. For example: prints word) that is, the word in boldface and the closing parenthesis in normal Roman directly adjacent to the word. If you want actual underlining as opposed to italicizing on the typesetter, use the request to underline a word . There is no way to underline multiple words on the typesetter. You can specify a few size changes in t rof f output with the requests . LG (make larger), . SM (make smaller), and . NL (return to normal size). The size change is two points (see the “Dimensions” section for a discussion of point size); you can repeat the requests for increased effect (here one . NL canceled two . SM requests). These requests are primarily useful for temporary size changes Changing the Type Size — . LG, . SM and . NL Revision A, of 27 March 1990 38 Formatting Documents Dates — .DA and .ND Thesis Format Mode — Bibliography — . XP for a small number of words. They do not affect vertical spacing of lines of text. See the section on “Modifying Default Features” for other techniques for chang- ing the type size and vertical spacing of longer passages. When you use -ms, nr of f prints the date at the bottom of each page, but trof f does not. Both nrof f and trof f print it on the cover sheet if you have requested one with . RP. To make trof f print the date as the center page footer, say . DA (date). To suppress the date, say . ND (no date). To lie about the date, type .DA July 4, 1 7 7 6 , which puts the specified date at the bottom of each page. The request: r ... » .ND September 16, 1959 V in . RP format places the specified date on the cover sheet and nowhere else. Place either . ND or . DA before the . RP Notice this is one instance that you do not need to put double quote marks around the arguments. . TM To format a paper as a thesis, use the . TM macro (thesis mode). It is much like the . th macro in the -me macro package. It puts page numbers in the upper right-hand comer, numbers the first page, suppresses the date, and doublespaces everything except quotes, displays, and keeps. Use it at the top of each file mak- ing up your thesis. Calling . TM defines the . CT macro for chapter titles, which skips to a new page and moves the page number to the center footer. You can use the . P 1 (P one) macro even without thesis mode to print the header on page one, which is suppressed except in thesis mode. If you want roman numeral page numbering, use an . af PN i request. To format bibliography entries, use the . XP macro, which stands for exdented paragraph. It exdents the first line of the paragraph by \n(PI units, usually 5n, the same as the indent for the first line of a . PP. An example of exdented para- graphs is: • XP Lumley, Lyle S., \fISex in Crustaceans: Shell Fish Habits, \fP\" Harbinger Press, Tampa Bay and San Diego, October 1979. 243 pages. The pioneering work in this field. • XP Leffadinger, Harry A., "Mollusk Mating Season: 52 Weeks, or All Year?" in \fIActa Biologica, \fP\“ vol. 42, no. 11, November 1980. A provocative thesis, but the conclusions are wrong. V which produces: Lumley, Lyle S., Sex in Crustaceans: Shell Fish Habits, Harbinger Press, Tampa Bay and San Diego, October 1979. 243 pages. The pioneering work in this field. Leffadinger, Harry A., “Mollusk Mating Season: 52 Weeks, or All Year?” in Acta Biologica, vol. 42, no. 11, November 1980. A provocative thesis, but the conclusions are wrong. microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 39 You do have to italicize the book and journal titles and quote the title of the jour- nal article. You can change the indentation and exdentation by setting the value of number register PI. Table of Contents — . xs, There are four macros that produce a table of contents. Enclose table of contents . XE, . XA, . PX entries in . XS and . XE pairs, with optional . XA macros for additional entries. Arguments to . XS and . XA specify the page number, to be printed at the right. A final . PX macro prints out the table of contents. A sample of typical input and output text is: .XS ii Introduction .XA 1 Chapter 1: Review of the Literature .XA 23 Chapter 2: Experimental Evidence .XE .PX . Table of Contents Introduction ii Chapter 1: Review of the Literature 1 Chapter 2: Experimental Evidence 23 You can also use the . xs and . XE pairs in the text, after a section header for instance, in which case page numbers are supplied automatically. However, most documents that require a table of contents are too long to produce in one run, which is necessary if this method is to work. It is recommended that you make the table of contents after finishing your document. To print out the table of contents, use the . PX macro or nothing will happen. Defining Quotation Marks To produce quotation marks and dashes that format correctly with both nrof f and trof f , there are some string definitions for each of the formatting pro- grams. The \*— string yields two hyphens in nrof f , and produces an em-dash — like this one in trof f . The \*Q and \*U strings produce “ and ” in trof f , but " in nroff. Accent Marks To simplify typing certain foreign words, the -ms macro package defines strings representing common accent marks. There are a large number of optional foreign accent marks defined by the -ms macros. All the accent marks available in -mos are present, and they all work just as they always did. For the old accent marks, type the string before the letter over which the mark is to appear. For example, to print ‘telephone with the old macros, you type: t \ * ' el \ * ' ephone k Revision A, of 27 March 1990 40 Formatting Documents Table 2-2 Table 2-3 Unlike the old accent marks, the new accent strings should be placed after the letter being accented. Place . AM (accent mark) at the beginning of your docu- ment, and type the accent strings after the letter being accented. A list of both sets of diacritical marks and examples of what they look like follows. Note: Do not use the tbl macros . TS and . TE with any of the accent marks as the marks do not line up correctly. Old Accent Marks Accent Name Input Output acute \* 'e 6 grave \*'e t umlaut \* : u 11 circumflex \*~e d tilde \*-a a hacek \*Cr r cedilla \*,c Q Accent Marks Accent Name Input Output acute e\* ' d grave e\*' d circumflex o\*~ 6 cedilla c\*, Q tilde n\*~ n question \*? i exclamation \* ! i umlaut u\* : ii digraphes \*8 P hacek c\*v c macron a\* a o-slash o\*/ yogh kni\*3t kni 3 t angstrom a\*o a Thom \* (Th p thorn \* (th p Eth \* (D- D eth \* (d- a hooked o \*q 9 ae ligature \* (ae ae AE ligature \* (Ae /£ oe ligature \* (oe oe OE ligature \* (Oe (E If you want to use these new diacritical marks, don’t forget the . AM at the top of your file. Without it, some of these marks will not print at all, and others will be placed on the wrong letter. •sun microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 4 1 2.5. Modifying Default Features Dimensions The -ms macro package supplies a standard page layout style. The text line has a default length of six inches; the indentation of the first line of a paragraph is five ens; the page number is printed at the top center of every page after page one; and so on for standard papers. You can alter many of these default features by changing the values that control them. The computer memory locations where these values are stored are called number registers and string registers. Number and string registers have names like those of requests, one or two characters long. For instance, the value of the line length is stored in a number register named LL. Unless you give a request to change the value stored in register LL, it will contain the standard or default value assigned to it by -ms. The “Summary of -ms Number Registers” table lists the number registers you can change along with their default values. To change a dimension like the line length from its default value, reset the asso- ciated number register with the trof f request . nr (number register): The first argument, LL, is the name of a number register, and the second, 5i is the value being assigned to it. In the case above, the line length is adjusted from the default six inches to five inches. As another example, consider: t .nr PS 9 v J which makes the default point size 9 point. The value may be expressed as an integer or may contain a decimal fraction. When setting the value of a number register, it is almost always necessary to include a unit of scale immediately after the value. In the example above, the ‘i’ as the unit of scale lets trof f know you mean five inches and not five of some other unit of distance. But the point size (PS) and vertical spacing (VS) registers are exceptions to this rule; ordinarily they should be assigned a value as a number of points without indicating the unit of scale. For example, to set the vertical spacing to 24 points, or one-third of an inch (double-spacing), use the request: .. .nr VS 24 In the unusual case where you want to set the vertical spacing to more than half an inch (more than 36 points), include a unit of scale in setting the VS register. The “Units of Measurement in nr of f and trof f ” table explains the units of measurement. microsystems Revision A, of 27 March 1990 42 Formatting Documents Table 2-4 U nits of Measurement in nr o f f and t r o f f Unit Abbr nrof f trof f point P 1/72 inch 1/72 inch pica P 1/6 inch 1/6 inch em m width of one character distance equal to number of points in the current typesize en n width of one character half an em vertical space V amount of space in which each line of text is set, measured baseline to baseline same inch i inch inch centimeter c centimeter centimeter machine unit u 1/240 inch 1/432 inch The units point, pica, em, and en are units of measurement used by tradition in typesetting. The vertical space unit also corresponds to the typesetting term leading, which refers to the distance from the baseline of one line of type to the baseline of the next. Em and en are particularly interesting in that they are pro- portional to the type size currently in use (normally expressed as a number of points). An em is the distance equal to the number of points in the type size (roughly the width of the letter ‘m’ in that point size), while an en is half that (about the width of the letter ‘n’). These units are convenient for specifying dimensions such as indentation. In trof f , em and en have their traditional meanings, that is one em of distance is equal to two ens. For nr of f , on the other hand, em and en both mean the same quantity of distance, the width of one typewritten character. The machine unit is a special unit of dimension used by nrof f and trof f internally. This is the unit to which the programs convert almost all dimensions when storing them in memory, and is included here primarily for completeness. In using the features of -ms, it is sufficient to know that such a unit of measure exists. Note that a change to a number register such as LL does not immediately change the related dimension at that point in the output. Instead, in the case of the line length for example, the change takes place at the beginning of the next para- graph, where -ms resets various dimensions to the current values of the related number registers. If you need the effect immediately, use the normal trof f command in addition to changing the number register. For example, to control the vertical spacing immediately, use: r N .VS V J This takes effect at the place where it occurs in your input file. Since it does not change the VS register, however, its effect lasts only until the beginning of the Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 43 next paragraph. As a general rule, to make a permanent change, or one that will last for several paragraphs until you want to change it again, alter the value of the -ms register. If the change must happen immediately, somewhere other than the point shown in the table, use the trof f request. If you want the change to be both immediate and lasting, do both. T able 2-5 Summary of -ms Number Registers Register Controls Takes Effect Default PS point size next para. 10 VS line spacing next para. 12 pts LL line length next para. 6" LT title length next para. 6" PD para, spacing next para. 0.3 VS PI para, indent next para. 5 ens FL footnote length next ,FS 11/12 LL CW column width next .2C 7/15 LL GW intercolumn gap next . 2C 1/15 LL PO page offset next page 26/27" HM top margin next page 1" FM bottom margin next page 1" You may also alter the strings and which are the left, center, and right headings respectively; and similarly and which are strings in the page footer. Use the trof f . ds (define string) request to alter the string registers, as you use the . nr request for number registers. The page number on output is taken from register to permit changing its output style. For more complicated headers and footers, you can redefine the macros and as explained earlier. See the “Register Names” section for a full list. 2.6. Usingnroff and You can use a small subset of the trof f requests to supplement the -ms macro troff Requests package. Use . nr and . ds requests to manipulate the -ms number and string registers as described in the “Modifying Default Features” section. You can also freely use the other following requests in a file for processing with the -ms macro package. They all work with both typesetter and workstation or terminal output. .ad b Adjust both margins. This is the default adjust mode. .bp Begin new page. .br ‘Break’ line; start a new output line whether or not the current one has been completely filled with text. . ce n Center the following n input text lines individually in the output. If n is omitted, only the next (one) line of text is centered. .dsXX Define string register named XX. Asun microsystems Revision A, of 27 March 1990 44 Formatting Documents . na Turn off adjusting of right margins to produce ragged right. . n r XX Define number register named XX. . sp n Insert n blank lines. If n is omitted, one blank line is produced (the current value of the unit v). You can attach a unit of dimension to n to specify the quantity in units other than a number of blank lines. Note: The macro package executes sequences of trof f requests on its own, in a manner invisible to you. By inserting your own t rof f requests, you run the risk of introducing errors. The most likely result is simply for your trof f requests to be ignored, but in some cases the results can include fatal trof f errors and garbled typesetter output. As a simple example, if you try to produce a centered heading with the input: r \ . ce .SH Text of section heading V you will discover that the heading comes out left- adjusted; the . SH macro, appearing after the . ce request overrules it and forces left-adjusting. But con- sider the following sequence: / A .sp . ce .B Line of text V J which successfully produces a centered, boldface heading preceded by one line of vertical space. There are lots of tricks like this, so be careful. To learn more about trof f see the chapter on “Formatting Documents with nrof f and trof f .” 2.7. Using -ms with eqn to If you have to print Greek letters or mathematical equations, see the chapter Typeset Mathematics “Typesetting Mathematics with eqn” for equation setting. To aid eqn users, - ms provides definitions of . EQ and . EN which normally center the equation and set it off slightly. An argument to . EQ is taken to be an equation number and placed in the right margin near the equation. In addition, there are three special arguments to . EQ: the letters C, I, and L indicate centered (default), indented, and left adjusted equations, respectively. If there is both a format argument and an equation number, give the format argument first, as in r A .EQ L (1.3a) V for a left-adjusted equation numbered (1.3a). #sen Xr microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 45 2.8. Using -ms with tbl to Similar to the eqn macros are the macros . TS and . TE defined to separate Format Tables tables from text with a little space (see the chapter “Formatting Tables with tbl”). A very long table with a heading may be broken across pages by begin- ning it with . TS H instead of . TS, and placing the line . TH in the table data after the heading. If the table has no heading repeated from page to page, just use the ordinary . TS and . TE macros. 2.9. Register Names The -ms macro package uses the following register names internally. Indepen- dent use of these names in (or as) your own macros may produce incorrect out- put. Note that there are no lower case letters in any -ms internal name. Number Registers Used in -ms * DW GW HM IQ LL NA OJ PO T. TV #T EF HI HT IR LT NC PD PQ TB VS T. FC H2 IF IT MF ND PE PS TC WF IT FL H3 IK KI MM NF PF PX TD YE AV FM H4 IM LI MN NS PI RO TN YY CW FP H5 IP LE MO 01 PN ST TQ ZN String Registers Used in -ms f A5 CB DW EZ I KF MR R1 RT TL \ AB CC DY FA 11 KQ ND R2 SO TM /V AE CD El FE 12 KS NH R3 SI TQ AI CF E2 FJ 13 LB NL R4 S2 TS * AU CH E3 FK 14 LD NP R5 SG TT » B CM E4 FN 15 LG OD RC SH UL 1C BG CS E5 FO ID LP OK RE SM WB 2C BT CT EE FQ IE ME PP RF SN WH AI C D EL FS IM MF PT RH SY WT A2 Cl DA EM FV IP MH PY RP TA XD A3 C2 DE EN FY IZ MN QF RQ TE XF A4 CA DS EQ HO KE MO R RS TH XK 2.10. Order of Requests in The following diagram provides a quick reference for how to order macro Input requests when using the -ms macro package to format documents. The central arrow indicates that the minimum formatting requests you need with -ms are the paragraph macros. These initialize certain quantities and are necessary to obtain predictable results when you use other macros. The double-edged arrows indicate optional requests. The single-edged arrows indicate dependencies. For example, if you use a . AB request, you need a . AE request. If you use a . AU request, you don’t need a . AI request, but if you use a . AI request, you have to use a . AU request first. The locations of the side arrows relative to the other requests indicate the relative locations of the requests in the document source. wsun \r microsystems Revision A, of 27 March 1990 46 Formatting Documents Chapter 2 — Formatting Documents with the -ms Macros 47 2.11. -ms Request This section includes tables of the old Bell Laboratories that have been removed Summary from the new -ms package, of new -ms requests and string definitions, and of useful printing and displaying commands. It also includes a complete -ms request and string summary for easy reference. Table 2-6 Bell Laboratories Macros Deleted From -ms Macro Request Explanation .CS Cover sheet .EG BTL Engineer’s Notes .HO Bell Labs, Holmdel, N.J. .IH Bell Labs, Naperville, 111. .IM BTL internal memo .MF BTL file memo .MH Bell Labs, Murray Hill, N.J. .MR BTL record memo .ND BTL date .OK BTL keywords for tech memo .PY Bell Labs, Piscataway, N.J. .SG Signatures for tech memo .TM BTL technical memo .TR BTL report format .WH Bell Labs, Whippany, N.J. Table 2-7 New -ms Requests Macro Request Explanation .AM New accent mark definitions. .CT Chapter title in . TM format. .EH Define even three-part page header. .EF Define even three-part page footer. ,FE End automatically numbered footnote. .FS Begin automatically numbered footnote. jp\** Endnotes with automatic numbering. .IX Index words. .OF Define odd three-part page footer. .OH Define odd three-part page header. .PI Put header on page one in . TM format. .PX Print table of contents. .TM Thesis mode format. .XS Start table of contents entry. .XE End table of contents entry. .XA Additional table of contents entry. .PX Prints table of contents. .XP Exdented paragraph. Revision A, of 27 March 1990 48 Formatting Documents Table 2-8 New String Definitions Definition In nrof f In trof f \*_ Two dashes ~ Em dash — \*Q Open quote " Open quote “ \*U Close quote " Close quote ” T able 2-9 -ms Macro Request Summary Macro Request Initial Value Cause Break? Explanation .1C yes yes One column format on a new page. . 2C no yes Two column format. .AB no yes Begin abstract. . AE - yes End abstract. . AI no yes Author’s institution follows. .AM - no New accent mark definitions .AT no yes Print ‘...Attached’ and turn offline filling. .AU no yes Author’s name follows. .B X no no Print x in boldface; if no argument switch to boldface. . B1 no yes Begin text to be enclosed in a box. . B2 no yes End text to be boxed and print it. .BT date no Bottom title, automatically invoked at foot of page. May be redefined. .BX X no no Print x in a box. .CM “ no Cut mark between pages (only if troff). .CT — yes Chapter title in thesis mode only. Page number moved to CF. .DA X date no ‘Date line’ at bottom of page is x (only in nrof f ). Default is today. .DE - yes End displayed text. Implies . KE. .DS X no yes Start of displayed text to appear ver- batim line-by-line. x=I for indented display (default), x-L for left-adjusted on the page, x=C for centered, s = B for make left-justified block, then center whole block. Implies .KS. .EF X - no Even three-part page footer x .EN yes Space after equation produced by eqn or neqn. microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 49 Table 2-9 -ms Macro Request Summary — Continued Macro Request Initial Value Cause Break? Explanation .EQ xy yes Precede equation; break out and add space. Equation number is y. The optional argument x may be I to indent equation (default), L to left-adjust the equation, or C to center it. .FE - yes End footnote. .FS X no Start footnote, x is optional foot- note label. The note will be printed at the bottom of the page. .1 X no no Italicize x ; if x is missing, italic text follows. .IP xy no yes Start indented paragraph, with hang- ing tag x. Indentation is y ens (default 5). .KE yes End keep. Put kept text on next page if not enough room. .KF no yes Start floating keep. If the kept text must be moved to the next page, float later text back to this page. .KS no yes Start keeping following text. .LG no yes Make letters larger. .LP yes yes Start left-blocked paragraph. .ND date no Use date supplied if any as page footer; only in special format posi- tions. .NH n yes Same as . SH with section number supplied automatically. Numbers are multilevel, like 1.2.3, where n tells what level is wanted (default is 1). .NL yes no Make letters normal size. .IX xy yes Index entries w and y and so on up to 5 levels. Make letters normal size. .OF X - no Odd three-part page footer. .OH header - no Odd three-part page header. .PI — no Print header on first page (only in thesis mode). .PP no yes Begin paragraph. First line indented. .PT pg# Page title, automatically invoked at top of page. May be redefined. »sun microsystems Revision A, of 27 March 1990 50 Formatting Documents T able 2-9 -ms Macro Request Summary — Continued Macro Request Initial Value Cause Break? Explanation .PX X - yes Print table of contents; x=no suppresses title. .QP yes Begin single paragraph which is indented and shorter. .R yes no Roman text follows. .RE - yes End relative indent level. .RP no Cover sheet and first page for released paper. Must precede other requests. .RS yes Start level of relative indentation. Following . IPs are measured from current indentation. .SH yes Section head follows, font automati- cally bold. . SM no no Make letters smaller. .TA X... 5... no Set tabs in ens. Default is 5 10 15 ... .TE - yes End table. .TH - yes End heading section of table. .TL no yes Title follows. .TM off no Thesis mode format. .TS X yes Begin table; if x is H, table has repeated heading on subsequent pages. .UL X yes Underline argument, even in trof f . .XA xy — yes Another index entry; x=page for no for none, y=indent. .XE yes End index entry or series of . IX entries. .XS xy — yes Begin index entry; x=page or no for none, y=indent. .UL X yes Underline argument, even in troff. &sun microsystems Revision A, of 27 March 1990 Chapter 2 — Formatting Documents with the -ms Macros 5 1 Table 2-10 -ms String Definitions Name Definition In nrof f In trof f quote \*Q It (i unquote \*U It »> dash \*~ — — month of year \* (MO January January current date \* (DY 19 January 1990 19 January 1990 numbered footnote \ * * [1] footnote 1 footnote The following table summarizes command lines you use to print and display documents. Use the same order with trof f for preprocessing files with tbl and eqn. If you use the two-column . 2C request, either pipe the nr of f output through col or make the first line of the input .pi /usr /bin/col. T able 2-11 Printing and Displaying Documents What You Want to Do How to Do it Display file on screen nr off -ms file(s) [ more Print file on line printer nr off -ms file(s) | lpr Print file with tables tbl file(s) nroff -ms | lpr Print file with equations neqn file(s) | nroff -ms | lpr Print file with both tbl file(s) neqn nroff -ms | lpr Print file using trof f troff -ms file(s) I lpr -t Revision A, of 27 March 1990 52 Formatting Documents microsystems Revision A, of 27 March 1990 3 The -man Macro Package The -man macro package is used to format the manual pages to look like those in the SunOS Reference Manual, for example. 3.1o Parts of a Manual A manual page consists of several parts: □ The first part is the header and footer or . TH line. This line identifies the manual page and sets up the titles and other information to print the page headers and footers. □ The next few sections are all introduced by . SH macro requests. A skeleton command file would look something like this: .TH XX 1 "7 November 1984" .SHNAME .SH SYNOPSIS .SH DESCRIPTION .SH OPTIONS .SH FILES .SH "SEE ALSO" .SH DIAGNOSTICS .SH BUGS The sections have the following meanings: NAME The name of the command and a short description. SYNOPSIS A short synopsis of the command including its options and arguments. description A brief narrative description of what the command does. OPTIONS A list of the options in terse itemized list format. FILES Names of files that this command uses or creates. SEE ALSO Other relevant commands and files and manuals. bugs Known deficiencies in the command. Occasionally there may be other sections you can add. For instance, a couple of the manual pages have a section called RESTRICTIONS, which contains the notice that this software is not distributed outside of the United States of Amer- ica. Leave out sections that do not apply — it is not necessary to have a title without any content to go with it. Definitely avoid sections that read: 53 Revision A, of 27 March 1990 54 Formatting Documents BUGS None. 3.2. Coding Conventions The following subsections compose a fairly detailed description of what the dif- ferent sections of the manual page contain. The Header and Footer Line ( . TH) — Identifying the Page This means, for example: Begin page named n of chapter c. The x argument is for extra commentary for the center page footer. The v argument alters the left portion of the page footer. The m argument alters the center portion of the page header. The . TH command line also incidentally sets the prevailing indent and tabs to .5i. To code a manual page called t rof f ( 1 ) , for example, you would code a . TH macro like: The third parameter to the . TH macro is the date on which you created or last changed the manual page. You code today’s date in international form: numerical day spelled-out month numerical year So if today is September 3rd, 1984, you code the . TH macro like: The NAME Line The NAME line is a one-liner that identifies the command or program. You code the information like this: This line must be typed all in the Roman font with no font changes or point-size changes or any other text manipulation. Typing the command line all in Roman with no text manipulation is for the permuted index generator. It gets all con- fused if there is anything in that line other than plain text. Note the\- in there — why do we type aV? Well, in trof f jargon, a simple - sign gets you a hyphen. We actually would like a en-dash (like -) instead of a hyphen, in lieu of actually having a em-dash (like — ). This use of the V to get a - is a UNIX tradition. Revision A, of 27 March 1990 The . TH macro is the macro that identifies the page. The format is Chapter 3 — The -man Macro Package 55 The SYNOPSIS Section The DESCRIPTION Section The SYNOPSIS line(s) show the user what options and arguments can be typed. The conventions for the SYNOPSIS have varied wildly over the years. Nonethe- less, here are the guidelines: □ Literal text (that is, what the user types) is coded in boldface. □ Variables (that is, things someone might substitute for ) are typed in italic text. □ Optional things are enclosed in brackets — that is the characters [ and ] . □ Alternatives are separated by the vertical bar sign ( | ). The synopsis should show what the options are — some manual pages used to read like this: SYNOPSIS troff [options] filename... but it should read: SYNOPSIS troff [-0 page list] [-n/V] [-m name] ...[filename] The DESCRIPTION section of a manual page should contain a brief description of what the command does for the user, in terms that the user cares about. Within the DESCRIPTION and OPTIONS sections, use boldface text for filenames and command names (commands are just files in a special place). When referring to other manual pages, type the name in boldface and the follow- ing parenthesized section number in Roman, as in make(l). Use the -man macro . BR to get alternating words joined in bold and Roman fonts. Note that the macros that join alternating words in different fonts ( . IR, . IB, . BR, . BI, . Rl, . RB) all accept only six (6) parameters. See the section on how to format a manual page for more formatting rules. Part of the description in the grep manual page used to read: . . . grep patterns are limited regular expressions in the style of ed(l); it uses a compact nondeterministic algorithm, egrep patterns are full regular expressions; it uses a fast deterministic algorithm that sometimes needs exponential space, fgrep patterns are fixed strings; it is fast and compact. Most users do not care that egrep uses a fast deterministic algorithm. As an example of a more useful way of describing a command for the user, here is how that sentence currently reads. . . . grep patterns are limited regular expressions in the style of ed(l). egrep pat- terns are full regular expressions including alternation, fgrep searches for lines that contain one of the (newline-separated) strings, fgrep patterns are fixed strings — no regular expression metacharacters are supported. Here’s another bad example: the lpr(l) manual page used to tell you that the -s option uses the symlink(2) system call to make a symbolic link to the data file ©sun V microsystems Revision A, of 27 March 1990 56 Formatting Documents The OPTIONS Section instead of copying the data file to the spool area. The user may not know what this means or how to use the information. The description was changed to just tell you that the -s option makes a symbolic link to the data file. How it is done is of little concern to some poor user who just wants to print a file. The OPTIONS section of a manual page contains an itemized list of the options that the command recognizes, and how the options affect the behavior of the command. The general format for this section is -option Description of what the option does. A specific example from the trof f manual page looks like this: OPTIONS Options may appear in any order as long as they appear before the files. -o list Print only pages whose page numbers appear in the comma-separated list of numbers and ranges. A range N-M means pages N through M; an initial -N means from the beginning to page N; and a final N- means from N to the end. -n N Number first generated page N. -m name Prepend the macro file /usr/lib/tmac/tmac.name to the input files. -raN Set register a (one-character) to N. Read standard input after the input files are exhausted. “ft Invoke the simultaneous input-output mode of the rd request, -t Direct output to the standard output instead of the phototypesetter. In general, you will have to use this option if you don’t have a typesetter attached to the system. -a Send a printable ASCII approximation of the results to the standard output. Some options of trof f only apply if you have a C/A/T typesetter attached to your system. These options are here for historical reasons: -s N Stop every N pages, t r o f f stops the phototypesetter Revision A, of 27 March 1990 Chapter 3 — The -man Macro Package 57 The FILES Section The SEE ALSO Section every N pages, produces a trailer to allow changing cassettes, and resumes when the typesetter’s start button is pressed. -f Refrain from feeding out paper and stopping phototypesetter at the end of the run. -w Wait until phototypesetter is available, if currently busy. Report whether the phototypesetter is busy or available. No text processing is done. Print all characters in point size N while retaining all prescribed spacings and motions, to reduce phototypesetter elapsed time. The FILES section of a manual page contains a list of the files that the program accesses, creates, or modifies. Obviously, you can leave this section out if the program uses no files. The example from the trof f manual page looks like this: If the file /usr/adm/tracct is writable, trof f keeps phototypesetter accounting records there. The integrity of that file may be secured by making trof f a ’set user-id’ program. FILES /tmp/ta* /usrAib/tm ac/tmac. * /usr/lib/term/* /usr/lib/font/* /dev/cat /usr/adm/tracct temporary file standard macro files terminal driving tables for nroff font width tables for troff phototypesetter accounting statistics for /dev/cat The SEE ALSO section of a manual page contains a list of references to other programs, files, and manuals relating to this program. For example, on the troff manual page, the SEE ALSO section looks like this: SEE ALSO Formatting Documents and Using NROFF and TROFF, nroff (1) , eqn (1) , tbl (1) , ms (7) , me (7) , man (7) , col (1) Make sure that the references are usefitl — the rm ( 1 ) command references the unlink ( 2 ) system call. Does the user care what system call is used to get rid of a file? It’s not intuitive that you use a function called unlink to remove a microsystems Revision A, of 27 March 1990 58 Formatting Documents file. Leave this section out if there are no interesting references. The BUGS Section The BUGS section of a manual page is to convey limitations or bad behavior of the command to the reader. Please limit bugs to these categories. Leave this section out altogether if there are no bugs worth noting. 3.3. New Features of the - man Macro Package New Number Registers Recent enhancements to the -man macro package facilitate including manual pages in manuals. The major new features are number registers that can be set from the itrof f , irof f , trof f , ditrof f , or nrof f command line. The number registers are: D Format the document for double-sided printing if the D number register is set to 1. Double-sided printing means that the page numbers appear in different locations on odd and even pages. Page numbers appear in the running footers in the lower right comer of odd-numbered pages and in the lower left comer of even-numbered pages. C Number pages contiguously — pages are numbered 1 , 2, 3,. . . even when you format more than one manual page at a time. Every new topic used to start numbering at page 1. P nnn Start Page numbering at page nnn — page numbering starts at page 1 if not otherwise specified. Xnnn Number pages as nnna, nnnb, etc when the current page number becomes nnn. This feature is for generating update pages to slot in between existing pages. For example, if a new page called skyversion( 8) should be included in an interim release, we can number that page as page ‘26a’ and drop it into the existing manual in a reasonable fashion. Using the Number Registers Number registers are set from the itrof f, irof f, trof f, ditrof f, or nrof f command line by the -r (set register) option, followed immediately by the one-letter name of the register, followed immediately by the value to put into the number register: / — \ hostname% troff -man -rDl manpage.l hostname% V This example shows how to request a format suitable for double-sided printing. If your grab ( 1 ) manual page used to be three pages long and is now five pages long, you need the pages numbered 1, 2, 3, 3a, and 3b instead of 1, 2, 3, 4, and 5. You get this effect by using the -rX option on the command line, setting the X register to 3: mm microsystems Revision A, of 27 March 1990 Chapter 3 — The -man Macro Package 59 f A hostname% troff -man -rX3 grab.l hostname% V J We introduced the screendump ( 1 ) and screenload ( 1 ) manual pages in the 1 .2 release, screendump (1) and screenload (1) come immediately after thesccsdiff(l) manual page, sccsdiff ’s last page number is page 260, so we get screendump (1) and screenload (1) formatted with this command to start page numbering at 260 and to start putting in extra page letters at 260 as well: Any text argument t to a macro request may be from zero to six words. Quotes may be used to include blanks in a ‘word’. If the text field is empty, the macro request is applied to the next input line with text to be printed. In this way, J italicizes an entire line, and .SM followed on a separate line by .B creates small, bold letters. A prevailing indent distance is remembered between successive indented para- graphs, and is reset to the default value upon reaching a non-indented paragraph. Default units for indents i are ens. Type font and size are reset to the default values before each paragraph, and after processing font- and size-setting macros. These strings are predefined by -man: \*R ®, ‘(Reg)’ in nroff . \*S Change to default type size. Table 3-1 Summary of the -man Macro Requests 3.4. How to Format a Manual Page Ctsun Xr microsystems Revision A, of 27 March 1990 Request Cause Break If no Argument Explanation .B t no r=next text line Text t is bold. . BI t no r=next text line Join words of t alternating bold and italic. .BR t no f=next text line Join words of t alternating bold and Roman. .DT no .5i li... Restore default tabs. .HP i yes /=prevailing indent Set prevailing indent to /. Begin paragraph with hanging indent. .1 t no f=next text line Text t is italic. .IB t no t=next text line Join words of ^alternating italic and bold. .IP x i yes x="" Same as .TP with tag x. . IR t no f=next text line Join words of t alternating italic and Roman. .IX t no Index macro, for Sun internal use. . LP yes Same as .PP. .PD d no d=. 4v Interparagraph distance is d. .PP yes Begin paragraph. Set prevailing indent to .5i. .RE yes End of relative indent. Set prevailing indent to amount of start- ing .RS. .RB t no f=next text line Join words of t alternating Roman and bold. . RI t no f=next text line Join words of t alternating Roman and italic. .RS i yes /^prevailing indent Start relative indent, move left margin in distance i. Set prevail- ing indent to .5i for nested indents. .SB t no Print t in smaller boldface. . SH t yes t=next text line Subheading. .SM t yes f=next text line Text t is two point sizes smaller than surrounding text. . TH ncxvm yes Begin page named n of chapter c. The x argument is for extra commentary for the center page footer. The v argument alters the left portion of the page footer. The m argument alters the center portion of the page header. The . TH command line also incidentally sets the prevailing indent and tabs to .5i. .TP i yes /= prevailing indent Set the prevailing indent to i. Begin indented paragraph with hanging tag given by the next text line. If the tag does not fit, place it on a separate line. .T X tp no Resolve the title abbreviation t; join to punctuation p. To learn how to format manual pages on your terminal or workstation screen, refer to the man ( 1 ) manual page. ®sun microsystems Revision A, of 27 March 1990 Formatting Documents with the -me Macros This chapter describes the -me macro package. 1 The first part of each section presents the material in user’s guide format and the second part lists the macro requests for quick reference. The chapter contents include descriptions of the basic requests, displays, annotations, such as footnotes, and how to use -me with nrof f and trof f . We assume that you are somewhat familiar with nrof f and trof f and that you know something about breaks, fonts, point sizes, the use and definition of number registers and strings, and scaling factors for ens, points, vertical line spaces, etc. If you are a newcomer, try out the basic features as you read along. All request names in -me follow a naming convention. You may define number registers, strings, and macros, provided that you use single-character, upper case names or double-character names consisting of letters and digits with at least one upper case letter. Do not use special characters in the names you define. The word argument in this chapter means a word or number which appears on the same line as a request and which modifies the meaning of that request. Default parameter values are given in brackets. For example, the request spaces four lines. The number ‘4’ is an argument to the . sp request; it modifies . sp to produce four lines instead of one. Spaces separate arguments from the request and from each other. 1 The material in this chapter is derived from Writing Papers with nr o f f Using -me, E. P. Allman, and - me Reference Manual, E. P. Allman, University of California, Berkeley. microsystems 61 Revision A, of 27 March 1990 62 Formatting Documents 4.1. Using -me When you have your raw text ready, run the nrof f formatter with the -me option to send the output to the standard output, your workstation screen. Type: r A hostname% nrof f -me -T type files hostname% V J where type describes the type of terminal you are outputting to. Common values are dtc for a DTC 300s (daisy- wheel type) printer and lpr for the line printer. If you omit the -T flag, a ‘lowest common denominator’ terminal is assumed; this is good for previewing output on most terminals. For easier viewing, pipe the output to more or redirect it to another file. For formatting on the phototypesetter with trof f (or your installation’s equivalent), use: r \ hostname% troff —me file hostname% v J 4.2. Basic -me Requests The following sections provide descriptions and examples of the basic -me requests. Paragraphs The -me package has requests for formatting standard, left block, and indented paragraphs. Standard Paragraph — . pp Begin standard paragraphs by using the . pp request. For example, the input: ( • PP Now is the time for all good men to come to the aid of their party. Four score and seven years ago, . . . produces Now is the time for all good men to come to the aid of their party. Four score and seven years ago,... that is, a blank line followed by an indented first line. Do not begin the sentences of a paragraph with a space, since blank lines and lines beginning with spaces cause a break. For example, if you type: ) • PP Now is the time for all good men to come to the aid of their party. Four score and seven years ago, . . . V , The output is: ®sun Vj* mi/'rncuefomc microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 63 Left Block Paragraphs Indented Paragraphs — and .np Now is the time for all good men to come to the aid of their party. Four score and seven years ago,... A new line begins after the word ‘men’ because the second line begins with a space character. Because the first call to one of the paragraph macros defined in a section or the . H macro initializes the macro processor, do not use any of the following requests: . sc, . lo, . th, or . ac (see the section called “Section Headings”). Also, avoid changing parameters, notably page length and header and footer mar- gins, which have a global effect on the format of the page. - . Ip A formatted paragraph can start with a blank line and with the first line indented. You can get left-justified block-style paragraphs as shown throughout this manual by using . Ip (left paragraph) instead of . pp. . ip Sometimes you want to use paragraphs that have the body indented, and the first line exdented, that is, the opposite of indented, with a label. Use the . ip request for this. A word specified on the same line as . ip is printed in the margin, and the body is lined up at a specified position. For example, the input: f — \ . ip one This is the first paragraph. Notice how the first line of the resulting paragraph lines up with the other lines in the paragraph. .ip two And here we are at the second paragraph already. You may notice that the argument to .ip appears in the margin. .Ip We can continue text... v J produces as output: one This is the first paragraph. Notice how the first line of the resulting para- graph lines up with the other lines in the paragraph. two And here we are at the second paragraph already. You may notice that the argument to . ip appears in the margin. We can continue text without starting a new indented paragraph by using the . Ip request. If you have spaces in the label of an .ip request, use an unpaddable space instead of a regular space. This is typed as a backslash character (\) followed by a space. For example, to print the label ‘Part 1’, type: t N, .ip "Part\ 1" If a label of an indented paragraph, that is, the argument to . ip, is longer than the space allocated for the label, . ip begins a new line after the label. For microsystems Revision A, of 27 March 1990 example, the input: f \ .ip longlabel This paragraph has a long label. The first character of text on the first line will not line up with the text on second and subsequent lines, although they will line up with each other, v produces: longlabel This paragraph has a long label. The first character of text on the first line will not line up with the text on second and subsequent lines, although they will line up with each other. You can change the size of the label by using a second argument which is the size of the label. For example, you can produce the above example correctly by saying: f .ip longlabel 10 V J which will make the paragraph indent 10 spaces for this paragraph only. For example: longlabel This paragraph has a long label. The first character of text on the first line will not line up with the text on second and subsequent lines, although they will line up with each other. If you have many paragraphs to indent all the same amount, use the number register ii. For example, to leave one inch of space for the label, type: ( .nr ii li V V somewhere before the first call to . ip. If you use . ip without an argument, no hanging tag is printed. For example, the input: •ip [a] This is the first paragraph of the example. We have seen this sort of example before. • ip This paragraph is lined up with the previous paragraph, but it does not have a tag in the margin, v , produces as output: microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 65 [a] This is the first paragraph of the example. We have seen this sort of example before. This paragraph is lined up with the previous paragraph, but it does not have a tag in the margin. A special case of . ip is . np, which automatically numbers paragraphs sequen- tially from 1. The numbering is reset at the next . pp, . Ip, or . H request. For example, the input: — 'N .np This is the first point. . np This is the second point. Points are just regular paragraphs which are given sequence numbers automatically by the .np request. ■IP This paragraph will reset numbering by . np. .np For example, we have reverted to numbering from one now. V y Paragraph Reference generates: (1) This is the first point. (2) This is the second point. Points are just regular paragraphs which are given sequence numbers automatically by the . np request. This paragraph will reset numbering by . np. (1) For example, we have reverted to numbering from one now. . Ip Begin left-justified paragraph. Centering and underlining are turned off if they were on, the font is set to \n (pf [1], the type size is set to \n (pp [lOp], and a \ (nps space is inserted before the paragraph (0.35v in trof f , lv or 0.5v in nrof f depending on device resolu- tion). The indent is reset to \n ( $1 [0] plus \n (po [0] unless the paragraph is inside a display (see . ba in “Miscellaneous Requests”). At least the first two lines of the paragraph are kept together on a page. . pp Like . Ip, except that it puts \n (pi [5n] units of indent. This is the standard paragraph macro. .ip T I Indented paragraph with hanging tag. The body of the following paragraph is indented I spaces (or \n ( ii [5n] spaces if I is not specified) more than a non-indented paragraph is (such as with • lp). The title T is exdented. The result is a paragraph with an even left edge and T printed in the margin. Any spaces in T must be unpadd- able. If T will not fit in the space provided, . ip starts a new line. Revision A, of 27 March 1990 66 Formatting Documents 4.3. Headers and Footers — .he and . fo Headers and Footers Reference . np An . ip variant that numbers paragraphs. Numbering is reset after an . Ip, .pp, or . H. The current paragraph number is in \n$p. You can put arbitrary headers and footers at the top and bottom of every page. Two requests of the form . he title and . f o title' define the titles to put at the head and the foot of every page, respectively. The titles are called three-part titles, that is, there is a left-justified part, a centered part, and a right-justified part. The first character of title (whatever it may be) is used as a delimiter to separate these three parts. You can use any character but avoid the backslash and double quote marks. The percent sign is replaced by the current page number whenever it is found in the title. For example, the input: ( \ .he " % " .fo 'Jane Jones'' My Book' V results in the page number centered at the top of each page, ‘Jane Jones’ in the lower left comer, and ‘My Book’ in the lower right comer. If there are two blanks adjacent anywhere in the title or more than eight blanks total, you must enclose three-part titles in single quotes. Headers and footers are set in font \n (t f [3] and size \n (tp [10p]. Each of the definitions applies as of the next page. Three number registers control the spacing of headers and footers. \n(hm [4v] is the distance from the top of the page to the top of the header, \n ( f m [3v] is the distance from the bottom of the page to the bottom of the footer, \n(tm [7v] is the distance from the top of the page to the top of the text, and \n (bm [6v] is the distance from the bottom of the page to the bottom of the text (nominal). You can also specify the space between the top of the page and the header, the header and the first line of text, the bottom of the text and the footer, and the footer and the bottom of the page with the macros . ml , . m2 , .m3, and . m4 . .he 7 'm'r' . fo 7 'm'r' .eh 7 'm'r' .oh 7 'm'r' . e f 'l 'm'r' . of 7 'm 'r' .hx .ml +N Define three-part header, to be printed on the top of every page. Define footer, to be printed at the bottom of every page. Define header, to be printed at the top of every even-numbered page. Define header, to be printed at the top of every odd-numbered page. Define footer, to be printed at the bottom of every even-numbered page. Define footer, to be printed at the bottom of every odd-numbered page. Suppress headers and footers on the next page. Set the space between the top of the page and the header [4v]. • SUE! microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 67 . m2 +N Set the space between the header and the first line of text [2v]. . m3 +N Set the space between the bottom of the text and the footer [2v]. . m4 +N Set the space between the footer and the bottom of the page [4v]. . ep End this page, but do not begin the next page. Useful for forcing out footnotes. Must be followed by a .bp or the end of input. . $h Called at every page to print the header. May be redefined to pro- vide fancy headers, such as, multi-line, but doing so loses the function of the . he, . f o, . eh, . oh, . ef , and . of requests, as well as the chapter-style title feature of . -i-c. . $ f Print footer, same comments apply as in . $h. . $ H A normally undefined macro which is called at the top of each page after processing the header, initial saved floating keeps, etc.; in other words, this macro is called immediately before printing text on a page. Used for column headings and the like. Double Spacing — ,1s 2 nr off will double space output text automatically if you use the request .Is 2, as is done in this section. You can revert to single- space mode by typ- ing .Is 1. Page Layout You can change the way the printed copy looks, sometimes called the layout of the output page with the following requests. Most of these requests adjust the placing of ‘white space’ (blank lines or spaces). In these explanations, replace characters in italics with values you wish to use; bold characters represent char- acters which you should actually type. Use . bp (break page) to start a new page. The request . sp N leaves N lines of blank space. You can omit N to skip a sin- gle line or you can use the form N i (for N inches) or N c (for N centimeters). For example, the input: / \ . sp 1.5i My thoughts on the subject .sp v leaves one and a half inches of space, followed by the line ‘My thoughts on the subject’, followed by a single blank line. The .in +N (indent) request changes the amount of white space on the left of the page. The argument N can be of the form + N (meaning leave N spaces more than you are already leaving), - N' (meaning leave N spaces less than you do now), or just N (meaning leave exactly N spaces). N can be of the form N i or N c also. For example, the input: Revision A, of 27 March 1990 68 Formatting Documents ( "\ initial text . in 5 some text .in +li more text .in -2c final text produces ‘some text’ indented exactly five spaces from the left margin, ‘more text’ indented five spaces plus one inch from the left margin (fifteen spaces on a pica typewriter), and ‘final text’ indented five spaces plus one inch minus two centimeters from the margin. That is, the output is: initial text some text more text final text The .ti +N (temporary indent) request is used like . in +N when the indent should apply to one line only, after which it should revert to the previous indent. For example, the input: _ . in li . ti 0 Ware, James R. The Best of Confucius, Halcyon House, 1950. An excellent book containing translations of most of Confucius' most delightful sayings. A definite must for anyone interested in the early foundations of Chinese philosophy, v > produces: Ware, James R. The Best of Confucius, Halcyon House, 1950. An excellent book containing translations of most of Confucius’ most delightful sayings. A definite must for anyone interested in the early foundations of Chinese philosophy. You can center text lines with the . ce (center) request. The line after the . ce is centered horizontally on the page. To center more than one line, use . ce N, where N is the number of lines to center, followed by the N lines. If you want to center many lines but don’t want to count them, type: / . ce 1000 lines to center . ce 0 V The . ce 0 request tells nr of f to center zero more lines, in other words, to stop centering. Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 69 All of these requests cause a break; that is, they always start a new line. If you want to start a new line without performing any other action, use . br (break). Underlining — . ul Use the . ul (underline) request to underline text. The . ul request operates on the next input line when it is processed. You can underline multiple lines by stating a count of input lines to underline, followed by those lines, the same as with the . ce request. For example, the input: C — — \ .ul 2 The quick brown fox jumped over the lazy dog. , underlines those words in nrof f . In trof f they are italicized. Displays Use displays to set off sections of text from the body of the paper. Major quotes, tables, and figures are types of displays, as are all the examples used in this manual. All displays except centered text blocks are single-spaced. Major Quotes — . ( q and . ) q Major quotes are quotes which are several lines long, and hence are set in from the rest of the text without quote marks around them. Use . ( q and . ) q to sur- round the quote. For example, the input: f — \ As Weizenbaum points out: • (q It is said that to explain is to explain away. This maxim is nowhere so well fulfilled as in the areas of computer programming, . . . • )q v , generates as output: As Weizenbaum points out: It is said that to explain is to explain away. This maxim is nowhere so well fulfilled as in the areas of computer programming,... Lists — . ( 1 and . ) 1 A list is an indented, single-spaced, unfilled display. You should use lists when the material to be printed should not be filled and justified like normal text. This is useful for columns of figures, for example. Surround the list text by the requests . (1 and . ) 1. For example, type: Alternatives to avoid deadlock are: . (1 Lock in a specified order Detect deadlock and back out one process Lock all resources needed before proceeding • )1 k to produce: Revision A, of 27 March 1990 70 Formatting Documents Keeps — . (b and . ) b, . (z and . ) z 4.4. Fancy Displays Alternatives to avoid deadlock are: Lock in a specified order Detect deadlock and back out one process Lock all resources needed before proceeding A keep is a group of lines that are kept together on a single page. If less vertical space exists on the current page than can accommodate text within a keep, the formatter begins a new page and keeps those lines together. Keeps are useful for printing diagrams because you don’t want them spread across two pages. For comparison, lists may be broken over a page boundary, whereas keeps may not. Blocks are the basic kind of keep. They begin with the request . (b and end with the request . ) b. If there is not enough room on the current page for everything in the block, the formatter begins a new page. This has the unaesthetic effect of leaving blank space at the bottom of the page. When this is not appropriate, you can use the alternative called a floating keep. Floating keeps move relative to the text. Hence, they are good for things which will be referred to by name, such as ‘See figure 3’. A floating keep will appear at the bottom of the current page if it will fit; otherwise, it will appear at the top of the next page. Floating keeps begin with the line . ( z and end with the line . ) z. An example of a floating keep is: Keeps and lists are normally collected in nofill mode, so they are good for tables and displays. If you want a display in fill mode (for text), type . ( 1 F. Throughout this section, comments applied to . ( 1 also apply to . (band . (z. This kind of display produced by . ( 1 is indented from both margins. For exam- ple, the input: . (1 F And now boys and girls, a newer, bigger, better toy than ever before! Be the first on your block to have your own computer! Yes kids, you too can have one of these modern data processing devices. You too can produce beautifully formatted papers without even batting an eye! • )1 k , microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 7 1 will be formatted as: And now boys and girls, a newer, bigger, better toy than ever before! Be the first on your block to have your own computer! Yes kids, you too can have one of these modem data processing devices. You too can produce beautifully formatted papers without even batting an eye! Lists and blocks are also normally indented, while floating keeps are normally left-justified. To get a left-justified list, type . ( 1 L. To center a list line-for- line, type .(1C. For example, to get a filled, left-justified list, use: r \ .(ILF text of block • )1 j The input: f . (1 first line of unfilled display more lines .)1 J produces the indented text: first line of unfilled display more lines Typing the character L after the . ( 1 request produces the left-justified result: first line of unfilled display more lines Using C instead of L produces the line-at-a-time centered output: first line of unfilled display more lines Sometimes you may want to center several lines as a group, rather than centering them one line at a time. To do this use centered blocks, which are surrounded by the requests . (c and . ) c. All the lines are centered as a unit, such that the longest line is centered, and the rest are lined up around that line. Notice that lines do not move relative to each other using centered blocks, whereas they do using the C keep argument. Centered blocks are not keeps, and you may use them in conjunction with keeps. For example, to center a group of lines as a unit and keep them on one page, use: •sun V microsystems Revision A, of 27 March 1990 72 Formatting Documents to produce: first line of unfilled display more lines the result would have been the same, but with no guarantee that the lines of the centered block would have all been on one page. Note the use of the L argument to . (b; this centers the centered block within the entire line rather than within the line minus the indent. Also, you must nest the center requests inside the keep requests. Display Reference All displays except centered blocks and block quotes are preceded and followed by an extra \n (bs (same as \n (ps) space. Quote spacing is stored in a separate register; centered blocks have no default initial or trailing space. The vertical spacing of all displays except quotes and centered blocks is stored in register \n ( $R instead of \n ( $r. . (1 mf Begin list. Lists are single-spaced, unfilled text. If / is F, the list will be filled. If m [I] is I the list is indented by \n (bi [4n]; if it is M, the list is indented to the left margin; if it is L, the list is left-justified with respect to the text (different from M only if the base indent (stored in \n ( $i and set with . ba) is not zero); and if it is C, the list is centered on a line-by-line basis. The list is set in font \ n (df [0]. You must use a matching . ) 1 to end the list. This macro is almost like . DS except that no attempt is made to keep the display on one page. . ) 1 End list. . (q Begin major quote. The lines are single-spaced, filled, moved in from the main body of text on both sides by \n (qi [4n], preceded and followed by \n (qs (same as \n (bs) space, and are set in point size \n (qp, that is, one point smaller than the surrounding text. . ) q End major quote. . (b mf Begin block. Blocks are a form of keep , where the text of a keep is kept together on one page if possible. Keeps are useful for tables and figures which should not be broken over a page. If the block will not fit on the current page a new page is begun, unless that would leave more than \n (bt [0] white space at the bottom of the text. If \n (bt is zero, the threshold feature is turned off. Blocks are not filled unless/ is F, when they are filled. The block will be left-justified if m is L, indented by \n (bi [4n] if m is I or absent, ▼Sun Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 73 centered (line-for-line) if m is C, and left justified to the margin, not to the base indent, if m is M. The block is set in font \n (df [0]. . ) b End block. . ( z mf Begin floating keep. Like . (b except that the keep is floated to the bottom of the page or the top of the next page. Therefore, its posi- tion relative to the text changes. The floating keep is preceded and followed by \n ( z s [lv] space. Also, it defaults to mode M. . ) z End floating keep. . ( c Begin centered block. The next keep is centered as a block, rather than on a line-by-line basis as with . (b C. This call may be nested inside keeps. . ) c End centered block. Annotations There are a number of requests to save text for later printing. Footnotes are printed at the bottom of the current page. Delayed text is intended to be a variant form of footnote; the text is printed only when explicitly called for, such as at the end of each chapter. Indexes are a type of delayed text having a tag, usually the page number, attached to each entry after a row of dots. Indexes are also saved until explicitly called for. Revision A, of 27 March 1990 74 Formatting Documents Footnotes — . ( f and . ) f Footnotes begin with the request . ( f and end with the request . ) f . The current footnote number is maintained automatically, and can be used by typing \ * *, to produce a footnote number . 2 The number is automatically incremented after every footnote. For example, the input: — 'l • (q A man who is not upright and at the same time is presumptuous; one who is not diligent and at the same time is ignorant; one who is untruthful and at the same time is incompetent; such men I do not count among acquaintances . \** . (f \**James R. Ware, . ul The Best of Confucius, Halcyon House, 1950. Page 77. .) f • )q V — _y generates the result: A man who is not upright and at the same time is presumptuous; one who is not diligent and at the same time is ignorant; one who is untruthful and at the same time is incompetent; such men I do not count among acquaintances . 3 Make sure that the footnote appears inside the quote, so that the footnote will appear on the same page as the quote. Delayed Text Delayed text is very similar to a footnote except that it is printed when explicitly called for. Use this feature to put a list of references at the end of each chapter, as is the convention in some disciplines. Use \ *# on delayed text instead of \ * * as on footnotes. If you are using delayed text as your standard reference mechanism, you can still use footnotes, except that you may want to refer to them with special characters* rather than numbers. Indexes — . ( x . ) x and . xp An index resembles delayed text, in that it is saved until called for. It is actually more like a table of contents, since the entries are not sorted alphabetically. However, each entry has the page number or some other tag appended to the last line of the index entry after a row of dots. Index entries begin with the request . ( x and end with . ) x. An argument to the . ) x indicates the value to print as the ‘page number.’ It defaults to the current page number. If the page number given is an underscore (_), no page number or 2 Like this. 3 James R. Ware, The Best of Confucius, Halcyon House, 1950. Page 77. • Such as an asterisk. microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 75 line of dots is printed at all. To get the line of dots without a page number, type . ) x " " , which specifies an explicitly null page number. The . xp request prints the index. For example, the input: Sealing wax 9 Cabbages and kings < etc. > Annotations Reference The . ( x request may have a single-character argument, specifying the name of the index; the normal index is x. Thus, you can maintain several indices simul- taneously, such as a list of tables and a table of contents. Notice that the index must be printed at the end of the paper, rather than at the beginning where it will probably appear (as a table of contents); you may have to rearrange the pages after printing. . ( d Begin delayed text. Everything in the next keep is saved for output later with , pd in a manner similar to footnotes. . ) d n End delayed text. The delayed text number register \ n ( $d and the associated string \*# are incremented if \*# has been referenced. . pd Print delayed text. Everything diverted via . (d is printed and trun- cated. You might use this at the end of each chapter. . ( f Begin footnote. The text of the footnote is floated to the bottom of the page and set in font \n (f f [1] and size \n (fp [8p], Each entry is preceded by \n ( f s [0.2v] space, is indented \n ( f i [3n] on the first line, and is indented \n (f u [0] from the right margin. Foot- notes line up underneath two-column output. If the text of the foot- note will not all fit on one page, it will be carried over to the next page. . ) f n End footnote. The number register \ n ( $f and the associated string \ * * are incremented if they have been referenced. . $ s The macro to generate the footnote separator. You may redefine this macro to give other size lines or other types of separators. It currently draws a 1.5-inch line. Revision A, of 27 March 1990 76 Formatting Documents . ( x x Begin index entry. Index entries are saved in the index x until called up with . xp. Each entry is preceded by a \n (xs [0.2v] space. Each entry is ‘undented’ by \n ( xu [0.5i]; this register tells how far the page number extends into the right margin. .)xP A End index entry. The index entry is finished with a row of dots with A [null] right justified on the last line, such as for an author’s name, followed by P [\n% ]. If A is specified, P must be specified; \n% can be used to print the current page number. If P is an underscore, no page number and no row of dots are printed. . xp x Print index x [x]. The index is formatted in the font, size, and so forth in effect at the time it is printed, rather than at the time it is col- lected. 4.5. Fancy Features A large number of fancier requests exist, notably requests to provide other sorts of paragraphs, numbered sections of the form ‘1.2.3’, such as those used in this manual, and multicolumn output. Section Headings — . sh and You can automatically generate section numbers, using the . sh request. You • uh must tell . sh the depth of the section number and a section title. The depth specifies how many numbers separated by decimal points are to appear in the section number. For example, the section number ‘4.2.5’ has a depth of three. Section numbers are incremented if you add a number. Hence, you increase the depth, and the new number starts out at one. If you subtract section numbers, or keep the same number, the final number is incremented. For example, the input: produces as output the result: 1. The Preprocessor 1.1. Basic Concepts 1.2. Control Inputs 1 . 2 . 1 . 1 . 2 . 2 . 2. Code Generation 2 . 1 . 1 . You can specify the beginning section number by placing the section number after the section title, using spaces instead of dots. For example, the request: f#sun microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 77 Section Heading Reference will begin the section numbered ‘7.3.4’; all subsequent . sh requests will be numbered relative to this number. There are more complex features which indent each section proportionally to the depth of the section. For example, if you type: each section will be indented by an amount N. N must have a scaling factor attached, that is, it must be of the form Nx, where x is a character telling what units N is in. Common values for x are ‘i’ for inches, ‘c’ for centimeters, and ‘n’ for ‘ens,’ the width of a single character. For example, to indent each section one-half inch, type: .nr si 0.5i V - The request indents sections by one-half inch per level of depth in the section number. As another example, consider: r .nr si 3n V J which gives three spaces of indent per section depth. You can produce section headers without automatically generated numbers using: / .uh "Title" v J which will do a section heading, but will not put a number on the section. .sh +NT abc def Begin numbered section of depth N. If N is missing, the current depth (maintained in the number register \n ( $ 0) is used. The values of the individual parts of the section number are maintained in \n ($1 through \n ($6. There is a \n (ss [lv] space before the section. T is printed as a section title in font \ n ( sf [8] and size \n ( sp [ 1 Op] . The ‘name’ of the section may be accessed via \*($n. If\n(siis non-zero, the base indent is set to \ n ( s i times the section depth, and the section title is exdented (see . ba in “Miscellaneous Requests”). Also, an additional indent of \n ( so [0] is added to the section title but not to the body of the section. The font is then set to the paragraph font, so that more information may occur on the line with the section number and title. A . sh insures that there is enough room to print the section head plus the begin- ning of a paragraph, which is about 3 lines total. If you specify a through /, the section number is set to that number rather than incre- mented automatically. If any of a through/ are a hyphen that number is not reset. If T is a single underscore (_), the section depth m s u n V microsystems Revision A, of 27 March 1990 78 Formatting Documents and numbering is reset, but the base indent is not reset and nothing is printed. This is useful to automatically coordinate section numbers with chapter numbers. . s x+N Go to section depth 'N [ -1 ]’, but do not print the number and title, and do not increment the section number at level N. This has the effect of starting a new paragraph at level N . . uh T Unnumbered section heading. The title T is printed with the same rules for spacing, font, etc., as for . sh. .$p TBN Print section heading. May be redefined to get fancier headings. T is the title passed on the . sh or . uh line; B is the section number for this section, and N is the depth of this section. These parameters are not always present; in particular, . sh passes all three, . uh passes only the first, and . sx passes three, but the first two are null strings. Be careful if you redefine this macro, as it is quite complex and subtle. .$0 TBN Called automatically after every call to . $p. It is normally undefined, but may be used to put every section title automatically into the table of contents, or for some similar function. T is the sec- tion title for the section title just printed, B is the section number, and N is the section depth. .$ 1 - .$6 Traps called just before printing that depth section. May be defined to give variable spacing before sections. These macros are called from . $p, so if you redefine that macro you may lose this feature. Parts of the Standard Paper Some requests help you to format papers. The . tp request initializes for a title page. There are no headers or footers on a title page, and unlike other pages, you can space down and leave blank space at the top. For example, source for a typi- cal title page might be: The request . th sets up the environment of the nr of f processor to do a thesis. It defines the correct headers, footers, a page number in the upper right-hand comer only, sets the margins correctly, and double spaces. Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 79 Use the .+cT request to start chapters. Each chapter is automatically numbered from one, and a heading is printed at the top of each chapter with the chapter number and the chapter name T. For example, to begin a chapter called Conclu- sions, use the request: which produces on a new page, the lines CONCLUSIONS with appropriate spacing for a thesis. Also, the header is moved to the foot of the page on the first page of a chapter. Although the . + c request was not designed to work only with the . th request, it is tuned for the format acceptable for a standard PhD thesis. If the title parameter T is omitted from the . +c request, the result is a chapter with no heading. You can also use this at the beginning of a paper. Although papers traditionally have the abstract, table of contents, and so forth at the front, it is more convenient to format and print them last when using nr of f . This is so that index entries can be collected and then printed for the table of con- tents. At the end of the paper, give the . ++ P request, which begins the prelim- inary part of the paper. After using this request, the . +c request will begin a preliminary section of the paper. Most notably, this prints the page number res- tarted from one in lower case Roman numbers. You may use . +c repeatedly to begin different parts of the front material for example, the abstract, the table of contents, acknowledgments, list of illustrations, and so on. You may also use the request . + + B to begin the bibliographic section at the end of the paper. For example, the paper might appear as outlined below. (In this figure, comments begin with the sequence \ " .) Asun microsystems Revision A, of 27 March 1990 80 Formatting Documents Figure 4-1 Outline of a Sample Paper . th . fo "DRAFT" •tp . (1 C A BENCHMARK FOR THE NEW SYSTEM . sp by •SP J.P. Hacker • )1 ■+c INTRODUCTION . (X t Introduction • ) x text of chapter one . + c "NEXT CHAPTER" . (x t Next Chapter • ) x text of chapter two • +c CONCLUSIONS . (x t Conclusions . ) x text of chapter three .++ B -+C BIBLIOGRAPHY . (X t Bibliography • ) x text of bibliography .++ P .+c "TABLE OF CONTENTS" . xp t . +C PREFACE text of preface \" set for thesis mode \" define footer for each page \" begin title page \" center a large block \" end centered part \" begin chapter named 'INTRODUCTION' \" make an entry into index 't' \" end of index entry \" begin another chapter \" enter into index 't' again \" begin bibliographic information \" begin another 'chapter' \" begin preliminary material \" print index 't' collected above \" begin another preliminary section Standard Paper Reference . tp Begin title page. Spacing at the top of the page can occur, and headers and footers are suppressed. Also, the page number is not incremented for this page. . th Set thesis mode. This defines the modes acceptable for a doctoral dissertation. It double spaces, defines the header to be a single page number, and changes the margins to be 1.5 inch on the left and one inch on the top. Use . ++ and . +c with it. This macro must be stated before initialization, that is, before the first call of a paragraph macro or . H. . + + m H This request defines the section of the paper you are typing. The sec- tion type is defined by m : C means you are entering the chapter por- tion of the paper, A means you are entering the appendix portion of the paper, P means the material following should be the preliminary portion (abstract, table of contents, etc.) of the paper, AB means that you are entering the abstract (numbered independently from 1 in Arabic numerals), and B means that you are entering the Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 8 1 . +C T . $c T .$CKN . ac A N bibliographic portion at the end of the paper. You can also use the variants RC and RA, which specify renumbering of pages from one at the beginning of each chapter or appendix, respectively. The H parameter defines the new header. If there are any spaces in it, the entire header must be quoted. If you want the header to have the chapter number in it, use the string \ \ \ \ n ( ch . For example, to number appendixes ‘ A.l’ etc., type . ++ RA ' ' ' \\\\n(ch.%'. Precede each section (chapter, appendix, etc.) by the . +c request. When using tr of f , it is easier to put the front material at the end of the paper, so that the table of contents can be collected and generated; you can then physically move this material to the beginning of the paper. Begin chapter with title T. The chapter number is maintained in \n ( ch. This register is incremented every time . +c is called with a parameter. The title and chapter number are printed by . $ c. The header is moved to the footer on the first page of each chapter. If T is omitted, . $c is not called; this is useful for doing your own ‘title page’ at the beginning of papers without a title page proper. . $c calls . $C as a hook so that chapter titles can be inserted into a table of contents automatically. The footnote numbering is reset to one. Print chapter number (from \n (ch) and T, You can redefine this macro to your liking. It is defined by default to be acceptable for a standard PhD thesis. This macro calls $C, which can be defined to make index entries, or whatever. This macro is called by . $c. It is normally undefined, but can be used to automatically insert index entries, or whatever. K is a key- word, either ‘Chapter’ or ‘Appendix’ (depending on the . ++ mode); N is the chapter or appendix number, and T is the chapter or appen- dix title. This macro (short for . acm) sets up the nrof f environment for photo-ready papers as used by the Association for Computing Machinery (ACM). This format is 25% larger, and has no headers or footers. The author’s name A is printed at the bottom of the page, but off the part which will be printed in the conference proceedings, together with the current page number and the total number of pages N. Additionally, this macro loads the file lusr/lib/me/acm.me, which may later be augmented with other macros for printing papers for ACM conferences. Note that this macro will not work correctly in trof f , since it sets the page length wider than the physical width of the phototypesetter roll. Revision A, of 27 March 1990 82 Formatting Documents Two-Column Output — .2c You can get two-column output automatically by using the request . 2 c. This produces everything after it in two-column form. The request . be will start a new column; it differs from . bp in that . bp may leave a totally blank column when it starts a new page. To revert to single-column output, use . lc. Column Output Reference ,2c +S N Enter two-column mode. The column separation is set to +S [4n, 0.5i in ACM mode] (saved in \n ( $ s). The column width, calcu- lated to fill the single-column line length with both columns, is stored in \n ( $1. The current column is in \ n ( $c. You can test register \n ( $m [1] to see if you are in single-column or double- column mode. Actually, the request enters //-column [2] output. . 1 c Revert to single-column mode. . be Begin column. This is like . bp except that it begins a new column on a new page only if necessary, rather than forcing a whole new page if there is another column left on the current page. Defining Macros — . de A macro is a collection of requests and text which you may invoke with a simple request. Macros definitions begin with the line . de xx where xx is the name of the macro to be defined, and end with a line consisting of only two dots. After defining the macro, invoking it with the line . xx is the same as invoking all the other macros. For example, to define a macro that spaces vertically three lines and then centers the next input line, type: and use it by typing: Macro names may be one or two characters. In order to avoid conflicts with command names in -me, always use upper case letters as names. Avoid the names TS, TH, TE, EQ, and EN. Annotations Inside Keeps Sometimes you may want to put a footnote or index entry inside a keep. For example, if you want to maintain a ‘list of figures’, you will want to use some- thing like: Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 83 4.6. Using troff for Phototypesetting Fonts which will give you a figure with a label and an entry in the index ‘f , presum- ably a list of figures index. Because the index entry is read and interpreted when the keep is read, and not when it is printed, you have is to use the magic string \ ! at the beginning of all the lines dealing with the index. Otherwise, the page number in the index is likely to be wrong. This defers index processing until the figure is generated, and guarantees that the page number in the index is correct. The same comments apply to blocks with . (b and . ) b. You can prepare documents for either displaying on a workstation or for photo- typesetting using the troff formatting program. A font is a style of type. There are three fonts that are available simultaneously, Times Roman, Times Italic, and Times Bold, plus the special math font for use with the eqn and neqn mathematical equation processors. The normal font is Roman. Text which would be underlined in nr of f with the . ul request is set in italics in troff. There are ways of switching between fonts. The requests .r, . i, and .b switch to Roman, italic, and bold fonts respectively. You can set a single word in one of these fonts by typing, for example: .i word v- which will set word in italics but does not affect the surrounding text. In nrof f , italic and bold text is underlined. Notice that if you are setting more than one word in a different font, you must surround that word with double quote marks (") so it will appear to the nrof f processor as a single word. The quote marks will not appear in the formatted text. If you do want a quote mark to appear, quote the entire string even if a sin- gle word, and use two quote marks where you want one to appear. For example, if you want to produce the text: "Master Control " in italics, you must type: f .i """Master Control\ | \ V m microsystems Revision A, of 27 March 1990 84 Formatting Documents The \ | produces a narrow space so that the T does not overlap the quote sign in trof f . There are also several pseudo-fonts available. For example, the input: f .u underlined * J generates and underlined ( .bx "words in a box" l y produces words in a box You can also get bold italics with .bi "bold italics" Notice that pseudo font requests set only the single parameter in the pseudo font; ordinary font requests will begin setting all text in the special font if you do not provide a parameter. No more than one word should appear with these three font requests in the middle of lines. This is because of the way t rof f justifies text. For example, if you were to give the requests: f .bi "some bold italics" A y and r .bx "words in a box" a i in the middle of a line, trof f would overwrite the first and the box lines on the second would be poorly drawn. The second parameter of all font requests is set in the original font. For example, the font request: r \ ,b bold face V J generates ‘bold’ in bold font, but sets ‘face’ in the font of the surrounding text, resulting in: boldface To set the two words ‘bold’ and ‘face’ both in bold face, type: Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 85 You can mix fonts in a word by using the special sequence \c at the end of a line to indicate ‘continue text processing’; you can join input lines together without a space between them. For example, the input: generates unde italics , but if you type: the result is under italics as two words. Point Sizes — . s z The phototypesetter supports different sizes of type, measured in points. The default point size is 10 points for most text and eight points for footnotes. To change the point size, type: where N is the size wanted in points. The ‘vertical spacing,’ that is, the distance between the bottom of most letters (the baseline ) and the adjacent line is set to be proportional to the type size. Note: Changing point sizes on the phototypesetter is a slow mechanical opera- tion. Consider size changes carefully. Fonts and Sizes Reference . s z +P The point size is set to P [lOp], and the line spacing is set proportion- ally. The ratio of line spacing to point size is stored in \n($r. The ratio used internally by displays and annotations is stored in \n($R, although . s z does not use this. . r W X Set IT in roman font, appending X in the previous font. To append different font requests, use l X = \ c. If no parameters, change to roman font. . i W X Set IT in italics, appending X in the previous font. If no parameters, change to italic font. Underlines in nrof f . . b IT X Set W in bold font and append X in the previous font. If no parame- ters, switch to bold font. Underlines in nrof f. . rb W X Set W in bold font and append X in the previous font. If no parame- ters, switch to bold font. . rb differs from . b in that . rb does not underline in nrof f. . u WX Underline IT and append X. This is a true underlining, as opposed to the .ul request, which changes to ‘underline font’ (usually italics in Revision A, of 27 March 1990 86 Formatting Documents t r o f f ). It won’t work right if W is spread or broken, which includes being hyphenated, so in other words, it is only safe in nofill mode. . q WX Quote W and append X. In nr of f this just surrounds W with double quote marks (" "), but in trof f uses directed quotes. . bi WX Set W in bold italics and append X. Actually, sets W in italic and overstrikes once. Underlines in nroff. It won’t work right if W is spread or broken, which includes being hyphenated, so it is only safe in nofill mode. • b xWX Sets W in a box, with X appended. Underlines in nroff. It won’t work right if W is spread or broken, which includes being hyphenated, so it is only safe in nofill mode. Quotes — \ * ( lq and \ * ( rq It looks better to use pairs of grave and acute accents to generate double quotes, rather than the double quote character (") on a phototypesetter. For example, compare "quote" to “quote”. In order to make quotes compatible between the typesetter and the workstation or a terminal, use the sequences \ * ( lq and \ * ( r q to stand for the left and right quote respectively. These both appear as " on most terminals, but are typeset as " and " respectively. For example, use: to generate the result: “Some things aren’t true even if they did happen.” As a shorthand, the special font request: which generates “quoted text”. Notice that you must surround the material to be quoted with double quote marks if it is more than one word. You may adjust a number of macro parameters. You may set fonts to a font number only. In nroff font 8 is underlined, and is set in bold font in trof f (although font 3, bold in trof f , is not underlined in nroff). Font 0 is no font change; the font of the surrounding text is used instead. Notice that fonts 0 and 8 are pseudo-fonts ; that is, they are simulated by the macros. This means that although it is legal to set a font register to zero or eight, it is not legal to use the escape character form, such as: All distances are in basic units, so it is nearly always necessary to use a scaling factor. For example, the request to set the paragraph indent to eight one-en spaces is: 4.7. Adjusting Macro Parameters Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 87 which would set the paragraph indent to eight basic units, or about 0.02 inch. You may use registers and strings of the form $ x in expressions but you should not change them. Macros of the form $ x perform some function as described and may be redefined to change this function. This may be a sensitive operation; look at the body of the original macro before changing it. On daisy wheel printers in twelve-pitch, you can use the -rxl flag to make lines default to one-eighth inch, which is the normal spacing for a newline in twelve- pitch. This is normally too small for easy readability, so the default is to space one-sixth inch. Revision A, of 27 March 1990 88 Formatting Documents 4.8. roff Support . ix +N Indent, no break. Equivalent to ‘'in N'. .blN Leave N contiguous white spaces, on the next page if not enough room on this page. Equivalent to a . sp N inside a block. .pa +N Equivalent to .bp. . ro Set page number in Roman numerals. Equivalent to .af % i. .ar Set page number in Arabic. Equivalent to .af % 1. . n 1 Number lines in margin from one on each page. . n2 N Number lines from N, stop if N = 0. . sk Leave the next output page blank, except for headers and footers. Use this to leave space for a full-page diagram which is produced externally and pasted in later. To get a partial-page paste-in display, say . sv N, where N is the amount of space to leave; this space will be generated immediately if there is room, and will otherwise be generated at the top of the next page. However, be warned: if N is greater than the amount of available space on an empty page, no space will be reserved. 4.9. Preprocessor Support . E QmT Begin equation. The equation is centered if m is C or omitted, indented \n (bi [4n] if m is I, and left-justified if m is L. T is a title printed on the right margin next to the equation. See the “Typeset- ting Mathematics with eqn” chapter in this manual for more about equation formatting. . EN c End equation. If c is C, the equation must be continued by immedi- ately following with another . EQ, the text of which can be centered along with this one. Otherwise, the equation is printed, always on one page, with \n(es [0.5v in trof f , lv in nrof f ] space above and below it. . TS h Table start. Tables are single-spaced and kept on one page, if possi- ble. If you have a large table that will not fit on one page, use h = H and follow the header part to be printed on every page of the table with a . TH. See the “Formatting Tables with tbl” chapter in this manual for more information on laying out tables. . T H With . T S H , ends the header portion of the table. . TE Table end. Note that this table does not float, in fact, it is not even guaranteed to stay on one page if you use requests such as . sp inter- mixed with the text of the table. If you want it to float (or if you use requests inside the table), surround the entire table (including the . TS and . TE requests) with . (z and . ) z. sun microsystems Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 89 4.10. Predefined Strings \ * * Footnote number, actually \ *[\n($f\*]. This macro is incre- mented after each call to . ) f . \*# Delayed text number. Actually [\n($d]. \*[ Superscript. This string gives upward movement and a change to a smaller point size if possible, otherwise it gives the left bracket char- acter ( [). Extra space is left above the line to allow room for the superscript. For example, to produce a superscript you can type x \ * [ 2 \ * ] , which will produce x 2 . \*] Unsuperscript. Inverse of \ * [ . \*< Subscript. Defaults to < if half-carriage motion not possible. Extra space is left below the line to allow for the subscript. \*> Inverse of \*<. \* (dw The day of the week, as a word. \* (mo The month, as a word. \*(td Today’s date, directly printable. The date is of the form September 16, 1983. Other forms of the date can be used by using \n (dy (the day of the month; for example, 16), \* (mo (as noted above) or \n (mo (the same, but as an ordinal number; for example, September is 9), and \n (yr (the last two digits of the current year). \*(lq Left quote marks; double quote in nr of f. \* (rq Right quote marks; double quote in nr of f. \*- An em-dash in trof f ; two hyphens in nrof f . 4.11. Miscellaneous . re Reset tabs. Set to every 0.5i in trof f and every 0.8i in nrof f . Requests .ba +N Set the base indent to +N [0] (saved in \n ( $ i). All paragraphs, sections, and displays come out indented by this amount. Titles and footnotes are unaffected. The . H request performs a . ba request if \ n ( s i [0] is not zero, and sets the base indent to \n (si*\n ($0. . xl +N Set the line length to N [6.0i]. This differs from . 11 because it only affects the current environment. .11 +N Set line length in all environments to N [6.0i]. Do not use this after output has begun, and particularly not in two-column output. The current line length is stored in \n ( $ 1. .hi Draws a horizontal line the length of the page. This is useful inside floating keeps to differentiate between the text and the figure. .lo This macro loads another set of macros in /usr/lib/me/local .me, which is a set of locally-defined mac- ros. These macros should all be of the form . * X, where X is any letter (upper or lower case) or digit. A sun \r microsystems Revision A, of 27 March 1990 90 Formatting Documents 4.12. Special Characters There are a number of special characters and diacritical marks, such as accents, and Diacritical Marks available with -me. To use these characters, you must call the macro . sc to — .sc define the characters before using them. .sc Define special characters and diacritical marks. You must state this macro before initialization. The special characters available are listed below. Table 4- 1 Special Characters and Diacritical Marks Name Usage Example Acute accent \* ' a\* ' ' a Grave accent \* s e\* v ' e Umlaut \* : u\* : u Tilde \*~ n\*~~ n Caret > CD * > N CD Cedilla \*, /c\*, /,c Czech \*v/e\*v/e Circle \*o > * O o A 4.13. -me Request Summary Table 4-2 -me Request Summary Request Initial Value Cause Break Explanation . (c - yes Begin centered block. . (d - no Begin delayed text. . (f - no Begin footnote. . (1 - yes Begin list. • (q - yes Begin major quote. . (x X - no Begin indexed item in index x. . (z - no Begin floating keep. . ) C - yes End centered block. • ) d - yes End delayed text. • )f - yes End footnote. ■ )1 - yes End list. ■ >q - yes End major quote. . ) X - yes End index item. . ) z - yes End floating keep. .++ mH no Define paper section, m defines the part of the paper and can be C (chapter), A (appendix), P (preliminary, for example, abstract, table of con- tents, etc.), B (bibliography), RC (chapters renumbered from page one each chapter), or RA (appendix renumbered from page one). Revision A, of 27 March 1990 Chapter 4 — Formatting Documents with the -me Macros 9 1 Table 4-2 -me Request Summary — Continued Request Initial Value Cause Break Explanation . +c T — yes Begin chapter (or appendix, etc., as set by . ++). T is the chapter title. . lc 1 yes One-column format on a new page. . 2c 1 yes Two-column format. .EN - yes Space after equation produced by eqn or neqn. .EQ xy yes Precede equation; break out and add space. Equation number is y. The optional argument x may be I to indent equation (default), L to left- adjust the equation, orC to center the equation. .TE - yes End table. .TH - yes End heading section of table. .TS X - yes Begin table; if x is H, table has repeated heading. . ac AN no Set up for ACM-style output. A is the Author’s name(s), N is the total number of pages. Must be given before the first initialization. .b x no yes Print x in boldface; if no argument switch to boldface. .ba +n 0 yes Augments the base indent by n. This indent is used to set the indent on regular text (like para- graphs). .be no yes Begin new column. .bi x no no Print x in bold italics (nofill only). .bx x no no Print x in a box (nofill only). .ef 'x'y'z' 9999 no Set even footer to xy z. .eh 'x'y'z' 9 9 9 9 no Set even header to xyz. .fo 'x'y'z' 9 9 9 9 no Set footer to xyz. .he 'x'y'z' 9 9 9 9 no Set header to xyz. .hi - yes Draw a horizontal line. . hx - no Suppress headers and footers on next page. . i x no no Italicize x; if x is missing, italic text follows. .ip xy no yes Start indented paragraph, with hanging tag x. Indentation is y ens (default 5). .lp yes yes Start left-block paragraph. . lo no Read in a file of local macros of the form . *x. Must be given before initialization. •np 1 yes Start numbered paragraph. .of 'x'y’z' » » » » no Set odd footer to xy z. .oh 'x'y'z' » » > » no Set odd header to xyz. .pd - yes Print delayed text. •PP no yes Begin paragraph. First line indented. . r yes no Roman text follows. . re - no Reset tabs to default values. . sc no Read in a file of special characters and diacriti- cal marks. Must be given before initialization. #sun microsystems Revision A, of 27 March 1990 92 Formatting Documents T able 4-2 -me Request Summary — Continued Request Initial Value Cause Break Explanation . sh n x — yes Section head follows, font automatically bold, n is level of section, x is title of section. . sk no no Leave the next page blank. Only one page is remembered ahead. . sz + n lOp no Increase the point size by n points. . th no no Produce the paper in thesis format. Must be given before initialization. •tp no yes Begin title page. . u x no Underline argument (even in trof f) (nofill only). . uh - yes Like ‘.sh’ but unnumbered. . xp X - no Print index x. Revision A, of 27 March 1990 x*x'xw:-x %A Brian W. Kernighan %A P . J. Plauger %T Software Tools in Pascal %I Addison-Wesley %C Reading, Massachusetts %D 1981 k , The %Q is for organizational authors, or authors with Japanese or Arabic names, in which cases there is no clear last name. Books should be labeled with the %T, not with the %B, which is reserved for books containing articles. The %J and %B fields should never appear together, although if they do, the %J will override the %B. If there is no author, just an editor, it is best to type the editor in the %A Revision A, of 27 March 1990 Chapter 5 — refer — A Bibliography System 95 field, as in this example: %A Bertrand Bronson, ed. A V J The %E field is used for the editor of a book (%B) containing an article, which has its own author. For unpublished material such as theses, use the %R field; the title in the %T field will be quoted, but the contents of the %R field will not be underlined. Unlike other fields, %H, %0, and %X should contain their own punctuation. Here is an example: ( \ %A Mike E. Lesk %T Some Applications of Inverted Indexes on the Unix System %B Unix Programmer' s Manual %I Bell Laboratories %C Murray Hill, NJ %D 1978 %V 2a %K refer mkey inv hunt %X Difficult to read paper that dwells on indexing strategies, giving little practical advice about using \fBrefer\fP. v / Note that the author’s name is given in normal order, without inverting the sur- name; inversion is done automatically, except when %Q is used instead of %A. We use %X rather than %0 for the commentary because we do not want the comment printed every time the reference is used. The %0 and %H fields are printed by both refer and rof fbib; the %X field is printed only by rof f bib, as a detached annotation paragraph. 5.3. Data Entry with The addbib program is for creating and extending bibliographic databases, addbib You must give it the filename of your bibliography: r hostname % addbib database N v J Every time you enter addbib, it asks if you want instructions. To get them, type y ; to skip them, type RETURN, addbib prompts for various fields, reads from the keyboard, and writes records containing the refer codes to the data- base. After finishing a field entry, you should end it by typing RETURN. If a field is too long to fit on a line, type a backslash (\) at the end of the line, and you will be able to continue on the following line. Note: the backslash works in this capacity only inside addbib. A field will not be written to the database if nothing is entered into it. Typing a minus sign as the first character of any field will cause addbib to back up one field at a time. Backing up is the best way to add multiple authors, and it really helps if you forget to add something important. Fields not contained in the prompting skeleton may be entered by typing a backslash as the last character before RETURN. The following line will be sent verbatim to the database and addbib will resume with the next field. This is identical to the procedure for dealing with long fields, but with new fields, don’t forget the % key-letter. Revision A, of 27 March 1990 96 Formatting Documents Finally, you will be asked for an abstract (or annotation), which will be preserved as the %X field. Type in as many lines as you need, and end with a control-D (hold down the CTRL button, then press the “d” key). This prompting for an abstract can be suppressed with the -a command line option. After one bibliographic record has been completed, addbib will ask if you want to continue. If you do, type RETURN ; to quit, type q or n (quit or no). It is also possible to use one of the system editors to correct mistakes made while entering data. After the Continue? prompt, type any of the following: edit, ex, vi, or ed — you will be placed inside the corresponding editor, and returned to addbib afterwards, from where you can either quit or add more data. If the prompts normally supplied by addbib are not enough, are in the wrong order, or are too numerous, you can redefine the skeleton by constructing a promptfile. Create some file, to be named after the -p command line option. Place the prompts you want on the left side, followed by a single TAB (control-I), then the refer code that is to appear in the bibliographic database, addbib will send the left side to the screen, and the right side, along with data entered, to the database. 5.4. Printing the sortbib is for sorting the bibliography by author (%A) and date (%D), or by Bibliography data in other fields. Sortbib is quite useful for producing bibliographies and annotated bibliographies, which are seldom entered in strict alphabetical order. Sortbib takes as arguments the names of up to 16 bibliography files, and sends the sorted records to standard output (the terminal screen), which may be redirected through a pipe or into a file. The -s KEYS flag to sortbib will sort by fields whose key-letters are in the KEYS string, rather than merely by author and date. Key-letters in KEYS may be followed by a + to indicate that all such fields are to be used. The default is to sort by senior author and date (printing the senior author last name first), but -sA+D will sort by all authors and then date, and -sATD will sort on senior author, then title, and then date. ro f f bib is for running off the (probably sorted) bibliography. It can handle annotated bibliographies — annotations are entered in the %X (abstract) field, roff bib is a shell script that calls refer -Bandnroff -mbib. It uses the macro definitions that reside in / usr/ lib/tmac/tmac . bib, which you can redefine if you know nrof f and trof f . Note that refer will print the %H and %0 commentaries, but will ignore abstracts in the %X field; rof fbib will print both fields, unless annotations are suppressed with the -x option. The following command sequence will lineprint the entire bibliography, organ- ized alphabetically by author and date: — A hostname% sortbib database | | roffbib | lpr v J This is a good way to proofread the bibliography, or to produce a stand-alone bibliography at the end of a paper. Incidentally, rof fbib accepts all flags used m microsystems Revision A, of 27 March 1990 Chapter 5 — refer — A Bibliography System 97 withnroff. For example: r A hostname% sortbib database | | roffbib -Txerox —si V J will make accent marks work on a Xerox printer, and stop at the bottom of every page for changing paper. The -n and -o flags may also be quite useful, to start page numbering at a selected point, or to produce only specific pages. rof fbib understands four command-line number registers: N, V, L, and 0. These are something like the two-letter number registers in -ms. The -rNl argu- ment will number references beginning at one (1); use another number to start somewhere besides one. The -rV2 flag will double-space the entire bibliogra- phy, while — rVl will double-space the references, but single-space the annota- tion paragraphs. Finally, specifying -rL6i changes the line length from 6.5 inches to 6 inches, and saying -rOli sets the page offset to one inch, instead of zero. (That’s a capital O after -r, not a zero.) 5.5. Citing Papers with refer The refer program normally copies input to output, except when it encounters an item of the form: \ . [ partial citation .] V J The partial citation may be just an author’s name and a date, or perhaps a title and a keyword, or maybe just a document number, refer looks up the citation in the bibliographic database, and transforms it into a full, properly- formatted reference. If the partial citation does not correctly identify a single work (either finding nothing, or more than one reference), a diagnostic message is given. If nothing is found, it will say “No such paper.” If more than one reference is found, it will say “Too many hits.” Other diagnostic messages can be quite cryp- tic; if you are in doubt, use checknr to verify that all your .[ s have matching •] s. When everything goes well, the reference will be brought in from the database, numbered, and placed at the bottom of the page. This citation, for example, was produced by: /• This citation, . [ lesk inverted indexes • J for example , was produced by v -I The . [ and . ] markers, in essence, replace the . FS and . FE of the -ms macros, and also provide a numbering mechanism. Footnote numbers will be bracketed 1 Mike E. Lesk, “Some Applications of Inverted Indexes on the Unix System," in Unix Programmer’s Manual , Bell Laboratories, Murray Hill, NJ, 1978. microsystems Revision A, of 27 March 1990 98 Formatting Documents on the lineprinter, but superscripted on daisy- wheel terminals and in trof f . In the reference itself, articles will be quoted, and books and journals will be under- lined in nr of f , and italicized in trof f . Sometimes you need to cite a specific page number along with more general bibliographic material. You may have, for instance, a single document that you refer to several times, each time giving a different page citation. This is how you could get “p. 10” in the reference: f A . [ kies document formatting %P 10 .] V. J The first line, a partial citation, will find the reference in your bibliography. The second line will insert the page number into the final citation. Ranges of pages may be specified as “%P 56-78”. When the time comes to run off a paper, you will need to have two files: the bibliographic database, and the paper to format. Use a command line something like one of these: f A hostname% refer -p database paper nroff -ms hostname% refer -p database paper tbl | nroff -ms hostname% refer -p database paper tbl | neqn | nroff -ms y If other preprocessors are used, refer should precede tbl, which must in turn precede eqn, or neqn. The -p option specifies a “private” database, which most bibliographies are. 5.6. refer Command Line Many people like to place references at the end of a chapter, rather than at the Options bottom of the page. The -e option will accumulate references until a macro sequence of the form * ■ A . c $LIST$ .] V . j is encountered (or until the end of file), refer will then write out all references collected up to that point, collapsing identical references. Warning: there is a limit (currently 200) on the number of references that can be accumulated at one time. It is also possible to sort references that appear at the end of text. The -s KEYS flag will sort references by fields whose key-letters are in the KEYS string, and permute reference numbers in the text accordingly. It is unnecessary to use -e with the -s KEYS flag, since -s implies -e. See the section “Printing the Bibliography” for additional features of the -s KEYS flag. refer can also make citations in what is known as the Social or Natural Sci- ences format. Instead of numbering references, the -1 (letter ell) flag makes Revision A, of 27 March 1990 Chapter 5 — refer — A Bibliography System 99 labels from the senior author’s last name and the year of publication. For exam- ple, a reference to the paper on Inverted Indexes cited above might appear as [Leskl978a]. It is possible to control the number of characters in the last name, and the number of digits in the date. For instance, the command line argument -16,2 might produce a reference such as [Kemig78c]. Some bibliography standards shun both footnote numbers and labels composed of author and date, requiring some keyword to identify the reference. The -k flag indicates that, instead of numbering references, key labels specified on the %L line should be used to mark references. The -n flag means to not search the default reference file, located in /usr/dict/papers/Rv7man. Using this flag may make refer marginally faster. The -an flag will reverse the first n author names, printing Jones, J. A. instead of J. A. Jones. Often -al is enough; this will reverse the first and last names of only the senior author. In some versions of ref er there is also the -f flag to set the footnote number to some predetermined value; for example, -f 23 would start numbering with footnote 23. 5.7. Making an Index Once your database is large and relatively stable, it is a good idea to make an index to it, so that references can be found quickly and efficiently. The indx- bib program makes an inverted index to the bibliographic database (this pro- gram is called pub index in the Bell Labs manual). An inverted index could be compared to the thumb cuts of a dictionary — instead of going all the way through your bibliography, programs can move to the exact location where a cita- tion is found. indxbib itself takes a while to run, and you will need sufficient disk space to store the indexes. But once it has been run, access time will improve dramati- cally. Furthermore, large databases of several million characters can be indexed with no problem. The program is exceedingly simple to use: / hostname% indxbib database \ V J Be aware that changing your database will require that you run indxbib over again. If you don’t, you may fail to find a reference that really is in the database. Once you have built an inverted index, you can use lookbib to find references in the database, lookbib cannot be used until you have run indxbib. When editing a paper, lookbib is very useful to make sure that a citation can be found as specified. It takes one argument, the name of the bibliography, and then reads partial citations from the terminal, returning references that match, or noth- ing if none match. Its prompt is the greater-than sign. Revision A, of 27 March 1990 100 Formatting Documents f — s hostname% lookbib database Instructions? n > lesk inverted indexes %A Mike E. Lesk %T Some Applications of Inverted Indexes on the Unix System %J Unix Programmer' s Manual %I Bell Laboratories %C Murray Hill, NJ %D 1978 %V 2a %X Difficult to read paper that dwells on indexing strategies, giving little practical advice about using \fLrefer\fP. > v , If more than one reference comes back, you will have to give a more precise cita- tion for refer. Experiment until you find something that works; remember that it is harmless to overspecify. To get out of the lookbib program, type a CTRL-D alone on a line; lookbib then exits with an “EOT” message. lookbib can also be used to extract groups of related citations. For example, to find all the papers by Brian Kemighan in the system database, and send the output to a file, type: ( " — - — ^ hostname% lookbib /usr/dict/papers/Ind > kern. refs Instructions ? n > kernighan > CTRL-D EOT hostname% cat kern. refs V , Your file, “kem.refs”, will be full of references. A similar procedure can be used to pull out all papers of some date, all papers from a given journal, all papers containing a certain group of keywords, etc. 5.8. refer Bugs and Some Solutions Blanks at Ends of Lines The refer program will mess up if there are blanks at the end of lines, espe- cially the %A author line, addbib carefully removes trailing blanks, but they may creep in again during editing. Use an ex editor command — r ■\ g/ *$/s/// V — or similar method to remove trailing blanks from your bibliography. Revision A, of 27 March 1990 Chapter 5 — refer — A Bibliography System 101 Interpolated Strings Interpreting Foreign Surnames Footnote Numbers Having bibliographic fields passed through as string definitions implies that interpolated strings (such as accent marks) must have two backslashes, so they can pass through copy mode intact. For instance, the word “tdldphone” would have to be represented: in order to come out correctly. In the %X field, by contrast, you will have to use single backslashes instead. This is because the %X field is not passed through as a string, but as the body of a paragraph macro. Another problem arises from authors with foreign names. When a name like “Valdry Giscard d’Estaing” is turned around by the -a option of refer, it will appear as “d’Estaing, Valdry Giscard,” rather than as “Giscard d’Estaing, Valdry.” To prevent this, enter names as follows: %A Vale\\*'ry Giscard\Od' Estaing %A Alexander Csoma\0de\0Ko\\* : ro\\* : s s (The second is the name of a famous Hungarian linguist.) The backslash-zero is an nrof f and trof f request meaning to insert a digit-width space. Because the second argument to the %A field contains no blank spaces to confuse the refer program, refer will treat the second field as a single word. This pro- tects against faulty name reversal, and also against mis-sorting. Footnote numbers are placed at the end of the line before the .[ macro. This line should be a line of text, not a macro. As an example, if the line before the . [ is a . R macro, then the . R will eat the footnote number. (The , R is an -ms request meaning change to Roman font.) In cases where the font needs changing, it is necessary to use the following method immediately before the citation: Aho \flet al.\fP . [ awk aho kernighan weinberger .] v . Now the reference will be to Aho et al ? The \f I changes to italics, and the \f R changes back to Roman font. Both these requests are nrof f and trof f requests, not part of -ms. If and when a footnote number is added after this sequence, it will indeed appear in the output. 2 Alfred V. Aho, Brian W. Kernighan, and Peter J. Weinberger, Awk — A Pattern Scanning and Text Processing Language, Bell Laboratories, Murray Hill, NJ. microsystems Revision A, of 27 March 1990 102 Formatting Documents 5.9. Internal Details of You have already read everything you need to know in order to use the re f er refer bibliography system. The remaining sections are provided only for extra infor- mation, and in case you need to change the way refer works. The output of refer is a stream of string definitions, one for each field in a reference. To create string names, percent signs are simply changed to an open bracket, and an [F string is added, containing the footnote number. The %X, %Y and %Z fields are ignored; however, the annobib program changes the %X to an . AP (annotation paragraph) macro. The Lesk citation used above yields this intermediate output: ( .ds [F 1 • J . ds [A Mike E. Lesk . ds [T Some Applications of Inverted Indexes on the Unix System . ds [J Unix Programmer's Manual . ds [I Bell Laboratories .ds [C Murray Hill, NJ .ds [D 1978 . ds [V 2a .nr [T 0 .nr [A 0 .nr [0 0 .] [ v 1 ; journal-article / These string definitions are sent to nr of f, which can use the -ms macros defined in /usr/ lib/mx/ms . xref to take care of formatting things properly. The initializing macro . ] - precedes the string definitions, and the labeled macro . ] [ follows. These are changed from the input . [ and . ] so that running a file twice through ref er is harmless. The . ] [ macro, used to print the reference, is given a type-number argument, which is a numeric label indicating the type of reference involved. Here is a list of the various kinds of references: Field Value Kind of Reference %J 1 Journal Article %B 3 Article in Book %G 4 Report, Government Report %\ 2 Book %M 5 Bell Labs Memorandum (undefined) none 0 Other The order listed above is indicative of the precedence of the various fields. In other words, a reference that has both the %J and %B fields will be classified as a journal article. If none of the fields listed is present, then the reference will be classified as “other.” The footnote number is flagged in the text with the following sequence, where number is the footnote number: &sun microsystems Revision A, of 27 March 1990 Chapter 5 — refer — A Bibliography System 103 The\*([. and\*(.] stand for bracketing or superscripting. Innroff with low- resolution devices such as the lpr and a crt, footnote numbers will be bracketed. In t rof f , or on daisy-wheel printers, footnote numbers will be superscripted. Punctuation normally comes before the reference number; this can be changed by using the -P (postpunctuation) option of ref er. In some cases, it is necessary to override certain fields in a reference. For instance, each time a work is cited, you may want to specify different page numbers, and you may want to change certain fields. This citation will find the Lesk reference, but will add specific page numbers to the output, even though no page numbers appeared in the original reference. The %I line will also override any previous publisher information, and the %0 line will append some commentary. The refer program simply adds the new %P, %I, and %0 strings to the output, and later strings definitions cancel earlier ones. It is also possible to insert an entire citation that does not appear in the biblio- graphic database. This reference, for example, could be added as follows: This will cause ref er to interpret the fields exactly as given, without searching the bibliographic database. This practice is not recommended, however, because it’s better to add new references to the database, so they can be used again later. If you want to change the way footnote numbers are printed, signals can be given on the . [ and . ] lines. For example, to say “See reference (2),” the citation should appear as: Revision A, of 27 March 1990 104 Formatting Documents Note that blanks are significant on these signal lines. If a permanent change in the footnote format is desired, it is best to redefine the [ . and . ] strings. 5.10. Changing the refer This section is provided for those who wish to rewrite or modify the refer Macros macros. This is necessary in order to make output correspond to specific journal requirements, or departmental standards. First there is an explanation of how new macros can be substituted for the old ones. Then several alterations are given as examples. The refer macros for nrof f and trof f supplied by the -ms macro package reside in /usr/lib/ms/ms . xref ; they are reference macros, for producing footnotes or endnotes. The refer macros used by roff bib, on the other hand, reside in /usr/lib/tmac/tmac . bib; they are for producing a stand- alone bibliography. To change the macros used by roff bib, you will need to get your own version of this shell script into the directory where you are working. This command will get you a copy of rof fbib and the macros it uses: You can proceed to change bibmac as much as you like. Then when you use rof fbib, you should specify your own version of the macros, which will be substituted for the normal ones ( hostname % rof fbib -m bibmac filename v J where filename is the name of your bibliography file. Make sure there’s a space between -m and bibmac. If you want to modify the refer macros for use with nrof f and the -ms mac- ros, you will need to get a copy of “ms.ref”: ( ' hostname% cp /usr/lib/ms/ms . ref refmac V - These macros are much like “bibmac”, except they have . FS and . FE requests, to be used in conjunction with the -ms macros, rather than independently defined . XP and . AP requests. Now you can put this line at the top of the paper to be formatted: f \ . so refmac V J Your new refer macros will override the definitions previously read in by the -ms package. This method works only if “refmac” is in the working directory. Suppose you didn’t like the way dates are printed, and wanted them to be parenthesized, with no comma before. There are five identical lines you will have to change. The first line below is the old way, while the second is the new way: msun V microsystems Revision A, of 27 March 1990 Chapter 5 — refer — A Bibliography System 105 In the first line, there is a comma and a space, but no parentheses. The “\c” at the end of each line indicates to nr of f that it should continue, leaving no extra space in the output. The “\&” in the second line is the do-nothing character; when followed by a space, a space is sent to the output. If you need to format a reference in the style favored by the Modem Language Association or Chicago University Press, in the form (city: publisher, date), then you will have to change the middle of the book macro [2 as follows: This would print (Berkeley: Computing Services, 1982) if all three strings were present. The first line prints a space and a parenthesis; the second prints the city (and a colon) if present; the third always prints the publisher (books must have a publisher, or else they’re classified as other); the fourth line prints a comma and the date if present; and the fifth line closes the parentheses. You would need to make similar changes to the other macros as well. #sun microsystems Revision A, of 27 March 1990 106 Formatting Documents #sun microsystems Revision A, of 27 March 1990 6 Formatting Tables with tbl This chapter provides instructions for preparing tbl input to format tables and for running the tbl preprocessor on a file. 1 It also supplies numerous examples after which to pattern your own tables. The description of instructions is precise but technical, and the newcomer may prefer to glance over the examples first, as tbl turns a simple description of a table into atroffornroff program that prints the table. From now on, unless noted specifically, we’ll refer to both trof f and nrof f as trof f since tbl treats them the same, tbl makes pho- totypesetting tabular material relatively simple compared to normal typesetting methods. You may use tbl with the equation formatting program eqn or vari- ous layout macro packages, as tbl does not duplicate their functions. Tables are made up of columns which may be independently centered, right- adjusted, left-adjusted, or aligned by decimal points. Headings may be placed over single columns or groups of columns. A table entry may contain equations, or may consist of several rows of text. Horizontal or vertical lines may be drawn as desired in the table, and any table or element may be enclosed in a box. For example: 1970 Federal Budget Transfers (in billions of dollars) State Taxes collected Money spent Net New York 22.91 21.35 -1.56 New Jersey 8.33 6.96 -1.37 Connecticut 4.12 3.10 -1.02 Maine 0.74 0.67 -0.07 California 22.29 22.42 +0.13 New Mexico 0.70 1.49 +0.79 Georgia 3.30 4.28 +0.98 Mississippi 1.15 2.32 +1.17 Texas 9.33 11.13 +1.80 The input to tbl is text for a document, with the text preceded by a . TS (table start) command and followed by a . TE (table end) command, tbl processes the 1 The material in this chapter is derived from Tbl — A Program to Format Tables, M.E. Lesk, Bell Laboratories, Murray Hill, New Jersey. 107 Revision A, of 27 March 1990 108 Formatting Documents tables, generating trof f formatting commands, and leaves the remainder of the text unchanged. The . TS and . TE lines are copied, too, so that trof f page layout macros, such as the formatting macros, can use these lines to delimit and place tables as necessary. In particular, any arguments on the . TS or . TE lines are copied but otherwise ignored, and may be used by document layout macro commands. The format of the input is as follows: f \ ordinary text of your document .TS first table .TE ordinary text of your document .TS second table .TE ordinary text of your document < / where the format of each table is as follows: r .TS options for the table ; format describing the layout of the table . data to be laid out in the table data to be laid out in the table . TE J Each table is independent, and must contain formatting information, indicated by format describing the layout of the table, followed by the data to be laid out in the table. You may precede the formatting information, which describes the individual columns and rows of the table, by options for the table that affect the entire table. 6.1. Munnlng tbl You can run tbl on a simple table by piping the tbl output to trof f (or your installation’s equivalent for the phototypesetter) with the command: hostname% tbl file | troff -options where file is the name of the file you want to format. For more complicated use, • sun microsystems Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 109 where there are several input files, and they contain equations and -ms macro package requests as well as tables, the normal command is: — \ ho st name % tbl filel file2 . . . | eqn | troff -ms J You can, of course, use the usual options on the trof f and eqn commands. The usage for nrof f is similar to that for trof f , but only printers such as the TELETYPE® Model 37 and Diablo-mechanism (DASI or GSI) or other printers that can handle reverse paper motions can print boxed tables directly. If you are running tbl on a line printer that does not filter reverse paper motions, use the col processor to filter the multicolumn output. If you are using an IBM 1403 line printer without adequate driving tables or post-filters, there is a special -TX command line option to tbl which produces output that does not have fractional line motions in it. The only other command line options recognized by tbl are macro package specifications such as -ms and -mm. These options are turned into commands to fetch the corresponding macro files; usually it is more convenient to place these arguments on the trof f part of the command line, tbl accepts them as well. Caveats: Note that when you use eqn and tbl together on the same file, put tbl first. If there are no equations within tables, either order works, but it is usually faster to run tbl first, since eqn normally produces a larger expansion of the input than tbl. However, if there are equations within tables, using the delim mechanism in eqn, you must put tbl first or the output will be scram- bled. Also, beware of using equations in n-style columns; this is nearly always wrong, since tbl attempts to split numerical format items into two parts, and this is not possible with equations. To avoid this, use the delim (xt) table option to prevent splitting numerical columns within the delimiters. For example, if the eqn delimiters are $ $, giving delim ( $ $ ) a numerical column such as 1245±16, means the column entry will not be divided after 1245, but after 16. This is the output: ‘1245±16’ (all in one column within the table). The only recommended in-line equation delimiters inside tables (tbl) are $$ or @@. Most of the other special characters have special meanings either inside eqn or tbl. Some versions of tbl limit tables to twenty columns; however, use of more than 16 numerical columns may fail because of limits in trof f, producing the ‘too many number registers’ message. Avoid using trof f number registers used by tbl within tables; these include two-digit names from 31 to 99, and names of the forms #x, x+, x I, mc, and x-, where x is any lower-case letter. The names ##, #-, and #" are also used in certain circumstances. To conserve number register names, the n and a formats share a register, hence the restriction that you may not use them in the same column. For aid in writing layout macros, tbl defines a number register TW which is the table width; it is defined by the time that the . TE macro is invoked and may be used in the expansion of that macro. More importantly, to assist in laying out microsystems Revision A, of 27 March 1990 110 Formatting Documents multi-page boxed tables the macro . T# is defined to produce the bottom lines and side lines of a boxed table, and then invoked at its end. Use of this macro in the page footer boxes a multi-page table. In particular, you can use the -ms mac- ros to print a multi-page boxed table with a repeated heading by giving the argu- ment H to the . TS macro. If the table start macro is written a line of the form must be given in the table after any table heading, or at the start if there aren’t any. Material up to the . TH is placed at the top of each page of table; the remaining lines in the table are placed on several pages as required. For exam- ple: Note that this is not a feature of tbl, but of the -ms layout macros. 6.2. Input Commands As indicated above, a table contains, first, global options, then a format section describing the layout of the table entries, and then the data to be printed. The format and data are always required, but not the options. The sections that fol- low explain how to enter the various parts of the table. Options That Affect the There may be a single line of options affecting the whole table. If present, this Whole Table line must follow the . TS line immediately, must contain a list of option names separated by spaces, tabs, or commas, and must be terminated by a semicolon. The allowable options are: center center the table (default is left-adjusted), expand make the table as wide as the current line length, box enclose the table in a box. #sun microsystems Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 111 Key Letters — Format Describing Data Items al lbox enclose each item in the table in a box. doublebox enclose the table in two boxes — a frame. tab(x) use x instead of tab to separate data items, linesize ( n ) set lines or rules (such as from box) in n point type, de 1 im ( xy ) recognize x and y as the eqn delimiters . A standard option line is: ' ■N center box tab (/) ; v J which centers the table on the page, draws a box around it, and uses the slash ‘/’ character as the column separator for data items. The tbl program tries to keep boxed tables on one page by issuing appropriate trof f ‘need’ ( . ne) commands. These requests are calculated from the number of lines in the tables, so if there are spacing commands embedded in the input, these requests may be inaccurate. Use normal trof f procedures, such as keep- release macros, in this case. If you must have a multi-page boxed table, use mac- ros designed for the purpose, as explained above under Running ‘tbl’. The format section of the table specifies the layout of the columns. Each line in this section corresponds to one line of the table, except that the last line corresponds to all following lines up to the next . T&, if present as shown below. Each line contains a key-letter for each column of the table. It is good practice to separate the key letters for each column by spaces, tabs, or a visible character such as a slash */*- Each key-letter is one of the following: L or 1 indicates a left-adjusted column entry. R or r indicates a right-adjusted column entry. C or c indicates a centered column entry. N or n indicates a numerical column entry, to line up the units digits of numerical entries. A or a indicates an alphabetic subcolumn; all corresponding entries are aligned on the left, and positioned so that the widest is centered within the column (see the “Some London Transport Statistics” example). S or s indicates a spanned heading; that is, it indicates that the entry from the previous column continues across this column; not allowed for the first column. indicates a vertically spanned heading; that is, it indicates that the entry from the previous row continues down through this row; not allowed for the first row of the table. When you specify numerical alignment, tbl requires a location for the decimal point. The rightmost dot (.) adjacent to a digit is used as a decimal point; if there microsystems Revision A, of 27 March 1990 112 Formatting Documents is no dot adjoining a digit, the rightmost digit is used as a units digit; if no align- ment is indicated, the item is centered in the column. However, you may use the special non-printing character string \& to override unconditionally dots and digits, or to align alphabetic data; this string lines up where a dot normally would, and then disappears from the final output. In the example below, the items shown at the left will be aligned in a numerical column as shown on the right: 13 13 4.2 4.2 26.4.12 26.4.12 abc abc abc\& abc 43X&3.22 433.22 74 9.12 749.12 Note: If numerical data are used in the same column with wider L or r type table entries, the widest number is centered relative to the wider L or r items (we use L here instead of 1 for readability; they have the same meaning as key- letters). Alignment within the numerical items is preserved. This is similar to the way a type data are formatted, as explained above. However, alphabetic sub- columns (requested by the a key-letter) are always slightly indented relative to L items; if necessary, the column width is increased to force this. This is not true for n type entries. Note: Do not use the n and a items in the same column. For readability, separate the key-letters describing each column with spaces. Indicate the end of the format section by a period. The layout of the key-letters in the format section resembles the layout of the actual data in the table. Thus a simple format is: which specifies a table of three columns. The first line of the table contains a cen- tered heading that spans across all three columns; each remaining line contains a left-adjusted item in the first column followed by two columns of numerical data. A sample table in this format is: Overall title Item-a 34.22 9.1 Item-b 12.65 .02 Items: c,d,e 23 5.8 Total 69.87 14.92 Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 113 Optional Features of Key There may be extra information following a key-letter that modifies its basic Letters behavior. Additional features of the key-letter system follow: Horizontal lines — A key-letter may be replaced by (underscore) to indicate a horizontal line in place of the corresponding column entry, or by *=’ to indicate a dou- ble horizontal line. You can also type this in the data portion. If an adjacent column contains a horizontal line, or if there are vertical lines adjoining this column, this horizontal line is extended to meet the nearby lines. If any data entry is provided for this column, it is ignored and a warning message is displayed. Vertical lines — A vertical bar may be placed between column key-letters. This draws a vertical line between the corresponding columns of the table. A vertical bar to the left of the first key-letter or to the right of the last one produces a line at the edge of the table. If two vertical bars appear between key-letters, a double vertical line is drawn. Space between columns — A number may follow the key-letter. This indicates the amount of separation between this column and the next column. The number normally specifies the separation in ens (one en is about the width of the letter ‘n’) 2 . If the expand option is used, these numbers are multiplied by a constant such that the table is as wide as the current line length. The default column separation number is 3. If the separation is changed, the largest space requested prevails. Vertical spanning — Normally, vertically-spanned items extending over several rows of the table are centered in their vertical range. If a key-letter is followed by t or T, any corresponding vertically-spanned item begins at the top line of its range. Font changes — A key-letter may be followed by a string containing a font name or number preceded by the letter f or F. This indicates that the corresponding column should be in a different font from the default font, which is usually Roman. All font names are one or two letters; a one-letter font name should be separated from whatever follows by a space or tab. The single letters B, b, I, and i are shorter synonyms for fB and f I. Font change commands given with the table entries override these specifications. Point size changes — A key-letter may be followed by the letter p or P and a number to indi- cate the point size of the corresponding table entries. The number may be a signed digit, in which case it is taken as an increment or decrement from the current point size. If both a point size and a column separation value are given, one or more blanks must separate them. 2 More precisely, an en is a number of points (1 point = 1/72 inch) equal to half the current type size. microsystems Revision A, of 27 March 1990 114 Formatting Documents Vertical spacing changes — A key-letter may be followed by the letter v or v and a number to indi- cate the vertical line spacing to be used within a multi-line corresponding table entry. The number may be a signed digit, in which case it is taken as an increment or decrement from the current vertical spacing. A column separation value must be separated by blanks or some other specification from a vertical spacing request. This request has no effect unless the corresponding table entry is a text block (see Text Blocks below). Column width indication — A key-letter may be followed by the letter w or w and a width value in parentheses. This width is used as a minimum column width. If the largest element in the column is not as wide as the width value given after the w, the largest element is considered to be that wide. If the largest element in the column is wider than the specified value, its width is used. The width is also used as a default line length for included text blocks. Normal trof f units can be used to scale the width value; if none is used, the default is ens. If the width specification is a unitless integer, you may omit the parentheses. If the width value is changed in a column, the last one given controls. Equal width columns — A key-letter may be followed by the letter e or E to indicate equal width columns. All columns whose key-letters are followed by e or E are made the same width. In this way, you can format a group of regularly spaced columns. Note: The order of the above features is immaterial; they need not be separated by spaces, except as indicated above to avoid ambiguities involving point size and font changes. Thus a numerical column entry in italic font and 12-point type with a minimum width of 2.5 inches and separated by 6 ens from the next column could be specified as npl2w (2 . 5i) f I 6 Alternative notation — Instead of listing the format of successive lines of a table on consecutive lines of the format section, separate successive line formats on the same line by commas. The format for the sample table above can be written: f A css. Inn. y Default — Column descriptors missing from the end of a format line are assumed to be L. The longest line in the format section, however, defines the number of columns in the table; extra columns in the data are ignored silently. Revision A, of 27 March 1990 Chapter 6 — Formatting T ables withtbl 115 Data to be Formatted in the Type the data for the table after the format line. Normally, each table line is Table typed as one line of data. Break very long input lines by typing a backslash ‘ V as a continuation marker at the end of the run-on line. That line is combined with the following line upon formatting and the ‘ V vanishes. The data for dif- ferent columns, that is, the table entries, are separated by tabs, or by whatever character has been specified in the option tabs option. We recommend using a visible character such as the slash character There are a few special cases: troff commands within tables — An input line beginning with a ‘ ’ followed by anything except a digit is assumed to be a command to troff and is passed through unchanged, retaining its position in the table. So, for example, you can produce space within a table by . sp commands in the data. Full width horizontal lines — An input line containing only the character (underscore) or “=’ (equal sign) represents a single or double line, respectively, extending the full width of the table. Single column horizontal lines — An input table entry containing only the character or '=’ represents a single or double line extending the full width of the column . Such lines are extended to meet horizontal or vertical lines adjoining this column. To obtain these characters explicitly in a column, either precede them by ‘\&’ or follow them by a space before the usual tab or newline. Short horizontal lines — An input table entry containing only the string *\_* represents a single line as wide as the contents of the column. It is not extended to meet adjoining lines. Vertically spanned items — An input table entry containing only the character string ' \ ~ ' indicates that the table entry immediately above spans downward over this row. It is equivalent to a table format key-letter of ,A \ Text blocks — To include a block of text as a table entry, precede it by T { and follow it by T } . To enter, as a single entry in the table, something that cannot con- veniently be typed as a simple string between tabs, use: / • ■ - T{ block of text T) . . . > Note that the T } end delimiter must begin a line; additional columns of data may follow after a tab on the same line. See the ‘New York Area Rocks’ example for an illustration of included text blocks in a table. If you use more than twenty or thirty text blocks in a table, various limits in the troff program are likely to be exceeded, producing diagnostics such as too many text block diversions. Revision A, of 27 March 1990 116 Formatting Documents Changing the Format of a Table Text blocks are pulled out from the table, processed separately by trof f , and replaced in the table as a solid block. If no line length is specified in the block of text itself, or in the table format, the default is to use LxC/(jN+\) where L is the current line length, C is the number of table columns spanned by the text, and N is the total number of columns in the table. The other parameters (point size, font, etc.) used in setting the block of text are those in effect at the beginning of the table (including the effect of the . TS macro) and any table format specifications of size, spacing and font, using the p, v and f modifiers to the column key-letters. Commands within the text block itself are also recognized, of course. However, trof f commands within the table data but not within the text block do not affect that block. Note: Although you can put any number of lines in a table, only the first 200 lines are used in calculating the widths of the various columns. Arrange a multi- page table as several single-page tables if this proves to be a problem. Other difficulties with formatting may arise because, in the calculation of column widths all table entries are assumed to be in the font and size being used when the . TS command was encountered, except for font and size changes indicated (a) in the table format section and (b) within the table data (as in the entry \s+3\fIdata\fP\sO ). Therefore, although arbitrary trof f requests may be sprinkled in a table, use requests such as . ps (set the point size) with care to avoid confusing the width calculations. If you must change the format of a table after many similar lines, as with sub- headings or summarizations, use the . T& (table continue) command to change column parameters. The outline of such a table input is: #sun \r microsystems Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 117 6.3. Examples . TS start of the table options afecting the whole table ; format of the columns . data to be formatted in the table data to be formatted in the table . T& indicates a new format for the table format of the columns . data to be formatted in the table data to be formatted in the table . T& indicates a new format for the table format of the columns . data to be formatted in the table data to be formatted in the table . TE end of the table as in the ‘Composition of Foods’ and ‘Some London Transport Statistics’ exam- ples. Using this procedure, each table line can be close to its corresponding for- mat line. Note: It is not possible to change the number of columns, the space between columns, the global options such as box, or the selection of columns to be made equal width. Here are some examples illustrating features of tbl. Glance through them to find one that you can adapt to your needs. Although you can use a tab to separate columns of data, a visible character is easier to read. The standard column separator here is the slash (/). If a slash is part of the data, we indicate a different separator, as in the first example. f#sun \r microsystems Revision A, of 27 March 1990 118 Formatting Documents Input: Output: .TS Language Authors Runs on tab (%) box ; c c c Fortran Many Almost anything 111. PL/1 IBM 360/370 Language%Authors%Runs on C BTL 1 1/45, H6000, 370 BLISS Camegie-Mellon PDP-10,11 Fortran%Many%Almost anything IDS Honeywell H6000 PL/1 %IBM%3 60/3 70 Pascal Stanford 370 C%BTL%1 1/45, H6O00, 370 BLISS%Carnegie— Mellon%PDP-10, 11 IDS%Honeywell%H6000 Pascal%Stanford%37 0 .TE Input: .TS tab (/) allbox; css c c c n n n . AT&T Common Stock Year/Price/Dividend 1971/41 -5 4/$2. 60 2/41-54/2 .70 3/46-55/2 . 87 4/40-53/3.24 5/45-52/3.40 6/51-59/. 95* .TE * (first quarter only) Output: AT&T Common Stock Year Price Dividend 1971 41-54 $2.60 2 41-54 2.70 3 46-55 2.87 4 40-53 3.24 5 45-52 3.40 6 51-59 .95* * (first quarter on] iy) f#sun microsystems Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 119 Input: .TS tab (/) box; css C I C I c 1 | 1 | n . Major New York Bridges Bridge/Designer/Length Brooklyn/J. A. Roebling/1595 Manhattan/G. Lindenthal/1 470 Williamsburg/L. L. Buck/1600 Queensborough/Palmer &/1182 / Hornbostel //1380 Triborough/O. H. Ammann/_ / /383 Output: Major New York Bridges Bridge Designer Length Brooklyn Manhattan J. A. Roebling G. Lindenthal 1595 1470 Williamsburg L. L. Buck 1600 Queensborough Palmer & Hornbostel 1182 Triborough 0. H. Ammann 1380 383 Bronx Whitestone 0. H. Ammann 2300 Throgs Neck 0. H. Ammann 1800 George Washington 0. H. Ammann 3500 Bronx Whitestone/O. H. Ammann/2300 Throgs Neck/0. H. Ammann/1800 George Washington/O. H. Ammann/3500 • TE Input: Output: .TS tab (/) ; c c np-2 | n | . / Stack /_ 1/46 /_ 2/23 /_ 3/15 /_ 4/6.5 /_ 5/2.1 /_ • TE Stack Revision A, of 27 March 1990 120 Formatting Documents Input: .TS tab (/) box; L L L L L _ L L | LB L L _ L L L . january/february/march april/may june/ july/Months august /September October/ november/december .TE Output: january february march april may june july Months august September October november december Input: .TS tab (/) box; cfB s s s . Composition of Foods . T& c less c less c | c | c I c . Food/Percent by Weight w_ \ * /Protein/Fat /Carbo- V/\ W /hydrate Output: Composition of Foods Percent by Weight Food Protein Fat Carbo- hydrate Apples .4 .5 13.0 Halibut 18.4 5.2 ... Lima beans 7.5 .8 22.0 Milk 3.3 4.0 5.0 Mushrooms 3.5 .4 6.0 Rye bread 9.0 .6 52.7 . T& 1 | n |n In. Apples/. 4/. 5/13.0 Halibut/18.4/5.2/. . . Lima beans/7.5/. 8/22.0 Milk/3.3/4.0/5.0 Mushrooms/ 3 . 5/ . 4/6 . 0 Rye bread/9.0/. 6/52. 7 • TE f#sun microsystems Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 121 Input: • TS tab (/) allbox; cf I s s c cw ( li) cw (li ) lp9 lp9 lp9 . New York Area Rocks Era/Formation/Age (years) Precambrian/Reading Prong/>l billion Paleozoic/Manhattan Prong/400 million Mesozoic/T { .na Newark Basin, incl. Stockton, Lockatong, and Brunswick formations; also Watchungs and Palisades. T)/200 million Cenozoic/Coastal Plain/T{ On Long Island 30,000 years; Cretaceous sediments redeposited by recent glaciation. .ad T) .TE Input: • EQ delim $$ .EN .TS tab (/) doublebox c c 1 1 . Name /Definition .sp .vs +2p Gamma/$GAMMA (z) = int sub 0 sup inf t sup (z-1) e sup -t dt$ Sine/$sin (x) = 1 over 2i ( e sup ix - e sup -ix )$ Error /$ roman erf (z) =2 over sqrt pi int sub 0 sup z e sup {-t sup 2) dt$ Bessel/$ J sub 0 (z) = 1 over pi int sub 0 sup pi cos ( z sin theta ) d theta$ Zeta/$ zeta (s) = sum from k=l to inf k sup -s "( Re's > 1)$ .vs -2p .TE Output: Name Definition Gamma r(z)=J Sine sin(r)=i( e -- e -“) Error erf(z) =-4l e "' dt Bessel r 1 f” Jq(z )= — 1 cos(z sin0)d 0 7t Zeta &)=ik-* (Re*>l) *=i Output: New York Area Rocks Era Formation Age (years) Precambrian Reading Prong >1 billion Paleozoic Manhattan Prong 400 million Mesozoic Newark Basin, incl. Stockton, Locka- tong, and Brunswick forma- tions; also Watchungs and Palisades. 200 million Cenozoic Coastal Plain On Long Island 30,000 years; Cre- taceous sediments redeposited by recent glaciation. Revision A, of 27 March 1990 122 Formatting Documents Input: .TS box, tab ( : ) ; cb s s s s cp-2 s s s s c | | c | c | c | c c | | c | c | c | c r2 | | n2 | n2 | n2 | n . Readability of Text Line Width & Leading for 10-Pt. Type Line: Set : 1 -Point : 2-Point : 4-Point Width : Solid : Leading : Leading : Leading 9 Pica:\-9.3:\-6. O:\-5. 3:\-7.1 14 Pica :\-4.5:\-0.6:\-0.3:\-1.7 19 Pica:\-5. O:\-5.1: 0. O:\-2.0 31 Pica : \-3 . 7 : \-3 . 8 : \-2 . 4 : \-3. 6 43 Pica:\-9. l:\-9. O:\-5. 9:\-8. 8 .TE Output: Readability of Text Line Width & Leading for 10-Pt. Ty XI Line Set 1 -Point 2-Point 4-Point Width Solid Leading Leading Leading 9 Pica -9.3 -6.0 -5.3 -7.1 14 Pica -4.5 -0.6 -0.3 -1.7 19 Pica -5.0 -5.1 0.0 -2.0 31 Pica -3.7 -3.8 -2.4 -3.6 43 Pica -9.1 -9.0 -5.9 -8.8 ®sun \r microsystems Chapter 6 — Formatting Tables with tbl 123 Input: • TS tab (/) ; c s cip-2 s 1 n a n . Some London Transport Statistics (Year 1964) Railway route miles/244 Tube/66 Sub-surface/22 Surface/156 . sp .5 . T& 1 r a r . Passenger traffic \- railway Journeys/674 million Average length/4.55 miles Passenger miles/3,066 million . T& 1 r a r . Passenger traffic \- road Journeys/2,252 million Average length/2.26 miles Passenger miles/5,094 million .TS 1 n a n . . sp .5 Vehicles/12,521 Railway motor cars/2,905 Railway trailer cars/1,269 Total railway/4,174 Omnibuses/ 8, 347 .TS 1 n a n . . sp .5 Staff/73, 739 Administrative, etc. /8, 553 Civil engineering/5,134 Electrical eng. /I, 714 Mech. eng. \- railway/4,310 Mech. eng. \- road/9,152 Railway operations/8,930 Road operations/35,946 .TE Output: Some London Transport Statistics (Year 1964) Railway route miles 244 Tube 66 Sub-surface 22 Surface 156 Passenger traffic - railway Journeys 674 million Average length 4.55 miles Passenger miles 3,066 million Passenger traffic - road Journeys 2,252 million Average length 2.26 miles Passenger miles 5,094 million Vehicles 12,521 Railway motor cars 2,905 Railway trailer cars 1,269 Total railway 4,174 Omnibuses 8,347 Staff 73,739 Administrative, etc. 5,553 Civil engineering 5,134 Electrical eng. 1,714 Mech. eng. - railway 4,310 Mech. eng. - road 9,152 Railway operations 8,930 Road operations 35,946 microsystems 124 Formatting Documents Input: .ps 8 .VS 10p .TS tab (/) center box; css ci s s c c c IB 1 n . New Jersey Representatives (Democrats) . sp .5 Name/Office address/Phone . sp .5 James J. Florio/23 S. White Horse Pike, Somerdale 08083/609-627-8222 William J. Hughes/2920 Atlantic Ave., Atlantic City 08401/609-345-4844 James J. Howard/801 Bangs Ave., Asbury Park 07712/201-774-1600 Frank Thompson, Jr./lO Rutgers PI., Trenton 08618/609-599-1619 Andrew Maguire/115 W. Passaic St., Rochelle Park 07662/201-843-0240 Robert A. Roe/U.S.P.O., 194 Ward St., Paterson 07510/201-523-5152 Henry Helstoski/666 Paterson Ave . , East Rutherford 07073/201-939-9090 Peter W. Rodino, Jr. /Suite 1435A, 970 Broad St., Newark 07102/201-645-3213 Joseph G. Minish/308 Main St., Orange 07050/201-645-6363 Helen S. Meyner/52 Bridge St., Lambertville 08530/609-397-1830 Dominick V. Daniels/895 Bergen Ave., Jersey City 07306/201-659-7700 Edward J. Patten/Natl. Bank Bldg., Perth Amboy 08861/201-826-4610 . sp .5 . T& ci s s IB 1 n . (Republicans) . sp . 5v Millicent Fenwick/41 N. Bridge St., Somerville 08876/201-722-8200 Edwin B. Forsythe/301 Mill St., Moorestown 08057/609-235-6622 Matthew J. Rinaldo/1961 Morris Ave., Union 07083/201-687-4235 .TE .ps 10 .vs 12p Output: New Jersey Representatives (Democrats) Name Office address Phone James J. Florio 23 S. White Horse Pike, Somerdale 08083 609-627-8222 William J. Hughes 2920 Atlantic Ave., Atlantic City 08401 609-345-4844 James J. Howard 801 Bangs Ave., Asbury Park 07712 201-774-1600 Frank Thompson, Jr. 10 Rutgers PI., Trenton 08618 609-599-1619 Andrew Maguire 115 W. Passaic St., Rochelle Park 07662 201-843-0240 Robert A. Roe U.S.P.O., 194 Ward St., Paterson 07510 201-523-5152 Henry Helstoski 666 Paterson Ave., East Rutherford 07073 201-939-9090 Peter W. Rodino, Jr. Suite 1435A, 970 Broad St., Newark 07102 201-645-3213 Joseph G. Minish 308 Main St., Orange 07050 201-645-6363 Helen S. Meyner 32 Bridge St., Lambertville 08530 609-397-1830 Dominick V. Daniels 895 Bergen Ave., Jersey City 07306 201-659-7700 Edward J. Patten Natl. Bank Bldg., Perth Amboy 08861 201-826-4610 (Republicans) Millicent Fenwick 41 N. Bridge St., Somerville 08876 201-722-8200 Edwin B. Forsythe 301 Mill St., Moorestown 08057 609-235-6622 Matthew J. Rinaldo 1961 Morris Ave., Union 07083 201-687-4235 This is a paragraph of normal text placed here only to indicate where the left and right margins are. Examine the appearance of centered tables or expanded tables, and observe how such tables are formatted. Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 125 Input: -TS center tab (/) ; csss csss c c c c n n n n . LYKE WAKE WALK Successful Crossings 1959—1966 Year /Fir st Crossings/Repeats /Total 1959/89/23/112 1960/222/33/255 1961/650/150/800 1962/1100/267/1367 1963/1054/409/1463 1964/1413/592/2005 1965/2042/771/2813 1966/2537/723/3260 .TE Output: LYKE WAKE WALK Successful Crossings 1959-1966 Year First Crossings Repeats Total 1959 89 23 112 1960 222 33 255 1961 650 150 800 1962 1100 267 1367 1963 1054 409 1463 1964 1413 592 2005 1965 2042 771 2813 1966 2537 723 3260 Revision A, of 27 March 1990 126 Formatting Documents Input: • TS tab (/) box; cb s s s C I c | c s ltiw(li) | ltw (2i) | lp8 | lw(1.6i)p8 . Some Interesting Places Name/Descript ion/Practical Information T { American Museum of Natural History T}/T{ The collections fill 11.5 acres (Michelin) or 25 acres (MTA) of exhibition halls on four floors. There is a full-sized replica of a blue whale and the world's largest star sapphire (stolen in 1964). T}/Hours/10-5, ex. Sun 11-5, Wed. to 9 \ * /\ ‘ /Location/T { Central Park West & 79th St. T) \‘/\‘/Admission/Donation: $1.00 asked \ */\“ /Subway /AA to 81st St. \“/\" /Telephone/212-873-422 5 Bronx Zoo/T{ About a mile long and .6 mile wide, this is the largest zoo in America. A lion eats 18 pounds of meat a day while a sea lion eats 15 pounds of fish. T)/Hours/T{ 10-4:30 winter, to 5:00 summer T) \*/\‘ /Location/T { 185th St. & Southern Blvd, the Bronx. T) \*/\“/Admission/$l .00, but Tu, We,Th free \“/\*/Subway/2, 5 to East Tremont Ave. \“/\“ /Telephone/2 12- 933-1 75 9 Brooklyn Museum/T{ Five floors of galleries contain American and ancient art. There are American period rooms and architectural ornaments saved from wreckers, such as a classical figure from Pennsylvania Station. T) /Hours/Wed-Sat, 10-5, Sun 12-5 \“/\" /Location/T { Eastern Parkway & Washington Ave., Brooklyn. T) \‘/\“ /Admission/Free \“/\“/Subway/2, 3 to Eastern Parkway. \*/V /Telephone/212-638-5000 T { New-York Historical Society T)/T{ All the original paintings for Audubon's .1 Birds of America .R are here, as are exhibits of American decorative arts. New York history, Hudson River school paintings, carriages, and glass paperweights. T)/Hours/T{ Tues-Fri & Sun, 1-5; Sat 10-5 T) \‘/\“ /Location/T { Central Park West & 77th St. T) \ * /\ “ /Admission/Free \“/\*/Subway/AA to 81st St. \*/\‘ /Telephone/2 12- 8 73-3400 .TE sun microsystems Revision A, of 27 March 1990 Chapter 6 — Formatting Tables with tbl 127 Output: Some Interesting Places Name Description Practical Information American Muse- um of Natural History The collections fill 11.5 acres (Michelin) or 25 acres (MTA) of exhibition halls on four floors. There is a full-sized re- plica of a blue whale and the world’s largest star sapphire (stolen in 1964). Hours Location Admission Subway Telephone 10-5, ex. Sun 11 -5, Wed. to 9 Central Park West & 79th St. Donation: $1.00 asked A A to 81st St. 212-873-4225 Bronx Zoo About a mile long and .6 mile wide, this is the largest zoo in America. A lion eats 18 pounds of meat a day while a sea lion eats 15 pounds of fish. Hours Location Admission Subway Telephone 10-4:30 winter, to 5:00 summer 185th St. & Southern Blvd, the Bronx. $1.00, but Tu,We,Th free 2, 5 to East Tremont Ave. 212-933-1759 Brooklyn Museum Five floors of galleries contain American and ancient art. There are American period rooms and architectural orna- ments saved from wreckers, such as a classical figure from Pennsylvania Station. Hours Location Admission Subway Telephone Wed-Sat, 10-5, Sun 12-5 Eastern Parkway & Washington Ave., Brooklyn. Free 2,3 to Eastern Parkway. 212-638-5000 New-York Histor- ical Society All the original paintings for Audubon’s Birds of America are here, as are exhibits of Ameri- can decorative arts, New York history, Hudson River school paintings, carriages, and glass paperweights. Hours Location Admission Subway Telephone Tues-Fri & Sun, 1-5; Sat 10-5 Central Park West & 77th St. Free A A to 81st St. 212-873-3400 sun microsystems Revision A, of 27 March 1990 128 Formatting Documents 6.4. tbl Commands Table 6-1 tbl Command Characters and Words Command Meaning a A Alphabetic subcolumn allbox Draw box around all items b B Boldface item box Draw box around table c C Centered column center Center table in page doublebox Doubled box around table e E Equal width columns expand Make table full line width f F Font change i I Italic item 1 L Left adjusted column n N Numerical column nnn Column separation P P Point size change r R Right adjusted column s S Spanned item t T Vertical spanning at top tab ( x ) Change data separator character T { T} Text block v V Vertical spacing change w W Minimum width value .XX Included trof f command 1 Vertical line II Double vertical line - Vertical span Vertical span = Double horizontal line Horizontal line \ Short horizontal line Revision A, of 27 March 1990 7 Typesetting Mathematics with eqn This chapter explains how to use the eqn preprocessor for printing mathematics on a phototypesetter, and provides numerous examples after which to model equations in your documents . 1 You describe mathematical expressions in an English-like language that the eqn program translates into trof f commands for final trof f formatting. In other words, eqn sets the mathematics while trof f does the body of the text, eqn provides accurate and relatively easy mathematical phototypesetting, which is not easy to accomplish with normal typesetting machines. Because the mathematical expressions are embedded in the running text of a manuscript, the entire document is produced in one process. For example, you can set in-line expressions like lim (tan x) 5 ” 21 = l or display equations like x — m/2 G(z) = e toC(,) = exp ,S t z k *21 *21 S,i‘lk 2,2 1+S \Z +' S 2 * Z ~ 2 !~ , S 2 z 2 S 2 V 1 +— — ■ +— — + • 2 2 - 2 ! =£ m > 0 S 2 ‘ S ka *,*,. . *.20 l*‘&i! 2 *-Jfc 2 ! A,+2Jfc,+ • • • +mJk.=?n eqn knows relatively little about mathematics. In particular, mathematical sym- bols like +, -, x, parentheses, and so on have no special meanings, eqn is quite happy to set these symbols, and they will look good. eqn also produces mathematics with nr of f . The input is identical, but you have to use the programs neqn and nrof f instead of eqn and trof f . Of course, some things won’t look as good because your workstation or terminal does not provide the variety of characters, sizes and fonts that a phototypesetter does, but the output is usually adequate for proofreading. 1 The material in this chapter is derived from A System for Typesetting Mathematics, B.W. Kemighan, L. L. Cherry and Typesetting Mathematics — User’s Guide, B.W. Kemighan, L.L. Cherry, Bell Laboratories, Murray Hill, New Jersey. wsun microsystems 129 Revision A, of 27 March 1990 130 Formatting Documents 7.1. Displaying Equations To tell eqn where a mathematical expression begins and ends, mark it with lines — . EQ and . EN beginning . EQ and . EN. Thus if you type the lines: r A .EQ x=y+z .EN V y your output will look like: x=y+z eqn copies ‘.EQ’ and ‘.EN’ through untouched. This means that you have to take care of things like centering, numbering, and so on yourself. The common way is to use the trof f and nrof f macro package ‘-ms’, which provides mac- ros for centering, indenting, left-justifying and making numbered equations. With the -ms package, equations are centered by default. To left-justify an equa- tion, use . EQ L instead of . EQ. To indent it, use . EQ I. You can also supplement eqn with trof f commands as desired; for example, you can produce a centered display with the input: / \ . ce .EQ x sub i = y sub i ... .EN V J which produces X;=y; ■ ■ ■ You can call out any of these by an arbitrary ‘equation number,’ which will be placed at the right margin. For example, the input / A .EQ I (3.1a) x = f (y/2 ) + y/2 .EN V J 7.2. Running eqn and neqn produces the output x=f(yl2)+y/2 (3.1a) There is also a shorthand notation so you can enter in-line expressions like n? without . EQ and . EN. This is described in the section “Shorthand for In-line Equations.” To print a document that contains mathematics on the phototypesetter, use: hostname% eqn files | troff - options | lpr -t -"Printer V / troff or your installation’s equivalent does the formatting, which is sent to microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 131 your phototypesetter as indicated by -P printer . If you use the -ms macro pack- age for example, type: f > hostname% eqn files | troff -ms -t I lpr -t -Printer V To display equations on the standard output, your workstation screen, use nrof f as follows: The language for equations recognized by neqn is identical to that of eqn, although of course the output is more restricted. You can use the online rendi- tion of the mathematical formulae for proofing, but the output does not accu- rately represent the symbols and fonts. You can of course pipe the output through more for easier viewing: hostname % neqn files | nroff -options | more V or redirect it to a file: hostname% neqn files | nroff -options > newfile v To use a GSI or DASI terminal as the output device, type: hostname% neqn files | nroff -Tjc ^ _ where x is the terminal type you are using, such as 300 or 300S. To send neqn output to the printer, type: / — — — hostname% neqn file | nroff -options | lpr -P printer V You can use eqn and neqn with the tbl program for setting tables that contain mathematics. Use tbl before eqn or neqn, like this: Revision A, of 27 March 1990 132 Formatting Documents 7.3. Putting Spaces in the eqn removes spaces and newlines within an expression and leaves normal text Input Text alone. Thus, between . EQ and . en. A .EQ x=y+z .EN — J and / A .EQ X = y + z .EN L J and c • EQ X = y + z .EN V -J all produce the same output, namely: x=y+z You should use spaces and newlines freely to make your input equations readable and easy to edit. In particular, very long lines are a bad idea, since they are often hard to fix if you make a mistake. The only way eqn can deduce that some sequence of letters might be special is if that sequence is separated from the letters on either side of it. To do this, sur- round a special word by ordinary spaces (or tabs or newlines), as shown in the previous section. You can also make special words stand out by surrounding them with tildes or circumflexes: r \ .EQ x~=~2~pi~int~sin~ ('omega't') ~dt .EN — V is much the same as the last example, except that the tildes not only separate the magic words like sin, omega, and so on, but also add extra spaces, one space per tilde: x= 27 tJsin(co/ )dt You can also use braces { } and double quotes " ..." to separate special words; these characters that have special meanings are described later. Remembering that a blank is a delimiter can be a problem. For instance, a com- mon mistake is typing: Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 133 — N .EQ f (x sub i) .EN V ' j which produces instead of /(*.) fM eqn cannot tell that the right parenthesis is not part of the subscript. Type instead: — \ .EQ f (x sub i ) .EN > 7.4. Producing Spaces in the Output Text To force extra spaces into the output, use a tilde ~ for each space you want: — "N • EQ x~=~y~+~z .EN V > gives x =y + z You can also use a circumflex which gives a space half the width of a tilde. It is mainly useful for fine-tuning. Use tabs to position pieces of an expression, but you must use trof f commands to set the tab stops. 7.5. Symbols, Special Names, and Greek Letters eqn knows some mathematical symbols, some mathematical names, and the Greek alphabet. For example, ( N • EQ x=2 pi int sin ( omega t)dt .EN i. produces ■x=2jijsin( 2 =z 2 Furthermore, don’t forget to leave a space (or a tilde, etc.) to mark the end of a subscript or superscript. A common error is to say something like .EQ y = (x sup 2)+l .EN which causes >=(x 2>+1 instead of the intended >=(* 2 )+i which is produced by: .EQ y = (x sup 2 )+l .EN #>sun microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 135 Subscripted subscripts and superscripted superscripts also work: .EQ x sub i sub 1 .EN is A subscript and superscript on the same thing are printed one above the other if the subscript comes first: .EQ x sub i sup 2 .EN is Xi 2 Other than this special case, sub and sup group to the right, so — \ x sup y sub z v 7 means x y \ not**,. 7.7. Grouping Equation Normally, the end of a subscript or superscript is marked simply by a blank, tab, Parts — { and } tilde, and so on. If the subscript or superscript is something that has to be typed with blanks in it, use the braces { and } to mark the beginning and end of the subscript or superscript: — \ .EQ e sup {i omega t} .EN J is e ICO/ You can always use braces to force eqn to treat something as a unit, or just to make your intent perfectly clear. Thus: — • EQ x sub {i sub 1} sup 2 .EN v y is with braces, but microsystems Revision A, of 27 March 1990 136 Formatting Documents f > .EQ x sub i sub 1 sup 2 .EN V J is which is rather different. Braces can occur within braces if necessary: r .EQ e sup {i pi sup {rho +1}} .EN v _ is The general rule is that anywhere you could use some single entry like x, you can use an arbitrarily complicated entry if you enclose it in braces, eqn looks after all the details of positioning it and making it the right size. In all cases, make sure you have the right number of braces. Leaving one out or adding an extra causes eqn to complain bitterly. Occasionally you have to print braces. To do this, enclose them in double quotes, like " { ". Quoting is discussed in more detail in Quoted Text. 7.8. Fractions — over To make a fraction, use the word over: \ .EQ a+b over 2c =1 .EN gives a+b 2c The line is made the right length and positioned automatically. .EQ a+b over c+d+e = 1 .EN produces a+b c+d+e • sun Nr microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 137 Use braces to clarify what goes over what: sin(x) When there is both an over and a sup in the same expression, eqn does the sup before the over, so . -b 2 . - is instead of -b n The rules that determine which operation is done first in cases like this are summarized in the section “Precedences and Keywords.” When in doubt, however, use braces to make clear what goes with what. 7.9. Square Roots — sqrt To draw a square root, use sqrt: Note: Square roots of tall quantities look sloppy because a root-sign big enough to cover the quantity is too dark and heavy: 138 Formatting Documents Big square roots are generally better written as something to a power: i which is (a 2 lb 2 ) 2 .EQ (a sup 2 /b sub 2 ) sup (1 over 2} .EN l 7.10o Summation, Integral, and Other Large Operators To produce summations, integrals, and similar constructions, use: .EQ sum from i=0 to { i= inf) x sub i .EN V J which produces 2 >.- i=0 Notice that you use braces to indicate where the upper part i=~ begins and ends. No braces are necessary for the lower part i=o, because it does not contain any blanks. The braces will never hurt, and if the from and to parts contain any blanks, you must use braces around them. The from and to parts are both optional, but if both are used, they have to occur in that order. Other useful characters can replace the sum in our example: \ • EQ int prod union inter .EN V J become, respectively, J n U n Since the thing before the from can be anything, even something in braces, f rom-to can often be used in unexpected ways: • EQ lim from {n -> inf) x sub n =0 .EN V J t#sun microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 139 is limx„=0 7.11. Size and Font By default, equations are set in 10-point type with standard mathematical con- Changes ventions to determine what characters are in roman and what in italic. Although eqn makes a valiant attempt to use aesthetically pleasing sizes and fonts, it is not perfect. To change sizes and fonts, use size n and roman, italic, bold and fat. Like sub and sup, size and font changes affect only the thing that follows them; they revert to the normal situation at the end of it. Thus r A .EQ bold x y .EN V J is xy and ( A • EQ size 14 bold x = y + size 14 {alpha + beta} .EN V gives X=y+OC+|3 As always, you can use braces if you want to affect something more complicated than a single letter. For example, you can change the size of an entire equation by r A ■ EQ size 12 { ... } .EN v Legal sizes that may follow size are the same as those allowed in trof f : 6, 7, 8, 9, 10, 1 1, 12, 14, 16, 18, 20, 22, 24, 28, 36. You can also change the size by a given increment or decrement. For example, you can say s iz e +2 to make the size two points bigger, or size -3 to make it three points smaller. This is easier because you don’t have to know what the current size is. The size variable in eqn translates into atroff \s construct. However, trof f only recognizes one digit after the + or - sign. Therefore, \ s+9or\s- 9 are respectively the largest incremental and decremental point size changes. If you are using fonts other than roman, italic and bold, you can say font X where X is a one character t rof f name or number for the font. Since eqn is tuned for roman, italic and bold, other fonts may not appear quite as good. Revision A, of 27 March 1990 140 Formatting Documents The fat operation takes the current font and widens it by overstriking: fat grad is V and fat {x sub i} is*,-. If an entire document is to be in a non-standard size or font, it is a severe nui- sance to have to write out a size and font change for each equation. Accordingly, you can set a global size or font which thereafter affects all equations. At the beginning of any equation, you might say, for instance, • EQ gsize 16 gfont R .EN V , to set the size to 16 and the font to roman thereafter. In place of R, you can use any of the trof f font names. The size after gsize can be a relative change with + or -. Generally, gsize and gfont will appear at the beginning of a document but they can also appear throughout a document: you can change the global font and size as often as needed. For example, in a footnote 2 you will typically want the size of equations to match the size of the footnote text, which is two points smaller than the main text. Don’t forget to reset the global size at the end of the footnote. 7.12. Diacritical Marks To get accent marks on top of letters, there are several words: c X dot X X dotdot X X hat X X tilde X X vec t X dyad % X bar X X under X v > The diacritical mark is placed at the right height. The bar and under are made the right length for the entire constmct, as inr+y+z; other marks are centered. For example .EQ x dot under + x hat + y tilde + X hat + Y dotdot = z+Z bar .EN >. ^ Like this one, in which we have a few random expressions like x, and rc 2 . The sizes for these were set by the command gsize '-2. &sun microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 141 produces x+x +y +X +Y =z +Z 7.13. Quoted Text Any input entirely within quotes is not subject to any of the font changes and spacing adjustments that you normally set. This provides a way to do your own spacing and adjusting if needed: is sin(x) +sin(x) You also use quotes to get braces and other eqn keywords printed: is { size alpha } and is { size alpha } The construction " " is often used as a place-holder when grammatically eqn needs something, but you don’t actually want anything in your output. For example, to make 2 He, you can’t just type sup 2 roman He because a sup has to be a superscript on something. Thus you must say To get a literal quote use \ ". trof f characters like \ (bs can appear unquoted, but more complicated things like horizontal and vertical motions with \h and \v should always be quoted. Revision A, of 27 March 1990 142 Formatting Documents 7.14. Lining Up Equations Sometimes it’s necessary to line up a series of equations at some horizontal posi- — mark and lineup tion, often at an equals sign. To do this, use the two operations called mark and lineup. The word mark may appear once at any place in an equation. It remembers the horizontal position where it appeared. Successive equations can contain one occurrence of the word lineup. The place where lineup appears is made to line up with the place marked by the previous mark if at all possible. Thus, for example, you can say c A .EQ I x+y mark = z .EN .EQ I x lineup = 1 .EN V J to produce x+y=z 7.15. Big Brackets JC=1 For reasons beyond the scope of this chapter, when you use eqn and -ms, use either . EQ I or . EQ L, as mark and lineup don’t work with centered equa- tions. Also bear in mind that mark doesn’t look ahead; f .EQ x mark =1 x+y lineup =z .EN >. / isn’t going to work, because there isn’t room for the x+y part after the mark has processed the x. To get big brackets [ ] , braces { } , parentheses ( ) , and bars | things, use the left and right commands: I around c .EQ left { a over b + 1 right } ~=~ left ( c over d right ) + left [ e right ] .EN A v > ► = * ■" c + \e] l 6 J d L J The resulting brackets are made big enough to cover whatever they enclose. Other characters can be used besides these, but they are not likely to look very Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 143 7.16. Piles — pile good. Two exceptions are the floor and ceiling characters: Several warnings about brackets are in order. First, braces are typically bigger than brackets and parentheses, because they are made up of three, five, seven, etc., pieces, while brackets can be made up of two, three, etc. Second, big left and right parentheses often look poor, because the character set is poorly designed. The right part may be omitted: a ‘left something’ need not have a correspond- ing ‘right something’. If the right part is omitted, put braces around the thing you want the left bracket to encompass. Otherwise, the resulting brackets may be too large. If you want to omit the left part, things are more complicated, because techni- cally you can’t have a right without a corresponding left. Instead you have to say for example. The left "" means a ‘left nothing’. This satisfies the rules without hurting your output. There is a general facility for making vertical piles of things; it comes in several flavors. For example: will make The elements of the pile are centered one above another at the right height for most purposes. There can be as many elements as you want. The keyword above is used to separate the pieces; put braces around the entire list. The ele- ments of a pile can be as complicated as needed, even containing more piles. Revision A, of 27 March 1990 144 Formatting Documents Three other forms of pile exist: lpile makes a pile with the elements left- justified; rpile makes a right-justified pile; and cpile makes a centered pile, just like pile. The vertical spacing between the pieces is somewhat larger for lpiles, rpiles, and cpiles than it is for ordinary piles. For example; sign(x)=< 1 0 -1 ifx>0 ifx=0 ifx<0 Notice the left brace without a matching right one. 7.17. Matrices — matrix It is also possible to make matrices. For example, to make a neat array like X; X 2 Jt ? 2 you have to type This produces a matrix with two centered columns. The elements of the columns are then listed just as for a pile, each element separated by the word above. You can also use lcol or r col to left or right adjust columns. Each column can be separately adjusted, and there can be as many columns as you like. The reason for using a matrix instead of two adjacent piles, by the way, is that if the elements of the piles don’t all have the same height, they won’t line up prop- erly. A matrix forces them to line up, because it looks at the entire structure before deciding what spacing to use. A word of warning about matrices: each column must have the same number of elements in it. Otherwise, results are unpredictable. sun microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 145 7,18. Shorthand for In-line In a mathematical document, it is necessary to follow mathematical conventions Equations — de 1 im not just in display equations, but also in the body of the text. For example you need variable names like x to be in italics. Although you can do this by sur- rounding the appropriate parts with the macro requests . EQ and . EN, the con- tinual repetition of . EQ and . EN is a nuisance. Furthermore, with -ms, . EQ and . EN imply a displayed equation. eqn provides a shorthand for short in-line expressions. You can define two char- acters to mark the left and right ends of an in-line equation, and then type expres- sions in the middle of text lines. To set both the left and right characters to dollar signs, for example, add to the beginning of your document the three lines Having done this, you can then say things like This works as you might expect; spaces, newlines, and so on are significant in the text, but not in the equation part itself. Multiple equations can occur in a single input line. Enough room is left before and after a line that contains in-line expressions that something like $sum from i=l to n x sub i$ does not interfere with the lines sur- rounding it. The printed result looks like: Let a ; be the primary variable, and let p be zero. Then we can show that x 1 is >0. To turn off the delimiters, use: Notes: Don’t use braces, tildes, circumflexes, or double quotes as delimiters; chaos will result. Also, if you’re using tbl, don’t use sharps (pound signs) either. 7.19. Definitions — eqn provides a string-naming facility so you can give a frequently-used string of de f ine characters a name, and thereafter just type the name instead of the whole string. For example, if the sequence appears repeatedly throughout a paper, you can save re-typing it each time by defining it like this: .EQ define xy ' x sub i sub 1 + y sub i sub 1' .EN This makes xy a shorthand for whatever characters occur between the single quotes in the definition. You can use any character instead of quote to mark the ends of the definition, as long as it doesn’t appear inside the definition. Now you can use xy like this: ■ EQ f (x) = xy ... .EN and so on. Each occurrence of xy will expand into what it was defined as. Be sure to leave spaces or their equivalent around the name when you actually use it, so eqn will be able to identify it as special. There are several things to watch out for. First, although definitions can use pre- vious definitions, as in .EQ define xi ' x sub i ' define xil ' xi sub 1 ' .EN > Don’t define something in terms of itself. A common error is to say • EQ define X ' roman X ' .EN This is a guaranteed disaster, since X is now defined in terms of itself. If you say — — — > .EQ define X ' roman "X" ' .EN > however, the quotes protect the second X, and everything works fine. You can redefine eqn keywords. You can make slash (/) mean over by saying .EQ define / ' over ' .EN #sun XT microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 147 or redefine over as / with If you need things to print on a workstation or terminal as well as on the photo- typesetter, it is sometimes worth defining a symbol differently in neqn and eqn. To do this, use ndef ine and tdef ine. A definition made with ndef ine only takes effect if you are running neqn; if you use tdef ine, the definition only applies for eqn. Names defined with plain define apply to both eqn and neqn. 7.20. Tuning the Spacing Although eqn tries to get most things at the right place on the paper, it isn’t per- fect, and occasionally you will need to tune the output to make it just right. You can get small extra horizontal spaces with tilde and circumflex. You can also say back n and f wd n to move small amounts horizontally. The n is how far to move in l/100s of an em (an em is about the width of the letter ‘m’.) Thus back 50 moves back about half the width of an m. Similarly you can move things up or down with up n and down n. As with sub or sup, the local motions affect the next thing in the input, and this can be anything if it is enclosed in braces. 7.21. Troubleshooting If you make a mistake in an equation, like leaving out a brace, having one too many, or having a sup with nothing before it, eqn tells you with the message: where x and y are approximately the lines between which the trouble occurred, and z is the name of the file in question. The line numbers are approximate, so look nearby as well. There are also self-explanatory messages that arise if you leave out a quote or try to run eqn on a non-existent file. If you want to check a document before actually printing it, run: to throw away the output but display the messages. If you use something like dollar signs as delimiters, it is easy to leave one out. You may also occasionally forget one half of a pair of macros or have an unbal- anced font change. These can cause problems, but you can check for balanced pairs of delimiters and macros with checkeq and checknr. For instance, to run checkeq on this chapter called eqn . ug to check for unbalanced pairs of . EQs and . ENs, type: Revision A, of 27 March 1990 148 Formatting Documents We left out the . EQ before the . EN on line 46 to show you some sample output. This also reports on the delimiters. You can also use checknr with specific options to check specifically for a particular macro pair. For example, to run checknr to check that there is an . EQ for every . EN, type: Specify the macro pair you want to check for with the -a option and the six char- acters in the pair. The -s option ignores size changes and the -f option ignores font changes. See checknr(l) in the SunOS Reference Manual for more details. Inline equations can only be so big because of an internal buffer in trof f . If you get a message word overflow, you have exceeded this limit. If you print the equation as a displayed equation, that is, offset from the body of the text with . EQ and . EN, this message will usually go away. The message line over- flow indicates you have exceeded an even bigger buffer. The only cure for this is to break the equation into two separate ones. On a related topic, eqn does not break equations by itself; you must split long equations up across multiple lines by yourself, marking each by a separate . EQ ... . EN sequence, eqn does warn about equations that are too long to fit on one line. 7.22. Precedences and Keywords The operations that group to the left are: over sqrt left right All others group to the right. For example, in the expression If you don’t use braces, eqn will do operations in the order shown in this list. dyad vec under bar tilde hat dot dotdot fwd back down up fat roman italic bold size sub sup sqrt over from to Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 149 f \ .EQ a sup 2 over b .EN V 7 sup is defined to have a higher precedence than over, so this construction is 2 1 parsed as ~ instead of a b . Naturally, you can always force a particular parsing by placing braces around expressions. Digits, parentheses, brackets, punctuation marks, and the following mathematical words are converted to Roman font when encountered: t — sin cos tan sinh cosh tanh arc max min lim log In exp Re Im and if for det V The following character sequences are recognized and translated as shown. T able 7- 1 Character Sequence T ranslation You Type Translation >= > <= < == = i = * +- ± -> — > <- <— « « » » inf oo partial a prime / approx nothing ~ cdot times X del V grad V f • • • r 1 • • • 1 sum z int J prod n union u inter n microsystems Revision A, of 27 March 1990 150 Formatting Documents Table 7-2 To obtain Greek letters, simply spell them out in whatever case you want: Greek Letters You Type Translation You Type Translation DELTA A iota l GAMMA r kappa K LAMBDA A lambda X OMEGA Q mu F PHI <6 nu V PI n omega CD PSI T omicron 0 SIGMA I phi THETA 0 Pi 7t UP SI LON Y psi V XI E rho P alpha a sigma a beta p tau X chi X theta 0 delta 5 upsilon D epsilon e xi % eta *1 zeta gamma 7 fsun ‘■Sr microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 151 The eqn keywords, except for characters with names, follow. T able 7-3 eqn Keywords above lpile back mark bar matrix bold ndefine ccol over col pile cpile rcol define right delim roman dot rpile dotdot size down sqrt dyad sub fat sup font tdefine from tilde fwd to gfont under gsize up hat vec italic » lcol { } left tt it lineup f#sun ’SS’’ mirrnc i/ctomc microsystems Revision A, of 27 March 1990 152 Formatting Documents 7.23. Several Examples Here is the complete source for several examples and for the three display equa- tions in the introduction to this chapter. Square root Input: Summation, Integral, and Other Large Operators Input: Output: lim (tan x )=<*> x-mi/2 Input: Output: lim (tanx) sin2l: = 1 x-»n/2 • sun v microsystems Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 153 define emx " {e sup mx)" define mab "{m sqrt ab}" define sa "{sqrt a}" define sb "{sqrt b}" int dx over {a emx - be sup -mx}~=~ left { lpile { 1 over {2 mab) 'log' { sa emx - sb}over{sa emx + sb} above 1 over mab'tanh sup -1 ( sa over sb emx ) above —1 over mab'coth sup -1 ( sa over sb emx ) Quoted Text lim~ roman "sup" ~x sub n .EN lim supr„=0 Big Brackets left [ x+y over 2a right ] ~=~1 .EN Revision A, of 27 March 1990 154 Formatting Documents Fractions a sub 0 + b sub 1 over {a sub 1 + b sub 2 over {a sub 2 + b sub 3 over { a sub 3 + ...}}} .EN .EQ I G(z)~mark =' e sup { In ' G(z) } '=' exp left ( sum from k>=l {S sub k z sup k} over k right ) '=' prod from k>=l e sup {S sub k z sup k /k } .EN ■ EQ I lineup = left ( 1 + S sub 1 z + { S sub 1 sup 2 z sup 2 } over 2 ! + ... right ) left ( 1+ { S sub 2 z sup 2 } over 2 + { S sub 2 sup 2 z sup 4 } over { 2 sup 2 cdot 2 ! } + ... right ) ... .EN 1+5 \Z H — S 2 z 2 S{z A ~~2 _+ 2 z -2! + Revision A, of 27 March 1990 Chapter 7 — Typesetting Mathematics with eqn 155 Input: f — v .EQ I lineup = sum from m>=0 left ( sum from pile { k sub 1 ,k sub 2 k sub m >=0 above k sub 1 +2k sub 2 + ... +mk sub m =m} { s sub 1 sup {k sub 1} } over {i sup k sub 1 k sub 1 ! } { s sub 2 sup {k sub 2} } over {2 sup k sub 2 k sub 2 ! } { s sub m sup {k sub m) } over {m sup k sub m k sub m ! } right ) z sup m .EN s > Output: v 1 L m *.ao l*'ki! 2 k ‘k 2 \ m k -k m \ k l +7Jc i + ’ • • +mk M =m Shorthand for In-line Equations Input: / .EQ delim ## .EN v f ' Let #x sub i#, #y# and #alpha# be positive Output: =2 0 Let Xi , y and a be positive microsystems Revision A, of 27 March 1990 156 Formatting Documents Revision A, of 27 March 1990 8 Verification Tools 8 . 1 . spell 8.2. checknr 8.3. soelim 8.4. deroff 8.5. fmt 8.6. col 8.7. colcrt 8.8. ul This command returns a list of misspelled words in a file. Because of the limited size of the on-line dictionary — less than 25,000 words — some words spell thinks are misspelled are in fact correct. This program checks the syntax of trof f files, in much the same way lint checks the syntax of C programs. People who tiy it often find it very helpful. This program follows . so commands in trof f files, incorporating the contents of these sourced files into the output. This program is helpful for searching groups of source files, and is also useful with preprocessors such as refer, tbl, and eqn, none of which follow source commands to fruition. This command removes trof f constructs from source files, and sends the results to standard output. Because some trof f constructs necessarily contain text, some information may be lost from the output. This command is a simplified formatter for use inside vi or mail. Devoid of hyphenation facilities, it does very little except fill text. This command takes two-column text from nrof f containing reverse line-feed escape sequences for the model 37 Teletype, and displays the two columns side- by-side, so they can be printed on a dumb lineprinter. This command is analogous to col, but was designed for CRT terminals, as it makes use of terminal capabilities when available. Also designed for CRTs, this command highlights underlined text using a terminal’s underline mode, if available, and otherwise reverse video mode. microsystems 157 Revision A, of 27 March 1990 Index A accent marks, 39, 90, 101, 140 B bibliographies and citations, see refer program c citations and bibliographies, see refer program D document formatting, see document preparation document preparation, 1 thru 21 bibliographies and citations, 93 thru 105 changing fonts, 1 1 display breakout, 14 displaying documents, 9 entering text, 4 eqn program, 129 thru 155 equation formatting, 19, 129 thru 155 font changes, 1 1 footnotes, 14 formatters, 1 jargon for typesetting, 3 keeping text on one page, 15 list of items, 12 macro packages, 2 -man macros, 53 thru 60 mathematical equations, 19, 129 thru 155 -me macros, 61 thru 92 -ms macros, 23 thru 51 multiple columns, 15 number registers, 21 outline of items, 13 paragraph types, 5 preprocessors, 2 printing documents, 9 quick reference, 8 refer program, 93 thru 105 sample paragraphs, 7 section headers, 1 1 tables inside documents, 17, 107 thru 128 tbl program, 107 thru 128 technical memorandum, 10 text formatters, 1 typesetting jargon, 3 typing in text, 4 E eqn program, 129 thru 155 accent marks, 140 adjusting the spacing, 147 big brackets, 142 bracketing expressions, 142 defining prepackaged strings, 145 diacritical marks, 140 displaying finished equations, 130 .EQ/.EN pairs, 130 escaping eqn’s formatting, 141 examples, 152 font changes, 139 fractions, 136 Greek letters, 133 grouping parts of an equation, 135 in-line equations, 145 integrals, 138 keywords and precedence, 148 lining up two equations, 142 mark and lineup, 142 matrices with matrix, 144 over and under expressions, 136 piles with pile, 143 point size changes, 139 precedence and keywords, 148 printing finished equations, 130 quoted text, 141 separating equations from text, 130 spaces in the input, 132 spaces in the output, 133 square roots, 137 subscripts and superscripts, 134 summations, 138 superscripts and subscripts, 134 symbols and special names, 133 text with in-line equations, 145 troubleshooting, 147 tuning the spacing, 147 equation formatting in documents, see eqn program F formatting documents, see document preparation M -man macro package, 53 thru 60 bugs in programs, 58 coding conventions, 54 - 159 - Index — Continued -man macro package, continued cross references, 57 description of program, 55 elements of a manual page, 53 files related to program, 57 formatting a manual page, 59 identifying the page, 54 name of program, 54 new features, 58 number register usage, 58 options of program, 56 parts of a manual page, 53 request summary, 59 see also section, 57 summary of requests, 59 synopsis of program, 55 title header line, 54 margins on a page with -me macros, 63, 78, 80, 89 with -ms macros, 32, 41 mathematical equations in documents, see eqn program -me macro package, 61 thru 92 accent marks, 90 adjusting macro parameters, 86 annotation reference, 75 annotations, 73 basic requests, 62 changing font and point size, 83 defining macros, 82 delayed text, 74 delayed text inside keeps, 82 diacritical marks, 90 display reference, 72 displaying documents, 62 displays, 69 displays (fancy), 70 double column format, 82 double spacing, 67 elements of document, 78 endnotes, 74 font changes, 83 footers and headers, 66 footnotes, 74 footnotes inside keeps, 82 headers and footers, 66 indented paragraph, 63 keeping text on a single page, 70 left block paragraph, 63 listing items, 69 miscellaneous requests, 89 multiple column reference, 82 numbered headers, 77 page layout, 67 paragraph reference, 65 paragraphs, 62 parameters of macros, 86 parts of document, 78 point size changes, 85 predefined strings, 89 preprocessor support, 88 printing documents, 62 quotation marks, 86 quoted text, 69 request summary, 90 -me macro package, continued rof f support, 88 section header reference, 77 section headers, 76 special characters, 90 standard paragraph, 62 string registers, 89 summary of requests, 90 table of contents, 74 thesis format, 80 two column format, 82 typesetting caveats, 83 typography reference, 85 underlining, 69 unnumbered headers, 78 -ms macro package, 23 thru 51 accent marks, 39 bibliographies, 38 boxing words and text, 36 capabilities of various macros, 24 changes in new package, 23 changing fonts, 37 changing point sizes, 37 cover sheet, 30 date stamp, 38 defaults and how to change them, 41 diacritical marks, 39 dimensions of page elements, 41 displaying documents, 23 displays, 35 double column format, 33 endnotes, 35 eqn preprocessor use, 44 even page header and footer, 32 font changes, 37 footers and headers, 31 footnotes, 34 formatting requests, 24 headers and footers, 3 1 indented paragraph, 26 keeping text on a single page, 36 left block paragraph, 25 left shift - . RE, 27 modifying defaults, 41 multiple column format, 33 nested indentation, 27 nrof f requests, 43 number register names, 45 numbered section headers, 29 odd page header and footer, 32 order of requests, 45 paragraphs, 25 point size changes, 37 printing documents, 23 proper order of requests, 45 quotation marks, 39 quote paragraph, 28 register names, 45 relative indentation, 27 request summary, 47 right shift - . RS, 27 running headers and footers, 31 section headers, 29 standard paragraph, 25 - 160 - Index — Continued -ms macro package, continued string register names, 45 summary of requests, 47 table of contents, 39 tbl preprocessor use, 45 thesis format, 38 title page, 30 trof f requests, 43 unnumbered section headers, 29 N nroff command, 1 R ref