_____ _______ ___ 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 .include .com If this document has an index, entries are created .com via .inx . 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 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 .include .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 _______ _ ________ _____ 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 .input(f|) If you have the F font cartridge, you would use: .output(las 30 s8) .include .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 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 ________ ___ _______ ________ 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 word2 ______ ____ ______ Output from Prose: 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 .pcl word2 ______ ____ ______ Output from Prose: word1 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+) text2 ______ ____ ______ Output from Prose: text1 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 .page .pcl .pcl(s-) .pcl .page .pcl _______ _ _____ ________ _ _____ 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