home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.robelle3000.ai 2014
/
2014.06.ftp.robelle3000.ai.tar
/
ftp.robelle3000.ai
/
manuals
/
text
/
prose.txt
< prev
next >
Wrap
Text File
|
2007-12-20
|
339KB
|
8,235 lines
_____ _______ ___
PROSE Version 4.3
____ _________
Text Formatter
___ ___ __ _____
for the HP e3000
_____ ____ ______
Prose User Manual
_______ _________ __________ ____
Robelle Solutions Technology Inc.
____ ___ _______ _____ ___
7360 137 Street, Suite 372
_______ ____ ______ ___ ___
Surrey, B.C. Canada V3R 7K1
__________ _____________
Toll-free: 1-888-ROBELLE
________________
(1-888-762-3553)
______ _____ ________
Phone: (604) 501-2001
____ _____ ________
Fax: (604) 501-2003
_______________
www.robelle.com
___________________
support@robelle.com
_______ ____
January 2000
Program and Manual Copyright Robelle Solutions Technology Inc.
1982-2007 Original CDC Version, Copyright John Strait 1978.
___
Permission is granted to reprint this document (but not for
profit), provided that copyright notice is given.
QEDIT and SUPRTOOL are trademarks of Robelle Solutions Technology
Inc. Other product and company names mentioned herein may be the
trademarks of their respective owners.
1
_______ _ _______ __ _____
Chapter 1 Welcome to Prose
_ ____ ___________ _______
ⁿ QLIB Contributed Library
_ _____________
ⁿ Documentation
_ _____ _______
ⁿ Prose Support
_ ___ ________ __ _____
ⁿ New Features of Prose
Welcome to Prose -- a powerful text formatter for MPE and HP-UX.
With Prose, you can format both user manuals and on-line Help. We
use Prose for everything and find it flexible and reliable. Prose
works somewhat like TDP and nroff; it reads a file that contains
both text and commands, and produces an output document. Prose
will justify, underline, hyphenate, number pages and paragraphs,
format the page the way you want, and produce an index. Prose
will print on the line printer or on an HP LaserJet. Prose does
not have everything; it cannot do graphics, format into multiple
columns, or do footnotes, superscripts, and subscripts.
____ ___________ _______
QLIB Contributed Library
Prose is part of the QLIB, a small library of contributed software
and other aids, for Robelle users. Any Robelle customer is
authorized to use Prose at no extra charge.
To browse through the other bonus tools in the QLIB, use our
Select "menu" program:
:run select.pub.robelle,qlib
_____________
Documentation
The Prose user manual describes how to access and apply Prose and
has a reference chapter that describes each command. At the end
of the manual, you will find an index and an appendix detailing
common Prose errors.
To print extra copies of this manual, use the Printdoc program:
:run printdoc.pub.robelle;info="prose.qlibdoc.robelle"
To view the on-line help, use the Qhelp program:
:run qhelp.qlib.robelle
prose.qlibhelp.robelle
_______ _ _______ __ _____
2 Chapter 1 Welcome to Prose
_________ ___ ____
Variables and JCWs
___________ ________
In this manual, we use the general term "environment variable" or
________
sometimes just "variable" to refer to JCWs. If you are using
MPE/iX, you must still use JCWs instead of MPE/iX variables,
unless we specify otherwise. In general, numeric variables are
set as JCWs, and non-numeric variables are set as MPE/iX
variables. For example, if we told you to set the "outlaser"
variable to 1, you would use :setjcw, not :setvar.
:setjcw outlaser 1 {correct}
:setvar outlaser 1 {incorrect!}
However, if we told you to set the "proseincludepath" variable to
".PUB.SYS", you would use :setvar. Note that non-numeric
variables are only available on MPE/iX.
:setvar proseincludepath ".PUB.SYS"
_____ _______
Prose Support
We developed Prose in order to have a good tool for producing our
documentation and to allow us to interface to our Qhelp on-line
help subsystem. Internally we use LaserJet IIs, IIDs, IIIs, and
4Ps spooled and attached to our terminals and PCs, with the
F92286F and F92290S2 font cartridges. We do not plan to support
all possible LaserJet fonts or all varieties of LaserJet printers.
For example, Prose has no built-in capabilities for scaling fonts
on the LaserJet III.
Our technical support department is happy to answer specific
questions about Prose, but doesn't have time to give in-depth
training over the telephone. Before you call for technical
support, you should print a copy of the manual and read the
________ _____
Applying Prose chapter.
___ ________ __ _______ ____
New Features in Version 4.3:
ⁿ Prose formats dates with a 20xx year by truncating the century;
for example, use "00" for 2000.
___ ________ __ _______ ____
New Features in Version 4.2:
ⁿ Prose no longer misses the last few lines of certain Jumbo
Qedit files.
_______ _ _______ __ _____
Chapter 1 Welcome to Prose 3
___ ________ __ _______ ____
New Features in Version 4.1:
ⁿ RTF files with index entries that begin with a "K" are
correctly generated.
___ ________ __ _______ ____
New Features in Version 4.0:
ⁿ Prose can read Jumbo text files greater than 256 characters
wide.
___ ________ __ _______ ____
New Features in Version 3.9:
ⁿ The new Tab command allows you to format tables more
conveniently.
ⁿ Prose tries to reduce the number of unnecessary font-change
escape sequences.
ⁿ The new RTF option in the Output command creates Rich Text
Format output.
___ ________ __ _______ ____
New Features in Version 3.8:
ⁿ Prose can read Qedit's new Jumbo files, although the maximum
line length is still limited to 256 characters.
4
_______ _ _________ _____
Chapter 2 Accessing Prose
_ _____ _____
ⁿ Prose Files
_ ______ _______
ⁿ Output Devices
_ _____ _____ _____
ⁿ Extra Blank Pages
_ ____ _______ _______
ⁿ User Defined Command
_ _____ __ _ ____ ____
ⁿ Prose to a Disc File
_ _____ _______ ______
ⁿ Prose Version Number
_ ______
ⁿ MPE/iX
Accessing Prose is a simple matter of two :File commands and a
:Run command.
_____ ____
:file infile=input file
:file output=$stdlist
:run prose.qlib.robelle
_____ _____
Prose Files
Prose accesses the following files:
Infile: File containing text in Prose form (Qedit file or
unnumbered EDIT/3000 file).
Output: File to receive the formatted results (an ASCII file
with CCTL; defaults to $Stdlist; can be sent to disc).
Input: File used for the pause option of the Output command
(defaults to $Stdinx).
Perrfile: File where error messages are printed (defaults to
$Stdlist); we recommend that this file be redirected
to a temporary file (see the Prose UDC below).
Prose requires the user to enter the following :File equations:
_____ ____
:FILE INFILE=input file
______ ____
:FILE OUTPUT=output file
______ _______
Output Devices
If your output device is a standard HP printer or a disc file (see
below), your Infile needs an Output command that specifies the LPT
option .output(lpt s4).
_______ _ _________ _____
Chapter 2 Accessing Prose 5
________
Terminal
If you wish to format a document and print it on your screen
(i.e., $stdlist), you merely leave off the File command for the
Output file. This file defaults to $stdlist. You should still
use the LPT option of the Output command.
________ ____
Terminal Port
You may use Prose to write to a specific port, but a special :File
equation must be used. If you have a printer on device 40 you
would use the following File command:
:FILE OUTPUT=OUTPUT,NEW;DEV=40
If you do not specify "new" on the :File equation, a prompt may
appear on the operator console asking if device 40 is "ready".
________
LaserJet
If your output device is a LaserJet, you will need to specify the
LAS option in the Output command of your Infile document. This
option gives you the ability to print on a LaserJet that is
connected as a system printer. If the LaserJet is an attached
(i.e., slave) printer of your logon terminal, add (r+) to the
command options: .out (las s5 r+).
_____ _____ _____
Extra Blank Pages
Depending on the type of printer you have and how it is connected
to your system, Prose may generate an extra blank page at the
start or at the end of your document. These blank pages are the
result of Prose doing the safest possible thing. You can instruct
Prose to omit these extra pages by setting the OutSavePaper
environment variable. to a non-zero value.
:setjcw OutSavePaper 1
If you have a "standard" setup with your spooled line printer or
LaserJet, you can try setting this variable to reduce the amount
of wasted blank pages. However, setting this variable can result
in the printer not being reset correctly for subsequent printouts.
The following section explains the various reasons why Prose
produces an extra blank page.
_______ _ _________ _____
6 Chapter 2 Accessing Prose
___ ______
LPT Output
Prose does a page eject at the beginning of LPT output. Prose
does not assume that your spooler or line printer will
automatically eject a page at the start of each Prose output.
Therefore, this initial page eject ensures that new Prose output
starts at the beginning of a new page. For line printers that
eject all output automatically, this results in an extra leading
blank page. The OutSavePaper variable can be used to suppress
this extra blank page.
_______ ________
Spooled LaserJet
Prose sends a form feed and a printer reset escape sequence at the
end of LaserJet output. This ensures that the printer is properly
reset to the default print behavior (e.g., default fonts and
margins). For spooled LaserJets that eject all output
automatically, this results in an extra trailing blank page. The
OutSavePaper variable can be used to suppress this extra blank
page provided that the following are true:
1. The spooler automatically ejects the last page of output.
2. The spooler sends an escape sequence to reset the printer at
the start of every print job.
The second requirement is particularly important if you have
software that uses the LaserJet as a line printer (e.g., :store
listings). If OutSavePaper has a non-zero value, and the spooler
doesn't send the escape sequence to reset the printer, then the
subsequent line printer output will be in the incorrect font.
If you are using double-sided printing and you want to use the
paper saving option, you need to use a ".align" command at the end
of your document to ensure that the final page is printed.
_____ ________ _________
Older Attached LaserJets
Prose uses Record Mode to print to your attached printer. To end
Record Mode, Prose has to send a final blank line after sending
Record Mode Off. This blank line remains in your printer's
internal buffer. If your attached printer is a LaserJet II or
older, Prose's initial LaserJet printer reset will cause
subsequent output to have an extra leading blank page. For
LaserJets IIP and up, there is no extra leading blank page. The
OutSavePaper variable cannot eliminate this blank page.
_______ _ _________ _____
Chapter 2 Accessing Prose 7
____ _______ _______
User Defined Command
We suggest that you use the following UDC to invoke Prose. The
UDC writes all Prose error messages to a temporary file. If there
are any error messages, they are displayed on $Stdlist after Prose
finishes formatting.
prose parmin, parmout="$STDLIST"
purge perrfile,temp
build perrfile;rec=-255,8,f,ascii;cctl;&
disc=2500,32,1;temp
file infile=!parmin
file output=!parmout
file perrfile=perrfile,oldtemp
setjcw jcw = 0
continue
run prose.qlib.robelle
if jcw <> 0 then
file pstdlist=$stdlist;rec=-255;cctl
fcopy from=perrfile;to=*pstdlist
reset pstdlist
endif
reset infile
reset output
reset perrfile
setmsg on
****
To invoke this UDC, you merely specify the UDC name and the name
of the Infile document. The Output file parameter is optional and
defaults to $Stdlist:
:prose qcommand.doc,*lp
To invoke this UDC from within Qedit, use these commands:
/set udc udc.catalog.robelle
/prose qcommand.doc,*lp
_____ __ _ ____ ____
Prose to a Disc File
Here is a UDC to run Prose to a disc file. With Qedit, you can
then examine the disc file (e.g., /lq plist) or examine any errors
(e.g., /lq perrfile).
pdisc parmin
purge plist,temp
build plist;rec=-256,8,f,ascii;cctl;disc=20000,32,1;temp
purge perrfile,temp
build perrfile;rec=-255,8,f,ascii;cctl;&
disc=2500,32,1;temp
file infile=!parmin
file output=plist,oldtemp;dev=disc
_______ _ _________ _____
8 Chapter 2 Accessing Prose
file perrfile=perrfile,oldtemp
setjcw jcw = 0
continue
run prose.qlib.robelle
if jcw <> 0 then
file pstdlist=$stdlist;rec=-255;cctl
fcopy from=perrfile;to=*pstdlist
reset pstdlist
endif
reset infile
reset output
reset perrfile
setmsg on
****
_____ _______ ______
Prose Version Number
Normally, Prose does not print a version number. You can verify
which version of Prose you are using by doing the following:
:reset output
:run prose.qlib.robelle;info="v"
{if no output, then 2.4 or earlier}
Prose/Robelle Solutions Technology Inc.
(Version 4.3)
______
MPE/iX
We distribute a native-mode version, Prosenm, and a compatibility-
mode version, Prosecm. We no longer distribute an OCT version of
Prose. By default, the Prose.Qlib.Robelle program file is the CM
version. To install the native-mode version, do the following:
:hello mgr.robelle
:file robtape;dev=tape
:restore *robtape;prose@.qlib
:purge prose.qlib
:copy prosenm.qlib,prose.qlib
9
_______ _ ________ _____
Chapter 3 Applying Prose
_ _____
ⁿ Words
_ _____ ________
ⁿ Prose Commands
_ _______ __________
ⁿ Filling Paragraphs
_ _____________ ______
ⁿ Justification Breaks
_ _____ _____
ⁿ Blank Lines
_ ______ _______
ⁿ Option Command
_ _________ ___ _____ _____
ⁿ Templates for Prose Users
_ _____ ______ ___ __________
ⁿ Using Styles for Formatting
_ ________ ___ _________ _________
ⁿ Defining the Paragraph Character
_ ___ __ ___ ______
ⁿ How to Use Undent
_ _____ _____ _______ _____
ⁿ White Space Between Words
_ ________ _______ __________
ⁿ Defining Special Characters
_ _____ _____ ___ ____ ______
ⁿ Prose Forms for Page Layout
_ ____ __ _____
ⁿ Make an Index
_ ____ _ _____ __ ________
ⁿ Make a Table of Contents
_ ________ ____ ________
ⁿ Checking Your Commands
_____
Words
_____ _____ __________
Prose works with words, lines, and paragraphs. Prose defines a
word as any non-blank string of characters, with a blank on either
side. For the purposes of formatting, a punctuation character is
part of the word it adjoins. These are words:
A
word
character,
adjoins.
_____ ________
Prose Commands
Prose is always looking for words to turn into lines and
paragraphs. You control and direct Prose in this work by
inserting commands into your text. A command is indicated by a
period character in column one, followed by a command name:
.output(lpt s4)
You use the commands to control the format of your pages, to
center lines, to right-justify lines, to print with even left
margin but ragged right margin, or to print tables and charts
"as-is".
_______ _ ________ _____
10 Chapter 3 Applying Prose
_______ __________
Filling Paragraphs
Normally, Prose reformats its input by filling words into lines,
adding blanks to justify the lines to left and right margins, and
printing lines together to make paragraphs. In filling lines,
Prose ignores the original positions of the words. Instead, it
fills as many words as possible into the output lines, preserving
_________
the original order. The resulting lines are justified: they have
a straight left and right margin.
For example, if you typed the following text into a file and fed
that file into Prose as the Infile, you would get the output shown
further below.
_____ __ ______
Input to Prose:
What is the status of the Q-Mit directory-expansion
problem? There
are several site-specific patches available, but no
general solution has been found yet. Therefore, do not
expand your directory without talking to your SE first.
What about Business Basic? Third quarter
next year, compiler and interpreter,
only on the HP e3000 (not the 9000 or 1000).
Basic/3000 will be maintained for
a long time, but not enhanced.
______ ____ ______
Output from Prose:
20 Mar 94
What is the status of the Q-Mit directory-expansion
problem? There are several site-specific patches available,
but no general solution has been found yet. Therefore, do
not expand your directory without talking to your SE first.
What about Business Basic? Third quarter next year,
compiler and interpreter, only on the HP e3000 (not the 9000
or 1000). Basic/3000 will be maintained for a long time,
but not enhanced.
- 1 -
The example above has two paragraphs. When Prose detects the
start of a new paragraph, it prints out the last line of the
current paragraph and starts gathering words for a new paragraph.
There are several ways to indicate the start of a new paragraph.
The example above uses two of them: indenting the first line of
the paragraph and inserting a blank line between the paragraphs.
The page number (-1-) at the end of the output and the date at the
top are part of the "default" Prose Form. You can easily replace
the date with your own Title or print the page number on the left
_______ _ ________ _____
Chapter 3 Applying Prose 11
if you like. We will suggest some useful Forms shortly.
_______ ___ ______ ___ ___ _____
Warning for Galley and TDP Users
______
Since indenting a line in Prose always indicates a new paragraph,
you cannot indent an entire paragraph by indenting the first two
lines of the paragraph. You must use the Margin command to shift
the margin left temporarily and then reset it again after the
paragraph.
_____________ ______
Justification Breaks
The break between one paragraph and the next is called a
_____________ _____
justification break. It causes Prose to stop filling the current
_____
output line, and print it without justifying. Since the break is
one of the most frequently used instructions, as well as one of
the simplest, it can be indicated in many ways.
As shown above, you can indicate paragraphs by inserting one or
more blank lines or by indenting the first line of a paragraph
with blanks. If you don't want a blank line and you don't want
the first line indented, you can insert a Prose Break command
instead. If you have many paragraphs to enter, you can define a
special paragraph character that indicates a new paragraph when
used in column one. You also get a justification break when you
use any command that affects filling and justifying (e.g., Output,
Margin, Form, etc.).
The following example demonstrates the first three methods for
specifying a justification break.
_____ __ ______
Input to Prose:
Why is the price of disc-caching upgrades so high? The
price is for "value received", not for the cost of the.
product. Disc caching plus extra memory doubles the speed
of the machine, so it is worth more money.
When will Mighty Mouse roar and how will he sound? HP has
stopped pre-announcing products.
Mighty Mouse, the low-end
HP e3000, will not be announced until the field has been
trained on it, the demo units have been built and shipped to
the offices, and some
working inventory is in stock.
.break.skip 1
When will we see improvements in
spooling? A new "office"
spooler will be released soon and it will support plotters.
Can I add a third IMB to my Series 64 without waiting
for MPE V? Yes, in some cases. It depends upon your
configuration.
_______ _ ________ _____
12 Chapter 3 Applying Prose
______ ____ ______
Output from Prose:
Why is the price of disc-caching upgrades so high? The
price is for "value received", not for the cost of the
product. Disc caching plus extra memory doubles the speed
of the machine, so it is worth more money.
When will Mighty Mouse roar and how will he sound? HP has
stopped pre-announcing products. Mighty Mouse, the low-end
HP e3000, will not be announced until the field has been
trained on it, the demo units have been built and shipped to
the offices, and some working inventory is in stock.
When will we see improvements in spooling? A new "office"
spooler will be released soon and it will support plotters.
Can I add a third IMB to my Series 64 without waiting
for MPE V? Yes, in some cases. It depends upon your
configuration.
When you use one of these methods to create a paragraph, Prose
____
does only a justification break. Prose does not skip lines or
indent unless blank lines or indentation explicitly appear on the
input file. There is a way to do fancier things by using the
Paragraph command, but that will be introduced later.
_____ _____
Blank Lines
There are two common ways to explicitly generate a blank line in
Prose. The first is to use a blank line in the input file, and
the second is to use the Skip command. The difference between the
two is that a Skip command does not result in a blank line when
you are at the top of a page. We call the first type of blank
line a "hard" blank line, and the second type a "soft" blank line.
To make a file readable, you usually separate paragraphs with a
blank line instead of using .skip 1 or the paragraph character.
This is a short paragraph.
A blank line separates these paragraphs.
.skip 1
A Skip command separates these paragraphs.
`A paragraph character separates these paragraphs.
Of course, the paragraphs separated by a blank line have the best
visual appearance. However, when the first paragraph ends at the
bottom of a page, the following blank line will appear at the top
of the next page. You can overcome this by using the .opt(b+)
command, which tells Prose to treat every blank line as a soft
blank line (i.e., like a .skip 1).
.opt(b+)
This is a short paragraph.
_______ _ ________ _____
Chapter 3 Applying Prose 13
The blank line above will not appear at the top
of the next page.
Once this option is in effect, you need to use the Jump command
when you do want blank lines at the top of a page. The Jump
command is like the Skip command except that it always generates
hard blank lines.
.page
.jump 3
This Heading is three lines down from the top of the page.
______ _______
Option Command
By default, Prose makes both margins even. This formatting option
is explicitly selected by inserting an Option command in the text
at the point where you want to start having paragraphs with even
left and right margins.
.option (l+ r+ f+)
L+ means "left margin even", R+ means "right margin even" and F+
means "fill words to make complete lines". By using combinations
of L, R, and F, you can achieve different line justification
styles.
______ _____ _______
Ragged Right Margins
One common formatting style is to have the left margin even, but
the right margin uneven. This is commonly called a ragged right
margin. To format lines this way, insert this command in your
text:
.option (l+ r- f+)
You can interpret this as "justify the left margin, don't justify
the right margin, and move words from line to line to make
complete lines".
.option (l+ r- f+)
This is an example of filling lines but
the right margin will be ragged.
_________ _____
Centering Lines
To begin centering lines, you insert this command in your text:
.option (l- r- f-)
You can interpret this as "do not justify the left margin, and
don't justify the right margin either, and don't even move words
_______ _ ________ _____
14 Chapter 3 Applying Prose
from line to line to make complete lines". In other words,
"center each line that follows".
You revert to formatting paragraphs by inserting an Option command
_______ ___ __________
without any parameters:
.option (l- r- f-)
The Decline and Fall of the Stand-Alone Word Processor
By Ralph Micropro
.option
________________ _____
Right-Justifying Lines
A slightly different Option command (L- R+ F-) tells Prose to
right-justify some lines. This is useful for putting an address
at the right-hand side of a page. After the lines to be
right-justified, switch back to formatting paragraphs with a
parameterless Option command.
.option (l- r+ f-)
Robelle Solutions Technology Inc.
15399-102A Ave.
Surrey, B.C.
.option
The three lines above will be printed flush to the right margin.
________ ______ ___ ______
Printing Charts and Tables
When you insert a chart or a table in a document, you do not want
it formatted into a paragraph. You have inserted just the number
of blanks necessary to make the columns line up nicely. There are
two ways you can tell Prose to stop making paragraphs and just
print what it reads.
The first way is to indent every line of the table by at least one
space. The second way is to use the Option command (F-):
.option (f-)
Product Function Price Service
ZLABEL printer $600 $120/year
ZPOSTAGE compute $500 $100/year
ZSTUFF manipulate $900 $180/year
.option
_______ _ ________ _____
Chapter 3 Applying Prose 15
_________ ___ _____ _____
Templates for Prose Users
At Robelle, we use Prose for all of our documents, including
manuals, help files, letters, articles, news memos, and papers.
Although we find Prose powerful and easy to use, we understand
that the flexibility and options of Prose may be daunting to many
________
new users. Therefore, we have created two template files to get
you started. These templates make all the choices for you and set
up an environment.
The two templates are:
Manuals.Qlibdata.Robelle {for printing manuals}
Letters.Qlibdata.Robelle {for business letters}
________ ___ _______
Template for Manuals
If you go into Qedit and list the MANUALS template, you should see
the following lines of text:
:run qedit.pub.robelle
/lq manuals.qlibdata.robelle
.comment Filename:___________________ Revision:_________
.comment
.comment Purpose:_______________________________________
.comment
.comment To print this document, use these commands:
.comment
.comment :file infile=filename
.comment :file output;dev=lp
.comment :run prose.qlib.robelle
.comment
.if outlpt
. if outrecord
. out(lpt s7 r+).mar(r65).com For attached printer
. else
. out(lpt s7 r-).mar(r65).com For LP, $stdlist, disc.
. endif
.elseif outhelpcomp
. out(lpt q+).mar(r78).com For helpcomp;parm=1
.elseif outlaser
. if outrecord
. if outdouble
. out(las 30 s8 r+ d+).mar(r65).com attach-LJ duplex
. else
. out(las 30 s8 r+).mar(r65).com attached LaserJet
. endif
. else
. if outdouble
. out(las 30 s8 r- d+).mar(r65).com LaserJet, duplex
. else
_______ _ ________ _____
16 Chapter 3 Applying Prose
. out(las 30 s8 r-).mar(r65).com LaserJet
. endif
. endif
.else.com no outxxx jcws specified
. out(lpt s7 r-).mar(r65).com generic: LP/stdlist/disc
.endif
.include <f92286f>
.include <styles>
.com If this document has an index, entries are created
.com via .inx <string>. The printing of the index occurs
.com when you insert this command:
.com sortindex (c+ f. m14 p48 l0 r0)
.par(f` p5 s1 u3).comment Automatic .skip 1.page 5.undent 3
.opt(j4).comment Okay to insert 3 spaces between words.
.inp(u~ b@ h\ e& f| t#).com Special chars in the text.
.com The FORM that follows is for the Title page:
.for([ // l55 //]).comment Unnumbered pages
.com The FORM that follows is for Contents/Preface:
.page.for([ // l55 / #33 pr:3 /]).com roman numerals
.com The FORM that follows is for the body of the manual:
.for([ T #26 S:40 // l55 / #33 "-" pn:1 "-" /]
+ [ S #26 T:40 // l55 / #33 "-" pn:1 "-" /])
.page.count 1.com Start page numbering over again.
.com
.com The last line in a manual should be .check, which
.com catches any dangling commands. If you don't have
.com a table of contents, use C0 instead of C1.
.com
.com If you include the Styles file, do not use .check
.com
.com.check(c1 f0 i1 m1 o1 p1 j0)
_____ _________
Using Templates
To use this template, you Text a copy of it into Qedit, add your
text and Prose commands, and then print the results using Prose.
For example, let's add in the same two paragraphs that we did at
the start of this chapter and see what the results look like:
:run qedit.pub.robelle
/text manuals.qlibdata.robelle
/aq last
What is the status of the Q-Mit directory-expansion
problem? There
are several site-specific patches available, but no
general solution has been found yet. Therefore, do not
expand your directory without talking to your SE first.
What about Business Basic? Third quarter
next year, compiler and interpreter,
only on the HP e3000 (not the 9000 or 1000).
Basic/3000 will be maintained for
_______ _ ________ _____
Chapter 3 Applying Prose 17
a long time, but not enhanced.
// {this stops the ADD command}
/set udc udc.catalog.robelle
/prose *
What is the status of the Q-Mit directory-expansion
problem? There are several site-specific patches available, but
no general solution has been found yet. Therefore, do not
expand your directory without talking to your SE first.
What about Business Basic? Third quarter next year,
compiler and interpreter, only on the HP e3000 (not the 9000
or 1000). Basic/3000 will be maintained for a long time, but
not enhanced.
- 1 -
The main difference between these results and the ones we obtained
without the template is the lack of the date at the top of the
page. That is because we have used the Form command to replace
the date with running Titles and Subtitles on each page. To
invoke them, we add two commands before our text:
/add 50.1
50.1 .SUBTITLE Management Roundtable
50.2 .TITLE Edinburgh, Scotland
50.3 //
/prose *
Edinburgh, Scotland Management Roundtable
What is the status of the Q-Mit directory-expansion
problem? There are several site-specific patches available, but
no general solution has been found yet. Therefore, do not
expand your directory without taking to your SE first.
What about Business Basic? Third quarter next year,
compiler and interpreter, only on the HP e3000 (not the
9000
or 1000). Basic/3000 will be maintained for a long time, but
not enhanced.
-1-
Each of the Prose features used in the MANUALS template is
described below.
_______ _ ________ _____
18 Chapter 3 Applying Prose
_____ ________ __ _______ ________
Using Comments to Explain Document
Text in the template and list the first ten lines:
/text manuals.qlibdata.robelle
/list 1/10
1 .comment Filename:___________________ Revision:_______
2 .comment
3 .comment Purpose:_____________________________________
4 .comment
5 .comment To print this document, use these commands:
6 .comment
7 .comment :file infile=filename
8 .comment :file output;dev=lp
9 .comment :run prose.qlib.robelle
10 .comment
These lines are just comments. They are ignored by Prose, but
identify the document and give instructions on how to obtain a
copy of the manual. Anyone listing the first few lines of the
file knows what the file is for and how to print it out.
You should Modify 1/3 to identify your document:
.comment Filename: Newplant.kathy____ Revision:_25 Mar94
.comment
.comment Purpose:_____Feasibility study for Ohio Plant
________ ____ ______ ______
Defining Your Output Device
Lines 11 through 36 of the MANUALS template contain a set of
commands to define the type of output device you plan to send your
document to.
.if outlpt
. if outrecord
. out(lpt s7 r+).mar(r65).com For attached printer
. else
. out(lpt s7 r-).mar(r65).com For LP/stdlist/disc file.
. endif
.elseif outhelpcomp
. out(lpt q+).mar(r78).opt(j4).com For helpcomp;parm=1
.elseif outlaser
. if outrecord
. if outdouble
. out(las 30 s8 r+ d+).mar(r65).com attach-Laser-duplex
. else
. out(las 30 s8 r+).mar(r65).com For attached LaserJet
. endif
. else
. if outdouble
. out(las 30 s8 r- d+).mar(r65).com LaserJet, duplex
. else
_______ _ ________ _____
Chapter 3 Applying Prose 19
. out(las 30 s8 r-).mar(r65).com For LaserJet
. endif
. endif
.else.com no outxxx jcws specified
. out(lpt s7 r-).mar(r65).com generic: LP/stdlist/disc file
.endif
.include <f92286f>
Although there seem to be very many commands, there are really
only two types of commands: Out commands and If-related commands
(If, Elseif, Else, Endif). The If commands are used to select the
one Out command that is right for your output. You tell Prose
what sort of output you need by setting some standard environment
variables. These variables are either true (set to non-zero
values) or false (set to zero, or the variable doesn't exist).
The very last Out command, Out(LPT s7 r-), is the one Prose
chooses if all the device-type variables are false (outlpt,
outlaser, outhelpcomp). This sets the output device to LPT, which
is the most common selection for the Output command. LPT works
for output to most HP printers, most HP terminals, and for output
to a disc file. You can also specify LPT output by setting the
______
outlpt variable to 1.
If you are generating output for a Qhelp help file, you would set
___________
the outhelpcomp variable to 1, which will cause Prose to select
the Out(LPT Q+) command.
If your final destination is an HP LaserJet printer, you would set
________
the outlaser variable to 1, which will cause Prose to select one
of the Out(LAS) commands. If your LaserJet can produce duplex
(doubled-sided) output, you can have your output doubled-sided by
_________
setting the outdouble variable to 1. This will cause Prose to
select one of the Out(LAS) commands with a D+ option. If you plan
to use one of the optional plug-in font cartridges, you would edit
the Include command to include the proper font description file:
.include f92286a.qlibdata.robelle
See the Qlibdata group of the ROBELLE account for the font
cartridges that we support (each file describes itself if you List
it with Qedit).
If your printer is connected directly to your terminal, you should
_________
set the outrecord variable to 1. This tells Prose to select
Record Mode to access your printer, using the R+ option of the Out
command.
If you are switching between your screen and the LaserJet for
output, you will need to switch between the LPT and LAS output.
You do this by first setting outlaser=1. When you want screen
output, you would set outlpt=1; when you want LaserJet output, you
would set outlpt=0. However, you will not need to comment out the
Include command each time you switch to LPT; Prose will translate
_______ _ ________ _____
20 Chapter 3 Applying Prose
the special fonts into underlines when it prints to LPT.
Notice that each of the Output commands also selects a right
margin, ".mar(r65)." The default right margin in Prose is at
column 70, but we change it to column 65 for two reasons. The
first reason is to make the output look better when printed on
international A4 paper (which is narrower than 8-1/2 by 11 paper).
The second and more compelling reason is that when you switch
between the LaserJet and the line printer, you will find that
65-column output is easier to read with the proportional fonts of
the LaserJet.
_____ ________ _________
Prose Template Variables
Printing your documents with Prose will be easier if you use UDCs
or command files to define our standard variables. Before running
Prose, set up several command files for your various printers or
Prose tasks. The following table lists the meanings of the
variables used by our templates.
Variable Meaning
outlpt device: non-LaserJet printer, disc file
outhelpcomp device: disc file for Qhelp
outlaser device: LaserJet printer
outrecord attached printer
outdouble doubled-sided pages on LaserJet
Note that the device type variables (outlpt, outhelpcomp,
outlaser) are treated as being mutually exclusive in the template.
That is, only one of them should be true at a time. If more than
one are true, then they have the following order of precedence:
outlpt, outhelpcomp, outlaser. For example, if both outlpt and
outlaser are true, then outlpt will be used. If you have several
types of output, it is important to reset some of those variables
when you change output devices.
The outdouble variable applies only to LaserJet output; it has no
effect on line printer or helpcomp output. The outrecord variable
applies only to LaserJet and line printer output.
In addition to these five variables, you can define your own
variables and use them in Prose to control the formatting or the
text used in your document.
________ ___ ________ _______
Template for Business Letters
In addition to the MANUALS template, we also provide a LETTERS
template for writing business letters. To use this template,
first make a customized copy of the template in your own group.
Then, whenever you need to write a letter, Text a copy of your
_______ _ ________ _____
Chapter 3 Applying Prose 21
custom template and insert the salutation and message. This
_____ ______ ___ __________
template uses Style commands (see Using Styles for Formatting).
.comment Template for writing 1 or 2 page business letters
.comment /t letters.qlibdata.robelle
.comment /Modify %
.comment /Delete 8 {for a one-page letter}
.comment /prose *,*lp {with a UDC}
.comment
.form ([// l55 /
+ #61 ".../2"
+ /]).comment Format of page one
.comment
.if outlpt
. if outrecord
. out(lpt s7 r+).mar(r65).com For attached printer
. else
. out(lpt s7 r-).mar(r65).com For LP, $stdlist, disc
. endif
.elseif outhelpcomp
. out(lpt q+).mar(r78).com For helpcomp;parm=1
.elseif outlaser
. if outrecord
. if outdouble
. out(las 30 s8 r+ d+ c1).mar(r65).com attach Las-dup
. else
. out(las 30 s8 r+ c1).mar(r65).com attached Laser
. endif
. else
. if outdouble
. out(las 30 s8 r- d+ c1).mar(r65).com Laser duplex
. else
. out(las 30 s8 r- c1).mar(r65).com For LaserJet
. endif
. endif
.else.com no outxxx jcws specified
. out(lpt s7 r-).mar(r65).com generic: LP/stdlist/disc
.endif
.include <f92286f>
.include <styles>
.style right
Acme Consulting Co.
9999 Main Street
Midvale, Ohio
33333
Phone: (301) 908-6633
%month xx, 1994
.subtitle %month xx, 1994
.style left
.title %who this letter is to
_______ _ ________ _____
22 Chapter 3 Applying Prose
%Company name
Attention: %who this letter is to
%Street address
%City, state address
%postal or zip code
.form ([t #33 "-" pn:1 "-" #36 s:30 // l55 //])
.style body
Dear %Sir:
`Enter %paragraph one here
`Enter %paragraph two here
`Enter %paragraph three here
.comment and so on....
.margin(l+26).style left
Sincerely yours,
.skip 4
Kathy Marshall
Sales Manager
.margin
___________ ___ ________
Customizing the Template
To customize our template letter for yourself, change the name and
address to your own:
:run qedit.pub.robelle
/text letters.qlibdata.robelle
/modify 40/44 {replace with your company address}
/modify last-2/ {replace with your name and title}
/keep letters {save in your group}
/exit
_______ _ ______
Writing a Letter
You are now ready to write a letter. The idea is very simple.
You Text a copy of your customized LETTERS template into Qeditscr.
You modify all of the lines containing a percent sign (%). This
includes the person to whom you are writing, the date, and the
first line of each of three paragraphs (your outline). Be sure to
remove the % signs and the "prompting" hints that come after them
-- they don't belong in your final letter!
Use the Add and Modify commands to flesh out your paragraphs, or
add or delete text. There is no need to separate the paragraphs
with a blank line - just start each one with the paragraph
________ ___ _________ _________
indicator. See Defining the Paragraph Character in this chapter.
Then, print a copy on your screen with Prose. If you like the
_______ _ ________ _____
Chapter 3 Applying Prose 23
results, check to see if your letter fits on one page. If so,
delete line 8 - this removes the ".../2" from the bottom of the
first page. Now print your final copy on the line printer.
:run qedit.pub.robelle
/text letters {your copy, not the master}
/modify "%" {all lines needing changes}
/add {add paragraph text... }
/set udc udc.catalog.robelle
/prose * {print on the screen}
/delete 8 {if only one page}
/:file print;dev=lp
/prose *,*print {print final copy}
Below is a completed letter, both the input and the output:
_____ __ ______
Input to Prose:
.comment Template for writing 1 or 2 page business letters
.comment /t letters.qlibdata.robelle
.comment /Modify %
.comment /Delete 8 {for a one-page letter}
.comment /prose *,*lp {with a UDC}
.comment
.form([// l55 /
+ #61 ".../2"
+ /]).comment Format of page one
.comment
.if outlpt
. if outrecord
. out(lpt s7 r+).mar(r65).com For attached printer
. else
. out(lpt s7 r-).mar(r65).com LP, $stdlist, disc file.
. endif
.elseif outhelpcomp
. out(lpt q+).mar(r78).opt(j4).com For helpcomp;parm=1
.elseif outlaser
. if outrecord
. if outdouble
. out(las 30 s8 r+ d+).mar(r65).com attach-Las-duplex
. else
. out(las 30 s8 r+).mar(r65).com attached LaserJet
. endif
. else
. if outdouble
. out(las 30 s8 r- d+).mar(r65).com LaserJet, duplex
. else
. out(las 30 s8 r-).mar(r65).com For LaserJet
. endif
. endif
.else.com no outxxx jcws specified
. out(lpt s7 r-).mar(r65).com generic: LP/stdlist/disc
.endif
.com.include <f92286f>
_______ _ ________ _____
24 Chapter 3 Applying Prose
.margin(r65)
.paragraph(f` p5 s1).com ` starts new paragraph
.inp(u~ b@ h\ e& f| t#).com Spec chars in the text.
&
.option(l- r+ f-).comment right-justify
Robelle Solutions Technology Inc.
7360 137 Street, Suite 372
Surrey, B.C. Canada V3R 7K1
Phone: (604) 501-2001
Fax: (604) 501-2003
&
August 20, 1994
.subtitle August 20, 1994
.option.comment turn off right-justify
&
&
.option(l+ r- f-).com do not format address into paragraph
.title Jim Abercromby
Tidewater Tool and Die
Attention: Jim Abercromby
100 East Main Street
Somewhere, California
91003
.option.com reset to formatting
.form([t #33 "-" pn:1 "-" #36 s:30 // l55 //])
&
&
Dear Sir:
`Thank you for inquiring about our Qedit product.
I am sending you a user manual and a Quick Reference Guide,
as well as a description of our text formatter, Prose.
`If you would like a demonstration tape, without charge,
simply call our office. One will be sent to you by
air mail, special delivery. If you have the time to
evaluate
the software, the least we can do is provide a tape.
.comment and so on....
&
.margin(l+26).option(l+ r- f-)
Sincerely yours,
.skip 4
Robert Green
C.E.O.
.margin.option.com reset
______ ____ ______
Output from Prose:
Robelle Solutions Technology Inc.
7360 137 Street, Suite 372
Surrey, B.C. Canada V3A 4P9
Phone: (604) 501-2001
Fax: (604) 501-2003
August 20, 1994
_______ _ ________ _____
Chapter 3 Applying Prose 25
Tidewater Tool and Die
Attention: Jim Abercromby
100 East Main Street
Somewhere, California
91003
Dear Sir:
Thank you for inquiring about our Qedit product. I am sending
you a user manual and a Quick Reference Guide, as well as a
description of our text formatter, Prose.
If you would like a demonstration tape, without charge, simply
call our office. One will be sent to you by air mail, special
delivery. If you have the time to evaluate the software, the
least we can do is provide a tape.
Sincerely yours,
Robert Green
C.E.O.
_____ ______ ___ __________
Using Styles for Formatting
There are two ways of specifying format options in Prose. One way
is to use Prose commands such as Margin, Option, and Paragraph.
Another way, introduced in Prose 3.5, is to use the Style command.
.include styles.qlibdata.robelle
A style is a collection of format settings that have been given a
name. For example, you can define a style called "chapter" that
puts text in a bold font and centers them. Styles provide an easy
way to specify frequently used formats in your document.
.inc styles.qlibdata.robelle
.style head1
`New Chapter Heading
.style head3
`First Topic
.style body
The lazy dogs over the brown quick fox jumped.
.style bullet1
`*This is a bullet list
We provide some predefined styles in the file Styles.Qlibdata.
Robelle. Use the Include command to access this file, which is in
_______ _ ________ _____
26 Chapter 3 Applying Prose
________ ___
the Qlibdata group of the Robelle account (see Template for
_______
Manuals in this chapter). The following is a description of the
styles available in that file.
_____ ___________
Style Description
body Justified and filled Times Roman. This is for body
text, and is the style most of your document will
be in.
body2 Similar to Body style, but the text is not
justified nor filled. This is useful for tables,
addresses, and simple lists.
head1 Centered, Helvetica heading.
head2 Left-justified, Helvetica heading.
head3 Left-justified, bold Times Roman heading.
head4 Left-justified, italic Times Roman heading.
bullet1 Bullet lists that do not have automatic skip
between entries.
bullet2 Bullet lists that have an automatic skip between
entries.
bullet3 Numbered bullet lists with automatic skip.
example Courier font examples in manuals. Need to manually
indent.
address For right-justified addresses.
Styles are less flexible than other Prose formatting commands, but
they are more readable. To get started with styles, you can use
styles in your documents whenever you can, and use other Prose
commands when you need more specific formatting.
________ ___ _________ _________
Defining the Paragraph Character
.par(f` p5 s1 u3).com Automatic .skip 1.page 5.undent 3
The ".par" in this line is short for the Paragraph command. With
this command you can define a single keystroke (f` defines the `
key as your special key) to mean an entire cluster of actions (p5
s1 u3). This is the open single quote key (`), not the close
single quote key ('), although they may print the same! Whenever
Prose sees the ` key in column one of a line, it will do "p5 s1
u3". How do you decode "p5 s1 u3"?
p5 skip to a new page if there is not room for 5 lines
s1 skip one line
____ ___ ____
u3 shift this one line left 3 columns
_______
(does nothing if you are already in column one)
By putting the ` key at the start of each paragraph, you can
_______ _ ________ _____
Chapter 3 Applying Prose 27
ensure that each paragraph is preceded by a blank line and that it
does not start too close to the bottom of the page.
`The proposal to build a new catalytic cracking
plant in Ohio has been extensively studied.
At Robelle, we tend to use the Paragraph key to mark headings
within the text, rather than paragraphs, but the choice is up to
you. For example,
`Using the Paragraph Command
The Paragraph command is one of the most useful
functions of Prose.
The "u3" code means "Undent 3".
Undent is easy to use, but difficult to explain. This paragraph
that you are reading appears with the left margin moved in 3
spaces, because it is preceded by a ".margin (l+3)" command and
followed by a ".margin" command to reset the margin. However,
___
the first line of the paragraph is not indented three spaces -
________
it has been undented 3 spaces from the left margin by the
paragraph indicator.
___ __ ___ ______
How to Use Undent
Undent is also called hanging indent. The place where you will
find auto-undent most useful is in presenting a list of points:
Reasons for Selecting Ohio:
.margin (l+3)
`1.@Cheap land. Prime industrial sites are
available at one-half to one-tenth the rate in our
present location.
`2.@Well-trained workforce. There are many high school
and University graduates to draw upon in staffing the plant.
`3.@Proximity to markets. The new plant would be
closer to our prime customers in the midwest.
.margin
We start a hanging indent by increasing the left margin by the
same amount as the undent. In the text above, each reason for
selecting Ohio begins with the ` key and a point number (1.),
followed by an at-sign (@). The @ is defined elsewhere in the
_____
template file to be a blank and will be described in a moment.
The results would be:
_______ _ ________ _____
28 Chapter 3 Applying Prose
Reasons for Selecting Ohio:
1. Cheap land. Prime industrial sites are available at
one-half to one-tenth the rate in our present location.
2. Well-trained workforce. There are many high school and
University graduates to draw upon in staffing the plant.
3. Proximity to markets. The new plant would be closer to our
prime customers in the midwest.
Notice that there is a blank line to set off each point. Also
note how the indented margins of the points line up and the point
________
numbers are undented to the left.
_____ _____ _______ _____
White Space Between Words
When Prose justifies lines to make the right margin straight, it
does so by inserting spaces between words. The more spaces Prose
inserts, the less readable the results. The fewer spaces Prose is
allowed to insert, the more times you have to tell it how to
hyphenate words.
.opt(j4).com Okay to insert 3 spaces between words.
This line from the template file is an Option command. The J4
option tells Prose how much white space it may insert to achieve
justification. The default setting is Option (J3), which
authorizes Prose to insert 2 spaces between every word in a line,
but not 3. We suggest J4, especially for rough drafts, because it
reduces drastically the number of "hyphenation needed" error
________ _
messages (see Appendix A).
________ _______ __________
Defining Special Characters
To tell Prose when to do special things to words, such as
underlining them, you first define some characters with special
meanings via the Input command:
.inp(u~ b@ h\ e& f| t#).com Special chars in text
This Input command defines the following special characters for
Prose:
~ tilde underline
@ at-sign explicit blank
\ back slash hyphenation point
& ampersand escape character
| up bars font change
# cross hatch tab character
After you have defined these characters with the Input command,
_______ _ ________ _____
Chapter 3 Applying Prose 29
placing them in your text triggers Prose to process your text in a
______
special way. Although the characters appear in the input text,
you won't see them in the output document (unless you use "&" to
force one of them to appear). Instead, you will see the special
effects these characters provide. You can define different
special characters for these effects if you like, but try to stick
to a consistent set of choices.
___________ _____
Underlining Words
The easiest of these to understand is the tilde "~" character.
Any phrase surrounded by tilde characters will be underlined. For
example, if the following is input to Prose
~Prose Tips~
the output will be
_____ ____
Prose Tips
Notice that the tilde characters have disappeared, making the
output line look as if it has been shifted one space to the left
relative to the input line.
________ ______
Explicit Blanks
The "at-sign" (@) character specifies an "explicit" blank. By
___
default, Prose converts one space after a period into two spaces.
This is usually desirable, but when specifying a person's name we
want only one space between the initials. Consider the following
input to Prose:
Mr. David J. Greer
Mr.@David J.@Greer
and the resulting output:
Mr. David J. Greer
Mr. David J. Greer
The second example has only one space between "Mr." and "David",
and one space between "J." and "Greer", rather than two spaces.
_____
Hint: you can also disable the "two spaces" option using this
command: .option (p-). You can also have no space after a period
(e.g., D.J.Greer).
Another use for @ is in setting up a list of points. See the
example shown above in discussing Undent.
_______ _ ________ _____
30 Chapter 3 Applying Prose
___________ _____
Hyphenating Words
The "back-slash" character is used to tell Prose where the
syllables of a word occur. Normally, you do not use this
character until Prose gives you a "hyphenation error". When this
occurs, Prose is trying to insert too many spaces in a line. If
you indicate the syllables of the specified word by inserting a
back slash into your input text, Prose will produce output with
fewer spaces between each word.
The "backslash" character is used to tell Prose where
the syl\lables of a word occur. Normally, you do not
use this char\acter until Prose gives you a
hyphena\tion error When this occurs, Prose is trying
to insert too many spaces in a line.
In the example input above, hyphenation points have been specified
in the words 'syllables', 'character', and 'hyphenation'. It is
okay to specify hyphenation points that Prose does not need; Prose
___
will remove all of the back slashes from the final output.
______ _________
Escape Character
Since Prose removes all hyphenation characters "\" from the final
document, how did we print a back slash in this sentence?
The secret is the escape character, &. Whenever this character
____
occurs in the input text, it tells Prose to treat the next
character as a regular text character, rather than a special
command character. So, to print a back slash, you type "&\". And
to print an ampersand, you type "&&".
_________ _____ ___________
Different Fonts (Typefaces)
If your printer is able to print special fonts, such as italics or
_
bold, you use the font character, |, to enclose the text which is
to be printed in them. This topic is discussed in greater detail
___ __ ________ ____ _______
in the chapter The HP LaserJet. Also see the Font Command in the
_____ ________
Prose Commands chapter.
______ __ ______ ____ ____
Lining Up Tables With Tabs
With all of these special characters that Prose removes from your
final document, it can be difficult to make information in tables
line up in the correct columns. For example,
~command~ any MPE command
:PDISC user defined command
=5*812 calculator command
_______ _ ________ _____
Chapter 3 Applying Prose 31
This input would be printed as:
_______
command any MPE command
:PDISC user defined command
=5*812 calculator command
Again, the Robelle template file for Prose comes to your rescue.
We have defined # (cross hatch) as a tab character. You can line
up text in columns by inserting tab jumps in your input text:
~command~ #13any MPE command
:PDISC #13user defined command
=5*812 #13calculator command
If you use the Tab command, you can define the tab position just
once.
.tab(13)
~command~ #any MPE command
:PDISC #user defined command
=5*812 #calculator command
.tab
________ ____
Relative Tabs
The number used after the tab character specifies the absolute
column where the text will start. There are instances, however,
where you will want to specify the column number relative to the
left margin.
In the previous example, the data in the second column starts at
column 13. To indent the entire table to the right by 15 columns,
you might think that you could simply surround the table by a
".mar(l+15)" at the beginning, and a ".mar" at the end. However,
you can never tab to a column that you are already past. In this
case, since the left margin is now at 15, you cannot tab to any
column that is less than 15 (i.e., 13). You can overcome this
problem by using relative tabs.
.mar(l+15)
~command~ #+13any MPE command
:PDISC #+13user defined command
=5*812 #+13calculator command
.mar
The tab "+13" now tabs to absolute column 28 (left margin 15 plus
relative tab 13). If you decide to increase or decrease the
indentation of the table by adjusting the Margin command, the tab
alignments within the table will still remain the same.
_______ _ ________ _____
32 Chapter 3 Applying Prose
_______ _______ ___ ____
Hanging Indents and Tabs
Relative tabs can also make hanging indents more flexible.
Consider the following example:
.mar(l+3).par(u3)
`*#4This is absolute point one.
.mar.par
.mar(l+10).par(u10)
`*#11This is absolute point two.
.mar.par
To change the amount of the hanging indent, you have to change the
Margin and Paragraph commands, and the values of the absolute
tabs. Note that the absolute tabs have a value that is one
greater than the margin setting in the hanging indents. To change
the indent when using relative tabs, you only have to change the
Margin and Paragraph commands.
.mar(l+3).par(u3)
`*#+1This is relative point one.
`*#This uses # instead of #+1
.mar.par
.mar(l+10).par(u10)
`*#+1This is relative point two.
`*#This uses # instead of #+1
.mar.par
_____ _____ ___ ____ ______
Prose Forms for Page Layout
One of the nicest features of Prose is the ability to customize
your page layout through the Form command. If you look at the
template file MANUALS carefully, you will find three Form
commands:
.com The next FORM is for the Title page:
.for([ // l55 //]).comment Unnumbered pages
.com The next FORM is for Contents/Preface:
.page.for([ // l55 / #33 pr:3 /]).com roman numerals
.com The next FORM is for the body of the manual:
.for([ T #26 S:40 // l55 / #33 "-" pn:1 "-" /]
+ [ S #26 T:40 // l55 / #33 "-" pn:1 "-" /])
The last Form seen defines a two-page Form with the page number
centered at the bottom of the page and the Title and Subtitle
alternating left and right sides at the top.
_______ _ ________ _____
Chapter 3 Applying Prose 33
_________ _ _____ ____
Inserting a Title Page
If we wanted our report to have a title page, we would add the
text for it after the first Form command of the template. This
Form, .for([ // l55 // ]), defines a page with 55 lines for text,
no headings, and no footings (i.e., no page numbers).
/add 24.10
24.10 .opt(l-r-f-)
24.11 ~Feasibility Study~
24.12 Ohio Plant Site
24.13
24.14 By Kathy Marshall
24.15
24.16 March 25, 1994
24.17 .opt
24.18 //
The Option commands tell Prose to center the lines of the title
page.
_____ ____ __ ___ ______ ____
First Page of the Report Body
We switch from the title page and contents page to the main body
of the report in lines 27 through 30 of the template file:
.com The next FORM is for the body of the manual:
.for([ T #26 S:40 // l55 / #33 "-" pn:1 "-" /]
+ [ S #26 T:40 // l55 / #33 "-" pn:1 "-" /])
.page.count 1.com Start page numbering over again.
This defines an alternating left and right form with arabic page
numbers centered at the bottom.
We use the Page command to force our text to start on a different
page from the title page. We use the Count command to reset the
page number counter to 1 again.
_____ ____ __ _ _______
First Page of a Section
Usually we want the first page of chapters and major sections to
start on the odd-numbered, right-hand-side pages. The hard way to
do this is to print the document once, then insert Page commands
before all sections that started on the wrong side of the page.
Instead, try the Align command:
.align
Use this command at the start of a new page. If the current page
is even-numbered, Prose ejects it so that your section starts on
the next, odd-numbered page. For example, suppose a section of
your text ends on page 5. You have just issued a Page command to
_______ _ ________ _____
34 Chapter 3 Applying Prose
finish the page, so you are on the start of page 6. Now enter an
Align command. Because the current page number is even, Prose
ejects page 6 as a blank page. The following page is page 7,
which is an odd number and aesthetically acceptable as the start
of a new section. Prose starts printing the text of your new
section on page 7.
This command considerably smooths the path if you like to insert
cardboard tabs between sections. This is also useful if your
printer can print double-sided pages, as you don't want the
table-of-contents (which always prints last in the print run) to
start on the back of another page.
____ __ _____
Make an Index
There are two steps in producing an index in a Prose document.
The first step is to add Inx commands to the text wherever there
is a topic that you want indexed. The second step is to add a
Sortindex command at the place where you want the actual index to
appear. The item above on the Paragraph command was indexed by
adding this line to the Prose manual:
.inx Paragraph command
Prose automatically saves the text "Paragraph command" and the
page number where the ".inx" was encountered. If another entry is
added for "Paragraph command" on a different page, this new page
number will also be remembered. To avoid showing the page number
in certain index entries, include the (p-) option in the Inx
command, as shown in the following example:
.inx(p-) Paragraph command
You can include a section name in the page number of any index
entry. For example, the page number for an entry in Section 2 and
on page 3 would appear in the index as 2-3. In order to number
each section independently, you must reset the page number with a
Count command at the start of each section. Then, add the section
name to each Inx command:
.count 1
Section 2.
.inx('2-') {first index entry in Section Two}
.inx('2-') {second index entry in Section Two}
.count 1
Section 3.
.inx('3-') {first index entry in Section Three}
To produce the final index, we append these commands to the end of
our document:
.page.sub Index
_______ _ ________ _____
Chapter 3 Applying Prose 35
.option(l-r-f-).com Center Page Title
~INDEX~
.option
.sortindex(c+ f. m14 p48 l3 r0)
These commands will start a new page, define a new running
Subtitle, print the word "INDEX" centered and underlined at the
top of the first page of the index, and print the rest of the
index in a form similar to that at the end of this manual.
The Sortindex command requests several things: that entries with
the same text be combined into one entry (c+); that the space
between the text and the page number be filled with periods (f.);
that the whole index be indented fourteen columns (m14); that the
page number appear in column 48 (p48); that the page number be
__
written in a width of three spaces (l3); and that no spaces be
written after the page number (r0).
If all of this sounds confusing, just start by entering the Inx
lines throughout your document. At the end, add the Sortindex
command exactly as it is presented above. If you want the index
printed in a different style, look up the Sortindex command in
this manual.
_____ ________
Index Headings
If you have a long index, you can make it more readable by
subdividing the entries. The Headindex command enables you to
insert a heading before each set of entries that start with the
same letter. You can define the characteristics of the heading.
For example, to use the initial letter of a set of entries as the
heading, surrounded by a blank line before and after, enter the
following command immediately before the Sortindex command:
.headindex
If you prefer a blank line as the heading, use
.headindex(h- s0 a0 p0)
The option (h-) turns off the initial letter, leaving just a blank
line. The S and A options turn off the blank lines before and
after the heading. The option (p0) turns off the automatic
paragraph skip. If you want a fancier heading, try
.headindex(h+ c+ f3 s2 a1 p6)
This prints the initial letter (h+) centered on the line (c+) in
the font Helvetica Bold on the LaserJet (f3) with two extra blank
lines before the letter (s2) and one extra blank line after (a1).
The option (p6) tells Prose to start the heading on a new page if
there are less than six lines left on the current page. This
_______ _ ________ _____
36 Chapter 3 Applying Prose
ensures that the heading (which, in the above example, requires
four lines to print) will have at least two index entries after
it. This prevents the awkward circumstance of a heading printed
on the bottom of a page with no index entries until the next page.
____ _ _____ __ ________
Make a Table of Contents
Prose can automatically produce a table of contents page. There
are two steps in creating a table of contents. The first step is
adding Entry commands to the text wherever there is a topic that
you want to appear in the table of contents. The second step is
adding a Contents command at the end of the document to produce
the actual table of contents. The title of the chapter you're
reading right now was added to the Prose table of contents with
this Prose command:
.entry `|1Chapter 3 Applying Prose|
Prose automatically saves the entry text and the page number where
the ".entry" was encountered.
Because we don't want the page number to appear in the "Chapter"
entries in our table of contents, we add one more command to
them:
.entry(p-) `|1Chapter 3 Applying Prose|
You can include a section name in the page number of any entry in
the table of contents. For example, the page number for an entry
in Section III and on page 4 can appear in the table of contents
as III-4. In order to number each section independently, you must
reset the page number with a Count command at the start of each
section. Then, add the section name to each Entry command:
.count 1
Section 2.
.entry('2-') {first T-of-C entry in Section Two}
.entry('2-') {second T-of-C entry in Section Two}
.count 1
Section 3.
.entry('3-') {first T-of-C entry in Section Three}
To produce the table of contents, append these commands to the end
of the file. The table of contents will be the last thing
printed. You have to insert it manually behind the title page.
.page.count 2
.for([ // l55 / #33 pr:3 /]).Com Roman Numerals
.option(l- r- f-).Com Center the following lines
Prose
_______ _ ________ _____
Chapter 3 Applying Prose 37
User Manual
Table of Contents
.option
.contents(p+)
These commands will start a new page and define a form with no
headings. The page number will be printed in the center of the
last line in lowercase Roman numerals. We consider the title page
to be page one, even though we did not print the page number. The
table of contents will start on page two, so we force the page
number using ".count 2". In this example, the lines between the
".option" command would be centered at the top of the first page
of the table of contents.
Instead of using the ".contents" command above, you could print a
table of contents with page numbers on the right, and with the
space between the text entries and the page number filled with
dots, using this command:
.contents(p+ f. c48 l0 r0)
________ ____ ________
Checking Your Commands
Some Prose commands use "keep buffers" to store the most recently
used settings. For instance, in previous examples we have used
".mar(l+3)" to start a new left margin, and a ".mar" to return to
the previous left margin. With the setting ".mar(l+3)", the
Margin command's keep buffer number increases by one. When you
return to the previous setting with ".mar", the keep buffer number
decreases by one.
The Check command will examine keep buffer numbers to see if the
keep buffers have the specified value. If any of them do not, you
will see an error message.
.check(c1 f0 i1 m1 o1 p1 j0)
When you use keep buffers as a stack, you may forget to return to
the previous setting. For example, if you indent some text by
increasing the size of the left margin, but forget a ".mar"
command to return you to the previous margin setting, then the
rest of your document will remain overly indented. The Check
command can tell you if this has happened. However, it cannot
tell you where it has happened.
If you Included the Styles file, you can not use the Check
command. However, when you are using styles to format your
document, the problem with forgetting to reset keep buffer stacks
is minimized because changing styles will usually reset the keep
buffers.
38
_______ _ ___ __ ________
Chapter 4 The HP LaserJet
_ _______ _______
ⁿ Getting Started
_ _________ ____
ⁿ Landscape Mode
_ ____________ _____
ⁿ Proportional Fonts
_ _____ ______ __________
ⁿ Finer Column Resolution
The LaserJet is a high quality printer that is offered at an
affordable price. The LaserJet provides for different type styles
by the use of font cartridges. Prose has been modified to take
advantage of the features of some of these font cartridges.
____ ______
You can use Prose to print bold and italic text. You can print
documents using the proportional type fonts. Using proportional
type fonts generally results in better looking documents.
_______ _______
Getting Started
This chapter assumes that you are already generally familiar with
Prose. The following steps will show how to take an existing
Prose document and modify it to use the LaserJet.
____ ____ ______ ____ ________
Step One: Define Your LaserJet
We assume that your existing documents are designed for standard
writing paper (i.e., 8 1/2" by 11"), with seventy columns of text
across the page and 60 lines of text down the page. To quickly
print this document on your LaserJet, you would add a new Output
command:
.output(las).comment LAS means LaserJet
If you use the shift option of the Output command, you will need
to add a shift to your laser Output command. This shift value is
one greater than the value used for the line printer.
.output(las s5).comment Instead of s4 and LPT
If you wish to use "Record Mode" on your terminal to print your
document (i.e., the LaserJet is attached to your terminal), you
can use the record option of the Output command.
.output(las s5 r+)
Remember to delete or comment out your standard line printer
Output command, since only one Output command can be active at a
time.
.comment.output(lpt s4)
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 39
You can request multiple copies of your document with the Output
command. This will only work with the LaserJet.
.output(las s5 c2).comment print two copies
You can print on both sides of a page on some LaserJets, such as
the LaserJet IID. To activate this feature, called duplex
printing, you need to add the duplex option to the Output command.
.output(las d+).comment duplex printing (both sides)
____ ____ _____ _____
Step Two: Using Fonts
Your document will be formatted using the standard Courier
10-pitch characters. Underlines will appear just as they did on
the line printer. The next step is take advantage of the A or L
____ ______
font cartridge which provide for bold and italic characters in
your document. You must do the following:
1. Include the correct font description file.
2. Define a font character using the Input command. We suggest
that you use the up-bar "|" as the font character.
3. Use the font character to change the font-type of specific
words.
4. When printing your document, make sure that the correct font
cartridge is inserted in your LaserJet. If you have a LaserJet
II, the front panel should be configured to FONT SOURCE=I and
FONT NUMBER=00 (factory default setting).
If you have the A font cartridge, you would use:
.output(las s5)
.include F92286A.qlibdata.robelle
.input(f|)
If you have the L font cartridge, you would use:
.output(las s5)
.include F92286L.qlibdata.robelle
.input(f|)
Fonts are identified by a number which corresponds to the "keep"
buffer for the font. The F92286A and the F92286L include files
define the following fonts:
Font Description
0 Courier medium
____
1 Bold
_______
2 Italics
_______ _ ___ __ ________
40 Chapter 4 The HP LaserJet
The F92286L include file also defines font 3 as lineprinter 16.66
characters per inch. The Landscape modes of the F92286L fonts are
defined by a separate include file, F92286L2 (see below for
details).
___ _______ __ _________ _____
Two Methods of Switching Fonts
There are two methods for changing the typeface of words. The
first is to use the Font command to change the current font
definition.
.font 2.comment Italic typeface
This paragraph will appear with every word in italics.
You might wish to use this for examples or for quotes.
Prose will continue to print using italics until you use
the font character to temporarily change the typeface or
until a different Font command is used.
.font 0.comment Return to Courier medium typeface
The output from the above example would look like:
____ _________ ____ ______ ____ _____ ____ __ ________
This paragraph will appear with every word in italics.
___ _____ ___ ____ ___ ____ _______ __ ___ _________
You could use this for long quotes, or for examples.
_____ ____ ________ __ _____ _____ _______ _____ ___
Prose will continue to print using italics until you
______ ___ ____ _________ __ ______ ___ ________
insert the font character to change the typeface
____________ __ _____ ___ _____ _ _________ ____
temporarily, or until you enter a different Font
________
command.
The other method is to use the font character. In the following
_______
example we will switch to italics whenever we use the word
_______
italics.
This paragraph will appear with |2italic| words in
|2italics|. You might wish to use this for important
words. Prose will continue to print using |2italics|
until you use the font character to terminate the
|2italic| typeface.
The Output from this example would be:
______ _______
This paragraph will appear with italic words in italics.
You might wish to use this for important words. Prose
_______
will continue to print using italics until you use the
______
font character to terminate the italic typeface.
If you forget the ending font character, all of the words to the
end of the paragraph will be in the different typeface. Whenever
Prose does a paragraph break it turns off underlining and returns
to the current Font command definition. For example, we'll remove
_______
the up-bar from the second instance of italics.
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 41
This paragraph will appear with |2italic| words in
|2italics|. You might wish to use this for important
words. Prose will continue to print using |2italics
until you use the font character to terminate the italic
typeface.
The output from this example would be:
______ _______
This paragraph will appear with italic words in italics.
You might wish to use this for important words. Prose
_______ _____ ___ ___ ___
will continue to print using italics until you use the
____ _________ __ _________ ___ ______ _________
font character to terminate the italic typeface.
____ _______
Line Printer
What if you need to print your document on a standard line
printer? All you need to do is change your Output command back to
the line printer.
.output(lpt s4)
____ ______
Prose will take any of your text that is bold or italic and
_________
underline it on the line printer copy.
This paragraph will appear with |2italic| words
underlined. Note that we are still using the font
character to define |2italic| words. We let Prose
automatically adjust the output if we don't have access
to a LaserJet printer.
The line printer output from this example would be:
______
This paragraph will appear with italic words underlined.
Note that we are still using the font character to
______
define italic words. We let Prose automatically adjust
the output if we don't have access to a LaserJet
printer.
_________ _______
Half-Line Spacing
The LaserJet supports half-line spacing. This means an extra
half-line's worth of vertical spacing can be inserted between two
lines. You specify the half-line spacing by adding a plus sign
after the number of lines to skip.
.skip 0+.comment This skips half a line
.skip 1+.comment This skips one and a half lines
Note that line printers cannot perform half-line spaces. When you
print a document with half-line spaces on a line printer, the
half-lines will be ignored.
_______ _ ___ __ ________
42 Chapter 4 The HP LaserJet
_____ ___ ___________
Fonts and Underlining
You can combine different typefaces and underlining. You must use
the Prose underline character.
.input(u~ f|)
This example shows both ~|1bold|~ and ~|2italic|~ words
in their respective typefaces and underlined.
The resulting output would look like:
____ ______
This example shows both bold and italic words in their
respective typefaces and underlined.
_____
Forms
You cannot specify individual fonts within the Form command.
However, you can have the entire form in a font other than font 0.
____ ___ ____ __ _______
Prose uses the font that is in effect when the form is defined to
print the form. This can be useful for introductory pages where
you would like roman numeral page numbers in italics.
.font 2
.form([ // l55 / #33 pr:3 /])
.font 0
______ ___ _________
Titles and Subtitles
Both the Title and Subtitle commands allow for different fonts.
____ ___ _____ __
If no font is specified, the font in effect when the title or
________ __ _________
subtitle is specified is used. The following example would print
__________ _______
Consulting in bold and Version in italics (we assume that font 0
was in effect):
.tit Robelle |1Solutions Technology| Inc.
.sub Prose |2Version| 3.1
_______
Indexes
You can specify different fonts for index entries, but they have
little effect. Prose treats the font specifications as if output
____ ______
were for the line printer (i.e., bold and italic words will be
__________
underlined).
_________ ____
Landscape Mode
The L font cartridge provides fonts in two modes: portrait and
landscape. So far, we have described how to use the portrait
mode. In landscape mode, Prose prints from left-to-right across
the length of the paper.
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 43
To print on 8 1/2" by 11" paper, we need to make the following
changes for landscape mode:
1. Shift the output text to center it and specify landscape mode
on the Output command.
2. Include the correct font description.
3. Modify the right margin.
4. Change the form to reduce the number of lines on the page and
to use different tab positions.
5. Change the columns for the Sortindex command.
Landscape capability was added to Prose so that you could use the
various Courier fonts of the L cartridge. It is very likely that
you will run into limits within Prose if you attempt to define
Landscape forms for the tiny lineprinter font.
______ _______
Output Command
We will shift the output to the right (to leave 1" margins) and we
will specify landscape mode.
.output(las s8 L+)
____ _______ ____
Font Include File
Use the following include file for landscape mode:
.output(las s8 L+)
.include F92286L2.qlibdata.robelle
.input(f|)
You change fonts in the same manner as for portrait. You can use
the Font command or the font character. The F92286L2 include file
defines the following fonts:
Font Description
0 Courier
____
1 Bold
_______
2 Italics
____
3 Bold (for compatibility with Helvetica bold)
4 Lineprinter (for compatibility with Roman small)
5 Courier medium (see proportional fonts below)
6 Lineprinter
_______ _ ___ __ ________
44 Chapter 4 The HP LaserJet
_______
Margins
The right margin must be extended because we are writing across
eleven inches of paper. We define a right margin of ninety
characters which leaves one inch margins on either side.
.margin(r90)
_____
Forms
Our paper is wider and shorter in landscape mode. Use the
following form definition in landscape mode for the standard
two-page alternating form:
.for([ t #51 s:40 // l41 / #44 "-" pn:1 "-" /]
+ [ s #51 t:40 // l41 / #44 "-" pn:1 "-" /])
_______
Indexes
If you use our suggested Sortindex command,
.sortindex(c+ f. m14 p48 l0 r0)
you would change it to the following:
.sortindex(c+ f. m25 p55 l0 r0)
____________ _____
Proportional Fonts
The B and F font cartridges provide Times Roman proportional
typefaces. The TMS RMN typeface is similar to the typefaces used
in professionally produced books and magazines. For an example of
a document that can be printed with the TMS RMN fonts, see the
Qedit user manual, Qedit.Doc.Robelle.
While these font cartridges produce excellent results, they are
more difficult to use than the Courier font cartridge. Remember
that in proportional typefaces every letter is a different size.
Most letters are smaller than their Courier counterparts, so that
more words are placed on each line.
__________
Dimensions
Commands dealing with columns assume a fixed column width.
Previous versions of Prose assumed that there were 10 characters
in every inch. The Margin, Form, and Sortindex command work with
columns. Once we switch to proportional fonts, it is necessary to
decide what measurement devices to use.
______
Prose uses a default of 30 dots per column (there are 300 dots per
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 45
inch), which is compatible with previous versions. Seventy
columns of 10-pitch text leaves a 3/4" margin on either side when
using 8 1/2" by 11" paper. The laser option of the Output command
will accept a different width (in dots) to use as the base for
determining columns. This affects the following:
1. Margins.
2. Tabbing within forms (e.g., .form([#20 t])).
3. The field width in forms (e.g., .form([t:20])).
4. Sortindex command.
5. Tabs within text (using the tab character).
We will show how to design a document to use 30 dots as the basic
unit of column measurement. Later, we will show how to use a
smaller unit.
_____ _____
Basic Steps
We continue to assume that your documents will be printed on
standard writing paper (i.e., 8 1/2" by 11"). Proportional
typefaces are more dense than fixed typefaces. We will reduce the
width of printed text to leave a one inch margin (65 columns of
text). You will need to follow these steps to produce
nice-looking, proportionally spaced documents:
1. Shift the output text to center it on the page.
2. Include the correct font description.
3. Modify the right margin.
4. Change the Form command to use different tab positions.
5. Add tab characters to keep text aligned in columns.
6. Adjust the Paragraph and Margin command for lists of points.
7. Change the column positions of the Sortindex command.
______ _______
Output Command
To start, we will shift the text more to the right with the Output
command. We will explicitly specify the column width, even though
the default is 30.
.output(las 30 s8)
_______ _ ___ __ ________
46 Chapter 4 The HP LaserJet
____ _______ ____
Font Include File
You will have to include the correct font description file for
your font cartridge. If you have the B font cartridge, you would
use:
.output(las 30 s8)
.include <F92286B>
.input(f|)
If you have the F font cartridge, you would use:
.output(las 30 s8)
.include <F92286F>
.input(f|)
Fonts continue to be identified by a number which corresponds to
the "keep" buffer for the font. The F92286B and the F92286F
include files define the following fonts:
Font Description
0 Roman medium
____
1 Bold
_______
2 Italics
_________ ____
3 Helvetica bold
4 Roman small and light
5 Courier medium (fixed typeface)
6 Lineprinter (fixed typeface)
You change type fonts in exactly the same way as for Courier. You
can use the Font command or the font character.
_______
Margins
We recommend that your documents be 65 columns wide. This is the
right margin you would use:
.margin(r65)
To make it easier to convert back to line printer output, you
should add a margin(r65) command to the line defining the line
printer:
.comment.output(lpt s7).mar(r65)
.output(las 30 s8).mar(r65)
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 47
_____
Forms
Prose's built-in form, as well as the forms that we often used in
the past, produce documents with 70-column margins. We will need
to modify the forms to restrict them to 65 columns. The new Form
command would be:
.form([ t #26 s:40 // l55 / #33 "-" pn:1 "-" /]
+ [ s #26 t:40 // l55 / #33 "-" pn:1 "-" /])
If you wish to have introductory pages with no titles and roman
numeral page numbers centered at the bottom of the page, you would
use:
.form([ // l55 / #33 pr:3 /])
If you wanted the roman numeral page numbers to appear in italics,
you would use:
.font 2.comment select italic
.form([ // l55 / #33 pr:3 /])
.font 0.comment return to roman medium
____
Tabs
Having text line up in columns is easy with Courier (or any fixed)
typeface. You just align the text in your original file and it
appears lined up in your output listing. Because each character
in proportional typefaces has a different width, aligning text
visually no longer works. Instead, you have to define a tab
character with the Input command and tab across the page.
________ ______
Take an example from the Managing XPRESS manual. This is how the
output looks, without tabs:
MAIL XPRESS program files to :Run.
MAILDB Database and schema, password file.
CATALOG Message catalog and XPRESS UDC file.
JOB Sample job streams.
DOC Manuals and other documentation.
HELP On-line help text.
When this input text is converted into proportional output, the
left edge of the second column wavers left and right. It is not
in a straight line, as it was in the input. The reason is simple:
the characters in the first column are not all the same width.
To resolve the problem, and make the output correct for both
Courier and TMS RMN fonts, we define a tab character and use it to
align the descriptions:
_______ _ ___ __ ________
48 Chapter 4 The HP LaserJet
.input(t#)
MAIL #16XPRESS program files to :Run.
MAILDB #16Database and schema, password file.
CATALOG #16Message catalog and XPRESS UDC file.
JOB #16Sample job streams.
DOC #16Manuals and other documentation.
HELP #16On-line help text.
How did we pick column 16 to tab to? We just used the column in
the input text file where we wanted the columns to appear.
Be careful that your input line is not already past the designated
tab column when you insert the #. If it is, the tab may work
properly with TMS RMN (where most characters are smaller than one
column), but fail on the line printer. If you are already past
the tab column, Prose ignores the tab function. There is no error
message.
__________
Paragraphs
The Paragraph command defines a character that is used at the
beginning of paragraphs. Additionally, you can use the paragraph
character to produce a nicely formatted list of points. Without
proportional spacing, you could use Undent 4 and shift the Margin
right 4 spaces, as follows:
.font 5
.paragraph(f` s1 p5 u4)
.margin(l+4)
`1.@@XPRESS sends messages to Helpman when it finds problems
in the MAIL database.
`2.@@Helpman is the only user who can use the MAINT program to
define new users, change users, define "machines", and
otherwise configure XPRESS.
.margin
The output would look like:
1. XPRESS sends messages to Helpman when it finds problems in
the MAIL database.
2. Helpman is the only user who can use the MAINT program to
define new users, change users, define "machines", and
otherwise configure XPRESS.
Actually, a list of points is an example of column-oriented text.
To make this text look nice with proportional fonts, we will need
to add some tabs. Because numeric characters are so small, we
will indent points three columns instead of four:
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 49
.paragraph(f` s1 p5 u3)
.margin(l+3)
`1.@#4XPRESS sends messages to Helpman when it finds problems
in the MAIL database.
`2.@#4Helpman is the only user who can use the MAINT program
to define new users, change users, define "machines", and
otherwise configure XPRESS.
.margin
The resulting output would look like:
1. XPRESS sends messages to Helpman when it finds problems in
the MAIL database.
2. Helpman is the only user who can use the MAINT program to
define new users, change users, define "machines", and
otherwise configure XPRESS.
This set of commands will produce nice results whether your output
font is fixed or proportional. There is one restriction when
using this method. You should limit yourself to lists of less
than ten points. Points with two digits (e.g., "10.") will not
have a space after the period when they are printed in a fixed
typeface.
_______
Indexes
The Sortindex command uses column positions to specify where the
text and the page number should start. Because we have shifted
the output to the right, we will need a slight change to existing
Sortindex commands that worked with 70-column output:
.sortindex(c+ f. m15 p52 l0 r0).com For 70 columns
You would change it to the following:
.sortindex(c+ f. m14 p48 l0 r0).com For 65 columns
___________
Indentation
With fixed-size fonts, leaving three blanks at the beginning of
the line was the same as shifting the left margin three columns.
With proportional fonts, this is no longer so. A TMS Roman blank
is 17 dots wide, but each margin column is 30 dots wide. You
should either do indentation using Prose commands or by indenting
spaces, but not by using both in the same piece of text.
_______ _ ___ __ ________
50 Chapter 4 The HP LaserJet
____ _______
Line Printer
All Robelle documentation is formatted and printed using Prose.
We use Prose to produce typeset documents on our LaserJet, but we
also need to convert these documents back to a format that will
print correctly on a standard line printer. To convert a
proportionally spaced document back to line printer format we are
concerned with the following:
1. Output command.
2. Margin command.
3. Form command.
4. Sortindex command.
5. Tabbing.
6. Table of contents.
One common format is to have sixty-five columns of text, giving
you one inch margins on either side of the page. You only need to
change the Output command to switch from the LaserJet to the line
printer.
You must be careful with examples. With proportional typefaces
there are more characters in 65 columns, because most characters
are smaller than 30 dots wide. For involved examples, you should
switch to Courier and restrict the example to 65 columns.
With proportional typefaces, more text fits on each page. If you
manually maintain a table of contents, you will have to revise it
once you switch back to line printer output.
_____ ____ __________
Other Font Cartridges
Each LaserJet font cartridge has one or more corresponding files
in the Qlibdata group of the Robelle account. These files all
start with "F92286" and end with the letter code for the font
cartridge. The first few lines of each file describe the Prose
font numbers for each different LaserJet font.
To use a different font cartridge, include the correct file from
the Qlibdata group and follow the steps described at the beginning
_______ _______
of this chapter under Getting Started.
_______ _ ___ __ ________
Chapter 4 The HP LaserJet 51
_____ ______ __________
Finer Column Resolution
Using our examples, you should be able to produce good results on
your LaserJet. A bonus with these methods is that you can switch
back to the line printer by changing one thing: the Output
command. It is possible to gain finer column resolution in your
LaserJet document, at the cost of making it difficult to switch
back to the line printer. The instructions below show how to
define 20 columns per inch instead of 10, but it does not buy you
a better-looking printout. Every character will be printed
exactly as it is now; the only difference will be your ability to
place tab stops and margins a little more precisely. If you have
cases where you would like to tab to column 16-and-a-half, for
instance, this would allow you to do it.
_______
Columns
There are 300 dots per inch. We have been using 30 dots as the
basic column measurement. This gives 300/30 = 10 columns per
inch, equivalent to 10-pitch type. One Courier space, defined as
30 dots wide, is almost twice the size of the TMS Roman space
which is 17 dots wide. The following command specifies a column
width of 15 dots, so tabs can be more accurately placed.
.output(las 15).comment 15 dots per column, not 30
So, at 300 printable dots per inch and 15 dots per column, we can
print 20 columns per inch. This is going to mean that every
reference to column positions in your document must be adjusted.
_______
Margins
Margin definitions in Prose use the column width specified in the
Output command. In Courier, the space takes 30 dots (there are
300 dots to the inch). We recommend that your documents be 65
columns wide. Since 15 dots are exactly one-half the width of 30
dots, you can adjust all column references, including margins, by
multiplying them by 2.
.margin(r65)
becomes
.margin(r130)
_____
Forms
The Forms described elsewhere in the Prose documentation all
assume 30 dots per column. The tab character in the Form is based
on the width of the column defined in the Output command. You
will need to double all of the column numbers in your Form if you
_______ _ ___ __ ________
52 Chapter 4 The HP LaserJet
switch from 30 to 15 dots per column. For example,
.form([ t #26 s:40 // l55 / #33 "-" pn:1 "-" /]
+ [ s #26 t:40 // l55 / #33 "-" pn:1 "-" /])
becomes
.form([ t #52 s:80 // l55 / #66 "-" pn:1 "-" /]
+ [ s #52 t:80 // l55 / #66 "-" pn:1 "-" /])
If you wish to have introductory pages with no titles and roman
numeral page numbers centered at the bottom of the page, you would
use:
.form([ // l55 / #66 pr:3 /])
_______
Tabbing
We have shown the need for tabs in aligning proportionally spaced
text. When using 15 dots as the basic dimension, you must double
your usual tab columns. Previously, you would use:
MAIL #16XPRESS program files to :Run.
MAILDB #16Database and schema, password file.
CATALOG #16Message catalog and XPRESS UDC file.
now you will use:
MAIL #32XPRESS program files to :Run.
MAILDB #32Database and schema, password file.
CATALOG #32Message catalog and XPRESS UDC file.
_______
Indexes
The Sortindex command uses column positions to specify where the
text and the page number should start. These will not be correct
with Output (LAS 15). For example, to convert the 65-column
Sortindex command:
.sortindex(c+ f. m14 p48 l0 r0)
becomes
.sortindex(c+ f. m28 p96 l0 r0)
53
_______ _ _____ ________
Chapter 5 Prose Commands
_ _______ _____
ⁿ General Notes
_ _____ ________ _ _ _
ⁿ Prose Commands A - Z
_______ _____
General Notes
Prose automatically fills and justifies output lines, and formats
the output into pages. Commands are needed to instruct Prose to
do anything fancier. There are commands to change the margins, to
control options, and to define the type of output device you
intend to use. Full descriptions of each command will follow
these general notes.
_______ _________
Command Character
A line of commands is indicated by typing the "command" character
in the first column of an input line (usually a ".").
.margin
The period was chosen as the default command character (although
you can change it if you wish) because it seems very unlikely that
anyone would want to type a period in the first column of a line
of text.
_______ ____
Command Name
After the command character, you type the command name. An index
entry, for example, is indicated by .inx:
.inx Prose command examples
You can abbreviate the command name to three letters, as Prose
only examines the first three letters.
.mar
.bre
.tit
Although the examples in this manual will usually show commands
typed entirely in lowercase, uppercase and lowercase letters may
be intermixed. The following three examples have the same
meaning:
.BREAK
.break
.Break
_______ _ _____ ________
54 Chapter 5 Prose Commands
The command can be indented from the command character. This is
especially useful when you have commands inside an If command,
where the indenting helps to identify the commands with the If
block.
.if condition
. mar(l+3)
.endif
________ ___ ____ ________
Multiple and Long Commands
The entire line is scanned for commands. Several commands may be
typed on the same line, provided that they are separated by the
command character. The command character of the next command on
the line can be separated from the previous command by spaces
(blanks). For example:
.break.skip 2.margin(l5 r65)
.break .skip 2 .margin ( l5 r65 )
Some commands, however, take the remainder of the line as their
parameter, and so no other commands can follow these. The Title
command is an example:
.title Prose User Manual
Long commands may extend to several lines. Continued lines are
indicated by a plus sign ("+") typed in column one. The
continuation may be made anywhere that a blank is allowed. For
example:
.form([ // l55 // #73 'Page' p / ]
+ [ // l55 'Page' p / ])
__________
Parameters
The command name may be followed by a parameter, but in the
absence of a parameter, default values are used. There are four
forms for the parameter:
1) The absence of any parameter:
.page
2) A single numeric value:
.indent 5
3) The remainder of the command line:
.title Prose User Manual
_______ _ _____ ________
Chapter 5 Prose Commands 55
4) A specification enclosed in parentheses, which consists
of descriptors defined by the command itself:
.margin(l+5)
When a numeric value is required for a parameter or as part of a
descriptor, an explicit positive integer may be given. In many
commands, a relative value may be used. This is indicated by a
plus or minus sign before the integer, and indicates that the old
value should be incremented or decremented by a certain amount.
Spaces are not allowed within individual parameters (e.g., r70,
but not r 70). In the following example, the left margin is set
to 10 and the right margin to 70. Then, the margins are squeezed
together by 5 characters on both sides.
.margin(l10 r70)
.margin(l+5 r-5)
___
Any parameters of the command that are not specified, will
continue with their existing value. For example:
.margin(l10 r70).Comment sets both margins
____
.margin(l+5).Comment changes left margin only
___ __________ ___________
The Formatting Environment
The formatting environment is defined to be all the options and
specifications that direct Prose as it produces formatted output
from unformatted input. The concepts that make up the formatting
environment can be loosely grouped into six areas, and there are
commands to control each one:
_____
Input controls the meaning and treatment of characters on the
input file (i.e., special characters to search for, such as .input
(u~) to define ~ as the underline character).
______
Output describes the type of output file for which the formatted
result is intended (.out (lpt s4) is a good choice).
____
Form specifies the format of the page into which the running text
will be inserted. This includes where to print titles, footers,
etc. There is a reasonable default Form.
______
Margin sets, resets, and adjusts the left and right margins (e.g.,
.mar(l+4 r-4) ).
_________
Paragraph describes special actions (such as indent and skip) to
perform at the beginning of each explicitly specified paragraph
(e.g., .par (s1 f`) to skip one line before each paragraph
designated by "`" apostrophe).
______
Option controls the rest of the miscellaneous options that affect
the text formatting process, including such important details as
_______ _ _____ ________
56 Chapter 5 Prose Commands
centering text and right-justifying text (e.g., .opt (l- r- f-)
means to center text from now on).
Of these six areas, the input, margin, option, and paragraph
settings are likely to be changed often throughout the text. In
addition, there probably will be a small number of different
________ _ _ ____ _______
settings. See Appendix B - Keep Buffers for a method of storing
and recalling standard settings using "keep buffers".
_____ _______ __ ___ _____ ________
Brief Summary of the Prose Commands
_______ _______ ________ _____ _________ ____
Command Meaning (action) Break Parameter type
Align skip to odd-numbered page * -none-
Bin select LaserJet paper bins * ( ... )
Box draw LaserJet boxes * ( ... )
Break break justification * -none-
Check check keep buffers ( ... )
Comment non-printing comment remainder
Contents print table of contents ( ... )
Count set page count numeric
Entry store contents entry ( ... ) remainder
Font change LaserJet font * ( ... ) numeric
Form define page format * ( ... )
Headindex define index heading ( ... )
Include read text from another file remainder
Indent indent following line * numeric
Input set input parameters ( ... ) numeric
Inx store index entry ( ... ) remainder
Jump skip output lines * numeric
Literal print literal text remainder
Margin set margins * ( ... ) numeric
Option set options * ( ... ) numeric
Output set output parameters ( ... )
Page eject to top of page * numeric
Paragraph set paragraphing parms ( ... ) numeric
PCL print literal text * ( ... ) remainder
Reset reset command defaults * ( ... )
Select select pages to print * ( ... )
Skip skip output lines * numeric
Sortindex sort and print index * ( ... )
Style define and use styles * ( ... ) name
Subtitle set the subtitle remainder
Tab define tab stops * ( ... )
Title set the main title remainder
Undent undent following line * numeric
The commands marked with an asterisk ( * ) cause a justification
break before they are processed, because they affect the filling
and justifying environment. Remainder means that the rest of the
line is used as the parameter. ( ... ) indicates that the
parameter is enclosed in parentheses and is described in detail
_______ _ _____ ________
Chapter 5 Prose Commands 57
along with the description of the command itself.
_______ _ _____ ________ _ _____
58 Chapter 5 Prose Commands - Align
_____ _______
Align Command
The Align command causes a conditional page eject so that the
current page will be an odd-numbered page.
ALIGN
If the current page is an even-numbered page, the page will be
ejected. If the current page is an odd-numbered page, this
command has no effect. The Align command should only be used when
you are at the start of a new page (i.e., immediately after a Page
command). The blank page is generated by first writing out a
blank line, then sending a page eject. This is equivalent to
encountering a blank line followed by a PAGE command in the text.
In other words, the Align command produces no useful result if you
use it in the middle of a page.
Aligning to odd-numbered pages is usually done for starting new
sections on the right-hand side of a page:
.page
.align
The blank page produced by this command uses the current form
specification. You may want to have a special form for the blank
page. For example, you might want the blank page to have no
titles, no subtitles, and no page numbers. To do this, you would
need to use a new form specification immediately before the Align
command, and re-enter the original form specification after the
Align command.
.com The form for the introduction has no titles and
.com uses Roman numeral page numbers.
.com
.form([ // L55 / pr / ])
This is the introduction on page 1 ...
.page
.com
.com The form for the blank page has no titles nor
.com page numbers
.com
.form([ // L55 // ])
.align
.com
.com Now comes our standard form with titles and
.com regular page numbers.
.com
.form([ T #26 S:40 // L55 / #33 "-" pn:1 "-" ]
+ [ S #26 T:40 // L55 / #33 "-" pn:1 "-" ])
This is a new section on an odd-numbered page ...
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - Bin 59
___ _______
Bin Command
The Bin command is used to select a LaserJet bin for Prose output.
Bins are also called paper trays.
__________
BIN ( parameters )
The Bin command tells the printer which paper source to use. This
command does not affect the current page, but the next available
page. However, if the current page is blank, then the current
page is the next available page. You can use the Bin command
before or after a Form; the effect is the same.
.BIN(TU)
.form([ /10 L47 ])
This is text on the first letterhead page
from the upper bin
.page
.form([ // L55 // ])
.BIN(TL)
This is text on the subsequent pages
from the lower bin
The parameter consists of a key letter followed by a value.
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
T which tray number 0 no
char none
____
Tray
T: Specifies which paper tray to use. You can use a number or a
mnemonic letter to specify the tray. If you use a number, you
use the same number as you would in the actual PCL command.
The valid numbers are as follows:
Num Tray
1 upper tray
2 manual feed
3 envelope manual feed
4 lower tray
5 paper deck
If you use a mnemonic letter, select one from the following
list:
_______ _ _____ ________ _ ___
60 Chapter 5 Prose Commands - Bin
Char Tray
D paper deck
E manual envelope feed
M manual feed
L lower tray
U upper tray
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - Box 61
___ _______
Box Command
The Box command is used to draw boxes for LaserJet output, using
the LaserJet's PCL commands.
__________
BOX ( parameters )
The parameters can be in any order, and consist of a key letter
followed by a value. The following table summarizes the
parameters.
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
A width of box in dots number 0 no
B height of box in dots number 0 no
C start of box in columns number +1 yes
H height of box in lines number 1 no
P pattern type number 0 no
R start of box in lines number +0 yes
S shading level number 0 no
T thickness of box lines number 1 no
V vertical offset in dots number -38 yes
W width of box in columns number margin yes
X start of box in dots number 0 yes
Y start of box in dots number 0 yes
If you do not give any specifications for a Box command, it will
use the default values. The values do not carry over from one Box
command to the next. For example, if you draw a box with a
thickness of 5 and a shading of 30 percent, the next box you draw
will have a thickness of 1 and shading of 0 percent. The only
exception is the V specification, which remains at a new value
until you change it.
The default box, with no specifications, begins on the next line
at the start of the left margin, has a height of 1 line, and a
width spanning the left and right margins.
This command is particularly useful for putting boxes around text
for emphasis. You can only use the Box command if your output
device is a LaserJet, selected via a .out(las) command. The Box
command saves the current LaserJet cursor position before drawing
a box, and restores the position after drawing. The current line
and character counts are not affected by this command. If the
output device is not a LaserJet, the Box command has no effect.
You can place the Box command before or after the text you want to
box. You may find placing the Box command before the text a
little easier, especially if the box and the text start at the
same location.
_______ _ _____ ________ _ ___
62 Chapter 5 Prose Commands - Box
.box
this box surrounds this line
the box is under this line
.box
_____ __ ___ _ __ ____
Width of Box - in Dots
A: Specifies the width of the box in dots. There are 300 dots per
inch. This option allows more precision than the W option.
______ __ ___ _ __ ____
Height of Box - in Dots
B: Specifies the height of the box in dots. There are 300 dots
per inch. This option allows more precision than the H option.
_____ __ ___ _ __ _______
Start of Box - in Columns
C: Specifies the horizontal starting position (upper left corner)
of the box, in columns. This is the same type of value as you
would use for tabs. Since a Box command does an implicit
.break, the default (+1) is the start of the left margin on the
next line.
______ __ ___ _ __ _____
Height of Box - in Lines
H: Specifies the height of the box, in lines. Half lines are
specified by adding a plus sign (+) after the number. The
default is a height of 1 line.
_______ ____
Pattern Type
P: Specifies the pattern type inside a box. This is a value
ranging from 0 to 6. Pattern 0 (erase) is only available on
LaserJet IIPs and up. The styles of the patterns are as
follows:
Value Type of pattern
0 erase the contents inside the box (white fill)
1 horizontal lines
2 vertical lines
3 slash lines
4 backslash lines
5 square grid
6 diagonal grid
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - Box 63
_____ __ ___ _ __ _____
Start of Box - in Lines
R: Specifies the vertical starting position (upper left corner) of
the box, in lines (rows). Half lines are specified by adding a
plus sign (+) after the number. A line is one-sixth of an inch
high (i.e., there are six lines per inch). Since a Box command
does an implicit .break, the default (+0) is the start of the
left margin, on the next line.
_______ _____
Shading Level
S: Specifies the level of shading inside a box. This is a value
ranging from 0 to 100 which specifies the percentage of shading
(100 percent being solid black). The LaserJet only supports 8
levels of shading, so each level is actually represented by a
range of values.
Shade % LaserJet shade level
0% don't fill the box with anything (default)
1-2% 1 (light)
3-10% 2
11-20% 3
21-35% 4
36-55% 5
56-80% 6
81-99% 7
100% 8 (solid black)
_________ __ _____
Thickness of Lines
T: Specifies the thickness of the lines used in boxes, in dots.
If you use 0, the box will not have an outside border (e.g., a
box filled with a pattern). The default box has a line
thickness of 1.
________ ______
Vertical Offset
V: This option is meant for advanced users. The Box command draws
boxes starting in the upper left corner of the character cell.
The LaserJet, however, positions the character cursor lower in
the cell, at three-quarters the Vertical Motion Index value.
The V option lets you compensate for this difference when you
use relative vertical positions for a box.
The units for the vertical offset are in dots. The default is
-38 dots, which is three-quarters of the default LaserJet VMI
of 8/48ths of an inch (50 dots; 6 lines per inch). If you
change the VMI, you must change the vertical offset to
three-quarters of the new VMI value. For example, if you use a
VMI of 9.6/48ths of an inch (60 dots; 5 lines per inch), you
_______ _ _____ ________ _ ___
64 Chapter 5 Prose Commands - Box
need a vertical offset of -45.
_____ __ ___ _ __ _______
Width of Box - in Columns
W: Specifies the width of the box, in columns. The default is a
width spanning the left and right margins.
_____ __ ___ _ __ ____
Start of Box - in Dots
X: Specifies the horizontal starting position of the box, in dots.
This option allows more precision than the C option.
_____ __ ___ _ __ ____
Start of Box - in Dots
Y: Specifies the vertical starting position of the box, in dots.
This option allows more precision than the R option.
________
Examples
If this manual was printed in LaserJet mode (i.e., .out(las)), you
will be able to see the actual boxes drawn by the Box commands in
the following examples. If this manual was printed in line
printer mode (i.e., .out(lpt)), you won't see the results of the
Box commands.
1. Draw a box at the current position, 1 line high, with a width
spanning the current left and right margins.
.box
2. Draw a box that is 5 columns over, 16 columns wide, and 2 lines
high.
.box(c+6 w16 h2)
3. Draw a box that is 2 lines high, which extends half a line
above and half a line below the current text. Place the Box
command before the text.
.box(h2 r-0+)
4. Draw a box 3 dots thick.
.box(t3)
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - Box 65
5. Draw a box with a 10 percent shading.
.box(s2)
6. Draw a box with a vertical pattern and no outside border.
.box(p2 t0)
7. Draw a horizontal line (a box with no height). Place the Box
______
command before the text, to create a line above the text.
.box(h0)
8. Draw a horizontal line (a box with no height). Place the Box
_____
command after the text, to create a line below the text.
.box(h0)
_______ _ _____ ________ _ _____
66 Chapter 5 Prose Commands - Break
_____ _______
Break Command
Causes a justification break, without the need for a blank line.
BREAK
For example:
_____ __ ______
Input to Prose:
* Prose supports attached printers.
.break
* Prose works with the LaserJet font cartridges.
.break
* Prose is consistent. {no Break specified}
* Prose is written in Pascal.
______ ____ ______
Output from Prose:
* Prose supports attached printers.
* Prose works with the LaserJet font cartridges.
* Prose is consistent. * Prose is written in Pascal.
When no Break is specified, Prose fills each line to the margin,
as long as the option for filling output lines is switched on.
A Break does not have to be specified with commands that reset the
_____
environment, such as Page, Skip, and Undent. See the table Brief
_______ __ ___ _____ ________
Summary of the Prose Commands for a complete list of the commands
that cause a justification break.
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Check 67
_____ _______
Check Command
The Check command is used to validate the values of Prose
variables. If you are using styles, you do not need to use the
Check command.
__________
CHECK ( parameters )
The parameters can be in any order, and consist of a key letter
followed by a value. The following table summarizes the
parameters.
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
C contents keep buffer number 0 no
F font keep buffer number 0 no
I input keep buffer number 0 no
J if stack level number 0 no
M margin keep buffer number 0 no
O option keep buffer number 0 no
P paragraph keep buffer number 0 no
If a specification is not given, the corresponding keep buffer is
not checked. Otherwise, the current keep buffer number is
compared to the value of the specification. If it is not the
same, it will result in a Prose error.
____________
Introduction
This command is useful when you use keep buffers as a stack and
you want to know if a particular keep buffer has been completely
"popped". For example, one frequent error is changing the margin
for an indented part of the text, then forgetting to change the
margin back. The result is that the rest of the output will be
indented too much. With a Check command at the end of the
document, Prose can tell you if this has occurred.
The interesting excerpt is as follows:
.mar(l+5)
This excerpt is self-referential for no particular
reason except to refer to itself...
This is the real text again, but we forgot to use
a .mar command after the excerpt.
.comment The Check commands makes sure the Margin
.comment keep buffer is at zero. If not, we must
.comment have forgotten a .mar somewhere.
.check(c1 f0 i1 m1 o1 p1 j0)
The default value to check is 0, because all keep buffers start at
0. If you have a template that sets up standard settings, then
_______ _ _____ ________ _ _____
68 Chapter 5 Prose Commands - Check
you should check for 1 instead of 0.
________ ____ ______
Contents Keep Buffer
C: Check the .contents keep buffer. This is useful if you have
indented subheadings in your table of contents. Use c1 in the
Check command to check your table of contents. If you don't
have a table of contents, use c0.
____ ____ ______
Font Keep Buffer
F: Check the .font keep buffer. This is useful if you have blocks
_____
of text in another font, but you used a .font instead of a
_____ _
.font 0 to go back to the original font.
_____ ____ ______
Input Keep Buffer
I: Check the .input keep buffer. This is useful if you frequently
redefine the Prose special characters.
__ _____ _____
If Stack Level
J: Check the .if level. This is useful if you have nested If
commands.
______ ____ ______
Margin Keep Buffer
M: Check the .margin keep buffer. This is useful if you have
indented text or lists with hanging indents.
______ ____ ______
Option Keep Buffer
O: Check the .option keep buffer. This is useful if you
frequently change the justification style of your text
(e.g., centering).
_________ ____ ______
Paragraph Keep Buffer
P: Check the .paragraph keep buffer. This is useful if you use
the number generator for numbered lists.
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Check 69
____ _____ _____ ______
Note About Using Styles
If you are using styles, you can not use the Check command. When
you use styles, you do not have a problem stacking keep buffers
because a style will usually reset the keep buffer stack.
_______ _ _____ ________ _ _______
70 Chapter 5 Prose Commands - Comment
_______ _______
Comment Command
Declares a "comment". Prose treats the remainder of the command
line as a comment, i.e., it is ignored.
____
COMMENT text
The Comment command allows you to include in the source of your
document information that will not be printed on the formatted
copy. Use comments to explain why you have used specific Prose
commands and what you expect to accomplish, and also to indicate
alternative commands to be used in other cases. For example:
.comment.out(lpt s4 r-)
.out(las 30 s8 r-).mar(r65)
.opt(j3).Comment final draft, do not insert > 2 spaces.
.comment use .opt(j4) on rough draft to reduce hyphens.
_______ _ _____ ________ _ ________
Chapter 5 Prose Commands - Contents 71
________ _______
Contents Command
The Contents command is used to specify the current indentation of
table of contents entries (see the Entry command) or to print the
actual table of contents.
__________
CONTENTS ( parameters )
The following table summarizes the parameters for controlling
indentation:
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
I indentation number 0 yes
K keep buffer number next no
P print contents switch - no
The following table summarizes the parameters for printing the
table of contents. The reference to "page number" in the table
includes both the section name as well as the actual page number.
___ ______ _______ _______
Key Letter Default Meaning
C 0 column to insert page number
(in content entry)
F blank fill character
(used between the content entry and the
page number)
L 2 left width of page number
(field width for page number)
M 0 margin
(left margin before content line)
P - print table of contents
R 2 right width of page number
(blanks printed after page number)
When the page number is shorter than the field width (parameter L,
above), it will be right-justified within the field (i.e., padded
with leading blanks). When the page number is longer than the
field width, Prose prints the page number without any extra
leading blanks.
____ _ _____ __ ________
Also see the sections Make a Table of Contents in the chapter
________ _____ _____ _______ _____ ________
Applying Prose, and Entry Command in the chapter Prose Commands.
_______ _ _____ ________ _ _____
72 Chapter 5 Prose Commands - Count
_____ _______
Count Command
Sets the page number.
______
COUNT number
(Default: set page number to one)
The numeric parameter can be relative. For example,
.count +1 {increments the page number by one}
Increasing the page number can be useful if you plan to insert
pages from an external source, perhaps figures, into the completed
document.
By default, Prose internally numbers the pages of the output
document starting from 1, even if the page number is not printed
on the leading pages. This means that if you begin printing page
numbers on the third physical page, following the title page and
the table of contents, your first numbered page will be 3. Use
the Count command to reset the page number to 1 when you start the
numbered pages. For example:
.page.count 1.title plabel User Guide
.form([t// l55 / pn/])
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Entry 73
_____ _______
Entry Command
The Entry command is used to tell Prose about entries for the
table of contents. Each entry has five attributes: the text, the
section name, the current page number, the indentation, and
whether to print the page number.
__________ ____
ENTRY ( parameters ) text
The indentation is specified in the Content command and the page
number is maintained automatically by Prose. There are several
forms of the Entry command. The first form does not include any
parameters:
.entry Landscape mode
This would save the text "Landscape mode" so that later it can be
printed by the Content command. The page number associated with
this entry would also be printed. There would be no section name
in the page number.
To include a section name in a page number, use the following form
of the command:
.entry('2-') Landscape mode
This would cause the entry to be printed out the same as before,
with the addition of the section name '2-' before the page number
(e.g., '2-1 Landscape mode' instead of '1 Landscape mode'). The
maximum length of the section name is 20 characters.
You can print an entry without either a page number or a section
name with this form of the command:
.entry(p-) Appendices
__________
The parameters are followed by the text of the table of contents
entry. Leading spaces are ignored; use the indentation feature or
explicit blanks instead. You can use the paragraph character in
table of contents entries to assist in formatting the table of
contents. If you wanted to produce a table of contents with
headings, you could do the following:
_____ __ ______
Input to Prose:
.contents(i+3)
.par(f` u3 p5 s1)
.entry `Introduction
.entry Welcome To Prose
.entry New Features of Prose
.entry(p-) `Appendices
.entry A Prose Errors
.entry B Keep Buffers
_______ _ _____ ________ _ _____
74 Chapter 5 Prose Commands - Entry
______ ____ ______
Output from Prose:
1 Introduction
1 Welcome to Prose
2 New Features
Appendices
10 A Prose Errors
11 B Keep Buffers
These commands start by indenting all table of contents entries by
three columns. Whenever the Paragraph command starts an entry,
the .content command applies the paragraph parameters when
printing the entry. In this example, we skip one line (s1), skip
to a new page if there is not enough room for five lines (p5), and
shift the text of this entry left three columns (u3). Note that
the paragraph settings used are the ones in effect during the
.content command.
_______ _ _____ ________ _ ____
Chapter 5 Prose Commands - Font 75
____ _______
Font Command
The Font command defines the fonts of a LaserJet font cartridge
and also switches fonts within a document.
__________ ______
FONT ( parameters ) number
The following table summarizes the parameters. For examples of
____ ____ _____ _____ ___ __ ________
using fonts, see Step Two: Using Fonts in the The HP LaserJet
chapter.
___ ______ _______ ____ _______
Key Letter Meaning Type Default
K keep buffer number next
L RTF flag: fill lines switch -
R enable special RTF handling switch -
U underline switch -
W width of the space in dots number 30
"..." Escape sequence string
'...' same as "..." string
For proportional fonts, the closing parenthesis is followed by a
table. Each table entry is a letter followed by a number. The
number is the width of the letter in dots. If you are using RTF
output, the table is used as a character translation table. Each
character is followed by its numeric character code in the
selected font.
____ ______
Keep Buffer
K: The keep parameter explicitly specifies which keep buffer
should be used to store the new input options. The default is
to use the numerically next buffer (i.e., stack the values).
For example, if you define a font without an explicit keep
buffer when the current font keep buffer is 3, then the font
you are defining will become font 4. If you do not specify a
keep buffer for the first font you define, then keep buffer 0
is assigned to it. This differs from the way that keep buffers
are assigned in other commands (they use keep buffer 1 the
first time).
You may define several fonts, each in an individual file
without an explicit keep buffer. By including several of these
files, you can easily replace the fonts that you have chosen
for your document. This feature is meant for advanced users
who wish to have more flexibility when using fonts. For
example, say you have defined fonts 0 to 3 by using the
following files:
.include times10.fonts
.include times10b.fonts
.include times10i.fonts
.include helv14b.fonts
_______ _ _____ ________ _ ____
76 Chapter 5 Prose Commands - Font
You can easily change the fonts by using another set of files:
.include times12.fonts
.include times12b.fonts
.include times12i.fonts
.include futur15b.fonts
Unless you need to work with a varying selection of fonts, we
suggest that you always specify the keep buffer explicitly.
_____ __ _____
Width of Space
W: The width of the space character in dots. Prose uses this
width to define how large a space in the input text should be
on the output LaserJet. For Courier fonts, this value is 30.
For the B and F font cartridges (the proportional font
cartridges) this value is 17.
___________
Underlining
U: Use the underline option to instruct Prose to underline any
___
words in this font, but only when the output device is not a
LaserJet.
____ ______ ________
Font Escape Sequence
": This is the Escape sequence that enables this font. You must
include the Escape character. If the keep buffer is 0, you
____
must specify the Primary font sequence. Otherwise, you must
specify the Secondary font sequence. If you specify the
Secondary font sequence for keep buffer 0, Prose will convert
it into the Primary font sequence.
You only need to specify the font keep buffer for subsequent
use. The default font (.font 0) is a Courier medium font.
____ _______ _____
Font Include Files
Users should ignore the mechanics of the Font command and use the
standard include files provided to print documents on the
LaserJet. For example,
.include <f92286a>
Each include file ends with a font 0 command which leaves the
Prose environment with the default font setting. There are
several font include files in Qlibdata.Robelle:
F92286A Courier bold and italic.
_______ _ _____ ________ _ ____
Chapter 5 Prose Commands - Font 77
F92286B TMS proportional.
F92286C@ International courier symbol sets. There are ten files
each ending with a different number. Choose the file
that corresponds to your country/language as follows:
Language File ends with the number
Roman-8 none
French 1
German 2
United Kingdom 3
Spanish 4
Swedish/Finnish 5
Danish/Norwegian 6
Italian 7
Roman Extension 8
USASCII 9
F92286D Prestige elite.
F92286E Letter gothic.
F92286F TMS proportional, but these fonts have different
character sizes than the F92286B.
F92286G Prestige elite with the USASCII and line drawing
character sets.
F92286G2 Prestige elite with certain characters redefined for
legal applications.
F92286IC International Collection font cartridge, using CG Times
and Univers fonts.
F92286L Portrait, Courier bold and italic.
F92286L2 Landscape, Courier bold and italic.
F92286N Portrait, letter gothic bold and italic.
F92286N2 Landscape, letter gothic bold and italic.
F92286Z Times Roman and Helvetica proportional fonts. Same as
the HP Microsoft cartridge. This has different font
metrics than the F92286F and F92286B cartridges.
F92290S2 TMS proportional 12 point.
FGLOBAL Global Text font cartridge, using Century Schoolbook and
Triumvirate fonts.
FPCTR10 Pro-collection font cartridge.
_______ _ _____ ________ _ ____
78 Chapter 5 Prose Commands - Font
LaserJet Courier for all LaserJet IIs and up.
LJETIII Built-in Times and Univers proportional on the LaserJet
IIIs.
S33412AC TMS proportional soft fonts (HP 33411AC or 33412AC).
This file will work only if you have downloaded the
matching soft fonts to your LaserJet Plus or LaserJet II.
_______ _ _____ ________ _ ____
Chapter 5 Prose Commands - Form 79
____ _______
Form Command
Defines the page format, including titles, footers, and the top
and bottom of the page.
__________ ______
FORM ( parameters ) number
The argument consists of parameters, followed (if appropriate) by
an optional field width. For example, this simple form
.form([ t / L55 / pn / ])
prints the title left-justified on the first line, followed by a
blank line, 55 lines of formatted text, another blank line, and a
final line containing a right-justified numeric page number.
Text lines are built by the Form command from left to right,
starting in the first printable column, although the tabbing
specification may be used to alter this.
____ ______________
Form Specifications
The following table describes the form specifications that Prose
provides.
_______
Default
___ ____ _______ _____ _____
Key Char Meaning Field Width
_
Bn select LaserJet bin
D, d, 5 paper deck
E, e, 3 envelope manual feed
L, l, 4 lower bin
M, m, 2 manual feed
U, u, 1 upper bin
C 24 hour clock as hh.mm.ss (15.37.58) 8
D raw date as yy/mm/dd (94/04/15) 8
E nice date as dd Mmm yy (15 Apr 94) 9
I Input line number 5
_ _
Ln fill in n lines of running text
_ _
Ln+ fill in n and a half lines of running text
_ _
Pf current page number, f selects the form 3
N or n arabic numerals (default) (the field
L uppercase letter width will
l lowercase letter be expanded
R uppercase roman numerals if needed)
r lowercase roman numerals
S subtitle its length
T main title its length
W wall clock as hh:mm AM ( 3:37 PM) 8
or hh:mm PM
_ _
#n tab forward or backward to absolute column n
"..." print literal text its length
'...' print literal text its length
_______ _ _____ ________ _ ____
80 Chapter 5 Prose Commands - Form
/ print an end of line
/+ print an end of line and skip a half line
_ _
/n print n ends of lines
[ define top of page
] define bottom of page
___ _______ ____
The Default Form
The default Form is:
.form([ t #62 e // L57 / #33 '- ' pn:1 ' -' / ])
This default prints the title in the upper left corner, the date
in the upper right corner, and the page number centered in the
bottom line; there are 57 text lines per page, with a blank line
preceding and following the text.
____ __________
Form Processing
The Form command is processed interpretively. This means that the
format is re-scanned as each page of output is produced, so
changing one of the title buffers with the title or subtitle
commands will change the title or subtitle on the next page.
___ __ _____ _
Top of Page, [
The top of page definition ("[" ) has several purposes. By using
the Output command, you can request Prose to send a page eject to
the output device when it reaches the top of a page. You can also
request Prose to pause at the top of each page to allow you to
change paper (e.g., .out (p+) ). At the end of the document,
Prose does one last page eject, interpreting the Form
specification until it reaches the top of page.
______ __ _____ _
Bottom of Page, ]
The bottom of page specification ("]") is where Prose increments
the page number. If you printed the page number both before and
after the bottom of page definition, you would get two different
numbers.
________ ____
Infinite Form
In the absence of a parameter (e.g., .form ), no special page
formatting is done. This is similar to a Form consisting of a
single L specification defining an infinite number of lines per
page. There are no top of pages or bottom of pages. In this
mode, a Page command will produce five blank lines on a page.
_______ _ _____ ________ _ ____
Chapter 5 Prose Commands - Form 81
___ _________
Bin Selection
The bin selection specification ("B") selects which LaserJet bin
to use for this form. The bin selection can only occur
immediately after a top of page specification (e.g. "[ BL"). The
number or letter used to specify the bin is the same as that used
in the T option of the Bin command. For more information about
bin selection, see the Bin command.
__________ ______ ___ _________
Justifying Titles and Constants
It is very useful to have a general-purpose form, but there must
be a way to right justify titles and subtitles. This can be done
by using a combination of the tab and field width parameters of
the Form command. Assuming that the right margin is at column 70,
then the following Form command would right justify the title to
column 70.
.form([ #31 t:40// L53 // #33 '- ' pn:1 ' -' / ])
The reason for this is that Prose first tabs over to column 31.
This leaves 40 spaces in the output line. When the title is
written in a field width of 40, the title is right justified
within the field, assuming that the title is less than 40
characters long.
You can also specify a field width after a constant string. For
example, 'Page':6. Specifying a field width of :6 ensures that
the string will be right-justified within a space that is six
columns wide. This becomes important when you start using
Proportional fonts.
__________ ____ _______
Justifying Page Numbers
Justifying page numbers is similar to justifying titles and
constants. The page number is right-justified in the field width
specified. If you want a left-justified page number, use a
combination of the tab and a field width of 0. The following
example left-justifies a number on the left side of the page, in a
field width of 5:
.form([ t // l55 // pn:0 #6 / ])
If you do not want the page number justified, use a field width of
1.
_______ _ _____ ________ _ ____
82 Chapter 5 Prose Commands - Form
_____ _____ _____
Rough Draft Forms
When first writing a large document it is difficult to associate
the line numbers of the input file with the finished pages. The
"I" specification is provided to print out the input line number
on the form. If you wish, you may print the input line number at
the top and the bottom of the form. These line numbers would
distinguish the lines of the input file that were on the page.
_______ _____
Example Forms
For some example forms, including two-page forms that alternate
________ _____
between left and right sides, see the chapter Applying Prose.
____ ______
Keep Buffer
The Form command can use keep buffers to store form definitions.
However, these keep buffers function differently from other Prose
keep buffers as the Form's keep buffers are not stacked. See
________ _
Appendix B for more information about stacked keep buffers. By
not automatically stacking the keep buffers, the Form command is
backwards-compatible with previous versions of Prose. This
results in two important differences when using Form's keep
buffers. First, if you do not specify a keep buffer number when
defining a form, Prose saves the form in keep buffer 0 instead of
the next buffer. Second, if you specify .form without any keep
buffers, Prose uses an "infinite form" instead of the previous
buffer.
If you do not intend to use keep buffers, your Form commands will
work exactly as before. You are not required to make any changes.
If you want to use keep buffers for forms, you define your forms
in keep buffers 1 through 9. Do not use keep buffer 0 when you
are using other form keep buffers. Keep buffer 0 is used as
temporary storage by Prose and any forms defined there will be
overwritten. The K option is for specifying which keep buffer
must be used, and it must appear before the left square bracket.
.form(k1 [t // L55 / pn / ])
.form(k2 [L59])
.form 1
text on a page with a header and page number
.page
.form 2
text on a blank page
_______ _ _____ ________ _ _________
Chapter 5 Prose Commands - Headindex 83
_________ _______
Headindex Command
The Headindex command causes headings to be printed by the
Sortindex command. With it, you define the characteristics of the
heading that Prose prints before each change of alphabet in the
index (e.g., Prose prints an 'A' above the entries beginning with
'A'). If you don't define the Headindex command, then the index
will be printed without any breaks between the entries.
__________
HEADINDEX ( parameters )
(Default: uses a letter with a blank line before and after)
The following table summarizes the parameters, which can be used
in any order.
___ ______ _______ ____ _______
Key Letter Meaning Type Default
A automatic skip after number 1
C center heading switch -
F font number 0
H print letter heading switch +
I automatic indent number 0
P automatic page eject number 5
S automatic skip before number 1
U automatic unindent number 0
_________ ____ _____ _______
Automatic Skip After Heading
A: This sets the number of blank lines to print after the heading
line. This separates the heading from the following set of
index entries. For example, the option (A1+) skips one and
half lines.
______
Center
C: This causes the letter heading to be centered on the line.
This option overrides the I and U options.
____
Font
F: This sets the font to use for printing the heading. If you
don't specify this option, the current font will be used.
_____ _______
Print Heading
H: This specifies whether or not to print the letter heading. If
set to h+, the heading line will contain the uppercase letter
of the following set of entries, aligned with the index margin.
If set to h-, then the letter will not be printed. The heading
_______ _ _____ ________ _ _________
84 Chapter 5 Prose Commands - Headindex
line, however, will still be printed as a blank line.
______
Indent
I: This specifies the indent of the letter heading in terms of the
_____
number of spaces to the right of the index margin.
_________ ____ _____
Automatic Page Eject
P: This is very similar to the P option in the Paragraph command.
This sets the minimum number of lines remaining on the page
before printing the letter heading. The page ejects if there
are fewer than this number of lines remaining, and Prose prints
the heading on the next page. This option can prevent a
heading from being printed on the bottom of the page while the
following index entries appear on the next page. For example,
the option (p5+) checks for five and a half lines remaining.
_________ ____ ______ _______
Automatic Skip Before Heading
S: This sets the number of blank lines to print before a letter
heading is printed. This separates the heading from the
previous set of index entries. For example, the option (S1+)
skips one and a half lines.
________
Unindent
U: Similar to the I option, this enables you to "indent" the
____
heading a number of spaces to the left of the index margin.
Each letter of the alphabet has its own heading. Entries before
the letter A, (e.g., numbers and punctuation marks), are grouped
together, and printed before the A entries. This set has no
headings or extra blank lines. Entries after the letter Z, (e.g.,
square brackets), are also grouped together, and are printed after
the Z entries. Their heading is a blank line (i.e., the h-
option), and includes any blank lines before and after the
heading.
The default headindex (e.g., .head h+ s1 a1 p5) produces the
following:
$Stdinx file
$Stdlist output
:commands
_______ _ _____ ________ _ _________
Chapter 5 Prose Commands - Headindex 85
A
abbreviation
align
automatic page numbering
Z
z option
zero
[ command
] command
_______ _ _____ ________ _ __
86 Chapter 5 Prose Commands - If
__ _______
If Command
The If command, along with the Elseif, Else, and Endif commands,
allows you to use conditional logic to control which parts of your
document to process.
__________
IF expression
__________
[ELSEIF expression] ...
[ELSE]
ENDIF
Unlike other Prose commands, the If commands cannot be
abbreviated. The If commands affect both text and other Prose
commands. Each If must have a matching Endif, while the Elseif
and Else are optional. There can be any number of Elseifs, but
only one Else. If you have an Else, it must be as the last
command before an Endif. Ifs can also be nested up to 16 levels
per file.
The expressions used in an If and Elseif are logical expressions,
similar to the expressions used in MPE's :If and Pascal's if
commands. Numbers and numeric variables can be used in an If
expression. If the value of a variable is non-zero, it is
evaluated as true. If the value is zero, or if a variable doesn't
exist, it is evaluated as false. The predefined names "true" and
"false" are evaluated to be 1 and 0, respectively. Variables can
be compared to each other or to numbers by using these relational
operators: <, >, and =. The operators AND, OR, and NOT can be
used to join expressions, with NOT having the highest precedence,
then AND, then OR. Expressions can appear in parentheses.
If you are using Ifs with Include files, keep in mind that an If
and its Endif must start and end in the same file. This means you
cannot start an If in one file and finish it in another file.
.if outlpt=1
. out(lpt s7 r-)
.elseif (outlas)
. if outrecord
. out(las 30 s8 r+)
. else
. out(las 30 s8 r-)
. endif
.elseif outhelpcomp and qhelpinstalled
. out(lpt q+)
.else
. out(lpt s7 r-)
.endif
_______ _ _____ ________ _ __
Chapter 5 Prose Commands - If 87
This is an example of using the IF command
.if not outhelpcomp
This is text that will not be included for Qhelp.
.endif
This is the end of the example.
_______ _ _____ ________ _ _______
88 Chapter 5 Prose Commands - Include
_______ _______
Include Command
Directs Prose to read text from another file.
________
INCLUDE filename
When the end of file is reached in the included file, text is read
_____
from the first line in the original file after the Include
command.
The file name can have lockwords, but the user must have Read
access to it. Using include files causes text substitution only;
Prose is not reset to the initial condition that existed when the
Include command was first encountered. All changes to the Prose
environment are still in effect when text is read again from the
original file. Include files can be nested to a level of four.
_______ ____ ________
Default File Location
If you surround the include file name with angled-brackets (the
less-than and greater-than signs), then Prose will look for that
file name in a pre-determined location. The default location is
the Qlibdata group of the Robelle account.
.include <f92286f>
________ ___ _______ ________
Changing the Default Location
On MPE/iX, you can specify a new default location by putting the
name of the location in the variable "proseincludepath".
:setvar proseincludepath "mygroup.myacct"
__
or
:setvar proseincludepath ".mygroup.myacct"
The value of the proseincludepath variable will be appended to the
file name. If the file is not found, Prose returns an error.
Prose will not look anywhere else for the file.
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Indent 89
______ _______
Indent Command
Indents the following line by a certain number of spaces.
______
INDENT number
(Default: 5 spaces)
The indentation only applies to the following line, and the
indentation is always done relative to the current left margin
setting. Indentation of more than one line is accomplished with
the Margin command. See the Paragraph command for a way to do an
automatic Indent on the first line of every paragraph. Compare
the Indent command with the Undent command.
_______ _ _____ ________ _ _____
90 Chapter 5 Prose Commands - Input
_____ _______
Input Command
The Input command defines the input environment; that is, the
interpretation of characters in the input file.
__________ ______
INPUT ( parameters ) number
The parameters can be in any order, and consist of a key letter
followed by a value. The following table summarizes the
parameters.
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
B explicit blank character character null
D command character character .
E escape character character null
F font character character null
H hyphenation character character null
K keep buffer number next no
R right-tab character character null
T tab character character null
U underline character character null
W input width number 150 no
If a specification is not given, its value is not changed. The
default value is the one that will be set if the key letter is
given by itself, and is also the value that is assigned when Prose
begins processing.
Not all of the special characters are interpreted when you use
them outside the body of the text. Non-body text includes items
such as titles, subtitles, index entries, and table of contents
entries. For these items, only the escape character, explicit
blank, font change character, and underline character are
interpreted. All other special characters are assumed to be
characters, not functions. This means that if you insert a
hyphenation character into every instance of a word, a title or
subtitle containing the word will print the character: e.g.,
_______________ __________
Cut-\and-\Paste Operations.
________ ______
Explicit Blanks
B: The explicit blank character indicates a blank that Prose
should not tamper with. Thus, if the "at-Sign" ( @ ) is
specified as the explicit blank
.input(b@)
then two words that are separated by an explicit blank
Mr.@Shumko
will never be split from one line to the next, and Prose will
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Input 91
never fill blanks in between the words to justify a line. By
default, Prose converts a single space into two spaces after
every period, treating it as end of sentence. Use an explicit
blank character after a period, as shown above, to keep this
from happening, or use ".opt (p-)" to disable the feature.
_______ _________
Command Character
D: The command character is the character you type in the first
column of an input line to flag it as a command line. The
default is period, but it can be changed to the TDP command
character (\) by the following command:
.input(d\)
______ _________
Escape Character
E: Any character that follows the Escape character in the input
text will be output as text and not interpreted as a special
character. To print the Escape character, use two of them in a
row. This feature eliminates the need for numerous Input
commands to redefine the special characters. For example,
_____ __ ______
Input to Prose:
.input(u~ b@ h\ e& t# f|)
In this text the &~-character, &@-character,
&\-character, &|-character, -character, and
the &&-character will appear without changes.
______ ____ ______
Output from Prose:
In this text the ~-character, @-character, \-character,
|-character, #-character, and the &-character will appear
without changes.
____ _________
Font Switching
F: If you wish to switch fonts within a line, you must first
specify a font character with the Input command. We do this
once, at the beginning of the document, and we stick to a
standard character for every document. This makes maintaining
the documentation much easier. You use the font character
within the text wherever you need to change fonts for a line
(e.g., a title) or for part of a line (e.g., to emphasize a
word). If you need to change fonts for more than one line,
it's usually more convenient to use the Font command.
After you type the font character, type the number which has
been defined for the font you want to use. The font character,
without a font number, has only one effect: it causes Prose to
_______ _ _____ ________ _ _____
92 Chapter 5 Prose Commands - Input
revert to the font last specified by the Font command. This
means that you use the font character alone to terminate the
font switch, returning to the font previously in effect for
that line. Prose uses the default font for the document if you
have not changed fonts with the Font command. In the following
example we assume that the default font is courier medium, font
one is bold, and font two is italics.
_____ __ ______
Input to Prose:
.input(f|)
This line contains a |1bold| and an |2italic| word.
______ ____ ______
Output from Prose:
____ ______
This line contains a bold and an italic word.
___________ _________
Hyphenation Character
H: The hyphenation character defines possible hyphenation points
within words. Sometimes a long word will cause many blanks to
be inserted to justify the preceding line. Prose will
hyphenate such a word if you have defined the syllable
boundaries within that word. Of course, not all the syllable
boundaries need be specified, only those where you want Prose
to be able to split a word.
For example, if you select the backslash (\) as your
hyphenation character, you might type "syncopation" as
"syn\co\pa\tion". Prose will insert a hyphen (-) only when the
characters on both sides of the hyphenation point are letters.
You might type "hyper-active" as "hyper-\active", and Prose
will split the word, if necessary, without adding an extra
hyphen. If Prose must insert more blanks than a certain
_
threshold (set with the Option (Jn) command), it issues a
message suggesting that you insert hyphenation characters. It
is best not to worry about hyphenation until the message
appears. Use ".opt (j4)" for rough drafts and ".opt (j3)" for
final drafts.
Prose will not insert a hyphen between a letter and a character
such as a period. If you need to divide long file names, avoid
the insertion of a misleading dash by typing them like this:
guinea.\pig.\cage.
____ ______
Keep Buffer
K: The keep parameter explicitly specifies which keep buffer
should be used to store the new input options. The default is
to use the numerically next buffer (i.e., stack the values).
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Input 93
_________ _________
Right-Tab Character
R: Use the right-tab character to line up columns of text or
numbers that must be right-justified within the column. To
right-justify a string of characters, such as $12,000, at a
specific column, such as 24, you put a right-tab character in
front of the string, another right-tab character after it, and
follow that immediately with the desired column number. For
example, %$12,000%24. Do not insert a regular tab character
before the column number. The text to right-justify must all
be on one input line. The text within the right-tab characters
is considered as one long word (i.e., just as if explicit
blanks were entered between each word).
_____ __ ______
Input to Prose:
.input(r%)
Income: %$12,000.00%27
Expenses: % 10,000.00%27
%^~~~~~~~~~~^%27
Net Income: %$ 2,000.00%27
______ ____ ______
Output from Prose:
Income: $12,000.00
Expenses: 10,000.00
__________
Net Income: $ 2,000.00
___ _________
Tab Character
T: Use the tab feature to line up columns of text, especially when
using proportionally spaced font cartridges. The number after
the tab character specifies the absolute column where the text
will start. A plus (+) or a minus (-) preceding the number
specifies the column relative to the current left margin. For
example, if the left margin is 10 and you specify a relative
tab of "+5," you will tab to column 15. You cannot tab to a
column that the output line is already past, whether you are
using absolute or relative tabs.
_____ __ ______
Input to Prose:
.input(t#)
Apples #17Red and delicious
Oranges #17Orange and juicy
Grapes #+17Purple and sweet
.mar(l+3)
Lemons #17Yellow and tangy
Limes #+17Green and zesty
Berries #+17Blue and tasty
_______ _ _____ ________ _ _____
94 Chapter 5 Prose Commands - Input
______ ____ ______
Output from Prose:
Apples Red and delicious
Oranges Orange and juicy
Grapes Purple and sweet
Lemons Yellow and tangy
Limes Green and zesty
Berries Blue and tasty
If you use the tab character without specifying a tab position,
and you haven't defined any tab stops via the Tab command,
Prose will default to "+1". This further simplifies making
bullet lists that have a hanging indent.
.mar(l+3).par(u3)
`*This is one way of making a bullet point
`*This is the second way, without the +1
.mar.par
_________ _________
Underline Character
U: Text surrounded by the underline character will be underlined.
Underlining continues across line boundaries, so that care must
be taken to ensure that each opening underline character has a
matching closing underline character. Blanks are not
underlined, but explicit blanks are.
_____ __ ______
Input to Prose:
~This@contains@an@explicit@blank@between@each@word.~
~The previous line will have each blank underlined, but this
sentence will leave a space between each underlined word.~
______ ____ ______
Output from Prose:
__________________________________________________
This contains an explicit blank between each word.
___ ________ ____ ____ ____ ____ _____ ___________ ___ ____
The previous line will have each blank underlined, but this
________ ____ _____ _ _____ _______ ____ __________ _____
sentence will leave a space between each underlined word.
_____ ______ _____
Input Record Width
W: The input width is used to specify how many characters will be
read from each input line. If your input lines have sequencing
information at the right of each line, you will need to set the
width to an appropriate value (e.g., .inp (w72) ); otherwise,
Prose will attempt to format the sequence numbers as part of
the text. The maximum input width for any input line is 256
characters.
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - Inx 95
___ _______ _______
Inx (Index) Command
The Inx command is used to tell Prose about entries for the index.
Each entry has four attributes: the text, the section name, the
current page number, and whether to print the page number.
__________ ____
INX ( parameters ) text
The page number is maintained automatically by Prose. There are
several forms of the Inx command. The first form does not include
any parameters:
.inx Margin command
This would save the text "Margin command" so that later it can be
printed by the Sortindex command. The page number associated with
this entry would also be printed. There would be no section name.
To include a section name in a page number, use the following form
of the command:
.inx('2-') Margin command
This would cause the entry to be printed out the same as before,
with the addition of the section name '2-' before the page number
(e.g. '2-1 Margin command' instead of '1 Margin command'). The
maximum length of the section name is 20 characters.
It is useful to have index entries that provide cross-references
to other index entries. To save the text without either a page
number or a section name, use this form of the command:
.inx(p-) database, see IMAGE database
The parameters are followed by the text of the index entry.
Leading spaces are ignored; use explicit blanks instead.
As the formatted text migrates from page to page, the resulting
index will always be correct (see the Sortindex command). An Inx
command may be inserted in the middle of a paragraph without
causing a justification break. The maximum number of index
entries in one document is 10,000.
_______ _ _____ ________ _ ____
96 Chapter 5 Prose Commands - Jump
____ _______
Jump Command
"Skips" a certain number of output lines, i.e., prints blank
lines.
______
JUMP number
(Default: skip 5 lines)
Jump is similar to the Skip command, but the Jump command
generates hard blank lines. That is, Jump will always print blank
lines, even at the top of a page. For example, if you want to
skip three lines at the top of a page, you can use
.page
.jump 3
We just skipped three lines at the top of the page.
So far, the Jump command has behaved as if you typed in the actual
number of blank lines. The difference between using Jump and
actual blank lines is that the Jump command is not affected by
.opt(b+) which makes blank lines behave like Skips. For example,
if the .opt(b+) option was in effect, the above example would
still print three blank lines at the top of the page, whereas
actually using three blank lines would not.
_______ _ _____ ________ _ _______
Chapter 5 Prose Commands - Literal 97
_______ _______
Literal Command
Prints the remainder of the line on the output file.
____
LITERAL text
The special processing for uppercase, lowercase, underlining, and
literal blanks is performed on the text of the parameter, and then
it is printed as a single output line. This output line is
printed independently of filling and justifying and page
formatting processes; it is transparent to the usual Prose
formatting and is not counted as an output line.
_____ __ ______
Input to Prose:
.break
word1
.lit <codes>
word2
______ ____ ______
Output from Prose:
<codes>
word1 word2
The Literal command can be used for producing special printer
control characters. Conceivably, this command could be used to
print "Escape" sequences on HP printing terminals (e.g., for bold
print, compressed print, alternate character sets, etc.). One
problem is that Prose looks for "special characters", such as the
hyphenation character, even in Literals. Therefore, you will have
to put the Prose Escape character in front of any special
character that would be grabbed by Prose. For example, if you
have defined "&" as the Escape character in Prose, you would need
to put another "&" in front of it to print the LaserJet command
ESC "&l8D" (which configures the LaserJet for 8 lines per inch).
_____
Note: For sending printer control codes, you should use the PCL
command instead of the Literal command.
_______ _ _____ ________ _ ______
98 Chapter 5 Prose Commands - Margin
______ _______
Margin Command
The Margin command sets and adjusts the left and right margins for
filling and justifying.
__________ ______
MARGIN ( parameters ) number
(Default: pop back to previous value)
The left margin is the number of leading spaces before the first
printed character, and the right margin is the column number of
the last printed character. Thus, subtracting the left margin
from the right margin gives the number of printed columns. The
parameters may be in any order, and consist of a key letter
followed by a value. The following table lists the parameters.
___ ______ _______ ____ _______ ________ _______
Key Letter Meaning Type Default Relative Allowed
K keep buffer number next no
L left margin number 0 yes
R right margin number 70 yes
___
If you do not specify a value, Prose does not change the current
value. The default value is the one that will be set if the key
letter is given by itself, and is also the value that is assigned
when Prose begins processing. The maximum right margin is column
150.
The keep parameter explicitly specifies which keep buffer should
be used to store the new margins. The default is to use the
numerically next buffer (i.e., stack the values). A subsequent
Margin command without parameters will pop back to the previous
values.
Usually it is best to use relative settings with the Margin
command (e.g., .mar(L+4)). By doing so, it is clearer to the
maintainer of the documentation exactly what indentation was
intended. Also, it becomes easy to change the margins for the
whole document by inserting one Margin command at the beginning of
the document (e.g., .mar(L+2 R-2)). This is very helpful to
document users outside of North America, where standard paper
sizes are different. If you use this idea, you will probably have
to change your Form also (if you use right-justified title fields
or alternating forms).
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Option 99
______ _______
Option Command
All of the miscellaneous options that affect the text formatting
process are gathered together in the Option command.
__________ ______
OPTION ( parameters ) number
(Default: pop back to previous value)
These options are summarized in the following table. For switch
options, "+" is on and "-" is off.
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
B blank line = .skip 1 switch -
E print error messages switch +
F fill output lines switch + no
J justification limit numeric 3 no
K keep buffer numeric next no
L left justify switch +
M multiple blanks switch +
P two blanks after periods switch +
R right justify switch +
S spacing numeric 1 no
U shift to uppercase switch -
If a specification is not given, its value is not changed. The
default value is the one that will be set if the key letter is
given by itself, and is also the value that is assigned when Prose
begins processing.
_____ _____ _____ ____ _____
Treat Blank Lines Like Skips
B: This option tells Prose to treat every blank line as a soft
blank line (i.e., like a .skip 1). This way, you can make a
file more readable by separating paragraphs with blank lines
without worrying about any blank lines appearing at the top of
a page. Once this option is in effect, you need to use the
Jump command if you want blank lines at the top of a page.
___________ ______
Suppressing Errors
E: Error messages are printed in the Perrfile file. If both the
Output and Perrfile files are the same (e.g., $Stdlist), the
error messages will be interspersed in the formatted text.
These may be entirely suppressed by setting the E option to
"E-".
To turn off the message "hyphenation needed", use the J OPTION.
___
It can be unwise to turn off all error messages, and usually
the hyphenation message is the only one that is really
undesirable.
_______ _ _____ ________ _ ______
100 Chapter 5 Prose Commands - Option
_______ _____
Filling Lines
F: Output lines are automatically filled and justified as
_______ __________ ________
described in the section Filling Paragraphs in the Applying
_____
Prose chapter . If the fill switch is turned off, Prose will
print the input lines as they are, without reformatting to fill
up the output lines. In effect, a justification break is done
after each input line.
_____________ _____
Justification Limit
J: In justifying the left and right margins of an output line,
Prose has to insert blanks that are not explicitly in the input
file. The justification limit controls the point at which
Prose will attempt to hyphenate a word. If, for instance, the
justification limit is three, then the hyphenation process will
be invoked when Prose inserts enough blanks to bring the number
between any adjacent words to three. If hyphenation is not
possible, or Prose is not able to bring the number of inserted
blanks below the limit, Prose writes an error message to the
file Perrfile. You should then insert hyphenation characters
at syllable breaks in the word indicated by Prose (see the
Input command, H character).
The "J" specification may be further qualified with the maximum
____
number of spaces to insert in any line. The form of this
specification is ".option(jn:m)". The value for "n" is the
same as described above. The value for "m" is the maximum
number of spaces to insert in any line. Using this
specification prevents a long word, at the end of a line with
many short words, from being shifted to the next line instead
of being hyphenated.
____ ______
Keep Buffer
K: The keep parameter explicitly specifies which keep buffer
should be used to store the new options. The default is to use
the numerically next buffer (i.e., stack the values); a
subsequent Option command without parameters will pop back to
the previous values.
____ ___ _____ _____
Left and Right Edges
L:
R: The left and right justify switches work together to determine
what kind of justification is done. If both switches are on,
output lines are justified to both the left and right margins.
If both switches are off, lines are centered between the two
margins. If one is on and one is off, the result is one
straight margin (either left or right) and one ragged margin.
The following demonstrates these four options.
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Option 101
.option(l+ r+ f+) : {left and right justify}
What about the release of MPE V? Delayed! MPE V is coded and
documented, but is still in the debugging phase. It has run 37
hours without a failure, but HP requires 120 hours. HP will not
ship MPE V until the quality is there, even if it puts their 1984
revenues at risk. Early 1984 is the earliest date for users to
get MPE V.
.option(l- r- f-) : {center text}
What about MPE IV plus disc caching as an interim step?
This is under consideration,
but it must pass the same quality tests.
.option(l+ r- f-) : {left justify only}
Can I change my order to a Series 64 and upgrade later?
Yes and HP encourages you to do that.
The Round Table claimed that you would not lose ANYTHING
by doing that,
not even your position on the Series 68 order queue.
.option(l- r+ f-) : {right justify only}
Why no disc caching on the Series III?
The Round Table claimed that the Series III does NOT
have adequate CPU power or memory
to benefit from disc caching.
______ ________ ______
Retain Multiple Blanks
M: If the multiple-blanks option is on, multiple blanks on the
input file are considered to be significant. That is, if there
are several blanks between two words on the input file, there
will be at least that many on the output file, but Prose may
add more blanks during the justification process. If the
switch is off, multiple blanks will be changed into a single
blank.
Instead of a switch, the "m" specification will accept a
_ _
numeric parameter such as ".option(Mn) where n is 0, 1, or 2.
_ ___
When n is 0, multiple blanks are not considered significant
_
(same as ".option(m-)"). When n is 1, multiple blanks are
_
significant (the same as ".option(m+)"). When n is 2, multiple
____
blanks are significant plus Prose assumes that there are two
spaces after a sentence that ends at the end of an input line.
The last option is useful for users who have ".option(p-)" and
who want to control the spacing after sentences by manual
insertion of spaces.
_______ _ _____ ________ _ ______
102 Chapter 5 Prose Commands - Option
___ ______ _____ ______
Two Blanks After Period
P: If the two-blanks-after-periods option is selected, Prose will
ensure that each period which is already followed by at least
one blank (or the end of the line) will be followed by at least
two blanks. Prose will not add blanks before justifying if
there are already two. This makes it easy to have sentences
separated by two blanks without requiring you to be extremely
careful when typing the original text. Use the explicit blank
character of the Input command to make exceptions. For
example, if the explicit blank character is the (@) character,
Mr.@Cliff will appear as Mr. Cliff, instead of Mr. Cliff.
_____________ _______
Double/Triple Spacing
S: By setting the spacing option, you can easily produce single,
double, or triple spaced output. Simply set the spacing option
to 1, 2, or 3. By setting the spacing option to 1+, one and a
half line spacing is invoked.
Note that this option does not affect physical blank lines,
Skips, or Jumps. For example, one blank line will not become
three blank lines if triple spacing is selected.
__________
Upshifting
U: Since some output devices are not able to handle mixed-case
files, you can make Prose shift all lowercase letters to
uppercase. The U option helps users of certain older OEM
printers that print all lowercase letters as spaces. This
option is also handy for printing large sections, such as
sample programs, all in uppercase. This option will not
upshift Roman-8 characters.
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Output 103
______ _______
Output Command
The Output command defines important aspects of the output device
that is the destination of the formatted text.
_____________ __________
OUTPUT ( terminal-type parameters )
The Output command may be used only once, and must appear before
any lines are printed on the output device or immediately
following the command ".reset ( output )".
The default Form is designed to work on a lineprinter with 60
lines. Both the Form and Output commands must be used to
configure the output correctly for a particular device.
________ _____
Terminal Types
Terminal-type may be one of the following (the default is ASC):
____
ASC. ASCII terminal, using carriage return for overprinting and
form feed (Control-L) for page eject. A teletype is called an ASC
terminal although the form feed will not cause a page eject;
instead, blank lines are used to advance to the top of the form.
If this is a problem, turn off the eject option (see below).
____
LPT. Line printer, using "+" for overprinting and "1" for page
eject. Carriage control is supplied automatically by Prose, and
so like any other terminal, column 1 is the first printing column.
When LPT is the output device, auto page eject is turned off.
____
RTF. RTF, or Rich Text Format output, creates output that is
meant for further processing by the Qhelp compiler. This should
be used in conjunction with the Q+ option, and the document to be
processed should follow Robelle documentation conventions.
____
LAS. HP LaserJet printer, using 1/720th of an inch increments for
justification. LAS must be used to take full advantage of the
Font command. The LAS may be followed by two numbers specifying
the number of dots in each column and in each row (there are 300
dots per inch). The first number is the number of dots in each
column; it defaults to 30 (i.e., one-tenth of an inch per column).
This number is used extensively by Prose. The second number is
the number of dots in each row; it defaults to 50 (i.e., one-sixth
of an inch per row). This number is used only by the Box command.
LaserJets can support half-line spacing, but line printers can't.
So in LPT and ASC output, all half-line spaces are ignored as soon
as they are encountered. This means that several consecutive half
lines will not be added together. For example, a one-and-a-half
_______ _ _____ ________ _ ______
104 Chapter 5 Prose Commands - Output
line space followed by a half-line space will still result in a
single line space.
______ __________
Output Parameters
The parameters define further characteristics of the output
device, and several global output options. The parameters may be
in any order, and are selected from the following table.
___ ______ _______ ____ _______
Key Letter Meaning Type Default
C number of copies (LaserJet only) numeric 1
E page eject at top of page switch +
("[" in Form description)
D duplex printing (LaserJet only) switch -
L Landscape mode switch -
P pause at top of page switch -
Q generate Qhelp-format output switch -
R record mode switch -
S shift output lines to the right numeric 0
U underlining is available switch +
______ __ ________ ______
Number of LaserJet Copies
C: If multiple copies of a document are required from a LaserJet,
specify them with this option.
______ ________
Duplex Printing
D: If your LaserJet can print on both sides of a page, use this
option to enable this feature.
___ ______ _____ _ _____
Can Device Eject a Page?
E: If the page eject option is selected, a form feed or
"Control-L" will be printed every time the "[" is encountered
in the Form specification.
________ _________ ____
LaserJet Landscape Mode
L: Landscape mode should be requested to print documents on a
laser printer horizontally across the page. The default is to
print in portrait mode (i.e., vertically on the page).
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Output 105
_____ ___ ____ ____
Pause for Each Page
P: If the pause option is selected, every time the "[" is
encountered in the Form specification, Prose will stop printing
and wait for some operator acknowledgment. On an ASC or AJ
terminal, Prose will sound the bell, and wait for a carriage
return to be entered. This option is handy for using an AJ
terminal with non-fan-fold paper, allowing you to roll paper in
for each page.
_____ ______ ______
Qhelp Output Format
Q: Normally, Prose ignores Qhelp control information in the input
file (e.g., Beginkey, Endkey commands). This produces a
"correct" manual on the line printer. When generating a Help
file for the Qhelp compiler, the Qhelp commands are passed to
the output file (Q+). Prose formatting commands are processed,
except that output is sent to a Form with no headings or
footings (a Form with an infinite number of lines). This file
is then used as input to the Qhelp compiler (see the Qhelp
subsystem user manual, in the QLIB contributed library, for
details).
______ _______
Slaved Printer
R: Record mode should be used when you have a printer attached
directly to your terminal. You must be using a terminal that
supports "Record Mode" (i.e., no 2624A terminals).
________ ______ _____
Shifting Output Right
S: All output that Prose produces can be shifted to the right by
any number of spaces up to 50. This makes it easy to center
the output on a wide printer page. ".Out (S4)" is often
appropriate for printing terminals.
___________ _________
Underlining Possible?
U: If the Output file does not have overprinting ability and your
input contains underline characters, the underlining-available
option should be turned off (e.g., .Out (U-)) to prevent Prose
from trying to generate overprinted underlines.
_______ _ _____ ________ _ ____
106 Chapter 5 Prose Commands - Page
____ _______
Page Command
The Page command causes a page eject under controlled boundary
conditions.
______
PAGE number
(Default: unconditional page eject)
A Page command with no parameters causes an unconditional page
eject if you are not at the top of the page.
.page
If you are already at the top of the page, this command has no
effect. To skip a page in this case, insert a blank line before
the Page command.
Including a number in the Page command causes a page eject if
there are fewer than the specified number of lines remaining on
the current page:
.page 5
In this example, the printing will start on the next page if there
are less than five available lines on the current page. If there
are more than five lines still available, this command has no
effect. You can signify a half-line by appending a "+" sign to
the number. Thus, the command ".page 5+" causes a page eject if
there are fewer than five and a half lines on the current page.
_
To create an automatic ".page n" for every new paragraph, use the
Paragraph command.
At a page boundary condition, Prose may spit out an unwelcome
blank page, suitably formatted with all of your titles, subtitles
and page numbers, but otherwise blank. This occurs when you have
enough lines of text to fill a page, and in addition you leave a
blank line at the end of the text. If you place an unconditional
_____
page break before the next block of text (i.e., after the blank
line), the leftover line from the previous page will be given a
page all to itself. The solution is to delete the line. An
alternative is to delete the unconditional page break and use a
conditional page break (e.g., .page 5) instead. You will retain
your blank line; it will print at the top of the page and will be
followed by your remaining text.
_______ _ _____ ________ _ _________
Chapter 5 Prose Commands - Paragraph 107
_________ _______
Paragraph Command
You can indicate a paragraph with any of the methods introduced in
________ _____
the chapter Applying Prose. The Paragraph command provides a
versatile method of creating paragraphs.
__________ ______
PARAGRAPH ( parameters ) number
(Default: pop back to previous values)
The Paragraph command specifies what Prose will do when you signal
a new paragraph by using a special character (called the paragraph
flag character) in the first column of an input line. You can
select automatic indent or undent, automatic numbering, automatic
line skip, and automatic check for page eject.
___ ______ _______ ____ _______ ________
Key Letter Meaning Type Default Relative
F paragraph character character null
I automatic indent number 0 no
J automatic jump number 0 no
K keep buffer number next no
N number generator none
P automatic page eject number 0 no
S automatic skip number 0 no
U automatic undent number 0 no
If a specification is not given, its value is not changed. The
default value is the one that will be set if the key letter is
given by itself, and is also the value that is assigned when Prose
begins processing.
_________ _________
Paragraph Character
F: The paragraph flag character is used to invoke a collection of
paragraphing actions by typing it in the first column of an
input line. Note that this character should be set in at least
one Paragraph command, or none of these actions will work.
_________ ______ __ ______
Automatic Indent or Undent
I:,
U: The automatic indent or automatic undent is applied to the
first line of the paragraph (see the Indent and the Undent
commands).
_______ _ _____ ________ _ _________
108 Chapter 5 Prose Commands - Paragraph
_________ _________
Automatic Numbering
N: If the number generator is specified, a new number (or letter)
will be generated for each occurrence of the paragraph flag
character. The number generator is initialized to 1 each time
new Paragraph settings go into effect, but resuming an old
setting will also resume the old numbering (this feature,
combined with the Margin command, allows easy generation of
outlines). The number replaces the paragraph flag character
when the line is formatted. The number generator parameter has
__
the form: Nfn.
_
f selects the numeric form:
-blank- no numbering
N or n arabic numerals
L uppercase letter
l lowercase letter
R uppercase roman
r lowercase roman
_
n is the field width, which will be expanded if needed.
_________ ____ _______
Automatic Page Command
P: The automatic page eject is used to simulate the effect of the
Page command,
______
.page number
before the first line of the paragraph. If this parameter is
set to 4, for instance, it will ensure that at least four lines
are left on the page. If there are fewer lines than specified,
a page eject is done. This is applied after the automatic
skip. You may specify "P4+" to check that at least four and a
half lines are left on the current page.
_________ _________ _______
Automatic Jump/Skip Command
J:,
S: The J specifies an automatic Jump, while the S specifies an
automatic Skip. A Skip will not print blank lines when at the
top of the page, while a Jump will print them. The automatic
jump/skip is done before the first line of the paragraph, and
functions the same way as if you typed the Skip or Jump
command. The Jump and Skip options are mutually exclusive.
Specifying one will override the other.
_______ _ _____ ________ _ _________
Chapter 5 Prose Commands - Paragraph 109
____ ______
Keep Buffer
K: The keep parameter explicitly specifies which keep buffer
should be used to store the new paragraph options. The default
is to use the numerically next buffer (i.e., stack the values);
a subsequent Paragraph command without parameters will pop back
to the previous values.
The Paragraph command provides flexibility and ease of maintenance
to documentation in Prose form. The most common use of the
Paragraph command is to produce a nicely formatted list of items.
The following example shows how to use the Paragraph command to
produce a list of items properly indented. The basic concept is
that the margin is set four columns to the right. Every new
paragraph is then shifted four characters to the left which makes
the beginning of each point stand out. At the same time the
letter designator of each point is automatically generated by
Prose.
_____ __ ______
Input to Prose:
.mar(L+4).Comment Shift margin to right 4 spaces
.inp(b@).Comment Define @ as explicit blank character
.par(f# u4 nL1 s1 p4).Comment # is signal.skip 1.undent 4
#.@@Many text formatters do not handle indented lists very
well. This example will show how easy it is with Prose.
#.@@When making out a list of points it is very awkward to
change the ordering of the points without major changes
to the original document.
#.@@Prose will maintain full justification so that
points do not have to be treated as a special case in a
document.
______ ____ ______
Output from Prose:
A. Many text formatters do not handle indented lists very
well. This example will show how easy it is with Prose.
B. When making out a list of points it is very awkward to
change the ordering of the points without major changes
to the original document.
C. Prose will maintain full justification so that points do
not have to be treated as a special case in a document.
_______ _ _____ ________ _ ___
110 Chapter 5 Prose Commands - PCL
___ _______
PCL Command
Prints the remainder of the line on the output file.
__________ _ ____
PCL ( parameters ) text
The PCL command is similar to the Literal command, but PCL is much
more useful for sending control codes to the printer. Before
sending out its text, PCL performs a Break and sends out any
preceding blank lines. While sending out its text, the special
processing of Prose Input characters are not performed. Instead,
PCL has its own special characters. After sending out its text,
PCL does not start a new line. The following example illustrates
this:
_____ __ ______
Input to Prose:
word1
.pcl <codes>
.pcl <code2>
word2
______ ____ ______
Output from Prose:
word1
<codes><code2>word2
You can have several consecutive PCL commands. Their output will
not have any new lines between them. The output from PCL is
transparent to the usual Prose formatting. If you move the
"cursor" with control codes (such as a carriage return, line feed,
backspace, tab, or formfeed), Prose will not know about it and the
remainder of your page may not get formatted as expected.
___ ______ _______ ____ _______
Key Letter Meaning Type Default
C control character character ^
E escape character character ~
L LaserJet only switch -
N new line after text switch -
S obey select switch +
For the C and E key letters, if you specify them without a value,
the value assigned is the null character. This in effect disables
the processing of the control or escape character. The S key
letter is only in effect for one command. The other values remain
set until they are changed by another PCL command.
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - PCL 111
_______ _________
Control Character
C: The control character is used to generate non-printing control
codes sometimes required in printer control sequences. The
ASCII control codes 0 through 31 are the most common. To
generate a control code, use the control character followed by
the numeric ASCII code of the control code you want. For
__
example, to generate a control-G (ASCII code 7), use ^7. You
can also generate the ASCII escape character this way (^27), or
you can use the more readable escape character instead.
Any non-numeric character that follows the control character
will be output as is. This way, the control character can be
used to send itself. For example, if you need to send the
sequence "escape, caret, control-c", you can either redefine
the control character for this one sequence, or use two carets
in a row.
.comment redefine control char as $, then restore...
.pcl(c$) ~^$3
.pcl(c^)
.comment ...or use two carets
.pcl ~^^^3
______ _________
Escape Character
E: Not to be confused with Prose's usual escape character defined
with the Input command, PCL's escape character is a substitute
for the ASCII escape character 27 (commonly known as escape).
Because the ASCII escape is used extensively in printer control
sequences, using PCL's escape character instead of ^27 can make
the printer sequence more readable.
For example, to generate the LaserJet sequence for 8 lines per
inch (escape, ampersand, small-L, 8, big-D), you can use either
one of the following:
.pcl ~&l8D
.pcl ^27&l8D
________ ____
LaserJet Only
L: If you are producing documents that must be printable on both
LaserJets and line printers, you will need to enable LaserJet
PCL commands only for LaserJet output. You can use the If
command to select your output device and select PCL commands.
Alternatively, you can use the L+ option to tell Prose to send
the PCL text only if the current output device is a LaserJet,
selected with the Out(las) command. If the current device is
not a LaserJet, the PCL text will not be sent to the output,
but the PCL options will still be processed.
_______ _ _____ ________ _ ___
112 Chapter 5 Prose Commands - PCL
.comment This PCL is ignored
.out(lpt)
.pcl(L+) ~&l8D
.comment This PCL is used
.out(las)
.pcl(L+) ~&l8D
___ ____
New Line
N: Use N+ if you want to start a new line after sending out the
PCL text. For printer control, you rarely need to have a new
line after the control codes. However, for some types of
terminal control, you do need to start a new line before the
terminal control takes effect. Using N+ instead of ^13^10 at
the end of the PCL text has the advantage of Prose knowing
about the new line that is sent.
_____ __ ______
Input to Prose:
text1
.pcl(N+) <New line after this>
text2
______ ____ ______
Output from Prose:
text1
<New line after this>
text2
____ ______
Obey Select
S: By default, PCL obeys the Select command and will not output
text if you are not on a selected page. However, if you are
using PCL to send printer setup codes, you need to send out the
PCL text regardless of the Select settings. In this case, use
S- in the PCL command. S- is only in effect for the PCL
command it appears in. The next PCL command will continue to
obey the Select command.
.sel(1 3)
.pcl <this appears on page 1>
.page
.pcl <this will not appear on page 2>
.pcl(s-) <this will appear on page 2>
.pcl <this will not appear on page 2>
.page
.pcl <this appears on page 3>
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Reset 113
_____ _______
Reset Command
The Reset command sets commands to their default values.
________
RESET ( commands )
or
________
RESET ( EXCEPT commands )
If you have changed the values of many commands (such as Form,
Margin, or Option), the single, default, command
.reset
resets the value of all commands to their defaults. Commands may
be reset selectively by using the second form of the command. For
example,
.reset(margin option)
only resets the Margin and Option commands. Commands may also be
excluded selectively. For example,
.reset(except form output)
resets all commands with the exception of Form and Output.
Parameters for Reset are selected from the following list of
command names.
Align Input Output Select
Count Inx Page Subtitle
Form Margin Paragraph Title
Headindex Option PCL
The values of parameters for most commands are set to their
defaults (which are listed with the description of each command)
with the exception of the keep parameters which are set to "K0".
For the Count, Inx, and Page commands, however, the action is
different. Resetting Count sets the page counter to 1, resetting
Inx deletes all index entries that have been accumulated, and
resetting Page causes a page eject. In addition, since resetting
Form or Output directly affects the printed result, resetting
either of these commands also causes a page eject.
_______ _ _____ ________ _ ______
114 Chapter 5 Prose Commands - Select
______ _______
Select Command
Prints specified pages of text.
__________
SELECT ( parameters )
(Default: select all pages)
When you revise documentation, you rarely change every page. You
can use the Select command to print out only certain pages for
you. The entire document will still be formatted, but only the
selected pages are printed. This does not reduce the central
processing time, but it can reduce the printing time!
___ ______ _______ ____ _______
Key Letter Meaning Type Default
n1 n2 pages n1 and n2
n1:n2 pages n1 to n2, inclusive
n1:+n2 page n1 and the next n2 pages
E even-numbered pages switch +
O odd-numbered pages switch +
P print pages switch +
To print individual pages, use page numbers separated by spaces.
To select a range of pages, use two numbers separated by a colon
( : ). The first number is the first page of the range, and the
second number is the last page of the range. The second number
may be specified relative to the first. The following example
selects pages 3, 5, 10 through 15, and 20 through 25 for printing.
.select(3 5 10:15 20:+5)
If you use .select(0) (i.e., zero), Prose will still process your
document, but it will not print any pages. This is useful if you
want Prose to check your document for hyphenation and formatting
errors.
______ ________
Duplex Printing
If you have a laser printer without a duplex option, you can still
print double-sided output by using the Select command. Print all
of the odd pages first, then feed these pages back into the
printer and print all of the even pages. To select all of the odd
pages, use O (i.e., the letter O) instead of a number in the
Select parameter. To select all of the even pages, use E in the
parameter.
.select(o) .com select all the odd pages
.select(e) .com select all the even pages
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Select 115
_____ _____
Print Pages
The P option is used to suppress the printing of selected pages,
as if they had not been selected. This is useful when you have
several sets of identically numbered pages, but you only want to
print one set. For example, you may want to print out a long
table of contents (e.g., pages 1 to 8), but you don't want to
print out pages 1 to 8 in the first part of the document.
A .select(p-) cause all pages to be temporarily unselected; i.e.,
no pages will be printed after this command. A .select(p+) will
restore the page selection so that the originally selected pages
can be printed. The .sel(p) commands can only be used when you
are at the top of a page. That is, before anything has been
printed, or after a .page command.
The following example shows you how to print the eight pages of
the table of contents without printing the preceding pages.
.sel(1:8).com Select pages 1 to 8 to print
.sel(p-) Don't print yet the text on pages 1 to 8
.page
.count 1
.com Now print page 1 to 8 of the table of contents
.select(p+).com Choose pages 1 to 8
.contents(p+).com Print the table of contents
_______ _ _____ ________ _ ____
116 Chapter 5 Prose Commands - Skip
____ _______
Skip Command
Skips a certain number of output lines, i.e., prints blank lines.
______
SKIP number
(Default: skip 5 lines)
The Skip command generates soft blank lines. That is, Skip will
never print blank lines at the top of a page. To skip lines at
the top of a page, at least one actual blank line must precede the
Skip command. For example, if you want to skip three lines at the
top of a page, then you need to have a blank line, followed by a
.skip 2.
.page
.skip 2
We just skipped three lines at the top of the page.
Alternatively, you can use the Jump command to skip lines.
See the Paragraph command for a way to do an automatic skip before
each paragraph. The command .skip 4+ will skip four and a half
lines.
_______ _ _____ ________ _ _________
Chapter 5 Prose Commands - Sortindex 117
_________ _______
Sortindex Command
Causes the currently accumulated Inx entries to be sorted and
printed. Sortindex normally appears near the end of your
document.
__________
SORTINDEX ( parameters )
The index entries that are accumulated by Inx commands can be
sorted either alphabetically or by page number (useful for
generating a table of contents; see the R option below) and then
printed in a flexible manner. The Sortindex command allows you to
specify how many leading blanks to print at the left of each index
line, where to insert the page number in each line, and how to
______
format the page number. The index cannot be formatted into
multiple columns.
The parameters may appear in any order, and are selected from the
following:
___ ______ _______ _______
Key Letter Default Meaning
C - combine entries with the same name
F blank fill character (used between the index
entry and the page number)
L 2 left width of page number (field width
for number)
M 0 margin (left margin before index line)
P 0 column (in index entry) to insert page
number
R 2 right width of page number (blanks
printed after)
S 1 sorting option (see below)
In the absence of parameters, the defaults are used. When the
page number is shorter than the field width (parameter L, above),
it will be right-justified within the field (i.e., padded with
leading blanks). When the page number is longer than the field
width, Prose prints the page number without any extra leading
blanks. If the S option is numeric, the number is the first
significant column for alphabetic sorting (in almost all cases,
the default of 1 is appropriate). If it is the letter "P", Prose
selects sorting by page number.
When printing an index, other Prose commands are used to start the
index on a new page (if desired) and to print a suitable title for
the index. When Sortindex is encountered, the index entries (see
the Inx command) are sorted and printed one per line; each new
index line is added to the current form just as if it were a
regular line of text. As a result, index entries may contain
explicit blank characters and underline characters. If the index
listing overflows a page, the current Form definition is used for
the bottom and top of the page.
_______ _ _____ ________ _ _________
118 Chapter 5 Prose Commands - Sortindex
The Sortindex command for this manual is
.sortindex (c+ f. m11 p53 l0 r0)
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Style 119
_____ _______
Style Command
The Style command provides an alternative method for specifying
formatting information. It defines styles and also switches
between styles.
__________ _____ ____
STYLE ( parameters ) style name
The parameters can be in any order, and consist of a key letter
followed by a value. The following table summarizes the
parameters.
___ ______ _______ ____ _______
Key Letter Meaning Type Default
F font style number 0
K keep buffer number next
M margin style number 0
P paragraph style number 0
O option style number 0
S save keep buffer switch +
____________ __ ______
Introduction to Styles
____ _____ ______
The Style command uses the concept of tags and style sheets. A
tag is a name for a particular structural element of your document
such as "title", "heading", "example", and "body". A style sheet
is the definition of a tag in terms of formatting commands such as
font, margin, and paragraph settings.
By using tags and style sheets, you can place most of the Prose
formatting details into one place in your document, usually the
beginning. By alternating style names, you can automatically
change the format of specific parts of your document. Tags also
help you to maintain a document by clearly identifying the parts
of a document. However, using tags and styles involves more
initial planning.
____ _____
Font Style
F: Specifies which font corresponds to this style.
____ ______
Keep Buffer
K: Specifies which keep buffer should be used to store the new
style settings. The default is the numerically next buffer.
We recommend that you do not specify explicit keep buffer
numbers when defining styles. Instead, give each style a name,
such as body, heading, etc.
_______ _ _____ ________ _ _____
120 Chapter 5 Prose Commands - Style
______ _____
Margin Style
M: Specifies which margin keep buffer to use for this style.
______ _____
Option Style
O: Specifies which option keep buffer to use for this style.
_________ _____
Paragraph Style
P: Specifies which paragraph keep buffer to use for this style.
____ ____ _______
Save Keep Buffers
S: Saves the latest margin, option, and paragraph keep buffers.
This parameter ensures that you can't accidentally overwrite
any of the keep buffers defined to this point, and that you
will use only the keep buffers after this point the next time
you use a margin, option, or Paragraph command without a
specific keep buffer. This allows you to use Prose's regular
keep buffer stacks as well as the Style command to switch to
specific format settings.
You must follow two steps to use this Save parameter correctly.
First, define the default margin, option, and paragraph
settings after you have defined the keep buffers for use with
your styles. These format settings are usually the same as
those used for your body text. When you define these settings,
do not include a specific keep buffer. Second, use this
command by itself (i.e., without other style specifications)
after you define your format settings.
.mar(k1 l15 r65)
.mar(k2 l0 r65)
.mar(l15 r65) .com default margin
.par(k1 f` u0 s0)
.par(k2 f` u0 s1)
.par(f` u0 s0) .com default paragraph
.opt(k1 l+ r+ f+)
.opt(k2 l+ r- f-)
.opt(k3 l- r- f-)
.opt(l+ r+ f+) .com default option
.style(s+) .com save keep buffers
_____________ ____ ____ _______
See Compatibility with Keep Buffers in this section for more
information.
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Style 121
________ ______
Creating Styles
First, identify all the different structures in your document that
you want to include in your style definitions. Use the names of
these structures as the tag names. Common structures in a
document include title, chapter, section, heading, subheading,
body, example, and bullet. In our example, we will use three
tags: body, title, and heading.
Then, define the fonts, margins, paragraphs, and options used by
the tags. Think of this as a list of all the different format
settings that you will need. In our example, Body uses font 0
(Times Roman 10pt), is justified, and is indented 15 spaces;
Heading uses font 1 (Bold) and is not indented; and Title use font
3 (Helvetica 14pt) and is centered. You create this "list" by
using explicit keep buffers in the margin, paragraph, and Option
commands. If you use our font include files, then fonts have
already been "listed" for you.
.mar(k1 l15 r65) .com margin for body
.mar(k2 l0 r65) .com margin for heading, title
.par(k1 f` u0 s0) .com paragraph for body
.par(k2 f` u0 s1) .com paragraph for heading, title
.opt(k1 l+ r+ f+) .com option for body
.opt(k2 l+ r- f-) .com option for heading
.opt(k3 l- r- f-) .com option for title
Finally, you can define the styles using your pre-defined list of
format settings. A style is really a collection of other Prose
keep buffers that affect formatting: font, margin, paragraph, and
option. You also specify the name of the style (i.e., the tag
name). The name can be up to 16 characters long.
.style(f0 m1 o1 p1) body
.style(f3 m2 o3 p2) title
.style(f1 m2 o2 p2) heading
The margin settings that are stored in keep buffer 1 are referred
to as m1 when used to define styles; those stored in keep buffer 2
are referred to as m2, etc. The format settings stored in the
option and paragraph keep buffers are also referred to in a
similar manner (e.g., o1, o2, p1, p2, etc.)
Note that when you create a style, you do not automatically switch
into that style.
_____ ______
Using Styles
To switch to a style, just specify the Style command followed by
the name of the style. Once you switch to a style, you remain in
that style until you switch to another style.
_______ _ _____ ________ _ _____
122 Chapter 5 Prose Commands - Style
.style title
`Style Command
.style heading
`Introduction
.style body
This is a description of the Style command.
Unlike other Prose keep buffers, you can have up to 40 style
buffers (other keep buffers have up to 10). When you are using
styles, the styles are not stacked. That is, if you use the Style
command with no style specified, Prose will return to the previous
style used.
.style body
This is in the style body.
.style heading
`Heading
.style
Back to the style body.
_____________ ____ ____ _______
Compatibility with Keep Buffers
Even if you are using styles, there are times when you may need to
use a certain format that hasn't been previously defined in your
style settings. You can define a new style for this format, or
you can use Prose's keep buffer stacks to temporarily change the
format. Because the Style command also uses keep buffers to store
style information, you will want to ensure that you can't
accidentally overwrite the keep buffers stored in your style
settings when using the stacking keep buffers. Following these
two steps will allow you to use keep buffer stacks to format,
without affecting the parameters stored in the keep buffers used
in defining your styles.
1. After defining a set of keep buffers for a command (e.g., mar),
define the default parameters for that command. These default
parameters are usually identical to those used for the main
body text.
2. Use a .style(s+) after all the keep buffers have been defined.
This will allow you to use keep buffer stacks and Style
commands to switch to specific format settings.
The following example shows a style file that is compatible with
the Robelle template files which use keep buffers for formatting.
A copy of this is in the file Styles.Qlibdata.Robelle. The lines
that show the default keep buffers and the Save parameter are
marked with a ".com ***". Note that the parameters stored in the
keep buffers numbered 0 are common to all the keep buffers (for
that particular command), unless otherwise specified.
_______ _ _____ ________ _ _____
Chapter 5 Prose Commands - Style 123
.inp(k0 u~ b@ h\ e& f| t#)
.if outhelpcomp
. mar(k0 l0 r78)
.endif
. mar(k0 l0 r65)
.endif
.par(k0 f`)
.opt(k0 j4 p+)
.com
.inp(k1 u~ b@ h\ e& f| t#).com *** Robelle default
.com
.mar(k1 l0) .com body
.mar(k2 l0) .com heading
.mar(k3 l3) .com bullet
.if outhelpcomp
. mar(l0 r78) .com *** default for Robelle
.else
. mar(l0 r65) .com *** default for Robelle
.endif
.com
.par(k1 p5 u3 s1) .com body
.par(k2 p7 u0 s1) .com heading
.par(k3 p5 u3 s1) .com bullet
.par(k4 p5 u3 s0) .com tight bullets
.par(k5 p5 u3 s1 nn1) .com numbered bullets
.par(f` p5 u3 s1 n ) .com *** default for Robelle
.com
.opt(k1 l+ r+ f+) .com justified, filled
.opt(k2 l+ r- f+) .com unjustified, filled
.opt(k3 l+ r- f-) .com left just, no fill
.opt(k4 l- r- f-) .com center, no fill
.opt(k5 l- r+ f-) .com right just, no fill
.opt(l+ r+ f+ j4 p+) .com *** default for Robelle
.com
.style(s+) .com *** allow keep buffer stacking
.com
.style(f0 m1 p1 o1) body .com body
.style(f3 m2 p2 o4) head1 .com centered helv
.style(f3 m2 p2 o3) head2 .com helv heading
.style(f1 m2 p2 o3) head3 .com bold heading
.style(f2 m2 p2 o3) head4 .com italic heading
.style(f0 m3 p4 o1) bullet1 .com tight bullets
.style(f0 m3 p3 o1) bullet2 .com bullets
.style(f0 m3 p5 o1) bullet3 .com numbered bullets
.style(f5 p1 o3) example .com examples
.style(f0 m1 p1 o5) address .com right-justified
.style(f0 m1 p1 o2) body2 .com unfilled body
.com
.style(o1) justified .com common justifications
.style(o2) ragged
.style(o3) left
.style(o4) center
.style(o5) right
_______ _ _____ ________ _ ________
124 Chapter 5 Prose Commands - Subtitle
________ _______
Subtitle Command
Enters the remainder of the command line into the subtitle buffer.
____
SUBTITLE text
The Form command uses the contents of the subtitle buffer as one
of the two variable running heads; the other is the Title buffer.
.sub Output Command
The Subtitle text may contain underline characters and font
switches.
_______ _ _____ ________ _ ___
Chapter 5 Prose Commands - Tab 125
___ _______
Tab Command
Defines tab stops.
__________
TAB ( parameters )
(Default: clear all tabs)
_________ _______
Parameter Meaning
_ _
n tab at absolute column n
__ _
+n tab at relative column n
To define tabs, enter the list of tabs, separated by spaces. The
tab positions can be absolute or relative.
To create a table without using the Tab command, you need to put
the tab stop values in every line.
#5Item #15Description
#5apples #15red and delicious
#5oranges #15orange and juicy
#5grapes #15purple and sweet
With the Tab command, you define the tab stops once and use only
the Prose tab character in your text.
.tab(5 15)
#Item #Description
#apples #red and delicious
#oranges #orange and juicy
#grapes #purple and sweet
.tab
Note the .tab at the end of the table. You should reset your tabs
at the end of each table so that subsequent use of the tab
character in bullet lists and hanging indents will be properly
formatted.
_______ _ _____ ________ _ _____
126 Chapter 5 Prose Commands - Title
_____ _______
Title Command
Enters the remainder of the command line into the main title
buffer.
____
TITLE text
The Form command uses the title buffer to complete one of the two
variable running heads; the other is the Subtitle buffer.
.title Prose User Manual
The Title text may contain underline characters and font switches.
_______ _ _____ ________ _ ______
Chapter 5 Prose Commands - Undent 127
______ _______
Undent Command
Undents the following line a certain number of spaces.
______
UNDENT number
(Default: undent to leftmost printable column)
The undent is sometimes known by the name "outdent" or "hanging
indent". A line can never be undented past the leftmost column of
the printer page, and so a large number is adjusted to a smaller
value. Undent is normally used in combination with a left margin
that is shifted right several spaces; the first line of each point
or paragraph is shifted left to make it stand out from the rest of
___ __ ___ ______
the lines. See the section How to Use Undent in the chapter
________ _____
Applying Prose for an example of using this feature. See also the
Paragraph command for a way to do an automatic Undent on the first
line of every paragraph.
128
________ _ _ _____ ______
Appendix A - Prose Errors
We provide some User Defined Commands. You will find a
_________ _____
description of them in the Accessing Prose chapter. When you use
the Prose UDC to print your document, any error messages will be
displayed on $Stdlist after Prose finishes formatting your file.
The PDISC UDC, which sends your Prose output to a disc file,
creates an error file to hold any error messages. To examine your
error messages, use Qedit to list the Perrfile. All Prose errors
are prefixed with "-----".
/lq plist {view document without line numbers}
/lq perrfile {view error file}
Prose processes errors in the input file by first printing the
line number and the input line where Prose found the error. For
errors in Prose commands, the command name and the reason for the
error are printed. For example, the following Margin command is
missing the closing parenthesis:
.mar(l+3
______ ____ ______
Output from Prose:
----- 45.100 .mar(l+3
-----MARGIN ERROR: MISSING )
_______ ______
Numeric Errors
Many commands expect numeric parameters. When Prose finds an
invalid number, it uses a slightly different scheme for error
reporting. If you tried to indent a hundred columns, Prose would
print the following error message:
.indent 100
______ ____ ______
Output from Prose:
----- 45.100 .indent 100
-----INDENT ERROR: NUMBER WIDTH OF 100 IS TOO LARGE, 65 USED
____ ______
Form Errors
When the Form command is entered, Prose does no error checking.
Forms are interpreted as each line of text is written to the
output file. Errors in forms are printed as they are encountered
in the process of printing lines. The input line where the error
occurred is not printed. For example, the following Form command
is missing the number of lines:
________ _ _ _____ ______
Appendix A - Prose Errors 129
.for([ // 55 //])
______ ____ ______
Output from Prose:
-----FORM ERROR: 5
-----FORM ERROR: 5
-----FORM ERROR: NO "L" FOUND
___________ ______
Hyphenation Errors
This is probably the most common error. Prose looks for
"hyphenation" points when it needs to insert too many spaces in a
line. If you have not specified hyphenation points where Prose
can break the word at the end of the line, Prose prints an error
message. See the J parameter of the Option command for
information on how you can control the justification and
hyphenation process. You will also find a section on hyphenating
________ _____
words in the chapter Applying Prose.
To check for hyphenation errors in a document that you have
formatted to a disc file, do the following:
:run qedit.pub.robelle
/set udc udc.catalog.robelle
____________
/:pdisc yourfile.doc
/lq perrfile
----- 986 measurement devices to use.
----- ERROR: HYPHENATION NEEDED: measurement
-----1287 Unfortunately, you may wish to have finer
----- ERROR: HYPHENATION NEEDED: Unfortunately,
PROSE ERRORS DETECTED.
_____ ________
Stack Overflow
Prose maintains a stack of the most common commands (e.g., Option
and Margin). Prose saves your commands until you remove a command
by specifying it with no parameters. For example,
.mar(l+4).comment Save .mar(l+4)
.mar .comment Removes .mar(l+4)
Users sometimes change margins by doing the following:
.mar(l+4)
.mar(l-4)
.mar(l+4)
.mar(l-4)
________ _ _ _____ ______
130 Appendix A - Prose Errors
Each of these Margin commands is saved. The Margin command stack
has room for ten entries (numbered from zero to nine). If you
continued using these Margin commands, you would soon get the
following error:
----- 45.910 .mar(l-4)
-----MARGIN ERROR: KEEP OF 10 IS TOO LARGE, 9 USED
__________ __ _____ _ _______
Forgetting to Reset a Command
A common Prose error is to forget to enter the closing Margin
command (the one that resets the margin). For example,
.mar(l+3)
These lines should be indented three columns. What happens if we
forget the closing Margin command?
.comment We should have done a .margin here
We intended this paragraph to be back at the left margin, but
instead it will remain indented three spaces.
______ ____ ______
Output from Prose:
These lines should be indented three columns. What happens if
we forget the closing Margin command?
We intended this paragraph to be back at the left margin, but
instead it will remain indented three spaces.
131
________ _ _ ____ _______
Appendix B - Keep Buffers
There are four settings, Input, Margin, Option, and Paragraph,
that are likely to be changed frequently throughout the text.
But, there may actually only be a small number of different
settings, and it will be convenient to be able to resume old
settings. To accommodate these needs, Prose provides a stack of
"keep" buffers for each of these four commands.
When setting the options controlled by these commands, the
following syntax is used,
__________
.COMMAND ( parameters )
where the parameters consist of a key letter followed by option
settings. For instance:
.margin(l+5 r-5)
moves the left and right margins in 5 spaces (relative to their
previous position). Each time an Input, Margin, Output or
Paragraph command is processed, Prose saves the new values in a
keep buffer. There are ten keep buffers, numbered 0 through 9,
associated with each of these commands. By default, Prose saves
the new values in the numerically next buffer (0,1,2,...,9).
.margin(L8 R63).Comment goes into buffer 0
.margin(L+2).Comment goes into buffer 1
If no parameter is specified in a command (e.g., .Margin ), Prose
___ ______ __ ___ ___________
sets the values to those that are stored in the numerically
________ ____ ______
previous keep buffer. Since the keep number is automatically
incremented when the parenthesis form is used and automatically
decremented when no parameter is given, the keep buffers can be
considered as a "stack" (push and pop). For example, suppose you
are using "^" as the underline character (e.g., .inp (u^) ) to
_________
cause ^underline^ to print as underline, but you need to print a
"^" in one paragraph of your document. Here is what you do, using
the stack built into the Input command:
.input (u^).COM Establish your initial underline character
____ ____
... some text using ^ to underline ...
.input (u+).COM Switch to + as your new underline character
____ ____
... some text containing ^ as a printable character and
___________ __ ______
using "plus sign" if underlining is needed!
.input.COM Reset context to original underline character.
In this example, the last Input command (the one with no
parameters), resets to the previous input values (e.g., back to
.input (u^) ).
It is also possible to specify explicitly which keep buffer buffer
________ _ _ ____ _______
132 Appendix B - Keep Buffers
to save the new values in, and these values can be recalled later:
.margin(l15 r30 k3).Comment Saved in buffer 3
Old values may be recalled by using the following form:
______
.COMMAND buffer
For example,
.margin 3
sets the margins to the values that were stored in keep buffer 3.
The explicit buffer method allows you to store the most frequently
used options in specific keep buffers and invoke them by number as
necessary. For example:
.opt(l+ r+ f+ k0).Comment Format and justify
.opt(l- r- f- k1).Comment Centering
...
.opt 0.Comment Select formatting mode
...
.opt 1.Comment Select centering mode
Of course, since keep buffers constitute a stack, if you do an
extra "pop" by mistake, you will return Prose immediately to a
previous setting:
.margin (l+5 r-5)
.margin.Comment Pops last values
.margin.Comment Resets to old settings, perhaps pages back!
This can lead to strange results in your formatted output. It is
a good policy with Prose to keep track of what you have pushed
onto your "stack" for each command.
133
________ _ _ ______ ______ _____
Appendix C - Limits Within Prose
The current implementation of Prose uses an auxiliary file to
store index and table of contents entries, as well as the run-time
stack that stores all other variables. Several Prose data
structures consist of a fixed size buffer. Users should be aware
of these limits before attempting to use Prose with very large
documents.
_______ _______ _____ ______ _ ___ __________
Maximum Content Entry Length - 100 Characters
The first 100 characters of a table of contents entry are saved.
Entries longer than 100 characters are truncated without any
warning message.
_______ ____ ______ ________ _ __ __________
Maximum Font Escape Sequence - 40 Characters
The maximum length of a font escape sequence in the Font command
is 40 characters.
_______ ____ ______ _ ___ __________
Maximum Form Length - 250 Characters
The maximum length of a Form command is 250 characters. This
includes blank spaces in the Form command.
_______ __ _____ _ __
Maximum If Depth - 16
Ifs can be nested to 16 levels in each file.
_______ _______ _____ _ _
Maximum Include Files - 4
Include files can be nested to four levels.
_______ _____ _____ ______ _ __ __________
Maximum Index Entry Length - 70 Characters
The first 70 characters of an index entry are saved. Index
entries longer than 70 characters are truncated without any
warning message.
_______ _____ ____ _ ___ __________
Maximum Input Line - 256 Characters
Qedit users can use a file with `Language=TEXT', but the length
should be set to 256 characters (i.e., /set length 256). All
Robelle manuals are produced with `Language=JOB' which restricts
each input line to 80 characters.
________ _ _ ______ ______ _____
134 Appendix C - Limits Within Prose
_______ ______ _ ______ ___
Maximum Margin - Column 152
Because space is at a premium within Prose, the output line is
restricted to 152 columns. This will restrict some users who wish
to produce wide documents in Landscape mode on the LaserJet.
_______ ____ ______ _ ___
Maximum Page Number - 999
The maximum page number is 999, but you can use the Count command
to reset the page number to one. The Select command will only
work with page numbers between 1 and 999.
_______ _______ ____ ______ _ __ __________
Maximum Section Name Length - 20 Characters
The maximum length of a section name in an Entry and Inx command
is 20 characters. Section names longer than 20 characters are
truncated without any warning messages.
_______ _____ _ __ _______
Maximum Shift - 50 Columns
50 is the maximum value that can be specified with the S option of
the Output command.
_______ ______ _ __
Maximum Styles - 40
The maximum number of styles is 40.
_______ _____ ____ ______ _ __ __________
Maximum Style Name Length - 16 Characters
The maximum length of a style name is 16 characters. Style names
longer than 16 characters are truncated without any warning
messages.
135
_____
Index
$Stdinx file.......................4
$Stdlist output....................5
_
A
abbreviating commands..............53
accessing Prose....................4
Align command......................33,58
And operator.......................86
arabic page numbers................79
Ascii escape.......................111
automatic indent...................107
automatic page eject...............103,108
automatic skip.....................108
automatic undent...................107
_
B
Beginkey command...................105
Bin command........................59
bin selection in Form..............79,81
blank character, defined...........29,90
blank lines........................11,12,96,116
blank lines at top of page.........12,96,99
bottom of page.....................80
Box command........................61
Break command......................11,66
bullet lists.......................94
business letters...................20
_
C
carriage control...................103
centering lines....................13
changing default include file......88
charts.............................14
Check command......................37,67
checking for end of page...........106
checking keep buffers..............67
command character..................53,90,91
commands...........................9,53,56
commands, several per line.........54
Comment command....................18,70
compatibility with keep buffers....122
conditional logic..................86
configuring LaserJet II............39
content entries, maximum length....133
contents...........................72,117
_____
136 Index
Contents command...................71
continuation lines.................54
control codes......................111
copies, number of..................38,104
Count command......................33,72,113
creating styles....................121
_
D
date...............................79
default format.....................100
default include file location......88
dimensions in Prose................44
disc file..........................7
dots per inch......................44
double spacing.....................102
duplex printing....................19,39,104
_
E
Else command.......................86
Elseif command.....................86
end of sentence....................102
Endif command......................86
Endkey command.....................105
Entry command......................36,73
environment variables..............2,19,86
error file.........................7
error messages.....................4,99
error processing...................128
errors in hyphenation..............129
errors in the Form command.........128
errors with keep buffers...........129
errors with numbers................128
escape character...................30,90,91
explicit blank.....................29,90
explicit blank character...........90
extra blank pages..................5
_
F
F92286A font cartridge.............39,76
F92286B font cartridge.............46,77
F92286C font cartridge.............77
F92286D font cartridge.............77
F92286E font cartridge.............77
F92286F font cartridge.............46,77
F92286G font cartridge.............77
F92286IC font cartridge............77
F92286L font cartridge.............39,77
F92286L2 font cartridge............40,43
_____
Index 137
F92286N font cartridge.............77
F92286Z font cartridge.............77
F92290S2 font cartridge............77
FGLOBAL font cartridge.............77
field width for page number........71,117
filenames, dividing................92
files..............................4
filling............................10,99,100
first page of section..............33,58
font character.....................39,90,91
Font command.......................40,75
font description...................39,46
font escape sequence, length.......133
font files.........................19
fonts, changing....................40
fonts, proportional................44
fonts, soft........................78
Form command.......................32,55,79
Form command, maximum size.........133
formatting environment.............55
forms for the LaserJet.............42
FPCTR10 font cartridge.............77
_
H
half spacing.......................41,79,102,103,108,116
hanging indent.....................27,32,127
hanging indents....................94
hanging terminal...................5
hard blank line....................12,96
hard space.........................29,90
Headindex command..................35,83
HP printing terminals..............97
hyphenation........................30,99,100,129
hyphenation character..............90,92,100
_
I
If command.........................86
If, maximum nesting................133
Include command....................19,88
include file defaults..............88
include files, maximum nesting.....133
Indent command.....................89
indenting..........................11,89,107,127
Index command......................34,95
index entries......................95
index entries, maximum length......133
index headings.....................35,83
index, justifying page numbers in..117
indexing documents.................34,117
Infile file........................4
_____
138 Index
infinite form......................80
info=..............................8
Input command......................28,55,90
Input file.........................4
input line number..................79,82
input width........................94
input width, maximum...............94,133
installation.......................8
International Collection fonts.....77
introduction.......................1
Inx command........................34,95,113
_
J
Jump command.......................96,108
justification break................11,56,66
justification limit................99,100
justify............................10,100
justifying page numbers............71,81,117
_
K
keep buffers.......................56,67,131
keep buffers and styles............122
keep of 10 is too large............129
_
L
landscape mode.....................42,104
LaserJet...........................38
LaserJet bins......................59
LaserJet boxes.....................61
LaserJet II built-in fonts.........78
LaserJet II front panel............39
LaserJet III built-in fonts........78
LaserJet only PCL..................111
LaserJet output....................5,19,103
left justify.......................99
letter numbering...................108
letters as count...................79
Letters.Qlibdata.Robelle...........20
limits within Prose................133
line number, input.................79,82
line printer output................41,50,103
lists..............................109
Literal command....................97
literal headings...................79
logical expression.................86
LPT output.........................19
_____
Index 139
_
M
Margin command.....................11,20,55,98
margins, maximum...................134
margins, relative..................131
maximum content length.............133
maximum font escape sequence.......133
maximum form length................133
maximum include files..............133
maximum index length...............133
maximum input width................133
maximum nested Ifs.................133
maximum number of styles...........134
maximum output shift...............134
maximum page number................134
maximum right margin...............134
maximum section name length........134
maximum sizes......................133
maximum style name length..........134
Microsoft font cartridge...........77
minus sign character...............55
MPE/iX installation................8
multi-column output................117
multiple blanks option.............99,101
_
N
nested Ifs.........................86
new features.......................2
new line after PCL.................112
new section........................33,58
Not operator.......................86
number generator...................108
number of copies...................104
numbered lists.....................109
numbered paragraphs................108
numeric parameters.................55
_
O
on-line help.......................1
Option command.....................13,55,99
Or operator........................86
outdent............................127
Output command.....................55,103
output device......................18,20
output devices.....................4
Output file........................4
output shift, maximum value........134
output to a specific device........5
OutSavePaper variable..............5
_____
140 Index
_
P
Page command.......................33,106,108,113
page ejects........................58,104,106,108
page format........................32,79
page number........................79,81
page number field widths...........71,117
page number, largest value.........134
page number, start new.............72
page numbers, removing.............33
paper trays........................59
paragraph character................11,107
Paragraph command..................26,55,106,107
paragraphs.........................10,11,48
parameter types....................54
parameters.........................131
Pascal/Robelle.....................4
pause option.......................4,105
pausing............................104
PCL and Select command.............112
PCL command........................110
PCL control character..............111
PCL escape character...............111
Pdisc UDC..........................7
period character...................29,53,102
Perrfile error file................4,7,99
plus sign character................55
print selected pages...............114
printer attached to terminals......19,105
printing the last page.............6
Pro-collection font cartridge......77
proportional fonts.................44
Prose template variables...........20
Prosecm.Qlib.Robelle...............8
proseincludepath variable..........88
Prosenm.Qlib.Robelle...............8
_
Q
Qedit program......................4
Qhelp compiler.....................103
Qhelp output.......................19
Qhelp subsystem....................105
_
R
ragged right margins...............13
record mode........................19,38,105
relational operators...............86
relative margins...................131
relative numeric parameters........55
relative tabs......................31,32,93
_____
Index 141
Reset command......................113
resolution on LaserJet.............51
Rich Text Format output............75,103
right-justifying lines.............14,99
right-justifying titles............81
right-tab character................90,93
roman numerals.....................108
roman numerals as count............79
RTF output.........................75,103
running heads......................124,126
running Prose......................4
_
S
S33412AC soft fonts................78
section names......................34,36,73,95
section names, maximum length......134
Select command.....................114
shift output right.................38,104,105
single spacing.....................102
Skip command.......................108,116
skipping a page....................58,106
skipping lines.....................96,116
soft blank line....................12,116
soft fonts.........................78
Sortindex command..................34,117
spacing option.....................99
special characters.................28
special characters, how to print...30
stack..............................131,132
start new page number..............72
Style and Check....................69
Style command......................119
style names, maximum length........134
style sheet........................119
style, maximum number..............134
styles.............................25
Styles.Qlibdata.Robelle............25,122
Subtitle command...................42,80,124
subtitles..........................79,124
_
T
tab character......................30,90,93
Tab command........................31,125
tabbing............................47
table of contents..................36,71,73
tables.............................14
tags...............................119
TDP program........................11
teletype...........................103
template files.....................20
_____
142 Index
templates..........................15
terminal output....................103
time...............................79
Title command......................42,80,126
title page.........................33,72
titles.............................79,126
titles, right-justified............81
top of page........................80,104
triple spacing.....................102
two blanks after period............99,102
_
U
UDC for Prose......................7
Undent command.....................127
undenting..........................27,107,127
underline character................90,94
underlining........................29,42,104,105
uneven right margins...............13
unnumbered pages...................33
up-shifting........................102
uppercase output flag..............99,102
using styles.......................121
_
V
variables..........................20
version number.....................8
_
W
width, input maximum...............94,133
word...............................9
wrong fonts being printed..........39
______ _______ _____
Reader Comment Sheet
_____ ___ ____ ______
PROSE 4.3 User Manual
Your opinion of this manual is a valuable resource for helping us
improve the quality of our documentation. We invite you to rate
the manual on this form.
Your Name: Date:
Company: Position:
Address: Phone:
______ ______ ___ ______ ___ _____
Please circle one number for each:
____ _______ ____
Good Average Poor
ⁿ General organization 1 2 3
ⁿ Technical accuracy 1 2 3
ⁿ Writing clarity 1 2 3
ⁿ Convenience of size and format 1 2 3
ⁿ Ease of locating information 1 2 3
ⁿ Thoroughness of material 1 2 3
ⁿ Quality of examples 1 2 3
________ ___ ____________ _______ ___ ________ __ __________
Comments and suggestions: (please use reverse, or additional
______ __ _______
sheets as needed)
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Thank you for your feedback. We appreciate your time and
interest. Please send your comments to us at one of the following
numbers or addresses:
Robelle Solutions Technology Inc.
Toll-free: 1-888-ROBELLE
(1-888-762-3553)
7360 137 Street, Suite 372 Phone: (604) 501-2001
Surrey, B.C. Canada V3R 7K1 Fax: (604) 501-2003
E-mail: support@robelle.com
Web: www.robelle.com
iii
_____ ____ ______
PROSE User Manual
________
Contents
_______ _ _______ __ _____
Chapter 1 Welcome to Prose
QLIB contributed library..............1
Documentation.........................1
Prose support.........................2
New features of Prose.................2
New features of Prose.................2
New features of Prose.................3
_______ _ _________ _____
Chapter 2 Accessing Prose
Prose files...........................4
Output Devices........................4
Extra blank pages.....................5
User Defined Command..................7
Prose to a disc file..................7
Prose version number..................8
MPE/iX................................8
_______ _ ________ _____
Chapter 3 Applying Prose
Words.................................9
Prose commands........................9
Filling paragraphs....................10
Justification breaks..................11
Blank lines...........................12
Option command........................13
Ragged right margins...............13
Centering lines....................13
Right-justifying lines.............14
Printing charts and tables.........14
Templates for Prose users.............15
Template for manuals...............15
Using templates....................16
________
iv Contents
Using comments to explain document.18
Defining your output device........18
Prose template variables...........20
Template for business letters......20
Customizing the template...........22
Writing a letter...................22
Using styles for formatting...........25
Defining the paragraph character......26
How to use undent.....................27
White space between words.............28
Defining special characters...........28
Underlining words..................29
Explicit blanks....................29
Hyphenating words..................30
Escape character...................30
Different fonts (typefaces)........30
Lining up tables with tabs.........30
Relative tabs......................31
Hanging indents and tabs...........32
Prose forms for page layout...........32
Inserting a title page.............33
First page of the report body......33
First page of a section............33
Make an index.........................34
Index headings.....................35
Make a table of contents..............36
Checking your commands................37
_______ _ ___ __ ________
Chapter 4 The HP LaserJet
Getting started.......................38
Step one: define your LaserJet.....38
Step two: using fonts..............39
Two methods of switching fonts.....40
Line printer.......................41
Half-line spacing..................41
Fonts and underlining..............42
Forms..............................42
Titles and subtitles...............42
Indexes............................42
Landscape mode........................42
Output command.....................43
Font include file..................43
Margins............................44
Forms..............................44
Indexes............................44
Proportional fonts....................44
Dimensions.........................44
Basic steps........................45
Output command.....................45
Font include file..................46
Margins............................46
Forms..............................47
Tabs...............................47
________
Contents v
Paragraphs.........................48
Indexes............................49
Indentation........................49
Line printer.......................50
Other font cartridges..............50
Finer column resolution...............51
Columns............................51
Margins............................51
Forms..............................51
Tabbing............................52
Indexes............................52
_______ _ _____ ________
Chapter 5 Prose Commands
General notes.........................53
Align command.........................58
Bin command...........................59
Box command...........................61
Break command.........................66
Check command.........................67
Comment command.......................70
Contents command......................71
Count command.........................72
Entry command.........................73
Font command..........................75
Form command..........................79
Headindex command.....................83
If command............................86
Include command.......................88
Indent command........................89
Input command.........................90
Inx (index) command...................95
Jump command..........................96
Literal command.......................97
Margin command........................98
Option command........................99
Output command........................103
Page command..........................106
Paragraph command.....................107
PCL command...........................110
Reset command.........................113
Select command........................114
Skip command..........................116
Sortindex command.....................117
Style command.........................119
Subtitle command......................124
Tab command...........................125
Title command.........................126
Undent command........................127
________
vi Contents
________ _ _ _____ ______
Appendix A - Prose Errors........................128
________ _ _ ____ _______
Appendix B - Keep Buffers........................131
________ _ _ ______ ______ _____
Appendix C - Limits Within Prose.................133
_____
Index............................................135