{\Centre}{\Bold + MultiPrint V2.01 - Manual John Matthews 9 June 1993 {\Justify =}{\B - NAME ---- MultiPrint SYNOPSIS -------- {\Reformat -} {\Justify -} MultiPrint Files/A/M : Text file(s), to print and scripts of files to print. Can also include layout commands. See Later. TabSize/N/K : Number of positions to expand tabs to, default is 8. This is only used when there is no justification, and paragraph reformatting is off. FF/S : Pay attention to FormFeed characters. Starts new pages on a new column. Sides/S : Print to both sides of a sheet. Only useful with cut-sheet feeder type printers, laser jets, HP Deskjets etc. See note on 'Last Page'. Font/K : Name of font to use for text, defaults to LetterGothic.font See notes later on font usage. Size/K/N : Point size of font, or pixel size if PxlFontSize specified. Defaults to 8 points (1/72nds of an inch, ie 9 lines per inch) or 8 pixels (real small, smaller at higher printer resolutions) if you use Pxls. LineSpace/K/N : Point/Pixel size of each line to print. ie Use twice the font size for double spacing. Can only be used to increase spacing. Columns/K/N : Number of columns to print, 1..8. Defaults to 2. Gutter/K/N : How many 1/10ths of an inch to leave at the left of odd, and the right of even pages. Defaults to 5, ie half an inch OddFooter/K : Footer for odd pages, defaults to file name EvenFooter/K : Footer for even pages, defaults to file name FooterFont/K : Name of font for footers, defaults to same as Font FooterSize/K : Point size of footer font, or pixel size if PxlFontSize specified. Specifying 0 causes MultiPrint to not print a footer, which includes page numbering. Defaults to 14 points (1/72ndsof an inch) or 14 pixels (real small) if you use Pxls Pxls/S : Causes MultiPrint to treat font sizes as absolute pixel height, instead of point sizes. This method is dependant on the resolution of the printer, but is necessary for use with non-scalable fonts. If you specify this flag, you should not use the default font sizes. Priority/K/N : Specifies the priority to run the spooler task at Ask/S : Prompt for confirmation of each file to print Quiet/S : No error messages for unfound files. Margin/K/N : Space in 10ths of an inch to leave between columns. Defaults to 1 tenth of an inch. Line/S : Causes MultiPrint to draw a line between columns Start/K/N, End/K/N : Specifies which page to start/end printing on. Remember that many parameters effect page layout, such a font, font size, resolution, number of columns, footers etc Density/K/N : Specifies the preferences density to use when printing, range 1..7. If you specify 0, you will be prompted with the dots per inch of each density. Not specifying density causes MultiPrint to use the current preferences density. See note on resolution later. NoCommands/S : Tells MultiPrint not to interpret '{' followed by '\' as commands. For those (infrequent) occassions when you have such a sequence in your document. There is currently no way in which you can print such a sequence, _and_ use controls in the document. NoISP/S : Tells MultiPrint not to treat an indented line as the start of a paragraph. Useful for files with indented paragraphs, ie where the whole paragraph is indented. With this switch on, only a blank line or the \P switch (see commands) will start a new paragraph. Preview/S : Tells MultiPrint to run in Preview mode, printing a scaled version of the output to the screen. While this is not generally readable, it allows you to view the formatting of the output. Very useful when printing pre-formatted, or unformattable files (source code), to check if they are fitting in the columns. Be aware that scaling varies with different display sizes/printer resolutions/page sizes. Details such as the between columns lines may not always be displayed. Replaces the old 'Check' option. If you have enough memory (at least 2Meg Chip), using a Super-High Res Laced screen with LargeScreen on gives a quite readable preview. Specifying a low-density for your printer may also give semi-readable results, but is likely to be less accurate in its formatting in relation to the final output at a higher density. DisplayName/K : Gives the full name of a Screen Mode to use for the preview. Use "DisplayName=?" to bring up a requester, or enter your preferred mode, such as "PAL:High Res Laced" in the format they appear in the requester. The default is to display the preview on the default public screen, usually Workbench. LargeScreen/S : This will create a screen which is larger than displayable, and scrolls with the mouse. SpoolDir/K : If you specify a directory name to this parameter, pages are spooled to disk during processing, thus using less memory, especially in the case of printing a large file to both sides of a sheet. Balance/S : Tells MultiPrint to balance the columns on the last sheet of a file. NoFont/S,NoStyles/S,NoJust/S : Tells MultiPrint to ignore Font/Style/Justification changes repectively. ForceBold/S, : Forces all fonts (except in footers) into Bold. This is useful if small, light fonts don't show well on your printer. Don't use this if you don't need it, as bold in your text won't show any difference. PercentPage/K/N, : Given a number from 1 to 100, prints to that percentage of the page-length. This is useful for laser printers without enough memory to print a full page of text. For example, entering 50 will only print to the top half of each page. For this option, page length is derived from the printer driver, or from PageLength if it exists and HPPrinter is on. See Also the notes on Page/Printer Setup Environment Arguments {\Reformat = {\Justify = DESCRIPTION ----------- MultiPrint is a program for printing text files to both sides of a page, in multiple columns, and very small, or very large, high quality fonts. As an example of the efficiency of MultiPrint, I have printed a file which was designed to be 127 pages long. I printed it at 7 points, which is small, but is readable at 300dpi, and it took only 8 sheets of paper. Having been reformatted with the +R switch, 346 lines of the original document were printed on the first side of a sheet alone. MultiPrint makes use of many Amiga OS Release 2.04 features, and so requires at least this revision of the operating system. These features include Compugraphic Scalable Font technology, to produce characters to the correct size at the full resolution of the, printer, and the correct aspect ratios. SOURCE ------ The source code is not included, but is available from the author. MultiPrint was writtern in M2Sprint Modula2, but should be easy to port to other languages if desired. COPYRIGHT --------- MultiPrint V2.01 is freely distributable. MultiPrint V2.01 is free to be spread on public-domain and shareware disks especially on Fred Fish's AmigaLibDisks, as long as they are sold for a reasonable charge that is less than US $6 or equivalents. For use in commercial products the permission of the author is required. MultiPrint V2.01 may be copied and distributed via electronic networks such as the Internet, also it may be held available on anonymous ftp-servers, mail-boxes or BBS's. The Copyright is still held by the Author. I am offering MultiPrint as shareware. If you use it regularly, let me know. If you want to show your appreciation, or maybe encourage me to develop the GUI version, or specific mods, the suggested registration fee is US$20 (in notes, or something easy like that, NZ$ even better), but this is just a suggestion. Registered owners with Usenet access will get some support via email. No obligations, no promises. However, if you want to use it for some commercial project/product, please make it up to me somehow. If you need some modifications done, offer me some incentive. NO MATTER WHAT - Leave the program as is, and documentation intact. AUTHOR & SUPPORT ---------------- {\Centre + John Matthews 4 Wadham Grove, Tawa, 6203 Wellington, New Zealand. INTERNET: tribble@gphs.vuw.ac.nz (Irregular monitoring) {\Justify = Support may be limited to an attempt to fix any bugs which may be found, no promises. The author takes no liability for any damage caused by the program, but then, neither does he expect any. Try the program out a few times before leaving it to print a large document unattended. Leave me a message if you have any suggestions CHANGES ------- 1.0 First Release, sort of. Was never really released (29-Jan-93) 1.1 Second (attempt at a) Release. Added support for multiple files and scripts. (4-Feb-93) 1.2 Third ( attempt at a ) Release. Added : 1. Right Justification. 2. Paragraph reformating. 3. Margins and Lines between columns. 4. Start/End page printing (for aborted print jobs) 5. Density setting. 1.3 Fourth ( (and successful) attempt at a ) Release. February 24 1993 Added 1. Environment variable 2. LE and RE, to align columns on both sides of page. 3. Break commands 1.4 March 9 1993 Bug Fix : fixed bugs in 1. handling of script files (it wouldn't) 2. printing of more than one file at a time (end of last line) 3. crashing on abort 4. centering of lines Added Inter-file title option (See Arguments below) 1.5 March 20 1993 Bugs fixed : 1. printing of multiple files, other than starting a new sheet per document. 2. fixed error with lines containing only spaces Added 1. direct support for HP printers. See documentation. 2. NoCommands option (for Rob Poole) Changed 1. Moved printer specific options into MultiPrint.printer environment variable 2. Lengthened some command line option names 1.6 April 5, 1993 Bugs fixed : 1. Re-occurring centering bug (Rob Poole). 2. Error with .otag files specifying non-present fonts. Caused MultiPrint to not change styles (Italics etc) if your CGTimes .otag file specified CGTimesItalic and you didn't have it. 3. Possibly other formatting problems. 4. (Hopefully) fixed problem with Network printers found by Dale Larson. Waiting to hear on this one. 5. Now starts new files on a new sheet when it's supposed to, (the default) instead of always just on a new line. (Rob Poole again! Watch it you guys or I might start putting bugs in intentionally to give other guys a chance!) 6. Enforcer hit on last page (it came and went). Added 1. NoISP switch on command line. 2. \Paragraph command, to go with 1. Tested with Enforcer, Mungwall etc. I didn't find any hits. Let's hope Dale doesn't either. 1.7 April 19, 1993 Bugs fixed : 1. Printing of inter-file headers (via the +T flag) corrected to print before the new file, instead of after the old. This means it prints on the same sheet/page/column as the new file (dependant in the L/C/P/S flags). 2. Corrected allignment of even pages when not printing to both sides of a sheet. 3. Check option didn't work anymore :-( Has now been removed, as it is superceded by the Preview option, which is much simpler and more flexible (ie works with reformating and justifying). 4. Now frees memory from page-in-progress when aborted. Features Added: 1. Preview function. Allows a look at how the document will appear, without printing. Very useful when printing pre-formatted, or unformattable files (source code), to check if they are fitting in the columns. 2. HPShingle added to printer setup environment variable, MultiPrint.Printer. See the note on Shingling in the HPPrinter options below. Basically, it sacrifices speed to improve quality on DeskJet printers from HP500C up. 1.8 April 25, 1993 Bugs fixed : 1. Persistant bug with centering in non-reformatting mode fixed. 2. Fixed bug with inter-process communication, which caused the program to jam sometimes when aborted. 3. Aborting print fixed when a command-line option is misspelt, resulting in a non-existant file message. Maybe more. It's easier to debug with the preview option present. Uses less paper when printing to the screen. Changes : 1. Slight redefinition of command format. If you want to place formatting commands, in particular Justification and Centering, on their own line (they must start the line anyway or they will be ignored) without leaving a blank line, leave off the closing brace. Alternately, remember to leave the closing brace it there is supposed to be a blank line. 2. Improved preview function, to allow it to run on existing (public) screens, especially Workbench. 3. Improved preview to allow for large 'virtual' screens, in one direction (usually height) with autoscroll. 4. Added spoolling to disk, for those really large files, and background printing, where memory is required for other things. 1.9 April 28, 1993 - OOPS, version still read 1.8 etc Bugs fixed : 1. Changed Footer options from xxxFootxxx back to xxxFooterxxx. My compiler has trouble with long string constants, so now some things are linked in as objects, and the template can be as long as necessary. 2. End-of-paragraph at end-of-page code was commented out during testing 3. LargeScreen option should now (correctly) only give you scrolling in one dimension in all displays. 4. Default Footers now give the name of the first file on a page, rather than the last. Changes 1. Made balancing the columns on last pages an option. 1.10 May 4, 1993 Bugs fixed : 1. Graceful exit if fonts or printer not opened. 1.11 May 11, 1993 Bugs Fixed : 1. Fixed bugs in handling of CSI type bold/italic etc codes, a) not switching off b) adding spaces in non-justified mode Thanks to Andrew Harrison for spotting this 2. LineSpacing argument changed to only work for increasing spacing. Before, if you specified a smaller point size for the spacing than for the font, nothing would print. 1.12 May 13, 1993 Bugs Fixed : 1. Top margin bug in Hewlett Packard direct driver code. Caused problems (I suspected, and have had one confirmation) with laser printers, though not with DeskJets. On my DeskJet I got three millimeters extra space used at the top of the page. Still, better to stick with the defaults. Please note, if you were using the PageLength printer environment argument in conjunction with the HPPrinter flag, you'll have a larger top margin, and less actual print height. For example, on a DeskJet 500C, I had to reduce the PageLength variable from 283 millimeters to 280 millimeters, ie PageLength=280. 2. Fixed problem with Ctrl-C not working once all the pages were prepared, and awaiting printing. Could conceivably mean waiting for lots of pages if your computer was way faster than your printer and you wanted to stop printing. Added Features 1. HPUniDir flag in printer environment variable, to slightly improve quality on HP DeskJets. 2.00 May 27, 1993 Bugs Fixed : 1. Big bug fixed for those out there using most printers other than Hewlett Packard compatible printers. Now, shouldn't print blank lines where bits of text should be. 2. Fixed some small formatting problems. 3. Fixed some other things, but I've forgotten what they were. Had had no serious messages about them though :-) 4. Jumped version numbers, and changed to a trailing 0, to provide consistent numbering. Added Features : 1. Modified Centering, so \C - returns you to the previous mode of justification. It is no longer necessary to remember when adding the codes to the files. 2. Added 'This page intentionally left blank' :-) 3. Added command line switches to turn off in-file formatting commands. 2.01 June 9, 1993 Bugs Fixed : 1. Major bug : Output to multi-pin printers was broken. MultiPrint uses a technique of strip-printing, to keep from having to create the full (high resolution) page image in (chip) memory. Some printers, like Hewlett Packards, are smart, and buffer raster lines until they have enough to fill the print head. Others are likely to give blank lines between strips. Previous versions of MultiPrint attempted to combat this, and while the technique was correct, technicalities in the coding caused it to fail. Now this has been tested more completely. MultiPrint should now work with printers such as Canon bubble jets. 2. Aborting printing could leave the printer in a state where another print would fail, and the program would just sit there. Added Features : 1. Force Bold option added, for printers that can't print thin fonts well. Forces all body-text into bold. From a suggestion by Christopher A. Wichura. 2. PercentPage option added. This option is designed for people with laser printer without enough memory to print a full page. For this option, page length is derived from the printer driver, or from PageLength if it exists and HPPrinter is on. 3.0 (Planned) Workbench interface. Drop and go operation and more. This version may never eventuate. It depends on how much feedback I get, as well as how much time I have to spend. The amount of work required to do this properly grows on me whenever I contemplate it. Some settings must be available only on startup, and should be savable as defaults. Some should be able to be modified on a per file basis, and some, mostly those related to page size and printer resolution choices, are limited by the implementation to startup-time only. Let's face it - GUIs are _nice_ but unnecessary. However, having said all this, unless something else comes along, I probabably will slowly work on increasing the GUI elements, in a piece-by-piece basis. PURPOSE & THEORY ---------------- MultiPrint was designed to print text files to as few pages as possible. You know how sometimes having a .doc file is not good enough, you need to be able to see it on paper, because you are always referring to it. Or you have a really neat StarTrek© parody you want to show someone. MultiPrint can print using multiple columns, both sides of a page, with really small, but still high resolution fonts to fit many times the usual amount on a page. For example, an A4 page can usually hold about 60 lines of text. With MultiPrint and an 7 point font (about 30 pixels high on a 300dpi laser or deskjet) giving 100 lines of text, with 2 columns of output to both sides of the page gives 100 * 2 * 2 = 400 lines per page. MultiPrint uses whichever font you specify, and can handle narrow and proportional fonts to increase the number of columns you can print. Lines can be wrapped around and right justified for improved use of space and readability, producing newspaper like output. MultiPrint allows a gutter for stapling sheets together. The default of 5/10ths of an inch is quite adequate. MultiPrint determines page size, and resolution from the system. Page oriented printers such as laser printers and Hewlett Packard DeskJets specify their resolutions directly. Tractor feed etc printers must have their lines/inch and number-of-lines set correctly to reflect page length, but they don't work so well for both sides printing anyway. MultiPrint queues the pages, and uses a child process to print the even pages first in ascending order, then the odd pages in descending order on the reverse sides. Due to the queueing of pages, MultiPrint can use a certain amount of memory. All pages are stored in memory as they are processed, also the program requires a buffer for processing the pages. Text files don't usually get large enough for this to be a problem on most systems these days, and this is faster and easier than spooling off to disk again. VERSION ------- This is version 2.01 of MultiPrint. It does everything I need, but I would like to give it a nice Workbench interface. This may, however, take time. If anyone has any need for features other than those present, let me know, and maybe offer suitable inducements :-) I'd like, at least, to make enough money to offset the cost of the ink cartridge I used up in testing this program. STARTING -------- MultiPrint is a Shell/CLI only program, and requires at least version 2.04 of the Amiga OS. All parameters, as described above, except for the file name, have defaults and require keyword specifications to override them. MultiPrint runs at a default priority of -1, as a good printing utility should, though this can be changed with the priority keyword. Priority is not overly important in some respects, however, as MultiPrint does not busy-wait. If your computer is fast enough, and/or so is your printer driver, you could well be waiting on your printer. Laser printers however will more likely be waiting on the computer, and so MultiPrint will be grabbing every available cycle, so leave at a low priority for background printing. Before printing a file, it may be a good idea to use the "Check" option to determine how much line wrapping is occuring.