home *** CD-ROM | disk | FTP | other *** search
- August 28, 1982 /* Modified for IBM PC by MSZachmann */
- May 7, 1981
-
- ROFF
-
- This version of ROFF, based on the formatter in Kernighan
- and Plauger's book SOFTWARE TOOLS, is written in BDS C, and employs
- the directed i/o functions that go along with that package. Well,
- half of the directed I/O anyway - it doesn't use redirected input
- because I wanted to be able to format more than one file at a run.
- Please ignore any "odd" comments to myself in ROFF1.C and ROFF2.C;
- I tried to find them all but there may be a few extra silly remarks
- around.
-
- For more details on the directed I/O (NDIO in our version)
- see NDIO.C
-
-
- Sample calls:
-
- A> roff filename
-
- This will send the formatted output to the Console (display)
-
- A> roff >filename2 filename
-
- This will send the formatted output to filename2
-
- A> roff >PRN: filename
-
- This will send the formatted output to the printer.
-
-
-
-
-
-
-
- Using ROFF, you can make nice printouts of a file, with as
- little or as much help from the program as you want, depending on the
- commands. There are default values for all parameters, so if you
- don't put any commands in at all, your file will come out with filled,
- right-justified lines. The default line-length is 80 characters;
- the default page-length is 66 lines per page. "Filled lines" means
- that as many input words as possible are packed onto a line before it
- is printed; "non-filled" lines go through the formatter w/o
- rearrangement. "Right-justified" simply means that spaces are added
- between words to make all the right margins line up nicely.
- To set a parameter, use the appropriate commands below. All
- commands have the form of a period followed by two letters. A command
- line should have nothing on it but the command and its arguments (if
- any); any text would be lost.
-
- A command argument can be either ABSOLUTE or RELATIVE :
-
- .in 5 sets the indent value to 5 spaces
-
- .in +5 sets the indent value to the CURRENT value plus 5
-
- .ls -1 sets the line spacing value to the current value
- minus one
-
- Also, all commands have a minimum and maximum value that will
- weed out any odd command settings (like setting the line spacing to
- zero, for example. It won't let you do that, but it could be changed
- if you REALLY have a burning desire to do so).
-
- Some commands cause a "break", which is noted in the table
- below. Before such a command goes into effect, the current line of
- text is put out, whether it is completely filled or not. (this is
- what happens at the end of a paragraph, for example.) A line
- beginning with spaces or a tab will cause a break, and will be
- indented by that many spaces (or tabs) regardless of the indent value
- at that time (this is a "temporary indent", which can also be set
- explicitly). An all blank line also causes a break. If you find that
- seem to have some lines that are indented strangely, and it's not
- obvious WHY, look at which commands are causing a break, and which
- aren't. For instance:
-
- .fi
- .ti 0
- this is a line of text
- .in 8
- <- blank line
- more text for the machine to play with
-
-
- At first glance it seems obvious that the line "this is a line of text"
- will be indented zero spaces, but it won't - it will be indented 8.
- The indent command does NOT cause a break (although the .ti does)
- so it will not cause the line to be put out before setting the indent
- value to 8. Then, when the blank line is encountered, it will cause
- a break - and "this is a line of text" will be indented incorrectly.
-
-
- *********************** Table of Commands *****************************
-
- Command Break? Default Function
- ------- ------ ------- ---------
- .bp n yes n = +1 begin page numbered n
-
- .br yes cause a break
-
- .ce n yes n = 1 center next n lines
-
- .fi yes start filling lines
-
- .fo string no empty sets footer to string
-
- .he string no empty sets header to string
-
- .in n no n = 0 sets indent value to n
-
- .ls n no n = 1 sets line spacing to n
-
- .m1 no n = 2 sets topmost margin to n
-
- .m2 no n = 2 sets 2nd top margin to n lines
-
- .m3 no n = 2 1st bottom margin to n lines
-
- .m4 no n = 2 bottom-most margin to n lines
-
- .nf yes stop filling lines
-
- .pl n no n = 66 sets page length to n
-
- .rm n no n = 80 sets right margin to n
-
- .sp n yes n = 1 space down n lines
-
- .ti n yes n = 0 sets temporary indent of n
-
- .ul n no n = 1 underline next n lines
-
- ----------------------------------------------------------------------
-
-
-
- Here's what the page parameters look like:
-
- _ _________________________________________________
- | | top margin - (includes header) |
- | |-----------------------------------------------|
- | | top margin 2 |
- | |-----------------------------------------------|
- P | : : |
- A | :<-indent : |
- G | : : |
- E | :lots and lots of silly text and: |
- L | :other garbage. Get the picture?: |
- E | :This is a temp. indentation: |
- N | : : |
- G | : right margin -> : |
- T | : : |
- H | : : |
- | |-----------------------------------------------|
- | | margin 3 |
- | |-----------------------------------------------|
- | | margin 4 - (includes footer) |
- - -------------------------------------------------
-
-
- To change the default for any parameter, simply alter ROFFGLOB
- recompile ROFF1.c and ROFF2.c, and re-clink them with NDIO.CRL
- (you can use DIO.CRL, but it doesn't have all the features of
- NDIO )
-
-
-
- ************************************************************
- A Few Extra Comments on Some of the Commands:
- ************************************************************
-
- If you want to center lots of lines, but don't
- want to count them, do something like this:
-
- .ce 1000
- lots and
- lots of words to
- be centered
- .ce 0
-
- --------------------------------------
-
- To underline a few words on a line:
-
- .fi
- .ul
- Some
- of the words in
- .ul
- this
- sentence are
- .ul
- underlined
- .nf
-
- WOULD PRODUCE:
-
- Some of the words in this sentence are underlined.
- ---- ---- -----------
-
- (obviously you don't have to turn the fill on and off if it's
- already on )
-
- ------------------------------------
-
- A new paragrah may be caused by using the temporary indent
- command, like
-
- .ti +5
-
- or by simply beginning the paragraph with a tab, as you would if
- you were just typing.
-
- ------------------------------------
-
- Headers and Footers.
-
- A page number can be incorporated into any header or
- footer by putting a "#" in the title where you want the number
- to go:
-
- .he This is a witty header title for page #
-
- Each time this is printed at the top of a page, the current
- page number will be substituted for the "#".
-
- ------------------------------------
- If you want to send the output to a file, and don't want the page
- breaks in there ( that's what I did for this ) set margins 1-4 to
- zero.
- t Fδµïvè0Σ=>