[GNU Tools for Printed Media]

GNU roff (groff) — a GNU project


Table of Contents

If you would like to contribute to groff, please have a look at its mission statement, or send a mail to the list groff@gnu.org.

Please note that contributing to this package requires assigning copyright to the FSF.


Introduction

groff (GNU roff) is a typesetting system that reads plain text input that includes formatting commands to produce output in PostScript, PDF, HTML, or DVI formats or for display to a terminal. Formatting commands can be low-level typesetting primitives, macros from a supplied package, or user-defined macros. All three approaches can be combined.

A reimplementation and extension of troff and other programs from AT&T Unix, groff is widely available on POSIX and other systems owing to its long association with Unix manuals, including man pages. It and its predecessor have produced several best-selling software engineering texts. groff can create typographically sophisticated documents while consuming minimal system resources.

groff is distributed under the GNU General Public License.

Maintainer: G. Branden Robinson
Maintainer Emeritus: Bertrand Garrigues
Maintainer Emeritus: Werner Lemberg

Mission Statement

If you would like to contribute to groff, or are interested to know where groff is headed, have a look at its mission statement.

Examples of groff usage with the mom macro package can be found in groff-mission-statement.mom, mission-statement-style.mom and mission-statement-strings.mom, which were used to generate the PDF version.

Downloading groff

Source code releases of groff are available at the GNU software host (mirrors). The current version is 1.23.0 (05-Jul-2023). Release candidate archives for the next version may also be available from the GNU alpha site. We greatly appreciate feedback on these when they are newer than the most recent release. Read the INSTALL.extra file within for build requirements and instructions.

To participate in groff development, clone its Git repository. Read the INSTALL.extra and INSTALL.REPO files within for build requirements and instructions.

To view the contents of the repository in your browser, use Savannah's cgit interface. You can view any commit in isolation, and browse the entire source tree corresponding to its state as of that commit. Click the summary line of the commit message to expose these options.

Platform Source and Binary Packages

Most GNU/Linux distributions offer groff as source and binary packages, and often it is already installed with the base system, at least in part. Many subdivide the groff installation, usually based on run-time dependencies, debugging symbol information, or by separating the documentation. In addition to groff, look for packages with names like groff-dbg, groff-doc, or groff-full.

Documentation

Installing groff will also place its documentation on your system.

The source distribution also contains README and MANIFEST files you should consult. Distributors often supply these in binary packages as well, installed in locations like /usr/share/doc/groff/.

Mailing Lists

groff has three mailing lists dedicated to it.

To subscribe to one of these groff mailing lists, visit the corresponding web page.

Alternatively, send an empty mail with a Subject: header line of subscribe to the relevant xxx-request list. For example, to subscribe yourself to the main groff discussion list, you would send mail to <groff-request@gnu.org> with no body and a Subject: header line of only subscribe.

Archives of these lists can be found at the following locations.

Bug Reports

Please report bugs using the bug tracker linked from the groff project page. Alternatively, but less preferably, you can use the form in the text file BUG-REPORT distributed with the groff source code; its purpose is to make sure that we have all the information we need to fix the bug. At the very least, read BUG-REPORT and make sure that you supply all the information that it asks for. Even if you are not sure that something is a bug, report it using BUG-REPORT: this will help us determine whether it really is a bug or not.