home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-08-03 | 40.3 KB | 2,247 lines |
- .\" Copyright (c) 1986 The Regents of the University of California.
- .\" All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms are permitted
- .\" provided that the above copyright notice and this paragraph are
- .\" duplicated in all such forms and that any documentation,
- .\" advertising materials, and other materials related to such
- .\" distribution and use acknowledge that the software was developed
- .\" by the University of California, Berkeley. The name of the
- .\" University may not be used to endorse or promote products derived
- .\" from this software without specific prior written permission.
- .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- .\"
- .\" @(#)intro.me 6.4 (Berkeley) 7/17/89
- .\"
- .\" Modified for groff by jjc@jclark.com.
- .\"UC 7
- .ll 6.5i
- .lt 6.5i
- .ds MO @VERSION@
- .nr si 3n
- .he 'USING GROFF AND \-ME''%'
- .\"eh 'USD:22-%''Writing Papers with NROFF using \-me'
- .\"oh 'Writing Papers with NROFF using \-me''USD:22-%'
- .ds U \s-1UNIX\s0
- .ds N \s-1NROFF\s0
- .ds T \s-1TROFF\s0
- .ds G \s-1GROFF\s0
- .+c
- .(l C
- .sz 14
- .b "Writing Papers with GROFF using \-me"
- .sz
- .sp 2
- .ul
- Eric P. Allman*
- .(f
- *Author's current address:
- Britton Lee, Inc.,
- 1919 Addison Suite 105,
- Berkeley, California 94704.
- .)f
- .sp
- Project INGRES
- Electronics Research Laboratory
- University of California, Berkeley
- Berkeley, California 94720
- .sp 2
- .i "Modified for \*G by James Clark"
- .)l
- .sp 4
- .pp
- This document describes
- the text processing facilities
- available on the \*U\(dg
- .(f
- \(dg\*U is a trademark
- of AT&T Bell Laboratories
- .)f
- operating system
- via \*G and the
- \-me
- macro package.
- It is assumed
- that the reader
- already is generally familiar
- with the \*U operating system
- and a text editor
- such as
- .b ex .
- This is intended to be a casual introduction,
- and
- as such not all material is covered.
- In particular,
- many variations and additional features
- of the \-me macro package
- are not explained.
- For a complete discussion of this
- and other issues,
- see
- .ul
- The \-me Reference Manual
- and
- .ul
- The \*N/\*T Reference Manual.
- .pp
- \*G, a computer program
- that runs on the \*U operating system,
- reads an input file
- prepared by the user
- and outputs a formatted paper
- suitable for publication or framing.
- The input consists of
- .i text ,
- or words to be printed,
- and
- .i requests ,
- which give instructions
- to the \*G program
- telling how to format the printed copy.
- .pp
- Section 1
- describes the basics
- of text processing.
- Section 2
- describes the basic requests.
- Section 3
- introduces displays.
- Annotations,
- such as footnotes,
- are handled in
- section 4.
- The more complex requests
- which are not discussed in section 2
- are covered in section 5.
- Finally,
- section 6
- discusses things you will need
- to know
- if you want to typeset documents.
- If you are a novice,
- you probably won't want to read beyond section 4
- until you have tried some of the basic features out.
- .pp
- When you have your raw text ready,
- call the \*G formatter by typing
- as a request to the \*U shell:
- .(b
- groff \-me \-T\c
- .i "type files"
- .)b
- where
- .i type
- describes the type of
- output device you are using.
- A complete description of options
- to the \*G command can be found in
- .b groff (1).
- .pp
- The word
- .i argument
- is used in this manual
- to mean a word or number
- which appears on the same line
- as a request
- which modifies the meaning
- of that request.
- For example,
- the request
- .(b
- \&.sp
- .)b
- spaces one line,
- but
- .(b
- \&.sp 4
- .)b
- spaces four lines.
- The number
- .b 4
- is an
- .i argument
- to the
- .b .sp
- request
- which says to space four lines
- instead of one.
- Arguments are separated from the request
- and from each other
- by spaces.
- .sh 1 "Basics of Text Processing"
- .pp
- The primary function
- of \*G
- is to
- .i collect
- words from input lines,
- .i fill
- output lines with those words,
- .i justify
- the right hand margin by inserting extra spaces
- in the line,
- and output the result.
- For example,
- the input:
- .(b
- Now is the time
- for all good men
- to come to the aid
- of their party.
- Four score and seven
- years ago,...
- .)b
- will be read,
- packed onto output lines,
- and justified
- to produce:
- .(b F
- Now is the time
- for all good men
- to come to the aid
- of their party.
- Four score and seven
- years ago,...
- .)b
- Sometimes you may want to start a new output line
- even though the line you are on
- is not yet full;
- for example,
- at the end of a paragraph.
- To do this
- you can cause a
- .i break ,
- which
- starts a new output line.
- Some requests
- cause a break automatically,
- as do blank input lines
- and input lines beginning with a space.
- .pp
- Not all input lines
- are text to be formatted.
- Some of the input lines
- are
- .i requests
- which describe
- how to format the text.
- Requests always have a period
- or an apostrophe
- (\c
- .q "\|\(aa\|" )
- as the first character
- of the input line.
- .pp
- The text formatter
- also does more complex things,
- such as automatically numbering pages,
- skipping over page folds,
- putting footnotes in the correct place,
- and so forth.
- .pp
- I can offer you a few hints
- for preparing text
- for input to \*G.
- First,
- keep the input lines short.
- Short input lines are easier to edit,
- and \*G will pack words onto longer lines
- for you anyhow.
- In keeping with this,
- it is helpful
- to begin a new line
- after every period,
- comma,
- or phrase,
- since common corrections
- are to add or delete sentences
- or phrases.
- Second,
- do not put spaces at the end of lines,
- since this can sometimes confuse the \*N
- processor.
- Third,
- do not hyphenate words at the end of lines
- (except words that should have hyphens in them,
- such as
- .q mother-in-law );
- \*G is smart enough to hyphenate words
- for you as needed,
- but is not smart enough
- to take hyphens out
- and join a word back together.
- Also,
- words such as
- .q mother-in-law
- should not be broken
- over a line,
- since then you will get a space
- where not wanted,
- such as
- .tr @-
- .nh
- .q "mother@\ in@law" .
- .br
- .tr @@
- .hy 14
- .sh 1 "Basic Requests"
- .sh 2 "Paragraphs"
- .pp
- Paragraphs are begun
- by using the
- .b .pp
- request.
- For example,
- the input:
- .(b
- \&.pp
- Now is the time for all good men
- to come to the aid of their party.
- Four score and seven years ago,...
- .)b
- produces a blank line
- followed by an indented first line.
- The result is:
- .(b F
- .ti +\n(piu
- Now is the time for all good men
- to come to the aid of their party.
- Four score and seven years ago,...
- .)b
- .pp
- Notice that the sentences
- of the paragraphs
- .i "must not"
- begin with a space,
- since blank lines
- and lines beginning with spaces
- cause a break.
- For example,
- if I had typed:
- .(b
- \&.pp
- Now is the time for all good men
- to come to the aid of their party.
- Four score and seven years ago,...
- .)b
- The output would be:
- .(b F
- .ti +\n(piu
- Now is the time for all good men
- to come to the aid of their party.
- Four score and seven years ago,...
- .)b
- A new line begins after the word
- .q men
- because the second line began with a space character.
- .pp
- There are many
- fancier
- types of paragraphs,
- which will be described later.
- .sh 2 "Headers and Footers"
- .pp
- Arbitrary headers and footers
- can be put
- at the top and bottom
- of every page.
- Two requests
- of the form
- .b .he \ \c
- .i title
- and
- .b .fo \ \c
- .i title
- define the titles to put at the head and the foot
- of every page,
- respectively.
- The titles are called
- .i three-part
- titles,
- that is,
- there is a left-justified part,
- a centered part,
- and a right-justified part.
- To separate these three parts
- the first character of
- .i title
- (whatever it may be)
- is used as a delimiter.
- Any character may be used,
- but
- backslash
- and double quote marks
- should be avoided.
- The percent sign
- is replaced by the current page number
- whenever found in the title.
- For example,
- the input:
- .(b
- \&.he \(aa\(aa%\(aa\(aa
- \&.fo \(aaJane Jones\(aa\(aaMy Book\(aa
- .)b
- results in the page number
- centered at the top
- of each page,
- .q "Jane Jones"
- in the lower left corner,
- and
- .q "My Book"
- in the lower right corner.
- .sh 2 "Double Spacing"
- .pp
- .ls 2
- \*G will double space output text automatically if you
- use the request
- .b ".ls\ 2" ,
- as is done in this section.
- You can revert to single spaced mode
- by typing
- .b ".ls\ 1" .
- .ls 1
- .sh 2 "Page Layout"
- .pp
- A number of requests allow
- you to change the way the printed copy looks,
- sometimes called the
- .i layout
- of the output page.
- Most of these requests adjust the placing
- of
- .q "white space"
- (blank lines or spaces).
- In these explanations,
- characters in italics
- should be replaced with values you wish to use;
- bold characters
- represent characters which should actually be typed.
- .pp
- The
- .b .bp
- request
- starts a new page.
- .pp
- The request
- .b .sp \ \c
- .i N
- leaves
- .i N
- lines of blank space.
- .i N
- can be omitted
- (meaning skip a single line)
- or can be of the form
- .i N \^\c
- .b i
- (for
- .i N
- inches)
- or
- .i N \^\c
- .b c
- (for
- .i N
- centimeters).
- For example, the input:
- .(b
- \&.sp 1.5i
- My thoughts on the subject
- \&.sp
- .)b
- leaves one and a half inches of space,
- followed by the line
- .q "My thoughts on the subject" ,
- followed by a single blank line.
- .pp
- The
- .b .in \ \c
- .i +N
- request
- changes the amount of white space
- on the left of the page
- (the
- .i indent ).
- The argument
- .i N
- can be of the form
- .b + \c
- .i N
- (meaning leave
- .i N
- spaces more than you are already leaving),
- .b \- \c
- .i N
- (meaning leave less than you do now),
- or just
- .i N
- (meaning leave exactly
- .i N
- spaces).
- .i N
- can be of the form
- .i N \^\c
- .b i
- or
- .i N \^\c
- .b c
- also.
- For example,
- the input:
- .(b
- initial text
- \&.in 5
- some text
- \&.in +1i
- more text
- \&.in \-2c
- final text
- .)b
- produces
- .q "some text"
- indented exactly five spaces
- from the left margin,
- .q "more text"
- indented five spaces
- plus one inch
- from the left margin
- (fifteen spaces
- on a pica typewriter),
- and
- .q "final text"
- indented five spaces
- plus one inch
- minus two centimeters
- from the margin.
- That is,
- the output is:
- .(b
- initial text
- .in +5
- some text
- .in +1i
- more text
- .in -2c
- final text
- .)b
- .pp
- The
- .b .ti \ \c
- .i +N
- (temporary indent)
- request is used like
- .b .in \ \c
- .i +N
- when the indent
- should apply to one line only,
- after which it should revert
- to the previous indent.
- For example,
- the input:
- .(b
- \&.in 1i
- \&.ti 0
- Ware, James R. The Best of Confucius,
- Halcyon House, 1950.
- An excellent book containing translations of
- most of Confucius\(aa most delightful sayings.
- A definite must for anyone interested in the early foundations
- of Chinese philosophy.
- .)b
- produces:
- .in 1i+\n($iu
- .ti \n($iu
- 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.
- .pp
- Text lines can be centered
- by using the
- .b .ce
- request.
- The line after the
- .b .ce
- is centered
- (horizontally)
- on the page.
- To center more than one line,
- use
- .b .ce \ \c
- .i N
- (where
- .i N
- is the number of lines to center),
- followed by the
- .i N
- lines.
- If you want to center many lines
- but don't want to count them,
- type:
- .(b
- \&.ce 1000
- lines to center
- \&.ce 0
- .)b
- The
- .b ".ce\ 0"
- request tells \*G to center zero more lines,
- in other words,
- stop centering.
- .pp
- 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
- .b .br .
- .sh 1 "Displays"
- .pp
- Displays are sections of text
- to be set off
- from the body of the paper.
- Major quotes,
- tables,
- and figures
- are types of displays,
- as are all the examples
- used in this document.
- All displays
- except centered blocks
- are output
- single spaced.
- .sh 2 "Major Quotes"
- .pp
- 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.
- These can be generated
- using the commands
- .b .(q
- and
- .b .)q
- to surround the quote.
- For example,
- the input:
- .(b
- 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
- .)b
- generates as output:
- .lp
- 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
- .sh 2 "Lists"
- .pp
- A
- .i list
- is an indented,
- single spaced,
- unfilled display.
- Lists should be used
- when the material to be printed
- should not be filled and justified
- like normal text,
- such as columns of figures
- or the examples used in this paper.
- Lists are surrounded
- by the requests
- .b .(l
- and
- .b .)l .
- For example,
- type:
- .(b
- Alternatives to avoid deadlock are:
- \&.(l
- Lock in a specified order
- Detect deadlock and back out one process
- Lock all resources needed before proceeding
- \&.)l
- .)b
- will produce:
- .br
- Alternatives to avoid deadlock are:
- .(l
- Lock in a specified order
- Detect deadlock and back out one process
- Lock all resources needed before proceeding
- .)l
- .sh 2 "Keeps"
- .pp
- A
- .i keep
- is a display of lines
- which are kept on a single page
- if possible.
- An example of where you would use a keep
- might be a diagram.
- Keeps differ from lists
- in that lists may be broken
- over a page boundary
- whereas keeps will not.
- .pp
- Blocks are the basic kind of keep.
- They begin with the request
- .b .(b
- and end with the request
- .b .)b .
- If there is not room on the current page
- for everything in the block,
- a new page is begun.
- This has the unpleasant effect
- of leaving blank space
- at the bottom of the page.
- When this is not appropriate,
- you can use the alternative,
- called
- .i "floating keeps" .
- .pp
- .i "Floating keeps"
- move relative to the text.
- Hence,
- they are good for things
- which will be referred to
- by name,
- such as
- .q "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
- .b .(z
- and end with the line
- .b .)z .
- For an example of a floating keep,
- see figure 1.
- .(z
- .in 1i
- .xl -1i
- .hl
- \&.(z
- \&.hl
- Text of keep to be floated.
- \&.sp
- \&.ce
- Figure 1. Example of a Floating Keep.
- \&.hl
- \&.)z
- .sp
- .ce
- Figure 1. Example of a Floating Keep.
- .hl
- .)z
- The
- .b .hl
- request is used
- to draw a horizontal line
- so that the figure
- stands out from the text.
- .sh 2 "Fancier Displays"
- .pp
- Keeps and lists are normally collected in
- .i nofill
- mode,
- so that they are good for tables and such.
- If you want a display
- in fill mode
- (for text),
- type
- .b ".(l\ F"
- (Throughout this section,
- comments applied to
- .b .(l
- also apply to
- .b .(b
- and
- .b .(z ).
- This kind of display
- will be indented from both margins.
- For example,
- the input:
- .(b
- \&.(l 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!
- \&.)l
- .)b
- will be output as:
- .(b 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!
- .)b
- .pp
- Lists and blocks are also normally indented
- (floating keeps are normally left justified).
- To get a left-justified list,
- type
- .b ".(l\ L" .
- To get a list centered
- line-for-line,
- type
- .b ".(l C" .
- For example,
- to get a filled,
- left justified list, enter:
- .(b
- \&.(l L F
- text of block
- \&.)l
- .)b
- The input:
- .(b
- \&.(l
- first line of unfilled display
- more lines
- \&.)l
- .)b
- produces the indented text:
- .(b
- first line of unfilled display
- more lines
- .)b
- Typing the character
- .b L
- after the
- .b .(l
- request produces the left justified result:
- .(b L
- first line of unfilled display
- more lines
- .)b
- Using
- .b C
- instead of
- .b L
- produces the line-at-a-time centered output:
- .(b C
- first line of unfilled display
- more lines
- .)b
- .pp
- Sometimes it may be
- that you 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
- .b .(c
- and
- .b .)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
- .b C
- argument to keeps.
- .pp
- Centered blocks are
- .i not
- keeps,
- and may be used
- in conjunction
- with keeps.
- For example,
- to center a group of lines
- as a unit
- and keep them
- on one page,
- use:
- .(b
- \&.(b L
- \&.(c
- first line of unfilled display
- more lines
- \&.)c
- \&.)b
- .)b
- to produce:
- .(b L
- .(c
- first line of unfilled display
- more lines
- .)c
- .)b
- If the block requests
- (\c
- .b .(b
- and
- .b .)b )
- had been omitted
- 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
- .b L
- argument to
- .b .(b ;
- this causes the centered block
- to center within the entire line
- rather than within the line
- minus the indent.
- Also,
- the center requests
- must
- be nested
- .i inside
- the keep requests.
- .sh 1 "Annotations"
- .pp
- There are a number of requests
- to save text
- for later printing.
- .i Footnotes
- are printed at the bottom of the current page.
- .i "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.
- .i 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 called for explicitly.
- .sh 2 "Footnotes"
- .pp
- Footnotes begin with the request
- .b .(f
- and end with the request
- .b .)f .
- The current footnote number is maintained
- automatically,
- and can be used by typing \e**,
- to produce a footnote number\**.
- .(f
- \**Like this.
- .)f
- The number is automatically incremented
- after every footnote.
- For example,
- the input:
- .(b
- \&.(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.\e**
- \&.(f
- \e**James R. Ware,
- \&.ul
- The Best of Confucius,
- Halcyon House, 1950.
- Page 77.
- \&.)f
- \&.)q
- .)b
- generates the result:
- .(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
- It is important
- that the footnote
- appears
- .i inside
- the quote,
- so that you can be sure
- that the footnote
- will appear
- on the same page
- as the quote.
- .sh 2 "Delayed Text"
- .pp
- Delayed text
- is very similar to a footnote
- except that it is printed
- when called for explicitly.
- This allows a list of
- references to
- appear
- (for example)
- at the end of each chapter,
- as is the convention in some disciplines.
- Use
- .b \e*#
- on delayed text
- instead of
- .b \e**
- as on footnotes.
- .pp
- If you are using delayed text
- as your standard reference mechanism,
- you can still use footnotes,
- except that you may want to reference them
- with special characters*
- .(f
- *Such as an asterisk.
- .)f
- rather than numbers.
- .sh 2 "Indexes"
- .pp
- An
- .q index
- (actually more like a table of contents,
- since the entries are not sorted alphabetically)
- resembles delayed text,
- in that it is saved until called for.
- 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.
- .pp
- Index entries begin with the request
- .b .(x
- and end with
- .b .)x .
- The
- .b .)x
- request may have a argument,
- which is the value to print
- as the
- .q "page number" .
- It defaults to the current page number.
- If the page number given is an underscore
- (\c
- .q _ )
- no page number
- or line of dots
- is printed at all.
- To get the line of dots
- without a page number,
- type
- .b ".)x """"" ,
- which specifies an explicitly null page number.
- .pp
- The
- .b .xp
- request prints the index.
- .pp
- For example,
- the input:
- .(b
- \&.(x
- Sealing wax
- \&.)x
- \&.(x
- Cabbages and kings
- \&.)x _
- \&.(x
- Why the sea is boiling hot
- \&.)x 2.5a
- \&.(x
- Whether pigs have wings
- \&.)x ""
- \&.(x
- This is a terribly long index entry, such as might be used
- for a list of illustrations, tables, or figures; I expect it to
- take at least two lines.
- \&.)x
- \&.xp
- .)b
- generates:
- .(x
- Sealing wax
- .)x
- .(x
- Cabbages and kings
- .)x _
- .(x
- Why the sea is boiling hot
- .)x 2.5a
- .(x
- Whether pigs have wings
- .)x ""
- .(x
- This is a terribly long index entry, such as might be used
- for a list of illustrations, tables, or figures; I expect it to
- take at least two lines.
- .)x
- .xp
- .pp
- The
- .b .(x
- request may have a single character
- argument,
- specifying the
- .q name
- of the index;
- the normal index is
- .b x .
- Thus,
- several
- .q indices
- may be maintained simultaneously
- (such as a list of tables, table of contents, etc.).
- .pp
- Notice that the index must be printed
- at the
- .i end
- of the paper,
- rather than at the beginning
- where it will probably appear
- (as a table of contents);
- the pages may have to be physically rearranged
- after printing.
- .sh 1 "Fancier Features"
- .pp
- A large number of fancier requests
- exist,
- notably requests to provide other sorts of paragraphs,
- numbered sections of the form
- .b 1.2.3
- (such as used in this document),
- and multicolumn output.
- .sh 2 "More Paragraphs"
- .pp
- Paragraphs generally start with
- a blank line
- and with the first line
- indented.
- It is possible to get
- left-justified block-style paragraphs
- by using
- .b .lp
- instead of
- .b .pp ,
- as demonstrated by the next paragraph.
- .lp
- Sometimes you want to use paragraphs
- that have the
- .i body
- indented,
- and the first line
- exdented
- (opposite of indented)
- with a label.
- This can be done with the
- .b .ip
- request.
- A word specified on the same line as
- .b .ip
- is printed in the margin,
- and the body is lined up
- at a prespecified position
- (normally five spaces).
- For example,
- the input:
- .(b
- \&.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 \c
- .b .ip
- appears
- in the margin.
- \&.lp
- We can continue text...
- .)b
- produces as output:
- .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
- .b .ip
- appears
- in the margin.
- .lp
- We can continue text without starting a new indented
- paragraph
- by using the
- .b .lp
- request.
- .pp
- If you have spaces in the label of a
- .b .ip
- request,
- you must use an
- .q "unpaddable space"
- instead of a regular space.
- This is typed as a backslash character
- (\c
- .q \e )
- followed by a space.
- For example,
- to print the label
- .q "Part 1" ,
- enter:
- .(b
- \&.ip "Part\e 1"
- .)b
- .pp
- If a label of an indented paragraph
- (that is, the argument to
- .b .ip )
- is longer than the space allocated for the label,
- .b .ip
- will begin a new line after the label.
- For example,
- the input:
- .(b
- \&.ip longlabel
- This paragraph had 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.
- .)b
- will produce:
- .ip longlabel
- This paragraph had 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.
- .pp
- It is possible to change the size of the label
- by using a second argument
- which is the size of the label.
- For example,
- the above example could be done correctly
- by saying:
- .(b
- \&.ip longlabel 10
- .)b
- which will make the paragraph indent
- 10 spaces for this paragraph only.
- If you have many paragraphs to indent
- all the same amount,
- use the
- .i "number register"
- .b ii .
- For example, to leave one inch of space
- for the label,
- type:
- .(b
- \&.nr ii 1i
- .)b
- somewhere before the first call to
- .b .ip .
- Refer to the reference manual
- for more information.
- .pp
- If
- .b .ip
- is used
- with no argument at all
- no hanging tag will be printed.
- For example,
- the input:
- .(b
- \&.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 has no tag in the margin.
- .)b
- produces as output:
- .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 has no tag in the margin.
- .pp
- A special case of
- .b .ip
- is
- .b .np ,
- which automatically
- numbers paragraphs sequentially from 1.
- The numbering is reset at the next
- .b .pp ,
- .b .lp ,
- or
- .b .sh
- (to be described in the next section)
- request.
- For example,
- the input:
- .(b
- \&.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.
- \&.pp
- This paragraph will reset numbering by .np.
- \&.np
- For example,
- we have reverted to numbering from one now.
- .)b
- generates:
- .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.
- .pp
- This paragraph will reset numbering by .np.
- .np
- For example,
- we have reverted to numbering from one now.
- .pp
- The
- .b .bu
- request gives lists of this sort that are identified with
- bullets rather than numbers.
- The paragraphs are also crunched together.
- For example,
- the input:
- .(b
- \&.bu
- \&One egg yolk
- \&.bu
- \&One tablespoon cream or top milk
- \&.bu
- \&Salt, cayenne, and lemon juice to taste
- \&.bu
- \&A generous two tablespoonfuls of butter
- .)b
- produces\**:
- .(f
- \**By the way,
- if you put the first three ingredients in a a heavy, deep pan
- and whisk the ingredients madly over a medium flame
- (never taking your hand off the handle of the pot)
- until the mixture reaches the consistency of custard
- (just a minute or two),
- then mix in the butter off-heat,
- you will have a wonderful Hollandaise sauce.
- .)f
- .bu
- One egg yolk
- .bu
- One tablespoon cream or top milk
- .bu
- Salt, cayenne, and lemon juice to taste
- .bu
- A generous two tablespoonfuls of butter
- .sh 2 "Section Headings"
- .pp
- Section numbers
- (such as the ones used in this document)
- can be automatically generated
- using the
- .b .sh
- request.
- You must tell
- .b .sh
- the
- .i depth
- of the section number
- and a section title.
- The depth
- specifies how many numbers
- are to appear
- (separated by decimal points)
- in the section number.
- For example,
- the section number
- .b 4.2.5
- has a depth of three.
- .pp
- Section numbers
- are incremented
- in a fairly intuitive fashion.
- If you add a number
- (increase the depth),
- 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:
- .(b
- \&.sh 1 "The Preprocessor"
- \&.sh 2 "Basic Concepts"
- \&.sh 2 "Control Inputs"
- \&.sh 3
- \&.sh 3
- \&.sh 1 "Code Generation"
- \&.sh 3
- .)b
- produces as output the result:
- .(b
- .b
- 1. The Preprocessor
- 1.1. Basic Concepts
- 1.2. Control Inputs
- 1.2.1.
- 1.2.2.
- 2. Code Generation
- 2.1.1.
- .)b
- .pp
- You can specify the section number to begin
- by placing the section number after the section title,
- using spaces instead of dots.
- For example,
- the request:
- .(b
- \&.sh 3 "Another section" 7 3 4
- .)b
- will begin the section numbered
- .b 7.3.4 ;
- all subsequent
- .b .sh
- requests will number relative to this number.
- .pp
- There are more complex features
- which will cause each section to be indented
- proportionally to the depth of the section.
- For example, if you enter:
- .(b
- \&.nr si \c
- .i N
- .)b
- each section will be indented by an amount
- .i N .
- .i N
- must have a scaling factor attached,
- that is, it must be of the form
- .i Nx ,
- where
- .i x
- is a character telling what units
- .i N
- is in.
- Common values for
- .i x
- are
- .b i
- for inches,
- .b c
- for centimeters,
- and
- .b n
- for
- .i ens
- (the width of a single character).
- For example,
- to indent each section
- one-half inch,
- type:
- .(b
- \&.nr si 0.5i
- .)b
- After this,
- sections will be indented by
- one-half inch
- per level of depth in the section number.
- For example,
- this document was produced
- using the request
- .(b
- \&.nr si 3n
- .)b
- at the beginning of the input file,
- giving three spaces of indent
- per section depth.
- .pp
- Section headers without automatically generated numbers
- can be done using:
- .(b
- \&.uh "Title"
- .)b
- which will do a section heading,
- but will put no number on the section.
- .sh 2 "Parts of the Basic Paper"
- .pp
- There are some requests
- which assist in setting up
- papers.
- The
- .b .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,
- a typical title page might appear as:
- .(b
- \&.tp
- \&.sp 2i
- \&.(l C
- THE GROWTH OF TOENAILS
- IN UPPER PRIMATES
- \&.sp
- by
- \&.sp
- Frank N. Furter
- \&.)l
- \&.bp
- .)b
- .pp
- The
- .b .+c \ \c
- .i T
- request can be used
- 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
- .i T .
- For example,
- to begin a chapter called
- .q Conclusions ,
- use the request:
- .(b
- \&.+c "CONCLUSIONS"
- .)b
- which will produce,
- on a new page,
- the lines
- .(b C
- CHAPTER 5
- CONCLUSIONS
- .)b
- 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
- .b .+c
- request was not designed to work only with the
- .b .th
- request,
- it is tuned for the format acceptable
- for a PhD thesis
- at Berkeley.
- .pp
- If the
- title parameter
- .i T
- is omitted from the
- .b .+c
- request,
- the result is a chapter with no heading.
- This can also be used at the beginning
- of a paper;
- for example,
- .b .+c
- was used to generate page one
- of this document.
- .pp
- Although
- papers traditionally have the abstract,
- table of contents,
- and so forth at the front of the paper,
- it is more convenient to format
- and print them last
- when using \*G.
- This is so that index entries
- can be collected and then printed
- for the table of contents
- (or whatever).
- At the end of the paper,
- issue the
- .b ".++ P"
- request,
- which begins the preliminary part
- of the paper.
- After issuing this request,
- the
- .b .+c
- request will begin a preliminary section
- of the paper.
- Most notably,
- this prints the page number
- restarted from one
- in lower case Roman numbers.
- .b .+c
- may be used repeatedly
- to begin different parts of the
- front material
- for example,
- the abstract,
- the table of contents,
- acknowledgments,
- list of illustrations,
- etc.
- The request
- .b ".++ B"
- may also be used
- to begin the bibliographic section
- at the end of the paper.
- For example,
- the paper might appear
- as outlined in figure 2.
- (In this figure,
- comments begin with the sequence
- .b \e" .)
- .(z
- .hl
- .if t .in 0.5i
- .if t .ta 2i
- .if n .ta 3i
- \&.th \e" set for thesis mode
- \&.fo \(aa\(aaDRAFT\(aa\(aa \e" define footer for each page
- \&.tp \e" begin title page
- \&.(l C \e" center a large block
- THE GROWTH OF TOENAILS
- IN UPPER PRIMATES
- \&.sp
- by
- \&.sp
- Frank Furter
- \&.)l \e" end centered part
- \&.+c INTRODUCTION \e" begin chapter named "INTRODUCTION"
- \&.(x t \e" make an entry into index `t'
- Introduction
- \&.)x \e" end of index entry
- text of chapter one
- \&.+c "NEXT CHAPTER" \e" begin another chapter
- \&.(x t \e" enter into index `t' again
- Next Chapter
- \&.)x
- text of chapter two
- \&.+c CONCLUSIONS
- \&.(x t
- Conclusions
- \&.)x
- text of chapter three
- \&.++ B \e" begin bibliographic information
- \&.+c BIBLIOGRAPHY \e" begin another `chapter'
- \&.(x t
- Bibliography
- \&.)x
- text of bibliography
- \&.++ P \e" begin preliminary material
- \&.+c "TABLE OF CONTENTS"
- \&.xp t \e" print index `t' collected above
- \&.+c PREFACE \e" begin another preliminary section
- text of preface
- .sp 2
- .in 0
- .ce
- Figure 2. Outline of a Sample Paper
- .hl
- .)z
- .sh 2 "Equations and Tables"
- .pp
- Two special \*U programs exist
- to format special types of material.
- .b Eqn
- sets equations.
- .b Tbl
- arranges to print
- extremely pretty tables
- in a variety of formats.
- This document will only describe
- the embellishments
- to the standard features;
- consult the reference manuals
- for those processors
- for a description of their use.
- .pp
- The
- .b eqn
- program is described fully
- in the document
- .ul
- Typesetting Mathematics \- User's Guide
- by Brian W. Kernighan
- and Lorinda L. Cherry.
- Equations are centered,
- and are kept on one page.
- They are introduced by the
- .b .EQ
- request and terminated by the
- .b .EN
- request.
- .pp
- The
- .b .EQ
- request may take an
- equation number as an
- optional argument,
- which is printed vertically centered
- on the right hand side
- of the equation.
- If the equation becomes too long
- it should be split
- between two lines.
- To do this, type:
- .(b
- \&.EQ (eq 34)
- text of equation 34
- \&.EN C
- \&.EQ
- continuation of equation 34
- \&.EN
- .)b
- The
- .b C
- on the
- .b .EN
- request
- specifies that the equation
- will be continued.
- .pp
- The
- .b tbl
- program produces tables.
- It is fully described
- (including numerous examples)
- in the document
- .ul
- Tbl \- A Program to Format Tables
- by M. E. Lesk.
- Tables begin with the
- .b .TS
- request
- and end with the
- .b .TE
- request.
- Tables are normally kept on a single page.
- If you have a table which is too big
- to fit on a single page,
- so that you know it will extend
- to several pages,
- begin the table with the request
- .b ".TS\ H"
- and put the request
- .b .TH
- after the part of the table
- which you want
- duplicated at the top of every page
- that the table is printed on.
- For example, a table definition
- for a long table might look like:
- .ds TA \|\h'.4n'\v'-.2n'\s-4\zT\s0\v'.2n'\h'-.4n'\(ci\|
- .if n .ds TA \ \o'-T'\ \"
- .(b
- \&.TS H
- c s s
- n n n.
- THE TABLE TITLE
- \&.TH
- text of the table
- \&.TE
- .)b
- .pp
- .sh 2 "Two Column Output"
- .pp
- You can get two column output
- automatically
- by using the request
- .b .2c .
- This causes everything after it
- to be output in two-column form.
- The request
- .b .bc
- will start a new column;
- it differs from
- .b .bp
- in that
- .b .bp
- may leave a totally blank column
- when it starts a new page.
- To revert to single column output,
- use
- .b .1c .
- .sh 2 "Defining Macros"
- .pp
- A
- .i macro
- is a collection of requests and text
- which may be used
- by stating a simple request.
- Macros begin with the line
- .b ".de" \ \c
- .i xx
- (where
- .i xx
- is the name of the macro to be defined)
- and end with the line consisting of two dots.
- After defining the macro,
- stating the line
- .b . \c
- .i xx
- is the same as stating all the other lines.
- For example,
- to define a macro
- that spaces 3 lines
- and then centers the next input line,
- enter:
- .(b
- \&.de SS
- \&.sp 3
- \&.ce
- \&..
- .)b
- and use it by typing:
- .(b
- \&.SS
- \&Title Line
- (beginning of text)
- .)b
- .pp
- Macro names may be one or two characters.
- In order to avoid conflicts
- with names in \-me,
- always use upper case letters as names.
- The only names to avoid are
- .b TS ,
- .b TH ,
- .b TE ,
- .b EQ ,
- and
- .b EN .
- .sh 2 "Annotations Inside Keeps"
- .pp
- Sometimes you may want to put
- a footnote
- or index entry inside a keep.
- For example,
- if you want to maintain a
- .q "list of figures"
- you will want to do something like:
- .(b
- \&.(z
- \&.(c
- text of figure
- \&.)c
- \&.ce
- Figure 5.
- \&.(x f
- Figure 5
- \&.)x
- \&.)z
- .)b
- which you may hope
- will give you a figure
- with a label
- and an entry in the index
- .b f
- (presumably a list of figures index).
- Unfortunately,
- the
- index entry
- is read and interpreted
- when the keep is read,
- not when it is printed,
- so the page number in the index is likely to be wrong.
- The solution is to use the magic string
- .b \e!
- at the beginning of all the lines dealing with the index.
- In other words,
- you should use:
- .(b
- \&.(z
- \&.(c
- Text of figure
- \&.)c
- \&.ce
- Figure 5.
- \e!.(x f
- \e!Figure 5
- \e!.)x
- \&.)z
- .)b
- which will defer the processing of the index
- until the figure is output.
- This will guarantee
- that the page number in the index
- is correct.
- The same comments apply
- to
- blocks
- (with
- .b .(b
- and
- .b .)b )
- as well.
- .sh 1 "\*T and the Photosetter"
- .pp
- With a little care,
- you can prepare
- documents that
- will print nicely
- on either a regular terminal
- or when phototypeset
- using the \*T formatting program.
- .sh 2 "Fonts"
- .pp
- A
- .i 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.
- The normal font is Roman.
- .pp
- There are ways of switching between fonts.
- The requests
- .b .r ,
- .b .i ,
- .b .b ,
- and
- .b .bi
- switch to Roman,
- italic,
- bold,
- and bold-italic fonts respectively.
- You can set a single word
- in some font
- by typing (for example):
- .(b
- \&.i word
- .)b
- which will set
- .i word
- in italics
- but does not affect the surrounding text.
- .pp
- Notice that if you are setting more than one word
- in whatever font,
- you must surround that word with double quote marks
- (`\|"\|')
- so that it will appear to the \*G processor as a single word.
- The quote marks will not appear in the formatted text.
- If you do want a quote mark to appear,
- you should quote the entire string
- (even if a single word),
- and use
- .i two
- quote marks where you want one to appear.
- For example,
- if you want to produce the text:
- .(b
- .i """Master Control\|"""
- .)b
- in italics, you must type:
- .(b
- \&.i """Master Control\e|"""
- .)b
- The
- .b \e|
- produces a very narrow space
- so that the
- .q l
- does not overlap the quote sign in \*G,
- like this:
- .(b
- .i """Master Control"""
- .)b
- .pp
- There are also some
- .q pseudo-fonts
- available.
- The input:
- .(b
- \&.(b
- \&.u underlined
- \&.bx "words in a box"
- \&.)b
- .)b
- generates
- .(b
- .u underlined
- .bx "words in a box"
- .)b
- 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 \*G justifies text.
- For example,
- if you were to issue the requests:
- .(b
- \&.u "some bold italics"
- and
- \&.bx "words in a box"
- .)b
- in the middle of a line
- \*G would produce
- .u "some bold italics"
- and
- .bx "words in a box" ,\p
- which I think you will agree does not look good.
- .pp
- The second parameter
- of all font requests
- is set in the original font.
- For example,
- the font request:
- .(b
- \&.b bold face
- .)b
- generates
- .q bold
- in bold font,
- but sets
- .q face
- in the font of the surrounding text,
- resulting in:
- .(b
- .b bold face.
- .)b
- To set the two words
- .b bold
- and
- .b face
- both in
- .b "bold face" ,
- type:
- .(b
- \&.b "bold face"
- .)b
- .pp
- You can mix fonts in a word by using the
- special sequence
- .b \ec
- at the end of a line
- to indicate
- .q "continue text processing" ;
- this allows input lines
- to be joined together
- without a space between them.
- For example, the input:
- .(b
- \&.u under \ec
- \&.i italics
- .)b
- generates
- .u under \c
- .i italics ,
- but if we had typed:
- .(b
- \&.u under
- \&.i italics
- .)b
- the result would have been
- .u under
- .i italics
- as two words.
- .sh 2 "Point Sizes"
- .pp
- The phototypesetter
- supports different sizes of type,
- measured in points.
- The default point size
- is 10 points
- for most text,
- 8 points for footnotes.
- To change the pointsize,
- type:
- .(b
- \&.sz \c
- .i +N
- .)b
- where
- .i N
- is the size wanted in points.
- The
- .i "vertical spacing"
- (distance between the bottom of most letters
- (the
- .i baseline )
- between adjacent lines)
- is set to be proportional
- to the type size.
- .pp
- These pointsize changes are
- .i temporary !!!
- For example,
- to reset the pointsize of basic text to twelve point, use:
- .(b
- \&.nr pp 12
- \&.nr sp 12
- \&.nr tp 12
- .)b
- to reset the default pointsize of
- paragraphs,
- section headers,
- and titles respectively.
- If you only want to set the names of sections in a larger pointsize,
- use:
- .(b
- \&.nr sp 11
- .)b
- alone \*- this sets section titles
- (e.g.,
- .b "Point Sizes"
- above)
- in a larger font than the default.
- .pp
- A single word or phrase can be set in a smaller pointsize
- than the surrounding text
- using the
- .b .sm
- request.
- This is especially convenient for words that are all capitals,
- due to the optical illusion that makes them look even larger
- than they actually are.
- For example:
- .(b
- \&.sm UNIX
- .)b
- prints as
- .sm UNIX
- rather than
- UNIX.
- .pp
- Warning:
- changing point sizes
- on the phototypesetter
- is a slow mechanical operation.
- On laser printers it may require loading new fonts.
- Size changes
- should be considered carefully.
- .sh 2 "Quotes"
- .pp
- It is conventional when using
- the typesetter to
- use pairs of grave and acute accents
- to generate double quotes,
- rather than the
- double quote character
- (`\|"\|').
- This is because it looks better
- to use grave and acute accents;
- for example, compare
- "quote" to
- ``quote''.
- .pp
- You may use the sequences
- .b \e*(lq
- and
- .b \e*(rq
- to stand for the left and right quote
- respectively.
- For example,
- use:
- .(b
- \e*(lqSome things aren\(aat true
- even if they did happen.\e*(rq
- .)b
- to generate the result:
- .(b
- .q "Some things aren't true even if they did happen."
- .)b
- As a shorthand,
- the special font request:
- .(b
- \&.q "quoted text"
- .)b
- will generate
- .q "quoted text" .
- Notice that you must surround
- the material to be quoted
- with double quote marks
- if it is more than one word.
- .sh 0
- .sp 1i
- .b Acknowledgments
- .pp
- I would like to thank
- Bob Epstein,
- Bill Joy,
- and Larry Rowe
- for having the courage
- to use the \-me macros
- to produce non-trivial papers
- during the development stages;
- Ricki Blau,
- Pamela Humphrey,
- and Jim Joyce
- for their help with the documentation phase;
- peter kessler
- for numerous complaints years after I was
- .q done
- with this project,
- most accompanied by fixes
- (hence forcing me to fix several small bugs);
- and the plethora of people who have contributed ideas
- and have given support for the project.
- .sp 1i
- This document was
- \*G'ed
- on \*(td
- and applies to the version of the \-me macros
- included with \*G version \*(MO.
-