deroff(1)

deroff1

Remove nroff/troff, eqn, pic and tbl constructs

Usage

deroff [-ikpw] [{-m a | e | l | m | s}] [file ...]

Overview

deroff reads each file in sequence and removes all roff command lines, backslash constructions, macro definitions, eqn constructs (between “.EQ” and “.EN” lines or between delimiters), pic pictures, and table descriptions and writes the remainder to the standard output. deroff follows chains of included files( “.so” and “.nx” commands); if a file has already been included, a “.so” is ignored and a “.nx” terminates execution. If no input file is given, deroff reads from the standard input.

The options are as follows:

-i

Ignore “.so” and “.nx” commands.

-k

Keep blocks of text intact. This is the default behavior unless the -m option is given.

-m

Enable support for common macro packages. The -m option takes the following arguments:

a

recognize man(7) macros.

e

recognize me macros.

l

remove list constructs.

m

recognize mm macros.

s

recognize ms macros.

-p

Preserve paragraph macros. This option only has an effect if the -m option is also specified.

-w

Output a word list, one ‘word’ (string of letters, digits, and apostrophes, beginning with a letter; apostrophes are removed) per line, and all other characters ignored. Normally, the output follows the original, with the deletions mentioned above.

Releases

61 releases since OpenBSD 2.1; the text changed 9 times.

  1. 2.1–2.4
  2. 2.5–3.0
  3. 3.1–3.3
  4. 3.4–3.7
  5. 3.8–4.1
  6. 4.2–4.8
  7. 4.9–6.2
  8. 6.3–7.1
  9. 7.2
  10. 7.3–8.0

-i since OpenBSD 3.1; -k since OpenBSD 3.1; -m since OpenBSD 3.1; -p since OpenBSD 3.1.

History

deroff first appeared outside of Bell Labs in PWB/UNIX 1.0. It did not appear in freely redistributable BSD releases for licensing reasons. After Caldera relicensed early UNIX releases the 4.4BSD version was added to OpenBSD 3.1.

Authors

Lorinda Cherry at the Bell Labs Computing Science Research Center.

Bugs

deroff is not a complete troff interpreter, so it can be confused by subtle constructs. Most errors result in too much rather than too little output.

The -ml option does not correctly handle nested lists.

From man 8.0-current-20261101 in OpenBSD 8.0-current (2026-11-01). Parsed by carta from the page's mdoc source.