nroff(1) General Commands Manual nroff(1)

# [Name](#Name)

nroff - format documents with *groff* for terminal (“TTY”) devices

# [Synopsis](#Synopsis)

`nroff` \[**-abcCEhikpRStUVzZ**] \[**-d ctext**] \[**-d string=text**] \[**-D fallback-input-encoding**] \[**-I inclusion-directory**] \[**-K input-encoding**] \[**-m macro-package**] \[**-M macro-directory**] \[**-n page-number**] \[**-o page-list**] \[**-P postprocessor-argument**] \[**-r cnumeric-expression**] \[**-r register=numeric-expression**] \[**-T output-device**] \[**-w warning-category**] \[**-W warning-category**] \[*file* ...]

`nroff` **--help**

`nroff` **-v** \[*other-nroff-option* ...]

`nroff` **--version** \[*other-nroff-option* ...]

# [Description](#Description)

*nroff* formats documents written in the [*groff*(7)](/man/os/groff/groff.7) language for typewriter-like devices such as terminal emulators. GNU *nroff* emulates the AT&T *nroff* command using [*groff*(1)](/man/os/groff/groff.1). *nroff* generates output via [*grotty*(1)](/man/os/groff/grotty.1), *groff*'s terminal output driver, which needs to know the character encoding scheme used by the device. Consequently, acceptable arguments to the **-T** option are **ascii**, **latin1**, and **utf8**; any others are ignored. If neither the *GROFF\_TYPESETTER* environment variable nor the **-T** command-line option (which overrides the environment variable) specifies a (valid) device, *nroff* consults the locale to select an appropriate output device. It first tries the [*locale*(1)](/man/os/groff/locale.1) program, then checks several locale-related environment variables; see section “Environment” below. If all of the foregoing fail, *nroff* assumes “**-T ascii**”.

The **-a**, **-b**, **-c**, **-C**, **-d**, **-E**, **-i**, **-I**, **-m**, **-M**, **-n**, **-o**, **-r**, **-U**, **-w**, **-W**, and **-z** options have the effects described in [*troff*(1)](/man/os/groff/troff.1). **-c** and **-h** imply “**-P -c**” and “**-P -h**”, respectively; **-c** is also meaningful to *troff* itself. Further, GNU *nroff* ignores the AT&T *nroff* options **-e**, **-q**, and **-s**. [*groff*(1)](/man/os/groff/groff.1) documents options **-D**, **-k**, **-K**, **-p**, **-P**, **-R**, **-t**, **-S**, and **-Z**. **-V** causes *nroff* to display the constructed *groff* command on the standard output stream, but does not execute it. **-v** and **--version** show version information about *nroff* and the programs it runs, while **--help** displays a usage message; all exit afterward.

# [Exit status](#Exit_status)

*nroff* exits with status **2** if there was a problem parsing its arguments, with status **0** if any of the options **-V**, **-v**, **--version**, or **--help** were specified, and with the status of *groff* otherwise.

# [Environment](#Environment)

Normally, the path separator in environment variables ending with *PATH* is the colon; this may vary depending on the operating system. For example, Windows uses a semicolon instead.

[*GROFF\_BIN\_PATH*](#GROFF_BIN_PATH)

Locate *groff* commands in these directories, followed by those in *PATH*. If not set, the installation directory of GNU *roff* executables, */usr/bin*, is searched before *PATH*.

[*GROFF\_TYPESETTER*](#GROFF_TYPESETTER)

specifies the default output device for *groff*.

[*LC\_ALL*](#LC_ALL)

[*LC\_CTYPE*](#LC_CTYPE)

[*LANG*](#LANG)

[*LESSCHARSET*](#LESSCHARSET)

are pattern-matched in this order for contents matching standard character encodings supported by *groff* in the event no **-T** option is given and *GROFF\_TYPESETTER* is unset, or the values specified are invalid.

# [Files](#Files)

*/usr/share/groff/1.24.2/tmac/tty-char.tmac*

defines fallback definitions of *roff* special characters. These definitions more poorly optically approximate typeset output than those of *tty.tmac* in favor of communicating semantic information. *nroff* loads it automatically.

# [Notes](#Notes)

Pager programs like [*more*(1)](/man/os/groff/more.1) and [*less*(1)](/man/os/groff/less.1) may require command-line options to correctly handle some output sequences; see [*grotty*(1)](/man/os/groff/grotty.1).

# [See also](#See_also)

[*groff*(1)](/man/os/groff/groff.1), [*troff*(1)](/man/os/groff/troff.1), [*grotty*(1)](/man/os/groff/grotty.1), [*locale*(1)](/man/os/groff/locale.1), [*roff*(7)](/man/os/groff/roff.7)

2026-10-26 groff 1.24.2

---

Document: nroff(1) from groff 1.24.2-r2 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/groff.git
