---
name: "rman"
section: "1"
platform: "linux"
package: "rman"
version: "3.2-10"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rman"
---

# rman(1)

reverse compile man pages from formatted form to a number of source formats: ASCII, roff, TkMan, Tk, Sections, HTML, SGML, MIME, LaTeX, LaTeX2e, RTF, POD.

## NAME

PolyglotMan, rman - reverse compile man pages from formatted  form to a number of source formats: ASCII, roff, TkMan, Tk,  Sections, HTML, SGML, MIME, LaTeX, LaTeX2e, RTF, POD.

## SYNOPSIS

rman \[ *options* \] \[ *file* \]

## DESCRIPTION

Up-to-date instructions can be found at http://polyglotman.sourceforge.net/rman.html

*PolyglotMan*  takes man pages from most of the popular flavors  of UNIX and transforms them into any of a number of text source  formats. PolyglotMan was formerly known as RosettaMan. The name  of the binary is still called *rman*, for scripts that depend  on that name; mnemonically, just think "reverse man". Previously  *PolyglotMan*  required pages to be formatted by [nroff(1)](/nroff/1.md) prior  to its processing. With version 3.0, it *prefers \[tn\]roff source*  and usually produces results that are better yet. And source  processing is the only way to translate tables. Source format  translation is not as mature as formatted, however, so try formatted  translation as a backup.

In parsing \[tn\]roff source, one could implement an arbitrarily  large subset of \[tn\]roff, which I did not and will not do, so  the results can be off. I did implement a significant subset  of those used in man pages, however, including tbl (but not eqn),  if tests, and general macro definitions, so usually the results  look great. If they don't, format the page with nroff before  sending it to PolyglotMan. If PolyglotMan doesn't recognize a  key macro used by a large class of pages, however, e-mail me  the source and a uuencoded nroff-formatted page and I'll see  what I can do. When running PolyglotMan with man page source  that includes or redirects to other \[tn\]roff source using the .so (source  or inclusion) macro, you should be in the parent directory of  the page, since pages are written with this assumption. For example,  if you are translating /usr/share/man/man1/ls.1, first cd into /usr/share/man.

*PolyglotMan*  accepts man pages from: SunOS, Sun Solaris,  Hewlett-Packard HP-UX, AT&T System V, OSF/1 aka Digital UNIX,  DEC Ultrix, SGI IRIX, Linux, FreeBSD, SCO. Source processing  works for: SunOS, Sun Solaris, Hewlett-Packard HP-UX, AT&T System  V, OSF/1 aka Digital UNIX, DEC Ultrix. It can produce printable  ASCII-only (control characters stripped), section headers-only,  Tk, TkMan, \[tn\]roff (traditional man page source), XML, HTML,  MIME, LaTeX, LaTeX2e, RTF, Perl 5 POD. A modular architecture  permits easy addition of additional output formats.

The latest version of PolyglotMan is available from  *http://polyglotman.sourceforge.net/* .

## OPTIONS

The following options should not be used with any others and  exit PolyglotMan without processing any input.

- \-h\|--help

  Show list of command line options and exit.

- \-v\|--version

  Show version number and exit.

*You should specify the filter first, as this sets a number*  *of parameters, and then specify other options.*

- *-f\|--filter \<ASCII\|roff\|TkMan\|Tk\|Sections\|HTML\|XML\|MIME\|LaTeX\|LaTeX2e\|RTF\|POD\>*

  *Set the output filter. Defaults to ASCII.*

- *-S\|--source*

  *PolyglotMan tries to automatically determine whether its input*  *is source or formatted; use this option to declare source input.*

- *-F\|--format\|--formatted*

  *PolyglotMan tries to automatically determine whether its input*  *is source or formatted; use this option to declare formatted*  *input.*

- *-l\|--title printf-string*

  In HTML mode this sets the \<TITLE\> of the man pages, given the  same parameters as *-r* .

