nroff/troff question...

Chet Ramey chet at cwns1.INS.CWRU.Edu
Fri Oct 19 06:04:52 AEST 1990


In article <14147 at smoke.BRL.MIL> gwyn at smoke.BRL.MIL (Doug Gwyn) writes:

>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.

This is a nice script.  Here's a version that works with groff and
recognizes -me.  I took out some of the stuff in Doug's version that
we don't have and groff doesn't provide.

Chet

#!/bin/bash
#	gdoctype -- synthesize proper command line for groff
#	adapted from Kernighan & Pike
#
#	Chet Ramey	chet at ins.CWRU.Edu
#	Originally from:	D A Gwyn
#
# 	changed to work with groff			10/16/90
#	support for recognizing -me and gremlin		10/17/90
#
# Caveats:
#	o we test for gremlin, but since I don't have it, this doesn't
#	  do anything
#	o this always runs groff -v
#
PATH=/usr/ucb:/bin:/usr/bin:/usr/local/bin/gnu:/usr/local/bin
MACDIR=/usr/lib/tmac

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|pp|GS)' |
sort -u |
awk '
/^\.SH *(NAME|SYNOPSIS|DESCRIPTION)/ { man++ }
/^\.P$/ { mm++ }
/^\.[LP]P/ { ms++ }
/^\.pp/ { me++ }
/^\.EQ/ { eqn++ }
/^\.TS/ { tbl++ }
/^\.P[FS]/ { pic++ }
/^\.G1/ { grap++ }
/^\.IS/ { ideal++ }
/^\.\[/ { refer++ }
/^\.GS/ { gremlin++ }
END {
	if (refer > 0)	printf "refer | "
	if (grap > 0)	printf "grap | "
	if (ideal > 0)	printf "ideal | "

	printf "groff -v "

	if (pic > 0)	printf "-p "
	if (tbl > 0)	printf "-t "
	if (eqn > 0)	printf "-e "

	if (man > 0)	printf " -man"
	if (mm > 0 && man == 0)	printf " -mm"
	if (ms > 0 && mm == 0 && man == 0)	printf " -ms"
	if (me > 0 && ms == 0 && mm == 0 && man == 0)	printf " -me"
	printf "\n"
} '`

#
# Add any -Tdev options
#
if [ -n "$topt" ] ; then
	t="$t $topt"
fi

#
# Add any miscellaneous options for groff
#

if [ -n "$opts" ] ; then
	t="$t $opts"
fi

#
# Add any additional macro packages
#

if [ -n "$macs" ] ; then
	t="$t $macs"
fi

#
# Add use of standard input
#
t="$t -"

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

exit 0
-- 
Chet Ramey			``As I recall, Doug was keen on boxing.  But
Network Services Group		  when he learned to walk, he took up puttin'
Case Western Reserve University	  the boot in the groin.''
chet at ins.CWRU.Edu



More information about the Comp.unix.questions mailing list