jv@mh.nl (Johan Vromans) (06/13/90)
This perl program translates the PostScript output for the Perl
Reference Guide to troff. It may be useful for other things as well.
NOTE: This program was sent to me by Barry Friedman
<uunet!chekov!friedman>. You should contact him for details
and remarks. I'm only passing it through.
Submitted-by: Barry Friedman <uunet!chekov!friedman>
Archive-name: tguide/part01
---- Cut Here and unpack ----
#!/bin/sh
# This is tguide, a shell archive (shar 3.24)
# made 06/13/1990 08:19 UTC by jv@squirrel.mh.nl
# Source directory /u/jv/reftf
#
# existing files WILL be overwritten
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 3160 -rwxrwxrwx tguide
#
if touch 2>&1 | fgrep '[-amc]' > /dev/null
then TOUCH=touch
else TOUCH=true
fi
# ============= tguide ==============
echo "x - extracting tguide (Text)"
sed 's/^X//' << 'SHAR_EOF' > tguide &&
X#!/utils/bin/perl
X$em='\\\\(em'; # em dash
X$dg='\\\\(dg'; # dagger
X# scale and page position factors
X$hscale=3;
X$vscale=2.7;
X$hcorr=250;
X$vcorr=120;
X
X# this sequence works with Eroff, don't know about others
Xprint q|\X'code="\e033&l2S"'\c|,"\n"; # laserjet 2000 control sequence
X
Xprint ".po 0\n";
Xprint ".in 0\n";
X
Xwhile (<>) {
X
X #-------------------------------------------------
X # Skip a lot of useless stuff
X #-------------------------------------------------
X
X if ( /^%%/ ) { # comments skipped
X next;
X }
X
X if ( / gr$/ ) {
X #?
X next;
X }
X
X if ( / lw$/ ) {
X #?
X next;
X }
X
X if ( / lin$/ ) {
X #?
X next;
X }
X
X if ( / setTxMode$/ ) {
X #?
X next;
X }
X
X if ( / pen$/ ) {
X #?
X next;
X }
X
X if ( /\)kp$/ ) {
X #frame ?
X next;
X }
X
X if ( / xl$/ ) {
X #frame ?
X next;
X }
X
X if ( / fr$/ ) {
X #frame ?
X next;
X }
X
X if ( /bu fc$/ ) {
X next;
X }
X
X if ( /fs$/ ) {
X next;
X }
X
X if ( /bn$/ ) {
X next;
X }
X #-------------------------------------------------
X # Now for some real work
X #-------------------------------------------------
X
X if ( /^move1$/ ) { # output page NOTE: Eroff 2-up landscape handles
X # this automatically - otherwise toggle a correction
X # factor to be added to horizontal position
X #move to left side of page
X next;
X }
X
X if ( /^move2$/ ) { # output page
X #move to right side of page
X next;
X }
X
X if ( /^op$/ ) { # output page
X print ".bp\n";
X next;
X }
X
X #-------------------------------------------------
X # Font Changes
X #-------------------------------------------------
X
X if ( /Helvetica fnt/ ) {
X print "'ft H\n";
X next;
X }
X
X if ( /Times-Bold fnt/ ) {
X print ".ft B\n";
X next;
X }
X
X if ( /Times-Italic fnt/ ) {
X print ".ft I\n";
X next;
X }
X if ( /Times-Roman fnt/ ) {
X print ".ft R\n";
X next;
X }
X #-------------------------------------------------
X # Size translations (from 2up guide
X #-------------------------------------------------
X if ( /(\d+) fz/ ) {
X $sz = $1;
X if ($sz == 24) { $sz = 18; }
X elsif ($sz == 18) { $sz = 12; }
X elsif ($sz == 14) { $sz = 10; }
X elsif ($sz == 12) { $sz = 8; }
X elsif ($sz == 10) { $sz = 8; }
X
X print ".ps $sz\n";
X $vs = $sz+2;
X print ".vs $vs\n";
X next;
X }
X #-------------------------------------------------
X # Positioning
X #-------------------------------------------------
X if ( /(-*\d+) (-*\d+) gm$/ ) {
X $v= $1; # vertical pos
X $h= $2; # horiz. pos
X if ($1 < 0 || $2 < 0 ) {
X next;
X }
X $sc_v = int($v * $vscale) - $vcorr;
X print ".br\n";
X print ".sp |$sc_v","u\n";
X $sc_h = int($h * $hscale) - $hcorr;
X print "\\h\'|$sc_h","u\'\\c\n";
X next;
X }
X #-------------------------------------------------
X # Text translations
X #-------------------------------------------------
X if ( /[(](.*)[)].*show$/ ) {
X $ln = $1;
X $ln =~ s/\\240/$dg/g;
X $ln =~ s/\\253/'/g;
X $ln =~ s/\\311/.../g;
X $ln =~ s/\\312/\\|/g;
X $ln =~ s/\\322/``/g;
X $ln =~ s/\\323/''/g;
X $ln =~ s/\\325/'/g;
X $ln =~ s/\\32./$em/g;
X
X $ln =~ s/\\\(/\(/g;
X $ln =~ s/\\\)/\)/g;
X # guard column 1 of output
X if ( $ln =~ /^[.'" ]/ ) {
X $ln = "\\&" . $ln;
X }
X print "$ln\n";
X next;
X }
X print STDERR "?: $_\n"; # Anything I missed
X}
SHAR_EOF
$TOUCH -am 0531181990 tguide &&
chmod 0777 tguide ||
echo "restore of tguide failed"
set `wc -c tguide`;Wc_c=$1
if test "$Wc_c" != "3160"; then
echo original size 3160, current size $Wc_c
fi
exit 0
--
Johan Vromans jv@mh.nl via internet backbones
Multihouse Automatisering bv uucp: ..!{uunet,hp4nl}!mh.nl!jv
Doesburgweg 7, 2803 PL Gouda, The Netherlands phone/fax: +31 1820 62944/62500
------------------------ "Arms are made for hugging" -------------------------