|
|
1.1 ! root 1: .\" Copyright (c) 1986 The Regents of the University of California. ! 2: .\" All rights reserved. ! 3: .\" ! 4: .\" Redistribution and use in source and binary forms are permitted ! 5: .\" provided that the above copyright notice and this paragraph are ! 6: .\" duplicated in all such forms and that any documentation, ! 7: .\" advertising materials, and other materials related to such ! 8: .\" distribution and use acknowledge that the software was developed ! 9: .\" by the University of California, Berkeley. The name of the ! 10: .\" University may not be used to endorse or promote products derived ! 11: .\" from this software without specific prior written permission. ! 12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 14: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 15: .\" ! 16: .\" @(#)intro.me 6.4 (Berkeley) 7/17/89 ! 17: .\" ! 18: .UC 7 ! 19: .ll 6.5i ! 20: .lt 6.5i ! 21: .pn 0 ! 22: .ds MO 2.27\" version of -me to which this applies ! 23: .nr si 3n ! 24: \".he 'USING NROFF AND \-ME''%' ! 25: .eh 'USD:22-%''Writing Papers with NROFF using \-me' ! 26: .oh 'Writing Papers with NROFF using \-me''USD:22-%' ! 27: .ds U \s-1UNIX\s0 ! 28: .ds N \s-1NROFF\s0 ! 29: .ds T \s-1TROFF\s0 ! 30: .+c ! 31: .(l C ! 32: .sz 14 ! 33: .b "Writing Papers with NROFF using \-me" ! 34: .sz ! 35: .sp 2 ! 36: .ul ! 37: Eric P. Allman* ! 38: .(f ! 39: *Author's current address: ! 40: Britton Lee, Inc., ! 41: 1919 Addison Suite 105, ! 42: Berkeley, California 94704. ! 43: .)f ! 44: .sp ! 45: Project INGRES ! 46: Electronics Research Laboratory ! 47: University of California, Berkeley ! 48: Berkeley, California 94720 ! 49: .)l ! 50: .sp 4 ! 51: .pp ! 52: This document describes ! 53: the text processing facilities ! 54: available on the \*U\(dg ! 55: .(f ! 56: \(dg\*U is a trademark ! 57: of AT&T Bell Laboratories ! 58: .)f ! 59: operating system ! 60: via \*N\(dg and the ! 61: \-me ! 62: macro package. ! 63: It is assumed ! 64: that the reader ! 65: already is generally familiar ! 66: with the \*U operating system ! 67: and a text editor ! 68: such as ! 69: .b ex . ! 70: This is intended to be a casual introduction, ! 71: and ! 72: as such not all material is covered. ! 73: In particular, ! 74: many variations and additional features ! 75: of the \-me macro package ! 76: are not explained. ! 77: For a complete discussion of this ! 78: and other issues, ! 79: see ! 80: .ul ! 81: The \-me Reference Manual ! 82: and ! 83: .ul ! 84: The \*N/\*T Reference Manual. ! 85: .pp ! 86: \*N, a computer program ! 87: that runs on the \*U operating system, ! 88: reads an input file ! 89: prepared by the user ! 90: and outputs a formatted paper ! 91: suitable for publication or framing. ! 92: The input consists of ! 93: .i text , ! 94: or words to be printed, ! 95: and ! 96: .i requests , ! 97: which give instructions ! 98: to the \*N program ! 99: telling how to format the printed copy. ! 100: .pp ! 101: Section 1 ! 102: describes the basics ! 103: of text processing. ! 104: Section 2 ! 105: describes the basic requests. ! 106: Section 3 ! 107: introduces displays. ! 108: Annotations, ! 109: such as footnotes, ! 110: are handled in ! 111: section 4. ! 112: The more complex requests ! 113: which are not discussed in section 2 ! 114: are covered in section 5. ! 115: Finally, ! 116: section 6 ! 117: discusses things you will need ! 118: to know ! 119: if you want to typeset documents. ! 120: If you are a novice, ! 121: you probably won't want to read beyond section 4 ! 122: until you have tried some of the basic features out. ! 123: .pp ! 124: When you have your raw text ready, ! 125: call the \*N formatter by typing ! 126: as a request to the \*U shell: ! 127: .(b ! 128: nroff \-me \-T\c ! 129: .i "type files" ! 130: .)b ! 131: where ! 132: .i type ! 133: describes the type of terminal ! 134: you are outputting to. ! 135: Common values are ! 136: .b dtc ! 137: for a DTC 300s ! 138: (daisy-wheel type) ! 139: printer and ! 140: .b lpr ! 141: for the line printer. ! 142: If the ! 143: .b \-T ! 144: flag is omitted, ! 145: a ! 146: .q "lowest common denominator" ! 147: terminal is assumed; ! 148: this is good for previewing output ! 149: on most terminals. ! 150: A complete description of options ! 151: to the \*N command can be found in ! 152: .ul ! 153: The \*N/\*T Reference Manual. ! 154: .pp ! 155: The word ! 156: .i argument ! 157: is used in this manual ! 158: to mean a word or number ! 159: which appears on the same line ! 160: as a request ! 161: which modifies the meaning ! 162: of that request. ! 163: For example, ! 164: the request ! 165: .(b ! 166: \&.sp ! 167: .)b ! 168: spaces one line, ! 169: but ! 170: .(b ! 171: \&.sp 4 ! 172: .)b ! 173: spaces four lines. ! 174: The number ! 175: .b 4 ! 176: is an ! 177: .i argument ! 178: to the ! 179: .b .sp ! 180: request ! 181: which says to space four lines ! 182: instead of one. ! 183: Arguments are separated from the request ! 184: and from each other ! 185: by spaces. ! 186: .sh 1 "Basics of Text Processing" ! 187: .pp ! 188: The primary function ! 189: of \*N ! 190: is to ! 191: .i collect ! 192: words from input lines, ! 193: .i fill ! 194: output lines with those words, ! 195: .i justify ! 196: the right hand margin by inserting extra spaces ! 197: in the line, ! 198: and output the result. ! 199: For example, ! 200: the input: ! 201: .(b ! 202: Now is the time ! 203: for all good men ! 204: to come to the aid ! 205: of their party. ! 206: Four score and seven ! 207: years ago,... ! 208: .)b ! 209: will be read, ! 210: packed onto output lines, ! 211: and justified ! 212: to produce: ! 213: .(b F ! 214: Now is the time ! 215: for all good men ! 216: to come to the aid ! 217: of their party. ! 218: Four score and seven ! 219: years ago,... ! 220: .)b ! 221: Sometimes you may want to start a new output line ! 222: even though the line you are on ! 223: is not yet full; ! 224: for example, ! 225: at the end of a paragraph. ! 226: To do this ! 227: you can cause a ! 228: .i break , ! 229: which ! 230: starts a new output line. ! 231: Some requests ! 232: cause a break automatically, ! 233: as do blank input lines ! 234: and input lines beginning with a space. ! 235: .pp ! 236: Not all input lines ! 237: are text to be formatted. ! 238: Some of the input lines ! 239: are ! 240: .i requests ! 241: which describe ! 242: how to format the text. ! 243: Requests always have a period ! 244: or an apostrophe ! 245: (\c ! 246: .q "\|\(aa\|" ) ! 247: as the first character ! 248: of the input line. ! 249: .pp ! 250: The text formatter ! 251: also does more complex things, ! 252: such as automatically numbering pages, ! 253: skipping over page folds, ! 254: putting footnotes in the correct place, ! 255: and so forth. ! 256: .pp ! 257: I can offer you a few hints ! 258: for preparing text ! 259: for input to \*N. ! 260: First, ! 261: keep the input lines short. ! 262: Short input lines are easier to edit, ! 263: and \*N will pack words onto longer lines ! 264: for you anyhow. ! 265: In keeping with this, ! 266: it is helpful ! 267: to begin a new line ! 268: after every period, ! 269: comma, ! 270: or phrase, ! 271: since common corrections ! 272: are to add or delete sentences ! 273: or phrases. ! 274: Second, ! 275: do not put spaces at the end of lines, ! 276: since this can sometimes confuse the \*N ! 277: processor. ! 278: Third, ! 279: do not hyphenate words at the end of lines ! 280: (except words that should have hyphens in them, ! 281: such as ! 282: .q mother-in-law ); ! 283: \*N is smart enough to hyphenate words ! 284: for you as needed, ! 285: but is not smart enough ! 286: to take hyphens out ! 287: and join a word back together. ! 288: Also, ! 289: words such as ! 290: .q mother-in-law ! 291: should not be broken ! 292: over a line, ! 293: since then you will get a space ! 294: where not wanted, ! 295: such as ! 296: .tr @- ! 297: .nh ! 298: .q "mother@\ in@law" . ! 299: .br ! 300: .tr @@ ! 301: .hy 14 ! 302: .sh 1 "Basic Requests" ! 303: .sh 2 "Paragraphs" ! 304: .pp ! 305: Paragraphs are begun ! 306: by using the ! 307: .b .pp ! 308: request. ! 309: For example, ! 310: the input: ! 311: .(b ! 312: \&.pp ! 313: Now is the time for all good men ! 314: to come to the aid of their party. ! 315: Four score and seven years ago,... ! 316: .)b ! 317: produces a blank line ! 318: followed by an indented first line. ! 319: The result is: ! 320: .(b F ! 321: .ti +\n(piu ! 322: Now is the time for all good men ! 323: to come to the aid of their party. ! 324: Four score and seven years ago,... ! 325: .)b ! 326: .pp ! 327: Notice that the sentences ! 328: of the paragraphs ! 329: .i "must not" ! 330: begin with a space, ! 331: since blank lines ! 332: and lines beginning with spaces ! 333: cause a break. ! 334: For example, ! 335: if I had typed: ! 336: .(b ! 337: \&.pp ! 338: Now is the time for all good men ! 339: to come to the aid of their party. ! 340: Four score and seven years ago,... ! 341: .)b ! 342: The output would be: ! 343: .(b F ! 344: .ti +\n(piu ! 345: Now is the time for all good men ! 346: to come to the aid of their party. ! 347: Four score and seven years ago,... ! 348: .)b ! 349: A new line begins after the word ! 350: .q men ! 351: because the second line began with a space character. ! 352: .pp ! 353: There are many ! 354: fancier ! 355: types of paragraphs, ! 356: which will be described later. ! 357: .sh 2 "Headers and Footers" ! 358: .pp ! 359: Arbitrary headers and footers ! 360: can be put ! 361: at the top and bottom ! 362: of every page. ! 363: Two requests ! 364: of the form ! 365: .b .he \ \c ! 366: .i title ! 367: and ! 368: .b .fo \ \c ! 369: .i title ! 370: define the titles to put at the head and the foot ! 371: of every page, ! 372: respectively. ! 373: The titles are called ! 374: .i three-part ! 375: titles, ! 376: that is, ! 377: there is a left-justified part, ! 378: a centered part, ! 379: and a right-justified part. ! 380: To separate these three parts ! 381: the first character of ! 382: .i title ! 383: (whatever it may be) ! 384: is used as a delimiter. ! 385: Any character may be used, ! 386: but ! 387: backslash ! 388: and double quote marks ! 389: should be avoided. ! 390: The percent sign ! 391: is replaced by the current page number ! 392: whenever found in the title. ! 393: For example, ! 394: the input: ! 395: .(b ! 396: \&.he \(aa\(aa%\(aa\(aa ! 397: \&.fo \(aaJane Jones\(aa\(aaMy Book\(aa ! 398: .)b ! 399: results in the page number ! 400: centered at the top ! 401: of each page, ! 402: .q "Jane Jones" ! 403: in the lower left corner, ! 404: and ! 405: .q "My Book" ! 406: in the lower right corner. ! 407: .sh 2 "Double Spacing" ! 408: .pp ! 409: .ls 2 ! 410: \*N will double space output text automatically if you ! 411: use the request ! 412: .b ".ls\ 2" , ! 413: as is done in this section. ! 414: You can revert to single spaced mode ! 415: by typing ! 416: .b ".ls\ 1" . ! 417: .ls 1 ! 418: .sh 2 "Page Layout" ! 419: .pp ! 420: A number of requests allow ! 421: you to change the way the printed copy looks, ! 422: sometimes called the ! 423: .i layout ! 424: of the output page. ! 425: Most of these requests adjust the placing ! 426: of ! 427: .q "white space" ! 428: (blank lines or spaces). ! 429: In these explanations, ! 430: characters in italics ! 431: should be replaced with values you wish to use; ! 432: bold characters ! 433: represent characters which should actually be typed. ! 434: .pp ! 435: The ! 436: .b .bp ! 437: request ! 438: starts a new page. ! 439: .pp ! 440: The request ! 441: .b .sp \ \c ! 442: .i N ! 443: leaves ! 444: .i N ! 445: lines of blank space. ! 446: .i N ! 447: can be omitted ! 448: (meaning skip a single line) ! 449: or can be of the form ! 450: .i N \^\c ! 451: .b i ! 452: (for ! 453: .i N ! 454: inches) ! 455: or ! 456: .i N \^\c ! 457: .b c ! 458: (for ! 459: .i N ! 460: centimeters). ! 461: For example, the input: ! 462: .(b ! 463: \&.sp 1.5i ! 464: My thoughts on the subject ! 465: \&.sp ! 466: .)b ! 467: leaves one and a half inches of space, ! 468: followed by the line ! 469: .q "My thoughts on the subject" , ! 470: followed by a single blank line. ! 471: .pp ! 472: The ! 473: .b .in \ \c ! 474: .i +N ! 475: request ! 476: changes the amount of white space ! 477: on the left of the page ! 478: (the ! 479: .i indent ). ! 480: The argument ! 481: .i N ! 482: can be of the form ! 483: .b + \c ! 484: .i N ! 485: (meaning leave ! 486: .i N ! 487: spaces more than you are already leaving), ! 488: .b \- \c ! 489: .i N ! 490: (meaning leave less than you do now), ! 491: or just ! 492: .i N ! 493: (meaning leave exactly ! 494: .i N ! 495: spaces). ! 496: .i N ! 497: can be of the form ! 498: .i N \^\c ! 499: .b i ! 500: or ! 501: .i N \^\c ! 502: .b c ! 503: also. ! 504: For example, ! 505: the input: ! 506: .(b ! 507: initial text ! 508: \&.in 5 ! 509: some text ! 510: \&.in +1i ! 511: more text ! 512: \&.in \-2c ! 513: final text ! 514: .)b ! 515: produces ! 516: .q "some text" ! 517: indented exactly five spaces ! 518: from the left margin, ! 519: .q "more text" ! 520: indented five spaces ! 521: plus one inch ! 522: from the left margin ! 523: (fifteen spaces ! 524: on a pica typewriter), ! 525: and ! 526: .q "final text" ! 527: indented five spaces ! 528: plus one inch ! 529: minus two centimeters ! 530: from the margin. ! 531: That is, ! 532: the output is: ! 533: .(b ! 534: initial text ! 535: .in +5 ! 536: some text ! 537: .in +1i ! 538: more text ! 539: .in -2c ! 540: final text ! 541: .)b ! 542: .pp ! 543: The ! 544: .b .ti \ \c ! 545: .i +N ! 546: (temporary indent) ! 547: request is used like ! 548: .b .in \ \c ! 549: .i +N ! 550: when the indent ! 551: should apply to one line only, ! 552: after which it should revert ! 553: to the previous indent. ! 554: For example, ! 555: the input: ! 556: .(b ! 557: \&.in 1i ! 558: \&.ti 0 ! 559: Ware, James R. The Best of Confucius, ! 560: Halcyon House, 1950. ! 561: An excellent book containing translations of ! 562: most of Confucius\(aa most delightful sayings. ! 563: A definite must for anyone interested in the early foundations ! 564: of Chinese philosophy. ! 565: .)b ! 566: produces: ! 567: .in 1i+\n($iu ! 568: .ti \n($iu ! 569: Ware, James R. The Best of Confucius, ! 570: Halcyon House, 1950. ! 571: An excellent book containing translations of ! 572: most of Confucius' most delightful sayings. ! 573: A definite must for anyone interested in the early foundations ! 574: of Chinese philosophy. ! 575: .pp ! 576: Text lines can be centered ! 577: by using the ! 578: .b .ce ! 579: request. ! 580: The line after the ! 581: .b .ce ! 582: is centered ! 583: (horizontally) ! 584: on the page. ! 585: To center more than one line, ! 586: use ! 587: .b .ce \ \c ! 588: .i N ! 589: (where ! 590: .i N ! 591: is the number of lines to center), ! 592: followed by the ! 593: .i N ! 594: lines. ! 595: If you want to center many lines ! 596: but don't want to count them, ! 597: type: ! 598: .(b ! 599: \&.ce 1000 ! 600: lines to center ! 601: \&.ce 0 ! 602: .)b ! 603: The ! 604: .b ".ce\ 0" ! 605: request tells \*N to center zero more lines, ! 606: in other words, ! 607: stop centering. ! 608: .pp ! 609: All of these requests ! 610: cause a break; ! 611: that is, ! 612: they always start ! 613: a new line. ! 614: If you want to start a new line ! 615: without performing any other action, ! 616: use ! 617: .b .br . ! 618: .sh 2 "Underlining" ! 619: .pp ! 620: Text can be underlined ! 621: using the ! 622: .b .ul ! 623: request. ! 624: The ! 625: .b .ul ! 626: request ! 627: causes the next input line ! 628: to be underlined when output. ! 629: You can underline multiple lines ! 630: by stating a count of ! 631: .i input ! 632: lines to underline, ! 633: followed by those lines ! 634: (as with the ! 635: .b .ce ! 636: request). ! 637: For example, ! 638: the input: ! 639: .(b ! 640: \&.ul 2 ! 641: Notice that these two input lines ! 642: are underlined. ! 643: .)b ! 644: will underline those eight words in \*N. ! 645: (In \*T they will be set in italics.) ! 646: .sh 1 "Displays" ! 647: .pp ! 648: Displays are sections of text ! 649: to be set off ! 650: from the body of the paper. ! 651: Major quotes, ! 652: tables, ! 653: and figures ! 654: are types of displays, ! 655: as are all the examples ! 656: used in this document. ! 657: All displays ! 658: except centered blocks ! 659: are output ! 660: single spaced. ! 661: .sh 2 "Major Quotes" ! 662: .pp ! 663: Major quotes ! 664: are quotes which are several lines long, ! 665: and hence are set in from the rest ! 666: of the text ! 667: without quote marks ! 668: around them. ! 669: These can be generated ! 670: using the commands ! 671: .b .(q ! 672: and ! 673: .b .)q ! 674: to surround the quote. ! 675: For example, ! 676: the input: ! 677: .(b ! 678: As Weizenbaum points out: ! 679: \&.(q ! 680: It is said that to explain is to explain away. ! 681: This maxim is nowhere so well fulfilled ! 682: as in the areas of computer programming,... ! 683: \&.)q ! 684: .)b ! 685: generates as output: ! 686: .lp ! 687: As Weizenbaum points out: ! 688: .(q ! 689: It is said that to explain is to explain away. ! 690: This maxim is nowhere so well fulfilled ! 691: as in the areas of computer programming,... ! 692: .)q ! 693: .sh 2 "Lists" ! 694: .pp ! 695: A ! 696: .i list ! 697: is an indented, ! 698: single spaced, ! 699: unfilled display. ! 700: Lists should be used ! 701: when the material to be printed ! 702: should not be filled and justified ! 703: like normal text, ! 704: such as columns of figures ! 705: or the examples used in this paper. ! 706: Lists are surrounded ! 707: by the requests ! 708: .b .(l ! 709: and ! 710: .b .)l . ! 711: For example, ! 712: type: ! 713: .(b ! 714: Alternatives to avoid deadlock are: ! 715: \&.(l ! 716: Lock in a specified order ! 717: Detect deadlock and back out one process ! 718: Lock all resources needed before proceeding ! 719: \&.)l ! 720: .)b ! 721: will produce: ! 722: .br ! 723: Alternatives to avoid deadlock are: ! 724: .(l ! 725: Lock in a specified order ! 726: Detect deadlock and back out one process ! 727: Lock all resources needed before proceeding ! 728: .)l ! 729: .sh 2 "Keeps" ! 730: .pp ! 731: A ! 732: .i keep ! 733: is a display of lines ! 734: which are kept on a single page ! 735: if possible. ! 736: An example of where you would use a keep ! 737: might be a diagram. ! 738: Keeps differ from lists ! 739: in that lists may be broken ! 740: over a page boundary ! 741: whereas keeps will not. ! 742: .pp ! 743: Blocks are the basic kind of keep. ! 744: They begin with the request ! 745: .b .(b ! 746: and end with the request ! 747: .b .)b . ! 748: If there is not room on the current page ! 749: for everything in the block, ! 750: a new page is begun. ! 751: This has the unpleasant effect ! 752: of leaving blank space ! 753: at the bottom of the page. ! 754: When this is not appropriate, ! 755: you can use the alternative, ! 756: called ! 757: .i "floating keeps" . ! 758: .pp ! 759: .i "Floating keeps" ! 760: move relative to the text. ! 761: Hence, ! 762: they are good for things ! 763: which will be referred to ! 764: by name, ! 765: such as ! 766: .q "See figure 3" . ! 767: A floating keep will appear ! 768: at the bottom of the current page ! 769: if it will fit; ! 770: otherwise, ! 771: it will appear at the top ! 772: of the next page. ! 773: Floating keeps begin with the line ! 774: .b .(z ! 775: and end with the line ! 776: .b .)z . ! 777: For an example of a floating keep, ! 778: see figure 1. ! 779: .(z ! 780: .in 1i ! 781: .xl -1i ! 782: .hl ! 783: \&.(z ! 784: \&.hl ! 785: Text of keep to be floated. ! 786: \&.sp ! 787: \&.ce ! 788: Figure 1. Example of a Floating Keep. ! 789: \&.hl ! 790: \&.)z ! 791: .sp ! 792: .ce ! 793: Figure 1. Example of a Floating Keep. ! 794: .hl ! 795: .)z ! 796: The ! 797: .b .hl ! 798: request is used ! 799: to draw a horizontal line ! 800: so that the figure ! 801: stands out from the text. ! 802: .sh 2 "Fancier Displays" ! 803: .pp ! 804: Keeps and lists are normally collected in ! 805: .i nofill ! 806: mode, ! 807: so that they are good for tables and such. ! 808: If you want a display ! 809: in fill mode ! 810: (for text), ! 811: type ! 812: .b ".(l\ F" ! 813: (Throughout this section, ! 814: comments applied to ! 815: .b .(l ! 816: also apply to ! 817: .b .(b ! 818: and ! 819: .b .(z ). ! 820: This kind of display ! 821: will be indented from both margins. ! 822: For example, ! 823: the input: ! 824: .(b ! 825: \&.(l F ! 826: And now boys and girls, ! 827: a newer, bigger, better toy than ever before! ! 828: Be the first on your block to have your own computer! ! 829: Yes kids, you too can have one of these modern ! 830: data processing devices. ! 831: You too can produce beautifully formatted papers ! 832: without even batting an eye! ! 833: \&.)l ! 834: .)b ! 835: will be output as: ! 836: .(b F ! 837: And now boys and girls, ! 838: a newer, bigger, better toy than ever before! ! 839: Be the first on your block to have your own computer! ! 840: Yes kids, you too can have one of these modern ! 841: data processing devices. ! 842: You too can produce beautifully formatted papers ! 843: without even batting an eye! ! 844: .)b ! 845: .pp ! 846: Lists and blocks are also normally indented ! 847: (floating keeps are normally left justified). ! 848: To get a left-justified list, ! 849: type ! 850: .b ".(l\ L" . ! 851: To get a list centered ! 852: line-for-line, ! 853: type ! 854: .b ".(l C" . ! 855: For example, ! 856: to get a filled, ! 857: left justified list, enter: ! 858: .(b ! 859: \&.(l L F ! 860: text of block ! 861: \&.)l ! 862: .)b ! 863: The input: ! 864: .(b ! 865: \&.(l ! 866: first line of unfilled display ! 867: more lines ! 868: \&.)l ! 869: .)b ! 870: produces the indented text: ! 871: .(b ! 872: first line of unfilled display ! 873: more lines ! 874: .)b ! 875: Typing the character ! 876: .b L ! 877: after the ! 878: .b .(l ! 879: request produces the left justified result: ! 880: .(b L ! 881: first line of unfilled display ! 882: more lines ! 883: .)b ! 884: Using ! 885: .b C ! 886: instead of ! 887: .b L ! 888: produces the line-at-a-time centered output: ! 889: .(b C ! 890: first line of unfilled display ! 891: more lines ! 892: .)b ! 893: .pp ! 894: Sometimes it may be ! 895: that you want to center several lines ! 896: as a group, ! 897: rather than centering them ! 898: one line at a time. ! 899: To do this ! 900: use centered blocks, ! 901: which are surrounded by the requests ! 902: .b .(c ! 903: and ! 904: .b .)c . ! 905: All the lines are centered as a unit, ! 906: such that the longest line is centered ! 907: and the rest are ! 908: lined up around that line. ! 909: Notice that lines ! 910: do not move ! 911: relative to each other ! 912: using centered blocks, ! 913: whereas they do ! 914: using the ! 915: .b C ! 916: argument to keeps. ! 917: .pp ! 918: Centered blocks are ! 919: .i not ! 920: keeps, ! 921: and may be used ! 922: in conjunction ! 923: with keeps. ! 924: For example, ! 925: to center a group of lines ! 926: as a unit ! 927: and keep them ! 928: on one page, ! 929: use: ! 930: .(b ! 931: \&.(b L ! 932: \&.(c ! 933: first line of unfilled display ! 934: more lines ! 935: \&.)c ! 936: \&.)b ! 937: .)b ! 938: to produce: ! 939: .(b L ! 940: .(c ! 941: first line of unfilled display ! 942: more lines ! 943: .)c ! 944: .)b ! 945: If the block requests ! 946: (\c ! 947: .b .(b ! 948: and ! 949: .b .)b ) ! 950: had been omitted ! 951: the result would have been the same, ! 952: but with no guarantee ! 953: that the lines of the centered block ! 954: would have all been on one page. ! 955: Note the use of the ! 956: .b L ! 957: argument to ! 958: .b .(b ; ! 959: this causes the centered block ! 960: to center within the entire line ! 961: rather than within the line ! 962: minus the indent. ! 963: Also, ! 964: the center requests ! 965: must ! 966: be nested ! 967: .i inside ! 968: the keep requests. ! 969: .sh 1 "Annotations" ! 970: .pp ! 971: There are a number of requests ! 972: to save text ! 973: for later printing. ! 974: .i Footnotes ! 975: are printed at the bottom of the current page. ! 976: .i "Delayed text" ! 977: is intended to be a variant form ! 978: of footnote; ! 979: the text is printed only ! 980: when explicitly called for, ! 981: such as at the end of each chapter. ! 982: .i Indexes ! 983: are a type of delayed text ! 984: having a tag ! 985: (usually the page number) ! 986: attached to each entry ! 987: after a row of dots. ! 988: Indexes are also saved ! 989: until called for explicitly. ! 990: .sh 2 "Footnotes" ! 991: .pp ! 992: Footnotes begin with the request ! 993: .b .(f ! 994: and end with the request ! 995: .b .)f . ! 996: The current footnote number is maintained ! 997: automatically, ! 998: and can be used by typing \e**, ! 999: to produce a footnote number\**. ! 1000: .(f ! 1001: \**Like this. ! 1002: .)f ! 1003: The number is automatically incremented ! 1004: after every footnote. ! 1005: For example, ! 1006: the input: ! 1007: .(b ! 1008: \&.(q ! 1009: A man who is not upright ! 1010: and at the same time is presumptuous; ! 1011: one who is not diligent and at the same time is ignorant; ! 1012: one who is untruthful and at the same time is incompetent; ! 1013: such men I do not count among acquaintances.\e** ! 1014: \&.(f ! 1015: \e**James R. Ware, ! 1016: \&.ul ! 1017: The Best of Confucius, ! 1018: Halcyon House, 1950. ! 1019: Page 77. ! 1020: \&.)f ! 1021: \&.)q ! 1022: .)b ! 1023: generates the result: ! 1024: .(q ! 1025: A man who is not upright ! 1026: and at the same time is presumptuous; ! 1027: one who is not diligent and at the same time is ignorant; ! 1028: one who is untruthful and at the same time is incompetent; ! 1029: such men I do not count among acquaintances.\** ! 1030: .(f ! 1031: \**James R. Ware, ! 1032: .ul ! 1033: The Best of Confucius, ! 1034: Halcyon House, 1950. ! 1035: Page 77. ! 1036: .)f ! 1037: .)q ! 1038: It is important ! 1039: that the footnote ! 1040: appears ! 1041: .i inside ! 1042: the quote, ! 1043: so that you can be sure ! 1044: that the footnote ! 1045: will appear ! 1046: on the same page ! 1047: as the quote. ! 1048: .sh 2 "Delayed Text" ! 1049: .pp ! 1050: Delayed text ! 1051: is very similar to a footnote ! 1052: except that it is printed ! 1053: when called for explicitly. ! 1054: This allows a list of ! 1055: references to ! 1056: appear ! 1057: (for example) ! 1058: at the end of each chapter, ! 1059: as is the convention in some disciplines. ! 1060: Use ! 1061: .b \e*# ! 1062: on delayed text ! 1063: instead of ! 1064: .b \e** ! 1065: as on footnotes. ! 1066: .pp ! 1067: If you are using delayed text ! 1068: as your standard reference mechanism, ! 1069: you can still use footnotes, ! 1070: except that you may want to reference them ! 1071: with special characters* ! 1072: .(f ! 1073: *Such as an asterisk. ! 1074: .)f ! 1075: rather than numbers. ! 1076: .sh 2 "Indexes" ! 1077: .pp ! 1078: An ! 1079: .q index ! 1080: (actually more like a table of contents, ! 1081: since the entries are not sorted alphabetically) ! 1082: resembles delayed text, ! 1083: in that it is saved until called for. ! 1084: However, ! 1085: each entry has the page number ! 1086: (or some other tag) ! 1087: appended to the last line ! 1088: of the index entry ! 1089: after a row of dots. ! 1090: .pp ! 1091: Index entries begin with the request ! 1092: .b .(x ! 1093: and end with ! 1094: .b .)x . ! 1095: The ! 1096: .b .)x ! 1097: request may have a argument, ! 1098: which is the value to print ! 1099: as the ! 1100: .q "page number" . ! 1101: It defaults to the current page number. ! 1102: If the page number given is an underscore ! 1103: (\c ! 1104: .q _ ) ! 1105: no page number ! 1106: or line of dots ! 1107: is printed at all. ! 1108: To get the line of dots ! 1109: without a page number, ! 1110: type ! 1111: .b ".)x """"" , ! 1112: which specifies an explicitly null page number. ! 1113: .pp ! 1114: The ! 1115: .b .xp ! 1116: request prints the index. ! 1117: .pp ! 1118: For example, ! 1119: the input: ! 1120: .(b ! 1121: \&.(x ! 1122: Sealing wax ! 1123: \&.)x ! 1124: \&.(x ! 1125: Cabbages and kings ! 1126: \&.)x _ ! 1127: \&.(x ! 1128: Why the sea is boiling hot ! 1129: \&.)x 2.5a ! 1130: \&.(x ! 1131: Whether pigs have wings ! 1132: \&.)x "" ! 1133: \&.(x ! 1134: This is a terribly long index entry, such as might be used ! 1135: for a list of illustrations, tables, or figures; I expect it to ! 1136: take at least two lines. ! 1137: \&.)x ! 1138: \&.xp ! 1139: .)b ! 1140: generates: ! 1141: .(x ! 1142: Sealing wax ! 1143: .)x ! 1144: .(x ! 1145: Cabbages and kings ! 1146: .)x _ ! 1147: .(x ! 1148: Why the sea is boiling hot ! 1149: .)x 2.5a ! 1150: .(x ! 1151: Whether pigs have wings ! 1152: .)x "" ! 1153: .(x ! 1154: This is a terribly long index entry, such as might be used ! 1155: for a list of illustrations, tables, or figures; I expect it to ! 1156: take at least two lines. ! 1157: .)x ! 1158: .xp ! 1159: .pp ! 1160: The ! 1161: .b .(x ! 1162: request may have a single character ! 1163: argument, ! 1164: specifying the ! 1165: .q name ! 1166: of the index; ! 1167: the normal index is ! 1168: .b x . ! 1169: Thus, ! 1170: several ! 1171: .q indices ! 1172: may be maintained simultaneously ! 1173: (such as a list of tables, table of contents, etc.). ! 1174: .pp ! 1175: Notice that the index must be printed ! 1176: at the ! 1177: .i end ! 1178: of the paper, ! 1179: rather than at the beginning ! 1180: where it will probably appear ! 1181: (as a table of contents); ! 1182: the pages may have to be physically rearranged ! 1183: after printing. ! 1184: .sh 1 "Fancier Features" ! 1185: .pp ! 1186: A large number of fancier requests ! 1187: exist, ! 1188: notably requests to provide other sorts of paragraphs, ! 1189: numbered sections of the form ! 1190: .b 1.2.3 ! 1191: (such as used in this document), ! 1192: and multicolumn output. ! 1193: .sh 2 "More Paragraphs" ! 1194: .pp ! 1195: Paragraphs generally start with ! 1196: a blank line ! 1197: and with the first line ! 1198: indented. ! 1199: It is possible to get ! 1200: left-justified block-style paragraphs ! 1201: by using ! 1202: .b .lp ! 1203: instead of ! 1204: .b .pp , ! 1205: as demonstrated by the next paragraph. ! 1206: .lp ! 1207: Sometimes you want to use paragraphs ! 1208: that have the ! 1209: .i body ! 1210: indented, ! 1211: and the first line ! 1212: exdented ! 1213: (opposite of indented) ! 1214: with a label. ! 1215: This can be done with the ! 1216: .b .ip ! 1217: request. ! 1218: A word specified on the same line as ! 1219: .b .ip ! 1220: is printed in the margin, ! 1221: and the body is lined up ! 1222: at a prespecified position ! 1223: (normally five spaces). ! 1224: For example, ! 1225: the input: ! 1226: .(b ! 1227: \&.ip one ! 1228: This is the first paragraph. ! 1229: Notice how the first line ! 1230: of the resulting paragraph lines up ! 1231: with the other lines in the paragraph. ! 1232: \&.ip two ! 1233: And here we are at the second paragraph already. ! 1234: You may notice that the argument to \c ! 1235: .b .ip ! 1236: appears ! 1237: in the margin. ! 1238: \&.lp ! 1239: We can continue text... ! 1240: .)b ! 1241: produces as output: ! 1242: .ip one ! 1243: This is the first paragraph. ! 1244: Notice how the first line of the resulting paragraph lines up ! 1245: with the other lines in the paragraph. ! 1246: .ip two ! 1247: And here we are at the second paragraph already. ! 1248: You may notice that the argument to ! 1249: .b .ip ! 1250: appears ! 1251: in the margin. ! 1252: .lp ! 1253: We can continue text without starting a new indented ! 1254: paragraph ! 1255: by using the ! 1256: .b .lp ! 1257: request. ! 1258: .pp ! 1259: If you have spaces in the label of a ! 1260: .b .ip ! 1261: request, ! 1262: you must use an ! 1263: .q "unpaddable space" ! 1264: instead of a regular space. ! 1265: This is typed as a backslash character ! 1266: (\c ! 1267: .q \e ) ! 1268: followed by a space. ! 1269: For example, ! 1270: to print the label ! 1271: .q "Part 1" , ! 1272: enter: ! 1273: .(b ! 1274: \&.ip "Part\e 1" ! 1275: .)b ! 1276: .pp ! 1277: If a label of an indented paragraph ! 1278: (that is, the argument to ! 1279: .b .ip ) ! 1280: is longer than the space allocated for the label, ! 1281: .b .ip ! 1282: will begin a new line after the label. ! 1283: For example, ! 1284: the input: ! 1285: .(b ! 1286: \&.ip longlabel ! 1287: This paragraph had a long label. ! 1288: The first character of text on the first line ! 1289: will not line up with the text on second and subsequent lines, ! 1290: although they will line up with each other. ! 1291: .)b ! 1292: will produce: ! 1293: .ip longlabel ! 1294: This paragraph had a long label. ! 1295: The first character of text on the first line ! 1296: will not line up with the text on second and subsequent lines, ! 1297: although they will line up with each other. ! 1298: .pp ! 1299: It is possible to change the size of the label ! 1300: by using a second argument ! 1301: which is the size of the label. ! 1302: For example, ! 1303: the above example could be done correctly ! 1304: by saying: ! 1305: .(b ! 1306: \&.ip longlabel 10 ! 1307: .)b ! 1308: which will make the paragraph indent ! 1309: 10 spaces for this paragraph only. ! 1310: If you have many paragraphs to indent ! 1311: all the same amount, ! 1312: use the ! 1313: .i "number register" ! 1314: .b ii . ! 1315: For example, to leave one inch of space ! 1316: for the label, ! 1317: type: ! 1318: .(b ! 1319: \&.nr ii 1i ! 1320: .)b ! 1321: somewhere before the first call to ! 1322: .b .ip . ! 1323: Refer to the reference manual ! 1324: for more information. ! 1325: .pp ! 1326: If ! 1327: .b .ip ! 1328: is used ! 1329: with no argument at all ! 1330: no hanging tag will be printed. ! 1331: For example, ! 1332: the input: ! 1333: .(b ! 1334: \&.ip [a] ! 1335: This is the first paragraph of the example. ! 1336: We have seen this sort of example before. ! 1337: \&.ip ! 1338: This paragraph is lined up with the previous paragraph, ! 1339: but it has no tag in the margin. ! 1340: .)b ! 1341: produces as output: ! 1342: .ip [a] ! 1343: This is the first paragraph of the example. ! 1344: We have seen this sort of example before. ! 1345: .ip ! 1346: This paragraph is lined up with the previous paragraph, ! 1347: but it has no tag in the margin. ! 1348: .pp ! 1349: A special case of ! 1350: .b .ip ! 1351: is ! 1352: .b .np , ! 1353: which automatically ! 1354: numbers paragraphs sequentially from 1. ! 1355: The numbering is reset at the next ! 1356: .b .pp , ! 1357: .b .lp , ! 1358: or ! 1359: .b .sh ! 1360: (to be described in the next section) ! 1361: request. ! 1362: For example, ! 1363: the input: ! 1364: .(b ! 1365: \&.np ! 1366: This is the first point. ! 1367: \&.np ! 1368: This is the second point. ! 1369: Points are just regular paragraphs ! 1370: which are given sequence numbers automatically ! 1371: by the .np request. ! 1372: \&.pp ! 1373: This paragraph will reset numbering by .np. ! 1374: \&.np ! 1375: For example, ! 1376: we have reverted to numbering from one now. ! 1377: .)b ! 1378: generates: ! 1379: .np ! 1380: This is the first point. ! 1381: .np ! 1382: This is the second point. ! 1383: Points are just regular paragraphs ! 1384: which are given sequence numbers automatically ! 1385: by the .np request. ! 1386: .pp ! 1387: This paragraph will reset numbering by .np. ! 1388: .np ! 1389: For example, ! 1390: we have reverted to numbering from one now. ! 1391: .pp ! 1392: The ! 1393: .b .bu ! 1394: request gives lists of this sort that are identified with ! 1395: bullets rather than numbers. ! 1396: The paragraphs are also crunched together. ! 1397: For example, ! 1398: the input: ! 1399: .(b ! 1400: \&.bu ! 1401: \&One egg yolk ! 1402: \&.bu ! 1403: \&One tablespoon cream or top milk ! 1404: \&.bu ! 1405: \&Salt, cayenne, and lemon juice to taste ! 1406: \&.bu ! 1407: \&A generous two tablespoonfuls of butter ! 1408: .)b ! 1409: produces\**: ! 1410: .(f ! 1411: \**By the way, ! 1412: if you put the first three ingredients in a a heavy, deep pan ! 1413: and whisk the ingredients madly over a medium flame ! 1414: (never taking your hand off the handle of the pot) ! 1415: until the mixture reaches the consistency of custard ! 1416: (just a minute or two), ! 1417: then mix in the butter off-heat, ! 1418: you will have a wonderful Hollandaise sauce. ! 1419: .)f ! 1420: .bu ! 1421: One egg yolk ! 1422: .bu ! 1423: One tablespoon cream or top milk ! 1424: .bu ! 1425: Salt, cayenne, and lemon juice to taste ! 1426: .bu ! 1427: A generous two tablespoonfuls of butter ! 1428: .sh 2 "Section Headings" ! 1429: .pp ! 1430: Section numbers ! 1431: (such as the ones used in this document) ! 1432: can be automatically generated ! 1433: using the ! 1434: .b .sh ! 1435: request. ! 1436: You must tell ! 1437: .b .sh ! 1438: the ! 1439: .i depth ! 1440: of the section number ! 1441: and a section title. ! 1442: The depth ! 1443: specifies how many numbers ! 1444: are to appear ! 1445: (separated by decimal points) ! 1446: in the section number. ! 1447: For example, ! 1448: the section number ! 1449: .b 4.2.5 ! 1450: has a depth of three. ! 1451: .pp ! 1452: Section numbers ! 1453: are incremented ! 1454: in a fairly intuitive fashion. ! 1455: If you add a number ! 1456: (increase the depth), ! 1457: the new number starts out ! 1458: at one. ! 1459: If you subtract section numbers ! 1460: (or keep the same number) ! 1461: the final number is incremented. ! 1462: For example, ! 1463: the input: ! 1464: .(b ! 1465: \&.sh 1 "The Preprocessor" ! 1466: \&.sh 2 "Basic Concepts" ! 1467: \&.sh 2 "Control Inputs" ! 1468: \&.sh 3 ! 1469: \&.sh 3 ! 1470: \&.sh 1 "Code Generation" ! 1471: \&.sh 3 ! 1472: .)b ! 1473: produces as output the result: ! 1474: .(b ! 1475: .b ! 1476: 1. The Preprocessor ! 1477: 1.1. Basic Concepts ! 1478: 1.2. Control Inputs ! 1479: 1.2.1. ! 1480: 1.2.2. ! 1481: 2. Code Generation ! 1482: 2.1.1. ! 1483: .)b ! 1484: .pp ! 1485: You can specify the section number to begin ! 1486: by placing the section number after the section title, ! 1487: using spaces instead of dots. ! 1488: For example, ! 1489: the request: ! 1490: .(b ! 1491: \&.sh 3 "Another section" 7 3 4 ! 1492: .)b ! 1493: will begin the section numbered ! 1494: .b 7.3.4 ; ! 1495: all subsequent ! 1496: .b .sh ! 1497: requests will number relative to this number. ! 1498: .pp ! 1499: There are more complex features ! 1500: which will cause each section to be indented ! 1501: proportionally to the depth of the section. ! 1502: For example, if you enter: ! 1503: .(b ! 1504: \&.nr si \c ! 1505: .i N ! 1506: .)b ! 1507: each section will be indented by an amount ! 1508: .i N . ! 1509: .i N ! 1510: must have a scaling factor attached, ! 1511: that is, it must be of the form ! 1512: .i Nx , ! 1513: where ! 1514: .i x ! 1515: is a character telling what units ! 1516: .i N ! 1517: is in. ! 1518: Common values for ! 1519: .i x ! 1520: are ! 1521: .b i ! 1522: for inches, ! 1523: .b c ! 1524: for centimeters, ! 1525: and ! 1526: .b n ! 1527: for ! 1528: .i ens ! 1529: (the width of a single character). ! 1530: For example, ! 1531: to indent each section ! 1532: one-half inch, ! 1533: type: ! 1534: .(b ! 1535: \&.nr si 0.5i ! 1536: .)b ! 1537: After this, ! 1538: sections will be indented by ! 1539: one-half inch ! 1540: per level of depth in the section number. ! 1541: For example, ! 1542: this document was produced ! 1543: using the request ! 1544: .(b ! 1545: \&.nr si 3n ! 1546: .)b ! 1547: at the beginning of the input file, ! 1548: giving three spaces of indent ! 1549: per section depth. ! 1550: .pp ! 1551: Section headers without automatically generated numbers ! 1552: can be done using: ! 1553: .(b ! 1554: \&.uh "Title" ! 1555: .)b ! 1556: which will do a section heading, ! 1557: but will put no number on the section. ! 1558: .sh 2 "Parts of the Basic Paper" ! 1559: .pp ! 1560: There are some requests ! 1561: which assist in setting up ! 1562: papers. ! 1563: The ! 1564: .b .tp ! 1565: request ! 1566: initializes for a title page. ! 1567: There are no headers or footers ! 1568: on a title page, ! 1569: and unlike other pages ! 1570: you can space down ! 1571: and leave blank space ! 1572: at the top. ! 1573: For example, ! 1574: a typical title page might appear as: ! 1575: .(b ! 1576: \&.tp ! 1577: \&.sp 2i ! 1578: \&.(l C ! 1579: THE GROWTH OF TOENAILS ! 1580: IN UPPER PRIMATES ! 1581: \&.sp ! 1582: by ! 1583: \&.sp ! 1584: Frank N. Furter ! 1585: \&.)l ! 1586: \&.bp ! 1587: .)b ! 1588: .pp ! 1589: The request ! 1590: .b .th ! 1591: sets up the environment ! 1592: of the \*N processor ! 1593: to do a thesis, ! 1594: using the rules established at Berkeley. ! 1595: It defines the correct headers and footers ! 1596: (a page number in the upper right hand corner only), ! 1597: sets the margins correctly, ! 1598: and double spaces. ! 1599: .pp ! 1600: The ! 1601: .b .+c \ \c ! 1602: .i T ! 1603: request can be used ! 1604: to start chapters. ! 1605: Each chapter is automatically numbered ! 1606: from one, ! 1607: and a heading is printed at the top of each chapter ! 1608: with the chapter number ! 1609: and the chapter name ! 1610: .i T . ! 1611: For example, ! 1612: to begin a chapter called ! 1613: .q Conclusions , ! 1614: use the request: ! 1615: .(b ! 1616: \&.+c "CONCLUSIONS" ! 1617: .)b ! 1618: which will produce, ! 1619: on a new page, ! 1620: the lines ! 1621: .(b C ! 1622: CHAPTER 5 ! 1623: CONCLUSIONS ! 1624: .)b ! 1625: with appropriate spacing for a thesis. ! 1626: Also, the header is moved to the foot of the page ! 1627: on the first page of a chapter. ! 1628: Although the ! 1629: .b .+c ! 1630: request was not designed to work only with the ! 1631: .b .th ! 1632: request, ! 1633: it is tuned for the format acceptable ! 1634: for a PhD thesis ! 1635: at Berkeley. ! 1636: .pp ! 1637: If the ! 1638: title parameter ! 1639: .i T ! 1640: is omitted from the ! 1641: .b .+c ! 1642: request, ! 1643: the result is a chapter with no heading. ! 1644: This can also be used at the beginning ! 1645: of a paper; ! 1646: for example, ! 1647: .b .+c ! 1648: was used to generate page one ! 1649: of this document. ! 1650: .pp ! 1651: Although ! 1652: papers traditionally have the abstract, ! 1653: table of contents, ! 1654: and so forth at the front of the paper, ! 1655: it is more convenient to format ! 1656: and print them last ! 1657: when using \*N. ! 1658: This is so that index entries ! 1659: can be collected and then printed ! 1660: for the table of contents ! 1661: (or whatever). ! 1662: At the end of the paper, ! 1663: issue the ! 1664: .b ".++ P" ! 1665: request, ! 1666: which begins the preliminary part ! 1667: of the paper. ! 1668: After issuing this request, ! 1669: the ! 1670: .b .+c ! 1671: request will begin a preliminary section ! 1672: of the paper. ! 1673: Most notably, ! 1674: this prints the page number ! 1675: restarted from one ! 1676: in lower case Roman numbers. ! 1677: .b .+c ! 1678: may be used repeatedly ! 1679: to begin different parts of the ! 1680: front material ! 1681: for example, ! 1682: the abstract, ! 1683: the table of contents, ! 1684: acknowledgments, ! 1685: list of illustrations, ! 1686: etc. ! 1687: The request ! 1688: .b ".++ B" ! 1689: may also be used ! 1690: to begin the bibliographic section ! 1691: at the end of the paper. ! 1692: For example, ! 1693: the paper might appear ! 1694: as outlined in figure 2. ! 1695: (In this figure, ! 1696: comments begin with the sequence ! 1697: .b \e" .) ! 1698: .(z ! 1699: .hl ! 1700: .if t .in 0.5i ! 1701: .if t .ta 2i ! 1702: .if n .ta 3i ! 1703: \&.th \e" set for thesis mode ! 1704: \&.fo \(aa\(aaDRAFT\(aa\(aa \e" define footer for each page ! 1705: \&.tp \e" begin title page ! 1706: \&.(l C \e" center a large block ! 1707: THE GROWTH OF TOENAILS ! 1708: IN UPPER PRIMATES ! 1709: \&.sp ! 1710: by ! 1711: \&.sp ! 1712: Frank Furter ! 1713: \&.)l \e" end centered part ! 1714: \&.+c INTRODUCTION \e" begin chapter named "INTRODUCTION" ! 1715: \&.(x t \e" make an entry into index `t' ! 1716: Introduction ! 1717: \&.)x \e" end of index entry ! 1718: text of chapter one ! 1719: \&.+c "NEXT CHAPTER" \e" begin another chapter ! 1720: \&.(x t \e" enter into index `t' again ! 1721: Next Chapter ! 1722: \&.)x ! 1723: text of chapter two ! 1724: \&.+c CONCLUSIONS ! 1725: \&.(x t ! 1726: Conclusions ! 1727: \&.)x ! 1728: text of chapter three ! 1729: \&.++ B \e" begin bibliographic information ! 1730: \&.+c BIBLIOGRAPHY \e" begin another `chapter' ! 1731: \&.(x t ! 1732: Bibliography ! 1733: \&.)x ! 1734: text of bibliography ! 1735: \&.++ P \e" begin preliminary material ! 1736: \&.+c "TABLE OF CONTENTS" ! 1737: \&.xp t \e" print index `t' collected above ! 1738: \&.+c PREFACE \e" begin another preliminary section ! 1739: text of preface ! 1740: .sp 2 ! 1741: .in 0 ! 1742: .ce ! 1743: Figure 2. Outline of a Sample Paper ! 1744: .hl ! 1745: .)z ! 1746: .sh 2 "Equations and Tables" ! 1747: .pp ! 1748: Two special \*U programs exist ! 1749: to format special types of material. ! 1750: .b Eqn ! 1751: and ! 1752: .b neqn ! 1753: set equations ! 1754: for the phototypesetter ! 1755: and \*N respectively. ! 1756: .b Tbl ! 1757: arranges to print ! 1758: extremely pretty tables ! 1759: in a variety of formats. ! 1760: This document will only describe ! 1761: the embellishments ! 1762: to the standard features; ! 1763: consult the reference manuals ! 1764: for those processors ! 1765: for a description of their use. ! 1766: .pp ! 1767: The ! 1768: .b eqn ! 1769: and ! 1770: .b neqn ! 1771: programs are described fully ! 1772: in the document ! 1773: .ul ! 1774: Typesetting Mathematics \- User's Guide ! 1775: by Brian W. Kernighan ! 1776: and Lorinda L. Cherry. ! 1777: Equations are centered, ! 1778: and are kept on one page. ! 1779: They are introduced by the ! 1780: .b .EQ ! 1781: request and terminated by the ! 1782: .b .EN ! 1783: request. ! 1784: .pp ! 1785: The ! 1786: .b .EQ ! 1787: request may take an ! 1788: equation number as an ! 1789: optional argument, ! 1790: which is printed vertically centered ! 1791: on the right hand side ! 1792: of the equation. ! 1793: If the equation becomes too long ! 1794: it should be split ! 1795: between two lines. ! 1796: To do this, type: ! 1797: .(b ! 1798: \&.EQ (eq 34) ! 1799: text of equation 34 ! 1800: \&.EN C ! 1801: \&.EQ ! 1802: continuation of equation 34 ! 1803: \&.EN ! 1804: .)b ! 1805: The ! 1806: .b C ! 1807: on the ! 1808: .b .EN ! 1809: request ! 1810: specifies that the equation ! 1811: will be continued. ! 1812: .pp ! 1813: The ! 1814: .b tbl ! 1815: program produces tables. ! 1816: It is fully described ! 1817: (including numerous examples) ! 1818: in the document ! 1819: .ul ! 1820: Tbl \- A Program to Format Tables ! 1821: by M. E. Lesk. ! 1822: Tables begin with the ! 1823: .b .TS ! 1824: request ! 1825: and end with the ! 1826: .b .TE ! 1827: request. ! 1828: Tables are normally kept on a single page. ! 1829: If you have a table which is too big ! 1830: to fit on a single page, ! 1831: so that you know it will extend ! 1832: to several pages, ! 1833: begin the table with the request ! 1834: .b ".TS\ H" ! 1835: and put the request ! 1836: .b .TH ! 1837: after the part of the table ! 1838: which you want ! 1839: duplicated at the top of every page ! 1840: that the table is printed on. ! 1841: For example, a table definition ! 1842: for a long table might look like: ! 1843: .ds TA \|\h'.4n'\v'-.2n'\s-4\zT\s0\v'.2n'\h'-.4n'\(ci\| ! 1844: .if n .ds TA \ \o'-T'\ \" ! 1845: .(b ! 1846: \&.TS H ! 1847: c s s ! 1848: n n n. ! 1849: THE TABLE TITLE ! 1850: \&.TH ! 1851: text of the table ! 1852: \&.TE ! 1853: .)b ! 1854: .pp ! 1855: .sh 2 "Two Column Output" ! 1856: .pp ! 1857: You can get two column output ! 1858: automatically ! 1859: by using the request ! 1860: .b .2c . ! 1861: This causes everything after it ! 1862: to be output in two-column form. ! 1863: The request ! 1864: .b .bc ! 1865: will start a new column; ! 1866: it differs from ! 1867: .b .bp ! 1868: in that ! 1869: .b .bp ! 1870: may leave a totally blank column ! 1871: when it starts a new page. ! 1872: To revert to single column output, ! 1873: use ! 1874: .b .1c . ! 1875: .sh 2 "Defining Macros" ! 1876: .pp ! 1877: A ! 1878: .i macro ! 1879: is a collection of requests and text ! 1880: which may be used ! 1881: by stating a simple request. ! 1882: Macros begin with the line ! 1883: .b ".de" \ \c ! 1884: .i xx ! 1885: (where ! 1886: .i xx ! 1887: is the name of the macro to be defined) ! 1888: and end with the line consisting of two dots. ! 1889: After defining the macro, ! 1890: stating the line ! 1891: .b . \c ! 1892: .i xx ! 1893: is the same as stating all the other lines. ! 1894: For example, ! 1895: to define a macro ! 1896: that spaces 3 lines ! 1897: and then centers the next input line, ! 1898: enter: ! 1899: .(b ! 1900: \&.de SS ! 1901: \&.sp 3 ! 1902: \&.ce ! 1903: \&.. ! 1904: .)b ! 1905: and use it by typing: ! 1906: .(b ! 1907: \&.SS ! 1908: \&Title Line ! 1909: (beginning of text) ! 1910: .)b ! 1911: .pp ! 1912: Macro names may be one or two characters. ! 1913: In order to avoid conflicts ! 1914: with names in \-me, ! 1915: always use upper case letters as names. ! 1916: The only names to avoid are ! 1917: .b TS , ! 1918: .b TH , ! 1919: .b TE , ! 1920: .b EQ , ! 1921: and ! 1922: .b EN . ! 1923: .sh 2 "Annotations Inside Keeps" ! 1924: .pp ! 1925: Sometimes you may want to put ! 1926: a footnote ! 1927: or index entry inside a keep. ! 1928: For example, ! 1929: if you want to maintain a ! 1930: .q "list of figures" ! 1931: you will want to do something like: ! 1932: .(b ! 1933: \&.(z ! 1934: \&.(c ! 1935: text of figure ! 1936: \&.)c ! 1937: \&.ce ! 1938: Figure 5. ! 1939: \&.(x f ! 1940: Figure 5 ! 1941: \&.)x ! 1942: \&.)z ! 1943: .)b ! 1944: which you may hope ! 1945: will give you a figure ! 1946: with a label ! 1947: and an entry in the index ! 1948: .b f ! 1949: (presumably a list of figures index). ! 1950: Unfortunately, ! 1951: the ! 1952: index entry ! 1953: is read and interpreted ! 1954: when the keep is read, ! 1955: not when it is printed, ! 1956: so the page number in the index is likely to be wrong. ! 1957: The solution is to use the magic string ! 1958: .b \e! ! 1959: at the beginning of all the lines dealing with the index. ! 1960: In other words, ! 1961: you should use: ! 1962: .(b ! 1963: \&.(z ! 1964: \&.(c ! 1965: Text of figure ! 1966: \&.)c ! 1967: \&.ce ! 1968: Figure 5. ! 1969: \e!.(x f ! 1970: \e!Figure 5 ! 1971: \e!.)x ! 1972: \&.)z ! 1973: .)b ! 1974: which will defer the processing of the index ! 1975: until the figure is output. ! 1976: This will guarantee ! 1977: that the page number in the index ! 1978: is correct. ! 1979: The same comments apply ! 1980: to ! 1981: blocks ! 1982: (with ! 1983: .b .(b ! 1984: and ! 1985: .b .)b ) ! 1986: as well. ! 1987: .sh 1 "\*T and the Photosetter" ! 1988: .pp ! 1989: With a little care, ! 1990: you can prepare ! 1991: documents that ! 1992: will print nicely ! 1993: on either a regular terminal ! 1994: or when phototypeset ! 1995: using the \*T formatting program. ! 1996: .sh 2 "Fonts" ! 1997: .pp ! 1998: A ! 1999: .i font ! 2000: is a style of type. ! 2001: There are three fonts ! 2002: that are available simultaneously, ! 2003: Times Roman, ! 2004: Times Italic, ! 2005: and Times Bold, ! 2006: plus the special math font. ! 2007: The normal font is Roman. ! 2008: Text which would be underlined in \*N ! 2009: with the ! 2010: .b .ul ! 2011: request ! 2012: is set in italics ! 2013: in \*T. ! 2014: .pp ! 2015: There are ways of switching between fonts. ! 2016: The requests ! 2017: .b .r , ! 2018: .b .i , ! 2019: and ! 2020: .b .b ! 2021: switch to Roman, ! 2022: italic, ! 2023: and bold fonts respectively. ! 2024: You can set a single word ! 2025: in some font ! 2026: by typing (for example): ! 2027: .(b ! 2028: \&.i word ! 2029: .)b ! 2030: which will set ! 2031: .i word ! 2032: in italics ! 2033: but does not affect the surrounding text. ! 2034: In \*N, ! 2035: italic and bold text ! 2036: is underlined. ! 2037: .pp ! 2038: Notice that if you are setting more than one word ! 2039: in whatever font, ! 2040: you must surround that word with double quote marks ! 2041: (`\|"\|') ! 2042: so that it will appear to the \*N processor as a single word. ! 2043: The quote marks will not appear in the formatted text. ! 2044: If you do want a quote mark to appear, ! 2045: you should quote the entire string ! 2046: (even if a single word), ! 2047: and use ! 2048: .i two ! 2049: quote marks where you want one to appear. ! 2050: For example, ! 2051: if you want to produce the text: ! 2052: .(b ! 2053: .i """Master Control\|""" ! 2054: .)b ! 2055: in italics, you must type: ! 2056: .(b ! 2057: \&.i """Master Control\e|""" ! 2058: .)b ! 2059: The ! 2060: .b \e| ! 2061: produces a very narrow space ! 2062: so that the ! 2063: .q l ! 2064: does not overlap the quote sign in \*T, ! 2065: like this: ! 2066: .(b ! 2067: .i """Master Control""" ! 2068: .)b ! 2069: .pp ! 2070: There are also several ! 2071: .q pseudo-fonts ! 2072: available. ! 2073: The input: ! 2074: .(b ! 2075: \&.(b ! 2076: \&.u underlined ! 2077: \&.bi "bold italics" ! 2078: \&.bx "words in a box" ! 2079: \&.)b ! 2080: .)b ! 2081: generates ! 2082: .(b ! 2083: .u underlined ! 2084: .bi "bold italics" ! 2085: .bx "words in a box" ! 2086: .)b ! 2087: In \*N these all just underline ! 2088: the text. ! 2089: Notice that pseudo font requests ! 2090: set only the single parameter in the pseudo font; ! 2091: ordinary font requests will begin setting all text ! 2092: in the special font ! 2093: if you do not provide a parameter. ! 2094: No more than one word ! 2095: should appear ! 2096: with these three font requests ! 2097: in the middle of lines. ! 2098: This is because ! 2099: of the way \*T justifies text. ! 2100: For example, ! 2101: if you were to issue the requests: ! 2102: .(b ! 2103: \&.bi "some bold italics" ! 2104: and ! 2105: \&.bx "words in a box" ! 2106: .)b ! 2107: in the middle of a line ! 2108: \*T would produce ! 2109: .bi "some bold italics" ! 2110: and ! 2111: .bx "words in a box" ,\c ! 2112: .if t \p ! 2113: .if n \& \" ! 2114: .if t which I think you will agree does not look good. ! 2115: .if n which would look really lousy in \*T. ! 2116: .pp ! 2117: The second parameter ! 2118: of all font requests ! 2119: is set in the original font. ! 2120: For example, ! 2121: the font request: ! 2122: .(b ! 2123: \&.b bold face ! 2124: .)b ! 2125: generates ! 2126: .q bold ! 2127: in bold font, ! 2128: but sets ! 2129: .q face ! 2130: in the font of the surrounding text, ! 2131: resulting in: ! 2132: .(b ! 2133: .b bold face. ! 2134: .)b ! 2135: To set the two words ! 2136: .b bold ! 2137: and ! 2138: .b face ! 2139: both in ! 2140: .b "bold face" , ! 2141: type: ! 2142: .(b ! 2143: \&.b "bold face" ! 2144: .)b ! 2145: .pp ! 2146: You can mix fonts in a word by using the ! 2147: special sequence ! 2148: .b \ec ! 2149: at the end of a line ! 2150: to indicate ! 2151: .q "continue text processing" ; ! 2152: this allows input lines ! 2153: to be joined together ! 2154: without a space between them. ! 2155: For example, the input: ! 2156: .(b ! 2157: \&.u under \ec ! 2158: \&.i italics ! 2159: .)b ! 2160: generates ! 2161: .u under \c ! 2162: .i italics , ! 2163: but if we had typed: ! 2164: .(b ! 2165: \&.u under ! 2166: \&.i italics ! 2167: .)b ! 2168: the result would have been ! 2169: .u under ! 2170: .i italics ! 2171: as two words. ! 2172: .sh 2 "Point Sizes" ! 2173: .pp ! 2174: The phototypesetter ! 2175: supports different sizes of type, ! 2176: measured in points. ! 2177: The default point size ! 2178: is 10 points ! 2179: for most text, ! 2180: 8 points for footnotes. ! 2181: To change the pointsize, ! 2182: type: ! 2183: .(b ! 2184: \&.sz \c ! 2185: .i +N ! 2186: .)b ! 2187: where ! 2188: .i N ! 2189: is the size wanted in points. ! 2190: The ! 2191: .i "vertical spacing" ! 2192: (distance between the bottom of most letters ! 2193: (the ! 2194: .i baseline ) ! 2195: between adjacent lines) ! 2196: is set to be proportional ! 2197: to the type size. ! 2198: .pp ! 2199: These pointsize changes are ! 2200: .i temporary !!! ! 2201: For example, ! 2202: to reset the pointsize of basic text to twelve point, use: ! 2203: .(b ! 2204: \&.nr pp 12 ! 2205: \&.nr sp 12 ! 2206: \&.nr tp 12 ! 2207: .)b ! 2208: to reset the default pointsize of ! 2209: paragraphs, ! 2210: section headers, ! 2211: and titles respectively. ! 2212: If you only want to set the names of sections in a larger pointsize, ! 2213: use: ! 2214: .(b ! 2215: \&.nr sp 11 ! 2216: .)b ! 2217: alone \*- this sets section titles ! 2218: (e.g., ! 2219: .b "Point Sizes" ! 2220: above) ! 2221: in a larger font than the default. ! 2222: .pp ! 2223: A single word or phrase can be set in a smaller pointsize ! 2224: than the surrounding text ! 2225: using the ! 2226: .b .sm ! 2227: request. ! 2228: This is especially convenient for words that are all capitals, ! 2229: due to the optical illusion that makes them look even larger ! 2230: than they actually are. ! 2231: For example: ! 2232: .(b ! 2233: \&.sm UNIX ! 2234: .)b ! 2235: prints as ! 2236: .sm UNIX ! 2237: rather than ! 2238: UNIX. ! 2239: .pp ! 2240: Warning: ! 2241: changing point sizes ! 2242: on the phototypesetter ! 2243: is a slow mechanical operation. ! 2244: On laser printers it may require loading new fonts. ! 2245: Size changes ! 2246: should be considered carefully. ! 2247: .sh 2 "Quotes" ! 2248: .pp ! 2249: It is conventional when using ! 2250: the typesetter to ! 2251: use pairs of grave and acute accents ! 2252: to generate double quotes, ! 2253: rather than the ! 2254: double quote character ! 2255: (`\|"\|'). ! 2256: This is because it looks better ! 2257: to use grave and acute accents; ! 2258: for example, compare ! 2259: "quote" to ! 2260: ``quote''. ! 2261: .pp ! 2262: In order to make quotes compatible ! 2263: between the typesetter and terminals, ! 2264: you may use the sequences ! 2265: .b \e*(lq ! 2266: and ! 2267: .b \e*(rq ! 2268: to stand for the left and right quote ! 2269: respectively. ! 2270: These both appear as ! 2271: .b """" ! 2272: on most terminals, ! 2273: but are typeset as ! 2274: .b `` ! 2275: and ! 2276: .b '' ! 2277: respectively. ! 2278: For example, ! 2279: use: ! 2280: .(b ! 2281: \e*(lqSome things aren\(aat true ! 2282: even if they did happen.\e*(rq ! 2283: .)b ! 2284: to generate the result: ! 2285: .(b ! 2286: .q "Some things aren't true even if they did happen." ! 2287: .)b ! 2288: As a shorthand, ! 2289: the special font request: ! 2290: .(b ! 2291: \&.q "quoted text" ! 2292: .)b ! 2293: will generate ! 2294: .q "quoted text" . ! 2295: Notice that you must surround ! 2296: the material to be quoted ! 2297: with double quote marks ! 2298: if it is more than one word. ! 2299: .sh 0 ! 2300: .sp 1i ! 2301: .b Acknowledgments ! 2302: .pp ! 2303: I would like to thank ! 2304: Bob Epstein, ! 2305: Bill Joy, ! 2306: and Larry Rowe ! 2307: for having the courage ! 2308: to use the \-me macros ! 2309: to produce non-trivial papers ! 2310: during the development stages; ! 2311: Ricki Blau, ! 2312: Pamela Humphrey, ! 2313: and Jim Joyce ! 2314: for their help with the documentation phase; ! 2315: peter kessler ! 2316: for numerous complaints years after I was ! 2317: .q done ! 2318: with this project, ! 2319: most accompanied by fixes ! 2320: (hence forcing me to fix several small bugs); ! 2321: and the plethora of people who have contributed ideas ! 2322: and have given support for the project. ! 2323: .sp 1i ! 2324: This document was ! 2325: .if n \*N'ed ! 2326: .if t \*T'ed ! 2327: on \*(td ! 2328: and applies to version ! 2329: \*(MO ! 2330: of the \-me macros.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.