nroff/troff question...

Doug Gwyn gwyn at smoke.BRL.MIL
Sun Oct 14 13:55:43 AEST 1990


In article <3164 at unisoft.UUCP> rembo at unisoft.UUCP (Tony Rems) writes:
>Is there a way to tell what macro package a troff/nroff file is using?  

Of course not.  Users can provide their own macro packages.

However, assuming one of the standard ones is involved, you might
be able to tell by seeing what macros it appears to be using.  The
following "doctype" script demonstrates this, as well as finding
other useful information of the same general nature.

#!/usr/5bin/sh
#	doctype -- synthesize proper command line for troff
#	adapted from Kernighan & Pike

#	last edit:	90/07/30	D A Gwyn
#	SCCS ID:	@(#)doctype.sh	1.12

PATH=/usr/5bin:/bin:/usr/bin
if pdp11
then	MACDIR=/usr/lib/tmac
else	MACDIR=/usr/5lib/tmac		# BRL System V emulation
fi

eopt=
macs=
opts=
topt=
for i
do	case "$i" in
	-e)	eopt="$i";		shift;;
	-m*)	macs="$macs $i";	shift;;
	-T*)	topt=" $i";		shift;;
	--)				shift;	break;;
	-)					break;;
	-*)	opts="$opts $i";	shift;;
	*)					break;;
	esac
done

if [ $# -gt 0 ]
then	s="cat $* | "
else	s=
fi

t=`cat $* |
egrep '^\.(EQ|TS|\[|P|LP|G1|IS|SH|begin)' |
sort -u |
awk '
/^\.SH *(NAME|SYNOPSIS|DESCRIPTION)/ { man++ }
/^\.P$/ { mm++ }
/^\.[LP]P/ { ms++ }
/^\.EQ/ { eqn++ }
/^\.TS/ { tbl++ }
/^\.P[FS]/ { pic++ }
/^\.G1/ { grap++ }
/^\.IS/ { ideal++ }
/^\.\[/ { refer++ }
/^\.begin[ 	]*stills/ { stills++ }
END {
	if (refer > 0)	printf "refer | "
	if (grap > 0)	printf "grap | "
	if (grap > 0 || pic > 0)	printf "_PIC_ | "
	if (ideal > 0)	printf "ideal | "
	if (stills > 0)	printf "stills | "
	if (tbl > 0)	printf "tbl | "
	if (eqn > 0)	printf "_EQN_ | "
	printf "_TROFF_"
	if (grap > 0 || pic > 0)	printf " -mpic"
	if (man > 0)	printf " -man"
	if (mm > 0 && man == 0)	printf " -mm"
	if (ms > 0 && mm == 0 && man == 0)	printf " -ms"
	printf " -\n"
} ' | sed -e s/_PIC_/"pic$topt"/ -e s/_EQN_/"eqn$topt"/ \
	-e s/_TROFF_/"troff$topt$opts$macs"/ -e s%' -m'%" $MACDIR/tmac."%g`

if [ -n "$eopt" ]
then	eval "$s$t"
else	echo $s$t
fi



More information about the Comp.unix.questions mailing list