jmm@skivs.UUCP (Joel M. Miller) (11/28/89)
Is there a filter? -- Joel M Miller Internet: jmm@skivs.ski.org Smith-Kettlewell Institute Usenet: uunet!skivs!jmm 2232 Webster St Bitnet: jmm%skivs.ski.org@uunet.uu.net San Francisco, CA 94115 Voice: 415/561-1703 Fax: 415/561-1610
davew@hp-ptp.HP.COM (Dave_Waller) (11/30/89)
No filter that I'm aware of for troff. However, if you are trying to take nroff output and make it printable on a dumb printer, you can use 'col' to remove overstrikes and such, and that should work. Dave Waller \ The opinions expressed are solely my own, and in no way Hewlett-Packard Co. \ represent those of my employer (but we all know dave@hpdstma.ptp.hp.com | hplabs!hpdstma!dave \ they should!)
bd@hp-ses.SDE.HP.COM (Bob Desinger) (12/04/89)
I wanted to get at the different fonts built into the Thinkjet. You
can do this with escape sequences, but who can remember them all?
I wanted to type a macro (as in .b to turn on bold, .c to turn on
compressed, and so forth). I also wanted to occasionally be able to
use an nroff-style string (as in \*B to turn on bold, \*C to turn on
compressed, and so forth), so I whipped up the attached crude macro
package.
It turns on the appropriate fonts, sets the line length, and performs
page breaks in about the most barbaric way you could imagine. That's
about *all* it does. I've used it for a couple of years to create new
text when all I want is to change fonts and get a new page to come out
in the right spot.
Sadly, you'll have to know a fair amount of nroff to modify it. I
wrote it for my own use, but there are at least examples in the file
as comments. Briefly:
.c
This turns on compressed letters and sets the margins for it.
.e
This turns the letters into expanded and sets the margins.
.l
This turns on the font I use for letters,
called "expanded-compressed" (?!) in the Thinkjet manual.
That's a lower-case L up there in the macro name.
.r
This turns on the default ("Roman") font and margins,
which matches the Thinkjet at power-up.
You can also set \*Bboldface\*S in any font,
and \*Iitalic\*N (really just underlined).
Bold (\*B) is turned off by Shy (\*S);
Italic (\*I, underlined) is turned off by Normal (\*N).
[I couldn't think of a cute name for un-italic.]
The macro package starts nroff in no-fill mode because that's what I
use for the lecture outlines that I type up.
The BP macro does the Begin-Page spacing and header printing. You get
an extra page with header after the final page of output---this is
what I mean by barbaric---but I typically thwart that by finishing up
my documents with a final command:
.rm BP
It's crude but it works. I'm real happy with the results on my
Integral PC and its built-in Thinkjet. My typical command line is:
nroff ~/lib/tmac.tj file
-- bd
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by Bob Desinger <bd@hp-ses> on Mon Dec 4 00:16:32 1989
#
# This archive contains:
# tmac.tj (contains escape characters)
rm -f /tmp/uud$$
(echo "begin 777 /tmp/uud$$\n \nend" | uudecode) >/dev/null 2>&1
if [ -f /tmp/uud$$ ]
then
rm -f /tmp/uud$$
unpacker=uudecode
else
echo Compiling unpacker for files containing escape characters
pwd=`pwd`; cd /tmp
cat >unpack$$.c <<-'EOF'
#include <stdio.h>
#define DEC(c) (((c) - ' ') & 077)
main()
{
int n;
char dest[128], a,b,c,d;
scanf("begin %o ", &n);
gets(dest);
if (freopen(dest, "w", stdout) == NULL) {
perror(dest);
exit(1);
}
while ((n=getchar()) != EOF && (n=DEC(n))!=0) {
while (n>0) {
a = DEC(getchar());
b = DEC(getchar());
c = DEC(getchar());
d = DEC(getchar());
if (n-- > 0) putchar(a << 2 | b >> 4);
if (n-- > 0) putchar(b << 4 | c >> 2);
if (n-- > 0) putchar(c << 6 | d);
}
n=getchar();
}
exit(0);
}
EOF
cc -o unpack$$ unpack$$.c
rm unpack$$.c
cd $pwd
unpacker=/tmp/unpack$$
fi
echo x - tmac.tj '[contains escape characters]'
$unpacker <<'@eof'
begin 664 tmac.tj
M+EPB(&YR;V9F("UM=&H@;6%C<F]S(&9O<B!T:&4@=&AI;FMJ970*+EPB"BY<
M(B!&;VYT+7-E='1I;F<@;6%C<F]S.@HN7"()+F,@8V]M<')E<W-E9 D)+F(@
M8F]L9 HN7"()+F4@97AP86YD960)"2YI(&ET86QI8PHN7"()+G(@<F]M86X*
M+EPB"2YL(&QE='1E<B H(F5X<&%N9&5D+6-O;7!R97-S960B(&EN('1H92!M
M86YU86QS(3\I"BY<(B @(" @(" @(" @(" @("A)('5S92!I="!F;W(@=W)I
M=&EN9R!L971T97)S+"!S;R!)(&-A;&P@:70@(FQE='1E<B(I"BY<(@HN7"(@
M1F]N="US971T:6YG(&UA8W)O<R!C86X@8F4@:6YV;VME9"!A<SH*+EPB"2YX
M(&]N92UT;VME;BUI;BUX+69O<FUA="UW:71H;W5T+6)L86YK<PHN7"(@;W(*
M+EPB"2YX(")S979E<F%L('%U;W1E9"!W;W)D<R!I;B!X(&9O<FUA="(*+EPB
M(&]R"BY<(@DN> HN7"()5V]R9',@:6X@>"!F;W)M870L"BY<(@EA<R!M86YY
M(&QI;F5S(&%S('EO=2!W86YT"BY<(@HN7"(@06QS;RP@+F(@86YD("YI(&-A
M;B!T86ME(&%L=&5R;F%T:6YG(&%R9W,@;&EK92 N0B!A;F0@+DD@:6X@=&AE
M("UM;2!M86-R;W,N"BY<(@HN7"(@4W1R:6YG<SH*+EPB"5PJ0R!C;VUP<F5S
M<V5D"5PJ3"!L971T97()7"I"(&)O;&0)7"I3('-H>0HN7"()7"I%(&5X<&%N
M9&5D"5PJ4B!R;VUA;@E<*DD@:71A;&EC"5PJ3B!N;W)M86P*+EPB"BY<(B!"
M;VQD("A<*D(I(&ES('1U<FYE9"!O9F8@8GD@<VAY("A<*E,I.B @5&AI<R!I
M<R!A(%PJ0F)O;&1F86-E7"I3('=O<F0N"BY<(B!)=&%L:6,@*%PJ22D@:7,@
M='5R;F5D(&]F9B!B>2!N;W)M86P@*%PJ3BD[(&ET86QI8R!R96%L;'D@:G5S
M="!T=7)N<R!O;@HN7"(@=&AE('5N9&5R;&EN:6YG+"!A;F0@8&YO<FUA;"<@
M='5R;G,@:70@;V9F+@HN9',@4B ;)FLP4PHN9',@12 ;)FLQ4PHN9',@0R ;
M)FLR4PHN9',@3" ;)FLS4PHN9',@0B ;*',Q0@HN9',@4R ;*',P0@HN9',@
M22 ;)F1$"BYD<R!.(!LF9$ *+EPB"0E&;VYT(&UA8W)O<PHN7"(N8R!C;VUP
M<F5S<V5D(&9O;G0*+F1E(&,*+FEE(%Q<;B@N)" N9C$@7"I#(#$T,B B7%PD
M,2(*+F5L("YF,"!<*D,@,30R"BXN"BY<(BYE(&5X<&%N9&5D(&9O;G0*+F1E
M(&4*+FEE(%Q<;B@N)" N9C$@7"I%(#0P(")<7"0Q(@HN96P@+F8P(%PJ12 T
M, HN+@HN7"(N;"!L971T97(@9F]N= HN9&4@; HN:64@7%QN*"XD("YF,2!<
M*DP@-S$@(EQ<)#$B"BYE;" N9C @7"I,(#<Q"BXN"BY<(BYR(')O;6%N(&9O
M;G0*+F1E('(*+FEE(%Q<;B@N)" N9C$@7"I2(#@P(")<7"0Q(@HN96P@+F8P
M(%PJ4B X, HN+@HN7"(N8B!B;VQD9F%C90HN9&4@8@HN:64@7%QN*"XD(%PJ
M0EQ<)#%<*E-<7"0R7"I"7%PD,UPJ4UQ<)#1<*D)<7"0U7"I37%PD-EPJ0EQ<
M)#=<*E-<7"0X7"I"7%PD.5PJ4PHN96P@7"I"7&,*+BX*+EPB+FD@:71A;&EC
M("AR96%L;'D@=6YD97)L:6YE9"D*+F1E(&D*+FEE(%Q<;B@N)"!<*DE<7"0Q
M7"I.7%PD,EPJ25Q<)#-<*DY<7"0T7"I)7%PD-5PJ3EQ<)#9<*DE<7"0W7"I.
M7%PD.%PJ25Q<)#E<*DX*+F5L(%PJ25QC"BXN"BY<(@D)0V]M;6]N(&-O9&4@
M9F]R(&%L;"!F;VYT<PHN7"(@+F8P(&ES(&EN=F]K960@9F]R(&$@9F]N="UC
M:&%N9V4@=VET:&]U="!A<F=S+"!L:6ME("(N<B(@;VX@82!L:6YE(&)Y"BY<
M(@EI='-E;&8N("!)="!S=&]R97,@=&AE('-P96-I9FEE9"!N97<@9F]N="!A
M;F0@;&EN92UL96YG=&@L('1H96X@8VAA;F=E<PHN7"()=&\@=&AE;2X*+EPB
M"55S86=E.B @+F8P(&9O;G0M<W1R:6YG(&QI;F4M;&5N9W1H"BYD92!F, HN
M9',@*5 @7%PD,0HN;G(@(U @7%PD,@HN;&P@7%PD,@HN8G(*7%PD,0HN8G(*
M+BX*+EPB("YF,2!I<R!I;G9O:V5D(&9O<B!A(&9O;G0M8VAA;F=E('=I=&@@
M87)G<RP@;&EK92!@+F,@(F-O;7!R97-S960@=V]R9',B)RX*+EPB"4ET('!R
M:6YT<R!I=',@=&5X="UA<F=U;65N="!I;B!T:&4@<W!E8VEF:65D(&9O;G0@
M*'=I=&@@=&AE('-P96-I9FEE9 HN7"();&EN92!L96YG=&@I+"!T:&5N(')E
M<W1O<F5S('1H92!O<FEG:6YA;"!F;VYT(&%N9"!L:6YE+6QE;F=T:"X*+EPB
M"55S86=E.B @+F8Q(&9O;G0M<W1R:6YG(&QI;F4M;&5N9W1H('1E>'0M87)G
M"BYD92!F,0HN7"(@+FQL(%Q<)#()7"(@=7-E(&-U<G)E;G0@;&EN92!L96YG
M=&@*7%PD,5Q<)#-<7"HH*5 *+EPB("YL;"!<7&XH(U )7"(@=7-E(&-U<G)E
M;G0@;&EN92!L96YG=&@*+BX*+EPB($1E9F%U;'0@=&\@<F]M86X@9F]N="!A
M;F0@;&EN92UL96YG=&@L('=H:6-H(&UA=&-H97,@:&%R9'=A<F4@870@<&]W
M97(M=7 *+F1S("E0(%PJ4@HN;G(@(U @.# *+FQL(#@P"BYN80E<(B!N;R!A
M9&IU<W0*+FYF"5PB(&YO(&9I;&P*+FQT(#$T,@E<(B!T:71L92!L96YG=&@@
M:7,@,30R+"!F;W(@8V]M<')E<W-E9"!F;VYT"BY<(@E086=E+7-K:7 @8V]D
M90HN7"(@5%,@/3T@5&ET;&4@4W1R:6YG("AS970@=VET:" N9',@5%,@(E1H
M:7,@:7,@=&AE(%1I=&QE(%)I9VAT($AE<F4I"BYD<R!44R!086=E"BYD92!&
M3PHG<W @,@HN+@HN9&4@0E *)VYR(",@7%QN)2LQ"B=&3PHG<W @-0HN=&P@
M)R=<*D-<7"HH5%,@7%QN(UQ<*B@I4"<*)W-P(#0*)VYS"BXN"BY<(B!3970@
D=&AE('1R87 @9F]R('!A9V4M8G)E86MS"BYW:" M.'8@0E *
end
@eof
set `wc -lwc <tmac.tj`
if test $1$2$3 != 1114732601
then
echo ERROR: wc results of tmac.tj are $* should be 111 473 2601
fi
chmod 664 tmac.tj
rm -f /tmp/unpack$$
exit 0