[comp.soft-sys.andrew] Printing Revisited

nsb@THUMPER.BELLCORE.COM (Nathaniel Borenstein) (08/10/90)

I know this was discussed a while back on this list, but I can't seem to
dig it up.

I think that I'm running a down-level version of ditroff or psdit, and
that this is causing embedded Andrew insets (zip, raster) not to print
properly.  When I capture the postscript output for an embedded zip, for
example, it starts something like this:

% included PostScript
\
%!\
  PB\
    /troffadjust { pop 0 } def\
    385 troffadjust 215 neg translate\
%!PS-Adobe-2.0 EPSF-1.2\
% Begin Zip PostScript Prelude  Version 0.0\

My printer seems to be dying on the backslashes.  I'm sure I've seen
this problem discussed on this list before, so I'm sorry to bring it up
again, but could someone please tell me what, exactly, the problem is? 
Thanks.  -- Nathaniel

jaap@mtxinu.COM (Jaap Akkerhuis) (08/15/90)

In article <oakfsKy0M2YtM89V1a@thumper.bellcore.com> nsb@THUMPER.BELLCORE.COM (Nathaniel Borenstein) complains:
 > I know this was discussed a while back on this list, but I can't seem to
 > dig it up.
 > 
 > I think that I'm running a down-level version of ditroff or psdit, and
 > that this is causing embedded Andrew insets (zip, raster) not to print
 > properly.  When I capture the postscript output for an embedded zip, for
 > example, it starts something like this:
 > 
 > % included PostScript
 > \
 > %!\
 >   PB\
 >     /troffadjust { pop 0 } def\
 >     385 troffadjust 215 neg translate\
 > %!PS-Adobe-2.0 EPSF-1.2\
 > % Begin Zip PostScript Prelude  Version 0.0\
 > 
 > My printer seems to be dying on the backslashes.  I'm sure I've seen
 > this problem discussed on this list before, so I'm sorry to bring it up
 > again, but could someone please tell me what, exactly, the problem is? 
 > Thanks.  -- Nathaniel

Yeah, this has been discussed before. It is a problem in some
versions of troff, starting somewhere at DWB2.0. For the people
who have the source, the fix is in the ``scaled down version of
stdio'' which is part of troff. If you look closely you will find
in printf and fprintf a place where troff places a backslash in
front of every non-printable character. It does this with a statements
in the form of

	if(c < 32 )
		putchar('\');

Well, that should be something more in the style of:

	if(c < 32)
		switch(c) {
			case '\n':
			case '\t':
			case '\r':
				break;
			default: putchar('\');
		}

For people who don't have the source, complain loudly at your
supplier.

And yes, this has been discussed before.


	jaap

PS. All code fragments above are from memory, and the real code will
    likely be different, but this is the basic idea.

nsb@THUMPER.BELLCORE.COM (Nathaniel Borenstein) (08/15/90)

Many thanks to all who responded.  The fix worked, and I can now print
Andrew documents with embedded insets.  Thank you all!  -- Nathaniel