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
<jec@dcs.ed.ac.uk>).  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:

	http://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