mdixon@parc.xerox.com (Mike Dixon) (04/03/91)
when you look at man pages with the Librarian, it (sometimes) manages to show them with reasonable formatting. sometimes it doesn't, and sometimes you want to look at them with something other than Librarian, so here's a little hack to convert nroff output to rtf. a) it's in perl. it would probably be trivial to rewrite in C, should you feel the need. b) it's the first perl program i ever wrote, so i'm sure it could be better, but it works pretty well. c) this version makes an rtf file with 12pt ohlfs, converting nroff underlining to rtf underlining. it's trivial to use a different font (e.g. the Librarian uses helvetica) or a different attribute for underlining (e.g. Librarian uses italics). if you want to do this and can't figure out the code, send me a message. to use it, put it somewhere like /usr/local/bin/tty2rtf, and e.g. tty2rtf </usr/man/cat1/csh.1 | openfile if anyone wants to do this right, it should be possible to hack groff so that it generates rtf directly... ------------------------------------------------------------ #!/usr/local/bin/perl print "{\\rtf0\\ansi{\\fonttbl\\f0\\fmodern Ohlfs;}\n", "\\paperw12160\n", "{\\colortbl\\red0\\green0\\blue0;}\n", "\\pard\\f0\\b0\\i0\\ul0\\fs24\\fc0\n"; $skip = 1; while (<STDIN>) { chop; if ($_ ne "") { while (/(_\008.)+/) { do fix($`,"\n\\ul "); $bld = $&; $_ = $'; $bld =~ s/_\008//g; do fix($bld,"\n\\ul0 "); } do fix($_,"\\\n"); $skip = 0; } elsif (! $skip) { print "\\\n"; $skip = 1; } } print "}\n"; sub fix { local($tmp,$tail) = @_; $tmp =~ s/\\/\\\\/g; $tmp =~ s/\{/\\\{/g; $tmp =~ s/\}/\\\}/g; print $tmp,$tail; } -- .mike.