Unix man pages are written in the troff language. There are three basic Unix programs that interpret troff code – nroff
, troff
, and groff
. nroff
is used for preparing documents for display in the terminal. troff
prepares documents to be printed on phototypesetters, a technology that is pretty much obsolete by now. The Unix man
program is essentially just a frontend for nroff
that preprocesses the code with a set of macros known as the man macros and then pipes it into less.
What we will be using is the GNU roff program, or groff
. groff
is a troff interpreter that converts the troff code to Postscript. In order to apply the command, you first have to locate the man page you want to convert. On my system, most of the man pages are located in /usr/share/man. Let’s say we want to convert the file nmap.1 into Postscript. We would use a command like this:
groff -man /usr/share/man/man1/nmap.1 > nmap.ps
The -man
option tells groff
to run the code through the man macro package, which is the macro package used for man pages, before sending its output to the Postscript file.
Now we have a Postscript file, which is fairly easy to convert to a PDF. Many document viewing programs (such as Apple Preview) will automatically convert a Postscript file to a PDF when you open it. Alternatively, if you just want a hard copy, you can skip the PDF and send the Postscript file directly to a printer using the lp
command. The only requirement is that it must be a Postscript printer, which the majority of printers on the market nowadays are.