Description =========== GNU a2ps is an Any to PostScript filter. Of course it processes plain text files, but also pretty prints quite a few popular languages. Its slogan is precisely `` Do The Right Thing '', which means that though it is highly configurable, everything was made so that a novice user can do complicated PostScript manipulations. For instance, it has the ability to delegate the processing of some files to other filters (such as groff, texi2dvi, dvips, gzip etc.), what allows a uniform treatment (n-up, page selection, duplex etc.) of heterogeneous files. As an example: | ubu $ a2ps mill.1.ps.gz a2ps.gif NEWS a2ps.texi index.html -o demo.ps | [mill.1.ps.gz (compressed, delegated to Gzip-a2ps): 17 pages on 9 sheets] | [a2ps.gif (gif, delegated to ImageMagick): 3 pages on 2 sheets] | [NEWS (plain): 12 pages on 6 sheets] | [a2ps.texi (texinfo, delegated to texi2dvi): 89 pages on 45 sheets] | [index.html (html, delegated to Netscape): 13 pages on 7 sheets] | [Total: 132 pages on 66 sheets] saved into the file `demo.ps' Want to print a LaTeX file in Duplex? | ubu $ a2ps paper.tex -s2 -P margot | [paper.tex (tex, delegated to texi2dvi): 33 pages on 9 sheets] | request id is margot-129 (standard input) | [Total: 34 pages on 9 sheets] sent to the printer `margot' (Bibtex, makeindex, and latex were run as many times as needed.) Or maybe you want to print the documentation as a booklet? | ubu ~/src/a2ps-4.10 $ a2ps -P margot -=book doc/a2ps.texi | [doc/a2ps.texi (texinfo, delegated to texi2dvi): 109 pages on 109 sheets] | request id is margot-128 (standard input) | [Total: 109 pages on 109 sheets] sent to the printer `margot' It supports a wide number of encodings, and a very good handling of Latin 2-6 should be noted, thanks to Ogonkify (by Juliusz Chroboczek ). Needed fonts are automatically downloaded. The interface is internationalized, the output is customizable and there are as many options as users had wishes (table of content, headings, virtual page layout etc. etc.). The documentation has been carefully crafted for both novices and experts. It is meant to bring light on most questions you have, and includes a glossary. Contributions ============= Some goodies are provided in the package: - card pretty prints `--help' from programs - fixnt fixes Windows NT PostScript files (thanks to Holger Bauer) - fixps fixes most common problems in PostScript files - pdiff prints a comparison between two files - psmandup eases Duplex printing on Simplex printers - psset inserts special PostScript requests (ManualFeed etc.) The full distribution of Ogonkify, by Juliusz Chroboczek, is also included in the package. Ogonkify let's you fix deficient Latin 2-6 support in popular applications' PostScript (Netscape, StarOffice...). Downloading =========== GNU a2ps is under GPL and can be found on its web page: //www.inf.enst.fr/~demaille/a2ps/ There is also a mailing list set up to discuss around a2ps. To subscribe, send a mail to a2ps-request@gnu.org with `subscribe' in its body. Contributions of any kind are most welcome! Please do *not* use this address to report bugs, but write to bug-a2ps@gnu.org. Version 4.12 ============ The version 4.12 supersedes all of the previous versions (which are no longer maintained). People still using versions prior to 4.10.4 are *strongly* encouraged to update before, say, 2000 Jan 1st (*blush*). Here is the top of the NEWS file: Version 4.12 Feb 16, 1999 * Configuration Files: - Quotation is fixed, and works as in a shell. It is no longer required to write: Options: '--stdin=A Title With Spaces' since one can write: Options: --stdin='A Title With Spaces' - `Options:' entries now report the file and line where the error occured. - Define a variable #{lp} in a2ps.cfg that is system dependent, but allows for system independent definition of printers in a2ps-site.cfg. - `Printer:' can specify a PPD only, in which case the `UnknownPrinter:' command is used. - configure allows --without-extensions Install a small a2ps (fewer library files). Discouraged for non ASCII or Latin 1 users. - `Include:' includes another configuration file. - a2ps.cfg now includes `a2ps-site.cfg' which allows easier upgrades of a2ps without loosing previous configurations. - Now parsed using gperf. No speed up really noticeable :(, but cleaner :). * PPD files: - supports `*Include:'. * Options: - --medium supports case insensitive matches. - -S formerly --statusdict is now --setpagedevice - -D formerly --setpagedevice is now --define. - --toc with no argument uses the default Table of Contents layout (#{toc}). - -s, --sides Now admits 1, 2, simplex, duplex, and tumble. - --file-align=MODE Replaces (generalizes) --compact. MODE can be: + `virtual', put as many files per sheet as possible + `rank', never allow two files on the same row (or column) + `page', never allow two files on the same page + `sheet', never allow two files on the same sheet + an integer NUM, specify that files must be aligned on NUM - -A is now exactly the short option for --file-align. - Output of --list=features is much more pleasant to read. * Contributions: - fixps If a file seems really very very bad, asks gs a full rewrite. Therefore there should no longer be *any* (valid) PostScript file refused by a2ps for delegations. - psset inserts PostScript requests for special features (ManualFeed, Duplex, DuplexTumble etc.). - psmandup + Now uses psset + New options --back and --front. --back gives another chance of printing the second half if the timeout expired. * Style Sheets: - Fortran Major clean up thanks to Alexander Mai. + fortran.ssh remains the generic style sheet for unqualified Fortran. + (for77|for90)-(fixed|free).ssh for more specific dialects. - REXX scripts, thanks to Alexander Mai. - dc_shell, thanks to Philippe Le Van. - Mixed Style Sheets. Mixed sheets are sheets defined by ancestors only. To build a mixed sheet, just specify a comma separated list of ancestors anywhere a style sheet key can be given (-E, sheets.map etc.). - Visual Tcl, thanks to Phil Hollenback. - Extended Tcl, thanks to Phil Hollenback. * Bug Fixes: - The long standing bug of user options (user options could not be used *after* an argument) is fixed. Now it is safe to run a2ps file1 -=lp file2 (before, only file2 was printed). Algorithm suggested by Tristan Gingold. - Version control works also for to-file printers (e.g., -P file). - Temporary files are correctly removed even under abnormal conditions (broken pipe, C-c etc.). * Delegations: - Now outputs the setpagedevice requests in delegated jobs. It is now OK to run a2ps foo.dvi -s2 -P duplex-printer - LaTeX. Needed calls to makeindex, bibtex and latex are run. * Predefined User Options: - `manual' for -SManualFeed:true - `book'. This is experimental. Allows for printing booklet on *printers* only (no way to save as a file). * Variables: - user.login, user.name, user.home, user.host, user.comments are now predefined and, of course, can be change as regular variables. Weird escapes such as `%a{USERNAME}' the localized equivalent for `Printed by USERNAME' `%A{USERNAME@HOSTNAME}' the localized equivalent for `Printed by USERNAME from HOSTNAME'. are no longer needed, and therefore removed. * Fonts: - .gsf fonts supported. - At configuration, a2ps looks for ghostscript fonts - PC Line Drawing fonts is fixed. - Russian fonts/afms are no longer distributed in the core of the package. Another package, i18n-fonts, contains them all. * Translations: - Norwegian, thanks to Jon Ross. - Slovenian, thanks to Igor. * Support of libpaper. the special medium `--medium=libpaper' let a2ps pick up the choice given to libpaper. Disabled if libpaper was not available at configuration. * Environment Variables: - A2PS_VERBOSITY is equivalent to --verbose, but is consulted since startup (long before command line is read). * Error Signaling Now a2ps makes visible the invisible characters when reporting an error (it helps a lot!). * By default liba2ps is built static only. Authors ======= a2ps is written by Akim.Demaille@inf.enst.fr and Miguel.Santana@st.com. We hope you'll enjoy it! -- Akim & Miguel