#!/bin/sh

LIB=|LIBDIR|
awk=nawk

for i do
	case "$i" in
	-*)	;; # ignore
	*)	files="$files $i" ;;
	esac
done

$LIB/markup $files | $awk '
BEGIN		{ code=0 
		  print "\\documentstyle{article}"
		  print "\\newcommand{\\fragment}[1]{{\\sl$\\langle$#1\\/$\\rangle$}}"
		  print "\\begin{document}"
                }
END		{ if (code) print "\\end{trivlist}" 
		  print "\\end{document}"
		}
/^@quote$/	{ printf "\\verb@"}
/^@endquote$/	{ printf "@" }
/^@begin code/	{ if (!code) print "\\begin{trivlist}\\raggedright\\obeylines\\leftskip=2em\\small\\item[]%"; code=1 }
/^@end code/	{ }
/^@begin docs/	{ if (code) print "\\end{trivlist}"; code=0 }
/^@end docs/	{ }
/^@defn /	{ gsub(/\[\[/, "\\verb@"); gsub(/]]/, "@")
		name = substr($0,7)
		printf "\\hspace{-2em}"
		printf "\\fragment{%s}", name
		defs[name] += 1
		if (defs[name] > 1)
			printf "$+\\!\\!\\equiv$"
		else
			printf "$\\equiv$"
		printf "\\index{\\fragment{%s}}", name
		}
/^@use /	{ gsub(/\[\[/, "\\verb@"); gsub(/]]/, "@")
		name = substr($0,6)
		printf "\\fragment{%s}", name
		printf "\\index{\\fragment{%s}}", name
		}
/^@literal /	{ printf "%s", substr($0, 10) }
/^@nl$/		{ print ""}
/^@text /	{ if (code) printf "\\verb@%s@", substr($0,7)
		  else printf "%s", substr($0,7) }'



syntax highlighted by Code2HTML, v. 0.9.1