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
<[email protected]>).  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 [email protected] with `subscribe' in its
body.  Contributions of any kind are most welcome!

Please do *not* use this address to report bugs, but write to
[email protected].


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 [email protected] and [email protected].
We hope you'll enjoy it!

--
Akim & Miguel