1This is a2ps.info, produced by makeinfo version 4.0 from a2ps.texi.
2
3INFO-DIR-SECTION Printing Tools
4START-INFO-DIR-ENTRY
5* a2ps: (a2ps).                    PostScript Generating Utility
6* PreScript: (a2ps) PreScript.     Input language for a2ps
7* card: (a2ps) card.               Print Reference Cards
8* fixps: (a2ps) fixps.             Fixing Some Ill Designed PostScript Files
9* fixnt: (a2ps) fixnt.             Fixing Microsoft NT PostScript Files
10* pdiff: (a2ps) pdiff.             Produce Pretty Comparison of Files
11* psmandup: (a2ps) psmandup.       Printing Duplex on Simplex Printers
12* psset: (a2ps) psset.             Inserting calls to setpagedevice
13END-INFO-DIR-ENTRY
14
15   This document describes GNU a2ps 4.13, a converter from various
16formats, included text, to PostScript converter, with pretty-printing
17abilities.
18
19   Copyright (C) 1988-1993 Miguel Santana Copyright (C) 1995-2000 Akim
20Demaille, Miguel Santana
21
22   Permission is granted to make and distribute verbatim copies of this
23manual provided the copyright notice and this permission notice are
24preserved on all copies.
25
26   Permission is granted to copy and distribute modified versions of
27this manual under the conditions for verbatim copying, provided also
28that the section entitled "Copying" is included exactly as in the
29original, and provided that the entire resulting derived work is
30distributed under the terms of a permission notice identical to this
31one.
32
33   Permission is granted to copy and distribute translations of this
34manual into another language, under the above conditions for modified
35versions, except that this permission notice may be stated in a
36translation approved by the author.
37
38
39File: a2ps.info,  Node: a2ps PostScript Files,  Next: Designing PostScript Prologues,  Prev: Colors in PostScript,  Up: PostScript
40
41a2ps PostScript Files
42=====================
43
44   a2ps uses several types of PostScript files.  Some are standards,
45such as font files, and others are meant for a2ps only.
46
47   All a2ps files have two parts, one being the comments, and the other
48being the content, separated by the following line:
49     % code follows this line
50
51
52File: a2ps.info,  Node: Designing PostScript Prologues,  Prev: a2ps PostScript Files,  Up: PostScript
53
54Designing PostScript Prologues
55==============================
56
57   It is pretty known that satisfying the various human tastes is an
58NEXPTIME-hard problem, so a2ps offers ways to customize its output
59through the "prologue files".  But since the authors feel a little
60small against NEXPTIME, they agreed on the fact that *you* are the one
61who will design the look you like.
62
63   Hence in this section, you will find what you need to know to be
64able to customize a2ps output.
65
66   Basically, a2ps uses "faces" which are associated to their "meaning"
67in the text.  a2ps let's you change the way the faces look.
68
69* Menu:
70
71* Definition of the faces::     What goes in a characters style
72* Prologue File Format::        Including documentation
73* A prologue example::          A step by step example
74
75
76File: a2ps.info,  Node: Definition of the faces,  Next: Prologue File Format,  Prev: Designing PostScript Prologues,  Up: Designing PostScript Prologues
77
78Definition of the faces
79-----------------------
80
81   There are three things that define a face:
82_Its font_
83     You should never call the font by yourself, because sometimes
84     a2ps may decide that another font would be better.  This is what
85     happens for instance if a font does not support the encoding you
86     use.
87
88     Hence, never set the font by yourself, but ask a2ps to do it.
89     This is done through a line:
90          %Face: FACE REAL-FONT-NAME SIZE
91
92     This line tells a2ps that the font of FACE is REAL-FONT-NAME.  It
93     will replace this line by the correct PostScript line to call the
94     needed font, and will do everything needed to set up the font.
95
96     The size of the text body is `bfs'.
97
98_Its background color_
99     There are two cases:
100       1. You want a background color, then give the "RGB" (*note
101          Colors in PostScript::) ratio and `true' to `BG':
102               0.8 0.8 0 true BG
103
104       2. You don't want a background color, then call `BG' with
105          `false':
106               false BG
107
108_Its foreground color_
109     As `BG', call `FG' with an "RGB" ratio:
110          0 0.5 0 FG
111
112_Its underlining_
113     `UL' requires a boolean argument, depending whether you want or
114     not the current face to be underlined.
115          true UL
116
117_Its boxing_
118     Requiring a boolean, `BX' let's a face have a box drawn around.
119
120
121File: a2ps.info,  Node: Prologue File Format,  Next: A prologue example,  Prev: Definition of the faces,  Up: Designing PostScript Prologues
122
123Prologue File Format
124--------------------
125
126   Prologue files for a2ps must have `pro' as suffix.  Documentation
127(reported with `--list-prologues') can be included in the comment part:
128     Documentation
129     This prologue is the same as the prologue code(pb)code, but using
130     the bold version of the fonts.
131     EndDocumentation
132     % code follows this line
133   *Note Documentation Format::, for more on the format.
134
135
136File: a2ps.info,  Node: A prologue example,  Prev: Prologue File Format,  Up: Designing PostScript Prologues
137
138A step by step example
139----------------------
140
141   We strongly suggest our readers not to start from scratch, but to
142copy one of the available styles (see the result of `a2ps
143--list=prologues'), to drop it in one of a2ps directories (say
144`$HOME/.a2ps', and to patch it until you like it.
145
146   Here, we will start from `color.pro', trying to give it a funky look.
147
148   Say you want the keywords to be in Helvetica, drawn in a flashy pink
149on a light green.  And strong keywords, in Times Bold Italic in brown
150on a soft Hawaiian sea green (you are definitely a fine art _amateur_).
151
152   Then you need to look for `k' and `K':
153     /k {
154       false BG
155       0 0 0.9 FG
156     %Face: Keyword Courier bfs
157       Show
158     } bind def
159
160     /K {
161       false BG
162       0 0 0.8 FG
163     %Face: Keyword_strong Courier-Bold bfs
164       Show
165     } bind def
166
167and turn it into:
168     /k {
169       0.2 1 0.2 true BG
170       1 0.2 1 FG
171     %Face: Keyword Helvetica bfs
172       Show
173     } bind def
174
175     /K {
176       0.4 0.2 0 true BG
177       0.5 1 1 FG
178     %Face: Keyword_strong Times-BoldItalic bfs
179       Show
180     } bind def
181
182   Waouh!  It looks great!
183
184   A bit trickier: let change the way the line numbers are printed.
185
186   First, let's look for the font definition:
187     %%BeginSetup
188     % The font for line numbering
189     /f# /Helvetica findfont bfs .6 mul scalefont def
190     %%EndSetup
191
192   Let it be in Times, twice bigger than the body font.
193     %%BeginSetup
194     % The font for line numbering
195     /f# /Times-Roman findfont bfs 2 mul scalefont def
196     %%EndSetup
197
198   How about its foreground color?
199     % Function print line number (<string> # -)
200     /# {
201       gsave
202         sx cw mul 2 div neg 0 rmoveto
203         f# setfont
204         0.8 0.1 0.1 FG
205         c-show
206       grestore
207     } bind def
208
209   Let it be blue.  Now you know the process: just put `0 0 1' as `FG'
210arguments.
211
212
213File: a2ps.info,  Node: Contributions,  Next: FAQ,  Prev: PostScript,  Up: Top
214
215Contributions
216*************
217
218   This chapter documents the various shell scripts or other tools that
219are distributed with the a2ps package, but are not a2ps itself.  The
220reader should also look at the documentation of `Ogonkify' (*note
221Overview: (ogonkify)top.), written by Juliusz Chroboczek.
222
223* Menu:
224
225* card::                        Printing Reference Cards
226* fixps::                       Fixing Some Ill Designed PostScript Files
227* fixnt::                       Fixing Microsoft NT PostScript Files
228* pdiff::                       Produce Pretty Comparison of Files
229* psmandup::                    Printing Duplex on Simplex Printers
230* psset::                       Inserting calls to setpagedevice
231
232
233File: a2ps.info,  Node: card,  Next: fixps,  Prev: Contributions,  Up: Contributions
234
235`card'
236======
237
238   Many users of a2ps have asked for a reference card, presenting a
239summary of the options.  In fact, something closely related to the
240output of `a2ps --help'.
241
242   The first version of this reference card was a PreScript file (*note
243PreScript::) to be printed by a2ps.  Very soon a much better scheme was
244found: using a style sheet to pretty print directly the output of `a2ps
245--help'!  A first advantage is then that the reference cards can be
246printed in the tongue you choose.
247
248   A second was that this treatment could be applied to any application
249supporting a `--help'-like option.
250
251* Menu:
252
253* Invoking card::               Command Line Interface
254* Caution when Using card::     card runs commands
255
256
257File: a2ps.info,  Node: Invoking card,  Next: Caution when Using card,  Prev: card,  Up: card
258
259Invoking `card'
260---------------
261
262     card [OPTIONS] APPLICATIONS [-- A2PS-OPTIONS]
263
264`card' is a shell script which tries to guess how to get your
265APPLICATIONS' help message (typically by the options `--help' or `-h'),
266and pretty prints it thanks to a2ps (or the content of the environment
267variable `A2PS' if it is set).  A2PS-OPTIONS are passed to a2ps.
268
269   Supported options are:
270
271 - Option: -h
272 - Option: --help
273     print a short help message and exit successfully.
274
275 - Option: -V
276 - Option: --version
277     report the version and exit successfully.
278
279 - Option: -q
280 - Option: --quiet
281 - Option: --silent
282     Run silently.
283
284 - Option: -D
285 - Option: --debug
286     enter in debug mode.
287
288 - Option: -l LANGUAGE
289 - Option: --language=LANGUAGE
290     specify the language in which the reference card should be printed.
291     LANGUAGE should be the symbol used by `LC_ALL' etc.  (such as
292     `fr', `it' etc.).
293
294     If the APPLICATIONS don't support internationalization, English
295     will be used.
296
297 - Option: --command=COMMAND
298     Don't try to guess the APPLICATIONS' way to report their help
299     message, but rather use the call COMMAND.  A typical example is
300          card --command="cc -flags"
301
302   It is possible to give options to a2ps (*note Options::) by
303specifying them after `--'.  For instance
304     card gmake gtar --command="cc -flags" -- -Pdisplay
305
306builds the reference card of `GNU make', `GNU tar' (automatic detection
307of `--help' support), and `cc' thanks to `-flags'.
308
309
310File: a2ps.info,  Node: Caution when Using card,  Prev: Invoking card,  Up: card
311
312Caution when Using `card'
313-------------------------
314
315   Remember that `card' runs the programs you give it, and the commands
316you supplied.  Hence if there is a silly programs that has a weird
317behavior given the option `-h' etc., beware of the result.
318
319   It is even clearer using `--command': avoid running `card
320--command="rm -rf *"', because the result will be exactly what you think
321it will be!
322
323
324File: a2ps.info,  Node: fixps,  Next: fixnt,  Prev: card,  Up: Contributions
325
326`fixps'
327=======
328
329   The shell script `fixps' tries its best to fix common problems in
330PostScript files that may prevent post processing.  It makes heavy use
331of the `psutils'.  It is a good idea to use `fixps' in the PostScript
332delegations.
333
334   It first tries to make simple fixes, but some really broken files may
335require a much deeper treatment.  If `fixps' feels the need for such a
336major surgery act, it may give up local changes and ask `Ghostscript'
337for a global rewriting.
338
339* Menu:
340
341* Invoking fixps::              Command Line Interface
342
343
344File: a2ps.info,  Node: Invoking fixps,  Prev: fixps,  Up: fixps
345
346Invoking `fixps'
347----------------
348
349     fixps [OPTIONS] [FILE]
350
351sanitize the PostScript FILE (or of the standard input if no FILE is
352given, or if FILE is `-').
353
354   Supported options are:
355
356 - Option: -h
357 - Option: --help
358     Print a short help message and a list of the fixes that are
359     performed.  Exit successfully.
360
361 - Option: -V
362 - Option: --version
363     report the version and exit successfully.
364
365 - Option: -D
366 - Option: --debug
367     enter in debug mode.
368
369 - Option: -q
370 - Option: --quiet
371 - Option: --silent
372     Run silently.
373
374 - Option: -o FILE
375 - Option: --output=FILE
376     specify the FILE in which is saved the output.
377
378 - Option: -n
379 - Option: --no-fix
380     Don't actually fix the FILE but still honor all of the other
381     options.  In particular, `fixps -qn FILE' is equivalent to `cat
382     FILE'.
383
384 - Option: -c
385 - Option: --check
386 - Option: --dry-run
387     Don't actually fix the FILE: just report the diagnostics.
388     Contrary to the option `fixps -qc' does absolutely nothing (while
389     it does take some time to do it nicely).
390
391 - Option: -f
392 - Option: --force
393     Ask `ghoscript' for a full rewrite of the FILE.  The output file
394     is really sane, but can be much longer than the original.  For this
395     reason and others, it is not always a good idea to make a full
396     rewrite.  This option should be used only for files that give
397     major problems.
398
399
400File: a2ps.info,  Node: fixnt,  Next: pdiff,  Prev: fixps,  Up: Contributions
401
402`fixnt'
403=======
404
405   `fixnt' (see its
406`http://www.itsm.uni-stuttgart.de/~bauer/fixnt.html', home page) is
407maintained by Holger Bauer <bauer@itsm.uni-stuttgart.de> and Michael
408Rath <rath@itsm.uni-stuttgart.de>.  It is meant to fix the problems of
409the PostScript files generated by the Microsoft PostScript driver under
410Windows NT (3.5 and 4.0).
411
412   `fixps' is aware of the cases where `fixnt' should be used, hence
413you should not worry of when to use `fixnt'.
414
415* Menu:
416
417* Invoking fixnt::              Command Line Interface
418
419
420File: a2ps.info,  Node: Invoking fixnt,  Prev: fixnt,  Up: fixnt
421
422Invoking `fixnt'
423----------------
424
425     fixnt < `file.ps'
426
427sanitize the PostScript file FILE.PS and produce the result on the
428standard output.
429
430
431File: a2ps.info,  Node: pdiff,  Next: psmandup,  Prev: fixnt,  Up: Contributions
432
433`pdiff'
434=======
435
436   The shell script `pdiff' aims to pretty print diffs between files.
437It basically uses GNU `diff' (*note Overview: (diff)diff.) or GNU
438`wdiff' (*note The word difference finder: (wdiff)wdiff.) to extract
439the diff, then calls a2ps with the correct settings to get a nice,
440printed contextual diff.
441
442* Menu:
443
444* Invoking pdiff::              Command Line Interface
445
446
447File: a2ps.info,  Node: Invoking pdiff,  Prev: pdiff,  Up: pdiff
448
449Invoking `pdiff'
450----------------
451
452     pdiff [OPTIONS] FILE-1 FILE-2 [-- A2PS-OPTIONS]
453
454make a pretty comparison between FILE-1 and FILE-2.  A2PS-OPTIONS are
455passed to a2ps.
456
457   Supported options are:
458
459 - Option: -h
460 - Option: --help
461     print a short help message and exit successfully.
462
463 - Option: -V
464 - Option: --version
465     report the version and exit successfully.
466
467 - Option: -q
468 - Option: --quiet
469 - Option: --silent
470     Run silently.
471
472 - Option: -D
473 - Option: --debug
474     enter in debug mode.
475
476 - Option: -w
477 - Option: --words
478     Look for words differences (default).  White space differences are
479     not considered.
480
481 - Option: -l
482 - Option: --lines
483     Look for lines differences.
484
485   It is possible to give options to a2ps (*note Options::) by
486specifying them after `--'.  For instance
487     pdiff COPYING COPYING.LIB -- -1 -P display
488
489Compares the files `COPYING' and `COPYING.LIB', and prints it on the
490printer `display' (usually `Ghostview' or `gv').
491
492
493File: a2ps.info,  Node: psmandup,  Next: psset,  Prev: pdiff,  Up: Contributions
494
495`psmandup'
496==========
497
498   I personally hate to print documents of hundreds of pages on a single
499sided printer.  Too bad, here there are no Duplex printers.  The idea is
500then simply first to print the odd pages, then the even in reversed
501order.  To make sure one flips the page in the meanwhile, the second
502half should be printed from the manual feed tray.
503
504   Make a shell script that automates this, and you get `psmandup'.
505
506* Menu:
507
508* Invoking psmandup::           Command Line Interface
509
510
511File: a2ps.info,  Node: Invoking psmandup,  Prev: psmandup,  Up: psmandup
512
513Invoking `psmandup'
514-------------------
515
516     psmandup [OPTIONS] [FILE]
517
518produce a manual duplex version of the PostScript FILE (or of the
519standard input if no FILE is given, or if FILE is `-'). Once the first
520half is printed, put the sheet stack in the manual feed tray for the
521second half(1).
522
523   Be aware that there is a time out for manually fed jobs, usually
524short, hence do not miss the moment when the printer asks for the
525stack.  If ever you missed that moment, see option `--back' to recover
526the second half.
527
528   Supported options are:
529
530 - Option: -h
531 - Option: --help
532     print a short help message and exit successfully.
533
534 - Option: -V
535 - Option: --version
536     report the version and exit successfully.
537
538 - Option: -q
539 - Option: --quiet
540 - Option: --silent
541     Run silently.
542
543 - Option: -D
544 - Option: --debug
545     enter in debug mode.
546
547 - Option: -o FILE
548 - Option: --output=FILE
549     specify the FILE in which is saved the output.
550
551 - Option: -n
552 - Option: --no-fix
553     `psmandup' will fail on ill designed PostScript (well, actually the
554     psutils will).  To avoid this, by default the PostScript file is
555     sanitized by `fixps'.
556
557     When given this option, don't run `fixps'.  This is meant to be
558     used when `fixps' has already been used higher in the processing
559     chain.
560
561 - Option: -f
562 - Option: --front
563     Output only the front pages, with no special PostScript feature
564     request.
565
566 - Option: -b
567 - Option: --back
568     Output only the back pages, with a manual feed request.
569
570     This option is especially useful when the manual feed time out
571     expired before you could insert back the stack in the manual feed
572     tray.
573
574   `psmandup' assumes the printer is Level 2, and supports manual
575feeding.  The FILE should be reasonably sane, otherwise `psmandup'
576fails miserably.
577
578   Typical use is
579     psmandup file.ps | lp
580
581or can be put into a2ps' printer commands (*note Your Printers::).
582
583   ---------- Footnotes ----------
584
585   (1) Many people seem to ignore that you can insert *several* sheets
586in the manual feed tray.  Try at least once, it will save you from
587hours spent feeding page per page by hand!
588
589
590File: a2ps.info,  Node: psset,  Prev: psmandup,  Up: Contributions
591
592`psset'
593=======
594
595   The shell script `psset' inserts calls to `setpagedevice' in a
596PostScript file.  This is useful for instance to add Tumble or Manual
597feed request.  Actually, `psmandup' uses `psset'.
598
599   You should know nevertheless that a2ps is able to make the calls to
600`setpagedevice' by itself, i.e., you can run `a2ps -SManualFeed foo' to
601print `foo' onto the manually fed tray, or run `a2ps -s2 foo' to print
602Duplex.  There are no need of `psset' from a2ps.
603
604* Menu:
605
606* Invoking psset::              Command Line Interface
607
608
609File: a2ps.info,  Node: Invoking psset,  Prev: psset,  Up: psset
610
611Invoking `psset'
612----------------
613
614     psset [OPTIONS] [FILE]
615
616produce a version of the PostScript FILE (or of the standard input if
617no FILE is given, or if FILE is `-') that makes protected calls to the
618PostScript operator `setpagedevice'.  Typical use is making FILE print
619duplex, or on the manual tray etc.
620
621   The call is protected so that the resulting file is safe, i.e., will
622still be portable, even with requests such as `-Sfoo:bar'.
623
624   It is safe to run `psset' with no feature requests.  Depending upon
625the option `--no-fix', it is either equivalent to doing nothing, or to
626running `fixps' (*note fixps::).
627
628   Supported options are:
629
630 - Option: -h
631 - Option: --help
632     Print a short help message and exit successfully.
633
634 - Option: -V
635 - Option: --version
636     report the version and exit successfully.
637
638 - Option: -D
639 - Option: --debug
640     enter in debug mode.
641
642 - Option: -q
643 - Option: --quiet
644 - Option: --silent
645     Run silently.
646
647 - Option: -o FILE
648 - Option: --output=FILE
649     specify the FILE in which is saved the output.
650
651 - Option: -n
652 - Option: --no-fix
653     `psset' will fail on ill designed PostScript.  Actually it is the
654     psutils that fail.  To avoid this, by default the PostScript file
655     is sanitized by `fixps'.
656
657     When given this option, don't run `fixps'.  This is meant to be
658     used when `fixps' has already been used higher in the processing
659     chain.
660
661 - Option: -S KEY:VALUE
662 - Option: --setpagedevice=KEY:VALUE
663     Insert a `setpagedevice' call setting KEY to VALUE.  Multiple
664     values accumulate.  Lists of requests separated with `;' are valid
665     (e.g., `-SDuplex:true;Tumble:false').
666
667 - Option: -a PAGE
668 - Option: --at=PAGE
669     Specify the page where the `setpagedevice' call should be done.
670     The PAGE 0, which is the default, corresponds to the `Setup'
671     section of the document.  More precisely, the insertion is
672     performed at the end of the `Setup' section, so that if there are
673     multiple calls to `psset' on the same document (which is of
674     course, a bad idea), the last call is winning.
675
676     In a typical use you should not change the PAGE.
677
678 - Option: -m
679 - Option: --manualfeed
680     Alias for `-SManualFeed:true', i.e., the request to print using the
681     manual feed tray.
682
683 - Option: -s
684 - Option: --simplex
685     Alias for `-SDuplex:false', i.e., force simplex printing.
686
687 - Option: -d
688 - Option: --duplex
689     Alias for `-SDuplex:true;Tumble:false', i.e., the request to print
690     in duplex mode, binding along the long edge of the paper.
691
692 - Option: -t
693 - Option: --tumble
694     Alias for `-SDuplex:true;Tumble:true', i.e., duplex printing such
695     that binding should happen on the short edge of the medium.
696
697
698File: a2ps.info,  Node: FAQ,  Next: Glossary,  Prev: Contributions,  Up: Top
699
700Frequently asked questions
701**************************
702
703   Please, before sending us mail, make sure the problem you have is not
704known, and explained.  Moreover, avoid using the mailing list for asking
705question about the options, etc.  It has been built for announces and
706suggestions, not to contact the authors.
707
708* Menu:
709
710* Why Does ...?::               Questions on Error
711* How Can I ...?::              a2ps' How-To
712* Please tell me...::           Existential Questions on a2ps
713
714
715File: a2ps.info,  Node: Why Does ...?,  Next: How Can I ...?,  Prev: FAQ,  Up: FAQ
716
717Why Does...?
718============
719
720   Error related questions.
721
722* Menu:
723
724* It Prints Nothing::           The printer issues nothing
725* It Prints in Simplex::        While I asked for Duplex
726* It Prints in Duplex::         While I asked for Simplex
727* It Does Not Fit on the Paper::  Some parts are missing
728* It Prints Junk::              Random characters
729* It Says my File is Binary::   And refuses to print it
730* It Refuses to Change the Font Size::
731
732
733File: a2ps.info,  Node: It Prints Nothing,  Next: It Prints in Simplex,  Prev: Why Does ...?,  Up: Why Does ...?
734
735Why Does it Print Nothing?
736--------------------------
737
738     a2ps works OK, but the printer prints nothing.
739
740   There are two ways that printing can fail: silently, or with a
741diagnostic.
742
743   First, *check that the printer received what you sent*.  a2ps may
744correctly do its job, but have the printer queue fail to deliver the
745job.  In case of doubt, please check that the printer's leds blink (or
746whatever is its way to show that something is being processed).
747
748   If the printer does receive the job, but prints nothing at all, check
749that you did not give exotic options to an old printer (typically, avoid
750printing on two sides on a printer that does not support it).  Avoid
751using `-S', `--setpagedevice' (*note Page Device Options::) and
752`--statusdict' (*note Statusdict Options::).
753
754   If the trouble persists, please try again but with the option
755`--debug' (a PostScript error handler is downloaded), and then send us:
756  1. the input file that gives problems
757
758  2. the output file created by a2ps *with the option `--debug'*
759
760  3. the error message that was printed.
761
762
763File: a2ps.info,  Node: It Prints in Simplex,  Next: It Prints in Duplex,  Prev: It Prints Nothing,  Up: Why Does ...?
764
765Why Does it Print in Simplex?
766-----------------------------
767
768     Though I ask a2ps to print Duplex via `--sides', the job is
769     printed Simplex.
770
771   If your printer is too old, then a2ps will not be able to send it the
772code it needs when `-s2' is specified.  This is because your printer
773uses an old and not standardized interface for special features.
774
775   So you need to
776  1. specify that you want Duplex mode: `-s2',
777
778  2. remove by hand the standardized call to the Duplex feature:
779     `-SDuplex',
780
781  3. add the non standard call to Duplex.  Try
782     `--statusdict=setduplexmode:true'.
783
784   Since this is painful to hit, a User Option (*note Your Shortcuts::)
785should help.
786
787
788File: a2ps.info,  Node: It Prints in Duplex,  Next: It Does Not Fit on the Paper,  Prev: It Prints in Simplex,  Up: Why Does ...?
789
790Why Does it Print in Duplex?
791----------------------------
792
793     Though I ask a2ps to print Simplex via `--sides', the job is
794     printed Duplex.
795
796   Actually when you require Simplex, a2ps issues nothing, for
797portability reasons.  Hence, if your printer is defaulted to Duplex,
798the job will be Duplexed.  So you have to force a2ps to issue the
799Simplex request with `-SDuplex:false'.  The user options `-=s1' and
800`-=simplex' have names easier to remember.
801
802   In the next version of a2ps this kind of portability problems will be
803fixed in a user friendly way.
804
805
806File: a2ps.info,  Node: It Does Not Fit on the Paper,  Next: It Prints Junk,  Prev: It Prints in Duplex,  Up: Why Does ...?
807
808Why Does it Not Fit on the Paper?
809---------------------------------
810
811     When I print text files with a2ps, it prints beyond the frame of
812     the paper.
813
814   You are most probably printing with a bad medium, for instance using
815A4 paper within a2ps, while your printer uses Letter paper.  Some jet
816printers have a small printable area, and a2ps may not expect it.  In
817both case, read *Note Sheet Options::, option `--medium' for more.
818
819
820File: a2ps.info,  Node: It Prints Junk,  Next: It Says my File is Binary,  Prev: It Does Not Fit on the Paper,  Up: Why Does ...?
821
822Why Does it Print Junk?
823-----------------------
824
825     What I get on the printer is long and incomprehensible.  It does
826     not seem to correspond to what I wanted to print.
827
828   You are probably printing a PostScript file or equivalent.  Try to
829print with `-Z': a2ps will try to do his best to find what is the
830program that can help you (*note Your Delegations::).  In case of doubt,
831don't hesitate to save into a file, and check the content with
832`Ghostview', or equivalent:
833     $ a2ps my_weird_file -Z -o mwf.ps
834     $ gv mwf.ps
835
836If your a2ps is correctly installed, you can use the `display'
837fake-printer:
838     $ a2ps my_weird_file -Z -P display
839
840   If it is incorrect, ask for help around you.
841
842
843File: a2ps.info,  Node: It Says my File is Binary,  Next: It Refuses to Change the Font Size,  Prev: It Prints Junk,  Up: Why Does ...?
844
845Why Does it Say my File is Binary?
846----------------------------------
847
848     a2ps complains that my file is binary though it is not.
849
850   There are several reasons that can cause a2ps to consider a file is
851binary:
852   - there are many non printable characters in the file.  Then you
853     need to use the option `--print-anyway'.
854
855   - the file is sane, composed of printable characters.  Then it is
856     very likely that `file(1)' said the type of the file is `data', in
857     which case a2ps prefers not to print the file.  Then you can
858     either:
859        - specify the type of the file, for instance `-Eplain';
860
861        - specify to print in any case, `--print-anyway';
862
863        - remove the annoying rule from the system's `sheets.map':
864               binary: <data*>
865
866        - insert in your own `~/.a2ps/sheets.map' a rule that overrides
867          that of the system's `sheets.map':
868               # Load the system's sheets.map
869               include(/usr/local/share/a2ps/sheets/sheets.map)
870
871               # Override the rule for files with type `data' according to file(1)
872               plain: <data*>
873
874          But this is not very good, since then this rule is always the
875          first tested, which means that any file with type `data'
876          according to `file(1)' will be printed in `plain' style, even
877          if the file is called `foo.c'.
878
879        - if your files can be recognized, insert a new rule in a
880          `sheets.map', such as
881               # file(1) says it's data, but it's pure text
882               plain:   /*.txx/
883
884
885
886
887File: a2ps.info,  Node: It Refuses to Change the Font Size,  Prev: It Says my File is Binary,  Up: Why Does ...?
888
889Why Does it Refuse to Change the Font Size
890------------------------------------------
891
892     _a2ps does not seem to honor `--font-size'  (or
893     `--lines-per-page', or `--chars-per-line')._
894
895   This is probably because you used `-1'..`-9' after the
896`--font-size'.  This is wrong, because the options `-1'..`-9' set the
897font size (so that there are 80 characters per lines), and many other
898things (*Note Page Options::, option `--font-size').
899
900   Hence `a2ps --font-size=12km -4' is exactly the same thing as `a2ps
901-4', but is different from `a2ps -4 --font-size=12km'.  Note that the
902`pure' options (no side-effects) to specify the number of virtual pages
903are `--columns' and `--rows'.
904
905
906File: a2ps.info,  Node: How Can I ...?,  Next: Please tell me...,  Prev: Why Does ...?,  Up: FAQ
907
908How Can I ...?
909==============
910
911   A mini how-to on a2ps.
912
913* Menu:
914
915* Leave Room for Binding::      Specifying Margins
916* Print stdin::                 Using a2ps in a pipe chain
917* Change the Fonts::            Tired of Courier?
918* The Old Option -b?::          Printing in Bold
919* Pass Options to lpr::         Disable the banner
920* Non PostScript Printers::     Using GhostScript
921* Man Pages with Underlines::   Now it Prints With Italics
922
923
924File: a2ps.info,  Node: Leave Room for Binding,  Next: Print stdin,  Prev: How Can I ...?,  Up: How Can I ...?
925
926How Can I Leave Room for Binding?
927---------------------------------
928
929   The option `--margin[=SIZE]' is meant for this.  See *Note Sheet
930Options::.
931
932
933File: a2ps.info,  Node: Print stdin,  Next: Change the Fonts,  Prev: Leave Room for Binding,  Up: How Can I ...?
934
935How Can I Print `stdin'?
936------------------------
937
938   a2ps prints the standard input if you give no file name, or if you
939gave `-' as file name.  Automatic style selection is of course much
940weaker: without the file name, a2ps can only get `file(1)''s opinion
941(*note Style Sheet Files::).  In general it means most delegations are
942safe, but there will probably be no pretty-printing.
943
944   `You' can supply a name to the standard input (`--stdin=NAME') with
945which it could guess the language.
946
947
948File: a2ps.info,  Node: Change the Fonts,  Next: The Old Option -b?,  Prev: Print stdin,  Up: How Can I ...?
949
950How Can I Change the Fonts?
951---------------------------
952
953   *Note Designing PostScript Prologues::, for details.  Make sure that
954all the information a2ps needs is available (*note Font Files::).
955
956
957File: a2ps.info,  Node: The Old Option -b?,  Next: Pass Options to lpr,  Prev: Change the Fonts,  Up: How Can I ...?
958
959How Can I Simulate the Old Option `-b'?
960---------------------------------------
961
962   By the past, a2ps had an option `-b' with which the fonts were bold.
963Since now the fonts are defined by prologues (*note Designing
964PostScript Prologues::) this option no longer makes sense.  A
965replacement prologue is provided: `bold'.  To use it, give the option
966`--prologue=bold'.
967
968
969File: a2ps.info,  Node: Pass Options to lpr,  Next: Non PostScript Printers,  Prev: The Old Option -b?,  Up: How Can I ...?
970
971How Can I Pass Options to `lpr'
972-------------------------------
973
974     How can I tell `a2ps' to ask `lpr' no to print the banner?
975
976     How can I pass specific options to `lp'?
977
978   If your `Printer:' fields in the configuration files were properly
979filled (*note Your Printers::), you can use the variable `lp.options'
980to pass options to `lpr' (or `lp', depending on your environment):
981
982     a2ps -Dlp.options="-h -s" -P printer
983
984You can also define `lp.options' once for all, *Note Defining
985Variables::.
986
987   Finally, you can use `Printer:' several times to reach a printer
988with different `lpr' options.
989
990
991File: a2ps.info,  Node: Non PostScript Printers,  Next: Man Pages with Underlines,  Prev: Pass Options to lpr,  Up: How Can I ...?
992
993How Can I Print on Non PostScript Printers?
994-------------------------------------------
995
996     I use a2ps at work and wish to use it at home, but my printer is
997     not PostScript.  How can I do?
998
999   `Ghostscript' might be the tool you need (*note Glossary::).  It
1000support conversion to many different non PostScript printers.
1001
1002   Here are some tips on how to use a non PostScript printer.  If
1003somebody feels like writing a more precise documentation, she really is
1004welcome.
1005
1006   Please refer to the `Ghostscript' documentation for a precise
1007description of the tuning you need.
1008
1009   Basically, the first step you need is to achieve to call
1010`Ghostscript' in a pipe chain.  In other words, try to find out the
1011right arguments `Ghostscript' needs in order to print with a command
1012like this:
1013     $ cat file.ps | gs MORE ARGUMENTS
1014
1015   In general it is the same command as for calling `Ghostscript' with
1016a filename, except that the file name to use is `-':
1017     $ cat file.ps \
1018       | gs -q -dNOPAUSE -sDEVICE=deskjet -sOutputFile=- - -c quit\
1019       | lp -dPRINTER-NAME
1020
1021   Once it works, it is then easy to settle the right `Printer:' line
1022in your configuration file (*note Your Printers::).  For instance:
1023     Printer: djet \
1024       | gs -q -dNOPAUSE -sDEVICE=deskjet -sOutputFile=- - -c quit\
1025       | lp -d djet
1026
1027   Christian Mondrup <scancm@biobase.dk> uses a2ps under Windows with a
1028non PostScript printer.  He uses:
1029     DefaultPrinter: | //c/gstools/gs5.10/Gswin32c.exe         \
1030        -Ic:\gstools\gs5.10;c:\gstools\gs5.10\fonts            \
1031        -sDEVICE=ljet4 -sPAPERSIZE=a4 -dNOPAUSE -r300 -dSAFER  \
1032        -sOutputFile="\\spool\HP LaserJet 5L (PCL)"            \
1033        -q - -c quit
1034
1035
1036File: a2ps.info,  Node: Man Pages with Underlines,  Prev: Non PostScript Printers,  Up: How Can I ...?
1037
1038How Can I Print Man Pages with Underlines
1039-----------------------------------------
1040
1041     By the past, when I printed a man page with a2ps, it used
1042     underlines, but now it uses italics.  I want underlines back!
1043
1044   Use `a2ps --pro=ul'.
1045
1046
1047File: a2ps.info,  Node: Please tell me...,  Prev: How Can I ...?,  Up: FAQ
1048
1049Please tell me...
1050=================
1051
1052   Wondering something?
1053
1054* Menu:
1055
1056* Is a2ps Y2K compliant?::      Printing dates in short format
1057* The Options Have Changed::    Respect The Users
1058* Why not using yacc::          Why Using Style Sheets
1059
1060
1061File: a2ps.info,  Node: Is a2ps Y2K compliant?,  Next: The Options Have Changed,  Prev: Please tell me...,  Up: Please tell me...
1062
1063Is a2ps Y2K compliant?
1064----------------------
1065
1066   The famous Y2K(1) problem...
1067
1068   Yes, a2ps is Y2K compliant... provided that you have either a version
1069more recent than 4.10.3.  The expansions of the following escapes were
1070broken (giving `100' instead of `00'): `%D', `%W', `$D', `$W'.
1071
1072   Nevertheless, please note that if you required a two digit year,
1073expect to have `Jan 1st, 00' someday.  *You* are responsible of the
1074format you want for the date: *Note Escapes::.
1075
1076   ---------- Footnotes ----------
1077
1078   (1) Year 2000.
1079
1080
1081File: a2ps.info,  Node: The Options Have Changed,  Next: Why not using yacc,  Prev: Is a2ps Y2K compliant?,  Up: Please tell me...
1082
1083Why Have the Options Changed?
1084-----------------------------
1085
1086     The options of this a2ps are not the same as in the previous
1087     versions.
1088
1089   True.  But the old scheme (up to version 4.6.1) prevented us from
1090offering more options.  We *had* to drop it, and to fully redesign the
1091options handling.
1092
1093   Since that profound change, we try to change as little as possible
1094between versions.  Nevertheless, as the time passes, we discover that
1095some never used options should be renamed, or used for something else.
1096In these cases, compatibility code is left for a long time.
1097
1098   Anywhere you put options but the command line (e.g., in a2ps
1099configuration files or in shell scripts), *avoid using short options*,
1100since short options are much more likely to be changed (there are not
1101so many, so it is a precious resource).  Since there are as many long
1102options as one wants, we can leave compatibility code with the long
1103options.
1104
1105
1106File: a2ps.info,  Node: Why not using yacc,  Prev: The Options Have Changed,  Up: Please tell me...
1107
1108Why not having used `yacc' and such
1109-----------------------------------
1110
1111   There are several reasons why we decided not to use grammars to parse
1112the files.  Firstly it would have made the design of the style sheets
1113much more tricky, and today a2ps would know only 4 or 5 languages.
1114
1115   Secondly, it limits the number of persons who could build a style
1116sheet.
1117
1118   Thirdly, we did not feel the need for such a powerful tool: handling
1119the keywords and the sequences is just what the users expect.
1120
1121   Fourthly, any extension of a2ps would have required to recompile.
1122
1123   And last but not least, using a parser requires that the sources are
1124syntactic bug free, which is too strong a requirement.
1125
1126   Nevertheless, `PreScript' gives the possibility to have on the one
1127hand a syntactic parser which would produce `PreScript' code, and on
1128the other hand, a2ps, which would make it PostScript.  This schema
1129seems to us a good compromise.  If it is still not enough for you, you
1130can use the library.
1131
1132
1133File: a2ps.info,  Node: Glossary,  Next: Genesis,  Prev: FAQ,  Up: Top
1134
1135Glossary
1136********
1137
1138   This section settles some terms used through out this document, and
1139provides the definitions of some terms you probably want to know about.
1140
1141"Adobe"
1142     Adobe is the firm who designed and owns the PostScript language.
1143     The patent that printer manufacturers must pay to Adobe is the
1144     main reason why PostScript printers are so expansive.
1145
1146"AFM file"
1147     AFM stands for Adobe Font Metrics.  These files contain everything
1148     one needs to know about a font: the width of the characters, the
1149     available characters etc.
1150
1151"Charset"
1152"Code Set"
1153     Cf. Encoding.
1154
1155"Delegate"
1156     Another filter (application) which a2ps may call to process some
1157     files.  This feature is especially meant for page description
1158     files (*note Your Delegations::).
1159
1160"DSC"
1161"Document Structuring Conventions"
1162     Because PostScript is a language, any file describing a document
1163     can have an arbitrary complexity.  To ease the post-processing of
1164     PostScript files, the document should follow some conventions.
1165     Basically there are two kinds of conventions to follow:
1166    Page Independence
1167          Special comments state where the pages begin and end.  With
1168          these comments (and the fact that the code describing a page
1169          starts and ends somewhere, which is absolutely not necessary
1170          in PostScript), very simple programs (such as `psnup',
1171          `psselect' etc.) can post process PostScript files.
1172
1173    Requirements
1174          Special features may be needed to run correctly the file.
1175          Some comments specify what services are expected from the
1176          printer (e.g., fonts, duplex printing, color etc.), and other
1177          what features are provided by the file itself (e.g., fonts,
1178          procsets etc.), so that a print manager can decide that a
1179          file cannot be printed on that printer, or that it is
1180          possible if the file is slightly modified (e.g., adding a
1181          required font not known by the printer) etc.
1182
1183     The DSC are edited by Adobe.  A document which respects them is
1184     said to be "DSC conformant".
1185
1186     a2ps follows all the DSC.
1187
1188"Duplex"
1189"DuplexTumble"
1190"DuplexNoTumble"
1191     To print "Duplex" is to print double-sided.  There are two ways to
1192     print Duplex depending whether the second face is printed
1193     upside-down or not:
1194    "DuplexTumble"
1195          DuplexTumble is suitable when (if it were to be bound) the
1196          document would be bound along the short edge (for instance
1197          when you are printing booklets).
1198
1199    "DuplexNoTumble"
1200          DuplexNoTumble corresponds to binding along the long edge of
1201          the medium.  A typical case is when printing one-up.
1202
1203"Encoding"
1204     Association of human readable characters, and computers' internal
1205     numbered representation.  In other words, they are the alphabets,
1206     which are different according to your country/mother tongue.
1207     E.g.: ASCII, Latin 1, corresponding to Western Europe etc.
1208
1209     To know more about encodings, see *Note What is an Encoding::.
1210
1211"`Ghostscript'"
1212
1213"`gs'"
1214     `Ghostscript' (http://www.cs.wisc.edu/~ghost/index.html), `gs' for
1215     short, is a full PostScript interpreter running under many various
1216     systems (Unices, MS-DOS, Mac etc.).  It comes with a large set of
1217     output formats allowing many different applications:
1218    _Displaying_
1219          It can be used either to view PostScript files (in general
1220          thanks to a graphic interface such as `Ghostview' or `gv'
1221          ...).
1222
1223    _Converting_
1224          To may useful languages/formats: PDF, rewriting in portable
1225          PostScript or Encapsulated PS etc.
1226
1227    _Translating_
1228          to a printer dedicated language, e.g., PCL.  In particular,
1229          thanks to `ghostscript', you may print PostScript files on
1230          non PostScript printers.
1231
1232"Face"
1233     A virtual style given to some text.  For instance, _Keyword_,
1234     _Comment_ are faces.
1235
1236"Headings"
1237     Everything that goes around the page and is not part of the text
1238     body.  Typically the title, footer etc.
1239
1240"Key"
1241     Many objects used in a2ps, such as encodings, have both a key and
1242     a name.  The word "name" is used for a symbol, a label, which is
1243     only meant to be nice to read by a human.  For instance `ISO Latin
1244     1' is a name.  a2ps never uses a name, but the key.
1245
1246     A "key" is the identifier of a unique object.  This is information
1247     that a2ps processes, hence, whenever you need to specify an object
1248     to a2ps, use the key, not its name.  For instance `latin1' is the
1249     unique identifier of the `ISO Latin 1' encoding.
1250
1251"Logical page"
1252     Cf. Virtual page.
1253
1254"lhs"
1255"left hand side"
1256     See "P-rule".
1257
1258"Medium"
1259     Official name (by Adobe) given to the output physical support.  In
1260     other words, it means the description of a sheet, e.g., A4, Letter
1261     etc.
1262
1263"Name"
1264     See "Key".
1265
1266"Page"
1267     A single side of a sheet.
1268
1269"Page Description Language"
1270     A language that describes some text (which may be enriched with
1271     pointers, pictures etc.) and its layout.  `HTML', PostScript,
1272     LaTeX, `roff' and others are such languages.  A file written in
1273     those languages is not made to be read as is by a human, but to be
1274     transformed (or compiled) into a readable form.
1275
1276"PCL"
1277     FIXME:
1278
1279"PFA file"
1280     PostScript Font in ASCII format.  This file can be directly down
1281     loaded to provide support for another font.
1282
1283"PFB file"
1284     PostScript Font in Binary format.  In PFA files there are long
1285     sequences of hexadecimal digits.  Here these digits are
1286     represented by their value, hence compressing 2 characters in a
1287     PFA into 1 in the PFB.  This is the only advantage since a PFB
1288     file cannot be directly sent to printer: it must first be
1289     decompressed (hence turned into a PFA file) before being used.
1290
1291"PostScript"
1292     "PostScript" is a page description language designed for _Raster
1293     output devices_.  It is even more powerful than that: unlike to
1294     `HTML', or `roff', but as TeX and LaTeX, it is truly a programming
1295     language which main purpose is to draw (on sheets).  Most programs
1296     are a list of instructions that describes lines, shades of gray,
1297     or text to draw on a page.  This is the language that most
1298     printers understand.
1299
1300     Note that the fact that PostScript is a programming language is
1301     responsible of both its success and its failure.  It is a big win
1302     for the PostScript programmer who can easily implement a lot of
1303     nice visual effects.  It is a big loss because the page
1304     descriptions can have an arbitrary complexity, hence rendering can
1305     be really slow (remember the first Laser you had, or even
1306     `Ghostscript'.  `PDF' has been invented by Adobe to remedy these
1307     problems).
1308
1309     PostScript is a trademark of Adobe Systems Incorporated.
1310
1311"PPD file"
1312"PostScript Printer Description file"
1313     These files report everything one needs to know about a printer:
1314     the known fonts, the patches that should be down loaded, the
1315     available memory, the trays, the way to ask it duplex printing,
1316     the supported media, etc.
1317
1318     PostScript has pretended to be a device independent page
1319     description language, and the PPD files are here to prove that
1320     device independence was a failure.
1321
1322"ProcSet"
1323     Set of (PostScript) procedures.
1324
1325"Prologue"
1326     PostScript being a language, a typical PostScript program (i.e. a
1327     typical PostScript file) consists of two parts.  The first part is
1328     composed of resources, such as fonts, procsets, etc. and the
1329     second part of calls to these procedures.  The first part is
1330     called the "prologue", and the second, the "script".
1331
1332"P-rule"
1333     Pretty printing rule.  It is composed of a "left-hand side",
1334     ("lhs" for short), and a "right-hand side", ("rhs").  The lhs
1335     describes when the rule is triggered (i.e., the pattern of text to
1336     match), and the rhs specifies the pretty printed output.  *Note
1337     P-Rules::, for more semantical details, and see *Note Syntax for
1338     the P-Rules::, for implementation.
1339
1340"`psutils'"
1341     The "psutils"
1342     (http://www.dcs.ed.ac.uk/home/ajcd/psutils/index.html) is a set of
1343     tools for PostScript post processing written by Angus Duggan
1344     (http://www.dcs.ed.ac.uk/home/ajcd/).  They let you resize the
1345     frame into which the page is drawn, reorder or select pages, put
1346     several pages onto a single sheet, etc.  To allow the `psutils' to
1347     run correctly, the PostScript files must be DSC conformant, and
1348     the bad news is that many PostScript drivers produce files which
1349     are not.  For some common cases (e.g., Micro$oft tools), Angus
1350     Duggan included in the package some tools (named `fix...ps') to
1351     fix typical problems.  `fixps' is a collection of recipes on when
1352     to run what `fix' tool.
1353
1354"Raster Image Processor"
1355"RIP"
1356     The hardware and/or software that translates data from a high-level
1357     language (e.g., PostScript) into dots or pixels in a printer or
1358     image setter.
1359
1360"Raster Output Device"
1361     Behind these words is hidden the general class of devices which
1362     have Pixels that can be addressed individually: Laser, Ink or Dot
1363     printers, but also regular screens etc.  It is typically opposed
1364     to the class of devices which _plot_, i.e., have a pen that they
1365     move on the paper.
1366
1367"rhs"
1368"right hand side"
1369     See "P-rule".
1370
1371"RIP"
1372     See "Raster Image Processor".
1373
1374"Script"
1375     See "Prologue".
1376
1377"Sheet"
1378     The physical support of the printing: it may support one or two
1379     pages, depending on your printing options.
1380
1381"Style sheet"
1382     Set of rules used by a2ps to give a face to the strings of a file.
1383     In a2ps, each programming language which is supported is defined
1384     via one style-sheet.
1385
1386"Tumble"
1387     See "Duplex".
1388
1389"Virtual page"
1390     Area on a physical page in which a2ps draws the content of a file.
1391     There may be several virtual pages on a physical page. ("virtual
1392     page" is the name recommended by Adobe).
1393
1394
1395File: a2ps.info,  Node: Genesis,  Next: Copying,  Prev: Glossary,  Up: Top
1396
1397Genesis
1398*******
1399
1400   Here are some words on a2ps and its history.
1401
1402* Menu:
1403
1404* History::                     Where does it come from
1405* Thanks::                      People who really helped
1406* Translators::                 People who brought support of your tongue
1407
1408
1409File: a2ps.info,  Node: History,  Next: Thanks,  Prev: Genesis,  Up: Genesis
1410
1411History
1412=======
1413
1414   The initial version was a shell program written by Evan Kirshenbaum
1415<evan@csli>.  It was very slow and contained many bugs.
1416
1417   A new version was written in `C' by Miguel Santana
1418<Miguel.Santana@st.com> to improve execution speed and portability.
1419Many new features and improvements have been added since this first
1420version.  Many contributions (changes, fixes, ideas) were done by
1421a2ps users in order to improve it.
1422
1423   From the latest version from Miguel Santana (4.3), Emmanuel Briot
1424implemented bold faces for keywords in `Ada', `C' and `C++'.
1425
1426   From that version, Akim Demaille <akim@freefriends.org> generalized
1427the pretty-printing capabilities, implemented more languages support,
1428and other features.
1429
1430
1431File: a2ps.info,  Node: Thanks,  Next: Translators,  Prev: History,  Up: Genesis
1432
1433Thanks
1434======
1435
1436   Patrick Andries, from Alis Technologies inc. (http://www.alis.com/)
1437and Roman Czyborra (see his home page (http://czyborra.com/)), provided
1438us with important information on encodings.  We strongly recommend that
1439you go and read these pages: there is a lot to learn.
1440
1441   Juliusz Chroboczek worked a lot on the integration of the products of
1442Ogonkify (such as Latin 2 etc. fonts) in a2ps.  Without his help, and
1443the time is devoted to both a2ps and `ogonkify', many non west-European
1444people would still be unable to print easily texts written in their
1445mother tongue.
1446
1447   Denis Girou brought a constant and valuable support through out the
1448genesis of pretty-printing a2ps.  His comments on both the program and
1449the documentation are the origin of many pleasant features (such as
1450`--prologue').
1451
1452   Alexander Mai provided us with invaluable help in the development.
1453He spotted several times subtle bugs in a2ps and the contributions, he
1454keeps a vigilant eye on portability issues, he checks and improves the
1455style sheets, and he maintains a port of a2ps for OS/2.
1456
1457   Graham Jenkins, with an extraordinary regularity, tortures a2ps on
1458weird systems that nobody ever heard of `:)'.  Graham is usually the
1459ultimate test: if he says I can release a2ps, I rest reassured that,
1460yes, this time it *will* compile!  If a2ps works today on your system,
1461you should thank Graham too!
1462
1463   Of course this list is not up to date, and never will.  We would
1464like to thank everybody that helped us, talked to us, and even
1465criticized us with the intention to help us to improve a2ps.  Of course
1466it doesn't sound right, yes it sounds a little childish, but we can
1467tell you: we would *never* have the strength and the faith of building
1468and maintaining a2ps without the support of all these guys.
1469
1470   While a2ps is finally just a couple of bits on a hard disk, to us it
1471is an adventure we live with other humans, and, boy, that's a darn good
1472pleasure!
1473
1474