deroff - remove nroff/troff, tbl, and eqn constructs
deroff [-m [m | s | l]] [-w] [-i] [filename...]
deroff reads each of the filenames in sequence and removes all troff(1) requests, macro calls, backslash constructs, eqn(1) constructs (between .EQ and .EN lines, and between delimiters), and tbl(1) descriptions, perhaps replacing them with white space (blanks and blank lines), and writes the remainder of the file on the standard output. deroff follows chains of included files (.so and .nx troff commands); if a file has already been included, a .so naming that file is ignored and a .nx naming that file terminates execution. If no input file is given, deroff reads the standard input.
The –m option may be followed by an m, s, or l. The –mm option causes the macros to be interpreted so that only running text is output (that is, no text from macro lines.) The –ml option forces the –mm option and also causes deletion of lists associated with the mm macros.
If the –w option is given, the output is a word list, one ``word'' per line, with all other characters deleted. Otherwise, the output follows the original, with the deletions mentioned above. In text, a ``word'' is any string that contains at least two letters and is composed of letters, digits, ampersands (&), and apostrophes ('); in a macro call, however, a ``word'' is a string that begins with at least two letters and contains a total of at least three letters. Delimiters are any characters other than letters, digits, apostrophes, and ampersands. Trailing apostrophes and ampersands are removed from ``words.''
The –i option causes deroff to ignore .so and .nx commands.
See attributes(5) for descriptions of the following attributes:
deroff is not a complete troff interpreter, so it can be confused by subtle constructs. Most such errors result in too much rather than too little output.
The –ml option does not handle nested lists correctly.