- \-r\|--reference\|--manref *printf-string*

  In HTML and XML modes this sets the URL form by which to retrieve  other man pages. The string can use two supplied parameters:  the man page name and its section. (See the Examples section.)  If the string is null (as if set from a shell by "-r ''"), \`-'  or \`off', then man page references will not be HREFs, just set  in italics. If your printf supports XPG3 positions specifier,  this can be quite flexible.

- \-V\|--volumes *\<colon-separated list\>*

  Set the list of valid volumes to check against when looking for  cross-references to other man pages. Defaults to *1:2:3:4:5:6:7:8:9:o:l:n:p* (volume  names can be multicharacter). If an non-whitespace string in  the page is immediately followed by a left parenthesis, then  one of the valid volumes, and ends with optional other characters  and then a right parenthesis--then that string is reported as  a reference to another manual page. If this -V string starts  with an equals sign, then no optional characters are allowed  between the match to the list of valids and the right parenthesis. (This  option is needed for SCO UNIX.)

The following options apply only when formatted pages are given  as input. They do not apply to or are always handled correctly with  the source.

- \-b\|--subsections

  Try to recognize subsection titles in addition to section titles.  This can cause problems on some UNIX flavors.

- \-K\|--nobreak

  Indicate manual pages don't have page breaks, so don't look for  footers and headers around them. (Older nroff -man macros always  put in page breaks, but lately some vendors have realized that  printouts are made through [troff(1)](/troff/1.md), whereas nroff -man is used to  format pages for reading on screen, and so have eliminated page  breaks.) *PolyglotMan*  usually gets this right even without  this flag.

- \-k\|--keep

  Keep headers and footers, as a canonical report at the end of  the page. changeleft  Move changebars, such as those found in the Tcl/Tk manual pages,  to the left. --\> notaggressive  *Disable*  aggressive man page parsing. Aggressive manual,  which is on by default, page parsing elides headers and footers,  identifies sections and more. --\>

- \-n\|--name *name*

  Set name of man page (used in roff format). If the filename is  given in the form " *name* . *section* ", the name and  section are automatically determined. If the page is being parsed  from \[tn\]roff source and it has a .TH line, this information  is extracted from that line.

- \-p\|--paragraph

  paragraph mode toggle. The filter determines whether lines should  be linebroken as they were by nroff, or whether lines should  be flowed together into paragraphs. Mainly for internal use.

- \-s\|section *#*

  Set volume (aka section) number of man page (used in roff format).  tables  Turn on aggressive table parsing. --\>

- \-t\|--tabstops *#*

  For those macros sets that use tabs in place of spaces where  possible in order to reduce the number of characters used, set  tabstops every *#*  columns. Defaults to 8.

## NOTES ON FILTER TYPES

### ROFF

Some flavors of UNIX ship man page without \[tn\]roff source, making  one's laser printer little more than a laser-powered daisy wheel.  This filter tries to intuit the original \[tn\]roff directives,  which can then be recompiled by \[tn\]roff.

### TkMan

[TkMan(1)](/TkMan/1.md), a hypertext man page browser, uses *PolyglotMan*   to show man pages without the (usually) useless headers and footers  on each page. It also collects section and (optionally) subsection  heads for direct access from a pulldown menu. TkMan and Tcl/Tk,  the toolkit in which it's written, are available via anonymous  ftp from *ftp://ftp.smli.com/pub/tcl/*

### Tk

This option outputs the text in a series of Tcl lists consisting  of text-tags pairs, where tag names roughly correspond to HTML.  This output can be inserted into a Tk text widget by doing an  *eval \<textwidget\> insert end \<text\>* . This format should be  relatively easily parsible by other programs that want both the  text and the tags. See also ASCII.

### ASCII

When printed on a line printer, man pages try to produce special  text effects by overstriking characters with themselves (to produce  bold) and underscores (underlining). Other text processing software,  such as text editors, searchers, and indexers, must counteract  this. The ASCII filter strips away this formatting. Piping nroff  output through *col -b*  also strips away this formatting,  but it leaves behind unsightly page headers and footers. Also  see Tk.

### Sections

Dumps section and (optionally) subsection titles. This might  be useful for another program that processes man pages.

### HTML

With a simple extension to a HTTP server for Mosaic(1) or other  World Wide Web browser, *PolyglotMan*  can produce high quality  HTML on the fly. Several such extensions and pointers to several  others are included in *PolyglotMan* 's *contrib*  directory.

### XML

This is appoaching the Docbook DTD, but I'm hoping that someone  with a real interest in this will polish the tags  generated. Try it to see how close the tags are now.

### MIME

MIME (Multipurpose Internet Mail Extensions) as defined by RFC 1563,  good for consumption by MIME-aware e-mailers or as Emacs (\>=19.29)  enriched documents.

### LaTeX and LaTeX2e

Why not?

### RTF

Use output on Mac or NeXT or whatever. Maybe take random man  pages and integrate them better with NeXT's documentation system.  Maybe NeXT has its own man page macros that do this.

### PostScript and FrameMaker

To produce PostScript, use *groff*  or *psroff* . To  produce FrameMaker MIF, use FrameMaker's builtin filter. In both  cases you need *\[tn\]roff*  source, so if you only have a  formatted version of the manual page, use *PolyglotMan* 's  roff filter first.

## EXAMPLES

To convert the *formatted*  man page named *ls.1*  back  into \[tn\]roff source form:

*rman -f roff /usr/local/man/cat1/ls.1 \> /usr/local/man/man1/ls.1* \

Long man pages are often compressed to conserve space (compression  is especially effective on formatted man pages as many of the  characters are spaces). As it is a long man page, it probably  has subsections, which we try to separate out (some macro sets  don't distinguish subsections well enough for *PolyglotMan*  to detect them). Let's convert this to LaTeX format: \

*pcat /usr/catman/a\_man/cat1/automount.z \| rman -b -n automount -s 1 -f*  *latex \> automount.man* \

Alternatively, *man 1 automount \| rman -b -n automount -s 1 -f*  *latex \> automount.man* \

For HTML/Mosaic users, *PolyglotMan*  can, without modification  of the source code, produce HTML links that point to other HTML  man pages either pregenerated or generated on the fly. First  let's assume pregenerated HTML versions of man pages stored in */usr/share/man/html* .  Generate these one-by-one with the following form: \
 *rman -f html -r 'http:/usr/share/man/html/%s.%s.html' /usr/share/man/cat1/ls.1 \> /usr/share/man/html/ls.1.html* \

If you've extended your HTML client to generate HTML on the fly  you should use something like: \
 *rman -f html -r 'http:~/bin/man2html?%s:%s' /usr/share/man/cat1/ls.1* \
 when generating HTML.

## BUGS/INCOMPATIBILITIES

*PolyglotMan*  is not perfect in all cases, but it usually  does a good job, and in any case reduces the problem of converting  man pages to light editing.

Tables in formatted pages, especially H-P's, aren't handled very  well. Be sure to pass in source for the page to recognize tables.

The man pager *woman*(1) applies its own idea of formatting  for man pages, which can confuse *PolyglotMan* . Bypass  *woman*  by passing the formatted manual page text directly  into *PolyglotMan* .

The \[tn\]roff output format uses fB to turn on boldface. If your  macro set requires .B, you'll have to a postprocess the *PolyglotMan*  output.

## SEE ALSO

*[tkman(1)](/tkman/1.md)* , *[xman(1)](/xman/1.md)* , *[man(1)](/man/1.md)* , *[man(7)](/man/7.md)*  or *man(5)*  depending on your flavor of UNIX

## AUTHOR

PolyglotMan \
 by Thomas A. Phelps ( *phelps@ACM.org* ) \
 developed at the \
 University of California, Berkeley \
 Computer Science Division

Manual page last updated on $Date: 1998/07/13 09:47:28 $
