|
|
1.1 ! root 1: .\" @(#)u3 6.1 (Berkeley) 5/22/86 ! 2: .\" ! 3: .sp ! 4: .SH ! 5: III. DOCUMENT PREPARATION ! 6: .PP ! 7: .UC UNIX ! 8: systems are used extensively for document preparation. ! 9: There are two major ! 10: formatting ! 11: programs, ! 12: that is, ! 13: programs that produce a text with ! 14: justified right margins, automatic page numbering and titling, ! 15: automatic hyphenation, ! 16: and the like. ! 17: .UL nroff ! 18: is designed to produce output on terminals and ! 19: line-printers. ! 20: .UL troff ! 21: (pronounced ``tee-roff'') ! 22: instead drives a phototypesetter, ! 23: which produces very high quality output ! 24: on photographic paper. ! 25: This paper was formatted with ! 26: .UL troff . ! 27: .SH ! 28: Formatting Packages ! 29: .PP ! 30: The basic idea of ! 31: .UL nroff ! 32: and ! 33: .UL troff ! 34: is that the text to be formatted contains within it ! 35: ``formatting commands'' that indicate in detail ! 36: how the formatted text is to look. ! 37: For example, there might be commands that specify how long ! 38: lines are, whether to use single or double spacing, ! 39: and what running titles to use on each page. ! 40: .PP ! 41: Because ! 42: .UL nroff ! 43: and ! 44: .UL troff ! 45: are relatively hard to learn to use effectively, ! 46: several ! 47: ``packages'' of canned formatting requests are available ! 48: to let you specify ! 49: paragraphs, running titles, footnotes, multi-column output, ! 50: and so on, with little effort ! 51: and without having to learn ! 52: .UL nroff ! 53: and ! 54: .UL troff . ! 55: These packages take a modest effort to learn, ! 56: but the rewards for using them are so great ! 57: that it is time well spent. ! 58: .PP ! 59: In this section, ! 60: we will provide a hasty look at the ``manuscript'' ! 61: package known as ! 62: .UL \-ms . ! 63: Formatting requests typically consist of a period and two upper-case letters, ! 64: such as ! 65: .UL .TL , ! 66: which is used to introduce a title, ! 67: or ! 68: .UL .PP ! 69: to begin a new paragraph. ! 70: .PP ! 71: A document is typed so it looks something like this: ! 72: .P1 ! 73: \&.TL ! 74: title of document ! 75: \&.AU ! 76: author name ! 77: \&.SH ! 78: section heading ! 79: \&.PP ! 80: paragraph ... ! 81: \&.PP ! 82: another paragraph ... ! 83: \&.SH ! 84: another section heading ! 85: \&.PP ! 86: etc. ! 87: .P2 ! 88: The lines that begin with a period are the formatting requests. ! 89: For example, ! 90: .UL .PP ! 91: calls for starting a new paragraph. ! 92: The precise meaning of ! 93: .UL .PP ! 94: depends on what output device is being used ! 95: (typesetter or terminal, for instance), ! 96: and on what publication the document will appear in. ! 97: For example, ! 98: .UL \-ms ! 99: normally assumes that a paragraph is preceded by a space ! 100: (one line in ! 101: .UL nroff , ! 102: \(12 line in ! 103: .UL troff ), ! 104: and the first word is indented. ! 105: These rules can be changed if you like, ! 106: but they are changed by changing the interpretation ! 107: of ! 108: .UL .PP , ! 109: not by re-typing the document. ! 110: .PP ! 111: To actually produce a document in standard format ! 112: using ! 113: .UL \-ms , ! 114: use the command ! 115: .P1 ! 116: troff -ms files ... ! 117: .P2 ! 118: for the typesetter, and ! 119: .P1 ! 120: nroff -ms files ... ! 121: .P2 ! 122: for a terminal. ! 123: The ! 124: .UL \-ms ! 125: argument tells ! 126: .UL troff ! 127: and ! 128: .UL nroff ! 129: to use the manuscript package of formatting requests. ! 130: .PP ! 131: There are several similar packages; ! 132: check with a local expert to determine which ones ! 133: are in common use on your machine. ! 134: .SH ! 135: Supporting Tools ! 136: .PP ! 137: In addition to the basic formatters, ! 138: there is ! 139: a host of supporting programs ! 140: that help with document preparation. ! 141: The list in the next few paragraphs ! 142: is far from complete, ! 143: so browse through the manual ! 144: and check with people around you for other possibilities. ! 145: .PP ! 146: .UL eqn ! 147: and ! 148: .UL neqn ! 149: let you integrate mathematics ! 150: into the text of a document, ! 151: in an easy-to-learn language that closely resembles the way ! 152: you would speak it aloud. ! 153: For example, the ! 154: .UL eqn ! 155: input ! 156: .P1 ! 157: sum from i=0 to n x sub i ~=~ pi over 2 ! 158: .P2 ! 159: produces the output ! 160: .EQ ! 161: sum from i=0 to n x sub i ~=~ pi over 2 ! 162: .EN ! 163: .PP ! 164: The program ! 165: .UL tbl ! 166: provides an analogous service for preparing tabular material; ! 167: it does all the computations necessary to align complicated columns ! 168: with elements of varying widths. ! 169: .PP ! 170: .UL refer ! 171: prepares bibliographic citations from a data base, ! 172: in whatever style is defined by the formatting package. ! 173: It looks after all the details of numbering references in sequence, ! 174: filling in page and volume numbers, ! 175: getting the author's initials and the journal name right, ! 176: and so on. ! 177: .PP ! 178: .UL spell ! 179: and ! 180: .UL typo ! 181: detect possible spelling mistakes in a document.\(dg ! 182: .FS ! 183: \(dg "typo" is not provided with Berkeley Unix. ! 184: .FE ! 185: .UL spell ! 186: works by comparing the words in your document ! 187: to a dictionary, ! 188: printing those that are not in the dictionary. ! 189: It knows enough about English spelling to detect plurals and the like, ! 190: so it does a very good job. ! 191: .UL typo ! 192: looks for words which are ``unusual'', ! 193: and prints those. ! 194: Spelling mistakes tend to be more unusual, ! 195: and thus show up early when the most unusual words ! 196: are printed first. ! 197: .PP ! 198: .UL grep ! 199: looks through a set of files for lines ! 200: that contain a particular text pattern ! 201: (rather like the editor's context search does, ! 202: but on a bunch of files). ! 203: For example, ! 204: .P1 ! 205: grep \(fming$\(fm chap* ! 206: .P2 ! 207: will find all lines that end with ! 208: the letters ! 209: .UL ing ! 210: in the files ! 211: .UL chap* . ! 212: (It is almost always a good practice to put single quotes around ! 213: the pattern you're searching for, ! 214: in case it contains characters like ! 215: .UL * ! 216: or ! 217: .UL $ ! 218: that have a special meaning to the shell.) ! 219: .UL grep ! 220: is often useful for finding out in which of a set of files ! 221: the misspelled words detected by ! 222: .UL spell ! 223: are actually located. ! 224: .PP ! 225: .UL diff ! 226: prints a list of the differences between ! 227: two files, ! 228: so you can compare ! 229: two versions of something automatically ! 230: (which certainly beats proofreading by hand). ! 231: .PP ! 232: .UL wc ! 233: counts the words, lines and characters in a set of files. ! 234: .UL tr ! 235: translates characters into other characters; ! 236: for example it will convert upper to lower case and vice versa. ! 237: This translates upper into lower: ! 238: .P1 ! 239: tr A-Z a-z <input >output ! 240: .P2 ! 241: .PP ! 242: .UL sort ! 243: sorts files in a variety of ways; ! 244: .UL cref ! 245: makes cross-references; ! 246: .UL ptx ! 247: makes a permuted index ! 248: (keyword-in-context listing). ! 249: .UL sed ! 250: provides many of the editing facilities ! 251: of ! 252: .UL ed , ! 253: but can apply them to arbitrarily long inputs. ! 254: .UL awk ! 255: provides the ability to do both pattern matching and numeric computations, ! 256: and to conveniently process fields within lines. ! 257: These programs are for more advanced users, ! 258: and they are not limited to document preparation. ! 259: Put them on your list of things to learn about. ! 260: .PP ! 261: Most of these programs are either independently documented ! 262: (like ! 263: .UL eqn ! 264: and ! 265: .UL tbl ), ! 266: or are sufficiently simple that the description in ! 267: the ! 268: .ul 2 ! 269: .UC UNIX ! 270: Programmer's Manual ! 271: is adequate explanation. ! 272: .SH ! 273: Hints for Preparing Documents ! 274: .PP ! 275: Most documents go through several versions (always more than you expected) before they ! 276: are finally finished. ! 277: Accordingly, you should do whatever possible to make ! 278: the job of changing them easy. ! 279: .PP ! 280: First, when you do the purely mechanical operations of typing, ! 281: type so that subsequent editing will be easy. ! 282: Start each sentence on a new line. ! 283: Make lines short, ! 284: and break lines at natural places, ! 285: such as after commas and semicolons, ! 286: rather than randomly. ! 287: Since most people change documents by rewriting phrases ! 288: and adding, deleting and rearranging sentences, ! 289: these precautions simplify any editing ! 290: you have to do later. ! 291: .PP ! 292: Keep the individual files of a document down ! 293: to modest size, ! 294: perhaps ten to fifteen thousand characters. ! 295: Larger files edit more slowly, ! 296: and of course if you make a dumb mistake ! 297: it's better to have clobbered a small file than a big one. ! 298: Split into files at natural boundaries in the document, ! 299: for the same reasons that you start each sentence ! 300: on a new line. ! 301: .PP ! 302: The second aspect of making change easy ! 303: is to not commit yourself to formatting details too early. ! 304: One of the advantages of formatting packages like ! 305: .UL \-ms ! 306: is that they permit you to delay decisions ! 307: to the last possible moment. ! 308: Indeed, ! 309: until a document is printed, ! 310: it is not even decided whether it will be typeset ! 311: or put on a line printer. ! 312: .PP ! 313: As a rule of thumb, for all but the most trivial jobs, ! 314: you should type a document in terms of a set of requests ! 315: like ! 316: .UL .PP , ! 317: and then define them appropriately, ! 318: either by using one of the canned packages ! 319: (the better way) ! 320: or by defining your own ! 321: .UL nroff ! 322: and ! 323: .UL troff ! 324: commands. ! 325: As long as you have entered the text in some systematic way, ! 326: it can always be cleaned up and re-formatted ! 327: by a judicious combination of ! 328: editing commands and request definitions.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.