1 Copyright 2001-2022 Free Software Foundation, Inc.
3 Copying and distribution of this file, with or without modification,
4 are permitted in any medium without royalty provided the copyright
5 notice and this notice are preserved.
7 This file summarizes the structure of the groff source distribution.
10 1) Top-level directory contents
12 BUG-REPORT A template for bug reports.
13 ChangeLog Log of changes since last groff minor version release.
14 ChangeLog.* Logs of changes in past groff versions.
15 COPYING The GNU General Public License (GPL).
16 FDL The GNU Free Documentation License (FDL).
17 FOR-RELEASE Release procedures for groff maintainer(s) to follow.
18 HACKING Advice for contributors to groff.
19 INSTALL Generic information on configuration and compiling.
20 INSTALL.extra How to install groff from a distribution archive.
21 INSTALL.REPO How to install groff from a Git repository checkout.
22 LICENSES Copyright and licensing information.
23 MANIFEST The file you are reading.
24 MORE.STUFF Useful stuff in other packages.
25 NEWS Log of feature changes in groff.
26 PROBLEMS Tips to handle known situations of concern.
27 PROJECTS Long-term additions to groff.
28 README Introduction to and contact information for groff.
29 README.MinGW Build information for MinGW.
30 TODO Things planned for future groff versions.
32 All other files in the top-level directory are related to
33 configuration, compilation, and installation procedures.
36 2) Directory structure
38 ./arch Resources to facilitate building on non-POSIX systems.
39 djgpp Resources for the 32-bit MS-DOS compiler djgpp.
40 mingw Resources for the MinGW environment.
41 misc Resources for various other platforms.
43 ./contrib Resources provided with groff, but maintained by others.
44 chem Embed chemical structure diagrams in groff documents.
45 eqn2graph Convert eqn(1) equations into graphical images.
46 gdiffmk An improved implementation of the diffmk command to mark
47 differences between groff/nroff/troff files.
48 glilypond Embed LilyPond sheet music in groff documents.
49 gperl Populate groff registers and strings using perl(1).
50 gpinyin Use Hanyu Pinyin input to compose groff documents.
51 grap2graph Convert grap(1) diagrams into graphical images.
52 hdtbl A sophisticated table macro package.
53 mm The groff memorandum macro package.
54 mom Peter Schaffter's "mom", a friendly groff macro package.
55 pdfmark Add PDF marks to groff documents; includes "pdfroff",
56 which eases creation of PDF documents.
57 pic2graph Convert pic(1) diagrams into graphical images.
58 rfc1345 Use RFC 1345 mnemonics as groff special characters.
59 sboxes Use bordered, shaded background boxes with ms and PDF.
61 ./doc Manuals for various components of groff.
63 ./font Device and font description files.
64 devX100 100dpi X11 device (10 point base type size).
65 devX100-12 100dpi X11 device (12 point base type size).
66 devX75 75dpi X11 device (10 point base type size).
67 devX75-12 75dpi X11 device (12 point base type size).
68 devascii Terminal device with ASCII (ISO 646) encoding.
69 devcp1047 Terminal device with EBCDIC (code page 1047) encoding.
70 devdvi TeX DVI device.
72 devlatin1 Terminal device with ISO Latin-1 (8859-1) encoding.
73 devlbp Canon CaPSL laser printers.
74 devlj4 HP LaserJet 4/PCL 5 and compatible printers.
75 devps PostScript device.
77 devutf8 Terminal device with UTF-8 encoding.
78 scripts Scripts used in generation of device/font descriptions.
79 util Tools to aid groff developers with new device support.
81 ./m4 M4 macro files used to create the "configure" script.
83 ./man groff manual pages of general applicability.
85 ./src groff programs and libraries.
87 ./src/devices Output drivers for devices and file formats.
90 grolbp Canon CaPSL laser printers.
91 grolj4 HP LaserJet 4/PCL 5 and compatible printers.
94 grotty Terminal output.
95 xditview A troff output (pre)viewer for the X Window System.
97 ./src/include C/C++ header files.
99 ./src/libs C++ code shared among several groff components.
100 libbib Manage bibliographic database.
101 libdriver Parse troff output; also output utility functions.
102 libgroff General support functions used everywhere.
103 libxutil Utility functions for gxditview and xtotroff.
105 ./src/preproc Preprocessors.
106 eqn Typeset mathematical formulae.
107 grn Draw Gremlin pictures.
108 html Prepare tbl and eqn input for grohtml.
110 preconv Convert document input encoding for input to troff.
111 refer Generate bibliographic references.
112 soelim Expose 'so' (sourced) documents to preprocessing.
115 ./src/roff Programs that run the formatter.
116 groff troff wrapper. This is the main user program.
117 nroff groff wrapper convenient for terminal users.
120 ./src/utils Utility programs relevant to groff.
121 addftinfo Supplement AT&T troff font descriptions with metrics
123 afmtodit Create font description files for the PostScript device.
124 grog Guess groff command-line options required by a document.
125 hpftodit Create font description files for the 'lj4' device.
126 indxbib Make inverted index for bibliographic databases.
127 lkbib Search bibliographic databases.
128 lookbib Interactively search bibliographic databases.
129 pfbtops Translate a PostScript Type 1 font in PFB format to PFA.
130 tfmtodit Create font description files for TeX DVI device.
131 xtotroff Create font description files for gxditview.
134 mdoc Modules for the mdoc package.
136 Various directories contain a "tests" subdirectory. These are automated
137 tests performed when groff's Makefile is run with the "check" target.
142 groff documentation is spread throughout the tree; where possible, it is
143 close to the source code it describes.
145 - The top-level directory contains text files presenting groff as a
146 software project, with its focus on organization of the code,
147 development procedures, and project administration.
149 If you don't know where to begin, start with "README"; it contains the
150 information you will require to obtain the groff distribution archive,
151 report bugs, and contact the developers.
153 - A man page for each program (for section 1 of the manual) is
154 maintained in the source directory of the program itself.
156 - Extensive man pages documenting GNU roff's input language, special
157 character repertoire, differences from AT&T troff, device and font
158 description file formats, macro files, and historical and conceptual
159 background are maintained in the "man" directory.
161 - Documentation in other formats is located in the "doc" directory,
162 including groff's Texinfo manual, and tutorial and/or reference
163 manuals written using groff macro packages.
165 - Documentation for contributed components is kept in the relevant
166 subdirectory of "contrib".
169 4) groff language parser
171 The "troff" program in "src/roff/troff" parses the groff input language.
172 There, "input.cpp" implements the main loop and tokenizes input. Input
173 tokens are transformed into nodes (a GNU troff internal data structure)
174 by "env.cpp" and "node.cpp". Routines in the latter file generate the
175 page description language from lists of nodes.
178 5) page description language parser
180 The parser for the page description language produced by troff is
181 implemented in "src/libs/libdriver/input.cpp". This is used by all
182 groff output drivers written in C++. ("gropdf", written in Perl,
183 performs its own parsing.)
186 ##### Editor settings
191 vim: set expandtab textwidth=72: