2247 lines
40 KiB
Plaintext
2247 lines
40 KiB
Plaintext
|
.\" 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.
|