#!/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